Skip to content

Commit 1a1774a

Browse files
committedJul 10, 2015
Fix damage flash when damage disabled
1 parent 8eb272c commit 1a1774a

File tree

4 files changed

+25
-15
lines changed

4 files changed

+25
-15
lines changed
 

Diff for: ‎src/network/serverpackethandler.cpp

+4-6
Original file line numberDiff line numberDiff line change
@@ -1151,7 +1151,7 @@ void Server::handleCommand_Damage(NetworkPacket* pkt)
11511151
<< std::endl;
11521152

11531153
playersao->setHP(playersao->getHP() - damage);
1154-
SendPlayerHPOrDie(playersao->getPeerID(), playersao->getHP() == 0);
1154+
SendPlayerHPOrDie(playersao);
11551155
}
11561156
}
11571157

@@ -1510,14 +1510,12 @@ void Server::handleCommand_Interact(NetworkPacket* pkt)
15101510
// If the object is a player and its HP changed
15111511
if (src_original_hp != pointed_object->getHP() &&
15121512
pointed_object->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
1513-
SendPlayerHPOrDie(((PlayerSAO*)pointed_object)->getPeerID(),
1514-
pointed_object->getHP() == 0);
1513+
SendPlayerHPOrDie((PlayerSAO *)pointed_object);
15151514
}
15161515

15171516
// If the puncher is a player and its HP changed
1518-
if (dst_origin_hp != playersao->getHP()) {
1519-
SendPlayerHPOrDie(playersao->getPeerID(), playersao->getHP() == 0);
1520-
}
1517+
if (dst_origin_hp != playersao->getHP())
1518+
SendPlayerHPOrDie(playersao);
15211519
}
15221520

15231521
} // action == 0

Diff for: ‎src/script/lua_api/l_object.cpp

+5-7
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,13 @@ int ObjectRef::l_punch(lua_State *L)
222222
// If the punched is a player, and its HP changed
223223
if (src_original_hp != co->getHP() &&
224224
co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
225-
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)co)->getPeerID(),
226-
co->getHP() == 0);
225+
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)co);
227226
}
228227

229228
// If the puncher is a player, and its HP changed
230229
if (dst_origin_hp != puncher->getHP() &&
231230
puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
232-
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)puncher)->getPeerID(),
233-
puncher->getHP() == 0);
231+
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)puncher);
234232
}
235233
return 0;
236234
}
@@ -265,9 +263,9 @@ int ObjectRef::l_set_hp(lua_State *L)
265263
<<" hp="<<hp<<std::endl;*/
266264
// Do it
267265
co->setHP(hp);
268-
if (co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
269-
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)co)->getPeerID(), co->getHP() == 0);
270-
}
266+
if (co->getType() == ACTIVEOBJECT_TYPE_PLAYER)
267+
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)co);
268+
271269
// Return
272270
return 0;
273271
}

Diff for: ‎src/server.cpp

+15-1
Original file line numberDiff line numberDiff line change
@@ -1108,7 +1108,7 @@ PlayerSAO* Server::StageTwoClientInit(u16 peer_id)
11081108
SendInventory(playersao);
11091109

11101110
// Send HP
1111-
SendPlayerHPOrDie(peer_id, playersao->getHP() == 0);
1111+
SendPlayerHPOrDie(playersao);
11121112

11131113
// Send Breath
11141114
SendPlayerBreath(peer_id);
@@ -1487,6 +1487,20 @@ void Server::SendMovement(u16 peer_id)
14871487
Send(&pkt);
14881488
}
14891489

1490+
void Server::SendPlayerHPOrDie(PlayerSAO *playersao)
1491+
{
1492+
if (!g_settings->getBool("enable_damage"))
1493+
return;
1494+
1495+
u16 peer_id = playersao->getPeerID();
1496+
bool is_alive = playersao->getHP() > 0;
1497+
1498+
if (is_alive)
1499+
SendPlayerHP(peer_id);
1500+
else
1501+
DiePlayer(peer_id);
1502+
}
1503+
14901504
void Server::SendHP(u16 peer_id, u8 hp)
14911505
{
14921506
DSTACK(__FUNCTION_NAME);

Diff for: ‎src/server.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ class Server : public con::PeerHandler, public MapEventReceiver,
374374
u8* ser_vers, u16* prot_vers, u8* major, u8* minor, u8* patch,
375375
std::string* vers_string);
376376

377-
void SendPlayerHPOrDie(u16 peer_id, bool die) { die ? DiePlayer(peer_id) : SendPlayerHP(peer_id); }
377+
void SendPlayerHPOrDie(PlayerSAO *player);
378378
void SendPlayerBreath(u16 peer_id);
379379
void SendInventory(PlayerSAO* playerSAO);
380380
void SendMovePlayer(u16 peer_id);

0 commit comments

Comments
 (0)