Scripts/Ulduar: Add proper support for Razorscale harpoon event.

Add script for Razorscale Controller.
Add spell script for Devouring Flame.
A little code cleanup in script
This commit is contained in:
Supabad
2011-03-24 01:13:53 +02:00
parent d124515e58
commit 66ca2a88c4
11 changed files with 959 additions and 674 deletions
+3
View File
@@ -1514,6 +1514,8 @@ UPDATE `creature_template` SET `ScriptName`='boss_ignis' WHERE `entry`=33118;
UPDATE `creature_template` SET `ScriptName`='npc_iron_construct' WHERE `entry`=33121;
UPDATE `creature_template` SET `ScriptName`='npc_scorch_ground' WHERE `entry`=33221;
UPDATE `creature_template` SET `ScriptName`='boss_razorscale' WHERE `entry`=33186;
UPDATE `creature_template` SET `ScriptName`='boss_razorscale_controller' WHERE `entry`=33233;
UPDATE `gameobject_template` SET `ScriptName`='go_razorscale_harpoon' WHERE `entry` IN(194519,194541,194542,194543);
UPDATE `creature_template` SET `ScriptName`='npc_devouring_flame' WHERE `entry`=34188;
UPDATE `creature_template` SET `ScriptName`='npc_mole_machine_trigger' WHERE `entry`=33245;
UPDATE `creature_template` SET `ScriptName`='npc_expedition_commander' WHERE `entry`=33210;
@@ -2060,6 +2062,7 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 68646, 'spell_gen_leeching_swarm'),
( 68647, 'spell_gen_leeching_swarm'),
-- Ulduar
( 63308, 'spell_razorscale_devouring_flame'),
( 62717, 'spell_ignis_slag_pot'),
( 63477, 'spell_ignis_slag_pot'),
( 62521, 'spell_attuned_to_nature_dose_reduction'),
@@ -0,0 +1,11 @@
DELETE FROM `conditions` WHERE `SourceEntry` IN (63317,62505,63524,63657,63658,63659);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`)
VALUES
(13,0,63317,0,18,1,33453,0,0,'','Flame Breath - Dark Rune Watcher'),
(13,0,63317,0,18,1,33846,0,0,'','Flame Breath - Dark Rune Sentinel'),
(13,0,63317,0,18,1,33388,0,0,'','Flame Breath - Dark Rune Guardian'),
(13,0,62505,0,18,1,33186,0,0,'','Harpoon Trigger - Razorscale'),
(13,0,63524,0,18,1,33233,0,0,'','Harpoon Shot - Razorscale'),
(13,0,63657,0,18,1,33233,0,0,'','Harpoon Shot - Razorscale'),
(13,0,63658,0,18,1,33233,0,0,'','Harpoon Shot - Razorscale'),
(13,0,63659,0,18,1,33233,0,0,'','Harpoon Shot - Razorscale');
@@ -0,0 +1,9 @@
UPDATE `creature_template` SET `ScriptName` = 'boss_razorscale_controller' WHERE `entry` = 33233;
UPDATE `creature_template` SET `ScriptName` = 'boss_razorscale' WHERE `entry` = 33186;
UPDATE `creature_template` SET `ScriptName` = 'npc_darkrune_watcher' WHERE `entry` = 33453;
UPDATE `creature_template` SET `ScriptName` = 'npc_darkrune_sentinel' WHERE `entry` = 33846;
UPDATE `creature_template` SET `ScriptName` = 'npc_darkrune_guardian' WHERE `entry` = 33388;
UPDATE `creature_template` SET `ScriptName` = 'npc_devouring_flame' WHERE `entry` = 34188;
UPDATE `creature_template` SET `ScriptName` = 'npc_expedition_commander' WHERE `entry` = 33210;
UPDATE `creature_template` SET `ScriptName` = 'npc_mole_machine_trigger' WHERE `entry` IN (33282, 33245);
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|2 WHERE `entry` IN (33210,33287,33259,33233);
@@ -0,0 +1,11 @@
SET @GUID :=48304;
DELETE FROM `creature` WHERE `guid` BETWEEN @GUID AND @GUID+6;
INSERT INTO `creature` (`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`DeathState`,`MovementType`)
VALUES
(@GUID,33233,603,1,1,0,0,560.1334,-143.035431,393.822632,0,120,0,0,1,0,0,0),
(@GUID+1,33233,603,1,1,0,0,572.410645,-138.656357,393.904419,0,120,0,0,1,0,0,0),
(@GUID+2,33233,603,1,1,0,0,585.9284,-146.587509,391.6004,0,120,0,0,1,0,0,0),
(@GUID+3,33233,603,1,1,0,0,589.7287,-137.1148,393.9011,0,120,0,0,1,0,0,0),
(@GUID+4,33233,603,1,1,0,0,605.9284,-140.108887,393.7972,0,120,0,0,1,0,0,0),
(@GUID+5,33233,603,1,1,0,0,630.2436,-276.259064,392.3122,0,120,0,0,1,0,0,0),
(@GUID+6,33233,603,1,1,0,0,638.241638,-272.1735,392.135132,0,120,0,0,1,0,0,0);
@@ -0,0 +1 @@
UPDATE `gameobject_template` SET `ScriptName`='go_razorscale_harpoon' WHERE `entry` IN (194519,194541,194542,194543);
@@ -0,0 +1,4 @@
DELETE FROM `spell_script_names` WHERE `spell_id`=63308;
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`)
VALUES
(63308,'spell_razorscale_devouring_flame');
@@ -537,8 +537,12 @@ void GameObject::Update(uint32 diff)
SetGoState(GO_STATE_READY);
//any return here in case battleground traps
if (GetGOInfo()->flags & GO_FLAG_NODESPAWN)
return;
}
loot.clear();
if (GetOwnerGUID())
{
if (Unit* owner = GetOwner())
@@ -550,6 +554,8 @@ void GameObject::Update(uint32 diff)
return;
}
SetLootState(GO_READY);
//burning flags in some battlegrounds, if you find better condition, just add it
if (GetGOInfo()->IsDespawnAtAction() || GetGoAnimProgress() > 0)
{
@@ -558,9 +564,6 @@ void GameObject::Update(uint32 diff)
SetUInt32Value(GAMEOBJECT_FLAGS, GetGOInfo()->flags);
}
loot.clear();
SetLootState(GO_READY);
if (!m_respawnDelayTime)
return;
@@ -17,7 +17,6 @@
#include "ScriptPCH.h"
#include "ulduar.h"
#include "SpellAuraEffects.h"
enum Yells
{
File diff suppressed because it is too large Load Diff
@@ -45,6 +45,8 @@ public:
uint64 uiLeviathanGUID;
uint64 uiIgnisGUID;
uint64 uiRazorscaleGUID;
uint64 uiRazorscaleController;
uint64 uiRazorHarpoonGUIDs[3];
uint64 uiExpCommanderGUID;
uint64 uiXT002GUID;
uint64 uiAssemblyGUIDs[3];
@@ -77,6 +79,7 @@ public:
LoadDoorData(doorData);
uiIgnisGUID = 0;
uiRazorscaleGUID = 0;
uiRazorscaleController = 0;
uiExpCommanderGUID = 0;
uiXT002GUID = 0;
uiKologarnGUID = 0;
@@ -100,8 +103,9 @@ public:
uiVezaxDoorGUID = 0;
flag = 0;
memset(&uiEncounter, 0, sizeof(uiEncounter));
memset(&uiAssemblyGUIDs, 0, sizeof(uiAssemblyGUIDs));
memset(uiEncounter, 0, sizeof(uiEncounter));
memset(uiAssemblyGUIDs, 0, sizeof(uiAssemblyGUIDs));
memset(uiRazorHarpoonGUIDs, 0, sizeof(uiRazorHarpoonGUIDs));
}
bool IsEncounterInProgress() const
@@ -128,6 +132,9 @@ public:
case NPC_RAZORSCALE:
uiRazorscaleGUID = creature->GetGUID();
break;
case NPC_RAZORSCALE_CONTROLLER:
uiRazorscaleController = creature->GetGUID();
break;
case NPC_EXPEDITION_COMMANDER:
uiExpCommanderGUID = creature->GetGUID();
return;
@@ -235,6 +242,18 @@ public:
uiVezaxDoorGUID = go->GetGUID();
HandleGameObject(NULL, false, go);
break;
case GO_RAZOR_HARPOON_1:
uiRazorHarpoonGUIDs[0] = go->GetGUID();
break;
case GO_RAZOR_HARPOON_2:
uiRazorHarpoonGUIDs[1] = go->GetGUID();
break;
case GO_RAZOR_HARPOON_3:
uiRazorHarpoonGUIDs[2] = go->GetGUID();
break;
case GO_RAZOR_HARPOON_4:
uiRazorHarpoonGUIDs[3] = go->GetGUID();
break;
}
}
@@ -369,6 +388,7 @@ public:
case TYPE_LEVIATHAN: return uiLeviathanGUID;
case TYPE_IGNIS: return uiIgnisGUID;
case TYPE_RAZORSCALE: return uiRazorscaleGUID;
case DATA_RAZORSCALE_CONTROL: return uiRazorscaleController;
case TYPE_XT002: return uiXT002GUID;
case TYPE_KOLOGARN: return uiKologarnGUID;
case DATA_LEFT_ARM: return uiLeftArmGUID;
@@ -384,6 +404,10 @@ public:
// razorscale expedition commander
case DATA_EXP_COMMANDER: return uiExpCommanderGUID;
case GO_RAZOR_HARPOON_1: return uiRazorHarpoonGUIDs[0];
case GO_RAZOR_HARPOON_2: return uiRazorHarpoonGUIDs[1];
case GO_RAZOR_HARPOON_3: return uiRazorHarpoonGUIDs[2];
case GO_RAZOR_HARPOON_4: return uiRazorHarpoonGUIDs[3];
// Assembly of Iron
case DATA_STEELBREAKER: return uiAssemblyGUIDs[0];
case DATA_MOLGEIM: return uiAssemblyGUIDs[1];
@@ -466,6 +490,7 @@ public:
};
void AddSC_instance_ulduar()
{
new instance_ulduar();
@@ -15,6 +15,8 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "SpellAuraEffects.h"
#ifndef DEF_ULDUAR_H
#define DEF_ULDUAR_H
@@ -44,6 +46,7 @@ enum eTypes
DATA_BRUNDIR,
DATA_EXP_COMMANDER,
DATA_RAZORSCALE_CONTROL,
// Kologarn:
DATA_LEFT_ARM,
@@ -55,6 +58,8 @@ enum eNPCs
NPC_LEVIATHAN = 33113,
NPC_IGNIS = 33118,
NPC_RAZORSCALE = 33186,
NPC_RAZORSCALE_CONTROLLER = 33233,
NPC_STEELFORGED_DEFFENDER = 33236,
NPC_EXPEDITION_COMMANDER = 33210,
NPC_XT002 = 33293,
NPC_STEELBREAKER = 32867,
@@ -92,6 +97,12 @@ enum eGameObjects
GO_LEVIATHAN_DOOR = 194905,
GO_LEVIATHAN_GATE = 194630,
GO_VEZAX_DOOR = 194750,
GO_MOLE_MACHINE = 194316,
GO_RAZOR_HARPOON_1 = 194542,
GO_RAZOR_HARPOON_2 = 194541,
GO_RAZOR_HARPOON_3 = 194543,
GO_RAZOR_HARPOON_4 = 194519,
GO_RAZOR_BROKEN_HARPOON = 194565,
};
enum eTowerEvents
@@ -107,4 +118,5 @@ enum eAchievementCriteria
ACHIEVEMENT_CRITERIA_HOT_POCKET_10 = 10430, //ignis
ACHIEVEMENT_CRITERIA_HOT_POCKET_25 = 10431,
};
#endif