aboutsummaryrefslogtreecommitdiff
path: root/src/game/BattleGroundAV.cpp
diff options
context:
space:
mode:
authorRat <none@none>2010-05-12 21:34:07 +0200
committerRat <none@none>2010-05-12 21:34:07 +0200
commit8dfbb15b2acb2421f916f3b8fc05d952c8e043bd (patch)
tree38f9e3419384c7576f01d15a215a9268231eff7d /src/game/BattleGroundAV.cpp
parent8a60550d9dfc6602d7d06a6debd86e605d3cbab4 (diff)
added Honorable Defender buff for Alterac Valley nodes + bosses + captains
--HG-- branch : trunk
Diffstat (limited to 'src/game/BattleGroundAV.cpp')
-rw-r--r--src/game/BattleGroundAV.cpp72
1 files changed, 71 insertions, 1 deletions
diff --git a/src/game/BattleGroundAV.cpp b/src/game/BattleGroundAV.cpp
index 04faa776a9f..28cc6d3e908 100644
--- a/src/game/BattleGroundAV.cpp
+++ b/src/game/BattleGroundAV.cpp
@@ -64,12 +64,24 @@ void BattleGroundAV::HandleKillUnit(Creature *unit, Player *killer)
if (GetStatus() != STATUS_IN_PROGRESS)
return;
uint32 entry = unit->GetEntry();
+ /*
+ uint32 triggerSpawnID = 0;
+ if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN][0])
+ triggerSpawnID = AV_CPLACE_TRIGGER16;
+ else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_BOSS][0])
+ triggerSpawnID = AV_CPLACE_TRIGGER17;
+ else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN][0])
+ triggerSpawnID = AV_CPLACE_TRIGGER18;
+ else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_BOSS][0])
+ triggerSpawnID = AV_CPLACE_TRIGGER19;
+ */
if (entry == BG_AV_CreatureInfo[AV_NPC_A_BOSS][0])
{
CastSpellOnTeam(23658,HORDE); //this is a spell which finishes a quest where a player has to kill the boss
RewardReputationToTeam(729,BG_AV_REP_BOSS,HORDE);
RewardHonorToTeam(GetBonusHonor(BG_AV_KILL_BOSS),HORDE);
EndBattleGround(HORDE);
+ DelCreature(AV_CPLACE_TRIGGER17);
}
else if (entry == BG_AV_CreatureInfo[AV_NPC_H_BOSS][0])
{
@@ -77,6 +89,7 @@ void BattleGroundAV::HandleKillUnit(Creature *unit, Player *killer)
RewardReputationToTeam(730,BG_AV_REP_BOSS,ALLIANCE);
RewardHonorToTeam(GetBonusHonor(BG_AV_KILL_BOSS),ALLIANCE);
EndBattleGround(ALLIANCE);
+ DelCreature(AV_CPLACE_TRIGGER19);
}
else if (entry == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN][0])
{
@@ -95,7 +108,7 @@ void BattleGroundAV::HandleKillUnit(Creature *unit, Player *killer)
Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
if (creature)
YellToAll(creature,GetTrinityString(LANG_BG_AV_A_CAPTAIN_DEAD),LANG_UNIVERSAL);
-
+ DelCreature(AV_CPLACE_TRIGGER16);
}
else if (entry == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN][0])
{
@@ -114,6 +127,7 @@ void BattleGroundAV::HandleKillUnit(Creature *unit, Player *killer)
Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
if (creature)
YellToAll(creature,GetTrinityString(LANG_BG_AV_H_CAPTAIN_DEAD),LANG_UNIVERSAL);
+ DelCreature(AV_CPLACE_TRIGGER18);
}
else if (entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_N_4][0] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_A_4][0] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_H_4][0])
ChangeMineOwner(AV_NORTH_MINE,killer->GetTeam());
@@ -292,6 +306,38 @@ Creature* BattleGroundAV::AddAVCreature(uint16 cinfoid, uint16 type)
if (level != 0)
level += m_MaxLevel - 60; //maybe we can do this more generic for custom level-range.. actually it's blizzlike
creature->SetLevel(level);
+
+ uint32 triggerSpawnID = 0;
+ uint32 newFaction = 0;
+ if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_CAPTAIN][0])
+ {
+ triggerSpawnID = AV_CPLACE_TRIGGER16;
+ newFaction = 84;
+ }
+ else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_A_BOSS][0])
+ {
+ triggerSpawnID = AV_CPLACE_TRIGGER17;
+ newFaction = 84;
+ }
+ else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN][0])
+ {
+ triggerSpawnID = AV_CPLACE_TRIGGER18;
+ newFaction = 83;
+ }
+ else if (creature->GetEntry() == BG_AV_CreatureInfo[AV_NPC_H_BOSS][0])
+ {
+ triggerSpawnID = AV_CPLACE_TRIGGER19;
+ newFaction = 83;
+ }
+ if (triggerSpawnID && newFaction)
+ {
+ if (Creature* trigger = AddCreature(WORLD_TRIGGER,triggerSpawnID,BG_AV_CreatureInfo[creature->GetEntry()][1],BG_AV_CreaturePos[triggerSpawnID][0],BG_AV_CreaturePos[triggerSpawnID][1],BG_AV_CreaturePos[triggerSpawnID][2],BG_AV_CreaturePos[triggerSpawnID][3]))
+ {
+ trigger->setFaction(newFaction);
+ trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
+ }
+ }
+
return creature;
}
@@ -709,6 +755,26 @@ void BattleGroundAV::PopulateNode(BG_AV_Nodes node)
}
for (uint8 i=0; i<4; i++)
AddAVCreature(creatureid,c_place+i);
+
+ if (node >= BG_AV_NODES_MAX)//fail safe
+ return;
+ Creature* trigger = GetBGCreature(node + 302);//0-302 other creatures
+ if (!trigger)
+ trigger = AddCreature(WORLD_TRIGGER,node + 302,owner,BG_AV_CreaturePos[node + 302][0],BG_AV_CreaturePos[node + 302][1],BG_AV_CreaturePos[node + 302][2],BG_AV_CreaturePos[node + 302][3]);
+
+ //add bonus honor aura trigger creature when node is accupied
+ //cast bonus aura (+50% honor in 25yards)
+ //aura should only apply to players who have accupied the node, set correct faction for trigger
+ if (trigger)
+ {
+ if (owner != ALLIANCE && owner != HORDE)//node can be neutral, remove trigger
+ {
+ DelCreature(node + 302);
+ return;
+ }
+ trigger->setFaction(owner == ALLIANCE ? 84 : 83);
+ trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
+ }
}
void BattleGroundAV::DePopulateNode(BG_AV_Nodes node)
{
@@ -719,6 +785,10 @@ void BattleGroundAV::DePopulateNode(BG_AV_Nodes node)
//spiritguide
if (!IsTower(node) && m_BgCreatures[node])
DelCreature(node);
+
+ //remove bonus honor aura trigger creature when node is lost
+ if(node < BG_AV_NODES_MAX)//fail safe
+ DelCreature(node + 302);//NULL checks are in DelCreature! 0-302 spirit guides
}
const BG_AV_Nodes BattleGroundAV::GetNodeThroughObject(uint32 object)