|
|
|
@ -1905,21 +1905,41 @@ size_t OnKnockback(const TCmdParam1 &message, Player &player) |
|
|
|
return sizeof(message); |
|
|
|
return sizeof(message); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
size_t OnResurrect(const TCmdParam1 &message, Player &player) |
|
|
|
size_t OnResurrect(const TCmdParam1 &message, Player &caster) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const uint16_t playerIdx = Swap16LE(message.wParam1); |
|
|
|
const uint16_t playerIdx = Swap16LE(message.wParam1); |
|
|
|
|
|
|
|
|
|
|
|
if (gbBufferMsgs == 1) { |
|
|
|
if (gbBufferMsgs == 1) { |
|
|
|
BufferMessage(player, &message, sizeof(message)); |
|
|
|
BufferMessage(caster, &message, sizeof(message)); |
|
|
|
} else if (playerIdx < Players.size()) { |
|
|
|
return sizeof(message); |
|
|
|
DoResurrect(player, Players[playerIdx]); |
|
|
|
} |
|
|
|
if (&player == MyPlayer) |
|
|
|
|
|
|
|
pfile_update(true); |
|
|
|
if (playerIdx >= Players.size()) |
|
|
|
|
|
|
|
return sizeof(message); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Player &target = Players[playerIdx]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SpawnResurrectBeam(caster, target); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (&target == MyPlayer && target._pHitPoints <= 0) { |
|
|
|
|
|
|
|
NetSendCmd(true, CMD_PLRALIVE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return sizeof(message); |
|
|
|
return sizeof(message); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
size_t OnPlayerAlive(const TCmd &message, Player &target) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (gbBufferMsgs == 1) { |
|
|
|
|
|
|
|
BufferMessage(target, &message, sizeof(message)); |
|
|
|
|
|
|
|
return sizeof(message); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ApplyResurrect(target); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return sizeof(message); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
size_t OnHealOther(const TCmdParam1 &message, const Player &caster) |
|
|
|
size_t OnHealOther(const TCmdParam1 &message, const Player &caster) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const uint16_t playerIdx = Swap16LE(message.wParam1); |
|
|
|
const uint16_t playerIdx = Swap16LE(message.wParam1); |
|
|
|
@ -3390,6 +3410,8 @@ size_t ParseCmd(uint8_t pnum, const TCmd *pCmd, size_t maxCmdSize) |
|
|
|
return HandleCmd(OnMonstDamage, player, pCmd, maxCmdSize); |
|
|
|
return HandleCmd(OnMonstDamage, player, pCmd, maxCmdSize); |
|
|
|
case CMD_PLRDEAD: |
|
|
|
case CMD_PLRDEAD: |
|
|
|
return HandleCmd(OnPlayerDeath, player, pCmd, maxCmdSize); |
|
|
|
return HandleCmd(OnPlayerDeath, player, pCmd, maxCmdSize); |
|
|
|
|
|
|
|
case CMD_PLRALIVE: |
|
|
|
|
|
|
|
return HandleCmd(OnPlayerAlive, player, pCmd, maxCmdSize); |
|
|
|
case CMD_PLRDAMAGE: |
|
|
|
case CMD_PLRDAMAGE: |
|
|
|
return HandleCmd(OnPlayerDamage, player, pCmd, maxCmdSize); |
|
|
|
return HandleCmd(OnPlayerDamage, player, pCmd, maxCmdSize); |
|
|
|
case CMD_OPENDOOR: |
|
|
|
case CMD_OPENDOOR: |
|
|
|
|