forked from Mirrorlandia_minetest/minetest
Preserve immortal group for players when damage is disabled
This commit is contained in:
parent
fd1c1a755e
commit
a01a02f7a1
@ -1085,7 +1085,7 @@ default_stack_max (Default stack size) int 99
|
|||||||
# Enable players getting damage and dying.
|
# Enable players getting damage and dying.
|
||||||
enable_damage (Damage) bool false
|
enable_damage (Damage) bool false
|
||||||
|
|
||||||
# Enable creative mode for new created maps.
|
# Enable creative mode for all players
|
||||||
creative_mode (Creative) bool false
|
creative_mode (Creative) bool false
|
||||||
|
|
||||||
# A chosen map seed for a new map, leave empty for random.
|
# A chosen map seed for a new map, leave empty for random.
|
||||||
|
@ -1745,8 +1745,9 @@ to games.
|
|||||||
### `ObjectRef` groups
|
### `ObjectRef` groups
|
||||||
|
|
||||||
* `immortal`: Skips all damage and breath handling for an object. This group
|
* `immortal`: Skips all damage and breath handling for an object. This group
|
||||||
will also hide the integrated HUD status bars for players, and is
|
will also hide the integrated HUD status bars for players. It is
|
||||||
automatically set to all players when damage is disabled on the server.
|
automatically set to all players when damage is disabled on the server and
|
||||||
|
cannot be reset (subject to change).
|
||||||
* `punch_operable`: For entities; disables the regular damage mechanism for
|
* `punch_operable`: For entities; disables the regular damage mechanism for
|
||||||
players punching it by hand or a non-tool item, so that it can do something
|
players punching it by hand or a non-tool item, so that it can do something
|
||||||
else than take damage.
|
else than take damage.
|
||||||
|
@ -355,6 +355,15 @@ int ObjectRef::l_set_armor_groups(lua_State *L)
|
|||||||
ItemGroupList groups;
|
ItemGroupList groups;
|
||||||
|
|
||||||
read_groups(L, 2, groups);
|
read_groups(L, 2, groups);
|
||||||
|
if (sao->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
|
||||||
|
if (!g_settings->getBool("enable_damage") && !itemgroup_get(groups, "immortal")) {
|
||||||
|
warningstream << "Mod tried to enable damage for a player, but it's "
|
||||||
|
"disabled globally. Ignoring." << std::endl;
|
||||||
|
infostream << script_get_backtrace(L) << std::endl;
|
||||||
|
groups["immortal"] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sao->setArmorGroups(groups);
|
sao->setArmorGroups(groups);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1349,7 +1349,7 @@ void Server::SendPlayerHPOrDie(PlayerSAO *playersao, const PlayerHPChangeReason
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
session_t peer_id = playersao->getPeerID();
|
session_t peer_id = playersao->getPeerID();
|
||||||
bool is_alive = playersao->getHP() > 0;
|
bool is_alive = !playersao->isDead();
|
||||||
|
|
||||||
if (is_alive)
|
if (is_alive)
|
||||||
SendPlayerHP(peer_id);
|
SendPlayerHP(peer_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user