mirror of
https://github.com/moparisthebest/minetest
synced 2024-11-17 14:55:13 -05:00
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;
|
<< std::endl;
|
||||||
|
|
||||||
playersao->setHP(playersao->getHP() - damage);
|
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 the object is a player and its HP changed
|
||||||
if (src_original_hp != pointed_object->getHP() &&
|
if (src_original_hp != pointed_object->getHP() &&
|
||||||
pointed_object->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
pointed_object->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||||
SendPlayerHPOrDie(((PlayerSAO*)pointed_object)->getPeerID(),
|
SendPlayerHPOrDie((PlayerSAO *)pointed_object);
|
||||||
pointed_object->getHP() == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the puncher is a player and its HP changed
|
// If the puncher is a player and its HP changed
|
||||||
if (dst_origin_hp != playersao->getHP()) {
|
if (dst_origin_hp != playersao->getHP())
|
||||||
SendPlayerHPOrDie(playersao->getPeerID(), playersao->getHP() == 0);
|
SendPlayerHPOrDie(playersao);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // action == 0
|
} // action == 0
|
||||||
|
@ -222,15 +222,13 @@ int ObjectRef::l_punch(lua_State *L)
|
|||||||
// If the punched is a player, and its HP changed
|
// If the punched is a player, and its HP changed
|
||||||
if (src_original_hp != co->getHP() &&
|
if (src_original_hp != co->getHP() &&
|
||||||
co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||||
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)co)->getPeerID(),
|
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)co);
|
||||||
co->getHP() == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the puncher is a player, and its HP changed
|
// If the puncher is a player, and its HP changed
|
||||||
if (dst_origin_hp != puncher->getHP() &&
|
if (dst_origin_hp != puncher->getHP() &&
|
||||||
puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||||
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)puncher)->getPeerID(),
|
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)puncher);
|
||||||
puncher->getHP() == 0);
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -265,9 +263,9 @@ int ObjectRef::l_set_hp(lua_State *L)
|
|||||||
<<" hp="<<hp<<std::endl;*/
|
<<" hp="<<hp<<std::endl;*/
|
||||||
// Do it
|
// Do it
|
||||||
co->setHP(hp);
|
co->setHP(hp);
|
||||||
if (co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
if (co->getType() == ACTIVEOBJECT_TYPE_PLAYER)
|
||||||
getServer(L)->SendPlayerHPOrDie(((PlayerSAO*)co)->getPeerID(), co->getHP() == 0);
|
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)co);
|
||||||
}
|
|
||||||
// Return
|
// Return
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1108,7 +1108,7 @@ PlayerSAO* Server::StageTwoClientInit(u16 peer_id)
|
|||||||
SendInventory(playersao);
|
SendInventory(playersao);
|
||||||
|
|
||||||
// Send HP
|
// Send HP
|
||||||
SendPlayerHPOrDie(peer_id, playersao->getHP() == 0);
|
SendPlayerHPOrDie(playersao);
|
||||||
|
|
||||||
// Send Breath
|
// Send Breath
|
||||||
SendPlayerBreath(peer_id);
|
SendPlayerBreath(peer_id);
|
||||||
@ -1487,6 +1487,20 @@ void Server::SendMovement(u16 peer_id)
|
|||||||
Send(&pkt);
|
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)
|
void Server::SendHP(u16 peer_id, u8 hp)
|
||||||
{
|
{
|
||||||
DSTACK(__FUNCTION_NAME);
|
DSTACK(__FUNCTION_NAME);
|
||||||
|
@ -374,7 +374,7 @@ public:
|
|||||||
u8* ser_vers, u16* prot_vers, u8* major, u8* minor, u8* patch,
|
u8* ser_vers, u16* prot_vers, u8* major, u8* minor, u8* patch,
|
||||||
std::string* vers_string);
|
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 SendPlayerBreath(u16 peer_id);
|
||||||
void SendInventory(PlayerSAO* playerSAO);
|
void SendInventory(PlayerSAO* playerSAO);
|
||||||
void SendMovePlayer(u16 peer_id);
|
void SendMovePlayer(u16 peer_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user