Decompiled source of StartInBazaar v0.2.2

StartInBazaar.dll

Decompiled a month ago
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;
		}
	}
}