Core/Scripts Script npc needed for Quest Torch Tossing part2

Script for Npc Torch Tossing Target_Bunny_Controller, responsable for handle the targets rotation for Midsummer Fire Festival quest, Torch Tossing.

(cherry picked from commit 8b74038531)
This commit is contained in:
sirikfoll
2016-01-13 23:16:11 -02:00
committed by Shauren
parent 2fe84d7471
commit a962db8b3c
2 changed files with 116 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
UPDATE `quest_template` SET `AllowableRaces`=1101 WHERE `ID`=11921;
UPDATE `quest_template` SET `AllowableRaces`=690 WHERE `ID`=11926;
UPDATE `quest_template` SET `TimeAllowed`=45 WHERE `ID` IN (11922,11731);
UPDATE `quest_template` SET `TimeAllowed`=90 WHERE `ID` IN (11921,11926);
UPDATE `quest_template_addon` SET `PrevQuestId`=11731 WHERE `ID`=11921; -- More Torch Tossing(A) requires Torch Tossing
UPDATE `quest_template_addon` SET `PrevQuestId`=11922 WHERE `ID`=11926; -- More Torch Tossing(H) requires Torch Tossing
UPDATE `quest_template_addon` SET `PrevQuestId`=11731 WHERE `ID`=11657; -- Torch Catching(A) requires Torch Tossing(A)
UPDATE `quest_template_addon` SET `PrevQuestId`=11922 WHERE `ID`=11923; -- Torch Catching(H) requires Torch Tossing(H)
UPDATE `quest_template_addon` SET `PrevQuestId`=11657 WHERE `ID`=11924; -- More Torch Catching(A) requires Torch Catching
UPDATE `quest_template_addon` SET `PrevQuestId`=11923 WHERE `ID`=11925; -- More Torch Catching(H) requires Torch Catching
DELETE FROM `creature_queststarter` WHERE `id` IN (26113,25975);
-- Master Flame/Fire Eater SAI
UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry` IN (25975,26113);
DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`IN (25975,26113);
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`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(25975,0,0,0,19,0,100,0,11731,0,0,0,11,45716,2,0,0,0,0,7,0,0,0,0,0,0,0,'Master Fire Eater - On Quest \'Torch Tossing\' Accepted - Cast \'Torch Tossing Training\''),
(25975,0,1,0,19,0,100,0,11921,0,0,0,11,46630,2,0,0,0,0,7,0,0,0,0,0,0,0,'Master Fire Eater - On Quest \'More Torch Tossing\' Accepted - Cast \'Torch Tossing Practice\''),
(26113,0,0,0,19,0,100,0,11922,0,0,0,11,45716,2,0,0,0,0,7,0,0,0,0,0,0,0,'Master Flame Eater - On Quest \'Torch Tossing\' Accepted - Cast \'Torch Tossing Training\''),
(26113,0,1,0,19,0,100,0,11926,0,0,0,11,46630,2,0,0,0,0,7,0,0,0,0,0,0,0,'Master Flame Eater - On Quest \'More Torch Tossing\' Accepted - Cast \'Torch Tossing Practice\'');
-- [DNT] Torch Tossing Target Bunny
DELETE FROM `creature_template_addon` WHERE `entry`=25535;
INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
(25535,0,0,0,0,0,45720);
UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=25535;
DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=25535;
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`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(25535,0,0,0,8,0,100,0,45732,0,0,0,11,45724,2,0,0,0,0,7,0,0,0,0,0,0,0,'[DNT] Torch Tossing Target Bunny - On Spellhit \'Torch Land\' - Cast \'Brazzier Hit\'');
-- [DNT] Torch Tossing Target Bunny Controller
UPDATE `creature_template` SET `ScriptName`='npc_torch_tossing_target_bunny_controller' WHERE `entry`=25536;
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (45732);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition` ,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
(13,1,45732,0,0,1,0,45723,0,0,0,0,'','Spell \'Torch Toss\' can only hit targets with Aura \'Target Indicator\'');
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (45719,46651,46630,45723,-46630,45716,-45716);
INSERT INTO `spell_linked_spell` (`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES
(45719,-46630,0,'Torch Tossing Success remove Torch Tossing Practice'),
(46651,-45716,0,'Torch Tossing Success remove Torch Tossing Training'),
(46630,45725 ,2,'Torch Tossing Practice trigger Detect Invisibility'),
(45716,45725 ,2,'Torch Tossing Training trigger Detect Invisibility'),
(46630,-45724,0,'Torch Tossing Practice remove Brazier Hit'),
(45716,-45724,0,'Torch Tossing Training remove Brazier Hit'),
(-46630,-45724,0,'Torch Tossing Practice expired - clear Braziers Hit!'),
(-45716,-45724,0,'Torch Tossing Training expired - clear Braziers Hit!'),
(45723,43313,2,'Target Indicator(duration) trigger Target Indicator(visual)');
-- Fix A Thief's Reward
DELETE FROM `creature_queststarter` WHERE `quest` IN (9365, 9339);
UPDATE `quest_template_addon` SET `NextQuestID`=9365 WHERE `ID` IN (9324,9325,9326,11935);
UPDATE `quest_template_addon` SET `NextQuestID`=9339 WHERE `ID` IN (9330,9331,9332,11933);

View File

@@ -511,6 +511,67 @@ public:
}
};
/*######
## npc_torch_tossing_target_bunny_controller
######*/
enum TorchTossingTarget
{
NPC_TORCH_TOSSING_TARGET_BUNNY = 25535,
SPELL_TARGET_INDICATOR = 45723
};
class npc_torch_tossing_target_bunny_controller : public CreatureScript
{
public:
npc_torch_tossing_target_bunny_controller() : CreatureScript("npc_torch_tossing_target_bunny_controller") { }
struct npc_torch_tossing_target_bunny_controllerAI : public ScriptedAI
{
npc_torch_tossing_target_bunny_controllerAI(Creature* creature) : ScriptedAI(creature)
{
_targetTimer = 3000;
}
ObjectGuid DoSearchForTargets(ObjectGuid lastTargetGUID)
{
std::list<Creature*> targets;
me->GetCreatureListWithEntryInGrid(targets, NPC_TORCH_TOSSING_TARGET_BUNNY, 60.0f);
targets.remove_if([lastTargetGUID](Creature* creature) { return creature->GetGUID() == lastTargetGUID; });
if (!targets.empty())
{
_lastTargetGUID = Trinity::Containers::SelectRandomContainerElement(targets)->GetGUID();
return _lastTargetGUID;
}
return ObjectGuid::Empty;
}
void UpdateAI(uint32 diff) override
{
if (_targetTimer < diff)
{
if (Unit* target = ObjectAccessor::GetUnit(*me, DoSearchForTargets(_lastTargetGUID)))
target->CastSpell(target, SPELL_TARGET_INDICATOR, true);
_targetTimer = 3000;
}
else
_targetTimer -= diff;
}
private:
uint32 _targetTimer;
ObjectGuid _lastTargetGUID;
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_torch_tossing_target_bunny_controllerAI(creature);
}
};
/*######
## Triage quest
######*/
@@ -2330,6 +2391,7 @@ void AddSC_npcs_special()
new npc_lunaclaw_spirit();
new npc_chicken_cluck();
new npc_dancing_flames();
new npc_torch_tossing_target_bunny_controller();
new npc_doctor();
new npc_injured_patient();
new npc_garments_of_quests();