diff --git a/zone/lua_mob.cpp b/zone/lua_mob.cpp index 51571513d..ab8b67a08 100644 --- a/zone/lua_mob.cpp +++ b/zone/lua_mob.cpp @@ -2875,6 +2875,16 @@ float Lua_Mob::GetDefaultRaceSize() { return self->GetDefaultRaceSize(); } +float Lua_Mob::GetDefaultRaceSize(int race_id) { + Lua_Safe_Call_Real(); + return self->GetDefaultRaceSize(race_id); +} + +float Lua_Mob::GetDefaultRaceSize(int race_id, int gender_id) { + Lua_Safe_Call_Real(); + return self->GetDefaultRaceSize(race_id, gender_id); +} + float Lua_Mob::GetActSpellRange(uint16 spell_id, float range) { Lua_Safe_Call_Real(); return self->GetActSpellRange(spell_id, range); @@ -3212,7 +3222,9 @@ luabind::scope lua_register_mob() { .def("GetDEX", &Lua_Mob::GetDEX) .def("GetDR", &Lua_Mob::GetDR) .def("GetDamageAmount", (uint32(Lua_Mob::*)(Lua_Mob))&Lua_Mob::GetDamageAmount) - .def("GetDefaultRaceSize", &Lua_Mob::GetDefaultRaceSize) + .def("GetDefaultRaceSize", (float(Lua_Mob::*)(void))&Lua_Mob::GetDefaultRaceSize) + .def("GetDefaultRaceSize", (float(Lua_Mob::*)(int))&Lua_Mob::GetDefaultRaceSize) + .def("GetDefaultRaceSize", (float(Lua_Mob::*)(int,int))&Lua_Mob::GetDefaultRaceSize) .def("GetDeity", &Lua_Mob::GetDeity) .def("GetDisplayAC", &Lua_Mob::GetDisplayAC) .def("GetDrakkinDetails", &Lua_Mob::GetDrakkinDetails) diff --git a/zone/lua_mob.h b/zone/lua_mob.h index 4e38426df..e4fff1090 100644 --- a/zone/lua_mob.h +++ b/zone/lua_mob.h @@ -516,6 +516,8 @@ public: bool IsFindable(); bool IsTrackable(); float GetDefaultRaceSize(); + float GetDefaultRaceSize(int race_id); + float GetDefaultRaceSize(int race_id, int gender_id); int64 GetActDoTDamage(uint16 spell_id, int64 value, Lua_Mob target); int64 GetActDoTDamage(uint16 spell_id, int64 value, Lua_Mob target, bool from_buff_tic); int64 GetActReflectedSpellDamage(uint16 spell_id, int64 value, int effectiveness); diff --git a/zone/mob.cpp b/zone/mob.cpp index ac128d2ec..69178d581 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -6724,8 +6724,11 @@ void Mob::CommonBreakInvisible() CancelSneakHide(); } -float Mob::GetDefaultRaceSize() const { - return GetRaceGenderDefaultHeight(race, gender); +float Mob::GetDefaultRaceSize(int race_id, int gender_id) const { + return GetRaceGenderDefaultHeight( + race_id > 0 ? race_id : race, + gender_id >= 0 ? gender_id : gender + ); } bool Mob::ShieldAbility(uint32 target_id, int shielder_max_distance, int shield_duration, int shield_target_mitigation, int shielder_mitigation, bool use_aa, bool can_shield_npc) diff --git a/zone/mob.h b/zone/mob.h index 872a0bad4..25eabc945 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -1205,7 +1205,7 @@ public: void SendTo(float new_x, float new_y, float new_z); void SendToFixZ(float new_x, float new_y, float new_z); float GetZOffset() const; - float GetDefaultRaceSize() const; + float GetDefaultRaceSize(int race_id = -1, int gender_id = -1) const; void FixZ(int32 z_find_offset = 5, bool fix_client_z = false); float GetFixedZ(const glm::vec3 &destination, int32 z_find_offset = 5); virtual int GetStuckBehavior() const { return 0; } diff --git a/zone/perl_mob.cpp b/zone/perl_mob.cpp index 777443fd3..fc4cb634e 100644 --- a/zone/perl_mob.cpp +++ b/zone/perl_mob.cpp @@ -2887,6 +2887,16 @@ float Perl_Mob_GetDefaultRaceSize(Mob* self) // @categories Script Utility return self->GetDefaultRaceSize(); } +float Perl_Mob_GetDefaultRaceSize(Mob* self, int race_id) // @categories Script Utility +{ + return self->GetDefaultRaceSize(race_id); +} + +float Perl_Mob_GetDefaultRaceSize(Mob* self, int race_id, int gender_id) // @categories Script Utility +{ + return self->GetDefaultRaceSize(race_id, gender_id); +} + uint32 Perl_Mob_GetRemainingTimeMS(Mob* self, const char* timer_name) { return quest_manager.getremainingtimeMS(timer_name, self); @@ -3141,7 +3151,9 @@ void perl_register_mob() package.add("GetClassName", &Perl_Mob_GetClassName); package.add("GetCleanName", &Perl_Mob_GetCleanName); package.add("GetCorruption", &Perl_Mob_GetCorruption); - package.add("GetDefaultRaceSize", &Perl_Mob_GetDefaultRaceSize); + package.add("GetDefaultRaceSize", (float(*)(Mob*))&Perl_Mob_GetDefaultRaceSize); + package.add("GetDefaultRaceSize", (float(*)(Mob*, int))&Perl_Mob_GetDefaultRaceSize); + package.add("GetDefaultRaceSize", (float(*)(Mob*, int, int))&Perl_Mob_GetDefaultRaceSize); package.add("GetDEX", &Perl_Mob_GetDEX); package.add("GetDR", &Perl_Mob_GetDR); package.add("GetDamageAmount", &Perl_Mob_GetDamageAmount);