Fixed
Fixed it so a player will not lose money when it gets deposited to the guild bank. Added code to make sure all members of a group within loot distance will deposit money into their guild bank and not just the person who is actually looting.
This commit is contained in:
parent
46d006097e
commit
7ce511d639
1 changed files with 45 additions and 5 deletions
|
|
@ -28,17 +28,56 @@ public:
|
|||
|
||||
void OnLootMoney(Player* player, uint32 gold) override
|
||||
{
|
||||
if (Guild* guild = player->GetGuild())
|
||||
if (Group* group = player->GetGroup())
|
||||
{
|
||||
uint32 money = ((gold / 100) * gfLootMultiplier);
|
||||
uint32 membersInRange = 0;
|
||||
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next())
|
||||
{
|
||||
if (Player* member = groupRef->GetSource())
|
||||
{
|
||||
if (member->IsAtLootRewardDistance(player))
|
||||
membersInRange++;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 money = (((gold / membersInRange) / 100) * gfLootMultiplier);
|
||||
|
||||
if (money < 1 || gfLootMultiplier < 1)
|
||||
return;
|
||||
|
||||
guild->HandleMemberDepositMoney(player->GetSession(), money);
|
||||
for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next())
|
||||
{
|
||||
if (Player* member = groupRef->GetSource())
|
||||
{
|
||||
if (member->IsAtLootRewardDistance(player))
|
||||
{
|
||||
if (Guild* guild = member->GetGuild())
|
||||
{
|
||||
guild->HandleMemberDepositMoney(member->GetSession(), money);
|
||||
member->ModifyMoney(money);
|
||||
|
||||
if (gfShowInfo)
|
||||
PrintGuildFundsInformation(player, money);
|
||||
if (gfShowInfo)
|
||||
PrintGuildFundsInformation(member, money);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Guild* guild = player->GetGuild())
|
||||
{
|
||||
uint32 money = ((gold / 100) * gfLootMultiplier);
|
||||
|
||||
if (money < 1 || gfLootMultiplier < 1)
|
||||
return;
|
||||
|
||||
guild->HandleMemberDepositMoney(player->GetSession(), money);
|
||||
player->ModifyMoney(money);
|
||||
|
||||
if (gfShowInfo)
|
||||
PrintGuildFundsInformation(player, money);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -77,6 +116,7 @@ public:
|
|||
return;
|
||||
|
||||
guild->HandleMemberDepositMoney(player->GetSession(), money);
|
||||
player->ModifyMoney(money);
|
||||
|
||||
if (gfShowInfo)
|
||||
PrintGuildFundsInformation(player, money);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue