Skip to content

Commit 20927ba

Browse files
authored
Scripts/AQ20: Implement Andorov's event (TrinityCore#31512)
Closes TrinityCore#9636
1 parent 8afc077 commit 20927ba

File tree

8 files changed

+624
-75
lines changed

8 files changed

+624
-75
lines changed
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
--
2+
SET @SPAWN_GROUP_ID := 333; -- 1
3+
SET @CGUID := 142800; -- 5
4+
5+
UPDATE `creature` SET `StringId` = 'GeneralRajaxxWave1' WHERE `guid` IN (144611,144653,144610,144656,144655,144654,144676);
6+
UPDATE `creature` SET `StringId` = 'GeneralRajaxxWave2' WHERE `guid` IN (144619,144617,144616,144660,144659,144658,144677);
7+
UPDATE `creature` SET `StringId` = 'GeneralRajaxxWave3' WHERE `guid` IN (144614,144613,144612,144618,144657,144615,144674);
8+
UPDATE `creature` SET `StringId` = 'GeneralRajaxxWave4' WHERE `guid` IN (144665,144662,144661,144626,144625,144623,144675);
9+
UPDATE `creature` SET `StringId` = 'GeneralRajaxxWave5' WHERE `guid` IN (144622,144621,144620,144664,144624,144663,144652);
10+
UPDATE `creature` SET `StringId` = 'GeneralRajaxxWave6' WHERE `guid` IN (144631,144670,144630,144672,144671,144669,144673);
11+
UPDATE `creature` SET `StringId` = 'GeneralRajaxxWave7' WHERE `guid` IN (144629,144628,144627,144668,144667,144666,144651);
12+
13+
UPDATE `creature` SET `spawntimesecs` = 604800 WHERE `id` IN (15385,15386,15388,15389,15390,15391,15392,15344,15387);
14+
15+
DELETE FROM `creature_formations` WHERE `leaderGUID` IN (144611,144619,144614,144665,144622,144631,144629);
16+
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
17+
(144611,144611,0,0,3,0,0),
18+
(144611,144653,0,0,3,0,0),
19+
(144611,144610,0,0,3,0,0),
20+
(144611,144656,0,0,3,0,0),
21+
(144611,144655,0,0,3,0,0),
22+
(144611,144654,0,0,3,0,0),
23+
(144611,144676,0,0,3,0,0),
24+
25+
(144619,144619,0,0,3,0,0),
26+
(144619,144617,0,0,3,0,0),
27+
(144619,144616,0,0,3,0,0),
28+
(144619,144660,0,0,3,0,0),
29+
(144619,144659,0,0,3,0,0),
30+
(144619,144658,0,0,3,0,0),
31+
(144619,144677,0,0,3,0,0),
32+
33+
(144614,144614,0,0,3,0,0),
34+
(144614,144613,0,0,3,0,0),
35+
(144614,144612,0,0,3,0,0),
36+
(144614,144618,0,0,3,0,0),
37+
(144614,144657,0,0,3,0,0),
38+
(144614,144615,0,0,3,0,0),
39+
(144614,144674,0,0,3,0,0),
40+
41+
(144665,144665,0,0,3,0,0),
42+
(144665,144662,0,0,3,0,0),
43+
(144665,144661,0,0,3,0,0),
44+
(144665,144626,0,0,3,0,0),
45+
(144665,144625,0,0,3,0,0),
46+
(144665,144623,0,0,3,0,0),
47+
(144665,144675,0,0,3,0,0),
48+
49+
(144622,144622,0,0,3,0,0),
50+
(144622,144621,0,0,3,0,0),
51+
(144622,144620,0,0,3,0,0),
52+
(144622,144664,0,0,3,0,0),
53+
(144622,144624,0,0,3,0,0),
54+
(144622,144663,0,0,3,0,0),
55+
(144622,144652,0,0,3,0,0),
56+
57+
(144631,144631,0,0,3,0,0),
58+
(144631,144670,0,0,3,0,0),
59+
(144631,144630,0,0,3,0,0),
60+
(144631,144672,0,0,3,0,0),
61+
(144631,144671,0,0,3,0,0),
62+
(144631,144669,0,0,3,0,0),
63+
(144631,144673,0,0,3,0,0),
64+
65+
(144629,144629,0,0,3,0,0),
66+
(144629,144628,0,0,3,0,0),
67+
(144629,144627,0,0,3,0,0),
68+
(144629,144668,0,0,3,0,0),
69+
(144629,144667,0,0,3,0,0),
70+
(144629,144666,0,0,3,0,0),
71+
(144629,144651,0,0,3,0,0);
72+
73+
DELETE FROM `spawn_group` WHERE `spawnId` BETWEEN @CGUID+0 AND @CGUID+4 AND `spawnType` = 0;
74+
INSERT INTO `spawn_group` (`groupId`, `spawnType`, `spawnId`) VALUES
75+
(@SPAWN_GROUP_ID+0,0,@CGUID+0),
76+
(@SPAWN_GROUP_ID+0,0,@CGUID+1),
77+
(@SPAWN_GROUP_ID+0,0,@CGUID+2),
78+
(@SPAWN_GROUP_ID+0,0,@CGUID+3),
79+
(@SPAWN_GROUP_ID+0,0,@CGUID+4);
80+
81+
DELETE FROM `spawn_group_template` WHERE `groupId` = @SPAWN_GROUP_ID+0;
82+
INSERT INTO `spawn_group_template` (`groupId`, `groupName`, `groupFlags`) VALUES
83+
(@SPAWN_GROUP_ID+0,"Ruins of Ahn'Qiraj - Lieutenant General Andorov",4);
84+
85+
-- These positions are not default, no CreateObject2
86+
DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+4;
87+
INSERT INTO `creature` (`guid`,`id`,`map`,`zoneId`,`areaId`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`wander_distance`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`,`ScriptName`,`StringId`,`VerifiedBuild`) VALUES
88+
(@CGUID+0,15471,509,0,0,1,1,0,1,-8624.473,1471.7743,32.0758,2.3319497,604800,0,0,17605,37290,0,0,33280,0,'',NULL,0),
89+
(@CGUID+1,15473,509,0,0,1,1,0,1,-8624.473,1471.7743,32.0758,2.3319497,604800,0,0,9156,0,0,0,33280,0,'',NULL,0),
90+
(@CGUID+2,15473,509,0,0,1,1,0,1,-8624.473,1471.7743,32.0758,2.3319497,604800,0,0,9156,0,0,0,33280,0,'',NULL,0),
91+
(@CGUID+3,15473,509,0,0,1,1,0,1,-8624.473,1471.7743,32.0758,2.3319497,604800,0,0,9156,0,0,0,33280,0,'',NULL,0),
92+
(@CGUID+4,15473,509,0,0,1,1,0,1,-8624.473,1471.7743,32.0758,2.3319497,604800,0,0,9156,0,0,0,33280,0,'',NULL,0);
93+
94+
DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+0;
95+
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES
96+
(@CGUID+0,@CGUID+0,0,0,515,0,0),
97+
(@CGUID+0,@CGUID+1,5,75,515,0,0),
98+
(@CGUID+0,@CGUID+2,5,285,515,0,0),
99+
(@CGUID+0,@CGUID+3,5,330,515,0,0),
100+
(@CGUID+0,@CGUID+4,5,30,515,0,0);
101+
102+
DELETE FROM `creature_template_movement` WHERE `CreatureId` = 15471;
103+
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
104+
(15471,1,1,0,0,0,0,0);
105+
106+
UPDATE `creature_template_addon` SET `SheathState` = 1 WHERE `entry` IN (15471,15473);
107+
108+
UPDATE `creature_template` SET `gossip_menu_id` = 0, `RegenHealth` = 0, `ScriptName` = 'npc_andorov' WHERE `entry` = 15471;
109+
UPDATE `creature_template` SET `RegenHealth` = 0 WHERE `entry` = 15473;
110+
111+
-- First path is incomplete
112+
DELETE FROM `waypoint_data` WHERE `id` IN (4,5);
113+
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
114+
(4,1,-8679.187,1535.1178,31.96736,NULL,0,1,0,100,0),
115+
(4,2,-8701.477,1561.7574,32.17472,NULL,0,1,0,100,0),
116+
(4,3,-8720.072,1580.9626,21.511324,NULL,0,1,0,100,0),
117+
(4,4,-8746.162,1603.494,21.613367,NULL,0,1,0,100,0),
118+
(4,5,-8780.431,1617.8787,21.455776,NULL,0,1,0,100,0),
119+
(4,6,-8823.478,1624.6688,19.80574,NULL,0,1,0,100,0),
120+
(4,7,-8855.329,1637.9473,19.790516,NULL,0,1,0,100,0),
121+
(4,8,-8870.721,1648.4009,21.511328,5.637413501739501953,1,1,0,100,0),
122+
123+
(5,1,-8886.095,1598.713,21.4053,NULL,0,1,0,100,0),
124+
(5,2,-8904.383,1578.6167,21.511332,NULL,0,1,0,100,0),
125+
(5,3,-8920.576,1551.9479,21.407932,NULL,0,1,0,100,0),
126+
(5,4,-8939.951,1551.127,21.566868,NULL,0,1,0,100,0);
127+
128+
DELETE FROM `gossip_menu` WHERE `MenuID` = 6629 AND `TextID` = 7883;
129+
DELETE FROM `gossip_menu` WHERE `MenuID` = 7048 AND `TextID` IN (7883,8305);
130+
INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES
131+
(6629,7883,0);
132+
133+
DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (6629,7047);
134+
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
135+
(6629,0,0,"Let's find out.",11026,1,1,0,0,0,0,'',0,0),
136+
(7047,0,1,"Let's see what you have.",11820,3,128,0,0,0,0,'',0,0);
137+
138+
DELETE FROM `creature_text` WHERE `CreatureID` = 15471;
139+
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
140+
(15471,0,0,"Remember, Rajaxx, when I said I'd kill you last?",14,0,100,22,0,0,11028,0,"Lieutenant General Andorov"),
141+
(15471,1,0,"I lied...",14,0,100,0,0,0,11477,0,"Lieutenant General Andorov"),
142+
(15471,2,0,"They come now. Try not to get yourself killed, young blood.",14,0,100,22,0,0,11012,0,"Lieutenant General Andorov"),
143+
(15471,3,0,"Come get some!",12,0,100,25,0,0,11478,0,"Lieutenant General Andorov"),
144+
(15471,4,0,"Kill first, ask questions later... Incoming!",14,0,100,45,0,0,11032,0,"Lieutenant General Andorov"),
145+
(15471,5,0,"My work here is done. I'll be sure to let Mar'alith and the others at Cenarion Hold know that you helped me out a little. Be careful in here, you don't have me holdin' your hand past this point.",14,0,100,0,0,0,11560,0,"Lieutenant General Andorov");
146+
147+
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15473;
148+
DELETE FROM `smart_scripts` WHERE `entryorguid` = 15473 AND `source_type` = 0;
149+
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`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
150+
(15473,0,0,0,0,0,100,0,5000,10000,5000,15000,0,11,16856,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Kaldorei Elite - In Combat - Cast 'Mortal Strike'"),
151+
(15473,0,1,0,0,0,100,0,10000,15000,10000,20000,0,11,26350,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Kaldorei Elite - In Combat - Cast 'Cleave'");
152+
153+
UPDATE `creature_template` SET `mingold` = 0, `maxgold` = 0, `AIName` = 'SmartAI' WHERE `entry` = 15344;
154+
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (15344,15387) AND `source_type` = 0;
155+
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`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
156+
(15344,0,0,0,37,0,100,0,0,0,0,0,0,116,5,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Swarmguard Needler - On AI Initialize - Set Corpse Delay"),
157+
(15344,0,1,0,0,0,100,0,5000,10000,5000,10000,0,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Swarmguard Needler - In Combat - Cast 'Cleave'"),
158+
159+
(15387,0,0,0,37,0,100,0,0,0,0,0,0,116,5,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Qiraji Warrior - On AI Initialize - Set Corpse Delay"),
160+
(15387,0,1,0,0,0,100,0,10000,15000,10000,15000,0,11,10966,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Qiraji Warrior - In Combat - Cast 'Uppercut'"),
161+
(15387,0,2,0,0,0,100,0,10000,20000,15000,25000,0,11,15588,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Qiraji Warrior - In Combat - Cast 'Thunderclap'"),
162+
(15387,0,3,0,2,0,100,1,0,25,0,0,0,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Qiraji Warrior - Between 0-25% Health - Cast 'Enrage' (No Repeat)"),
163+
(15387,0,4,0,83,0,100,0,8599,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Qiraji Warrior - On Spell Cast 'Enrage' - Say Line 0");

src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
#include "ScriptMgr.h"
1919
#include "InstanceScript.h"
20-
#include "ObjectAccessor.h"
2120
#include "ruins_of_ahnqiraj.h"
2221
#include "ScriptedCreature.h"
2322
#include "SpellInfo.h"
@@ -232,7 +231,7 @@ struct npc_buru_egg : public ScriptedAI
232231

233232
void JustEngagedWith(Unit* who) override
234233
{
235-
if (Creature* buru = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_BURU)))
234+
if (Creature* buru = _instance->GetCreature(DATA_BURU))
236235
if (!buru->IsInCombat())
237236
buru->AI()->AttackStart(who);
238237
}

src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include "ScriptMgr.h"
2323
#include "Containers.h"
2424
#include "InstanceScript.h"
25-
#include "ObjectAccessor.h"
2625
#include "ruins_of_ahnqiraj.h"
2726
#include "ScriptedCreature.h"
2827
#include "SpellInfo.h"
@@ -93,13 +92,6 @@ struct boss_kurinnaxx : public BossAI
9392
Talk(EMOTE_FRENZY);
9493
}
9594

96-
void JustDied(Unit* /*killer*/) override
97-
{
98-
_JustDied();
99-
if (Creature* ossirian = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_OSSIRIAN)))
100-
ossirian->AI()->Talk(SAY_KURINAXX_DEATH);
101-
}
102-
10395
void UpdateAI(uint32 diff) override
10496
{
10597
if (!UpdateVictim())

src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ enum Texts
3737
SAY_INTRO = 1,
3838
SAY_AGGRO = 2,
3939
SAY_SLAY = 3,
40-
SAY_DEATH = 4
40+
SAY_DEATH = 4,
41+
SAY_KURINAXX_DEATH = 5
4142
};
4243

4344
enum Spells
@@ -69,6 +70,12 @@ enum Events
6970
EVENT_STOMP = 3
7071
};
7172

73+
enum OssirianMisc
74+
{
75+
NPC_SAND_VORTEX = 15428,
76+
NPC_OSSIRIAN_TRIGGER = 15590
77+
};
78+
7279
uint8 const NUM_CRYSTALS = 12;
7380

7481
Position CrystalCoordinates[NUM_CRYSTALS] =
@@ -147,6 +154,9 @@ class boss_ossirian : public CreatureScript
147154
if (Creature* Trigger = ObjectAccessor::GetCreature(*me, TriggerGUID))
148155
if (!Trigger->HasUnitState(UNIT_STATE_CASTING))
149156
Trigger->CastSpell(Trigger, SpellWeakness[urand(0, 4)], false);
157+
158+
if (action == ACTION_KURINNAXX_DEFEATED && me->IsAlive())
159+
Talk(SAY_KURINAXX_DEATH);
150160
}
151161

152162
void JustEngagedWith(Unit* who) override

src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,37 @@ struct boss_rajaxx : public BossAI
8989
Talk(EMOTE_FRENZY);
9090
}
9191

92+
void DoAction(int32 action) override
93+
{
94+
if (!me->IsAlive())
95+
return;
96+
97+
switch (action)
98+
{
99+
case ACTION_WAVE_STARTS_3:
100+
Talk(SAY_WAVE_3);
101+
break;
102+
case ACTION_WAVE_STARTS_4:
103+
Talk(SAY_WAVE_4);
104+
break;
105+
case ACTION_WAVE_STARTS_5:
106+
Talk(SAY_WAVE_5);
107+
break;
108+
case ACTION_WAVE_STARTS_6:
109+
Talk(SAY_WAVE_6);
110+
break;
111+
case ACTION_WAVE_STARTS_7:
112+
Talk(SAY_WAVE_7);
113+
break;
114+
case ACTION_RAJAXX_ENTER:
115+
Talk(SAY_INTRO);
116+
DoZoneInCombat();
117+
break;
118+
default:
119+
break;
120+
}
121+
}
122+
92123
void KilledUnit(Unit* /*victim*/) override
93124
{
94125
Talk(SAY_SLAY);

0 commit comments

Comments
 (0)