using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using On.RoR2;
using R2API.Utils;
using RoR2;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("StartInBazaar")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+db00d670ee92516c59fcaa02a80800b7c9a2867d")]
[assembly: AssemblyProduct("StartInBazaar")]
[assembly: AssemblyTitle("StartInBazaar")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace StartInBazaar;
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.MagnusMagnuson.StartInBazaar", "StartInBazaar", "0.2.2")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
public class StartInBazaar : BaseUnityPlugin
{
private bool isFirstBazaarVisit = true;
private bool isFirstStage = true;
public void Awake()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Expected O, but got Unknown
Run.Start += (hook_Start)delegate(orig_Start orig, Run self)
{
isFirstBazaarVisit = true;
isFirstStage = true;
orig.Invoke(self);
};
SceneDirector.Start += (hook_Start)delegate(orig_Start orig, SceneDirector self)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active && Run.instance.stageClearCount == 0)
{
if (isFirstBazaarVisit)
{
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name.Contains("bazaar"))
{
GiveMoneyToPlayers((int)(0 - Run.instance.ruleBook.startingMoney));
goto IL_0070;
}
}
if (isFirstStage)
{
GiveMoneyToPlayers((int)Run.instance.ruleBook.startingMoney);
isFirstStage = false;
}
}
goto IL_0070;
IL_0070:
orig.Invoke(self);
};
Run.PickNextStageScene += new hook_PickNextStageScene(Run_PickNextStageScene);
SceneExitController.Begin += new hook_Begin(SceneExitController_Begin);
}
private void SceneExitController_Begin(orig_Begin orig, SceneExitController self)
{
if (!NetworkServer.active)
{
return;
}
if (isFirstBazaarVisit)
{
isFirstBazaarVisit = false;
WeightedSelection<SceneDef> val = new WeightedSelection<SceneDef>(8);
if (Object.op_Implicit((Object)(object)Run.instance.startingSceneGroup))
{
Run.instance.startingSceneGroup.AddToWeightedSelection(val, (Func<SceneDef, bool>)Run.instance.CanPickStage);
}
Run.instance.PickNextStageScene(val);
}
orig.Invoke(self);
}
private void Run_PickNextStageScene(orig_PickNextStageScene orig, Run self, WeightedSelection<SceneDef> choices)
{
if (Run.instance.stageClearCount == 0 && isFirstBazaarVisit)
{
SceneDef nextStageScene = SceneCatalog.FindSceneDef("bazaar");
self.nextStageScene = nextStageScene;
}
else
{
orig.Invoke(self, choices);
}
}
public void GiveMoneyToPlayers(int money)
{
for (int i = 0; i < PlayerCharacterMasterController.instances.Count; i++)
{
CharacterMaster master = PlayerCharacterMasterController.instances[i].master;
master.money += (uint)money;
}
}
}