aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorSubv <s.v.h21@hotmail.com>2012-09-10 18:43:06 -0500
committerSubv <s.v.h21@hotmail.com>2012-09-10 18:43:06 -0500
commitdd9d7e6870f32a76da99f00d9c16812332a9e2f8 (patch)
tree9a5f5c05da3c20735bf4d7617e223dc0f13340a4 /src/server
parent7bfd36ae80369b897c7159024c468074e407178d (diff)
Core/Spells: Fixed SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Guilds/Guild.cpp9
-rwxr-xr-xsrc/server/game/Guilds/Guild.h2
-rwxr-xr-xsrc/server/game/Handlers/LootHandler.cpp20
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp6
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