Decompiled source of RiskOfImpact v0.3.2

RiskOfImpact.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using EntityStates;
using HG;
using LookingGlass.ItemStatsNameSpace;
using On.RoR2;
using On.RoR2.Items;
using On.RoR2.Orbs;
using On.RoR2.Projectile;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using RoR2;
using RoR2.ContentManagement;
using RoR2.ExpansionManagement;
using RoR2.Items;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
namespace RiskOfImpact;

public class RiskOfImpactContent : IContentPackProvider
{
	[Serializable]
	[CompilerGenerated]
	private sealed class <>c
	{
		public static readonly <>c <>9 = new <>c();

		public static StatHookEventHandler <>9__34_0;

		internal void <FinalizeAsync>b__34_0(CharacterBody body, StatHookEventArgs statArgs)
		{
			if (!Object.op_Implicit((Object)(object)body.inventory))
			{
				return;
			}
			int itemCountEffective = body.inventory.GetItemCountEffective(_mug);
			if (itemCountEffective > 0)
			{
				statArgs.moveSpeedMultAdd += 0.69f * (float)itemCountEffective;
				statArgs.attackSpeedMultAdd += 0.69f * (float)itemCountEffective;
			}
			int itemCountEffective2 = body.inventory.GetItemCountEffective(_comboStarItem);
			if (itemCountEffective2 <= 0)
			{
				return;
			}
			int buffCount = body.GetBuffCount(_comboStarBuff);
			if (buffCount > 0)
			{
				float num = (0.03f + (float)(itemCountEffective2 - 1) * 0.005f) * (float)buffCount;
				statArgs.damageMultAdd += num;
				if (body.GetBuffCount(_comboStarMaxBuff) > 0)
				{
					statArgs.critAdd += 5f + (float)(itemCountEffective2 - 1) * 2.5f;
				}
			}
		}
	}

	private static ItemDef _mug;

	private static EquipmentDef _lanceEquipmentDef;

	private static AssetBundle _myBundle;

	private static GameObject _lanceProjectilePrefab;

	private static GameObject _lanceGhost;

	private static ItemDef _comboStarItem;

	private static BuffDef _comboStarBuff;

	private static BuffDef _comboStarMaxBuff;

	private static GameObject _comboStarDisplayPrefab;

	private static GameObject _mugDisplayPrefab;

	private static ItemDef _redshifter;

	private static GameObject _redshifterDisplayPrefab;

	private static GameObject _redshifterDisplayFollowerPrefab;

	private static ItemDef _bioticShell;

	private static GameObject _bioticShellDisplayPrefab;

	private static ItemDef _doomedMoon;

	private static GameObject _doomedMoonDisplayPrefab;

	private static GameObject _doomedMoonDisplayFollowerPrefab;

	private static ItemDef _doomedMoonConsumed;

	private static ItemDef _doomedMoonStatToken;

	private static BuffDef _doomedMoonBuff;

	private static ItemDef _riskyDice;

	private static ItemDef _riskyDiceCount;

	private static ItemDef _riskyDiceAffliction;

	private static BuffDef _riskyDiceBuff;

	public string identifier => "com.MrE42.RiskOfImpact";

	public static ReadOnlyContentPack readOnlyContentPack => new ReadOnlyContentPack(RiskOfImpactContentPack);

	internal static ContentPack RiskOfImpactContentPack { get; } = new ContentPack();


	public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args)
	{
		AssetBundleCreateRequest asyncOperation = AssetBundle.LoadFromFileAsync(RiskOfImpactMain.assetBundleDir);
		while (!((AsyncOperation)asyncOperation).isDone)
		{
			args.ReportProgress(((AsyncOperation)asyncOperation).progress);
			yield return null;
		}
		_myBundle = asyncOperation.assetBundle;
		_mug = _myBundle.LoadAsset<ItemDef>("Mug");
		_mugDisplayPrefab = _myBundle.LoadAsset<GameObject>("PickupDD");
		_comboStarItem = _myBundle.LoadAsset<ItemDef>("ComboStar");
		_comboStarBuff = _myBundle.LoadAsset<BuffDef>("ComboStarBuff");
		_comboStarMaxBuff = _myBundle.LoadAsset<BuffDef>("MaxStarBuff");
		_comboStarDisplayPrefab = _myBundle.LoadAsset<GameObject>("PickupCS");
		_redshifter = _myBundle.LoadAsset<ItemDef>("Redshifter");
		_redshifterDisplayPrefab = _myBundle.LoadAsset<GameObject>("PlayerDisplayRS");
		_redshifterDisplayFollowerPrefab = _myBundle.LoadAsset<GameObject>("DisplayFollowerRS");
		_bioticShell = _myBundle.LoadAsset<ItemDef>("BioticShell");
		_bioticShell.requiredExpansion = Addressables.LoadAssetAsync<ExpansionDef>((object)"RoR2/DLC1/Common/DLC1.asset").WaitForCompletion();
		_bioticShellDisplayPrefab = _myBundle.LoadAsset<GameObject>("PickupBS");
		_doomedMoon = _myBundle.LoadAsset<ItemDef>("DoomedMoon");
		_doomedMoonDisplayPrefab = _myBundle.LoadAsset<GameObject>("PlayerDisplayDM");
		_doomedMoonDisplayFollowerPrefab = _myBundle.LoadAsset<GameObject>("DisplayFollowerDM");
		_doomedMoonConsumed = _myBundle.LoadAsset<ItemDef>("DoomedMoonConsumed");
		_doomedMoonStatToken = _myBundle.LoadAsset<ItemDef>("DoomedMoonStatToken");
		_doomedMoonBuff = _myBundle.LoadAsset<BuffDef>("DoomedMoonBuff");
		_riskyDice = _myBundle.LoadAsset<ItemDef>("RiskyDice");
		_riskyDiceCount = _myBundle.LoadAsset<ItemDef>("RiskyDiceCount");
		_riskyDiceAffliction = _myBundle.LoadAsset<ItemDef>("RiskyDiceAffliction");
		_riskyDiceBuff = _myBundle.LoadAsset<BuffDef>("RiskyDiceBuff");
		_lanceEquipmentDef = _myBundle.LoadAsset<EquipmentDef>("LanceOfLonginusEquipmentDef");
		_lanceProjectilePrefab = _myBundle.LoadAsset<GameObject>("LanceProjectilePrefab");
		ExpansionDef val = _myBundle.LoadAsset<ExpansionDef>("RiskOfImpactExpansion");
		_myBundle.LoadAsset<ExpansionDef>("ExtraExpansion");
		_lanceGhost = _myBundle.LoadAsset<GameObject>("LanceGhost");
		_lanceProjectilePrefab.GetComponent<ProjectileController>().ghostPrefab = _lanceGhost;
		ItemDisplayRuleDict val2 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
		ItemDisplayRuleDict val3 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
		ItemDisplayRuleDict val4 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
		ItemDisplayRuleDict val5 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
		ItemDisplayRuleDict val6 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
		ItemDisplayRuleDict val7 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
		val3.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.20239f, -0.06471f, -0.01451f),
				localAngles = new Vector3(7.55425f, 100.9208f, 181.4531f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.22258f, -0.06758f, 0.03077f),
				localAngles = new Vector3(353.157f, 193.3047f, 206.7511f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.659f, 0.394f, -0.787f),
				localAngles = new Vector3(90.0003f, 180.079f, 180.4018f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.92478f, -0.45384f, -1.30414f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-3E-05f, 0.32895f, 0.17171f),
				localAngles = new Vector3(344.5746f, 359.8877f, 359.99f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.18116f, -0.05787f, 0.01043f),
				localAngles = new Vector3(32.08101f, 101.53f, 186.5844f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.18304f, -0.07066f, -0.03466f),
				localAngles = new Vector3(1.01352f, 196.2477f, 177.5963f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.659f, 0.394f, -0.787f),
				localAngles = new Vector3(90.0003f, 180.079f, 180.4018f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.92478f, -0.45384f, -1.30414f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.00947f, 0.15638f, 0.17891f),
				localAngles = new Vector3(337.9482f, 358.7204f, 52.48233f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.20239f, -0.06471f, -0.01451f),
				localAngles = new Vector3(7.55425f, 100.9208f, 181.4531f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.24089f, -0.03475f, -0.08941f),
				localAngles = new Vector3(351.2207f, 180.0096f, 189.8164f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "ROOT",
				localPos = new Vector3(-0.36643f, 1.76863f, 0.55818f),
				localAngles = new Vector3(0.0713f, 344.7929f, 0f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.76099f, 0.41951f, -1.30499f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "UpperArmR",
				localPos = new Vector3(-0.00694f, 0.18783f, -0.07376f),
				localAngles = new Vector3(337.5303f, 183.404f, 317.6291f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(2.66884f, 1.38091f, 1.85382f),
				localAngles = new Vector3(0f, 90f, 0f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val2.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Hip",
				localPos = new Vector3(2.45337f, 0.28995f, -0.52838f),
				localAngles = new Vector3(353.157f, 15.00789f, 206.7511f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val4.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(5.86281f, 6.67238f, 1.90503f),
				localAngles = new Vector3(0f, 90f, 0f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-4.74067f, 8.84387f, -6.63475f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.06f, 1.16f, 3.24f),
				localAngles = new Vector3(8.85492f, 346.6888f, 13.30589f),
				localScale = new Vector3(0.5f, 0.5f, 0.5f)
			}
		});
		val3.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.24459f, -0.04413f, -0.01453f),
				localAngles = new Vector3(7.55425f, 100.9208f, 181.4531f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.27511f, -0.00163f, 0.03076f),
				localAngles = new Vector3(353.157f, 193.3047f, 206.7511f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.659f, 0.394f, -0.787f),
				localAngles = new Vector3(90.0003f, 180.079f, 180.4018f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.92478f, -0.45384f, -1.30414f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.0041f, 0.2951f, 0.2481f),
				localAngles = new Vector3(337.6299f, 359.5753f, 0.39165f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.20239f, -0.06471f, -0.01451f),
				localAngles = new Vector3(7.55425f, 100.9208f, 181.4531f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.22258f, -0.06758f, 0.03077f),
				localAngles = new Vector3(353.157f, 193.3047f, 206.7511f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.659f, 0.394f, -0.787f),
				localAngles = new Vector3(90.0003f, 180.079f, 180.4018f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.92478f, -0.45384f, -1.30414f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.006f, 0.202f, 0.135f),
				localAngles = new Vector3(328.7007f, 21.62506f, 345.3727f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.21235f, 0.06133f, -0.02965f),
				localAngles = new Vector3(15.33725f, 100.263f, 182.9367f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.23385f, 0.04143f, -0.05599f),
				localAngles = new Vector3(353.3026f, 173.733f, 204.3656f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.659f, 0.394f, -0.787f),
				localAngles = new Vector3(90.0003f, 180.079f, 180.4018f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.92478f, -0.45384f, -1.30414f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(0.024f, 0.206f, 0.174f),
				localAngles = new Vector3(324.9625f, 6.28376f, 355.0841f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "PlatformBase",
				localPos = new Vector3(0.7219f, 0.13116f, 0.2195f),
				localAngles = new Vector3(351.8981f, 73.25513f, 358.5338f),
				localScale = new Vector3(0.4f, 0.4f, 0.4f)
			}
		});
		val2.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "PlatformBase",
				localPos = new Vector3(-0.75075f, 0.07669f, 0.03075f),
				localAngles = new Vector3(5.2294f, 355.3522f, 20.07811f),
				localScale = new Vector3(0.4f, 0.4f, 0.4f)
			}
		});
		val4.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "PlatformBase",
				localPos = new Vector3(2.24017f, 2.11404f, 0.21945f),
				localAngles = new Vector3(351.8981f, 73.25513f, 358.5338f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "PlatformBase",
				localPos = new Vector3(-1.57404f, 3.24967f, -1.88479f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(1.5f, 1.5f, 1.5f)
			}
		});
		val5.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "PlatformBase",
				localPos = new Vector3(0.661f, -0.186f, 0.157f),
				localAngles = new Vector3(352.855f, 89.99998f, 351.2419f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(0.23944f, 0.01208f, -0.05754f),
				localAngles = new Vector3(0f, 90f, 0f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.2722f, -0.06754f, 0.03045f),
				localAngles = new Vector3(6.94817f, 3.35957f, 26.3395f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(0.79858f, 0.55478f, 0.42963f),
				localAngles = new Vector3(6.94817f, 3.35957f, 26.3395f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.9262f, 1.13019f, -1.1029f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.25771f, 0.01213f, -0.06079f),
				localAngles = new Vector3(0f, 90f, 0f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Hip",
				localPos = new Vector3(1.94228f, 0.39972f, -0.40409f),
				localAngles = new Vector3(7.55425f, 100.9208f, 181.4531f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val2.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Hip",
				localPos = new Vector3(-2.45304f, 0.54139f, 0.25251f),
				localAngles = new Vector3(19.53804f, 194.0312f, 213.1425f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val4.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-5.04f, -3.02f, 5.34f),
				localAngles = new Vector3(84.9998f, 359.9714f, 359.584f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-7.60114f, 1.59776f, 9.56897f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val5.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-2.55f, 2.94f, -0.59f),
				localAngles = new Vector3(356.9059f, 69.76768f, 25.01778f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val3.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.2758f, -0.10375f, -0.02017f),
				localAngles = new Vector3(7.55425f, 100.9208f, 181.4531f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.30334f, -0.12005f, 0.02085f),
				localAngles = new Vector3(356.783f, 191.9943f, 191.5501f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.659f, 0.394f, -0.787f),
				localAngles = new Vector3(90.0003f, 180.079f, 180.4018f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.92478f, -0.45384f, -1.30414f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.00288f, 0.22976f, 0.21501f),
				localAngles = new Vector3(343.283f, 350.7494f, 320.7523f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlHeretic", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.16834f, 0.20744f, -0.3221f),
				localAngles = new Vector3(321.7271f, 192.0575f, 270.6939f),
				localScale = new Vector3(0.2f, 0.2f, 0.2f)
			}
		});
		val2.Add("mdlHeretic", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.21054f, 0.08455f, 0.4505f),
				localAngles = new Vector3(281.3847f, 102.9863f, 13.02637f),
				localScale = new Vector3(0.2f, 0.2f, 0.2f)
			}
		});
		val4.Add("mdlHeretic", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.68984f, -1.22926f, -1.79202f),
				localAngles = new Vector3(295.4063f, 217.6076f, 232.8437f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlHeretic", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-1.06155f, -0.90547f, 1.83211f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val3.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "GunRoot",
				localPos = new Vector3(0f, -0.12961f, 0.06076f),
				localAngles = new Vector3(0f, 0f, 180f),
				localScale = new Vector3(0.05f, 0.05f, 0.05f)
			}
		});
		val2.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Backpack",
				localPos = new Vector3(0.37979f, -0.509f, 0.0309f),
				localAngles = new Vector3(24.20953f, 182.6858f, 49.19599f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.799f, 0.04025f, -0.28362f),
				localAngles = new Vector3(90.00027f, 180.079f, 180.4018f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.92478f, -0.45384f, -1.30414f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "UpperArmL",
				localPos = new Vector3(0.00072f, 0.08052f, 0.06183f),
				localAngles = new Vector3(5.06661f, 358.0723f, 116.7787f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.00645f, 0.02082f, 0.15709f),
				localAngles = new Vector3(11.41105f, 359.2993f, 165.3926f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.03053f, 0.00479f, -0.20481f),
				localAngles = new Vector3(10.27088f, 86.79462f, 192.5363f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.81593f, 0.92553f, 0.42535f),
				localAngles = new Vector3(88.27319f, 357.384f, 352.9297f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.92478f, 0.24515f, 0.64663f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "UpperArmR",
				localPos = new Vector3(0.21565f, -0.04918f, 0.00468f),
				localAngles = new Vector3(10.95605f, 105.0443f, 191.8376f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.22783f, 0.02224f, -0.00465f),
				localAngles = new Vector3(339.8495f, 78.9239f, 353.0269f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.26268f, 0.04164f, -0.02405f),
				localAngles = new Vector3(354.4812f, 351.9723f, 342.0317f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.649f, 1.727f, -0.109f),
				localAngles = new Vector3(14.33531f, 0.39733f, 0.22404f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.91217f, 2.18543f, -0.30558f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlSeeker", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.0041f, 0.07456f, 0.1186f),
				localAngles = new Vector3(352.4757f, 353.3727f, 4.8746f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlFalseSon", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.31534f, 0.11852f, -0.14177f),
				localAngles = new Vector3(339.1165f, 125.6798f, 352.5457f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlFalseSon", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.27259f, 0.11521f, -0.22216f),
				localAngles = new Vector3(358.424f, 318.1652f, 346.5849f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlFalseSon", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Root",
				localPos = new Vector3(0.966f, 3.37f, -0.347f),
				localAngles = new Vector3(11.01017f, 359.0091f, 0.39317f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlFalseSon", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Root",
				localPos = new Vector3(-1.25927f, 3.85099f, -1.37428f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val5.Add("mdlFalseSon", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(0.02305f, 0.42224f, 0.16099f),
				localAngles = new Vector3(308.0242f, 354.2237f, 354.7403f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlChef", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(0.1323f, 0.20992f, -0.3466f),
				localAngles = new Vector3(352.6544f, 180.1904f, 314.3582f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlChef", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "OvenDoor",
				localPos = new Vector3(-0.58416f, 0.06339f, 0.09305f),
				localAngles = new Vector3(4.14493f, 2.58369f, 8.85832f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlChef", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Root",
				localPos = new Vector3(-0.787f, 1.34229f, 0.41002f),
				localAngles = new Vector3(0.11209f, 89.41496f, 19.53264f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlChef", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Root",
				localPos = new Vector3(1.08621f, 2.5569f, -1.11563f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlChef", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.2804f, 0.1809f, 0.0058f),
				localAngles = new Vector3(359.487f, 89.95702f, 183.1426f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val3.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(0.18679f, 0.07799f, 0.0409f),
				localAngles = new Vector3(347.8549f, 103.8105f, 359.8152f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.14239f, 0.08143f, 0.07492f),
				localAngles = new Vector3(26.93316f, 359.0482f, 33.11788f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.568f, 1.189f, 0f),
				localAngles = new Vector3(350.118f, 180f, 180f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(1.80938f, 1.72888f, 0.44503f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlDroneTech", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.001f, -0.0999f, -0.0822f),
				localAngles = new Vector3(286.3296f, 353.8997f, 22.19561f),
				localScale = new Vector3(0.06f, 0.06f, 0.06f)
			}
		});
		val3.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.1024f, 0.00187f, -0.37851f),
				localAngles = new Vector3(357.0724f, 189.1636f, 280.7911f),
				localScale = new Vector3(0.12f, 0.12f, 0.12f)
			}
		});
		val2.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Pelvis",
				localPos = new Vector3(-0.18712f, -0.06656f, 0.3887f),
				localAngles = new Vector3(275.4132f, 1.23565f, 85.85339f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(0.39681f, -0.65566f, 0.66076f),
				localAngles = new Vector3(318.5939f, 293.7787f, 169.5416f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-0.62317f, -1.03718f, -1.42457f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlDrifter", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Chest",
				localPos = new Vector3(-0.03096f, 0.27478f, -0.01272f),
				localAngles = new Vector3(315.9871f, 247.1702f, 194.6353f),
				localScale = new Vector3(0.06f, 0.06f, 0.06f)
			}
		});
		val3.Add("mdlBasicTank", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Bruiser_Hull",
				localPos = new Vector3(-0.94709f, 0.66307f, 0.0552f),
				localAngles = new Vector3(0f, 270f, 0f),
				localScale = new Vector3(0.2f, 0.2f, 0.2f)
			}
		});
		val2.Add("mdlBasicTank", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "CannonMuzzle0",
				localPos = new Vector3(0f, 0.16607f, -0.07901f),
				localAngles = new Vector3(0f, 270f, 0f),
				localScale = new Vector3(0.1f, 0.1f, 0.1f)
			}
		});
		val4.Add("mdlBasicTank", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "ROOT",
				localPos = new Vector3(1.50346f, 2.04334f, -0.38996f),
				localAngles = new Vector3(-1E-05f, 180f, 180f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlBasicTank", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "ROOT",
				localPos = new Vector3(-1.71963f, 2.4493f, -1.30414f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val2.Add("mdlDefectiveUnit (1)", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Body",
				localPos = new Vector3(0.53761f, 0.58974f, 0.39026f),
				localAngles = new Vector3(65.78642f, 158.3518f, 326.1167f),
				localScale = new Vector3(0.2f, 0.2f, 0.2f)
			}
		});
		val3.Add("mdlEngiTurret", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _comboStarDisplayPrefab,
				childName = "Head",
				localPos = new Vector3(0f, 0.83617f, -0.7562f),
				localAngles = new Vector3(298.6673f, 0f, 1E-05f),
				localScale = new Vector3(0.3f, 0.3f, 0.3f)
			}
		});
		val2.Add("mdlEngiTurret", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _mugDisplayPrefab,
				childName = "Head",
				localPos = new Vector3(0f, 0.84778f, -1.66701f),
				localAngles = new Vector3(0f, 270f, 20.28025f),
				localScale = new Vector3(0.3f, 0.3f, 0.3f)
			}
		});
		val4.Add("mdlEngiTurret", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _redshifterDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(2.07f, 3.72f, 0.41f),
				localAngles = new Vector3(-0.0003f, 180.079f, 180.4018f),
				localScale = new Vector3(1f, 1f, 1f)
			}
		});
		val7.Add("mdlEngiTurret", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _doomedMoonDisplayPrefab,
				childName = "Base",
				localPos = new Vector3(-2.34182f, 3.93022f, -1.91096f),
				localAngles = new Vector3(0f, 0f, 45f),
				localScale = new Vector3(0.8f, 0.8f, 0.8f)
			}
		});
		val5.Add("mdlEngiTurret", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
		{
			new ItemDisplayRule
			{
				ruleType = (ItemDisplayRuleType)0,
				followerPrefab = _bioticShellDisplayPrefab,
				childName = "Head",
				localPos = new Vector3(0f, 0f, -0.326f),
				localAngles = new Vector3(358.6553f, 0f, 0f),
				localScale = new Vector3(0.42f, 0.42f, 0.42f)
			}
		});
		_lanceEquipmentDef.requiredExpansion = val;
		_comboStarItem.requiredExpansion = val;
		_redshifter.requiredExpansion = val;
		_doomedMoon.requiredExpansion = val;
		_mug.requiredExpansion = val;
		_riskyDice.requiredExpansion = val;
		_riskyDiceCount.requiredExpansion = val;
		_riskyDiceAffliction.requiredExpansion = val;
		_riskyDiceCount.hidden = true;
		ItemAPI.Add(new CustomItem(_mug, val2));
		ItemAPI.Add(new CustomItem(_comboStarItem, val3));
		ItemAPI.Add(new CustomItem(_redshifter, val4));
		ItemAPI.Add(new CustomItem(_bioticShell, val5));
		ItemAPI.Add(new CustomEquipment(_lanceEquipmentDef, val6));
		ItemAPI.Add(new CustomItem(_doomedMoon, val7));
		ItemAPI.Add(new CustomItem(_doomedMoonConsumed, new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>())));
		ItemAPI.Add(new CustomItem(_doomedMoonStatToken, new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>())));
		ItemAPI.Add(new CustomItem(_riskyDice, new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>())));
		ItemAPI.Add(new CustomItem(_riskyDiceCount, new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>())));
		ItemAPI.Add(new CustomItem(_riskyDiceAffliction, new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>())));
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _mug });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _comboStarItem });
		RiskOfImpactContentPack.buffDefs.Add((BuffDef[])(object)new BuffDef[1] { _comboStarBuff });
		RiskOfImpactContentPack.buffDefs.Add((BuffDef[])(object)new BuffDef[1] { _comboStarMaxBuff });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _redshifter });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _doomedMoon });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _doomedMoonConsumed });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _doomedMoonStatToken });
		RiskOfImpactContentPack.buffDefs.Add((BuffDef[])(object)new BuffDef[1] { _doomedMoonBuff });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _riskyDice });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _riskyDiceCount });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _riskyDiceAffliction });
		RiskOfImpactContentPack.buffDefs.Add((BuffDef[])(object)new BuffDef[1] { _riskyDiceBuff });
		RiskOfImpactContentPack.itemDefs.Add((ItemDef[])(object)new ItemDef[1] { _bioticShell });
		RiskOfImpactContentPack.equipmentDefs.Add((EquipmentDef[])(object)new EquipmentDef[1] { _lanceEquipmentDef });
		RiskOfImpactContentPack.projectilePrefabs.Add((GameObject[])(object)new GameObject[1] { _lanceProjectilePrefab });
		RiskOfImpactContentPack.expansionDefs.Add((ExpansionDef[])(object)new ExpansionDef[1] { val });
		LanguageAPI.Add("EQUIPMENT_LANCEOFLONGINUS_NAME", "Lance of Longinus");
		LanguageAPI.Add("EQUIPMENT_LANCEOFLONGINUS_PICKUP", "Throw a mighty lance that impales enemies and can be retrieved, <style=cIsLunar>but at a cost</style>.");
		LanguageAPI.Add("EQUIPMENT_LANCEOFLONGINUS_DESC", "Throw a spear for <style=cIsDamage>9000%</style> damage, <style=cIsLunar>but</style> lose <style=cIsHealth>20%</style> maximum health.");
		LanguageAPI.Add("DD_NAME", "Cheerful Mug");
		LanguageAPI.Add("DD_PICKUP", "Wait, are those marshmallows or sugar cubes?");
		LanguageAPI.Add("DD_DESC", "Gain <style=cIsUtility>69%</style> (<style=cStack>+69% per stack</style>) movement and attack speed");
		LanguageAPI.Add("COMBOSTAR_NAME", "Combo Star");
		LanguageAPI.Add("COMBOSTAR_PICKUP", "Hitting enemies builds damage, missing a hit resets it.");
		LanguageAPI.Add("COMBOSTAR_DESC", "Hitting an enemy increases your damage by <style=cIsDamage>3%</style> (<style=cStack>+0.5% per stack</style>), up to <style=cIsUtility>20</style> (<style=cStack>+10 per stack</style>). Missing a skill hit <style=cDeath>resets all stacks</style>. At maximum stacks, gain <style=cIsDamage>5%</style> (<style=cStack>+2.5% per stack</style>) crit chance.");
		LanguageAPI.Add("RS_NAME", "Redshifter");
		LanguageAPI.Add("RS_PICKUP", "Expand space to your benefit");
		LanguageAPI.Add("RS_DESC", "Gain <style=cIsUtility>50%</style> (<style=cStack>+50% per stack</style>) radius and range bonuses");
		LanguageAPI.Add("BIOTICSHELL_NAME", "Biotic Shell");
		LanguageAPI.Add("BIOTICSHELL_PICKUP", "<style=cIsVoid>Corrupts all Personal Shield Generators.</style> Slows the degradation of temporary barriers.");
		LanguageAPI.Add("BIOTICSHELL_DESC", "<style=cIsVoid>Corrupts all Personal Shield Generators.</style> Temporary barriers decay <style=cIsUtility>12%</style> <style=cStack>(+12% per stack)</style> slower.");
		LanguageAPI.Add("DM_NAME", "Doomed Moon");
		LanguageAPI.Add("DM_PICKUP", "Revive each stage, but <style=cDeath>but lose items</style>");
		LanguageAPI.Add("DM_DESC", "Gain a <style=cIsHealing>revive</style> <style=cStack>(per stack)</style> each stage. <style=cDeath>Breaks 10% of your items</style> <style=cStack>(5 items minimum)</style> on revive <style=cArtifact>(excluding Void items)</style>. After reviving, permanently gain <style=cIsUtility>+10%</style> to <style=cShrine>all stats</style>. <style=cDeath>Fails if fewer than 5 eligible items exist</style>.");
		LanguageAPI.Add("DMC_NAME", "Doomed Moon (Consumed)");
		LanguageAPI.Add("DMC_DESC", "Gain a <style=cIsHealing>revive</style> <style=cStack>(per stack)</style> each stage. <style=cDeath>Breaks 10% of your items</style> <style=cStack>(5 items minimum)</style> on revive <style=cArtifact>(excluding Void items)</style>. After reviving, permanently gain <style=cIsUtility>+10%</style> to <style=cShrine>all stats</style>. <style=cDeath>Fails if fewer than 5 eligible items exist</style>.");
		LanguageAPI.Add("RD_NAME", "Risky Dice");
		LanguageAPI.Add("RD_PICKUP", "Roll fate at chests and Shrines of Chance for bonus rewards... or pay the price.");
		LanguageAPI.Add("RD_DESC", "<style=cShrine>Chests</style> and <style=cShrine>Shrines of Chance</style> roll <style=cIsUtility>once</style> <style=cStack>(per stack)</style> per interaction.\n<style=cShrine>Success</style> (<style=cShrine>19 in 20</style>): Gain <style=cIsUtility>1 Risk</style> and the interactable drops <style=cIsDamage>+1 extra item</style> per successful roll.\n<style=cDeath>Misfortune</style> (<style=cDeath>1 in 20</style>): You still <style=cDeath>pay the cost</style>, the interaction is <style=cDeath>canceled</style>, and your <style=cIsUtility>Risk resets</style>.\nYou'll receive <style=cWorldEvent>permanent</style> debuffs to <style=cDeath>all stats</style> equal to your total <style=cIsUtility>Risk</style> <style=cStack>(2% per Risk)</style>.\nIf you have 20 or more Risk upon rolling Misfortune, you will <style=cDeath>die</style>.");
		LanguageAPI.Add("RDA_NAME", "Buyer's Remorse");
		LanguageAPI.Add("RDA_DESC", "<style=cWorldEvent>Permanent</style>.\n<style=cDeath>Reduce all stats by 2%</style> <style=cStack>(+2% per stack)</style>.");
		ItemRelationshipType relationshipType = Addressables.LoadAssetAsync<ItemRelationshipType>((object)"RoR2/DLC1/Common/ContagiousItem.asset").WaitForCompletion();
		ItemDef val8 = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/Base/PersonalShield/PersonalShield.asset").WaitForCompletion();
		if (!Object.op_Implicit((Object)(object)val8) || !Object.op_Implicit((Object)(object)_bioticShell))
		{
			Debug.LogError((object)"[RiskOfImpact] BioticShell void corruption failed: missing PersonalShield or BioticShell ItemDef.");
		}
		else
		{
			ItemRelationshipProvider val9 = ScriptableObject.CreateInstance<ItemRelationshipProvider>();
			val9.relationshipType = relationshipType;
			val9.relationships = (Pair[])(object)new Pair[1]
			{
				new Pair
				{
					itemDef1 = val8,
					itemDef2 = _bioticShell
				}
			};
			RiskOfImpactContentPack.itemRelationshipProviders.Add((ItemRelationshipProvider[])(object)new ItemRelationshipProvider[1] { val9 });
		}
		Debug.Log((object)"[RiskOfImpactContent] Assets and language tokens registered.");
	}

	public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args)
	{
		ContentPack.Copy(RiskOfImpactContentPack, args.output);
		args.ReportProgress(1f);
		yield break;
	}

	public IEnumerator FinalizeAsync(FinalizeAsyncArgs args)
	{
		object obj = <>c.<>9__34_0;
		if (obj == null)
		{
			StatHookEventHandler val = delegate(CharacterBody body, StatHookEventArgs statArgs)
			{
				if (Object.op_Implicit((Object)(object)body.inventory))
				{
					int itemCountEffective = body.inventory.GetItemCountEffective(_mug);
					if (itemCountEffective > 0)
					{
						statArgs.moveSpeedMultAdd += 0.69f * (float)itemCountEffective;
						statArgs.attackSpeedMultAdd += 0.69f * (float)itemCountEffective;
					}
					int itemCountEffective2 = body.inventory.GetItemCountEffective(_comboStarItem);
					if (itemCountEffective2 > 0)
					{
						int buffCount = body.GetBuffCount(_comboStarBuff);
						if (buffCount > 0)
						{
							float num = (0.03f + (float)(itemCountEffective2 - 1) * 0.005f) * (float)buffCount;
							statArgs.damageMultAdd += num;
							if (body.GetBuffCount(_comboStarMaxBuff) > 0)
							{
								statArgs.critAdd += 5f + (float)(itemCountEffective2 - 1) * 2.5f;
							}
						}
					}
				}
			};
			<>c.<>9__34_0 = val;
			obj = (object)val;
		}
		RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj;
		args.ReportProgress(1f);
		yield break;
	}

	private void AddSelf(AddContentPackProviderDelegate addContentPackProvider)
	{
		addContentPackProvider.Invoke((IContentPackProvider)(object)this);
	}

	internal RiskOfImpactContent()
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected O, but got Unknown
		ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(AddSelf);
	}

	public static EquipmentDef GetLanceEquipmentDef()
	{
		return _lanceEquipmentDef;
	}

	public static GameObject GetLanceProjectilePrefab()
	{
		return _lanceProjectilePrefab;
	}

	public static ItemDef GetComboStarItemDef()
	{
		return _comboStarItem;
	}

	public static BuffDef GetComboStarBuffDef()
	{
		return _comboStarBuff;
	}

	public static BuffDef GetComboStarMaxBuffDef()
	{
		return _comboStarMaxBuff;
	}

	public static ItemDef GetMugItemDef()
	{
		return _mug;
	}

	public static ItemDef GetRedshifterItemDef()
	{
		return _redshifter;
	}

	public static ItemDef GetDoomedMoonItemDef()
	{
		return _doomedMoon;
	}

	public static ItemDef GetDoomedMoonConsumedItemDef()
	{
		return _doomedMoonConsumed;
	}

	public static ItemDef GetDoomedMoonStatTokenItemDef()
	{
		return _doomedMoonStatToken;
	}

	public static BuffDef GetDoomedMoonBuffDef()
	{
		return _doomedMoonBuff;
	}

	public static ItemDef GetRiskyDiceItemDef()
	{
		return _riskyDice;
	}

	public static ItemDef GetRiskyDiceCountItemDef()
	{
		return _riskyDiceCount;
	}

	public static ItemDef GetRiskyDiceAfflictionItemDef()
	{
		return _riskyDiceAffliction;
	}

	public static BuffDef GetRiskyDiceBuffDef()
	{
		return _riskyDiceBuff;
	}

	public static ItemDef GetBioticShellItemDef()
	{
		return _bioticShell;
	}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.MrE42.RiskOfImpact", "Risk Of Impact", "0.3.2")]
public class RiskOfImpactMain : BaseUnityPlugin
{
	public const string GUID = "com.MrE42.RiskOfImpact";

	public const string MODNAME = "Risk Of Impact";

	public const string VERSION = "0.3.2";

	public static PluginInfo pluginInfo { get; private set; }

	public static RiskOfImpactMain instance { get; private set; }

	internal static AssetBundle assetBundle { get; private set; }

	internal static string assetBundleDir => Path.Combine(Path.GetDirectoryName(pluginInfo.Location), "RiskOfImpactAssets");

	public static bool IsLookingGlassInstalled => Chainloader.PluginInfos.ContainsKey("droppod.lookingglass");

	private void Awake()
	{
		instance = this;
		pluginInfo = ((BaseUnityPlugin)this).Info;
		Debug.Log((object)"[RiskOfImpactMain] Awake: Initializing mod...");
		new RiskOfImpactContent();
		Debug.Log((object)"[RiskOfImpactMain] Content loaded. Initializing Equipment Hook...");
		if (IsLookingGlassInstalled)
		{
			LookingGlassCompat.Init();
		}
		LanceOfLonginusEquipmentHook.Init();
		ComboStarHooks.Init();
		RedshifterHooks.Init();
		BioticShellHooks.Init();
		DoomedMoonHooks.Init();
		RiskyDiceHooks.Init();
	}

	internal static void LogFatal(object data)
	{
		((BaseUnityPlugin)instance).Logger.LogFatal(data);
	}

	internal static void LogError(object data)
	{
		((BaseUnityPlugin)instance).Logger.LogError(data);
	}

	internal static void LogWarning(object data)
	{
		((BaseUnityPlugin)instance).Logger.LogWarning(data);
	}

	internal static void LogMessage(object data)
	{
		((BaseUnityPlugin)instance).Logger.LogMessage(data);
	}

	internal static void LogInfo(object data)
	{
		((BaseUnityPlugin)instance).Logger.LogInfo(data);
	}

	internal static void LogDebug(object data)
	{
		((BaseUnityPlugin)instance).Logger.LogDebug(data);
	}
}
public static class BioticShellHooks
{
	private const float k = 0.12f;

	public static void Init()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Expected O, but got Unknown
		HealthComponent.GetBarrierDecayRate += new hook_GetBarrierDecayRate(HealthComponent_GetBarrierDecayRate);
	}

	private static float HealthComponent_GetBarrierDecayRate(orig_GetBarrierDecayRate orig, HealthComponent self)
	{
		float num = orig.Invoke(self);
		CharacterBody obj = self?.body;
		Inventory val = ((obj != null) ? obj.inventory : null);
		ItemDef bioticShellItemDef = RiskOfImpactContent.GetBioticShellItemDef();
		if ((Object)(object)val != (Object)null && (Object)(object)bioticShellItemDef != (Object)null)
		{
			int itemCount = val.GetItemCount(bioticShellItemDef);
			if (itemCount > 0)
			{
				float num2 = 1f / (1f + 0.12f * (float)itemCount);
				num *= num2;
			}
		}
		return num;
	}
}
public static class ComboStarHooks
{
	public const int BaseMaxStacks = 20;

	public const int ExtraStacksPerItem = 10;

	public const float SkillHitTimeout = 5f;

	public static bool VerboseLogs = true;

	public static void Init()
	{
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Expected O, but got Unknown
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Expected O, but got Unknown
		RiskOfImpactMain.LogInfo("[ComboStar] Init: registering hooks + net messages.");
		NetworkingAPI.RegisterMessageType<ComboStarSkillExecuteMessage>();
		CharacterBody.onBodyStartGlobal += OnBodyStart;
		GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(GlobalEventManager_OnHitEnemy);
		GenericSkill.OnExecute += new hook_OnExecute(GenericSkill_OnExecute);
	}

	private static bool SkillCountsForCombo(GenericSkill skill)
	{
		if (!Object.op_Implicit((Object)(object)skill) || (Object)(object)skill.skillDef == (Object)null)
		{
			RiskOfImpactMain.LogDebug("[ComboStar] SkillCountsForCombo: skill or skillDef is null -> false");
			return false;
		}
		SkillDef skillDef = skill.skillDef;
		string skillNameToken = skillDef.skillNameToken;
		switch (skillNameToken)
		{
		case "RAILGUNNER_SECONDARY_NAME":
			RiskOfImpactMain.LogDebug("[ComboStar] SkillCountsForCombo: " + skillNameToken + " is blacklisted (setup skill) -> false");
			return false;
		case "RAILGUNNER_SPECIAL_NAME":
			RiskOfImpactMain.LogDebug("[ComboStar] SkillCountsForCombo: " + skillNameToken + " is blacklisted (setup skill) -> false");
			return false;
		default:
			if (skillNameToken.StartsWith("CHEESEWITHHOLES_BASICTANK_BODY_UTILITY"))
			{
				RiskOfImpactMain.LogDebug("[ComboStar] SkillCountsForCombo: " + skillNameToken + " is exempt (tank utility) -> false");
				return false;
			}
			break;
		case null:
			break;
		}
		if (!skillDef.isCombatSkill)
		{
			RiskOfImpactMain.LogDebug("[ComboStar] SkillCountsForCombo: " + skillNameToken + " isCombatSkill=false -> false");
			return false;
		}
		RiskOfImpactMain.LogDebug("[ComboStar] SkillCountsForCombo: " + skillNameToken + " isCombatSkill=true -> true");
		return true;
	}

	private static void OnBodyStart(CharacterBody body)
	{
		//IL_0058: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		if (!NetworkServer.active || !Object.op_Implicit((Object)(object)body) || Object.op_Implicit((Object)(object)((Component)body).GetComponent<ComboStarTracker>()))
		{
			return;
		}
		((Component)body).gameObject.AddComponent<ComboStarTracker>();
		if (VerboseLogs)
		{
			NetworkIdentity component = ((Component)body).GetComponent<NetworkIdentity>();
			string displayName = body.GetDisplayName();
			object obj;
			if (!Object.op_Implicit((Object)(object)component))
			{
				obj = "noNetId";
			}
			else
			{
				NetworkInstanceId netId = component.netId;
				obj = ((object)(NetworkInstanceId)(ref netId)).ToString();
			}
			RiskOfImpactMain.LogInfo("[ComboStar] OnBodyStart: Added tracker on SERVER. body=" + displayName + " netId=" + (string?)obj);
		}
	}

	private static void GlobalEventManager_OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
	{
		//IL_0073: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0104: Unknown result type (might be due to invalid IL or missing references)
		orig.Invoke(self, damageInfo, victim);
		if (!NetworkServer.active)
		{
			return;
		}
		if (!Object.op_Implicit((Object)(object)damageInfo.attacker))
		{
			if (VerboseLogs)
			{
				RiskOfImpactMain.LogDebug("[ComboStar] OnHitEnemy(SERVER): attacker is null, ignoring.");
			}
			return;
		}
		if (damageInfo.rejected || damageInfo.damage <= 0f)
		{
			if (VerboseLogs)
			{
				RiskOfImpactMain.LogDebug($"[ComboStar] OnHitEnemy(SERVER): rejected or zero damage (rejected={damageInfo.rejected}, damage={damageInfo.damage}), ignoring.");
			}
			return;
		}
		if (DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)67108864)) != 0L)
		{
			if (VerboseLogs)
			{
				RiskOfImpactMain.LogDebug("[ComboStar] OnHitEnemy(SERVER): DoT damage type, ignoring.");
			}
			return;
		}
		CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
		if (!Object.op_Implicit((Object)(object)component))
		{
			if (VerboseLogs)
			{
				RiskOfImpactMain.LogDebug("[ComboStar] OnHitEnemy(SERVER): attacker has no CharacterBody, ignoring.");
			}
			return;
		}
		ComboStarTracker component2 = ((Component)component).GetComponent<ComboStarTracker>();
		if ((Object)(object)component2 != (Object)null)
		{
			if (VerboseLogs)
			{
				NetworkIdentity component3 = ((Component)component).GetComponent<NetworkIdentity>();
				string displayName = component.GetDisplayName();
				object arg;
				if (!Object.op_Implicit((Object)(object)component3))
				{
					arg = "noNetId";
				}
				else
				{
					NetworkInstanceId netId = component3.netId;
					arg = ((object)(NetworkInstanceId)(ref netId)).ToString();
				}
				RiskOfImpactMain.LogDebug($"[ComboStar] OnHitEnemy(SERVER): RegisterHit body={displayName} netId={arg} dmg={damageInfo.damage:0.0}");
			}
			component2.RegisterHit();
		}
		else if (VerboseLogs)
		{
			RiskOfImpactMain.LogDebug("[ComboStar] OnHitEnemy(SERVER): NO tracker found on " + component.GetDisplayName());
		}
	}

	private static void GenericSkill_OnExecute(orig_OnExecute orig, GenericSkill self)
	{
		//IL_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Unknown result type (might be due to invalid IL or missing references)
		orig.Invoke(self);
		if (!Object.op_Implicit((Object)(object)self))
		{
			return;
		}
		CharacterBody characterBody = self.characterBody;
		if (!Object.op_Implicit((Object)(object)characterBody) || !SkillCountsForCombo(self))
		{
			return;
		}
		string text = (Object.op_Implicit((Object)(object)self.skillDef) ? self.skillDef.skillNameToken : "<null_token>");
		NetworkIdentity component = ((Component)characterBody).GetComponent<NetworkIdentity>();
		object obj;
		if (!Object.op_Implicit((Object)(object)component))
		{
			obj = "noNetId";
		}
		else
		{
			NetworkInstanceId netId = component.netId;
			obj = ((object)(NetworkInstanceId)(ref netId)).ToString();
		}
		string text2 = (string)obj;
		if (NetworkServer.active)
		{
			ComboStarTracker component2 = ((Component)characterBody).GetComponent<ComboStarTracker>();
			if ((Object)(object)component2 != (Object)null)
			{
				if (VerboseLogs)
				{
					RiskOfImpactMain.LogDebug("[ComboStar] GenericSkill_OnExecute(SERVER): body=" + characterBody.GetDisplayName() + " netId=" + text2 + " token=" + text);
				}
				component2.OnEligibleSkillExecutedToken(text);
			}
			else if (VerboseLogs)
			{
				RiskOfImpactMain.LogDebug("[ComboStar] GenericSkill_OnExecute(SERVER): NO tracker on body=" + characterBody.GetDisplayName() + " netId=" + text2);
			}
		}
		else if (NetworkClient.active && ((NetworkBehaviour)characterBody).hasAuthority && Object.op_Implicit((Object)(object)component))
		{
			if (VerboseLogs)
			{
				RiskOfImpactMain.LogDebug("[ComboStar] GenericSkill_OnExecute(CLIENT->SERVER SEND): body=" + characterBody.GetDisplayName() + " netId=" + text2 + " token=" + text);
			}
			NetMessageExtensions.Send((INetMessage)(object)new ComboStarSkillExecuteMessage(component.netId, text), (NetworkDestination)2);
		}
		else if (VerboseLogs)
		{
			RiskOfImpactMain.LogDebug("[ComboStar] GenericSkill_OnExecute(CLIENT ignored): body=" + characterBody.GetDisplayName() + " netId=" + text2 + " " + $"NetworkClient.active={NetworkClient.active} hasAuthority={((NetworkBehaviour)characterBody).hasAuthority} hasNetId={(Object)(object)component != (Object)null} token={text}");
		}
	}
}
public class ComboStarSkillExecuteMessage : INetMessage, ISerializableObject
{
	private NetworkInstanceId bodyNetId;

	private string skillToken;

	public ComboStarSkillExecuteMessage()
	{
	}

	public ComboStarSkillExecuteMessage(NetworkInstanceId bodyNetId, string skillToken)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		this.bodyNetId = bodyNetId;
		this.skillToken = skillToken;
	}

	public void Serialize(NetworkWriter writer)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		writer.Write(bodyNetId);
		writer.Write(skillToken ?? "");
	}

	public void Deserialize(NetworkReader reader)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		bodyNetId = reader.ReadNetworkId();
		skillToken = reader.ReadString();
	}

	public void OnReceived()
	{
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_004c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
		if (!NetworkServer.active)
		{
			return;
		}
		GameObject val = Util.FindNetworkObject(bodyNetId);
		if (!Object.op_Implicit((Object)(object)val))
		{
			RiskOfImpactMain.LogDebug($"[ComboStarNet] OnReceived(SERVER): Could not find body object for netId={bodyNetId}");
			return;
		}
		CharacterBody component = val.GetComponent<CharacterBody>();
		if (!Object.op_Implicit((Object)(object)component))
		{
			RiskOfImpactMain.LogDebug($"[ComboStarNet] OnReceived(SERVER): netId={bodyNetId} has no CharacterBody");
			return;
		}
		ComboStarTracker component2 = ((Component)component).GetComponent<ComboStarTracker>();
		if (!Object.op_Implicit((Object)(object)component2))
		{
			RiskOfImpactMain.LogDebug($"[ComboStarNet] OnReceived(SERVER): netId={bodyNetId} body={component.GetDisplayName()} has NO tracker");
			return;
		}
		if (ComboStarHooks.VerboseLogs)
		{
			RiskOfImpactMain.LogDebug($"[ComboStarNet] OnReceived(SERVER): Apply skill execute. body={component.GetDisplayName()} netId={bodyNetId} token={skillToken}");
		}
		component2.OnEligibleSkillExecutedToken(skillToken);
	}
}
public class ComboStarTracker : MonoBehaviour
{
	private struct Bucket
	{
		public float expiresAt;

		public bool hadHit;
	}

	private CharacterBody body;

	private readonly Queue<Bucket> buckets = new Queue<Bucket>();

	private float currentBucketStartTime = -999f;

	private bool stackGrantedThisSkill;

	private const float BucketSeconds = 0.2f;

	private float lastEligibleExecuteTime = -1f;

	private float ewmaExecuteInterval = 0.15f;

	private const float ExecuteIntervalAlpha = 0.2f;

	private const float ActiveMinTimeout = 0.35f;

	private const float ActiveMaxTimeout = 2f;

	private const float ActiveBaseTimeout = 0.1f;

	private const float ActiveIntervalMultiplier = 4f;

	private const float DelayedSkillHitTimeout = 10f;

	private bool delayedPending;

	private float delayedPendingExpiresAt;

	private string delayedPendingToken;

	private static readonly HashSet<string> DelayedSkillTokens = new HashSet<string> { "ENGI_PRIMARY_NAME", "CHEESEWITHHOLES_BASICTANK_BODY_SECONDARY_OBLITERATOR_CANNON_NAME" };

	private static bool SkillIsDelayedHitToken(string token)
	{
		if (!string.IsNullOrEmpty(token))
		{
			return DelayedSkillTokens.Contains(token);
		}
		return false;
	}

	private void Awake()
	{
		body = ((Component)this).GetComponent<CharacterBody>();
	}

	private void OnEnable()
	{
		ResetCombo("OnEnable");
	}

	private void OnDisable()
	{
		ResetCombo("OnDisable");
	}

	private float ComputeBucketTimeoutSeconds(bool comboActive)
	{
		if (!comboActive)
		{
			return 5f;
		}
		return Mathf.Clamp(0.1f + 4f * ewmaExecuteInterval, 0.35f, Mathf.Min(2f, 5f));
	}

	public void OnEligibleSkillExecutedToken(string token)
	{
		if (!NetworkServer.active || !Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory) || body.inventory.GetItemCountEffective(RiskOfImpactContent.GetComboStarItemDef()) <= 0)
		{
			return;
		}
		BuffDef comboStarBuffDef = RiskOfImpactContent.GetComboStarBuffDef();
		int buffCount = body.GetBuffCount(comboStarBuffDef);
		float time = Time.time;
		if (lastEligibleExecuteTime > 0f)
		{
			float num = time - lastEligibleExecuteTime;
			if (num > 0f && num < 1f)
			{
				ewmaExecuteInterval = Mathf.Lerp(ewmaExecuteInterval, num, 0.2f);
			}
		}
		lastEligibleExecuteTime = time;
		if (SkillIsDelayedHitToken(token))
		{
			if (buffCount > 0)
			{
				delayedPending = true;
				delayedPendingExpiresAt = time + 10f;
				delayedPendingToken = token;
				if (ComboStarHooks.VerboseLogs)
				{
					RiskOfImpactMain.LogDebug($"[ComboStarTracker] Delayed pending started. body={body.GetDisplayName()}, token={token}, expiresAt={delayedPendingExpiresAt:0.00}");
				}
			}
			stackGrantedThisSkill = false;
			return;
		}
		if (buckets.Count == 0 || time - currentBucketStartTime > 0.2f)
		{
			currentBucketStartTime = time;
			bool comboActive = buffCount > 0;
			float num2 = ComputeBucketTimeoutSeconds(comboActive);
			buckets.Enqueue(new Bucket
			{
				hadHit = false,
				expiresAt = time + num2
			});
			if (ComboStarHooks.VerboseLogs)
			{
				RiskOfImpactMain.LogDebug($"[ComboStarTracker] New bucket. body={body.GetDisplayName()}, token={token}, stacks={buffCount}, buckets={buckets.Count}, expiresAt={time + num2:0.00}");
			}
		}
		else if (ComboStarHooks.VerboseLogs)
		{
			RiskOfImpactMain.LogDebug($"[ComboStarTracker] Reuse bucket. body={body.GetDisplayName()}, token={token}, stacks={buffCount}, buckets={buckets.Count}");
		}
		stackGrantedThisSkill = false;
	}

	public void RegisterHit()
	{
		if (!NetworkServer.active || !Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory))
		{
			return;
		}
		int itemCountEffective = body.inventory.GetItemCountEffective(RiskOfImpactContent.GetComboStarItemDef());
		if (itemCountEffective <= 0)
		{
			return;
		}
		if (delayedPending)
		{
			delayedPending = false;
			if (ComboStarHooks.VerboseLogs)
			{
				RiskOfImpactMain.LogDebug("[ComboStarTracker] Delayed window satisfied by hit. body=" + body.GetDisplayName() + ", token=" + delayedPendingToken);
			}
		}
		if (buckets.Count > 0)
		{
			int count = buckets.Count;
			Bucket item = default(Bucket);
			for (int i = 0; i < count; i++)
			{
				Bucket bucket = buckets.Dequeue();
				if (i == count - 1)
				{
					item = bucket;
				}
				else
				{
					buckets.Enqueue(bucket);
				}
			}
			item.hadHit = true;
			buckets.Enqueue(item);
		}
		else if (ComboStarHooks.VerboseLogs)
		{
			RiskOfImpactMain.LogDebug("[ComboStarTracker] RegisterHit: NO buckets (hit happened without execute tracking). body=" + body.GetDisplayName());
		}
		BuffDef comboStarBuffDef = RiskOfImpactContent.GetComboStarBuffDef();
		int buffCount = body.GetBuffCount(comboStarBuffDef);
		if (stackGrantedThisSkill)
		{
			if (ComboStarHooks.VerboseLogs)
			{
				RiskOfImpactMain.LogDebug($"[ComboStarTracker] RegisterHit: stack already granted this skill. body={body.GetDisplayName()} stacks={buffCount}");
			}
			return;
		}
		int num = 20 + 10 * (itemCountEffective - 1);
		BuffDef comboStarMaxBuffDef = RiskOfImpactContent.GetComboStarMaxBuffDef();
		if (buffCount >= num)
		{
			return;
		}
		body.AddBuff(comboStarBuffDef);
		buffCount++;
		stackGrantedThisSkill = true;
		if (ComboStarHooks.VerboseLogs)
		{
			RiskOfImpactMain.LogDebug($"[ComboStarTracker] +STACK. body={body.GetDisplayName()} stacksNow={buffCount}/{num}");
		}
		if (buffCount == num)
		{
			body.AddBuff(comboStarMaxBuffDef);
			if (ComboStarHooks.VerboseLogs)
			{
				RiskOfImpactMain.LogDebug("[ComboStarTracker] MAX reached. body=" + body.GetDisplayName() + " added max buff.");
			}
		}
	}

	private void FixedUpdate()
	{
		if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory))
		{
			return;
		}
		int itemCountEffective = body.inventory.GetItemCountEffective(RiskOfImpactContent.GetComboStarItemDef());
		BuffDef comboStarBuffDef = RiskOfImpactContent.GetComboStarBuffDef();
		int buffCount = body.GetBuffCount(comboStarBuffDef);
		int num = 20 + 10 * (itemCountEffective - 1);
		if (itemCountEffective <= 0)
		{
			if (buffCount > 0)
			{
				ResetCombo("Lost all items");
			}
			return;
		}
		if (delayedPending && buffCount > 0 && Time.time >= delayedPendingExpiresAt)
		{
			RiskOfImpactMain.LogInfo("[ComboStarTracker] Delayed expired -> reset. body=" + body.GetDisplayName() + ", token=" + delayedPendingToken);
			ResetCombo("Delayed skill hit window expired");
			return;
		}
		while (buckets.Count > 0 && Time.time >= buckets.Peek().expiresAt)
		{
			Bucket bucket = buckets.Dequeue();
			if (buffCount > 0 && !bucket.hadHit)
			{
				RiskOfImpactMain.LogInfo("[ComboStarTracker] Bucket expired without hit -> reset. body=" + body.GetDisplayName());
				ResetCombo("Bucket expired without hit");
				return;
			}
		}
		BuffDef comboStarMaxBuffDef = RiskOfImpactContent.GetComboStarMaxBuffDef();
		int buffCount2 = body.GetBuffCount(comboStarMaxBuffDef);
		if (buffCount < num && buffCount2 > 0)
		{
			body.RemoveBuff(comboStarMaxBuffDef);
			if (ComboStarHooks.VerboseLogs)
			{
				RiskOfImpactMain.LogDebug($"[ComboStarTracker] Removed max buff because stacks dropped. body={body.GetDisplayName()} stacks={buffCount}/{num}");
			}
		}
	}

	private void ResetCombo(string reason)
	{
		if (!Object.op_Implicit((Object)(object)body))
		{
			return;
		}
		BuffDef comboStarBuffDef = RiskOfImpactContent.GetComboStarBuffDef();
		int buffCount = body.GetBuffCount(comboStarBuffDef);
		if (buffCount > 0)
		{
			RiskOfImpactMain.LogInfo($"[ComboStarTracker] ResetCombo: reason={reason}, body={body.GetDisplayName()}, removing {buffCount} stacks.");
			for (int i = 0; i < buffCount; i++)
			{
				body.RemoveBuff(comboStarBuffDef);
			}
			BuffDef comboStarMaxBuffDef = RiskOfImpactContent.GetComboStarMaxBuffDef();
			if (body.GetBuffCount(comboStarMaxBuffDef) > 0)
			{
				body.RemoveBuff(comboStarMaxBuffDef);
			}
		}
		else if (ComboStarHooks.VerboseLogs)
		{
			RiskOfImpactMain.LogDebug("[ComboStarTracker] ResetCombo: reason=" + reason + ", body=" + body.GetDisplayName() + ", no stacks to remove.");
		}
		buckets.Clear();
		currentBucketStartTime = -999f;
		delayedPending = false;
		delayedPendingExpiresAt = 0f;
		delayedPendingToken = null;
		stackGrantedThisSkill = false;
	}
}
internal static class DoomedMoonHooks
{
	private const int ItemsToBreak = 5;

	private const float PctToBreak = 0.1f;

	private const float PctPerToken = 0.1f;

	private const float CritPerToken = 10f;

	private const float ArmorPerToken = 10f;

	private const float RegenBase = 0.1f;

	private const float RegenAddPerExtra = 0.02f;

	private static ItemIndex _doomedMoonIndex = (ItemIndex)(-1);

	private static ItemDef _doomedMoonDef;

	private static ItemDef _doomedMoonConsumedDef;

	private static ItemIndex _doomedMoonConsumedIndex = (ItemIndex)(-1);

	private static ItemDef _doomedMoonStatTokenDef;

	private static ItemIndex _doomedMoonStatTokenIndex = (ItemIndex)(-1);

	private static BuffDef _doomedMoonBuffDef;

	private static BuffIndex _doomedMoonBuffIndex = (BuffIndex)(-1);

	private static bool _initialized;

	private static bool _resolvedOnceLogged;

	internal static void Init()
	{
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Expected O, but got Unknown
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		//IL_0041: Expected O, but got Unknown
		if (!_initialized)
		{
			_initialized = true;
			Stage.onServerStageBegin += OnServerStageBegin;
			CharacterMaster.TryReviveOnBodyDeath += new hook_TryReviveOnBodyDeath(CharacterMaster_TryReviveOnBodyDeath);
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(ApplyStatBonuses);
			RiskOfImpactMain.LogInfo("[DoomedMoon] Hooks initialized.");
		}
	}

	private static bool EnsureResolved()
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Invalid comparison between Unknown and I4
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Invalid comparison between Unknown and I4
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Invalid comparison between Unknown and I4
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Invalid comparison between Unknown and I4
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00de: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: 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_00f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0106: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: Unknown result type (might be due to invalid IL or missing references)
		//IL_015c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0162: Invalid comparison between Unknown and I4
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_016a: Invalid comparison between Unknown and I4
		//IL_016c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0172: Invalid comparison between Unknown and I4
		//IL_0174: Unknown result type (might be due to invalid IL or missing references)
		//IL_017a: Invalid comparison between Unknown and I4
		if ((int)_doomedMoonIndex != -1 && (int)_doomedMoonConsumedIndex != -1 && (int)_doomedMoonStatTokenIndex != -1 && (int)_doomedMoonBuffIndex != -1 && Object.op_Implicit((Object)(object)_doomedMoonDef) && Object.op_Implicit((Object)(object)_doomedMoonConsumedDef) && Object.op_Implicit((Object)(object)_doomedMoonStatTokenDef) && Object.op_Implicit((Object)(object)_doomedMoonBuffDef))
		{
			return true;
		}
		try
		{
			_doomedMoonDef = RiskOfImpactContent.GetDoomedMoonItemDef();
			_doomedMoonConsumedDef = RiskOfImpactContent.GetDoomedMoonConsumedItemDef();
			_doomedMoonStatTokenDef = RiskOfImpactContent.GetDoomedMoonStatTokenItemDef();
			_doomedMoonBuffDef = RiskOfImpactContent.GetDoomedMoonBuffDef();
		}
		catch (Exception arg)
		{
			if (!_resolvedOnceLogged)
			{
				_resolvedOnceLogged = true;
				RiskOfImpactMain.LogWarning($"[DoomedMoon] EnsureResolved failed to fetch defs from content provider: {arg}");
			}
			return false;
		}
		if (!Object.op_Implicit((Object)(object)_doomedMoonDef) || !Object.op_Implicit((Object)(object)_doomedMoonConsumedDef) || !Object.op_Implicit((Object)(object)_doomedMoonStatTokenDef) || !Object.op_Implicit((Object)(object)_doomedMoonBuffDef))
		{
			return false;
		}
		_doomedMoonIndex = _doomedMoonDef.itemIndex;
		_doomedMoonConsumedIndex = _doomedMoonConsumedDef.itemIndex;
		_doomedMoonStatTokenIndex = _doomedMoonStatTokenDef.itemIndex;
		_doomedMoonBuffIndex = _doomedMoonBuffDef.buffIndex;
		if ((Object)(object)_doomedMoonConsumedDef.requiredExpansion == (Object)null)
		{
			_doomedMoonConsumedDef.requiredExpansion = _doomedMoonDef.requiredExpansion;
		}
		if ((Object)(object)_doomedMoonStatTokenDef.requiredExpansion == (Object)null)
		{
			_doomedMoonStatTokenDef.requiredExpansion = _doomedMoonDef.requiredExpansion;
		}
		if ((int)_doomedMoonIndex != -1 && (int)_doomedMoonConsumedIndex != -1 && (int)_doomedMoonStatTokenIndex != -1)
		{
			return (int)_doomedMoonBuffIndex != -1;
		}
		return false;
	}

	private static void OnServerStageBegin(Stage stage)
	{
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		if (!NetworkServer.active || !EnsureResolved())
		{
			return;
		}
		TryTransformResult val3 = default(TryTransformResult);
		foreach (CharacterMaster readOnlyInstances in CharacterMaster.readOnlyInstancesList)
		{
			Inventory val = ((readOnlyInstances != null) ? readOnlyInstances.inventory : null);
			if (Object.op_Implicit((Object)(object)val))
			{
				int itemCountPermanent = val.GetItemCountPermanent(_doomedMoonConsumedIndex);
				if (itemCountPermanent > 0)
				{
					ItemTransformation val2 = default(ItemTransformation);
					((ItemTransformation)(ref val2)).originalItemIndex = _doomedMoonConsumedIndex;
					((ItemTransformation)(ref val2)).newItemIndex = _doomedMoonIndex;
					((ItemTransformation)(ref val2)).minToTransform = itemCountPermanent;
					((ItemTransformation)(ref val2)).maxToTransform = itemCountPermanent;
					val2.transformationType = (ItemTransformationTypeIndex)7;
					((ItemTransformation)(ref val2)).TryTransform(val, ref val3);
				}
			}
		}
	}

	private static bool CharacterMaster_TryReviveOnBodyDeath(orig_TryReviveOnBodyDeath orig, CharacterMaster self, CharacterBody body)
	{
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0096: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f6: 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_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0110: Unknown result type (might be due to invalid IL or missing references)
		//IL_0129: Unknown result type (might be due to invalid IL or missing references)
		//IL_0133: Unknown result type (might be due to invalid IL or missing references)
		//IL_0138: Unknown result type (might be due to invalid IL or missing references)
		if (orig.Invoke(self, body))
		{
			return true;
		}
		if (!NetworkServer.active)
		{
			return false;
		}
		if (!Object.op_Implicit((Object)(object)self) || !Object.op_Implicit((Object)(object)body))
		{
			return false;
		}
		if (!EnsureResolved())
		{
			return false;
		}
		if (self.IsExtraLifePendingServer())
		{
			return true;
		}
		Inventory inventory = self.inventory;
		if (!Object.op_Implicit((Object)(object)inventory))
		{
			return false;
		}
		if (inventory.GetItemCountPermanent(_doomedMoonIndex) <= 0)
		{
			return false;
		}
		if (!BreakRandomItems(inventory, 5, 0.1f))
		{
			return false;
		}
		ItemTransformation val = default(ItemTransformation);
		((ItemTransformation)(ref val)).originalItemIndex = _doomedMoonIndex;
		((ItemTransformation)(ref val)).newItemIndex = _doomedMoonConsumedIndex;
		((ItemTransformation)(ref val)).minToTransform = 1;
		((ItemTransformation)(ref val)).maxToTransform = 1;
		val.transformationType = (ItemTransformationTypeIndex)0;
		TakeResult pendingTransformation = default(TakeResult);
		if (!((ItemTransformation)(ref val)).TryTake(inventory, ref pendingTransformation))
		{
			return false;
		}
		inventory.GiveItemPermanent(_doomedMoonStatTokenIndex, 1);
		ExtraLifeServerBehavior obj = ((Component)self).gameObject.AddComponent<ExtraLifeServerBehavior>();
		obj.pendingTransformation = pendingTransformation;
		obj.consumedItemIndex = _doomedMoonConsumedIndex;
		obj.completionTime = FixedTimeStamp.now + 2f;
		obj.completionCallback = delegate
		{
			RespawnDoomedMoon(self);
		};
		obj.soundTime = obj.completionTime - 1f;
		obj.soundCallback = delegate
		{
			PlayDoomedMoonSfx(self);
		};
		return true;
	}

	private static void RespawnDoomedMoon(CharacterMaster master)
	{
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0069: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Unknown result type (might be due to invalid IL or missing references)
		//IL_0105: Unknown result type (might be due to invalid IL or missing references)
		//IL_0106: Unknown result type (might be due to invalid IL or missing references)
		//IL_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0118: Unknown result type (might be due to invalid IL or missing references)
		//IL_011d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0128: Expected O, but got Unknown
		//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: Unknown result type (might be due to invalid IL or missing references)
		//IL_0067: Unknown result type (might be due to invalid IL or missing references)
		if (!Object.op_Implicit((Object)(object)master))
		{
			return;
		}
		Vector3 val = master.deathFootPosition;
		if (master.killedByUnsafeArea)
		{
			CharacterBody val2 = (Object.op_Implicit((Object)(object)master.bodyPrefab) ? master.bodyPrefab.GetComponent<CharacterBody>() : null);
			if (Object.op_Implicit((Object)(object)val2))
			{
				val = (Vector3)(((??)TeleportHelper.FindSafeTeleportDestination(master.deathFootPosition, val2, RoR2Application.rng)) ?? master.deathFootPosition);
			}
		}
		master.Respawn(val, Quaternion.Euler(0f, Random.Range(0f, 360f), 0f), true);
		CharacterBody body = master.GetBody();
		if (Object.op_Implicit((Object)(object)body))
		{
			body.AddTimedBuff(Buffs.Immune, 3f);
			EntityStateMachine[] components = ((Component)body).GetComponents<EntityStateMachine>();
			foreach (EntityStateMachine obj in components)
			{
				obj.initialStateType = obj.mainStateType;
			}
			SyncDoomedMoonBuff(body);
		}
		GameObject val3 = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/HippoRezEffect");
		if (Object.op_Implicit((Object)(object)val3) && Object.op_Implicit((Object)(object)master.bodyInstanceObject))
		{
			EffectManager.SpawnEffect(val3, new EffectData
			{
				origin = val,
				rotation = master.bodyInstanceObject.transform.rotation
			}, true);
		}
	}

	private static void PlayDoomedMoonSfx(CharacterMaster master)
	{
		if (Object.op_Implicit((Object)(object)master) && Object.op_Implicit((Object)(object)master.bodyInstanceObject))
		{
			Util.PlaySound("Play_item_proc_extraLife", master.bodyInstanceObject);
		}
	}

	private static void ApplyStatBonuses(CharacterBody body, StatHookEventArgs args)
	{
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.inventory) && EnsureResolved())
		{
			if (NetworkServer.active)
			{
				SyncDoomedMoonBuff(body);
			}
			int itemCountPermanent = body.inventory.GetItemCountPermanent(_doomedMoonStatTokenIndex);
			if (itemCountPermanent > 0)
			{
				float num = 0.1f * (float)itemCountPermanent;
				float num2 = 1f + num;
				args.healthTotalMult *= num2;
				args.damageTotalMult *= num2;
				args.moveSpeedTotalMult *= num2;
				args.attackSpeedTotalMult *= num2;
				args.critAdd += 10f * (float)itemCountPermanent;
				args.armorAdd += 10f * (float)itemCountPermanent;
				args.baseRegenAdd += 0.1f + 0.02f * (float)Mathf.Max(0, itemCountPermanent - 1);
			}
		}
	}

	private static bool BreakRandomItems(Inventory inv, int toBreak, float pctBreak)
	{
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
		List<ItemIndex> list = new List<ItemIndex>(256);
		AllItemsEnumerator enumerator = ItemCatalog.allItems.GetEnumerator();
		try
		{
			while (((AllItemsEnumerator)(ref enumerator)).MoveNext())
			{
				ItemIndex current = ((AllItemsEnumerator)(ref enumerator)).Current;
				if (IsBreakable(inv, current))
				{
					int itemCountPermanent = inv.GetItemCountPermanent(current);
					for (int i = 0; i < itemCountPermanent; i++)
					{
						list.Add(current);
					}
				}
			}
		}
		finally
		{
			((IDisposable)(AllItemsEnumerator)(ref enumerator)).Dispose();
		}
		if (list.Count < toBreak)
		{
			return false;
		}
		int num = Mathf.Max(toBreak, Mathf.CeilToInt(pctBreak * (float)list.Count));
		for (int j = 0; j < num; j++)
		{
			int index = Random.Range(0, list.Count);
			ItemIndex val = list[index];
			inv.RemoveItemPermanent(val, 1);
			list.RemoveAt(index);
		}
		return true;
	}

	private static bool IsBreakable(Inventory inv, ItemIndex idx)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0002: Invalid comparison between Unknown and I4
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Invalid comparison between Unknown and I4
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Invalid comparison between Unknown and I4
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Invalid comparison between Unknown and I4
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Invalid comparison between Unknown and I4
		//IL_0067: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Invalid comparison between Unknown and I4
		//IL_007c: Unknown result type (might be due to invalid IL or missing references)
		if ((int)idx == -1)
		{
			return false;
		}
		if (!Object.op_Implicit((Object)(object)inv))
		{
			return false;
		}
		if (idx == _doomedMoonIndex)
		{
			return false;
		}
		if (idx == _doomedMoonConsumedIndex)
		{
			return false;
		}
		if (idx == _doomedMoonStatTokenIndex)
		{
			return false;
		}
		ItemDef itemDef = ItemCatalog.GetItemDef(idx);
		if (!Object.op_Implicit((Object)(object)itemDef))
		{
			return false;
		}
		if ((int)itemDef.tier == 6 || (int)itemDef.tier == 7 || (int)itemDef.tier == 8 || (int)itemDef.tier == 9)
		{
			return false;
		}
		if ((int)itemDef.tier == 5)
		{
			return false;
		}
		if (!itemDef.canRemove)
		{
			return false;
		}
		return inv.GetItemCountPermanent(idx) > 0;
	}

	private static void SyncDoomedMoonBuff(CharacterBody body)
	{
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Invalid comparison between Unknown and I4
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		if (NetworkServer.active && Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.inventory) && (int)_doomedMoonBuffIndex != -1)
		{
			int itemCountPermanent = body.inventory.GetItemCountPermanent(_doomedMoonStatTokenIndex);
			itemCountPermanent = Mathf.Clamp(itemCountPermanent, 0, 255);
			body.SetBuffCount(_doomedMoonBuffIndex, itemCountPermanent);
		}
	}
}
public class LanceOfLonginusEquipment : MonoBehaviour
{
	public EquipmentDef lanceEquipmentDef;

	public GameObject lanceProjectilePrefab;

	public float damageCoefficient = 90f;

	public float projectileSpeed = 200f;

	public float projectileForce;

	public bool Activate(EquipmentSlot slot)
	{
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_009c: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Unknown result type (might be due to invalid IL or missing references)
		//IL_0105: Unknown result type (might be due to invalid IL or missing references)
		//IL_0107: Unknown result type (might be due to invalid IL or missing references)
		//IL_010e: Unknown result type (might be due to invalid IL or missing references)
		if (!Object.op_Implicit((Object)(object)slot) || !Object.op_Implicit((Object)(object)slot.characterBody))
		{
			return false;
		}
		if (!NetworkServer.active)
		{
			return false;
		}
		CharacterBody characterBody = slot.characterBody;
		Ray aimRay = slot.GetAimRay();
		Vector3 position = characterBody.corePosition + Vector3.up * 1f + ((Ray)(ref aimRay)).direction * 1.5f;
		Quaternion rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction) * Quaternion.Euler(90f, 0f, 0f);
		FireProjectileInfo val = default(FireProjectileInfo);
		val.projectilePrefab = lanceProjectilePrefab;
		val.position = position;
		val.rotation = rotation;
		val.owner = ((Component)characterBody).gameObject;
		val.damage = characterBody.damage * damageCoefficient;