Scripts/Misc: fixed instance teleporter for Throne of the Tides, The Stonecore and Blackrock Caverns

This commit is contained in:
Ovahlord committed 2020-07-14 16:42:30 +02:00
1 parent f79a5a6938
commit 66069bcef1
8 files changed
+165 -39

No files matched your search

@@ -72,8 +72,10 @@ enum BRCCreatureIds
/*Ascendant Lord Obsidius*/
NPC_SHADOW_OF_OBSIDIUS = 40817,
// Generic Creatures
NPC_TWILIGHT_FLAME_CALLER = 39708,
NPC_RAZ_THE_CRAZED = 39670
NPC_RAZ_THE_CRAZED = 39670,
NPC_TWILIGHT_PORTAL = 51340
};
enum BRCActions
@@ -87,6 +87,9 @@ class instance_blackrock_caverns : public InstanceMapScript
if (Creature* karsh = GetCreature(DATA_KARSH_STEELBENDER))
karsh->AI()->JustSummoned(creature);
break;
case NPC_TWILIGHT_PORTAL:
creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); // Set spellclick flag manually because the seats are flagged as unusable due to their flags
break;
default:
break;
}
@@ -30,16 +30,18 @@
ObjectData const creatureData[] =
{
{ BOSS_LADY_NAZJAR, DATA_LADY_NAZJAR },
{ BOSS_COMMANDER_ULTHOK, DATA_COMMANDER_ULTHOK },
{ BOSS_MINDBENDER_GURSHA, DATA_MINDBENDER_GURSHA },
{ BOSS_OZUMAT, DATA_OZUMAT },
{ NPC_LADY_NAZJAR, DATA_LADY_NAZJAR_GAUNTLET },
{ NPC_OZUMAT_VEHICLE_BIG, DATA_OZUMAT_VEHICLE_BIG },
{ NPC_OZUMAT_VEHICLE, DATA_OZUMAT_VEHICLE },
{ NPC_NEPTULON, DATA_NEPTULON },
{ NPC_OZUMAT, DATA_OZUMAT_PASSENGER },
{ 0, 0 } // END
{ BOSS_LADY_NAZJAR, DATA_LADY_NAZJAR },
{ BOSS_COMMANDER_ULTHOK, DATA_COMMANDER_ULTHOK },
{ BOSS_MINDBENDER_GURSHA, DATA_MINDBENDER_GURSHA },
{ BOSS_OZUMAT, DATA_OZUMAT },
{ NPC_LADY_NAZJAR, DATA_LADY_NAZJAR_GAUNTLET },
{ NPC_OZUMAT_VEHICLE_BIG, DATA_OZUMAT_VEHICLE_BIG },
{ NPC_OZUMAT_VEHICLE, DATA_OZUMAT_VEHICLE },
{ NPC_NEPTULON, DATA_NEPTULON },
{ NPC_OZUMAT, DATA_OZUMAT_PASSENGER },
{ NPC_THRONE_OF_THE_TIDES_TELEPORTER_1, DATA_THRONE_OF_THE_TIDES_TELEPORTER_1 },
{ NPC_THRONE_OF_THE_TIDES_TELEPORTER_2, DATA_THRONE_OF_THE_TIDES_TELEPORTER_2 },
{ 0, 0 } // END
};
ObjectData const gameobjectData[] =
@@ -173,6 +175,11 @@ class GeyserActivationEvent : public BasicEvent
Creature* _owner;
};
enum Spells
{
SPELL_TELEPORTER_ACTIVE_VISUAL = 95296
};
class instance_throne_of_the_tides : public InstanceMapScript
{
public:
@@ -198,8 +205,23 @@ class instance_throne_of_the_tides : public InstanceMapScript
{
case DATA_LADY_NAZJAR:
if (state == DONE)
{
if (GameObject* defenseSystem = GetGameObject(DATA_THRONE_OF_THE_TIDES_DEFENSE_SYSTEM))
defenseSystem->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
if (Creature* teleporter1 = GetCreature(DATA_THRONE_OF_THE_TIDES_TELEPORTER_1))
{
teleporter1->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
teleporter1->CastSpell(teleporter1, SPELL_TELEPORTER_ACTIVE_VISUAL);
}
if (Creature* teleporter2 = GetCreature(DATA_THRONE_OF_THE_TIDES_TELEPORTER_2))
{
teleporter2->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
teleporter2->CastSpell(teleporter2, SPELL_TELEPORTER_ACTIVE_VISUAL);
}
}
break;
case DATA_COMMANDER_ULTHOK:
if (state == FAIL)
@@ -264,6 +286,14 @@ class instance_throne_of_the_tides : public InstanceMapScript
if (Creature* neptulon = GetCreature(DATA_NEPTULON))
neptulon->AI()->JustSummoned(creature);
break;
case NPC_THRONE_OF_THE_TIDES_TELEPORTER_1:
case NPC_THRONE_OF_THE_TIDES_TELEPORTER_2:
if (GetBossState(DATA_LADY_NAZJAR == DONE))
{
creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
creature->CastSpell(creature, SPELL_TELEPORTER_ACTIVE_VISUAL);
}
break;
default:
break;
}
@@ -49,7 +49,9 @@ enum TotTDataTypes
DATA_NEPTULON = 15,
DATA_OZUMAT_VEHICLE = 16,
DATA_LADY_NAZJAR_GEYSERS = 17,
DATA_OZUMAT_PASSENGER = 18
DATA_OZUMAT_PASSENGER = 18,
DATA_THRONE_OF_THE_TIDES_TELEPORTER_1 = 19,
DATA_THRONE_OF_THE_TIDES_TELEPORTER_2 = 20
};
enum TotTCreatureIds
@@ -97,7 +99,9 @@ enum TotTCreatureIds
NPC_GEYSER_DUMMY = 48983,
NPC_GILGOBLIN_HUNTER = 40935,
NPC_FACELESS_WATCHER = 40936,
NPC_GILGOBLIN_AQUAMAGE = 40943
NPC_GILGOBLIN_AQUAMAGE = 40943,
NPC_THRONE_OF_THE_TIDES_TELEPORTER_1 = 51391, // Entrance
NPC_THRONE_OF_THE_TIDES_TELEPORTER_2 = 51395 // Neptulon's Rise
};
enum TotTGameObjectIds
@@ -41,11 +41,16 @@ ObjectData const creatureData[] =
{ BOSS_SLABHIDE, DATA_SLABHIDE },
{ BOSS_OZRUK, DATA_OZRUK, },
{ BOSS_HIGH_PRIESTESS_AZIL, DATA_HIGH_PRIESTESS_AZIL },
{ NPC_STONECORE_TELEPORTER, DATA_STONECORE_TELEPORTER },
{ NPC_STONECORE_TELEPORTER_1, DATA_STONECORE_TELEPORTER_1 },
{ NPC_STONECORE_TELEPORTER_2, DATA_STONECORE_TELEPORTER_2 },
{ 0, 0 } // END
};
enum Spells
{
SPELL_TELEPORTER_ACTIVE_VISUAL = 95298
};
class instance_stonecore : public InstanceMapScript
{
public:
@@ -111,10 +116,13 @@ class instance_stonecore : public InstanceMapScript
{
switch (creature->GetEntry())
{
case NPC_STONECORE_TELEPORTER:
case NPC_STONECORE_TELEPORTER_1:
case NPC_STONECORE_TELEPORTER_2:
if (GetBossState(DATA_SLABHIDE) == DONE)
ActivateTeleporter(creature);
{
creature->CastSpell(creature, SPELL_TELEPORTER_ACTIVE_VISUAL);
creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
}
break;
case BOSS_CORBORUS:
case BOSS_SLABHIDE:
@@ -162,8 +170,17 @@ class instance_stonecore : public InstanceMapScript
// Activate teleporters
if (state == DONE)
{
ActivateTeleporter(GetCreature(DATA_STONECORE_TELEPORTER));
ActivateTeleporter(GetCreature(DATA_STONECORE_TELEPORTER_2));
if (Creature* teleporter1 = GetCreature(DATA_STONECORE_TELEPORTER_1))
{
teleporter1->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
teleporter1->CastSpell(teleporter1, SPELL_TELEPORTER_ACTIVE_VISUAL);
}
if (Creature* teleporter2 = GetCreature(DATA_STONECORE_TELEPORTER_2))
{
teleporter2->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
teleporter2->CastSpell(teleporter2, SPELL_TELEPORTER_ACTIVE_VISUAL);
}
}
if (state == FAIL)
@@ -280,15 +297,6 @@ class instance_stonecore : public InstanceMapScript
creature->DespawnOrUnsummon(Seconds(3));
}
void ActivateTeleporter(Creature* teleporter)
{
if (!teleporter)
return;
teleporter->CastSpell(teleporter, SPELL_TELEPORTER_ACTIVE_VISUAL, true);
teleporter->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
}
EventMap _events;
GuidVector _millhouseTrashGUIDs;
GuidVector _millhouseLastGroupGUIDs;
@@ -42,7 +42,7 @@ enum SCDataTypes
DATA_EVENT_PROGRESS,
// Teleporters
DATA_STONECORE_TELEPORTER,
DATA_STONECORE_TELEPORTER_1,
DATA_STONECORE_TELEPORTER_2,
};
@@ -72,7 +72,11 @@ enum SCCreatureIds
// High Priestess Azil
NPC_DEVOUT_FOLLOWER = 42428,
NPC_SEISMIC_SHARD = 42355
NPC_SEISMIC_SHARD = 42355,
// Generic Creatures
NPC_STONECORE_TELEPORTER_1 = 51396,
NPC_STONECORE_TELEPORTER_2 = 51397
};
enum SCGameobjectIds
@@ -90,9 +94,6 @@ enum SCMisc
// Stonecore Teleporter misc
MAX_STONECORE_TELEPORTERS = 2,
NPC_STONECORE_TELEPORTER = 51396, // Entrance teleporter
NPC_STONECORE_TELEPORTER_2 = 51397, // Slabhide teleporter
SPELL_TELEPORTER_ACTIVE_VISUAL = 95298,
SPELL_RING_WYRM_KNOCKBACK = 81235,
// Creature Formation IDs