*Wintergrasp: allow player to get promotion by group member's kill. Thanks to iadus3
--HG-- branch : trunk
This commit is contained in:
+33
-21
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user