qstcompanion v1.0.1

This commit is contained in:
alydev 2025-12-04 04:39:08 +10:00
parent 3e10cbbbf2
commit 44c67ab71b
79 changed files with 21148 additions and 0 deletions

View file

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using QuestionableCompanion.Models;
namespace QuestionableCompanion;
[Serializable]
public class AlliedSocietySettings
{
public AlliedSocietyConfiguration RotationConfig { get; set; } = new AlliedSocietyConfiguration();
public Dictionary<string, AlliedSocietyCharacterStatus> CharacterStatuses { get; set; } = new Dictionary<string, AlliedSocietyCharacterStatus>();
public Dictionary<string, List<AlliedSocietyProgress>> CharacterProgress { get; set; } = new Dictionary<string, List<AlliedSocietyProgress>>();
public DateTime LastResetDate { get; set; } = DateTime.MinValue;
}

View file

@ -0,0 +1,211 @@
using System;
using System.Collections.Generic;
using Dalamud.Configuration;
using QuestionableCompanion.Models;
namespace QuestionableCompanion;
[Serializable]
public class Configuration : IPluginConfiguration
{
public int Version { get; set; } = 1;
public bool IsConfigWindowMovable { get; set; } = true;
public bool ShowDebugLogs { get; set; }
public List<QuestProfile> Profiles { get; set; } = new List<QuestProfile>();
public string ActiveProfileName { get; set; } = string.Empty;
public AlliedSocietySettings AlliedSociety { get; set; } = new AlliedSocietySettings();
public bool AutoStartOnLogin { get; set; }
public bool EnableDryRun { get; set; }
public int MaxRetryAttempts { get; set; } = 3;
public int CharacterSwitchDelay { get; set; } = 5;
public int MaxLogEntries { get; set; } = 100;
public bool LogToFile { get; set; }
public ExecutionState LastExecutionState { get; set; } = new ExecutionState();
public bool RestoreStateOnLoad { get; set; }
public List<StopPoint> StopPoints { get; set; } = new List<StopPoint>();
public RotationState LastRotationState { get; set; } = new RotationState();
public List<string> SelectedCharactersForRotation { get; set; } = new List<string>();
public Dictionary<uint, List<string>> QuestCompletionByCharacter { get; set; } = new Dictionary<uint, List<string>>();
public Dictionary<string, List<string>> EventQuestCompletionByCharacter { get; set; } = new Dictionary<string, List<string>>();
public string CurrentEventQuestId { get; set; } = string.Empty;
public List<string> SelectedCharactersForEventQuest { get; set; } = new List<string>();
public bool RunEventQuestsOnARPostProcess { get; set; }
public List<string> EventQuestsToRunOnPostProcess { get; set; } = new List<string>();
public int EventQuestPostProcessTimeoutMinutes { get; set; } = 30;
public bool EnableSubmarineCheck { get; set; }
public int SubmarineCheckInterval { get; set; } = 90;
public int SubmarineReloginCooldown { get; set; } = 120;
public int SubmarineWaitTime { get; set; } = 30;
public bool EnableAutoDutyUnsynced { get; set; }
public int AutoDutyPartySize { get; set; } = 2;
public int AutoDutyMaxWaitForParty { get; set; } = 30;
public int AutoDutyReInviteInterval { get; set; } = 10;
public bool EnableQSTReloadTracking { get; set; }
public int MaxQSTReloadsBeforeSwitch { get; set; } = 5;
public bool EnableDCTravel { get; set; }
public string DCTravelWorld { get; set; } = "";
public bool EnableMovementMonitor { get; set; }
public int MovementCheckInterval { get; set; } = 5;
public int MovementStuckThreshold { get; set; } = 30;
public bool EnableCombatHandling { get; set; }
public int CombatHPThreshold { get; set; } = 50;
public bool EnableDeathHandling { get; set; }
public int DeathRespawnDelay { get; set; } = 5;
public bool LogToDalamud { get; set; }
public MSQDisplayMode MSQDisplayMode { get; set; } = MSQDisplayMode.Overall;
public bool ShowPatchVersion { get; set; }
public string DCTravelDataCenter { get; set; } = "";
public string DCTravelTargetWorld { get; set; } = "";
public bool EnableDCTravelFeature { get; set; }
public bool EnableMultiModeAfterRotation { get; set; }
public bool ReturnToHomeworldOnStopQuest { get; set; }
public bool IsHighLevelHelper { get; set; }
public bool IsQuester { get; set; }
public List<HighLevelHelperConfig> HighLevelHelpers { get; set; } = new List<HighLevelHelperConfig>();
public bool ChauffeurModeEnabled { get; set; }
public float ChauffeurDistanceThreshold { get; set; } = 100f;
public float ChauffeurStopDistance { get; set; } = 5f;
public uint ChauffeurMountId { get; set; }
public string PreferredHelper { get; set; } = "";
public string AssignedQuester { get; set; } = "";
public HelperStatus CurrentHelperStatus { get; set; }
public bool EnableHelperFollowing { get; set; }
public float HelperFollowDistance { get; set; } = 100f;
public int HelperFollowCheckInterval { get; set; } = 5;
public string AssignedQuesterForFollowing { get; set; } = "";
public string AssignedHelperForFollowing { get; set; } = "";
public bool EnableSafeWaitBeforeCharacterSwitch { get; set; }
public bool EnableSafeWaitAfterCharacterSwitch { get; set; }
public bool EnableQuestPreCheck { get; set; }
public List<uint>? QuestPreCheckRange { get; set; }
public string SelectedDatacenter { get; set; } = "NA";
public Dictionary<string, List<string>> WorldsByDatacenter { get; set; } = new Dictionary<string, List<string>>
{
{
"NA",
new List<string>
{
"Adamantoise", "Cactuar", "Faerie", "Gilgamesh", "Jenova", "Midgardsormr", "Sargatanas", "Siren", "Behemoth", "Excalibur",
"Exodus", "Famfrit", "Hyperion", "Lamia", "Leviathan", "Ultros", "Balmung", "Brynhildr", "Coeurl", "Diabolos",
"Goblin", "Malboro", "Mateus", "Zalera", "Halicarnassus", "Maduin", "Marilith", "Seraph"
}
},
{
"EU",
new List<string>
{
"Cerberus", "Louisoix", "Moogle", "Omega", "Phantom", "Ragnarok", "Sagittarius", "Spriggan", "Alpha", "Lich",
"Odin", "Phoenix", "Raiden", "Shiva", "Twintania", "Zodiark"
}
},
{
"JP",
new List<string>
{
"Aegis", "Atomos", "Carbuncle", "Garuda", "Gungnir", "Kujata", "Tonberry", "Typhon", "Alexander", "Bahamut",
"Durandal", "Fenrir", "Ifrit", "Ridill", "Tiamat", "Ultima", "Anima", "Asura", "Chocobo", "Hades",
"Ixion", "Masamune", "Pandaemonium", "Titan", "Gaia", "Belias", "Mandragora", "Ramuh", "Shinryu", "Unicorn",
"Valefor", "Yojimbo", "Zeromus"
}
},
{
"OCE",
new List<string> { "Bismarck", "Ravana", "Sephirot", "Sophia", "Zurvan" }
}
};
public void Save()
{
Plugin.PluginInterface.SavePluginConfig(this);
}
public QuestProfile? GetActiveProfile()
{
return Profiles.Find((QuestProfile p) => p.Name == ActiveProfileName);
}
public void EnsureDefaultProfile()
{
if (Profiles.Count == 0)
{
QuestProfile defaultProfile = new QuestProfile
{
Name = "Default Profile",
IsActive = true
};
Profiles.Add(defaultProfile);
ActiveProfileName = defaultProfile.Name;
}
}
}

View file

@ -0,0 +1,8 @@
namespace QuestionableCompanion;
public enum HelperStatus
{
Available,
Transporting,
InDungeon
}

View file

@ -0,0 +1,13 @@
using System;
namespace QuestionableCompanion;
[Serializable]
public class HighLevelHelperConfig
{
public string CharacterName { get; set; } = string.Empty;
public ushort WorldId { get; set; }
public string WorldName { get; set; } = string.Empty;
}

View file

@ -0,0 +1,8 @@
namespace QuestionableCompanion;
public enum MSQDisplayMode
{
CurrentExpansion,
Overall,
ExpansionBreakdown
}

File diff suppressed because it is too large Load diff