aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/BattleGroundEY.cpp21
-rw-r--r--src/game/BattleGroundEY.h15
2 files changed, 35 insertions, 1 deletions
diff --git a/src/game/BattleGroundEY.cpp b/src/game/BattleGroundEY.cpp
index e5667878b7f..f0e6eadab42 100644
--- a/src/game/BattleGroundEY.cpp
+++ b/src/game/BattleGroundEY.cpp
@@ -409,6 +409,7 @@ void BattleGroundEY::HandleAreaTrigger(Player *Source, uint32 Trigger)
case 4569:
case 4570:
case 4571:
+ case 5866:
break;
default:
sLog.outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger);
@@ -694,6 +695,10 @@ void BattleGroundEY::EventTeamLostPoint(Player *Source, uint32 Point)
UpdatePointsIcons(Team, Point);
UpdatePointsCount(Team);
+
+ //remove bonus honor aura trigger creature when node is lost
+ if (Point < EY_POINTS_MAX)
+ DelCreature(Point + 6);//NULL checks are in DelCreature! 0-5 spirit guides
}
void BattleGroundEY::EventTeamCapturedPoint(Player *Source, uint32 Point)
@@ -745,6 +750,22 @@ void BattleGroundEY::EventTeamCapturedPoint(Player *Source, uint32 Point)
UpdatePointsIcons(Team, Point);
UpdatePointsCount(Team);
+
+ if (Point >= EY_POINTS_MAX)
+ return;
+
+ Creature* trigger = GetBGCreature(Point + 6);//0-5 spirit guides
+ if (!trigger)
+ trigger = AddCreature(WORLD_TRIGGER,Point+6,Team,BG_EY_TriggerPositions[Point][0],BG_EY_TriggerPositions[Point][1],BG_EY_TriggerPositions[Point][2],BG_EY_TriggerPositions[Point][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)
+ {
+ trigger->setFaction(Team == ALLIANCE ? 84 : 83);
+ trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
+ }
}
void BattleGroundEY::EventPlayerCapturedFlag(Player *Source, uint32 BgObjectType)
diff --git a/src/game/BattleGroundEY.h b/src/game/BattleGroundEY.h
index 06f22208e40..61e96cb26da 100644
--- a/src/game/BattleGroundEY.h
+++ b/src/game/BattleGroundEY.h
@@ -143,7 +143,12 @@ enum EYBattleGroundCreaturesTypes
EY_SPIRIT_MAIN_ALLIANCE = 4,
EY_SPIRIT_MAIN_HORDE = 5,
- BG_EY_CREATURES_MAX = 6
+ EY_TRIGGER_FEL_REALVER = 6,
+ EY_TRIGGER_BLOOD_ELF = 7,
+ EY_TRIGGER_DRAENEI_RUINS = 8,
+ EY_TRIGGER_MAGE_TOWER = 9,
+
+ BG_EY_CREATURES_MAX = 10
};
enum EYBattleGroundObjectTypes
@@ -244,6 +249,14 @@ struct BattleGroundEYPointIconsStruct
uint32 WorldStateHordeControlledIndex;
};
+// x, y, z, o
+const float BG_EY_TriggerPositions[EY_POINTS_MAX][4] = {
+ {2044.28f, 1729.68f, 1189.96f, -0.017453f}, // FEL_REALVER center
+ {2048.83f, 1393.65f, 1194.49f, 0.20944f}, // BLOOD_ELF center
+ {2286.56f, 1402.36f, 1197.11f, 3.72381f}, // DRAENEI_RUINS center
+ {2284.48f, 1731.23f, 1189.99f, 2.89725f} // MAGE_TOWER center
+};
+
struct BattleGroundEYLoosingPointStruct
{
BattleGroundEYLoosingPointStruct(uint32 _SpawnNeutralObjectType, uint32 _DespawnObjectTypeAlliance, uint32 _MessageIdAlliance, uint32 _DespawnObjectTypeHorde, uint32 _MessageIdHorde)