Core/Scripts: Palehoof rewritten & Utgarde Pinnacle updated (#18712)

Closes #15405
This commit is contained in:
Keader
2017-01-06 20:47:36 -02:00
committed by Aokromes
parent 047673175b
commit d47b45d6ec
6 changed files with 668 additions and 870 deletions

View 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);

View File

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

View File

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

View File

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

View File

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