Scripts/GB: scripted Twilight Beguiler and Enslaved Gronn Brute cosmetic and combat events

This commit is contained in:
Ovahlord
2018-12-18 05:19:29 +01:00
parent 671aad96a2
commit 441f254fc2
5 changed files with 171 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
-- Creature Enslaved Gronn Brute 40166 SAI
SET @ENTRY := 40166;
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`= @ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
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
(@ENTRY, 0, 0, 0, 1, 0, 100, 0, 0, 20000, 30000, 30000, 11, 76138, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "When out of combat and timer at the begining between 0 and 20000 ms (and later repeats every 30000 and 30000 ms) - Self: Cast spell 76138 on Self // "),
(@ENTRY, 0, 1, 0, 0, 0, 100, 0, 4000, 5000, 11000, 12000, 11, 76703, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, "When in combat and timer at the begining between 4000 and 5000 ms (and later repeats every 11000 and 12000 ms) - Self: Cast spell 76703 on Victim // ");
-- Twilight Beguiler
UPDATE `creature_template` SET `ScriptName`= 'npc_grim_batol_twilight_beguiler' WHERE `entry`= 40167;
DELETE FROM `conditions` WHERE `SourceEntry` IN (76138, 74867, 74884, 76151, 90719) AND `SourceTypeOrReferenceId`= 13;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ScriptName`, `Comment`) VALUES
(13, 3, 76138, 0, 0, 31, 0, 3, 40167, 0, 0, 0, '', 'Gronn Knockback Cosmetic - Target Twilight Beguiler'),
(13, 1, 74867, 0, 0, 31, 0, 3, 40166, 0, 0, 0, '', 'Enslave Gronn Cosmetic - Target Enslaved Gronn Brute'),
(13, 1, 74884, 0, 0, 31, 0, 3, 40166, 0, 0, 0, '', 'Enslave Gronn Cosmetic - Target Enslaved Gronn Brute'),
(13, 3, 76151, 0, 0, 31, 0, 3, 40166, 0, 0, 0, '', 'Beguile - Target Enslaved Gronn Brute'),
(13, 3, 90719, 0, 0, 31, 0, 3, 40166, 0, 0, 0, '', 'Beguile - Target Enslaved Gronn Brute');

View File

@@ -4499,6 +4499,12 @@ void SpellMgr::LoadSpellInfoCorrections()
spellInfo->AttributesEx5 &= ~SPELL_ATTR5_CAN_CHANNEL_WHEN_MOVING;
});
// Gronn Knockback Cosmetic
ApplySpellFix({ 76138 }, [](SpellInfo* spellInfo)
{
spellInfo->MaxAffectedTargets = 1;
});
// ENDOF GRIM_BATOL SPELLS
//

View File

@@ -0,0 +1,141 @@
/*
* Copyright (C) 2008-2018 TrinityCore <https://www.trinitycore.org/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ObjectMgr.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "grim_batol.h"
enum TwilightBeguiler
{
// Events
EVENT_BEGUILE = 1,
EVENT_MOVE_TO_HOME_POSITION,
EVENT_ENSLAVE_GRONN_COSMETIC,
EVENT_DECEITFUL_BLAST,
EVENT_CHAINED_MIND,
// Phases
PHASE_COSMETIC = 1,
PHASE_COMBAT = 2,
// Spells
SPELL_GRONN_KNOCKBACK_COSMETIC = 76138,
SPELL_BEGUILE = 76151,
SPELL_ENSLAVE_GRONN_COSMETIC_RIGHT = 74867,
SPELL_ENSLAVE_GRONN_COSMETIC_LEFT = 74884,
SPELL_DECEITFUL_BLAST = 76715,
SPELL_CHAINED_MIND = 76711
};
struct npc_grim_batol_twilight_beguiler : public ScriptedAI
{
npc_grim_batol_twilight_beguiler(Creature* creature) : ScriptedAI(creature) { }
void Reset()
{
_events.Reset();
_events.SetPhase(PHASE_COSMETIC);
_events.ScheduleEvent(EVENT_ENSLAVE_GRONN_COSMETIC, 1s, 0, PHASE_COSMETIC);
}
void JustEngagedWith(Unit* /*who*/) override
{
_events.SetPhase(PHASE_COMBAT);
_events.ScheduleEvent(EVENT_DECEITFUL_BLAST, 7s, 0, PHASE_COMBAT);
_events.ScheduleEvent(EVENT_CHAINED_MIND, 7s, 15s, 0, PHASE_COMBAT);
me->InterruptNonMeleeSpells(true);
}
void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (spell->Id == SPELL_GRONN_KNOCKBACK_COSMETIC)
{
_events.ScheduleEvent(EVENT_BEGUILE, 4s, 0, PHASE_COSMETIC);
_events.ScheduleEvent(EVENT_MOVE_TO_HOME_POSITION, 7s + 600ms, 0, PHASE_COSMETIC);
_events.ScheduleEvent(EVENT_ENSLAVE_GRONN_COSMETIC, 7s + 600ms, 0, PHASE_COSMETIC);
}
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim() && !_events.IsInPhase(PHASE_COSMETIC))
return;
_events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING) && !_events.IsInPhase(PHASE_COSMETIC))
return;
while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_BEGUILE:
DoCastSelf(SPELL_BEGUILE);
break;
case EVENT_MOVE_TO_HOME_POSITION:
me->GetMotionMaster()->MoveTargetedHome();
break;
case EVENT_ENSLAVE_GRONN_COSMETIC:
if (Creature* gronn = me->FindNearestCreature(NPC_ENSLAVED_GRONN_BRUTE, 30.0f, true))
{
Position pos = gronn->GetHomePosition();
pos.SetOrientation(pos.GetOrientation() + (float)M_PI / 1.5f);
if (pos.HasInLine(&me->GetHomePosition(), 15.0f))
DoCastSelf(SPELL_ENSLAVE_GRONN_COSMETIC_LEFT);
else
{
pos = gronn->GetHomePosition();
pos.SetOrientation(pos.GetOrientation() - (float)M_PI / 1.5f);
if (pos.HasInLine(&me->GetHomePosition(), 15.0f))
DoCastSelf(SPELL_ENSLAVE_GRONN_COSMETIC_RIGHT);
}
}
break;
case EVENT_DECEITFUL_BLAST:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 25.0f, true, 0))
DoCast(target, SPELL_DECEITFUL_BLAST);
if (_events.GetTimeUntilEvent(EVENT_CHAINED_MIND) > 4 * IN_MILLISECONDS)
_events.Repeat(1s, 3s);
else
_events.Repeat(11s, 12s);
break;
case EVENT_CHAINED_MIND:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 25.0f, true, 0))
DoCast(target, SPELL_CHAINED_MIND);
_events.Repeat(18s, 27s);
break;
default:
break;
}
}
DoMeleeAttackIfReady();
}
private:
EventMap _events;
};
void AddSC_grim_batol()
{
RegisterGrimBatolCreatureAI(npc_grim_batol_twilight_beguiler);
}

View File

@@ -75,6 +75,9 @@ enum GBCreatureIds
NPC_TWILIGHT_HATCHLING = 39388,
NPC_HATCHED_TWILIGHT_EGG = 40846,
// Generic Creatures
NPC_ENSLAVED_GRONN_BRUTE = 40166,
};
enum GBSpells

View File

@@ -91,6 +91,7 @@ void AddSC_boss_general_umbriss();
void AddSC_boss_forgemaster_throngus();
void AddSC_boss_drahga_shadowburner();
void AddSC_boss_erudax();
void AddSC_grim_batol();
void AddSC_boss_attumen(); //Karazhan
void AddSC_boss_curator();
void AddSC_boss_maiden_of_virtue();
@@ -311,8 +312,9 @@ void AddEasternKingdomsScripts()
AddSC_instance_grim_batol(); //Grim Batol
AddSC_boss_general_umbriss();
AddSC_boss_forgemaster_throngus();
AddSC_boss_erudax();
AddSC_boss_drahga_shadowburner();
AddSC_boss_erudax();
AddSC_grim_batol();
AddSC_boss_attumen(); //Karazhan
AddSC_boss_curator();
AddSC_boss_maiden_of_virtue();