diff --git a/common/spdat.h b/common/spdat.h index 7ee45e710..08cf55ee8 100644 --- a/common/spdat.h +++ b/common/spdat.h @@ -627,269 +627,269 @@ enum ProcType enum SpellTypes : uint32 { - SpellType_Nuke = (1 << 0), - SpellType_Heal = (1 << 1), - SpellType_Root = (1 << 2), - SpellType_Buff = (1 << 3), - SpellType_Escape = (1 << 4), - SpellType_Pet = (1 << 5), - SpellType_Lifetap = (1 << 6), - SpellType_Snare = (1 << 7), - SpellType_DOT = (1 << 8), - SpellType_Dispel = (1 << 9), - SpellType_InCombatBuff = (1 << 10), - SpellType_Mez = (1 << 11), - SpellType_Charm = (1 << 12), - SpellType_Slow = (1 << 13), - SpellType_Debuff = (1 << 14), - SpellType_Cure = (1 << 15), - SpellType_Resurrect = (1 << 16), - SpellType_HateRedux = (1 << 17), - SpellType_InCombatBuffSong = (1 << 18), // bard in-combat group/ae buffs - SpellType_OutOfCombatBuffSong = (1 << 19), // bard out-of-combat group/ae buffs - SpellType_PreCombatBuff = (1 << 20), - SpellType_PreCombatBuffSong = (1 << 21) + SpellType_Nuke = (1 << 0), + SpellType_Heal = (1 << 1), + SpellType_Root = (1 << 2), + SpellType_Buff = (1 << 3), + SpellType_Escape = (1 << 4), + SpellType_Pet = (1 << 5), + SpellType_Lifetap = (1 << 6), + SpellType_Snare = (1 << 7), + SpellType_DOT = (1 << 8), + SpellType_Dispel = (1 << 9), + SpellType_InCombatBuff = (1 << 10), + SpellType_Mez = (1 << 11), + SpellType_Charm = (1 << 12), + SpellType_Slow = (1 << 13), + SpellType_Debuff = (1 << 14), + SpellType_Cure = (1 << 15), + SpellType_Resurrect = (1 << 16), + SpellType_HateRedux = (1 << 17), + SpellType_InCombatBuffSong = (1 << 18), // bard in-combat group/ae buffs + SpellType_OutOfCombatBuffSong = (1 << 19), // bard out-of-combat group/ae buffs + SpellType_PreCombatBuff = (1 << 20), + SpellType_PreCombatBuffSong = (1 << 21) }; namespace BotSpellTypes { - constexpr uint16 Nuke = 0; - constexpr uint16 RegularHeal = 1; - constexpr uint16 Root = 2; - constexpr uint16 Buff = 3; - constexpr uint16 Escape = 4; - constexpr uint16 Pet = 5; - constexpr uint16 Lifetap = 6; - constexpr uint16 Snare = 7; - constexpr uint16 DOT = 8; - constexpr uint16 Dispel = 9; - constexpr uint16 InCombatBuff = 10; - constexpr uint16 Mez = 11; - constexpr uint16 Charm = 12; - constexpr uint16 Slow = 13; - constexpr uint16 Debuff = 14; - constexpr uint16 Cure = 15; - constexpr uint16 Resurrect = 16; - constexpr uint16 HateRedux = 17; - constexpr uint16 InCombatBuffSong = 18; - constexpr uint16 OutOfCombatBuffSong = 19; - constexpr uint16 PreCombatBuff = 20; - constexpr uint16 PreCombatBuffSong = 21; - constexpr uint16 Fear = 22; - constexpr uint16 Stun = 23; - constexpr uint16 HateLine = 24; - constexpr uint16 GroupCures = 25; - constexpr uint16 CompleteHeal = 26; - constexpr uint16 FastHeals = 27; - constexpr uint16 VeryFastHeals = 28; - constexpr uint16 GroupHeals = 29; - constexpr uint16 GroupCompleteHeals = 30; - constexpr uint16 GroupHoTHeals = 31; - constexpr uint16 HoTHeals = 32; - constexpr uint16 AENukes = 33; - constexpr uint16 AERains = 34; - constexpr uint16 AEMez = 35; - constexpr uint16 AEStun = 36; - constexpr uint16 AEDebuff = 37; - constexpr uint16 AESlow = 38; - constexpr uint16 AESnare = 39; - constexpr uint16 AEFear = 40; - constexpr uint16 AEDispel = 41; - constexpr uint16 AERoot = 42; - constexpr uint16 AEDoT = 43; - constexpr uint16 AELifetap = 44; - constexpr uint16 AEHateLine = 45; - constexpr uint16 PBAENuke = 46; - constexpr uint16 PetBuffs = 47; - constexpr uint16 PetRegularHeals = 48; - constexpr uint16 PetCompleteHeals = 49; - constexpr uint16 PetFastHeals = 50; - constexpr uint16 PetVeryFastHeals = 51; - constexpr uint16 PetHoTHeals = 52; - constexpr uint16 PetCures = 53; - constexpr uint16 DamageShields = 54; - constexpr uint16 ResistBuffs = 55; - constexpr uint16 PetDamageShields = 56; - constexpr uint16 PetResistBuffs = 57; + constexpr uint16 Nuke = 0; + constexpr uint16 RegularHeal = 1; + constexpr uint16 Root = 2; + constexpr uint16 Buff = 3; + constexpr uint16 Escape = 4; + constexpr uint16 Pet = 5; + constexpr uint16 Lifetap = 6; + constexpr uint16 Snare = 7; + constexpr uint16 DOT = 8; + constexpr uint16 Dispel = 9; + constexpr uint16 InCombatBuff = 10; + constexpr uint16 Mez = 11; + constexpr uint16 Charm = 12; + constexpr uint16 Slow = 13; + constexpr uint16 Debuff = 14; + constexpr uint16 Cure = 15; + constexpr uint16 Resurrect = 16; + constexpr uint16 HateRedux = 17; + constexpr uint16 InCombatBuffSong = 18; + constexpr uint16 OutOfCombatBuffSong = 19; + constexpr uint16 PreCombatBuff = 20; + constexpr uint16 PreCombatBuffSong = 21; + constexpr uint16 Fear = 22; + constexpr uint16 Stun = 23; + constexpr uint16 HateLine = 24; + constexpr uint16 GroupCures = 25; + constexpr uint16 CompleteHeal = 26; + constexpr uint16 FastHeals = 27; + constexpr uint16 VeryFastHeals = 28; + constexpr uint16 GroupHeals = 29; + constexpr uint16 GroupCompleteHeals = 30; + constexpr uint16 GroupHoTHeals = 31; + constexpr uint16 HoTHeals = 32; + constexpr uint16 AENukes = 33; + constexpr uint16 AERains = 34; + constexpr uint16 AEMez = 35; + constexpr uint16 AEStun = 36; + constexpr uint16 AEDebuff = 37; + constexpr uint16 AESlow = 38; + constexpr uint16 AESnare = 39; + constexpr uint16 AEFear = 40; + constexpr uint16 AEDispel = 41; + constexpr uint16 AERoot = 42; + constexpr uint16 AEDoT = 43; + constexpr uint16 AELifetap = 44; + constexpr uint16 AEHateLine = 45; + constexpr uint16 PBAENuke = 46; + constexpr uint16 PetBuffs = 47; + constexpr uint16 PetRegularHeals = 48; + constexpr uint16 PetCompleteHeals = 49; + constexpr uint16 PetFastHeals = 50; + constexpr uint16 PetVeryFastHeals = 51; + constexpr uint16 PetHoTHeals = 52; + constexpr uint16 PetCures = 53; + constexpr uint16 DamageShields = 54; + constexpr uint16 ResistBuffs = 55; + constexpr uint16 PetDamageShields = 56; + constexpr uint16 PetResistBuffs = 57; // Command Spell Types - constexpr uint16 Teleport = 100; // this is handled by ^depart so uses other logic - constexpr uint16 Lull = 101; - constexpr uint16 Succor = 102; - constexpr uint16 BindAffinity = 103; - constexpr uint16 Identify = 104; - constexpr uint16 Levitate = 105; - constexpr uint16 Rune = 106; - constexpr uint16 WaterBreathing = 107; - constexpr uint16 Size = 108; - constexpr uint16 Invisibility = 109; - constexpr uint16 MovementSpeed = 110; - constexpr uint16 SendHome = 111; - constexpr uint16 SummonCorpse = 112; - constexpr uint16 AELull = 113; + constexpr uint16 Teleport = 100; // this is handled by ^depart so uses other logic + constexpr uint16 Lull = 101; + constexpr uint16 Succor = 102; + constexpr uint16 BindAffinity = 103; + constexpr uint16 Identify = 104; + constexpr uint16 Levitate = 105; + constexpr uint16 Rune = 106; + constexpr uint16 WaterBreathing = 107; + constexpr uint16 Size = 108; + constexpr uint16 Invisibility = 109; + constexpr uint16 MovementSpeed = 110; + constexpr uint16 SendHome = 111; + constexpr uint16 SummonCorpse = 112; + constexpr uint16 AELull = 113; // Discipline Types - constexpr uint16 Discipline = 200; - constexpr uint16 DiscAggressive = 201; - constexpr uint16 DiscDefensive = 202; - constexpr uint16 DiscUtility = 203; - - constexpr uint16 START = BotSpellTypes::Nuke; // Do not remove or change this - constexpr uint16 END = BotSpellTypes::PetResistBuffs; // Do not remove this, increment as needed - constexpr uint16 COMMANDED_START = BotSpellTypes::Lull; // Do not remove or change this - constexpr uint16 COMMANDED_END = BotSpellTypes::AELull; // Do not remove this, increment as needed - constexpr uint16 DISCIPLINE_START = BotSpellTypes::Discipline; // Do not remove or change this - constexpr uint16 DISCIPLINE_END = BotSpellTypes::DiscUtility; // Do not remove this, increment as needed + constexpr uint16 Discipline = 200; + constexpr uint16 DiscAggressive = 201; + constexpr uint16 DiscDefensive = 202; + constexpr uint16 DiscUtility = 203; + + constexpr uint16 START = BotSpellTypes::Nuke; // Do not remove or change this + constexpr uint16 END = BotSpellTypes::PetResistBuffs; // Do not remove this, increment as needed + constexpr uint16 COMMANDED_START = BotSpellTypes::Lull; // Do not remove or change this + constexpr uint16 COMMANDED_END = BotSpellTypes::AELull; // Do not remove this, increment as needed + constexpr uint16 DISCIPLINE_START = BotSpellTypes::Discipline; // Do not remove or change this + 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" } + { 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" } + { 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); diff --git a/zone/bot.h b/zone/bot.h index 1265ed526..7381cbfbc 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -94,28 +94,28 @@ enum BotCastingChanceConditional : uint8 }; namespace BotSettingCategories { // Update GetBotSpellCategoryName as needed - constexpr uint8 BaseSetting = 0; - constexpr uint8 SpellHold = 1; - constexpr uint8 SpellDelay = 2; - constexpr uint8 SpellMinThreshold = 3; - constexpr uint8 SpellMaxThreshold = 4; - constexpr uint8 SpellTypeAggroCheck = 5; - constexpr uint8 SpellTypeMinManaPct = 6; - constexpr uint8 SpellTypeMaxManaPct = 7; - constexpr uint8 SpellTypeMinHPPct = 8; - constexpr uint8 SpellTypeMaxHPPct = 9; - constexpr uint8 SpellTypeIdlePriority = 10; - constexpr uint8 SpellTypeEngagedPriority = 11; - constexpr uint8 SpellTypePursuePriority = 12; - constexpr uint8 SpellTypeAEOrGroupTargetCount = 13; - constexpr uint8 SpellTypeRecastDelay = 14; + constexpr uint8 BaseSetting = 0; + constexpr uint8 SpellHold = 1; + constexpr uint8 SpellDelay = 2; + constexpr uint8 SpellMinThreshold = 3; + constexpr uint8 SpellMaxThreshold = 4; + constexpr uint8 SpellTypeAggroCheck = 5; + constexpr uint8 SpellTypeMinManaPct = 6; + constexpr uint8 SpellTypeMaxManaPct = 7; + constexpr uint8 SpellTypeMinHPPct = 8; + constexpr uint8 SpellTypeMaxHPPct = 9; + constexpr uint8 SpellTypeIdlePriority = 10; + constexpr uint8 SpellTypeEngagedPriority = 11; + constexpr uint8 SpellTypePursuePriority = 12; + constexpr uint8 SpellTypeAEOrGroupTargetCount = 13; + constexpr uint8 SpellTypeRecastDelay = 14; - constexpr uint16 START = BotSettingCategories::BaseSetting; - constexpr uint16 START_NO_BASE = BotSettingCategories::SpellHold; - constexpr uint16 START_CLIENT = BotSettingCategories::SpellHold; - constexpr uint16 END_CLIENT = BotSettingCategories::SpellMaxThreshold; - constexpr uint16 END = BotSettingCategories::SpellTypeAEOrGroupTargetCount; - constexpr uint16 END_FULL = BotSettingCategories::SpellTypeRecastDelay; + constexpr uint16 START = BotSettingCategories::BaseSetting; + constexpr uint16 START_NO_BASE = BotSettingCategories::SpellHold; + constexpr uint16 START_CLIENT = BotSettingCategories::SpellHold; + constexpr uint16 END_CLIENT = BotSettingCategories::SpellMaxThreshold; + constexpr uint16 END = BotSettingCategories::SpellTypeAEOrGroupTargetCount; + constexpr uint16 END_FULL = BotSettingCategories::SpellTypeRecastDelay; }; static std::map botSpellCategory_names = { @@ -137,81 +137,81 @@ static std::map botSpellCategory_names = { }; namespace BotPriorityCategories { // Update GetBotSpellCategoryName as needed - constexpr uint8 Idle = 0; - constexpr uint8 Engaged = 1; - constexpr uint8 Pursue = 2; + constexpr uint8 Idle = 0; + constexpr uint8 Engaged = 1; + constexpr uint8 Pursue = 2; - constexpr uint16 START = BotPriorityCategories::Idle; - constexpr uint16 END = BotPriorityCategories::Pursue; // Increment as needed + constexpr uint16 START = BotPriorityCategories::Idle; + constexpr uint16 END = BotPriorityCategories::Pursue; // Increment as needed }; namespace BotBaseSettings { - constexpr uint16 ExpansionBitmask = 0; - constexpr uint16 ShowHelm = 1; - constexpr uint16 FollowDistance = 2; - constexpr uint16 StopMeleeLevel = 3; - constexpr uint16 EnforceSpellSettings = 4; - constexpr uint16 RangedSetting = 5; - constexpr uint16 PetSetTypeSetting = 6; - constexpr uint16 BehindMob = 7; - constexpr uint16 DistanceRanged = 8; - constexpr uint16 IllusionBlock = 9; - constexpr uint16 MaxMeleeRange = 10; - constexpr uint16 MedInCombat = 11; - constexpr uint16 SitHPPct = 12; - constexpr uint16 SitManaPct = 13; + constexpr uint16 ExpansionBitmask = 0; + constexpr uint16 ShowHelm = 1; + constexpr uint16 FollowDistance = 2; + constexpr uint16 StopMeleeLevel = 3; + constexpr uint16 EnforceSpellSettings = 4; + constexpr uint16 RangedSetting = 5; + constexpr uint16 PetSetTypeSetting = 6; + constexpr uint16 BehindMob = 7; + constexpr uint16 DistanceRanged = 8; + constexpr uint16 IllusionBlock = 9; + constexpr uint16 MaxMeleeRange = 10; + constexpr uint16 MedInCombat = 11; + constexpr uint16 SitHPPct = 12; + constexpr uint16 SitManaPct = 13; - constexpr uint16 START_ALL = ExpansionBitmask; - constexpr uint16 START = BotBaseSettings::ShowHelm; // Everything above this cannot be copied, changed or viewed by players - constexpr uint16 END = BotBaseSettings::SitManaPct; // Increment as needed + constexpr uint16 START_ALL = ExpansionBitmask; + constexpr uint16 START = BotBaseSettings::ShowHelm; // Everything above this cannot be copied, changed or viewed by players + 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" } + { 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; - constexpr uint16 AETarget = 3; - constexpr uint16 SeeInvis = 4; - constexpr uint16 Invis = 5; - constexpr uint16 InvisUndead = 6; - constexpr uint16 InvisAnimals = 7; - constexpr uint16 Shrink = 8; - constexpr uint16 Grow = 9; - constexpr uint16 Selo = 10; + constexpr uint16 SingleTarget = 1; + constexpr uint16 GroupTarget = 2; + constexpr uint16 AETarget = 3; + constexpr uint16 SeeInvis = 4; + constexpr uint16 Invis = 5; + constexpr uint16 InvisUndead = 6; + constexpr uint16 InvisAnimals = 7; + constexpr uint16 Shrink = 8; + constexpr uint16 Grow = 9; + constexpr uint16 Selo = 10; - constexpr uint16 START = CommandedSubTypes::SingleTarget; - constexpr uint16 END = CommandedSubTypes::Selo; + 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" } + { 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.h b/zone/mob.h index e8bac4129..513b4b6f2 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -93,26 +93,25 @@ struct AppearanceStruct { uint8 texture = UINT8_MAX; }; -struct BotSpellSettings_Struct -{ - uint16 spellType; // type ID of bot category - std::string shortName; // type short name of bot category - std::string name; // type name of bot category - bool hold; // 0 = allow spell type, 1 = hold spell type - uint16 delay; // delay between casts of spell type, 1ms-60,000ms - uint8 minThreshold; // minimum target health threshold to allow casting of spell type - uint8 maxThreshold; // maximum target health threshold to allow casting of spell type - uint16 resistLimit; // resist limit to skip spell type - bool aggroCheck; // whether or not to check for possible aggro before casting - uint8 minManaPct; // lower mana percentage limit to allow spell cast - uint8 maxManaPct; // upper mana percentage limit to allow spell cast - uint8 minHPPct; // lower HP percentage limit to allow spell cast - uint8 maxHPPct; // upper HP percentage limit to allow spell cast - uint16 idlePriority; // idle priority of the spell type - uint16 engagedPriority; // engaged priority of the spell type - uint16 pursuePriority; // pursue priority of the spell type - uint16 AEOrGroupTargetCount; // require target count to cast an AE or Group spell type - Timer recastTimer; // recast timer based off delay +struct BotSpellSettings_Struct { + uint16 spellType; // type ID of bot category + std::string shortName; // type short name of bot category + std::string name; // type name of bot category + bool hold; // 0 = allow spell type, 1 = hold spell type + uint16 delay; // delay between casts of spell type, 1ms-60,000ms + uint8 minThreshold; // minimum target health threshold to allow casting of spell type + uint8 maxThreshold; // maximum target health threshold to allow casting of spell type + uint16 resistLimit; // resist limit to skip spell type + bool aggroCheck; // whether or not to check for possible aggro before casting + uint8 minManaPct; // lower mana percentage limit to allow spell cast + uint8 maxManaPct; // upper mana percentage limit to allow spell cast + uint8 minHPPct; // lower HP percentage limit to allow spell cast + uint8 maxHPPct; // upper HP percentage limit to allow spell cast + uint16 idlePriority; // idle priority of the spell type + uint16 engagedPriority; // engaged priority of the spell type + uint16 pursuePriority; // pursue priority of the spell type + uint16 AEOrGroupTargetCount; // require target count to cast an AE or Group spell type + Timer recastTimer; // recast timer based off delay }; class DataBucketKey;