AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
reset_commandscript Class Reference
Inheritance diagram for reset_commandscript:
CommandScript ScriptObject

Public Member Functions

 reset_commandscript ()
 
ChatCommandTable GetCommands () const override
 
virtual std::vector< Acore::ChatCommands::ChatCommandBuilderGetCommands () const =0
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 

Static Public Member Functions

static bool HandleResetAchievementsCommand (ChatHandler *, Optional< PlayerIdentifier > target)
 
static bool HandleResetHonorCommand (ChatHandler *, Optional< PlayerIdentifier > target)
 
static bool HandleResetStatsOrLevelHelper (Player *player)
 
static bool HandleResetLevelCommand (ChatHandler *, Optional< PlayerIdentifier > target)
 
static bool HandleResetSpellsCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleResetStatsCommand (ChatHandler *, Optional< PlayerIdentifier > target)
 
static bool HandleResetTalentsCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleResetAllCommand (ChatHandler *handler, std::string_view caseName)
 

Additional Inherited Members

- Protected Member Functions inherited from CommandScript
 CommandScript (const char *name)
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name)
 
virtual ~ScriptObject ()=default
 

Detailed Description

Constructor & Destructor Documentation

◆ reset_commandscript()

reset_commandscript::reset_commandscript ( )
inline
39: CommandScript("reset_commandscript") { }
Definition: CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable reset_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

42 {
43 static ChatCommandTable resetCommandTable =
44 {
45 { "achievements", HandleResetAchievementsCommand, SEC_CONSOLE, Console::Yes },
46 { "honor", HandleResetHonorCommand, SEC_ADMINISTRATOR, Console::Yes },
47 { "level", HandleResetLevelCommand, SEC_ADMINISTRATOR, Console::Yes },
48 { "spells", HandleResetSpellsCommand, SEC_ADMINISTRATOR, Console::Yes },
49 { "stats", HandleResetStatsCommand, SEC_ADMINISTRATOR, Console::Yes },
50 { "talents", HandleResetTalentsCommand, SEC_ADMINISTRATOR, Console::Yes },
51 { "all", HandleResetAllCommand, SEC_CONSOLE, Console::Yes }
52 };
53 static ChatCommandTable commandTable =
54 {
55 { "reset", resetCommandTable }
56 };
57 return commandTable;
58 }
@ SEC_ADMINISTRATOR
Definition: Common.h:62
@ SEC_CONSOLE
Definition: Common.h:63
std::vector< ChatCommandBuilder > ChatCommandTable
Definition: ChatCommand.h:49
static bool HandleResetTalentsCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition: cs_reset.cpp:223
static bool HandleResetSpellsCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition: cs_reset.cpp:167
static bool HandleResetStatsCommand(ChatHandler *, Optional< PlayerIdentifier > target)
Definition: cs_reset.cpp:202
static bool HandleResetHonorCommand(ChatHandler *, Optional< PlayerIdentifier > target)
Definition: cs_reset.cpp:77
static bool HandleResetLevelCommand(ChatHandler *, Optional< PlayerIdentifier > target)
Definition: cs_reset.cpp:128
static bool HandleResetAllCommand(ChatHandler *handler, std::string_view caseName)
Definition: cs_reset.cpp:264
static bool HandleResetAchievementsCommand(ChatHandler *, Optional< PlayerIdentifier > target)
Definition: cs_reset.cpp:60

References HandleResetAchievementsCommand(), HandleResetAllCommand(), HandleResetHonorCommand(), HandleResetLevelCommand(), HandleResetSpellsCommand(), HandleResetStatsCommand(), HandleResetTalentsCommand(), SEC_ADMINISTRATOR, and SEC_CONSOLE.

◆ HandleResetAchievementsCommand()

static bool reset_commandscript::HandleResetAchievementsCommand ( ChatHandler ,
Optional< PlayerIdentifier target 
)
inlinestatic
61 {
62 if (!target)
63 {
64 return false;
65 }
66
67 Player* playerTarget = target->GetConnectedPlayer();
68
69 if (playerTarget)
70 playerTarget->ResetAchievements();
71 else
72 AchievementMgr::DeleteFromDB(target->GetGUID().GetCounter());
73
74 return true;
75 }
static void DeleteFromDB(ObjectGuid::LowType lowguid)
Definition: AchievementMgr.cpp:541
Definition: Player.h:1056
void ResetAchievements()
Definition: Player.cpp:13821

References AchievementMgr::DeleteFromDB(), and Player::ResetAchievements().

Referenced by GetCommands().

◆ HandleResetAllCommand()

static bool reset_commandscript::HandleResetAllCommand ( ChatHandler handler,
std::string_view  caseName 
)
inlinestatic
265 {
266 AtLoginFlags atLogin;
267
268 // Command specially created as single command to prevent using short case names
269 if (caseName == "spells")
270 {
271 atLogin = AT_LOGIN_RESET_SPELLS;
272 sWorld->SendWorldText(LANG_RESETALL_SPELLS);
273 if (!handler->GetSession())
275 }
276 else if (caseName == "talents")
277 {
279 sWorld->SendWorldText(LANG_RESETALL_TALENTS);
280 if (!handler->GetSession())
282 }
283 else
284 {
286 return false;
287 }
288
290 stmt->SetData(0, uint16(atLogin));
291 CharacterDatabase.Execute(stmt);
292
293 std::shared_lock<std::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
295 for (auto itr = plist.begin(); itr != plist.end(); ++itr)
296 itr->second->SetAtLoginFlag(atLogin);
297
298 return true;
299 }
std::uint16_t uint16
Definition: Define.h:109
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition: DatabaseEnv.cpp:21
@ CHAR_UPD_ALL_AT_LOGIN_FLAGS
Definition: CharacterDatabase.h:276
AtLoginFlags
Definition: Player.h:599
@ AT_LOGIN_RESET_TALENTS
Definition: Player.h:603
@ AT_LOGIN_RESET_SPELLS
Definition: Player.h:602
@ AT_LOGIN_RESET_PET_TALENTS
Definition: Player.h:605
@ LANG_RESETALL_TALENTS
Definition: Language.h:259
@ LANG_RESETALL_UNKNOWN_CASE
Definition: Language.h:257
@ LANG_RESETALL_SPELLS
Definition: Language.h:258
#define sWorld
Definition: World.h:447
HashMapHolder< Player >::MapType const & GetPlayers()
Definition: ObjectAccessor.cpp:78
Definition: PreparedStatement.h:158
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition: PreparedStatement.h:78
WorldSession * GetSession()
Definition: Chat.h:139
void SendErrorMessage(uint32 entry)
Definition: Chat.cpp:152
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition: Chat.cpp:101
Definition: ObjectAccessor.h:45
std::unordered_map< ObjectGuid, T * > MapType
Definition: ObjectAccessor.h:51

References AT_LOGIN_RESET_PET_TALENTS, AT_LOGIN_RESET_SPELLS, AT_LOGIN_RESET_TALENTS, CHAR_UPD_ALL_AT_LOGIN_FLAGS, CharacterDatabase, ObjectAccessor::GetPlayers(), ChatHandler::GetSession(), LANG_RESETALL_SPELLS, LANG_RESETALL_TALENTS, LANG_RESETALL_UNKNOWN_CASE, ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), PreparedStatementBase::SetData(), and sWorld.

Referenced by GetCommands().

◆ HandleResetHonorCommand()

static bool reset_commandscript::HandleResetHonorCommand ( ChatHandler ,
Optional< PlayerIdentifier target 
)
inlinestatic
78 {
79 if (!target)
80 {
81 return false;
82 }
83
84 Player* playerTarget = target->GetConnectedPlayer();
85
86 playerTarget->SetHonorPoints(0);
87 playerTarget->SetUInt32Value(PLAYER_FIELD_KILLS, 0);
92
93 return true;
94 }
@ PLAYER_FIELD_TODAY_CONTRIBUTION
Definition: UpdateFields.h:375
@ PLAYER_FIELD_KILLS
Definition: UpdateFields.h:374
@ PLAYER_FIELD_YESTERDAY_CONTRIBUTION
Definition: UpdateFields.h:376
@ PLAYER_FIELD_LIFETIME_HONORABLE_KILLS
Definition: UpdateFields.h:377
@ ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL
Definition: DBCEnums.h:227
void SetUInt32Value(uint16 index, uint32 value)
Definition: Object.cpp:650
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition: PlayerUpdates.cpp:2131
void SetHonorPoints(uint32 value)
Definition: Player.cpp:6156

References ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL, PLAYER_FIELD_KILLS, PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, PLAYER_FIELD_TODAY_CONTRIBUTION, PLAYER_FIELD_YESTERDAY_CONTRIBUTION, Player::SetHonorPoints(), Object::SetUInt32Value(), and Player::UpdateAchievementCriteria().

Referenced by GetCommands().

◆ HandleResetLevelCommand()

static bool reset_commandscript::HandleResetLevelCommand ( ChatHandler ,
Optional< PlayerIdentifier target 
)
inlinestatic
129 {
130 if (!target)
131 {
132 return false;
133 }
134
135 Player* playerTarget = target->GetConnectedPlayer();
136
137 if (!HandleResetStatsOrLevelHelper(playerTarget))
138 return false;
139
140 uint8 oldLevel = playerTarget->GetLevel();
141
142 // set starting level
143 uint32 startLevel = playerTarget->getClass() != CLASS_DEATH_KNIGHT
144 ? sWorld->getIntConfig(CONFIG_START_PLAYER_LEVEL)
146
147 playerTarget->_ApplyAllLevelScaleItemMods(false);
148 playerTarget->SetLevel(startLevel);
149 playerTarget->InitRunes();
150 playerTarget->InitStatsForLevel(true);
151 playerTarget->InitTaxiNodesForLevel();
152 playerTarget->InitGlyphsForLevel();
153 playerTarget->InitTalentForLevel();
154 playerTarget->SetUInt32Value(PLAYER_XP, 0);
155
156 playerTarget->_ApplyAllLevelScaleItemMods(true);
157
158 // reset level for pet
159 if (Pet* pet = playerTarget->GetPet())
160 pet->SynchronizeLevelWithOwner();
161
162 sScriptMgr->OnPlayerLevelChanged(playerTarget, oldLevel);
163
164 return true;
165 }
std::uint8_t uint8
Definition: Define.h:110
std::uint32_t uint32
Definition: Define.h:108
@ PLAYER_XP
Definition: UpdateFields.h:339
#define sScriptMgr
Definition: ScriptMgr.h:698
@ CONFIG_START_HEROIC_PLAYER_LEVEL
Definition: IWorld.h:239
@ CONFIG_START_PLAYER_LEVEL
Definition: IWorld.h:238
@ CLASS_DEATH_KNIGHT
Definition: SharedDefines.h:146
Definition: Pet.h:40
void _ApplyAllLevelScaleItemMods(bool apply)
Definition: Player.cpp:7524
void InitTalentForLevel()
Definition: Player.cpp:2533
void InitGlyphsForLevel()
Definition: Player.cpp:13202
Pet * GetPet() const
Definition: Player.cpp:8819
void InitTaxiNodesForLevel()
Definition: Player.h:1134
void InitStatsForLevel(bool reapplyMods=false)
Definition: Player.cpp:2548
void InitRunes()
Definition: Player.cpp:13372
uint8 getClass() const
Definition: Unit.h:1438
void SetLevel(uint8 lvl, bool showLevelChange=true)
Definition: Unit.cpp:15446
uint8 GetLevel() const
Definition: Unit.h:1432
static bool HandleResetStatsOrLevelHelper(Player *player)
Definition: cs_reset.cpp:96

References Player::_ApplyAllLevelScaleItemMods(), CLASS_DEATH_KNIGHT, CONFIG_START_HEROIC_PLAYER_LEVEL, CONFIG_START_PLAYER_LEVEL, Unit::getClass(), Unit::GetLevel(), Player::GetPet(), HandleResetStatsOrLevelHelper(), Player::InitGlyphsForLevel(), Player::InitRunes(), Player::InitStatsForLevel(), Player::InitTalentForLevel(), Player::InitTaxiNodesForLevel(), PLAYER_XP, Unit::SetLevel(), Object::SetUInt32Value(), sScriptMgr, and sWorld.

Referenced by GetCommands().

◆ HandleResetSpellsCommand()

static bool reset_commandscript::HandleResetSpellsCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
168 {
169 if (!target)
170 {
171 target = PlayerIdentifier::FromTargetOrSelf(handler);
172 }
173
174 if (!target)
175 {
176 return false;
177 }
178
179 Player* playerTarget = target->GetConnectedPlayer();
180
181 if (target)
182 {
183 playerTarget->resetSpells(/* bool myClassOnly */);
184
186 if (!handler->GetSession() || handler->GetSession()->GetPlayer() != playerTarget)
187 handler->PSendSysMessage(LANG_RESET_SPELLS_ONLINE, handler->GetNameLink(playerTarget).c_str());
188 }
189 else
190 {
193 stmt->SetData(1, playerTarget->GetGUID().GetCounter());
194 CharacterDatabase.Execute(stmt);
195
196 handler->PSendSysMessage(LANG_RESET_SPELLS_OFFLINE, target->GetName());
197 }
198
199 return true;
200 }
@ CHAR_UPD_ADD_AT_LOGIN_FLAG
Definition: CharacterDatabase.h:274
@ LANG_RESET_SPELLS_ONLINE
Definition: Language.h:250
@ LANG_RESET_SPELLS_OFFLINE
Definition: Language.h:251
@ LANG_RESET_SPELLS
Definition: Language.h:254
Definition: Chat.h:38
virtual std::string GetNameLink() const
Definition: Chat.h:101
void PSendSysMessage(char const *fmt, Args &&... args)
Definition: Chat.h:60
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition: ChatCommandTags.h:188
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
LowType GetCounter() const
Definition: ObjectGuid.h:147
WorldSession * GetSession() const
Definition: Player.h:1961
void resetSpells()
Definition: Player.cpp:11734
Player * GetPlayer() const
Definition: WorldSession.h:364

References AT_LOGIN_RESET_SPELLS, CHAR_UPD_ADD_AT_LOGIN_FLAG, CharacterDatabase, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), ObjectGuid::GetCounter(), Object::GetGUID(), ChatHandler::GetNameLink(), WorldSession::GetPlayer(), ChatHandler::GetSession(), Player::GetSession(), LANG_RESET_SPELLS, LANG_RESET_SPELLS_OFFLINE, LANG_RESET_SPELLS_ONLINE, ChatHandler::PSendSysMessage(), Player::resetSpells(), ChatHandler::SendSysMessage(), and PreparedStatementBase::SetData().

Referenced by GetCommands().

◆ HandleResetStatsCommand()

static bool reset_commandscript::HandleResetStatsCommand ( ChatHandler ,
Optional< PlayerIdentifier target 
)
inlinestatic
203 {
204 if (!target)
205 {
206 return false;
207 }
208
209 Player* playerTarget = target->GetConnectedPlayer();
210
211 if (!HandleResetStatsOrLevelHelper(playerTarget))
212 return false;
213
214 playerTarget->InitRunes();
215 playerTarget->InitStatsForLevel(true);
216 playerTarget->InitTaxiNodesForLevel();
217 playerTarget->InitGlyphsForLevel();
218 playerTarget->InitTalentForLevel();
219
220 return true;
221 }

References HandleResetStatsOrLevelHelper(), Player::InitGlyphsForLevel(), Player::InitRunes(), Player::InitStatsForLevel(), Player::InitTalentForLevel(), and Player::InitTaxiNodesForLevel().

Referenced by GetCommands().

◆ HandleResetStatsOrLevelHelper()

static bool reset_commandscript::HandleResetStatsOrLevelHelper ( Player player)
inlinestatic
97 {
98 ChrClassesEntry const* classEntry = sChrClassesStore.LookupEntry(player->getClass());
99 if (!classEntry)
100 {
101 LOG_ERROR("dbc", "Class {} not found in DBC (Wrong DBC files?)", player->getClass());
102 return false;
103 }
104
105 uint8 powerType = classEntry->powerType;
106
107 // reset m_form if no aura
110
111 player->SetFactionForRace(player->getRace());
112
113 player->SetUInt32Value(UNIT_FIELD_BYTES_0, ((player->getRace()) | (player->getClass() << 8) | (player->getGender() << 16) | (powerType << 24)));
114
115 // reset only if player not in some form;
116 if (player->GetShapeshiftForm() == FORM_NONE)
117 player->InitDisplayIds();
118
120
122
123 //-1 is default value
125 return true;
126 }
#define LOG_ERROR(filterType__,...)
Definition: Log.h:157
DBCStorage< ChrClassesEntry > sChrClassesStore(ChrClassesEntryfmt)
@ UNIT_FIELD_BYTES_0
Definition: UpdateFields.h:95
@ PLAYER_FIELD_WATCHED_FACTION_INDEX
Definition: UpdateFields.h:379
@ UNIT_FIELD_BYTES_2
Definition: UpdateFields.h:161
@ FORM_NONE
Definition: Unit.h:90
@ UNIT_BYTE2_FLAG_PVP
Definition: Unit.h:136
@ UNIT_FLAG_PLAYER_CONTROLLED
Definition: Unit.h:451
@ SPELL_AURA_MOD_SHAPESHIFT
Definition: SpellAuraDefines.h:99
void SetByteValue(uint16 index, uint8 offset, uint8 value)
Definition: Object.cpp:750
void InitDisplayIds()
Definition: Player.cpp:10535
void SetFactionForRace(uint8 race)
Definition: Player.cpp:5764
uint8 getGender() const
Definition: Unit.h:1440
ShapeshiftForm GetShapeshiftForm() const
Definition: Unit.h:2085
void ReplaceAllUnitFlags(UnitFlags flags)
Definition: Unit.h:1497
uint8 getRace(bool original=false) const
Definition: Unit.cpp:21287
bool HasAuraType(AuraType auraType) const
Definition: Unit.cpp:5643
void SetShapeshiftForm(ShapeshiftForm form)
Definition: Unit.h:2086
Definition: DBCStructure.h:653
uint32 powerType
Definition: DBCStructure.h:656

References FORM_NONE, Unit::getClass(), Unit::getGender(), Unit::getRace(), Unit::GetShapeshiftForm(), Unit::HasAuraType(), Player::InitDisplayIds(), LOG_ERROR, PLAYER_FIELD_WATCHED_FACTION_INDEX, ChrClassesEntry::powerType, Unit::ReplaceAllUnitFlags(), sChrClassesStore, Object::SetByteValue(), Player::SetFactionForRace(), Unit::SetShapeshiftForm(), Object::SetUInt32Value(), SPELL_AURA_MOD_SHAPESHIFT, UNIT_BYTE2_FLAG_PVP, UNIT_FIELD_BYTES_0, UNIT_FIELD_BYTES_2, and UNIT_FLAG_PLAYER_CONTROLLED.

Referenced by HandleResetLevelCommand(), and HandleResetStatsCommand().

◆ HandleResetTalentsCommand()

static bool reset_commandscript::HandleResetTalentsCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
224 {
225 Player* targetPlayer = nullptr;
226
227 if (target)
228 {
229 targetPlayer = target->GetConnectedPlayer();
230 }
231 else
232 {
234 return false;
235 }
236
237 if (targetPlayer)
238 {
239 targetPlayer->resetTalents(true);
240 targetPlayer->SendTalentsInfoData(false);
242 if (!handler->GetSession() || handler->GetSession()->GetPlayer() != targetPlayer)
243 handler->PSendSysMessage(LANG_RESET_TALENTS_ONLINE, handler->GetNameLink(targetPlayer).c_str());
244
245 Pet* pet = targetPlayer->GetPet();
246 Pet::resetTalentsForAllPetsOf(targetPlayer, pet);
247 if (pet)
248 targetPlayer->SendTalentsInfoData(true);
249 return true;
250 }
251 else
252 {
255 stmt->SetData(1, target->GetGUID().GetCounter());
256 CharacterDatabase.Execute(stmt);
257
258 std::string nameLink = handler->playerLink(target->GetName());
259 handler->PSendSysMessage(LANG_RESET_TALENTS_OFFLINE, nameLink.c_str());
260 return true;
261 }
262 }
@ LANG_RESET_TALENTS_OFFLINE
Definition: Language.h:253
@ LANG_RESET_TALENTS_ONLINE
Definition: Language.h:252
@ LANG_RESET_TALENTS
Definition: Language.h:255
@ LANG_NO_CHAR_SELECTED
Definition: Language.h:148
std::string playerLink(std::string const &name) const
Definition: Chat.h:128
static void resetTalentsForAllPetsOf(Player *owner, Pet *online_pet=nullptr)
Definition: Pet.cpp:2129
void SendTalentsInfoData(bool pet)
Definition: Player.cpp:14338
bool resetTalents(bool noResetCost=false)
Definition: Player.cpp:3656

References AT_LOGIN_RESET_PET_TALENTS, AT_LOGIN_RESET_TALENTS, CHAR_UPD_ADD_AT_LOGIN_FLAG, CharacterDatabase, ChatHandler::GetNameLink(), Player::GetPet(), WorldSession::GetPlayer(), ChatHandler::GetSession(), Player::GetSession(), LANG_NO_CHAR_SELECTED, LANG_RESET_TALENTS, LANG_RESET_TALENTS_OFFLINE, LANG_RESET_TALENTS_ONLINE, ChatHandler::playerLink(), ChatHandler::PSendSysMessage(), Player::resetTalents(), Pet::resetTalentsForAllPetsOf(), ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), Player::SendTalentsInfoData(), and PreparedStatementBase::SetData().

Referenced by GetCommands().