muffin v7.38.7

This commit is contained in:
alydev 2025-11-26 06:52:32 +10:00
parent 317800fb39
commit 5e2d8f648b
7 changed files with 703 additions and 486 deletions

View file

@ -137,6 +137,14 @@ internal sealed class QuestionableIpc : IDisposable
private const string IpcSetSequenceStopCondition = "Questionable.SetSequenceStopCondition";
private const string IpcGetQuestSequenceStopCondition = "Questionable.GetQuestSequenceStopCondition";
private const string IpcSetQuestSequenceStopCondition = "Questionable.SetQuestSequenceStopCondition";
private const string IpcRemoveQuestSequenceStopCondition = "Questionable.RemoveQuestSequenceStopCondition";
private const string IpcGetAllQuestSequenceStopConditions = "Questionable.GetAllQuestSequenceStopConditions";
private const string IpcGetAlliedSocietyRemainingAllowances = "Questionable.AlliedSociety.GetRemainingAllowances";
private const string IpcGetAlliedSocietyTimeUntilReset = "Questionable.AlliedSociety.GetTimeUntilReset";
@ -259,6 +267,14 @@ internal sealed class QuestionableIpc : IDisposable
private readonly ICallGateProvider<bool, int, bool> _setSequenceStopCondition;
private readonly ICallGateProvider<string, int> _getQuestSequenceStopCondition;
private readonly ICallGateProvider<string, int, bool> _setQuestSequenceStopCondition;
private readonly ICallGateProvider<string, bool> _removeQuestSequenceStopCondition;
private readonly ICallGateProvider<Dictionary<string, int>> _getAllQuestSequenceStopConditions;
private readonly ICallGateProvider<int> _getAlliedSocietyRemainingAllowances;
private readonly ICallGateProvider<long> _getAlliedSocietyTimeUntilReset;
@ -376,6 +392,14 @@ internal sealed class QuestionableIpc : IDisposable
_getSequenceStopCondition.RegisterFunc(GetSequenceStopCondition);
_setSequenceStopCondition = pluginInterface.GetIpcProvider<bool, int, bool>("Questionable.SetSequenceStopCondition");
_setSequenceStopCondition.RegisterFunc(SetSequenceStopCondition);
_getQuestSequenceStopCondition = pluginInterface.GetIpcProvider<string, int>("Questionable.GetQuestSequenceStopCondition");
_getQuestSequenceStopCondition.RegisterFunc(GetQuestSequenceStopCondition);
_setQuestSequenceStopCondition = pluginInterface.GetIpcProvider<string, int, bool>("Questionable.SetQuestSequenceStopCondition");
_setQuestSequenceStopCondition.RegisterFunc(SetQuestSequenceStopCondition);
_removeQuestSequenceStopCondition = pluginInterface.GetIpcProvider<string, bool>("Questionable.RemoveQuestSequenceStopCondition");
_removeQuestSequenceStopCondition.RegisterFunc(RemoveQuestSequenceStopCondition);
_getAllQuestSequenceStopConditions = pluginInterface.GetIpcProvider<Dictionary<string, int>>("Questionable.GetAllQuestSequenceStopConditions");
_getAllQuestSequenceStopConditions.RegisterFunc(GetAllQuestSequenceStopConditions);
_getAlliedSocietyRemainingAllowances = pluginInterface.GetIpcProvider<int>("Questionable.AlliedSociety.GetRemainingAllowances");
_getAlliedSocietyRemainingAllowances.RegisterFunc(GetAlliedSocietyRemainingAllowances);
_getAlliedSocietyTimeUntilReset = pluginInterface.GetIpcProvider<long>("Questionable.AlliedSociety.GetTimeUntilReset");
@ -925,6 +949,7 @@ internal sealed class QuestionableIpc : IDisposable
bool num = _configuration.Stop.QuestsToStopAfter.Remove(elementId);
if (num)
{
_configuration.Stop.QuestSequences.Remove(questId);
_pluginInterface.SavePluginConfig(_configuration);
}
return num;
@ -935,6 +960,7 @@ internal sealed class QuestionableIpc : IDisposable
private bool ClearStopQuests()
{
_configuration.Stop.QuestsToStopAfter.Clear();
_configuration.Stop.QuestSequences.Clear();
_pluginInterface.SavePluginConfig(_configuration);
return true;
}
@ -981,6 +1007,49 @@ internal sealed class QuestionableIpc : IDisposable
return true;
}
private int GetQuestSequenceStopCondition(string questId)
{
if (_configuration.Stop.QuestSequences.TryGetValue(questId, out var value) && value.HasValue)
{
return value.Value;
}
return -1;
}
private bool SetQuestSequenceStopCondition(string questId, int targetSequence)
{
if (targetSequence < 0 || targetSequence > 255)
{
return false;
}
if (ElementId.TryFromString(questId, out ElementId elementId) && elementId != null && _questRegistry.IsKnownQuest(elementId))
{
if (!_configuration.Stop.QuestsToStopAfter.Contains(elementId))
{
_configuration.Stop.QuestsToStopAfter.Add(elementId);
}
_configuration.Stop.QuestSequences[questId] = targetSequence;
_pluginInterface.SavePluginConfig(_configuration);
return true;
}
return false;
}
private bool RemoveQuestSequenceStopCondition(string questId)
{
bool num = _configuration.Stop.QuestSequences.Remove(questId);
if (num)
{
_pluginInterface.SavePluginConfig(_configuration);
}
return num;
}
private Dictionary<string, int> GetAllQuestSequenceStopConditions()
{
return _configuration.Stop.QuestSequences.Where<KeyValuePair<string, int?>>((KeyValuePair<string, int?> kvp) => kvp.Value.HasValue).ToDictionary((KeyValuePair<string, int?> kvp) => kvp.Key, (KeyValuePair<string, int?> kvp) => kvp.Value.Value);
}
private unsafe int GetAlliedSocietyRemainingAllowances()
{
QuestManager* ptr = QuestManager.Instance();
@ -1179,6 +1248,10 @@ internal sealed class QuestionableIpc : IDisposable
_reorderPriorityQuest.UnregisterFunc();
_removePriorityQuest.UnregisterFunc();
_getPriorityQuests.UnregisterFunc();
_getAllQuestSequenceStopConditions.UnregisterFunc();
_removeQuestSequenceStopCondition.UnregisterFunc();
_setQuestSequenceStopCondition.UnregisterFunc();
_getQuestSequenceStopCondition.UnregisterFunc();
_setSequenceStopCondition.UnregisterFunc();
_getSequenceStopCondition.UnregisterFunc();
_setLevelStopCondition.UnregisterFunc();