Scripts/Instances: Add dungeon encounter data

Port From (https://github.com/TrinityCore/TrinityCore/commit/46e0056196dd6e56077aeeb67d41ec520046a79e)
This commit is contained in:
hondacrx
2022-10-04 19:50:48 -04:00
parent 4fab4cc6cf
commit 9d6b144884
20 changed files with 119 additions and 31 deletions
+8 -2
View File
@@ -146,7 +146,7 @@ namespace Game.Maps
}
}
void LoadDungeonEncounterData(DungeonEncounterData[] encounters)
public void LoadDungeonEncounterData(DungeonEncounterData[] encounters)
{
foreach (DungeonEncounterData encounter in encounters)
LoadDungeonEncounterData(encounter.BossId, encounter.DungeonEncounterId);
@@ -986,10 +986,16 @@ namespace Game.Maps
bool _combatResurrectionTimerStarted;
}
class DungeonEncounterData
public class DungeonEncounterData
{
public uint BossId;
public uint[] DungeonEncounterId = new uint[4];
public DungeonEncounterData(uint bossId, params uint[] dungeonEncounterIds)
{
BossId = bossId;
DungeonEncounterId = dungeonEncounterIds;
}
}
public class DoorData
@@ -109,7 +109,6 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker
public const uint MaxTargetsSize = 6;
public const byte SummonGroupIdSurgingFel = 0;
public const uint EncounterIdGarothiWorldbreaker = 2076;
public const ushort AnimKitIdCannonDestroyed = 13264;
public const uint DataLastFiredCannon = 0;
@@ -208,7 +207,6 @@ namespace Scripts.Argus.AntorusTheBurningThrone.GarothiWorldbreaker
_JustDied();
Talk(TextIds.SayDeath);
CleanupEncounter();
instance.SendBossKillCredit(MiscConst.EncounterIdGarothiWorldbreaker);
instance.SendEncounterUnit(EncounterFrameType.Disengage, me);
}
@@ -79,7 +79,22 @@ namespace Scripts.Argus.AntorusTheBurningThrone
new DoorData(GameObjectIds.Rock, DataTypes.GarothiWorldbreaker, DoorType.Passage)
};
public instance_antorus_the_burning_throne() : base("instance_antorus_the_burning_throne", 757) { }
static DungeonEncounterData[] encounters =
{
new DungeonEncounterData(DataTypes.GarothiWorldbreaker, 2076),
new DungeonEncounterData(DataTypes.FelhoundsOfSageras, 2074),
new DungeonEncounterData(DataTypes.AntoranHighCommand, 2070),
new DungeonEncounterData(DataTypes.PortalKeeperHasabel, 2064),
new DungeonEncounterData(DataTypes.EonarTheLifeBinder, 2075),
new DungeonEncounterData(DataTypes.ImonarTheSoulhunter, 2082),
new DungeonEncounterData(DataTypes.Kingaroth, 2088),
new DungeonEncounterData(DataTypes.Varimathras, 2069),
new DungeonEncounterData(DataTypes.TheCovenOfShivarra, 2073),
new DungeonEncounterData(DataTypes.Aggramar, 2063),
new DungeonEncounterData(DataTypes.ArgusTheUnmaker, 2092)
};
public instance_antorus_the_burning_throne() : base("instance_antorus_the_burning_throne", 1712) { }
class instance_antorus_the_burning_throne_InstanceMapScript : InstanceScript
{
@@ -89,6 +104,7 @@ namespace Scripts.Argus.AntorusTheBurningThrone
SetBossNumber(BossIds.EncounterCount);
LoadObjectData(creatureData, null);
LoadDoorData(doorData);
LoadDungeonEncounterData(encounters);
}
public override void OnCreatureCreate(Creature creature)
@@ -60,6 +60,13 @@ namespace Scripts.EasternKingdoms.BaradinHold
new DoorData(GameObjectIds.AlizabalDoor, DataTypes.Alizabal, DoorType.Room),
};
static DungeonEncounterData[] encounters =
{
new DungeonEncounterData(DataTypes.Argaloth, 1033),
new DungeonEncounterData(DataTypes.Occuthar, 1250),
new DungeonEncounterData(DataTypes.Alizabal, 1332)
};
public instance_baradin_hold() : base(nameof(instance_baradin_hold), 757) { }
class instance_baradin_hold_InstanceMapScript : InstanceScript
@@ -73,6 +80,7 @@ namespace Scripts.EasternKingdoms.BaradinHold
SetHeaders("BH");
SetBossNumber(3);
LoadDoorData(doorData);
LoadDungeonEncounterData(encounters);
}
public override void OnCreatureCreate(Creature creature)
@@ -49,6 +49,15 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackrockCaverns
new ObjectData(CreatureIds.RazTheCrazed, DataTypes.RazTheCrazed)
};
static DungeonEncounterData[] encounters =
{
new DungeonEncounterData(DataTypes.RomoggBonecrusher, 1040),
new DungeonEncounterData(DataTypes.Corla, 1038),
new DungeonEncounterData(DataTypes.KarshSteelbender, 1039),
new DungeonEncounterData(DataTypes.Beauty, 1037),
new DungeonEncounterData(DataTypes.AscendantLordObsidius, 1036)
};
public instance_blackrock_caverns() : base(nameof(instance_blackrock_caverns), 645) { }
class instance_blackrock_caverns_InstanceMapScript : InstanceScript
@@ -58,6 +67,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackrockCaverns
SetHeaders("BRC");
SetBossNumber(5);
LoadObjectData(creatureData, null);
LoadDungeonEncounterData(encounters);
}
public override bool SetBossState(uint type, EncounterState state)
@@ -160,7 +160,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackrockSpire
{
public instance_blackrock_spireMapScript(InstanceMap map) : base(map)
{
SetHeaders("BRS");
SetHeaders("BRSv1");
SetBossNumber(BRSMiscConst.EncounterCount);
LoadDoorData(BRSMiscConst.doorData);
@@ -25,9 +25,6 @@ using Framework.Constants;
namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair
{
//uint const EncounterCount = 8;
struct DataTypes
{
// Encounter States/Boss GUIDs
@@ -141,6 +138,18 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair
[Script]
class instance_blackwing_lair : InstanceMapScript
{
static DungeonEncounterData[] encounters =
{
new DungeonEncounterData(DataTypes.RazorgoreTheUntamed, 610),
new DungeonEncounterData(DataTypes.VaelastrazTheCorrupt, 611),
new DungeonEncounterData(DataTypes.BroodlordLashlayer, 612),
new DungeonEncounterData(DataTypes.Firemaw, 613),
new DungeonEncounterData(DataTypes.Ebonroc, 614),
new DungeonEncounterData(DataTypes.Flamegor, 615),
new DungeonEncounterData(DataTypes.Chromaggus, 616),
new DungeonEncounterData(DataTypes.Nefarian, 617)
};
public instance_blackwing_lair() : base(nameof(instance_blackwing_lair), 469) { }
class instance_blackwing_lair_InstanceMapScript : InstanceScript
@@ -156,6 +165,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.BlackwingLair
SetBossNumber(BWLMisc.EncounterCount);
LoadDoorData(BWLMisc.doorData);
LoadObjectData(BWLMisc.creatureData, BWLMisc.gameObjectData);
LoadDungeonEncounterData(encounters);
// Razorgore
EggCount = 0;
@@ -41,7 +41,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.BaronGeddon
[Script]
class boss_baron_geddon : BossAI
{
public boss_baron_geddon(Creature creature) : base(creature, BossIds.BaronGeddon) { }
public boss_baron_geddon(Creature creature) : base(creature, DataTypes.BaronGeddon) { }
public override void JustEngagedWith(Unit victim)
{
@@ -40,7 +40,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Garr
[Script]
class boss_garr : BossAI
{
public boss_garr(Creature creature) : base(creature, BossIds.Garr) { }
public boss_garr(Creature creature) : base(creature, DataTypes.Garr) { }
public override void JustEngagedWith(Unit victim)
{
@@ -32,7 +32,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Gehennas
[Script]
class boss_gehennas : BossAI
{
public boss_gehennas(Creature creature) : base(creature, BossIds.Gehennas) { }
public boss_gehennas(Creature creature) : base(creature, DataTypes.Gehennas) { }
public override void JustEngagedWith(Unit victim)
{
@@ -46,7 +46,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Golemagg
[Script]
class boss_golemagg : BossAI
{
public boss_golemagg(Creature creature) : base(creature, BossIds.GolemaggTheIncinerator) { }
public boss_golemagg(Creature creature) : base(creature, DataTypes.GolemaggTheIncinerator) { }
public override void Reset()
{
@@ -117,7 +117,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Golemagg
if (HealthAbovePct(50) || _instance == null)
return;
Creature pGolemagg = ObjectAccessor.GetCreature(me, _instance.GetGuidData(BossIds.GolemaggTheIncinerator));
Creature pGolemagg = ObjectAccessor.GetCreature(me, _instance.GetGuidData(DataTypes.GolemaggTheIncinerator));
if (pGolemagg)
{
if (pGolemagg.IsAlive())
@@ -23,7 +23,7 @@ using System;
namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
{
struct BossIds
struct DataTypes
{
public const uint Lucifron = 0;
public const uint Magmadar = 1;
@@ -91,6 +91,20 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
[Script]
class instance_molten_core : InstanceMapScript
{
static DungeonEncounterData[] encounters =
{
new DungeonEncounterData(DataTypes.Lucifron, 663),
new DungeonEncounterData(DataTypes.Magmadar, 664),
new DungeonEncounterData(DataTypes.Gehennas, 665),
new DungeonEncounterData(DataTypes.Garr, 666),
new DungeonEncounterData(DataTypes.Shazzrah, 667),
new DungeonEncounterData(DataTypes.BaronGeddon, 668),
new DungeonEncounterData(DataTypes.SulfuronHarbinger, 669),
new DungeonEncounterData(DataTypes.GolemaggTheIncinerator, 670),
new DungeonEncounterData(DataTypes.MajordomoExecutus, 671),
new DungeonEncounterData(DataTypes.Ragnaros, 672)
};
public instance_molten_core() : base(nameof(instance_molten_core), 409) { }
class instance_molten_core_InstanceMapScript : InstanceScript
@@ -104,7 +118,8 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
public instance_molten_core_InstanceMapScript(InstanceMap map) : base(map)
{
SetHeaders("MC");
SetBossNumber(BossIds.MaxEncounter);
SetBossNumber(DataTypes.MaxEncounter);
LoadDungeonEncounterData(encounters);
_executusSchedule = false;
_ragnarosAddDeaths = 0;
}
@@ -168,9 +183,9 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
{
switch (type)
{
case BossIds.GolemaggTheIncinerator:
case DataTypes.GolemaggTheIncinerator:
return _golemaggTheIncineratorGUID;
case BossIds.MajordomoExecutus:
case DataTypes.MajordomoExecutus:
return _majordomoExecutusGUID;
}
@@ -182,11 +197,11 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
if (!base.SetBossState(bossId, state))
return false;
if (state == EncounterState.Done && bossId < BossIds.MajordomoExecutus)
if (state == EncounterState.Done && bossId < DataTypes.MajordomoExecutus)
if (CheckMajordomoExecutus())
SummonMajordomoExecutus();
if (bossId == BossIds.MajordomoExecutus && state == EncounterState.Done)
if (bossId == DataTypes.MajordomoExecutus && state == EncounterState.Done)
DoRespawnGameObject(_cacheOfTheFirelordGUID, TimeSpan.FromDays(7));
return true;
@@ -198,7 +213,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
if (!_majordomoExecutusGUID.IsEmpty())
return;
if (GetBossState(BossIds.MajordomoExecutus) != EncounterState.Done)
if (GetBossState(DataTypes.MajordomoExecutus) != EncounterState.Done)
{
instance.SummonCreature(MCCreatureIds.MajordomoExecutus, MCMiscConst.SummonPositions[0]);
instance.SummonCreature(MCCreatureIds.FlamewakerHealer, MCMiscConst.SummonPositions[1]);
@@ -220,10 +235,10 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
bool CheckMajordomoExecutus()
{
if (GetBossState(BossIds.Ragnaros) == EncounterState.Done)
if (GetBossState(DataTypes.Ragnaros) == EncounterState.Done)
return false;
for (byte i = 0; i < BossIds.MajordomoExecutus; ++i)
for (byte i = 0; i < DataTypes.MajordomoExecutus; ++i)
if (GetBossState(i) != EncounterState.Done)
return false;
@@ -32,7 +32,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Lucifron
[Script]
class boss_lucifron : BossAI
{
public boss_lucifron(Creature creature) : base(creature, BossIds.Lucifron) { }
public boss_lucifron(Creature creature) : base(creature, DataTypes.Lucifron) { }
public override void JustEngagedWith(Unit victim)
{
@@ -39,7 +39,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Magmadar
[Script]
class boss_magmadar : BossAI
{
public boss_magmadar(Creature creature) : base(creature, BossIds.Magmadar) { }
public boss_magmadar(Creature creature) : base(creature, DataTypes.Magmadar) { }
public override void Reset()
{
@@ -52,7 +52,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Majordomo
[Script]
class boss_majordomo : BossAI
{
public boss_majordomo(Creature creature) : base(creature, BossIds.MajordomoExecutus) { }
public boss_majordomo(Creature creature) : base(creature, DataTypes.MajordomoExecutus) { }
public override void KilledUnit(Unit victim)
{
@@ -93,7 +93,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Majordomo
{
_scheduler.Update(diff);
if (instance.GetBossState(BossIds.MajordomoExecutus) != EncounterState.Done)
if (instance.GetBossState(DataTypes.MajordomoExecutus) != EncounterState.Done)
{
if (!UpdateVictim())
return;
@@ -79,7 +79,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
bool _hasSubmergedOnce;
bool _isBanished;
public boss_ragnaros(Creature creature) : base(creature, BossIds.Ragnaros)
public boss_ragnaros(Creature creature) : base(creature, DataTypes.Ragnaros)
{
Initialize();
_introState = 0;
@@ -153,7 +153,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore
break;
case EventIds.Intro4:
Talk(TextIds.SayArrival5Rag);
Creature executus = ObjectAccessor.GetCreature(me, instance.GetGuidData(BossIds.MajordomoExecutus));
Creature executus = ObjectAccessor.GetCreature(me, instance.GetGuidData(DataTypes.MajordomoExecutus));
if (executus)
Unit.Kill(me, executus);
break;
@@ -48,7 +48,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Shazzrah
[Script]
class boss_shazzrah : BossAI
{
public boss_shazzrah(Creature creature) : base(creature, BossIds.Shazzrah) { }
public boss_shazzrah(Creature creature) : base(creature, DataTypes.Shazzrah) { }
public override void JustEngagedWith(Unit target)
{
@@ -41,7 +41,7 @@ namespace Scripts.EasternKingdoms.BlackrockMountain.MoltenCore.Sulfuron
[Script]
class boss_sulfuron : BossAI
{
public boss_sulfuron(Creature creature) : base(creature, BossIds.SulfuronHarbinger) { }
public boss_sulfuron(Creature creature) : base(creature, DataTypes.SulfuronHarbinger) { }
public override void JustEngagedWith(Unit victim)
{
@@ -113,6 +113,21 @@ namespace Scripts.EasternKingdoms.Karazhan
new Position(-10899.903320f, -2085.573730f, 49.474449f, 1.38f) // Rokad the Ravager
};
static DungeonEncounterData[] encounters =
{
new DungeonEncounterData(DataTypes.Attumen, 652),
new DungeonEncounterData(DataTypes.Moroes, 653),
new DungeonEncounterData(DataTypes.MaidenOfVirtue, 654),
new DungeonEncounterData(DataTypes.OperaPerformance, 655),
new DungeonEncounterData(DataTypes.Curator, 656),
new DungeonEncounterData(DataTypes.Aran, 658),
new DungeonEncounterData(DataTypes.Terestian, 657),
new DungeonEncounterData(DataTypes.Netherspite, 659),
new DungeonEncounterData(DataTypes.Chess, 660),
new DungeonEncounterData(DataTypes.Malchezzar, 661),
new DungeonEncounterData(DataTypes.Nightbane, 662)
};
public instance_karazhan() : base(nameof(instance_karazhan), 532) { }
class instance_karazhan_InstanceMapScript : InstanceScript
@@ -142,6 +157,7 @@ namespace Scripts.EasternKingdoms.Karazhan
{
SetHeaders("KZ");
SetBossNumber(12);
LoadDungeonEncounterData(encounters);
// 1 - Oz, 2 - Hood, 3 - Raj, this never gets altered.
OperaEvent = RandomHelper.URand(1, 3);
@@ -119,6 +119,14 @@ namespace Scripts.EasternKingdoms.MagistersTerrace
[Script]
class instance_magisters_terrace : InstanceMapScript
{
static DungeonEncounterData[] encounters =
{
new DungeonEncounterData(DataTypes.SelinFireheart, 1897),
new DungeonEncounterData(DataTypes.Vexallus, 1898),
new DungeonEncounterData(DataTypes.PriestessDelrissa, 1895),
new DungeonEncounterData(DataTypes.KaelthasSunstrider, 1894)
};
public instance_magisters_terrace() : base(nameof(instance_magisters_terrace), 585) { }
class instance_magisters_terrace_InstanceMapScript : InstanceScript
@@ -132,6 +140,7 @@ namespace Scripts.EasternKingdoms.MagistersTerrace
SetBossNumber(4);
LoadObjectData(MiscConst.creatureData, MiscConst.gameObjectData);
LoadDoorData(MiscConst.doorData);
LoadDungeonEncounterData(encounters);
}
public override uint GetData(uint type)