Ported .Net Core commits:

hondacrx:
- Initial commit: Switch to .Net Core 2.0
- Fix build and removed not needed files
Fabi:
- Updated solution platforms.
- Changed folder structure.
- Change library target framework to netstandard2.0.
- Updated solution platforms again...
- Removed windows specific kernel32 function usage (Ctrl-C handler).
This commit is contained in:
Fabian
2017-10-26 17:23:44 +02:00
parent 227702e19c
commit a3dc7b3f48
844 changed files with 26064 additions and 1824 deletions
@@ -0,0 +1,487 @@
/*
* Copyright (C) 2012-2017 CypherCore <http://github.com/CypherCore>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using Framework.Constants;
using Game.AI;
using Game.Entities;
using Game.Maps;
using Game.Scripting;
using Game.Spells;
using System.Collections.Generic;
namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
{
struct Jaraxxus
{
public const uint SayIntro = 0;
public const uint SayAggro = 1;
public const uint EmoteLegionFlame = 2;
public const uint EmoteNetherPortal = 3;
public const uint SayMistressOfPain = 4;
public const uint EmoteIncinerate = 5;
public const uint SayIncinerate = 6;
public const uint EmoteInfernalEruption = 7;
public const uint SayInfernalEruption = 8;
public const uint SayKillPlayer = 9;
public const uint SayDeath = 10;
public const uint SayBerserk = 11;
public const uint NpcLegionFlame = 34784;
public const uint NpcInfernalVolcano = 34813;
public const uint NpcFelInfernal = 34815; // Immune To All Cc On Heroic (Stuns; Banish; Interrupt; Etc)
public const uint NpcNetherPortal = 34825;
public const uint NpcMistressOfPain = 34826;
public const uint SpellLegionFlame = 66197; // Player Should Run Away From Raid Because He Triggers Legion Flame
public const uint SpellLegionFlameEffect = 66201; // Used By Trigger Npc
public const uint SpellNetherPower = 66228; // +20% Of Spell Damage Per Stack; Stackable Up To 5/10 Times; Must Be Dispelled/Stealed
public const uint SpellFelLighting = 66528; // Jumps To Nearby Targets
public const uint SpellFelFireball = 66532; // Does Heavy Damage To The Tank; Interruptable
public const uint SpellIncinerateFlesh = 66237; // Target Must Be Healed Or Will Trigger Burning Inferno
public const uint SpellBurningInferno = 66242; // Triggered By Incinerate Flesh
public const uint SpellInfernalEruption = 66258; // Summons Infernal Volcano
public const uint SpellInfernalEruptionEffect = 66252; // Summons Felflame Infernal (3 At Normal And Inifinity At Heroic)
public const uint SpellNetherPortal = 66269; // Summons Nether Portal
public const uint SpellNetherPortalEffect = 66263; // Summons Mistress Of Pain (1 At Normal And Infinity At Heroic)
public const uint SpellBerserk = 64238; // Unused
// Mistress Of Pain Spells
public const uint SpellShivanSlash = 67098;
public const uint SpellSpinningStrike = 66283;
public const uint SpellMistressKiss = 66336;
public const uint SpellFelInferno = 67047;
public const uint SpellFelStreak = 66494;
public const int SpellLordHittin = 66326; // Special Effect Preventing More Specific Spells Be Cast On The Same Player Within 10 Seconds
public const uint SpellMistressKissDamageSilence = 66359;
// Lord Jaraxxus
public const uint EventFelFireball = 1;
public const uint EventFelLightning = 2;
public const uint EventIncinerateFlesh = 3;
public const uint EventNetherPower = 4;
public const uint EventLegionFlame = 5;
public const uint EventSummonoNetherPortal = 6;
public const uint EventSummonInfernalEruption = 7;
// Mistress Of Pain
public const uint EventShivanSlash = 8;
public const uint EventSpinningStrike = 9;
public const uint EventMistressKiss = 10;
}
[Script]
class boss_jaraxxus : BossAI
{
public boss_jaraxxus(Creature creature) : base(creature, DataTypes.BossJaraxxus) { }
public override void Reset()
{
_Reset();
_events.ScheduleEvent(Jaraxxus.EventFelFireball, 5 * Time.InMilliseconds);
_events.ScheduleEvent(Jaraxxus.EventFelLightning, RandomHelper.URand(10 * Time.InMilliseconds, 15 * Time.InMilliseconds));
_events.ScheduleEvent(Jaraxxus.EventIncinerateFlesh, RandomHelper.URand(20 * Time.InMilliseconds, 25 * Time.InMilliseconds));
_events.ScheduleEvent(Jaraxxus.EventNetherPower, 40 * Time.InMilliseconds);
_events.ScheduleEvent(Jaraxxus.EventLegionFlame, 30 * Time.InMilliseconds);
_events.ScheduleEvent(Jaraxxus.EventSummonoNetherPortal, 20 * Time.InMilliseconds);
_events.ScheduleEvent(Jaraxxus.EventSummonInfernalEruption, 80 * Time.InMilliseconds);
}
public override void JustReachedHome()
{
_JustReachedHome();
instance.SetBossState(DataTypes.BossJaraxxus, EncounterState.Fail);
DoCast(me, Spells.JaraxxusChains);
me.SetFlag(UnitFields.Flags, UnitFlags.NonAttackable);
}
public override void KilledUnit(Unit who)
{
if (who.IsTypeId(TypeId.Player))
{
Talk(Jaraxxus.SayKillPlayer);
instance.SetData(DataTypes.TributeToImmortalityEligible, 0);
}
}
public override void JustDied(Unit killer)
{
_JustDied();
Talk(Jaraxxus.SayDeath);
}
public override void JustSummoned(Creature summoned)
{
summons.Summon(summoned);
}
public override void EnterCombat(Unit who)
{
_EnterCombat();
Talk(Jaraxxus.SayAggro);
}
public override void UpdateAI(uint diff)
{
if (!UpdateVictim())
return;
_events.Update(diff);
if (me.HasUnitState(UnitState.Casting))
return;
_events.ExecuteEvents(eventId =>
{
switch (eventId)
{
case Jaraxxus.EventFelFireball:
DoCastVictim(Jaraxxus.SpellFelFireball);
_events.ScheduleEvent(Jaraxxus.EventFelFireball, RandomHelper.URand(10 * Time.InMilliseconds, 15 * Time.InMilliseconds));
return;
case Jaraxxus.EventFelLightning:
{
Unit target = SelectTarget(SelectAggroTarget.Random, 0, 0.0f, true, -Jaraxxus.SpellLordHittin);
if (target)
DoCast(target, Jaraxxus.SpellFelLighting);
_events.ScheduleEvent(Jaraxxus.EventFelLightning, RandomHelper.URand(10 * Time.InMilliseconds, 15 * Time.InMilliseconds));
return;
}
case Jaraxxus.EventIncinerateFlesh:
{
Unit target = SelectTarget(SelectAggroTarget.Random, 1, 0.0f, true, -Jaraxxus.SpellLordHittin);
if (target)
{
Talk(Jaraxxus.EmoteIncinerate, target);
Talk(Jaraxxus.SayIncinerate);
DoCast(target, Jaraxxus.SpellInfernalEruption);
}
_events.ScheduleEvent(Jaraxxus.EventIncinerateFlesh, RandomHelper.URand(20 * Time.InMilliseconds, 25 * Time.InMilliseconds));
return;
}
case Jaraxxus.EventNetherPower:
me.CastCustomSpell(Jaraxxus.SpellNetherPower, SpellValueMod.AuraStack, RaidMode(5, 10, 5, 10), me, true);
_events.ScheduleEvent(Jaraxxus.EventNetherPower, 40 * Time.InMilliseconds);
return;
case Jaraxxus.EventLegionFlame:
{
Unit target = SelectTarget(SelectAggroTarget.Random, 1, 0.0f, true, -Jaraxxus.SpellLordHittin);
if (target)
{
Talk(Jaraxxus.EmoteLegionFlame, target);
DoCast(target, Jaraxxus.SpellLegionFlame);
}
_events.ScheduleEvent(Jaraxxus.EventLegionFlame, 30 * Time.InMilliseconds);
return;
}
case Jaraxxus.EventSummonoNetherPortal:
Talk(Jaraxxus.EmoteNetherPortal);
Talk(Jaraxxus.SayMistressOfPain);
DoCast(Jaraxxus.SpellNetherPortal);
_events.ScheduleEvent(Jaraxxus.EventSummonoNetherPortal, 2 * Time.Minute * Time.InMilliseconds);
return;
case Jaraxxus.EventSummonInfernalEruption:
Talk(Jaraxxus.EmoteInfernalEruption);
Talk(Jaraxxus.SayInfernalEruption);
DoCast(Jaraxxus.SpellInfernalEruption);
_events.ScheduleEvent(Jaraxxus.EventSummonInfernalEruption, 2 * Time.Minute * Time.InMilliseconds);
return;
}
});
DoMeleeAttackIfReady();
}
}
[Script]
class npc_legion_flame : ScriptedAI
{
public npc_legion_flame(Creature creature) : base(creature)
{
SetCombatMovement(false);
_instance = creature.GetInstanceScript();
}
public override void Reset()
{
me.SetFlag(UnitFields.Flags, UnitFlags.NonAttackable | UnitFlags.NotSelectable);
me.SetInCombatWithZone();
DoCast(Jaraxxus.SpellLegionFlameEffect);
}
public override void UpdateAI(uint diff)
{
UpdateVictim();
if (_instance.GetBossState(DataTypes.BossJaraxxus) != EncounterState.InProgress)
me.DespawnOrUnsummon();
}
InstanceScript _instance;
}
[Script]
class npc_infernal_volcano : ScriptedAI
{
public npc_infernal_volcano(Creature creature) : base(creature)
{
_summons = new SummonList(me);
SetCombatMovement(false);
}
public override void Reset()
{
me.SetReactState(ReactStates.Passive);
if (!IsHeroic())
me.SetFlag(UnitFields.Flags, UnitFlags.NonAttackable | UnitFlags.NotSelectable | UnitFlags.Pacified);
else
me.RemoveFlag(UnitFields.Flags, UnitFlags.NonAttackable | UnitFlags.NotSelectable | UnitFlags.Pacified);
_summons.DespawnAll();
}
public override void IsSummonedBy(Unit summoner)
{
DoCast(Jaraxxus.SpellInfernalEruptionEffect);
}
public override void JustSummoned(Creature summoned)
{
_summons.Summon(summoned);
// makes immediate corpse despawn of summoned Felflame Infernals
summoned.SetCorpseDelay(0);
}
public override void JustDied(Unit killer)
{
// used to despawn corpse immediately
me.DespawnOrUnsummon();
}
public override void UpdateAI(uint diff) { }
SummonList _summons;
}
[Script]
class npc_fel_infernal : ScriptedAI
{
public npc_fel_infernal(Creature creature) : base(creature)
{
_instance = creature.GetInstanceScript();
}
public override void Reset()
{
_felStreakTimer = 30 * Time.InMilliseconds;
me.SetInCombatWithZone();
}
public override void UpdateAI(uint diff)
{
if (_instance.GetBossState(DataTypes.BossJaraxxus) != EncounterState.InProgress)
{
me.DespawnOrUnsummon();
return;
}
if (!UpdateVictim())
return;
if (_felStreakTimer <= diff)
{
Unit target = SelectTarget(SelectAggroTarget.Random, 0, 0.0f, true);
if (target)
DoCast(target, Jaraxxus.SpellFelStreak);
_felStreakTimer = 30 * Time.InMilliseconds;
}
else
_felStreakTimer -= diff;
DoMeleeAttackIfReady();
}
uint _felStreakTimer;
InstanceScript _instance;
}
[Script]
class npc_nether_portal : ScriptedAI
{
public npc_nether_portal(Creature creature) : base(creature)
{
_summons = new SummonList(me);
}
public override void Reset()
{
me.SetReactState(ReactStates.Passive);
if (!IsHeroic())
me.SetFlag(UnitFields.Flags, UnitFlags.NonAttackable | UnitFlags.NotSelectable | UnitFlags.Pacified);
else
me.RemoveFlag(UnitFields.Flags, UnitFlags.NonAttackable | UnitFlags.NotSelectable | UnitFlags.Pacified);
_summons.DespawnAll();
}
public override void IsSummonedBy(Unit summoner)
{
DoCast(Jaraxxus.SpellNetherPortalEffect);
}
public override void JustSummoned(Creature summoned)
{
_summons.Summon(summoned);
// makes immediate corpse despawn of summoned Mistress of Pain
summoned.SetCorpseDelay(0);
}
public override void JustDied(Unit killer)
{
// used to despawn corpse immediately
me.DespawnOrUnsummon();
}
public override void UpdateAI(uint diff) { }
SummonList _summons;
}
[Script]
class npc_mistress_of_pain : ScriptedAI
{
public npc_mistress_of_pain(Creature creature) : base(creature)
{
_instance = creature.GetInstanceScript();
_instance.SetData(DataTypes.MistressOfPainCount, DataTypes.Increase);
}
public override void Reset()
{
_events.ScheduleEvent(Jaraxxus.EventShivanSlash, 30 * Time.InMilliseconds);
_events.ScheduleEvent(Jaraxxus.EventSpinningStrike, 30 * Time.InMilliseconds);
if (IsHeroic())
_events.ScheduleEvent(Jaraxxus.EventMistressKiss, 15 * Time.InMilliseconds);
me.SetInCombatWithZone();
}
public override void JustDied(Unit killer)
{
_instance.SetData(DataTypes.MistressOfPainCount, DataTypes.Decrease);
}
public override void UpdateAI(uint diff)
{
if (_instance.GetBossState(DataTypes.BossJaraxxus) != EncounterState.InProgress)
{
me.DespawnOrUnsummon();
return;
}
if (!UpdateVictim())
return;
_events.Update(diff);
if (me.HasUnitState(UnitState.Casting))
return;
_events.ExecuteEvents(eventId =>
{
switch (eventId)
{
case Jaraxxus.EventShivanSlash:
DoCastVictim(Jaraxxus.SpellShivanSlash);
_events.ScheduleEvent(Jaraxxus.EventShivanSlash, 30 * Time.InMilliseconds);
return;
case Jaraxxus.EventSpinningStrike:
Unit target = SelectTarget(SelectAggroTarget.Random, 0, 0.0f, true);
if (target)
DoCast(target, Jaraxxus.SpellSpinningStrike);
_events.ScheduleEvent(Jaraxxus.EventSpinningStrike, 30 * Time.InMilliseconds);
return;
case Jaraxxus.EventMistressKiss:
DoCast(me, Jaraxxus.SpellMistressKiss);
_events.ScheduleEvent(Jaraxxus.EventMistressKiss, 30 * Time.InMilliseconds);
return;
default:
break;
}
});
DoMeleeAttackIfReady();
}
InstanceScript _instance;
}
[Script]
class spell_mistress_kiss : AuraScript
{
public override bool Load()
{
return ValidateSpellInfo(Jaraxxus.SpellMistressKissDamageSilence);
}
void HandleDummyTick(AuraEffect aurEff)
{
Unit caster = GetCaster();
Unit target = GetTarget();
if (caster && target)
{
if (target.HasUnitState(UnitState.Casting))
{
caster.CastSpell(target, Jaraxxus.SpellMistressKissDamageSilence, true);
target.RemoveAurasDueToSpell(GetSpellInfo().Id);
}
}
}
public override void Register()
{
OnEffectPeriodic.Add(new EffectPeriodicHandler(HandleDummyTick, 0, AuraType.PeriodicDummy));
}
}
[Script]
class spell_mistress_kiss_area : SpellScript
{
void FilterTargets(List<WorldObject> targets)
{
// get a list of players with mana
targets.RemoveAll(unit => unit.IsTypeId(TypeId.Player) && unit.ToPlayer().getPowerType() == PowerType.Mana);
if (targets.Empty())
return;
WorldObject target = targets.SelectRandom();
targets.Clear();
targets.Add(target);
}
void HandleScript(uint effIndex)
{
GetCaster().CastSpell(GetHitUnit(), (uint)GetEffectValue(), true);
}
public override void Register()
{
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(FilterTargets, 0, Targets.UnitSrcAreaEnemy));
OnEffectHitTarget.Add(new EffectHandler(HandleScript, 0, SpellEffectName.ScriptEffect));
}
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,409 @@
/*
* Copyright (C) 2012-2017 CypherCore <http://github.com/CypherCore>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using Framework.Constants;
using Game.Entities;
using Game.Maps;
namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
{
struct DataTypes
{
public const uint BossBeasts = 0;
public const uint BossJaraxxus = 1;
public const uint BossCrusaders = 2;
public const uint BossValkiries = 3;
public const uint BossLichKing = 4; // Not Really A Boss But Oh Well
public const uint BossAnubarak = 5;
public const uint MaxEncounters = 6;
public const uint Counter = 8;
public const uint Event = 9;
public const uint EventTimer = 101;
public const uint EventNpc = 102;
public const uint NorthrendBeasts = 103;
public const uint SnoboldCount = 301;
public const uint MistressOfPainCount = 302;
public const uint TributeToImmortalityEligible = 303;
public const uint Increase = 501;
public const uint Decrease = 502;
}
struct Spells
{
public const uint WilfredPortal = 68424;
public const uint JaraxxusChains = 67924;
public const uint CorpseTeleport = 69016;
public const uint DestroyFloorKnockup = 68193;
}
struct WorldStateIds
{
public const uint Show = 4390;
public const uint Count = 4389;
}
enum AnnouncerMessages
{
Beasts = 724001,
Jaraxxus = 724002,
Crusaders = 724003,
Valkiries = 724004,
LichKing = 724005,
Anubarak = 724006
}
public struct CreatureIds
{
public const uint Barrent = 34816;
public const uint Tirion = 34996;
public const uint TirionFordring = 36095;
public const uint ArgentMage = 36097;
public const uint Fizzlebang = 35458;
public const uint Garrosh = 34995;
public const uint Varian = 34990;
public const uint LichKing = 35877;
public const uint Thrall = 34994;
public const uint Proudmoore = 34992;
public const uint WilfredPortal = 17965;
public const uint Trigger = 35651;
public const uint Icehowl = 34797;
public const uint Gormok = 34796;
public const uint Dreadscale = 34799;
public const uint Acidmaw = 35144;
public const uint Jaraxxus = 34780;
public const uint ChampionsController = 34781;
public const uint AllianceDeathKnight = 34461;
public const uint AllianceDruidBalance = 34460;
public const uint AllianceDruidRestoration = 34469;
public const uint AllianceHunter = 34467;
public const uint AllianceMage = 34468;
public const uint AlliancePaladinHoly = 34465;
public const uint AlliancePaladinRetribution = 34471;
public const uint AlliancePriestDiscipline = 34466;
public const uint AlliancePriestShadow = 34473;
public const uint AllianceRogue = 34472;
public const uint AllianceShamanEnhancement = 34463;
public const uint AllianceShamanRestoration = 34470;
public const uint AllianceWarlock = 34474;
public const uint AllianceWarrior = 34475;
public const uint HordeDeathKnight = 34458;
public const uint HordeDruidBalance = 34451;
public const uint HordeDruidRestoration = 34459;
public const uint HordeHunter = 34448;
public const uint HordeMage = 34449;
public const uint HordePaladinHoly = 34445;
public const uint HordePaladinRetribution = 34456;
public const uint HordePriestDiscipline = 34447;
public const uint HordePriestShadow = 34441;
public const uint HordeRogue = 34454;
public const uint HordeShamanEnhancement = 34455;
public const uint HordeShamanRestoration = 34444;
public const uint HordeWarlock = 34450;
public const uint HordeWarrior = 34453;
public const uint Lightbane = 34497;
public const uint Darkbane = 34496;
public const uint DarkEssence = 34567;
public const uint LightEssence = 34568;
public const uint Anubarak = 34564;
}
struct GameObjectIds
{
public const uint CrusadersCache10 = 195631;
public const uint CrusadersCache25 = 195632;
public const uint CrusadersCache10H = 195633;
public const uint CrusadersCache25H = 195635;
// Tribute Chest (Heroic)
// 10-Man Modes
public const uint TributeChest10h25 = 195668; // 10man 01-24 Attempts
public const uint TributeChest10h45 = 195667; // 10man 25-44 Attempts
public const uint TributeChest10h50 = 195666; // 10man 45-49 Attempts
public const uint TributeChest10h99 = 195665; // 10man 50 Attempts
// 25-Man Modes
public const uint TributeChest25h25 = 195672; // 25man 01-24 Attempts
public const uint TributeChest25h45 = 195671; // 25man 25-44 Attempts
public const uint TributeChest25h50 = 195670; // 25man 45-49 Attempts
public const uint TributeChest25h99 = 195669; // 25man 50 Attempts
public const uint ArgentColiseumFloor = 195527; //20943
public const uint MainGateDoor = 195647;
public const uint EastPortcullis = 195648;
public const uint WebDoor = 195485;
public const uint PortalToDalaran = 195682;
}
struct AchievementData
{
// Northrend Beasts
public const uint UpperBackPain10Player = 11779;
public const uint UpperBackPain10PlayerHeroic = 11802;
public const uint UpperBackPain25Player = 11780;
public const uint UpperBackPain25PlayerHeroic = 11801;
// Lord Jaraxxus
public const uint ThreeSixtyPainSpike10Player = 11838;
public const uint ThreeSixtyPainSpike10PlayerHeroic = 11861;
public const uint ThreeSixtyPainSpike25Player = 11839;
public const uint ThreeSixtyPainSpike25PlayerHeroic = 11862;
// Tribute
public const uint ATributeToSkill10Player = 12344;
public const uint ATributeToSkill25Player = 12338;
public const uint ATributeToMadSkill10Player = 12347;
public const uint ATributeToMadSkill25Player = 12341;
public const uint ATributeToInsanity10Player = 12349;
public const uint ATributeToInsanity25Player = 12343;
public const uint ATributeToImmortalityHorde = 12358;
public const uint ATributeToImmortalityAlliance = 12359;
public const uint ATributeToDedicatedInsanity = 12360;
public const uint RealmFirstGrandCrusader = 12350;
// Dummy Spells - Not Existing In Dbc But We Don'T Need That
public const uint SpellWormsKilledIn10Seconds = 68523;
public const uint SpellChampionsKilledInMinute = 68620;
public const uint SpellDefeatFactionChampions = 68184;
public const uint SpellTraitorKing10 = 68186;
public const uint SpellTraitorKing25 = 68515;
// Timed Events
public const uint EventStartTwinsFight = 21853;
}
struct NorthrendBeasts
{
public const uint GormokInProgress = 1000;
public const uint GormokDone = 1001;
public const uint SnakesInProgress = 2000;
public const uint DreadscaleSubmerged = 2001;
public const uint AcidmawSubmerged = 2002;
public const uint SnakesSpecial = 2003;
public const uint SnakesDone = 2004;
public const uint IcehowlInProgress = 3000;
public const uint IcehowlDone = 3001;
}
struct Texts
{
// Highlord Tirion Fordring - 34996
public const uint Stage_0_01 = 0;
public const uint Stage_0_02 = 1;
public const uint Stage_0_04 = 2;
public const uint Stage_0_05 = 3;
public const uint Stage_0_06 = 4;
public const uint Stage_0_Wipe = 5;
public const uint Stage_1_01 = 6;
public const uint Stage_1_07 = 7;
public const uint Stage_1_08 = 8;
public const uint Stage_1_11 = 9;
public const uint Stage_2_01 = 10;
public const uint Stage_2_03 = 11;
public const uint Stage_2_06 = 12;
public const uint Stage_3_01 = 13;
public const uint Stage_3_02 = 14;
public const uint Stage_4_01 = 15;
public const uint Stage_4_03 = 16;
// Varian Wrynn
public const uint Stage_0_03a = 0;
public const uint Stage_1_10 = 1;
public const uint Stage_2_02a = 2;
public const uint Stage_2_04a = 3;
public const uint Stage_2_05a = 4;
public const uint Stage_3_03a = 5;
// Garrosh
public const uint Stage_0_03h = 0;
public const uint Stage_1_09 = 1;
public const uint Stage_2_02h = 2;
public const uint Stage_2_04h = 3;
public const uint Stage_2_05h = 4;
public const uint Stage_3_03h = 5;
// Wilfred Fizzlebang
public const uint Stage_1_02 = 0;
public const uint Stage_1_03 = 1;
public const uint Stage_1_04 = 2;
public const uint Stage_1_06 = 3;
// Lord Jaraxxus
public const uint Stage_1_05 = 0;
// The Lich King
public const uint Stage_4_02 = 0;
public const uint Stage_4_05 = 1;
public const uint Stage_4_04 = 2;
// Highlord Tirion Fordring - 36095
public const uint Stage_4_06 = 0;
public const uint Stage_4_07 = 1;
}
struct MiscData
{
public const uint DespawnTime = 300000;
public const uint DisplayIdDestroyedFloor = 9060;
public static BossBoundaryEntry[] boundaries =
{
new BossBoundaryEntry(DataTypes.BossBeasts, new CircleBoundary(new Position(563.26f, 139.6f), 75.0)),
new BossBoundaryEntry(DataTypes.BossJaraxxus, new CircleBoundary(new Position(563.26f, 139.6f), 75.0)),
new BossBoundaryEntry(DataTypes.BossCrusaders, new CircleBoundary(new Position(563.26f, 139.6f), 75.0)),
new BossBoundaryEntry(DataTypes.BossValkiries, new CircleBoundary(new Position(563.26f, 139.6f), 75.0)),
new BossBoundaryEntry(DataTypes.BossAnubarak, new EllipseBoundary(new Position(746.0f, 135.0f), 100.0, 75.0))
};
public static _Messages[] _GossipMessage =
{
new _Messages(AnnouncerMessages.Beasts, eTradeskill.GossipActionInfoDef + 1, false, DataTypes.BossBeasts),
new _Messages(AnnouncerMessages.Jaraxxus, eTradeskill.GossipActionInfoDef + 2, false, DataTypes.BossJaraxxus),
new _Messages(AnnouncerMessages.Crusaders, eTradeskill.GossipActionInfoDef + 3, false, DataTypes.BossCrusaders),
new _Messages(AnnouncerMessages.Valkiries, eTradeskill.GossipActionInfoDef + 4, false, DataTypes.BossValkiries),
new _Messages(AnnouncerMessages.LichKing, eTradeskill.GossipActionInfoDef + 5, false, DataTypes.BossAnubarak),
new _Messages(AnnouncerMessages.Anubarak, eTradeskill.GossipActionInfoDef + 6, true, DataTypes.BossAnubarak)
};
public static Position[] ToCSpawnLoc =
{
new Position(563.912f, 261.625f, 394.73f, 4.70437f), // 0 Center
new Position( 575.451f, 261.496f, 394.73f, 4.6541f), // 1 Left
new Position( 549.951f, 261.55f, 394.73f, 4.74835f) // 2 Right
};
public static Position[] ToCCommonLoc =
{
new Position(559.257996f, 90.266197f, 395.122986f, 0), // 0 Barrent
new Position(563.672974f, 139.571f, 393.837006f, 0), // 1 Center
new Position(563.833008f, 187.244995f, 394.5f, 0), // 2 Backdoor
new Position(577.347839f, 195.338888f, 395.14f, 0), // 3 - Right
new Position(550.955933f, 195.338888f, 395.14f, 0), // 4 - Left
new Position(563.833008f, 195.244995f, 394.585561f, 0), // 5 - Center
new Position(573.5f, 180.5f, 395.14f, 0), // 6 Move 0 Right
new Position(553.5f, 180.5f, 395.14f, 0), // 7 Move 0 Left
new Position(573.0f, 170.0f, 395.14f, 0), // 8 Move 1 Right
new Position(555.5f, 170.0f, 395.14f, 0), // 9 Move 1 Left
new Position(563.8f, 216.1f, 395.1f, 0), // 10 Behind the door
new Position(575.042358f, 195.260727f, 395.137146f, 0), // 5
new Position(552.248901f, 195.331955f, 395.132658f, 0), // 6
new Position(573.342285f, 195.515823f, 395.135956f, 0), // 7
new Position(554.239929f, 195.825577f, 395.137909f, 0), // 8
new Position(571.042358f, 195.260727f, 395.137146f, 0), // 9
new Position(556.720581f, 195.015472f, 395.132658f, 0), // 10
new Position(569.534119f, 195.214478f, 395.139526f, 0), // 11
new Position(569.231201f, 195.941071f, 395.139526f, 0), // 12
new Position(558.811610f, 195.985779f, 394.671661f, 0), // 13
new Position(567.641724f, 195.351501f, 394.659943f, 0), // 14
new Position(560.633972f, 195.391708f, 395.137543f, 0), // 15
new Position(565.816956f, 195.477921f, 395.136810f, 0) // 16
};
public static Position[] JaraxxusLoc =
{
new Position(508.104767f, 138.247345f, 395.128052f, 0), // 0 - Fizzlebang start location
new Position(548.610596f, 139.807800f, 394.321838f, 0), // 1 - fizzlebang end
new Position(581.854187f, 138.0f, 394.319f, 0), // 2 - Portal Right
new Position(550.558838f, 138.0f, 394.319f, 0) // 3 - Portal Left
};
public static Position[] FactionChampionLoc =
{
new Position(514.231f, 105.569f, 418.234f, 0), // 0 - Horde Initial Pos 0
new Position(508.334f, 115.377f, 418.234f, 0), // 1 - Horde Initial Pos 1
new Position(506.454f, 126.291f, 418.234f, 0), // 2 - Horde Initial Pos 2
new Position(506.243f, 106.596f, 421.592f, 0), // 3 - Horde Initial Pos 3
new Position(499.885f, 117.717f, 421.557f, 0), // 4 - Horde Initial Pos 4
new Position(613.127f, 100.443f, 419.74f, 0), // 5 - Ally Initial Pos 0
new Position(621.126f, 128.042f, 418.231f, 0), // 6 - Ally Initial Pos 1
new Position(618.829f, 113.606f, 418.232f, 0), // 7 - Ally Initial Pos 2
new Position(625.845f, 112.914f, 421.575f, 0), // 8 - Ally Initial Pos 3
new Position(615.566f, 109.653f, 418.234f, 0), // 9 - Ally Initial Pos 4
new Position(535.469f, 113.012f, 394.66f, 0), // 10 - Horde Final Pos 0
new Position(526.417f, 137.465f, 394.749f, 0), // 11 - Horde Final Pos 1
new Position(528.108f, 111.057f, 395.289f, 0), // 12 - Horde Final Pos 2
new Position(519.92f, 134.285f, 395.289f, 0), // 13 - Horde Final Pos 3
new Position(533.648f, 119.148f, 394.646f, 0), // 14 - Horde Final Pos 4
new Position(531.399f, 125.63f, 394.708f, 0), // 15 - Horde Final Pos 5
new Position(528.958f, 131.47f, 394.73f, 0), // 16 - Horde Final Pos 6
new Position(526.309f, 116.667f, 394.833f, 0), // 17 - Horde Final Pos 7
new Position(524.238f, 122.411f, 394.819f, 0), // 18 - Horde Final Pos 8
new Position(521.901f, 128.488f, 394.832f, 0) // 19 - Horde Final Pos 9
};
public static Position[] TwinValkyrsLoc =
{
new Position(586.060242f, 117.514809f, 394.41f, 0), // 0 - Dark essence 1
new Position(541.602112f, 161.879837f, 394.41f, 0), // 1 - Dark essence 2
new Position(541.021118f, 117.262932f, 394.41f, 0), // 2 - Light essence 1
new Position(586.200562f, 162.145523f, 394.41f, 0) // 3 - Light essence 2
};
public static Position[] LichKingLoc =
{
new Position(563.549f, 152.474f, 394.393f, 0), // 0 - Lich king start
new Position(563.547f, 141.613f, 393.908f, 0) // 1 - Lich king end
};
public static Position[] AnubarakLoc =
{
new Position(787.932556f, 133.289780f, 142.612152f, 0), // 0 - Anub'arak start location
new Position(695.240051f, 137.834824f, 142.200000f, 0), // 1 - Anub'arak move point location
new Position(694.886353f, 102.484665f, 142.119614f, 0), // 3 - Nerub Spawn
new Position(694.500671f, 185.363968f, 142.117905f, 0), // 5 - Nerub Spawn
new Position(731.987244f, 83.3824690f, 142.119614f, 0), // 2 - Nerub Spawn
new Position(740.184509f, 193.443390f, 142.117584f, 0) // 4 - Nerub Spawn
};
public static Position[] EndSpawnLoc =
{
new Position(648.9167f, 131.0208f, 141.6161f, 0), // 0 - Highlord Tirion Fordring
new Position(649.1614f, 142.0399f, 141.3057f, 0), // 1 - Argent Mage
new Position(644.6250f, 149.2743f, 140.6015f, 0) // 2 - Portal to Dalaran
};
}
struct _Messages
{
public _Messages(AnnouncerMessages _msg, uint _id, bool _state, uint _encounter)
{
msgnum = _msg;
id = _id;
state = _state;
encounter = _encounter;
}
public AnnouncerMessages msgnum;
public uint id;
public bool state;
public uint encounter;
}
}