105 {
"play", debugPlayCommandTable },
106 {
"send", debugSendCommandTable },
137 {
"debug", debugCommandTable },
145 if (
"a" == args ||
"alliance" == args)
147 else if (
"h" == args ||
"horde" == args)
149 else if (
"n" == args ||
"neutral" == args)
164 switch (command.index())
174 sWorld->SetForcedWarModeFactionBalanceState(
TEAM_HORDE, rewardValue.value_or(0));
180 sWorld->DisableForcedWarModeFactionBalanceState();
205 handler->
PSendSysMessage(
"%02u - %7ums [%s (%f degrees)]", count, cam.timeStamp, cam.locations.ToString().c_str(), cam.locations.GetOrientation() * (180 /
M_PI));
288 player->
PlayObjectSound(soundKitId, player->
GetGUID(), player, broadcastTextId.has_value() ? *broadcastTextId : 0);
299 castFailed.
Reason = result;
300 castFailed.
FailedArg1 = failArg1.value_or(-1);
301 castFailed.
FailedArg2 = failArg2.value_or(-1);
344 std::ifstream ifs(
"opcode.txt");
349 std::stringstream parsedStream;
352 char commentToken[2] = {};
353 ifs.get(commentToken[0]);
356 if (commentToken[0] ==
'/')
358 ifs.get(commentToken[1]);
362 if (commentToken[1] ==
'*')
366 ifs.get(commentToken[0]);
369 if (commentToken[0] ==
'*')
371 ifs.get(commentToken[1]);
374 if (commentToken[1] ==
'/')
377 ifs.putback(commentToken[1]);
383 else if (commentToken[1] ==
'/')
386 std::getline(ifs, str);
393 ifs.putback(commentToken[1]);
396 parsedStream.put(commentToken[0]);
401 parsedStream >> opcode;
408 while (!parsedStream.eof() && !parsedStream.fail())
411 parsedStream >> type;
418 if (parsedStream.eof())
421 parsedStream >> val1;
422 if (parsedStream.fail())
426 else if (type ==
"uint16")
428 if (parsedStream.eof())
431 parsedStream >> val2;
432 if (parsedStream.fail())
436 else if (type ==
"uint32")
438 if (parsedStream.eof())
441 parsedStream >> val3;
442 if (parsedStream.fail())
446 else if (type ==
"uint64")
448 if (parsedStream.eof())
451 parsedStream >> val4;
452 if (parsedStream.fail())
456 else if (type ==
"float")
458 if (parsedStream.eof())
461 parsedStream >> val5;
462 if (parsedStream.fail())
466 else if (type ==
"string")
469 parsedStream >> val6;
473 else if (type ==
"goguid")
484 else if (type ==
"myguid")
488 else if (type ==
"itsguid")
492 else if (type ==
"itspos")
498 else if (type ==
"mypos")
506 TC_LOG_ERROR(
"misc",
"Sending opcode that has unknown type '{}'", type);
543 channelNotify.
Type = type;
590 bool listQueue =
false;
591 bool checkAll =
false;
593 if (itemState ==
"unchanged")
595 else if (itemState ==
"changed")
597 else if (itemState ==
"new")
599 else if (itemState ==
"removed")
601 else if (itemState ==
"queue")
603 else if (itemState ==
"check_all")
612 if (!listQueue && !checkAll)
614 itemState =
"The player has the following " + itemState +
" items: ";
625 for (
uint8 j = 0; j < bag->GetBagSize(); ++j)
626 if (
Item* item2 = bag->GetItemByPos(j))
627 if (item2->GetState() == state)
628 handler->
PSendSysMessage(
"bag: 255 slot: %d %s owner: %s", item2->GetSlot(), item2->GetGUID().ToString().c_str(), item2->GetOwnerGUID().ToString().c_str());
630 else if (item->GetState() == state)
631 handler->
PSendSysMessage(
"bag: 255 slot: %d %s owner: %s", item->GetSlot(), item->GetGUID().ToString().c_str(), item->GetOwnerGUID().ToString().c_str());
639 for (
size_t i = 0; i < updateQueue.size(); ++i)
641 Item* item = updateQueue[i];
667 if (updateQueue.empty())
700 handler->
PSendSysMessage(
"The item with slot %d %s has a container (slot: %d, %s) but shouldn't!", item->
GetSlot(), item->
GetGUID().
ToString().c_str(), container->GetSlot(), container->GetGUID().ToString().c_str());
708 if (qp > updateQueue.size())
715 if (updateQueue[qp] ==
nullptr)
722 if (updateQueue[qp] != item)
724 handler->
PSendSysMessage(
"The item with slot %d and %s has a queuepos (%d) that points to another item in the queue (bag: %d, slot: %d, %s)", item->
GetSlot(), item->
GetGUID().
ToString().c_str(), qp, updateQueue[qp]->GetBagSlot(), updateQueue[qp]->GetSlot(), updateQueue[qp]->GetGUID().ToString().c_str());
738 for (
uint8 j = 0; j < bag->GetBagSize(); ++j)
740 Item* item2 = bag->GetItemByPos(j);
766 if (container != bag)
776 if (qp > updateQueue.size())
778 handler->
PSendSysMessage(
"The item in bag %d at slot %d having %s has a queuepos (%d) larger than the update queue size! ", bag->GetSlot(), item2->
GetSlot(), item2->
GetGUID().
ToString().c_str(), qp);
783 if (updateQueue[qp] ==
nullptr)
785 handler->
PSendSysMessage(
"The item in bag %d at slot %d having %s has a queuepos (%d) that points to NULL in the queue!", bag->GetSlot(), item2->
GetSlot(), item2->
GetGUID().
ToString().c_str(), qp);
790 if (updateQueue[qp] != item2)
792 handler->
PSendSysMessage(
"The item in bag %d at slot %d having %s has a queuepos (%d) that points to another item in the queue (bag: %d, slot: %d, %s)", bag->GetSlot(), item2->
GetSlot(), item2->
GetGUID().
ToString().c_str(), qp, updateQueue[qp]->GetBagSlot(), updateQueue[qp]->GetSlot(), updateQueue[qp]->GetGUID().ToString().c_str());
807 for (
size_t i = 0; i < updateQueue.size(); ++i)
809 Item* item = updateQueue[i];
822 handler->
PSendSysMessage(
"queue(%zu): For the item %s, the queuepos doesn't match it's position in the queue!", i, item->
GetGUID().
ToString().c_str());
880 if (threatenedByMe.empty())
885 for (
auto const& pair : threatenedByMe)
907 char const* onlineStr;
908 switch (ref->GetOnlineState())
911 onlineStr =
" [SUPPRESSED]";
914 onlineStr =
" [OFFLINE]";
919 char const* tauntStr;
920 if (unit == fixateVictim)
921 tauntStr =
" [FIXATE]";
923 switch (ref->GetTauntState())
926 tauntStr =
" [TAUNT]";
929 tauntStr =
" [DETAUNT]";
980 handler->
PSendSysMessage(
"- Multi-school threat modifiers (%zu entries):", mods.size());
981 for (
auto const& pair : mods)
988 if (redirectInfo.empty())
992 handler->
PSendSysMessage(
" - %02zu redirects being applied:", redirectInfo.size());
993 for (
auto const& pair : redirectInfo)
996 handler->
PSendSysMessage(
" |-- %02u%% to %s", pair.second, unit ? unit->
GetName().c_str() : pair.first.ToString().c_str());
1004 if (redirectRegistry.empty())
1008 handler->
PSendSysMessage(
" - %02zu spells may have redirects registered", redirectRegistry.size());
1009 for (
auto const& outerPair : redirectRegistry)
1012 handler->
PSendSysMessage(
" |-- #%06u %s (%zu entries):", outerPair.first, spell ? (*spell->
SpellName)[
sWorld->GetDefaultDbcLocale()] :
"<unknown>", outerPair.second.size());
1013 for (
auto const& innerPair : outerPair.second)
1016 handler->
PSendSysMessage(
" |-- %02u%% to %s", innerPair.second, unit ? unit->
GetName().c_str() : innerPair.first.ToString().c_str());
1034 Unit* unit = ref.second->GetOther(target);
1039 Unit* unit = ref.second->GetOther(target);
1062 if (!passenger || passenger == target)
1067 handler->
PSendSysMessage(
"Unit %u entered vehicle %hhd", entry, *seatId);
1105 std::ostringstream ss;
1106 while (ss.str().size() < 128000)
1107 ss <<
"This is a dummy string to push the packet's size beyond 128000 bytes. ";
1146 unit->HandleEmoteCommand(emote);
1228 TC_LOG_INFO(
"sql.dev",
"(@PATH, XX, {:.3f}, {:.3f}, {:.5f}, {:.5f}, 0, 0, 0, 100, 0),", player->
GetPositionX(), player->
GetPositionY(), player->
GetPositionZ(), player->
GetOrientation());
1230 handler->
PSendSysMessage(
"Waypoint SQL written to SQL Developer log");
1256 handler->
PSendSysMessage(
"Transport %s %s", transport->
GetName().c_str(), start ?
"started" :
"stopped");
1264 sMapMgr->DoForAllMapsWithMapId(*mapId, [&](
Map* map)
1321 if (duration <= 0s || duration >= 30min)
1383 bool daily =
false, weekly =
false, monthly =
false;
1385 daily = weekly = monthly =
true;
1386 else if (arg ==
"DAILY")
1388 else if (arg ==
"WEEKLY")
1390 else if (arg ==
"MONTHLY")
1402 sWorld->ResetWeeklyQuests();
1407 sWorld->ResetMonthlyQuests();
1422 nearestLoc = bg->GetClosestGraveyard(player);
1426 nearestLoc = bf->GetClosestGraveyard(player);
1428 nearestLoc =
sObjectMgr->GetClosestGraveyard(*player, player->
GetTeam(), player);
1436 float distNearest = std::numeric_limits<float>::max();
1438 for (
auto&& kvp :
sObjectMgr->GetWorldSafeLocs())
1440 if (kvp.second.Loc.GetMapId() == player->
GetMapId())
1442 float dist = (kvp.second.Loc.GetPositionX() - x) * (kvp.second.Loc.GetPositionX() - x)
1443 + (kvp.second.Loc.GetPositionY() - y) * (kvp.second.Loc.GetPositionY() - y)
1444 + (kvp.second.Loc.GetPositionZ() - z) * (kvp.second.Loc.GetPositionZ() - z);
1445 if (dist < distNearest)
1448 nearestLoc = &kvp.second;
1468 bool explain =
false;
1470 if (optArg.holds_alternative<
uint32>())
1471 groupID = optArg.get<
uint32>();
1475 if (groupID && !
sObjectMgr->GetSpawnGroupData(groupID))
1477 handler->
PSendSysMessage(
"There is no spawn group with ID %u.", groupID);
1482 Map const*
const map = player->
GetMap();
1483 char const*
const mapName = map->
GetMapName();
1493 handler->
PSendSysMessage(
"%s's instance script does not manage any spawn groups.", mapName);
1498 std::map<uint32, std::set<std::tuple<bool, uint8, uint8>>> store;
1501 if (groupID && info.SpawnGroupId != groupID)
1512 store[info.SpawnGroupId].emplace(isSpawn, info.BossStateId, info.BossStates);
1515 if (groupID && store.find(groupID) == store.end())
1517 handler->
PSendSysMessage(
"%s's instance script does not manage group '%s'.", mapName,
sObjectMgr->GetSpawnGroupData(groupID)->name.c_str());
1525 for (
auto const& pair : store)
1532 bool isBlocked =
false, isSpawned =
false;
1533 for (
auto const& tuple : pair.second)
1535 bool const isSpawn = std::get<0>(tuple);
1536 uint8 const bossStateId = std::get<1>(tuple);
1538 if (std::get<2>(tuple) & (1 << actualState))
1555 handler->
PSendSysMessage(
" | |-- '%s' could've been %s if boss state %u matched mask 0x%02x; but it is %s -> 0x%02x, which does not match.",
1556 groupData->
name.c_str(), isSpawn ?
"allowed to spawn" :
"blocked from spawning", bossStateId, std::get<2>(tuple),
InstanceScript::GetBossStateName(actualState), (1 << actualState));
1559 handler->
PSendSysMessage(
" | |=> '%s' is not active due to a blocking rule being matched", groupData->
name.c_str());
1561 handler->
PSendSysMessage(
" | |=> '%s' is active due to a spawn rule being matched", groupData->
name.c_str());
1563 handler->
PSendSysMessage(
" | |=> '%s' is not active due to none of its rules being matched", groupData->
name.c_str());
1597 if (!wsExpressionEntry)
1620 if (!playerConditionEntry)
1624 handler->
PSendSysMessage(
"PlayerCondition %u met", playerConditionId);
1626 handler->
PSendSysMessage(
"PlayerCondition %u not met", playerConditionId);
1634 uint8 stack_array[10] = {};
1637 handler->PSendSysMessage(
"Triggered an array out of bounds read at address %p, value %u",
static_cast<void*
>(stack_array +
size), stack_array[
size]);
1646 handler->PSendSysMessage(
"Leaked 1 uint8 object at address %p",
static_cast<void*
>(leak));
1653 if (checkIds.empty())
1664 handler->
PSendSysMessage(
"%zu/%zu checks queued for your Warden, they should be sent over the next few minutes (depending on settings)", nQueued, checkIds.size());
1672 sMapMgr->DoForAllMapsWithMapId(mapId.value(),
1673 [handler](
Map* map) ->
void
1675 HandleDebugGuidLimitsMap(handler, map);
1682 [handler](
Map* map) ->
void
1704 sMapMgr->DoForAllMapsWithMapId(mapId.value(),
1705 [handler](
Map* map) ->
void
1707 HandleDebugObjectCountMap(handler, map);
1714 [handler](
Map* map) ->
void
1729 void Visit(std::unordered_map<ObjectGuid, Creature*>& creatureMap)
1731 for (
auto const& p : creatureMap)
1739 void Visit(std::unordered_map<ObjectGuid, T*>&) { }
1743 auto comp = [](std::pair<uint32, uint32>
const& a, std::pair<uint32, uint32>
const& b)
1745 return a.second > b.second;
1749 count = std::min(count,
uint32(set.size()));
1750 std::vector<std::pair<uint32, uint32>> result(count);
1751 std::copy_n(set.begin(), count, result.begin());
1791 handler->
SendSysMessage(
"This command does nothing right now. Edit your local core (cs_debug.cpp) to make it do whatever you need for testing.");
DB2Storage< DifficultyEntry > sDifficultyStore("Difficulty.db2", &DifficultyLoadInfo::Instance)
DB2Storage< MapEntry > sMapStore("Map.db2", &MapLoadInfo::Instance)
DB2Storage< WorldStateExpressionEntry > sWorldStateExpressionStore("WorldStateExpression.db2", &WorldStateExpressionLoadInfo::Instance)
DB2Storage< PlayerConditionEntry > sPlayerConditionStore("PlayerCondition.db2", &PlayerConditionLoadInfo::Instance)
DB2Storage< MovieEntry > sMovieStore("Movie.db2", &MovieLoadInfo::Instance)
DB2Storage< SoundKitEntry > sSoundKitStore("SoundKit.db2", &SoundKitLoadInfo::Instance)
DB2Storage< VehicleEntry > sVehicleStore("Vehicle.db2", &VehicleLoadInfo::Instance)
DB2Storage< CinematicSequencesEntry > sCinematicSequencesStore("CinematicSequences.db2", &CinematicSequencesLoadInfo::Instance)
std::chrono::seconds Seconds
Seconds shorthand typedef.
#define CENTER_GRID_OFFSET
@ LANG_COMMAND_OBJNOTFOUND
@ LANG_DEBUG_AREATRIGGER_ON
@ LANG_CINEMATIC_NOT_EXIST
@ LANG_COMMAND_OPCODESENT
@ LANG_COMMAND_NEARGRAVEYARD
@ LANG_SELECT_CHAR_OR_CREATURE
@ LANG_COMMAND_NEARGRAVEYARD_NOTFOUND
@ LANG_DEBUG_AREATRIGGER_OFF
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
#define TC_LOG_INFO(filterType__,...)
std::vector< FlyByCamera > const * GetFlyByCameras(uint32 cinematicCameraId)
@ TEMPSUMMON_MANUAL_DESPAWN
std::optional< T > Optional
Optional helper class to wrap optional values within.
#define INVENTORY_SLOT_BAG_0
Role Based Access Control related classes definition.
@ LINEOFSIGHT_CHECK_GOBJECT
bool StringEqualI(std::string_view a, std::string_view b)
bool Utf8ToUpperOnlyLatin(std::string &utf8String)
std::string TimeToHumanReadable(time_t t)
Player * getSelectedPlayerOrSelf()
Player * getSelectedPlayer()
WorldSession * GetSession()
virtual LocaleConstant GetSessionDbcLocale() const
void PSendSysMessage(const char *fmt, Args &&... args)
Creature * getSelectedCreature()
void SetSentErrorMessage(bool val)
Player * GetPlayer() const
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
GameObject * GetNearbyGameObject()
std::unordered_map< ObjectGuid, PvPCombatReference * > const & GetPvPCombatRefs() const
std::unordered_map< ObjectGuid, CombatReference * > const & GetPvECombatRefs() const
static bool IsPlayerMeetingCondition(Player const *player, PlayerConditionEntry const *condition)
static bool IsMeetingWorldStateExpression(Map const *map, WorldStateExpressionEntry const *expression)
static Conversation * CreateConversation(uint32 conversationEntry, Unit *creator, Position const &pos, ObjectGuid privateObjectOwner, SpellInfo const *spellInfo=nullptr, bool autoStart=true)
int32 VisualizeBoundary(Seconds duration, Unit *owner=nullptr, bool fill=false) const
static Creature * CreateCreature(uint32 entry, Map *map, Position const &pos, uint32 vehId=0)
GuidUnorderedSet const & GetTapList() const
ObjectGuid::LowType GetSpawnId() const
static char const * ToConstant(Enum value)
GOState GetGoState() const
static char const * GetBossStateName(uint8 state)
EncounterState GetBossState(uint32 id) const
std::vector< InstanceSpawnGroupInfo > const *const _instanceSpawnGroups
ItemTemplate const * GetTemplate() const
ItemUpdateState GetState() const
uint16 GetQueuePos() const
ObjectGuid GetOwnerGUID() const
bool IsInUpdateQueue() const
MapStoredObjectTypesContainer & GetObjectsStore()
void LoadGrid(float x, float y)
ObjectGuid::LowType GetMaxLowGuid()
ObjectGuid::LowType GenerateLowGuid()
bool IsSpawnGroupActive(uint32 groupId) const
char const * GetMapName() const
uint32 GetInstanceId() const
size_t GetActiveNonPlayersCount() const
static ObjectGuid const Empty
std::string ToString() const
static Creature * ToCreature(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
bool AddVisibleMapId(uint32 visibleMapId, TerrainSwapInfo const *visibleMapInfo, int32 references=1)
bool AddUiMapPhaseId(uint32 uiMapPhaseId, int32 references=1)
bool AddPhase(uint32 phaseId, PhaseFlags flags, std::vector< Condition > const *areaConditions, int32 references=1)
static void PrintToChat(ChatHandler *chat, WorldObject const *target)
static void InheritPhaseShift(WorldObject *target, WorldObject const *source)
static void SendToPlayer(Player const *player, PhaseShift const &phaseShift)
void SendMovieStart(uint32 movieId)
void SendEquipError(InventoryResult msg, Item const *item1=nullptr, Item const *item2=nullptr, uint32 itemId=0) const
void SendPlayerChoice(ObjectGuid sender, int32 choiceId)
void SendSellError(SellResult msg, Creature *creature, ObjectGuid guid) const
WorldSession * GetSession() const
Item * GetItemByPos(uint16 pos) const
void DestroyItem(uint8 bag, uint8 slot, bool update)
void SendBuyError(BuyResult msg, Creature *creature, uint32 item, uint32 param) const
Battleground * GetBattleground() const
void SendCinematicStart(uint32 CinematicSequenceId) const
void SendCanTakeQuestResponse(QuestFailedReason reason, bool sendErrorMessage=true, std::string reasonText="") const
void SendUpdateWorldState(uint32 variable, uint32 value, bool hidden=false) const
std::vector< Item * > & GetItemUpdateQueue()
void SendPushToPartyResponse(Player const *player, QuestPushReason reason, Quest const *quest=nullptr) const
void UpdateObjectVisibility(bool forced=true) override
Item * GetItemByGuid(ObjectGuid guid) const
LocalizedString const * SpellName
std::vector< std::pair< ObjectGuid, uint32 > > _redirectInfo
std::array< float, MAX_SPELL_SCHOOL > _singleSchoolModifiers
std::unordered_map< uint32, std::unordered_map< ObjectGuid, uint32 > > _redirectRegistry
auto const & GetThreatenedByMeList() const
bool IsThreatListEmpty(bool includeOffline=false) const
static bool CanHaveThreatList(Unit const *who)
Trinity::IteratorPair< ThreatListIterator, std::nullptr_t > GetSortedThreatList() const
std::unordered_map< std::underlying_type< SpellSchoolMask >::type, float > _multiSchoolModifiers
Unit * GetFixateTarget() const
@ ONLINE_STATE_SUPPRESSED
void EnableMovement(bool enabled)
void Visit(TYPE_CONTAINER &c)
void EnterVehicle(Unit *base, int8 seatId=-1)
uint32 GetUnitMovementFlags() const
ThreatManager & GetThreatManager()
float GetCombatReach() const override
void ModifyAuraState(AuraStateType flag, bool apply)
uint32 GetExtraUnitMovementFlags() const
CombatManager & GetCombatManager()
void SetExtraUnitMovementFlags(uint32 f)
virtual bool IsEngaged() const
ObjectGuid GetTarget() const
virtual size_t DEBUG_ForceSpecificChecks(std::vector< uint16 > const &checks)=0
constexpr uint32 GetMapId() const
TempSummon * SummonPersonalClone(Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, Player *privateObjectOwner=nullptr)
void PlayDirectSound(uint32 soundId, Player const *target=nullptr, uint32 broadcastTextId=0) const
virtual void SendMessageToSet(WorldPacket const *data, bool self) const
InstanceScript * GetInstanceScript() const
void GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float relAngle=0) const
void PlayDirectMusic(uint32 musicId, Player const *target=nullptr) const
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
TransportBase * GetTransport() const
void PlayDistanceSound(uint32 soundId, Player const *target=nullptr) const
std::string const & GetName() const
bool IsWithinLOSInMap(WorldObject const *obj, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
void DestroyForNearbyPlayers()
MovementInfo m_movementInfo
void PlayObjectSound(int32 soundKitId, ObjectGuid targetObject, Player const *target=nullptr, int32 broadcastTextId=0) const
std::string _Channel
Channel Name.
WorldPacket const * Write() override
void Initialize(ChatMsg chatType, Language language, WorldObject const *sender, WorldObject const *receiver, std::string_view message, uint32 achievementId=0, std::string_view channelName="", LocaleConstant locale=DEFAULT_LOCALE, std::string_view addonPrefix="")
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
Player * GetPlayer() const
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
static PersistentWorldVariable const NextMonthlyQuestResetTimeVarId
static PersistentWorldVariable const NextDailyQuestResetTimeVarId
static PersistentWorldVariable const NextWeeklyQuestResetTimeVarId
std::unordered_map< uint32, uint32 > creatureIds
std::vector< std::pair< uint32, uint32 > > GetTopCreatureCount(uint32 count)
void Visit(std::unordered_map< ObjectGuid, Creature * > &creatureMap)
void Visit(std::unordered_map< ObjectGuid, T * > &)
static bool HandleDebugThreatListCommand(ChatHandler *handler)
static bool HandleDebugGetItemStateCommand(ChatHandler *handler, std::string itemState)
static bool HandleDebugSendLargePacketCommand(ChatHandler *handler)
static void HandleDebugGuidLimitsMap(ChatHandler *handler, Map *map)
static bool HandleDebugPlayerConditionCommand(ChatHandler *handler, uint32 playerConditionId)
static bool HandleDebugWardenForce(ChatHandler *handler, std::vector< uint16 > checkIds)
static bool HandleDebugRaidResetCommand(ChatHandler *handler, uint32 mapId, Optional< uint32 > difficulty)
static bool HandleDebugMoveflagsCommand(ChatHandler *handler, Optional< uint32 > moveFlags, Optional< uint32 > moveFlagsExtra)
static bool HandleDebugSendChatMsgCommand(ChatHandler *handler, ChatMsg type)
static bool HandleDebugLoadCellsCommandHelper(ChatHandler *handler, Map *map, Optional< uint32 > tileX, Optional< uint32 > tileY)
static bool HandleDebugAreaTriggersCommand(ChatHandler *handler)
static bool HandleDebugSendSellErrorCommand(ChatHandler *handler, SellResult error)
static bool HandleDebugSendSpellFailCommand(ChatHandler *handler, SpellCastResult result, Optional< int32 > failArg1, Optional< int32 > failArg2)
static bool HandleDebugTransportCommand(ChatHandler *handler, std::string operation)
static bool HandleDebugGetLootRecipientCommand(ChatHandler *handler)
static bool HandleDebugLoSCommand(ChatHandler *handler)
static bool HandleDebugPlayMovieCommand(ChatHandler *handler, uint32 movieId)
static bool HandleWPGPSCommand(ChatHandler *handler)
static bool HandleDebugOutOfBounds(ChatHandler *handler)
static bool HandleDebugSendOpcodeCommand(ChatHandler *handler)
static bool HandleDebugDummyCommand(ChatHandler *handler)
static bool HandleDebugSendEquipErrorCommand(ChatHandler *handler, InventoryResult error)
static bool HandleDebugThreatInfoCommand(ChatHandler *handler)
static bool HandleDebugSpawnVehicleCommand(ChatHandler *handler, uint32 entry, Optional< uint32 > id)
static bool HandleDebugPlayMusicCommand(ChatHandler *handler, uint32 musicId)
static bool HandleDebugWSExpressionCommand(ChatHandler *handler, uint32 expressionId)
static bool HandleDebugBattlegroundCommand(ChatHandler *)
static bool HandleDebugSendBuyErrorCommand(ChatHandler *handler, BuyResult error)
static bool TryExtractTeamId(std::string const &args, TeamId &outFaction)
static bool HandleDebugPhaseCommand(ChatHandler *handler)
static bool HandleDebugWarModeBalanceCommand(ChatHandler *handler, Variant< uint32, EXACT_SEQUENCE("alliance"), EXACT_SEQUENCE("horde"), EXACT_SEQUENCE("neutral"), EXACT_SEQUENCE("off")> command, Optional< int32 > rewardValue)
static bool HandleDebugObjectCountCommand(ChatHandler *handler, Optional< uint32 > mapId)
static bool HandleDebugSendChannelNotifyCommand(ChatHandler *handler, ChatNotify type)
static bool HandleDebugSendQuestPartyMsgCommand(ChatHandler *handler, QuestPushReason msg)
static bool HandleDebugGuidLimitsCommand(ChatHandler *handler, Optional< uint32 > mapId)
static bool HandleDebugCombatListCommand(ChatHandler *handler)
static bool HandleDebugLoadCellsCommand(ChatHandler *handler, Optional< uint32 > mapId, Optional< uint32 > tileX, Optional< uint32 > tileY)
static bool HandleDebugEnterVehicleCommand(ChatHandler *handler, uint32 entry, Optional< int8 > seatId)
static bool HandleDebugSendPlayerChoiceCommand(ChatHandler *handler, int32 choiceId)
static bool HandleDebugMemoryLeak(ChatHandler *handler)
static bool HandleDebugItemExpireCommand(ChatHandler *handler, ObjectGuid::LowType guid)
static bool HandleDebugSendQuestInvalidMsgCommand(ChatHandler *handler, QuestFailedReason msg)
static bool HandleDebugQuestResetCommand(ChatHandler *handler, std::string arg)
static bool HandleDebugPlayCinematicCommand(ChatHandler *handler, uint32 cinematicId)
static bool HandleDebugUpdateWorldStateCommand(ChatHandler *handler, uint32 variable, uint32 value)
static bool HandleDebugPlayObjectSoundCommand(ChatHandler *handler, int32 soundKitId, Optional< int32 > broadcastTextId)
static void HandleDebugObjectCountMap(ChatHandler *handler, Map *map)
static bool HandleDebugArenaCommand(ChatHandler *)
static bool HandleDebugInstanceSpawns(ChatHandler *handler, Variant< uint32, EXACT_SEQUENCE("explain")> optArg)
static bool HandleDebugNearGraveyard(ChatHandler *handler, Optional< EXACT_SEQUENCE("linked")> linked)
static bool HandleDebugConversationCommand(ChatHandler *handler, uint32 conversationEntry)
static bool HandleDebugAnimCommand(ChatHandler *handler, Emote emote)
static bool HandleDebugBecomePersonalClone(ChatHandler *handler)
static bool HandleDebugSendSetPhaseShiftCommand(ChatHandler *handler, Optional< uint32 > phaseId, Optional< uint32 > visibleMapId, Optional< uint32 > uiMapPhaseId)
ChatCommandTable GetCommands() const override
static bool HandleDebugBoundaryCommand(ChatHandler *handler, Optional< EXACT_SEQUENCE("fill")> fill, Optional< uint32 > durationArg)
static bool HandleDebugSetAuraStateCommand(ChatHandler *handler, Optional< AuraStateType > state, bool apply)
static bool HandleDebugPlaySoundCommand(ChatHandler *handler, uint32 soundId, Optional< uint32 > broadcastTextId)
void AddSC_debug_commandscript()
@ CONFIG_RESPAWN_GUIDALERTLEVEL
@ CONFIG_RESPAWN_GUIDWARNLEVEL
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
std::vector< ChatCommandBuilder > ChatCommandTable
constexpr std::size_t size()
@ RBAC_PERM_COMMAND_DEBUG
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
std::array< uint16, 8 > Camera
constexpr float GetPositionX() const
constexpr float GetPositionY() const
std::string ToString() const
constexpr void GetPosition(float &x, float &y) const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const