Decompiled source of AurelionSol v2.0.7

Aurelion.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.Huntress;
using EntityStates.Mage.Weapon;
using HG;
using KinematicCharacterController;
using On.RoR2;
using On.RoR2.Projectile;
using R2API;
using R2API.Utils;
using Rewired;
using RoR2;
using RoR2.Achievements;
using RoR2.EntityLogic;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Experimental.Rendering;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;

[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("Aurelion")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyProduct("Aurelion")]
[assembly: AssemblyTitle("Aurelion")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Aurelion;

public static class Assets
{
	public static AssetBundle MainAssetBundle;

	public static void PopulateAssets()
	{
		if ((Object)(object)MainAssetBundle == (Object)null)
		{
			using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Aurelion.aurelionassets");
			MainAssetBundle = AssetBundle.LoadFromStream(stream);
		}
		using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Aurelion.Aurelion.bnk");
		byte[] array = new byte[stream2.Length];
		stream2.Read(array, 0, array.Length);
		SoundBanks.Add(array);
	}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.Dragonyck.AurelionSol", "AurelionSol", "2.0.7")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Aurelion : BaseUnityPlugin
{
	public const string MODUID = "com.Dragonyck.AurelionSol";

	public static GameObject characterPrefab;

	public GameObject characterDisplay;

	public GameObject doppelganger;

	public static ConfigEntry<KeyCode> KeyToggle;

	private static readonly Color characterColor = new Color(0.12941f, 0.19216f, 0.46275f);

	private void Awake()
	{
		//IL_0011: 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_0030: Expected O, but got Unknown
		//IL_0030: Expected O, but got Unknown
		KeyToggle = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(new ConfigDefinition("Orbiting Stars Radius Toggle Key", "Key"), (KeyCode)308, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>()));
		Assets.PopulateAssets();
		Achievements.RegisterUnlockables();
		Prefabs.CreatePrefabs();
		CreatePrefab();
		RegisterStates();
		RegisterCharacter();
		CreateDoppelganger();
		Hooks();
	}

	private void Hooks()
	{
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Expected O, but got Unknown
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Expected O, but got Unknown
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Expected O, but got Unknown
		ProjectileController.Start += new hook_Start(ProjectileController_Start);
		Stage.onStageStartGlobal += Stage_onStageStartGlobal;
		RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
		HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage);
		GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal;
	}

	private void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport)
	{
		//IL_0026: 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_014f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0154: Unknown result type (might be due to invalid IL or missing references)
		//IL_0166: 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)
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
		if (!Object.op_Implicit((Object)(object)damageReport.victimBody) || !Object.op_Implicit((Object)(object)damageReport.attackerBody))
		{
			return;
		}
		DamageType val = (DamageType)96;
		if (damageReport.victimBody.HasBuff(Prefabs.grav))
		{
			if (!Object.op_Implicit((Object)(object)((Component)damageReport.attackerBody).GetComponent<StardustCollector>()) || !Object.op_Implicit((Object)(object)damageReport.attackerBody.inventory))
			{
				foreach (AurelionGravSphereBehaviour instances in InstanceTracker.GetInstancesList<AurelionGravSphereBehaviour>())
				{
					float num = Vector3.Distance(((Component)instances).transform.position, damageReport.victimBody.footPosition);
					if (num <= 12f && Object.op_Implicit((Object)(object)instances.owner))
					{
						CharacterBody component = instances.owner.GetComponent<CharacterBody>();
						if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.inventory))
						{
							component.inventory.GiveItem(Prefabs.star, 1);
						}
					}
				}
				return;
			}
			damageReport.attackerBody.inventory.GiveItem(Prefabs.star, 1);
		}
		else if (DamageTypeCombo.op_Implicit(damageReport.damageInfo.damageType) == val)
		{
			damageReport.damageInfo.damageType = DamageTypeCombo.op_Implicit((DamageType)32);
			AurelionPassiveBehaviour component2 = ((Component)damageReport.attackerBody).GetComponent<AurelionPassiveBehaviour>();
			if (Object.op_Implicit((Object)(object)component2) && component2.hasStardust && Object.op_Implicit((Object)(object)damageReport.attackerBody.inventory))
			{
				damageReport.attackerBody.inventory.GiveItem(Prefabs.star, 1);
			}
		}
	}

	private void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
	{
		//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_0068: Invalid comparison between Unknown and I4
		//IL_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Invalid comparison between Unknown and I4
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_007c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_020a: 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_01fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0102: 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_011a: Expected O, but got Unknown
		//IL_0128: Unknown result type (might be due to invalid IL or missing references)
		//IL_012d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_016f: Unknown result type (might be due to invalid IL or missing references)
		//IL_017a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0186: Unknown result type (might be due to invalid IL or missing references)
		//IL_0189: Unknown result type (might be due to invalid IL or missing references)
		//IL_018e: 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_0195: 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_01a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d9: 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_01e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)damageInfo.attacker) && Object.op_Implicit((Object)(object)damageInfo.attacker.GetComponent<AurelionPassiveBehaviour>()))
		{
			AurelionPassiveBehaviour component = damageInfo.attacker.GetComponent<AurelionPassiveBehaviour>();
			CharacterBody component2 = damageInfo.attacker.GetComponent<CharacterBody>();
			if (Object.op_Implicit((Object)(object)component2))
			{
				if ((int)DamageTypeCombo.op_Implicit(damageInfo.damageType) == 2)
				{
					damageInfo.damageType = DamageTypeCombo.op_Implicit((DamageType)128);
					DamageAPI.AddModdedDamageType(damageInfo, Prefabs.starburst);
				}
				else if ((int)DamageTypeCombo.op_Implicit(damageInfo.damageType) == 262144)
				{
					self.body.AddTimedBuff(Prefabs.breath, 1f);
					if (self.body.GetBuffCount(Prefabs.breath) >= 8)
					{
						self.body.ClearTimedBuffs(Prefabs.breath);
						EffectData val = new EffectData
						{
							origin = self.body.corePosition,
							scale = 10f
						};
						EffectManager.SpawnEffect(Prefabs.aurelionFireBreathHitEffectLarge, val, true);
						new BlastAttack
						{
							attacker = damageInfo.attacker,
							baseDamage = component2.damage * (component2.attackSpeed * 1.5f + Mathf.Clamp((float)component.starCount * 0.01f, 0f, float.MaxValue)),
							baseForce = 200f,
							crit = component2.RollCrit(),
							damageType = DamageTypeCombo.op_Implicit((DamageType)64),
							falloffModel = (FalloffModel)0,
							procCoefficient = 1f,
							radius = 10f,
							position = self.body.corePosition,
							attackerFiltering = (AttackerFiltering)2,
							teamIndex = component2.teamComponent.teamIndex,
							damageColorIndex = (DamageColorIndex)12
						}.Fire();
						DamageAPI.AddModdedDamageType(damageInfo, Prefabs.starburst);
					}
					damageInfo.damageType = DamageTypeCombo.op_Implicit((DamageType)0);
				}
				if (component.hasStardust && DamageAPI.HasModdedDamageType(damageInfo, Prefabs.starburst) && Object.op_Implicit((Object)(object)component2.inventory))
				{
					component2.inventory.GiveItem(Prefabs.star, 1);
				}
			}
		}
		orig.Invoke(self, damageInfo);
	}

	private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
	{
		if (sender.HasBuff(Prefabs.flight))
		{
			args.damageMultAdd += 0.2f;
		}
	}

	private void Stage_onStageStartGlobal(Stage stage)
	{
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		SceneDef sceneDef = stage.sceneDef;
		if (Object.op_Implicit((Object)(object)sceneDef) && sceneDef.baseSceneName == "limbo" && NetworkServer.active)
		{
			GameObject val = Object.Instantiate<GameObject>(Prefabs.aurelionInteractable);
			val.transform.localPosition = new Vector3(-152.4677f, -22f, 519.8533f);
			val.transform.localRotation = new Quaternion(0f, 90f, 0f, 0f);
			NetworkServer.Spawn(val);
		}
	}

	private void ProjectileController_Start(orig_Start orig, ProjectileController self)
	{
		orig.Invoke(self);
		if (Object.op_Implicit((Object)(object)self) && Object.op_Implicit((Object)(object)self) && Object.op_Implicit((Object)(object)((Component)self).gameObject) && Object.op_Implicit((Object)(object)((Component)self).GetComponent<AurelionSecondaryBehaviour>()) && Object.op_Implicit((Object)(object)self.owner))
		{
			AurelionSecondaryController component = self.owner.GetComponent<AurelionSecondaryController>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.star = ((Component)self).gameObject;
			}
		}
	}

	private static GameObject CreateModel(GameObject main)
	{
		Object.Destroy((Object)(object)((Component)main.transform.Find("ModelBase")).gameObject);
		Object.Destroy((Object)(object)((Component)main.transform.Find("CameraPivot")).gameObject);
		Object.Destroy((Object)(object)((Component)main.transform.Find("AimOrigin")).gameObject);
		return Assets.MainAssetBundle.LoadAsset<GameObject>("aurelion");
	}

	internal static void CreatePrefab()
	{
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: Expected O, but got Unknown
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d5: Expected O, but got Unknown
		//IL_00fc: 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_011e: 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_0134: Expected O, but got Unknown
		//IL_015b: Unknown result type (might be due to invalid IL or missing references)
		//IL_016c: Unknown result type (might be due to invalid IL or missing references)
		//IL_017d: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_025f: Unknown result type (might be due to invalid IL or missing references)
		//IL_037f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0384: Unknown result type (might be due to invalid IL or missing references)
		//IL_03aa: 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_03f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0455: 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_0472: Unknown result type (might be due to invalid IL or missing references)
		//IL_0477: Unknown result type (might be due to invalid IL or missing references)
		//IL_048f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0494: Unknown result type (might be due to invalid IL or missing references)
		//IL_0509: Unknown result type (might be due to invalid IL or missing references)
		//IL_050e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0781: Unknown result type (might be due to invalid IL or missing references)
		//IL_0786: Unknown result type (might be due to invalid IL or missing references)
		//IL_07a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_07ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_07cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_07d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_07fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_080a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0814: Unknown result type (might be due to invalid IL or missing references)
		//IL_081e: Unknown result type (might be due to invalid IL or missing references)
		//IL_083b: Unknown result type (might be due to invalid IL or missing references)
		//IL_085b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0964: Unknown result type (might be due to invalid IL or missing references)
		//IL_0969: Unknown result type (might be due to invalid IL or missing references)
		//IL_09a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_09a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_09ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_09ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_0597: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b92: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c8a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c91: Expected O, but got Unknown
		//IL_0cb1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cc3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ce4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d46: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d4b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d79: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d7e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0da7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0dac: Unknown result type (might be due to invalid IL or missing references)
		//IL_0dbd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0dc2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0deb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0df0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e01: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e06: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e2f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e34: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e45: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e4a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e73: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e78: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e89: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e8e: Unknown result type (might be due to invalid IL or missing references)
		//IL_05dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_069e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0649: Unknown result type (might be due to invalid IL or missing references)
		//IL_064e: Unknown result type (might be due to invalid IL or missing references)
		characterPrefab = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody"), "AurelionSolBody", true);
		characterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true;
		characterPrefab.AddComponent<StarsAttachment>();
		characterPrefab.AddComponent<StardustCollector>();
		characterPrefab.AddComponent<AurelionSecondaryController>();
		GameObject val = CreateModel(characterPrefab);
		GameObject val2 = new GameObject("ModelBase");
		val2.transform.parent = characterPrefab.transform;
		val2.transform.localPosition = new Vector3(0f, -0.94f, 0f);
		val2.transform.localRotation = Quaternion.identity;
		val2.transform.localScale = new Vector3(1f, 1f, 1f);
		GameObject val3 = new GameObject("CameraPivot");
		val3.transform.parent = val2.transform;
		val3.transform.localPosition = new Vector3(0f, 1.6f, 0f);
		val3.transform.localRotation = Quaternion.identity;
		val3.transform.localScale = Vector3.one;
		GameObject val4 = new GameObject("AimOrigin");
		val4.transform.parent = val2.transform;
		val4.transform.localPosition = new Vector3(0f, 2.3f, 0f);
		val4.transform.localRotation = Quaternion.identity;
		val4.transform.localScale = Vector3.one;
		Transform transform = val.transform;
		transform.parent = val2.transform;
		transform.localPosition = Vector3.zero;
		transform.localScale = new Vector3(1f, 1f, 1f);
		transform.localRotation = Quaternion.identity;
		CharacterDirection component = characterPrefab.GetComponent<CharacterDirection>();
		component.moveVector = Vector3.zero;
		component.targetTransform = val2.transform;
		component.overrideAnimatorForwardTransform = null;
		component.rootMotionAccumulator = null;
		component.modelAnimator = val.GetComponentInChildren<Animator>();
		component.driveFromRootRotation = false;
		component.turnSpeed = 720f;
		CharacterBody component2 = characterPrefab.GetComponent<CharacterBody>();
		((Object)component2).name = "AurelionSolBody";
		component2.baseNameToken = "AURELION_NAME";
		component2.subtitleNameToken = "AURELION_SUBTITLE";
		component2.bodyFlags = (BodyFlags)16;
		component2.rootMotionInMainState = false;
		component2.mainRootSpeed = 0f;
		component2.baseMaxHealth = 130f;
		component2.levelMaxHealth = 40f;
		component2.baseRegen = 1f;
		component2.levelRegen = 0.33f;
		component2.baseMaxShield = 0f;
		component2.levelMaxShield = 0f;
		component2.baseMoveSpeed = 9f;
		component2.levelMoveSpeed = 0f;
		component2.baseAcceleration = 14f;
		component2.baseJumpPower = 15f;
		component2.levelJumpPower = 0f;
		component2.baseDamage = 12f;
		component2.levelDamage = 2.4f;
		component2.baseAttackSpeed = 1f;
		component2.levelAttackSpeed = 0f;
		component2.baseCrit = 1f;
		component2.levelCrit = 0f;
		component2.baseArmor = 0f;
		component2.levelArmor = 0f;
		component2.baseJumpCount = 1;
		component2.sprintingSpeedMultiplier = 1.45f;
		component2.wasLucky = false;
		component2._defaultCrosshairPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/SimpleDotCrosshair.prefab").WaitForCompletion();
		component2.hideCrosshair = false;
		component2.aimOriginTransform = val4.transform;
		component2.hullClassification = (HullClassification)0;
		component2.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portraitx128").texture;
		component2.isChampion = false;
		component2.currentVehicle = null;
		component2.skinIndex = 0u;
		component2.preferredPodPrefab = null;
		component2.bodyColor = characterColor;
		CharacterMotor component3 = characterPrefab.GetComponent<CharacterMotor>();
		component3.walkSpeedPenaltyCoefficient = 1f;
		component3.characterDirection = component;
		component3.muteWalkMotion = false;
		component3.mass = 100f;
		component3.airControl = 0.25f;
		component3.disableAirControlUntilCollision = false;
		component3.generateParametersOnAwake = true;
		InputBankTest component4 = characterPrefab.GetComponent<InputBankTest>();
		component4.moveVector = Vector3.zero;
		CameraTargetParams component5 = characterPrefab.GetComponent<CameraTargetParams>();
		component5.cameraParams = Addressables.LoadAssetAsync<CharacterCameraParams>((object)"RoR2/Base/Croco/ccpCroco.asset").WaitForCompletion();
		component5.cameraPivotTransform = null;
		component5.recoil = Vector2.zero;
		component5.dontRaycastToPivot = false;
		ModelLocator component6 = characterPrefab.GetComponent<ModelLocator>();
		component6.modelTransform = transform;
		component6.modelBaseTransform = val2.transform;
		component6.dontReleaseModelOnDeath = false;
		component6.autoUpdateModelTransform = true;
		component6.dontDetatchFromParent = false;
		component6.noCorpse = false;
		component6.normalizeToFloor = false;
		component6.preserveModel = false;
		ChildLocator component7 = val.GetComponent<ChildLocator>();
		CharacterModel val5 = val.AddComponent<CharacterModel>();
		Shader shader = Addressables.LoadAssetAsync<Shader>((object)"RoR2/Base/Shaders/HGUIOverbrighten.shader").WaitForCompletion();
		SkinnedMeshRenderer[] componentsInChildren = val.GetComponentsInChildren<SkinnedMeshRenderer>(true);
		List<RendererInfo> list = new List<RendererInfo>();
		for (int i = 0; i < componentsInChildren.Length; i++)
		{
			string name = ((Object)componentsInChildren[i]).name;
			bool flag = name == "Default";
			bool flag2 = name == "Default1";
			bool flag3 = name == "DefaultSplit";
			bool flag4 = name == "Default2";
			bool flag5 = name == "Skin03" || name == "Skin05";
			RendererInfo val6 = default(RendererInfo);
			val6.renderer = (Renderer)(object)componentsInChildren[i];
			val6.defaultShadowCastingMode = (ShadowCastingMode)1;
			val6.ignoreOverlays = false;
			if (flag)
			{
				val6.defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture);
				val6.defaultMaterial.shader = shader;
			}
			else if (flag2)
			{
				val6.defaultMaterial = ((Renderer)componentsInChildren[i]).material;
			}
			else if (flag3)
			{
				val6.defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture);
			}
			else if (flag4)
			{
				val6.defaultMaterial = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/CrippleWard/matCrippleSphereIndicator.mat").WaitForCompletion();
			}
			else if (!flag5)
			{
				val6.defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture);
			}
			else
			{
				val6.defaultMaterial = ((Renderer)componentsInChildren[i]).material;
			}
			list.Add(val6);
		}
		RendererInfo[] array = list.ToArray();
		val5.body = component2;
		val5.baseRendererInfos = array;
		val5.autoPopulateLightInfos = true;
		val5.invisibilityCount = 0;
		val5.temporaryOverlays = new List<TemporaryOverlayInstance>();
		Reflection.SetFieldValue<SkinnedMeshRenderer>((object)val5, "mainSkinnedMeshRenderer", componentsInChildren[0]);
		ModelSkinController val7 = val.AddComponent<ModelSkinController>();
		LanguageAPI.Add("AURELIONBODY_DEFAULT_SKIN_NAME", "Default");
		LanguageAPI.Add("AURELIONBODY_SKIN01_SKIN_NAME", "Ashen Lord");
		LanguageAPI.Add("AURELIONBODY_SKIN02_SKIN_NAME", "Mecha");
		LanguageAPI.Add("AURELIONBODY_SKIN03_SKIN_NAME", "Storm Dragon");
		LanguageAPI.Add("AURELIONBODY_SKIN04_SKIN_NAME", "PROJECT");
		LanguageAPI.Add("AURELIONBODY_SKIN05_SKIN_NAME", "Inkshadow");
		Renderer[] childList = (Renderer[])(object)componentsInChildren;
		SkinDefInfo val8 = Utils.CreateNewSkinDefInfo(childList, val, "AURELIONBODY_SKIN01_SKIN_NAME", "Skin01", array);
		val8.UnlockableDef = Achievements.aurelionAshenDef;
		childList = (Renderer[])(object)componentsInChildren;
		SkinDefInfo val9 = Utils.CreateNewSkinDefInfo(childList, val, "AURELIONBODY_SKIN02_SKIN_NAME", "Skin02", array);
		val9.UnlockableDef = Achievements.aurelionMechaDef;
		childList = (Renderer[])(object)componentsInChildren;
		SkinDefInfo val10 = Utils.CreateNewSkinDefInfo(childList, val, "AURELIONBODY_SKIN03_SKIN_NAME", "Skin03", array);
		val10.UnlockableDef = Achievements.aurelionStormDef;
		SkinDef[] array2 = new SkinDef[6];
		childList = (Renderer[])(object)componentsInChildren;
		array2[0] = Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(childList, val, "AURELIONBODY_DEFAULT_SKIN_NAME", "Default", array));
		array2[1] = Skins.CreateNewSkinDef(val8);
		array2[2] = Skins.CreateNewSkinDef(val9);
		array2[3] = Skins.CreateNewSkinDef(val10);
		childList = (Renderer[])(object)componentsInChildren;
		array2[4] = Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(childList, val, "AURELIONBODY_SKIN04_SKIN_NAME", "Skin04", array));
		childList = (Renderer[])(object)componentsInChildren;
		array2[5] = Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(childList, val, "AURELIONBODY_SKIN05_SKIN_NAME", "Skin05", array));
		val7.skins = (SkinDef[])(object)array2;
		HealthComponent component8 = characterPrefab.GetComponent<HealthComponent>();
		component8.health = 130f;
		component8.shield = 0f;
		component8.barrier = 0f;
		component8.magnetiCharge = 0f;
		component8.body = null;
		component8.dontShowHealthbar = false;
		component8.globalDeathEventChanceCoefficient = 1f;
		SfxLocator component9 = characterPrefab.GetComponent<SfxLocator>();
		component9.deathSound = "Play_ui_player_death";
		component9.barkSound = "";
		component9.openSound = "";
		component9.landingSound = null;
		component9.fallDamageSound = null;
		component9.aliveLoopStart = "";
		component9.aliveLoopStop = "";
		Object.Destroy((Object)(object)characterPrefab.GetComponent<CharacterDirection>());
		Object.Destroy((Object)(object)characterPrefab.GetComponent<CharacterMotor>());
		QuaternionPID val11 = characterPrefab.AddComponent<QuaternionPID>();
		val11.customName = "Angular Velocity PID";
		val11.PID = new Vector3(6f, 1f, 0f);
		val11.gain = 1f;
		VectorPID val12 = characterPrefab.AddComponent<VectorPID>();
		val12.customName = "torquePID";
		val12.PID = new Vector3(2f, 1f, 0f);
		val12.isAngle = true;
		val12.gain = 3f;
		VectorPID val13 = characterPrefab.AddComponent<VectorPID>();
		val13.customName = "forcePID";
		val13.PID = new Vector3(3f, 0f, 0f);
		val13.isAngle = false;
		val13.gain = 1f;
		Rigidbody component10 = characterPrefab.GetComponent<Rigidbody>();
		component10.mass = 300f;
		component10.drag = 0f;
		component10.angularDrag = 0.02f;
		component10.maxDepenetrationVelocity = 132f;
		component10.solverIterations = 6;
		component10.sleepThreshold = 0.005f;
		component10.maxAngularVelocity = 7f;
		component10.solverVelocityIterations = 1;
		component10.useGravity = false;
		component10.isKinematic = false;
		component10.interpolation = (RigidbodyInterpolation)1;
		component10.collisionDetectionMode = (CollisionDetectionMode)0;
		component10.constraints = (RigidbodyConstraints)0;
		RigidbodyDirection val14 = characterPrefab.AddComponent<RigidbodyDirection>();
		val14.rigid = component10;
		val14.angularVelocityPID = val11;
		val14.torquePID = val12;
		RigidbodyMotor val15 = characterPrefab.AddComponent<RigidbodyMotor>();
		val15.rigid = component10;
		val15.forcePID = val13;
		val15.canTakeImpactDamage = false;
		CapsuleCollider component11 = characterPrefab.GetComponent<CapsuleCollider>();
		component11.radius = 0.89f;
		component11.height = 6.71f;
		component11.direction = 2;
		Object.Destroy((Object)(object)characterPrefab.GetComponent<KinematicCharacterMotor>());
		CapsuleCollider component12 = ((Component)component7.FindChild("collider")).GetComponent<CapsuleCollider>();
		HurtBoxGroup val16 = val.AddComponent<HurtBoxGroup>();
		List<HurtBox> list2 = new List<HurtBox>();
		Collider[] componentsInChildren2 = val.GetComponentsInChildren<Collider>(true);
		for (int j = 0; j < componentsInChildren2.Length; j++)
		{
			HurtBox val17 = ((Component)componentsInChildren2[j]).gameObject.AddComponent<HurtBox>();
			((Component)val17).gameObject.layer = LayerIndex.entityPrecise.intVal;
			val17.healthComponent = component8;
			val17.damageModifier = (DamageModifier)0;
			val17.hurtBoxGroup = val16;
			val17.indexInGroup = (short)j;
			val17.teamIndex = (TeamIndex)1;
			list2.Add(val17);
		}
		val16.hurtBoxes = list2.ToArray();
		val16.mainHurtBox = ((Component)component12).GetComponent<HurtBox>();
		val16.mainHurtBox.isBullseye = true;
		val16.bullseyeCount = 1;
		characterPrefab.GetComponent<Interactor>().maxInteractionDistance = 6.5f;
		AimAnimator val18 = val.AddComponent<AimAnimator>();
		val18.inputBank = component4;
		val18.directionComponent = component;
		val18.pitchRangeMax = 55f;
		val18.pitchRangeMin = -50f;
		val18.yawRangeMin = -44f;
		val18.yawRangeMax = 44f;
		val18.pitchGiveupRange = 30f;
		val18.yawGiveupRange = 10f;
		val18.giveupDuration = 8f;
		GameObject val19 = new GameObject("PrimaryHitbox");
		val19.transform.SetParent(component7.FindChild("FireBreath"));
		val19.transform.localPosition = Vector3.zero;
		val19.transform.localRotation = Quaternion.identity;
		val19.transform.localScale = new Vector3(12f, 12f, 12f);
		HitBoxGroup val20 = val19.AddComponent<HitBoxGroup>();
		HitBox val21 = val19.AddComponent<HitBox>();
		val19.layer = LayerIndex.projectile.intVal;
		val20.hitBoxes = (HitBox[])(object)new HitBox[1] { val21 };
		val20.groupName = "PrimaryHitbox";
		EntityStateMachine component13 = ((Component)component2).GetComponent<EntityStateMachine>();
		component13.mainStateType = new SerializableEntityStateType(typeof(FlyMain));
		CharacterDeathBehavior component14 = characterPrefab.GetComponent<CharacterDeathBehavior>();
		component14.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>();
		component14.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath));
		EntityStateMachine val22 = characterPrefab.AddComponent<EntityStateMachine>();
		val22.customName = "Util";
		val22.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val22.mainStateType = new SerializableEntityStateType(typeof(Idle));
		EntityStateMachine val23 = characterPrefab.AddComponent<EntityStateMachine>();
		val23.customName = "Starsurge";
		val23.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val23.mainStateType = new SerializableEntityStateType(typeof(Idle));
		EntityStateMachine val24 = characterPrefab.AddComponent<EntityStateMachine>();
		val24.customName = "StarsurgeRecast";
		val24.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val24.mainStateType = new SerializableEntityStateType(typeof(Idle));
		EntityStateMachine val25 = characterPrefab.AddComponent<EntityStateMachine>();
		val25.customName = "InterruptFlyState";
		val25.initialStateType = new SerializableEntityStateType(typeof(BaseState));
		val25.mainStateType = new SerializableEntityStateType(typeof(BaseState));
		NetworkStateMachine component15 = ((Component)component2).GetComponent<NetworkStateMachine>();
		List<EntityStateMachine> list3 = component15.stateMachines.ToList();
		list3.Add(val22);
		list3.Add(val23);
		list3.Add(val24);
		list3.Add(val25);
		component15.stateMachines = list3.ToArray();
		ContentAddition.AddBody(characterPrefab);
	}

	private void RegisterCharacter()
	{
		//IL_003f: 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_012a: Unknown result type (might be due to invalid IL or missing references)
		characterDisplay = Utils.NewDisplayModel(((Component)characterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "AurelionDisplay");
		characterDisplay.transform.localScale = new Vector3(0.65f, 0.65f, 0.65f);
		characterDisplay.AddComponent<NetworkIdentity>();
		string text = "Aurelion Sol is an unorthodox survivor who has tools to handle both close and long range, but prefers to position around his expanded star radius in the mid-range.<style=cSub>\r\n\r\n< ! > Solar Flare's firebreath reaches the expanded radius, meaning proper positioning can add tremendous amounts of dps." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Starsurge is a fantastic tool to keep aggressive melee enemies in place as you kite them as well as doubling up as a combo and engage tool. Its maximum distance away from Aurelion is the expanded radius." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Comet of Legend is a very versatile skill for both getting to points of interest quickly and repositioning for disengaging and engaging with Starsurge." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Voice of Light has a high cooldown but is an incredibly powerful skill, both forcing enemies into favourable positions and dealing high long range damage." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Finding out when to combo Aurelion Sol's skills together with a star hit will grealty improve your consistency with him!";
		string text2 = "..and so he left, freedom in sight. Targon is next.";
		string text3 = "..and so he vanished, forever a slave to the gods.";
		LanguageAPI.Add("AURELION_NAME", "Aurelion Sol");
		LanguageAPI.Add("AURELION_DESCRIPTION", text);
		LanguageAPI.Add("AURELION_SUBTITLE", "The Star Forger");
		LanguageAPI.Add("AURELION_OUTRO", text2);
		LanguageAPI.Add("AURELION_FAIL", text3);
		SurvivorDef val = ScriptableObject.CreateInstance<SurvivorDef>();
		val.cachedName = "AURELION_NAME";
		val.unlockableDef = Achievements.aurelionUnlockDef;
		val.descriptionToken = "AURELION_DESCRIPTION";
		val.primaryColor = characterColor;
		val.bodyPrefab = characterPrefab;
		val.displayPrefab = characterDisplay;
		val.outroFlavorToken = "AURELION_OUTRO";
		val.desiredSortPosition = 0f;
		val.mainEndingEscapeFailureFlavorToken = "AURELION_FAIL";
		ContentAddition.AddSurvivorDef(val);
		SkillSetup();
	}

	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)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: 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_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: 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_0073: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		bool flag = default(bool);
		ContentAddition.AddEntityState<AurelionMain>(ref flag);
		ContentAddition.AddEntityState<FlyMain>(ref flag);
		ContentAddition.AddEntityState<AurelionPrimary>(ref flag);
		ContentAddition.AddEntityState<AurelionSecondary>(ref flag);
		ContentAddition.AddEntityState<AurelionSecondaryRecast>(ref flag);
		ContentAddition.AddEntityState<DetonateSecondary>(ref flag);
		ContentAddition.AddEntityState<AurelionUtility>(ref flag);
		ContentAddition.AddEntityState<UtilityEnd>(ref flag);
		ContentAddition.AddEntityState<AurelionSpecial>(ref flag);
		ContentAddition.AddEntityState<AurelionNewPrimary>(ref flag);
		ContentAddition.AddEntityState<AurelionNewSecondary>(ref flag);
		ContentAddition.AddEntityState<AurelionNewSecondaryCast>(ref flag);
		ContentAddition.AddEntityState<AurelionNewUtility>(ref flag);
		ContentAddition.AddEntityState<AurelionNewUtilityFlight>(ref flag);
		ContentAddition.AddEntityState<AurelionNewSpecial>(ref flag);
		ContentAddition.AddEntityState<AurelionNewSpecialCast>(ref flag);
		ContentAddition.AddEntityState<NewSpecialEnd>(ref flag);
	}

	private void SkillSetup()
	{
		GenericSkill[] componentsInChildren = characterPrefab.GetComponentsInChildren<GenericSkill>();
		foreach (GenericSkill val in componentsInChildren)
		{
			Object.DestroyImmediate((Object)(object)val);
		}
		PassiveSetup();
		PrimarySetup();
		SecondarySetup();
		UtilitySetup();
		SpecialSetup();
	}

	private void PassiveSetup()
	{
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_012f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_0174: Unknown result type (might be due to invalid IL or missing references)
		//IL_0209: Unknown result type (might be due to invalid IL or missing references)
		//IL_0223: Unknown result type (might be due to invalid IL or missing references)
		//IL_022d: Expected O, but got Unknown
		//IL_022e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0230: Unknown result type (might be due to invalid IL or missing references)
		//IL_0248: Unknown result type (might be due to invalid IL or missing references)
		//IL_024d: Unknown result type (might be due to invalid IL or missing references)
		//IL_028d: Unknown result type (might be due to invalid IL or missing references)
		//IL_030d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0327: Unknown result type (might be due to invalid IL or missing references)
		//IL_0331: Expected O, but got Unknown
		//IL_0332: Unknown result type (might be due to invalid IL or missing references)
		//IL_0334: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("AURELION_PASSIVE_NAME", "Center of the Universe");
		LanguageAPI.Add("AURELION_PASSIVE_DESCRIPTION", "Aurelion Sol can fly at will and is permanently orbited by 3 stars." + Environment.NewLine + "<style=cKeywordName>Celestial Expansion</style><style=cSub>");
		KeyCode value = KeyToggle.Value;
		LanguageAPI.Add("AURELION_PASSIVE_KEYWORD", "<style=cKeywordName>Celestial Expansion</style><style=cSub>Pressing " + ((object)(KeyCode)(ref value)).ToString() + " toggles the stars between close and expanded range, when a star hits an enemy it deals <style=cIsDamage>500% damage</style>. The star's rotation speed scales with attack speed.");
		LanguageAPI.Add("AURELION_PASSIVE2_NAME", "Cosmic Creator");
		LanguageAPI.Add("AURELION_PASSIVE2_DESCRIPTION", "Aurelion Sol can fly at will and his abilities break his foes down to <style=cIsUtility>stardust</style>, stacks of <style=cIsUtility>stardust</style> <style=cIsDamage>empower</style> his abilities in various ways. <style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>");
		component.passiveSkill.enabled = false;
		component.passiveSkill.skillNameToken = "AURELION_PASSIVE_NAME";
		component.passiveSkill.skillDescriptionToken = "AURELION_PASSIVE_DESCRIPTION";
		component.passiveSkill.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsol_w_starsout");
		component.passiveSkill.keywordToken = "AURELION_PASSIVE_KEYWORD";
		GenericSkill val = characterPrefab.AddComponent<GenericSkill>();
		val.hideInCharacterSelect = false;
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[2];
		Reflection.SetFieldValue<SkillFamily>((object)val, "_skillFamily", val2);
		SkillFamily skillFamily = val.skillFamily;
		SkillDef val3 = ScriptableObject.CreateInstance<SkillDef>();
		val3.activationState = new SerializableEntityStateType(typeof(BaseState));
		val3.activationStateMachineName = "Weapon";
		val3.baseMaxStock = 0;
		val3.baseRechargeInterval = 0f;
		val3.beginSkillCooldownOnSkillEnd = true;
		val3.canceledFromSprinting = false;
		val3.fullRestockOnAssign = true;
		val3.interruptPriority = (InterruptPriority)0;
		val3.isCombatSkill = true;
		val3.mustKeyPress = false;
		val3.cancelSprintingOnActivation = true;
		val3.rechargeStock = 0;
		val3.requiredStock = 0;
		val3.stockToConsume = 0;
		val3.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsol_w_starsout");
		val3.skillDescriptionToken = "AURELION_PASSIVE_DESCRIPTION";
		val3.skillName = "AURELION_PASSIVE_NAME";
		val3.skillNameToken = "AURELION_PASSIVE_NAME";
		val3.keywordTokens = new string[1] { "AURELION_PASSIVE_KEYWORD" };
		ContentAddition.AddSkillDef(val3);
		Variant[] variants = skillFamily.variants;
		Variant val4 = new Variant
		{
			skillDef = val3
		};
		((Variant)(ref val4)).viewableNode = new Node(val3.skillName, false, (Node)null);
		variants[0] = val4;
		val3 = ScriptableObject.CreateInstance<SkillDef>();
		val3.activationState = new SerializableEntityStateType(typeof(BaseState));
		val3.activationStateMachineName = "Weapon";
		val3.baseMaxStock = 0;
		val3.baseRechargeInterval = 0f;
		val3.beginSkillCooldownOnSkillEnd = true;
		val3.canceledFromSprinting = false;
		val3.fullRestockOnAssign = true;
		val3.interruptPriority = (InterruptPriority)0;
		val3.isCombatSkill = true;
		val3.mustKeyPress = false;
		val3.cancelSprintingOnActivation = true;
		val3.rechargeStock = 0;
		val3.requiredStock = 0;
		val3.stockToConsume = 0;
		val3.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsolp.asolgu");
		val3.skillDescriptionToken = "AURELION_PASSIVE2_DESCRIPTION";
		val3.skillName = "AURELION_PASSIVE2_NAME";
		val3.skillNameToken = "AURELION_PASSIVE2_NAME";
		ContentAddition.AddSkillDef(val3);
		Variant[] variants2 = skillFamily.variants;
		val4 = new Variant
		{
			skillDef = val3
		};
		((Variant)(ref val4)).viewableNode = new Node(val3.skillName, false, (Node)null);
		variants2[1] = val4;
		ContentAddition.AddSkillFamily(skillFamily);
	}

	private void PrimarySetup()
	{
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_0190: Unknown result type (might be due to invalid IL or missing references)
		//IL_019a: Expected O, but got Unknown
		//IL_019b: 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_01ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_028c: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b6: Expected O, but got Unknown
		//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("AURELION_M1", "Solar Flare");
		LanguageAPI.Add("AURELION_M1_DESCRIPTION", "<style=cIsDamage>Ignite</style>. Aurelion Sol exhales a cluster of starfire close to him, dealing <style=cIsDamage>250% damage</style>. This attack also sends a single, weaker but long range projectile where aimed dealing <style=cIsDamage>200% damage</style>." + Environment.NewLine + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Hits with the fire breath collect <style=cIsUtility>stardust</style>. Attack speed and damage is increased with <style=cIsUtility>stardust</style>.");
		LanguageAPI.Add("AURELION_M1NEW", "Breath of Light");
		LanguageAPI.Add("AURELION_M1NEW_DESCRIPTION", "Exhale a beam of starfire, dealing <style=cIsDamage>20% damage</style> every 0.125 seconds to the first enemy hit, with reduced splash damage. Every second the beam hits the same target, it'll burst, dealing <style=cIsDamage>150% damage</style> in an aoe. Attack speed increases damage." + Environment.NewLine + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>The bursts collect <style=cIsUtility>stardust</style>. Stardust increases the burst's damage.");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(AurelionPrimary));
		val.activationStateMachineName = "Weapon";
		val.baseMaxStock = 0;
		val.baseRechargeInterval = 0f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = true;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = false;
		val.cancelSprintingOnActivation = true;
		val.rechargeStock = 0;
		val.requiredStock = 0;
		val.stockToConsume = 0;
		val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsol_passive");
		val.skillDescriptionToken = "AURELION_M1_DESCRIPTION";
		val.skillName = "AURELION_M1";
		val.skillNameToken = "AURELION_M1";
		ContentAddition.AddSkillDef(val);
		component.primary = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.primary, "_skillFamily", val2);
		SkillFamily skillFamily = component.primary.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
		val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(AurelionNewPrimary));
		val.activationStateMachineName = "Weapon";
		val.baseMaxStock = 0;
		val.baseRechargeInterval = 0f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = true;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = false;
		val.cancelSprintingOnActivation = true;
		val.rechargeStock = 0;
		val.requiredStock = 0;
		val.stockToConsume = 0;
		val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsolq.asolgu");
		val.skillDescriptionToken = "AURELION_M1NEW_DESCRIPTION";
		val.skillName = "AURELION_M1NEW";
		val.skillNameToken = "AURELION_M1NEW";
		ContentAddition.AddSkillDef(val);
		Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);
		Variant[] variants2 = skillFamily.variants;
		int num = skillFamily.variants.Length - 1;
		val3 = new Variant
		{
			skillDef = val,
			unlockableDef = null
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants2[num] = val3;
	}

	private void SecondarySetup()
	{
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_0190: Unknown result type (might be due to invalid IL or missing references)
		//IL_019a: Expected O, but got Unknown
		//IL_019b: 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_01c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_021c: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_039a: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c4: Expected O, but got Unknown
		//IL_03c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c7: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("AURELION_M2", "Starsurge");
		LanguageAPI.Add("AURELION_M2_DESCRIPTION", "Aurelion Sol channels a newborn star which travels in the target direction. When recast or it strays too far away from aurelion it detonates, <style=cIsDamage>stunning</style> and dealing <style=cIsDamage>400%</style>, increasing with distance travelled." + Environment.NewLine + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Damage with distance is increased.");
		LanguageAPI.Add("AURELION_M2NEW", "Singularity");
		LanguageAPI.Add("AURELION_M2NEW_DESCRIPTION", "Aurelion Sol conjures a black hole, dragging enemies towards the centre and dealing <style=cIsDamage>20% damage</style> every 0.25 seconds for 5 seconds, increased to 30% in the centre. Enemies that die in the black hole are counted as Aurelion Sol killing them." + Environment.NewLine + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Enemies that die in the black hole grant 1 stardust each. The effect radius increases with <style=cIsUtility>stardust</style>.");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(AurelionSecondary));
		val.activationStateMachineName = "Starsurge";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 6f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsol_q");
		val.skillDescriptionToken = "AURELION_M2_DESCRIPTION";
		val.skillName = "AURELION_M2";
		val.skillNameToken = "AURELION_M2";
		ContentAddition.AddSkillDef(val);
		component.secondary = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.secondary, "_skillFamily", val2);
		SkillFamily skillFamily = component.secondary.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
		AurelionSecondary.SkillDef = ScriptableObject.CreateInstance<SkillDef>();
		AurelionSecondary.SkillDef.activationState = new SerializableEntityStateType(typeof(AurelionSecondaryRecast));
		AurelionSecondary.SkillDef.activationStateMachineName = "StarsurgeRecast";
		AurelionSecondary.SkillDef.baseMaxStock = 0;
		AurelionSecondary.SkillDef.baseRechargeInterval = 0f;
		AurelionSecondary.SkillDef.beginSkillCooldownOnSkillEnd = true;
		AurelionSecondary.SkillDef.canceledFromSprinting = false;
		AurelionSecondary.SkillDef.fullRestockOnAssign = true;
		AurelionSecondary.SkillDef.interruptPriority = (InterruptPriority)0;
		AurelionSecondary.SkillDef.isCombatSkill = true;
		AurelionSecondary.SkillDef.mustKeyPress = true;
		AurelionSecondary.SkillDef.cancelSprintingOnActivation = false;
		AurelionSecondary.SkillDef.rechargeStock = 0;
		AurelionSecondary.SkillDef.requiredStock = 0;
		AurelionSecondary.SkillDef.stockToConsume = 0;
		AurelionSecondary.SkillDef.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsol_q_explode");
		AurelionSecondary.SkillDef.skillDescriptionToken = "AURELION_M2_DESCRIPTION";
		AurelionSecondary.SkillDef.skillName = "AURELION_M2";
		AurelionSecondary.SkillDef.skillNameToken = "AURELION_M2";
		ContentAddition.AddSkillDef(val);
		val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(AurelionNewSecondary));
		val.activationStateMachineName = "Starsurge";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 10f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.dontAllowPastMaxStocks = true;
		val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsole.asolgu");
		val.skillDescriptionToken = "AURELION_M2NEW_DESCRIPTION";
		val.skillName = "AURELION_M2NEW";
		val.skillNameToken = "AURELION_M2NEW";
		ContentAddition.AddSkillDef(val);
		Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);
		Variant[] variants2 = skillFamily.variants;
		int num = skillFamily.variants.Length - 1;
		val3 = new Variant
		{
			skillDef = val,
			unlockableDef = null
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants2[num] = val3;
	}

	private void UtilitySetup()
	{
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_0190: Unknown result type (might be due to invalid IL or missing references)
		//IL_019a: Expected O, but got Unknown
		//IL_019b: 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_01ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_028c: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b6: Expected O, but got Unknown
		//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("AURELION_UTIL", "Comet of Legend");
		LanguageAPI.Add("AURELION_UTIL_DESCRIPTION", "Aurelion Sol flies in a burst of speed in the direction aimed, the speed and distance scales with <style=cIsUtility>movement speed</style>. If Starsurge is currently active or is cast during Comet of Legend, it will center itself on Aurelion Sol while he travels. Can be cancelled at any time by pressing Jump." + Environment.NewLine + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Maximum travel distance is increased further with <style=cIsUtility>stardust</style>.");
		LanguageAPI.Add("AURELION_UTILNEW", "Dragonflight");
		LanguageAPI.Add("AURELION_UTILNEW_DESCRIPTION", "Dash after a brief, while dashing, gain <style=cIsDamage>+20% damage</style>. The trajectory can be influenced with directional keys, can be cancelled early by pressing jump." + Environment.NewLine + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Duration increases with <style=cIsUtility>stardust</style>.");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(AurelionUtility));
		val.activationStateMachineName = "Slide";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 6f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = false;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsol_e_fly");
		val.skillDescriptionToken = "AURELION_UTIL_DESCRIPTION";
		val.skillName = "AURELION_UTIL";
		val.skillNameToken = "AURELION_UTIL";
		ContentAddition.AddSkillDef(val);
		component.utility = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.utility, "_skillFamily", val2);
		SkillFamily skillFamily = component.utility.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
		val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(AurelionNewUtilityFlight));
		val.activationStateMachineName = "Util";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 10f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = false;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsolw1.asolgu");
		val.skillDescriptionToken = "AURELION_UTILNEW_DESCRIPTION";
		val.skillName = "AURELION_UTILNEW";
		val.skillNameToken = "AURELION_UTILNEW";
		ContentAddition.AddSkillDef(val);
		Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);
		Variant[] variants2 = skillFamily.variants;
		int num = skillFamily.variants.Length - 1;
		val3 = new Variant
		{
			skillDef = val,
			unlockableDef = null
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants2[num] = val3;
	}

	private void SpecialSetup()
	{
		//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0111: 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_01de: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e8: Expected O, but got Unknown
		//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0208: Unknown result type (might be due to invalid IL or missing references)
		//IL_020d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0246: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_030e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0318: Expected O, but got Unknown
		//IL_0319: Unknown result type (might be due to invalid IL or missing references)
		//IL_031b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0339: Unknown result type (might be due to invalid IL or missing references)
		//IL_033e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0393: Unknown result type (might be due to invalid IL or missing references)
		SkillLocator component = characterPrefab.GetComponent<SkillLocator>();
		LanguageAPI.Add("AURELION_SPEC", "Voice of Light");
		LanguageAPI.Add("AURELION_SPEC_DESCRIPTION", "Aurelion Sol <style=cIsUtility>pulls</style> all nearby enemies to Center of the universe's expanded radius then exhales a beam of starfire in the target direction dealing <style=cIsDamage>1000% damage</style>." + Environment.NewLine + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Collects stardust on kill. Damage and length of the blast is increased with <style=cIsUtility>stardust</style>.");
		LanguageAPI.Add("AURELION_SPECNEW", "Falling Star");
		LanguageAPI.Add("AURELION_SPECNEW_DESCRIPTION", "Call down a star to impact the target location after 1.25 seconds, dealing <style=cIsDamage>500% damage</style> to enemies hit and <style=cIsDamage>stunning</style> them for <style=cIsUtility>1s</style>." + Environment.NewLine + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Falling Star grants 1 <style=cIsUtility>stardust</style> for each enemy hit. Damage and effect radius increase with <style=cIsUtility>stardust</style>, at 900 <style=cIsUtility>stardust</style> this skill permanently becomes <style=cKeywordName><style=cIsDamage>The Skies Descend</style></style><style=cSub>");
		LanguageAPI.Add("AURELION_SPECNEW2", "The Skies Descend");
		LanguageAPI.Add("AURELION_SPECNEW2_DESCRIPTION", "Aurelion Sol summons an enormous star to impact the target location after 2 seconds, dealing <style=cIsDamage>3000% damage</style> damage to enemies hit and <style=cIsDamage>stunning</style> them for <style=cIsUtility>1s</style>, upon impact, a massive shockwave rapidly expands through the map, dealing <style=cIsDamage>1800% damage</style> to anything caught and slowing them." + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Effect radius, shockwave travel distance and damage are all increased with <style=cIsUtility>stardust</style>.");
		LanguageAPI.Add("AURELION_SPECNEW2_DESCRIPTION_KEYWORD", "<style=cKeywordName><style=cIsDamage>The Skies Descend</style></style><style=cSub>Aurelion Sol summons an enormous star to impact the target location after 2 seconds, dealing <style=cIsDamage>3000% damage</style> damage to enemies hit and <style=cIsDamage>stunning</style> them for <style=cIsUtility>1s</style>, upon impact, a massive shockwave rapidly expands through the map, dealing <style=cIsDamage>1800% damage</style> to anything caught and slowing them." + Environment.NewLine + "<style=cKeywordName><style=cIsDamage>Cosmic Creator</style></style><style=cSub>Effect radius, shockwave travel distance and damage are all increased with <style=cIsUtility>stardust</style>.");
		SkillDef val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(AurelionSpecial));
		val.activationStateMachineName = "Slide";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 12f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsol_r");
		val.skillDescriptionToken = "AURELION_SPEC_DESCRIPTION";
		val.skillName = "AURELION_SPEC";
		val.skillNameToken = "AURELION_SPEC";
		ContentAddition.AddSkillDef(val);
		component.special = characterPrefab.AddComponent<GenericSkill>();
		SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>();
		val2.variants = (Variant[])(object)new Variant[1];
		Reflection.SetFieldValue<SkillFamily>((object)component.special, "_skillFamily", val2);
		SkillFamily skillFamily = component.special.skillFamily;
		Variant[] variants = skillFamily.variants;
		Variant val3 = new Variant
		{
			skillDef = val
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants[0] = val3;
		ContentAddition.AddSkillFamily(skillFamily);
		val = ScriptableObject.CreateInstance<SkillDef>();
		val.activationState = new SerializableEntityStateType(typeof(AurelionNewSpecial));
		val.activationStateMachineName = "Slide";
		val.baseMaxStock = 1;
		val.baseRechargeInterval = 12f;
		val.beginSkillCooldownOnSkillEnd = true;
		val.canceledFromSprinting = false;
		val.fullRestockOnAssign = false;
		val.interruptPriority = (InterruptPriority)0;
		val.isCombatSkill = true;
		val.mustKeyPress = true;
		val.cancelSprintingOnActivation = false;
		val.rechargeStock = 1;
		val.requiredStock = 1;
		val.stockToConsume = 1;
		val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsolr1.asolgu");
		val.skillDescriptionToken = "AURELION_SPECNEW_DESCRIPTION";
		val.skillName = "AURELION_SPECNEW";
		val.skillNameToken = "AURELION_SPECNEW";
		val.keywordTokens = new string[1] { "AURELION_SPECNEW2_DESCRIPTION_KEYWORD" };
		ContentAddition.AddSkillDef(val);
		Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);
		Variant[] variants2 = skillFamily.variants;
		int num = skillFamily.variants.Length - 1;
		val3 = new Variant
		{
			skillDef = val,
			unlockableDef = null
		};
		((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null);
		variants2[num] = val3;
		AurelionPassiveBehaviour.specialOverride = ScriptableObject.CreateInstance<SkillDef>();
		AurelionPassiveBehaviour.specialOverride.activationState = new SerializableEntityStateType(typeof(AurelionNewSpecial));
		AurelionPassiveBehaviour.specialOverride.activationStateMachineName = "Slide";
		AurelionPassiveBehaviour.specialOverride.baseMaxStock = 1;
		AurelionPassiveBehaviour.specialOverride.baseRechargeInterval = 12f;
		AurelionPassiveBehaviour.specialOverride.beginSkillCooldownOnSkillEnd = true;
		AurelionPassiveBehaviour.specialOverride.canceledFromSprinting = false;
		AurelionPassiveBehaviour.specialOverride.fullRestockOnAssign = true;
		AurelionPassiveBehaviour.specialOverride.interruptPriority = (InterruptPriority)0;
		AurelionPassiveBehaviour.specialOverride.isCombatSkill = true;
		AurelionPassiveBehaviour.specialOverride.mustKeyPress = true;
		AurelionPassiveBehaviour.specialOverride.cancelSprintingOnActivation = false;
		AurelionPassiveBehaviour.specialOverride.rechargeStock = 1;
		AurelionPassiveBehaviour.specialOverride.requiredStock = 1;
		AurelionPassiveBehaviour.specialOverride.stockToConsume = 1;
		AurelionPassiveBehaviour.specialOverride.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("aurelionsolr2.asolgu");
		AurelionPassiveBehaviour.specialOverride.skillDescriptionToken = "AURELION_SPECNEW2_DESCRIPTION";
		AurelionPassiveBehaviour.specialOverride.skillName = "AURELION_SPECNEW2";
		AurelionPassiveBehaviour.specialOverride.skillNameToken = "AURELION_SPECNEW2";
		ContentAddition.AddSkillDef(AurelionPassiveBehaviour.specialOverride);
	}

	private void CreateDoppelganger()
	{
		doppelganger = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterMasters/CommandoMonsterMaster"), "AurelionMaster", true);
		ContentAddition.AddMaster(doppelganger);
		CharacterMaster component = doppelganger.GetComponent<CharacterMaster>();
		component.bodyPrefab = characterPrefab;
	}
}
internal class AnimStatePause : MonoBehaviour
{
	private Animation anim;

	public float time;

	private void Start()
	{
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Expected O, but got Unknown
		Animation component = ((Component)this).GetComponent<Animation>();
		foreach (AnimationState item in component)
		{
			AnimationState val = item;
			time = val.length / 2f;
		}
	}

	private void FixedUpdate()
	{
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Expected O, but got Unknown
		if (!Object.op_Implicit((Object)(object)anim))
		{
			return;
		}
		foreach (AnimationState item in anim)
		{
			AnimationState val = item;
			val.time = time;
		}
	}
}
internal class AurelionGravSphereBehaviour : MonoBehaviour
{
	private ProjectileController projectile;

	private ProjectileExplosion explosion;

	private AurelionPassiveBehaviour collector;

	private RadialForce radialForce;

	public GameObject owner;

	private float stopwatch;

	private uint ID;

	private void Start()
	{
		//IL_00df: 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)
		InstanceTracker.Add<AurelionGravSphereBehaviour>(this);
		ID = AkSoundEngine.PostEvent(SFX.Play_Aurelion_E_Loop, ((Component)this).gameObject);
		projectile = ((Component)this).GetComponent<ProjectileController>();
		if (Object.op_Implicit((Object)(object)projectile) && Object.op_Implicit((Object)(object)projectile.owner))
		{
			owner = projectile.owner;
			collector = owner.GetComponent<AurelionPassiveBehaviour>();
		}
		radialForce = ((Component)this).GetComponent<RadialForce>();
		ApplyDebuff();
		explosion = ((Component)this).GetComponent<ProjectileExplosion>();
		explosion.blastRadius = 10f + Mathf.Clamp((float)collector.starCount * 0.05f, 0f, float.MaxValue);
		radialForce.radius = explosion.blastRadius;
		((Component)this).transform.localScale = Vector3.one * explosion.blastRadius;
		if (Object.op_Implicit((Object)(object)explosion) && NetworkServer.active)
		{
			explosion.DetonateServer();
		}
	}

	private void FixedUpdate()
	{
		stopwatch += Time.fixedDeltaTime;
		if (!Object.op_Implicit((Object)(object)explosion) || !Object.op_Implicit((Object)(object)collector) || !Object.op_Implicit((Object)(object)radialForce))
		{
			return;
		}
		ApplyDebuff();
		if (stopwatch >= 0.25f)
		{
			stopwatch = 0f;
			AkSoundEngine.PostEvent(SFX.Play_Aurelion_E_Hit, ((Component)this).gameObject);
			if (NetworkServer.active)
			{
				explosion.DetonateServer();
			}
		}
	}

	private void ApplyDebuff()
	{
		if (!Object.op_Implicit((Object)(object)radialForce))
		{
			return;
		}
		List<HurtBox> list = CollectionPool<HurtBox, List<HurtBox>>.RentCollection();
		radialForce.SearchForTargets(list);
		foreach (HurtBox item in list)
		{
			if (Object.op_Implicit((Object)(object)item.healthComponent) && Object.op_Implicit((Object)(object)item.healthComponent.body) && NetworkServer.active)
			{
				item.healthComponent.body.AddTimedBuff(Prefabs.grav, 0.3f);
			}
		}
	}

	private void OnDisable()
	{
		InstanceTracker.Remove<AurelionGravSphereBehaviour>(this);
		AkSoundEngine.StopPlayingID(ID);
		AkSoundEngine.PostEvent(SFX.Play_Aurelion_E_End, ((Component)this).gameObject);
	}
}
internal class AurelionPassiveBehaviour : NetworkBehaviour
{
	private int passiveIndex = 0;

	public CharacterBody body;

	public Inventory inventory;

	public SkillLocator skillLocator;

	public static SkillDef specialOverride;

	public static float minOverrideCount = 900f;

	public static float minSpecialRadius = 12f;

	public bool skillOn = false;

	public bool hasStardust => passiveIndex == 1;

	public int starCount => Object.op_Implicit((Object)(object)inventory) ? inventory.GetItemCount(Prefabs.star) : 0;

	public int starBuffCount => Object.op_Implicit((Object)(object)body) ? body.GetBuffCount(Prefabs.stardust) : 0;

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

	private void Start()
	{
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.inventory) && Object.op_Implicit((Object)(object)body.skillLocator))
		{
			inventory = body.inventory;
			skillLocator = body.skillLocator;
		}
		GenericSkill skill = ((Component)this).GetComponent<GenericSkill>();
		passiveIndex = Array.IndexOf(skill.skillFamily.variants, Array.Find(skill.skillFamily.variants, (Variant element) => (Object)(object)element.skillDef == (Object)(object)skill.skillDef));
	}

	protected virtual void FixedUpdate()
	{
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		if (hasStardust && Object.op_Implicit((Object)(object)body) && starBuffCount != starCount && NetworkServer.active)
		{
			body.SetBuffCount(Prefabs.stardust.buffIndex, starCount);
		}
		if ((float)starCount >= minOverrideCount && Object.op_Implicit((Object)(object)skillLocator.special) && skillLocator.special.skillNameToken == "AURELION_SPECNEW" && !skillLocator.special.HasSkillOverrideOfPriority((SkillOverridePriority)3))
		{
			if (Util.HasEffectiveAuthority(((Component)body).gameObject))
			{
				AkSoundEngine.PostEvent(SFX.Play_Aurelion_R_Override, ((Component)this).gameObject);
			}
			skillLocator.special.SetSkillOverride((object)this, specialOverride, (SkillOverridePriority)3);
		}
	}

	private void UNetVersion()
	{
	}

	public override bool OnSerialize(NetworkWriter writer, bool forceAll)
	{
		bool result = default(bool);
		return result;
	}

	public override void OnDeserialize(NetworkReader reader, bool initialState)
	{
	}
}
internal class AurelionSecondaryBehaviour : NetworkBehaviour
{
	private ProjectileExplosion impactExplosion;

	private ProjectileController controller;

	private ProjectileSimple simple;

	private ProjectileDamage damage;

	private Rigidbody rigidBody;

	public GameObject indicator;

	private float radius = 1f;

	private float speedMultiplier = 2.5f;

	public float starSpeedMult;

	public uint SoundID;

	private Vector3 indicatorScale;

	public AurelionSecondaryController secondaryController;

	public AurelionPassiveBehaviour behaviour;

	private void Start()
	{
		impactExplosion = ((Component)this).gameObject.GetComponent<ProjectileExplosion>();
		controller = ((Component)this).gameObject.GetComponent<ProjectileController>();
		simple = ((Component)this).gameObject.GetComponent<ProjectileSimple>();
		damage = ((Component)this).gameObject.GetComponent<ProjectileDamage>();
		rigidBody = ((Component)this).gameObject.GetComponent<Rigidbody>();
		if (Object.op_Implicit((Object)(object)controller) && Object.op_Implicit((Object)(object)controller.ghost))
		{
			SoundID = AkSoundEngine.PostEvent(SFX.Aurelion_qMis, ((Component)controller.ghost).gameObject);
		}
	}

	public void Parent()
	{
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)simple))
		{
			simple.desiredForwardSpeed = 0f;
		}
		if (Object.op_Implicit((Object)(object)rigidBody))
		{
			rigidBody.velocity = Vector3.zero;
			rigidBody.isKinematic = true;
		}
		if (Object.op_Implicit((Object)(object)controller) && Object.op_Implicit((Object)(object)controller.owner) && (Object)(object)((Component)this).gameObject.transform.parent == (Object)null)
		{
			((Component)this).gameObject.transform.SetParent(controller.owner.transform);
			controller.ghost.transform.SetParent(controller.owner.transform);
		}
	}

	private void UpdateDamage()
	{
	}

	public void UpdateSpeedMult(float speed)
	{
		Parent();
		starSpeedMult = speed;
		speedMultiplier = starSpeedMult;
	}

	public void UnParent()
	{
		if (Object.op_Implicit((Object)(object)simple) && Object.op_Implicit((Object)(object)impactExplosion) && Object.op_Implicit((Object)(object)rigidBody))
		{
			rigidBody.isKinematic = false;
			((Component)this).gameObject.transform.SetParent((Transform)null);
			controller.ghost.transform.SetParent((Transform)null);
			simple.desiredForwardSpeed = impactExplosion.blastRadius;
		}
	}

	private void FixedUpdate()
	{
		//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00de: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f0: 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)
		//IL_0146: Unknown result type (might be due to invalid IL or missing references)
		//IL_015b: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)impactExplosion))
		{
			radius += Time.fixedDeltaTime * speedMultiplier;
			ProjectileExplosion obj = impactExplosion;
			obj.blastRadius += Time.fixedDeltaTime * speedMultiplier;
		}
		if (!Object.op_Implicit((Object)(object)controller) || !Object.op_Implicit((Object)(object)impactExplosion))
		{
			return;
		}
		if (!Object.op_Implicit((Object)(object)indicator))
		{
			indicator = Object.Instantiate<GameObject>(Prefabs.aurelionSecondaryProjectileIndicator, ((Component)controller.ghost).gameObject.transform);
			indicator.transform.localPosition = Vector3.zero;
		}
		else
		{
			indicatorScale = Vector3.one * impactExplosion.blastRadius * 2f;
			indicator.transform.localScale = indicatorScale;
		}
		if (!Object.op_Implicit((Object)(object)controller.owner))
		{
			return;
		}
		if (!Object.op_Implicit((Object)(object)behaviour))
		{
			behaviour = controller.owner.GetComponent<AurelionPassiveBehaviour>();
		}
		if (Vector3.Distance(((Component)this).transform.position, controller.owner.transform.position) > 13f)
		{
			if (Object.op_Implicit((Object)(object)damage))
			{
				ProjectileDamage obj2 = damage;
				obj2.damage *= (impactExplosion.blastRadius + Mathf.Clamp(Object.op_Implicit((Object)(object)behaviour) ? ((float)behaviour.starCount * 0.005f) : 0f, 0f, float.MaxValue)) / 10f;
			}
			AkSoundEngine.StopPlayingID(SoundID);
			AkSoundEngine.PostEvent(SFX.Aurelion_qPop, ((Component)this).gameObject);
			if (Object.op_Implicit((Object)(object)secondaryController))
			{
				secondaryController.Detonate();
				secondaryController.star = null;
				secondaryController.behaviour = null;
			}
		}
	}

	private void OnDisable()
	{
	}

	private void UNetVersion()
	{
	}

	public override bool OnSerialize(NetworkWriter writer, bool forceAll)
	{
		bool result = default(bool);
		return result;
	}

	public override void OnDeserialize(NetworkReader reader, bool initialState)
	{
	}
}
internal class AurelionSecondaryController : NetworkBehaviour
{
	public GameObject star;

	public AurelionSecondaryBehaviour behaviour;

	public bool utilityOn = false;

	private void FixedUpdate()
	{
		if (Object.op_Implicit((Object)(object)star) && (Object)(object)behaviour == (Object)null)
		{
			behaviour = star.GetComponent<AurelionSecondaryBehaviour>();
			if (Object.op_Implicit((Object)(object)behaviour))
			{
				behaviour.secondaryController = this;
			}
		}
	}

	public void Parent()
	{
		if (Object.op_Implicit((Object)(object)star) && Object.op_Implicit((Object)(object)behaviour))
		{
			behaviour.Parent();
		}
	}

	public void Unparent()
	{
		if (Object.op_Implicit((Object)(object)star) && Object.op_Implicit((Object)(object)behaviour))
		{
			behaviour.UnParent();
		}
	}

	public void UpdateSpeedMult(float speed)
	{
		if (Object.op_Implicit((Object)(object)star) && Object.op_Implicit((Object)(object)behaviour))
		{
			behaviour.UpdateSpeedMult(speed);
		}
	}

	public void Detonate()
	{
		CharacterBody component = ((Component)this).GetComponent<CharacterBody>();
		if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.skillLocator) && Object.op_Implicit((Object)(object)component.skillLocator.secondary))
		{
			component.skillLocator.secondary.UnsetSkillOverride((object)((Component)this).gameObject, AurelionSecondary.SkillDef, (SkillOverridePriority)4);
		}
		if (Object.op_Implicit((Object)(object)star))
		{
			ProjectileExplosion component2 = star.GetComponent<ProjectileExplosion>();
			ProjectileDamage component3 = star.GetComponent<ProjectileDamage>();
			if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component3))
			{
				component3.damage *= component2.blastRadius / 10f;
				AkSoundEngine.StopPlayingID(behaviour.SoundID);
				AkSoundEngine.PostEvent(SFX.Aurelion_qPop, ((Component)this).gameObject);
				component2.Detonate();
			}
		}
	}

	private void UNetVersion()
	{
	}

	public override bool OnSerialize(NetworkWriter writer, bool forceAll)
	{
		bool result = default(bool);
		return result;
	}

	public override void OnDeserialize(NetworkReader reader, bool initialState)
	{
	}
}
internal class CometEnlarge : MonoBehaviour
{
	private ProjectileController projectile;

	private ProjectileDamage damage;

	private ProjectileImpactExplosion impact;

	private AurelionPassiveBehaviour collector;

	private GameObject owner;

	private void Start()
	{
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
		damage = ((Component)this).GetComponent<ProjectileDamage>();
		projectile = ((Component)this).GetComponent<ProjectileController>();
		if (Object.op_Implicit((Object)(object)projectile) && Object.op_Implicit((Object)(object)projectile.owner))
		{
			owner = projectile.owner;
			collector = projectile.owner.GetComponent<AurelionPassiveBehaviour>();
		}
		impact = ((Component)this).GetComponent<ProjectileImpactExplosion>();
		((ProjectileExplosion)impact).blastRadius = AurelionPassiveBehaviour.minSpecialRadius + Mathf.Clamp((float)collector.starCount * 0.05f, 0f, float.MaxValue);
		((Component)this).transform.localScale = Vector3.one * ((ProjectileExplosion)impact).blastRadius;
	}

	private void FixedUpdate()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_0041: Unknown result type (might be due to invalid IL or missing references)
		if (((Component)this).transform.localScale != Vector3.one * ((ProjectileExplosion)impact).blastRadius)
		{
			((Component)this).transform.localScale = Vector3.one * ((ProjectileExplosion)impact).blastRadius;
		}
	}

	private void OnDisable()
	{
		//IL_0048: Unknown result type (might be due to invalid IL or missing references)
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)collector) && (float)collector.starCount >= AurelionPassiveBehaviour.minOverrideCount)
		{
			AkSoundEngine.PostEvent(SFX.Play_Aurelion_R_Emp_Hit, ((Component)this).gameObject);
			Object.Instantiate<GameObject>(Prefabs.shockwaveProjectile, ((Component)this).transform.position, Quaternion.identity, (Transform)null).GetComponent<CometImpact>().owner = owner;
		}
		else
		{
			AkSoundEngine.PostEvent(SFX.Play_Aurelion_R_Hit, ((Component)this).gameObject);
		}
	}
}
internal class CometImpact : MonoBehaviour
{
	public GameObject owner;

	private CharacterBody body;

	private AurelionPassiveBehaviour collector;

	public float maxRadius;

	private float speed = 3f;

	private AnimationCurve curve = AnimationCurve.Linear(0f, 0f, 1f, 1f);

	private float stopwatch;

	private SphereSearch search = new SphereSearch();

	private List<HurtBox> hitList = new List<HurtBox>();

	private void Start()
	{
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_007c: 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)
		//IL_00b4: 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_00e1: Unknown result type (might be due to invalid IL or missing references)
		if (!Object.op_Implicit((Object)(object)owner))
		{
			Object.Destroy((Object)(object)((Component)this).gameObject);
			return;
		}
		body = owner.GetComponent<CharacterBody>();
		collector = owner.GetComponent<AurelionPassiveBehaviour>();
		maxRadius = 2.5f * (AurelionPassiveBehaviour.minSpecialRadius + (float)collector.starCount * 0.06f);
		search.origin = ((Component)this).transform.position;
		search.radius = AurelionPassiveBehaviour.minSpecialRadius + (float)collector.starCount * 0.05f;
		search.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask;
		if (NetworkServer.active)
		{
			Search();
		}
		((Component)this).transform.localScale = Vector3.one * search.radius;
	}

	private void Search()
	{
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_009c: Expected O, but got Unknown
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Expected O, but got Unknown
		//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0109: 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_0117: 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_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0144: Unknown result type (might be due to invalid IL or missing references)
		//IL_015e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: 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)
		//IL_0173: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		HurtBox[] hurtBoxes = search.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(body.teamComponent.teamIndex)).OrderCandidatesByDistance()
			.FilterCandidatesByDistinctHurtBoxEntities()
			.GetHurtBoxes();
		HurtBox[] array = hurtBoxes;
		foreach (HurtBox val in array)
		{
			if (!hitList.Contains(val) && Object.op_Implicit((Object)(object)val.healthComponent))
			{
				hitList.Add(val);
				EffectData val2 = new EffectData
				{
					origin = ((Component)val).transform.position,
					scale = 1f
				};
				EffectManager.SpawnEffect(Prefabs.shockwaveHitEffect, val2, true);
				DamageInfo val3 = new DamageInfo();
				val3.damage = body.damage * 18f + (float)collector.starCount * 0.05f;
				val3.attacker = owner;
				val3.inflictor = owner;
				Vector3 val4 = ((Component)this).transform.position - ((Component)val).transform.position;
				val3.force = ((Vector3)(ref val4)).normalized * -1200f;
				val3.crit = body.RollCrit();
				val3.procChainMask = default(ProcChainMask);
				val3.procCoefficient = 0f;
				val3.position = ((Component)val).transform.position;
				val3.damageColorIndex = (DamageColorIndex)0;
				val3.damageType = DamageTypeCombo.op_Implicit((DamageType)8);
				val.healthComponent.TakeDamage(val3);
				GlobalEventManager.instance.OnHitEnemy(val3, ((Component)val.healthComponent).gameObject);
				GlobalEventManager.instance.OnHitAll(val3, ((Component)val.healthComponent).gameObject);
			}
		}
	}

	private void FixedUpdate()
	{
		//IL_0056: 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)
		stopwatch += Time.fixedDeltaTime;
		if (search.radius < maxRadius)
		{
			SphereSearch obj = search;
			obj.radius += maxRadius / speed * Time.fixedDeltaTime;
			((Component)this).transform.localScale = Vector3.one * search.radius;
			if (stopwatch >= 0.2f && NetworkServer.active)
			{
				stopwatch = 0f;
				Search();
			}
		}
		else
		{
			Object.Destroy((Object)(object)((Component)this).gameObject);
		}
	}
}
internal class RadialForceFilter : MonoBehaviour
{
	private Transform transform;

	private TeamFilter teamFilter;

	private float radius = 20f;

	private float damping = 0.5f;

	private float forceMagnitude = -30000f;

	private float forceCoefficientAtEdge = 0.5f;

	private float minMass = 100f;

	private float maxMass = 300f;

	private TetherVfxOrigin tetherVfxOrigin;

	private SphereSearch sphereSearch;

	protected void ApplyPullToHurtBox(HurtBox hurtBox)
	{
		//IL_0098: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ad: 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_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_0146: Unknown result type (might be due to invalid IL or missing references)
		//IL_014b: 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_010a: 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_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0181: Unknown result type (might be due to invalid IL or missing references)
		//IL_0186: Unknown result type (might be due to invalid IL or missing references)
		//IL_015e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		//IL_019b: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01be: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
		if (!Object.op_Implicit((Object)(object)hurtBox))
		{
			return;
		}
		HealthComponent healthComponent = hurtBox.healthComponent;
		if (Object.op_Implicit((Object)(object)healthComponent) && NetworkServer.active && Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.rigidbody) && healthComponent.body.rigidbody.mass <= maxMass)
		{
			CharacterMotor characterMotor = healthComponent.body.characterMotor;
			Vector3 val = ((Component)hurtBox).transform.position - transform.position;
			float num = 1f - Mathf.Clamp(((Vector3)(ref val)).magnitude / radius, 0f, 1f - forceCoefficientAtEdge);
			val = ((!(healthComponent.body.rigidbody.mass <= minMass)) ? (((Vector3)(ref val)).normalized * forceMagnitude * (1f - num)) : (((Vector3)(ref val)).normalized * forceMagnitude * (1f - num) / 4f));
			Vector3 velocity;
			float mass;
			if (Object.op_Implicit((Object)(object)characterMotor))
			{
				velocity = characterMotor.velocity;
				mass = characterMotor.mass;
			}
			else
			{
				Rigidbody rigidbody = healthComponent.body.rigidbody;
				velocity = rigidbody.velocity;
				mass = rigidbody.mass;
			}
			velocity.y += Physics.gravity.y * Time.fixedDeltaTime;
			healthComponent.TakeDamageForce(val - velocity * (damping * mass * num), true, false);
		}
	}

	protected void Awake()
	{
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Expected O, but got Unknown
		transform = ((Component)this).GetComponent<Transform>();
		teamFilter = ((Component)this).GetComponent<TeamFilter>();
		sphereSearch = new SphereSearch();
	}

	protected void FixedUpdate()
	{
		List<HurtBox> list = CollectionPool<HurtBox, List<HurtBox>>.RentCollection();
		SearchForTargets(list);
		int i = 0;
		for (int count = list.Count; i < count; i++)
		{
			ApplyPullToHurtBox(list[i]);
		}
		if (Object.op_Implicit((Object)(object)tetherVfxOrigin))
		{
			List<Transform> list2 = CollectionPool<Transform, List<Transform>>.RentCollection();
			int j = 0;
			for (int count2 = list.Count; j < count2; j++)
			{
				HurtBox val = list[j];
				if (!Object.op_Implicit((Object)(object)val))
				{
					continue;
				}
				Transform item = ((Component)val).transform;
				HealthComponent healthComponent = val.healthComponent;
				if (Object.op_Implicit((Object)(object)healthComponent))
				{
					Transform coreTransform = healthComponent.body.coreTransform;
					if (Object.op_Implicit((Object)(object)coreTransform))
					{
						item = coreTransform;
					}
				}
				list2.Add(item);
			}
			tetherVfxOrigin.SetTetheredTransforms(list2);
			CollectionPool<Transform, List<Transform>>.ReturnCollection(list2);
		}
		CollectionPool<HurtBox, List<HurtBox>>.ReturnCollection(list);
	}

	protected void SearchForTargets(List<HurtBox> dest)
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		sphereSearch.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask;
		sphereSearch.origin = transform.position;
		sphereSearch.radius = radius;
		sphereSearch.queryTriggerInteraction = (QueryTriggerInteraction)0;
		sphereSearch.RefreshCandidates();
		sphereSearch.FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(teamFilter.teamIndex));
		sphereSearch.OrderCandidatesByDistance();
		sphereSearch.FilterCandidatesByDistinctHurtBoxEntities();
		sphereSearch.GetHurtBoxes(dest);
		sphereSearch.ClearCandidates();
	}
}
internal class StardustCollector : MonoBehaviour
{
}
internal class StarsAttachment : AurelionPassiveBehaviour
{
	public bool toggle = true;

	public StarsController controller;

	public Player player;

	private static int kCmdCmdToggle;

	private static int kRpcRpcToggle;

	public void OnEnable()
	{
		LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser();
		NetworkUser val = ((firstLocalUser != null) ? firstLocalUser.currentNetworkUser : null);
		if (Object.op_Implicit((Object)(object)val) && val.inputPlayer != null)
		{
			player = val.inputPlayer;
		}
	}

	private void Update()
	{
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		if ((Object.op_Implicit((Object)(object)controller) && !PauseScreenController.paused && Object.op_Implicit((Object)(object)body) && Util.HasEffectiveAuthority(body.networkIdentity) && Input.GetKeyDown(Aurelion.KeyToggle.Value)) || (player != null && player.GetButtonDown(103)))
		{
			CallCmdToggle();
		}
		UpdatePosition();
	}

	[Command]
	public void CmdToggle()
	{
		CallRpcToggle();
	}

	[ClientRpc]
	public void RpcToggle()
	{
		toggle = !toggle;
	}

	private void UpdatePosition()
	{
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)