*Wintergrasp: allow player to get promotion by group member's kill. Thanks to iadus3

--HG--
branch : trunk
This commit is contained in:
megamage
2009-09-01 19:58:43 -05:00
parent 287c2b87ea
commit c926cb242c
2 changed files with 34 additions and 21 deletions
+33 -21
View File
@@ -647,6 +647,33 @@ void OPvPWintergrasp::HandlePlayerLeaveZone(Player * plr, uint32 zone)
UpdateTenacityStack(); UpdateTenacityStack();
} }
void OPvPWintergrasp::PromotePlayer(Player *killer) const
{
Aura *aur;
if(aur = killer->GetAura(SPELL_RECRUIT))
{
if(aur->GetStackAmount() >= 5)
{
killer->RemoveAura(SPELL_RECRUIT);
killer->CastSpell(killer, SPELL_CORPORAL, true);
}
else
killer->CastSpell(killer, SPELL_RECRUIT, true);
}
else if(aur = killer->GetAura(SPELL_CORPORAL))
{
if(aur->GetStackAmount() >= 5)
{
killer->RemoveAura(SPELL_CORPORAL);
killer->CastSpell(killer, SPELL_LIEUTENANT, true);
}
else
killer->CastSpell(killer, SPELL_CORPORAL, true);
}
else if(killer->HasAura(SPELL_LIEUTENANT))
killer->CastSpell(killer, SPELL_LIEUTENANT, true);
}
void OPvPWintergrasp::HandleKill(Player *killer, Unit *victim) void OPvPWintergrasp::HandleKill(Player *killer, Unit *victim)
{ {
bool ok = false; bool ok = false;
@@ -669,29 +696,14 @@ void OPvPWintergrasp::HandleKill(Player *killer, Unit *victim)
if(ok) if(ok)
{ {
Aura *aur; if(Group *pGroup = killer->GetGroup())
if(aur = killer->GetAura(SPELL_RECRUIT))
{ {
if(aur->GetStackAmount() >= 5) for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
{ if(itr->getSource()->IsAtGroupRewardDistance(victim))
killer->RemoveAura(SPELL_RECRUIT); PromotePlayer(itr->getSource());
killer->CastSpell(killer, SPELL_CORPORAL, true);
}
else
killer->CastSpell(killer, SPELL_RECRUIT, true);
} }
else if(aur = killer->GetAura(SPELL_CORPORAL)) else
{ PromotePlayer(killer);
if(aur->GetStackAmount() >= 5)
{
killer->RemoveAura(SPELL_CORPORAL);
killer->CastSpell(killer, SPELL_LIEUTENANT, true);
}
else
killer->CastSpell(killer, SPELL_CORPORAL, true);
}
else if(killer->HasAura(SPELL_LIEUTENANT))
killer->CastSpell(killer, SPELL_LIEUTENANT, true);
} }
} }
+1
View File
@@ -210,6 +210,7 @@ class OPvPWintergrasp : public OutdoorPvP
void UpdateClock(); void UpdateClock();
void UpdateClockDigit(uint32 &timer, uint32 digit, uint32 mod); void UpdateClockDigit(uint32 &timer, uint32 digit, uint32 mod);
void PromotePlayer(Player *player) const;
void UpdateTenacityStack(); void UpdateTenacityStack();
void UpdateAllWorldObject(); void UpdateAllWorldObject();
bool UpdateCreatureInfo(Creature *creature) const; bool UpdateCreatureInfo(Creature *creature) const;