From 5812c6559f3ff725beb89d989c23789db84ffa87 Mon Sep 17 00:00:00 2001 From: treeston Date: Thu, 15 Jun 2017 04:19:12 +0200 Subject: [PATCH] build fix --- src/server/game/Entities/Player/Player.cpp | 61 +++------------- src/server/game/Entities/Player/Player.h | 2 +- src/server/game/Handlers/CharacterHandler.cpp | 71 ++++++++++++++++++- src/server/game/Handlers/QuestHandler.cpp | 2 +- src/server/game/Reputation/ReputationMgr.cpp | 15 ++-- src/server/game/Reputation/ReputationMgr.h | 1 - src/server/scripts/Commands/cs_misc.cpp | 2 +- src/server/worldserver/worldserver.conf.dist | 2 +- 8 files changed, 93 insertions(+), 63 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c5bf7d7dc43..978b4998105 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -706,56 +706,6 @@ bool Player::Create(ObjectGuid::LowType guidlow, CharacterCreateInfo* createInfo SetCurrency(CURRENCY_TYPE_JUSTICE_POINTS, sWorld->getIntConfig(CONFIG_CURRENCY_START_JUSTICE_POINTS)); SetCurrency(CURRENCY_TYPE_CONQUEST_POINTS, sWorld->getIntConfig(CONFIG_CURRENCY_START_CONQUEST_POINTS)); - // start with every map explored - if (sWorld->getBoolConfig(CONFIG_START_ALL_EXPLORED)) - { - for (uint8 i=0; igetBoolConfig(CONFIG_START_ALL_REP)) - { - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(942), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(935), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(936), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(1011), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(970), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(967), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(989), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(932), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(934), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(1038), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(1077), 42999); - - // Factions depending on team, like cities and some more stuff - switch (GetTeam()) - { - case ALLIANCE: - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(72), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(47), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(69), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(930), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(730), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(978), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(54), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(946), 42999); - break; - case HORDE: - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(76), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(68), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(81), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(911), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(729), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(941), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(530), 42999); - GetReputationMgr().SetReputation(sFactionStore.LookupEntry(947), 42999); - break; - default: - break; - } - } - // Played time m_Last_tick = time(nullptr); m_Played_time[PLAYED_TIME_TOTAL] = 0; @@ -2905,7 +2855,7 @@ void Player::GiveLevel(uint8 level) UpdateAllStats(); if (sWorld->getBoolConfig(CONFIG_ALWAYS_MAXSKILL)) // Max weapon skill when leveling up - UpdateSkillsToMaxSkillsForLevel(); + UpdateWeaponsSkillsToMaxSkillsForLevel(); _ApplyAllLevelScaleItemMods(true); // Moved to above SetFullHealth so player will have full health from Heirlooms @@ -3613,6 +3563,9 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent if (skill_max_value < new_skill_max_value) skill_max_value = new_skill_max_value; + if (sWorld->getBoolConfig(CONFIG_ALWAYS_MAXSKILL) && !IsProfessionOrRidingSkill(spellLearnSkill->skill)) + skill_value = skill_max_value; + SetSkill(spellLearnSkill->skill, spellLearnSkill->step, skill_value, skill_max_value); } } @@ -5936,7 +5889,7 @@ void Player::UpdateSkillsForLevel() } } -void Player::UpdateSkillsToMaxSkillsForLevel() +void Player::UpdateWeaponsSkillsToMaxSkillsForLevel() { for (SkillStatusMap::iterator itr = mSkillStatus.begin(); itr != mSkillStatus.end(); ++itr) { @@ -23430,7 +23383,9 @@ void Player::LearnDefaultSkill(uint32 skillId, uint16 rank) { uint16 skillValue = 1; uint16 maxValue = GetMaxSkillValueForLevel(); - if (rcInfo->Flags & SKILL_FLAG_ALWAYS_MAX_VALUE) + if (sWorld->getBoolConfig(CONFIG_ALWAYS_MAXSKILL) && !IsProfessionOrRidingSkill(skillId)) + skillValue = maxValue; + else if (rcInfo->Flags & SKILL_FLAG_ALWAYS_MAX_VALUE) skillValue = maxValue; else if (getClass() == CLASS_DEATH_KNIGHT) skillValue = std::min(std::max({ 1, uint16((getLevel() - 1) * 5) }), maxValue); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 4441fa4b3cb..061bebdc6b2 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2131,7 +2131,7 @@ class TC_GAME_API Player : public Unit, public GridObject int32 CalculateReputationGain(ReputationSource source, uint32 creatureOrQuestLevel, int32 rep, int32 faction, bool noQuestBonus = false); void UpdateSkillsForLevel(); - void UpdateSkillsToMaxSkillsForLevel(); // for .levelup + void UpdateWeaponsSkillsToMaxSkillsForLevel(); // for .levelup void ModifySkillBonus(uint32 skillid, int32 val, bool talent); /*********************************************************/ diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index e0672d597c9..22b90c8bb9d 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1023,6 +1023,75 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder) PlayerInfo const* info = sObjectMgr->GetPlayerInfo(pCurrChar->getRace(), pCurrChar->getClass()); for (uint32 spellId : info->castSpells) pCurrChar->CastSpell(pCurrChar, spellId, true); + + // Start with all map areas explored if enabled + if (sWorld->getBoolConfig(CONFIG_START_ALL_EXPLORED)) + for (uint8 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) + pCurrChar->SetFlag(PLAYER_EXPLORED_ZONES_1 + i, 0xFFFFFFFF); + + // Max relevant reputations if "StartAllReputation" is enabled + if (sWorld->getBoolConfig(CONFIG_START_ALL_REP)) + { + ReputationMgr& repMgr = pCurrChar->GetReputationMgr(); + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 942), 42999, false); // Cenarion Expedition + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 935), 42999, false); // The Sha'tar + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 936), 42999, false); // Shattrath City + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1011), 42999, false); // Lower City + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 970), 42999, false); // Sporeggar + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 967), 42999, false); // The Violet Eye + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 989), 42999, false); // Keepers of Time + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 932), 42999, false); // The Aldor + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 934), 42999, false); // The Scryers + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1038), 42999, false); // Ogri'la + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1077), 42999, false); // Shattered Sun Offensive + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1106), 42999, false); // Argent Crusade + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1104), 42999, false); // Frenzyheart Tribe + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1090), 42999, false); // Kirin Tor + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1098), 42999, false); // Knights of the Ebon Blade + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1156), 42999, false); // The Ashen Verdict + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1073), 42999, false); // The Kalu'ak + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1105), 42999, false); // The Oracles + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1119), 42999, false); // The Sons of Hodir + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1091), 42999, false); // The Wyrmrest Accord + + // Factions depending on team, like cities and some more stuff + switch (pCurrChar->GetTeam()) + { + case ALLIANCE: + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 72), 42999, false); // Stormwind + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 47), 42999, false); // Ironforge + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 69), 42999, false); // Darnassus + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 930), 42999, false); // Exodar + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 730), 42999, false); // Stormpike Guard + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 978), 42999, false); // Kurenai + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 54), 42999, false); // Gnomeregan Exiles + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 946), 42999, false); // Honor Hold + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1037), 42999, false); // Alliance Vanguard + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1068), 42999, false); // Explorers' League + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1126), 42999, false); // The Frostborn + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1094), 42999, false); // The Silver Covenant + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1050), 42999, false); // Valiance Expedition + break; + case HORDE: + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 76), 42999, false); // Orgrimmar + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 68), 42999, false); // Undercity + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 81), 42999, false); // Thunder Bluff + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 911), 42999, false); // Silvermoon City + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 729), 42999, false); // Frostwolf Clan + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 941), 42999, false); // The Mag'har + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 530), 42999, false); // Darkspear Trolls + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry( 947), 42999, false); // Thrallmar + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1052), 42999, false); // Horde Expedition + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1067), 42999, false); // The Hand of Vengeance + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1124), 42999, false); // The Sunreavers + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1064), 42999, false); // The Taunka + repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(1085), 42999, false); // Warsong Offensive + break; + default: + break; + } + repMgr.SendState(nullptr); + } } // show time before shutdown if shutdown planned. @@ -1073,7 +1142,7 @@ void WorldSession::HandleSetFactionAtWar(WorldPacket& recvData) void WorldSession::HandleSetFactionCheat(WorldPacket& /*recvData*/) { TC_LOG_ERROR("network", "WORLD SESSION: HandleSetFactionCheat, not expected call, please report."); - GetPlayer()->GetReputationMgr().SendStates(); + GetPlayer()->GetReputationMgr().SendState(nullptr); } void WorldSession::HandleTutorialFlag(WorldPacket& recvData) diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index d5c63fadd7f..55853d59b18 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -655,7 +655,7 @@ void WorldSession::HandleQuestPushResult(WorldPacket& recvPacket) { if (_player->GetPlayerSharingQuest() == guid) { - Player* player = ObjectAccessor::FindPlayer(_player->GetDivider()); + Player* player = ObjectAccessor::FindPlayer(_player->GetPlayerSharingQuest()); if (player) { WorldPacket data(MSG_QUEST_PUSH_RESULT, 8 + 4 + 1); diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index db7aa6f96b1..7cb6a4276fb 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -169,7 +169,7 @@ void ReputationMgr::SendForceReactions() void ReputationMgr::SendState(FactionState const* faction) { - uint32 count = 1; + uint32 count = faction ? 1 : 0; WorldPacket data(SMSG_SET_FACTION_STANDING, 17); data << float(0); @@ -179,15 +179,18 @@ void ReputationMgr::SendState(FactionState const* faction) size_t p_count = data.wpos(); data << uint32(count); - data << uint32(faction->ReputationListID); - data << uint32(faction->Standing); + if (faction) + { + data << uint32(faction->ReputationListID); + data << uint32(faction->Standing); + } for (FactionStateList::iterator itr = _factions.begin(); itr != _factions.end(); ++itr) { if (itr->second.needSend) { itr->second.needSend = false; - if (itr->second.ReputationListID != faction->ReputationListID) + if (!faction || itr->second.ReputationListID != faction->ReputationListID) { data << uint32(itr->second.ReputationListID); data << uint32(itr->second.Standing); @@ -236,6 +239,7 @@ void ReputationMgr::SendInitialReputations() _player->SendDirectMessage(&data); } +<<<<<<< HEAD void ReputationMgr::SendStates() { for (FactionStateList::iterator itr = _factions.begin(); itr != _factions.end(); ++itr) @@ -243,6 +247,9 @@ void ReputationMgr::SendStates() } void ReputationMgr::SendVisible(FactionState const* faction, bool visible /* = true*/) const +======= +void ReputationMgr::SendVisible(FactionState const* faction) const +>>>>>>> 4b6351e... Fixes to all-reputation and all-skill custom option handling: { if (_player->GetSession()->PlayerLoading()) return; diff --git a/src/server/game/Reputation/ReputationMgr.h b/src/server/game/Reputation/ReputationMgr.h index e35f0f0a8cf..675d1879d8e 100644 --- a/src/server/game/Reputation/ReputationMgr.h +++ b/src/server/game/Reputation/ReputationMgr.h @@ -139,7 +139,6 @@ class TC_GAME_API ReputationMgr void SendInitialReputations(); void SendForceReactions(); void SendState(FactionState const* faction); - void SendStates(); private: // internal helper functions void Initialize(); diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 68fb534f464..25d5abd4959 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1438,7 +1438,7 @@ public: } // each skills that have max skill value dependent from level seted to current level max skill value - player->UpdateSkillsToMaxSkillsForLevel(); + player->UpdateWeaponsSkillsToMaxSkillsForLevel(); return true; } diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index d0438d49a17..b53e6d13ca0 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -823,7 +823,7 @@ StartPlayerLevel = 1 # # StartDeathKnightPlayerLevel -# Description: Staring level for death knight characters after creation. +# Description: Starting level for death knight characters after creation. # Range: 1-MaxPlayerLevel # Default: 55