mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-20 06:59:46 -04:00
Warning fixes and some minor changes here and there
- Added GetAchievementPoints to AchievementMgr
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "AchievementMgr.h"
|
||||
#include "Common.h"
|
||||
#include "DBCEnums.h"
|
||||
#include "ObjectMgr.h"
|
||||
@@ -24,7 +25,6 @@
|
||||
#include "World.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "DatabaseEnv.h"
|
||||
#include "AchievementMgr.h"
|
||||
#include "ArenaTeam.h"
|
||||
#include "CellImpl.h"
|
||||
#include "GameEventMgr.h"
|
||||
@@ -37,7 +37,6 @@
|
||||
#include "ScriptMgr.h"
|
||||
#include "MapManager.h"
|
||||
#include "Battleground.h"
|
||||
#include "BattlegroundAB.h"
|
||||
#include "Map.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "Group.h"
|
||||
@@ -378,10 +377,7 @@ bool AchievementCriteriaDataSet::Meets(Player const* source, Unit const* target,
|
||||
}
|
||||
|
||||
template<class T>
|
||||
AchievementMgr<T>::AchievementMgr(T* owner)
|
||||
{
|
||||
_owner = owner;
|
||||
}
|
||||
AchievementMgr<T>::AchievementMgr(T* owner): _owner(owner), _achievementPoints(0) {}
|
||||
|
||||
template<class T>
|
||||
AchievementMgr<T>::~AchievementMgr()
|
||||
@@ -456,7 +452,7 @@ void AchievementMgr<Guild>::RemoveCriteriaProgress(const AchievementCriteriaEntr
|
||||
template<class T>
|
||||
void AchievementMgr<T>::ResetAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1, uint32 miscValue2, bool evenIfCriteriaComplete)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_ACHIEVEMENTSYS, "AchievementMgr::ResetAchievementCriteria(%u, %u, %u)", type, miscValue1, miscValue2);
|
||||
sLog->outDebug(LOG_FILTER_ACHIEVEMENTSYS, "ResetAchievementCriteria(%u, %u, %u)", type, miscValue1, miscValue2);
|
||||
|
||||
// disable for gamemasters with GM-mode enabled
|
||||
if (GetOwner()->isGameMaster())
|
||||
@@ -711,6 +707,8 @@ void AchievementMgr<Player>::LoadFromDB(PreparedQueryResult achievementResult, P
|
||||
ca.date = time_t(fields[1].GetUInt32());
|
||||
ca.changed = false;
|
||||
|
||||
_achievementPoints += achievement->points;
|
||||
|
||||
// title achievement rewards are retroactive
|
||||
if (AchievementReward const* reward = sAchievementMgr->GetAchievementReward(achievement))
|
||||
if (uint32 titleId = reward->titleId[Player::TeamForRace(GetOwner()->getRace()) == ALLIANCE ? 0 : 1])
|
||||
@@ -778,6 +776,8 @@ void AchievementMgr<Guild>::LoadFromDB(PreparedQueryResult achievementResult, Pr
|
||||
ca.guids.insert(MAKE_NEW_GUID(atol(guids[i]), 0, HIGHGUID_PLAYER));
|
||||
|
||||
ca.changed = false;
|
||||
|
||||
_achievementPoints += achievement->points;
|
||||
}
|
||||
while (achievementResult->NextRow());
|
||||
}
|
||||
@@ -840,6 +840,7 @@ void AchievementMgr<Player>::Reset()
|
||||
}
|
||||
|
||||
m_completedAchievements.clear();
|
||||
_achievementPoints = 0;
|
||||
m_criteriaProgress.clear();
|
||||
DeleteFromDB(GetOwner()->GetGUIDLow());
|
||||
|
||||
@@ -879,6 +880,7 @@ void AchievementMgr<Guild>::Reset()
|
||||
if (AchievementCriteriaEntry const* criteria = sAchievementMgr->GetAchievementCriteria(m_criteriaProgress.begin()->first))
|
||||
RemoveCriteriaProgress(criteria);
|
||||
|
||||
_achievementPoints = 0;
|
||||
m_completedAchievements.clear();
|
||||
DeleteFromDB(GetOwner()->GetId());
|
||||
}
|
||||
@@ -1310,19 +1312,11 @@ void AchievementMgr<T>::UpdateAchievementCriteria(AchievementCriteriaTypes type,
|
||||
SetCriteriaProgress(achievementCriteria, referencePlayer->GetMoney(), referencePlayer, PROGRESS_HIGHEST);
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS:
|
||||
{
|
||||
if (!miscValue1)
|
||||
{
|
||||
uint32 points = 0;
|
||||
for (CompletedAchievementMap::iterator itr = m_completedAchievements.begin(); itr != m_completedAchievements.end(); ++itr)
|
||||
if (AchievementEntry const* pAchievement = sAchievementMgr->GetAchievement(itr->first))
|
||||
points += pAchievement->points;
|
||||
SetCriteriaProgress(achievementCriteria, points, referencePlayer, PROGRESS_SET);
|
||||
}
|
||||
SetCriteriaProgress(achievementCriteria, _achievementPoints, referencePlayer, PROGRESS_SET);
|
||||
else
|
||||
SetCriteriaProgress(achievementCriteria, miscValue1, referencePlayer, PROGRESS_ACCUMULATE);
|
||||
break;
|
||||
}
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING:
|
||||
{
|
||||
uint32 reqTeamType = achievementCriteria->highest_team_rating.teamtype;
|
||||
@@ -1387,10 +1381,8 @@ void AchievementMgr<T>::UpdateAchievementCriteria(AchievementCriteriaTypes type,
|
||||
break;
|
||||
}
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL:
|
||||
{
|
||||
SetCriteriaProgress(achievementCriteria, referencePlayer->GetGuildLevel(), referencePlayer, PROGRESS_SET);
|
||||
SetCriteriaProgress(achievementCriteria, miscValue1, referencePlayer);
|
||||
break;
|
||||
}
|
||||
// FIXME: not triggered in code as result, need to implement
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID:
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA:
|
||||
@@ -1466,7 +1458,7 @@ bool AchievementMgr<T>::IsCompletedCriteria(AchievementCriteriaEntry const* achi
|
||||
if (!progress)
|
||||
return false;
|
||||
|
||||
switch (achievementCriteria->type)
|
||||
switch (AchievementCriteriaTypes(achievementCriteria->type))
|
||||
{
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_WIN_BG:
|
||||
return progress->counter >= achievementCriteria->win_bg.winCount;
|
||||
@@ -1604,6 +1596,7 @@ bool AchievementMgr<T>::IsCompletedCriteria(AchievementCriteriaEntry const* achi
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1704,7 +1697,8 @@ void AchievementMgr<T>::SetCriteriaProgress(AchievementCriteriaEntry const* entr
|
||||
if (entry->timeLimit && timedIter == m_timedAchievements.end())
|
||||
return;
|
||||
|
||||
sLog->outDebug(LOG_FILTER_ACHIEVEMENTSYS, "AchievementMgr::SetCriteriaProgress(%u, %u) for (%s GUID: "UI64FMTD")", entry->ID, changeValue, GetLogNameForGuid(GetOwner()->GetGUID()), GetOwner()->GetGUID());
|
||||
sLog->outDebug(LOG_FILTER_ACHIEVEMENTSYS, "SetCriteriaProgress(%u, %u) for (%s GUID: %u)",
|
||||
entry->ID, changeValue, GetLogNameForGuid(GetOwner()->GetGUID()), GUID_LOPART(GetOwner()->GetGUID()));
|
||||
|
||||
CriteriaProgress* progress = GetCriteriaProgress(entry);
|
||||
if (!progress)
|
||||
@@ -1841,8 +1835,8 @@ void AchievementMgr<T>::RemoveTimedAchievement(AchievementCriteriaTimedTypes typ
|
||||
}
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void AchievementMgr<T>::CompletedAchievement(AchievementEntry const* achievement, Player* referencePlayer)
|
||||
template<>
|
||||
void AchievementMgr<Player>::CompletedAchievement(AchievementEntry const* achievement, Player* referencePlayer)
|
||||
{
|
||||
sLog->outInfo(LOG_FILTER_ACHIEVEMENTSYS, "AchievementMgr::CompletedAchievement(%u)", achievement->ID);
|
||||
|
||||
@@ -1869,6 +1863,8 @@ void AchievementMgr<T>::CompletedAchievement(AchievementEntry const* achievement
|
||||
if (!(achievement->flags & ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
|
||||
sAchievementMgr->SetRealmCompleted(achievement);
|
||||
|
||||
_achievementPoints += achievement->points;
|
||||
|
||||
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, 0, 0, NULL, referencePlayer);
|
||||
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->points, 0, NULL, referencePlayer);
|
||||
|
||||
@@ -1955,6 +1951,8 @@ void AchievementMgr<Guild>::CompletedAchievement(AchievementEntry const* achieve
|
||||
|
||||
sAchievementMgr->SetRealmCompleted(achievement);
|
||||
|
||||
_achievementPoints += achievement->points;
|
||||
|
||||
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, 0, 0, NULL, referencePlayer);
|
||||
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->points, 0, NULL, referencePlayer);
|
||||
}
|
||||
@@ -2054,11 +2052,6 @@ void AchievementMgr<Guild>::SendAllAchievementData(Player* receiver) const
|
||||
receiver->GetSession()->SendPacket(&data);
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void AchievementMgr<T>::SendAchievementInfo(Player* receiver, uint32 achievementId /*= 0*/) const
|
||||
{
|
||||
}
|
||||
|
||||
template<>
|
||||
void AchievementMgr<Player>::SendAchievementInfo(Player* receiver, uint32 /*achievementId = 0 */) const
|
||||
{
|
||||
@@ -2355,6 +2348,7 @@ bool AchievementMgr<T>::RequirementsSatisfied(AchievementCriteriaEntry const *ac
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS:
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS:
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED:
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL:
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED:
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED:
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL:
|
||||
|
||||
@@ -243,6 +243,7 @@ class AchievementMgr
|
||||
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0);
|
||||
void RemoveTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry); // used for quest and scripted timed achievements
|
||||
|
||||
uint32 GetAchievementPoints() const { return _achievementPoints; }
|
||||
private:
|
||||
enum ProgressType { PROGRESS_SET, PROGRESS_ACCUMULATE, PROGRESS_HIGHEST };
|
||||
void SendAchievementEarned(AchievementEntry const* achievement) const;
|
||||
@@ -265,6 +266,7 @@ class AchievementMgr
|
||||
CompletedAchievementMap m_completedAchievements;
|
||||
typedef std::map<uint32, uint32> TimedAchievementMap;
|
||||
TimedAchievementMap m_timedAchievements; // Criteria id/time left in MS
|
||||
uint32 _achievementPoints;
|
||||
};
|
||||
|
||||
class AchievementGlobalMgr
|
||||
|
||||
@@ -180,7 +180,7 @@ void BattlegroundMgr::Update(uint32 diff)
|
||||
}
|
||||
}
|
||||
|
||||
void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket *data, Battleground *bg, Player * pPlayer, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 arenatype, uint8 uiFrame)
|
||||
void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket *data, Battleground *bg, Player * pPlayer, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 /*arenatype*/, uint8 /*uiFrame*/)
|
||||
{
|
||||
if (!bg)
|
||||
StatusID = STATUS_NONE;
|
||||
|
||||
@@ -849,8 +849,8 @@ Player::Player(WorldSession* session): Unit(true), m_achievementMgr(this), m_rep
|
||||
|
||||
_activeCheats = CHEAT_NONE;
|
||||
|
||||
memset(_voidStorageItems, NULL, VOID_STORAGE_MAX_SLOT * sizeof(VoidStorageItem*));
|
||||
memset(_CUFProfiles, NULL, MAX_CUF_PROFILES * sizeof(CUFProfile*));
|
||||
memset(_voidStorageItems, 0, VOID_STORAGE_MAX_SLOT * sizeof(VoidStorageItem*));
|
||||
memset(_CUFProfiles, 0, MAX_CUF_PROFILES * sizeof(CUFProfile*));
|
||||
}
|
||||
|
||||
Player::~Player()
|
||||
@@ -6261,7 +6261,7 @@ void Player::UpdateSkillsForLevel()
|
||||
uint16 field = itr->second.pos / 2;
|
||||
uint8 offset = itr->second.pos & 1; // itr->second.pos % 2
|
||||
|
||||
uint16 val = GetUInt16Value(PLAYER_SKILL_RANK_0 + field, offset);
|
||||
//uint16 val = GetUInt16Value(PLAYER_SKILL_RANK_0 + field, offset);
|
||||
uint16 max = GetUInt16Value(PLAYER_SKILL_MAX_RANK_0 + field, offset);
|
||||
|
||||
/// update only level dependent max skill values
|
||||
@@ -7219,7 +7219,7 @@ void Player::_LoadCurrency(PreparedQueryResult result)
|
||||
uint16 currencyID = fields[0].GetUInt16();
|
||||
|
||||
CurrencyTypesEntry const* currency = sCurrencyTypesStore.LookupEntry(currencyID);
|
||||
if (!currencyID)
|
||||
if (!currency)
|
||||
continue;
|
||||
|
||||
PlayerCurrency cur;
|
||||
|
||||
@@ -9900,7 +9900,7 @@ bool Unit::isSpellCrit(Unit* victim, SpellInfo const* spellProto, SpellSchoolMas
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 Unit::SpellCriticalDamageBonus(SpellInfo const* spellProto, uint32 damage, Unit* victim)
|
||||
uint32 Unit::SpellCriticalDamageBonus(SpellInfo const* spellProto, uint32 damage, Unit* /*victim*/)
|
||||
{
|
||||
// Calculate critical bonus
|
||||
int32 crit_bonus = damage;
|
||||
@@ -9937,7 +9937,7 @@ uint32 Unit::SpellCriticalDamageBonus(SpellInfo const* spellProto, uint32 damage
|
||||
return crit_bonus;
|
||||
}
|
||||
|
||||
uint32 Unit::SpellCriticalHealingBonus(SpellInfo const* /*spellProto*/, uint32 damage, Unit* victim)
|
||||
uint32 Unit::SpellCriticalHealingBonus(SpellInfo const* /*spellProto*/, uint32 damage, Unit* /*victim*/)
|
||||
{
|
||||
// Calculate critical bonus
|
||||
int32 crit_bonus = damage;
|
||||
@@ -10459,7 +10459,7 @@ uint32 Unit::MeleeDamageBonusDone(Unit* victim, uint32 pdamage, WeaponAttackType
|
||||
AddPctN(DoneTotalMod, GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC, spellProto->Mechanic));
|
||||
|
||||
// done scripted mod (take it from owner)
|
||||
Unit* owner = GetOwner() ? GetOwner() : this;
|
||||
// Unit* owner = GetOwner() ? GetOwner() : this;
|
||||
// AuraEffectList const& mOverrideClassScript = owner->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS);
|
||||
|
||||
float tmpDamage = float(int32(pdamage) + DoneFlatBenefit) * DoneTotalMod;
|
||||
|
||||
@@ -120,13 +120,10 @@ inline uint32 Guild::LogHolder::GetNextGUID()
|
||||
return m_nextGUID;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// EventLogEntry
|
||||
void Guild::EventLogEntry::SaveToDB(SQLTransaction& trans) const
|
||||
{
|
||||
PreparedStatement* stmt = NULL;
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG);
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG);
|
||||
stmt->setUInt32(0, m_guildId);
|
||||
stmt->setUInt32(1, m_guid);
|
||||
CharacterDatabase.ExecuteOrAppend(trans, stmt);
|
||||
@@ -195,14 +192,12 @@ void Guild::EventLogEntry::WritePacket(WorldPacket& data, ByteBuffer& content) c
|
||||
content.WriteByteSeq(guid1[1]);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// BankEventLogEntry
|
||||
void Guild::BankEventLogEntry::SaveToDB(SQLTransaction& trans) const
|
||||
{
|
||||
PreparedStatement* stmt = NULL;
|
||||
uint8 index = 0;
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_EVENTLOG);
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_EVENTLOG);
|
||||
stmt->setUInt32( index, m_guildId);
|
||||
stmt->setUInt32(++index, m_guid);
|
||||
stmt->setUInt8 (++index, m_bankTabId);
|
||||
@@ -270,7 +265,6 @@ void Guild::BankEventLogEntry::WritePacket(WorldPacket& data, ByteBuffer& conten
|
||||
content << uint8(m_destTabId);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// RankInfo
|
||||
void Guild::RankInfo::LoadFromDB(Field* fields)
|
||||
{
|
||||
@@ -351,16 +345,15 @@ void Guild::RankInfo::SetBankTabSlotsAndRights(uint8 tabId, GuildBankRightsAndSl
|
||||
if (m_rankId == GR_GUILDMASTER) // Prevent loss of leader rights
|
||||
rightsAndSlots.SetGuildMasterValues();
|
||||
|
||||
if (m_bankTabRightsAndSlots[tabId].IsEqual(rightsAndSlots))
|
||||
GuildBankRightsAndSlots& guildBR = m_bankTabRightsAndSlots[tabId];
|
||||
if (guildBR.IsEqual(rightsAndSlots))
|
||||
return;
|
||||
|
||||
m_bankTabRightsAndSlots[tabId] = rightsAndSlots;
|
||||
guildBR = rightsAndSlots;
|
||||
|
||||
if (saveToDB)
|
||||
{
|
||||
PreparedStatement* stmt = NULL;
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHT);
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHT);
|
||||
stmt->setUInt32(0, m_guildId);
|
||||
stmt->setUInt8 (1, tabId);
|
||||
stmt->setUInt8 (2, m_rankId);
|
||||
@@ -370,8 +363,8 @@ void Guild::RankInfo::SetBankTabSlotsAndRights(uint8 tabId, GuildBankRightsAndSl
|
||||
stmt->setUInt32(0, m_guildId);
|
||||
stmt->setUInt8 (1, tabId);
|
||||
stmt->setUInt8 (2, m_rankId);
|
||||
stmt->setUInt8 (3, m_bankTabRightsAndSlots[tabId].rights);
|
||||
stmt->setUInt32(4, m_bankTabRightsAndSlots[tabId].slots);
|
||||
stmt->setUInt8 (3, guildBR.rights);
|
||||
stmt->setUInt32(4, guildBR.slots);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RANK_BANK_TIME0 + tabId);
|
||||
@@ -381,7 +374,6 @@ void Guild::RankInfo::SetBankTabSlotsAndRights(uint8 tabId, GuildBankRightsAndSl
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// BankTab
|
||||
bool Guild::BankTab::LoadFromDB(Field* fields)
|
||||
{
|
||||
@@ -414,7 +406,7 @@ bool Guild::BankTab::LoadItemFromDB(Field* fields)
|
||||
{
|
||||
sLog->outError(LOG_FILTER_GUILD, "Item (GUID %u, id: %u) not found in item_instance, deleting from guild bank!", itemGuid, itemEntry);
|
||||
|
||||
PreparedStatement *stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM);
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM);
|
||||
stmt->setUInt32(0, m_guildId);
|
||||
stmt->setUInt8 (1, m_tabId);
|
||||
stmt->setUInt8 (2, slotId);
|
||||
@@ -483,9 +475,7 @@ bool Guild::BankTab::SetItem(SQLTransaction& trans, uint8 slotId, Item* item)
|
||||
|
||||
m_items[slotId] = item;
|
||||
|
||||
PreparedStatement* stmt = NULL;
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_ITEM);
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_ITEM);
|
||||
stmt->setUInt32(0, m_guildId);
|
||||
stmt->setUInt8 (1, m_tabId);
|
||||
stmt->setUInt8 (2, slotId);
|
||||
@@ -521,7 +511,6 @@ void Guild::BankTab::SendText(Guild const* guild, WorldSession* session) const
|
||||
guild->BroadcastPacket(&data);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Member
|
||||
void Guild::Member::SetStats(Player* player)
|
||||
{
|
||||
@@ -633,6 +622,7 @@ bool Guild::Member::CheckStats() const
|
||||
sLog->outError(LOG_FILTER_GUILD, "Player (GUID: %u) has a broken data in field `characters`.`level`, deleting him from guild!", GUID_LOPART(m_guid));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (m_class < CLASS_WARRIOR || m_class >= MAX_CLASSES)
|
||||
{
|
||||
sLog->outError(LOG_FILTER_GUILD, "Player (GUID: %u) has a broken data in field `characters`.`class`, deleting him from guild!", GUID_LOPART(m_guid));
|
||||
@@ -706,8 +696,12 @@ inline void Guild::Member::ResetMoneyTime()
|
||||
m_bankRemaining[GUILD_BANK_MAX_TABS].resetTime = 0;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// EmblemInfo
|
||||
void EmblemInfo::ReadPacket(WorldPacket& recv)
|
||||
{
|
||||
recv >> m_style >> m_color >> m_borderStyle >> m_borderColor >> m_backgroundColor;
|
||||
}
|
||||
|
||||
void EmblemInfo::LoadFromDB(Field* fields)
|
||||
{
|
||||
m_style = fields[3].GetUInt8();
|
||||
@@ -738,7 +732,6 @@ void EmblemInfo::SaveToDB(uint32 guildId) const
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// MoveItemData
|
||||
bool Guild::MoveItemData::CheckItem(uint32& splitedAmount)
|
||||
{
|
||||
@@ -786,7 +779,6 @@ inline void Guild::MoveItemData::CopySlots(SlotIds& ids) const
|
||||
ids.insert(uint8(itr->pos));
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// PlayerMoveItemData
|
||||
bool Guild::PlayerMoveItemData::InitItem()
|
||||
{
|
||||
@@ -846,7 +838,6 @@ inline InventoryResult Guild::PlayerMoveItemData::CanStore(Item* pItem, bool swa
|
||||
return m_pPlayer->CanStoreItem(m_container, m_slotId, m_vec, pItem, swap);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// BankMoveItemData
|
||||
bool Guild::BankMoveItemData::InitItem()
|
||||
{
|
||||
@@ -1059,10 +1050,9 @@ InventoryResult Guild::BankMoveItemData::CanStore(Item* pItem, bool swap)
|
||||
return EQUIP_ERR_BANK_FULL;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Guild
|
||||
Guild::Guild() : m_id(0), m_leaderGuid(0), m_createdDate(0), m_accountsNumber(0), m_bankMoney(0), m_eventLog(NULL),
|
||||
m_achievementMgr(this), _level(1), _experience(0), _todayExperience(0), _newsLog(this)
|
||||
m_achievementMgr(this), _newsLog(this), _level(1), _experience(0), _todayExperience(0)
|
||||
{
|
||||
memset(&m_bankEventLog, 0, (GUILD_BANK_MAX_TABS + 1) * sizeof(LogHolder*));
|
||||
}
|
||||
@@ -1213,8 +1203,6 @@ void Guild::SaveToDB()
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// HANDLE CLIENT COMMANDS
|
||||
void Guild::HandleRoster(WorldSession* session /*= NULL*/)
|
||||
{
|
||||
ByteBuffer memberData(100);
|
||||
@@ -1565,6 +1553,7 @@ void Guild::HandleInviteMember(WorldSession* session, const std::string& name)
|
||||
// Do not show invitations from ignored players
|
||||
if (pInvitee->GetSocial()->HasIgnore(player->GetGUIDLow()))
|
||||
return;
|
||||
|
||||
if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && pInvitee->GetTeam() != player->GetTeam())
|
||||
{
|
||||
SendCommandResult(session, GUILD_INVITE_S, ERR_GUILD_NOT_ALLIED, name);
|
||||
@@ -1695,7 +1684,7 @@ void Guild::HandleLeaveMember(WorldSession* session)
|
||||
_LogEvent(GUILD_EVENT_LOG_LEAVE_GUILD, player->GetGUIDLow());
|
||||
_BroadcastEvent(GE_LEFT, player->GetGUID(), player->GetName());
|
||||
|
||||
SendCommandResult(session, GUILD_QUIT_S, ERR_PLAYER_NO_MORE_IN_GUILD, m_name);
|
||||
SendCommandResult(session, GUILD_QUIT_S, ERR_GUILD_COMMAND_SUCCESS, m_name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1726,7 +1715,7 @@ void Guild::HandleRemoveMember(WorldSession* session, uint64 guid)
|
||||
}
|
||||
}
|
||||
else if (removedPlayer)
|
||||
SendCommandResult(session, GUILD_QUIT_S, ERR_PLAYER_NO_MORE_IN_GUILD, removedPlayer->GetName());
|
||||
SendCommandResult(session, GUILD_QUIT_S, ERR_GUILD_COMMAND_SUCCESS, removedPlayer->GetName());
|
||||
}
|
||||
|
||||
void Guild::HandleUpdateMemberRank(WorldSession* session, uint64 targetGuid, bool demote)
|
||||
@@ -1969,8 +1958,6 @@ void Guild::HandleGuildPartyRequest(WorldSession* session)
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent (SMSG_GUILD_PARTY_STATE_RESPONSE)");
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Send data to client
|
||||
void Guild::SendEventLog(WorldSession* session) const
|
||||
{
|
||||
WorldPacket data(SMSG_GUILD_EVENT_LOG_QUERY_RESULT, 1 + m_eventLog->GetSize() * (1 + 8 + 4));
|
||||
@@ -2005,7 +1992,7 @@ void Guild::SendBankList(WorldSession* session, uint8 tabId, bool withContent, b
|
||||
if (withContent && _MemberHasTabRights(session->GetPlayer()->GetGUID(), tabId, GUILD_BANK_RIGHT_VIEW_TAB))
|
||||
if (BankTab const* tab = GetBankTab(tabId))
|
||||
for (uint8 slotId = 0; slotId < GUILD_BANK_MAX_SLOTS; ++slotId)
|
||||
if (Item* tabItem = tab->GetItem(slotId))
|
||||
if (tab->GetItem(slotId))
|
||||
++itemCount;
|
||||
|
||||
data.WriteBits(itemCount, 20);
|
||||
@@ -2173,7 +2160,6 @@ void Guild::SendGuildReputationWeeklyCap(WorldSession* session) const
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Loading methods
|
||||
bool Guild::LoadFromDB(Field* fields)
|
||||
{
|
||||
@@ -2377,7 +2363,6 @@ bool Guild::Validate()
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Broadcasts
|
||||
void Guild::BroadcastToGuild(WorldSession* session, bool officerOnly, const std::string& msg, uint32 language) const
|
||||
{
|
||||
@@ -2423,7 +2408,6 @@ void Guild::BroadcastPacket(WorldPacket* packet) const
|
||||
player->GetSession()->SendPacket(packet);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Members handling
|
||||
bool Guild::AddMember(uint64 guid, uint8 rankId)
|
||||
{
|
||||
@@ -2521,6 +2505,7 @@ void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked)
|
||||
else if (!newLeader || newLeader->GetRankId() > i->second->GetRankId())
|
||||
newLeader = i->second;
|
||||
}
|
||||
|
||||
if (!newLeader)
|
||||
{
|
||||
Disband();
|
||||
@@ -2540,7 +2525,7 @@ void Guild::DeleteMember(uint64 guid, bool isDisbanding, bool isKicked)
|
||||
_BroadcastEvent(GE_LEFT, guid, oldLeader->GetName().c_str());
|
||||
}
|
||||
}
|
||||
// Call script on remove before member is acutally removed from guild (and database)
|
||||
// Call script on remove before member is actually removed from guild (and database)
|
||||
sScriptMgr->OnGuildRemoveMember(this, player, isDisbanding, isKicked);
|
||||
|
||||
if (Member* member = GetMember(guid))
|
||||
@@ -2581,7 +2566,6 @@ bool Guild::IsMember(uint64 guid)
|
||||
return itr != m_members.end();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Bank (items move)
|
||||
void Guild::SwapItems(Player* player, uint8 tabId, uint8 slotId, uint8 destTabId, uint8 destSlotId, uint32 splitedAmount)
|
||||
{
|
||||
@@ -2610,7 +2594,6 @@ void Guild::SwapItemsWithInventory(Player* player, bool toChar, uint8 tabId, uin
|
||||
_MoveItems(&charData, &bankData, splitedAmount);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Bank tabs
|
||||
void Guild::SetBankTabText(uint8 tabId, const std::string& text)
|
||||
{
|
||||
@@ -2621,7 +2604,6 @@ void Guild::SetBankTabText(uint8 tabId, const std::string& text)
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Private methods
|
||||
void Guild::_CreateLogHolders()
|
||||
{
|
||||
@@ -2676,12 +2658,11 @@ void Guild::_CreateDefaultGuildRanks(LocaleConstant loc)
|
||||
|
||||
void Guild::_CreateRank(const std::string& name, uint32 rights)
|
||||
{
|
||||
if (_GetRanksSize() >= GUILD_RANKS_MAX_COUNT)
|
||||
uint32 newRankId = _GetRanksSize();
|
||||
if (newRankId >= GUILD_RANKS_MAX_COUNT)
|
||||
return;
|
||||
|
||||
// Ranks represent sequence 0, 1, 2, ... where 0 means guildmaster
|
||||
uint32 newRankId = _GetRanksSize();
|
||||
|
||||
RankInfo info(m_id, newRankId, name, rights, 0);
|
||||
m_ranks.push_back(info);
|
||||
|
||||
@@ -2923,7 +2904,7 @@ void Guild::_MoveItems(MoveItemData* pSrc, MoveItemData* pDest, uint32 splitedAm
|
||||
/*
|
||||
if (pItemSrc->GetCount() == 0)
|
||||
{
|
||||
sLog->outFatal(LOG_FILTER_GENERAL, "Guild::SwapItems: Player %s(GUIDLow: %u) tried to move item %u from tab %u slot %u to tab %u slot %u, but item %u has a stack of zero!",
|
||||
sLog->outFatal(LOG_FILTER_GUILD, "Guild::SwapItems: Player %s(GUIDLow: %u) tried to move item %u from tab %u slot %u to tab %u slot %u, but item %u has a stack of zero!",
|
||||
player->GetName(), player->GetGUIDLow(), pItemSrc->GetEntry(), tabId, slotId, destTabId, destSlotId, pItemSrc->GetEntry());
|
||||
//return; // Commented out for now, uncomment when it's verified that this causes a crash!!
|
||||
}
|
||||
@@ -3133,8 +3114,7 @@ void Guild::_BroadcastEvent(GuildEvents guildEvent, uint64 guid, const char* par
|
||||
data << uint64(guid);
|
||||
|
||||
BroadcastPacket(&data);
|
||||
|
||||
sLog->outDebug(LOG_FILTER_GUILD, "WORLD: Sent SMSG_GUILD_EVENT");
|
||||
sLog->outDebug(LOG_FILTER_GUILD, "SMSG_GUILD_EVENT [Broadcast] Event: %u", guildEvent);
|
||||
}
|
||||
|
||||
void Guild::SendGuildRanksUpdate(uint64 setterGuid, uint64 targetGuid, uint32 rank)
|
||||
@@ -3246,7 +3226,7 @@ void Guild::GiveXP(uint32 xp, Player* source)
|
||||
|
||||
void Guild::SendGuildXP(WorldSession* session) const
|
||||
{
|
||||
Member const* member = GetMember(session->GetGuidLow());
|
||||
//Member const* member = GetMember(session->GetGuidLow());
|
||||
|
||||
WorldPacket data(SMSG_GUILD_XP, 40);
|
||||
data << uint64(/*member ? member->GetTotalActivity() :*/ 0);
|
||||
|
||||
@@ -38,7 +38,8 @@ enum GuildMisc
|
||||
GUILD_RANK_NONE = 0xFF,
|
||||
GUILD_WITHDRAW_MONEY_UNLIMITED = 0xFFFFFFFF,
|
||||
GUILD_WITHDRAW_SLOT_UNLIMITED = 0xFFFFFFFF,
|
||||
GUILD_EVENT_LOG_GUID_UNDEFINED = 0xFFFFFFFF
|
||||
GUILD_EVENT_LOG_GUID_UNDEFINED = 0xFFFFFFFF,
|
||||
GUILD_EXPERIENCE_UNCAPPED_LEVEL = 20 ///> Hardcoded in client, starting from this level, guild daily experience gain is unlimited.
|
||||
};
|
||||
|
||||
enum GuildDefaultRanks
|
||||
@@ -88,7 +89,7 @@ enum GuildCommandType
|
||||
|
||||
enum GuildCommandError
|
||||
{
|
||||
ERR_PLAYER_NO_MORE_IN_GUILD = 0x00,
|
||||
ERR_GUILD_COMMAND_SUCCESS = 0x00,
|
||||
ERR_GUILD_INTERNAL = 0x01,
|
||||
ERR_ALREADY_IN_GUILD = 0x02,
|
||||
ERR_ALREADY_IN_GUILD_S = 0x03,
|
||||
@@ -138,7 +139,7 @@ enum GuildEvents
|
||||
GE_RANK_CREATED = 12,
|
||||
GE_RANK_DELETED = 13,
|
||||
GE_RANK_ORDER_CHANGED = 14,
|
||||
GE_FOUNDER = 15, // At guild creation - Set founder
|
||||
GE_FOUNDER = 15,
|
||||
GE_SIGNED_ON = 16,
|
||||
GE_SIGNED_OFF = 17,
|
||||
GE_GUILDBANKBAGSLOTS_CHANGED = 18,
|
||||
@@ -259,9 +260,6 @@ uint32 const MinNewsItemLevel[MAX_CONTENT] = { 61, 90, 200, 353 };
|
||||
|
||||
typedef std::map<uint32, GuildNewsEntry> GuildNewsLogMap;
|
||||
|
||||
#define GUILD_EXPERIENCE_UNCAPPED_LEVEL 20 ///> Hardcoded in client, starting from this level, guild daily experience gain is unlimited.
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Emblem info
|
||||
class EmblemInfo
|
||||
{
|
||||
@@ -270,7 +268,7 @@ public:
|
||||
|
||||
void LoadFromDB(Field* fields);
|
||||
void SaveToDB(uint32 guildId) const;
|
||||
void ReadPacket(WorldPacket& recv) { recv >> m_style >> m_color >> m_borderStyle >> m_borderColor >> m_backgroundColor; }
|
||||
void ReadPacket(WorldPacket& recv);
|
||||
void WritePacket(WorldPacket& data) const;
|
||||
|
||||
uint32 GetStyle() const { return m_style; }
|
||||
@@ -623,6 +621,7 @@ private:
|
||||
Item* GetItem(bool isCloned = false) const { return isCloned ? m_pClonedItem : m_pItem; }
|
||||
uint8 GetContainer() const { return m_container; }
|
||||
uint8 GetSlotId() const { return m_slotId; }
|
||||
|
||||
protected:
|
||||
virtual InventoryResult CanStore(Item* pItem, bool swap) = 0;
|
||||
|
||||
|
||||
@@ -70,10 +70,10 @@ struct MembershipRequest
|
||||
}
|
||||
|
||||
MembershipRequest(uint32 playerGUID, uint32 guildId, uint32 availability, uint32 classRoles, uint32 interests, std::string& comment, time_t submitTime) :
|
||||
_playerGUID(playerGUID), _guildId(guildId), _availability(availability), _classRoles(classRoles),
|
||||
_interests(interests), _time(submitTime), _comment(comment) {}
|
||||
_comment(comment), _guildId(guildId), _playerGUID(playerGUID), _availability(availability),
|
||||
_classRoles(classRoles), _interests(interests), _time(submitTime) {}
|
||||
|
||||
MembershipRequest() : _playerGUID(0), _guildId(0), _availability(0), _classRoles(0),
|
||||
MembershipRequest() : _guildId(0), _playerGUID(0), _availability(0), _classRoles(0),
|
||||
_interests(0), _time(time(NULL)) {}
|
||||
|
||||
uint32 GetGuildId() const { return _guildId; }
|
||||
@@ -164,14 +164,14 @@ struct LFGuildSettings : public LFGuildPlayer
|
||||
|
||||
LFGuildSettings(bool listed, TeamId team) : LFGuildPlayer(), _listed(listed), _team(team) {}
|
||||
|
||||
LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level) : _listed(listed),
|
||||
LFGuildPlayer(guid, role, availability, interests, level), _team(team) {}
|
||||
LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level) :
|
||||
LFGuildPlayer(guid, role, availability, interests, level), _listed(listed), _team(team) {}
|
||||
|
||||
LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) : _listed(listed),
|
||||
LFGuildPlayer(guid, role, availability, interests, level, comment), _team(team) {}
|
||||
LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) :
|
||||
LFGuildPlayer(guid, role, availability, interests, level, comment), _listed(listed), _team(team) {}
|
||||
|
||||
LFGuildSettings(LFGuildSettings const& settings) : _listed(settings.IsListed()), _team(settings.GetTeam()),
|
||||
LFGuildPlayer(settings) {}
|
||||
LFGuildSettings(LFGuildSettings const& settings) :
|
||||
LFGuildPlayer(settings), _listed(settings.IsListed()), _team(settings.GetTeam()) {}
|
||||
|
||||
|
||||
bool IsListed() const { return _listed; }
|
||||
@@ -179,8 +179,8 @@ struct LFGuildSettings : public LFGuildPlayer
|
||||
|
||||
TeamId GetTeam() const { return _team; }
|
||||
private:
|
||||
TeamId _team;
|
||||
bool _listed;
|
||||
TeamId _team;
|
||||
};
|
||||
|
||||
typedef std::map<uint32 /* guildGuid */, LFGuildSettings> LFGuildStore;
|
||||
|
||||
@@ -787,7 +787,7 @@ void WorldSession::HandleGuildRewardsQueryOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
recvPacket.read_skip<uint32>(); // Unk
|
||||
|
||||
if (Guild* guild = sGuildMgr->GetGuildById(_player->GetGuildId()))
|
||||
if (sGuildMgr->GetGuildById(_player->GetGuildId()))
|
||||
{
|
||||
std::vector<GuildReward> const& rewards = sGuildMgr->GetGuildRewards();
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ class boss_mandokir : public CreatureScript
|
||||
{
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -222,7 +222,7 @@ class spell_warr_execute : public SpellScriptLoader
|
||||
void HandleEffect(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (Unit* target = GetHitUnit())
|
||||
if (GetHitUnit())
|
||||
{
|
||||
SpellInfo const* spellInfo = GetSpellInfo();
|
||||
int32 rageUsed = std::min<int32>(200 - spellInfo->CalcPowerCost(caster, SpellSchoolMask(spellInfo->SchoolMask)), caster->GetPower(POWER_RAGE));
|
||||
|
||||
Reference in New Issue
Block a user