Decompiled source of Piccolo v2.0.2

Dragon Ball Z/Piccolo.dll

Decompiled 6 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 KinematicCharacterController;
using R2API;
using R2API.Utils;
using RoR2;
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.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("Piccolo")]
[assembly: AssemblyTitle("Piccolo")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Piccolo;

internal class Assets
{
	public static AssetBundle MainAssetBundle;

	public static void PopulateAssets()
	{
		if ((Object)(object)MainAssetBundle == (Object)null)
		{
			using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Piccolo.piccoloassets");
			MainAssetBundle = AssetBundle.LoadFromStream(stream);
		}
		using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Piccolo.Piccolo.bnk");
		byte[] array = new byte[stream2.Length];
		stream2.Read(array, 0, array.Length);
		SoundBanks.Add(array);
	}
}
[RequireComponent(typeof(MissileController))]
[RequireComponent(typeof(ProjectileSteerTowardTarget))]
[RequireComponent(typeof(ProjectileTargetComponent))]
[RequireComponent(typeof(ProjectileController))]
internal class HellzoneGrenadeProjectileBehaviour : MonoBehaviour
{
	[SerializeField]
	private MissileController missile;

	[SerializeField]
	private ProjectileSteerTowardTarget steer;

	[SerializeField]
	private ProjectileTargetComponent target;

	[SerializeField]
	private ProjectileController controller;

	[SerializeField]
	private GameObject owner;

	[SerializeField]
	private CharacterBody body;

	[SerializeField]
	private ModelLocator modelLocator;

	[SerializeField]
	private DBZSkillEventHandler skillEvent;

	private void OnEnable()
	{
	}

	private void Update()
	{
		//IL_010e: 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_0153: Unknown result type (might be due to invalid IL or missing references)
		if (!Object.op_Implicit((Object)(object)owner))
		{
			missile = ((Component)this).GetComponent<MissileController>();
			target = ((Component)this).GetComponent<ProjectileTargetComponent>();
			steer = ((Component)this).GetComponent<ProjectileSteerTowardTarget>();
			controller = ((Component)this).GetComponent<ProjectileController>();
			if (Object.op_Implicit((Object)(object)controller) && Object.op_Implicit((Object)(object)controller.Networkowner))
			{
				owner = controller.owner;
				body = owner.GetComponent<CharacterBody>();
				if (Object.op_Implicit((Object)(object)body))
				{
					modelLocator = body.modelLocator;
					if (Object.op_Implicit((Object)(object)modelLocator) && Object.op_Implicit((Object)(object)modelLocator.modelTransform))
					{
						skillEvent = ((Component)modelLocator.modelTransform).GetComponent<DBZSkillEventHandler>();
					}
				}
			}
		}
		if (Object.op_Implicit((Object)(object)target.target))
		{
			float num = Vector3.Distance(((Component)this).transform.position, target.target.position);
			if (num <= 18f)
			{
				missile.maxVelocity = 0f;
				((Component)this).GetComponent<Rigidbody>().velocity = Vector3.zero;
			}
		}
		if (Object.op_Implicit((Object)(object)missile) && Object.op_Implicit((Object)(object)skillEvent) && skillEvent.detonateHellzone)
		{
			missile.maxVelocity = 70f;
			steer.rotationSpeed = 300f;
		}
	}
}
internal class Hook
{
	internal static void Hooks()
	{
	}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.DragonyckPiccolo", "Piccolo", "2.0.2")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
public class MainPlugin : BaseUnityPlugin
{
	public const string MODUID = "com.DragonyckPiccolo";

	public const string MODNAME = "Piccolo";

	public const string VERSION = "2.0.2";

	public const string SURVIVORNAME = "Piccolo";

	public const string SURVIVORNAMEKEY = "PICCOLO";

	public const string SURVIVORNAME2 = "Piccolo (Power Awakening)";

	public const string SURVIVORNAMEKEY2 = "PICCOLO2";

	public const string SURVIVORNAME3 = "Piccolo (Orange)";

	public const string SURVIVORNAMEKEY3 = "PICCOLO3";

	private static List<string> powerupBodyList = new List<string> { "PiccoloBody", "Piccolo (Power Awakening)Body", "Piccolo (Orange)Body" };

	private void Awake()
	{
		Assets.PopulateAssets();
		Prefabs.CreatePrefabs();
		CreateSurvivor();
		CreatePowerupSurvivor("Newccolo", "Piccolo (Power Awakening)", "PICCOLO2", 1.5f);
		CreatePowerupSurvivor("Swoleccolo", "Piccolo (Orange)", "PICCOLO3", 2f);
		RegisterStates();
		Hook.Hooks();
	}

	internal static void CreateSurvivor()
	{
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_014e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0192: Unknown result type (might be due to invalid IL or missing references)
		//IL_0197: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_0237: Unknown result type (might be due to invalid IL or missing references)
		//IL_0254: 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_027c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0286: Expected O, but got Unknown
		//IL_0286: Expected O, but got Unknown
		//IL_029d: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bc: Expected O, but got Unknown
		//IL_02bc: Expected O, but got Unknown
		//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f2: Expected O, but got Unknown
		//IL_02f2: Expected O, but got Unknown
		//IL_0309: Unknown result type (might be due to invalid IL or missing references)
		//IL_031e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0328: Expected O, but got Unknown
		//IL_0328: Expected O, but got Unknown
		//IL_033f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0354: Unknown result type (might be due to invalid IL or missing references)
		//IL_035e: Expected O, but got Unknown
		//IL_035e: 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_03ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ca: Expected O, but got Unknown
		//IL_03ca: Expected O, but got Unknown
		//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0400: Expected O, but got Unknown
		//IL_0400: Expected O, but got Unknown
		//IL_0417: Unknown result type (might be due to invalid IL or missing references)
		//IL_042c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0436: Expected O, but got Unknown
		//IL_0436: Expected O, but got Unknown
		//IL_044d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0462: Unknown result type (might be due to invalid IL or missing references)
		//IL_046c: Expected O, but got Unknown
		//IL_046c: Expected O, but got Unknown
		//IL_0483: Unknown result type (might be due to invalid IL or missing references)
		//IL_0498: Unknown result type (might be due to invalid IL or missing references)
		//IL_04a2: Expected O, but got Unknown
		//IL_04a2: Expected O, but got Unknown
		//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d8: Expected O, but got Unknown
		//IL_04d8: Expected O, but got Unknown
		//IL_04ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_0504: Unknown result type (might be due to invalid IL or missing references)
		//IL_050e: Expected O, but got Unknown
		//IL_050e: Expected O, but got Unknown
		//IL_0525: Unknown result type (might be due to invalid IL or missing references)
		//IL_053a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0544: Expected O, but got Unknown
		//IL_0544: Expected O, but got Unknown
		//IL_055b: Unknown result type (might be due to invalid IL or missing references)
		//IL_056d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0577: Expected O, but got Unknown
		//IL_0577: Expected O, but got Unknown
		//IL_058e: Unknown result type (might be due to invalid IL or missing references)
		//IL_05a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ad: Expected O, but got Unknown
		//IL_05ad: Expected O, but got Unknown
		//IL_05b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0686: Unknown result type (might be due to invalid IL or missing references)
		//IL_068b: 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_06df: Unknown result type (might be due to invalid IL or missing references)
		//IL_06e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_06e9: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = Assets.MainAssetBundle.LoadAsset<GameObject>("Piccolo");
		SurvivorDef val2 = default(SurvivorDef);
		CharacterBody val3 = DBZSurvivors.SetupNewDBZSurvivor(val, "Piccolo", ref val2);
		((Object)val3).name = "PiccoloBody";
		val3.baseNameToken = "PICCOLO_NAME";
		val3.subtitleNameToken = "PICCOLO_SUBTITLE";
		val3.bodyFlags = (BodyFlags)16;
		val3.rootMotionInMainState = false;
		val3.mainRootSpeed = 0f;
		val3.baseMaxHealth = 110f;
		val3.levelMaxHealth = 33f;
		val3.baseRegen = 4f;
		val3.levelRegen = 0.6f;
		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 = 2;
		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.bodyColor = new Color(0.63922f, 0.72157f, 0.09804f);
		((Component)val3).GetComponent<CameraTargetParams>().cameraParams = Addressables.LoadAssetAsync<CharacterCameraParams>((object)"RoR2/Base/Common/ccpStandardMelee.asset").WaitForCompletion();
		ConfigFile val4 = Utils.CreateConfig(val3);
		((Component)val3).GetComponent<KiBehaviour>().hasPowerup = true;
		DBZSurvivorDef val5 = ScriptableObject.CreateInstance<DBZSurvivorDef>();
		val5.attackVO = Sounds.Play_DBZ_Piccolo_Attack;
		val5.bossEncounterVO = Sounds.Play_DBZ_Piccolo_FinalBossEncounter;
		val5.bossKillVO = Sounds.Play_DBZ_Piccolo_BossKill;
		val5.heavyHitVO = Sounds.Play_DBZ_Piccolo_HeavyDMG;
		val5.killVO = Sounds.Play_DBZ_Piccolo_Kill;
		val5.lightHitVO = Sounds.Play_DBZ_Piccolo_LightDMG;
		val5.skillVO = Sounds.Play_DBZ_Piccolo_Skill;
		val5.deathVO = Sounds.Play_DBZ_Piccolo_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.00025f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			baseKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Base Kill", "Coefficient"), 0.25f, new ConfigDescription("FinalValue = xKillCoeff * baseKillCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			regularKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Regular Enemy Kill", "Coefficient"), 0.001f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			eliteKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Elite Kill", "Coefficient"), 0.0025f, 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"), 0.012f, new ConfigDescription("FinalValue = xItemCoeff * baseItemCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			whiteItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: White Item", "Coefficient"), 0.0001f, 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.002f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			redItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Red Item", "Coefficient"), 0.0045f, 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.0012f, new ConfigDescription("FinalValue = bonusBasedOnRequiredKills * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value
		};
		DBZSurvivorCatalog.AddDBZSurvivorDef(val3.baseNameToken, val5);
		EntityStateMachine component = ((Component)val3).GetComponent<EntityStateMachine>();
		component.mainStateType = new SerializableEntityStateType(typeof(DBZCharacterMain));
		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("PICCOLO_NAME", "Piccolo");
		LanguageAPI.Add("PICCOLO_DESCRIPTION", text);
		LanguageAPI.Add("PICCOLO_SUBTITLE", "");
		LanguageAPI.Add("PICCOLO_OUTRO", text2);
		LanguageAPI.Add("PICCOLO_FAIL", text3);
		val2.primaryColor = val3.bodyColor;
		val2.desiredSortPosition = 17f;
		DBZAimIndicator val6 = ((Component)val3).gameObject.AddComponent<DBZAimIndicator>();
		SkillSetup(((Component)val3).gameObject);
		AddHitBoxes(val.transform);
		DBZSurvivors.survivorSceneProps.Add(val, new TransformMemory
		{
			position = new Vector3(-0.2f, 1.157f, 11f)
		});
	}

	internal static void CreatePowerupSurvivor(string modelName, string survivorName, string survivorNameKey, float statMultValue)
	{
		//IL_0032: 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_004d: Expected O, but got Unknown
		//IL_004d: Expected O, but got Unknown
		//IL_008b: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_024b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0250: Unknown result type (might be due to invalid IL or missing references)
		//IL_0261: Unknown result type (might be due to invalid IL or missing references)
		//IL_0266: Unknown result type (might be due to invalid IL or missing references)
		//IL_027f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0284: Unknown result type (might be due to invalid IL or missing references)
		//IL_0300: Unknown result type (might be due to invalid IL or missing references)
		//IL_031e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0332: Unknown result type (might be due to invalid IL or missing references)
		//IL_0347: Unknown result type (might be due to invalid IL or missing references)
		//IL_0351: Expected O, but got Unknown
		//IL_0351: Expected O, but got Unknown
		//IL_0369: Unknown result type (might be due to invalid IL or missing references)
		//IL_037e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0388: Expected O, but got Unknown
		//IL_0388: Expected O, but got Unknown
		//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03bf: Expected O, but got Unknown
		//IL_03bf: Expected O, but got Unknown
		//IL_03d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f6: Expected O, but got Unknown
		//IL_03f6: Expected O, but got Unknown
		//IL_040e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0423: Unknown result type (might be due to invalid IL or missing references)
		//IL_042d: Expected O, but got Unknown
		//IL_042d: Expected O, but got Unknown
		//IL_0445: Unknown result type (might be due to invalid IL or missing references)
		//IL_045a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0464: Expected O, but got Unknown
		//IL_0464: Expected O, but got Unknown
		//IL_047c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0491: Unknown result type (might be due to invalid IL or missing references)
		//IL_049b: Expected O, but got Unknown
		//IL_049b: Expected O, but got Unknown
		//IL_04b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d2: Expected O, but got Unknown
		//IL_04d2: Expected O, but got Unknown
		//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0509: Expected O, but got Unknown
		//IL_0509: Expected O, but got Unknown
		//IL_0521: Unknown result type (might be due to invalid IL or missing references)
		//IL_0536: Unknown result type (might be due to invalid IL or missing references)
		//IL_0540: Expected O, but got Unknown
		//IL_0540: Expected O, but got Unknown
		//IL_0558: Unknown result type (might be due to invalid IL or missing references)
		//IL_056d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0577: Expected O, but got Unknown
		//IL_0577: Expected O, but got Unknown
		//IL_058f: Unknown result type (might be due to invalid IL or missing references)
		//IL_05a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ae: Expected O, but got Unknown
		//IL_05ae: Expected O, but got Unknown
		//IL_05c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_05db: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e5: Expected O, but got Unknown
		//IL_05e5: Expected O, but got Unknown
		//IL_05fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0612: Unknown result type (might be due to invalid IL or missing references)
		//IL_061c: Expected O, but got Unknown
		//IL_061c: Expected O, but got Unknown
		//IL_0634: Unknown result type (might be due to invalid IL or missing references)
		//IL_0646: Unknown result type (might be due to invalid IL or missing references)
		//IL_0650: Expected O, but got Unknown
		//IL_0650: Expected O, but got Unknown
		//IL_0668: Unknown result type (might be due to invalid IL or missing references)
		//IL_067d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0687: Expected O, but got Unknown
		//IL_0687: Expected O, but got Unknown
		//IL_0691: Unknown result type (might be due to invalid IL or missing references)
		//IL_0693: Unknown result type (might be due to invalid IL or missing references)
		//IL_070a: Unknown result type (might be due to invalid IL or missing references)
		//IL_08b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_08be: Unknown result type (might be due to invalid IL or missing references)
		//IL_08d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_08e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_08eb: Expected O, but got Unknown
		//IL_08eb: Expected O, but got Unknown
		//IL_0778: Unknown result type (might be due to invalid IL or missing references)
		//IL_07a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_07c2: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = Assets.MainAssetBundle.LoadAsset<GameObject>(modelName);
		ChildLocator component = val.GetComponent<ChildLocator>();
		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 component2 = ((Component)val3).GetComponent<KiBehaviour>();
		component2.hasPowerup = true;
		component2.maxKiValue = 1f * value;
		component2.passiveRegenValue = 0.02f * value;
		component2.passiveRegen = true;
		EntityStateMachine component3 = ((Component)val3).GetComponent<EntityStateMachine>();
		component3.initialStateType = new SerializableEntityStateType(typeof(BasePowerupSpawnState));
		component3.mainStateType = new SerializableEntityStateType(typeof(DBZCharacterMain));
		CharacterDeathBehavior component4 = ((Component)val3).GetComponent<CharacterDeathBehavior>();
		component4.deathState = new SerializableEntityStateType(typeof(DeathState));
		DBZAimIndicator val5 = ((Component)val3).gameObject.AddComponent<DBZAimIndicator>();
		DBZSurvivorDef val6 = ScriptableObject.CreateInstance<DBZSurvivorDef>();
		val6.attackVO = Sounds.Play_DBZ_Piccolo_Attack;
		val6.bossEncounterVO = Sounds.Play_DBZ_Piccolo_FinalBossEncounter;
		val6.bossKillVO = Sounds.Play_DBZ_Piccolo_BossKill;
		val6.heavyHitVO = Sounds.Play_DBZ_Piccolo_HeavyDMG;
		val6.killVO = Sounds.Play_DBZ_Piccolo_Kill;
		val6.lightHitVO = Sounds.Play_DBZ_Piccolo_LightDMG;
		val6.skillVO = Sounds.Play_DBZ_Piccolo_Skill;
		val6.deathVO = Sounds.Play_DBZ_Piccolo_Death;
		val6.vfxColor = (VFXColor)3;
		val6.config = val4;
		val6.powerupBodyList = powerupBodyList;
		val6.memory = new PowerupMemory
		{
			spentKiCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Ki Spent", "Coefficient"), 0.00025f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			baseKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Base Kill", "Coefficient"), 0.25f, new ConfigDescription("FinalValue = xKillCoeff * baseKillCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			regularKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Regular Enemy Kill", "Coefficient"), 0.001f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			eliteKillCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Elite Kill", "Coefficient"), 0.0025f, 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"), 0.012f, new ConfigDescription("FinalValue = xItemCoeff * baseItemCoefficient * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			whiteItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: White Item", "Coefficient"), 0.0001f, 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.002f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())).Value,
			redItemCoefficient = val4.Bind<float>(new ConfigDefinition("Powerup: Red Item", "Coefficient"), 0.0045f, 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.0012f, new ConfigDescription("FinalValue = bonusBasedOnRequiredKills * powerupCount", (AcceptableValueBase)null, Array.Empty<object>())).Value
		};
		SkillLocator component5 = ((Component)val3).GetComponent<SkillLocator>();
		AddPassive(component5);
		if (!(survivorName == "Piccolo (Power Awakening)"))
		{
			if (survivorName == "Piccolo (Orange)")
			{
				component2.hasPowerup = false;
				val6.powerupBodyList = null;
				AddPrimary(component5);
				AddGigaPunch(component5);
				AddUtility(component5);
				AddFullPowerEnergyWave(component5);
				val2.desiredSortPosition = 17.2f;
				val6.vfxColor = (VFXColor)7;
				ModelLocator component6 = ((Component)val3).GetComponent<ModelLocator>();
				component6.modelBaseTransform.GetChild(0).localPosition = new Vector3(0f, 1.5f, 0f);
				component6.modelBaseTransform.localScale = new Vector3(-1f, 1f, 1f);
				val3.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait3").texture;
				AddSwoleHitBoxes(val.transform);
			}
		}
		else
		{
			((Component)val3).gameObject.AddComponent<DBZAimIndicator>();
			AddPrimary(component5);
			AddEvilExplosion(component5);
			AddUtility(component5);
			AddLightGrenade(component5);
			val2.desiredSortPosition = 17.1f;
			val6.vfxColor = (VFXColor)4;
			val3.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait2").texture;
			AddHitBoxes(val.transform);
		}
		DBZSurvivorCatalog.AddDBZSurvivorDef(val3.baseNameToken, val6);
		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(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.hidden = val4.Bind<bool>(new ConfigDefinition("Hidden Survivor", "Hidden"), true, new ConfigDescription("Hide in Character Select", (AcceptableValueBase)null, Array.Empty<object>())).Value;
	}

	private static void AddSwoleHitBoxes(Transform parent)
	{
		//IL_0016: 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_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
		Utils.CreateHitbox("GigaPunch", parent, new Vector3(-5.8f, 5.8f, 9.1f)).transform.localPosition = new Vector3(0f, 1.3f, 3.6f);
		Utils.CreateHitbox("Punch", parent, new Vector3(-4.8f, 4.8f, 5.1f)).transform.localPosition = new Vector3(0f, 1.3f, 1.1f);
		Utils.CreateHitbox("EvilExplosion", parent, new Vector3(-6.5f, 6f, 18f)).transform.localPosition = new Vector3(0f, 1f, 8f);
	}

	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)
		//IL_0056: 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)
		GameObject val = Utils.CreateHitbox("Punch", parent, new Vector3(4.5f, 4.5f, 4.8f));
		val.transform.localPosition = new Vector3(0f, 1.3f, 1f);
		GameObject val2 = Utils.CreateHitbox("EvilExplosion", parent, new Vector3(6.5f, 6f, 18f));
		val2.transform.localPosition = new Vector3(0f, 1f, 8f);
	}

	private void RegisterStates()
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: 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_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		bool flag = default(bool);
		ContentAddition.AddEntityState<Secondary>(ref flag);
		ContentAddition.AddEntityState<SecondaryEnd>(ref flag);
		ContentAddition.AddEntityState<SecondaryAlt>(ref flag);
		ContentAddition.AddEntityState<Special>(ref flag);
		ContentAddition.AddEntityState<SpecialFire>(ref flag);
		ContentAddition.AddEntityState<BaseSpecialAlt>(ref flag);
	}

	private static void SkillSetup(GameObject characterPrefab)
	{
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("PICCOLO_PASSIVE_NAME", "Namekian Physiology");
		LanguageAPI.Add("PICCOLO_PASSIVE_DESCRIPTION", "Increased health <style=cIsHealing>regeneration</style>.");
		SkillDef switchSkillDef = null;
		SkillDef switchSkillDef2 = null;
		SkillDef switchSkillDef3 = null;
		SkillDef switchSkillDef4 = null;
		AddPassive(component);
		AddPrimary(component);
		AddSecondary(component, out switchSkillDef);
		AddAltSecondary(component, out switchSkillDef2);
		AddUtility(component);
		AddSpecial(component, out switchSkillDef3);
		AddAltSpecial(component, out switchSkillDef4);
		SkillSwitchBehaviour val = characterPrefab.AddComponent<SkillSwitchBehaviour>();
		val.secondarySkillDefList = new List<SkillDef> { switchSkillDef, switchSkillDef2 };
		val.specialSkillDefList = new List<SkillDef> { switchSkillDef3, switchSkillDef4 };
	}

	private static void AddFullPowerEnergyWave(SkillLocator skillLocator)
	{
		//IL_0041: 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)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0145: Unknown result type (might be due to invalid IL or missing references)
		//IL_015d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0167: Expected O, but got Unknown
		//IL_0168: Unknown result type (might be due to invalid IL or missing references)
		//IL_016a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0193: Unknown result type (might be due to invalid IL or missing references)
		//IL_0198: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0288: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02aa: Expected O, but got Unknown
		//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
		SkillDef val = null;
		SkillDef val2 = null;
		LanguageAPI.Add("PICCOLO_APOC", "Apocalyptic Burst");
		LanguageAPI.Add("PICCOLO_APOC_DESCRIPTION", "Peform two forward kicks for <style=cIsDamage>360%</style> damage each, followed by a twist kick dealing <style=cIsDamage>480%</style> damage then finish with a quick-charged ki orb attack for <style=cIsDamage>1200%</style> damage.");
		DBZSkillDef val3 = ScriptableObject.CreateInstance<DBZSkillDef>();
		((SkillDef)val3).activationStateMachineName = "NoMovement";
		((SkillDef)val3).activationState = new SerializableEntityStateType(typeof(ApocalypticBurst));
		((SkillDef)val3).baseMaxStock = 1;
		((SkillDef)val3).baseRechargeInterval = 12f;
		((SkillDef)val3).beginSkillCooldownOnSkillEnd = true;
		((SkillDef)val3).canceledFromSprinting = false;
		((SkillDef)val3).fullRestockOnAssign = true;
		((SkillDef)val3).interruptPriority = (InterruptPriority)0;
		((SkillDef)val3).isCombatSkill = true;
		((SkillDef)val3).mustKeyPress = false;
		((SkillDef)val3).cancelSprintingOnActivation = true;
		((SkillDef)val3).rechargeStock = 1;
		((SkillDef)val3).requiredStock = 1;
		((SkillDef)val3).stockToConsume = 1;
		((SkillDef)val3).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("apocalypticBurst");
		((SkillDef)val3).skillDescriptionToken = "PICCOLO_APOC_DESCRIPTION";
		((SkillDef)val3).skillName = "PICCOLO_APOC";
		((SkillDef)val3).skillNameToken = "PICCOLO_APOC";
		val3.kiCost = 0.55f;
		((SkillDef)val3).keywordTokens = val3.newKeywordTokens;
		val = (SkillDef)(object)val3;
		ContentAddition.AddSkillDef((SkillDef)(object)val3);
		skillLocator.special = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
		SkillFamily val4 = ScriptableObject.CreateInstance<SkillFamily>();
		val4.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)skillLocator.special, "_skillFamily", val4);
		SkillFamily skillFamily = skillLocator.special.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val5 = new Variant
		{
			skillDef = (SkillDef)(object)val3
		};
		((Variant)(ref val5)).viewableNode = new Node(((SkillDef)val3).skillNameToken, false, (Node)null);
		variants[0] = val5;
		ContentAddition.AddSkillFamily(skillFamily);
		val3 = ScriptableObject.CreateInstance<DBZSkillDef>();
		((SkillDef)val3).activationStateMachineName = "NoMovement";
		((SkillDef)val3).activationState = new SerializableEntityStateType(typeof(FullPowerEnergyWave));
		((SkillDef)val3).baseMaxStock = 1;
		((SkillDef)val3).baseRechargeInterval = 12f;
		((SkillDef)val3).beginSkillCooldownOnSkillEnd = true;
		((SkillDef)val3).canceledFromSprinting = false;
		((SkillDef)val3).fullRestockOnAssign = true;
		((SkillDef)val3).interruptPriority = (InterruptPriority)0;
		((SkillDef)val3).isCombatSkill = true;
		((SkillDef)val3).mustKeyPress = false;
		((SkillDef)val3).cancelSprintingOnActivation = true;
		((SkillDef)val3).rechargeStock = 1;
		((SkillDef)val3).requiredStock = 1;
		((SkillDef)val3).stockToConsume = 1;
		((SkillDef)val3).icon = Prefabs.kamehamehaIconOrange;
		((SkillDef)val3).skillDescriptionToken = "DBZ_FULLPOWERENERGYWAVE_SKILL_DESCRIPTION";
		((SkillDef)val3).skillName = "DBZ_FULLPOWERENERGYWAVE_SKILL_NAME";
		((SkillDef)val3).skillNameToken = "DBZ_FULLPOWERENERGYWAVE_SKILL_NAME";
		val3.kiCost = 0.55f;
		val3.isSwitch = true;
		((SkillDef)val3).keywordTokens = val3.newKeywordTokens;
		val2 = (SkillDef)(object)val3;
		ContentAddition.AddSkillDef((SkillDef)(object)val3);
		GenericSkill val6 = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
		val4 = ScriptableObject.CreateInstance<SkillFamily>();
		val4.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)val6, "_skillFamily", val4);
		skillFamily = val6.skillFamily;
		Variant[] variants2 = skillFamily.variants;
		val5 = new Variant
		{
			skillDef = (SkillDef)(object)val3
		};
		((Variant)(ref val5)).viewableNode = new Node(((SkillDef)val3).skillNameToken, false, (Node)null);
		variants2[0] = val5;
		ContentAddition.AddSkillFamily(skillFamily);
		SkillSwitchBehaviour component = ((Component)skillLocator).gameObject.GetComponent<SkillSwitchBehaviour>();
		component.specialSkillDefList = new List<SkillDef> { val, val2 };
	}

	private static void AddGigaPunch(SkillLocator skillLocator)
	{
		//IL_0041: 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)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_014c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_016e: Expected O, but got Unknown
		//IL_016f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0171: Unknown result type (might be due to invalid IL or missing references)
		//IL_019a: Unknown result type (might be due to invalid IL or missing references)
		//IL_019f: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_028f: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b1: Expected O, but got Unknown
		//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
		SkillDef val = null;
		SkillDef val2 = null;
		DBZSkillDef val3 = ScriptableObject.CreateInstance<DBZSkillDef>();
		LanguageAPI.Add("PICCOLO_M2SWOLE", "Fierce Fist");
		LanguageAPI.Add("PICCOLO_M2SWOLE_DESCRIPTION", "Charge your fist to deal a powerful punch for <style=cIsDamage>350-1600%</style> damage.");
		((SkillDef)val3).activationStateMachineName = "Slide";
		((SkillDef)val3).activationState = new SerializableEntityStateType(typeof(ChargeMeleeAttack));
		((SkillDef)val3).baseMaxStock = 1;
		((SkillDef)val3).baseRechargeInterval = 6f;
		((SkillDef)val3).beginSkillCooldownOnSkillEnd = true;
		((SkillDef)val3).canceledFromSprinting = false;
		((SkillDef)val3).fullRestockOnAssign = false;
		((SkillDef)val3).interruptPriority = (InterruptPriority)0;
		((SkillDef)val3).isCombatSkill = true;
		((SkillDef)val3).mustKeyPress = false;
		((SkillDef)val3).cancelSprintingOnActivation = true;
		((SkillDef)val3).rechargeStock = 1;
		((SkillDef)val3).requiredStock = 1;
		((SkillDef)val3).stockToConsume = 1;
		((SkillDef)val3).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("fierceFist");
		((SkillDef)val3).skillDescriptionToken = "PICCOLO_M2SWOLE_DESCRIPTION";
		((SkillDef)val3).skillName = "PICCOLO_M2SWOLE";
		((SkillDef)val3).skillNameToken = "PICCOLO_M2SWOLE";
		val3.kiCost = 0.2f;
		((SkillDef)val3).keywordTokens = val3.newKeywordTokens;
		val3.isAimBased = true;
		val = (SkillDef)(object)val3;
		ContentAddition.AddSkillDef((SkillDef)(object)val3);
		skillLocator.secondary = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
		SkillFamily val4 = ScriptableObject.CreateInstance<SkillFamily>();
		val4.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)skillLocator.secondary, "_skillFamily", val4);
		SkillFamily skillFamily = skillLocator.secondary.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val5 = new Variant
		{
			skillDef = (SkillDef)(object)val3
		};
		((Variant)(ref val5)).viewableNode = new Node(((SkillDef)val3).skillNameToken, false, (Node)null);
		variants[0] = val5;
		ContentAddition.AddSkillFamily(skillFamily);
		val3 = ScriptableObject.CreateInstance<DBZSkillDef>();
		((SkillDef)val3).activationStateMachineName = "NoMovement";
		((SkillDef)val3).activationState = new SerializableEntityStateType(typeof(AnimEventBeam));
		((SkillDef)val3).baseMaxStock = 1;
		((SkillDef)val3).baseRechargeInterval = 6f;
		((SkillDef)val3).beginSkillCooldownOnSkillEnd = true;
		((SkillDef)val3).canceledFromSprinting = false;
		((SkillDef)val3).fullRestockOnAssign = true;
		((SkillDef)val3).interruptPriority = (InterruptPriority)0;
		((SkillDef)val3).isCombatSkill = true;
		((SkillDef)val3).mustKeyPress = false;
		((SkillDef)val3).cancelSprintingOnActivation = true;
		((SkillDef)val3).rechargeStock = 1;
		((SkillDef)val3).requiredStock = 1;
		((SkillDef)val3).stockToConsume = 1;
		((SkillDef)val3).icon = Prefabs.superExplosiveWaveIcon;
		((SkillDef)val3).skillDescriptionToken = "DBZ_SUPEREXPLOSIVEWAVE_DESCRIPTION";
		((SkillDef)val3).skillName = "DBZ_SUPEREXPLOSIVEWAVE_NAME";
		((SkillDef)val3).skillNameToken = "DBZ_SUPEREXPLOSIVEWAVE_NAME";
		val3.kiCost = 0.2f;
		val3.isSwitch = true;
		((SkillDef)val3).keywordTokens = val3.newKeywordTokens;
		val2 = (SkillDef)(object)val3;
		ContentAddition.AddSkillDef((SkillDef)(object)val3);
		GenericSkill val6 = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
		val4 = ScriptableObject.CreateInstance<SkillFamily>();
		val4.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)val6, "_skillFamily", val4);
		skillFamily = val6.skillFamily;
		Variant[] variants2 = skillFamily.variants;
		val5 = new Variant
		{
			skillDef = (SkillDef)(object)val3
		};
		((Variant)(ref val5)).viewableNode = new Node(((SkillDef)val3).skillNameToken, false, (Node)null);
		variants2[0] = val5;
		ContentAddition.AddSkillFamily(skillFamily);
		SkillSwitchBehaviour val7 = ((Component)skillLocator).gameObject.AddComponent<SkillSwitchBehaviour>();
		val7.secondarySkillDefList = new List<SkillDef> { val, val2 };
	}

	private static void AddEvilExplosion(SkillLocator skillLocator)
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: 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_0116: Unknown result type (might be due to invalid IL or missing references)
		//IL_012e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0138: Expected O, but got Unknown
		//IL_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		SkillDef val = null;
		SkillDef switchSkillDef = null;
		DBZSkillDef val2 = ScriptableObject.CreateInstance<DBZSkillDef>();
		((SkillDef)val2).activationStateMachineName = "Slide";
		((SkillDef)val2).activationState = new SerializableEntityStateType(typeof(BulletEvilExplosionState));
		((SkillDef)val2).baseMaxStock = 1;
		((SkillDef)val2).baseRechargeInterval = 5f;
		((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 = 1;
		((SkillDef)val2).requiredStock = 1;
		((SkillDef)val2).stockToConsume = 1;
		((SkillDef)val2).icon = Prefabs.evilExplosionIcon;
		((SkillDef)val2).skillDescriptionToken = "DBZ_EVILEXPLOSION_DESCRIPTION";
		((SkillDef)val2).skillName = "DBZ_EVILEXPLOSION_NAME";
		((SkillDef)val2).skillNameToken = "DBZ_EVILEXPLOSION_NAME";
		val2.kiCost = 0.2f;
		val2.isAimBased = true;
		val = (SkillDef)(object)val2;
		ContentAddition.AddSkillDef((SkillDef)(object)val2);
		skillLocator.secondary = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
		SkillFamily val3 = ScriptableObject.CreateInstance<SkillFamily>();
		val3.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)skillLocator.secondary, "_skillFamily", val3);
		SkillFamily skillFamily = skillLocator.secondary.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);
		AddAltSecondary(skillLocator, out switchSkillDef);
		SkillSwitchBehaviour val5 = ((Component)skillLocator).gameObject.AddComponent<SkillSwitchBehaviour>();
		val5.secondarySkillDefList = new List<SkillDef> { val, switchSkillDef };
	}

	private static void AddLightGrenade(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_0107: Unknown result type (might be due to invalid IL or missing references)
		//IL_011f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0129: Expected O, but got Unknown
		//IL_012a: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
		((SkillDef)val).activationStateMachineName = "NoMovement";
		((SkillDef)val).activationState = new SerializableEntityStateType(typeof(LightGrenadeState));
		((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 = Prefabs.lightGrenadeIcon;
		((SkillDef)val).skillDescriptionToken = "DBZ_LIGHTGRENADE_DESCRIPTION";
		((SkillDef)val).skillName = "DBZ_LIGHTGRENADE_NAME";
		((SkillDef)val).skillNameToken = "DBZ_LIGHTGRENADE_NAME";
		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);
	}

	private static void AddPassive(SkillLocator component)
	{
		component.passiveSkill.enabled = true;
		component.passiveSkill.skillNameToken = "PICCOLO_PASSIVE_NAME";
		component.passiveSkill.skillDescriptionToken = "PICCOLO_PASSIVE_DESCRIPTION";
		component.passiveSkill.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("passive");
	}

	private static void AddPrimary(SkillLocator skillLocator)
	{
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_0116: Unknown result type (might be due to invalid IL or missing references)
		//IL_012e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0138: Expected O, but got Unknown
		//IL_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_013a: Unknown result type (might be due to invalid IL or missing references)
		DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
		LanguageAPI.Add("PICCOLO_M1", "Demon's Onslaught");
		((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 = "PICCOLO_M1";
		((SkillDef)val).skillNameToken = "PICCOLO_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, out SkillDef switchSkillDef)
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0147: Unknown result type (might be due to invalid IL or missing references)
		//IL_015f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Expected O, but got Unknown
		//IL_016a: Unknown result type (might be due to invalid IL or missing references)
		//IL_016b: Unknown result type (might be due to invalid IL or missing references)
		DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
		LanguageAPI.Add("PICCOLO_M2", "Namek Finger");
		LanguageAPI.Add("PICCOLO_M2_DESCRIPTION", "Stretch your arm forward to grab an enemy dealing <style=cIsDamage>250%</style> damage, pulling them to you and <style=cIsDamage>weakens</style>. <style=cKeywordName>Switch</style><style=cSub>");
		((SkillDef)val).activationStateMachineName = "NoMovement";
		((SkillDef)val).activationState = new SerializableEntityStateType(typeof(Secondary));
		((SkillDef)val).baseMaxStock = 1;
		((SkillDef)val).baseRechargeInterval = 6f;
		((SkillDef)val).beginSkillCooldownOnSkillEnd = true;
		((SkillDef)val).canceledFromSprinting = false;
		((SkillDef)val).fullRestockOnAssign = false;
		((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 = Assets.MainAssetBundle.LoadAsset<Sprite>("secondary");
		((SkillDef)val).skillDescriptionToken = "PICCOLO_M2_DESCRIPTION";
		((SkillDef)val).skillName = "PICCOLO_M2";
		((SkillDef)val).skillNameToken = "PICCOLO_M2";
		val.kiCost = 0.2f;
		val.isSwitch = true;
		((SkillDef)val).keywordTokens = val.newKeywordTokens;
		switchSkillDef = (SkillDef)(object)val;
		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 AddAltSecondary(SkillLocator skillLocator, out SkillDef switchSkillDef)
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: 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)
		//IL_0150: Unknown result type (might be due to invalid IL or missing references)
		//IL_015a: Expected O, but got Unknown
		//IL_015b: Unknown result type (might be due to invalid IL or missing references)
		//IL_015d: Unknown result type (might be due to invalid IL or missing references)
		DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
		LanguageAPI.Add("PICCOLO_M2ALT", "Energy Wave Combo");
		LanguageAPI.Add("PICCOLO_M2ALT_DESCRIPTION", "Fire 6 Ki Blasts on a targetted enemy for <style=cIsDamage>200%</style> damage each. <style=cKeywordName>Switch</style><style=cSub>");
		((SkillDef)val).activationStateMachineName = "Slide";
		((SkillDef)val).activationState = new SerializableEntityStateType(typeof(SecondaryAlt));
		((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 = Assets.MainAssetBundle.LoadAsset<Sprite>("secondaryalt");
		((SkillDef)val).skillDescriptionToken = "PICCOLO_M2ALT_DESCRIPTION";
		((SkillDef)val).skillName = "PICCOLO_M2ALT";
		((SkillDef)val).skillNameToken = "PICCOLO_M2ALT";
		val.kiCost = 0.2f;
		val.isSwitch = true;
		((SkillDef)val).keywordTokens = val.newKeywordTokens;
		switchSkillDef = (SkillDef)(object)val;
		ContentAddition.AddSkillDef((SkillDef)(object)val);
		GenericSkill val2 = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
		SkillFamily val3 = ScriptableObject.CreateInstance<SkillFamily>();
		val3.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)val2, "_skillFamily", val3);
		SkillFamily skillFamily = val2.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val4 = new Variant
		{
			skillDef = (SkillDef)(object)val
		};
		((Variant)(ref val4)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null);
		variants[0] = val4;
		ContentAddition.AddSkillFamily(skillFamily);
	}

	private static void AddUtility(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_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0125: Unknown result type (might be due to invalid IL or missing references)
		//IL_012f: Expected O, but got Unknown
		//IL_0130: 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)
		DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
		((SkillDef)val).activationStateMachineName = "NoMovement";
		((SkillDef)val).activationState = new SerializableEntityStateType(typeof(BaseKiState));
		((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>("utility");
		((SkillDef)val).skillDescriptionToken = "DBZ_KICHARGE_DESCRIPTION";
		((SkillDef)val).skillName = "DBZ_KICHARGE_NAME";
		((SkillDef)val).skillNameToken = "DBZ_KICHARGE_NAME";
		val.isKiCharge = true;
		ContentAddition.AddSkillDef((SkillDef)(object)val);
		skillLocator.utility = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)skillLocator.utility, "_skillFamily", val2);
		SkillFamily skillFamily = skillLocator.utility.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 AddSpecial(SkillLocator skillLocator, out SkillDef switchSkillDef)
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0147: Unknown result type (might be due to invalid IL or missing references)
		//IL_015f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Expected O, but got Unknown
		//IL_016a: Unknown result type (might be due to invalid IL or missing references)
		//IL_016b: Unknown result type (might be due to invalid IL or missing references)
		DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
		LanguageAPI.Add("PICCOLO_SPEC", "Special Beam Cannon");
		LanguageAPI.Add("PICCOLO_SPEC_DESCRIPTION", "Charge a powerful energy beam that deals <style=cIsDamage>80%</style> damage per hit for up to <style=cIsUtility>3s</style>. Charge time increases damage up to <style=cIsDamage>240%</style>.");
		((SkillDef)val).activationStateMachineName = "NoMovement";
		((SkillDef)val).activationState = new SerializableEntityStateType(typeof(Special));
		((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 = Assets.MainAssetBundle.LoadAsset<Sprite>("special");
		((SkillDef)val).skillDescriptionToken = "PICCOLO_SPEC_DESCRIPTION";
		((SkillDef)val).skillName = "PICCOLO_SPEC";
		((SkillDef)val).skillNameToken = "PICCOLO_SPEC";
		val.kiCost = 0.55f;
		val.isSwitch = true;
		((SkillDef)val).keywordTokens = val.newKeywordTokens;
		switchSkillDef = (SkillDef)(object)val;
		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);
	}

	private static void AddAltSpecial(SkillLocator skillLocator, out SkillDef switchSkillDef)
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_013f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0157: Unknown result type (might be due to invalid IL or missing references)
		//IL_0161: Expected O, but got Unknown
		//IL_0162: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		DBZSkillDef val = ScriptableObject.CreateInstance<DBZSkillDef>();
		LanguageAPI.Add("PICCOLO_ALTSPEC", "Hellzone Grenade");
		LanguageAPI.Add("PICCOLO_ALTSPEC_DESCRIPTION", "Fire 8 Ki Blasts on a targetted enemy for <style=cIsDamage>650%</style> damage each, after a short charge time, unleash them all upon your enemy.");
		((SkillDef)val).activationStateMachineName = "NoMovement";
		((SkillDef)val).activationState = new SerializableEntityStateType(typeof(BaseSpecialAlt));
		((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 = Assets.MainAssetBundle.LoadAsset<Sprite>("specialalt");
		((SkillDef)val).skillDescriptionToken = "PICCOLO_ALTSPEC_DESCRIPTION";
		((SkillDef)val).skillName = "PICCOLO_ALTSPEC";
		((SkillDef)val).skillNameToken = "PICCOLO_ALTSPEC";
		val.kiCost = 0.55f;
		val.isAimBased = true;
		val.isSwitch = true;
		((SkillDef)val).keywordTokens = val.newKeywordTokens;
		switchSkillDef = (SkillDef)(object)val;
		ContentAddition.AddSkillDef((SkillDef)(object)val);
		GenericSkill val2 = ((Component)skillLocator).gameObject.AddComponent<GenericSkill>();
		SkillFamily val3 = ScriptableObject.CreateInstance<SkillFamily>();
		val3.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)val2, "_skillFamily", val3);
		SkillFamily skillFamily = val2.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val4 = new Variant
		{
			skillDef = (SkillDef)(object)val
		};
		((Variant)(ref val4)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null);
		variants[0] = val4;
		ContentAddition.AddSkillFamily(skillFamily);
	}
}
internal class Prefabs
{
	internal static GameObject hellzoneProjectile;

	internal static GameObject hellzoneProjectileImpactEffect;

	internal static void CreatePrefabs()
	{
		hellzoneProjectile = PrefabAPI.InstantiateClone(Prefabs.kiBlastProjectileYellowNoTarget, "HellzoneGrenadeProjectile", true);
		hellzoneProjectile.AddComponent<HellzoneGrenadeProjectileBehaviour>();
		ProjectileController component = hellzoneProjectile.GetComponent<ProjectileController>();
		component.startSound = "Play_DBZ_Piccolo_Hellzone_Projectile";
		ProjectileSingleTargetImpact component2 = hellzoneProjectile.GetComponent<ProjectileSingleTargetImpact>();
		hellzoneProjectileImpactEffect = PrefabAPI.InstantiateClone(component2.impactEffect, "HellzoneProjectileImpactEffect", false);
		hellzoneProjectileImpactEffect.GetComponent<EffectComponent>().soundName = "Play_DBZ_Piccolo_Hellzone_Impact";
		ContentAddition.AddEffect(hellzoneProjectileImpactEffect);
		component2.impactEffect = hellzoneProjectileImpactEffect;
		ContentAddition.AddProjectile(hellzoneProjectile);
	}
}
internal class Secondary : BaseDBZSkillState
{
	private float duration = 2f;

	private Transform searchPos;

	private CharacterMotor motor;

	private RigidbodyMotor rigidMotor;

	private SphereSearch sphereSearch = new SphereSearch();

	private float stopwatch;

	private float searchInterval = 0.1f;

	private float radius = 2f;

	private float damageCoefficient = 2.5f;

	private bool doOnce;

	public override void OnEnter()
	{
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f4: 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_0105: Unknown result type (might be due to invalid IL or missing references)
		//IL_010a: 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)
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_011b: 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)
		((BaseDBZSkillState)this).OnEnter();
		if (Object.op_Implicit((Object)(object)base.skillBehaviour) && Object.op_Implicit((Object)(object)base.kiBehaviour))
		{
			base.skillBehaviour.SetExecutableSkills(1);
		}
		sphereSearch.radius = radius;
		sphereSearch.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask;
		AkSoundEngine.PostEvent(Sounds.Play_DBZ_Common_Swing, ((EntityState)this).gameObject);
		AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_Skill, ((EntityState)this).gameObject);
		((EntityState)this).PlayAnimation("FullBody, Override", "NamekFinger", "M2", duration);
		searchPos = ((BaseState)this).FindModelChild("muzzleHandL");
		if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection))
		{
			Vector2 val = Util.Vector3XZToVector2XY(((EntityState)this).inputBank.aimDirection);
			if (val != Vector2.zero)
			{
				((Vector2)(ref val)).Normalize();
				Vector3 val2 = new Vector3(val.x, 0f, val.y);
				Vector3 normalized = ((Vector3)(ref val2)).normalized;
				((EntityState)this).characterDirection.moveVector = normalized;
			}
		}
	}

	public override void Update()
	{
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0370: Unknown result type (might be due to invalid IL or missing references)
		//IL_0387: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0145: Unknown result type (might be due to invalid IL or missing references)
		//IL_014a: 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_0162: Unknown result type (might be due to invalid IL or missing references)
		//IL_0175: Unknown result type (might be due to invalid IL or missing references)
		//IL_0180: Unknown result type (might be due to invalid IL or missing references)
		//IL_0182: Unknown result type (might be due to invalid IL or missing references)
		//IL_0187: Unknown result type (might be due to invalid IL or missing references)
		//IL_018a: Unknown result type (might be due to invalid IL or missing references)
		//IL_018f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0198: Unknown result type (might be due to invalid IL or missing references)
		//IL_019d: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ab: Expected O, but got Unknown
		//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0279: Unknown result type (might be due to invalid IL or missing references)
		//IL_027e: 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)
		//IL_0296: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02be: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02df: Expected O, but got Unknown
		//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0301: Unknown result type (might be due to invalid IL or missing references)
		((EntityState)this).Update();
		if (Object.op_Implicit((Object)(object)searchPos))
		{
			sphereSearch.origin = searchPos.position;
			if (!Object.op_Implicit((Object)(object)motor) && !Object.op_Implicit((Object)(object)rigidMotor))
			{
				HurtBox[] hurtBoxes = sphereSearch.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(((EntityState)this).teamComponent.teamIndex)).OrderCandidatesByDistance()
					.FilterCandidatesByDistinctHurtBoxEntities()
					.GetHurtBoxes();
				if (hurtBoxes.Length != 0 && Object.op_Implicit((Object)(object)hurtBoxes[0]) && Object.op_Implicit((Object)(object)hurtBoxes[0].healthComponent) && Object.op_Implicit((Object)(object)hurtBoxes[0].healthComponent.body) && !hurtBoxes[0].healthComponent.body.isBoss)
				{
					if (Object.op_Implicit((Object)(object)hurtBoxes[0].healthComponent.body.characterMotor))
					{
						motor = hurtBoxes[0].healthComponent.body.characterMotor;
						if (NetworkServer.active)
						{
							if (!doOnce)
							{
								doOnce = true;
								DamageInfo val = new DamageInfo
								{
									attacker = ((EntityState)this).gameObject,
									inflictor = ((EntityState)this).gameObject,
									damage = ((BaseState)this).damageStat * damageCoefficient,
									procCoefficient = 0f,
									damageType = (DamageType)0,
									damageColorIndex = (DamageColorIndex)11,
									position = ((Component)hurtBoxes[0]).transform.position,
									rejected = false
								};
								hurtBoxes[0].healthComponent.TakeDamage(val);
								EffectManager.SimpleEffect(Prefabs.punchHitFX, ((Component)hurtBoxes[0]).transform.position, Quaternion.identity, true);
							}
							hurtBoxes[0].healthComponent.body.AddTimedBuff(Buffs.Weak, 8f);
							SetStateOnHurt.SetStunOnObject(((Component)hurtBoxes[0].healthComponent.body).gameObject, 3f);
						}
					}
					else if (!Object.op_Implicit((Object)(object)rigidMotor))
					{
						rigidMotor = ((Component)hurtBoxes[0].healthComponent.body).gameObject.GetComponent<RigidbodyMotor>();
						if (NetworkServer.active)
						{
							if (!doOnce)
							{
								doOnce = true;
								DamageInfo val2 = new DamageInfo
								{
									attacker = ((EntityState)this).gameObject,
									inflictor = ((EntityState)this).gameObject,
									damage = ((BaseState)this).damageStat * damageCoefficient,
									procCoefficient = 0f,
									damageType = (DamageType)0,
									damageColorIndex = (DamageColorIndex)11,
									position = ((Component)hurtBoxes[0]).transform.position,
									rejected = false
								};
								hurtBoxes[0].healthComponent.TakeDamage(val2);
								EffectManager.SimpleEffect(Prefabs.punchHitFX, ((Component)hurtBoxes[0]).transform.position, Quaternion.identity, true);
							}
							hurtBoxes[0].healthComponent.body.AddTimedBuff(Buffs.Weak, 8f);
							SetStateOnHurt.SetStunOnObject(((Component)hurtBoxes[0].healthComponent.body).gameObject, 3f);
						}
					}
				}
			}
			if (Object.op_Implicit((Object)(object)rigidMotor))
			{
				rigidMotor.rigid.MovePosition(searchPos.position);
				CalcDistance(((Component)rigidMotor).transform.position);
			}
			else if (Object.op_Implicit((Object)(object)motor))
			{
				CalcDistance(((Component)motor).transform.position);
				((BaseCharacterController)motor).Motor.SetPosition(searchPos.position, true);
			}
		}
		if (((EntityState)this).age >= duration && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	private void CalcDistance(Vector3 targetPos)
	{
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		if (((EntityState)this).age >= 0.65f)
		{
			float num = Vector3.Distance(targetPos, ((EntityState)this).characterBody.corePosition);
			if (num <= 6f && ((EntityState)this).isAuthority)
			{
				SecondaryEnd secondaryEnd = new SecondaryEnd();
				secondaryEnd.duration = ((EntityState)this).age - duration;
				((EntityState)this).outer.SetNextState((EntityState)(object)secondaryEnd);
			}
		}
	}

	public override void OnExit()
	{
		((EntityState)this).OnExit();
		if (Object.op_Implicit((Object)(object)base.skillBehaviour))
		{
			base.skillBehaviour.SetExecutableSkills(-1);
		}
	}

	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 SecondaryEnd : BaseSkillState
{
	public float duration;

	public override void FixedUpdate()
	{
		((EntityState)this).FixedUpdate();
		if (((EntityState)this).fixedAge >= duration - 0.2f && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override void OnExit()
	{
		((EntityState)this).OnExit();
	}
}
internal class SecondaryAlt : BaseDBZSkillState
{
	private float duration = 2f;

	private DBZSkillEventHandler eventComponent;

	private AimRequest request;

	public override void OnEnter()
	{
		((BaseDBZSkillState)this).OnEnter();
		if (Object.op_Implicit((Object)(object)base.skillBehaviour) && Object.op_Implicit((Object)(object)base.kiBehaviour))
		{
			base.skillBehaviour.SetExecutableSkills(1);
		}
		if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams))
		{
			request = ((EntityState)this).cameraTargetParams.RequestAimType((AimType)2);
		}
		eventComponent = ((Component)((EntityState)this).GetModelTransform()).GetComponent<DBZSkillEventHandler>();
		((EntityState)this).PlayAnimation("FullBody, Override", "EnergyWaveCombo", "M2", duration);
		AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_Skill, ((EntityState)this).gameObject);
		if (NetworkServer.active)
		{
			((EntityState)this).characterBody.AddBuff(Prefabs.speedDebuff);
		}
	}

	public override void FixedUpdate()
	{
		//IL_009c: 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_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00af: Unknown result type (might be due to invalid IL or missing references)
		((EntityState)this).FixedUpdate();
		((BaseDBZSkillState)this).AdjustModelForwardAimVector();
		if (Object.op_Implicit((Object)(object)eventComponent) && eventComponent.fireCount > 0)
		{
			DBZSkillEventHandler obj = eventComponent;
			obj.fireCount--;
			EffectManager.SimpleMuzzleFlash(Prefabs.KiBlastMuzzleFlashYellow, ((EntityState)this).gameObject, eventComponent.childName, false);
			AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_EnergyWave_Fire, ((EntityState)this).gameObject);
			if (((EntityState)this).isAuthority)
			{
				ProjectileManager instance = ProjectileManager.instance;
				GameObject kiBlastTrailYellow = Prefabs.kiBlastTrailYellow;
				Vector3 position = ((BaseState)this).FindModelChild(eventComponent.childName).position;
				Ray aimRay = ((BaseState)this).GetAimRay();
				instance.FireProjectile(kiBlastTrailYellow, position, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, ((EntityState)this).characterBody.damage * 2f, 200f, Util.CheckRoll(((EntityState)this).characterBody.crit, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f);
			}
		}
		if (((EntityState)this).fixedAge >= duration - 0.2f && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override void OnExit()
	{
		((EntityState)this).OnExit();
		if (NetworkServer.active)
		{
			((EntityState)this).characterBody.RemoveBuff(Prefabs.speedDebuff);
		}
		if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams))
		{
			request.Dispose();
		}
		if (Object.op_Implicit((Object)(object)base.skillBehaviour))
		{
			base.skillBehaviour.SetExecutableSkills(-1);
		}
	}

	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 : BeamBaseState
{
	private float stopwatch;

	private bool nextState;

	public override void OnEnter()
	{
		base.duration = 99f;
		base.skillIndex = 3;
		AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_BeamCannon_Charge, ((EntityState)this).gameObject);
		if (Object.op_Implicit((Object)(object)((BaseDBZSkillState)this).skillBehaviour))
		{
			base.baseKiCost = ((BaseDBZSkillState)this).skillBehaviour.baseSpecialCost;
		}
		((EntityState)this).GetModelAnimator().SetBool("chargeOver", false);
		((BeamBaseState)this).OnEnter();
	}

	protected override void PlayVO()
	{
	}

	protected override void PlayAnimation()
	{
		((EntityState)this).PlayAnimation("FullBody, Override", "Beam", "Special", base.duration);
	}

	public override void FixedUpdate()
	{
		//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)
		((BeamBaseState)this).FixedUpdate();
		if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank))
		{
			if (Object.op_Implicit((Object)(object)((BaseDBZSkillState)this).skillBehaviour))
			{
				((BaseDBZSkillState)this).skillBehaviour.float1 = 0.8f * Mathf.Clamp(((EntityState)this).fixedAge, 1f, 3f);
				((BaseDBZSkillState)this).skillBehaviour.aimRay = base.aimRay;
			}
			if (((ButtonState)(ref ((EntityState)this).inputBank.skill4)).justReleased || (((EntityState)this).fixedAge >= 3f && !nextState))
			{
				nextState = true;
			}
		}
		if (nextState)
		{
			stopwatch += Time.fixedDeltaTime;
			if (stopwatch >= 0.35f && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextState((EntityState)(object)new SpecialFire());
			}
		}
	}

	public override void OnExit()
	{
		((BeamBaseState)this).OnExit();
		AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_BeamCannonVO, ((EntityState)this).gameObject);
		((EntityState)this).GetModelAnimator().SetBool("chargeOver", true);
	}

	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 : BeamFire
{
	protected override void SetBeamVFX()
	{
		base.beamSFX = Sounds.Play_DBZ_Piccolo_BeamCannon_Fire;
		base.beamVFX = Prefabs.beamCannonFX;
		base.beamRadius = 2f;
		base.damageCoefficient = ((BaseDBZSkillState)this).skillBehaviour.float1;
	}

	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 BaseSpecialAlt : BaseDBZSkillState
{
	private float duration = 6f;

	private AimRequest request;

	private DBZSkillEventHandler eventComponent;

	private DBZAimIndicator indicatorComponent;

	private GameObject target;

	private Vector3 aimDirection;

	private bool detonated;

	private GameObject muzzleFlashL;

	private GameObject muzzleFlashR;

	public override void OnEnter()
	{
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00eb: 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_00f4: Unknown result type (might be due to invalid IL or missing references)
		((BaseDBZSkillState)this).OnEnter();
		if (NetworkServer.active)
		{
			((EntityState)this).characterBody.AddBuff(Prefabs.armorBoost);
		}
		if (Object.op_Implicit((Object)(object)base.skillBehaviour) && Object.op_Implicit((Object)(object)base.kiBehaviour))
		{
			base.skillBehaviour.SetExecutableSkills(3);
		}
		eventComponent = ((Component)((EntityState)this).GetModelTransform()).GetComponent<DBZSkillEventHandler>();
		if (Object.op_Implicit((Object)(object)eventComponent))
		{
			eventComponent.detonateHellzone = false;
		}
		indicatorComponent = ((EntityState)this).GetComponent<DBZAimIndicator>();
		target = ((Component)((HuntressTracker)indicatorComponent).GetTrackingTarget().healthComponent).gameObject;
		if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams))
		{
			request = ((EntityState)this).cameraTargetParams.RequestAimType((AimType)2);
		}
		((EntityState)this).PlayAnimation("FullBody, Override", "HellzoneGrenade", "Special", duration);
		Ray aimRay = ((BaseState)this).GetAimRay();
		aimDirection = ((Ray)(ref aimRay)).direction;
		AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_Skill, ((EntityState)this).gameObject);
	}

	public override void FixedUpdate()
	{
		//IL_0029: 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_0033: 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_0035: 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_0057: 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)
		//IL_0062: 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_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0073: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		//IL_0117: Unknown result type (might be due to invalid IL or missing references)
		//IL_011c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0124: 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_012e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0130: Unknown result type (might be due to invalid IL or missing references)
		//IL_0135: Unknown result type (might be due to invalid IL or missing references)
		//IL_018d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0192: Unknown result type (might be due to invalid IL or missing references)
		//IL_0194: Unknown result type (might be due to invalid IL or missing references)
		//IL_0275: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
		((EntityState)this).FixedUpdate();
		if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection))
		{
			Vector2 val = Util.Vector3XZToVector2XY(aimDirection);
			if (val != Vector2.zero)
			{
				((Vector2)(ref val)).Normalize();
				Vector3 val2 = new Vector3(val.x, 0f, val.y);
				Vector3 normalized = ((Vector3)(ref val2)).normalized;
				((EntityState)this).characterDirection.moveVector = normalized;
			}
		}
		if (Object.op_Implicit((Object)(object)eventComponent) && Object.op_Implicit((Object)(object)target))
		{
			if (eventComponent.fireCount > 0)
			{
				DBZSkillEventHandler obj = eventComponent;
				obj.fireCount--;
				Vector3 val3 = default(Vector3);
				((Vector3)(ref val3))..ctor((float)RoR2Application.rng.RangeInt(-15, 15), (float)RoR2Application.rng.RangeInt(0, 8), (float)RoR2Application.rng.RangeInt(5, 15));
				Vector3 val4 = Quaternion.AngleAxis((float)RoR2Application.rng.RangeInt(0, 361), aimDirection) * Vector3.one;
				Vector3 val5 = Util.QuaternionSafeLookRotation(aimDirection) * val3;
				EffectManager.SimpleMuzzleFlash(Prefabs.KiBlastMuzzleFlashYellow, ((EntityState)this).gameObject, eventComponent.childName, false);
				AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_Hellzone_Fire, ((EntityState)this).gameObject);
				if (((EntityState)this).isAuthority)
				{
					ProjectileManager.instance.FireProjectile(Prefabs.hellzoneProjectile, ((BaseState)this).FindModelChild(eventComponent.childName).position, Util.QuaternionSafeLookRotation(val5), ((EntityState)this).gameObject, ((EntityState)this).characterBody.damage * 6.5f, 200f, Util.CheckRoll(((EntityState)this).characterBody.crit, ((EntityState)this).characterBody.master), (DamageColorIndex)0, target, -1f);
				}
			}
			if (eventComponent.detonateHellzone && !detonated)
			{
				detonated = true;
				AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_Hellzone_Activate, ((EntityState)this).gameObject);
			}
			if (eventComponent.hellzoneCharge)
			{
				eventComponent.hellzoneCharge = false;
				AkSoundEngine.PostEvent(Sounds.Play_DBZ_Piccolo_Hellzone_Charge, ((EntityState)this).gameObject);
				muzzleFlashL = Object.Instantiate<GameObject>(Prefabs.beamCannonMuzzleFlash, ((BaseState)this).FindModelChild("muzzleHandL"));
				muzzleFlashL.transform.localPosition = Vector3.zero;
				muzzleFlashR = Object.Instantiate<GameObject>(Prefabs.beamCannonMuzzleFlash, ((BaseState)this).FindModelChild("muzzleHandR"));
				muzzleFlashR.transform.localPosition = Vector3.zero;
			}
		}
		if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override void OnExit()
	{
		((EntityState)this).OnExit();
		if (NetworkServer.active)
		{
			((EntityState)this).characterBody.RemoveBuff(Prefabs.armorBoost);
		}
		if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams))
		{
			request.Dispose();
		}
		EntityState.Destroy((Object)(object)muzzleFlashL);
		EntityState.Destroy((Object)(object)muzzleFlashR);
		if (Object.op_Implicit((Object)(object)base.skillBehaviour))
		{
			base.skillBehaviour.SetExecutableSkills(-1);
		}
	}

	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_Piccolo_BeamCannonVO = 65436214u;

	public static readonly uint Play_DBZ_Piccolo_Powerup = 176317935u;

	public static readonly uint Play_DBZ_Piccolo_Intro = 202401577u;

	public static readonly uint Play_DBZ_Piccolo_Hellzone_Activate = 539292730u;

	public static readonly uint Play_DBZ_Piccolo_Hellzone_Fire = 650652933u;

	public static readonly uint Play_DBZ_Piccolo_Kill = 994773653u;

	public static readonly uint Play_DBZ_Piccolo_EnergyWave_Fire = 1278032169u;

	public static readonly uint Play_DBZ_Piccolo_BeamCannon_Charge = 1507920746u;

	public static readonly uint Play_DBZ_Piccolo_Hellzone_Projectile = 1613332272u;

	public static readonly uint Play_DBZ_Piccolo_HeavyDMG = 1804405834u;

	public static readonly uint Play_DBZ_Piccolo_Attack = 1833864941u;

	public static readonly uint Play_DBZ_Piccolo_Hellzone_Charge = 1883616241u;

	public static readonly uint Play_DBZ_Piccolo_LightDMG = 2631489273u;

	public static readonly uint Play_DBZ_Piccolo_BeamCannon_Fire = 2775130486u;

	public static readonly uint Play_DBZ_Piccolo_Hellzone_Impact = 2984433491u;

	public static readonly uint Play_DBZ_Piccolo_Skill = 3238033180u;

	public static readonly uint Play_DBZ_Piccolo_BossKill = 3432347502u;

	public static readonly uint Play_DBZ_Piccolo_FinalBossEncounter = 3592626027u;

	public static readonly uint Play_DBZ_Piccolo_Death = 4151146161u;
}