Files
zzz_REBIRTH__Utils/Scripts/Dialog/DialogRequirementQuestStatusRebirth.cs
2025-06-04 16:44:53 +09:30

96 lines
3.8 KiB
C#

public class DialogRequirementQuestStatusRebirth : BaseDialogRequirement
{
public override BaseDialogRequirement.RequirementTypes RequirementType
{
get
{
return BaseDialogRequirement.RequirementTypes.QuestStatus;
}
}
public override string GetRequiredDescription(EntityPlayer player)
{
return "";
}
public override bool CheckRequirement(EntityPlayer player, EntityNPC talkingTo)
{
int maxJobs = RebirthVariables.customMaxJobs;
if (maxJobs == 0)
{
return false;
}
DialogRequirementQuestStatusRebirth.QuestStatuses questStatuses = EnumUtils.Parse<DialogRequirementQuestStatusRebirth.QuestStatuses>(base.Value, false);
string id = base.ID;
int numQuests = 0;
int questTier = player.QuestJournal.GetCurrentFactionTier(talkingTo.NPCInfo.QuestFaction);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement questTier: " + questTier);
for (int i = 0; i < player.QuestJournal.quests.Count; i++)
{
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].ID: " + player.QuestJournal.quests[i].ID);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].QuestClass.Name: " + player.QuestJournal.quests[i].QuestClass.Name);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].QuestClass.QuestType: " + player.QuestJournal.quests[i].QuestClass.QuestType);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].QuestClass.Difficulty: " + player.QuestJournal.quests[i].QuestClass.Difficulty);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].QuestClass.DifficultyTier: " + player.QuestJournal.quests[i].QuestClass.DifficultyTier);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].Active: " + player.QuestJournal.quests[i].Active);
bool isFromVanillaTrader = RebirthUtilities.IsVanillaTrader(player.QuestJournal.quests[i].QuestGiverID);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement QuestGiverID: " + player.QuestJournal.quests[i].QuestGiverID);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement isFromVanillaTrader: " + isFromVanillaTrader);
bool isOpen = isFromVanillaTrader && player.QuestJournal.quests[i].SharedOwnerID == -1 && (player.QuestJournal.quests[i].CurrentState == Quest.QuestState.NotStarted ||
player.QuestJournal.quests[i].CurrentState == Quest.QuestState.InProgress ||
player.QuestJournal.quests[i].CurrentState == Quest.QuestState.ReadyForTurnIn)
;
if (isOpen)
{
numQuests++;
}
}
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement numQuests: " + numQuests);
int numMaxQuests = 7 - (questTier + numQuests);
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement numMaxQuests: " + numMaxQuests);
if (SingletonMonoBehaviour<ConnectionManager>.Instance.IsClient)
{
if (questTier == 1 || questTier == 2)
{
numMaxQuests = 3 - numQuests;
}
else if (questTier == 3 || questTier == 4)
{
numMaxQuests = 2 - numQuests;
}
else
{
numMaxQuests = 1 - numQuests;
}
}
//Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement numMaxQuests: " + numMaxQuests);
return (numMaxQuests > 0);
}
private enum QuestStatuses
{
NotStarted,
InProgress,
TurnInReady,
Completed,
CanReceive,
CannotReceive
}
}