aboutsummaryrefslogtreecommitdiff
path: root/src/content_sao.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/content_sao.cpp')
-rw-r--r--src/content_sao.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/content_sao.cpp b/src/content_sao.cpp
index 35133490e..7a1171eb7 100644
--- a/src/content_sao.cpp
+++ b/src/content_sao.cpp
@@ -578,28 +578,32 @@ int LuaEntitySAO::punch(v3f dir,
punchitem,
time_from_last_punch);
- if (result.did_punch) {
- setHP(getHP() - result.damage);
+ bool damage_handled = m_env->getScriptIface()->luaentity_Punch(m_id, puncher,
+ time_from_last_punch, toolcap, dir, result.did_punch ? result.damage : 0);
- if (result.damage > 0) {
- std::string punchername = puncher ? puncher->getDescription() : "nil";
+ if (!damage_handled) {
+ if (result.did_punch) {
+ setHP(getHP() - result.damage);
- actionstream << getDescription() << " punched by "
- << punchername << ", damage " << result.damage
- << " hp, health now " << getHP() << " hp" << std::endl;
- }
+ if (result.damage > 0) {
+ std::string punchername = puncher ? puncher->getDescription() : "nil";
- std::string str = gob_cmd_punched(result.damage, getHP());
- // create message and add to list
- ActiveObjectMessage aom(getId(), true, str);
- m_messages_out.push(aom);
+ actionstream << getDescription() << " punched by "
+ << punchername << ", damage " << result.damage
+ << " hp, health now " << getHP() << " hp" << std::endl;
+ }
+
+ std::string str = gob_cmd_punched(result.damage, getHP());
+ // create message and add to list
+ ActiveObjectMessage aom(getId(), true, str);
+ m_messages_out.push(aom);
+ }
}
if (getHP() == 0)
m_removed = true;
- m_env->getScriptIface()->luaentity_Punch(m_id, puncher,
- time_from_last_punch, toolcap, dir);
+
return result.wear;
}