aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2013_11_28_00_world_misc.sql21
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp101
2 files changed, 122 insertions, 0 deletions
diff --git a/sql/updates/world/2013_11_28_00_world_misc.sql b/sql/updates/world/2013_11_28_00_world_misc.sql
new file mode 100644
index 00000000000..ea949e598e5
--- /dev/null
+++ b/sql/updates/world/2013_11_28_00_world_misc.sql
@@ -0,0 +1,21 @@
+-- Torturer LeCraft SAI
+SET @ENTRY := 27209;
+UPDATE `creature_template` SET `AIName`='', `ScriptName`='npc_torturer_leCraft' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+-- Texts for Torturer LeCraft
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0,"Come to play?",12,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,1,0,"Ow! I'll tell you NOTHING, filthy $r!",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,2,0,"Wait... WAIT! What is it that you want to know? I know you're the $c named $N.",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,3,0,"OW...NO! We know that you've been stealing our armor and weapons and horses!",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,4,0,"We know... that you don't... know why we're immune... to your so-called blight. Grand Admiral Westwind somehow gave the high abbot that prayer. I beg you... no more... please?",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,5,0,"AHHHHHHHHH! Please... we know... that you... have a spy... disguised as... one of us! There... that's all that I know. Please... mercy... STOP!",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,6,0,"Please... stop. I'll do... anything....",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,7,0,"I beg you... no more.",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,8,0,"OWWWWWWWW!",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,9,0,"You won't get... anything else... out of me!",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,10,0,"They all... begged... for their... lives!",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,11,0,"I TOLD YOU... I don't know... anything... else!",15,0,100,0,0,0,"Torturer LeCraft"),
+(@ENTRY,12,0,"Just... end it.",15,0,100,0,0,0,"Torturer LeCraft");
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index 0357ea075f4..869f6bf7a5b 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -303,10 +303,111 @@ class npc_wyrmrest_defender : public CreatureScript
}
};
+/*#####
+# npc_torturer_leCraft
+#####*/
+
+enum TorturerLeCraft
+{
+ SPELL_HEMORRHAGE = 30478,
+ SPELL_KIDNEY_SHOT = 30621,
+ SPELL_HIGH_EXECUTORS_BRANDING_IRON = 48603,
+ NPC_TORTURER_LECRAFT = 27394,
+ EVENT_HEMORRHAGE = 1,
+ EVENT_KIDNEY_SHOT = 2,
+ SAY_AGGRO = 0
+};
+
+class npc_torturer_leCraft : public CreatureScript
+{
+ public: npc_torturer_leCraft() : CreatureScript("npc_torturer_leCraft") {}
+
+ struct npc_torturer_leCraftAI : public ScriptedAI
+ {
+ npc_torturer_leCraftAI(Creature* creature) : ScriptedAI(creature) { }
+
+ void Reset() OVERRIDE
+ {
+ _textcounter = 1;
+ _playerGUID = 0;
+ }
+
+ void EnterCombat(Unit* /*who*/) OVERRIDE
+ {
+ _events.ScheduleEvent(EVENT_HEMORRHAGE, urand(5000, 8000));
+ _events.ScheduleEvent(EVENT_KIDNEY_SHOT, urand(12000, 15000));
+ Talk (SAY_AGGRO);
+ }
+
+
+ void SpellHit(Unit* caster, const SpellInfo* spell) OVERRIDE
+ {
+ if (spell->Id != SPELL_HIGH_EXECUTORS_BRANDING_IRON)
+ return;
+
+ if (Player* player = caster->ToPlayer())
+ {
+ if (_textcounter == 1)
+ _playerGUID = player->GetGUID();
+
+ if (_playerGUID != player->GetGUID())
+ return;
+
+ Talk(_textcounter, player->GetGUID());
+
+ if (_textcounter == 5)
+ player->KilledMonsterCredit(NPC_TORTURER_LECRAFT, 0);
+
+ ++_textcounter;
+
+ if (_textcounter == 13)
+ _textcounter = 6;
+ }
+ }
+
+ void UpdateAI(uint32 diff) OVERRIDE
+ {
+ if (!UpdateVictim())
+ return;
+
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_HEMORRHAGE:
+ DoCastVictim(SPELL_HEMORRHAGE);
+ _events.ScheduleEvent(EVENT_HEMORRHAGE, urand(12000, 168000));
+ break;
+ case EVENT_KIDNEY_SHOT:
+ DoCastVictim(SPELL_KIDNEY_SHOT);
+ _events.ScheduleEvent(EVENT_KIDNEY_SHOT, urand(20000, 26000));
+ break;
+ default:
+ break;
+ }
+ }
+ DoMeleeAttackIfReady();
+ }
+
+ private:
+ EventMap _events;
+ uint8 _textcounter;
+ uint64 _playerGUID;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_torturer_leCraftAI(creature);
+ }
+};
+
void AddSC_dragonblight()
{
new npc_alexstrasza_wr_gate;
new spell_q12096_q12092_dummy;
new spell_q12096_q12092_bark;
new npc_wyrmrest_defender;
+ new npc_torturer_leCraft;
}