mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Core/Scripts: Palehoof rewritten & Utgarde Pinnacle updated (#18712)
Closes #15405
This commit is contained in:
50
sql/updates/world/3.3.5/2087_20_20_00_world.sql
Normal file
50
sql/updates/world/3.3.5/2087_20_20_00_world.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=47670; -- Awaken Gortok
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13,1,47670,0,0,31,0,3,26687,0,0,0,0,'','Effect_0 hits Gortok Palehoof');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=47669; -- Awaken Subboss
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13,1,47669,0,0,31,0,3,26683,0,0,0,0,'','Effect_0 hits Frenzied Worgen'),
|
||||
(13,1,47669,0,1,31,0,3,26684,0,0,0,0,'','Effect_0 hits Ravenous Furbolg'),
|
||||
(13,1,47669,0,2,31,0,3,26685,0,0,0,0,'','Effect_0 hits Massive Jormungar'),
|
||||
(13,1,47669,0,3,31,0,3,26686,0,0,0,0,'','Effect_0 hits Ferocious Rhino');
|
||||
|
||||
DELETE FROM `linked_respawn` WHERE `linkedGuid`=126102;
|
||||
DELETE FROM `creature` WHERE `guid` IN(126091,126092,126093,126094,126256);
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN(126091,126092,126093,126094,126256);
|
||||
DELETE FROM `creature_summon_groups` WHERE `summonerId`=26687; -- Gortok Palehoof
|
||||
INSERT INTO `creature_summon_groups` (`summonerId`,`summonerType`,`groupId`,`entry`,`position_x`,`position_y`,`position_z`,`orientation`,`summonType`,`summonTime`) VALUES
|
||||
(26687,0,1,26683,262.195,-440.502,104.82 ,3.9968 ,6,6000),
|
||||
(26687,0,1,26684,262.119,-463.103,104.787,2.04204,6,6000),
|
||||
(26687,0,1,26685,290.781,-440.816,104.816,3.56047,6,6000),
|
||||
(26687,0,1,26686,291.549,-462.653,104.824,2.67035,6,6000),
|
||||
(26687,0,1,22515,238.608,-460.71 ,109.567,1.53589,8,0 );
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN
|
||||
('spell_palehoof_crazed',
|
||||
'spell_palehoof_awaken_subboss',
|
||||
'spell_palehoof_awaken_gortok',
|
||||
'spell_palehoof_crazed_effect');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(48139,'spell_palehoof_crazed'),
|
||||
(47669,'spell_palehoof_awaken_subboss'),
|
||||
(47670,'spell_palehoof_awaken_gortok'),
|
||||
(48146,'spell_palehoof_crazed_effect');
|
||||
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=48048;
|
||||
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_frenzied_worgen' WHERE `entry`=26683;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_ravenous_furbolg' WHERE `entry`=26684;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_massive_jormungar' WHERE `entry`=26685;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_ferocious_rhino' WHERE `entry`=26686;
|
||||
UPDATE `creature_template` SET `ScriptName`='' WHERE `entry`=26688;
|
||||
|
||||
DELETE FROM `spelldifficulty_dbc` WHERE `id` IN (48261,48256,48140,48137,48105,48136,48133);
|
||||
INSERT INTO `spelldifficulty_dbc` (`id`, `spellid0`, `spellid1`) VALUES
|
||||
(48261, 48261, 59268),
|
||||
(48256, 48256, 59267),
|
||||
(48140, 48140, 59273),
|
||||
(48137, 48137, 59265),
|
||||
(48105, 48105, 59263),
|
||||
(48136, 48136, 59272),
|
||||
(48133, 48133, 59271);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -164,7 +164,7 @@ public:
|
||||
_Reset();
|
||||
Initialize();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
if (!ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_GRAUF)))
|
||||
if (!instance->GetCreature(DATA_GRAUF))
|
||||
me->SummonCreature(NPC_GRAUF, GraufLoc);
|
||||
|
||||
instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI);
|
||||
@@ -242,7 +242,7 @@ public:
|
||||
})
|
||||
.Schedule(Seconds(2), [this](TaskContext /*context*/)
|
||||
{
|
||||
if (Creature* grauf = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_GRAUF)))
|
||||
if (Creature* grauf = instance->GetCreature(DATA_GRAUF))
|
||||
DoCast(grauf, SPELL_RIDE_GRAUF);
|
||||
});
|
||||
|
||||
@@ -347,7 +347,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* skadi = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SKADI_THE_RUTHLESS)))
|
||||
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
|
||||
skadi->AI()->DoAction(ACTION_GAUNTLET_END);
|
||||
|
||||
me->DespawnOrUnsummon(6000);
|
||||
@@ -412,7 +412,7 @@ public:
|
||||
{
|
||||
me->GetMotionMaster()->MovePath(GRAUF_PATH_LEFT, false);
|
||||
DoCast(SPELL_FREEZING_CLOUD_LEFT_PERIODIC);
|
||||
if (Creature* skadi = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SKADI_THE_RUTHLESS)))
|
||||
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
|
||||
skadi->AI()->DoAction(ACTION_FLAME);
|
||||
})
|
||||
.Schedule(Seconds(10), [this](TaskContext /*context*/)
|
||||
@@ -431,7 +431,7 @@ public:
|
||||
{
|
||||
me->GetMotionMaster()->MovePath(GRAUF_PATH_RIGHT, false);
|
||||
DoCast(SPELL_FREEZING_CLOUD_RIGHT_PERIODIC);
|
||||
if (Creature* skadi = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SKADI_THE_RUTHLESS)))
|
||||
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
|
||||
skadi->AI()->DoAction(ACTION_FLAME);
|
||||
})
|
||||
.Schedule(Seconds(10), [this](TaskContext /*context*/)
|
||||
@@ -447,7 +447,7 @@ public:
|
||||
void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override
|
||||
{
|
||||
if (spell->Id == SPELL_LAUNCH_HARPOON)
|
||||
if (Creature* skadi = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SKADI_THE_RUTHLESS)))
|
||||
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
|
||||
skadi->AI()->DoAction(ACTION_HARPOON_HIT);
|
||||
}
|
||||
|
||||
@@ -488,7 +488,7 @@ struct npc_skadi_trashAI : public ScriptedAI
|
||||
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
if (Creature* skadi = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SKADI_THE_RUTHLESS)))
|
||||
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
|
||||
skadi->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
@@ -946,7 +946,7 @@ class at_skadi_gaunlet : public AreaTriggerScript
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
{
|
||||
if (instance->GetBossState(DATA_SKADI_THE_RUTHLESS) == NOT_STARTED)
|
||||
if (Creature* skadi = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_SKADI_THE_RUTHLESS)))
|
||||
if (Creature* skadi = instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
|
||||
{
|
||||
skadi->AI()->DoAction(ACTION_START_ENCOUNTER);
|
||||
return true;
|
||||
|
||||
@@ -188,7 +188,7 @@ class boss_svala : public CreatureScript
|
||||
events.SetPhase(INTRO);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
if (GameObject* mirror = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_UTGARDE_MIRROR)))
|
||||
if (GameObject* mirror = instance->GetGameObject(DATA_UTGARDE_MIRROR))
|
||||
mirror->SetGoState(GO_STATE_READY);
|
||||
|
||||
if (Creature* arthas = me->SummonCreature(NPC_ARTHAS, ArthasPos, TEMPSUMMON_MANUAL_DESPAWN))
|
||||
@@ -331,7 +331,7 @@ class boss_svala : public CreatureScript
|
||||
break;
|
||||
}
|
||||
case EVENT_INTRO_DESPAWN_ARTHAS:
|
||||
if (GameObject* mirror = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_UTGARDE_MIRROR)))
|
||||
if (GameObject* mirror = instance->GetGameObject(DATA_UTGARDE_MIRROR))
|
||||
mirror->SetGoState(GO_STATE_ACTIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (Creature* arthas = ObjectAccessor::GetCreature(*me, _arthasGUID))
|
||||
|
||||
@@ -28,7 +28,30 @@ DoorData const doorData[] =
|
||||
{
|
||||
{ GO_SKADI_THE_RUTHLESS_DOOR, DATA_SKADI_THE_RUTHLESS, DOOR_TYPE_PASSAGE },
|
||||
{ GO_KING_YMIRON_DOOR, DATA_KING_YMIRON, DOOR_TYPE_PASSAGE },
|
||||
{ 0, 0, DOOR_TYPE_ROOM } // END
|
||||
{ 0, 0, DOOR_TYPE_ROOM } // END
|
||||
};
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
{
|
||||
{ NPC_SVALA_SORROWGRAVE, DATA_SVALA_SORROWGRAVE },
|
||||
{ NPC_GORTOK_PALEHOOF, DATA_GORTOK_PALEHOOF },
|
||||
{ NPC_SKADI_THE_RUTHLESS, DATA_SKADI_THE_RUTHLESS },
|
||||
{ NPC_KING_YMIRON, DATA_KING_YMIRON },
|
||||
{ NPC_FRENZIED_WORGEN, DATA_FRENZIED_WORGEN },
|
||||
{ NPC_RAVENOUS_FURBOLG, DATA_RAVENOUS_FURBOLG },
|
||||
{ NPC_MASSIVE_JORMUNGAR, DATA_MASSIVE_JORMUNGAR },
|
||||
{ NPC_FEROCIOUS_RHINO, DATA_FEROCIOUS_RHINO },
|
||||
{ NPC_PALEHOOF_ORB, DATA_GORTOK_ORB },
|
||||
{ NPC_SVALA, DATA_SVALA },
|
||||
{ NPC_GRAUF, DATA_GRAUF },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
ObjectData const gameObjectData[] =
|
||||
{
|
||||
{ GO_UTGARDE_MIRROR, DATA_UTGARDE_MIRROR },
|
||||
{ GO_GORTOK_PALEHOOF_SPHERE, DATA_GORTOK_PALEHOOF_SPHERE },
|
||||
{ 0, 0 } //END
|
||||
};
|
||||
|
||||
class instance_utgarde_pinnacle : public InstanceMapScript
|
||||
@@ -44,158 +67,37 @@ class instance_utgarde_pinnacle : public InstanceMapScript
|
||||
SetBossNumber(EncounterCount);
|
||||
LoadBossBoundaries(boundaries);
|
||||
LoadDoorData(doorData);
|
||||
LoadObjectData(creatureData, gameObjectData);
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_SVALA_SORROWGRAVE:
|
||||
SvalaSorrowgraveGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_GORTOK_PALEHOOF:
|
||||
GortokPalehoofGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_SKADI_THE_RUTHLESS:
|
||||
SkadiTheRuthlessGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_KING_YMIRON:
|
||||
KingYmironGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_FRENZIED_WORGEN:
|
||||
FrenziedWorgenGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_RAVENOUS_FURBOLG:
|
||||
RavenousFurbolgGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_MASSIVE_JORMUNGAR:
|
||||
MassiveJormungarGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_FEROCIOUS_RHINO:
|
||||
FerociousRhinoGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_SVALA:
|
||||
SvalaGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_PALEHOOF_ORB:
|
||||
PalehoofOrbGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_GRAUF:
|
||||
GraufGUID = creature->GetGUID();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override
|
||||
{
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
case GO_UTGARDE_MIRROR:
|
||||
UtgardeMirrorGUID = go->GetGUID();
|
||||
break;
|
||||
case GO_GORTOK_PALEHOOF_SPHERE:
|
||||
GortokPalehoofSphereGUID = go->GetGUID();
|
||||
if (GetBossState(DATA_GORTOK_PALEHOOF) == DONE)
|
||||
{
|
||||
HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
break;
|
||||
case GO_SKADI_THE_RUTHLESS_DOOR:
|
||||
case GO_KING_YMIRON_DOOR:
|
||||
AddDoor(go, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
InstanceScript::OnGameObjectCreate(go);
|
||||
|
||||
void OnGameObjectRemove(GameObject* go) override
|
||||
{
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
case GO_SKADI_THE_RUTHLESS_DOOR:
|
||||
case GO_KING_YMIRON_DOOR:
|
||||
AddDoor(go, false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (go->GetEntry() == GO_GORTOK_PALEHOOF_SPHERE)
|
||||
if (GetBossState(DATA_GORTOK_PALEHOOF) == DONE)
|
||||
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void SetGuidData(uint32 type, ObjectGuid data) override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_SACRIFICED_PLAYER:
|
||||
SacrificedPlayerGUID = data;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (type == DATA_SACRIFICED_PLAYER)
|
||||
SacrificedPlayerGUID = data;
|
||||
|
||||
InstanceScript::SetGuidData(type, data);
|
||||
}
|
||||
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_SVALA_SORROWGRAVE:
|
||||
return SvalaSorrowgraveGUID;
|
||||
case DATA_GORTOK_PALEHOOF:
|
||||
return GortokPalehoofGUID;
|
||||
case DATA_SKADI_THE_RUTHLESS:
|
||||
return SkadiTheRuthlessGUID;
|
||||
case DATA_KING_YMIRON:
|
||||
return KingYmironGUID;
|
||||
case DATA_FRENZIED_WORGEN:
|
||||
return FrenziedWorgenGUID;
|
||||
case DATA_RAVENOUS_FURBOLG:
|
||||
return RavenousFurbolgGUID;
|
||||
case DATA_MASSIVE_JORMUNGAR:
|
||||
return MassiveJormungarGUID;
|
||||
case DATA_FEROCIOUS_RHINO:
|
||||
return FerociousRhinoGUID;
|
||||
case DATA_GORTOK_ORB:
|
||||
return PalehoofOrbGUID;
|
||||
case DATA_GORTOK_PALEHOOF_SPHERE:
|
||||
return GortokPalehoofSphereGUID;
|
||||
case DATA_UTGARDE_MIRROR:
|
||||
return UtgardeMirrorGUID;
|
||||
case DATA_SVALA:
|
||||
return SvalaGUID;
|
||||
case DATA_SACRIFICED_PLAYER:
|
||||
return SacrificedPlayerGUID;
|
||||
case DATA_GRAUF:
|
||||
return GraufGUID;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (type == DATA_SACRIFICED_PLAYER)
|
||||
return SacrificedPlayerGUID;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
return InstanceScript::GetGuidData(type);
|
||||
}
|
||||
|
||||
protected:
|
||||
ObjectGuid SvalaSorrowgraveGUID;
|
||||
ObjectGuid GortokPalehoofGUID;
|
||||
ObjectGuid SkadiTheRuthlessGUID;
|
||||
ObjectGuid KingYmironGUID;
|
||||
|
||||
ObjectGuid UtgardeMirrorGUID;
|
||||
ObjectGuid GortokPalehoofSphereGUID;
|
||||
|
||||
ObjectGuid FrenziedWorgenGUID;
|
||||
ObjectGuid RavenousFurbolgGUID;
|
||||
ObjectGuid FerociousRhinoGUID;
|
||||
ObjectGuid MassiveJormungarGUID;
|
||||
|
||||
ObjectGuid PalehoofOrbGUID;
|
||||
|
||||
ObjectGuid SvalaGUID;
|
||||
ObjectGuid SacrificedPlayerGUID;
|
||||
|
||||
ObjectGuid GraufGUID;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
@@ -47,6 +47,7 @@ enum UPDataTypes
|
||||
|
||||
enum UPCreatureIds
|
||||
{
|
||||
// Bosses
|
||||
NPC_SVALA_SORROWGRAVE = 26668,
|
||||
NPC_GORTOK_PALEHOOF = 26687,
|
||||
NPC_SKADI_THE_RUTHLESS = 26693,
|
||||
@@ -60,7 +61,8 @@ enum UPCreatureIds
|
||||
NPC_RAVENOUS_FURBOLG = 26684,
|
||||
NPC_MASSIVE_JORMUNGAR = 26685,
|
||||
NPC_FEROCIOUS_RHINO = 26686,
|
||||
NPC_PALEHOOF_ORB = 26688,
|
||||
NPC_PALEHOOF_ORB = 22515, // World Trigger
|
||||
NPC_JORMUNGAR_WORM = 27228,
|
||||
|
||||
// Skadi
|
||||
NPC_GRAUF = 26893,
|
||||
|
||||
Reference in New Issue
Block a user