Decompiled source of AerosSkills v2.1.1
AerosSkills.dll
Decompiled 4 months ago
The result has been truncated due to the large size, download it to view full contents!
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 AncientScepter; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using EntityStates; using EntityStates.Captain.Weapon; using EntityStates.Commando.CommandoWeapon; using EntityStates.Engi.EngiWeapon; using EntityStates.Loader; using EntityStates.Seeker; using HG; using KinematicCharacterController; using On.RoR2; using R2API; using R2API.Models; using R2API.Utils; using Rewired.ComponentControls.Effects; using RoR2; using RoR2.CharacterAI; using RoR2.Networking; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.Rendering.PostProcessing; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: AssemblyCompany("AerosSkills")] [assembly: AssemblyProduct("AerosSkills")] [assembly: AssemblyTitle("AerosSkills")] [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 AerosSkills; internal class Assets { public static AssetBundle MainAssetBundle; public static T Load<T>(string name) where T : Object { return MainAssetBundle.LoadAsset<T>(name); } public static void PopulateAssets() { Assembly executingAssembly = Assembly.GetExecutingAssembly(); if ((Object)(object)MainAssetBundle == (Object)null) { using (Stream stream = executingAssembly.GetManifestResourceStream("AerosSkills.AssetBundle." + "AerosSkills".ToLower() + "assets")) { MainAssetBundle = AssetBundle.LoadFromStream(stream); } } } } internal class CrosshairSwap : MonoBehaviour { private CharacterBody body; private void Awake() { body = ((Component)this).GetComponent<CharacterBody>(); } private void Start() { if (body.skillLocator.primary.skillNameToken == "AEROS_M1") { body.spreadBloomCurve = Prefabs.spreadBloomCurve; body._defaultCrosshairPrefab = Prefabs.Load<GameObject>("RoR2/Base/UI/StandardCrosshair.prefab"); } } } internal class DebugHelper : MonoBehaviour { } [DefaultExecutionOrder(100)] internal class eee : MonoBehaviour { private Tracer tracer; public float zPos = 13f; private void Start() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0025: 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_0031: Unknown result type (might be due to invalid IL or missing references) tracer = ((Component)this).GetComponent<Tracer>(); Vector3 localPosition = tracer.beamObject.transform.localPosition; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(localPosition.x, localPosition.y, localPosition.z + zPos); } } internal class ForcePos : MonoBehaviour { private void LateUpdate() { //IL_0007: 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) ((Component)this).transform.localPosition = Vector3.up * 4f; } } internal class MissileSearchTweak : MonoBehaviour { public float maxAngle = 75f; private MissileController missile; private void Start() { missile = ((Component)this).GetComponent<MissileController>(); missile.search.maxAngleFilter = 20f; } } internal class RadialBuff : MonoBehaviour { private TeamFilter teamFilter; private void OnCollisionEnter(Collision collision) { //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0026: 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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: 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_010e: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Expected O, but got Unknown float value = MainPlugin.radius.Value; if (NetworkServer.active) { SphereSearch val = new SphereSearch(); val.origin = ((Component)this).transform.position; val.radius = value; val.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask; HurtBox[] hurtBoxes = val.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(teamFilter.teamIndex)).FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes(); HurtBox[] array = hurtBoxes; foreach (HurtBox val2 in array) { if (Object.op_Implicit((Object)(object)val2.healthComponent)) { SetStateOnHurt component = ((Component)val2.healthComponent).GetComponent<SetStateOnHurt>(); if (Object.op_Implicit((Object)(object)component)) { component.SetPain(); } } } } foreach (TeamComponent teamMember in TeamComponent.GetTeamMembers(teamFilter.teamIndex)) { if (!Object.op_Implicit((Object)(object)teamMember.body) || !(Vector3.Distance(((Component)this).transform.position, ((Component)teamMember).transform.position) <= value)) { continue; } float value2 = MainPlugin.duration.Value; if (Object.op_Implicit((Object)(object)teamMember.body.modelLocator) && Object.op_Implicit((Object)(object)teamMember.body.modelLocator.modelTransform)) { CharacterModel component2 = ((Component)teamMember.body.modelLocator.modelTransform).GetComponent<CharacterModel>(); if (Object.op_Implicit((Object)(object)component2)) { TemporaryOverlayInstance val3 = TemporaryOverlayManager.AddOverlay(((Component)component2).gameObject); val3.duration = value2; val3.animateShaderAlpha = true; val3.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val3.alphaCurve.AddKey(0.85f, 1f); val3.destroyComponentOnEnd = true; val3.originalMaterial = Prefabs.overlay; val3.AddToCharacterModel(component2); } } if (NetworkServer.active) { teamMember.body.AddTimedBuff(Prefabs.overclock, value2); } } EffectManager.SpawnEffect(Prefabs.buffProjectileExplosion, new EffectData { origin = ((Component)this).transform.position, scale = value }, false); } private void Awake() { teamFilter = ((Component)this).GetComponent<TeamFilter>(); } } internal class SeekerGenkidamaProjectile : NetworkBehaviour { private ProjectileController controller; private ProjectileDamage projectileDamage; private ProjectileSimple simple; private Collider collider; private ProjectileImpactExplosion impact; private SkillLocator skillLocator; private CharacterBody ownerBody; private SeekerController seekerController; private EntityStateMachine weapon; public float upPos = 4f; private float damage; private int inputCount; private int tranquilityCount; private static int kCmdCmdUpdateInput; private void Awake() { controller = ((Component)this).GetComponent<ProjectileController>(); simple = ((Component)this).GetComponent<ProjectileSimple>(); projectileDamage = ((Component)this).GetComponent<ProjectileDamage>(); impact = ((Component)this).GetComponent<ProjectileImpactExplosion>(); collider = ((Component)this).GetComponent<Collider>(); } private void Start() { if (Object.op_Implicit((Object)(object)controller.owner)) { GameObject owner = controller.owner; skillLocator = owner.GetComponent<SkillLocator>(); ownerBody = owner.GetComponent<CharacterBody>(); seekerController = owner.GetComponent<SeekerController>(); weapon = Array.Find(owner.GetComponents<EntityStateMachine>(), (EntityStateMachine x) => x.customName == "Weapon"); } } private void Update() { //IL_003c: 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) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) if (!((Behaviour)simple).enabled && Object.op_Implicit((Object)(object)controller.owner)) { ((Component)this).transform.position = controller.owner.transform.position + Vector3.up * upPos; } } [Command] private void CmdUpdateInput(int input) { inputCount = input; } private void FixedUpdate() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.localScale = Vector3.Lerp(((Component)this).transform.localScale, Vector3.one * (float)(inputCount + 1), 1.5f * Time.fixedDeltaTime); if (Object.op_Implicit((Object)(object)ownerBody)) { ((Component)this).transform.forward = ownerBody.inputBank.aimDirection; damage = ownerBody.damage; tranquilityCount = ownerBody.GetBuffCount(Buffs.ChakraBuff); } if (!((Behaviour)simple).enabled && Object.op_Implicit((Object)(object)seekerController) && Util.HasEffectiveAuthority(controller.owner)) { CallCmdUpdateInput(seekerController.meditationInputStep); } if ((!((Behaviour)simple).enabled && !Object.op_Implicit((Object)(object)ownerBody)) || (Object.op_Implicit((Object)(object)weapon) && !(weapon.state is Genkidama))) { ((Behaviour)simple).enabled = true; ((Behaviour)impact).enabled = true; ((ProjectileExplosion)impact).blastRadius = 5 * (inputCount + 1); collider.enabled = true; projectileDamage.damage = (MainPlugin.genkidamaBaseDamage.Value + MainPlugin.genkidamaAddDamage.Value * (float)tranquilityCount) * damage; } } private void UNetVersion() { } protected static void InvokeCmdCmdUpdateInput(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdUpdateInput called on client."); } else { ((SeekerGenkidamaProjectile)(object)obj).CmdUpdateInput((int)reader.ReadPackedUInt32()); } } public void CallCmdUpdateInput(int input) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdUpdateInput called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdUpdateInput(input); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdUpdateInput); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); val.WritePackedUInt32((uint)input); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdUpdateInput"); } static SeekerGenkidamaProjectile() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown kCmdCmdUpdateInput = -1960028162; NetworkBehaviour.RegisterCommandDelegate(typeof(SeekerGenkidamaProjectile), kCmdCmdUpdateInput, new CmdDelegate(InvokeCmdCmdUpdateInput)); NetworkCRC.RegisterBehaviour("SeekerGenkidamaProjectile", 0); } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { bool result = default(bool); return result; } public override void OnDeserialize(NetworkReader reader, bool initialState) { } } internal class SimpleUpdate : MonoBehaviour { private ProjectileSimple simple; private ProjectileTargetComponent target; private void Awake() { simple = ((Component)this).GetComponent<ProjectileSimple>(); target = ((Component)this).GetComponent<ProjectileTargetComponent>(); } private void FixedUpdate() { simple.updateAfterFiring = Object.op_Implicit((Object)(object)target.target); } } [DefaultExecutionOrder(100)] internal class TurretChargeBehaviour : MonoBehaviour { private CharacterBody body; private CharacterModel model; private Material mat; public bool firing; public float stopwatch = 3f; public bool addstock; private void Awake() { model = ((Component)this).GetComponent<CharacterModel>(); } private void Start() { body = model.body; UpdateMaterial(); } public void UpdateMaterial() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown //IL_00a5: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)mat)) { Object.Destroy((Object)(object)mat); } mat = new Material(model.baseRendererInfos[3].defaultMaterial); model.baseRendererInfos[3].defaultMaterial = mat; model.baseRendererInfos[3].renderer.material = mat; if (!Object.op_Implicit((Object)(object)body)) { mat.SetTextureScale("_MainTex", new Vector2(2.07f, 1f)); mat.SetFloat("_EmPower", 2f); } } private void FixedUpdate() { //IL_00f3: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)model) || !Object.op_Implicit((Object)(object)mat)) { return; } if (firing) { if (stopwatch <= 0f) { stopwatch = 3f; } stopwatch -= Time.fixedDeltaTime; } else { stopwatch = 3f; } GenericSkill primary = body.skillLocator.primary; mat.SetTextureScale("_MainTex", new Vector2(primary.CanExecute() ? 2.07f : (firing ? 2.07f : Util.Remap(Math.Min(1f, primary.rechargeStopwatch / primary.finalRechargeInterval), 0f, 1f, 0.66f, 2.07f)), 1f)); } } [DefaultExecutionOrder(100)] internal class TurretSkinBehaviour : NetworkBehaviour { private CharacterBody body; private NetworkLoadout networkLoadout; private BodyIndex bodyIndex; private ModelSkinController skinController; private TurretChargeBehaviour chargeBehaviour; private CharacterSelectSurvivorPreviewDisplayController displayController; private void Awake() { skinController = ((Component)this).GetComponent<ModelSkinController>(); chargeBehaviour = ((Component)this).GetComponent<TurretChargeBehaviour>(); } private void Start() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Expected O, but got Unknown //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Expected O, but got Unknown body = ((Component)this).GetComponent<CharacterModel>().body; bodyIndex = BodyCatalog.FindBodyIndex("EngiBody"); if (Object.op_Implicit((Object)(object)body)) { return; } displayController = ((Component)this).GetComponentInParent<CharacterSelectSurvivorPreviewDisplayController>(); if (Object.op_Implicit((Object)(object)displayController)) { displayController.skinChangeResponses[0].response.AddListener((UnityAction)delegate { UpdateModel(0); }); displayController.skinChangeResponses[1].response.AddListener((UnityAction)delegate { UpdateModel(1); }); displayController.skinChangeResponses[2].response.AddListener((UnityAction)delegate { UpdateModel(2); }); } } private void UpdateModel(int skinIndex) { if (Object.op_Implicit((Object)(object)skinController) && Object.op_Implicit((Object)(object)chargeBehaviour)) { ((Behaviour)skinController.characterModel).enabled = true; skinController.ApplySkin(skinIndex); chargeBehaviour.UpdateMaterial(); } } 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 TurretSpawner : NetworkBehaviour { private CharacterBody body; private static int kCmdCmdSpawn; private void Awake() { body = ((Component)this).GetComponent<CharacterBody>(); } [Command] public void CmdSpawn(Vector3 pos, Quaternion rot) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: 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_0012: 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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00a4: Unknown result type (might be due to invalid IL or missing references) CharacterMaster val = new MasterSummon { masterPrefab = Prefabs.turretMaster, position = pos, rotation = rot, summonerBodyObject = ((Component)body).gameObject, ignoreTeamMemberLimit = true, inventoryToCopy = body.inventory, teamIndexOverride = body.teamComponent.teamIndex }.Perform(); Deployable val2 = ((Component)val).gameObject.AddComponent<Deployable>(); val2.onUndeploy = new UnityEvent(); val2.onUndeploy.AddListener(new UnityAction(val.TrueKill)); body.master.AddDeployable(val2, Prefabs.bigTurret); } private void UNetVersion() { } protected static void InvokeCmdCmdSpawn(NetworkBehaviour obj, NetworkReader reader) { //IL_001d: 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) if (!NetworkServer.active) { Debug.LogError((object)"Command CmdSpawn called on client."); } else { ((TurretSpawner)(object)obj).CmdSpawn(reader.ReadVector3(), reader.ReadQuaternion()); } } public void CallCmdSpawn(Vector3 pos, Quaternion rot) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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_0026: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdSpawn called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdSpawn(pos, rot); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdSpawn); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); val.Write(pos); val.Write(rot); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdSpawn"); } static TurretSpawner() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown kCmdCmdSpawn = -274844957; NetworkBehaviour.RegisterCommandDelegate(typeof(TurretSpawner), kCmdCmdSpawn, new CmdDelegate(InvokeCmdCmdSpawn)); NetworkCRC.RegisterBehaviour("TurretSpawner", 0); } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { bool result = default(bool); return result; } public override void OnDeserialize(NetworkReader reader, bool initialState) { } } internal class ViendUncorruptAlt : MonoBehaviour { private CharacterBody body; public GenericSkill secondary; public GenericSkill utility; public VoidSurvivorController controller; public bool hasAlt; public bool secondaryAlt; public bool utilityAlt; public float angle = 25f; private void Awake() { body = ((Component)this).GetComponent<CharacterBody>(); controller = ((Component)this).GetComponent<VoidSurvivorController>(); } private void Start() { secondary = body.skillLocator.secondary; utility = body.skillLocator.utility; if (secondary.skillNameToken == "AEROSVIEND_SECONDARY") { hasAlt = true; secondaryAlt = true; } if (utility.skillNameToken == "AEROSVIEND_UTIL") { hasAlt = true; utilityAlt = true; } } } internal class Hook { internal static void Hooks() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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 RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); GenericSkill.SetSkillOverride += new hook_SetSkillOverride(GenericSkill_SetSkillOverride); GenericSkill.UnsetSkillOverride += new hook_UnsetSkillOverride(GenericSkill_UnsetSkillOverride); } private static void GenericSkill_UnsetSkillOverride(orig_UnsetSkillOverride orig, GenericSkill self, object source, SkillDef skillDef, SkillOverridePriority priority) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Invalid comparison between Unknown and I4 //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown ViendUncorruptAlt component = ((Component)self).GetComponent<ViendUncorruptAlt>(); if (Object.op_Implicit((Object)(object)component) && component.hasAlt && (int)priority == 2) { bool flag = (Object)(object)self == (Object)(object)component.secondary; if ((component.secondaryAlt && flag) || (component.utilityAlt && (Object)(object)self == (Object)(object)component.utility)) { SkillOverride val = new SkillOverride(source, flag ? MainPlugin.viendSecondaryCorrupted : MainPlugin.viendUtilCorrupted, priority); int num = self.FindSkillOverrideIndex(ref val); if (num != -1) { ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillOverrides, num, 1); self.PickCurrentOverride(); } return; } } orig.Invoke(self, source, skillDef, priority); } private static void GenericSkill_SetSkillOverride(orig_SetSkillOverride orig, GenericSkill self, object source, SkillDef skillDef, SkillOverridePriority priority) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Invalid comparison between Unknown and I4 //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_0089: Expected O, but got Unknown ViendUncorruptAlt component = ((Component)self).GetComponent<ViendUncorruptAlt>(); if (Object.op_Implicit((Object)(object)component) && component.hasAlt && (int)priority == 2 && component.controller.corruption >= 100f) { bool flag = (Object)(object)self == (Object)(object)component.secondary; if ((component.secondaryAlt && flag) || (component.utilityAlt && (Object)(object)self == (Object)(object)component.utility)) { SkillOverride val = new SkillOverride(source, flag ? MainPlugin.viendSecondaryCorrupted : MainPlugin.viendUtilCorrupted, priority); if (self.FindSkillOverrideIndex(ref val) == -1) { ArrayUtils.ArrayAppend<SkillOverride>(ref self.skillOverrides, ref val); self.PickCurrentOverride(); } return; } } orig.Invoke(self, source, skillDef, priority); } private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { bool flag = Object.op_Implicit((Object)(object)self.body) && self.body.HasBuff(Prefabs.block); float damage = damageInfo.damage; float num = Math.Clamp(MainPlugin.blockAmount.Value, 0.01f, 1f); if (flag) { damageInfo.damage *= 1f - num; } orig.Invoke(self, damageInfo); if (flag) { self.AddBarrier(damage * num); } } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(Prefabs.viendSpeedBuff)) { args.moveSpeedMultAdd += MainPlugin.viendSpeedBuff.Value; } if (sender.HasBuff(Prefabs.block)) { args.moveSpeedReductionMultAdd += MainPlugin.blockSpeedReduction.Value; } if (sender.HasBuff(Prefabs.overclock)) { args.baseRegenAdd += MainPlugin.regen.Value; args.baseAttackSpeedAdd += MainPlugin.atkspd.Value; args.baseMoveSpeedAdd += MainPlugin.movspd.Value; args.cooldownMultAdd += 0f - MainPlugin.cooldown.Value; } } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Dragonyck.AerosSkills", "AerosSkills", "2.1.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.Dragonyck.AerosSkills"; public const string MODNAME = "AerosSkills"; public const string VERSION = "2.1.1"; public const string MODKEY = "AEROS"; internal static ConfigFile captainCfg; internal static ConfigEntry<bool> enableCap; internal static ConfigEntry<float> burstDMG; internal static ConfigEntry<float> radius; internal static ConfigEntry<float> regen; internal static ConfigEntry<float> atkspd; internal static ConfigEntry<float> movspd; internal static ConfigEntry<float> cooldown; internal static ConfigEntry<float> duration; internal static ConfigEntry<float> CD; internal static ConfigFile engiCfg; internal static ConfigEntry<bool> enableEngi; internal static ConfigEntry<float> missileDamageCoefficient; internal static ConfigEntry<bool> missileTracking; internal static ConfigEntry<float> turretDamageCoefficient; internal static ConfigFile loaderCfg; internal static ConfigEntry<bool> enableLoader; internal static ConfigEntry<float> blockDuration; internal static ConfigEntry<float> blockSpeedReduction; internal static ConfigEntry<float> blockAmount; internal static ConfigEntry<float> blockWaveDamage; internal static ConfigEntry<int> maxPunchCount; internal static ConfigEntry<float> punchDamageCoefficient; internal static ConfigEntry<float> punchChargeTime; internal static ConfigEntry<float> punchVelocity; internal static ConfigEntry<float> punchSpeed; internal static ConfigFile seekerCfg; internal static ConfigEntry<bool> enableSeeker; internal static ConfigEntry<float> genkidamaBaseDamage; internal static ConfigEntry<float> genkidamaAddDamage; internal static ConfigFile viendCfg; internal static ConfigEntry<bool> enableViend; internal static ConfigEntry<float> viendSpeedBuff; internal static ConfigEntry<float> viendSelfDMG; internal static ConfigEntry<float> beamFireFrequency; internal static ConfigEntry<float> beamDMG; internal static ConfigEntry<float> beamForce; internal static ConfigEntry<float> beamDMGCorrupted; internal static ConfigEntry<float> beamDuration; internal static BepInPlugin Metadata; internal static string Location; internal static SkillDef engiScepter; internal static SkillDef viendSecondary; internal static SkillDef viendSecondaryCorrupted; internal static SkillDef viendUtil; internal static SkillDef viendUtilCorrupted; private void Awake() { Location = ((BaseUnityPlugin)this).Info.Location; Metadata = ((BaseUnityPlugin)this).Info.Metadata; CreateConfigs(); Assets.PopulateAssets(); Prefabs.CreatePrefabs(); GameObject val = null; SkillLocator val2 = null; if (enableCap.Value) { val = Prefabs.Load<GameObject>("RoR2/Base/Captain/CaptainBody.prefab"); val2 = val.GetComponent<SkillLocator>(); val.AddComponent<CrosshairSwap>(); Prefabs.spreadBloomCurve = Prefabs.Load<GameObject>("RoR2/Base/Commando/CommandoBody.prefab").GetComponent<CharacterBody>().spreadBloomCurve; CaptainPrimarySetup(val2); CaptainSecondarySetup(val2); } if (enableEngi.Value) { val = Prefabs.Load<GameObject>("RoR2/Base/Engi/EngiBody.prefab"); val.AddComponent<TurretSpawner>(); val2 = val.GetComponent<SkillLocator>(); EngiPrimarySetup(val2); EngiSpecialSetup(val2); if (ModCompat.AncientScepterEnabled) { ModCompat.AddScepterSupport(); } } if (enableLoader.Value) { val = Prefabs.Load<GameObject>("RoR2/Base/Loader/LoaderBody.prefab"); val2 = val.GetComponent<SkillLocator>(); val.gameObject.AddComponent<DebugHelper>(); LoaderUtilitySetup(val2); LoaderSpecialSetup(val2); } if (enableSeeker.Value) { val = Prefabs.Load<GameObject>("RoR2/DLC2/Seeker/SeekerBody.prefab"); val2 = val.GetComponent<SkillLocator>(); SeekerSpecialSetup(val2); } if (enableViend.Value) { val = Prefabs.Load<GameObject>("RoR2/DLC1/VoidSurvivor/VoidSurvivorBody.prefab"); val.gameObject.AddComponent<ViendUncorruptAlt>(); val2 = val.GetComponent<SkillLocator>(); ViendSecondarySetup(val2); ViendUtilitySetup(val2); } RegisterStates(); Hook.Hooks(); } private void CreateConfigs() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Expected O, but got Unknown //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Expected O, but got Unknown //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_031f: Expected O, but got Unknown //IL_0388: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Expected O, but got Unknown captainCfg = new ConfigFile(Paths.ConfigPath + "\\AerosSkills\\Captain.cfg", true); enableCap = captainCfg.Bind<bool>("General", "Enable Captain Skills", true, (ConfigDescription)null); burstDMG = captainCfg.Bind<float>("VulcanRepeater", "Damage Coefficient", 1.65f, (ConfigDescription)null); radius = captainCfg.Bind<float>("Overclock", "Explosion Radius", 12f, (ConfigDescription)null); regen = captainCfg.Bind<float>("Overclock", "Base Health Regen Add", 5f, (ConfigDescription)null); atkspd = captainCfg.Bind<float>("Overclock", "Base Attack Speed Add", 0.6f, (ConfigDescription)null); movspd = captainCfg.Bind<float>("Overclock", "Base Movement Speed Add", 5f, (ConfigDescription)null); cooldown = captainCfg.Bind<float>("Overclock", "Cooldown Reduction Mult", 0.5f, (ConfigDescription)null); duration = captainCfg.Bind<float>("Overclock", "Buff Duration", 5f, (ConfigDescription)null); CD = captainCfg.Bind<float>("Overclock", "Skill Cooldown", 8f, (ConfigDescription)null); engiCfg = new ConfigFile(Paths.ConfigPath + "\\AerosSkills\\Engineer.cfg", true); enableEngi = engiCfg.Bind<bool>("General", "Enable Engineer Skills", true, (ConfigDescription)null); missileDamageCoefficient = engiCfg.Bind<float>("Missiles", "Damage Coefficient", 1.4f, (ConfigDescription)null); missileTracking = engiCfg.Bind<bool>("Seekers", "Enable Tracking", true, (ConfigDescription)null); turretDamageCoefficient = engiCfg.Bind<float>("TR90 Railgun Turret", "Damage Coefficient", 30f, (ConfigDescription)null); loaderCfg = new ConfigFile(Paths.ConfigPath + "\\AerosSkills\\Loader.cfg", true); enableLoader = loaderCfg.Bind<bool>("General", "Enable Loader Skills", true, (ConfigDescription)null); blockDuration = loaderCfg.Bind<float>("Block", "Duration", 10f, (ConfigDescription)null); blockSpeedReduction = loaderCfg.Bind<float>("Block", "Speed Reduction", 0.6f, (ConfigDescription)null); blockAmount = loaderCfg.Bind<float>("Block", "Block Coefficient", 0.8f, (ConfigDescription)null); blockWaveDamage = loaderCfg.Bind<float>("Block", "Block Wave Damage Coefficient", 4.5f, (ConfigDescription)null); maxPunchCount = loaderCfg.Bind<int>("Charged Barrage", "Max Punch Count", 9, (ConfigDescription)null); punchDamageCoefficient = loaderCfg.Bind<float>("Charged Barrage", "Damage Coefficient", 3.5f, (ConfigDescription)null); punchChargeTime = loaderCfg.Bind<float>("Charged Barrage", "Charge Time Required Per Punch", 0.15f, (ConfigDescription)null); punchVelocity = loaderCfg.Bind<float>("Charged Barrage", "Added Velocity After Charge", 5f, (ConfigDescription)null); punchSpeed = loaderCfg.Bind<float>("Charged Barrage", "Swing Duration", 0.13f, (ConfigDescription)null); seekerCfg = new ConfigFile(Paths.ConfigPath + "\\AerosSkills\\Seeker.cfg", true); enableSeeker = seekerCfg.Bind<bool>("General", "Enable Seeker Skills", true, (ConfigDescription)null); genkidamaBaseDamage = seekerCfg.Bind<float>("Spirit Bomb", "Base Damage", 5f, (ConfigDescription)null); genkidamaAddDamage = seekerCfg.Bind<float>("Spirit Bomb", "Additional Damage Per Tranquility", 2f, (ConfigDescription)null); viendCfg = new ConfigFile(Paths.ConfigPath + "\\AerosSkills\\Viend.cfg", true); enableViend = viendCfg.Bind<bool>("General", "Enable Viend Skills", true, (ConfigDescription)null); viendSpeedBuff = viendCfg.Bind<float>("Pocket Dimension", "Corrupted Speed Mult", 0.4f, (ConfigDescription)null); viendSelfDMG = viendCfg.Bind<float>("Pocket Dimension", "MaxHP Self Damage Mult", 0.01f, (ConfigDescription)null); beamDuration = viendCfg.Bind<float>("Gravity Beam", "Max Duration", 3f, (ConfigDescription)null); beamFireFrequency = viendCfg.Bind<float>("Gravity Beam", "Fire Frequency", 0.25f, (ConfigDescription)null); beamDMG = viendCfg.Bind<float>("Gravity Beam", "Damage", 0.7f, (ConfigDescription)null); beamForce = viendCfg.Bind<float>("Gravity Beam", "Pull Force", -1700f, (ConfigDescription)null); beamDMGCorrupted = viendCfg.Bind<float>("Gravity Beam Corrupted", "Damage", 4.2f, (ConfigDescription)null); } private void ViendSecondarySetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSVIEND_SECONDARY", "Gravity Beam"); LanguageAPI.Add("AEROSVIEND_SECONDARY_DESCRIPTION", "Fire a long-range beam for <style=cIsDamage>" + beamDMG.Value * 100f * (1f / beamFireFrequency.Value) + "% damage</style> per second, <style=cIsUtility>pulling</style> enemies hit."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(Beam), "Weapon", 1, 5f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)1, isCombatSkill: true, mustKeyPress: true, cancelSprintingOnActivation: true, 1, 1, 1, Prefabs.viendSecondary, "AEROSVIEND_SECONDARY_DESCRIPTION", "AEROSVIEND_SECONDARY", Array.Empty<string>()); Utils.AddAlt(skillLocator.secondary._skillFamily, skillDef); viendSecondary = skillDef; LanguageAPI.Add("AEROSVIEND_SECONDARY_CORRUPT", "Gravity Beam Corrupted"); LanguageAPI.Add("AEROSVIEND_SECONDARY_DESCRIPTION_CORRUPT", "Fire an instant long-range beam for <style=cIsDamage>" + beamDMGCorrupted.Value * 100f + "% damage</style>. Enemies hit are <style=cIsUtility>teleported</style> to you."); skillDef = Utils.NewSkillDef<SkillDef>(typeof(BeamCorrupted), "Weapon", 1, 5f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)1, isCombatSkill: true, mustKeyPress: true, cancelSprintingOnActivation: true, 1, 1, 1, Prefabs.viendSecondaryCorrupted, "AEROSVIEND_SECONDARY_DESCRIPTION_CORRUPT", "AEROSVIEND_SECONDARY_CORRUPT", Array.Empty<string>()); viendSecondaryCorrupted = skillDef; } private void ViendUtilitySetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSVIEND_UTIL", "Pocket Dimension"); LanguageAPI.Add("AEROSVIEND_UTIL_DESCRIPTION", "Enter a pocket dimension, being unable to damage or be damaged by enemies, and receive <style=cIsHealth>" + viendSelfDMG.Value * 5f * 100f + "% damage</style> per second, that increases over time."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(Dimension), "Weapon", 1, 5f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)1, isCombatSkill: true, mustKeyPress: true, cancelSprintingOnActivation: false, 1, 1, 1, Prefabs.viendUtility, "AEROSVIEND_UTIL_DESCRIPTION", "AEROSVIEND_UTIL", Array.Empty<string>()); Utils.AddAlt(skillLocator.utility._skillFamily, skillDef); viendUtil = skillDef; LanguageAPI.Add("AEROSVIEND_UTIL_CORRUPT", "Pocket Dimension Corrupted"); LanguageAPI.Add("AEROSVIEND_UTIL_DESCRIPTION_CORRUPT", "Gain <style=cIsUtility>" + viendSpeedBuff.Value * 100f + "% movement speed</style>. Enter a pocket dimension, being unable to damage or be damaged by enemies, and receive <style=cIsHealth> " + viendSelfDMG.Value * 5f * 100f + "% damage</style> per second, that increases over time."); skillDef = Utils.NewSkillDef<SkillDef>(typeof(DimensionCorrupted), "Weapon", 1, 5f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)1, isCombatSkill: true, mustKeyPress: true, cancelSprintingOnActivation: false, 1, 1, 1, Prefabs.viendUtilityCorrupted, "AEROSVIEND_UTIL_DESCRIPTION_CORRUPT", "AEROSVIEND_UTIL_CORRUPT", Array.Empty<string>()); viendUtilCorrupted = skillDef; } private void SeekerSpecialSetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSSEEKER_SPEC", "Spirit Bomb"); LanguageAPI.Add("AEROSSEEKER_SPEC_DESCRIPTION", "Charge up a <style=cIsDamage>exploding</style> spirit bomb by <style=cIsUtility>executing</style> timed sequences, gaining <style=cIsUtility>size</style> and <style=cIsUtility>Tranquility</style>, that deals <style=cIsDamage>" + genkidamaBaseDamage.Value * 100f + "%-" + genkidamaAddDamage.Value * 7f * 100f + "% damage</style>."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(Genkidama), "Weapon", 1, 12f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)1, isCombatSkill: true, mustKeyPress: true, cancelSprintingOnActivation: true, 1, 1, 1, Assets.MainAssetBundle.LoadAsset<Sprite>("seekerspecial"), "AEROSSEEKER_SPEC_DESCRIPTION", "AEROSSEEKER_SPEC", Array.Empty<string>()); Utils.AddAlt(skillLocator.special._skillFamily, skillDef); } private void LoaderUtilitySetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSLOADER_UTIL", "Charged Barrage"); LanguageAPI.Add("AEROSLOADER_UTIL_DESCRIPTION", "Charge up to perform a series of punches for <style=cIsDamage>" + punchDamageCoefficient.Value * 100f + "% damage</style> each, increasing in count with charge time."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(ChargePunches), "Weapon", 1, 8f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)1, isCombatSkill: true, mustKeyPress: true, cancelSprintingOnActivation: true, 1, 1, 1, Assets.MainAssetBundle.LoadAsset<Sprite>("loaderutility"), "AEROSLOADER_UTIL_DESCRIPTION", "AEROSLOADER_UTIL", Array.Empty<string>()); Utils.AddAlt(skillLocator.utility._skillFamily, skillDef); } private void LoaderSpecialSetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSLOADER_SPEC", "Block"); LanguageAPI.Add("AEROSLOADER_SPEC_DESCRIPTION", "Enter a block stance for up to <style=cIsDamage>" + blockDuration.Value + "s</style>, blocking " + blockAmount.Value * 100f + "% damage</style> of all incoming damage and turning it into <style=cIsHealing>barrier</style>. Finishes by consuming all barrier and releasing a lightning wave for " + blockWaveDamage.Value * 100f + "% damage</style>, increasing in damage and size based on trhe amount of barrier consumed."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(Block), "Weapon", 1, 8f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)1, isCombatSkill: true, mustKeyPress: true, cancelSprintingOnActivation: true, 1, 1, 1, Assets.MainAssetBundle.LoadAsset<Sprite>("loaderspecial"), "AEROSLOADER_SPEC_DESCRIPTION", "AEROSLOADER_SPEC", Array.Empty<string>()); Utils.AddAlt(skillLocator.special._skillFamily, skillDef); } private void EngiSpecialSetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSENGI_SPEC2", "TR90 Railgun Turret"); LanguageAPI.Add("AEROSENGI_SPEC", "TR90 Railgun Turret"); LanguageAPI.Add("AEROSENGI_SPEC_DESCRIPTION", "Drop a turret that charges up over <style=cIsUtility>8s</style> and fires for <style=cIsDamage>" + turretDamageCoefficient.Value * 100f + "% damage</style>, inheriting all of your items."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(EngiSpecial), "Weapon", 1, 25f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)0, isCombatSkill: true, mustKeyPress: false, cancelSprintingOnActivation: true, 1, 1, 1, Assets.MainAssetBundle.LoadAsset<Sprite>("engispecial"), "AEROSENGI_SPEC_DESCRIPTION", "AEROSENGI_SPEC", Array.Empty<string>()); Utils.AddAlt(skillLocator.special._skillFamily, skillDef); skillDef = Utils.NewSkillDef<SkillDef>(typeof(EngiSpecial), "Weapon", 1, 25f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)0, isCombatSkill: true, mustKeyPress: false, cancelSprintingOnActivation: true, 1, 1, 1, Assets.MainAssetBundle.LoadAsset<Sprite>("engispecial2"), "AEROSENGI_SPEC_DESCRIPTION", "AEROSENGI_SPEC2", Array.Empty<string>()); engiScepter = skillDef; } private void EngiPrimarySetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSENGI_M1", "Seekers"); LanguageAPI.Add("AEROSENGI_M1_DESCRIPTION", "Charge up to <style=cIsDamage>8</style> missiles that deal <style=cIsDamage>" + missileDamageCoefficient.Value * 100f + "% damage</style> each."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(EngiPrimaryCharge), "Weapon", 0, 0f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)0, isCombatSkill: true, mustKeyPress: false, cancelSprintingOnActivation: true, 0, 0, 0, Assets.MainAssetBundle.LoadAsset<Sprite>("engiprimary"), "AEROSENGI_M1_DESCRIPTION", "AEROSENGI_M1", Array.Empty<string>()); Utils.AddAlt(skillLocator.primary._skillFamily, skillDef); } private void CaptainPrimarySetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSCAP_M1", "Vulcan Repeater"); LanguageAPI.Add("AEROSCAP_M1_DESCRIPTION", "Fire a quick burst of <style=cIsDamage>3</style> pellets that deal <style=cIsDamage>3x" + burstDMG.Value * 100f + "% damage</style>."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(CaptainPrimary), "Weapon", 0, 0f, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)0, isCombatSkill: true, mustKeyPress: false, cancelSprintingOnActivation: true, 0, 0, 0, Assets.MainAssetBundle.LoadAsset<Sprite>("capprimary"), "AEROSCAP_M1_DESCRIPTION", "AEROSCAP_M1", Array.Empty<string>()); Utils.AddAlt(skillLocator.primary._skillFamily, skillDef); } private void CaptainSecondarySetup(SkillLocator skillLocator) { LanguageAPI.Add("AEROSCAP_M2", "Overclock"); LanguageAPI.Add("AEROSCAP_M2_DESCRIPTION", "Fire a <style=cIsHealth>non damaging</style> projectile that <style=cIsDamage>buffs</style> nearby allies on impact with <style=cIsHealing>+" + regen.Value + " hp/s health regen</style>, <style=cIsDamage>+" + atkspd.Value + " attack speed</style>, <style=cIsUtility>+" + movspd.Value + " movement speed</style> and <style=cIsUtility>" + cooldown.Value * 100f + "% cooldown reduction</style> for <style=cIsUtility>" + duration.Value + "s</style>."); SkillDef skillDef = Utils.NewSkillDef<SkillDef>(typeof(CaptainSecondary), "Weapon", 1, CD.Value, beginSkillCooldownOnSkillEnd: true, canceledFromSprinting: false, fullRestockOnAssign: false, (InterruptPriority)1, isCombatSkill: true, mustKeyPress: true, cancelSprintingOnActivation: false, 1, 1, 1, Assets.MainAssetBundle.LoadAsset<Sprite>("capsecondary"), "AEROSCAP_M2_DESCRIPTION", "AEROSCAP_M2", Array.Empty<string>()); Utils.AddAlt(skillLocator.secondary.skillFamily, skillDef); } 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) bool flag = default(bool); ContentAddition.AddEntityState<CaptainPrimary>(ref flag); ContentAddition.AddEntityState<CaptainSecondary>(ref flag); ContentAddition.AddEntityState<EngiPrimaryCharge>(ref flag); ContentAddition.AddEntityState<EngiPrimaryFire>(ref flag); ContentAddition.AddEntityState<EngiSpecial>(ref flag); ContentAddition.AddEntityState<EngiTurretPrimary>(ref flag); ContentAddition.AddEntityState<TurretSpawn>(ref flag); ContentAddition.AddEntityState<ChargePunches>(ref flag); ContentAddition.AddEntityState<Punches>(ref flag); ContentAddition.AddEntityState<Block>(ref flag); ContentAddition.AddEntityState<Slam>(ref flag); ContentAddition.AddEntityState<Genkidama>(ref flag); ContentAddition.AddEntityState<Dimension>(ref flag); ContentAddition.AddEntityState<DimensionCorrupted>(ref flag); ContentAddition.AddEntityState<Beam>(ref flag); ContentAddition.AddEntityState<BeamCorrupted>(ref flag); } } public static class ModCompat { private static bool? ancientEnabled; public static bool AncientScepterEnabled { get { if (!ancientEnabled.HasValue) { ancientEnabled = Chainloader.PluginInfos.ContainsKey("com.DestroyedClone.AncientScepter"); } return ancientEnabled.Value; } } public static void AddScepterSupport() { ItemBase<AncientScepterItem>.instance.RegisterScepterSkill(MainPlugin.engiScepter, "EngiBody", (SkillSlot)3, 3); } } internal class Prefabs { internal static GameObject buffProjectileGhost; internal static GameObject buffProjectile; internal static GameObject buffProjectileExplosion; internal static GameObject tracer; internal static GameObject missileProjectile; internal static GameObject shieldEffect; internal static GameObject loaderImpact; internal static GameObject slamProjectile; internal static GameObject turret; internal static GameObject turretMaster; internal static GameObject turretBlueprint; internal static GameObject turretMuzzleFlash; internal static GameObject turretTracer; internal static GameObject turretBigTracer; internal static GameObject seekerGenkidamaProjectileGhost; internal static GameObject seekerGenkidamaProjectile; internal static GameObject viendPP; internal static GameObject viendPPCorrupted; internal static GameObject viendContinuousBeam; internal static GameObject viendBeamTracer; internal static GameObject viendBeamCharge; internal static Sprite viendSecondary; internal static Sprite viendSecondaryCorrupted; internal static Sprite viendUtility; internal static Sprite viendUtilityCorrupted; internal static DeployableSlot bigTurret; internal static Material overlay; internal static BuffDef overclock; internal static BuffDef block; internal static BuffDef viendSpeedBuff; internal static AnimationCurve spreadBloomCurve; internal static AnimationClip clip; internal static T Load<T>(string path) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return Addressables.LoadAssetAsync<T>((object)path).WaitForCompletion(); } internal static GameObject Instantiate(string path, string name, bool registerNetwork = false) { return PrefabAPI.InstantiateClone(Load<GameObject>(path), name, registerNetwork); } internal static GameObject Instantiate(GameObject obj, string name, bool registerNetwork = false) { return PrefabAPI.InstantiateClone(obj, name, registerNetwork); } internal static int BigTurretDeployableCount(CharacterMaster master, int count) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int num = 1; if (Object.op_Implicit((Object)(object)master.inventory)) { if (master.inventory.GetItemCount(ItemCatalog.FindItemIndex("ITEM_ANCIENT_SCEPTER")) > 0) { num++; } num += master.inventory.GetItemCount(Items.EquipmentMagazineVoid); } return num; } internal static void CreatePrefabs() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_104d: Unknown result type (might be due to invalid IL or missing references) //IL_1057: Unknown result type (might be due to invalid IL or missing references) //IL_105c: Unknown result type (might be due to invalid IL or missing references) //IL_107e: Unknown result type (might be due to invalid IL or missing references) //IL_1083: Unknown result type (might be due to invalid IL or missing references) //IL_10be: Unknown result type (might be due to invalid IL or missing references) //IL_10c3: Unknown result type (might be due to invalid IL or missing references) //IL_10df: Unknown result type (might be due to invalid IL or missing references) //IL_10e9: Expected O, but got Unknown //IL_0598: Unknown result type (might be due to invalid IL or missing references) //IL_05a2: Unknown result type (might be due to invalid IL or missing references) //IL_05b9: Unknown result type (might be due to invalid IL or missing references) //IL_05c3: Expected O, but got Unknown //IL_05da: Unknown result type (might be due to invalid IL or missing references) //IL_05f1: Unknown result type (might be due to invalid IL or missing references) //IL_0633: Unknown result type (might be due to invalid IL or missing references) //IL_063a: Expected O, but got Unknown //IL_06be: Unknown result type (might be due to invalid IL or missing references) //IL_06cb: Unknown result type (might be due to invalid IL or missing references) //IL_06d5: Unknown result type (might be due to invalid IL or missing references) //IL_06f3: Unknown result type (might be due to invalid IL or missing references) //IL_06fd: Unknown result type (might be due to invalid IL or missing references) //IL_071e: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Expected O, but got Unknown //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02ca: Expected O, but got Unknown //IL_02d7: 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_0343: Unknown result type (might be due to invalid IL or missing references) //IL_03ca: Unknown result type (might be due to invalid IL or missing references) //IL_03cf: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_0160: 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_1581: Unknown result type (might be due to invalid IL or missing references) //IL_15a1: Unknown result type (might be due to invalid IL or missing references) //IL_15b1: Expected O, but got Unknown //IL_161e: Unknown result type (might be due to invalid IL or missing references) //IL_1625: Expected O, but got Unknown //IL_1651: Unknown result type (might be due to invalid IL or missing references) //IL_1656: Unknown result type (might be due to invalid IL or missing references) //IL_165b: Unknown result type (might be due to invalid IL or missing references) //IL_16d5: Unknown result type (might be due to invalid IL or missing references) //IL_16dc: Expected O, but got Unknown //IL_16f2: Unknown result type (might be due to invalid IL or missing references) //IL_1702: Expected O, but got Unknown //IL_176f: Unknown result type (might be due to invalid IL or missing references) //IL_1776: Expected O, but got Unknown //IL_17a2: Unknown result type (might be due to invalid IL or missing references) //IL_17a7: Unknown result type (might be due to invalid IL or missing references) //IL_17ac: Unknown result type (might be due to invalid IL or missing references) //IL_1826: Unknown result type (might be due to invalid IL or missing references) //IL_182d: Expected O, but got Unknown //IL_185d: Unknown result type (might be due to invalid IL or missing references) //IL_1867: Unknown result type (might be due to invalid IL or missing references) //IL_18bc: Unknown result type (might be due to invalid IL or missing references) //IL_1277: Unknown result type (might be due to invalid IL or missing references) //IL_127c: Unknown result type (might be due to invalid IL or missing references) //IL_12b3: Unknown result type (might be due to invalid IL or missing references) //IL_12bd: Unknown result type (might be due to invalid IL or missing references) //IL_1362: Unknown result type (might be due to invalid IL or missing references) //IL_1367: Unknown result type (might be due to invalid IL or missing references) //IL_14d1: Unknown result type (might be due to invalid IL or missing references) //IL_14e6: Unknown result type (might be due to invalid IL or missing references) //IL_079e: Unknown result type (might be due to invalid IL or missing references) //IL_1918: Unknown result type (might be due to invalid IL or missing references) //IL_191d: Unknown result type (might be due to invalid IL or missing references) //IL_07e3: Unknown result type (might be due to invalid IL or missing references) //IL_07ed: 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_0844: Unknown result type (might be due to invalid IL or missing references) //IL_084e: Expected O, but got Unknown //IL_08a1: Unknown result type (might be due to invalid IL or missing references) //IL_08d7: Unknown result type (might be due to invalid IL or missing references) //IL_08f9: Unknown result type (might be due to invalid IL or missing references) //IL_09c1: 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_0a04: Unknown result type (might be due to invalid IL or missing references) //IL_0a06: Unknown result type (might be due to invalid IL or missing references) //IL_0a57: Unknown result type (might be due to invalid IL or missing references) //IL_0a79: Unknown result type (might be due to invalid IL or missing references) //IL_0a9b: Unknown result type (might be due to invalid IL or missing references) //IL_0b4b: Unknown result type (might be due to invalid IL or missing references) //IL_0b50: Unknown result type (might be due to invalid IL or missing references) //IL_0b94: Unknown result type (might be due to invalid IL or missing references) //IL_0bb5: Unknown result type (might be due to invalid IL or missing references) //IL_0bc7: Unknown result type (might be due to invalid IL or missing references) //IL_0bd1: Unknown result type (might be due to invalid IL or missing references) //IL_0bf9: Unknown result type (might be due to invalid IL or missing references) //IL_0bfe: Unknown result type (might be due to invalid IL or missing references) //IL_0c1c: Unknown result type (might be due to invalid IL or missing references) //IL_0ca8: Unknown result type (might be due to invalid IL or missing references) //IL_0cbf: Unknown result type (might be due to invalid IL or missing references) //IL_0cc9: Expected O, but got Unknown //IL_0cc4: Unknown result type (might be due to invalid IL or missing references) //IL_0cc9: Unknown result type (might be due to invalid IL or missing references) //IL_1947: Unknown result type (might be due to invalid IL or missing references) //IL_1951: Expected O, but got Unknown //IL_0970: Unknown result type (might be due to invalid IL or missing references) //IL_097a: Unknown result type (might be due to invalid IL or missing references) //IL_1989: Unknown result type (might be due to invalid IL or missing references) //IL_1993: Expected O, but got Unknown //IL_19ad: Unknown result type (might be due to invalid IL or missing references) //IL_19b2: Unknown result type (might be due to invalid IL or missing references) //IL_0d12: Unknown result type (might be due to invalid IL or missing references) //IL_0d1c: Expected O, but got Unknown //IL_0d88: Unknown result type (might be due to invalid IL or missing references) //IL_0d9c: Unknown result type (might be due to invalid IL or missing references) //IL_19d8: Unknown result type (might be due to invalid IL or missing references) //IL_19e2: Unknown result type (might be due to invalid IL or missing references) //IL_1a23: Unknown result type (might be due to invalid IL or missing references) //IL_1a2d: Unknown result type (might be due to invalid IL or missing references) //IL_1a44: Unknown result type (might be due to invalid IL or missing references) //IL_1a4e: Expected O, but got Unknown //IL_1a68: Unknown result type (might be due to invalid IL or missing references) //IL_1a6d: Unknown result type (might be due to invalid IL or missing references) //IL_1ba2: Unknown result type (might be due to invalid IL or missing references) //IL_1bac: Expected O, but got Unknown //IL_1bc6: Unknown result type (might be due to invalid IL or missing references) //IL_1bcb: Unknown result type (might be due to invalid IL or missing references) //IL_1cfc: Unknown result type (might be due to invalid IL or missing references) //IL_1d02: Expected O, but got Unknown //IL_1d3a: Unknown result type (might be due to invalid IL or missing references) //IL_0e03: Unknown result type (might be due to invalid IL or missing references) //IL_0e0d: Expected O, but got Unknown //IL_0e94: Unknown result type (might be due to invalid IL or missing references) //IL_0e9e: Expected O, but got Unknown //IL_1c13: Unknown result type (might be due to invalid IL or missing references) //IL_1c27: Unknown result type (might be due to invalid IL or missing references) //IL_1c31: Expected O, but got Unknown //IL_0e53: Unknown result type (might be due to invalid IL or missing references) //IL_0e58: Unknown result type (might be due to invalid IL or missing references) //IL_0e5c: Unknown result type (might be due to invalid IL or missing references) //IL_0e61: Unknown result type (might be due to invalid IL or missing references) //IL_1d71: Unknown result type (might be due to invalid IL or missing references) //IL_1d7b: Expected O, but got Unknown //IL_1dae: Unknown result type (might be due to invalid IL or missing references) //IL_0f44: Unknown result type (might be due to invalid IL or missing references) //IL_0f4e: Expected O, but got Unknown //IL_0ff0: Unknown result type (might be due to invalid IL or missing references) //IL_0f93: Unknown result type (might be due to invalid IL or missing references) //IL_0f98: Unknown result type (might be due to invalid IL or missing references) //IL_0fb9: Unknown result type (might be due to invalid IL or missing references) overclock = Utils.NewBuffDef("Overclock", stack: false, hidden: false, Load<Sprite>("RoR2/Base/Croco/texBuffRegenBoostIcon.tif"), Color32.op_Implicit(new Color32((byte)226, (byte)81, (byte)65, byte.MaxValue))); block = Utils.NewBuffDef("Block", stack: false, hidden: false, Load<Sprite>("RoR2/Junk/Common/texBuffBodyArmorIcon.tif"), Color32.op_Implicit(new Color32((byte)239, (byte)245, (byte)140, byte.MaxValue))); if (MainPlugin.enableCap.Value) { overlay = new Material(Load<Material>("RoR2/Base/Common/matEnergyShield.mat")); overlay.SetColor("_TintColor", Color.red); overlay.SetFloat("_OffsetAmount", 0.025f); buffProjectileExplosion = Instantiate("RoR2/Base/FusionCellDestructible/FusionCellExplosion.prefab", "BuffExplosion"); buffProjectileExplosion.GetComponent<EffectComponent>().soundName = "Play_roboBall_attack1_explode"; ParticleSystemRenderer[] componentsInChildren = buffProjectileExplosion.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val in componentsInChildren) { string name = ((Object)val).name; if (name == "Ring") { ((Renderer)val).material = new Material(Load<Material>("RoR2/Base/RoboBallBoss/matRoboBallParticleRing.mat")); ((Renderer)val).material.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampHuntressSoftCrit.png")); Object.Instantiate<GameObject>(((Component)val).gameObject, ((Component)val).transform.position, ((Component)val).transform.rotation, ((Component)val).transform.parent); } if (name == "") { } if (name == "") { } if (name == "") { } if (name == "") { } } ContentAddition.AddEffect(buffProjectileExplosion); buffProjectileGhost = Instantiate("RoR2/Base/Captain/CaptainTazerGhost.prefab", "BuffProjectileGhost"); Transform child = buffProjectileGhost.transform.GetChild(1); ((Component)child.GetChild(1)).gameObject.SetActive(false); Transform child2 = child.GetChild(0); ((Component)child2).transform.localPosition = Vector3.zero; TrailRenderer component = ((Component)child2).GetComponent<TrailRenderer>(); component.textureMode = (LineTextureMode)0; ((Renderer)component).material = new Material(Load<Material>("RoR2/Base/Bandit2/matBandit2SplatterOpaqueTrailAlt.mat")); ((Renderer)component).material.SetColor("_TintColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)44, (byte)44, byte.MaxValue))); ((Renderer)component).material.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampParentEyes.png")); ParticleSystemRenderer componentInChildren = ((Component)child2).GetComponentInChildren<ParticleSystemRenderer>(); ((Renderer)componentInChildren).material = new Material(Load<Material>("RoR2/Base/Common/VFX/matArcaneCircleProvi.mat")); ((Renderer)componentInChildren).material.SetColor("_TintColor", Color.red); ((Renderer)componentInChildren).material.SetFloat("_Boost", 6f); buffProjectile = Instantiate("RoR2/Base/Captain/CaptainTazer.prefab", "BuffProjectile", registerNetwork: true); buffProjectile.GetComponent<Rigidbody>().collisionDetectionMode = (CollisionDetectionMode)2; buffProjectile.GetComponent<ProjectileController>().ghostPrefab = buffProjectileGhost; buffProjectile.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)0); buffProjectile.GetComponent<ProjectileSimple>().desiredForwardSpeed = 110f; Object.Destroy((Object)(object)buffProjectile.GetComponent<ProjectileImpactExplosion>()); ProjectileSingleTargetImpact val2 = buffProjectile.AddComponent<ProjectileSingleTargetImpact>(); val2.destroyOnWorld = true; val2.destroyWhenNotAlive = true; buffProjectile.AddComponent<RadialBuff>(); ContentAddition.AddProjectile(buffProjectile); tracer = Instantiate("RoR2/Base/Bandit2/TracerBanditPistol.prefab", "Tracer"); tracer.GetComponent<LineRenderer>().endColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)31, (byte)0, byte.MaxValue)); ContentAddition.AddEffect(tracer); } if (MainPlugin.enableEngi.Value) { missileProjectile = Instantiate("RoR2/Base/Engi/EngiHarpoon.prefab", "AerosMissileProjectile", registerNetwork: true); Object.Destroy((Object)(object)missileProjectile.GetComponent<MissileController>()); Object.Destroy((Object)(object)missileProjectile.GetComponent<QuaternionPID>()); Rigidbody component2 = missileProjectile.GetComponent<Rigidbody>(); component2.useGravity = false; component2.collisionDetectionMode = (CollisionDetectionMode)2; ProjectileSimple val3 = missileProjectile.AddComponent<ProjectileSimple>(); val3.desiredForwardSpeed = 60f; val3.lifetime = 8f; ProjectileDirectionalTargetFinder val4 = missileProjectile.AddComponent<ProjectileDirectionalTargetFinder>(); val4.lookRange = 45f; val4.lookCone = 35f; val4.allowTargetLoss = false; val4.onlySearchIfNoTarget = true; val4.testLoS = false; val4.targetSearchInterval = 0.1f; val4.ignoreAir = false; ((Behaviour)val4).enabled = MainPlugin.missileTracking.Value; ProjectileSteerTowardTarget val5 = missileProjectile.AddComponent<ProjectileSteerTowardTarget>(); val5.rotationSpeed = 220f; ProjectileController component3 = missileProjectile.GetComponent<ProjectileController>(); ProjectileSingleTargetImpact component4 = missileProjectile.GetComponent<ProjectileSingleTargetImpact>(); GameObject val6 = Instantiate(component4.impactEffect, "AerosMissileImpact"); val6.GetComponent<EffectComponent>().soundName = "Play_engi_M1_explo"; ContentAddition.AddEffect(val6); component4.impactEffect = val6; if (MainPlugin.missileTracking.Value) { missileProjectile.AddComponent<SimpleUpdate>(); } GameObject val7 = Instantiate(component3.ghostPrefab, "AerosMissileGhost"); ((Component)val7.GetComponentsInChildren<ParticleSystem>()[^1]).gameObject.SetActive(false); TrailRenderer componentInChildren2 = val7.GetComponentInChildren<TrailRenderer>(); ((Component)componentInChildren2).transform.localPosition = Vector3.forward * 0.1f; ((Renderer)componentInChildren2).material = new Material(Load<Material>("RoR2/DLC1/EliteEarth/matAffixEarthTrailBloblets.mat")); ((Renderer)componentInChildren2).material.SetTextureScale("_Cloud2Tex", new Vector2(0.7f, 1f)); ((Renderer)componentInChildren2).material.SetVector("_CutoffScroll", Vector4.zero); component3.ghostPrefab = val7; ContentAddition.AddProjectile(missileProjectile); GameObject val8 = Assets.Load<GameObject>("turretMdl"); GameObject val9 = val8; MeshRenderer[] componentsInChildren2 = val9.GetComponentsInChildren<MeshRenderer>(); Material val10 = new Material(Load<Material>("RoR2/Base/Engi/matEngiTurret.mat")); val10.SetFloat("_PrintOn", 0f); val10.SetFloat("_EmPower", 5f); turret = Instantiate("RoR2/Base/Engi/EngiTurretBody.prefab", "AerosBigTurretBody", registerNetwork: true); ((Component)turret.GetComponentInChildren<SkinnedMeshRenderer>()).gameObject.SetActive(false); ChildLocator component5 = ((Component)turret.GetComponent<ModelLocator>().modelTransform).GetComponent<ChildLocator>(); Transform val11 = component5.FindChild("Muzzle"); val11.localPosition = new Vector3(0f, 3.5f, 9.6f); val11.localScale = Vector3.one * 2f; HurtBox componentInChildren3 = turret.GetComponentInChildren<HurtBox>(); ((Component)componentInChildren3).transform.localPosition = Vector3.up * 2f; ((Component)componentInChildren3).transform.localScale = new Vector3(3f, 7f, 3f); List<Renderer> list = new List<Renderer>(); Transform[] componentsInChildren3 = turret.GetComponentsInChildren<Transform>(); foreach (Transform val12 in componentsInChildren3) { string name2 = ((Object)val12).name; if (name2 == "Base") { GameObject val13 = Object.Instantiate<GameObject>(((Component)componentsInChildren2[0]).gameObject); val13.transform.parent = val12; ((Renderer)val13.GetComponent<MeshRenderer>()).material = val10; val13.transform.localPosition = Vector3.zero; list.Add((Renderer)(object)val13.GetComponent<MeshRenderer>()); } if (name2 == "Head") { ((Component)val12).gameObject.AddComponent<ForcePos>(); ((Component)val12).transform.localPosition = Vector3.up * 4f; GameObject val14 = Object.Instantiate<GameObject>(((Component)componentsInChildren2[1]).gameObject); val14.transform.parent = val12; val14.transform.localPosition = Vector3.zero; MeshRenderer[] componentsInChildren4 = val14.GetComponentsInChildren<MeshRenderer>(); ((Renderer)componentsInChildren4[0]).material = val10; ((Renderer)componentsInChildren4[1]).material = new Material(val10); Texture2D val15 = Assets.Load<Texture2D>("chargeindicator"); Texture2D val16 = Assets.Load<Texture2D>("chargeindicator_e"); ((Renderer)componentsInChildren4[1]).material.SetTexture("_MainTex", (Texture)(object)val15); ((Renderer)componentsInChildren4[1]).material.SetTexture("_EmTex", (Texture)(object)val16); ((Renderer)componentsInChildren4[1]).material.SetTextureScale("_MainTex", Vector2.zero); ((Renderer)componentsInChildren4[1]).material.SetFloat("_EmPower", 10f); List<NameTransformPair> list2 = component5.transformPairs.ToList(); list2.Add(new NameTransformPair { name = "Charge", transform = ((Component)componentsInChildren4[1]).transform }); component5.transformPairs = list2.ToArray(); list.Add((Renderer)(object)componentsInChildren4[0]); list.Add((Renderer)(object)componentsInChildren4[1]); } if (name2 == "Neck") { GameObject val17 = Object.Instantiate<GameObject>(((Component)componentsInChildren2[3]).gameObject); val17.transform.parent = val12; ((Renderer)val17.GetComponent<MeshRenderer>()).material = val10; val17.transform.localPosition = Vector3.up * -1.4f; list.Add((Renderer)(object)val17.GetComponent<MeshRenderer>()); } } RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[list.Count]; for (int k = 0; k < array.Length; k++) { array[k] = new RendererInfo { renderer = list[k], defaultMaterial = list[k].material, defaultShadowCastingMode = (ShadowCastingMode)0, hideOnDeath = false, ignoreOverlays = false }; } CharacterModel component6 = ((Component)component5).GetComponent<CharacterModel>(); component6.baseRendererInfos = array.ToArray(); ModelSkinController component7 = ((Component)component5).GetComponent<ModelSkinController>(); component7.skins = (SkinDef[])(object)new SkinDef[3] { Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(list, ((Component)component5).gameObject, array, val10)), Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(list, ((Component)component5).gameObject, array, Load<Material>("RoR2/Base/Engi/matEngiAlt.mat"))), Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(list, ((Component)component5).gameObject, array, Load<Material>("RoR2/Base/Engi/matEngiAltColossusTool.mat"))) }; component7.currentSkinIndex = 0; Utils.AddMinionSkin(Load<SkinDef>("RoR2/Base/Engi/skinEngiDefault.asset"), turret, component7.skins[0]); Utils.AddMinionSkin(Load<SkinDef>("RoR2/Base/Engi/skinEngiAlt.asset"), turret, component7.skins[1]); Utils.AddMinionSkin(Load<SkinDef>("RoR2/Base/Engi/skinEngiAltColossus.asset"), turret, component7.skins[2]); ((Behaviour)component6).enabled = false; ((Component)component5).gameObject.AddComponent<TurretChargeBehaviour>(); ((Component)component5).gameObject.AddComponent<TurretSkinBehaviour>(); GameObject val18 = Load<GameObject>("RoR2/Base/Engi/EngiDisplay.prefab"); GameObject val19 = Object.Instantiate<GameObject>(((Component)component5).gameObject, val18.transform.position, Quaternion.identity); ((Behaviour)val19.GetComponent<Animator>()).enabled = false; val19.transform.parent = val18.transform; val19.transform.localPosition = new Vector3(0.3f, 0f, -3.5f); val19.transform.localRotation = Quaternion.Euler(0f, 20f, 0f); val19.transform.localScale = Vector3.one * 0.36f; ((Behaviour)component6).enabled = true; turret.GetComponent<EntityStateMachine>().initialStateType = new SerializableEntityStateType(typeof(TurretSpawn)); turret.GetComponent<SkillLocator>().primary = Utils.NewGenericSkill(turret, Utils.NewSkillDef<SkillDef>(new SerializableEntityStateType(typeof(EngiTurretPrimary)), "Weapon", 1, 8f, beginSkillCooldownOnSkillEnd: false, canceledFromSprinting: false, fullRestockOnAssign: true, (InterruptPriority)0, isCombatSkill: true, mustKeyPress: false, cancelSprintingOnActivation: true, 1, 1, 1, (Sprite)null, "AEROSENGI_SPEC_DESCRIPTION", "AEROSENGI_SPEC", Array.Empty<string>())); ContentAddition.AddBody(turret); turretMaster = Instantiate("RoR2/Base/Engi/EngiTurretMaster.prefab", "AerosBigTurretMaster", registerNetwork: true); turretMaster.GetComponent<CharacterMaster>().bodyPrefab = turret; AISkillDriver[] components = turretMaster.GetComponents<AISkillDriver>(); components[0].maxDistance = 250f; components[1].moveTargetType = (TargetType)0; ContentAddition.AddMaster(turretMaster); bigTurret = DeployableAPI.RegisterDeployableSlot(new GetDeployableSameSlotLimit(BigTurretDeployableCount)); Texture2D val20 = Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampEngi.png"); turretMuzzleFlash = Instantiate("RoR2/Base/Engi/MuzzleflashEngiTurret.prefab", "AerosTurretMuzzleFlash"); ParticleSystemRenderer[] componentsInChildren5 = turretMuzzleFlash.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val21 in componentsInChildren5) { ((Renderer)val21).material = new Material(((Renderer)val21).material); ((Renderer)val21).material.SetTexture("_RemapTex", (Texture)(object)val20); } ContentAddition.AddEffect(turretMuzzleFlash); turretBlueprint = Instantiate("RoR2/Base/Engi/EngiTurretBlueprints.prefab", "AerosBigTurretBlueprint"); ((Component)turretBlueprint.transform.GetChild(1)).gameObject.SetActive(false); GameObject val22 = Object.Instantiate<GameObject>(val8, turretBlueprint.transform.position, Quaternion.Euler(0f, 180f, 0f), turretBlueprint.transform); turretBlueprint.GetComponent<BlueprintController>().renderers = val22.GetComponentsInChildren<Renderer>(); turretTracer = Instantiate("RoR2/DLC1/VoidSurvivor/VoidSurvivorBeamCorrupt.prefab", "AerosTurretTracer"); ParticleSystemRenderer[] componentsInChildren6 = turretTracer.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val23 in componentsInChildren6) { ((Renderer)val23).material = new Material(((Renderer)val23).material); ((Renderer)val23).material.SetTexture("_RemapTex", (Texture)(object)val20); ((Renderer)val23).material.DisableKeyword("VERTEXCOLOR"); if (((Object)val23).name == "Glows") { MainModule main = ((Component)val23).GetComponent<ParticleSystem>().main; ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(Color.green); } } MeshRenderer componentInChildren4 = turretTracer.GetComponentInChildren<MeshRenderer>(); ((Renderer)componentInChildren4).material = new Material(((Renderer)componentInChildren4).material); ((Renderer)componentInChildren4).material.SetTexture("_RemapTex", (Texture)(object)val20); turretBigTracer = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/DLC1/VoidRaidCrab/TracerVoidRaidCrabTripleBeam.prefab"), "BigTurretBeamTracer", false); turretBigTracer.GetComponent<EffectComponent>().soundName = ""; turretBigTracer.AddComponent<eee>(); LineRenderer[] componentsInChildren7 = turretBigTracer.GetComponentsInChildren<LineRenderer>(); foreach (LineRenderer val24 in componentsInChildren7) { ((Renderer)val24).enabled = false; } ParticleSystemRenderer[] componentsInChildren8 = turretBigTracer.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val25 in componentsInChildren8) { ((Renderer)val25).material = new Material(((Renderer)val25).material); ((Renderer)val25).material.DisableKeyword("VERTEXCOLOR"); if (((Object)val25).name == "BeamParticles, Rings") { ((Renderer)val25).material.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)10, (byte)189, (byte)10, byte.MaxValue))); ((Renderer)val25).material.SetTextureScale("_MainTex", new Vector2(1f, 0.7f)); ((Renderer)val25).material.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampHealingVariant.png")); } else { ((Renderer)val25).material.SetColor("_TintColor", Color.green); } } ContentAddition.AddEffect(turretBigTracer); } if (MainPlugin.enableLoader.Value) { slamProjectile = Instantiate("RoR2/Base/Brother/BrotherSunderWave.prefab", "SlamProjectile"); slamProjectile.GetComponent<ProjectileOverlapAttack>().forceVector = Vector3.up * 2500f; ProjectileController component8 = slamProjectile.GetComponent<ProjectileController>(); GameObject val26 = Object.Instantiate<GameObject>(component8.ghostPrefab, slamProjectile.transform.position, Quaternion.identity, slamProjectile.transform); Object.Destroy((Object)(object)val26.GetComponent<ProjectileGhostController>()); Object.Destroy((Object)(object)val26.GetComponent<VFXAttributes>()); slamProjectile.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)0); MeshRenderer component9 = ((Component)val26.GetComponentInChildren<HitBox>()).GetComponent<MeshRenderer>(); ((Renderer)component9).material = new Material(((Renderer)component9).material); ((Renderer)component9).material.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampLightningYellowOffset.png")); ParticleSystemRenderer[] componentsInChildren9 = val26.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val27 in componentsInChildren9) { string name3 = ((Object)val27).name; if (name3 == "Infection, World") { ((Renderer)val27).material = Load<Material>("RoR2/Base/Loader/matLoaderTrailImpact.mat"); } if (name3 == "Dust") { ((Renderer)val27).material = Load<Material>("RoR2/Base/Loader/matLoaderLightningLarge.mat"); } if (name3 == "Water") { ((Renderer)val27).material = Load<Material>("RoR2/Base/Loader/matLoaderLightningTile.mat"); } } component8.ghostPrefab = null; Object.Destroy((Object)(object)slamProjectile.GetComponent<ProjectileCharacterController>()); Object.Destroy((Object)(object)slamProjectile.GetComponent<CharacterController>()); ProjectileSimple val28 = slamProjectile.AddComponent<ProjectileSimple>(); val28.desiredForwardSpeed = 90f; val28.lifetime = 3f; ContentAddition.AddProjectile(slamProjectile); loaderImpact = Instantiate("RoR2/Base/Loader/OmniImpactVFXLoader.prefab", "LoaderImpact"); Utils.RegisterEffect(loaderImpact, -1f, "Play_loader_m1_impact"); shieldEffect = Instantiate(Assets.Load<GameObject>("ReflectShield"), "ShieldEffect"); Material val29 = Object.Instantiate<Material>(Load<Material>("RoR2/Base/Engi/matDefenseMatrix.mat")); val29.SetColor("_TintColor", Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, (byte)158, byte.MaxValue))); val29.SetTexture("_RemapTex", (Texture)(object)Assets.Load<Texture2D>("shieldRamp")); val29.SetTexture("_Cloud1Tex", (Texture)null); val29.SetTextureScale("_Cloud1Tex", Vector2.one * 10f); val29.SetFloat("_SoftPower", 0f); val29.SetFloat("_Boost", 0.6f); val29.SetFloat("_RimPower", 2.4f); ((Renderer)shieldEffect.GetComponentInChildren<ParticleSystemRenderer>()).material = val29; } if (MainPlugin.enableSeeker.Value) { seekerGenkidamaProjectileGhost = Instantiate("RoR2/DLC2/Seeker/SpiritPunchFinisherGhost.prefab", "SeekerGenkidamaProjectileGhost"); ParticleSystem[] componentsInChildren10 = seekerGenkidamaProjectileGhost.GetComponentsInChildren<ParticleSystem>(); foreach (ParticleSystem val30 in componentsInChildren10) { string name4 = ((Object)val30).name; MainModule main2 = val30.main; ((MainModule)(ref main2)).scalingMode = (ParticleSystemScalingMode)0; ((MainModule)(ref main2)).loop = true; if (name4 == "Sphere. Waves") { ((Component)val30).gameObject.SetActive(false); } ParticleSystemRenderer component10 = ((Component)val30).GetComponent<ParticleSystemRenderer>(); if (name4 == "Sphere") { Material material = ((Renderer)component10).material; ((Renderer)component10).materials = (Material[])(object)new Material[3] { material, default(Material), Load<Material>("RoR2/DLC2/Seeker/matSpiritPunchFist.mat") }; } } Object.Destroy((Object)(object)seekerGenkidamaProjectileGhost.GetComponent<ProjectileGhostController>()); seekerGenkidamaProjectile = Instantiate("RoR2/DLC2/Seeker/SpiritPunchFinisherProjectile.prefab", "SeekerGenkidamaProjectile", registerNetwork: true); seekerGenkidamaProjectile.AddComponent<SeekerGenkidamaProjectile>(); seekerGenkidamaProjectile.GetComponent<ProjectileController>().ghostPrefab = null; SphereCollider component11 = seekerGenkidamaProjectile.GetComponent<SphereCollider>(); ((Collider)component11).enabled = false; component11.radius = 0.5f; ProjectileSimple component12 = seekerGenkidamaProjectile.GetComponent<ProjectileSimple>(); ((Behaviour)component12).enabled = false; component12.lifetime = 8f; component12.desiredForwardSpeed = 100f; component12.updateAfterFiring = true; ProjectileImpactExplosion component13 = seekerGenkidamaProjectile.GetComponent<ProjectileImpactExplosion>(); ((Behaviour)component13).enabled = false; component13.lifetime = 8f; seekerGenkidamaProjectileGhost.transform.parent = seekerGenkidamaProjectile.transform; seekerGenkidamaProjectileGhost.transform.localPosition = Vector3.zero; seekerGenkidamaProjectileGhost.transform.localScale = Vector3.one; ContentAddition.AddProjectile(seekerGenkidamaProjectile); } if (!MainPlugin.enableViend.Value) { return; } viendSecondary = Assets.MainAssetBundle.LoadAsset<Sprite>("viendSecondary"); viendSecondaryCorrupted = Assets.MainAssetBundle.LoadAsset<Sprite>("viendSecondaryCorrupted"); viendUtility = Assets.MainAssetBundle.LoadAsset<Sprite>("viendUtility"); viendUtilityCorrupted = Assets.MainAssetBundle.LoadAsset<Sprite>("viendUtilityCorrupted"); viendSpeedBuff = Utils.NewBuffDef("Speed", stack: false, hidden: false, Load<Sprite>("RoR2/Base/Common/texMovespeedBuffIcon.tif"), new Color(0.724f, 0.071f, 0.929f)); PostProcessProfile val31 = Load<PostProcessProfile>("RoR2/Base/title/PostProcessing/ppLocalDoppelganger.asset"); viendPP = PrefabAPI.InstantiateClone(new GameObject("ViendPP"), "ViendPP", false); viendPP.layer = 20; PostProcessVolume val32 = viendPP.AddComponent<PostProcessVolume>(); val32.profile = Object.Instantiate<PostProcessProfile>(val31); val32.sharedProfile = val32.profile; val32.weight = 1f; val32.priority = 99f; val32.isGlobal = true; ColorGrading val33 = (ColorGrading)val32.profile.settings[1]; ((ParameterOverride)val33.tint).overrideState = false; ((ParameterOverride)val33.colorFilter).overrideState = true; ((ParameterOverride<Color>)(object)val33.colorFilter).value = Color32.op_Implicit(new Color32((byte)28, (byte)69, (byte)97, byte.MaxValue)); ((ParameterOverride<float>)(object)val33.mixerRedOutRedIn).value = 300f; PostProcessDuration val34 = viendPP.AddComponent<PostProcessDuration>(); ((Behaviour)val34).enabled = false; val34.ppVolume = val32; val34.ppWeightCurve = AnimationCurve.Linear(0f, 1f, 1f, 0f); val34.maxDuration = 0.5f; val34.destroyOnEnd = true; Vignette val35 = (Vignette)val32.profile.settings[3]; ((ParameterOverride<float>)(object)val35.intensity).value = 0.346f; viendPPCorrupted = PrefabAPI.InstantiateClone(new GameObject("ViendPPCorrupted"), "ViendPPCorrupted", false); viendPPCorrupted.layer = 20; PostProcessVolume val36 = viendPPCorrupted.AddComponent<PostProcessVolume>(); val36.profile = Object.Instantiate<PostProcessProfile>(val31); val36.sharedProfile = val36.profile; val36.weight = 1f; val36.priority = 99f; val36.isGlobal = true; ColorGrading val37 = (ColorGrading)val36.profile.settings[1]; ((ParameterOverride)val37.tint).overrideState = false; ((ParameterOverride)val37.colorFilter).overrideState = true; ((ParameterOverride<Color>)(object)val37.colorFilter).value = Color32.op_Implicit(new Color32((byte)97, (byte)28, (byte)97, byte.MaxValue)); ((ParameterOverride<float>)(object)val37.mixerRedOutRedIn).value = 300f; PostProcessDuration val38 = viendPPCorrupted.AddComponent<PostProcessDuration>(); ((Behaviour)val38).enabled = false; val38.ppVolume = val36; val38.ppWeightCurve = AnimationCurve.Linear(0f, 1f, 1f, 0f); val38.maxDuration = 0.5f; val38.destroyOnEnd = true; Vignette val39 = (Vignette)val36.profile.settings[3]; ((ParameterOverride<float>)(object)val39.intensity).value = 0.346f; viendContinuousBeam = Instantiate("RoR2/DLC1/MajorAndMinorConstruct/LaserMajorConstruct.prefab", "ViendContinuousBeam"); viendContinuousBeam.transform.localScale = Vector3.one * 0.12f; ((Component)viendContinuousBeam.GetComponentInChildren<Light>()).gameObject.SetActive(false); LineRenderer componentInChildren5 = viendContinuousBeam.GetComponentInChildren<LineRenderer>(); componentInChildren5.widthMultiplier = 0.7f; ((Renderer)componentInChildren5).material = ((Renderer)componentInChildren5).material; ((Renderer)componentInChildren5).material.SetColor("_TintColor", Color.white); Texture2D val40 = Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampNullifierSmooth.png"); ((Renderer)componentInChildren5).material.SetTexture("_RemapTex", (Texture)(object)val40); ParticleSystemRenderer[] componentsInChildren11 = viendContinuousBeam.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val41 in componentsInChildren11) { string name5 = ((Object)val41).name; ParticleSystem component14 = ((Component)val41).GetComponent<ParticleSystem>(); MainModule main3 = component14.main; ((MainModule)(ref main3)).scalingMode = (ParticleSystemScalingMode)0; if (name5 == "Hexagon") { ((Renderer)val41).material = new Material(Load<Material>("RoR2/DLC1/MissileVoid/matMissileVoidFlare.mat")); ((Renderer)val41).material.SetFloat("_Boost", 6.3f); } if (name5 == "SoftGlowFlash") { ((Renderer)val41).material = new Material(Load<Material>("RoR2/Base/Enigma/matArtifactEnigmaGlow.mat")); ((Renderer)val41).material.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)54, (byte)0, (byte)193, byte.MaxValue))); } if (name5 == "Flare") { ((Component)val41).transform.localScale = Vector3.one * 4f; ((Renderer)val41).material = Load<Material>("RoR2/DLC1/VoidRaidCrab/matVoidRaidCrabParticle.mat"); ((MainModule)(ref main3)).simulationSpace = (ParticleSystemSimulationSpace)0; } if (name5 == "LightShafts") { ((Component)val41).transform.localScale = Vector3.one * 7f; ((Renderer)val41).material = new Material(Load<Material>("RoR2/DLC1/Common/VFX/matOmniHitspark1GenericAdditive.mat")); ((Renderer)val41).material.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)127, (byte)0, byte.MaxValue, byte.MaxValue))); ((Renderer)val41).material.SetTexture("_RemapTex", (Texture)(object)val40); } switch (name5) { default: if (!(name5 == "Fire, Electric")) { continue; } break; case "AreaIndicator": case "Debris": case "SmokeKickup": break; } ((Component)val41).gameObject.SetActive(false); } Texture2D val42 = Load<Texture2D>("RoR2/DLC1/VoidSurvivor/texRampVoidSurvivorCorrupted1.png"); viendBeamTracer = Instantiate("RoR2/DLC1/VoidRaidCrab/TracerVoidRaidCrabTripleBeam.prefab", "ViendBeamTracer"); ((Component)viendBeamTracer.transform.GetChild(1)).gameObject.SetActive(false); viendBeamTracer.GetComponent<EffectComponent>().soundName = ""; viendBeamTracer.AddComponent<eee>(); LineRenderer[] componentsInChildren12 = viendBeamTracer.GetComponentsInChildren<LineRenderer>(); foreach (LineRenderer val43 in componentsInChildren12) { ((Renderer)val43).enabled = false; } ParticleSystemRenderer[] componentsInChildren13 = viendBeamTracer.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val44 in componentsInChildren13) { ((Renderer)val44).material = new Material(((Renderer)val44).material); ((Renderer)val44).material.DisableKeyword("VERTEXCOLOR"); MainModule main4 = ((Component)val44).GetComponent<ParticleSystem>().main; ((MainModule)(ref main4)).simulationSpeed = ((MainModule)(ref main4)).simulationSpeed * 0.7f; string name6 = ((Object)val44).name; if (name6 == "BeamParticles, Rings") { ((Component)val44).transform.localScale = new Vector3(1f, 0.35f, 0.35f); ((Renderer)val44).material = new Material(((Renderer)val44).material); ((Renderer)val44).material.SetTexture("_RemapTex", (Texture)(object)val42); ((Renderer)val44).material.SetFloat("_Boost", 1f); } if (name6 == "BeamParticles, Small") { ((Renderer)val44).material = Load<Material>("RoR2/DLC1/VoidSurvivor/matVoidSurvivorBlasterCoreCorrupted.mat"); } } ContentAddition.AddEffect(viendBeamTracer); viendBeamCharge = Instantiate("RoR2/DLC1/VoidSurvivor/VoidSurvivorChargeCrushHealth.prefab", "ViendBeamCharge"); ScaleParticleSystemDuration val45 = viendBeamCharge.AddComponent<ScaleParticleSystemDuration>(); val45.particleSystems = viendBeamCharge.GetComponentsInChildren<ParticleSystem>(); val45.initialDuration = 0.5f; MeshRenderer componentInChildren6 = viendBeamCharge.GetComponentInChildren<MeshRenderer>(); ((Renderer)componentInChildren6).materials[1] = new Material(((Renderer)componentInChildren6).materials[1]); ((Renderer)componentInChildren6).materials[1].DisableKeyword("VERTEXCOLOR"); ((Renderer)componentInChildren6).materials[1].SetTexture("_RemapTex", (Texture)(object)val42); ((Renderer)componentInChildren6).materials[1].SetColor("_TintColor", Color.white); ParticleSystemRenderer[] componentsInChildren14 = viendBeamCharge.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val46 in componentsInChildren14) { string name7 = ((Object)val46).name; ((Renderer)val46).material = new Material(((Renderer)val46).material); ((Renderer)val46).material.DisableKeyword("VERTEXCOLOR"); ((Renderer)val46).material.SetTexture("_RemapTex", (Texture)(object)val42); ((Renderer)val46).material.SetColor("_TintColor", Color.white); } } } internal class CaptainPrimary : BaseSkillState { private float duration; private float baseDuration = 0.95f; private float delay = 0.095f; private float stopwatch; private int maxShots = 3; private int shotCount; public override void OnEnter() { ((BaseState)this).OnEnter(); ((BaseState)this).StartAimMode(2f, false); duration = baseDuration / Math.Min(((BaseState)this).attackSpeedStat, 5.85f); delay /= Math.Min(((BaseState)this).attackSpeedStat, 5.85f); } public override void FixedUpdate() { //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: 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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: 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_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0141: 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_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016f: 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_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0191: 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_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: 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_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: 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_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= delay && shotCount < maxShots) { stopwatch = 0f; shotCount++; ((EntityState)this).PlayAnimation("Gesture, Additive", FireCaptainShotgun.FireCaptainShotgunStateHash); ((EntityState)this).PlayAnimation("Gesture, Override", FireCaptainShotgun.FireCaptainShotgunStateHash); AkSoundEngine.PostEvent(FireBarrage.fireBarrageSoundString, ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(Prefabs.Load<GameObject>("RoR2/Base/Common/VFX/Muzzleflash1.prefab"), ((EntityState)this).gameObject, ChargeCaptainShotgun.muzzleName, false); if (((EntityState)this).isAuthority) { float num = 0.8f; ((EntityState)this).characterBody.AddSpreadBloom(num); ((BaseState)this).AddRecoil(-1f * num, -1.5f * num, -0.25f * num, 0.25f * num); Ray aimRay = ((BaseState)this).GetAimRay(); float num2 = 0.0425f; new BulletAttack { bulletCount = 1u, aimVector = ((Ray)(ref aimRay)).direction, origin = ((Ray)(ref aimRay)).origin, damage = ((BaseState)this).damageStat * MainPlugin.burstDMG.Value, damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.GenericPrimary, falloffModel = (FalloffModel)0, maxDistance = 250f, force = 20f, hitMask = CommonMasks.bullet, minSpread = 0f - num2, maxSpread = num2, isCrit = ((BaseState)this).RollCrit(), owner = ((EntityState)this).gameObject, muzzleName = ChargeCaptainShotgun.muzzleName, smartCollision = false, procChainMask = default(ProcChainMask), procCoefficient = 0.6f, radius = 0.08f, sniper = false, stopperMask = CommonMasks.bullet, weapon = null, tracerEffectPrefab = Prefabs.Load<GameObject>("RoR2/Base/Captain/TracerCaptainShotgun.prefab"), spreadPitchScale = 1f, spreadYawScale = 1f, hitEffectPrefab = Prefabs.Load<GameObject>("RoR2/Base/Captain/HitsparkCaptainShotgun.prefab") }.Fire(); } } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class CaptainSecondary