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:
@@ -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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**********************************************/
|
/**********************************************/
|
||||||
|
|||||||
Reference in New Issue
Block a user