mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Scripts Fix issues with Midsummer's Ribbon Pole
Closes #6876
Fixed achievement Burning Hot Pole Dance
Update scripts for quest Torch Tossing, using all correct spells and timers
Updated script register model
(cherry picked from commit 6e7e43172e)
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
DELETE FROM `spell_script_names` WhERE `ScriptName` IN
|
||||
('spell_midsummer_torch_target_picker',
|
||||
'spell_midsummer_torch_toss_land',
|
||||
'spell_midsummer_test_ribbon_pole_channel',
|
||||
'spell_gen_ribbon_pole_dancer_check',
|
||||
'spell_midsummer_ribbon_pole_periodic_visual');
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(45907,'spell_midsummer_torch_target_picker'),
|
||||
(46054,'spell_midsummer_torch_toss_land'),
|
||||
(29705,'spell_midsummer_test_ribbon_pole_channel'),
|
||||
(29726,'spell_midsummer_test_ribbon_pole_channel'),
|
||||
(29727,'spell_midsummer_test_ribbon_pole_channel'),
|
||||
(45406,'spell_midsummer_ribbon_pole_periodic_visual');
|
||||
|
||||
-- UPDATE `spell_dbc` SET `Effect1`=3, `EffectImplicitTargetA1`=1 WHERE `Id`=58934;
|
||||
DELETE FROM `spelleffect_dbc` WHERE `Id`=155919;
|
||||
INSERT INTO `spelleffect_dbc` (`Id`, `Effect`, `EffectValueMultiplier`, `EffectApplyAuraName`, `EffectAmplitude`, `EffectBasePoints`, `EffectBonusMultiplier`, `EffectDamageMultiplier`, `EffectChainTarget`, `EffectDieSides`, `EffectItemType`, `EffectMechanic`, `EffectMiscValue`, `EffectMiscValueB`, `EffectRadiusIndex`, `EffectRadiusIndexMax`, `EffectRealPointsPerLevel`, `EffectSpellClassMaskA`, `EffectSpellClassMaskB`, `EffectSpellClassMaskC`, `EffectTriggerSpell`, `EffectImplicitTargetA`, `EffectImplicitTargetB`, `EffectSpellId`, `EffectIndex`) VALUES
|
||||
(155919, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 58934, 0);
|
||||
|
||||
UPDATE `creature_template` SET `AIName`='' WHERE `entry`=25535;
|
||||
DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=25535;
|
||||
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=29726;
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=45723 AND `spell_effect`=43313;
|
||||
DELETE FROM `disables` WHERE `sourceType`=0 AND `entry` IN(45724);
|
||||
INSERT INTO `disables` (`sourceType`, `entry`, `flags`, `params_0`, `params_1`, `comment`) VALUES
|
||||
(0,45724,64,0,0,'Disable LoS for spell Braziers Hit');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (45907,46054,45732,29705,29727);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition` ,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(13,1,45907,0,0,31,0,3,25535,0,0,0,'','Spell \'Torch Target Picker\' targets [DNT] Torch Tossing Target Bunny'),
|
||||
(13,1,45907,0,0,1,0,45723,0,0,1,0,'','Spell \'Torch Target Picker\' can not hit targets with Aura \'Target Indicator (Rank 1)\''),
|
||||
(13,1,45732,0,0,1,0,45723,0,0,0,0,'','Spell \'Torch Toss\' can only hit targets with Aura \'Target Indicator\''),
|
||||
(13,1,46054,0,0,1,0,45723,0,0,0,0,'','Spell \'Torch Toss\' can only hit targets with Aura \'Target Indicator\''),
|
||||
(13,1,46054,0,0,31,0,3,25535,0,0,0,'','Spell \'Torch Target Picker\' targets [DNT] Torch Tossing Target Bunny'),
|
||||
(13,1,45732,0,0,31,0,3,25535,0,0,0,'','Spell \'Torch Target Picker\' targets [DNT] Torch Tossing Target Bunny'),
|
||||
(13,1,29705,0,0,31,0,3,17066,0,0,0,'','Spell \'Test Ribbon Pole Channel\' targets Ribbon Pole Debug Target'),
|
||||
(13,1,29727,0,0,31,0,3,17066,0,0,0,'','Spell \'Test Ribbon Pole Channel\' targets Ribbon Pole Debug Target');
|
||||
@@ -1491,117 +1491,175 @@ enum TorchSpells
|
||||
SPELL_TORCH_TOSSING_PRACTICE = 46630,
|
||||
SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE = 45719,
|
||||
SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE = 46651,
|
||||
SPELL_TARGET_INDICATOR_COSMETIC = 46901,
|
||||
SPELL_TARGET_INDICATOR = 45723,
|
||||
SPELL_BRAZIERS_HIT = 45724
|
||||
};
|
||||
|
||||
// 45724 - Braziers Hit!
|
||||
class spell_midsummer_braziers_hit : public SpellScriptLoader
|
||||
class spell_midsummer_braziers_hit : public AuraScript
|
||||
{
|
||||
public:
|
||||
spell_midsummer_braziers_hit() : SpellScriptLoader("spell_midsummer_braziers_hit") { }
|
||||
PrepareAuraScript(spell_midsummer_braziers_hit);
|
||||
|
||||
class spell_midsummer_braziers_hit_AuraScript : public AuraScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
PrepareAuraScript(spell_midsummer_braziers_hit_AuraScript);
|
||||
SPELL_TORCH_TOSSING_TRAINING,
|
||||
SPELL_TORCH_TOSSING_PRACTICE,
|
||||
SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE,
|
||||
SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE
|
||||
});
|
||||
}
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_TORCH_TOSSING_TRAINING, SPELL_TORCH_TOSSING_PRACTICE });
|
||||
}
|
||||
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
Player* player = GetTarget()->ToPlayer();
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
Player* player = GetTarget()->ToPlayer();
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
if ((player->HasAura(SPELL_TORCH_TOSSING_TRAINING) && GetStackAmount() == 8) || (player->HasAura(SPELL_TORCH_TOSSING_PRACTICE) && GetStackAmount() == 20))
|
||||
{
|
||||
if (player->GetTeam() == ALLIANCE)
|
||||
player->CastSpell(player, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE, true);
|
||||
else if (player->GetTeam() == HORDE)
|
||||
player->CastSpell(player, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE, true);
|
||||
Remove();
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_midsummer_braziers_hit_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AuraEffectHandleModes(AURA_EFFECT_HANDLE_REAPPLY));
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
if ((player->HasAura(SPELL_TORCH_TOSSING_TRAINING) && GetStackAmount() == 8) || (player->HasAura(SPELL_TORCH_TOSSING_PRACTICE) && GetStackAmount() == 20))
|
||||
{
|
||||
return new spell_midsummer_braziers_hit_AuraScript();
|
||||
if (player->GetTeam() == ALLIANCE)
|
||||
player->CastSpell(player, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE, true);
|
||||
else if (player->GetTeam() == HORDE)
|
||||
player->CastSpell(player, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE, true);
|
||||
Remove();
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_midsummer_braziers_hit::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAPPLY);
|
||||
}
|
||||
};
|
||||
|
||||
// 45907 - Torch Target Picker
|
||||
class spell_midsummer_torch_target_picker : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_midsummer_torch_target_picker);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_TARGET_INDICATOR_COSMETIC, SPELL_TARGET_INDICATOR });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* target = GetHitUnit();
|
||||
target->CastSpell(target, SPELL_TARGET_INDICATOR_COSMETIC, true);
|
||||
target->CastSpell(target, SPELL_TARGET_INDICATOR, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_midsummer_torch_target_picker::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 46054 - Torch Toss (land)
|
||||
class spell_midsummer_torch_toss_land : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_midsummer_torch_toss_land);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_BRAZIERS_HIT });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
GetHitUnit()->CastSpell(GetCaster(), SPELL_BRAZIERS_HIT, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_midsummer_torch_toss_land::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
enum RibbonPoleData
|
||||
{
|
||||
SPELL_HAS_FULL_MIDSUMMER_SET = 58933,
|
||||
SPELL_BURNING_HOT_POLE_DANCE = 58934,
|
||||
SPELL_RIBBON_DANCE_COSMETIC = 29726,
|
||||
SPELL_RIBBON_DANCE = 29175,
|
||||
GO_RIBBON_POLE = 181605,
|
||||
SPELL_HAS_FULL_MIDSUMMER_SET = 58933,
|
||||
SPELL_BURNING_HOT_POLE_DANCE = 58934,
|
||||
SPELL_RIBBON_POLE_PERIODIC_VISUAL = 45406,
|
||||
SPELL_RIBBON_DANCE = 29175,
|
||||
SPELL_TEST_RIBBON_POLE_1 = 29705,
|
||||
SPELL_TEST_RIBBON_POLE_2 = 29726,
|
||||
SPELL_TEST_RIBBON_POLE_3 = 29727
|
||||
};
|
||||
|
||||
class spell_gen_ribbon_pole_dancer_check : public SpellScriptLoader
|
||||
// 29705, 29726, 29727 - Test Ribbon Pole Channel
|
||||
class spell_midsummer_test_ribbon_pole_channel : public AuraScript
|
||||
{
|
||||
public:
|
||||
spell_gen_ribbon_pole_dancer_check() : SpellScriptLoader("spell_gen_ribbon_pole_dancer_check") { }
|
||||
PrepareAuraScript(spell_midsummer_test_ribbon_pole_channel);
|
||||
|
||||
class spell_gen_ribbon_pole_dancer_check_AuraScript : public AuraScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
PrepareAuraScript(spell_gen_ribbon_pole_dancer_check_AuraScript);
|
||||
SPELL_RIBBON_POLE_PERIODIC_VISUAL,
|
||||
SPELL_BURNING_HOT_POLE_DANCE,
|
||||
SPELL_HAS_FULL_MIDSUMMER_SET,
|
||||
SPELL_RIBBON_DANCE
|
||||
});
|
||||
}
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_HAS_FULL_MIDSUMMER_SET,
|
||||
SPELL_RIBBON_DANCE,
|
||||
SPELL_BURNING_HOT_POLE_DANCE
|
||||
});
|
||||
}
|
||||
void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
GetTarget()->RemoveAurasDueToSpell(SPELL_RIBBON_POLE_PERIODIC_VISUAL);
|
||||
}
|
||||
|
||||
void PeriodicTick(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
void PeriodicTick(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
target->CastSpell(target, SPELL_RIBBON_POLE_PERIODIC_VISUAL, true);
|
||||
|
||||
// check if aura needs to be removed
|
||||
if (!target->FindNearestGameObject(GO_RIBBON_POLE, 8.0f) || !target->HasUnitState(UNIT_STATE_CASTING))
|
||||
{
|
||||
target->InterruptNonMeleeSpells(false);
|
||||
target->RemoveAurasDueToSpell(GetId());
|
||||
target->RemoveAura(SPELL_RIBBON_DANCE_COSMETIC);
|
||||
return;
|
||||
}
|
||||
|
||||
// set xp buff duration
|
||||
if (Aura* aur = target->GetAura(SPELL_RIBBON_DANCE))
|
||||
{
|
||||
aur->SetMaxDuration(std::min(3600000, aur->GetMaxDuration() + 180000));
|
||||
aur->RefreshDuration();
|
||||
|
||||
// reward achievement criteria
|
||||
if (aur->GetMaxDuration() == 3600000 && target->HasAura(SPELL_HAS_FULL_MIDSUMMER_SET))
|
||||
target->CastSpell(target, SPELL_BURNING_HOT_POLE_DANCE, true);
|
||||
}
|
||||
else
|
||||
target->AddAura(SPELL_RIBBON_DANCE, target);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_gen_ribbon_pole_dancer_check_AuraScript::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
if (Aura* aur = target->GetAura(SPELL_RIBBON_DANCE))
|
||||
{
|
||||
return new spell_gen_ribbon_pole_dancer_check_AuraScript();
|
||||
aur->SetMaxDuration(std::min(3600000, aur->GetMaxDuration() + 180000));
|
||||
aur->RefreshDuration();
|
||||
|
||||
if (aur->GetMaxDuration() == 3600000 && target->HasAura(SPELL_HAS_FULL_MIDSUMMER_SET))
|
||||
target->CastSpell(target, SPELL_BURNING_HOT_POLE_DANCE, true);
|
||||
}
|
||||
else
|
||||
target->CastSpell(target, SPELL_RIBBON_DANCE, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_midsummer_test_ribbon_pole_channel::HandleRemove, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_midsummer_test_ribbon_pole_channel::PeriodicTick, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
// 45406 - Holiday - Midsummer, Ribbon Pole Periodic Visual
|
||||
class spell_midsummer_ribbon_pole_periodic_visual : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_midsummer_ribbon_pole_periodic_visual);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_TEST_RIBBON_POLE_1,
|
||||
SPELL_TEST_RIBBON_POLE_2,
|
||||
SPELL_TEST_RIBBON_POLE_3
|
||||
});
|
||||
}
|
||||
|
||||
void PeriodicTick(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
if (!target->HasAura(SPELL_TEST_RIBBON_POLE_1) && !target->HasAura(SPELL_TEST_RIBBON_POLE_2) && !target->HasAura(SPELL_TEST_RIBBON_POLE_3))
|
||||
Remove();
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_midsummer_ribbon_pole_periodic_visual::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_holiday_spell_scripts()
|
||||
@@ -1652,6 +1710,9 @@ void AddSC_holiday_spell_scripts()
|
||||
new spell_brewfest_dismount_ram();
|
||||
new spell_brewfest_barker_bunny();
|
||||
// Midsummer Fire Festival
|
||||
new spell_midsummer_braziers_hit();
|
||||
new spell_gen_ribbon_pole_dancer_check();
|
||||
RegisterAuraScript(spell_midsummer_braziers_hit);
|
||||
RegisterSpellScript(spell_midsummer_torch_target_picker);
|
||||
RegisterSpellScript(spell_midsummer_torch_toss_land);
|
||||
RegisterAuraScript(spell_midsummer_test_ribbon_pole_channel);
|
||||
RegisterAuraScript(spell_midsummer_ribbon_pole_periodic_visual);
|
||||
}
|
||||
|
||||
@@ -1406,10 +1406,18 @@ public:
|
||||
|
||||
enum MidsummerPoleRibbon
|
||||
{
|
||||
SPELL_POLE_DANCE = 29726,
|
||||
SPELL_BLUE_FIRE_RING = 46842,
|
||||
NPC_POLE_RIBBON_BUNNY = 17066,
|
||||
ACTION_COSMETIC_FIRES = 0
|
||||
SPELL_TEST_RIBBON_POLE_1 = 29705,
|
||||
SPELL_TEST_RIBBON_POLE_2 = 29726,
|
||||
SPELL_TEST_RIBBON_POLE_3 = 29727,
|
||||
NPC_POLE_RIBBON_BUNNY = 17066,
|
||||
ACTION_COSMETIC_FIRES = 0
|
||||
};
|
||||
|
||||
uint32 const RibbonPoleSpells[3] =
|
||||
{
|
||||
SPELL_TEST_RIBBON_POLE_1,
|
||||
SPELL_TEST_RIBBON_POLE_2,
|
||||
SPELL_TEST_RIBBON_POLE_3
|
||||
};
|
||||
|
||||
class go_midsummer_ribbon_pole : public GameObjectScript
|
||||
@@ -1426,7 +1434,7 @@ public:
|
||||
if (Creature* creature = me->FindNearestCreature(NPC_POLE_RIBBON_BUNNY, 10.0f))
|
||||
{
|
||||
creature->GetAI()->DoAction(ACTION_COSMETIC_FIRES);
|
||||
player->CastSpell(creature, SPELL_POLE_DANCE, true);
|
||||
player->CastSpell(player, RibbonPoleSpells[urand(0, 2)], true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -452,8 +452,7 @@ public:
|
||||
|
||||
enum TorchTossingTarget
|
||||
{
|
||||
NPC_TORCH_TOSSING_TARGET_BUNNY = 25535,
|
||||
SPELL_TARGET_INDICATOR = 45723
|
||||
SPELL_TORCH_TARGET_PICKER = 45907
|
||||
};
|
||||
|
||||
class npc_torch_tossing_target_bunny_controller : public CreatureScript
|
||||
@@ -463,42 +462,28 @@ public:
|
||||
|
||||
struct npc_torch_tossing_target_bunny_controllerAI : public ScriptedAI
|
||||
{
|
||||
npc_torch_tossing_target_bunny_controllerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
_targetTimer = 3000;
|
||||
}
|
||||
npc_torch_tossing_target_bunny_controllerAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
ObjectGuid DoSearchForTargets(ObjectGuid lastTargetGUID)
|
||||
void Reset() override
|
||||
{
|
||||
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())
|
||||
_scheduler.Schedule(Seconds(2), [this](TaskContext context)
|
||||
{
|
||||
_lastTargetGUID = Trinity::Containers::SelectRandomContainerElement(targets)->GetGUID();
|
||||
|
||||
return _lastTargetGUID;
|
||||
}
|
||||
return ObjectGuid::Empty;
|
||||
me->CastCustomSpell(SPELL_TORCH_TARGET_PICKER, SPELLVALUE_MAX_TARGETS, 1);
|
||||
_scheduler.Schedule(Seconds(3), [this](TaskContext /*context*/)
|
||||
{
|
||||
me->CastCustomSpell(SPELL_TORCH_TARGET_PICKER, SPELLVALUE_MAX_TARGETS, 1);
|
||||
});
|
||||
context.Repeat(Seconds(5));
|
||||
});
|
||||
}
|
||||
|
||||
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;
|
||||
_scheduler.Update(diff);
|
||||
}
|
||||
|
||||
private:
|
||||
uint32 _targetTimer;
|
||||
ObjectGuid _lastTargetGUID;
|
||||
TaskScheduler _scheduler;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
|
||||
Reference in New Issue
Block a user