forked from Mirrorlandia_minetest/minetest
Fix damage flash when damage disabled
This commit is contained in:
parent
8eb272cea3
commit
1a1774a105
@ -1151,7 +1151,7 @@ void Server::handleCommand_Damage(NetworkPacket* pkt)
|
||||
<< std::endl;
|
||||
|
||||
playersao->setHP(playersao->getHP() - damage);
|
||||
SendPlayerHPOrDie(playersao->getPeerID(), playersao->getHP() == 0);
|
||||
SendPlayerHPOrDie(playersao);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1510,14 +1510,12 @@ void Server::handleCommand_Interact(NetworkPacket* pkt)
|
||||
// If the object is a player and its HP changed
|
||||
if (src_original_hp != pointed_object->getHP() &&
|
||||
pointed_object->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||
SendPlayerHPOrDie(((PlayerSAO*)pointed_object)->getPeerID(),
|
||||
pointed_object->getHP() == 0);
|
||||
SendPlayerHPOrDie((PlayerSAO *)pointed_object);
|
||||
}
|
||||
|
||||
// If the puncher is a player and its HP changed
|
||||
if (dst_origin_hp != playersao->getHP()) {
|
||||
SendPlayerHPOrDie(playersao->getPeerID(), playersao->getHP() == 0);
|
||||
}
|
||||
if (dst_origin_hp != playersao->getHP())
|
||||
SendPlayerHPOrDie(playersao);
|
||||
}
|
||||
|
||||
} // action == 0
|
||||
|
@ -222,15 +222,13 @@ int ObjectRef::l_punch(lua_State *L)
|
||||
// If the punched is a player, and its HP changed
|
||||
if (src_original_hp != co->getHP() &&
|
||||
co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)co)->getPeerID(),
|
||||
co->getHP() == 0);
|
||||
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)co);
|
||||
}
|
||||
|
||||
// If the puncher is a player, and its HP changed
|
||||
if (dst_origin_hp != puncher->getHP() &&
|
||||
puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)puncher)->getPeerID(),
|
||||
puncher->getHP() == 0);
|
||||
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)puncher);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -265,9 +263,9 @@ int ObjectRef::l_set_hp(lua_State *L)
|
||||
<<" hp="<<hp<<std::endl;*/
|
||||
// Do it
|
||||
co->setHP(hp);
|
||||
if (co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)co)->getPeerID(), co->getHP() == 0);
|
||||
}
|
||||
if (co->getType() == ACTIVEOBJECT_TYPE_PLAYER)
|
||||
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)co);
|
||||
|
||||
// Return
|
||||
return 0;
|
||||
}
|
||||
|
@ -1108,7 +1108,7 @@ PlayerSAO* Server::StageTwoClientInit(u16 peer_id)
|
||||
SendInventory(playersao);
|
||||
|
||||
// Send HP
|
||||
SendPlayerHPOrDie(peer_id, playersao->getHP() == 0);
|
||||
SendPlayerHPOrDie(playersao);
|
||||
|
||||
// Send Breath
|
||||
SendPlayerBreath(peer_id);
|
||||
@ -1487,6 +1487,20 @@ void Server::SendMovement(u16 peer_id)
|
||||
Send(&pkt);
|
||||
}
|
||||
|
||||
void Server::SendPlayerHPOrDie(PlayerSAO *playersao)
|
||||
{
|
||||
if (!g_settings->getBool("enable_damage"))
|
||||
return;
|
||||
|
||||
u16 peer_id = playersao->getPeerID();
|
||||
bool is_alive = playersao->getHP() > 0;
|
||||
|
||||
if (is_alive)
|
||||
SendPlayerHP(peer_id);
|
||||
else
|
||||
DiePlayer(peer_id);
|
||||
}
|
||||
|
||||
void Server::SendHP(u16 peer_id, u8 hp)
|
||||
{
|
||||
DSTACK(__FUNCTION_NAME);
|
||||
|
@ -374,7 +374,7 @@ public:
|
||||
u8* ser_vers, u16* prot_vers, u8* major, u8* minor, u8* patch,
|
||||
std::string* vers_string);
|
||||
|
||||
void SendPlayerHPOrDie(u16 peer_id, bool die) { die ? DiePlayer(peer_id) : SendPlayerHP(peer_id); }
|
||||
void SendPlayerHPOrDie(PlayerSAO *player);
|
||||
void SendPlayerBreath(u16 peer_id);
|
||||
void SendInventory(PlayerSAO* playerSAO);
|
||||
void SendMovePlayer(u16 peer_id);
|
||||
|
Loading…
Reference in New Issue
Block a user