diff options
author | Subv <s.v.h21@hotmail.com> | 2012-09-10 18:43:06 -0500 |
---|---|---|
committer | Subv <s.v.h21@hotmail.com> | 2012-09-10 18:43:06 -0500 |
commit | dd9d7e6870f32a76da99f00d9c16812332a9e2f8 (patch) | |
tree | 9a5f5c05da3c20735bf4d7617e223dc0f13340a4 /src | |
parent | 7bfd36ae80369b897c7159024c468074e407178d (diff) |
Core/Spells: Fixed SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 9 | ||||
-rwxr-xr-x | src/server/game/Guilds/Guild.h | 2 | ||||
-rwxr-xr-x | src/server/game/Handlers/LootHandler.cpp | 20 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 6 |
4 files changed, 29 insertions, 8 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 92191551858..13c85cc954f 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1851,7 +1851,7 @@ void Guild::HandleRemoveRank(WorldSession* session, uint32 rankId) } } -void Guild::HandleMemberDepositMoney(WorldSession* session, uint32 amount) +void Guild::HandleMemberDepositMoney(WorldSession* session, uint32 amount, bool cashFlow /*=false*/) { Player* player = session->GetPlayer(); @@ -1872,11 +1872,12 @@ void Guild::HandleMemberDepositMoney(WorldSession* session, uint32 amount) player->GetName(), player->GetSession()->GetAccountId(), amount, m_id); } // Log guild bank event - _LogBankEvent(trans, GUILD_BANK_LOG_DEPOSIT_MONEY, uint8(0), player->GetGUIDLow(), amount); + _LogBankEvent(trans, cashFlow ? GUILD_BANK_LOG_CASH_FLOW_DEPOSIT : GUILD_BANK_LOG_DEPOSIT_MONEY, uint8(0), player->GetGUIDLow(), amount); CharacterDatabase.CommitTransaction(trans); - - SendBankList(session, 0, false, false); + + if (!cashFlow) + SendBankList(session, 0, false, false); } bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool repair) diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index f644e5d3592..6180a2ea355 100755 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -718,7 +718,7 @@ public: void HandleSetMemberRank(WorldSession* session, uint64 targetGuid, uint64 setterGuid, uint32 rank); void HandleAddNewRank(WorldSession* session, const std::string& name); void HandleRemoveRank(WorldSession* session, uint32 rankId); - void HandleMemberDepositMoney(WorldSession* session, uint32 amount); + void HandleMemberDepositMoney(WorldSession* session, uint32 amount, bool cashFlow = false); bool HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool repair = false); void HandleMemberLogout(WorldSession* session); void HandleDisband(WorldSession* session); diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index aa4b7b85023..897f03d0850 100755 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -181,9 +181,19 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket& /*recvData*/) (*i)->ModifyMoney(goldPerPlayer); (*i)->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, goldPerPlayer); + uint32 guildGold = 0; + + if (Guild* guild = sGuildMgr->GetGuildById((*i)->GetGuildId())) + { + guildGold = CalculatePctN(goldPerPlayer, (*i)->GetTotalAuraModifier(SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT)); + if (guildGold) + guild->HandleMemberDepositMoney(this, guildGold, true); + } + WorldPacket data(SMSG_LOOT_MONEY_NOTIFY, 4 + 1); data << uint32(goldPerPlayer); data << uint8(playersNear.size() > 1 ? 0 : 1); // Controls the text displayed in chat. 0 is "Your share is..." and 1 is "You loot..." + data << uint32(guildGold); (*i)->GetSession()->SendPacket(&data); } } @@ -192,9 +202,19 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket& /*recvData*/) player->ModifyMoney(loot->gold); player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, loot->gold); + uint32 guildGold = 0; + + if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId())) + { + guildGold = CalculatePctN(loot->gold, player->GetTotalAuraModifier(SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT)); + if (guildGold) + guild->HandleMemberDepositMoney(this, guildGold, true); + } + WorldPacket data(SMSG_LOOT_MONEY_NOTIFY, 4 + 1); data << uint32(loot->gold); data << uint8(1); // "You loot..." + data << uint32(guildGold); SendPacket(&data); } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 64025fc685f..04ad2eb99f3 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -392,7 +392,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //334 SPELL_AURA_334 &AuraEffect::HandleNULL, //335 SPELL_AURA_335 &AuraEffect::HandleNULL, //336 SPELL_AURA_MOD_FLYING_RESTRICTIONS - &AuraEffect::HandleNULL, //337 SPELL_AURA_MOD_VENDOR_ITEMS_PRICES + &AuraEffect::HandleNoImmediateEffect, //337 SPELL_AURA_MOD_VENDOR_ITEMS_PRICES &AuraEffect::HandleNoImmediateEffect, //338 SPELL_AURA_MOD_DURABILITY_LOSS &AuraEffect::HandleNULL, //339 SPELL_AURA_INCREASE_SKILL_GAIN_CHANCE &AuraEffect::HandleNULL, //340 SPELL_AURA_340 @@ -400,10 +400,10 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleModMeleeRangedSpeedPct, //342 SPELL_AURA_MOD_MELEE_RANGED_HASTE_2 &AuraEffect::HandleNULL, //343 SPELL_AURA_343 &AuraEffect::HandleNULL, //344 SPELL_AURA_MOD_AUTOATTACK_DAMAGE - &AuraEffect::HandleNULL, //345 SPELL_AURA_BYPASS_ARMOR_FOR_CASTER + &AuraEffect::HandleNoImmediateEffect, //345 SPELL_AURA_BYPASS_ARMOR_FOR_CASTER &AuraEffect::HandleNULL, //346 SPELL_AURA_PROGRESS_BAR &AuraEffect::HandleNULL, //347 SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE - &AuraEffect::HandleNULL, //348 SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT + &AuraEffect::HandleNoImmediateEffect, //348 SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT &AuraEffect::HandleNULL, //349 SPELL_AURA_MOD_CURRENCY_GAIN &AuraEffect::HandleNULL, //350 SPELL_AURA_MOD_GATHERING_ITEMS_GAINED_PERCENT &AuraEffect::HandleNULL, //351 SPELL_AURA_351 |