Decompiled source of ExampleMod v3.3.0

API_ExampleMod.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ATS_API;
using ATS_API.Ascension;
using ATS_API.Biomes;
using ATS_API.Buildings;
using ATS_API.Difficulties;
using ATS_API.Effects;
using ATS_API.Goods;
using ATS_API.Helpers;
using ATS_API.Localization;
using ATS_API.MetaRewards;
using ATS_API.NaturalResource;
using ATS_API.Needs;
using ATS_API.Races;
using ATS_API.Recipes.Builders;
using ATS_API.SaveLoading;
using BepInEx;
using BepInEx.Logging;
using Eremite.Buildings;
using Eremite.Model;
using Eremite.Model.Effects;
using Eremite.Model.Effects.Hooked;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: AssemblyCompany("API_ExampleMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Mod used as an example of how to use all of it methods")]
[assembly: AssemblyFileVersion("3.3.0.0")]
[assembly: AssemblyInformationalVersion("3.3.0+1d25fbeb702df8b4703729d929a9ad2e59c43322")]
[assembly: AssemblyProduct("API_ExampleMod")]
[assembly: AssemblyTitle("API_ExampleMod")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("3.3.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ExampleMod
{
	[HarmonyPatch]
	[BepInPlugin("API_ExampleMod", "API_ExampleMod", "3.3.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		private CustomRaceNeed friesWorshiperNeed;

		private HouseBuildingBuilder axolotlHouse;

		public HookedEffectBuilder ModdingToolsBuilder;

		public HookedEffectBuilder DiamondHunterBuilder;

		public CompositeEffectBuilder AggregateProductivityBuilder;

		public static string PluginDirectory;

		public static Plugin Instance;

		public static ManualLogSource Log;

		private Harmony harmony;

		public static AssetBundle ExampleModAssetBundle;

		public static AssetBundle TinyHearthAssetBundle;

		private Hotkey showPopupHotkey;

		private GoodsBuilder diamonds;

		private GoodsBuilder lpg;

		private GoodsBuilder kiwiFruit;

		private GoodsBuilder burger;

		private GoodsBuilder fries;

		private GoodsBuilder cola;

		private void CreateBiomes()
		{
			CreateExampleBiome();
		}

		private void CreateExampleBiome()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Expected O, but got Unknown
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Expected O, but got Unknown
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0275: Expected O, but got Unknown
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Expected O, but got Unknown
			BiomeBuilder val = new BiomeBuilder("API_ExampleMod", "Sand Biome");
			val.SetDisplayName("Dry Lands", (SystemLanguage)10);
			val.SetDescription("New land the Queen has discovered and wishes to claim as part of her new kingdom. Newcomers are rare, storms are rare but harsh when hit.", (SystemLanguage)10);
			val.SetTownName("Desert Town", (SystemLanguage)10);
			val.SetTownDescription("The Queen's new town in the Dry Lands.", (SystemLanguage)10);
			val.SetIcon("desertTownIcon.png");
			val.SetSeasonDuration((SeasonTypes)4, 30);
			val.SetSeasonDuration((SeasonTypes)3, 240);
			val.SetSeasonDuration((SeasonTypes)2, 120);
			val.SetDeclinedSeasonalRewardsReward((GoodsTypes)65, 1);
			val.SetNewcomerInterval(300);
			val.SetNewcomerAmountOfGoods(1, 4);
			val.AddNewcomerRace((RaceTypes)1, 50f);
			val.AddNewcomerRace((RaceTypes)4, 50f);
			val.AddNewcomerRace((RaceTypes)2, 50f);
			val.AddNewcomerRace((RaceTypes)3, 25f);
			val.AddNewcomerRace((RaceTypes)5, 100f);
			val.AddNewcomerRace((RaceTypes)6, 50f);
			val.SetTraderForceArrivalCost(1f, 2.5f);
			val.SetTraderForceArrivalReputationPrompt("Send for trader to arrive", (SystemLanguage)10);
			val.SetTraderVillagerKilledByTraderText("dehydrated in the desert", (SystemLanguage)10);
			val.SetWorldMapTexture("dessertWorldMapTerrain.png");
			val.AddEffect(((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).EffectType);
			MaskedTerrain val2 = val.CreateTerrain<MaskedTerrain>();
			val2.SetWaterTexture("desertWorldWater.png");
			val2.SetTerrainBaseTexture("terrainBase.png", 100, 100);
			val2.SetTerrainOverlayTexture("terrainOverlay.png", 100, 100);
			val2.SetTerrainCliffTexture("terrainCliff.png", 100, 100);
			val2.SetTerrainBlendTexture("terrainBlend.png");
			val.SetSoilText((SoilGrade)1);
			val.AddNaturalResource((NaturalResourceTypes)6, 0.2f, 0.3f, 0f, 10);
			NaturalResourceBuilder val3 = val.NewNaturalResource("DryTree", 0.2f, 0.3f, 0f, 10);
			val3.SetDisplayName("Dry Tree", (SystemLanguage)10);
			val3.SetDescription("A tree that grows in the Dry Lands.", (SystemLanguage)10);
			val3.SetCharges(1);
			val3.SetProduction((GoodsTypes)43, 1);
			val3.AddExtraProduction((GoodsTypes)23, 1, 0.25f);
			val3.AddExtraProduction((GoodsTypes)5, 1, 0.01f);
			NaturalResourcePrefabBuilder val4 = new NaturalResourcePrefabBuilder("API_ExampleMod", "DryTree1");
			val4.SetPrefabTemplate((NaturalResourcePrefabs)15);
			val4.SetTexture("DryTreeTexture1.png");
			val3.AddPrefab(val4);
			NaturalResourcePrefabBuilder val5 = new NaturalResourcePrefabBuilder("API_ExampleMod", "DryTree2");
			val5.SetPrefabTemplate((NaturalResourcePrefabs)15);
			val5.SetTexture("DryTreeTexture2.png");
			val3.AddPrefab(val5);
			NaturalResourcePrefabBuilder val6 = new NaturalResourcePrefabBuilder("API_ExampleMod", "DryTree3");
			val6.SetPrefabTemplate((NaturalResourcePrefabs)16);
			val6.SetTexture("DryTreeTexture1.png");
			val3.AddPrefab(val6);
			NaturalResourcePrefabBuilder val7 = new NaturalResourcePrefabBuilder("API_ExampleMod", "DryTree4");
			val7.SetPrefabTemplate((NaturalResourcePrefabs)16);
			val7.SetTexture("DryTreeTexture2.png");
			val3.AddPrefab(val7);
		}

		private void CreateBuildings()
		{
			CreateWorkshop();
			CreateSkyScraperHouse();
			CreateAxolotlHouse();
			CreateServiceBuilding();
		}

		private void CreateSkyScraperHouse()
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			HouseBuildingBuilder val = new HouseBuildingBuilder("API_ExampleMod", "SkyScraper", "TestBuildingIcon.png", 9);
			((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)val).SetDefaultVisualIcon("TestBuildingDisplayIcon.png");
			((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)val).SetDisplayName("SkyScraper", (SystemLanguage)10);
			((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)val).SetDescription("A tall building to house many people that need to be close to their work. Has to be built near a Hearth. Can house 9 residents.", (SystemLanguage)10);
			val.SetAllHousingRaces();
			val.AddServedNeeds((NeedTypes[])(object)new NeedTypes[1] { (NeedTypes)1 });
			((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)val).AddRequiredGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((8, (GoodsTypes)33)) });
		}

		private void CreateAxolotlHouse()
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			axolotlHouse = new HouseBuildingBuilder("API_ExampleMod", "AxolotlHouse", "TestBuildingIcon.png", 2);
			((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)axolotlHouse).SetDefaultVisualIcon("AxolotlHouseDisplayIcon.png");
			((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)axolotlHouse).SetDisplayName("Axolotl House", (SystemLanguage)10);
			((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)axolotlHouse).SetDescription("Building specifically made for Axolotls. Has to be built near a Hearth. Can house 2 residents.", (SystemLanguage)10);
			axolotlHouse.AddServedNeeds((NeedTypes[])(object)new NeedTypes[1] { (NeedTypes)1 });
			((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)axolotlHouse).AddRequiredGoods((NameToAmount[])(object)new NameToAmount[2]
			{
				NameToAmount.op_Implicit((2, (GoodsTypes)30)),
				NameToAmount.op_Implicit((2, (GoodsTypes)42))
			});
		}

		private void CreateWorkshop()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Expected O, but got Unknown
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Expected O, but got Unknown
			WorkshopBuildingBuilder val = new WorkshopBuildingBuilder("API_ExampleMod", "BurgerJoint", "BurgerJoint.png");
			((BuildingBuilder<WorkshopModel, NewWorkshopBuildingData>)(object)val).SetCustomModel(ExampleModAssetBundle.LoadAsset<GameObject>("BorgorKing"));
			((BuildingBuilder<WorkshopModel, NewWorkshopBuildingData>)(object)val).SetDisplayName("Borgor King", (SystemLanguage)10);
			((BuildingBuilder<WorkshopModel, NewWorkshopBuildingData>)(object)val).SetDescriptionKey("Building_GenericWorkshop_NoWater_Desc");
			((BuildingBuilder<WorkshopModel, NewWorkshopBuildingData>)(object)val).SetMoveCost(1, (GoodsTypes)33);
			val.SetProfession((ProfessionTypes)19);
			((BuildingBuilder<WorkshopModel, NewWorkshopBuildingData>)(object)val).SetCategory((BuildingCategoriesTypes)8);
			((BuildingBuilder<WorkshopModel, NewWorkshopBuildingData>)(object)val).AddTags((BuildingTagTypes[])(object)new BuildingTagTypes[1] { (BuildingTagTypes)2 });
			((BuildingBuilder<WorkshopModel, NewWorkshopBuildingData>)(object)val).AddRequiredGoods((NameToAmount[])(object)new NameToAmount[2]
			{
				NameToAmount.op_Implicit((10, (GoodsTypes)33)),
				NameToAmount.op_Implicit((3, (GoodsTypes)31))
			});
			val.AddWorkPlaceWithAllRaces();
			val.AddWorkPlaceWithAllRaces();
			val.AddWorkPlaceWithAllRaces();
			val.AddWorkPlaceWithAllRaces();
			((BuildingBuilder<WorkshopModel, NewWorkshopBuildingData>)(object)val).SetScaffoldingData(new BuildingConstructionAnimationData
			{
				unconstructedPosition = new Vector3(0f, -3f, 0f)
			});
			WorkshopRecipeBuilder val2 = val.CreateRecipe(burger.Name, 2, 126, (Grade)2);
			((RecipeBuilder<WorkshopRecipeModel>)(object)val2).AddTags((TagTypes[])(object)new TagTypes[1] { (TagTypes)34 });
			val2.AddRequiredIngredients((NameToAmount[])(object)new NameToAmount[3]
			{
				NameToAmount.op_Implicit((2, (GoodsTypes)12)),
				NameToAmount.op_Implicit((1, (GoodsTypes)17)),
				NameToAmount.op_Implicit((4, (GoodsTypes)23))
			});
			val2.AddRequiredIngredients((NameToAmount[])(object)new NameToAmount[3]
			{
				NameToAmount.op_Implicit((1, (GoodsTypes)27)),
				NameToAmount.op_Implicit((1, (GoodsTypes)25)),
				NameToAmount.op_Implicit((2, (GoodsTypes)19))
			});
			val2.AddRequiredIngredients((NameToAmount[])(object)new NameToAmount[3]
			{
				NameToAmount.op_Implicit((5, (GoodsTypes)70)),
				NameToAmount.op_Implicit((5, (GoodsTypes)71)),
				NameToAmount.op_Implicit((5, (GoodsTypes)72))
			});
			WorkshopRecipeBuilder val3 = val.CreateRecipe(fries.Name, 10, 60, (Grade)2);
			((RecipeBuilder<WorkshopRecipeModel>)(object)val3).AddTags((TagTypes[])(object)new TagTypes[1] { (TagTypes)34 });
			val3.AddRequiredIngredients((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((1, (GoodsTypes)58)) });
			WorkshopRecipeBuilder val4 = val.CreateRecipe(cola.Name, 1, 30, (Grade)2);
			((RecipeBuilder<WorkshopRecipeModel>)(object)val4).AddTags((TagTypes[])(object)new TagTypes[1] { (TagTypes)34 });
			val4.AddRequiredIngredients((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((1, (GoodsTypes)71)) });
			val4.AddRequiredIngredients((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((1, (GoodsTypes)72)) });
			val.AddRecipe((WorkshopsRecipeTypes)71);
		}

		private void CreateServiceBuilding()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Expected O, but got Unknown
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			InstitutionBuildingBuilder val = new InstitutionBuildingBuilder("API_ExampleMod", "PlayPen", "TestBuildingIcon.png");
			((BuildingBuilder<InstitutionModel, NewInstitutionBuildingData>)(object)val).SetDefaultVisualIcon("TestBuildingDisplayIcon.png");
			((BuildingBuilder<InstitutionModel, NewInstitutionBuildingData>)(object)val).SetDisplayName("Play Pen", (SystemLanguage)10);
			((BuildingBuilder<InstitutionModel, NewInstitutionBuildingData>)(object)val).SetMoveCost(5, (GoodsTypes)43);
			val.SetProfession((ProfessionTypes)5);
			((BuildingBuilder<InstitutionModel, NewInstitutionBuildingData>)(object)val).AddTags((BuildingTagTypes[])(object)new BuildingTagTypes[2]
			{
				(BuildingTagTypes)14,
				(BuildingTagTypes)5
			});
			((BuildingBuilder<InstitutionModel, NewInstitutionBuildingData>)(object)val).AddRequiredGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((10, (GoodsTypes)33)) });
			((BuildingBuilder<InstitutionModel, NewInstitutionBuildingData>)(object)val).AddRequiredGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((3, (GoodsTypes)30)) });
			((BuildingBuilder<InstitutionModel, NewInstitutionBuildingData>)(object)val).AddRequiredGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((10, (GoodsTypes)29)) });
			val.AddWorkPlaceWithAllRaces();
			val.AddWorkPlaceWithAllRaces();
			val.AddWorkPlaceWithAllRaces();
			val.AddWorkPlaceWithAllRaces();
			val.AddActiveEffect((EffectTypes)183, 1);
			val.AddRecipe((InstitutionRecipeTypes)9);
			string text = "It requires <sprite name=\"" + ((Object)fries.NewGood.goodModel).name + "\"> Fries. Satisfying this need increases the chance of producing double yields.";
			friesWorshiperNeed = RaceNeedFactory.ServiceNeed("API_ExampleMod", fries.NewGood.id, "TestBuildingIcon.png", "Fry Worship", text, 8);
			InstitutionRecipeBuilder val2 = val.CreateRecipe(friesWorshiperNeed.ID);
			val2.AddRequiredIngredients(NameToAmount.op_Implicit((2, fries.NewGood.id)));
		}

		private void CreateCornerstones()
		{
			CreateModdingToolsCornerstone();
			CreateGoodsRawProductionCornerstone();
			CreateGoodEveryYearProductionCornerstone();
			CreateAggregateProductivityBuilder();
		}

		private void CreateModdingToolsCornerstone()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0150: Expected O, but got Unknown
			ModdingToolsBuilder = new HookedEffectBuilder("API_ExampleMod", "Modding Tools", "ModdingTools.png");
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetPositive(true);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetRarity((EffectRarity)3);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetObtainedAsCornerstone(100);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetAvailableInAllBiomesAndSeasons();
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetDrawLimit(1);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetLabel("API", (SystemLanguage)10);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetDisplayName("Modding Tools", (SystemLanguage)10);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetDescription("Modders have assembled new tools that bring in new talent. Every {0} new Villagers gain +{1} Global Resolve.", (SystemLanguage)10);
			ModdingToolsBuilder.SetDescriptionArgs(new(SourceType, TextArgType, int)[2]
			{
				((SourceType)0, (TextArgType)0, 0),
				((SourceType)2, (TextArgType)0, 0)
			});
			ModdingToolsBuilder.SetPreviewDescription("+{0} Global Resolve", (SystemLanguage)10);
			ModdingToolsBuilder.SetPreviewDescriptionArgs(new(HookedStateTextSource, int)[1] { ((HookedStateTextSource)80, 0) });
			ModdingToolsBuilder.AddHook((HookLogic)(object)HookFactory.AfterXNewVillagers(8, true));
			ModdingToolsBuilder.AddHookedEffect((EffectModel)(object)EffectFactory.AddHookedEffect_IncreaseResolve((IEffectBuilder)(object)ModdingToolsBuilder, 1, (ResolveEffectType)3));
			GlobalResolveEffectEffectModel val = (GlobalResolveEffectEffectModel)((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).EffectModel.hookedEffects[((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).EffectModel.hookedEffects.Length - 1];
			EffectManager.AddPreviouslyNamedEffect("API_ExampleMod_UniteResolve_resolve_effect_model", ((Object)val.effect).name);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetDisplayName("模组工具", (SystemLanguage)40);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetDescription("模组制作者已经组装了新的工具,吸引了新的人才。每到来 {0} 个新村民会获得 +{1} 满意度。", (SystemLanguage)40);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetDisplayName("Outils de modding", (SystemLanguage)14);
			((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).SetDescription("Les moddeurs ont assemblé de nouveaux outils qui attirent de nouveaux talents. Chaque {0} nouveaux villageois gagnent +{1} de résolution globale.", (SystemLanguage)14);
		}

		private void CreateGoodsRawProductionCornerstone()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			GoodsProductionEffectBuilder val = new GoodsProductionEffectBuilder("API_ExampleMod", "Omega Sewing Technique");
			((EffectBuilder<GoodsRawProductionEffectModel>)(object)val).SetLabel("API", (SystemLanguage)10);
			((EffectBuilder<GoodsRawProductionEffectModel>)(object)val).SetPositive(true);
			((EffectBuilder<GoodsRawProductionEffectModel>)(object)val).SetRarity((EffectRarity)5);
			((EffectBuilder<GoodsRawProductionEffectModel>)(object)val).SetObtainedAsCornerstone(100);
			((EffectBuilder<GoodsRawProductionEffectModel>)(object)val).SetAvailableInAllBiomesAndSeasons();
			((EffectBuilder<GoodsRawProductionEffectModel>)(object)val).SetDisplayName("Omega Sewing Technique", (SystemLanguage)10);
			val.SetGoodsPerYield(10, (GoodsTypes)49);
			((EffectBuilder<GoodsRawProductionEffectModel>)(object)val).SetTradingBuyValue(300);
		}

		private void CreateGoodEveryYearProductionCornerstone()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Expected O, but got Unknown
			DiamondHunterBuilder = new HookedEffectBuilder("API_ExampleMod", "diamondHunter", "DiamondHunter.png");
			((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).SetPositive(true);
			((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).SetRarity((EffectRarity)3);
			((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).SetObtainedAsCornerstone(100);
			((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).SetAvailableInAllBiomesAndSeasons();
			((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).SetLabel("API", (SystemLanguage)10);
			((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).SetDisplayName("Diamond Hunter", (SystemLanguage)10);
			((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).SetDescription("You hire an obsessed miner that has a serious problem for hunting for diamonds. At the beginning of every {0} season gain +{1} {2}s", (SystemLanguage)10);
			DiamondHunterBuilder.SetDescriptionArgs(new(SourceType, TextArgType, int)[3]
			{
				((SourceType)0, (TextArgType)0, 0),
				((SourceType)2, (TextArgType)0, 0),
				((SourceType)2, (TextArgType)2, 0)
			});
			DiamondHunterBuilder.SetNestedAmount((SourceType)2, (TextArgType)0, 0);
			DiamondHunterBuilder.AddHook((HookLogic)(object)HookFactory.OnNewSeason((SeasonTypes)2, 1, false));
			GoodsEffectBuilder val = new GoodsEffectBuilder("API_ExampleMod", "Diamonds");
			((EffectBuilder<GoodsEffectModel>)(object)val).SetDisplayName("Diamonds", (SystemLanguage)10);
			((EffectBuilder<GoodsEffectModel>)(object)val).SetDescription("A shiny gem that is used for crafting and trading.", (SystemLanguage)10);
			val.SetGood(1, diamonds.Name);
			DiamondHunterBuilder.AddHookedEffect((EffectModel)(object)((EffectBuilder<GoodsEffectModel>)(object)val).EffectModel);
		}

		private void CreateAggregateProductivityBuilder()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			AggregateProductivityBuilder = new CompositeEffectBuilder("API_ExampleMod", "AggregateProductivity", "AggregateProductivity.png");
			((EffectBuilder<CompositeEffectModel>)(object)AggregateProductivityBuilder).SetPositive(true);
			((EffectBuilder<CompositeEffectModel>)(object)AggregateProductivityBuilder).SetRarity((EffectRarity)5);
			((EffectBuilder<CompositeEffectModel>)(object)AggregateProductivityBuilder).SetObtainedAsCornerstone(100);
			((EffectBuilder<CompositeEffectModel>)(object)AggregateProductivityBuilder).SetAvailableInAllBiomesAndSeasons();
			((EffectBuilder<CompositeEffectModel>)(object)AggregateProductivityBuilder).SetDrawLimit(1);
			((EffectBuilder<CompositeEffectModel>)(object)AggregateProductivityBuilder).SetLabel("API", (SystemLanguage)10);
			AggregateProductivityBuilder.SetAnyNestedToFit(true);
			AggregateProductivityBuilder.SetShowEffectAsPerks(false);
			AggregateProductivityBuilder.AddEffects((IEnumerable<EffectModel>)new <>z__ReadOnlyArray<EffectModel>((EffectModel[])(object)new EffectModel[2]
			{
				(EffectModel)((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).EffectModel,
				(EffectModel)((EffectBuilder<HookedEffectModel>)(object)DiamondHunterBuilder).EffectModel
			}));
			((EffectBuilder<CompositeEffectModel>)(object)AggregateProductivityBuilder).SetDisplayName("Aggregate Productivity", (SystemLanguage)10);
			((EffectBuilder<CompositeEffectModel>)(object)AggregateProductivityBuilder).SetDescription("Modders composite everything together. {0} And you will obtain {1} mystery good bonus sometimes.", (SystemLanguage)10);
			AggregateProductivityBuilder.SetDescriptionArgs(new(TextArgType, int)[2]
			{
				((TextArgType)1, 0),
				((TextArgType)0, 1)
			});
			AggregateProductivityBuilder.SetNestedPreviewIndex(0);
		}

		private void Awake()
		{
			Instance = this;
			Log = ((BaseUnityPlugin)this).Logger;
			harmony = Harmony.CreateAndPatchAll(typeof(Plugin).Assembly, "API_ExampleMod");
			PluginDirectory = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location);
			ModdedSaveManager.ListenForLoadedSaveData("API_ExampleMod", (Action<ModSaveData, SaveFileState>)PostLoadedSaveData);
			ModdedSaveManager.ListenForResetCycleSaveData("API_ExampleMod", (Action<ModSaveData>)OnResetCycleData);
			ModdedSaveManager.ListenForResetSettlementSaveData("API_ExampleMod", (Action<ModSaveData>)OnResetSettlementData);
			ModdedSaveManager.ListenForPreSaveSaveData("API_ExampleMod", (Action<ModSaveData>)OnPreSaveData);
			EventBus.OnStartGame.AddListener((Action<bool>)OnStartSettlement);
			EventBus.OnCycleEnded.AddListener((Action)OnCycleEnded);
			CreateGoods();
			CreateCornerstones();
			CreateTrader();
			CreateDifficulty();
			if (AssetBundleHelper.TryLoadAssetBundleFromFile("ats_examplemod", ref ExampleModAssetBundle))
			{
				CreateBuildings();
				CreateRaces();
			}
			CreateEmbarkRewards();
			if (AssetBundleHelper.TryLoadAssetBundleFromFile("tinyhearth", ref TinyHearthAssetBundle))
			{
				CreateDecorations();
			}
			CreateBiomes();
			Log.LogInfo((object)"API_ExampleMod v3.3.0 Plugin loaded");
		}

		private void Start()
		{
			LocaText val = LocalizationManager.ToLocaText("API_ExampleMod", "showExamplePopup", "Header", "Hello!", (SystemLanguage)10);
			LocaText val2 = LocalizationManager.ToLocaText("API_ExampleMod", "showExamplePopup", "Description", "This is an example popup", (SystemLanguage)10);
			LocaText val3 = LocalizationManager.ToLocaText("API_ExampleMod", "showExamplePopup", "DisableButton", "Disable Hotkey", (SystemLanguage)10);
		}

		private void PostLoadedSaveData(ModSaveData saveData, SaveFileState saveState)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0003: Invalid comparison between Unknown and I4
			if ((int)saveState == 0)
			{
				Log.LogInfo((object)"New save file created for API_ExampleMod");
				saveData.General.SetValue("TotalLoads", (object)0);
				saveData.CurrentCycle.SetValue("total_SL_town_count", (object)0);
				saveData.CurrentSettlement.SetValue("HasSL", (object)false);
			}
			else
			{
				int num = saveData.General.GetValueAsObject<int>("TotalLoads", 0) + 1;
				saveData.General.SetValue("TotalLoads", (object)num);
				Log.LogInfo((object)string.Format("Loaded save file for {0} {1} times", "API_ExampleMod", num));
			}
		}

		private void OnResetSettlementData(ModSaveData data)
		{
			data.CurrentSettlement.SetValue("HasSL", (object)false);
			Log.LogInfo((object)"start brand new SL detection");
		}

		private void OnResetCycleData(ModSaveData data)
		{
			data.CurrentCycle.SetValue("total_SL_town_count", (object)0);
			Log.LogInfo((object)"Reset SL detection (end of the cycle)");
		}

		private void OnPreSaveData(ModSaveData data)
		{
			Log.LogInfo((object)"Callback before saving the data!");
		}

		private void OnCycleEnded()
		{
			Log.LogInfo((object)"Reset Cycle!");
		}

		private void OnStartSettlement(bool isNew)
		{
			Log.LogInfo((object)$"This is new game? -> {isNew}");
			ModSaveData saveData = ModdedSaveManager.GetSaveData("API_ExampleMod");
			if (!isNew)
			{
				bool valueAsObject = saveData.CurrentSettlement.GetValueAsObject<bool>("HasSL", false);
				if (!valueAsObject)
				{
					Log.LogInfo((object)$"Detect S/L for the last settlement: {valueAsObject}");
					int num = saveData.CurrentCycle.GetValueAsObject<int>("total_SL_town_count", 0) + 1;
					saveData.CurrentCycle.SetValue("total_SL_town_count", (object)num);
				}
				saveData.CurrentSettlement.SetValue("HasSL", (object)true);
				Log.LogInfo((object)"SL detected!");
				ModdedSaveManager.SaveModdedData("API_ExampleMod");
			}
		}

		private void CreateDecorations()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Expected O, but got Unknown
			DecorationBuildingBuilder val = new DecorationBuildingBuilder("API_ExampleMod", "TinyHearth", "TinyHearth.png", (DecorationTierTypes)1);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val).SetDisplayName("Tiny Hearth", (SystemLanguage)10);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val).SetLabel("Decorations", (SystemLanguage)10);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val).AddRequiredGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((9, (GoodsTypes)33)) });
			val.SetDecorationScore(4);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val).SetCustomModel(TinyHearthAssetBundle.LoadAsset<GameObject>("TinyHearth"));
			DecorationBuildingBuilder val2 = new DecorationBuildingBuilder("API_ExampleMod", "HumanMaleDead", "HumanMaleDead.png", (DecorationTierTypes)3);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val2).SetDisplayName("Dead Human Male", (SystemLanguage)10);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val2).SetLabel("Decorations", (SystemLanguage)10);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val2).AddRequiredGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((5, (GoodsTypes)24)) });
			val2.SetDecorationScore(1);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val2).SetFootPrint(1, 1, (FieldType)50);
			((BuildingBuilder<DecorationModel, NewDecorationBuildingData>)(object)val2).SetCustomModel(TinyHearthAssetBundle.LoadAsset<GameObject>("HumanMaleDead"));
		}

		private void CreateDifficulty()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			DifficultyBuilder val = new DifficultyBuilder("API_ExampleMod", "Faster Corruption");
			val.SetPrestigeLevel(21, true);
			val.CopyModifiersFromPreviousDifficulties(true);
			NewAscensionModifierModel val2 = val.AddModifier((EffectTypes)1475, true, false, true);
			val2.SetShortDescription("Corruption in the Ancient Hearth grows 50% quicker.", (SystemLanguage)10);
		}

		private void CreateEmbarkRewards()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Expected O, but got Unknown
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Expected O, but got Unknown
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			EmbarkGoodMetaRewardBuilder val = new EmbarkGoodMetaRewardBuilder("API_ExampleMod", "Ancient Tablet Embark Reward");
			val.SetGood((GoodsTypes)65, 5);
			val.SetCostRange(3, 6);
			EmbarkEffectMetaRewardBuilder val2 = new EmbarkEffectMetaRewardBuilder("API_ExampleMod", "3 ale per minute Embark Reward");
			val2.SetEffect((EffectTypes)1112);
			val2.SetCostRange(3, 5);
			EmbarkGoodMetaRewardBuilder val3 = new EmbarkGoodMetaRewardBuilder("API_ExampleMod", "LPG Embark Reward");
			val3.SetGood(lpg.NewGood.id, 20);
			val3.SetCostRange(4, 5);
			EmbarkEffectMetaRewardBuilder val4 = new EmbarkEffectMetaRewardBuilder("API_ExampleMod", "Modding Tools Embark Reward");
			val4.SetEffect(((EffectBuilder<HookedEffectModel>)(object)ModdingToolsBuilder).EffectType);
			val4.SetCostRange(6, 9);
		}

		private void CreateGoods()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Expected O, but got Unknown
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Expected O, but got Unknown
			//IL_027b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0285: Expected O, but got Unknown
			//IL_030b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0315: Expected O, but got Unknown
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0394: Expected O, but got Unknown
			diamonds = new GoodsBuilder("API_ExampleMod", "Diamonds", "Diamonds.png");
			diamonds.SetDisplayName("Diamonds", (SystemLanguage)10);
			diamonds.SetDisplayName("钻石", (SystemLanguage)6);
			diamonds.SetDescription("Shiny and worth a lot of money. but not strong enough to be used as Armor.", (SystemLanguage)10);
			diamonds.SetDescription("闪闪发亮,值很多钱。但强度不足以用作盔甲.", (SystemLanguage)6);
			diamonds.SetCategory((GoodsCategoriesTypes)7);
			diamonds.SetTraderSellValue(40f);
			diamonds.CanBeSoldToPlayer(3, 35f, 100);
			diamonds.CanBeSoldToAllTraders();
			diamonds.AddRelicKeepRewardChance(10, 4);
			diamonds.AddRelicKeepRewardChance(5, 2);
			lpg = new GoodsBuilder("API_ExampleMod", "LPG", "LPG.png");
			lpg.SetDisplayName("LPG", (SystemLanguage)10);
			lpg.SetDisplayName("液化石油ガス", (SystemLanguage)22);
			lpg.SetDescription("A clean and efficient fuel. \n\n <b>Obtained in:</b> {0}", (SystemLanguage)10);
			lpg.SetDescription("クリーンで効率的な燃料。\n\n <b>入手場所:</b> {0}", (SystemLanguage)22);
			lpg.SetShortDescription("A clean and efficient fuel.", (SystemLanguage)10);
			lpg.SetShortDescription("クリーンで効率的な燃料。", (SystemLanguage)22);
			lpg.SetCategory((GoodsCategoriesTypes)5);
			lpg.SetTraderSellValue(17f);
			lpg.CanBeSoldToPlayer(10, 29f, 100);
			lpg.CanBeSoldToAllTraders();
			lpg.SetFuel(200f);
			kiwiFruit = new GoodsBuilder("API_ExampleMod", "Kiwi Fruit", "KiwiFruit.png");
			kiwiFruit.SetDisplayName("Kiwi Fruit", (SystemLanguage)10);
			kiwiFruit.SetDisplayName("Киви", (SystemLanguage)30);
			kiwiFruit.SetDescriptionKey("Good_GenericRawFood_Desc");
			kiwiFruit.SetShortDescriptionKey("Good_GenericRawFood_Desc_Short");
			kiwiFruit.SetCategory((GoodsCategoriesTypes)4);
			kiwiFruit.SetTraderSellValue(2.5f);
			kiwiFruit.CanBeSoldToPlayer(30, 5f, 100);
			kiwiFruit.CanBeSoldToAllTraders();
			kiwiFruit.AddRelicKeepRewardChance(10, 4);
			kiwiFruit.AddRelicKeepRewardChance(5, 2);
			kiwiFruit.SetEatable(1f);
			burger = new GoodsBuilder("API_ExampleMod", "Borgor", "Burger.png");
			burger.SetDisplayName("Borgor", (SystemLanguage)10);
			burger.SetDescription("Juicy and delicious. Liked by: {2}. Villagers with a satisfied need for Borgor have an increased chance of producing double yields.\n\n<b>Produced in:</b> {0}", (SystemLanguage)10);
			burger.SetCategory((GoodsCategoriesTypes)4);
			burger.SetTraderSellValue(2.5f);
			burger.CanBeSoldToPlayer(30, 5f, 100);
			burger.CanBeSoldToAllTraders();
			burger.SetEatable(3f);
			fries = new GoodsBuilder("API_ExampleMod", "Fries", "Fries.png");
			fries.SetDisplayName("Fries", (SystemLanguage)10);
			fries.SetDescription("Hot and Crispy. Used for Fry Worship at: {1}, by {2}. Villagers with a satisfied need for Fry Worship have a higher chance of producing double yields.\n\n<b>Produced in:</b> {0}", (SystemLanguage)10);
			fries.SetCategory((GoodsCategoriesTypes)2);
			fries.SetTraderSellValue(0.5f);
			fries.CanBeSoldToPlayer(100, 1f, 100);
			fries.CanBeSoldToAllTraders();
			cola = new GoodsBuilder("API_ExampleMod", "Cola", "Cola.png");
			cola.SetDisplayName("Cola", (SystemLanguage)10);
			cola.SetDescription("Refreshing and bubbly. Liked by: {2}. \n\n<b>Produced in:</b> {0}", (SystemLanguage)10);
			cola.SetCategory((GoodsCategoriesTypes)4);
			cola.SetTraderSellValue(0.5f);
			cola.CanBeSoldToPlayer(100, 1f, 100);
			cola.CanBeSoldToAllTraders();
			cola.SetEatable(2f);
		}

		private void CreateRaces()
		{
			CreateAxolotl();
		}

		private void CreateAxolotl()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_015a: Unknown result type (might be due to invalid IL or missing references)
			RaceBuilder val = new RaceBuilder("API_ExampleMod", "Axolotl");
			val.SetDisplayName("Axolotl", (SystemLanguage)10);
			val.SetPluralDisplayName("Axolotls", (SystemLanguage)10);
			val.SetDescription("Axolotls are a type of salamander that fully metamorphosed into land-dwelling creatures.", (SystemLanguage)10);
			val.SetIcon("Axolotl.png");
			val.SetRoundIcon("AxolotlRound.png");
			val.SetWideIcon("AxolotlWide.png");
			val.AddCharacteristic((BuildingTagTypes)14, (VillagerPerkTypes)61);
			val.AddCharacteristic((BuildingTagTypes)3, (VillagerPerkTypes)36);
			val.AddGlobalCharacteristic(((GenericBuildingData<HouseModel>)(object)((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)axolotlHouse).NewData).Tag, (EffectTypes)1304);
			CustomRaceNeed val2 = RaceNeedFactory.HousingNeed("API_ExampleMod", ((GenericBuildingData<HouseModel>)(object)((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)axolotlHouse).NewData).ID, "Axolotl Housing", "The axolotl is lentic, meaning it inhabits still-water lakes. Axolotl Houses are required to fulfill this need.", ((BuildingBuilder<HouseModel, NewHouseBuildingData>)(object)axolotlHouse).Model.icon, 3, (SystemLanguage)10);
			val.AddNeed((NeedTypes)1);
			val.AddNeed(val2.ID);
			CustomRaceNeed val3 = RaceNeedFactory.ComplexFoodNeed("API_ExampleMod", burger.NewGood.id, 7);
			val.AddNeed(val3.ID);
			val.AddNeed((NeedTypes)21);
			val.AddNeed((NeedTypes)22);
			val.AddNeed((NeedTypes)13);
			val.AddNeed(friesWorshiperNeed.ID);
			val.AddNeed((NeedTypes)15);
			axolotlHouse.AddHousingRace(val.NewRaceData.ID);
			axolotlHouse.AddServedNeed(val2.ID);
		}

		private void CreateTrader()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			TraderBuilder val = new TraderBuilder("API_ExampleMod", "Wild Bill", "TraderIcon.png", "TraderIconSmall.png");
			val.SetDisplayName("Wild Bill", (SystemLanguage)10);
			val.SetDescription("He sells common western goods, and a small number of basic blueprints and perks. Trade carefully!", (SystemLanguage)10);
			val.SetDialogue("Howdy, partner! I'm Wild Bill, the best trader in the west. I've got everything you need, and more!", (SystemLanguage)10);
			val.SetAssaultData(3, 5, 0.5f, 0.4f, true);
			val.SetAmountOfGoods(15, 20);
			val.AddDefaultMerchandise();
			val.AddDefaultDesiredGoods();
			val.AddGuaranteedOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((40, (GoodsTypes)64)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((2, (GoodsTypes)65, 50)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((100, (GoodsTypes)43, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((5, diamonds.Name, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((20, lpg.Name, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, kiwiFruit.Name, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((40, (GoodsTypes)24, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((30, (GoodsTypes)19, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)42, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)36, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((40, (GoodsTypes)45, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)25, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)39, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)8, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)5, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)67, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)69, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)21, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)46, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)44, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)11, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)47, 100)) });
			val.AddOfferedGoods((NameToAmount[])(object)new NameToAmount[1] { NameToAmount.op_Implicit((50, (GoodsTypes)55, 100)) });
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "API_ExampleMod";

		public const string PLUGIN_NAME = "API_ExampleMod";

		public const string PLUGIN_VERSION = "3.3.0";
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}
[CompilerGenerated]
internal sealed class <>z__ReadOnlyArray<T> : IEnumerable, ICollection, IList, IEnumerable<T>, IReadOnlyCollection<T>, IReadOnlyList<T>, ICollection<T>, IList<T>
{
	int ICollection.Count => _items.Length;

	bool ICollection.IsSynchronized => false;

	object ICollection.SyncRoot => this;

	object IList.this[int index]
	{
		get
		{
			return _items[index];
		}
		set
		{
			throw new NotSupportedException();
		}
	}

	bool IList.IsFixedSize => true;

	bool IList.IsReadOnly => true;

	int IReadOnlyCollection<T>.Count => _items.Length;

	T IReadOnlyList<T>.this[int index] => _items[index];

	int ICollection<T>.Count => _items.Length;

	bool ICollection<T>.IsReadOnly => true;

	T IList<T>.this[int index]
	{
		get
		{
			return _items[index];
		}
		set
		{
			throw new NotSupportedException();
		}
	}

	public <>z__ReadOnlyArray(T[] items)
	{
		_items = items;
	}

	IEnumerator IEnumerable.GetEnumerator()
	{
		return ((IEnumerable)_items).GetEnumerator();
	}

	void ICollection.CopyTo(Array array, int index)
	{
		((ICollection)_items).CopyTo(array, index);
	}

	int IList.Add(object value)
	{
		throw new NotSupportedException();
	}

	void IList.Clear()
	{
		throw new NotSupportedException();
	}

	bool IList.Contains(object value)
	{
		return ((IList)_items).Contains(value);
	}

	int IList.IndexOf(object value)
	{
		return ((IList)_items).IndexOf(value);
	}

	void IList.Insert(int index, object value)
	{
		throw new NotSupportedException();
	}

	void IList.Remove(object value)
	{
		throw new NotSupportedException();
	}

	void IList.RemoveAt(int index)
	{
		throw new NotSupportedException();
	}

	IEnumerator<T> IEnumerable<T>.GetEnumerator()
	{
		return ((IEnumerable<T>)_items).GetEnumerator();
	}

	void ICollection<T>.Add(T item)
	{
		throw new NotSupportedException();
	}

	void ICollection<T>.Clear()
	{
		throw new NotSupportedException();
	}

	bool ICollection<T>.Contains(T item)
	{
		return ((ICollection<T>)_items).Contains(item);
	}

	void ICollection<T>.CopyTo(T[] array, int arrayIndex)
	{
		((ICollection<T>)_items).CopyTo(array, arrayIndex);
	}

	bool ICollection<T>.Remove(T item)
	{
		throw new NotSupportedException();
	}

	int IList<T>.IndexOf(T item)
	{
		return ((IList<T>)_items).IndexOf(item);
	}

	void IList<T>.Insert(int index, T item)
	{
		throw new NotSupportedException();
	}

	void IList<T>.RemoveAt(int index)
	{
		throw new NotSupportedException();
	}
}