aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
authorxjose93 <xjose93@hotmail.com>2013-05-13 01:43:15 +0200
committerxjose93 <xjose93@hotmail.com>2013-05-14 18:07:13 +0200
commite858057eff0ae3bffed44c6be8a41749cc43b777 (patch)
tree9b34b05e6c657fc8cc1dccbba64b1d0c87b40cbc /src/server/scripts/Commands
parent16074667c074131476adb6166918d4a9ee450d4d (diff)
Core/Commands: Improve .damage command, now can damage destructible gameobjects => ".damage go <guid> <damage>"
Diffstat (limited to 'src/server/scripts/Commands')
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 9fa143673ca..2a89411b2e5 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -2042,6 +2042,70 @@ public:
if (!*args)
return false;
+ char* str = strtok((char*)args, " ");
+
+ if (strcmp(str, "go") == 0)
+ {
+ char* guidStr = strtok(NULL, " ");
+ if (!guidStr)
+ {
+ handler->SendSysMessage(LANG_BAD_VALUE);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ int32 guid = atoi(guidStr);
+ if (!guid)
+ {
+ handler->SendSysMessage(LANG_BAD_VALUE);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ char* damageStr = strtok(NULL, " ");
+ if (!damageStr)
+ {
+ handler->SendSysMessage(LANG_BAD_VALUE);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ int32 damage = atoi(damageStr);
+ if (!damage)
+ {
+ handler->SendSysMessage(LANG_BAD_VALUE);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (Player* player = handler->GetSession()->GetPlayer())
+ {
+ GameObject* go = NULL;
+
+ if (GameObjectData const* goData = sObjectMgr->GetGOData(guid))
+ go = handler->GetObjectGlobalyWithGuidOrNearWithDbGuid(guid, goData->id);
+
+ if (!go)
+ {
+ handler->PSendSysMessage(LANG_COMMAND_OBJNOTFOUND, guid);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (!go->IsDestructibleBuilding())
+ {
+ handler->SendSysMessage(LANG_INVALID_GAMEOBJECT_TYPE);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ go->ModifyHealth(-damage, player);
+ handler->PSendSysMessage(LANG_GAMEOBJECT_DAMAGED, go->GetName().c_str(), guid, -damage, go->GetGOValue()->Building.Health);
+ }
+
+ return true;
+ }
+
Unit* target = handler->getSelectedUnit();
if (!target || !handler->GetSession()->GetPlayer()->GetSelection())
{