diff options
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/common/c_content.cpp | 4 | ||||
-rw-r--r-- | src/script/lua_api/l_object.cpp | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index ddcdd803d..47443493b 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -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); diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 46ac61f27..24fdeca4b 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -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; } |