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

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

View File

@@ -0,0 +1,76 @@
-- Throne of the Tides
UPDATE `creature_template_addon` SET `auras`= '95293' WHERE `entry` IN (51395, 51391);
UPDATE `creature_addon` SET `auras`= '95293' WHERE `guid` IN (254995, 254849);
DELETE FROM `creature_template_movement` WHERE `CreatureId` IN (51395, 51391);
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`) VALUES
(51395, 0, 0, 1, 0),
(51391, 0, 0, 1, 0);
DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (51391, 51395);
INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES
(51391, 95284, 1, 0),
(51395, 95285, 1, 0);
-- The Stonecore
DELETE FROM `creature_template_movement` WHERE `CreatureId` IN (51396, 51397);
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`) VALUES
(51396, 0, 0, 1, 0),
(51397, 0, 0, 1, 0);
DELETE FROM `creature_addon` WHERE `guid` IN (340437, 340628);
INSERT INTO `creature_addon` (`guid`, `bytes1`, `auras`) VALUES
(340437, 50331648, '95299'),
(340628, 50331648, '95299');
DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (51396, 51397);
INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES
(51396, 95284, 1, 0),
(51397, 95285, 1, 0);
UPDATE `creature_template` SET `unit_flags`= 0, `flags_extra`= 0, `AIName`= 'NullCreatureAI' WHERE `entry` IN (51396, 51397);
-- Blackrock Caverns
UPDATE `creature_template` SET `VehicleId`= 1536, `unit_flags`= 0, `unit_flags2`= 67110912, `npcflag`= 0x01000000, `flags_extra`= 0 WHERE `entry`= 51340;
DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`= 51340;
INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES
(51340, 84965, 1, 1);
SET @ENTRY := 51340;
SET @GUID := -361878;
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(@GUID, 0, 0, 0, 27, 0, 100, 0, 0, 0, 0, 0, 11, 95210, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "On passenger boarded (vehicle) - Self: Cast spell 95210 on Action invoker // ");
SET @GUID := -361877;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(@GUID, 0, 0, 0, 27, 0, 100, 0, 0, 0, 0, 0, 11, 95012, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "On passenger boarded (vehicle) - Self: Cast spell 95012 on Action invoker // ");
-- Conditions
DELETE FROM `conditions` WHERE `SourceEntry` IN (95284, 95285, 95209, 95013) AND `SourceTypeOrReferenceId`= 13;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ScriptName`, `Comment`) VALUES
(13, 1, 95284, 0, 0, 31, 0, 3, 51395, 0, 0, 0, '', 'Teleport - Target Throne of the Tides Teleporter'),
(13, 1, 95284, 0, 1, 31, 0, 3, 51397, 0, 0, 0, '', 'Teleport - Target Stonecore Teleporter'),
(13, 1, 95285, 0, 0, 31, 0, 3, 51391, 0, 0, 0, '', 'Teleport - Target Throne of the Tides Teleporter'),
(13, 1, 95285, 0, 1, 31, 0, 3, 51396, 0, 0, 0, '', 'Teleport - Target Stonecore Teleporter'),
(13, 1, 95209, 0, 1, 31, 0, 3, 51340, 361877, 0, 0, '', 'Twilight Portal - Target Twilight Portal'),
(13, 1, 95013, 0, 1, 31, 0, 3, 51340, 361878, 0, 0, '', 'Twilight Portal - Target Twilight Portal');
DELETE FROM `spell_target_position` WHERE `ID` IN (95284, 95285);
-- Spawn Groups
DELETE FROM `spawn_group_template` WHERE `groupId`= 434;
INSERT INTO `spawn_group_template` (`groupId`, `groupName`, `groupFlags`) VALUES
(434, 'Blackrock Caverns - Twilight Portals', 4);
DELETE FROM `instance_spawn_groups` WHERE `instanceMapId`= 645 AND `spawnGroupId`= 434;
INSERT INTO `instance_spawn_groups` (`instanceMapId`, `bossStateId`, `bossStates`, `spawnGroupId`, `flags`) VALUES
(645, 2, 8, 434, 1);
DELETE FROM `spawn_group` WHERE `groupId`= 434;
INSERT INTO `spawn_group` (`groupId`, `spawnType`, `spawnId`) VALUES
(434, 0, 361878),
(434, 0, 361877);

View File

@@ -4195,13 +4195,6 @@ void SpellMgr::LoadSpellInfoCorrections()
//
// STONECORE SPELLS
//
ApplySpellFix({
95284, // Teleport (from entrance to Slabhide)
95285 // Teleport (from Slabhide to entrance)
}, [](SpellInfo* spellInfo)
{
spellInfo->Effects[EFFECT_0].TargetB = SpellImplicitTargetInfo(TARGET_DEST_DB);
});
// Paralyze
ApplySpellFix({ 92426 }, [](SpellInfo* spellInfo)
@@ -4834,6 +4827,15 @@ void SpellMgr::LoadSpellInfoCorrections()
spellInfo->AuraInterruptFlags &= ~AURA_INTERRUPT_FLAG_TURNING;
});
// Twilight Portal
ApplySpellFix({
95210,
95012
}, [](SpellInfo* spellInfo)
{
spellInfo->Effects[EFFECT_0].AuraPeriod = 1250;
});
// ENDOF BLACKROCK CAVERNS SPELLS
//

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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