fix(Scripts/TempleOfAhnQiraj): Fix crash caused by permanently spawni… (#13698)
fix(Scripts/TempleOfAhnQiraj): Fix crash caused by permanently spawning a tentacle
This commit is contained in:
@@ -602,6 +602,8 @@ struct npc_eye_tentacle : public ScriptedAI
|
||||
portal->SetReactState(REACT_PASSIVE);
|
||||
_portalGUID = portal->GetGUID();
|
||||
|
||||
if (me->ToTempSummon())
|
||||
{
|
||||
if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
|
||||
{
|
||||
if (Creature* creature = summoner->ToCreature())
|
||||
@@ -610,6 +612,7 @@ struct npc_eye_tentacle : public ScriptedAI
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SetCombatMovement(false);
|
||||
}
|
||||
@@ -673,6 +676,8 @@ struct npc_claw_tentacle : public ScriptedAI
|
||||
portal->SetReactState(REACT_PASSIVE);
|
||||
_portalGUID = portal->GetGUID();
|
||||
|
||||
if (me->ToTempSummon())
|
||||
{
|
||||
if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
|
||||
{
|
||||
if (Creature* creature = summoner->ToCreature())
|
||||
@@ -682,6 +687,7 @@ struct npc_claw_tentacle : public ScriptedAI
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
@@ -740,6 +746,8 @@ struct npc_giant_claw_tentacle : public ScriptedAI
|
||||
portal->SetReactState(REACT_PASSIVE);
|
||||
_portalGUID = portal->GetGUID();
|
||||
|
||||
if (me->ToTempSummon())
|
||||
{
|
||||
if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
|
||||
{
|
||||
if (Creature* creature = summoner->ToCreature())
|
||||
@@ -748,6 +756,7 @@ struct npc_giant_claw_tentacle : public ScriptedAI
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_canAttack = false;
|
||||
}
|
||||
@@ -771,24 +780,10 @@ struct npc_giant_claw_tentacle : public ScriptedAI
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
DoZoneInCombat();
|
||||
|
||||
_scheduler.Schedule(2s, [this](TaskContext context)
|
||||
{
|
||||
DoCastVictim(SPELL_HAMSTRING);
|
||||
context.Repeat(10s);
|
||||
}).Schedule(5s, [this](TaskContext context)
|
||||
{
|
||||
DoCastSelf(SPELL_THRASH);
|
||||
context.Repeat(10s);
|
||||
}).Schedule(3s, [this](TaskContext /*context*/)
|
||||
{
|
||||
_canAttack = true;
|
||||
});
|
||||
|
||||
ScheduleMeleeCheck();
|
||||
ScheduleTasks();
|
||||
}
|
||||
|
||||
void ScheduleMeleeCheck()
|
||||
void ScheduleTasks()
|
||||
{
|
||||
// Check if a target is in melee range
|
||||
_scheduler.Schedule(10s, [this](TaskContext task)
|
||||
@@ -810,6 +805,17 @@ struct npc_giant_claw_tentacle : public ScriptedAI
|
||||
}
|
||||
|
||||
task.Repeat();
|
||||
}).Schedule(2s, [this](TaskContext context)
|
||||
{
|
||||
DoCastVictim(SPELL_HAMSTRING);
|
||||
context.Repeat(10s);
|
||||
}).Schedule(5s, [this](TaskContext context)
|
||||
{
|
||||
DoCastSelf(SPELL_THRASH);
|
||||
context.Repeat(10s);
|
||||
}).Schedule(3s, [this](TaskContext /*context*/)
|
||||
{
|
||||
_canAttack = true;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -856,13 +862,8 @@ struct npc_giant_claw_tentacle : public ScriptedAI
|
||||
DoCastAOE(SPELL_MASSIVE_GROUND_RUPTURE, true);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
ScheduleMeleeCheck();
|
||||
ScheduleTasks();
|
||||
}
|
||||
|
||||
_scheduler.Schedule(3s, [this](TaskContext /*context*/)
|
||||
{
|
||||
_canAttack = true;
|
||||
});
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -896,6 +897,8 @@ struct npc_giant_eye_tentacle : public ScriptedAI
|
||||
portal->SetReactState(REACT_PASSIVE);
|
||||
_portalGUID = portal->GetGUID();
|
||||
|
||||
if (me->ToTempSummon())
|
||||
{
|
||||
if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
|
||||
{
|
||||
if (Creature* creature = summoner->ToCreature())
|
||||
@@ -905,6 +908,7 @@ struct npc_giant_eye_tentacle : public ScriptedAI
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user