From a633784f780f2f460ad066ef2dea304b382e2439 Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Mon, 3 Jul 2023 01:08:04 -0400 Subject: [PATCH] [Quest API] Add GetClassPlural() and GetRacePlural() to Perl/Lua (#3468) * [Quest API] Add GetClassPlural() and GetRacePlural() to Perl/Lua # Perl - Add `$mob->GetClassPlural()`. - Add `$mob->GetRacePlural()`. # Lua - Add `mob:GetClassPlural()`. - Add `mob:GetRacePlural()`. # Notes - Allows operators to get the plural of a player class or race, example being `Warrior` as `Warriors` or `Dark Elf` as `Dark Elves`. * Update mob.cpp --- zone/client.cpp | 81 ----------------------------------------------- zone/client.h | 2 -- zone/lua_mob.cpp | 14 ++++++++ zone/lua_mob.h | 2 ++ zone/mob.cpp | 80 ++++++++++++++++++++++++++++++++++++++++++++++ zone/mob.h | 3 ++ zone/perl_mob.cpp | 12 +++++++ 7 files changed, 111 insertions(+), 83 deletions(-) diff --git a/zone/client.cpp b/zone/client.cpp index 3168ce379..3ad6ba8b2 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -6904,87 +6904,6 @@ void Client::SetMaxXTargets(uint8 NewMax) FastQueuePacket(&outapp); } -const char* Client::GetRacePlural(Client* client) { - - switch (client->CastToMob()->GetRace()) { - case HUMAN: - return "Humans"; break; - case BARBARIAN: - return "Barbarians"; break; - case ERUDITE: - return "Erudites"; break; - case WOOD_ELF: - return "Wood Elves"; break; - case HIGH_ELF: - return "High Elves"; break; - case DARK_ELF: - return "Dark Elves"; break; - case HALF_ELF: - return "Half Elves"; break; - case DWARF: - return "Dwarves"; break; - case TROLL: - return "Trolls"; break; - case OGRE: - return "Ogres"; break; - case HALFLING: - return "Halflings"; break; - case GNOME: - return "Gnomes"; break; - case IKSAR: - return "Iksar"; break; - case VAHSHIR: - return "Vah Shir"; break; - case FROGLOK: - return "Frogloks"; break; - case DRAKKIN: - return "Drakkin"; break; - default: - return "Races"; break; - } -} - -const char* Client::GetClassPlural(Client* client) { - - switch (client->CastToMob()->GetClass()) { - case WARRIOR: - return "Warriors"; break; - case CLERIC: - return "Clerics"; break; - case PALADIN: - return "Paladins"; break; - case RANGER: - return "Rangers"; break; - case SHADOWKNIGHT: - return "Shadowknights"; break; - case DRUID: - return "Druids"; break; - case MONK: - return "Monks"; break; - case BARD: - return "Bards"; break; - case ROGUE: - return "Rogues"; break; - case SHAMAN: - return "Shamen"; break; - case NECROMANCER: - return "Necromancers"; break; - case WIZARD: - return "Wizards"; break; - case MAGICIAN: - return "Magicians"; break; - case ENCHANTER: - return "Enchanters"; break; - case BEASTLORD: - return "Beastlords"; break; - case BERSERKER: - return "Berserkers"; break; - default: - return "Classes"; break; - } -} - - void Client::SendWebLink(const char *website) { if (website) { diff --git a/zone/client.h b/zone/client.h index 6cdccc597..6f3d1f42d 100644 --- a/zone/client.h +++ b/zone/client.h @@ -1559,8 +1559,6 @@ public: Timer* GetMercTimer() { return &merc_timer; }; Timer* GetPickLockTimer() { return &pick_lock_timer; }; - const char* GetRacePlural(Client* client); - const char* GetClassPlural(Client* client); void SendWebLink(const char* website); void SendMarqueeMessage(uint32 type, std::string message, uint32 duration = 3000); void SendMarqueeMessage(uint32 type, uint32 priority, uint32 fade_in, uint32 fade_out, uint32 duration, std::string message); diff --git a/zone/lua_mob.cpp b/zone/lua_mob.cpp index cba5c36e0..12e18158a 100644 --- a/zone/lua_mob.cpp +++ b/zone/lua_mob.cpp @@ -3115,6 +3115,18 @@ Lua_Mob_List Lua_Mob::GetCloseMobList(float distance, bool ignore_self) { return ret; } +std::string Lua_Mob::GetClassPlural() +{ + Lua_Safe_Call_String(); + return self->GetClassPlural(); +} + +std::string Lua_Mob::GetRacePlural() +{ + Lua_Safe_Call_String(); + return self->GetRacePlural(); +} + luabind::scope lua_register_mob() { return luabind::class_("Mob") .def(luabind::constructor<>()) @@ -3323,6 +3335,7 @@ luabind::scope lua_register_mob() { .def("GetCasterLevel", &Lua_Mob::GetCasterLevel) .def("GetClass", &Lua_Mob::GetClass) .def("GetClassName", &Lua_Mob::GetClassName) + .def("GetClassPlural", &Lua_Mob::GetClassPlural) .def("GetCleanName", &Lua_Mob::GetCleanName) .def("GetCloseMobList", (Lua_Mob_List(Lua_Mob::*)(void))&Lua_Mob::GetCloseMobList) .def("GetCloseMobList", (Lua_Mob_List(Lua_Mob::*)(float))&Lua_Mob::GetCloseMobList) @@ -3426,6 +3439,7 @@ luabind::scope lua_register_mob() { .def("GetPhR", &Lua_Mob::GetPhR) .def("GetRace", &Lua_Mob::GetRace) .def("GetRaceName", &Lua_Mob::GetRaceName) + .def("GetRacePlural", &Lua_Mob::GetRacePlural) .def("GetRemainingTimeMS", &Lua_Mob::GetRemainingTimeMS) .def("GetResist", (int(Lua_Mob::*)(int))&Lua_Mob::GetResist) .def("GetReverseFactionCon", (int(Lua_Mob::*)(Lua_Mob))&Lua_Mob::GetReverseFactionCon) diff --git a/zone/lua_mob.h b/zone/lua_mob.h index 58b5c8361..0d5a5e1d0 100644 --- a/zone/lua_mob.h +++ b/zone/lua_mob.h @@ -554,6 +554,8 @@ public: Lua_Mob_List GetCloseMobList(); Lua_Mob_List GetCloseMobList(float distance); Lua_Mob_List GetCloseMobList(float distance, bool ignore_self); + std::string GetClassPlural(); + std::string GetRacePlural(); }; #endif diff --git a/zone/mob.cpp b/zone/mob.cpp index 2537d1366..5621c2703 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -8262,3 +8262,83 @@ int Mob::DispatchZoneControllerEvent( return ret; } + +std::string Mob::GetRacePlural() +{ + switch (GetBaseRace()) { + case RACE_HUMAN_1: + return "Humans"; + case RACE_BARBARIAN_2: + return "Barbarians"; + case RACE_ERUDITE_3: + return "Erudites"; + case RACE_WOOD_ELF_4: + return "Wood Elves"; + case RACE_HIGH_ELF_5: + return "High Elves"; + case RACE_DARK_ELF_6: + return "Dark Elves"; + case RACE_HALF_ELF_7: + return "Half Elves"; + case RACE_DWARF_8: + return "Dwarves"; + case RACE_TROLL_9: + return "Trolls"; + case RACE_OGRE_10: + return "Ogres"; + case RACE_HALFLING_11: + return "Halflings"; + case RACE_GNOME_12: + return "Gnomes"; + case RACE_IKSAR_128: + return "Iksar"; + case RACE_VAH_SHIR_130: + return "Vah Shir"; + case RACE_FROGLOK_330: + return "Frogloks"; + case RACE_DRAKKIN_522: + return "Drakkin"; + default: + return "Races"; + } +} + +std::string Mob::GetClassPlural() +{ + switch (GetClass()) { + case WARRIOR: + return "Warriors"; + case CLERIC: + return "Clerics"; + case PALADIN: + return "Paladins"; + case RANGER: + return "Rangers"; + case SHADOWKNIGHT: + return "Shadowknights"; + case DRUID: + return "Druids"; + case MONK: + return "Monks"; + case BARD: + return "Bards"; + case ROGUE: + return "Rogues"; + case SHAMAN: + return "Shamans"; + case NECROMANCER: + return "Necromancers"; + case WIZARD: + return "Wizards"; + case MAGICIAN: + return "Magicians"; + case ENCHANTER: + return "Enchanters"; + case BEASTLORD: + return "Beastlords"; + case BERSERKER: + return "Berserkers"; + default: + return "Classes"; + } +} diff --git a/zone/mob.h b/zone/mob.h index 9c0863876..14deb85c4 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -1331,6 +1331,9 @@ public: bool HasSpellEffect(int effect_id); + std::string GetRacePlural(); + std::string GetClassPlural(); + //Command #Tune functions void TuneGetStats(Mob* defender, Mob *attacker); void TuneGetACByPctMitigation(Mob* defender, Mob *attacker, float pct_mitigation, int interval = 10, int max_loop = 1000, int atk_override = 0, int Msg = 0); diff --git a/zone/perl_mob.cpp b/zone/perl_mob.cpp index 6fd73609a..bb59b33a8 100644 --- a/zone/perl_mob.cpp +++ b/zone/perl_mob.cpp @@ -3078,6 +3078,16 @@ StatBonuses* Perl_Mob_GetSpellBonuses(Mob* self) return self->GetSpellBonusesPtr(); } +std::string Perl_Mob_GetClassPlural(Mob* self) +{ + return self->GetClassPlural(); +} + +std::string Perl_Mob_GetRacePlural(Mob* self) +{ + return self->GetRacePlural(); +} + void perl_register_mob() { perl::interpreter perl(PERL_GET_THX); @@ -3268,6 +3278,7 @@ void perl_register_mob() package.add("GetCasterLevel", &Perl_Mob_GetCasterLevel); package.add("GetClass", &Perl_Mob_GetClass); package.add("GetClassLevelFactor", &Perl_Mob_GetClassLevelFactor); + package.add("GetClassPlural", &Perl_Mob_GetClassPlural); package.add("GetClassName", &Perl_Mob_GetClassName); package.add("GetCleanName", &Perl_Mob_GetCleanName); package.add("GetCloseMobList", (perl::array(*)(Mob*))&Perl_Mob_GetCloseMobList); @@ -3375,6 +3386,7 @@ void perl_register_mob() package.add("GetPhR", &Perl_Mob_GetPhR); package.add("GetRace", &Perl_Mob_GetRace); package.add("GetRaceName", &Perl_Mob_GetRaceName); + package.add("GetRacePlural", &Perl_Mob_GetRacePlural); package.add("GetRemainingTimeMS", &Perl_Mob_GetRemainingTimeMS); package.add("GetResist", &Perl_Mob_GetResist); package.add("GetReverseFactionCon", &Perl_Mob_GetReverseFactionCon);