fix(Scripts/Karazhan): Replace Big Bad Wolf chase mechanic with prope… (#17458)

fix(Scripts/Karazhan): Replace Big Bad Wolf chase mechanic with proper taunt spell
This commit is contained in:
Andrew
2023-10-08 17:19:48 -03:00
committed by GitHub
parent e644dd949f
commit 7f36c5f059
@@ -688,6 +688,7 @@ enum RedRidingHood
SPELL_LITTLE_RED_RIDING_HOOD = 30768, SPELL_LITTLE_RED_RIDING_HOOD = 30768,
SPELL_TERRIFYING_HOWL = 30752, SPELL_TERRIFYING_HOWL = 30752,
SPELL_WIDE_SWIPE = 30761, SPELL_WIDE_SWIPE = 30761,
SPELL_PICNIC_BASKET_SMELL = 30755,
CREATURE_BIG_BAD_WOLF = 17521, CREATURE_BIG_BAD_WOLF = 17521,
@@ -751,16 +752,6 @@ struct boss_bigbadwolf : public ScriptedAI
InstanceScript* instance; InstanceScript* instance;
ObjectGuid HoodGUID;
void Reset() override
{
HoodGUID.Clear();
_tempThreat = 0;
_isChasing = false;
}
void JustEngagedWith(Unit* /*who*/) override void JustEngagedWith(Unit* /*who*/) override
{ {
instance->DoUseDoorOrButton(instance->GetGuidData(DATA_GO_STAGEDOORLEFT)); instance->DoUseDoorOrButton(instance->GetGuidData(DATA_GO_STAGEDOORLEFT));
@@ -769,40 +760,14 @@ struct boss_bigbadwolf : public ScriptedAI
_scheduler.Schedule(30s, [this](TaskContext context) _scheduler.Schedule(30s, [this](TaskContext context)
{ {
if (!_isChasing) if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{ {
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true)) Talk(SAY_WOLF_HOOD);
{ DoCast(target, SPELL_LITTLE_RED_RIDING_HOOD, true);
Talk(SAY_WOLF_HOOD); target->CastSpell(me, SPELL_PICNIC_BASKET_SMELL, true);
DoCast(target, SPELL_LITTLE_RED_RIDING_HOOD, true);
_tempThreat = DoGetThreat(target);
if (_tempThreat)
{
DoModifyThreatByPercent(target, -100);
}
HoodGUID = target->GetGUID();
me->AddThreat(target, 1000000.0f);
_isChasing = true;
context.Repeat(20s);
}
} }
else
{
_isChasing = false;
if (Unit* target = ObjectAccessor::GetUnit(*me, HoodGUID)) context.Repeat(40s);
{
HoodGUID.Clear();
if (DoGetThreat(target))
{
DoModifyThreatByPercent(target, -100);
}
me->AddThreat(target, _tempThreat);
_tempThreat = 0;
}
context.Repeat(40s);
}
}).Schedule(25s, 35s, [this](TaskContext context) }).Schedule(25s, 35s, [this](TaskContext context)
{ {
DoCastAOE(SPELL_TERRIFYING_HOWL); DoCastAOE(SPELL_TERRIFYING_HOWL);
@@ -845,15 +810,10 @@ struct boss_bigbadwolf : public ScriptedAI
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
if (_isChasing)
return;
_scheduler.Update(diff); _scheduler.Update(diff);
} }
private: private:
TaskScheduler _scheduler; TaskScheduler _scheduler;
bool _isChasing;
float _tempThreat;
}; };
/**********************************************/ /**********************************************/