aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2012-03-03 16:12:28 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2012-03-03 16:12:28 +0100
commitd1e4eb051239c51f84e07938077da82f99367e8d (patch)
treea4d4988efc10971feaa36f30ba05cb2015e5a988
parenta08fe16d6967798b3dcb92ef03399b34c29e2597 (diff)
Core/Commands: Implement .debug moveflags command. With params you can set MoveFlags and MoveFlagsExtra for targeted unit. Without params it will display the current MoveFlags and MoveFlagsExtra. Useful for debugging upcoming changes.
-rw-r--r--sql/updates/world/2012_03_03_00_world_command.sql9
-rwxr-xr-xsrc/server/game/Miscellaneous/Language.h4
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp34
3 files changed, 46 insertions, 1 deletions
diff --git a/sql/updates/world/2012_03_03_00_world_command.sql b/sql/updates/world/2012_03_03_00_world_command.sql
new file mode 100644
index 00000000000..52938c0b76b
--- /dev/null
+++ b/sql/updates/world/2012_03_03_00_world_command.sql
@@ -0,0 +1,9 @@
+DELETE FROM `command` WHERE `name` LIKE 'debug moveflags';
+INSERT INTO `command` (`name`,`security`,`help`) VALUES
+('debug moveflags',3,'Syntax: .debug moveflags [$newMoveFlags [$newMoveFlags2]]\r\nNo params given will output the current moveflags of the target');
+
+DELETE FROM `trinity_string` WHERE `entry` IN(1143,1144);
+INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES
+(1143,'Target''s moveFlags: %u, moveFlagsExtra: %u.'),
+(1144,'Target''s moveFlags set to: %u, moveFlagsExtra to: %u');
+
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
index e751dbf92fe..547f1679b61 100755
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -811,7 +811,9 @@ enum TrinityStrings
LANG_MOVEGENS_FOLLOW_CREATURE = 1140,
LANG_MOVEGENS_FOLLOW_NULL = 1141,
LANG_MOVEGENS_EFFECT = 1142,
- // Room for more level 3 1143-1199 not used
+ LANG_MOVEFLAGS_GET = 1143,
+ LANG_MOVEFLAGS_SET = 1144,
+ // Room for more level 3 1144-1199 not used
// Debug commands
LANG_CINEMATIC_NOT_EXIST = 1200,
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index 8ca40231090..d4c94061e01 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -89,6 +89,7 @@ public:
{ "itemexpire", SEC_ADMINISTRATOR, false, &HandleDebugItemExpireCommand, "", NULL },
{ "areatriggers", SEC_ADMINISTRATOR, false, &HandleDebugAreaTriggersCommand, "", NULL },
{ "los", SEC_MODERATOR, false, &HandleDebugLoSCommand, "", NULL },
+ { "moveflags", SEC_ADMINISTRATOR, false, &HandleDebugMoveflagsCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand commandTable[] =
@@ -1283,6 +1284,39 @@ public:
handler->PSendSysMessage(LANG_SET_32BIT_FIELD, opcode, value);
return true;
}
+
+ static bool HandleDebugMoveflagsCommand(ChatHandler* handler, char const* args)
+ {
+ Unit* target = handler->getSelectedUnit();
+ if (!target)
+ target = handler->GetSession()->GetPlayer();
+
+ if (!*args)
+ {
+ //! Display case
+ handler->PSendSysMessage(LANG_MOVEFLAGS_GET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags());
+ }
+ else
+ {
+ char* mask1 = strtok((char*)args, " ");
+ if (!mask1)
+ return false;
+
+ char* mask2 = strtok(NULL, " \n");
+
+ uint32 moveFlags = (uint32)atoi(mask1);
+ target->SetUnitMovementFlags(moveFlags);
+
+ if (mask2)
+ {
+ uint32 moveFlagsExtra = uint32(atoi(mask2));
+ target->SetExtraUnitMovementFlags(moveFlagsExtra);
+ }
+
+ target->SendMovementFlagUpdate();
+ handler->PSendSysMessage(LANG_MOVEFLAGS_SET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags());
+ }
+ }
};
void AddSC_debug_commandscript()