punish v6.8.18.0
This commit is contained in:
commit
060278c1b7
317 changed files with 554155 additions and 0 deletions
|
@ -0,0 +1,86 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller.Steps.Common;
|
||||
using Questionable.Data;
|
||||
using Questionable.Model;
|
||||
using Questionable.Model.Common;
|
||||
using Questionable.Model.Questing;
|
||||
|
||||
namespace Questionable.Controller.Steps.Movement;
|
||||
|
||||
internal static class MoveTo
|
||||
{
|
||||
internal sealed class Factory(IClientState clientState, AetheryteData aetheryteData, TerritoryData territoryData, ILogger<Factory> logger) : ITaskFactory
|
||||
{
|
||||
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
|
||||
{
|
||||
if (step.Position.HasValue)
|
||||
{
|
||||
return CreateMoveTasks(step, step.Position.Value);
|
||||
}
|
||||
if (step != null && step.DataId.HasValue && step.StopDistance.HasValue)
|
||||
{
|
||||
return new global::_003C_003Ez__ReadOnlySingleElementList<ITask>(new WaitForNearDataId(step.DataId.Value, step.StopDistance.Value));
|
||||
}
|
||||
EAetheryteLocation valueOrDefault = default(EAetheryteLocation);
|
||||
bool flag;
|
||||
if (step != null)
|
||||
{
|
||||
EInteractionType interactionType = step.InteractionType;
|
||||
if ((uint)(interactionType - 4) <= 1u)
|
||||
{
|
||||
EAetheryteLocation? aetheryte = step.Aetheryte;
|
||||
if (aetheryte.HasValue)
|
||||
{
|
||||
valueOrDefault = aetheryte.GetValueOrDefault();
|
||||
flag = true;
|
||||
goto IL_00a3;
|
||||
}
|
||||
}
|
||||
}
|
||||
flag = false;
|
||||
goto IL_00a3;
|
||||
IL_00a3:
|
||||
if (flag)
|
||||
{
|
||||
return CreateMoveTasks(step, aetheryteData.Locations[valueOrDefault]);
|
||||
}
|
||||
if (step != null && step.InteractionType == EInteractionType.AttuneAethernetShard)
|
||||
{
|
||||
EAetheryteLocation? aetheryte = step.AethernetShard;
|
||||
if (aetheryte.HasValue)
|
||||
{
|
||||
EAetheryteLocation valueOrDefault2 = aetheryte.GetValueOrDefault();
|
||||
return CreateMoveTasks(step, aetheryteData.Locations[valueOrDefault2]);
|
||||
}
|
||||
}
|
||||
return Array.Empty<ITask>();
|
||||
}
|
||||
|
||||
private IEnumerable<ITask> CreateMoveTasks(QuestStep step, Vector3 destination)
|
||||
{
|
||||
if (step.InteractionType == EInteractionType.Jump && step.JumpDestination != null && (clientState.LocalPlayer.Position - step.JumpDestination.Position).Length() <= (step.JumpDestination.StopDistance ?? 1f))
|
||||
{
|
||||
logger.LogInformation("We're at the jump destination, skipping movement");
|
||||
yield break;
|
||||
}
|
||||
yield return new WaitCondition.Task(() => clientState.TerritoryType == step.TerritoryId, "Wait(territory: " + territoryData.GetNameAndId(step.TerritoryId) + ")");
|
||||
if (!step.DisableNavmesh)
|
||||
{
|
||||
yield return new WaitNavmesh.Task();
|
||||
}
|
||||
yield return new MoveTask(step, destination);
|
||||
if (step != null)
|
||||
{
|
||||
bool? fly = step.Fly;
|
||||
if (fly.HasValue && fly == true && (step.Land ?? false))
|
||||
{
|
||||
yield return new LandTask();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue