[Quest API] Add GetDefaultRaceSize() overloads to Perl/Lua (#3320)

# Perl
- Add `$mob->GetDefaultRaceSize(race_id)`.
- Add `$mob->GetDefaultRaceSize(race_id, gender_id)`.

# Lua
- Add `mob:GetDefaultRaceSize(race_id)`.
- Add `mob:GetDefaultRaceSize(race_id, gender_id)`.

# Notes
- This allows you to get a default size for a race and gender that isn't the current mob's race and gender.
This commit is contained in:
Alex King 2023-04-29 20:53:49 -04:00 committed by GitHub
parent 09a5551de1
commit 6a393bf0c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 5 deletions

View File

@ -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)

View File

@ -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);

View File

@ -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)

View File

@ -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; }

View File

@ -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);