Add new skip conditions for NIN quests
This commit is contained in:
parent
15999c8c79
commit
3dd5c07a1a
@ -286,7 +286,9 @@
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"WakingSandsMainArea",
|
||||
"RisingStonesSolar"
|
||||
"RisingStonesSolar",
|
||||
"RoguesGuild",
|
||||
"DockStorehouse"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -9,5 +9,7 @@ public sealed class SkipConditionConverter() : EnumConverter<EExtraSkipCondition
|
||||
{
|
||||
{ EExtraSkipCondition.WakingSandsMainArea, "WakingSandsMainArea" },
|
||||
{ EExtraSkipCondition.RisingStonesSolar, "RisingStonesSolar"},
|
||||
{ EExtraSkipCondition.RoguesGuild, "RoguesGuild"},
|
||||
{ EExtraSkipCondition.DockStorehouse, "DockStorehouse"},
|
||||
};
|
||||
}
|
||||
|
@ -8,6 +8,15 @@ public enum EExtraSkipCondition
|
||||
{
|
||||
None,
|
||||
WakingSandsMainArea,
|
||||
|
||||
RisingStonesSolar,
|
||||
|
||||
/// <summary>
|
||||
/// Location for ROG quests in Limsa Lominsa; located far underneath the actual lower decks.
|
||||
/// </summary>
|
||||
RoguesGuild,
|
||||
|
||||
/// <summary>
|
||||
/// Location for NIN quests in Eastern La Noscea; located far underneath the actual zone.
|
||||
/// </summary>
|
||||
DockStorehouse,
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Linq;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Dalamud.Game.ClientState.Objects.Types;
|
||||
using Dalamud.Plugin.Services;
|
||||
@ -225,24 +226,14 @@ internal static class SkipCondition
|
||||
}
|
||||
}
|
||||
|
||||
if (skipConditions.ExtraCondition == EExtraSkipCondition.WakingSandsMainArea &&
|
||||
clientState.TerritoryType == 212)
|
||||
if (skipConditions.ExtraCondition != null && skipConditions.ExtraCondition != EExtraSkipCondition.None)
|
||||
{
|
||||
var position = clientState.LocalPlayer!.Position;
|
||||
if (position.X < 24)
|
||||
var position = clientState.LocalPlayer?.Position;
|
||||
if (position != null &&
|
||||
clientState.TerritoryType != 0 &&
|
||||
MatchesExtraCondition(skipConditions.ExtraCondition.Value, position.Value, clientState.TerritoryType))
|
||||
{
|
||||
logger.LogInformation("Skipping step, as we're not in the Solar");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (skipConditions.ExtraCondition == EExtraSkipCondition.RisingStonesSolar &&
|
||||
clientState.TerritoryType == 351)
|
||||
{
|
||||
var position = clientState.LocalPlayer!.Position;
|
||||
if (position.Z <= -28)
|
||||
{
|
||||
logger.LogInformation("Skipping step, as we're in the Rising Stones Solar");
|
||||
logger.LogInformation("Skipping step, extra condition {} matches", skipConditions.ExtraCondition);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -262,6 +253,18 @@ internal static class SkipCondition
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool MatchesExtraCondition(EExtraSkipCondition condition, Vector3 position, ushort territoryType)
|
||||
{
|
||||
return condition switch
|
||||
{
|
||||
EExtraSkipCondition.WakingSandsMainArea => territoryType == 212 && position.X < 24,
|
||||
EExtraSkipCondition.RisingStonesSolar => territoryType == 351 && position.Z <= -28,
|
||||
EExtraSkipCondition.RoguesGuild => territoryType == 129 && position.Y <= -115,
|
||||
EExtraSkipCondition.DockStorehouse => territoryType == 137 && position.Y <= -20,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(condition), condition, null)
|
||||
};
|
||||
}
|
||||
|
||||
public override ETaskResult Update() => ETaskResult.SkipRemainingTasksForStep;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user