From 49fd11ab5aebcbce86ca2ee48711287cf020d798 Mon Sep 17 00:00:00 2001 From: Nefarion Date: Fri, 8 Mar 2013 21:41:30 +0100 Subject: First step of comment style refactoring to doxygen-style. --- src/server/game/Scripting/MapScripts.cpp | 2 +- src/server/game/Scripting/ScriptMgr.cpp | 6 +++--- src/server/game/Scripting/ScriptMgr.h | 2 +- src/server/game/Scripting/ScriptSystem.h | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/server/game/Scripting') diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp index 7cee754bba7..d36e351ba9d 100644 --- a/src/server/game/Scripting/MapScripts.cpp +++ b/src/server/game/Scripting/MapScripts.cpp @@ -698,7 +698,7 @@ void Map::ScriptsProcess() case SCRIPT_COMMAND_CAST_SPELL: { - // TODO: Allow gameobjects to be targets and casters + /// @todo Allow gameobjects to be targets and casters if (!source && !target) { sLog->outError(LOG_FILTER_TSCR, "%s source and target objects are NULL.", step.script->GetDebugInfo().c_str()); diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 32fe5d2ef33..21eb6f74221 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -766,7 +766,7 @@ uint32 ScriptMgr::GetDialogStatus(Player* player, Creature* creature) ASSERT(player); ASSERT(creature); - // TODO: 100 is a funny magic number to have hanging around here... + /// @todo 100 is a funny magic number to have hanging around here... GET_SCRIPT_RET(CreatureScript, creature->GetScriptId(), tmpscript, 100); player->PlayerTalkClass->ClearMenus(); return tmpscript->GetDialogStatus(player, creature); @@ -852,7 +852,7 @@ uint32 ScriptMgr::GetDialogStatus(Player* player, GameObject* go) ASSERT(player); ASSERT(go); - // TODO: 100 is a funny magic number to have hanging around here... + /// @todo 100 is a funny magic number to have hanging around here... GET_SCRIPT_RET(GameObjectScript, go->GetScriptId(), tmpscript, 100); player->PlayerTalkClass->ClearMenus(); return tmpscript->GetDialogStatus(player, go); @@ -918,7 +918,7 @@ bool ScriptMgr::OnAreaTrigger(Player* player, AreaTriggerEntry const* trigger) Battleground* ScriptMgr::CreateBattleground(BattlegroundTypeId /*typeId*/) { - // TODO: Implement script-side battlegrounds. + /// @todo Implement script-side battlegrounds. ASSERT(false); return NULL; } diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index b13c2da7f6c..480a7f6cea1 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -71,7 +71,7 @@ struct OutdoorPvPData; /* - TODO: Add more script type classes. + @todo Add more script type classes. MailScript SessionScript diff --git a/src/server/game/Scripting/ScriptSystem.h b/src/server/game/Scripting/ScriptSystem.h index cc65d493f3e..0641cebd18f 100644 --- a/src/server/game/Scripting/ScriptSystem.h +++ b/src/server/game/Scripting/ScriptSystem.h @@ -10,7 +10,7 @@ #define TEXT_SOURCE_RANGE -1000000 //the amount of entries each text source has available -//TODO: find better namings and definitions. +/// @todo find better namings and definitions. //N=Neutral, A=Alliance, H=Horde. //NEUTRAL or FRIEND = Hostility to player surroundings (not a good definition) //ACTIVE or PASSIVE = Hostility to environment surroundings. -- cgit v1.2.3 From 1b45bcd7b9060a512053b631a32867bdf5ed5034 Mon Sep 17 00:00:00 2001 From: Nefarion Date: Sat, 9 Mar 2013 00:55:59 +0100 Subject: Add the following commands: .deserter instance add $time (Adds the instance deserter debuff with $time duration to your target) .deserter bg add $time (Adds the BG deserter debuff with $time duration to your target) .deserter instance remove (Removes the instance deserter debuff) .deserter instance remove (Removes the bg deserter debuff) --- .../world/2013_03_08_01_world_command_deserter.sql | 11 ++ src/server/game/Scripting/ScriptLoader.cpp | 2 + src/server/scripts/Commands/CMakeLists.txt | 1 + src/server/scripts/Commands/cs_deserter.cpp | 197 +++++++++++++++++++++ 4 files changed, 211 insertions(+) create mode 100644 sql/updates/world/2013_03_08_01_world_command_deserter.sql create mode 100644 src/server/scripts/Commands/cs_deserter.cpp (limited to 'src/server/game/Scripting') diff --git a/sql/updates/world/2013_03_08_01_world_command_deserter.sql b/sql/updates/world/2013_03_08_01_world_command_deserter.sql new file mode 100644 index 00000000000..62b60e973c7 --- /dev/null +++ b/sql/updates/world/2013_03_08_01_world_command_deserter.sql @@ -0,0 +1,11 @@ +DELETE FROM `command` WHERE `name` IN +("deserter instance add", +"deserter instance remove", +"deserter bg add", +"deserter bg remove"); + +INSERT INTO `command` (`name`, `security`, `help`) VALUES +("deserter instance add", 3, "Syntax: .deserter instance add $time \n\n Adds the instance deserter debuff to your target with $time duration."), +("deserter instance remove", 3, "Syntax: .deserter instance remove \n\n Removes the instance deserter debuff from your target."), +("deserter bg add", 3, "Syntax: .deserter bg add $time \n\n Adds the bg deserter debuff to your target with $time duration."), +("deserter bg remove", 3, "Syntax: .deserter bg remove \n\n Removes the bg deserter debuff from your target."); diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index afc153a5000..845c3fa704d 100644 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -52,6 +52,7 @@ void AddSC_cast_commandscript(); void AddSC_character_commandscript(); void AddSC_cheat_commandscript(); void AddSC_debug_commandscript(); +void AddSC_deserter_commandscript(); void AddSC_disable_commandscript(); void AddSC_event_commandscript(); void AddSC_gm_commandscript(); @@ -683,6 +684,7 @@ void AddCommandScripts() AddSC_character_commandscript(); AddSC_cheat_commandscript(); AddSC_debug_commandscript(); + AddSC_deserter_commandscript(); AddSC_disable_commandscript(); AddSC_event_commandscript(); AddSC_gm_commandscript(); diff --git a/src/server/scripts/Commands/CMakeLists.txt b/src/server/scripts/Commands/CMakeLists.txt index 83e97b2c80d..15e16c2caf1 100644 --- a/src/server/scripts/Commands/CMakeLists.txt +++ b/src/server/scripts/Commands/CMakeLists.txt @@ -18,6 +18,7 @@ set(scripts_STAT_SRCS Commands/cs_character.cpp Commands/cs_cheat.cpp Commands/cs_debug.cpp + Commands/cs_deserter.cpp Commands/cs_disable.cpp Commands/cs_event.cpp Commands/cs_gm.cpp diff --git a/src/server/scripts/Commands/cs_deserter.cpp b/src/server/scripts/Commands/cs_deserter.cpp new file mode 100644 index 00000000000..758ed5eab81 --- /dev/null +++ b/src/server/scripts/Commands/cs_deserter.cpp @@ -0,0 +1,197 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +/** +* @file cs_deserter.cpp +* @brief .deserter related commands +* +* This file contains the CommandScripts for all deserter sub-commands +*/ + +#include "Chat.h" +#include "Player.h" +#include "Language.h" + +enum Spells +{ + LFG_SPELL_DUNGEON_DESERTER = 71041, + BG_SPELL_DESERTER = 26013 +}; + +class deserter_commandscript : public CommandScript +{ +public: + deserter_commandscript() : CommandScript("deserter_commandscript") { } + + /** + * @brief Returns the command structure for the system. + */ + + ChatCommand* GetCommands() const + { + static ChatCommand deserterInstanceCommandTable[] = + { + { "add", SEC_ADMINISTRATOR, false, &HandleDeserterInstanceAdd, "", NULL }, + { "remove", SEC_ADMINISTRATOR, false, &HandleDeserterInstanceRemove, "", NULL }, + { NULL, SEC_PLAYER, false, NULL, "", NULL } + }; + static ChatCommand deserterBGCommandTable[] = + { + { "add", SEC_ADMINISTRATOR, false, &HandleDeserterBGAdd, "", NULL }, + { "remove", SEC_ADMINISTRATOR, false, &HandleDeserterBGRemove, "", NULL }, + { NULL, SEC_PLAYER, false, NULL, "", NULL } + }; + + static ChatCommand deserterCommandTable[] = + { + { "instance", SEC_ADMINISTRATOR, false, NULL, "", deserterInstanceCommandTable }, + { "bg", SEC_ADMINISTRATOR, false, NULL, "", deserterBGCommandTable }, + { NULL, SEC_PLAYER, false, NULL, "", NULL } + }; + static ChatCommand commandTable[] = + { + { "deserter", SEC_ADMINISTRATOR, false, NULL, "", deserterCommandTable }, + { NULL, SEC_PLAYER, false, NULL, "", NULL } + }; + return commandTable; + } + + /** + * @brief Applies the Deserter Debuff to a player + * + * This function applies a Deserter Debuff of the given type (Instance or BG) to the + * selected player, with the provided duration in seconds. + * + * @param handler The ChatHandler, passed by the system. + * @param args The provided duration in seconds. + * @param isInstance provided by the relaying functions, so we don't have + * to write that much code :) + * + * @return true if everything was correct, false if an error occured. + * + * Example Usage: + * @code + * .deserter instance add 3600 (one hour) + * -or- + * .deserter bg add 3600 (one hour) + * @endcode + */ + static bool HandleDeserterAdd(ChatHandler* handler, char const* args, bool isInstance) + { + if (!*args) + return false; + + Player* player = handler->getSelectedPlayer(); + if (!player) + { + handler->SendSysMessage(LANG_NO_CHAR_SELECTED); + handler->SetSentErrorMessage(true); + return false; + } + char* timeStr = strtok((char*)args, " "); + if (!timeStr) + { + handler->SendSysMessage(LANG_BAD_VALUE); + handler->SetSentErrorMessage(true); + return false; + } + uint32 time = atoi(timeStr); + + if (!time) + { + handler->SendSysMessage(LANG_BAD_VALUE); + handler->SetSentErrorMessage(true); + return false; + } + + Aura* aura = player->AddAura(isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER, player); + + if (!aura) + { + handler->SendSysMessage(LANG_BAD_VALUE); + handler->SetSentErrorMessage(true); + return false; + } + aura->SetDuration(time * IN_MILLISECONDS); + + return true; + } + + /** + * @brief Removes the Deserter Debuff from a player + * + * This function removes a Deserter Debuff of the given type (Instance or BG) from the + * selected player. + * + * @param handler The ChatHandler, passed by the system. + * @param args Should be nothing. + * @param isInstance provided by the relaying functions, so we don't have + * to write that much code :) + * + * @return true if everything was correct, false if an error occured. + * + * Example Usage: + * @code + * .deserter instance remove + * -or- + * .deserter bg remove + * @endcode + */ + static bool HandleDeserterRemove(ChatHandler* handler, char const* args, bool isInstance) + { + Player* player = handler->getSelectedPlayer(); + if (!player) + { + handler->SendSysMessage(LANG_NO_CHAR_SELECTED); + handler->SetSentErrorMessage(true); + return false; + } + + player->RemoveAura(isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); + + return true; + } + + /// @sa HandleDeserterAdd() + static bool HandleDeserterInstanceAdd(ChatHandler* handler, char const* args) + { + return HandleDeserterAdd(handler, args, true); + } + + /// @sa HandleDeserterAdd() + static bool HandleDeserterBGAdd(ChatHandler* handler, char const* args) + { + return HandleDeserterAdd(handler, args, false); + } + + /// @sa HandleDeserterRemove() + static bool HandleDeserterInstanceRemove(ChatHandler* handler, char const* args) + { + return HandleDeserterRemove(handler, args, true); + } + + /// @sa HandleDeserterRemove() + static bool HandleDeserterBGRemove(ChatHandler* handler, char const* args) + { + return HandleDeserterRemove(handler, args, false); + } +}; + +void AddSC_deserter_commandscript() +{ + new deserter_commandscript(); +} -- cgit v1.2.3