MCPcopy Create free account
hub / github.com/diasurgical/devilution / DoResurrect

Function DoResurrect

Source/spells.cpp:193–236  ·  view source on GitHub ↗

* @param pnum player index * @param rid target player index */

Source from the content-addressed store, hash-verified

191 * @param rid target player index
192 */
193void DoResurrect(int pnum, int rid)
194{
195 int hp;
196
197 if ((char)rid != -1) {
198 AddMissile(plr[rid].WorldX, plr[rid].WorldY, plr[rid].WorldX, plr[rid].WorldY, 0, MIS_RESURRECTBEAM, 0, pnum, 0, 0);
199 }
200
201 if (pnum == myplr) {
202 NewCursor(CURSOR_HAND);
203 }
204
205 if ((char)rid != -1 && plr[rid]._pHitPoints == 0) {
206 if (rid == myplr) {
207 deathflag = FALSE;
208 gamemenu_off();
209 drawhpflag = TRUE;
210 drawmanaflag = TRUE;
211 }
212
213 ClrPlrPath(rid);
214 plr[rid].destAction = ACTION_NONE;
215 plr[rid]._pInvincible = FALSE;
216 PlacePlayer(rid);
217
218 hp = 640;
219 if (plr[rid]._pMaxHPBase < 640) {
220 hp = plr[rid]._pMaxHPBase;
221 }
222 SetPlayerHitPoints(rid, hp);
223
224 plr[rid]._pHPBase = plr[rid]._pHitPoints + (plr[rid]._pMaxHPBase - plr[rid]._pMaxHP);
225 plr[rid]._pMana = 0;
226 plr[rid]._pManaBase = plr[rid]._pMana + (plr[rid]._pMaxManaBase - plr[rid]._pMaxMana);
227
228 CalcPlrInv(rid, TRUE);
229
230 if (plr[rid].plrlevel == currlevel) {
231 StartStand(rid, plr[rid]._pdir);
232 } else {
233 plr[rid]._pmode = PM_STAND;
234 }
235 }
236}
237
238void DoHealOther(int pnum, int rid)
239{

Callers 1

On_RESURRECTFunction · 0.85

Calls 8

AddMissileFunction · 0.85
NewCursorFunction · 0.85
gamemenu_offFunction · 0.85
ClrPlrPathFunction · 0.85
PlacePlayerFunction · 0.85
SetPlayerHitPointsFunction · 0.85
CalcPlrInvFunction · 0.85
StartStandFunction · 0.85

Tested by

no test coverage detected