diff options
Diffstat (limited to 'src/game/Level3.cpp')
-rw-r--r-- | src/game/Level3.cpp | 77 |
1 files changed, 46 insertions, 31 deletions
diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 6bdffe0b187..c507df4c858 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -299,15 +299,6 @@ bool ChatHandler::HandleReloadLootTemplatesItemCommand(const char*) return true; } -bool ChatHandler::HandleReloadLootTemplatesMillingCommand(const char*) -{ - sLog.outString( "Re-Loading Loot Tables... (`milling_loot_template`)" ); - LoadLootTemplates_Milling(); - LootTemplates_Milling.CheckLootRefs(); - SendGlobalSysMessage("DB table `milling_loot_template` reloaded."); - return true; -} - bool ChatHandler::HandleReloadLootTemplatesPickpocketingCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`pickpocketing_loot_template`)" ); @@ -1750,10 +1741,6 @@ bool ChatHandler::HandleLearnAllMySpellsCommand(const char* /*args*/) if(!spellInfo) continue; - // skip server-side/triggered spells - if(spellInfo->spellLevel==0) - continue; - // skip wrong class/race skills if(!m_session->GetPlayer()->IsSpellFitByClassAndRace(spellInfo->Id)) continue; @@ -1762,6 +1749,8 @@ bool ChatHandler::HandleLearnAllMySpellsCommand(const char* /*args*/) if( spellInfo->SpellFamilyName != family) continue; + //TODO: skip triggered spells + // skip spells with first rank learned as talent (and all talents then also) uint32 first_rank = spellmgr.GetFirstSpellInChain(spellInfo->Id); if(GetTalentSpellCost(first_rank) > 0 ) @@ -3824,6 +3813,36 @@ bool ChatHandler::HandleHoverCommand(const char* args) return true; } +bool ChatHandler::HandleWaterwalkCommand(const char* args) +{ + if(!args) + return false; + + Player *player = getSelectedPlayer(); + if(!player) + { + PSendSysMessage(LANG_NO_CHAR_SELECTED); + SetSentErrorMessage(true); + return false; + } + + if (strncmp(args, "on", 3) == 0) + player->SetMovement(MOVE_WATER_WALK); // ON + else if (strncmp(args, "off", 4) == 0) + player->SetMovement(MOVE_LAND_WALK); // OFF + else + { + SendSysMessage(LANG_USE_BOL); + return false; + } + + PSendSysMessage(LANG_YOU_SET_WATERWALK, args, player->GetName()); + if(needReportToTarget(player)) + ChatHandler(player).PSendSysMessage(LANG_YOUR_WATERWALK_SET, args, GetName()); + return true; + +} + bool ChatHandler::HandleLevelUpCommand(const char* args) { char* px = strtok((char*)args, " "); @@ -4439,7 +4458,7 @@ static bool HandleResetStatsOrLevelHelper(Player* player) // set UNIT_FIELD_BYTES_1 to init state but preserve m_form value player->SetUInt32Value(UNIT_FIELD_BYTES_1, unitfield); - player->SetByteValue(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP ); + player->SetByteValue(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_UNK3 | UNIT_BYTE2_FLAG_UNK5 ); player->SetByteValue(UNIT_FIELD_BYTES_2, 3, player->m_form); player->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE); @@ -4484,7 +4503,6 @@ bool ChatHandler::HandleResetLevelCommand(const char * args) player->SetLevel(1); player->InitStatsForLevel(true); player->InitTaxiNodesForLevel(); - player->InitGlyphsForLevel(); player->InitTalentForLevel(); player->SetUInt32Value(PLAYER_XP,0); @@ -4528,7 +4546,6 @@ bool ChatHandler::HandleResetStatsCommand(const char * args) player->InitStatsForLevel(true); player->InitTaxiNodesForLevel(); - player->InitGlyphsForLevel(); player->InitTalentForLevel(); return true; @@ -6591,27 +6608,30 @@ bool ChatHandler::HandleModifyGenderCommand(const char *args) return false; } - PlayerInfo const* info = objmgr.GetPlayerInfo(player->getRace(), player->getClass()); - if(!info) - return false; - char const* gender_str = (char*)args; int gender_len = strlen(gender_str); + uint32 displayId = player->GetNativeDisplayId(); + char const* gender_full = NULL; + uint32 new_displayId = displayId; Gender gender; - if(!strncmp(gender_str, "male", gender_len)) // MALE + if(!strncmp(gender_str,"male",gender_len)) // MALE { if(player->getGender() == GENDER_MALE) return true; + gender_full = "male"; + new_displayId = player->getRace() == RACE_BLOODELF ? displayId+1 : displayId-1; gender = GENDER_MALE; } - else if (!strncmp(gender_str, "female", gender_len)) // FEMALE + else if (!strncmp(gender_str,"female",gender_len)) // FEMALE { if(player->getGender() == GENDER_FEMALE) return true; + gender_full = "female"; + new_displayId = player->getRace() == RACE_BLOODELF ? displayId-1 : displayId+1; gender = GENDER_FEMALE; } else @@ -6623,19 +6643,14 @@ bool ChatHandler::HandleModifyGenderCommand(const char *args) // Set gender player->SetByteValue(UNIT_FIELD_BYTES_0, 2, gender); - player->SetByteValue(PLAYER_BYTES_3, 0, gender); // Change display ID - player->SetDisplayId(gender ? info->displayId_f : info->displayId_m); - player->SetNativeDisplayId(gender ? info->displayId_f : info->displayId_m); - - char const* gender_full = gender ? "female" : "male"; - - PSendSysMessage(LANG_YOU_CHANGE_GENDER, player->GetName(), gender_full); + player->SetDisplayId(new_displayId); + player->SetNativeDisplayId(new_displayId); + PSendSysMessage(LANG_YOU_CHANGE_GENDER, player->GetName(),gender_full); if (needReportToTarget(player)) - ChatHandler(player).PSendSysMessage(LANG_YOUR_GENDER_CHANGED, gender_full, GetName()); - + ChatHandler(player).PSendSysMessage(LANG_YOUR_GENDER_CHANGED, gender_full,GetName()); return true; } |