From e994d14418ec696b5e86a2de98b2fd4f3fbbc0ae Mon Sep 17 00:00:00 2001 From: nytmyr <53322305+nytmyr@users.noreply.github.com> Date: Mon, 30 Dec 2024 22:58:37 -0600 Subject: [PATCH] Move spelltype names, spell subtypes, category names and setting names to maps. --- common/spdat.h | 150 +++++++++++++ zone/bot.h | 54 ++++- zone/mob.cpp | 575 ++----------------------------------------------- zone/mob.h | 6 +- 4 files changed, 228 insertions(+), 557 deletions(-) diff --git a/common/spdat.h b/common/spdat.h index 4681a8584..985aab518 100644 --- a/common/spdat.h +++ b/common/spdat.h @@ -742,6 +742,156 @@ namespace BotSpellTypes constexpr uint16 DISCIPLINE_END = BotSpellTypes::DiscUtility; // Do not remove this, increment as needed } +static std::map spellType_names = { + { BotSpellTypes::Nuke, "Nuke" }, + { BotSpellTypes::RegularHeal, "Regular Heal" }, + { BotSpellTypes::Root, "Root" }, + { BotSpellTypes::Buff, "Buff" }, + { BotSpellTypes::Escape, "Escape" }, + { BotSpellTypes::Pet, "Pet" }, + { BotSpellTypes::Lifetap, "Lifetap" }, + { BotSpellTypes::Snare, "Snare" }, + { BotSpellTypes::DOT, "DoT" }, + { BotSpellTypes::Dispel, "Dispel" }, + { BotSpellTypes::InCombatBuff, "In-Combat Buff" }, + { BotSpellTypes::Mez, "Mez" }, + { BotSpellTypes::Charm, "Charm" }, + { BotSpellTypes::Slow, "Slow" }, + { BotSpellTypes::Debuff, "Debuff" }, + { BotSpellTypes::Cure, "Cure" }, + { BotSpellTypes::GroupCures, "Group Cure" }, + { BotSpellTypes::PetCures, "Pet Cure" }, + { BotSpellTypes::Resurrect, "Resurrect" }, + { BotSpellTypes::HateRedux, "Hate Reduction" }, + { BotSpellTypes::InCombatBuffSong, "In-Combat Buff Song" }, + { BotSpellTypes::OutOfCombatBuffSong, "Out-of-Combat Buff Song" }, + { BotSpellTypes::PreCombatBuff, "Pre-Combat Buff" }, + { BotSpellTypes::PreCombatBuffSong, "Pre-Combat Buff Song" }, + { BotSpellTypes::Fear, "Fear" }, + { BotSpellTypes::Stun, "Stun" }, + { BotSpellTypes::CompleteHeal, "Complete Heal" }, + { BotSpellTypes::FastHeals, "Fast Heal" }, + { BotSpellTypes::VeryFastHeals, "Very Fast Heal" }, + { BotSpellTypes::GroupHeals, "Group Heal" }, + { BotSpellTypes::GroupCompleteHeals, "Group Complete Heal" }, + { BotSpellTypes::GroupHoTHeals, "Group HoT Heal" }, + { BotSpellTypes::HoTHeals, "HoT Heal" }, + { BotSpellTypes::AENukes, "AE Nuke" }, + { BotSpellTypes::AERains, "AE Rain" }, + { BotSpellTypes::AEMez, "AE Mez" }, + { BotSpellTypes::AEStun, "AE Stun" }, + { BotSpellTypes::AEDebuff, "AE Debuff" }, + { BotSpellTypes::AESlow, "AE Slow" }, + { BotSpellTypes::AESnare, "AE Snare" }, + { BotSpellTypes::AEFear, "AE Fear" }, + { BotSpellTypes::AEDispel, "AE Dispel" }, + { BotSpellTypes::AERoot, "AE Root" }, + { BotSpellTypes::AEDoT, "AE DoT" }, + { BotSpellTypes::AELifetap, "AE Lifetap" }, + { BotSpellTypes::PBAENuke, "PBAE Nuke" }, + { BotSpellTypes::PetBuffs, "Pet Buff" }, + { BotSpellTypes::PetRegularHeals, "Pet Regular Heal" }, + { BotSpellTypes::PetCompleteHeals, "Pet Complete Heal" }, + { BotSpellTypes::PetFastHeals, "Pet Fast Heal" }, + { BotSpellTypes::PetVeryFastHeals, "Pet Very Fast Heal" }, + { BotSpellTypes::PetHoTHeals, "Pet HoT Heal" }, + { BotSpellTypes::DamageShields, "Damage Shield" }, + { BotSpellTypes::ResistBuffs, "Resist Buff" }, + { BotSpellTypes::PetDamageShields, "Pet Damage Shield" }, + { BotSpellTypes::PetResistBuffs, "Pet Resist Buff" }, + { BotSpellTypes::HateLine, "Hate Line" }, + { BotSpellTypes::AEHateLine, "AE Hate Line" }, + { BotSpellTypes::Lull, "Lull" }, + { BotSpellTypes::Teleport, "Teleport" }, + { BotSpellTypes::Succor, "Succor" }, + { BotSpellTypes::BindAffinity, "Bind Affinity" }, + { BotSpellTypes::Identify, "Identify" }, + { BotSpellTypes::Levitate, "Levitate" }, + { BotSpellTypes::Rune, "Rune" }, + { BotSpellTypes::WaterBreathing, "Water Breathing" }, + { BotSpellTypes::Size, "Size" }, + { BotSpellTypes::Invisibility, "Invisibility" }, + { BotSpellTypes::MovementSpeed, "Movement Speed" }, + { BotSpellTypes::SendHome, "Send Home" }, + { BotSpellTypes::SummonCorpse, "Summon Corpse" }, + { BotSpellTypes::AELull, "AE Lull" } +}; + +static std::map spellType_shortNames = { + { BotSpellTypes::Nuke, "nukes" }, + { BotSpellTypes::RegularHeal, "regularheals" }, + { BotSpellTypes::Root, "roots" }, + { BotSpellTypes::Buff, "buffs" }, + { BotSpellTypes::Escape, "escapes" }, + { BotSpellTypes::Pet, "pets" }, + { BotSpellTypes::Lifetap, "lifetaps" }, + { BotSpellTypes::Snare, "snares" }, + { BotSpellTypes::DOT, "dots" }, + { BotSpellTypes::Dispel, "dispels" }, + { BotSpellTypes::InCombatBuff, "incombatbuffs" }, + { BotSpellTypes::Mez, "mez" }, + { BotSpellTypes::Charm, "charms" }, + { BotSpellTypes::Slow, "slows" }, + { BotSpellTypes::Debuff, "debuffs" }, + { BotSpellTypes::Cure, "cures" }, + { BotSpellTypes::GroupCures, "groupcures" }, + { BotSpellTypes::PetCures, "petcure" }, + { BotSpellTypes::Resurrect, "resurrect" }, + { BotSpellTypes::HateRedux, "hateredux" }, + { BotSpellTypes::InCombatBuffSong, "incombatbuffsongs" }, + { BotSpellTypes::OutOfCombatBuffSong, "outofcombatbuffsongs" }, + { BotSpellTypes::PreCombatBuff, "precombatbuffs" }, + { BotSpellTypes::PreCombatBuffSong, "precombatbuffsongs" }, + { BotSpellTypes::Fear, "fears" }, + { BotSpellTypes::Stun, "stuns" }, + { BotSpellTypes::CompleteHeal, "completeheals" }, + { BotSpellTypes::FastHeals, "fastheals" }, + { BotSpellTypes::VeryFastHeals, "veryfastheals" }, + { BotSpellTypes::GroupHeals, "groupheals" }, + { BotSpellTypes::GroupCompleteHeals, "groupcompleteheals" }, + { BotSpellTypes::GroupHoTHeals, "grouphotheals" }, + { BotSpellTypes::HoTHeals, "hotheals" }, + { BotSpellTypes::AENukes, "aenukes" }, + { BotSpellTypes::AERains, "aerains" }, + { BotSpellTypes::AEMez, "aemez" }, + { BotSpellTypes::AEStun, "aestuns" }, + { BotSpellTypes::AEDebuff, "aedebuffs" }, + { BotSpellTypes::AESlow, "aeslows" }, + { BotSpellTypes::AESnare, "aesnares" }, + { BotSpellTypes::AEFear, "aefears" }, + { BotSpellTypes::AEDispel, "aedispels" }, + { BotSpellTypes::AERoot, "aeroots" }, + { BotSpellTypes::AEDoT, "aedots" }, + { BotSpellTypes::AELifetap, "aelifetaps" }, + { BotSpellTypes::PBAENuke, "pbaenukes" }, + { BotSpellTypes::PetBuffs, "petbuffs" }, + { BotSpellTypes::PetRegularHeals, "petregularheals" }, + { BotSpellTypes::PetCompleteHeals, "petcompleteheals" }, + { BotSpellTypes::PetFastHeals, "petfastheals" }, + { BotSpellTypes::PetVeryFastHeals, "petveryfastheals" }, + { BotSpellTypes::PetHoTHeals, "pethotheals" }, + { BotSpellTypes::DamageShields, "damageshields" }, + { BotSpellTypes::ResistBuffs, "resistbuffs" }, + { BotSpellTypes::PetDamageShields, "petdamageshields" }, + { BotSpellTypes::PetResistBuffs, "petresistbuffs" }, + { BotSpellTypes::HateLine, "hateline" }, + { BotSpellTypes::AEHateLine, "aehateline" }, + { BotSpellTypes::Lull, "lull" }, + { BotSpellTypes::Teleport, "teleport" }, + { BotSpellTypes::Succor, "succor" }, + { BotSpellTypes::BindAffinity, "bindaffinity" }, + { BotSpellTypes::Identify, "identify" }, + { BotSpellTypes::Levitate, "levitate" }, + { BotSpellTypes::Rune, "rune" }, + { BotSpellTypes::WaterBreathing, "waterbreathing" }, + { BotSpellTypes::Size, "size" }, + { BotSpellTypes::Invisibility, "invisibility" }, + { BotSpellTypes::MovementSpeed, "movementspeed" }, + { BotSpellTypes::SendHome, "sendhome" }, + { BotSpellTypes::SummonCorpse, "summoncorpse" }, + { BotSpellTypes::AELull, "aelull" } +}; + const uint32 SPELL_TYPES_DETRIMENTAL = (SpellType_Nuke | SpellType_Root | SpellType_Lifetap | SpellType_Snare | SpellType_DOT | SpellType_Dispel | SpellType_Mez | SpellType_Charm | SpellType_Debuff | SpellType_Slow); const uint32 SPELL_TYPES_BENEFICIAL = (SpellType_Heal | SpellType_Buff | SpellType_Escape | SpellType_Pet | SpellType_InCombatBuff | SpellType_Cure | SpellType_HateRedux | SpellType_InCombatBuffSong | SpellType_OutOfCombatBuffSong | SpellType_PreCombatBuff | SpellType_PreCombatBuffSong); const uint32 SPELL_TYPES_INNATE = (SpellType_Nuke | SpellType_Lifetap | SpellType_DOT | SpellType_Dispel | SpellType_Mez | SpellType_Slow | SpellType_Debuff | SpellType_Charm | SpellType_Root); diff --git a/zone/bot.h b/zone/bot.h index 3f4c21237..c7852b511 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -114,7 +114,26 @@ namespace BotSettingCategories { // Update GetBotSpellCategoryName as needed constexpr uint16 START_NO_BASE = BotSettingCategories::SpellHold; constexpr uint16 START_CLIENT = BotSettingCategories::SpellHold; constexpr uint16 END_CLIENT = BotSettingCategories::SpellMaxThreshold; - constexpr uint16 END = BotSettingCategories::SpellTypeAEOrGroupTargetCount; // Increment as needed + constexpr uint16 END = BotSettingCategories::SpellTypeAEOrGroupTargetCount; + constexpr uint16 END_FULL = BotSettingCategories::SpellTypeRecastDelay; +}; + +static std::map botSpellCategory_names = { + { BotSettingCategories::BaseSetting, "BaseSetting" }, + { BotSettingCategories::SpellHold, "SpellHolds" }, + { BotSettingCategories::SpellDelay, "SpellDelays" }, + { BotSettingCategories::SpellMinThreshold, "SpellMinThresholds" }, + { BotSettingCategories::SpellMaxThreshold, "SpellMaxThresholds" }, + { BotSettingCategories::SpellTypeAggroCheck, "SpellAggroChecks" }, + { BotSettingCategories::SpellTypeMinManaPct, "SpellMinManaPct" }, + { BotSettingCategories::SpellTypeMaxManaPct, "SpellMaxManaPct" }, + { BotSettingCategories::SpellTypeMinHPPct, "SpellMinHPPct" }, + { BotSettingCategories::SpellTypeMaxHPPct, "SpellMaxHPPct" }, + { BotSettingCategories::SpellTypeIdlePriority, "SpellIdlePriority" }, + { BotSettingCategories::SpellTypeEngagedPriority, "SpellEngagedPriority" }, + { BotSettingCategories::SpellTypePursuePriority, "SpellPursuePriority" }, + { BotSettingCategories::SpellTypeAEOrGroupTargetCount, "SpellTargetCounts" }, + { BotSettingCategories::SpellTypeRecastDelay, "SpellRecastDelay" } }; namespace BotPriorityCategories { // Update GetBotSpellCategoryName as needed @@ -147,6 +166,23 @@ namespace BotBaseSettings { constexpr uint16 END = BotBaseSettings::SitManaPct; // Increment as needed }; +static std::map botBaseSettings_names = { + { BotBaseSettings::ExpansionBitmask, "ExpansionBitmask" }, + { BotBaseSettings::ShowHelm, "ShowHelm" }, + { BotBaseSettings::FollowDistance, "FollowDistance" }, + { BotBaseSettings::StopMeleeLevel, "StopMeleeLevel" }, + { BotBaseSettings::EnforceSpellSettings, "EnforceSpellSettings" }, + { BotBaseSettings::RangedSetting, "RangedSetting" }, + { BotBaseSettings::PetSetTypeSetting, "PetSetTypeSetting" }, + { BotBaseSettings::BehindMob, "BehindMob" }, + { BotBaseSettings::DistanceRanged, "DistanceRanged" }, + { BotBaseSettings::IllusionBlock, "IllusionBlock" }, + { BotBaseSettings::MaxMeleeRange, "MaxMeleeRange" }, + { BotBaseSettings::MedInCombat, "MedInCombat" }, + { BotBaseSettings::SitHPPct, "SitHPPct" }, + { BotBaseSettings::SitManaPct, "SitManaPct" } +}; + namespace CommandedSubTypes { constexpr uint16 SingleTarget = 1; constexpr uint16 GroupTarget = 2; @@ -158,8 +194,24 @@ namespace CommandedSubTypes { constexpr uint16 Shrink = 8; constexpr uint16 Grow = 9; constexpr uint16 Selo = 10; + + constexpr uint16 START = CommandedSubTypes::SingleTarget; + constexpr uint16 END = CommandedSubTypes::Selo; }; + +static std::map botSubType_names = { + { CommandedSubTypes::SingleTarget, "SingleTarget" }, + { CommandedSubTypes::GroupTarget, "GroupTarget" }, + { CommandedSubTypes::AETarget, "AETarget" }, + { CommandedSubTypes::SeeInvis, "SeeInvis" }, + { CommandedSubTypes::Invis, "Invis" }, + { CommandedSubTypes::InvisUndead, "InvisUndead" }, + { CommandedSubTypes::InvisAnimals, "InvisAnimals" }, + { CommandedSubTypes::Shrink, "Shrink" }, + { CommandedSubTypes::Grow, "Grow" }, + { CommandedSubTypes::Selo, "Selo" } +}; class Bot : public NPC { friend class Mob; public: diff --git a/zone/mob.cpp b/zone/mob.cpp index c1eee931a..b3075d392 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -8764,43 +8764,12 @@ uint16 Mob::GetSpellTypeIDByShortName(std::string spellTypeString) { return UINT16_MAX; } -std::string Mob::GetBotSpellCategoryName(uint8 setting_type) { - switch (setting_type) { - case BotSettingCategories::BaseSetting: - return "BaseSetting"; - case BotSettingCategories::SpellHold: - return "SpellHolds"; - case BotSettingCategories::SpellDelay: - return "SpellDelays"; - case BotSettingCategories::SpellMinThreshold: - return "SpellMinThresholds"; - case BotSettingCategories::SpellMaxThreshold: - return "SpellMaxThresholds"; - case BotSettingCategories::SpellTypeAggroCheck: - return "SpellAggroChecks"; - case BotSettingCategories::SpellTypeMinManaPct: - return "SpellMinManaPct"; - case BotSettingCategories::SpellTypeMaxManaPct: - return "SpellMaxManaPct"; - case BotSettingCategories::SpellTypeMinHPPct: - return "SpellMinHPPct"; - case BotSettingCategories::SpellTypeMaxHPPct: - return "SpellMaxHPPct"; - case BotSettingCategories::SpellTypeIdlePriority: - return "SpellIdlePriority"; - case BotSettingCategories::SpellTypeEngagedPriority: - return "SpellEngagedPriority"; - case BotSettingCategories::SpellTypePursuePriority: - return "SpellPursuePriority"; - case BotSettingCategories::SpellTypeAEOrGroupTargetCount: - return "SpellTargetCounts"; - case BotSettingCategories::SpellTypeRecastDelay: - return "SpellRecastDelay"; - default: - return "Null"; - } +bool Mob::IsValidBotSpellCategory(uint8 setting_type) { + return (setting_type >= BotSettingCategories::START && setting_type <= BotSettingCategories::END_FULL); +} - return "Null"; +std::string Mob::GetBotSpellCategoryName(uint8 setting_type) { + return IsValidBotBaseSetting(setting_type) ? botSpellCategory_names[setting_type] : "UNKNOWN CATEGORY"; } uint16 Mob::GetBotSpellCategoryIDByShortName(std::string settingString) { @@ -8813,41 +8782,12 @@ uint16 Mob::GetBotSpellCategoryIDByShortName(std::string settingString) { return UINT16_MAX; } -std::string Mob::GetBotSettingCategoryName(uint8 setting_type) { - switch (setting_type) { - case BotBaseSettings::ExpansionBitmask: - return "ExpansionBitmask"; - case BotBaseSettings::ShowHelm: - return "ShowHelm"; - case BotBaseSettings::FollowDistance: - return "FollowDistance"; - case BotBaseSettings::StopMeleeLevel: - return "StopMeleeLevel"; - case BotBaseSettings::EnforceSpellSettings: - return "EnforceSpellSettings"; - case BotBaseSettings::RangedSetting: - return "RangedSetting"; - case BotBaseSettings::PetSetTypeSetting: - return "PetSetTypeSetting"; - case BotBaseSettings::BehindMob: - return "BehindMob"; - case BotBaseSettings::DistanceRanged: - return "DistanceRanged"; - case BotBaseSettings::IllusionBlock: - return "IllusionBlock"; - case BotBaseSettings::MaxMeleeRange: - return "MaxMeleeRange"; - case BotBaseSettings::MedInCombat: - return "MedInCombat"; - case BotBaseSettings::SitHPPct: - return "SitHPPct"; - case BotBaseSettings::SitManaPct: - return "SitManaPct"; - default: - return "Null"; - } +bool Mob::IsValidBotBaseSetting(uint16 setting_type) { + return (setting_type >= BotBaseSettings::START_ALL && setting_type <= BotBaseSettings::END); +} - return "Null"; +std::string Mob::GetBotSettingCategoryName(uint16 setting_type) { + return IsValidBotBaseSetting(setting_type) ? botBaseSettings_names[setting_type] : "UNKNOWN SETTING"; } uint16 Mob::GetBaseSettingIDByShortName(std::string settingString) { @@ -8860,499 +8800,24 @@ uint16 Mob::GetBaseSettingIDByShortName(std::string settingString) { return UINT16_MAX; } -std::string Mob::GetSpellTypeNameByID(uint16 spellType) { - std::string spellTypeName = "null"; - - switch (spellType) { - case BotSpellTypes::Nuke: - spellTypeName = "Nuke"; - break; - case BotSpellTypes::RegularHeal: - spellTypeName = "Regular Heal"; - break; - case BotSpellTypes::Root: - spellTypeName = "Root"; - break; - case BotSpellTypes::Buff: - spellTypeName = "Buff"; - break; - case BotSpellTypes::Escape: - spellTypeName = "Escape"; - break; - case BotSpellTypes::Pet: - spellTypeName = "Pet"; - break; - case BotSpellTypes::Lifetap: - spellTypeName = "Lifetap"; - break; - case BotSpellTypes::Snare: - spellTypeName = "Snare"; - break; - case BotSpellTypes::DOT: - spellTypeName = "DoT"; - break; - case BotSpellTypes::Dispel: - spellTypeName = "Dispel"; - break; - case BotSpellTypes::InCombatBuff: - spellTypeName = "In-Combat Buff"; - break; - case BotSpellTypes::Mez: - spellTypeName = "Mez"; - break; - case BotSpellTypes::Charm: - spellTypeName = "Charm"; - break; - case BotSpellTypes::Slow: - spellTypeName = "Slow"; - break; - case BotSpellTypes::Debuff: - spellTypeName = "Debuff"; - break; - case BotSpellTypes::Cure: - spellTypeName = "Cure"; - break; - case BotSpellTypes::GroupCures: - spellTypeName = "Group Cure"; - break; - case BotSpellTypes::PetCures: - spellTypeName = "Pet Cure"; - break; - case BotSpellTypes::Resurrect: - spellTypeName = "Resurrect"; - break; - case BotSpellTypes::HateRedux: - spellTypeName = "Hate Reduction"; - break; - case BotSpellTypes::InCombatBuffSong: - spellTypeName = "In-Combat Buff Song"; - break; - case BotSpellTypes::OutOfCombatBuffSong: - spellTypeName = "Out-of-Combat Buff Song"; - break; - case BotSpellTypes::PreCombatBuff: - spellTypeName = "Pre-Combat Buff"; - break; - case BotSpellTypes::PreCombatBuffSong: - spellTypeName = "Pre-Combat Buff Song"; - break; - case BotSpellTypes::Fear: - spellTypeName = "Fear"; - break; - case BotSpellTypes::Stun: - spellTypeName = "Stun"; - break; - case BotSpellTypes::CompleteHeal: - spellTypeName = "Complete Heal"; - break; - case BotSpellTypes::FastHeals: - spellTypeName = "Fast Heal"; - break; - case BotSpellTypes::VeryFastHeals: - spellTypeName = "Very Fast Heal"; - break; - case BotSpellTypes::GroupHeals: - spellTypeName = "Group Heal"; - break; - case BotSpellTypes::GroupCompleteHeals: - spellTypeName = "Group Complete Heal"; - break; - case BotSpellTypes::GroupHoTHeals: - spellTypeName = "Group HoT Heal"; - break; - case BotSpellTypes::HoTHeals: - spellTypeName = "HoT Heal"; - break; - case BotSpellTypes::AENukes: - spellTypeName = "AE Nuke"; - break; - case BotSpellTypes::AERains: - spellTypeName = "AE Rain"; - break; - case BotSpellTypes::AEMez: - spellTypeName = "AE Mez"; - break; - case BotSpellTypes::AEStun: - spellTypeName = "AE Stun"; - break; - case BotSpellTypes::AEDebuff: - spellTypeName = "AE Debuff"; - break; - case BotSpellTypes::AESlow: - spellTypeName = "AE Slow"; - break; - case BotSpellTypes::AESnare: - spellTypeName = "AE Snare"; - break; - case BotSpellTypes::AEFear: - spellTypeName = "AE Fear"; - break; - case BotSpellTypes::AEDispel: - spellTypeName = "AE Dispel"; - break; - case BotSpellTypes::AERoot: - spellTypeName = "AE Root"; - break; - case BotSpellTypes::AEDoT: - spellTypeName = "AE DoT"; - break; - case BotSpellTypes::AELifetap: - spellTypeName = "AE Lifetap"; - break; - case BotSpellTypes::PBAENuke: - spellTypeName = "PBAE Nuke"; - break; - case BotSpellTypes::PetBuffs: - spellTypeName = "Pet Buff"; - break; - case BotSpellTypes::PetRegularHeals: - spellTypeName = "Pet Regular Heal"; - break; - case BotSpellTypes::PetCompleteHeals: - spellTypeName = "Pet Complete Heal"; - break; - case BotSpellTypes::PetFastHeals: - spellTypeName = "Pet Fast Heal"; - break; - case BotSpellTypes::PetVeryFastHeals: - spellTypeName = "Pet Very Fast Heal"; - break; - case BotSpellTypes::PetHoTHeals: - spellTypeName = "Pet HoT Heal"; - break; - case BotSpellTypes::DamageShields: - spellTypeName = "Damage Shield"; - break; - case BotSpellTypes::ResistBuffs: - spellTypeName = "Resist Buff"; - break; - case BotSpellTypes::PetDamageShields: - spellTypeName = "Pet Damage Shield"; - break; - case BotSpellTypes::PetResistBuffs: - spellTypeName = "Pet Resist Buff"; - break; - case BotSpellTypes::HateLine: - spellTypeName = "Hate Line"; - break; - case BotSpellTypes::AEHateLine: - spellTypeName = "AE Hate Line"; - break; - case BotSpellTypes::Lull: - spellTypeName = "Lull"; - break; - case BotSpellTypes::Teleport: - spellTypeName = "Teleport"; - break; - case BotSpellTypes::Succor: - spellTypeName = "Succor"; - break; - case BotSpellTypes::BindAffinity: - spellTypeName = "Bind Affinity"; - break; - case BotSpellTypes::Identify: - spellTypeName = "Identify"; - break; - case BotSpellTypes::Levitate: - spellTypeName = "Levitate"; - break; - case BotSpellTypes::Rune: - spellTypeName = "Rune"; - break; - case BotSpellTypes::WaterBreathing: - spellTypeName = "Water Breathing"; - break; - case BotSpellTypes::Size: - spellTypeName = "Size"; - break; - case BotSpellTypes::Invisibility: - spellTypeName = "Invisibility"; - break; - case BotSpellTypes::MovementSpeed: - spellTypeName = "Movement Speed"; - break; - case BotSpellTypes::SendHome: - spellTypeName = "Send Home"; - break; - case BotSpellTypes::SummonCorpse: - spellTypeName = "Summon Corpse"; - break; - case BotSpellTypes::AELull: - spellTypeName = "AE Lull"; - break; - default: - break; - } - - return spellTypeName; +bool Mob::IsValidSpellType(uint16 spellType) { + return (spellType >= BotSpellTypes::START && spellType <= BotSpellTypes::END) || (spellType >= BotSpellTypes::COMMANDED_START && spellType <= BotSpellTypes::COMMANDED_END); } std::string Mob::GetSpellTypeShortNameByID(uint16 spellType) { - std::string spellTypeName = "null"; + return IsValidSpellType(spellType) ? spellType_shortNames[spellType] : "UNKNOWN SPELLTYPE"; +} - switch (spellType) { - case BotSpellTypes::Nuke: - spellTypeName = "nukes"; - break; - case BotSpellTypes::RegularHeal: - spellTypeName = "regularheals"; - break; - case BotSpellTypes::Root: - spellTypeName = "roots"; - break; - case BotSpellTypes::Buff: - spellTypeName = "buffs"; - break; - case BotSpellTypes::Escape: - spellTypeName = "escapes"; - break; - case BotSpellTypes::Pet: - spellTypeName = "pets"; - break; - case BotSpellTypes::Lifetap: - spellTypeName = "lifetaps"; - break; - case BotSpellTypes::Snare: - spellTypeName = "snares"; - break; - case BotSpellTypes::DOT: - spellTypeName = "dots"; - break; - case BotSpellTypes::Dispel: - spellTypeName = "dispels"; - break; - case BotSpellTypes::InCombatBuff: - spellTypeName = "incombatbuffs"; - break; - case BotSpellTypes::Mez: - spellTypeName = "mez"; - break; - case BotSpellTypes::Charm: - spellTypeName = "charms"; - break; - case BotSpellTypes::Slow: - spellTypeName = "slows"; - break; - case BotSpellTypes::Debuff: - spellTypeName = "debuffs"; - break; - case BotSpellTypes::Cure: - spellTypeName = "cures"; - break; - case BotSpellTypes::GroupCures: - spellTypeName = "groupcures"; - break; - case BotSpellTypes::PetCures: - spellTypeName = "petcure"; - break; - case BotSpellTypes::Resurrect: - spellTypeName = "resurrect"; - break; - case BotSpellTypes::HateRedux: - spellTypeName = "hateredux"; - break; - case BotSpellTypes::InCombatBuffSong: - spellTypeName = "incombatbuffsongs"; - break; - case BotSpellTypes::OutOfCombatBuffSong: - spellTypeName = "outofcombatbuffsongs"; - break; - case BotSpellTypes::PreCombatBuff: - spellTypeName = "precombatbuffs"; - break; - case BotSpellTypes::PreCombatBuffSong: - spellTypeName = "precombatbuffsongs"; - break; - case BotSpellTypes::Fear: - spellTypeName = "fears"; - break; - case BotSpellTypes::Stun: - spellTypeName = "stuns"; - break; - case BotSpellTypes::CompleteHeal: - spellTypeName = "completeheals"; - break; - case BotSpellTypes::FastHeals: - spellTypeName = "fastheals"; - break; - case BotSpellTypes::VeryFastHeals: - spellTypeName = "veryfastheals"; - break; - case BotSpellTypes::GroupHeals: - spellTypeName = "groupheals"; - break; - case BotSpellTypes::GroupCompleteHeals: - spellTypeName = "groupcompleteheals"; - break; - case BotSpellTypes::GroupHoTHeals: - spellTypeName = "grouphotheals"; - break; - case BotSpellTypes::HoTHeals: - spellTypeName = "hotheals"; - break; - case BotSpellTypes::AENukes: - spellTypeName = "aenukes"; - break; - case BotSpellTypes::AERains: - spellTypeName = "aerains"; - break; - case BotSpellTypes::AEMez: - spellTypeName = "aemez"; - break; - case BotSpellTypes::AEStun: - spellTypeName = "aestuns"; - break; - case BotSpellTypes::AEDebuff: - spellTypeName = "aedebuffs"; - break; - case BotSpellTypes::AESlow: - spellTypeName = "aeslows"; - break; - case BotSpellTypes::AESnare: - spellTypeName = "aesnares"; - break; - case BotSpellTypes::AEFear: - spellTypeName = "aefears"; - break; - case BotSpellTypes::AEDispel: - spellTypeName = "aedispels"; - break; - case BotSpellTypes::AERoot: - spellTypeName = "aeroots"; - break; - case BotSpellTypes::AEDoT: - spellTypeName = "aedots"; - break; - case BotSpellTypes::AELifetap: - spellTypeName = "aelifetaps"; - break; - case BotSpellTypes::PBAENuke: - spellTypeName = "pbaenukes"; - break; - case BotSpellTypes::PetBuffs: - spellTypeName = "petbuffs"; - break; - case BotSpellTypes::PetRegularHeals: - spellTypeName = "petregularheals"; - break; - case BotSpellTypes::PetCompleteHeals: - spellTypeName = "petcompleteheals"; - break; - case BotSpellTypes::PetFastHeals: - spellTypeName = "petfastheals"; - break; - case BotSpellTypes::PetVeryFastHeals: - spellTypeName = "petveryfastheals"; - break; - case BotSpellTypes::PetHoTHeals: - spellTypeName = "pethotheals"; - break; - case BotSpellTypes::DamageShields: - spellTypeName = "damageshields"; - break; - case BotSpellTypes::ResistBuffs: - spellTypeName = "resistbuffs"; - break; - case BotSpellTypes::PetDamageShields: - spellTypeName = "petdamageshields"; - break; - case BotSpellTypes::PetResistBuffs: - spellTypeName = "petresistbuffs"; - break; - case BotSpellTypes::HateLine: - spellTypeName = "hateline"; - break; - case BotSpellTypes::AEHateLine: - spellTypeName = "aehateline"; - break; - case BotSpellTypes::Lull: - spellTypeName = "lull"; - break; - case BotSpellTypes::Teleport: - spellTypeName = "teleport"; - break; - case BotSpellTypes::Succor: - spellTypeName = "succor"; - break; - case BotSpellTypes::BindAffinity: - spellTypeName = "bindaffinity"; - break; - case BotSpellTypes::Identify: - spellTypeName = "identify"; - break; - case BotSpellTypes::Levitate: - spellTypeName = "levitate"; - break; - case BotSpellTypes::Rune: - spellTypeName = "rune"; - break; - case BotSpellTypes::WaterBreathing: - spellTypeName = "waterbreathing"; - break; - case BotSpellTypes::Size: - spellTypeName = "size"; - break; - case BotSpellTypes::Invisibility: - spellTypeName = "invisibility"; - break; - case BotSpellTypes::MovementSpeed: - spellTypeName = "movementspeed"; - break; - case BotSpellTypes::SendHome: - spellTypeName = "sendhome"; - break; - case BotSpellTypes::SummonCorpse: - spellTypeName = "summoncorpse"; - break; - case BotSpellTypes::AELull: - spellTypeName = "aelull"; - break; - default: - break; - } +std::string Mob::GetSpellTypeNameByID(uint16 spellType) { + return IsValidSpellType(spellType) ? spellType_names[spellType] : "UNKNOWN SPELLTYPE"; +} - return spellTypeName; +bool Mob::IsValidSubType(uint16 subType) { + return (subType >= CommandedSubTypes::START && subType <= CommandedSubTypes::END); } std::string Mob::GetSubTypeNameByID(uint16 subType) { - std::string subTypeName = "null"; - - switch (subType) { - case CommandedSubTypes::SingleTarget: - subTypeName = "SingleTarget"; - break; - case CommandedSubTypes::GroupTarget: - subTypeName = "GroupTarget"; - break; - case CommandedSubTypes::AETarget: - subTypeName = "AETarget"; - break; - case CommandedSubTypes::SeeInvis: - subTypeName = "SeeInvis"; - break; - case CommandedSubTypes::Invis: - subTypeName = "Invis"; - break; - case CommandedSubTypes::InvisUndead: - subTypeName = "InvisUndead"; - break; - case CommandedSubTypes::InvisAnimals: - subTypeName = "InvisAnimals"; - break; - case CommandedSubTypes::Shrink: - subTypeName = "Shrink"; - break; - case CommandedSubTypes::Grow: - subTypeName = "Grow"; - break; - case CommandedSubTypes::Selo: - subTypeName = "Selo"; - break; - default: - break; - } - - return subTypeName; + return IsValidSpellType(subType) ? botSubType_names[subType] : "UNKNOWN SUBTYPE"; } bool Mob::GetDefaultSpellHold(uint16 spellType, uint8 stance) { diff --git a/zone/mob.h b/zone/mob.h index 3d2ab96b4..3bd97c7ce 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -436,12 +436,16 @@ public: uint16 GetSpellTypeIDByShortName(std::string spellTypeString); + bool IsValidBotSpellCategory(uint8 setting_type); std::string GetBotSpellCategoryName(uint8 setting_type); uint16 GetBotSpellCategoryIDByShortName(std::string settingString); - std::string GetBotSettingCategoryName(uint8 setting_type); + bool IsValidBotBaseSetting(uint16 setting_type); + std::string GetBotSettingCategoryName(uint16 setting_type); uint16 GetBaseSettingIDByShortName(std::string settingString); + bool IsValidSpellType(uint16 spellType); std::string GetSpellTypeNameByID(uint16 spellType); std::string GetSpellTypeShortNameByID(uint16 spellType); + bool IsValidSubType(uint16 subType); std::string GetSubTypeNameByID(uint16 subType); bool GetDefaultSpellHold(uint16 spellType, uint8 stance = Stance::Balanced);