mirror of
https://github.com/minetest/minetest.git
synced 2024-12-25 07:32:24 +01:00
parent
85c824ed13
commit
303329f2d6
@ -337,19 +337,9 @@ u32 LuaEntitySAO::punch(v3f dir,
|
|||||||
if (result.did_punch) {
|
if (result.did_punch) {
|
||||||
setHP((s32)getHP() - result.damage,
|
setHP((s32)getHP() - result.damage,
|
||||||
PlayerHPChangeReason(PlayerHPChangeReason::PLAYER_PUNCH, puncher));
|
PlayerHPChangeReason(PlayerHPChangeReason::PLAYER_PUNCH, puncher));
|
||||||
|
|
||||||
// create message and add to list
|
|
||||||
sendPunchCommand();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getHP() == 0 && !isGone()) {
|
|
||||||
clearParentAttachment();
|
|
||||||
clearChildAttachments();
|
|
||||||
m_env->getScriptIface()->luaentity_on_death(m_id, puncher);
|
|
||||||
markForRemoval();
|
|
||||||
}
|
|
||||||
|
|
||||||
actionstream << puncher->getDescription() << " (id=" << puncher->getId() <<
|
actionstream << puncher->getDescription() << " (id=" << puncher->getId() <<
|
||||||
", hp=" << puncher->getHP() << ") punched " <<
|
", hp=" << puncher->getHP() << ") punched " <<
|
||||||
getDescription() << " (id=" << m_id << ", hp=" << m_hp <<
|
getDescription() << " (id=" << m_id << ", hp=" << m_hp <<
|
||||||
@ -402,6 +392,20 @@ std::string LuaEntitySAO::getDescription()
|
|||||||
void LuaEntitySAO::setHP(s32 hp, const PlayerHPChangeReason &reason)
|
void LuaEntitySAO::setHP(s32 hp, const PlayerHPChangeReason &reason)
|
||||||
{
|
{
|
||||||
m_hp = rangelim(hp, 0, U16_MAX);
|
m_hp = rangelim(hp, 0, U16_MAX);
|
||||||
|
|
||||||
|
sendPunchCommand();
|
||||||
|
|
||||||
|
if (m_hp == 0 && !isGone()) {
|
||||||
|
clearParentAttachment();
|
||||||
|
clearChildAttachments();
|
||||||
|
if (m_registered) {
|
||||||
|
ServerActiveObject *killer = nullptr;
|
||||||
|
if (reason.type == PlayerHPChangeReason::PLAYER_PUNCH)
|
||||||
|
killer = reason.object;
|
||||||
|
m_env->getScriptIface()->luaentity_on_death(m_id, killer);
|
||||||
|
}
|
||||||
|
markForRemoval();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 LuaEntitySAO::getHP() const
|
u16 LuaEntitySAO::getHP() const
|
||||||
|
@ -36,23 +36,30 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
~LuaEntitySAO();
|
~LuaEntitySAO();
|
||||||
|
|
||||||
ActiveObjectType getType() const { return ACTIVEOBJECT_TYPE_LUAENTITY; }
|
ActiveObjectType getType() const { return ACTIVEOBJECT_TYPE_LUAENTITY; }
|
||||||
ActiveObjectType getSendType() const { return ACTIVEOBJECT_TYPE_GENERIC; }
|
ActiveObjectType getSendType() const { return ACTIVEOBJECT_TYPE_GENERIC; }
|
||||||
virtual void addedToEnvironment(u32 dtime_s);
|
virtual void addedToEnvironment(u32 dtime_s);
|
||||||
void step(float dtime, bool send_recommended);
|
void step(float dtime, bool send_recommended);
|
||||||
std::string getClientInitializationData(u16 protocol_version);
|
std::string getClientInitializationData(u16 protocol_version);
|
||||||
|
|
||||||
bool isStaticAllowed() const { return m_prop.static_save; }
|
bool isStaticAllowed() const { return m_prop.static_save; }
|
||||||
bool shouldUnload() const { return true; }
|
bool shouldUnload() const { return true; }
|
||||||
void getStaticData(std::string *result) const;
|
void getStaticData(std::string *result) const;
|
||||||
|
|
||||||
u32 punch(v3f dir, const ToolCapabilities *toolcap = nullptr,
|
u32 punch(v3f dir, const ToolCapabilities *toolcap = nullptr,
|
||||||
ServerActiveObject *puncher = nullptr,
|
ServerActiveObject *puncher = nullptr,
|
||||||
float time_from_last_punch = 1000000.0f,
|
float time_from_last_punch = 1000000.0f,
|
||||||
u16 initial_wear = 0);
|
u16 initial_wear = 0);
|
||||||
|
|
||||||
void rightClick(ServerActiveObject *clicker);
|
void rightClick(ServerActiveObject *clicker);
|
||||||
|
|
||||||
void setPos(const v3f &pos);
|
void setPos(const v3f &pos);
|
||||||
void moveTo(v3f pos, bool continuous);
|
void moveTo(v3f pos, bool continuous);
|
||||||
float getMinimumSavedMovement();
|
float getMinimumSavedMovement();
|
||||||
|
|
||||||
std::string getDescription();
|
std::string getDescription();
|
||||||
|
|
||||||
void setHP(s32 hp, const PlayerHPChangeReason &reason);
|
void setHP(s32 hp, const PlayerHPChangeReason &reason);
|
||||||
u16 getHP() const;
|
u16 getHP() const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user