Scripts/ICC: Some fixes in Valkyr Shadowguard (#25572)

- Added missing transformation spell
- Fixed Soul Siphon casted in random targets. It should always cast in top threat player.
- Fixed combat reach of transformation
This commit is contained in:
Keader
2020-10-14 08:31:15 -03:00
committed by GitHub
parent 684910a230
commit 5fee99bdbc
2 changed files with 15 additions and 9 deletions

View File

@@ -0,0 +1,2 @@
--
UPDATE `creature_model_info` SET `CombatReach`=3 WHERE `DisplayID`=31312;

View File

@@ -126,6 +126,7 @@ enum Spells
SPELL_LIFE_SIPHON = 73488,
SPELL_LIFE_SIPHON_HEAL = 73489,
SPELL_EJECT_ALL_PASSENGERS = 68576,
SPELL_VALKYR_TRANSFORM = 73501,
// Phase 3
SPELL_VILE_SPIRITS = 70498,
@@ -1442,7 +1443,10 @@ private:
struct npc_valkyr_shadowguard : public ScriptedAI
{
npc_valkyr_shadowguard(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
npc_valkyr_shadowguard(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
{
SetCombatMovement(false);
}
void Reset() override
{
@@ -1479,10 +1483,6 @@ struct npc_valkyr_shadowguard : public ScriptedAI
me->ClearUnitState(UNIT_STATE_EVADE);
}
void AttackStart(Unit* /*target*/) override
{
}
void MovementInform(uint32 type, uint32 id) override
{
if (type != POINT_MOTION_TYPE)
@@ -1512,13 +1512,15 @@ struct npc_valkyr_shadowguard : public ScriptedAI
triggers.sort(Trinity::ObjectDistanceOrderPred(me));
DoCast(target, SPELL_VALKYR_CARRY);
_dropPoint.Relocate(triggers.front());
_events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 1500ms);
_events.ScheduleEvent(EVENT_MOVE_TO_DROP_POS, 1s + 500ms);
}
}
else
me->DespawnOrUnsummon();
break;
case POINT_SIPHON:
DoCastSelf(SPELL_VALKYR_TRANSFORM);
me->SetReactState(REACT_AGGRESSIVE);
DoZoneInCombat();
_events.ScheduleEvent(EVENT_LIFE_SIPHON, 2s);
break;
@@ -1557,9 +1559,8 @@ struct npc_valkyr_shadowguard : public ScriptedAI
me->GetMotionMaster()->MovePoint(POINT_DROP_PLAYER, _dropPoint);
break;
case EVENT_LIFE_SIPHON:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
DoCast(target, SPELL_LIFE_SIPHON);
_events.ScheduleEvent(EVENT_LIFE_SIPHON, 2500ms);
DoCastVictim(SPELL_LIFE_SIPHON);
_events.Repeat(2s + 500ms);
break;
case EVENT_MOVE_TO_CENTER:
{
@@ -1571,6 +1572,9 @@ struct npc_valkyr_shadowguard : public ScriptedAI
default:
break;
}
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
}
// no melee attacks