Scripts/Ulduar: Rewrite Hodir (#31682)
(cherry picked from commit 24dcc1f200fa84c44a73a9b474ce8884a2d66301)
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
-- Snowpacked Icicle Target
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_snowpacked_icicle_target' WHERE `entry` = 33174;
|
||||
|
||||
-- Messed up friends
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_hodir_druid' WHERE `entry` = 32901;
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_hodir_shaman' WHERE `entry` = 32900;
|
||||
|
||||
-- Priest
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` = 62809;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(13,1,62809,0,0,31,0,3,32893,0,0,0,0,"","Group 0: Spell 'Great Heal' (Effect 0) targets creature 'Missy Flamecuffs'"),
|
||||
(13,1,62809,0,1,31,0,3,32897,0,0,0,0,"","Group 1: Spell 'Great Heal' (Effect 0) targets creature 'Field Medic Penny'"),
|
||||
(13,1,62809,0,2,31,0,3,32900,0,0,0,0,"","Group 2: Spell 'Great Heal' (Effect 0) targets creature 'Elementalist Avuun'"),
|
||||
(13,1,62809,0,3,31,0,3,32901,0,0,0,0,"","Group 3: Spell 'Great Heal' (Effect 0) targets creature 'Ellie Nightfeather'"),
|
||||
(13,1,62809,0,4,31,0,3,32941,0,0,0,0,"","Group 4: Spell 'Great Heal' (Effect 0) targets creature 'Tor Greycloud'"),
|
||||
(13,1,62809,0,5,31,0,3,32946,0,0,0,0,"","Group 5: Spell 'Great Heal' (Effect 0) targets creature 'Veesha Blazeweaver'"),
|
||||
(13,1,62809,0,6,31,0,3,32948,0,0,0,0,"","Group 6: Spell 'Great Heal' (Effect 0) targets creature 'Battle-Priest Eliza'"),
|
||||
(13,1,62809,0,7,31,0,3,32950,0,0,0,0,"","Group 7: Spell 'Great Heal' (Effect 0) targets creature 'Spiritwalker Yona'"),
|
||||
(13,1,62809,0,8,31,0,3,33325,0,0,0,0,"","Group 8: Spell 'Great Heal' (Effect 0) targets creature 'Eivi Nightfeather'"),
|
||||
(13,1,62809,0,9,31,0,3,33326,0,0,0,0,"","Group 10: Spell 'Great Heal' (Effect 0) targets creature 'Field Medic Jessi'"),
|
||||
(13,1,62809,0,10,31,0,3,33327,0,0,0,0,"","Group 11: Spell 'Great Heal' (Effect 0) targets creature 'Sissy Flamecuffs'"),
|
||||
(13,1,62809,0,11,31,0,3,33328,0,0,0,0,"","Group 12: Spell 'Great Heal' (Effect 0) targets creature 'Elementalist Mahfuun'"),
|
||||
(13,1,62809,0,12,31,0,3,33330,0,0,0,0,"","Group 13: Spell 'Great Heal' (Effect 0) targets creature 'Battle-Priest Gina'"),
|
||||
(13,1,62809,0,13,31,0,3,33331,0,0,0,0,"","Group 14: Spell 'Great Heal' (Effect 0) targets creature 'Amira Blazeweaver'"),
|
||||
(13,1,62809,0,14,31,0,3,33332,0,0,0,0,"","Group 15: Spell 'Great Heal' (Effect 0) targets creature 'Spiritwalker Tara'"),
|
||||
(13,1,62809,0,15,31,0,3,33333,0,0,0,0,"","Group 16: Spell 'Great Heal' (Effect 0) targets creature 'Kar Greycloud'");
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_hodir_dispel_magic';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(63499, 'spell_hodir_dispel_magic');
|
||||
|
||||
-- Shaman
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_hodir_storm_cloud_primer';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(62797, 'spell_hodir_storm_cloud_primer');
|
||||
|
||||
-- Mage
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` = 64543;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(13,1,64543,0,0,31,0,3,32926,0,0,0,0,"","Group 0: Spell 'Melt Ice' (Effect 0) targets creature 'Flash Freeze'"),
|
||||
(13,1,64543,0,1,31,0,3,32938,0,0,0,0,"","Group 1: Spell 'Melt Ice' (Effect 0) targets creature 'Flash Freeze'");
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_hodir_melt_ice';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(64543, 'spell_hodir_melt_ice');
|
||||
|
||||
-- Toasty Fire
|
||||
UPDATE `creature_template` SET `unit_flags` = 33554432, `flags_extra` = `flags_extra` &~ 2 WHERE `entry` = 33342;
|
||||
|
||||
-- Flash Freeze (Init)
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_flash_freeze_init' WHERE `entry` = 32938;
|
||||
|
||||
-- Flash Freeze (Combat)
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra` &~ (128|8192) WHERE `entry` IN (32926,33352);
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_flash_freeze_combat' WHERE `entry` = 32926;
|
||||
|
||||
-- Coolest Friends
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` |32768|512, `StringId` = 'HodirCoolestFriend' WHERE `entry` IN (32893,32897,32900,32901,32941,32946,32948,32950,33325,33326,33327,33328,33330,33331,33332,33333);
|
||||
|
||||
-- Hodir
|
||||
DELETE FROM `creature_text` WHERE `CreatureID` = 32845 AND `GroupID` = 3;
|
||||
UPDATE `creature_text` SET `Sound` = 15556 WHERE `CreatureID` = 32845 AND `GroupID` = 8;
|
||||
|
||||
UPDATE `spell_script_names` SET `ScriptName` = 'spell_hodir_biting_cold_area_aura' WHERE `ScriptName` = 'spell_biting_cold';
|
||||
UPDATE `spell_script_names` SET `ScriptName` = 'spell_hodir_biting_cold_periodic' WHERE `ScriptName` = 'spell_biting_cold_dot';
|
||||
|
||||
DELETE FROM `spell_target_position` WHERE `ID` = 62501;
|
||||
INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `VerifiedBuild`) VALUES
|
||||
(62501,0,603,2036.17,-201.843,432.687,3.14159,0);
|
||||
|
||||
UPDATE `gameobject_template_addon` SET `flags` = 16 WHERE `entry` IN (194201,194307,194308);
|
||||
UPDATE `gameobject` SET `spawntimesecs` = 604800 WHERE `id` IN (194307,194308);
|
||||
|
||||
DELETE FROM `gameobject` WHERE `guid` IN (9908,9911) AND `id` IN (194200,194201);
|
||||
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `phaseId`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `StringId`, `VerifiedBuild`) VALUES
|
||||
(9908,194200,603,0,0,'14,33',0,2036.169921875,-201.842605590820312,432.686798095703125,3.141592741012573242,0,0,-1,0,604800,255,1,'',NULL,0);
|
||||
-- (9911,194201,603,0,0,2,1,2036.169921875,-201.842605590820312,432.686798095703125,3.141592741012573242,0,0,-1,0,604800,255,1,'',NULL,0);
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
|
||||
'spell_hodir_shatter_chest',
|
||||
'spell_hodir_icicle',
|
||||
'spell_hodir_icicle_force_cast',
|
||||
'spell_hodir_flash_freeze',
|
||||
'spell_hodir_freeze');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(65272, 'spell_hodir_shatter_chest'),
|
||||
(63545, 'spell_hodir_icicle'),
|
||||
(62476, 'spell_hodir_icicle_force_cast'),
|
||||
(62477, 'spell_hodir_icicle_force_cast'),
|
||||
(61968, 'spell_hodir_flash_freeze'),
|
||||
(62469, 'spell_hodir_freeze');
|
||||
|
||||
-- First is replaced by spell scripts, last 2 are simply removed since are based on nothing \ or simply wrong
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (62821,61969,61990);
|
||||
|
||||
--
|
||||
UPDATE `serverside_spell` SET `DurationIndex` = 327 WHERE `Id` = 64899;
|
||||
UPDATE `serverside_spell_effect` SET `ImplicitTarget1` = 22 /*18*/, `ImplicitTarget2` = 15 /*16*/ WHERE `SpellID` = 64899 AND `EffectIndex` = 0;
|
||||
|
||||
DELETE FROM `serverside_spell_effect` WHERE `SpellID` = 64899 AND `EffectIndex` = 1;
|
||||
INSERT INTO `serverside_spell_effect` (`SpellID`, `EffectIndex`, `Effect`, `EffectAura`, `EffectRadiusIndex1`, `ImplicitTarget1`, `ImplicitTarget2`) VALUES
|
||||
(64899, 1, 6, 4, 28, 22, 15);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -187,7 +187,6 @@ class instance_ulduar : public InstanceMapScript
|
||||
|
||||
_maxArmorItemLevel = 0;
|
||||
_maxWeaponItemLevel = 0;
|
||||
HodirRareCacheData = 0;
|
||||
ColossusData = 0;
|
||||
elderCount = 0;
|
||||
illusion = 0;
|
||||
@@ -202,6 +201,8 @@ class instance_ulduar : public InstanceMapScript
|
||||
|
||||
memset(_summonObservationRingKeeper, 0, sizeof(_summonObservationRingKeeper));
|
||||
memset(_summonYSKeeper, 0, sizeof(_summonYSKeeper));
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_ULDUAR_TEAM_IN_INSTANCE, map->GetTeamIdInInstance() == TEAM_HORDE ? 2 : 1);
|
||||
}
|
||||
|
||||
// Creatures
|
||||
@@ -229,7 +230,6 @@ class instance_ulduar : public InstanceMapScript
|
||||
ObjectGuid BrainRoomDoorGUIDs[3];
|
||||
|
||||
// Miscellaneous
|
||||
uint32 HodirRareCacheData;
|
||||
uint32 ColossusData;
|
||||
uint8 elderCount;
|
||||
uint8 illusion;
|
||||
@@ -406,22 +406,6 @@ class instance_ulduar : public InstanceMapScript
|
||||
uint32 entry = data->id;
|
||||
switch (entry)
|
||||
{
|
||||
case NPC_EIVI_NIGHTFEATHER:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_TOR_GREYCLOUD : NPC_EIVI_NIGHTFEATHER;
|
||||
case NPC_ELLIE_NIGHTFEATHER:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_KAR_GREYCLOUD : NPC_ELLIE_NIGHTFEATHER;
|
||||
case NPC_ELEMENTALIST_MAHFUUN:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_SPIRITWALKER_TARA : NPC_ELEMENTALIST_MAHFUUN;
|
||||
case NPC_ELEMENTALIST_AVUUN:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_SPIRITWALKER_YONA : NPC_ELEMENTALIST_AVUUN;
|
||||
case NPC_MISSY_FLAMECUFFS:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_AMIRA_BLAZEWEAVER : NPC_MISSY_FLAMECUFFS;
|
||||
case NPC_SISSY_FLAMECUFFS:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_VEESHA_BLAZEWEAVER : NPC_SISSY_FLAMECUFFS;
|
||||
case NPC_FIELD_MEDIC_PENNY:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_BATTLE_PRIEST_ELIZA : NPC_FIELD_MEDIC_PENNY;
|
||||
case NPC_FIELD_MEDIC_JESSI:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_BATTLE_PRIEST_GINA : NPC_FIELD_MEDIC_JESSI;
|
||||
case NPC_MERCENARY_CAPTAIN_H:
|
||||
return instance->GetTeamInInstance() == HORDE ? NPC_MERCENARY_CAPTAIN_A : NPC_MERCENARY_CAPTAIN_H;
|
||||
case NPC_MERCENARY_SOLDIER_H:
|
||||
@@ -581,6 +565,22 @@ class instance_ulduar : public InstanceMapScript
|
||||
flameLeviathan->AI()->DoAction(ACTION_TOWER_OF_LIFE_DESTROYED);
|
||||
break;
|
||||
|
||||
// Hodir Event triggers
|
||||
case EVENT_INITIAL_AGGRO_HODIR:
|
||||
if (Creature* hodir = GetCreature(DATA_HODIR))
|
||||
hodir->AI()->DoAction(ACTION_INITIAL_AGGRO_HODIR);
|
||||
break;
|
||||
case EVENT_CACHE_SHATTERED:
|
||||
if (Creature* hodir = GetCreature(DATA_HODIR))
|
||||
hodir->AI()->DoAction(ACTION_CACHE_SHATTERED);
|
||||
if (GameObject* hodirRareCache = instance->GetGameObject(HodirRareCacheGUID))
|
||||
hodirRareCache->ActivateObject(GameObjectActions::Despawn, 0);
|
||||
break;
|
||||
case EVENT_FLASH_FREEZE_FINISHED:
|
||||
if (Creature* hodir = GetCreature(DATA_HODIR))
|
||||
hodir->AI()->DoAction(ACTION_FLASH_FREEZE_FINISHED);
|
||||
break;
|
||||
|
||||
// Yogg-Saron Event triggers
|
||||
case EVENT_ACTIVATE_SANITY_WELL:
|
||||
if (Creature* freya = instance->GetCreature(KeeperGUIDs[0]))
|
||||
@@ -641,11 +641,10 @@ class instance_ulduar : public InstanceMapScript
|
||||
case DATA_HODIR:
|
||||
if (state == DONE)
|
||||
{
|
||||
if (GameObject* HodirRareCache = instance->GetGameObject(HodirRareCacheGUID))
|
||||
if (GetData(DATA_HODIR_RARE_CACHE))
|
||||
HodirRareCache->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
if (GameObject* HodirChest = instance->GetGameObject(HodirChestGUID))
|
||||
HodirChest->SetRespawnTime(HodirChest->GetRespawnDelay());
|
||||
if (GameObject* hodirRareCache = instance->GetGameObject(HodirRareCacheGUID))
|
||||
hodirRareCache->ActivateObject(GameObjectActions::MakeActive, 0);
|
||||
if (GameObject* hodirChest = instance->GetGameObject(HodirChestGUID))
|
||||
hodirChest->ActivateObject(GameObjectActions::MakeActive, 0);
|
||||
|
||||
instance->SummonCreature(NPC_HODIR_OBSERVATION_RING, ObservationRingKeepersPos[1]);
|
||||
}
|
||||
@@ -732,15 +731,6 @@ class instance_ulduar : public InstanceMapScript
|
||||
_events.ScheduleEvent(EVENT_LEVIATHAN_BREAK_DOOR, 5s);
|
||||
}
|
||||
break;
|
||||
case DATA_HODIR_RARE_CACHE:
|
||||
HodirRareCacheData = data;
|
||||
if (!HodirRareCacheData)
|
||||
{
|
||||
if (Creature* hodir = GetCreature(DATA_HODIR))
|
||||
if (GameObject* gameObject = instance->GetGameObject(HodirRareCacheGUID))
|
||||
hodir->RemoveGameObject(gameObject, false);
|
||||
}
|
||||
break;
|
||||
case DATA_UNBROKEN:
|
||||
Unbroken = data != 0;
|
||||
break;
|
||||
@@ -823,8 +813,6 @@ class instance_ulduar : public InstanceMapScript
|
||||
{
|
||||
case DATA_COLOSSUS:
|
||||
return ColossusData;
|
||||
case DATA_HODIR_RARE_CACHE:
|
||||
return HodirRareCacheData;
|
||||
case DATA_UNBROKEN:
|
||||
return uint32(Unbroken);
|
||||
case DATA_ILLUSION:
|
||||
|
||||
@@ -331,17 +331,23 @@ enum UUEventIds
|
||||
EVENT_TOWER_OF_FROST_DESTROYED = 21032,
|
||||
EVENT_TOWER_OF_FLAMES_DESTROYED = 21033,
|
||||
EVENT_TOWER_OF_LIFE_DESTROYED = 21030,
|
||||
EVENT_INITIAL_AGGRO_HODIR = 21045,
|
||||
EVENT_CACHE_SHATTERED = 20907,
|
||||
EVENT_FLASH_FREEZE_FINISHED = 20896,
|
||||
EVENT_ACTIVATE_SANITY_WELL = 21432,
|
||||
EVENT_HODIRS_PROTECTIVE_GAZE_PROC = 21437,
|
||||
};
|
||||
|
||||
enum LeviathanActions
|
||||
enum UUActions
|
||||
{
|
||||
ACTION_TOWER_OF_STORM_DESTROYED = 1,
|
||||
ACTION_TOWER_OF_FROST_DESTROYED = 2,
|
||||
ACTION_TOWER_OF_FLAMES_DESTROYED = 3,
|
||||
ACTION_TOWER_OF_LIFE_DESTROYED = 4,
|
||||
ACTION_MOVE_TO_CENTER_POSITION = 10,
|
||||
ACTION_INITIAL_AGGRO_HODIR = 3284500,
|
||||
ACTION_CACHE_SHATTERED = 3284501,
|
||||
ACTION_FLASH_FREEZE_FINISHED = 3284502
|
||||
};
|
||||
|
||||
enum UlduarAchievementCriteriaIds
|
||||
@@ -410,9 +416,6 @@ enum UlduarData
|
||||
DATA_MOLGEIM,
|
||||
DATA_BRUNDIR,
|
||||
|
||||
// Hodir
|
||||
DATA_HODIR_RARE_CACHE,
|
||||
|
||||
// Mimiron
|
||||
DATA_LEVIATHAN_MK_II,
|
||||
DATA_VX_001,
|
||||
@@ -465,12 +468,22 @@ enum UlduarData
|
||||
DATA_BRONZEBEARD_RADIO
|
||||
};
|
||||
|
||||
enum UlduarGameEvents
|
||||
{
|
||||
EVENT_ID_ENGAGE_HODIR = 20905
|
||||
};
|
||||
|
||||
enum UlduarWorldStates
|
||||
{
|
||||
WORLD_STATE_FLAME_LEVIATHAN_DESTROYED_TOWERS = 4129,
|
||||
WORLD_STATE_YOGG_SARON_KEEPERS = 4116,
|
||||
WORLD_STATE_ULDUAR_TEAM_IN_INSTANCE = 4016,
|
||||
WORLD_STATE_ALGALON_DESPAWN_TIMER = 4131,
|
||||
WORLD_STATE_ALGALON_TIMER_ENABLED = 5636,
|
||||
WORLD_STATE_HODIR_GETTING_COLD_FAILED = 4144,
|
||||
WORLD_STATE_HODIR_CHEESE_THE_FREEZE_FAILED = 4145,
|
||||
WORLD_STATE_HODIR_COOLEST_FRIENDS_FAILED = 4146,
|
||||
WORLD_STATE_HODIR_THIS_CACHE_WAS_RARE_FAILED = 4203,
|
||||
WORLD_STATE_FLAME_LEVIATHAN_DESTROYED_TOWERS = 4129,
|
||||
WORLD_STATE_YOGG_SARON_KEEPERS = 4116,
|
||||
};
|
||||
|
||||
enum UlduarAchievementData
|
||||
|
||||
Reference in New Issue
Block a user