using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using SideLoader;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("OutwardModTemplate")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OutwardModTemplate")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("c5450fe0-edcf-483f-b9ea-4b1ef9d36da7")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace EarlyCalderaTrainers;
[BepInPlugin("johbenji.earlycalderatrainers", "Early Caldera Trainers", "2.0.0")]
public class EarlyCalderaTrainersPlugin : BaseUnityPlugin
{
public struct QuestObjectData
{
public string Path;
public string QuestName;
public QuestObjectData(string path, string questName)
{
Path = path;
QuestName = questName;
}
}
[CompilerGenerated]
private sealed class <DelayTrainerVisibility>d__10 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public string path;
public bool visible;
public EarlyCalderaTrainersPlugin <>4__this;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <DelayTrainerVisibility>d__10(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(1f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
<>4__this.ToggleTrainerVisibility(path, visible);
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
public const string GUID = "johbenji.earlycalderatrainers";
public const string NAME = "Early Caldera Trainers";
public const string VERSION = "2.0.0";
internal static ManualLogSource Log;
public static ConfigEntry<bool> factionRewardConfig;
private Dictionary<string, QuestObjectData> LocationTrainerDictionary = new Dictionary<string, QuestObjectData>();
internal void Awake()
{
Log = ((BaseUnityPlugin)this).Logger;
factionRewardConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Faction Reward", "Spawn Special Trainer For Faction Reward", true, "Spawns a trainer for the final faction reward in Caldera such as Infuse Mana once the Peacemaker Quest is completed.");
SL.OnGameplayResumedAfterLoading += OnGameplayResumedAfterLoading;
LocationTrainerDictionary.Add("Abrassar_Dungeon1", new QuestObjectData("Yan, Levantine Alchemist_johbenji-yan", "Faction_HeroicKingdom"));
LocationTrainerDictionary.Add("Emercar_Dungeon6", new QuestObjectData("Anthony Berthelot, Krypteia Scholar_johbenji-AnthonyBerthelot", "Faction_BlueChamber"));
LocationTrainerDictionary.Add("Harmattan", new QuestObjectData("Samantha Turnbull, Head Enchanter_johbenji-samanthaturnbull", "Faction_Sorobore"));
LocationTrainerDictionary.Add("Monsoon", new QuestObjectData("Paul, Disciple_johbenji-paul", "Faction_HolyMission"));
}
internal void OnGameplayResumedAfterLoading()
{
string sceneName = AreaManager.Instance.CurrentArea.SceneName;
if (LocationTrainerDictionary.ContainsKey(sceneName))
{
string path = LocationTrainerDictionary[sceneName].Path;
string questName = LocationTrainerDictionary[sceneName].QuestName;
if (!factionRewardConfig.Value)
{
((MonoBehaviour)this).StartCoroutine(DelayTrainerVisibility(path, visible: false));
}
else if (HasQuestEvent(questName) && HasQuestEvent("General_DoneQuest4"))
{
((MonoBehaviour)this).StartCoroutine(DelayTrainerVisibility(path, visible: true));
}
else
{
((MonoBehaviour)this).StartCoroutine(DelayTrainerVisibility(path, visible: false));
}
}
}
private bool HasQuestEvent(string questEventName)
{
QuestEventManager instance = QuestEventManager.Instance;
int num = 0;
IList<QuestEventData> currentQuestEvents = instance.CurrentQuestEvents;
for (int i = 0; i < currentQuestEvents.Count; i++)
{
QuestEventData val = currentQuestEvents[i];
if (val.Name == questEventName)
{
return true;
}
}
return false;
}
[IteratorStateMachine(typeof(<DelayTrainerVisibility>d__10))]
private IEnumerator DelayTrainerVisibility(string path, bool visible)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <DelayTrainerVisibility>d__10(0)
{
<>4__this = this,
path = path,
visible = visible
};
}
private void ToggleTrainerVisibility(string path, bool visible)
{
GameObject val = GameObject.Find(path);
if ((Object)(object)val != (Object)null)
{
val.SetActive(visible);
}
}
}