diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2018-01-09 18:09:24 +0100 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2018-01-09 18:09:24 +0100 |
| commit | f45c211987794ff7e4192e0d3d4ca6bf67335fb5 (patch) | |
| tree | b9bc15e45e349ca157f7d5401bbb2dab2b3a8d85 /src/server/scripts/Commands | |
| parent | 274dede3dc89fa72ec1687d5ff454feba9849e47 (diff) | |
Scripts/Commands: New command: .debug threatinfo
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_debug.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 8ec08191185..82f9c824575 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -36,6 +36,7 @@ EndScriptData */ #include "MapManager.h" #include "ObjectMgr.h" #include "RBAC.h" +#include "SpellMgr.h" #include "Transport.h" #include <fstream> #include <limits> @@ -72,6 +73,7 @@ public: { { "setbit", rbac::RBAC_PERM_COMMAND_DEBUG_SETBIT, false, &HandleDebugSet32BitCommand, "" }, { "threat", rbac::RBAC_PERM_COMMAND_DEBUG_THREAT, false, &HandleDebugThreatListCommand, "" }, + { "threatinfo", rbac::RBAC_PERM_COMMAND_DEBUG_THREATINFO, false, &HandleDebugThreatInfoCommand, "" }, { "combat", rbac::RBAC_PERM_COMMAND_DEBUG_COMBAT, false, &HandleDebugCombatListCommand, "" }, { "anim", rbac::RBAC_PERM_COMMAND_DEBUG_ANIM, false, &HandleDebugAnimCommand, "" }, { "arena", rbac::RBAC_PERM_COMMAND_DEBUG_ARENA, true, &HandleDebugArenaCommand, "" }, @@ -910,6 +912,79 @@ public: return true; } + static bool HandleDebugThreatInfoCommand(ChatHandler* handler, char const* /*args*/) + { + Unit* target = handler->getSelectedUnit(); + if (!target) + { + handler->SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE); + handler->SetSentErrorMessage(true); + return false; + } + + handler->PSendSysMessage("Threat info for %s (%s):", target->GetName(), target->GetGUID().ToString().c_str()); + + ThreatManager const& mgr = target->GetThreatManager(); + + // _singleSchoolModifiers + { + auto& mods = mgr._singleSchoolModifiers; + handler->SendSysMessage(" - Single-school threat modifiers:"); + handler->PSendSysMessage(" |-- Physical: %.2f%%", mods[SPELL_SCHOOL_NORMAL]*100.0f); + handler->PSendSysMessage(" |-- Holy : %.2f%%", mods[SPELL_SCHOOL_HOLY]*100.0f); + handler->PSendSysMessage(" |-- Fire : %.2f%%", mods[SPELL_SCHOOL_FIRE]*100.0f); + handler->PSendSysMessage(" |-- Nature : %.2f%%", mods[SPELL_SCHOOL_NATURE]*100.0f); + handler->PSendSysMessage(" |-- Frost : %.2f%%", mods[SPELL_SCHOOL_FROST]*100.0f); + handler->PSendSysMessage(" |-- Shadow : %.2f%%", mods[SPELL_SCHOOL_SHADOW]*100.0f); + handler->PSendSysMessage(" |-- Arcane : %.2f%%", mods[SPELL_SCHOOL_ARCANE]*100.0f); + } + + // _multiSchoolModifiers + { + auto& mods = mgr._multiSchoolModifiers; + handler->PSendSysMessage("- Multi-school threat modifiers (%zu entries):", mods.size()); + for (auto const& pair : mods) + handler->PSendSysMessage(" |-- Mask 0x%x: %.2f%%", uint32(pair.first), pair.second); + } + + // _redirectInfo + { + auto const& redirectInfo = mgr._redirectInfo; + if (redirectInfo.empty()) + handler->SendSysMessage(" - No redirects being applied"); + else + { + handler->PSendSysMessage(" - %02zu redirects being applied:", redirectInfo.size()); + for (auto const& pair : redirectInfo) + { + Unit* unit = ObjectAccessor::GetUnit(*target, pair.first); + handler->PSendSysMessage(" |-- %02u%% to %s", pair.second, unit ? unit->GetName().c_str() : pair.first.ToString().c_str()); + } + } + } + + // _redirectRegistry + { + auto const& redirectRegistry = mgr._redirectRegistry; + if (redirectRegistry.empty()) + handler->SendSysMessage(" - No redirects are registered"); + else + { + handler->PSendSysMessage(" - %02zu spells may have redirects registered", redirectRegistry.size()); + for (auto const& outerPair : redirectRegistry) // (spellId, (guid, pct)) + { + SpellInfo const* const spell = sSpellMgr->GetSpellInfo(outerPair.first); + handler->PSendSysMessage(" |-- #%06u %s (%zu entries):", outerPair.first, spell ? spell->SpellName[0] : "<unknown>", outerPair.second.size()); + for (auto const& innerPair : outerPair.second) // (guid, pct) + { + Unit* unit = ObjectAccessor::GetUnit(*target, innerPair.first); + handler->PSendSysMessage(" |-- %02u%% to %s", innerPair.second, unit ? unit->GetName().c_str() : innerPair.first.ToString().c_str()); + } + } + } + } + } + static bool HandleDebugCombatListCommand(ChatHandler* handler, char const* /*args*/) { Unit* target = handler->getSelectedUnit(); |
