Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Harmony/Harmony_QuestEventManager.cs
Nathaniel Cosford 062dfab2cd Patched
2025-05-30 01:04:40 +09:30

72 lines
3.1 KiB
C#

using System.Collections.Generic;
namespace Harmony.QuestEventManagerPatchesRebirth
{
internal class QuestEventManagerPatches
{
[HarmonyPatch(typeof(QuestEventManager))]
[HarmonyPatch("GetPrefabsForTrader")]
public class GetPrefabsForTraderPatch
{
private static bool Prefix(QuestEventManager __instance, ref List<PrefabInstance> __result, TraderArea traderArea, int difficulty, int index, GameRandom gameRandom)
{
if (traderArea == null)
{
__result = null;
return false;
}
if (!__instance.TraderPrefabList.ContainsKey(traderArea))
{
RebirthUtilities.SetupTraderPrefabList(traderArea, difficulty, ref __instance.TraderPrefabList);
}
QuestEventManager.PrefabListData prefabListData = __instance.TraderPrefabList[traderArea][index];
prefabListData.ShuffleDifficulty(difficulty, gameRandom);
if (prefabListData.TierData.ContainsKey(difficulty))
{
__result = prefabListData.TierData[difficulty];
return false;
}
__result = null;
return false;
}
}
[HarmonyPatch(typeof(QuestEventManager))]
[HarmonyPatch("HandleNewCompletedQuest")]
public class HandleNewCompletedQuest
{
private static bool Prefix(QuestEventManager __instance, global::EntityPlayer player, byte questFaction, int completedQuestTier, bool addsToTierComplete)
{
if (addsToTierComplete)
{
float numQuestCompletionTier = 0;
if (player.Buffs.HasCustomVar("$varFuriousRamsayQuestCompletionTier"))
{
numQuestCompletionTier = player.Buffs.GetCustomVar("$varFuriousRamsayQuestCompletionTier");
}
int currentFactionTier = player.QuestJournal.GetCurrentFactionTier(questFaction, 0, true);
int currentFactionTier2 = player.QuestJournal.GetCurrentFactionTier(questFaction, completedQuestTier, true);
if (currentFactionTier != currentFactionTier2)
{
for (int i = 0; i < __instance.questTierRewards.Count; i++)
{
if (__instance.questTierRewards[i].Tier == currentFactionTier2)
{
numQuestCompletionTier++;
player.Buffs.SetCustomVar("$varFuriousRamsayQuestCompletionTier", numQuestCompletionTier);
//Log.Out("QuestEventManager-HandleNewCompletedQuest $varFuriousRamsayQuestCompletionTier: " + numQuestCompletionTier);
__instance.questTierRewards[i].GiveRewards(player);
}
}
}
}
return false;
}
}
}
}