Decompiled source of ZBroly v1.0.2

Dragon Ball Z/ZBroly.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using DBZUtils;
using EntityStates;
using EntityStates.Commando;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Skills;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("Dragonyck")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ZBroly")]
[assembly: AssemblyTitle("ZBroly")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace ZBroly
{
	internal class Assets
	{
		public static AssetBundle MainAssetBundle;

		public static void PopulateAssets()
		{
			if ((Object)(object)MainAssetBundle == (Object)null)
			{
				using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ZBroly.zbrolyassets");
				MainAssetBundle = AssetBundle.LoadFromStream(stream);
			}
			using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("ZBroly.ZBroly.bnk");
			byte[] array = new byte[stream2.Length];
			stream2.Read(array, 0, array.Length);
			SoundBanks.Add(array);
		}
	}
	internal class Hook
	{
		internal static void Hooks()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
		}

		internal static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.DragonyckZBroly", "ZBroly", "1.0.2")]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	public class MainPlugin : BaseUnityPlugin
	{
		public const string MODUID = "com.DragonyckZBroly";

		public const string MODNAME = "ZBroly";

		public const string VERSION = "1.0.2";

		public const string SURVIVORNAME = "ZBroly";

		public const string SURVIVORNAMEKEY = "ZBROLY";

		public const string SURVIVORNAME2 = "ZBroly (SSJ)";

		public const string SURVIVORNAMEKEY2 = "ZBROLY2";

		public const string SURVIVORNAME3 = "ZBroly (LSSJ)";

		public const string SURVIVORNAMEKEY3 = "ZBROLY3";

		public const string SURVIVORNAME4 = "ZBroly (LSSJ3)";

		public const string SURVIVORNAMEKEY4 = "ZBROLY4";

		private static List<string> powerupBodyList = new List<string> { "ZBrolyBody", "ZBroly (SSJ)Body", "ZBroly (LSSJ)Body", "ZBroly (LSSJ3)Body" };

		private static float desiredSortPosition = 15f;

		private void Awake()
		{
			Assets.PopulateAssets();
			Prefabs.CreatePrefabs();
			CreateSurvivor();
			LanguageAPI.Add("ZBROLY_M1", "Gigantic Assault");
			CreatePowerupSurvivor("ZBrolySSJ", "ZBroly (SSJ)", "ZBROLY2", 1.5f);
			CreatePowerupSurvivor("ZBrolyLSJ", "ZBroly (LSSJ)", "ZBROLY3", 2f);
			CreatePowerupSurvivor("ZBrolyLSJ3", "ZBroly (LSSJ3)", "ZBROLY4", 3f);
			RegisterStates();
			Hook.Hooks();
		}

		internal static void CreateSurvivor()
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_0285: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Expected O, but got Unknown
			//IL_02b8: Expected O, but got Unknown
			//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ef: Expected O, but got Unknown
			//IL_02ef: Expected O, but got Unknown
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0326: Expected O, but got Unknown
			//IL_0326: Expected O, but got Unknown
			//IL_033e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_035d: Expected O, but got Unknown
			//IL_035d: Expected O, but got Unknown
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_038a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0394: Expected O, but got Unknown
			//IL_0394: Expected O, but got Unknown
			//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cb: Expected O, but got Unknown
			//IL_03cb: Expected O, but got Unknown
			//IL_03e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0402: Expected O, but got Unknown
			//IL_0402: Expected O, but got Unknown
			//IL_041a: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0439: Expected O, but got Unknown
			//IL_0439: Expected O, but got Unknown
			//IL_0451: Unknown result type (might be due to invalid IL or missing references)
			//IL_0466: Unknown result type (might be due to invalid IL or missing references)
			//IL_0470: Expected O, but got Unknown
			//IL_0470: Expected O, but got Unknown
			//IL_0488: Unknown result type (might be due to invalid IL or missing references)
			//IL_049d: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a7: Expected O, but got Unknown
			//IL_04a7: Expected O, but got Unknown
			//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04de: Expected O, but got Unknown
			//IL_04de: Expected O, but got Unknown
			//IL_04f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_050b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0515: Expected O, but got Unknown
			//IL_0515: Expected O, but got Unknown
			//IL_052d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0542: Unknown result type (might be due to invalid IL or missing references)
			//IL_054c: Expected O, but got Unknown
			//IL_054c: Expected O, but got Unknown
			//IL_0564: Unknown result type (might be due to invalid IL or missing references)
			//IL_0579: Unknown result type (might be due to invalid IL or missing references)
			//IL_0583: Expected O, but got Unknown
			//IL_0583: Expected O, but got Unknown
			//IL_059b: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b7: Expected O, but got Unknown
			//IL_05b7: Expected O, but got Unknown
			//IL_05cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ee: Expected O, but got Unknown
			//IL_05ee: Expected O, but got Unknown
			//IL_05f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0621: Unknown result type (might be due to invalid IL or missing references)
			//IL_0626: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0768: Unknown result type (might be due to invalid IL or missing references)
			//IL_0772: Unknown result type (might be due to invalid IL or missing references)
			//IL_0790: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b6: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Assets.MainAssetBundle.LoadAsset<GameObject>("ZBroly");
			ChildLocator component = val.GetComponent<ChildLocator>();
			SurvivorDef val2 = default(SurvivorDef);
			CharacterBody val3 = DBZSurvivors.SetupNewDBZSurvivor(val, "ZBroly", ref val2);
			((Object)val3).name = "ZBrolyBody";
			val3.baseNameToken = "ZBROLY_NAME";
			val3.subtitleNameToken = "ZBROLY_SUBTITLE";
			val3.bodyFlags = (BodyFlags)16;
			val3.rootMotionInMainState = false;
			val3.mainRootSpeed = 0f;
			val3.baseMaxHealth = 110f;
			val3.levelMaxHealth = 33f;
			val3.baseRegen = 1.5f;
			val3.levelRegen = 0.2f;
			val3.baseMaxShield = 0f;
			val3.levelMaxShield = 0f;
			val3.baseMoveSpeed = 7f;
			val3.levelMoveSpeed = 0f;
			val3.baseAcceleration = 110f;
			val3.baseJumpPower = 15f;
			val3.levelJumpPower = 0f;
			val3.baseDamage = 12f;
			val3.levelDamage = 2.4f;
			val3.baseAttackSpeed = 1f;
			val3.levelAttackSpeed = 0f;
			val3.baseCrit = 1f;
			val3.levelCrit = 0f;
			val3.baseArmor = 20f;
			val3.levelArmor = 0f;
			val3.baseJumpCount = 1;
			val3.sprintingSpeedMultiplier = 1.45f;
			val3.wasLucky = false;
			val3.hideCrosshair = false;
			val3.hullClassification = (HullClassification)0;
			val3.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait").texture;
			val3.isChampion = false;
			val3.currentVehicle = null;
			val3.skinIndex = 0u;
			val3.preferredPodPrefab = Prefabs.DBZPodPrefab;
			val3.bodyColor = new Color(0.63922f, 0.72157f, 0.09804f);
			ConfigFile val4 = Utils.CreateConfig(val3);
			KiBehaviour component2 = ((Component)val3).GetComponent<KiBehaviour>();
			component2.hasPowerup = true;
			((Component)val3).GetComponent<KiBehaviour>().passiveRegen = true;
			((Component)val3).GetComponent<ModelLocator>().modelBaseTransform.GetChild(0).localPosition = new Vector3(0f, 2.4f, 0f);
			DBZSurvivorDef val5 = ScriptableObject.CreateInstance<DBZSurvivorDef>();
			val5.attackVO = Sounds.Play_DBZ_Broly_ATKGrunt;
			val5.bossEncounterVO = Sounds.Play_DBZ_Broly_FinalBossEncounter;
			val5.bossKillVO = Sounds.Play_DBZ_Broly_BossKill;
			val5.heavyHitVO = Sounds.Play_DBZ_Broly_HeavyDMGGrunt;
			val5.killVO = Sounds.Play_DBZ_Broly_Kill;
			val5.lightHitVO = Sounds.Play_DBZ_Broly_LightDMGGrunt;
			val5.skillVO = Sounds.Play_DBZ_Broly_Skill;
			val5.deathVO = Sounds.Play_DBZ_Broly_Death;
			val5.vfxColor = (VFXColor)3;
			val5.config = val4;
			val5.powerupBodyList = powerupBodyList;
			val5.memory = new PowerupMemory
			{
				spentKiCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Ki Spent", "Coefficient"), 0.0025f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				baseKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Base Kill", "Coefficient"), 1f, new ConfigDescription("FinalValue = xKillCoeff * baseKillCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				regularKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Regular Enemy Kill", "Coefficient"), 0.01f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				eliteKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Elite Kill", "Coefficient"), 0.02f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				bossKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Boss Kill", "Coefficient"), 0.035f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				baseItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Base Item", "Coefficient"), 1f, new ConfigDescription("FinalValue = xItemCoeff * baseItemCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				whiteItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: White Item", "Coefficient"), 0.001f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				greenItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Green Item", "Coefficient"), 0.002f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				bossItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Boss Item", "Coefficient"), 0.003f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				redItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Red Item", "Coefficient"), 0.0035f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				lunarItemMaxCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Lunar Item Max Coefficient", "Coefficient"), 0.004f, new ConfigDescription("Random chance between 0 and this value.", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				moddedTierItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Ki Spent", "Coefficient"), 0.0025f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				baseDamageDealtCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Damage Dealt", "Coefficient"), 5E-07f, new ConfigDescription("FinalValue = xDamageDealt * baseDamageCoefficient * powerupCount. Item procs count towards powerup gains.", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				baseDamageTakenCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Damage Taken", "Coefficient"), 5E-06f, new ConfigDescription("FinalValue = xDamageTaken * baseDamageCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				requiredKillsForBonus = val4.Bind<int>(new ConfigDefinition("Powerup: Required Kills For Bonus Gain", "Kills"), 100, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				bonusBasedOnRequiredKills = val4.Bind<float>(new ConfigDefinition("Powerup: Bonus Based On Required Kills", "Bonus"), 0.0025f, new ConfigDescription("FinalValue = bonusBasedOnRequiredKills * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value
			};
			DBZSurvivorCatalog.AddDBZSurvivorDef(val3.baseNameToken, val5);
			EntityStateMachine component3 = ((Component)val3).GetComponent<EntityStateMachine>();
			component3.mainStateType = new SerializableEntityStateType(typeof(CharacterMain));
			string text = "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > ";
			string text2 = "..and so he left.";
			string text3 = "..and so he vanished.";
			LanguageAPI.Add("ZBROLY_NAME", "ZBroly");
			LanguageAPI.Add("ZBROLY_DESCRIPTION", text);
			LanguageAPI.Add("ZBROLY_SUBTITLE", "");
			LanguageAPI.Add("ZBROLY_OUTRO", text2);
			LanguageAPI.Add("ZBROLY_FAIL", text3);
			val2.primaryColor = val3.bodyColor;
			val2.displayPrefab = Utils.RemoveDither(val, "ZBrolyDisplay");
			val2.desiredSortPosition = desiredSortPosition;
			SkillLocator component4 = ((Component)val3).GetComponent<SkillLocator>();
			AddPrimary(component4);
			AddSecondary(component4, "DBZ_POWEREDSHELL_SKILL_NAME", "DBZ_POWEREDSHELL_SKILL_DESCRIPTION", Prefabs.poweredShellIcon, typeof(QuickEventProjectileState));
			AddUtility(component4);
			AddSpecial(component4, "DBZ_SUPEREXPLOSIVEWAVE_NAME", "DBZ_SUPEREXPLOSIVEWAVE_DESCRIPTION", Prefabs.superexplosivewaveGREEN, typeof(Special));
			AddHitBoxes(val.transform);
			Utils.CreateHitbox("GiganticRage", val.transform, Vector3.one * 8f).transform.localPosition = new Vector3(0f, 1.5f, 2f);
			DBZSurvivors.survivorSceneProps.Add(val, new TransformMemory
			{
				position = default(Vector3)
			});
		}

		internal static void CreatePowerupSurvivor(string modelName, string survivorName, string survivorNameKey, float statMultValue)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			//IL_0044: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_0252: Unknown result type (might be due to invalid IL or missing references)
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_026d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_028b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_032a: Unknown result type (might be due to invalid IL or missing references)
			//IL_033f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Expected O, but got Unknown
			//IL_0349: Expected O, but got Unknown
			//IL_0360: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_037f: Expected O, but got Unknown
			//IL_037f: Expected O, but got Unknown
			//IL_0396: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: Expected O, but got Unknown
			//IL_03b5: Expected O, but got Unknown
			//IL_03cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03eb: Expected O, but got Unknown
			//IL_03eb: Expected O, but got Unknown
			//IL_0402: Unknown result type (might be due to invalid IL or missing references)
			//IL_0417: Unknown result type (might be due to invalid IL or missing references)
			//IL_0421: Expected O, but got Unknown
			//IL_0421: Expected O, but got Unknown
			//IL_0438: Unknown result type (might be due to invalid IL or missing references)
			//IL_044d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0457: Expected O, but got Unknown
			//IL_0457: Expected O, but got Unknown
			//IL_046e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0483: Unknown result type (might be due to invalid IL or missing references)
			//IL_048d: Expected O, but got Unknown
			//IL_048d: Expected O, but got Unknown
			//IL_04a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c3: Expected O, but got Unknown
			//IL_04c3: Expected O, but got Unknown
			//IL_04da: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f9: Expected O, but got Unknown
			//IL_04f9: Expected O, but got Unknown
			//IL_0510: Unknown result type (might be due to invalid IL or missing references)
			//IL_0525: Unknown result type (might be due to invalid IL or missing references)
			//IL_052f: Expected O, but got Unknown
			//IL_052f: Expected O, but got Unknown
			//IL_0546: Unknown result type (might be due to invalid IL or missing references)
			//IL_055b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0565: Expected O, but got Unknown
			//IL_0565: Expected O, but got Unknown
			//IL_057c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0591: Unknown result type (might be due to invalid IL or missing references)
			//IL_059b: Expected O, but got Unknown
			//IL_059b: Expected O, but got Unknown
			//IL_05b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d1: Expected O, but got Unknown
			//IL_05d1: Expected O, but got Unknown
			//IL_05e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0607: Expected O, but got Unknown
			//IL_0607: Expected O, but got Unknown
			//IL_061e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0630: Unknown result type (might be due to invalid IL or missing references)
			//IL_063a: Expected O, but got Unknown
			//IL_063a: Expected O, but got Unknown
			//IL_0651: Unknown result type (might be due to invalid IL or missing references)
			//IL_0666: Unknown result type (might be due to invalid IL or missing references)
			//IL_0670: Expected O, but got Unknown
			//IL_0670: Expected O, but got Unknown
			//IL_067a: Unknown result type (might be due to invalid IL or missing references)
			//IL_067c: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0764: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a15: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a26: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a30: Expected O, but got Unknown
			//IL_0a30: Expected O, but got Unknown
			//IL_0a5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a65: Unknown result type (might be due to invalid IL or missing references)
			//IL_0814: Unknown result type (might be due to invalid IL or missing references)
			//IL_08db: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Assets.MainAssetBundle.LoadAsset<GameObject>(modelName);
			SurvivorDef val2 = default(SurvivorDef);
			CharacterBody val3 = DBZSurvivors.SetupNewDBZSurvivor(val, survivorName, ref val2);
			ConfigFile val4 = Utils.CreateConfig(val3);
			float value = val4.Bind<float>(new ConfigDefinition("Powerup: Stat Multiplier", "Multiplier"), statMultValue, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			((Object)val3).name = survivorName + "Body";
			val3.baseNameToken = survivorNameKey + "_NAME";
			val3.subtitleNameToken = survivorNameKey + "_SUBTITLE";
			val3.bodyFlags = (BodyFlags)16;
			val3.rootMotionInMainState = false;
			val3.mainRootSpeed = 0f;
			val3.baseMaxHealth = 110f * value;
			val3.levelMaxHealth = 33f * value;
			val3.baseRegen = 1.5f * value;
			val3.levelRegen = 0.2f * value;
			val3.baseMaxShield = 0f;
			val3.levelMaxShield = 0f;
			val3.baseMoveSpeed = 7f;
			val3.levelMoveSpeed = 0f;
			val3.baseAcceleration = 110f;
			val3.baseJumpPower = 15f;
			val3.levelJumpPower = 0f;
			val3.baseDamage = 12f * value;
			val3.levelDamage = 2.4f * value;
			val3.baseAttackSpeed = 1f;
			val3.levelAttackSpeed = 0f;
			val3.baseCrit = 1f * value;
			val3.levelCrit = 0f;
			val3.baseArmor = 20f * value;
			val3.levelArmor = 0f;
			val3.baseJumpCount = 1;
			val3.sprintingSpeedMultiplier = 1.45f;
			val3.wasLucky = false;
			val3.hideCrosshair = false;
			val3.hullClassification = (HullClassification)0;
			val3.isChampion = false;
			val3.currentVehicle = null;
			val3.skinIndex = 0u;
			val3.bodyColor = new Color(0.63922f, 0.72157f, 0.09804f);
			val3.aimOriginTransform.localPosition = new Vector3(0f, 1f, 0f);
			KiBehaviour component = ((Component)val3).GetComponent<KiBehaviour>();
			component.hasPowerup = true;
			component.maxKiValue = 1f * value;
			component.passiveRegenValue = 0.02f * value;
			component.passiveRegen = true;
			((Component)val3).GetComponent<DBZSkillBehaviour>().baseSecondaryCost = 0.05f;
			EntityStateMachine component2 = ((Component)val3).GetComponent<EntityStateMachine>();
			component2.initialStateType = new SerializableEntityStateType(typeof(BasePowerupSpawnState));
			component2.mainStateType = new SerializableEntityStateType(typeof(CharacterMain));
			CharacterDeathBehavior component3 = ((Component)val3).GetComponent<CharacterDeathBehavior>();
			component3.deathState = new SerializableEntityStateType(typeof(DeathState));
			DBZSurvivorDef val5 = ScriptableObject.CreateInstance<DBZSurvivorDef>();
			val5.config = val4;
			val5.attackVO = Sounds.Play_DBZ_Broly_ATKGrunt;
			val5.bossEncounterVO = Sounds.Play_DBZ_Broly_FinalBossEncounter;
			val5.bossKillVO = Sounds.Play_DBZ_Broly_BossKill;
			val5.heavyHitVO = Sounds.Play_DBZ_Broly_HeavyDMGGrunt;
			val5.killVO = Sounds.Play_DBZ_Broly_Kill;
			val5.lightHitVO = Sounds.Play_DBZ_Broly_LightDMGGrunt;
			val5.skillVO = Sounds.Play_DBZ_Broly_Skill;
			val5.deathVO = Sounds.Play_DBZ_Broly_Death;
			val5.vfxColor = (VFXColor)2;
			val5.powerupBodyList = powerupBodyList;
			val5.memory = new PowerupMemory
			{
				spentKiCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Ki Spent", "Coefficient"), 0.0025f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				baseKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Base Kill", "Coefficient"), 1f, new ConfigDescription("FinalValue = xKillCoeff * baseKillCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				regularKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Regular Enemy Kill", "Coefficient"), 0.01f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				eliteKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Elite Kill", "Coefficient"), 0.02f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				bossKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Boss Kill", "Coefficient"), 0.035f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				baseItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Base Item", "Coefficient"), 1f, new ConfigDescription("FinalValue = xItemCoeff * baseItemCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				whiteItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: White Item", "Coefficient"), 0.001f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				greenItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Green Item", "Coefficient"), 0.002f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				bossItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Boss Item", "Coefficient"), 0.003f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				redItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Red Item", "Coefficient"), 0.0035f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				lunarItemMaxCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Lunar Item Max Coefficient", "Coefficient"), 0.004f, new ConfigDescription("Random chance between 0 and this value.", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				moddedTierItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Ki Spent", "Coefficient"), 0.0025f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				baseDamageDealtCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Damage Dealt", "Coefficient"), 5E-07f, new ConfigDescription("FinalValue = xDamageDealt * baseDamageCoefficient * powerupCount. Item procs count towards powerup gains.", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				baseDamageTakenCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Damage Taken", "Coefficient"), 5E-06f, new ConfigDescription("FinalValue = xDamageTaken * baseDamageCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				requiredKillsForBonus = val4.Bind<int>(new ConfigDefinition("Powerup: Required Kills For Bonus Gain", "Kills"), 100, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
				bonusBasedOnRequiredKills = val4.Bind<float>(new ConfigDefinition("Powerup: Bonus Based On Required Kills", "Bonus"), 0.0025f, new ConfigDescription("FinalValue = bonusBasedOnRequiredKills * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value
			};
			SkillLocator component4 = ((Component)val3).GetComponent<SkillLocator>();
			switch (survivorName)
			{
			case "ZBroly (SSJ)":
				val5.vfxColor = (VFXColor)4;
				AddPrimary(component4);
				AddSecondary(component4, "DBZ_CRUSHCANNON_SKILL_NAME", "DBZ_CRUSHCANNON_SKILL_DESCRIPTION", Prefabs.lightgrenadeGREEN, typeof(ChargeProjectileChargeState));
				AddUtility(component4);
				AddSpecial(component4, "DBZ_GIGANTICRAGE_SKILL_NAME", "DBZ_GIGANTICRAGE_SKILL_DESCRIPTION", Assets.MainAssetBundle.LoadAsset<Sprite>("giganticRage"), typeof(GiganticRageState), "Idle1");
				val2.desiredSortPosition = desiredSortPosition + 0.1f;
				((Component)val3).GetComponent<ModelLocator>().modelBaseTransform.GetChild(0).localPosition = new Vector3(0f, 2.4f, 0f);
				val3.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait2").texture;
				break;
			case "ZBroly (LSSJ)":
				AddPrimary(component4);
				AddSecondary(component4, "DBZ_GIGANTICRAGE_SKILL_NAME", "DBZ_GIGANTICRAGE_SKILL_DESCRIPTION", Assets.MainAssetBundle.LoadAsset<Sprite>("giganticRage"), typeof(GiganticRageState), "Idle1");
				AddUtility(component4);
				AddSpecial(component4, "DBZ_GIGANTICMETEOR_SKILL_NAME", "DBZ_GIGANTICMETEOR_SKILL_DESCRIPTION", Prefabs.giganticMeteorIcon, typeof(GiganticMeteor));
				((Component)val3).GetComponent<ModelLocator>().modelBaseTransform.GetChild(0).localPosition = new Vector3(0f, 2.4f, 0f);
				val2.desiredSortPosition = desiredSortPosition + 0.2f;
				val3.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait3").texture;
				break;
			case "ZBroly (LSSJ3)":
				AddPrimary(component4);
				AddSecondary(component4, "DBZ_GIGANTICMETEOR_SKILL_NAME", "DBZ_GIGANTICMETEOR_SKILL_DESCRIPTION", Prefabs.giganticMeteorIcon, typeof(GiganticMeteor));
				AddUtility(component4);
				AddSpecial(component4, "DBZ_DUALGIGANTICMETEOR_SKILL_NAME", "DBZ_DUALGIGANTICMETEOR_SKILL_DESCRIPTION", Prefabs.doubleGiganticMeteorIcon, typeof(DoubleGiganticMeteor));
				component.hasPowerup = false;
				val5.powerupBodyList = null;
				((Component)val3).GetComponent<ModelLocator>().modelBaseTransform.GetChild(0).localPosition = new Vector3(0f, 2.7f, 0f);
				val2.desiredSortPosition = desiredSortPosition + 0.3f;
				val3.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait4").texture;
				break;
			}
			DBZSurvivorCatalog.AddDBZSurvivorDef(val3.baseNameToken, val5);
			string text = "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Fill up your transformation bar by beating enemies, using skills, and playing the game in general.";
			string text2 = "..and so he left.";
			string text3 = "..and so he vanished.";
			LanguageAPI.Add(survivorNameKey + "_NAME", survivorName);
			LanguageAPI.Add(survivorNameKey + "_DESCRIPTION", text);
			LanguageAPI.Add(survivorNameKey + "_SUBTITLE", "");
			LanguageAPI.Add(survivorNameKey + "_OUTRO", text2);
			LanguageAPI.Add(survivorNameKey + "_FAIL", text3);
			val2.primaryColor = val3.bodyColor;
			val2.displayPrefab = Utils.RemoveDither(val, survivorName + "Display");
			val2.hidden = val4.Bind<bool>(new ConfigDefinition("Hidden Survivor", "Hidden"), true, new ConfigDescription("Hide in Character Select", (AcceptableValueBase)null, Array.Empty<object>())).Value;
			AddHitBoxes(val.transform);
			Utils.CreateHitbox("GiganticRage", val.GetComponent<ChildLocator>().FindChild("hand.l"), Vector3.one * 5f);
		}

		private static void AddHitBoxes(Transform parent)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Utils.CreateHitbox("Punch", parent, new Vector3(4.5f, 4.5f, 4.8f));
			val.transform.localPosition = new Vector3(0f, 1.3f, 1f);
		}

		private void RegisterStates()
		{
			//IL_0073: 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)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			LanguageAPI.Add("ZBROLY_PASSIVE_NAME", "Passive");
			LanguageAPI.Add("ZBROLY_M1", "Primary");
			LanguageAPI.Add("ZBROLY_PASSIVE_DESCRIPTION", "");
			LanguageAPI.Add("ZBROLY_M2", "Secondary");
			LanguageAPI.Add("ZBROLY_M2_DESCRIPTION", "");
			LanguageAPI.Add("ZBROLY_SPEC", "Special");
			LanguageAPI.Add("ZBROLY_SPEC_DESCRIPTION", "");
			bool flag = default(bool);
			ContentAddition.AddEntityState<Secondary>(ref flag);
			ContentAddition.AddEntityState<Special>(ref flag);
			ContentAddition.AddEntityState<SpecialFire>(ref flag);
			ContentAddition.AddEntityState<CharacterMain>(ref flag);
		}

		private static void AddPrimary(SkillLocator skillLocator)
		{
			//IL_001d: 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_0050: 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_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Expected O, but got Unknown
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
			((SkillDef)val).activationStateMachineName = "Weapon";
			((SkillDef)val).activationState = new SerializableEntityStateType(typeof(DBZMeleeSkillState));
			((SkillDef)val).baseMaxStock = 0;
			((SkillDef)val).baseRechargeInterval = 0f;
			((SkillDef)val).beginSkillCooldownOnSkillEnd = true;
			((SkillDef)val).canceledFromSprinting = false;
			((SkillDef)val).fullRestockOnAssign = true;
			((SkillDef)val).interruptPriority = (InterruptPriority)0;
			((SkillDef)val).isCombatSkill = true;
			((SkillDef)val).mustKeyPress = false;
			((SkillDef)val).cancelSprintingOnActivation = true;
			((SkillDef)val).rechargeStock = 0;
			((SkillDef)val).requiredStock = 0;
			((SkillDef)val).stockToConsume = 0;
			((SkillDef)val).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("primary");
			((SkillDef)val).skillDescriptionToken = "DBZ_MELEE_SKILL_DESCRIPTION";
			((SkillDef)val).skillName = "ZBROLY_M1";
			((SkillDef)val).skillNameToken = "ZBROLY_M1";
			ContentAddition.AddSkillDef((SkillDef)(object)val);
			skillLocator.primary = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
			SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
			val2.variants = (Variant[])(object)new Variant[1];
			Reflection.SetFieldValue<SkillFamily>((object)skillLocator.primary, "_skillFamily", val2);
			SkillFamily skillFamily = skillLocator.primary.skillFamily;
			Variant[] variants = skillFamily.variants;
			Variant val3 = new Variant
			{
				skillDef = (SkillDef)(object)val
			};
			((Variant)(ref val3)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null);
			variants[0] = val3;
			ContentAddition.AddSkillFamily(skillFamily);
		}

		private static void AddSecondary(SkillLocator skillLocator, string nameToken, string descToken, Sprite sprite, Type type, string stateMachine = "NoMovement")
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: 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)
			//IL_010e: Expected O, but got Unknown
			//IL_010f: 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)
			DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
			((SkillDef)val).activationStateMachineName = stateMachine;
			((SkillDef)val).activationState = new SerializableEntityStateType(type);
			((SkillDef)val).baseMaxStock = 1;
			((SkillDef)val).baseRechargeInterval = 6f;
			((SkillDef)val).beginSkillCooldownOnSkillEnd = true;
			((SkillDef)val).canceledFromSprinting = false;
			((SkillDef)val).fullRestockOnAssign = true;
			((SkillDef)val).interruptPriority = (InterruptPriority)0;
			((SkillDef)val).isCombatSkill = true;
			((SkillDef)val).mustKeyPress = false;
			((SkillDef)val).cancelSprintingOnActivation = true;
			((SkillDef)val).rechargeStock = 1;
			((SkillDef)val).requiredStock = 1;
			((SkillDef)val).stockToConsume = 1;
			((SkillDef)val).icon = sprite;
			((SkillDef)val).skillDescriptionToken = descToken;
			((SkillDef)val).skillName = nameToken;
			((SkillDef)val).skillNameToken = nameToken;
			val.kiCost = 0.2f;
			ContentAddition.AddSkillDef((SkillDef)(object)val);
			skillLocator.secondary = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
			SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
			val2.variants = (Variant[])(object)new Variant[1];
			Reflection.SetFieldValue<SkillFamily>((object)skillLocator.secondary, "_skillFamily", val2);
			SkillFamily skillFamily = skillLocator.secondary.skillFamily;
			Variant[] variants = skillFamily.variants;
			Variant val3 = new Variant
			{
				skillDef = (SkillDef)(object)val
			};
			((Variant)(ref val3)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null);
			variants[0] = val3;
			ContentAddition.AddSkillFamily(skillFamily);
		}

		private static void AddUtility(SkillLocator skillLocator)
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: 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)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Expected O, but got Unknown
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0265: Unknown result type (might be due to invalid IL or missing references)
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0287: Expected O, but got Unknown
			//IL_0288: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Unknown result type (might be due to invalid IL or missing references)
			SkillSwitchBehaviour val = ((Component)skillLocator).gameObject.AddComponent<SkillSwitchBehaviour>();
			val.utilitySkillDefList = new List<SkillDef>();
			DBZSkillDef val2 = ScriptableObject.CreateInstance<DBZSkillDef>();
			((SkillDef)val2).activationStateMachineName = "NoMovement";
			((SkillDef)val2).activationState = new SerializableEntityStateType(typeof(BaseKiState));
			((SkillDef)val2).baseMaxStock = 0;
			((SkillDef)val2).baseRechargeInterval = 0f;
			((SkillDef)val2).beginSkillCooldownOnSkillEnd = true;
			((SkillDef)val2).canceledFromSprinting = false;
			((SkillDef)val2).fullRestockOnAssign = true;
			((SkillDef)val2).interruptPriority = (InterruptPriority)0;
			((SkillDef)val2).isCombatSkill = true;
			((SkillDef)val2).mustKeyPress = false;
			((SkillDef)val2).cancelSprintingOnActivation = true;
			((SkillDef)val2).rechargeStock = 0;
			((SkillDef)val2).requiredStock = 0;
			((SkillDef)val2).stockToConsume = 0;
			((SkillDef)val2).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("utility");
			((SkillDef)val2).skillDescriptionToken = "DBZ_KICHARGE_DESCRIPTION";
			((SkillDef)val2).skillName = "DBZ_KICHARGE_NAME";
			((SkillDef)val2).skillNameToken = "DBZ_KICHARGE_NAME";
			val2.isKiCharge = true;
			val.utilitySkillDefList.Add((SkillDef)(object)val2);
			ContentAddition.AddSkillDef((SkillDef)(object)val2);
			skillLocator.utility = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
			SkillFamily val3 = ScriptableObject.CreateInstance<SkillFamily>();
			val3.variants = (Variant[])(object)new Variant[1];
			Reflection.SetFieldValue<SkillFamily>((object)skillLocator.utility, "_skillFamily", val3);
			SkillFamily skillFamily = skillLocator.utility.skillFamily;
			Variant[] variants = skillFamily.variants;
			Variant val4 = new Variant
			{
				skillDef = (SkillDef)(object)val2
			};
			((Variant)(ref val4)).viewableNode = new Node(((SkillDef)val2).skillNameToken, false, (Node)null);
			variants[0] = val4;
			ContentAddition.AddSkillFamily(skillFamily);
			val2 = ScriptableObject.CreateInstance<DBZSkillDef>();
			((SkillDef)val2).activationStateMachineName = "Slide";
			((SkillDef)val2).activationState = new SerializableEntityStateType(typeof(EnergyFieldState));
			((SkillDef)val2).baseMaxStock = 0;
			((SkillDef)val2).baseRechargeInterval = 0f;
			((SkillDef)val2).beginSkillCooldownOnSkillEnd = true;
			((SkillDef)val2).canceledFromSprinting = false;
			((SkillDef)val2).fullRestockOnAssign = true;
			((SkillDef)val2).interruptPriority = (InterruptPriority)0;
			((SkillDef)val2).isCombatSkill = true;
			((SkillDef)val2).mustKeyPress = false;
			((SkillDef)val2).cancelSprintingOnActivation = false;
			((SkillDef)val2).rechargeStock = 0;
			((SkillDef)val2).requiredStock = 0;
			((SkillDef)val2).stockToConsume = 0;
			((SkillDef)val2).icon = Prefabs.fieldGreenIcon;
			((SkillDef)val2).skillDescriptionToken = "DBZ_ENERGYFIELD_SKILL_DESCRIPTION";
			((SkillDef)val2).skillName = "DBZ_ENERGYFIELD_SKILL_NAME";
			((SkillDef)val2).skillNameToken = "DBZ_ENERGYFIELD_SKILL_NAME";
			val2.isSwitch = true;
			val.utilitySkillDefList.Add((SkillDef)(object)val2);
			ContentAddition.AddSkillDef((SkillDef)(object)val2);
			GenericSkill val5 = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
			val3 = ScriptableObject.CreateInstance<SkillFamily>();
			val3.variants = (Variant[])(object)new Variant[1];
			Reflection.SetFieldValue<SkillFamily>((object)val5, "_skillFamily", val3);
			skillFamily = val5.skillFamily;
			Variant[] variants2 = skillFamily.variants;
			val4 = new Variant
			{
				skillDef = (SkillDef)(object)val2
			};
			((Variant)(ref val4)).viewableNode = new Node(((SkillDef)val2).skillNameToken, false, (Node)null);
			variants2[0] = val4;
		}

		private static void AddSpecial(SkillLocator skillLocator, string nameToken, string descToken, Sprite sprite, Type type, string stateMachine = "NoMovement")
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: 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)
			//IL_010e: Expected O, but got Unknown
			//IL_010f: 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)
			DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
			((SkillDef)val).activationStateMachineName = stateMachine;
			((SkillDef)val).activationState = new SerializableEntityStateType(type);
			((SkillDef)val).baseMaxStock = 1;
			((SkillDef)val).baseRechargeInterval = 12f;
			((SkillDef)val).beginSkillCooldownOnSkillEnd = true;
			((SkillDef)val).canceledFromSprinting = false;
			((SkillDef)val).fullRestockOnAssign = true;
			((SkillDef)val).interruptPriority = (InterruptPriority)0;
			((SkillDef)val).isCombatSkill = true;
			((SkillDef)val).mustKeyPress = false;
			((SkillDef)val).cancelSprintingOnActivation = true;
			((SkillDef)val).rechargeStock = 1;
			((SkillDef)val).requiredStock = 1;
			((SkillDef)val).stockToConsume = 1;
			((SkillDef)val).icon = sprite;
			((SkillDef)val).skillDescriptionToken = descToken;
			((SkillDef)val).skillName = nameToken;
			((SkillDef)val).skillNameToken = nameToken;
			val.kiCost = 0.55f;
			ContentAddition.AddSkillDef((SkillDef)(object)val);
			skillLocator.special = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
			SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
			val2.variants = (Variant[])(object)new Variant[1];
			Reflection.SetFieldValue<SkillFamily>((object)skillLocator.special, "_skillFamily", val2);
			SkillFamily skillFamily = skillLocator.special.skillFamily;
			Variant[] variants = skillFamily.variants;
			Variant val3 = new Variant
			{
				skillDef = (SkillDef)(object)val
			};
			((Variant)(ref val3)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null);
			variants[0] = val3;
			ContentAddition.AddSkillFamily(skillFamily);
		}
	}
	internal class Prefabs
	{
		internal static void CreatePrefabs()
		{
		}
	}
	internal class CharacterMain : DBZCharacterMain
	{
	}
	internal class Secondary : BeamBaseState
	{
		public override void OnEnter()
		{
			((BeamBaseState)this).OnEnter();
		}

		public override void FixedUpdate()
		{
			((BeamBaseState)this).FixedUpdate();
		}

		public override void OnExit()
		{
			((BeamBaseState)this).OnExit();
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)1;
		}
	}
	internal class Special : AnimEventBeam
	{
		protected override void SetNextState()
		{
			((EntityState)this).outer.SetNextState((EntityState)(object)new SpecialFire());
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)1;
		}
	}
	internal class SpecialFire : AnimEventBeamFire
	{
		protected override void SetBeamVFX()
		{
			((BeamFire)this).beamVFX = Prefabs.beamFXGreen;
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)1;
		}
	}
	internal class Sounds
	{
		public static readonly uint Play_DBZ_Broly_BM_PROJ_FIRE = 138774938u;

		public static readonly uint Play_DBZ_Broly_Skill = 719813295u;

		public static readonly uint Play_DBZ_Broly_Kill = 849892544u;

		public static readonly uint Play_DBZ_Broly_HeavyDMGGrunt = 900023071u;

		public static readonly uint Play_DBZ_Broly_GR_START = 994274522u;

		public static readonly uint Play_DBZ_Broly_Death = 1131012950u;

		public static readonly uint Play_DBZ_Broly_LightDMGGrunt = 1316871422u;

		public static readonly uint Play_DBZ_Broly_BM_PROJ_HIT = 1628223241u;

		public static readonly uint Play_DBZ_Broly_BM_Fire = 1649943162u;

		public static readonly uint Play_DBZ_Broly_ATKGrunt = 1678111780u;

		public static readonly uint Play_DBZ_Broly_Powerup = 2410957748u;

		public static readonly uint Play_DBZ_Broly_GR_FIRE = 2582106326u;

		public static readonly uint Play_DBZ_Broly_BossKill = 2993290007u;

		public static readonly uint Play_DBZ_Broly_Intro = 3306289462u;

		public static readonly uint Play_DBZ_Broly_Passive = 3399426583u;

		public static readonly uint Play_DBZ_Broly_FinalBossEncounter = 3474272650u;

		public static readonly uint Play_DBZ_Broly_BM_START = 3940999334u;
	}
}
namespace ZBroly.SkillStates
{
	internal class GreenSuperExplosiveWave
	{
	}
}