muffin v6.12
This commit is contained in:
parent
cfb4dea47e
commit
c8197297b2
58 changed files with 40038 additions and 58059 deletions
43
Questionable/Questionable.Model/AetherCurrentQuestInfo.cs
Normal file
43
Questionable/Questionable.Model/AetherCurrentQuestInfo.cs
Normal file
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using LLib.GameData;
|
||||
using Questionable.Model.Questing;
|
||||
|
||||
namespace Questionable.Model;
|
||||
|
||||
internal sealed class AetherCurrentQuestInfo : IQuestInfo
|
||||
{
|
||||
public ElementId QuestId { get; }
|
||||
|
||||
public string Name { get; }
|
||||
|
||||
public uint IssuerDataId { get; }
|
||||
|
||||
public bool IsRepeatable => false;
|
||||
|
||||
public ImmutableList<PreviousQuestInfo> PreviousQuests => ImmutableList.Create(default(ReadOnlySpan<PreviousQuestInfo>));
|
||||
|
||||
public EQuestJoin PreviousQuestJoin => EQuestJoin.All;
|
||||
|
||||
public ushort Level => 1;
|
||||
|
||||
public EAlliedSociety AlliedSociety => EAlliedSociety.None;
|
||||
|
||||
public uint? JournalGenre => null;
|
||||
|
||||
public ushort SortKey => 0;
|
||||
|
||||
public bool IsMainScenarioQuest => false;
|
||||
|
||||
public IReadOnlyList<EClassJob> ClassJobs => Array.Empty<EClassJob>();
|
||||
|
||||
public EExpansionVersion Expansion => EExpansionVersion.ARealmReborn;
|
||||
|
||||
public AetherCurrentQuestInfo(AetherCurrentId aetherCurrentId, string name, uint issuerDataId = 0u)
|
||||
{
|
||||
QuestId = aetherCurrentId;
|
||||
Name = name;
|
||||
IssuerDataId = issuerDataId;
|
||||
}
|
||||
}
|
43
Questionable/Questionable.Model/AethernetQuestInfo.cs
Normal file
43
Questionable/Questionable.Model/AethernetQuestInfo.cs
Normal file
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using LLib.GameData;
|
||||
using Questionable.Model.Questing;
|
||||
|
||||
namespace Questionable.Model;
|
||||
|
||||
internal sealed class AethernetQuestInfo : IQuestInfo
|
||||
{
|
||||
public ElementId QuestId { get; }
|
||||
|
||||
public string Name { get; }
|
||||
|
||||
public uint IssuerDataId { get; }
|
||||
|
||||
public bool IsRepeatable => false;
|
||||
|
||||
public ImmutableList<PreviousQuestInfo> PreviousQuests => ImmutableList.Create(default(ReadOnlySpan<PreviousQuestInfo>));
|
||||
|
||||
public EQuestJoin PreviousQuestJoin => EQuestJoin.All;
|
||||
|
||||
public ushort Level => 1;
|
||||
|
||||
public EAlliedSociety AlliedSociety => EAlliedSociety.None;
|
||||
|
||||
public uint? JournalGenre => null;
|
||||
|
||||
public ushort SortKey => 0;
|
||||
|
||||
public bool IsMainScenarioQuest => false;
|
||||
|
||||
public IReadOnlyList<EClassJob> ClassJobs => Array.Empty<EClassJob>();
|
||||
|
||||
public EExpansionVersion Expansion => EExpansionVersion.ARealmReborn;
|
||||
|
||||
public AethernetQuestInfo(AethernetId aethernetId, string name, uint issuerDataId = 0u)
|
||||
{
|
||||
QuestId = aethernetId;
|
||||
Name = name;
|
||||
IssuerDataId = issuerDataId;
|
||||
}
|
||||
}
|
|
@ -41,51 +41,63 @@ internal sealed class AlliedSocietyDailyInfo : IQuestInfo
|
|||
{
|
||||
QuestId = new AlliedSocietyDailyId((byte)beastTribe.RowId, rank);
|
||||
Name = beastTribe.Name.ToString();
|
||||
List<EClassJob> list2;
|
||||
switch ((EAlliedSociety)(byte)beastTribe.RowId)
|
||||
IReadOnlyList<EClassJob> readOnlyList = null;
|
||||
try
|
||||
{
|
||||
case EAlliedSociety.Amaljaa:
|
||||
case EAlliedSociety.Sylphs:
|
||||
case EAlliedSociety.Kobolds:
|
||||
case EAlliedSociety.Sahagin:
|
||||
case EAlliedSociety.VanuVanu:
|
||||
case EAlliedSociety.Vath:
|
||||
case EAlliedSociety.Kojin:
|
||||
case EAlliedSociety.Ananta:
|
||||
case EAlliedSociety.Pixies:
|
||||
case EAlliedSociety.Arkasodara:
|
||||
case EAlliedSociety.Pelupelu:
|
||||
List<EClassJob> list2;
|
||||
switch ((EAlliedSociety)(byte)beastTribe.RowId)
|
||||
{
|
||||
case EAlliedSociety.Amaljaa:
|
||||
case EAlliedSociety.Sylphs:
|
||||
case EAlliedSociety.Kobolds:
|
||||
case EAlliedSociety.Sahagin:
|
||||
case EAlliedSociety.VanuVanu:
|
||||
case EAlliedSociety.Vath:
|
||||
case EAlliedSociety.Kojin:
|
||||
case EAlliedSociety.Ananta:
|
||||
case EAlliedSociety.Pixies:
|
||||
case EAlliedSociety.Arkasodara:
|
||||
case EAlliedSociety.Pelupelu:
|
||||
{
|
||||
List<EClassJob> list3 = new List<EClassJob>();
|
||||
list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoW, null));
|
||||
list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoM, null));
|
||||
list2 = list3;
|
||||
break;
|
||||
}
|
||||
case EAlliedSociety.Ixal:
|
||||
case EAlliedSociety.Moogles:
|
||||
case EAlliedSociety.Dwarves:
|
||||
case EAlliedSociety.Loporrits:
|
||||
case EAlliedSociety.YokHuy:
|
||||
list2 = classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null).ToList();
|
||||
break;
|
||||
case EAlliedSociety.Qitari:
|
||||
case EAlliedSociety.Omicrons:
|
||||
case EAlliedSociety.MamoolJa:
|
||||
list2 = classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null).ToList();
|
||||
break;
|
||||
case EAlliedSociety.Namazu:
|
||||
{
|
||||
List<EClassJob> list = new List<EClassJob>();
|
||||
list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null));
|
||||
list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null));
|
||||
list2 = list;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException("beastTribe");
|
||||
}
|
||||
readOnlyList = list2;
|
||||
}
|
||||
catch (ArgumentOutOfRangeException)
|
||||
{
|
||||
List<EClassJob> list3 = new List<EClassJob>();
|
||||
list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoW, null));
|
||||
list3.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoM, null));
|
||||
list2 = list3;
|
||||
break;
|
||||
List<EClassJob> list4 = new List<EClassJob>();
|
||||
list4.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoW, null));
|
||||
list4.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoM, null));
|
||||
readOnlyList = new _003C_003Ez__ReadOnlyList<EClassJob>(list4);
|
||||
}
|
||||
case EAlliedSociety.Ixal:
|
||||
case EAlliedSociety.Moogles:
|
||||
case EAlliedSociety.Dwarves:
|
||||
case EAlliedSociety.Loporrits:
|
||||
case EAlliedSociety.YokHuy:
|
||||
list2 = classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null).ToList();
|
||||
break;
|
||||
case EAlliedSociety.Qitari:
|
||||
case EAlliedSociety.Omicrons:
|
||||
case EAlliedSociety.MamoolJa:
|
||||
list2 = classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null).ToList();
|
||||
break;
|
||||
case EAlliedSociety.Namazu:
|
||||
{
|
||||
List<EClassJob> list = new List<EClassJob>();
|
||||
list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoH, null));
|
||||
list.AddRange(classJobUtils.AsIndividualJobs(EExtendedClassJob.DoL, null));
|
||||
list2 = list;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException("beastTribe");
|
||||
}
|
||||
ClassJobs = list2;
|
||||
ClassJobs = readOnlyList;
|
||||
Expansion = (EExpansionVersion)beastTribe.Expansion.RowId;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,10 @@ internal interface IQuestInfo
|
|||
|
||||
bool IsRepeatable { get; }
|
||||
|
||||
bool IsSeasonalQuest => false;
|
||||
|
||||
DateTime? SeasonalQuestExpiry => null;
|
||||
|
||||
ImmutableList<PreviousQuestInfo> PreviousQuests { get; }
|
||||
|
||||
EQuestJoin PreviousQuestJoin { get; }
|
||||
|
|
|
@ -66,7 +66,11 @@ internal sealed class QuestInfo : IQuestInfo
|
|||
|
||||
public EExpansionVersion Expansion { get; }
|
||||
|
||||
public QuestInfo(Lumina.Excel.Sheets.Quest quest, uint newGamePlusChapter, byte startingCity, JournalGenreOverrides journalGenreOverrides)
|
||||
public DateTime? SeasonalQuestExpiry { get; internal set; }
|
||||
|
||||
public bool IsSeasonalQuest { get; internal set; }
|
||||
|
||||
public QuestInfo(Lumina.Excel.Sheets.Quest quest, uint newGamePlusChapter, byte startingCity, JournalGenreOverrides journalGenreOverrides, bool isSeasonalEventQuest = false, DateTime? seasonalQuestExpiry = null)
|
||||
{
|
||||
QuestId = Questionable.Model.Questing.QuestId.FromRowId(quest.RowId);
|
||||
string value = QuestId.Value switch
|
||||
|
@ -157,6 +161,9 @@ internal sealed class QuestInfo : IQuestInfo
|
|||
AlliedSocietyRank = (int)quest.BeastReputationRank.RowId;
|
||||
ClassJobs = QuestInfoUtils.AsList(quest.ClassJobCategory0.ValueNullable);
|
||||
IsSeasonalEvent = quest.Festival.RowId != 0;
|
||||
IsSeasonalQuest = isSeasonalEventQuest;
|
||||
SeasonalQuestExpiry = (IsSeasonalQuest ? seasonalQuestExpiry : ((DateTime?)null));
|
||||
SeasonalQuestExpiry = seasonalQuestExpiry;
|
||||
NewGamePlusChapter = newGamePlusChapter;
|
||||
StartingCity = startingCity;
|
||||
MoogleDeliveryLevel = (byte)quest.DeliveryQuest.RowId;
|
||||
|
|
|
@ -23,8 +23,6 @@ internal sealed class QuestProgressInfo
|
|||
|
||||
public EClassJob ClassJob { get; }
|
||||
|
||||
public string Tooltip { get; }
|
||||
|
||||
public QuestProgressInfo(QuestWork questWork)
|
||||
{
|
||||
Id = new QuestId(questWork.QuestId);
|
||||
|
@ -33,20 +31,11 @@ internal sealed class QuestProgressInfo
|
|||
Variables = questWork.Variables.ToArray().ToList();
|
||||
IsHidden = questWork.IsHidden;
|
||||
ClassJob = (EClassJob)questWork.AcceptClassJob;
|
||||
Tooltip = "";
|
||||
Span<byte> variables = questWork.Variables;
|
||||
string text = "";
|
||||
for (int i = 0; i < variables.Length; i++)
|
||||
{
|
||||
byte b = variables[i];
|
||||
Tooltip = Tooltip + Convert.ToString(b, 2).PadLeft(8).Replace(" ", "0") + "\n";
|
||||
int num = b & 0xF;
|
||||
text += b;
|
||||
if (num != 0)
|
||||
{
|
||||
text += $"({num})";
|
||||
}
|
||||
text += " ";
|
||||
text = text + variables[i] + " ";
|
||||
if (i % 2 == 1)
|
||||
{
|
||||
text += " ";
|
||||
|
|
|
@ -16,6 +16,10 @@ internal sealed class UnlockLinkQuestInfo : IQuestInfo
|
|||
|
||||
public bool IsRepeatable => false;
|
||||
|
||||
public DateTime? QuestExpiry { get; }
|
||||
|
||||
public string? Patch { get; }
|
||||
|
||||
public ImmutableList<PreviousQuestInfo> PreviousQuests => ImmutableList.Create(default(ReadOnlySpan<PreviousQuestInfo>));
|
||||
|
||||
public EQuestJoin PreviousQuestJoin => EQuestJoin.All;
|
||||
|
@ -34,10 +38,12 @@ internal sealed class UnlockLinkQuestInfo : IQuestInfo
|
|||
|
||||
public EExpansionVersion Expansion => EExpansionVersion.ARealmReborn;
|
||||
|
||||
public UnlockLinkQuestInfo(UnlockLinkId unlockLinkId, string name, uint issuerDataId)
|
||||
public UnlockLinkQuestInfo(UnlockLinkId unlockLinkId, string name, uint issuerDataId, DateTime? expiryTime, string? patch = null)
|
||||
{
|
||||
QuestId = unlockLinkId;
|
||||
Name = name;
|
||||
IssuerDataId = issuerDataId;
|
||||
QuestExpiry = expiryTime;
|
||||
Patch = patch;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue