diff options
author | xjose93 <xjose93@hotmail.com> | 2013-05-13 01:43:15 +0200 |
---|---|---|
committer | xjose93 <xjose93@hotmail.com> | 2013-05-14 18:07:13 +0200 |
commit | e858057eff0ae3bffed44c6be8a41749cc43b777 (patch) | |
tree | 9b34b05e6c657fc8cc1dccbba64b1d0c87b40cbc /src/server/scripts/Commands | |
parent | 16074667c074131476adb6166918d4a9ee450d4d (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.cpp | 64 |
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()) { |