mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-27 17:28:41 +00:00
Allow nil
puncher in object:punch
(#14319)
This commit is contained in:
parent
fc0ac64277
commit
72cb4e9bea
11 changed files with 89 additions and 36 deletions
|
@ -332,16 +332,16 @@ u32 LuaEntitySAO::punch(v3f dir,
|
|||
return 0;
|
||||
}
|
||||
|
||||
FATAL_ERROR_IF(!puncher, "Punch action called without SAO");
|
||||
|
||||
s32 old_hp = getHP();
|
||||
ItemStack selected_item, hand_item;
|
||||
ItemStack tool_item = puncher->getWieldedItem(&selected_item, &hand_item);
|
||||
ItemStack tool_item;
|
||||
if (puncher)
|
||||
tool_item = puncher->getWieldedItem(&selected_item, &hand_item);
|
||||
|
||||
PunchDamageResult result = getPunchDamage(
|
||||
m_armor_groups,
|
||||
toolcap,
|
||||
&tool_item,
|
||||
puncher ? &tool_item : nullptr,
|
||||
time_from_last_punch,
|
||||
initial_wear);
|
||||
|
||||
|
@ -355,12 +355,16 @@ u32 LuaEntitySAO::punch(v3f dir,
|
|||
}
|
||||
}
|
||||
|
||||
actionstream << puncher->getDescription() << " (id=" << puncher->getId() <<
|
||||
", hp=" << puncher->getHP() << ") punched " <<
|
||||
getDescription() << " (id=" << m_id << ", hp=" << m_hp <<
|
||||
"), damage=" << (old_hp - (s32)getHP()) <<
|
||||
(damage_handled ? " (handled by Lua)" : "") << std::endl;
|
||||
|
||||
if (puncher) {
|
||||
actionstream << puncher->getDescription() << " (id=" << puncher->getId() <<
|
||||
", hp=" << puncher->getHP() << ")";
|
||||
} else {
|
||||
actionstream << "(none)";
|
||||
}
|
||||
actionstream << " punched " <<
|
||||
getDescription() << " (id=" << m_id << ", hp=" << m_hp <<
|
||||
"), damage=" << (old_hp - (s32)getHP()) <<
|
||||
(damage_handled ? " (handled by Lua)" : "") << std::endl;
|
||||
// TODO: give Lua control over wear
|
||||
return result.wear;
|
||||
}
|
||||
|
|
|
@ -462,11 +462,9 @@ u32 PlayerSAO::punch(v3f dir,
|
|||
if (!toolcap)
|
||||
return 0;
|
||||
|
||||
FATAL_ERROR_IF(!puncher, "Punch action called without SAO");
|
||||
|
||||
// No effect if PvP disabled or if immortal
|
||||
if (isImmortal() || !g_settings->getBool("enable_pvp")) {
|
||||
if (puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||
if (puncher && puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||
// create message and add to list
|
||||
sendPunchCommand();
|
||||
return 0;
|
||||
|
@ -493,11 +491,16 @@ u32 PlayerSAO::punch(v3f dir,
|
|||
}
|
||||
}
|
||||
|
||||
actionstream << puncher->getDescription() << " (id=" << puncher->getId() <<
|
||||
", hp=" << puncher->getHP() << ") punched " <<
|
||||
getDescription() << " (id=" << m_id << ", hp=" << m_hp <<
|
||||
"), damage=" << (old_hp - (s32)getHP()) <<
|
||||
(damage_handled ? " (handled by Lua)" : "") << std::endl;
|
||||
if (puncher) {
|
||||
actionstream << puncher->getDescription() << " (id=" << puncher->getId() <<
|
||||
", hp=" << puncher->getHP() << ")";
|
||||
} else {
|
||||
actionstream << "(none)";
|
||||
}
|
||||
actionstream << " puched " <<
|
||||
getDescription() << " (id=" << m_id << ", hp=" << m_hp <<
|
||||
"), damage=" << (old_hp - (s32)getHP()) <<
|
||||
(damage_handled ? " (handled by Lua)" : "") << std::endl;
|
||||
|
||||
return hitparams.wear;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue