More Updates to scripts.

This commit is contained in:
hondacrx
2023-10-15 15:17:44 -04:00
parent 50cda96b45
commit 73fd633065
7 changed files with 1010 additions and 520 deletions
+555
View File
@@ -0,0 +1,555 @@
// Copyright (c) CypherCore <http://github.com/CypherCore> All rights reserved.
// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information.
using Framework.Constants;
using Framework.Dynamic;
using Game;
using Game.AI;
using Game.Entities;
using Game.Maps;
using Game.Scripting;
using Game.Spells;
using System;
using System.Collections.Generic;
using static Global;
namespace Scripts.BrokenIsles.ZoneMardum
{
enum MardumQuestData
{
QuestDemonHunterIntroTracker = 40076
}
enum MardumSoundData
{
}
[Script]
class scene_demonhunter_intro : SceneScript
{
const uint ConvoDemonhunterIntroStart = 705;
public scene_demonhunter_intro() : base("scene_demonhunter_intro") { }
public override void OnSceneStart(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate)
{
Conversation.CreateConversation(ConvoDemonhunterIntroStart, player, player, player.GetGUID(), null);
}
public override void OnSceneComplete(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate)
{
PhasingHandler.OnConditionChange(player);
}
}
[Script] // 196030 - Start: Quest Invis
class spell_demon_hunter_intro_AuraScript : AuraScript
{
const uint SpellStartDemonHunterPlayScene = 193525;
void AfterRemove(AuraEffect aurEff, AuraEffectHandleModes mode)
{
GetTarget().CastSpell(null, SpellStartDemonHunterPlayScene, true);
}
public override void Register()
{
AfterEffectRemove.Add(new(AfterRemove, 0, AuraType.Dummy, AuraEffectHandleModes.Real));
}
}
struct TheInvasionBeginsConst
{
public const uint QuestTheInvasionBegins = 40077;
public const int ConvoTheInvasionBegins = 922;
public const uint NpcKaynSunfuryInvasionBegins = 93011;
public const uint NpcJayceDarkweaverInvasionBegins = 98228;
public const uint NpcAllariTheSouleaterInvasionBegins = 98227;
public const uint NpcCyanaNightglaiveInvasionBegins = 98290;
public const uint NpcKorvasBloodthornInvasionBegins = 98292;
public const uint NpcSevisBrightflameInvasionBegins = 99918;
public const uint NpcWrathWarriorInvasionBegins = 94580;
public const uint SpellTheInvasionBegins = 187382;
public const uint SpellTrackTargetInChannel = 175799;
public const uint SpellDemonHunterGlideState = 199303;
// Kayn
public const uint PathKaynAttackDemon = 9301100;
public const uint PathKaynAfterDemon = 9301101;
// Path before Jump
public const uint PathJayceInvasionBegins = 9822800;
public const uint PathAllariInvasionBegins = 9822700;
public const uint PathCyanaInvasionBegins = 9829000;
public const uint PathKorvasinvasionBegins = 9829200;
public const uint PathSevisinvasionBegins = 9991800;
// Path after Jump
public const uint PathJayceJupinvasionBegins = 9822801;
public const uint PathAllariJupinvasionBegins = 9822701;
public const uint PathCyanaJupinvasionBegins = 9829001;
public const uint PathKorvasJupinvasionBegins = 9829201;
public const uint PathSevisJupinvasionBegins = 9991801;
public const uint PointIllidariLandPos = 1;
public const uint PointKaynTriggerDoubleJump = 2;
public const uint PointKaynMoveToDemon = 3;
public const ushort AnimDhWings = 58110;
public const ushort AnimDhRun = 9767;
public const ushort AnimDhRunAllari = 9180;
public const uint SpellVisualKitKaynGlide = 59738;
public const uint SpellVisualKitKaynWings = 59406;
public const uint SpellVisualKitKaynDoubleJump = 58110;
public const uint SpellVisualKitKorvasJump = 63071;
public const uint SpellVisualKitWrathWarriorDie = 58476;
public static Position WrathWarriorSpawnPosition = new(1081.9166f, 3183.8716f, 26.335993f);
public static Position KaynJumpPos = new(1172.17f, 3202.55f, 54.3479f);
public static Position KaynDoubleJumpPosition = new(1094.2384f, 3186.058f, 28.81562f);
public static Position JayceJumpPos = new(1119.24f, 3203.42f, 38.1061f);
public static Position AllariJumpPos = new(1120.08f, 3197.2f, 36.8502f);
public static Position KorvasJumpPos = new(1117.89f, 3196.24f, 36.2158f);
public static Position SevisJumpPos = new(1120.74f, 3199.47f, 37.5157f);
public static Position CyanaJumpPos = new(1120.34f, 3194.28f, 36.4321f);
}
[Script] // 93011 - Kayn Sunfury
class npc_kayn_sunfury_invasion_begins : ScriptedAI
{
const uint SoundSpellDoubleJump = 53780;
public npc_kayn_sunfury_invasion_begins(Creature creature) : base(creature) { }
public override void OnQuestAccept(Player player, Quest quest)
{
if (quest.Id == TheInvasionBeginsConst.QuestTheInvasionBegins)
{
PhasingHandler.OnConditionChange(player);
player.CastSpell(TheInvasionBeginsConst.WrathWarriorSpawnPosition, TheInvasionBeginsConst.SpellTheInvasionBegins, false);
Conversation.CreateConversation(TheInvasionBeginsConst.ConvoTheInvasionBegins, player, player, player.GetGUID(), null, false);
}
}
public override void WaypointPathEnded(uint nodeId, uint pathId)
{
if (pathId == TheInvasionBeginsConst.PathKaynAttackDemon)
{
Creature wrathWarrior = me.FindNearestCreatureWithOptions(100.0f, new FindCreatureOptions() { CreatureId = TheInvasionBeginsConst.NpcWrathWarriorInvasionBegins, IgnorePhases = true, OwnerGuid = me.GetOwnerGUID() });
if (wrathWarrior == null)
return;
me.SetFacingToObject(wrathWarrior);
wrathWarrior.SendPlaySpellVisualKit(TheInvasionBeginsConst.SpellVisualKitWrathWarriorDie, 0, 0);
wrathWarrior.KillSelf();
_scheduler.Schedule(TimeSpan.FromMilliseconds(600), _ => me.GetMotionMaster().MovePath(TheInvasionBeginsConst.PathKaynAfterDemon, false));
}
else if (pathId == TheInvasionBeginsConst.PathKaynAfterDemon)
me.DespawnOrUnsummon();
}
public override void MovementInform(MovementGeneratorType type, uint pointId)
{
if (type != MovementGeneratorType.Effect)
return;
if (pointId == TheInvasionBeginsConst.PointKaynTriggerDoubleJump)
{
TempSummon summon = me.ToTempSummon();
if (summon == null)
return;
WorldObject summoner = summon.GetSummoner();
if (summoner == null)
return;
Player summonerPlayer = summoner.ToPlayer();
if (summonerPlayer == null)
return;
me.SendPlaySpellVisualKit(TheInvasionBeginsConst.SpellVisualKitKaynWings, 4, 3000);
me.PlayObjectSound(SoundSpellDoubleJump, me.GetGUID(), summonerPlayer);
me.SendPlaySpellVisualKit(TheInvasionBeginsConst.SpellVisualKitKaynDoubleJump, 0, 0);
me.GetMotionMaster().MoveJumpWithGravity(TheInvasionBeginsConst.KaynDoubleJumpPosition, 24.0f, 0.9874f, TheInvasionBeginsConst.PointKaynMoveToDemon);
}
else if (pointId == TheInvasionBeginsConst.PointKaynMoveToDemon)
{
me.SetAIAnimKitId(TheInvasionBeginsConst.AnimDhRun);
me.GetMotionMaster().MovePath(TheInvasionBeginsConst.PathKaynAttackDemon, false, null, 4.0f);
}
}
public override void UpdateAI(uint diff)
{
_scheduler.Update(diff);
}
}
[Script] // 98228 - Jayce Darkweaver
class npc_jayce_darkweaver_invasion_begins : ScriptedAI
{
public npc_jayce_darkweaver_invasion_begins(Creature creature) : base(creature) { }
public override void WaypointPathEnded(uint nodeId, uint pathId)
{
if (pathId == TheInvasionBeginsConst.PathJayceInvasionBegins)
{
me.CastSpell(null, TheInvasionBeginsConst.SpellDemonHunterGlideState, true);
me.GetMotionMaster().MoveJumpWithGravity(TheInvasionBeginsConst.JayceJumpPos, 12.0f, 15.2792f, TheInvasionBeginsConst.PointIllidariLandPos);
}
else if (pathId == TheInvasionBeginsConst.PathJayceJupinvasionBegins)
me.DespawnOrUnsummon();
}
public override void MovementInform(MovementGeneratorType type, uint pointId)
{
if (type != MovementGeneratorType.Effect)
return;
if (pointId == TheInvasionBeginsConst.PointIllidariLandPos)
{
me.RemoveAurasDueToSpell(TheInvasionBeginsConst.SpellDemonHunterGlideState);
me.GetMotionMaster().MovePath(TheInvasionBeginsConst.PathJayceJupinvasionBegins, false);
}
}
}
[Script] // 98227 - Allari the Souleater
class npc_allari_the_souleater_invasion_begins : ScriptedAI
{
public npc_allari_the_souleater_invasion_begins(Creature creature) : base(creature) { }
public override void WaypointPathEnded(uint nodeId, uint pathId)
{
if (pathId == TheInvasionBeginsConst.PathAllariInvasionBegins)
{
me.CastSpell(null, TheInvasionBeginsConst.SpellDemonHunterGlideState, true);
me.GetMotionMaster().MoveJumpWithGravity(TheInvasionBeginsConst.AllariJumpPos, 12.0f, 9.2722f, TheInvasionBeginsConst.PointIllidariLandPos);
}
else if (pathId == TheInvasionBeginsConst.PathAllariJupinvasionBegins)
me.DespawnOrUnsummon();
}
public override void MovementInform(MovementGeneratorType type, uint pointId)
{
if (type != MovementGeneratorType.Effect)
return;
if (pointId == TheInvasionBeginsConst.PointIllidariLandPos)
{
me.RemoveAurasDueToSpell(TheInvasionBeginsConst.SpellDemonHunterGlideState);
me.GetMotionMaster().MovePath(TheInvasionBeginsConst.PathAllariJupinvasionBegins, false);
}
}
}
[Script] // 98292 - Korvas Bloodthorn
class npc_korvas_bloodthorn_invasion_begins : ScriptedAI
{
public npc_korvas_bloodthorn_invasion_begins(Creature creature) : base(creature) { }
public override void WaypointPathEnded(uint nodeId, uint pathId)
{
if (pathId == TheInvasionBeginsConst.PathKorvasinvasionBegins)
{
me.SendPlaySpellVisualKit(TheInvasionBeginsConst.SpellVisualKitKorvasJump, 4, 2000);
me.GetMotionMaster().MoveJumpWithGravity(TheInvasionBeginsConst.KorvasJumpPos, 24.0f, 19.2911f, TheInvasionBeginsConst.PointIllidariLandPos);
}
else if (pathId == TheInvasionBeginsConst.PathKorvasJupinvasionBegins)
me.DespawnOrUnsummon();
}
public override void MovementInform(MovementGeneratorType type, uint pointId)
{
if (type != MovementGeneratorType.Effect)
return;
if (pointId == TheInvasionBeginsConst.PointIllidariLandPos)
{
me.RemoveAurasDueToSpell(TheInvasionBeginsConst.SpellDemonHunterGlideState);
me.GetMotionMaster().MovePath(TheInvasionBeginsConst.PathKorvasJupinvasionBegins, false);
}
}
}
[Script] // 99918 - Sevis Brightflame
class npc_sevis_brightflame_invasion_begins : ScriptedAI
{
public npc_sevis_brightflame_invasion_begins(Creature creature) : base(creature) { }
public override void WaypointPathEnded(uint nodeId, uint pathId)
{
if (pathId == TheInvasionBeginsConst.PathSevisinvasionBegins)
{
me.CastSpell(null, TheInvasionBeginsConst.SpellDemonHunterGlideState, true);
me.GetMotionMaster().MoveJumpWithGravity(TheInvasionBeginsConst.SevisJumpPos, 12.0f, 13.3033f, TheInvasionBeginsConst.PointIllidariLandPos);
}
else if (pathId == TheInvasionBeginsConst.PathSevisJupinvasionBegins)
me.DespawnOrUnsummon();
}
public override void MovementInform(MovementGeneratorType type, uint pointId)
{
if (type != MovementGeneratorType.Effect)
return;
if (pointId == TheInvasionBeginsConst.PointIllidariLandPos)
{
me.RemoveAurasDueToSpell(TheInvasionBeginsConst.SpellDemonHunterGlideState);
me.GetMotionMaster().MovePath(TheInvasionBeginsConst.PathSevisJupinvasionBegins, false);
}
}
}
[Script] // 98290 - Cyana Nightglaive
class npc_cyana_nightglaive_invasion_begins : ScriptedAI
{
public npc_cyana_nightglaive_invasion_begins(Creature creature) : base(creature) { }
public override void WaypointPathEnded(uint nodeId, uint pathId)
{
if (pathId == TheInvasionBeginsConst.PathCyanaInvasionBegins)
{
me.CastSpell(null, TheInvasionBeginsConst.SpellDemonHunterGlideState, true);
me.GetMotionMaster().MoveJumpWithGravity(TheInvasionBeginsConst.CyanaJumpPos, 12.0f, 8.4555f, TheInvasionBeginsConst.PointIllidariLandPos);
}
else if (pathId == TheInvasionBeginsConst.PathCyanaJupinvasionBegins)
me.DespawnOrUnsummon();
}
public override void MovementInform(MovementGeneratorType type, uint pointId)
{
if (type != MovementGeneratorType.Effect)
return;
if (pointId == TheInvasionBeginsConst.PointIllidariLandPos)
{
me.RemoveAurasDueToSpell(TheInvasionBeginsConst.SpellDemonHunterGlideState);
me.GetMotionMaster().MovePath(TheInvasionBeginsConst.PathCyanaJupinvasionBegins, false);
}
}
}
[Script] // 922 - The Invasion Begins
class conversation_the_invasion_begins : ConversationScript
{
const int ConvoLineTriggerFacing = 2529;
const int ConvoLineStartPath = 2288;
const int ConvoActorIdxKayn = 1;
const int ConvoActorIdxKorvas = 2;
const uint SoundMetalWeaponUnsheath = 700;
TaskScheduler _scheduler = new TaskScheduler();
ObjectGuid _jayceGUID;
ObjectGuid _allariGUID;
ObjectGuid _cyanaGUID;
ObjectGuid _sevisGUID;
public conversation_the_invasion_begins() : base("conversation_the_invasion_begins") { }
public override void OnConversationCreate(Conversation conversation, Unit creator)
{
Creature kaynObject = creator.FindNearestCreatureWithOptions(10.0f, new FindCreatureOptions() { CreatureId = TheInvasionBeginsConst.NpcKaynSunfuryInvasionBegins, IgnorePhases = true });
Creature jayceObject = creator.FindNearestCreatureWithOptions(10.0f, new FindCreatureOptions() { CreatureId = TheInvasionBeginsConst.NpcJayceDarkweaverInvasionBegins, IgnorePhases = true });
Creature allariaObject = creator.FindNearestCreatureWithOptions(10.0f, new FindCreatureOptions() { CreatureId = TheInvasionBeginsConst.NpcAllariTheSouleaterInvasionBegins, IgnorePhases = true });
Creature cyanaObject = creator.FindNearestCreatureWithOptions(10.0f, new FindCreatureOptions() { CreatureId = TheInvasionBeginsConst.NpcCyanaNightglaiveInvasionBegins, IgnorePhases = true });
Creature korvasObject = creator.FindNearestCreatureWithOptions(10.0f, new FindCreatureOptions() { CreatureId = TheInvasionBeginsConst.NpcKorvasBloodthornInvasionBegins, IgnorePhases = true });
Creature sevisObject = creator.FindNearestCreatureWithOptions(10.0f, new FindCreatureOptions() { CreatureId = TheInvasionBeginsConst.NpcSevisBrightflameInvasionBegins, IgnorePhases = true });
if (kaynObject == null || jayceObject == null || allariaObject == null || cyanaObject == null || korvasObject == null || sevisObject == null)
return;
TempSummon kaynClone = kaynObject.SummonPersonalClone(kaynObject.GetPosition(), TempSummonType.ManualDespawn, TimeSpan.FromSeconds(0), 0, 0, creator.ToPlayer());
TempSummon jayceClone = jayceObject.SummonPersonalClone(jayceObject.GetPosition(), TempSummonType.ManualDespawn, TimeSpan.FromSeconds(0), 0, 0, creator.ToPlayer());
TempSummon allariaClone = allariaObject.SummonPersonalClone(allariaObject.GetPosition(), TempSummonType.ManualDespawn, TimeSpan.FromSeconds(0), 0, 0, creator.ToPlayer());
TempSummon cyanaClone = cyanaObject.SummonPersonalClone(cyanaObject.GetPosition(), TempSummonType.ManualDespawn, TimeSpan.FromSeconds(0), 0, 0, creator.ToPlayer());
TempSummon korvasClone = korvasObject.SummonPersonalClone(korvasObject.GetPosition(), TempSummonType.ManualDespawn, TimeSpan.FromSeconds(0), 0, 0, creator.ToPlayer());
TempSummon sevisClone = sevisObject.SummonPersonalClone(sevisObject.GetPosition(), TempSummonType.ManualDespawn, TimeSpan.FromSeconds(0), 0, 0, creator.ToPlayer());
if (kaynClone == null || jayceClone == null || allariaClone == null || cyanaClone == null || korvasClone == null || sevisClone == null)
return;
_jayceGUID = jayceClone.GetGUID();
_allariGUID = allariaClone.GetGUID();
_cyanaGUID = cyanaClone.GetGUID();
_sevisGUID = sevisClone.GetGUID();
allariaClone.SetAIAnimKitId(TheInvasionBeginsConst.AnimDhRunAllari);
kaynClone.RemoveNpcFlag(NPCFlags.Gossip | NPCFlags.QuestGiver);
conversation.AddActor(TheInvasionBeginsConst.ConvoTheInvasionBegins, ConvoActorIdxKayn, kaynClone.GetGUID());
conversation.AddActor(TheInvasionBeginsConst.ConvoTheInvasionBegins, ConvoActorIdxKorvas, korvasClone.GetGUID());
conversation.Start();
}
public override void OnConversationStart(Conversation conversation)
{
Locale privateOwnerLocale = conversation.GetPrivateObjectOwnerLocale();
TimeSpan illidariFacingLineStarted = conversation.GetLineStartTime(privateOwnerLocale, ConvoLineTriggerFacing);
if (illidariFacingLineStarted != TimeSpan.Zero)
{
_scheduler.Schedule(illidariFacingLineStarted, _ =>
{
StartCloneChannel(conversation.GetActorUnit(ConvoActorIdxKayn).GetGUID(), conversation);
StartCloneChannel(conversation.GetActorUnit(ConvoActorIdxKorvas).GetGUID(), conversation);
StartCloneChannel(_jayceGUID, conversation);
StartCloneChannel(_allariGUID, conversation);
StartCloneChannel(_cyanaGUID, conversation);
StartCloneChannel(_sevisGUID, conversation);
});
}
TimeSpan illidariStartPathLineStarted = conversation.GetLineStartTime(privateOwnerLocale, ConvoLineStartPath);
if (illidariStartPathLineStarted != TimeSpan.Zero)
{
_scheduler.Schedule(illidariStartPathLineStarted, _ =>
{
Creature kaynClone = conversation.GetActorCreature(ConvoActorIdxKayn);
if (kaynClone == null)
return;
Unit privateObjectOwner = ObjAccessor.GetUnit(conversation, conversation.GetPrivateObjectOwner());
if (privateObjectOwner == null)
return;
Player player = privateObjectOwner.ToPlayer();
if (player == null)
return;
kaynClone.PlayObjectSound(SoundMetalWeaponUnsheath, kaynClone.GetGUID(), player);
kaynClone.SendPlaySpellVisualKit(TheInvasionBeginsConst.SpellVisualKitKaynGlide, 4, 3000);
kaynClone.SendPlaySpellVisualKit(TheInvasionBeginsConst.SpellVisualKitKaynWings, 4, 4000);
kaynClone.GetMotionMaster().MoveJumpWithGravity(TheInvasionBeginsConst.KaynJumpPos, 20.5f, 396.3535f, TheInvasionBeginsConst.PointKaynTriggerDoubleJump);
kaynClone.SetSheath(SheathState.Melee);
kaynClone.SetNpcFlag(NPCFlags.QuestGiver);
StartCloneMovement(conversation.GetActorUnit(ConvoActorIdxKorvas).GetGUID(), TheInvasionBeginsConst.PathKorvasinvasionBegins, TheInvasionBeginsConst.AnimDhRun, conversation);
StartCloneMovement(_jayceGUID, TheInvasionBeginsConst.PathJayceInvasionBegins, 0, conversation);
StartCloneMovement(_allariGUID, TheInvasionBeginsConst.PathAllariInvasionBegins, TheInvasionBeginsConst.AnimDhRunAllari, conversation);
StartCloneMovement(_cyanaGUID, TheInvasionBeginsConst.PathCyanaInvasionBegins, 0, conversation);
StartCloneMovement(_sevisGUID, TheInvasionBeginsConst.PathSevisinvasionBegins, TheInvasionBeginsConst.AnimDhRun, conversation);
});
}
}
void StartCloneChannel(ObjectGuid guid, Conversation conversation)
{
Unit privateObjectOwner = ObjAccessor.GetUnit(conversation, conversation.GetPrivateObjectOwner());
if (privateObjectOwner == null)
return;
Creature clone = ObjectAccessor.GetCreature(conversation, guid);
if (clone == null)
return;
clone.CastSpell(privateObjectOwner, TheInvasionBeginsConst.SpellTrackTargetInChannel, false);
}
void StartCloneMovement(ObjectGuid cloneGUID, uint pathId, uint animKit, Conversation conversation)
{
Creature clone = ObjectAccessor.GetCreature(conversation, cloneGUID);
if (clone == null)
return;
clone.InterruptNonMeleeSpells(true);
clone.GetMotionMaster().MovePath(pathId, false);
if (animKit != 0)
clone.SetAIAnimKitId((ushort)animKit);
}
public override void OnConversationUpdate(Conversation conversation, uint diff)
{
_scheduler.Update(diff);
}
}
// 98459 - Kayn Sunfury
// 98458 - Jayce Darkweaver
// 98456 - Allari the Souleater
// 98460 - Korvas Bloodthorn
// 99919 - Sevis Brightflame
[Script] // 98457 - Cyana Nightglaive
class npc_illidari_fighting_invasion_begins : ScriptedAI
{
const uint SpellIllidariChaosStrike = 197639;
const uint SpellIllidariFelRush = 200879;
public npc_illidari_fighting_invasion_begins(Creature creature) : base(creature) { }
Unit GetNextTarget()
{
List<Unit> targetList = new();
AnyUnfriendlyUnitInObjectRangeCheck checker = new(me, me, 100.0f);
UnitListSearcher searcher = new(me, targetList, checker);
Cell.VisitAllObjects(me, searcher, 100.0f);
targetList.RemoveAll(possibleTarget => possibleTarget.IsAttackingPlayer());
return targetList.SelectRandom();
}
void ScheduleTargetSelection()
{
_scheduler.Schedule(TimeSpan.FromMilliseconds(200), task =>
{
Unit target = GetNextTarget();
if (target == null)
{
task.Repeat(TimeSpan.FromMilliseconds(500));
return;
}
AttackStart(target);
});
}
public override void JustAppeared()
{
ScheduleTargetSelection();
}
public override void Reset()
{
_scheduler.CancelAll();
}
public override void JustEngagedWith(Unit who)
{
_scheduler.CancelAll();
_scheduler.Schedule(TimeSpan.FromSeconds(5), task =>
{
DoCastVictim(SpellIllidariChaosStrike);
task.Repeat(TimeSpan.FromSeconds(5));
});
_scheduler.Schedule(TimeSpan.FromSeconds(7), task =>
{
DoCastVictim(SpellIllidariFelRush);
task.Repeat(TimeSpan.FromSeconds(7));
});
}
public override void EnterEvadeMode(EvadeReason why)
{
// manualling calling it to not move to home position but move to next target instead
_EnterEvadeMode(why);
Reset();
ScheduleTargetSelection();
}
public override void UpdateAI(uint diff)
{
_scheduler.Update(diff);
if (me.HasUnitState(UnitState.Casting))
return;
DoMeleeAttackIfReady();
}
}
}
+274 -360
View File
@@ -10,8 +10,9 @@ using Game.Scripting;
using System;
using System.Collections.Generic;
using System.Numerics;
using static Global;
namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
namespace Scripts.BrokenIsles
{
struct SpellIds
{
@@ -20,17 +21,6 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
public const uint CancelCompleteSceneWarriorOrderFormation = 193711;
}
struct PhaseIds
{
public const uint Odyn = 5107;
public const uint Danica = 5090;
}
struct QuestIds
{
public const uint OdynAndTheValarjar = 39654;
}
struct CreatureIds
{
public const uint KillCreditFollowedDanica = 103036;
@@ -47,49 +37,54 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
public const uint HovShield2 = 137265;
}
struct EmoteIds
struct MiscConst
{
public const uint PhaseOdyn = 5107;
public const uint PhaseDanica = 5090;
public const uint QuestOdynAndTheValarjar = 39654;
public static Emote[] PayingRespectToOdynRandomEmotes = { Emote.OneshotPoint, Emote.OneshotTalk, Emote.OneshotNo };
}
[Script]
class npc_danica_the_reclaimer : ScriptedAI
{
ObjectGuid _summonerGuid;
Vector3[] DanicaPath01 =
{
new Vector3(1050.219f, 7232.470f, 100.5846f),
new Vector3(1046.207f, 7240.372f, 100.5846f),
new Vector3(1040.963f, 7245.498f, 100.6819f),
new Vector3(1034.726f, 7250.083f, 100.5846f),
new Vector3(1027.422f, 7257.835f, 100.5846f),
new Vector3(1027.542f, 7259.735f, 100.5846f)
new(1050.219f, 7232.470f, 100.5846f),
new(1046.207f, 7240.372f, 100.5846f),
new(1040.963f, 7245.498f, 100.6819f),
new(1034.726f, 7250.083f, 100.5846f),
new(1027.422f, 7257.835f, 100.5846f),
new(1027.542f, 7259.735f, 100.5846f)
};
Vector3[] DanicaPath02 =
{
new Vector3(1018.493f, 7247.438f, 100.5846f),
new Vector3(1013.535f, 7243.327f, 100.5846f),
new Vector3(1007.063f, 7235.723f, 100.5846f),
new Vector3(1003.337f, 7229.650f, 100.5846f),
new Vector3(995.4549f, 7227.286f, 100.5846f),
new Vector3(984.4410f, 7224.357f, 100.5846f)
new(1018.493f, 7247.438f, 100.5846f),
new(1013.535f, 7243.327f, 100.5846f),
new(1007.063f, 7235.723f, 100.5846f),
new(1003.337f, 7229.650f, 100.5846f),
new(995.4549f, 7227.286f, 100.5846f),
new(984.4410f, 7224.357f, 100.5846f)
};
Vector3[] DanicaPath03 =
{
new Vector3(962.5208f, 7223.089f, 100.5846f),
new Vector3(934.2795f, 7223.116f, 100.5846f),
new Vector3(911.8507f, 7223.776f, 100.5846f),
new Vector3(879.0139f, 7224.100f, 100.9079f),
new Vector3(851.691f, 7224.5490f, 109.5846f)
new(962.5208f, 7223.089f, 100.5846f),
new(934.2795f, 7223.116f, 100.5846f),
new(911.8507f, 7223.776f, 100.5846f),
new(879.0139f, 7224.100f, 100.9079f),
new(851.691f, 7224.5490f, 109.5846f)
};
ObjectGuid _summonerGuid;
public npc_danica_the_reclaimer(Creature creature) : base(creature) { }
// Should be the player
// Personal spawn ? Demon Creator is the player who accepts the quest, no phasing involved but the quest giver dissapears and gets replaced with a new one
// Personal spawn ? Demon Creator is the player who accepts the quest, no phaMath.Sing involved but the quest giver dissapears and gets replaced with a new one
public override void IsSummonedBy(WorldObject summoner)
{
if (!summoner.IsPlayer())
@@ -97,7 +92,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
me.RemoveNpcFlag(NPCFlags.Gossip);
_summonerGuid = summoner.GetGUID();
_scheduler.Schedule(TimeSpan.FromSeconds(2), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(2), _ =>
{
me.GetMotionMaster().MoveSmoothPath(0, DanicaPath01, DanicaPath01.Length, false, true);
Talk(1, summoner);
@@ -109,21 +104,21 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 0:
_scheduler.Schedule(TimeSpan.FromSeconds(10), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(10), _ =>
{
Player player = Global.ObjAccessor.FindConnectedPlayer(_summonerGuid);
Player player = ObjAccessor.FindConnectedPlayer(_summonerGuid);
me.GetMotionMaster().MoveSmoothPath(1, DanicaPath02, DanicaPath02.Length, false, true);
Talk(2, player);
});
break;
case 1:
_scheduler.Schedule(TimeSpan.FromSeconds(10), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(10), _ =>
{
Player player = Global.ObjAccessor.FindConnectedPlayer(_summonerGuid);
Player player = ObjAccessor.FindConnectedPlayer(_summonerGuid);
me.GetMotionMaster().MoveSmoothPath(2, DanicaPath03, DanicaPath03.Length, false, true);
Talk(3, player);
if (player)
if (player != null)
player.KilledMonsterCredit(CreatureIds.KillCreditFollowedDanica);
});
break;
@@ -154,12 +149,9 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
[Script]
class npc_feasting_valarjar : ScriptedAI
{
List<Emote> _randomEmotes = new();
List<Emote> _randomEmotes = new() { Emote.OneshotEatNoSheathe, Emote.OneshotLaughNoSheathe, Emote.OneshotRoar, Emote.OneshotLaugh, Emote.OneshotPoint, Emote.OneshotTalk, Emote.OneshotCheerNoSheathe };
public npc_feasting_valarjar(Creature creature) : base(creature)
{
_randomEmotes.AddRange(new[] { Emote.OneshotEatNoSheathe, Emote.OneshotLaughNoSheathe, Emote.OneshotRoar, Emote.OneshotLaugh, Emote.OneshotPoint, Emote.OneshotTalk, Emote.OneshotCheerNoSheathe });
}
public npc_feasting_valarjar(Creature creature) : base(creature) { }
public override void UpdateAI(uint diff)
{
@@ -168,25 +160,25 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
public override void Reset()
{
_scheduler.Schedule(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(30), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(30), task =>
{
Emote emoteID = _randomEmotes.SelectRandom();
if (emoteID == Emote.OneshotEatNoSheathe)
{
me.SetVirtualItem(0, RandomHelper.URand(0, 1) == 1 ? ItemIds.MonsterItemMuttonWithBite : ItemIds.MonsterItemTankardWooden);
_scheduler.Schedule(TimeSpan.FromSeconds(1), context =>
{
me.SetVirtualItem(0, 0);
if (RandomHelper.randChance(85))
DoCastSelf(SpellIds.EmoteBelch);
});
me.SetVirtualItem(0, RandomHelper.URand(0, 1) != 0 ? ItemIds.MonsterItemMuttonWithBite : ItemIds.MonsterItemTankardWooden);
_scheduler.Schedule(TimeSpan.FromSeconds(1), _ =>
{
me.SetVirtualItem(0, 0);
if (RandomHelper.randChance(85))
DoCastSelf(SpellIds.EmoteBelch);
});
}
me.HandleEmoteCommand(emoteID);
context.Repeat();
task.Repeat();
});
_scheduler.Schedule(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(20), context =>
_scheduler.Schedule(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(20), _ =>
{
float direction = me.GetOrientation() + MathF.PI;
me.GetMotionMaster().MovePoint(0, me.GetFirstCollisionPosition(5.0f, direction));
@@ -211,39 +203,39 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] IncommingValarjarAspirantPath01 =
{
new Vector3(876.7396f, 7220.805f, 98.91662f),
new Vector3(870.6129f, 7220.945f, 101.8951f),
new Vector3(865.0677f, 7220.975f, 103.7846f),
new Vector3(854.6389f, 7221.030f, 106.7846f),
new Vector3(851.1597f, 7220.292f, 106.7846f),
new Vector3(848.0573f, 7216.386f, 106.7846f),
new Vector3(844.7570f, 7210.920f, 106.7846f),
new Vector3(841.9844f, 7207.228f, 106.7846f),
new Vector3(839.2396f, 7203.619f, 107.5846f),
new Vector3(836.4844f, 7200.202f, 107.5846f),
new Vector3(834.2430f, 7196.000f, 107.5846f)
new (876.7396f, 7220.805f, 98.91662f),
new (870.6129f, 7220.945f, 101.8951f),
new (865.0677f, 7220.975f, 103.7846f),
new (854.6389f, 7221.030f, 106.7846f),
new (851.1597f, 7220.292f, 106.7846f),
new (848.0573f, 7216.386f, 106.7846f),
new (844.7570f, 7210.920f, 106.7846f),
new (841.9844f, 7207.228f, 106.7846f),
new (839.2396f, 7203.619f, 107.5846f),
new (836.4844f, 7200.202f, 107.5846f),
new (834.2430f, 7196.000f, 107.5846f)
};
Vector3[] IncommingValarjarAspirantPath02 =
{
new Vector3(828.5851f, 7204.096f, 106.7846f),
new Vector3(819.4636f, 7212.124f, 106.7846f),
new Vector3(814.2853f, 7215.074f, 106.7846f),
new Vector3(809.4948f, 7217.543f, 106.7846f),
new Vector3(806.0313f, 7219.614f, 106.7846f)
new (828.5851f, 7204.096f, 106.7846f),
new (819.4636f, 7212.124f, 106.7846f),
new (814.2853f, 7215.074f, 106.7846f),
new (809.4948f, 7217.543f, 106.7846f),
new (806.0313f, 7219.614f, 106.7846f)
};
Vector3[] IncommingValarjarAspirantPath03 =
{
new Vector3(824.1597f, 7221.822f, 106.7846f),
new Vector3(831.7500f, 7221.092f, 106.7846f),
new Vector3(842.4236f, 7222.208f, 106.7846f),
new Vector3(853.5781f, 7222.473f, 106.7846f),
new Vector3(863.9618f, 7223.012f, 103.7846f),
new Vector3(867.9358f, 7223.165f, 103.3735f),
new Vector3(880.6215f, 7222.569f, 97.78457f),
new Vector3(887.8438f, 7221.310f, 97.78457f),
new Vector3(903.7118f, 7215.743f, 97.78458f)
new (824.1597f, 7221.822f, 106.7846f),
new (831.7500f, 7221.092f, 106.7846f),
new (842.4236f, 7222.208f, 106.7846f),
new (853.5781f, 7222.473f, 106.7846f),
new (863.9618f, 7223.012f, 103.7846f),
new (867.9358f, 7223.165f, 103.3735f),
new (880.6215f, 7222.569f, 97.78457f),
new (887.8438f, 7221.310f, 97.78457f),
new (903.7118f, 7215.743f, 97.78458f)
};
public npc_incoming_valarjar_aspirant_1(Creature creature) : base(creature) { }
@@ -263,24 +255,15 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 0:
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(6), context =>
{
me.HandleEmoteCommand(EmoteIds.PayingRespectToOdynRandomEmotes.SelectRandom());
});
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(6), _ => me.HandleEmoteCommand(MiscConst.PayingRespectToOdynRandomEmotes.SelectRandom()));
_scheduler.Schedule(TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(15), context =>
{
me.GetMotionMaster().MoveSmoothPath(1, IncommingValarjarAspirantPath02, IncommingValarjarAspirantPath02.Length, true);
});
_scheduler.Schedule(TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(15), _ => me.GetMotionMaster().MoveSmoothPath(1, IncommingValarjarAspirantPath02, IncommingValarjarAspirantPath02.Length, true));
break;
case 1:
_scheduler.Schedule(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3), task =>
{
me.PlayOneShotAnimKitId(1431);
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, IncommingValarjarAspirantPath03, IncommingValarjarAspirantPath03.Length);
});
task.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10), _ => me.GetMotionMaster().MoveSmoothPath(2, IncommingValarjarAspirantPath03, IncommingValarjarAspirantPath03.Length));
});
break;
case 2:
@@ -297,42 +280,42 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] IncommingValarjarAspirantPath01 =
{
new Vector3(890.5521f, 7235.710f, 97.78457f),
new Vector3(883.8073f, 7233.402f, 97.78457f),
new Vector3(872.1979f, 7234.018f, 101.2886f),
new Vector3(863.5941f, 7234.594f, 103.7846f),
new Vector3(855.2899f, 7235.626f, 106.7593f),
new Vector3(849.8177f, 7236.571f, 106.7846f),
new Vector3(845.7830f, 7241.082f, 106.7846f),
new Vector3(841.8489f, 7246.654f, 106.7846f),
new Vector3(839.7205f, 7250.986f, 106.7846f),
new Vector3(840.8889f, 7254.773f, 107.5846f),
new Vector3(841.9254f, 7259.517f, 107.5846f),
new Vector3(840.6077f, 7266.662f, 107.5846f)
new (890.5521f, 7235.710f, 97.78457f),
new (883.8073f, 7233.402f, 97.78457f),
new (872.1979f, 7234.018f, 101.2886f),
new (863.5941f, 7234.594f, 103.7846f),
new (855.2899f, 7235.626f, 106.7593f),
new (849.8177f, 7236.571f, 106.7846f),
new (845.7830f, 7241.082f, 106.7846f),
new (841.8489f, 7246.654f, 106.7846f),
new (839.7205f, 7250.986f, 106.7846f),
new (840.8889f, 7254.773f, 107.5846f),
new (841.9254f, 7259.517f, 107.5846f),
new (840.6077f, 7266.662f, 107.5846f)
};
Vector3[] IncommingValarjarAspirantPath02 =
{
new Vector3(838.1493f, 7260.027f, 107.5846f),
new Vector3(832.2691f, 7253.756f, 106.7846f),
new Vector3(823.1996f, 7246.677f, 106.7846f),
new Vector3(821.2500f, 7244.573f, 106.7846f),
new Vector3(815.8906f, 7241.437f, 106.7846f),
new Vector3(809.8281f, 7239.580f, 106.7846f)
new (838.1493f, 7260.027f, 107.5846f),
new (832.2691f, 7253.756f, 106.7846f),
new (823.1996f, 7246.677f, 106.7846f),
new (821.2500f, 7244.573f, 106.7846f),
new (815.8906f, 7241.437f, 106.7846f),
new (809.8281f, 7239.580f, 106.7846f)
};
Vector3[] IncommingValarjarAspirantPath03 =
{
new Vector3(827.4757f, 7236.593f, 106.7846f),
new Vector3(837.1840f, 7236.047f, 106.7846f),
new Vector3(847.1684f, 7235.377f, 106.7846f),
new Vector3(854.7185f, 7235.294f, 106.7846f),
new Vector3(862.3524f, 7234.287f, 104.4290f),
new Vector3(882.3489f, 7233.743f, 97.78457f),
new Vector3(894.3768f, 7233.098f, 97.78457f),
new Vector3(906.0660f, 7232.520f, 97.78458f),
new Vector3(915.0070f, 7233.368f, 97.78458f),
new Vector3(924.6910f, 7233.694f, 97.78458f)
new (827.4757f, 7236.593f, 106.7846f),
new (837.1840f, 7236.047f, 106.7846f),
new (847.1684f, 7235.377f, 106.7846f),
new (854.7185f, 7235.294f, 106.7846f),
new (862.3524f, 7234.287f, 104.4290f),
new (882.3489f, 7233.743f, 97.78457f),
new (894.3768f, 7233.098f, 97.78457f),
new (906.0660f, 7232.520f, 97.78458f),
new (915.0070f, 7233.368f, 97.78458f),
new (924.6910f, 7233.694f, 97.78458f)
};
public npc_incoming_valarjar_aspirant_2(Creature creature) : base(creature) { }
@@ -352,24 +335,14 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 0:
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(6), context =>
{
me.HandleEmoteCommand(EmoteIds.PayingRespectToOdynRandomEmotes.SelectRandom());
});
_scheduler.Schedule(TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(15), context =>
{
me.GetMotionMaster().MoveSmoothPath(1, IncommingValarjarAspirantPath02, IncommingValarjarAspirantPath02.Length, true);
});
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(6), context => me.HandleEmoteCommand(MiscConst.PayingRespectToOdynRandomEmotes.SelectRandom()));
_scheduler.Schedule(TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(15), context => me.GetMotionMaster().MoveSmoothPath(1, IncommingValarjarAspirantPath02, IncommingValarjarAspirantPath02.Length, true));
break;
case 1:
_scheduler.Schedule(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3), task =>
{
me.PlayOneShotAnimKitId(1431);
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, IncommingValarjarAspirantPath03, IncommingValarjarAspirantPath03.Length);
});
task.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10), _ => me.GetMotionMaster().MoveSmoothPath(2, IncommingValarjarAspirantPath03, IncommingValarjarAspirantPath03.Length));
});
break;
case 2:
@@ -386,38 +359,38 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] PathLeavingValarjar01 =
{
new Vector3(802.5903f, 7304.605f, 106.7846f),
new Vector3(809.3333f, 7296.529f, 106.7846f),
new Vector3(811.8004f, 7293.676f, 106.7846f),
new Vector3(817.4219f, 7287.498f, 106.7846f),
new Vector3(821.0313f, 7283.637f, 106.7846f),
new Vector3(822.1111f, 7275.672f, 106.7846f),
new Vector3(826.4662f, 7270.601f, 107.5846f),
new Vector3(830.8212f, 7268.729f, 107.5846f)
new (802.5903f, 7304.605f, 106.7846f),
new (809.3333f, 7296.529f, 106.7846f),
new (811.8004f, 7293.676f, 106.7846f),
new (817.4219f, 7287.498f, 106.7846f),
new (821.0313f, 7283.637f, 106.7846f),
new (822.1111f, 7275.672f, 106.7846f),
new (826.4662f, 7270.601f, 107.5846f),
new (830.8212f, 7268.729f, 107.5846f)
};
Vector3[] PathLeavingValarjar02 =
{
new Vector3(824.9757f, 7261.047f, 107.5846f),
new Vector3(822.0989f, 7256.705f, 106.7846f),
new Vector3(819.0261f, 7253.674f, 106.7846f),
new Vector3(813.1910f, 7249.034f, 106.7846f),
new Vector3(809.1493f, 7245.616f, 106.7846f),
new Vector3(806.3559f, 7243.057f, 106.7846f)
new (824.9757f, 7261.047f, 107.5846f),
new (822.0989f, 7256.705f, 106.7846f),
new (819.0261f, 7253.674f, 106.7846f),
new (813.1910f, 7249.034f, 106.7846f),
new (809.1493f, 7245.616f, 106.7846f),
new (806.3559f, 7243.057f, 106.7846f)
};
Vector3[] PathLeavingValarjar03 =
{
new Vector3(825.3177f, 7244.253f, 106.7846f),
new Vector3(837.5816f, 7243.241f, 106.7846f),
new Vector3(845.0243f, 7240.063f, 106.7846f),
new Vector3(853.7274f, 7238.423f, 106.7953f),
new Vector3(862.9948f, 7238.000f, 103.9737f),
new Vector3(872.7899f, 7236.939f, 100.8285f),
new Vector3(882.8333f, 7235.922f, 97.78457f),
new Vector3(897.2813f, 7235.469f, 97.78457f),
new Vector3(908.8090f, 7234.836f, 97.78458f),
new Vector3(919.8750f, 7238.241f, 97.78458f)
new (825.3177f, 7244.253f, 106.7846f),
new (837.5816f, 7243.241f, 106.7846f),
new (845.0243f, 7240.063f, 106.7846f),
new (853.7274f, 7238.423f, 106.7953f),
new (862.9948f, 7238.000f, 103.9737f),
new (872.7899f, 7236.939f, 100.8285f),
new (882.8333f, 7235.922f, 97.78457f),
new (897.2813f, 7235.469f, 97.78457f),
new (908.8090f, 7234.836f, 97.78458f),
new (919.8750f, 7238.241f, 97.78458f)
};
public npc_leaving_valarjar_1(Creature creature) : base(creature) { }
@@ -437,24 +410,14 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 0:
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(6), context =>
{
me.HandleEmoteCommand(EmoteIds.PayingRespectToOdynRandomEmotes.SelectRandom());
});
_scheduler.Schedule(TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(15), context =>
{
me.GetMotionMaster().MoveSmoothPath(1, PathLeavingValarjar02, PathLeavingValarjar02.Length, true);
});
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(6), _ => me.HandleEmoteCommand(MiscConst.PayingRespectToOdynRandomEmotes.SelectRandom()));
_scheduler.Schedule(TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(15), _ => me.GetMotionMaster().MoveSmoothPath(1, PathLeavingValarjar02, PathLeavingValarjar02.Length, true));
break;
case 1:
_scheduler.Schedule(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3), task =>
{
me.PlayOneShotAnimKitId(1431);
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, PathLeavingValarjar03, PathLeavingValarjar03.Length);
});
task.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10), _ => me.GetMotionMaster().MoveSmoothPath(2, PathLeavingValarjar03, PathLeavingValarjar03.Length));
});
break;
case 2:
@@ -471,34 +434,34 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] PathLeavingValarjar01 =
{
new Vector3(787.2361f, 7155.902f, 107.5846f),
new Vector3(792.4844f, 7154.038f, 106.7846f),
new Vector3(798.7830f, 7154.968f, 106.7846f),
new Vector3(807.8160f, 7162.251f, 106.7846f),
new Vector3(813.2882f, 7167.856f, 106.7846f),
new Vector3(816.4913f, 7170.818f, 106.7846f),
new Vector3(819.8299f, 7166.373f, 107.6281f)
new (787.2361f, 7155.902f, 107.5846f),
new (792.4844f, 7154.038f, 106.7846f),
new (798.7830f, 7154.968f, 106.7846f),
new (807.8160f, 7162.251f, 106.7846f),
new (813.2882f, 7167.856f, 106.7846f),
new (816.4913f, 7170.818f, 106.7846f),
new (819.8299f, 7166.373f, 107.6281f)
};
Vector3[] PathLeavingValarjar02 =
{
new Vector3(818.2708f, 7175.469f, 106.7846f),
new Vector3(819.5643f, 7185.691f, 106.7846f),
new Vector3(818.4184f, 7193.082f, 106.7846f),
new Vector3(818.8750f, 7199.256f, 106.7846f),
new Vector3(815.2361f, 7203.648f, 106.7846f),
new Vector3(809.6198f, 7208.319f, 106.7846f),
new Vector3(804.2743f, 7215.379f, 106.7846f)
new (818.2708f, 7175.469f, 106.7846f),
new (819.5643f, 7185.691f, 106.7846f),
new (818.4184f, 7193.082f, 106.7846f),
new (818.8750f, 7199.256f, 106.7846f),
new (815.2361f, 7203.648f, 106.7846f),
new (809.6198f, 7208.319f, 106.7846f),
new (804.2743f, 7215.379f, 106.7846f)
};
Vector3[] PathLeavingValarjar03 =
{
new Vector3(810.8403f, 7231.531f, 106.7846f),
new Vector3(807.5087f, 7248.719f, 106.7846f),
new Vector3(801.2587f, 7254.592f, 106.7846f),
new Vector3(794.6649f, 7265.814f, 107.5846f),
new Vector3(792.0191f, 7274.151f, 107.5846f),
new Vector3(790.1823f, 7282.182f, 107.5846f)
new (810.8403f, 7231.531f, 106.7846f),
new (807.5087f, 7248.719f, 106.7846f),
new (801.2587f, 7254.592f, 106.7846f),
new (794.6649f, 7265.814f, 107.5846f),
new (792.0191f, 7274.151f, 107.5846f),
new (790.1823f, 7282.182f, 107.5846f)
};
public npc_leaving_valarjar_2(Creature creature) : base(creature) { }
@@ -518,24 +481,14 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 0:
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(6), context =>
{
me.HandleEmoteCommand(EmoteIds.PayingRespectToOdynRandomEmotes.SelectRandom());
});
_scheduler.Schedule(TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(15), context =>
{
me.GetMotionMaster().MoveSmoothPath(1, PathLeavingValarjar02, PathLeavingValarjar02.Length, true);
});
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(6), _ => me.HandleEmoteCommand(MiscConst.PayingRespectToOdynRandomEmotes.SelectRandom()));
_scheduler.Schedule(TimeSpan.FromSeconds(7), TimeSpan.FromSeconds(15), _ => me.GetMotionMaster().MoveSmoothPath(1, PathLeavingValarjar02, PathLeavingValarjar02.Length, true));
break;
case 1:
_scheduler.Schedule(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3), task =>
{
me.PlayOneShotAnimKitId(1431);
_scheduler.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, PathLeavingValarjar03, PathLeavingValarjar03.Length);
});
task.Schedule(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(10), _ => me.GetMotionMaster().MoveSmoothPath(2, PathLeavingValarjar03, PathLeavingValarjar03.Length));
});
break;
case 2:
@@ -557,9 +510,9 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
public override void MoveInLineOfSight(Unit who)
{
Player player = who.ToPlayer();
if (player)
if (player != null)
{
if (player.GetQuestStatus(QuestIds.OdynAndTheValarjar) == QuestStatus.Incomplete)
if (player.GetQuestStatus(MiscConst.QuestOdynAndTheValarjar) == QuestStatus.Incomplete)
{
if (player.IsInDist(me, 60.0f))
{
@@ -591,7 +544,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
context.Repeat();
});
_scheduler.Schedule(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(20), context =>
_scheduler.Schedule(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(20), _ =>
{
float direction = me.GetOrientation() + MathF.PI;
me.GetMotionMaster().MovePoint(0, me.GetFirstCollisionPosition(5.0f, direction));
@@ -616,28 +569,23 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
[Script]
class npc_valkyr_of_odyn_1 : ScriptedAI
{
public npc_valkyr_of_odyn_1(Creature creature) : base(creature) { }
Vector3[] Path =
{
new Vector3(996.5347f, 7321.393f, 124.0931f),
new Vector3(1009.880f, 7311.655f, 118.0898f),
new Vector3(1024.688f, 7293.689f, 120.4009f),
new Vector3(1038.288f, 7266.321f, 122.2708f),
new Vector3(1049.439f, 7235.418f, 120.1065f),
new Vector3(1067.825f, 7229.589f, 114.6320f),
new Vector3(1082.800f, 7223.660f, 98.63562f)
new (996.5347f, 7321.393f, 124.0931f),
new (1009.880f, 7311.655f, 118.0898f),
new (1024.688f, 7293.689f, 120.4009f),
new (1038.288f, 7266.321f, 122.2708f),
new (1049.439f, 7235.418f, 120.1065f),
new (1067.825f, 7229.589f, 114.6320f),
new (1082.800f, 7223.660f, 98.63562f)
};
public npc_valkyr_of_odyn_1(Creature creature) : base(creature) { }
public override void Reset()
{
if (me.GetPositionZ() >= 100.0f)
{
_scheduler.Schedule(TimeSpan.FromSeconds(3), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true);
});
}
_scheduler.Schedule(TimeSpan.FromSeconds(3), _ => me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true));
else
me.GetMotionMaster().MoveSmoothPath(1, Path, Path.Length, false, true);
}
@@ -652,7 +600,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 2:
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), context =>
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), _ =>
{
/*
* (MovementMonsterSpline) (MovementSpline) MoveTime: 3111
@@ -680,24 +628,24 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] Path =
{
new Vector3(1113.635f, 7214.023f, 7.808200f),
new Vector3(1110.443f, 7213.999f, 17.28479f),
new Vector3(1108.583f, 7213.984f, 22.80371f),
new Vector3(1103.488f, 7221.702f, 70.68047f),
new Vector3(1101.911f, 7222.535f, 82.51234f),
new Vector3(1098.861f, 7222.271f, 90.03111f),
new Vector3(1095.129f, 7223.033f, 94.15130f),
new Vector3(1089.240f, 7223.335f, 97.94925f),
new Vector3(1077.932f, 7222.822f, 110.2143f),
new Vector3(1068.802f, 7223.216f, 110.2143f),
new Vector3(1045.356f, 7224.674f, 114.5371f),
new Vector3(1023.946f, 7224.304f, 120.0150f),
new Vector3(1002.535f, 7224.943f, 121.1011f),
new Vector3(911.7552f, 7227.165f, 121.7384f),
new Vector3(879.1285f, 7227.272f, 121.7384f),
new Vector3(830.8785f, 7233.613f, 121.7384f),
new Vector3(809.5052f, 7267.270f, 121.7384f),
new Vector3(795.2899f, 7311.849f, 121.7384f)
new (1113.635f, 7214.023f, 7.808200f),
new (1110.443f, 7213.999f, 17.28479f),
new (1108.583f, 7213.984f, 22.80371f),
new (1103.488f, 7221.702f, 70.68047f),
new (1101.911f, 7222.535f, 82.51234f),
new (1098.861f, 7222.271f, 90.03111f),
new (1095.129f, 7223.033f, 94.15130f),
new (1089.240f, 7223.335f, 97.94925f),
new (1077.932f, 7222.822f, 110.2143f),
new (1068.802f, 7223.216f, 110.2143f),
new (1045.356f, 7224.674f, 114.5371f),
new (1023.946f, 7224.304f, 120.0150f),
new (1002.535f, 7224.943f, 121.1011f),
new (911.7552f, 7227.165f, 121.7384f),
new (879.1285f, 7227.272f, 121.7384f),
new (830.8785f, 7233.613f, 121.7384f),
new (809.5052f, 7267.270f, 121.7384f),
new (795.2899f, 7311.849f, 121.7384f)
};
public npc_valkyr_of_odyn_2(Creature creature) : base(creature) { }
@@ -705,12 +653,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
public override void Reset()
{
if (me.GetPositionZ() >= 100.0f)
{
_scheduler.Schedule(TimeSpan.FromSeconds(3), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true);
});
}
_scheduler.Schedule(TimeSpan.FromSeconds(3), _ => me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true));
else
me.GetMotionMaster().MoveSmoothPath(1, Path, Path.Length, false, true);
}
@@ -725,7 +668,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 2:
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), context =>
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), _ =>
{
/*
* (MovementMonsterSpline) (MovementSpline) MoveTime: 3111
@@ -753,20 +696,20 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] Path =
{
new Vector3(1133.929f, 7223.167f, 38.90330f),
new Vector3(1124.510f, 7222.310f, 42.15336f),
new Vector3(1119.903f, 7221.891f, 43.74335f),
new Vector3(1103.934f, 7227.212f, 69.99904f),
new Vector3(1097.554f, 7226.132f, 89.09371f),
new Vector3(1092.602f, 7224.059f, 101.1545f),
new Vector3(1078.701f, 7228.348f, 109.5599f),
new Vector3(1068.967f, 7232.247f, 116.7876f),
new Vector3(1053.540f, 7229.623f, 117.8927f),
new Vector3(1044.104f, 7242.757f, 118.7891f),
new Vector3(1031.111f, 7256.717f, 118.7891f),
new Vector3(1029.684f, 7288.019f, 126.3048f),
new Vector3(1029.889f, 7325.333f, 126.3061f),
new Vector3(1039.043f, 7365.176f, 133.2310f)
new (1133.929f, 7223.167f, 38.90330f),
new (1124.510f, 7222.310f, 42.15336f),
new (1119.903f, 7221.891f, 43.74335f),
new (1103.934f, 7227.212f, 69.99904f),
new (1097.554f, 7226.132f, 89.09371f),
new (1092.602f, 7224.059f, 101.1545f),
new (1078.701f, 7228.348f, 109.5599f),
new (1068.967f, 7232.247f, 116.7876f),
new (1053.540f, 7229.623f, 117.8927f),
new (1044.104f, 7242.757f, 118.7891f),
new (1031.111f, 7256.717f, 118.7891f),
new (1029.684f, 7288.019f, 126.3048f),
new (1029.889f, 7325.333f, 126.3061f),
new (1039.043f, 7365.176f, 133.2310f)
};
public npc_valkyr_of_odyn_3(Creature creature) : base(creature) { }
@@ -774,12 +717,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
public override void Reset()
{
if (me.GetPositionZ() >= 100.0f)
{
_scheduler.Schedule(TimeSpan.FromSeconds(3), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true);
});
}
_scheduler.Schedule(TimeSpan.FromSeconds(3), _ => me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true));
else
me.GetMotionMaster().MoveSmoothPath(1, Path, Path.Length, false, true);
}
@@ -794,7 +732,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 2:
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), context =>
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), _ =>
{
/*
* (MovementMonsterSpline) (MovementSpline) MoveTime: 3111
@@ -822,26 +760,21 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] Path =
{
new Vector3(914.8663f, 7204.922f, 128.1687f),
new Vector3(945.4445f, 7216.170f, 128.1687f),
new Vector3(987.2483f, 7220.554f, 125.4318f),
new Vector3(1015.882f, 7222.849f, 126.0546f),
new Vector3(1053.023f, 7224.076f, 119.6729f),
new Vector3(1071.891f, 7222.934f, 108.9545f),
new Vector3(1081.530f, 7224.331f, 98.63076f)
new (914.8663f, 7204.922f, 128.1687f),
new (945.4445f, 7216.170f, 128.1687f),
new (987.2483f, 7220.554f, 125.4318f),
new (1015.882f, 7222.849f, 126.0546f),
new (1053.023f, 7224.076f, 119.6729f),
new (1071.891f, 7222.934f, 108.9545f),
new (1081.530f, 7224.331f, 98.63076f)
};
public npc_valkyr_of_odyn_4(Creature creature) : base(creature) { }
public override void Reset()
{
if (me.GetPositionZ() >= 100.0f)
{
_scheduler.Schedule(TimeSpan.FromSeconds(3), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true);
});
}
_scheduler.Schedule(TimeSpan.FromSeconds(3), _ => me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true));
else
me.GetMotionMaster().MoveSmoothPath(1, Path, Path.Length, false, true);
}
@@ -856,7 +789,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 2:
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), context =>
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), _ =>
{
/*
* (MovementMonsterSpline) (MovementSpline) MoveTime: 3111
@@ -884,31 +817,26 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] Path =
{
new Vector3(1038.141f, 7134.033f, 105.8965f),
new Vector3(1033.373f, 7134.492f, 105.8965f),
new Vector3(1027.882f, 7136.373f, 105.8965f),
new Vector3(1026.943f, 7144.288f, 105.8965f),
new Vector3(1027.608f, 7167.030f, 108.4167f),
new Vector3(1027.767f, 7180.922f, 108.4167f),
new Vector3(1028.484f, 7197.977f, 108.4167f),
new Vector3(1034.113f, 7207.747f, 108.4167f),
new Vector3(1041.977f, 7216.452f, 108.4167f),
new Vector3(1054.269f, 7223.207f, 108.4167f),
new Vector3(1075.891f, 7224.811f, 101.7954f),
new Vector3(1082.438f, 7224.540f, 99.12900f)
new (1038.141f, 7134.033f, 105.8965f),
new (1033.373f, 7134.492f, 105.8965f),
new (1027.882f, 7136.373f, 105.8965f),
new (1026.943f, 7144.288f, 105.8965f),
new (1027.608f, 7167.030f, 108.4167f),
new (1027.767f, 7180.922f, 108.4167f),
new (1028.484f, 7197.977f, 108.4167f),
new (1034.113f, 7207.747f, 108.4167f),
new (1041.977f, 7216.452f, 108.4167f),
new (1054.269f, 7223.207f, 108.4167f),
new (1075.891f, 7224.811f, 101.7954f),
new (1082.438f, 7224.540f, 99.12900f)
};
public npc_valkyr_of_odyn_5(Creature creature) : base(creature) { }
public override void Reset()
{
if (me.GetPositionZ() >= 100.0f)
{
_scheduler.Schedule(TimeSpan.FromSeconds(3), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true);
});
}
_scheduler.Schedule(TimeSpan.FromSeconds(3), _ => me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true));
else
me.GetMotionMaster().MoveSmoothPath(1, Path, Path.Length, false, true);
}
@@ -923,7 +851,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 2:
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), context =>
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), _ =>
{
/*
* (MovementMonsterSpline) (MovementSpline) MoveTime: 3111
@@ -951,36 +879,31 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] Path =
{
new Vector3(1112.011f, 7233.799f, 45.87240f),
new Vector3(1107.887f, 7234.073f, 54.97818f),
new Vector3(1106.264f, 7234.181f, 58.56218f),
new Vector3(1099.969f, 7236.397f, 75.87664f),
new Vector3(1096.552f, 7233.196f, 85.53920f),
new Vector3(1095.531f, 7229.387f, 89.86687f),
new Vector3(1092.981f, 7225.366f, 97.69602f),
new Vector3(1082.800f, 7221.249f, 109.4660f),
new Vector3(1070.983f, 7218.749f, 112.6827f),
new Vector3(1057.455f, 7216.709f, 112.6827f),
new Vector3(1051.859f, 7210.338f, 112.6827f),
new Vector3(1042.427f, 7200.762f, 112.6827f),
new Vector3(1032.616f, 7183.982f, 112.6827f),
new Vector3(1027.792f, 7157.764f, 112.6827f),
new Vector3(1026.870f, 7126.981f, 112.6827f),
new Vector3(1053.083f, 7102.808f, 125.9283f),
new Vector3(1055.122f, 7059.807f, 130.4395f)
new (1112.011f, 7233.799f, 45.87240f),
new (1107.887f, 7234.073f, 54.97818f),
new (1106.264f, 7234.181f, 58.56218f),
new (1099.969f, 7236.397f, 75.87664f),
new (1096.552f, 7233.196f, 85.53920f),
new (1095.531f, 7229.387f, 89.86687f),
new (1092.981f, 7225.366f, 97.69602f),
new (1082.800f, 7221.249f, 109.4660f),
new (1070.983f, 7218.749f, 112.6827f),
new (1057.455f, 7216.709f, 112.6827f),
new (1051.859f, 7210.338f, 112.6827f),
new (1042.427f, 7200.762f, 112.6827f),
new (1032.616f, 7183.982f, 112.6827f),
new (1027.792f, 7157.764f, 112.6827f),
new (1026.870f, 7126.981f, 112.6827f),
new (1053.083f, 7102.808f, 125.9283f),
new (1055.122f, 7059.807f, 130.4395f)
};
public npc_valkyr_of_odyn_6(Creature creature) : base(creature) { }
public override void Reset()
{
if (me.GetPositionZ() >= 100.0f)
{
_scheduler.Schedule(TimeSpan.FromSeconds(3), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true);
});
}
_scheduler.Schedule(TimeSpan.FromSeconds(3), _ => me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true));
else
me.GetMotionMaster().MoveSmoothPath(1, Path, Path.Length, false, true);
}
@@ -995,7 +918,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
switch (id)
{
case 2:
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), context =>
_scheduler.Schedule(TimeSpan.FromMilliseconds(250), _ =>
{
/*
* (MovementMonsterSpline) (MovementSpline) MoveTime: 3111
@@ -1023,16 +946,16 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
{
Vector3[] Path =
{
new Vector3(1064.076f, 7305.979f, 117.5428f),
new Vector3(1058.290f, 7305.543f, 117.5428f),
new Vector3(1046.578f, 7305.583f, 117.5428f),
new Vector3(1034.373f, 7295.979f, 117.5428f),
new Vector3(1026.639f, 7275.582f, 114.1900f),
new Vector3(1030.729f, 7251.381f, 114.1900f),
new Vector3(1040.950f, 7237.213f, 114.1900f),
new Vector3(1057.274f, 7229.228f, 114.1900f),
new Vector3(1070.297f, 7226.421f, 111.7502f),
new Vector3(1082.146f, 7225.846f, 101.0798f)
new (1064.076f, 7305.979f, 117.5428f),
new (1058.290f, 7305.543f, 117.5428f),
new (1046.578f, 7305.583f, 117.5428f),
new (1034.373f, 7295.979f, 117.5428f),
new (1026.639f, 7275.582f, 114.1900f),
new (1030.729f, 7251.381f, 114.1900f),
new (1040.950f, 7237.213f, 114.1900f),
new (1057.274f, 7229.228f, 114.1900f),
new (1070.297f, 7226.421f, 111.7502f),
new (1082.146f, 7225.846f, 101.0798f)
};
public npc_valkyr_of_odyn_7(Creature creature) : base(creature) { }
@@ -1040,12 +963,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
public override void Reset()
{
if (me.GetPositionZ() >= 100.0f)
{
_scheduler.Schedule(TimeSpan.FromSeconds(3), context =>
{
me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true);
});
}
_scheduler.Schedule(TimeSpan.FromSeconds(3), _ => me.GetMotionMaster().MoveSmoothPath(2, Path, Path.Length, false, true));
else
me.GetMotionMaster().MoveSmoothPath(1, Path, Path.Length, false, true);
}
@@ -1086,7 +1004,7 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
[Script]
class npc_weapon_inspector_valarjar : ScriptedAI
{
Tuple<uint, uint>[] _randomWeapons = { Tuple.Create(ItemIds.Hov2HAxe, 0u), Tuple.Create(ItemIds.Hov1HSword, ItemIds.HovShield2) };
(uint, uint)[] _randomWeapons = { (ItemIds.Hov2HAxe, 0u), (ItemIds.Hov1HSword, ItemIds.HovShield2) };
public npc_weapon_inspector_valarjar(Creature creature) : base(creature) { }
@@ -1100,18 +1018,15 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
_scheduler.Schedule(TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(20), context =>
{
me.SetAIAnimKitId(0);
Tuple<uint, uint> weapons = _randomWeapons.SelectRandom();
me.SetVirtualItem(0, weapons.Item1);
me.SetVirtualItem(1, weapons.Item2);
var (itemId1, itemId2) = _randomWeapons.SelectRandom();
me.SetVirtualItem(0, itemId1);
me.SetVirtualItem(1, itemId2);
context.Schedule(TimeSpan.FromSeconds(8), TimeSpan.FromSeconds(10), context =>
_scheduler.Schedule(TimeSpan.FromSeconds(8), TimeSpan.FromSeconds(10), context =>
{
me.SetVirtualItem(0, 0);
me.SetVirtualItem(1, 0);
context.Schedule(TimeSpan.FromSeconds(10), context =>
{
me.SetAIAnimKitId(1583);
});
context.Schedule(TimeSpan.FromSeconds(10), _ => me.SetAIAnimKitId(1583));
});
context.Repeat(TimeSpan.FromSeconds(30));
@@ -1126,8 +1041,8 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
public override void OnSceneStart(Player player, uint sceneInstanceID, SceneTemplate sceneTemplate)
{
PhasingHandler.RemovePhase(player, PhaseIds.Danica, false);
PhasingHandler.RemovePhase(player, PhaseIds.Odyn, true);
PhasingHandler.RemovePhase(player, MiscConst.PhaseDanica, false);
PhasingHandler.RemovePhase(player, MiscConst.PhaseOdyn, true);
player.SetControlled(true, UnitState.Root);
}
@@ -1145,10 +1060,9 @@ namespace Scripts.BrokenIsles.ZoneOrderhallWarrior
void Finish(Player player)
{
PhasingHandler.AddPhase(player, PhaseIds.Odyn, true);
PhasingHandler.AddPhase(player, MiscConst.PhaseOdyn, true);
player.SetControlled(false, UnitState.Root);
player.CastSpell(player, SpellIds.CancelCompleteSceneWarriorOrderFormation);
}
}
}