Decompiled source of Market Mod v1.1.0

MarketMod.dll

Decompiled 11 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using MarketMod;
using MarketMod.Patches;
using TerminalApi;
using TerminalApi.Events;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("MarketMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MarketMod")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("34e7d7e2-8592-4b67-a138-4d7fcfbd29d4")]
[assembly: AssemblyFileVersion("1.0.3")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.3.0")]
public class Market
{
	public struct ItemData
	{
		public int BaseValue;

		public int Modifier;
	}

	public static class ItemInfo
	{
		public static int Airhorn;

		public static int Hive;

		public static int Apparatus;

		public static int Bigbolt;

		public static int Bottles;

		public static int Bell;

		public static int Candy;

		public static int Cashregister;

		public static int Chemicaljug;

		public static int Clownhorn;

		public static int Coffeemug;

		public static int Comedy;

		public static int Cookiemold;

		public static int DIYFlashbang;

		public static int Doublebarrel;

		public static int Dustpan;

		public static int Eggbeater;

		public static int Fancylamp;

		public static int Flask;

		public static int Gift;

		public static int Goldbar;

		public static int Goldencup;

		public static int Hairbrush;

		public static int Hairdryer;

		public static int Jarofpickles;

		public static int Largeaxle;

		public static int Laserpointer;

		public static int Magic7ball;

		public static int Magnifyingglass;

		public static int Oldphone;

		public static int Painting;

		public static int Perfumebottle;

		public static int Pillbottle;

		public static int Plasticfish;

		public static int PlayerBody;

		public static int Redsoda;

		public static int Remote;

		public static int Ring;

		public static int Robot;

		public static int RubberDucky;

		public static int Steeringwheel;

		public static int Stopsign;

		public static int Metalsheet;

		public static int Teakettle;

		public static int Teeth;

		public static int Toothpaste;

		public static int Toycube;

		public static int Tragedy;

		public static int Vtypeengine;

		public static int WhoopieCushion;

		public static int Yieldsign;
	}

	public static Dictionary<string, ItemData> Items = new Dictionary<string, ItemData>();

	private static Random rnd;

	public static int MinimumDecrease;

	public static int MaximumIncrease;

	public static int MinimumModifier;

	public static int MaximumModifier;

	public static void Initialize()
	{
		if (!((Object)(object)GameNetworkManager.Instance == (Object)null) && GameNetworkManager.Instance.currentSaveFileName != null)
		{
			int num = 0;
			string currentSaveFileName = GameNetworkManager.Instance.currentSaveFileName;
			foreach (char c in currentSaveFileName)
			{
				num = num * 1000 + c;
			}
			int seed = num;
			Logger.CreateLogSource("Market.Tormad").LogInfo((object)(seed + "????!?!?!?!??!"));
			rnd = new Random(seed);
		}
	}

	public static void updateItems()
	{
		new ModBase().ApplyConfig();
	}

	public static void GetItems()
	{
		Items = MarketSaveManager.LoadMarketItems() ?? new Dictionary<string, ItemData>();
		if (Items.Count == 0)
		{
			Items.Add("Airhorn", new ItemData
			{
				BaseValue = ItemInfo.Airhorn,
				Modifier = 100
			});
			Items.Add("Hive", new ItemData
			{
				BaseValue = ItemInfo.Hive,
				Modifier = 100
			});
			Items.Add("Apparatus", new ItemData
			{
				BaseValue = ItemInfo.Apparatus,
				Modifier = 100
			});
			Items.Add("Big bolt", new ItemData
			{
				BaseValue = ItemInfo.Bigbolt,
				Modifier = 100
			});
			Items.Add("Bottles", new ItemData
			{
				BaseValue = ItemInfo.Bottles,
				Modifier = 100
			});
			Items.Add("Bell", new ItemData
			{
				BaseValue = ItemInfo.Bell,
				Modifier = 100
			});
			Items.Add("Candy", new ItemData
			{
				BaseValue = ItemInfo.Candy,
				Modifier = 100
			});
			Items.Add("Cash register", new ItemData
			{
				BaseValue = ItemInfo.Cashregister,
				Modifier = 100
			});
			Items.Add("Chemical jug", new ItemData
			{
				BaseValue = ItemInfo.Chemicaljug,
				Modifier = 100
			});
			Items.Add("Clown horn", new ItemData
			{
				BaseValue = ItemInfo.Clownhorn,
				Modifier = 100
			});
			Items.Add("Coffee mug", new ItemData
			{
				BaseValue = ItemInfo.Coffeemug,
				Modifier = 100
			});
			Items.Add("Comedy", new ItemData
			{
				BaseValue = ItemInfo.Comedy,
				Modifier = 100
			});
			Items.Add("Cookie mold", new ItemData
			{
				BaseValue = ItemInfo.Cookiemold,
				Modifier = 100
			});
			Items.Add("DIY-Flashbang", new ItemData
			{
				BaseValue = ItemInfo.DIYFlashbang,
				Modifier = 100
			});
			Items.Add("Double-barrel", new ItemData
			{
				BaseValue = ItemInfo.Doublebarrel,
				Modifier = 100
			});
			Items.Add("Dust pan", new ItemData
			{
				BaseValue = ItemInfo.Dustpan,
				Modifier = 100
			});
			Items.Add("Egg beater", new ItemData
			{
				BaseValue = ItemInfo.Eggbeater,
				Modifier = 100
			});
			Items.Add("Fancy lamp", new ItemData
			{
				BaseValue = ItemInfo.Fancylamp,
				Modifier = 100
			});
			Items.Add("Flask", new ItemData
			{
				BaseValue = ItemInfo.Flask,
				Modifier = 100
			});
			Items.Add("Gift", new ItemData
			{
				BaseValue = ItemInfo.Gift,
				Modifier = 100
			});
			Items.Add("Gold bar", new ItemData
			{
				BaseValue = ItemInfo.Goldbar,
				Modifier = 100
			});
			Items.Add("Golden cup", new ItemData
			{
				BaseValue = ItemInfo.Goldencup,
				Modifier = 100
			});
			Items.Add("Hair brush", new ItemData
			{
				BaseValue = ItemInfo.Hairbrush,
				Modifier = 100
			});
			Items.Add("Hairdryer", new ItemData
			{
				BaseValue = ItemInfo.Hairdryer,
				Modifier = 100
			});
			Items.Add("Jar of pickles", new ItemData
			{
				BaseValue = ItemInfo.Jarofpickles,
				Modifier = 100
			});
			Items.Add("Large axle", new ItemData
			{
				BaseValue = ItemInfo.Largeaxle,
				Modifier = 100
			});
			Items.Add("Laser pointer", new ItemData
			{
				BaseValue = ItemInfo.Laserpointer,
				Modifier = 100
			});
			Items.Add("Magic 7 ball", new ItemData
			{
				BaseValue = ItemInfo.Magic7ball,
				Modifier = 100
			});
			Items.Add("Magnifying glass", new ItemData
			{
				BaseValue = ItemInfo.Magnifyingglass,
				Modifier = 100
			});
			Items.Add("Old phone", new ItemData
			{
				BaseValue = ItemInfo.Oldphone,
				Modifier = 100
			});
			Items.Add("Painting", new ItemData
			{
				BaseValue = ItemInfo.Painting,
				Modifier = 100
			});
			Items.Add("Perfume bottle", new ItemData
			{
				BaseValue = ItemInfo.Perfumebottle,
				Modifier = 100
			});
			Items.Add("Pill bottle", new ItemData
			{
				BaseValue = ItemInfo.Pillbottle,
				Modifier = 100
			});
			Items.Add("Plastic fish", new ItemData
			{
				BaseValue = ItemInfo.Plasticfish,
				Modifier = 100
			});
			Items.Add("Player Body", new ItemData
			{
				BaseValue = ItemInfo.PlayerBody,
				Modifier = 100
			});
			Items.Add("Red soda", new ItemData
			{
				BaseValue = ItemInfo.Redsoda,
				Modifier = 100
			});
			Items.Add("Remote", new ItemData
			{
				BaseValue = ItemInfo.Remote,
				Modifier = 100
			});
			Items.Add("Ring", new ItemData
			{
				BaseValue = ItemInfo.Ring,
				Modifier = 100
			});
			Items.Add("Robot", new ItemData
			{
				BaseValue = ItemInfo.Robot,
				Modifier = 100
			});
			Items.Add("Rubber Ducky", new ItemData
			{
				BaseValue = ItemInfo.RubberDucky,
				Modifier = 100
			});
			Items.Add("Steering wheel", new ItemData
			{
				BaseValue = ItemInfo.Steeringwheel,
				Modifier = 100
			});
			Items.Add("Stop sign", new ItemData
			{
				BaseValue = ItemInfo.Stopsign,
				Modifier = 100
			});
			Items.Add("Metal sheet", new ItemData
			{
				BaseValue = ItemInfo.Metalsheet,
				Modifier = 100
			});
			Items.Add("Tea kettle", new ItemData
			{
				BaseValue = ItemInfo.Teakettle,
				Modifier = 100
			});
			Items.Add("Teeth", new ItemData
			{
				BaseValue = ItemInfo.Teeth,
				Modifier = 100
			});
			Items.Add("Toothpaste", new ItemData
			{
				BaseValue = ItemInfo.Toothpaste,
				Modifier = 100
			});
			Items.Add("Toy cube", new ItemData
			{
				BaseValue = ItemInfo.Toycube,
				Modifier = 100
			});
			Items.Add("Tragedy", new ItemData
			{
				BaseValue = ItemInfo.Tragedy,
				Modifier = 100
			});
			Items.Add("V-type engine", new ItemData
			{
				BaseValue = ItemInfo.Vtypeengine,
				Modifier = 100
			});
			Items.Add("Whoopie-Cushion", new ItemData
			{
				BaseValue = ItemInfo.WhoopieCushion,
				Modifier = 100
			});
			Items.Add("Yield sign", new ItemData
			{
				BaseValue = ItemInfo.Yieldsign,
				Modifier = 100
			});
			Logger.CreateLogSource("Market.Tormad").LogInfo((object)"!Created new items!");
		}
	}

	public static int GetCurrentMarketValue(ItemData itemData)
	{
		GetItems();
		return (int)((double)itemData.BaseValue * ((double)itemData.Modifier / 100.0));
	}

	public static int GetCurrentMarketValueViaString(string itemName)
	{
		GetItems();
		Logger.CreateLogSource("Market.Tormad").LogInfo((object)"!!!!!!!!!!!!!!!!!!!!!!!!The test mod working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
		if (Items.ContainsKey(itemName))
		{
			ItemData itemData = Items[itemName];
			double num = (double)itemData.BaseValue * ((double)itemData.Modifier / 100.0);
			Logger.CreateLogSource("Market.Tormad").LogInfo((object)("!!!!!!!!!!!!!!!!!!!!!!!!Value of " + itemName + " is " + num + " - Modifier " + itemData.Modifier));
			return (int)num;
		}
		Logger.CreateLogSource("Market.Tormad").LogInfo((object)("!!!!!!!!!!!!!!!!!!!!!!!! " + itemName + " is not listed"));
		return 0;
	}

	public static void UpdateDaily(int dayCount)
	{
		Initialize();
		GetItems();
		foreach (string item in Items.Keys.ToList())
		{
			ItemData value = Items[item];
			int num = value.Modifier;
			for (int i = 0; i < dayCount; i++)
			{
				num += rnd.Next(MinimumDecrease, MaximumIncrease);
				num = Mathf.Clamp(num, MinimumModifier, MaximumModifier);
				Logger.CreateLogSource("Market.Tormad").LogInfo((object)("Day " + (i + 1) + ": " + value.ToString() + " - Modifier " + num));
			}
			value.Modifier = num;
			Items[item] = value;
			MarketSaveManager.SaveMarketItems();
		}
		ModBase.UpdateKeywords();
		Logger.CreateLogSource("Market.Tormad").LogInfo((object)"!!!!!!!!!!!!!!!!!!!!!!!! LISTENHERE");
	}

	public static string GetFormattedMarketPrices()
	{
		GetItems();
		string text = "======================\n   MARKET PRICES\n======================\n\n";
		string text2 = "Item       | Modifier | Market Price\n------------------------------------\n";
		string text3 = "";
		foreach (KeyValuePair<string, ItemData> item in Items)
		{
			int currentMarketValue = GetCurrentMarketValue(item.Value);
			text3 = text3 + item.Key.PadRight(15) + "| " + item.Value.Modifier + "%".PadLeft(8) + " | " + currentMarketValue.ToString().PadLeft(12) + "\n";
		}
		return text + text2 + text3 + "\nNote: Prices are updated daily.";
	}

	public static void UpdateSellItems(string itemName)
	{
		GetItems();
		Logger.CreateLogSource("Market.Tormad").LogInfo((object)"!Tried to sell");
		if (Items.ContainsKey(itemName))
		{
			ItemData itemData = Items[itemName];
			itemData.Modifier += rnd.Next(-10, -5);
			ModBase.UpdateKeywords();
			Logger.CreateLogSource("Market.Tormad").LogInfo((object)("!" + itemName + " is listed"));
			MarketSaveManager.SaveMarketItems();
		}
		Logger.CreateLogSource("Market.Tormad").LogInfo((object)("!" + itemName + " is not listed"));
	}
}
public static class MarketSaveManager
{
	private static string itemsKey = "Market_Items";

	private static string daysKey = "Market_Days";

	public static void SaveMarketItems()
	{
		if ((Object)(object)GameNetworkManager.Instance == (Object)null || GameNetworkManager.Instance.currentSaveFileName == null)
		{
			new Dictionary<string, Market.ItemData>();
		}
		else
		{
			ES3.Save<Dictionary<string, Market.ItemData>>("Market_Items", Market.Items, GameNetworkManager.Instance.currentSaveFileName);
		}
	}

	public static Dictionary<string, Market.ItemData> LoadMarketItems()
	{
		if ((Object)(object)GameNetworkManager.Instance == (Object)null || GameNetworkManager.Instance.currentSaveFileName == null)
		{
			return new Dictionary<string, Market.ItemData>();
		}
		if (ES3.KeyExists(itemsKey, GameNetworkManager.Instance.currentSaveFileName))
		{
			return ES3.Load<Dictionary<string, Market.ItemData>>(itemsKey, GameNetworkManager.Instance.currentSaveFileName);
		}
		return new Dictionary<string, Market.ItemData>();
	}

	public static void SaveDays()
	{
		if (!((Object)(object)GameNetworkManager.Instance == (Object)null) && GameNetworkManager.Instance.currentSaveFileName != null)
		{
			ES3.Save<int>("Market_Days", DayChangeTracker.dayCount, GameNetworkManager.Instance.currentSaveFileName);
		}
	}

	public static int LoadDays()
	{
		if ((Object)(object)GameNetworkManager.Instance == (Object)null || GameNetworkManager.Instance.currentSaveFileName == null)
		{
			return 1;
		}
		if (ES3.KeyExists("Market_Days", GameNetworkManager.Instance.currentSaveFileName))
		{
			return ES3.Load<int>("Market_Days", GameNetworkManager.Instance.currentSaveFileName);
		}
		ES3.Save<int>("Market_Days", 1, GameNetworkManager.Instance.currentSaveFileName);
		return 1;
	}

	public static int LoadOldDays()
	{
		if ((Object)(object)GameNetworkManager.Instance == (Object)null || GameNetworkManager.Instance.currentSaveFileName == null)
		{
			return 0;
		}
		if (ES3.KeyExists("Market_Days", GameNetworkManager.Instance.currentSaveFileName))
		{
			if (ES3.Load<int>("Market_Days", GameNetworkManager.Instance.currentSaveFileName) == 1)
			{
				return 0;
			}
			return ES3.Load<int>("Market_Days", GameNetworkManager.Instance.currentSaveFileName);
		}
		return 0;
	}
}
public static class DayChangeTracker
{
	public static bool DayChangedFlag = true;

	public static float startTime = Time.realtimeSinceStartup;

	public static int dayCount = MarketSaveManager.LoadDays();

	public static int oldDayCount = MarketSaveManager.LoadOldDays();
}
namespace MarketMod
{
	[BepInPlugin("Market.Tormad", "Market Mod", "1.1.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class ModBase : BaseUnityPlugin
	{
		private const string modGUID = "Market.Tormad";

		private const string modName = "Market Mod";

		private const string modVersion = "1.1.0";

		private readonly Harmony harmony = new Harmony("Market.Tormad");

		private static ModBase Instance;

		internal ManualLogSource mls;

		private ConfigEntry<int> MiniumDecrease;

		private ConfigEntry<int> MaximumIncrease;

		private ConfigEntry<int> MinimumModifier;

		private ConfigEntry<int> MaximumModifier;

		private ConfigEntry<int> Airhorn;

		private ConfigEntry<int> Hive;

		private ConfigEntry<int> Apparatus;

		private ConfigEntry<int> Bigbolt;

		private ConfigEntry<int> Bottles;

		private ConfigEntry<int> Bell;

		private ConfigEntry<int> Candy;

		private ConfigEntry<int> Cashregister;

		private ConfigEntry<int> Chemicaljug;

		private ConfigEntry<int> Clownhorn;

		private ConfigEntry<int> Coffeemug;

		private ConfigEntry<int> Comedy;

		private ConfigEntry<int> Cookiemold;

		private ConfigEntry<int> DIYFlashbang;

		private ConfigEntry<int> Doublebarrel;

		private ConfigEntry<int> Dustpan;

		private ConfigEntry<int> Eggbeater;

		private ConfigEntry<int> Fancylamp;

		private ConfigEntry<int> Flask;

		private ConfigEntry<int> Gift;

		private ConfigEntry<int> Goldbar;

		private ConfigEntry<int> Goldencup;

		private ConfigEntry<int> Hairbrush;

		private ConfigEntry<int> Hairdryer;

		private ConfigEntry<int> Jarofpickles;

		private ConfigEntry<int> Largeaxle;

		private ConfigEntry<int> Laserpointer;

		private ConfigEntry<int> Magic7ball;

		private ConfigEntry<int> Magnifyingglass;

		private ConfigEntry<int> Oldphone;

		private ConfigEntry<int> Painting;

		private ConfigEntry<int> Perfumebottle;

		private ConfigEntry<int> Pillbottle;

		private ConfigEntry<int> Plasticfish;

		private ConfigEntry<int> PlayerBody;

		private ConfigEntry<int> Redsoda;

		private ConfigEntry<int> Remote;

		private ConfigEntry<int> Ring;

		private ConfigEntry<int> Robot;

		private ConfigEntry<int> RubberDucky;

		private ConfigEntry<int> Steeringwheel;

		private ConfigEntry<int> Stopsign;

		private ConfigEntry<int> Metalsheet;

		private ConfigEntry<int> Teakettle;

		private ConfigEntry<int> Teeth;

		private ConfigEntry<int> Toothpaste;

		private ConfigEntry<int> Toycube;

		private ConfigEntry<int> Tragedy;

		private ConfigEntry<int> Vtypeengine;

		private ConfigEntry<int> WhoopieCushion;

		private ConfigEntry<int> Yieldsign;

		private void Awake()
		{
			//IL_0cfd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d07: Expected O, but got Unknown
			//IL_0d0e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d18: Expected O, but got Unknown
			//IL_0d1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d29: Expected O, but got Unknown
			//IL_0d30: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d3a: Expected O, but got Unknown
			//IL_0d41: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d4b: Expected O, but got Unknown
			//IL_0d52: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d5c: Expected O, but got Unknown
			if ((Object)(object)Instance == (Object)null)
			{
				Instance = this;
			}
			mls = Logger.CreateLogSource("Market.Tormad");
			MiniumDecrease = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Minimum Decrease", -10, "The minuim the price can decrease a day");
			MaximumIncrease = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Maximum Increase", 16, "The maximum the price can increase a day");
			MinimumModifier = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Minimum Modifier", 20, "The minimum the modifier can reach");
			MaximumModifier = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Maximum Modifier", 200, "The maximum the modifier can reach");
			Airhorn = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Airhorn", 62, "");
			Hive = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Hive", 110, "");
			Apparatus = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Apparatus", 110, "");
			Bigbolt = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Big bolt", 26, "");
			Bottles = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Bottles", 50, "");
			Bell = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Bell", 64, "");
			Candy = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Candy", 21, "");
			Cashregister = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Cash register", 120, "");
			Chemicaljug = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Chemical jug", 58, "");
			Clownhorn = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Clown horn", 62, (ConfigDescription)null);
			Coffeemug = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Coffee mug", 46, "");
			Comedy = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Comedy", 40, "");
			Cookiemold = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Cookie mold", 26, "");
			DIYFlashbang = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "DIY-Flashbang", 19, "");
			Doublebarrel = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Double-barrel", 0, "");
			Dustpan = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Dust pan", 22, "");
			Eggbeater = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Egg beater", 28, "");
			Fancylamp = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Fancy lamp", 94, "");
			Flask = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Flask", 30, "");
			Gift = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Gift", 20, "");
			Goldbar = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Gold bar", 156, "");
			Goldencup = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Golden cup", 60, "");
			Hairbrush = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Hair brush", 22, "");
			Hairdryer = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Hairdryer", 80, "");
			Jarofpickles = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Jar of pickles", 46, "");
			Largeaxle = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Large axle", 46, "");
			Laserpointer = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Laser pointer", 66, "");
			Magic7ball = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Magic 7 ball", 54, "");
			Magnifyingglass = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Magnifying glass", 52, "");
			Oldphone = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Old phone", 56, "");
			Painting = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Painting", 92, "");
			Perfumebottle = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Perfume bottle", 76, "");
			Pillbottle = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Pill bottle", 28, "");
			Plasticfish = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Plastic fish", 34, "");
			PlayerBody = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Player Body", 21, "");
			Redsoda = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Red soda", 54, "");
			Remote = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Remote", 34, "");
			Ring = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Ring", 66, "");
			Robot = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Robot", 72, "");
			RubberDucky = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Rubber Ducky", 51, "");
			Steeringwheel = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Steering wheel", 24, "");
			Stopsign = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Stop sign", 36, "");
			Metalsheet = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Metal sheet", 16, "");
			Teakettle = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Tea kettle", 44, "");
			Teeth = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Teeth", 72, "");
			Toothpaste = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Toothpaste", 31, "");
			Toycube = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Toy cube", 34, "");
			Tragedy = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Tragedy", 40, "");
			Vtypeengine = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "V-type engine", 38, "");
			WhoopieCushion = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Whoopie-Cushion", 13, "");
			Yieldsign = ((BaseUnityPlugin)this).Config.Bind<int>("Items", "Yield sign", 27, "");
			MiniumDecrease.SettingChanged += OnConfigChanged;
			MaximumIncrease.SettingChanged += OnConfigChanged;
			MinimumModifier.SettingChanged += OnConfigChanged;
			MaximumModifier.SettingChanged += OnConfigChanged;
			Airhorn.SettingChanged += OnConfigChanged;
			Hive.SettingChanged += OnConfigChanged;
			Apparatus.SettingChanged += OnConfigChanged;
			Bigbolt.SettingChanged += OnConfigChanged;
			Bottles.SettingChanged += OnConfigChanged;
			Bell.SettingChanged += OnConfigChanged;
			Candy.SettingChanged += OnConfigChanged;
			Cashregister.SettingChanged += OnConfigChanged;
			Chemicaljug.SettingChanged += OnConfigChanged;
			Clownhorn.SettingChanged += OnConfigChanged;
			Coffeemug.SettingChanged += OnConfigChanged;
			Comedy.SettingChanged += OnConfigChanged;
			Cookiemold.SettingChanged += OnConfigChanged;
			DIYFlashbang.SettingChanged += OnConfigChanged;
			Doublebarrel.SettingChanged += OnConfigChanged;
			Dustpan.SettingChanged += OnConfigChanged;
			Eggbeater.SettingChanged += OnConfigChanged;
			Fancylamp.SettingChanged += OnConfigChanged;
			Flask.SettingChanged += OnConfigChanged;
			Gift.SettingChanged += OnConfigChanged;
			Goldbar.SettingChanged += OnConfigChanged;
			Goldencup.SettingChanged += OnConfigChanged;
			Hairbrush.SettingChanged += OnConfigChanged;
			Hairdryer.SettingChanged += OnConfigChanged;
			Jarofpickles.SettingChanged += OnConfigChanged;
			Largeaxle.SettingChanged += OnConfigChanged;
			Laserpointer.SettingChanged += OnConfigChanged;
			Magic7ball.SettingChanged += OnConfigChanged;
			Magnifyingglass.SettingChanged += OnConfigChanged;
			Oldphone.SettingChanged += OnConfigChanged;
			Painting.SettingChanged += OnConfigChanged;
			Perfumebottle.SettingChanged += OnConfigChanged;
			Pillbottle.SettingChanged += OnConfigChanged;
			Plasticfish.SettingChanged += OnConfigChanged;
			PlayerBody.SettingChanged += OnConfigChanged;
			Redsoda.SettingChanged += OnConfigChanged;
			Remote.SettingChanged += OnConfigChanged;
			Ring.SettingChanged += OnConfigChanged;
			Robot.SettingChanged += OnConfigChanged;
			RubberDucky.SettingChanged += OnConfigChanged;
			Steeringwheel.SettingChanged += OnConfigChanged;
			Stopsign.SettingChanged += OnConfigChanged;
			Metalsheet.SettingChanged += OnConfigChanged;
			Teakettle.SettingChanged += OnConfigChanged;
			Teeth.SettingChanged += OnConfigChanged;
			Toothpaste.SettingChanged += OnConfigChanged;
			Toycube.SettingChanged += OnConfigChanged;
			Tragedy.SettingChanged += OnConfigChanged;
			Vtypeengine.SettingChanged += OnConfigChanged;
			WhoopieCushion.SettingChanged += OnConfigChanged;
			Yieldsign.SettingChanged += OnConfigChanged;
			Market.Initialize();
			harmony.PatchAll(typeof(ModBase));
			harmony.PatchAll(typeof(PricesPatch));
			harmony.PatchAll(typeof(DayCaller));
			harmony.PatchAll(typeof(PricesUpdater));
			harmony.PatchAll(typeof(SellItemUpdater));
			harmony.PatchAll(typeof(Startpatch));
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Test Plugin is loaded!");
			Events.TerminalAwake += new TerminalEventHandler(TerminalIsAwake);
			Events.TerminalStarted += new TerminalEventHandler(TerminalIsStarted);
			Events.TerminalParsedSentence += new TerminalParseSentenceEventHandler(TextSubmitted);
			Events.TerminalBeginUsing += new TerminalEventHandler(OnBeginUsing);
			Events.TerminalExited += new TerminalEventHandler(OnTerminalExit);
			Events.TerminalTextChanged += new TerminalTextChangedEventHandler(OnTerminalTextChanged);
			string formattedMarketPrices = Market.GetFormattedMarketPrices();
			TerminalApi.AddCommand("market", formattedMarketPrices + "\n", "show", true);
			ApplyConfig();
		}

		public void ApplyConfig()
		{
			Market.MinimumDecrease = MiniumDecrease.Value;
			Market.MaximumIncrease = MaximumIncrease.Value;
			Market.MinimumModifier = MinimumModifier.Value;
			Market.MaximumModifier = MaximumModifier.Value;
			Market.ItemInfo.Airhorn = Airhorn.Value;
			Market.ItemInfo.Hive = Hive.Value;
			Market.ItemInfo.Apparatus = Apparatus.Value;
			Market.ItemInfo.Bigbolt = Bigbolt.Value;
			Market.ItemInfo.Bottles = Bottles.Value;
			Market.ItemInfo.Bell = Bell.Value;
			Market.ItemInfo.Candy = Candy.Value;
			Market.ItemInfo.Cashregister = Cashregister.Value;
			Market.ItemInfo.Chemicaljug = Chemicaljug.Value;
			Market.ItemInfo.Clownhorn = Clownhorn.Value;
			Market.ItemInfo.Coffeemug = Coffeemug.Value;
			Market.ItemInfo.Comedy = Comedy.Value;
			Market.ItemInfo.Cookiemold = Cookiemold.Value;
			Market.ItemInfo.DIYFlashbang = DIYFlashbang.Value;
			Market.ItemInfo.Doublebarrel = Doublebarrel.Value;
			Market.ItemInfo.Dustpan = Dustpan.Value;
			Market.ItemInfo.Eggbeater = Eggbeater.Value;
			Market.ItemInfo.Fancylamp = Fancylamp.Value;
			Market.ItemInfo.Flask = Flask.Value;
			Market.ItemInfo.Gift = Gift.Value;
			Market.ItemInfo.Goldbar = Goldbar.Value;
			Market.ItemInfo.Goldencup = Goldencup.Value;
			Market.ItemInfo.Hairbrush = Hairbrush.Value;
			Market.ItemInfo.Hairdryer = Hairdryer.Value;
			Market.ItemInfo.Jarofpickles = Jarofpickles.Value;
			Market.ItemInfo.Largeaxle = Largeaxle.Value;
			Market.ItemInfo.Laserpointer = Laserpointer.Value;
			Market.ItemInfo.Magic7ball = Magic7ball.Value;
			Market.ItemInfo.Magnifyingglass = Magnifyingglass.Value;
			Market.ItemInfo.Oldphone = Oldphone.Value;
			Market.ItemInfo.Painting = Painting.Value;
			Market.ItemInfo.Perfumebottle = Perfumebottle.Value;
			Market.ItemInfo.Pillbottle = Pillbottle.Value;
			Market.ItemInfo.Plasticfish = Plasticfish.Value;
			Market.ItemInfo.PlayerBody = PlayerBody.Value;
			Market.ItemInfo.Redsoda = Redsoda.Value;
			Market.ItemInfo.Remote = Remote.Value;
			Market.ItemInfo.Ring = Ring.Value;
			Market.ItemInfo.Robot = Robot.Value;
			Market.ItemInfo.RubberDucky = RubberDucky.Value;
			Market.ItemInfo.Steeringwheel = Steeringwheel.Value;
			Market.ItemInfo.Stopsign = Stopsign.Value;
			Market.ItemInfo.Metalsheet = Metalsheet.Value;
			Market.ItemInfo.Teakettle = Teakettle.Value;
			Market.ItemInfo.Teeth = Teeth.Value;
			Market.ItemInfo.Toothpaste = Toothpaste.Value;
			Market.ItemInfo.Toycube = Toycube.Value;
			Market.ItemInfo.Tragedy = Tragedy.Value;
			Market.ItemInfo.Vtypeengine = Vtypeengine.Value;
			Market.ItemInfo.WhoopieCushion = WhoopieCushion.Value;
			Market.ItemInfo.Yieldsign = Yieldsign.Value;
		}

		public static void UpdateKeywords()
		{
			string formattedMarketPrices = Market.GetFormattedMarketPrices();
			TerminalApi.UpdateKeywordCompatibleNoun("show", "market", TerminalApi.CreateTerminalNode(formattedMarketPrices + "\n", true, ""));
		}

		private void OnTerminalTextChanged(object sender, TerminalTextChangedEventArgs e)
		{
			string terminalInput = TerminalApi.GetTerminalInput();
			((BaseUnityPlugin)this).Logger.LogMessage((object)terminalInput);
			if (terminalInput.ToLower() == "marekt" || terminalInput.ToLower() == "markit" || terminalInput.ToLower() == "mraket" || terminalInput.ToLower() == "makret" || terminalInput.ToLower() == "markt")
			{
				TerminalApi.SetTerminalInput("market");
			}
		}

		private void OnTerminalExit(object sender, TerminalEventArgs e)
		{
			((BaseUnityPlugin)this).Logger.LogMessage((object)"Terminal Exited");
		}

		private void TerminalIsAwake(object sender, TerminalEventArgs e)
		{
			((BaseUnityPlugin)this).Logger.LogMessage((object)"Terminal is awake");
			UpdateKeywords();
		}

		private void TerminalIsStarted(object sender, TerminalEventArgs e)
		{
			((BaseUnityPlugin)this).Logger.LogMessage((object)"Terminal is started");
			ApplyConfig();
			UpdateKeywords();
		}

		private void TextSubmitted(object sender, TerminalParseSentenceEventArgs e)
		{
			((BaseUnityPlugin)this).Logger.LogMessage((object)$"Text submitted: {e.SubmittedText} Node Returned: {e.ReturnedNode}");
		}

		private void OnBeginUsing(object sender, TerminalEventArgs e)
		{
			((BaseUnityPlugin)this).Logger.LogMessage((object)"Player has just started using the terminal");
		}

		private void OnConfigChanged(object sender, EventArgs e)
		{
			ApplyConfig();
		}
	}
}
namespace MarketMod.Patches
{
	[HarmonyPatch(typeof(TimeOfDay), "OnDayChanged")]
	public class DayCaller
	{
		[HarmonyPostfix]
		private static void PostfixLoadShipGrabbableItems()
		{
			DayChangeTracker.DayChangedFlag = true;
			DayChangeTracker.dayCount++;
			Logger.CreateLogSource("Market.Tormad").LogInfo((object)"! NEW DAY BABY");
		}
	}
	[HarmonyPatch(typeof(GrabbableObject), "Update")]
	internal class PricesUpdater
	{
		[HarmonyPrefix]
		private static void preUpdate(GrabbableObject __instance)
		{
			if (DayChangeTracker.DayChangedFlag && Time.realtimeSinceStartup < DayChangeTracker.startTime + 3f)
			{
				__instance.SetScrapValue(1);
			}
		}
	}
	[HarmonyPatch(typeof(PlayerControllerB), "Update")]
	internal class Startpatch
	{
		[HarmonyPostfix]
		private static void preUpdate()
		{
			if (DayChangeTracker.dayCount != DayChangeTracker.oldDayCount)
			{
				DayChangeTracker.oldDayCount++;
				Market.UpdateDaily(DayChangeTracker.oldDayCount);
				Logger.CreateLogSource("Market.Tormad").LogInfo((object)"!Updated prices");
				ModBase.UpdateKeywords();
				MarketSaveManager.SaveDays();
				DayChangeTracker.DayChangedFlag = true;
				DayChangeTracker.startTime = Time.realtimeSinceStartup;
			}
		}
	}
	[HarmonyPatch(typeof(DepositItemsDesk), "SellItemsOnServer")]
	internal class SellItemUpdater
	{
		[HarmonyPostfix]
		private static void postSellItemsOnServer(DepositItemsDesk __instance)
		{
			if (DayChangeTracker.DayChangedFlag)
			{
				for (int i = 0; i < __instance.itemsOnCounter.Count; i++)
				{
					Market.UpdateSellItems(__instance.itemsOnCounter[i].itemProperties.itemName);
					Logger.CreateLogSource("Market.Tormad").LogInfo((object)"!!!!!!!!!!!!!!!!!!!!!!!!__ SOLD ITEM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
				}
			}
		}
	}
	[HarmonyPatch(typeof(GrabbableObject), "SetScrapValue")]
	internal class PricesPatch
	{
		[HarmonyPrefix]
		private static void prefixSetScrapValue(GrabbableObject __instance, ref int setValueTo)
		{
			if (!((Object)(object)__instance.itemProperties != (Object)null))
			{
				return;
			}
			int currentMarketValueViaString = Market.GetCurrentMarketValueViaString(__instance.itemProperties.itemName);
			if (currentMarketValueViaString != setValueTo)
			{
				if (currentMarketValueViaString != 0)
				{
					setValueTo = currentMarketValueViaString;
				}
			}
			else
			{
				DayChangeTracker.DayChangedFlag = false;
			}
		}
	}
}