+ bool damage_handled = m_env->getScriptIface()->on_punchplayer(playersao,
+ puncher, time_from_last_punch, toolcap, dir,
+ hitparams.hp);
+
+ if (!damage_handled) {
+ setHP(getHP() - hitparams.hp);
+ } else { // override client prediction
+ if (puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
+ std::string str = gob_cmd_punched(0, getHP());
+ // create message and add to list
+ ActiveObjectMessage aom(getId(), true, str);
+ m_messages_out.push(aom);
+ }
+ }
+
+
+ actionstream << "Player " << m_player->getName() << " punched by "
+ << punchername;
+ if (!damage_handled) {
+ actionstream << ", damage " << hitparams.hp << " HP";
+ } else {
+ actionstream << ", damage handled by lua";
+ }
+ actionstream << std::endl;