mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-13 16:45:20 +02:00
Respect object property hp_max field for players (#6287)
* Respect object property hp_max field for players This allows modders to configure the maximal HP per player * Statbars: Downscale bar to full 20 HP when exceeding this value Add default max HP for players and breath constants to builtin Document the constants * Rename PLAYER_MAX_HP -> PLAYER_MAX_HP_DEFAULT
This commit is contained in:
@@ -183,7 +183,9 @@ void read_object_properties(lua_State *L, int index,
|
||||
if(!lua_istable(L, index))
|
||||
return;
|
||||
|
||||
prop->hp_max = getintfield_default(L, -1, "hp_max", 10);
|
||||
int hp_max = 0;
|
||||
if (getintfield(L, -1, "hp_max", hp_max))
|
||||
prop->hp_max = (s16)rangelim(hp_max, 0, S16_MAX);
|
||||
|
||||
getboolfield(L, -1, "physical", prop->physical);
|
||||
getboolfield(L, -1, "collide_with_objects", prop->collideWithObjects);
|
||||
|
@@ -751,6 +751,11 @@ int ObjectRef::l_set_properties(lua_State *L)
|
||||
if (!prop)
|
||||
return 0;
|
||||
read_object_properties(L, 2, prop, getServer(L)->idef());
|
||||
if (prop->hp_max < co->getHP()) {
|
||||
co->setHP(prop->hp_max);
|
||||
if (co->getType() == ACTIVEOBJECT_TYPE_PLAYER)
|
||||
getServer(L)->SendPlayerHPOrDie((PlayerSAO *)co);
|
||||
}
|
||||
co->notifyObjectPropertiesModified();
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user