Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of SeekerTweaks v1.0.3
SeekerTweaks.dll
Decompiled 2 years 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.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.Seeker; using HG.Reflection; using JetBrains.Annotations; using KinematicCharacterController; using On.EntityStates.Seeker; using On.RoR2; using R2API; using Rewired; using Rewired.ComponentControls.Effects; using RoR2; using RoR2.HudOverlay; using RoR2.Navigation; using RoR2.Networking; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: OptIn] [assembly: AssemblyTitle("SeekerTweaks")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("SeekerTweaks")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("01975351-76aa-42c2-b6bc-2d9d8d247413")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace SeekerTweaks; internal class AllyTracker : MonoBehaviour { private float stopwatch; private CharacterBody body; private readonly BullseyeSearch search = new BullseyeSearch(); public CharacterBody lastTarget; public CharacterBody target; private TemporaryOverlayInstance overlay; private NetworkLoadout networkLoadout; private bool active; public float castDuration = 1.2f; public float maxDistance = Configs.veilBaseMaxDistance.Value; public float maxAngle = 20f; public float buffMaxDistance = Configs.veilBuffBaseMaxDistance.Value; public Indicator indicator; public SpriteRenderer sprite; private AnimationCurve curve = AnimationCurve.EaseInOut(0f, 0f, 1f, 0f); private void Awake() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown body = ((Component)this).GetComponent<CharacterBody>(); indicator = new Indicator(((Component)this).gameObject, Prefabs.allyIndicator); } private void Active() { active = body.skillLocator.utility.skillNameToken == "SEEKERTWEAKS_UTIL2"; } private void Start() { curve.AddKey(0.5f, 1f); indicator.active = true; LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); NetworkUser val = ((firstLocalUser != null) ? firstLocalUser.currentNetworkUser : null); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.networkLoadout)) { networkLoadout = val.networkLoadout; networkLoadout.onLoadoutUpdated += Active; } Active(); } private void OnDisable() { if (Object.op_Implicit((Object)(object)networkLoadout)) { networkLoadout.onLoadoutUpdated -= Active; } } private void FixedUpdate() { //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: 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) if (active) { if (!Object.op_Implicit((Object)(object)sprite) && Object.op_Implicit((Object)(object)indicator.visualizerInstance)) { sprite = indicator.visualizerInstance.GetComponentInChildren<SpriteRenderer>(); } if (Object.op_Implicit((Object)(object)target) && Object.op_Implicit((Object)(object)sprite)) { float num = Vector3.Distance(target.transform.position, body.transform.position); float num2 = maxDistance + buffMaxDistance * 6f; float num3 = Util.Remap((num2 - num) / num2, 0f, 1f, 0.02f, 0.17f); ((Component)sprite).transform.localPosition = Vector3.up * num3; } stopwatch += Time.fixedDeltaTime; if (stopwatch >= 0.1f) { stopwatch = 0f; SearchForTarget(body.inputBank.GetAimRay()); } } } private void SearchForTarget(Ray aimRay) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: 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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) search.teamMaskFilter = TeamMask.none; ((TeamMask)(ref search.teamMaskFilter)).AddTeam(body.teamComponent.teamIndex); search.filterByLoS = false; search.searchOrigin = ((Ray)(ref aimRay)).origin; search.searchDirection = ((Ray)(ref aimRay)).direction; search.sortMode = (SortMode)3; search.maxDistanceFilter = maxDistance + buffMaxDistance * (float)body.GetBuffCount(Buffs.ChakraBuff); search.maxAngleFilter = maxAngle; search.RefreshCandidates(); search.FilterOutGameObject(((Component)this).gameObject); HurtBox val = search.GetResults().FirstOrDefault(); if (Object.op_Implicit((Object)(object)val)) { Sprite value = null; if (Prefabs.bodyIcons.TryGetValue(val.healthComponent.body.baseNameToken, out value)) { indicator.targetTransform = ((Component)val).transform; sprite.sprite = value; } lastTarget = target; target = val.healthComponent.body; if (Object.op_Implicit((Object)(object)lastTarget) && !((Object)(object)lastTarget != (Object)(object)target)) { return; } if (overlay != null) { overlay.CleanupEffect(); } if (Object.op_Implicit((Object)(object)val.healthComponent.body.modelLocator.modelTransform)) { CharacterModel component = ((Component)val.healthComponent.body.modelLocator.modelTransform).GetComponent<CharacterModel>(); if (Object.op_Implicit((Object)(object)component)) { overlay = TemporaryOverlayManager.AddOverlay(((Component)component).gameObject); overlay.duration = 9999f; overlay.originalMaterial = Prefabs.tpTargetMat; overlay.animateShaderAlpha = false; overlay.destroyComponentOnEnd = true; overlay.inspectorCharacterModel = component; overlay.AddToCharacterModel(component); } } } else { indicator.targetTransform = null; lastTarget = null; target = null; if (overlay != null) { overlay.CleanupEffect(); } } } } internal class AutoCastBehaviour : MonoBehaviour { private SeekerController controller; private SkillLocator skillLocator; private bool spiralSelected; private NetworkLoadout networkLoadout; private void Awake() { skillLocator = ((Component)this).GetComponent<SkillLocator>(); controller = ((Component)this).GetComponent<SeekerController>(); } private void Start() { if (Object.op_Implicit((Object)(object)skillLocator)) { LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); NetworkUser val = ((firstLocalUser != null) ? firstLocalUser.currentNetworkUser : null); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.networkLoadout)) { networkLoadout = val.networkLoadout; networkLoadout.onLoadoutUpdated += NetworkLoadout_onLoadoutUpdated; } spiralSelected = skillLocator.secondary.skillNameToken == "SEEKER_SECONDARY_ALT1_NAME"; } } private void NetworkLoadout_onLoadoutUpdated() { spiralSelected = skillLocator.secondary.skillNameToken == "SEEKER_SECONDARY_ALT1_NAME"; } private void FixedUpdate() { if (Object.op_Implicit((Object)(object)skillLocator) && spiralSelected && Object.op_Implicit((Object)(object)controller) && skillLocator.secondary.CanExecute() && (controller.soulSpiralManager == null || controller.soulSpiralManager.soulSpiralArray.Length < controller.soulSpiralManager.soulSpiralLimit)) { skillLocator.secondary.ExecuteIfReady(); } } } internal class HealingBeamBehaviour : MonoBehaviour { public GameObject owner; public TeamIndex teamIndex; public float healAmount; private float stopwatch; private int hitsPerSec = 6; public float radius = 0.5f; public float maxDistance = 4f; private void FixedUpdate() { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: 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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Expected O, but got Unknown //IL_016a: Expected O, but got Unknown //IL_016b: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } stopwatch += Time.fixedDeltaTime; if (!(stopwatch >= 1f / (float)hitsPerSec)) { return; } stopwatch = 0f; BulletAttack val = new BulletAttack { bulletCount = 1u, aimVector = Vector3.up, origin = ((Component)this).transform.position, damage = 0f, damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.op_Implicit((DamageType)0), falloffModel = (FalloffModel)1, maxDistance = maxDistance, force = 0f, hitMask = CommonMasks.bullet, minSpread = 0f, maxSpread = 0f, isCrit = false, owner = null, muzzleName = "", smartCollision = false, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = radius, sniper = false, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask, weapon = null, tracerEffectPrefab = null, spreadPitchScale = 1f, spreadYawScale = 1f, hitEffectPrefab = null, hitCallback = (HitCallback)delegate(BulletAttack _bulletAttack, ref BulletHit info) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)info.hitHurtBox) && Object.op_Implicit((Object)(object)info.hitHurtBox.healthComponent) && info.hitHurtBox.healthComponent.body.teamComponent.teamIndex == teamIndex) { info.hitHurtBox.healthComponent.Heal(healAmount / (float)hitsPerSec, default(ProcChainMask), true); EffectManager.SimpleEffect(Prefabs.Load<GameObject>("RoR2/Base/Medkit/MedkitHealEffect.prefab"), info.hitHurtBox.healthComponent.body.corePosition, Quaternion.identity, true); } return BulletAttack.defaultHitCallback.Invoke(_bulletAttack, ref info); } }; DamageAPI.AddModdedDamageType(val, Prefabs.noHit); val.Fire(); } } internal class DamagingBeamBehaviour : MonoBehaviour { public GameObject owner; public float damage; public bool crit; public TeamIndex teamIndex; private float stopwatch; public int hitsPerSec = 6; public float radius = 2f; public float maxDistance = 22f; public float force = 120f; private void FixedUpdate() { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: 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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0112: 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_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0136: 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_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { stopwatch += Time.fixedDeltaTime; if (stopwatch >= 1f / (float)hitsPerSec) { stopwatch = 0f; new BulletAttack { bulletCount = 1u, aimVector = Vector3.up, origin = ((Component)this).transform.position, damage = damage / (float)hitsPerSec, damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.op_Implicit((DamageType)0), falloffModel = (FalloffModel)1, maxDistance = maxDistance, force = force, hitMask = CommonMasks.bullet, minSpread = 0f, maxSpread = 0f, isCrit = crit, owner = owner, muzzleName = "", smartCollision = true, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = radius, sniper = false, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask, weapon = null, tracerEffectPrefab = null, spreadPitchScale = 1f, spreadYawScale = 1f, hitEffectPrefab = Prefabs.beamHitEffect }.Fire(); } } } } internal class DestroyOnDistanceReach : MonoBehaviour { public Transform target; public float maxDistance = 35f; private void FixedUpdate() { //IL_0007: 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) if (Vector3.Distance(((Component)this).transform.position, target.position) <= maxDistance) { Object.Destroy((Object)(object)((Component)this).gameObject); } } } internal class MantraStacks : MonoBehaviour { public int stacks = 0; public CharacterBody ownerBody; } internal class PetalTracker : MonoBehaviour { private HudElement hudElement; private SeekerController controller; private float stopwatch = 0.1f; public Image[] dots; private Color color => (controller.currentChakraGate == 7) ? Color32.op_Implicit(new Color32((byte)59, (byte)243, (byte)173, byte.MaxValue)) : Color.white; private void Awake() { hudElement = ((Component)this).GetComponent<HudElement>(); } private void FixedUpdate() { //IL_00be: Unknown result type (might be due to invalid IL or missing references) stopwatch += Time.fixedDeltaTime; if (!Object.op_Implicit((Object)(object)controller) && Object.op_Implicit((Object)(object)hudElement) && Object.op_Implicit((Object)(object)hudElement.targetBodyObject)) { controller = hudElement.targetBodyObject.GetComponent<SeekerController>(); } else { if (!(stopwatch >= 0.1f) || !Util.HasEffectiveAuthority(hudElement.targetBodyObject)) { return; } stopwatch = 0f; for (int i = 0; i < dots.Length; i++) { bool active = false; if (i <= controller.currentChakraGate - 1) { active = true; } ((Graphic)dots[i]).color = color; ((Component)dots[i]).gameObject.SetActive(active); } } } } internal class SeekerTracker : HuntressTracker { private NetworkLoadout networkLoadout; private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown base.indicator = new Indicator(((Component)this).gameObject, Prefabs.trackingIndicator); } private void Active() { base.indicator.active = base.characterBody.skillLocator.primary.skillNameToken == "SEEKERTWEAKS_PRIMARY"; } private void Start() { ((HuntressTracker)this).Start(); LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); NetworkUser val = ((firstLocalUser != null) ? firstLocalUser.currentNetworkUser : null); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.networkLoadout)) { networkLoadout = val.networkLoadout; networkLoadout.onLoadoutUpdated += Active; } Active(); } private void OnDisable() { if (Object.op_Implicit((Object)(object)networkLoadout)) { networkLoadout.onLoadoutUpdated -= Active; } ((HuntressTracker)this).OnDisable(); } } internal class SeekerTweakBehaviour : MonoBehaviour { public SeekerController controller; public string sound = "Play_seeker_skill4_win"; private void Awake() { controller = ((Component)this).GetComponent<SeekerController>(); } private void OnEnable() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown int value = Configs.spiralLimit.Value; if (value != 6) { controller.soulSpiralManager = new SeekerSoulSpiralManager(controller); int num = value; controller.soulSpiralManager.soulSpiralLimit = num; controller.soulSpiralManager.soulSpiralArray = (SoulSpiralProjectile[])(object)new SoulSpiralProjectile[num * 2]; } } } internal class SojournIndicatorBehaviour : MonoBehaviour { public Image upper; private float stopwatch; public float duration = 2f; private void Start() { upper.type = (Type)3; upper.fillOrigin = 1; upper.fillAmount = 0f; } private void FixedUpdate() { stopwatch += Time.fixedDeltaTime; upper.fillAmount = stopwatch / duration; } } internal class SoulSpiralTracker : MonoBehaviour { private SoulSpiralProjectile projectile; private ProjectileController controller; public GameObject owner; public CharacterBody ownerBody; private void Awake() { projectile = ((Component)this).GetComponent<SoulSpiralProjectile>(); controller = ((Component)this).GetComponent<ProjectileController>(); } private void OnEnable() { InstanceTracker.Add<SoulSpiralTracker>(this); } private void Start() { owner = controller.owner; ownerBody = (Object.op_Implicit((Object)(object)owner) ? owner.GetComponent<CharacterBody>() : null); UpdateProjectile(owner); } private void FixedUpdate() { if (Object.op_Implicit((Object)(object)ownerBody) && Object.op_Implicit((Object)(object)projectile)) { projectile.easeInDuration /= ownerBody.attackSpeed; } } public void UpdateProjectile(GameObject owner) { //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)owner)) { Debug.LogWarning((object)("no owner: " + ((Object)this).name)); return; } List<SoulSpiralTracker> instancesList = InstanceTracker.GetInstancesList<SoulSpiralTracker>(); if (instancesList == null || instancesList.Count <= 0) { return; } SoulSpiralTracker[] array = instancesList.Where((SoulSpiralTracker x) => Object.op_Implicit((Object)(object)x.owner) && (Object)(object)x.owner == (Object)(object)owner).ToArray(); if (array == null || array.Length == 0) { return; } float value = Configs.spiralRadius.Value; bool flag = value != 4.75f; bool flag2 = Configs.spiralLimit.Value != 6; float num = 360f / (float)array.Length; Vector3 val = Vector3.ProjectOnPlane(owner.transform.forward, Vector3.up); for (int i = 0; i < array.Length; i++) { if (flag2) { Vector3 initialRadialDirection = Quaternion.AngleAxis(num * (float)(i + 1), Vector3.up) * val; array[i].projectile.initialRadialDirection = initialRadialDirection; } if (flag) { array[i].projectile.radius = value; } } } private void OnDisable() { InstanceTracker.Remove<SoulSpiralTracker>(this); UpdateProjectile(owner); } } internal class VehicleTimer : MonoBehaviour { public float duration = 4f; private VehicleSeat vehicle; private float stopwatch; private void Awake() { vehicle = ((Component)this).GetComponent<VehicleSeat>(); } private void FixedUpdate() { stopwatch += Time.fixedDeltaTime; if (stopwatch >= duration && NetworkServer.active) { vehicle.EjectPassenger(); } } } internal class Configs { internal static ConfigFile config; internal static ConfigEntry<bool> addAlts; internal static ConfigEntry<bool> canInterrupt; internal static ConfigEntry<bool> petalIndicatorReplacer; internal static ConfigEntry<bool> targetedHand; internal static ConfigEntry<int> spiralLimit; internal static ConfigEntry<bool> autoCastSpiral; internal static ConfigEntry<bool> spiralSpeedScaling; internal static ConfigEntry<float> spiralRadius; internal static ConfigEntry<bool> spiralSmallHop; internal static ConfigEntry<float> spiralSmallHopAmount; internal static ConfigEntry<bool> spiralSmallHopWhileGrounded; internal static ConfigEntry<bool> sojournTimer; internal static ConfigEntry<bool> castSecondary; internal static ConfigEntry<bool> castSpecial; internal static ConfigEntry<bool> wasdMovement; internal static ConfigEntry<bool> noMinigame; internal static ConfigEntry<bool> minigameRevive; internal static ConfigEntry<float> spiritSojournDuration; internal static ConfigEntry<float> spiritSojournBuffDuration; internal static ConfigEntry<float> spiritSojournBaseSpeed; internal static ConfigEntry<float> spiritSojournBuffBaseSpeed; internal static ConfigEntry<float> rayDamage; internal static ConfigEntry<float> rayExplosionDamage; internal static ConfigEntry<float> rayExplosionBuffDamage; internal static ConfigEntry<float> rayFireRate; internal static ConfigEntry<float> rayHealAmount; internal static ConfigEntry<float> veilBarrierAmount; internal static ConfigEntry<float> veilBuffBarrierAmount; internal static ConfigEntry<float> veilBaseMaxDistance; internal static ConfigEntry<float> veilBuffBaseMaxDistance; internal static ConfigEntry<float> skyBeamDamageCoefficient; internal static ConfigEntry<float> skyBeamBuffDamageCoefficient; internal static ConfigEntry<float> skyBeamHealCoefficient; internal static ConfigEntry<float> skyBeamBuffHealCoefficient; internal static ConfigEntry<float> skyBeamRadius; internal static void Init() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown config = new ConfigFile(Paths.ConfigPath + "\\com.Dragonyck.SeekerTweaks.cfg", true); string text = "01 - General"; addAlts = config.Bind<bool>(text, "Add Alt Skills", true, (ConfigDescription)null); canInterrupt = config.Bind<bool>(text, "Spirit Punch Is Interruptable", true, "Enables all skills to be activatable during Spirit Punch."); petalIndicatorReplacer = config.Bind<bool>(text, "HG Style Petal Counter", true, (ConfigDescription)null); string text2 = "02 - Unseen Hand"; targetedHand = config.Bind<bool>(text2, "Targeted Unseen Hand", true, "Can be cast by aiming directly at an enemy. It places the projectile on the ground below the target, *if* it has enough range to reach it, otherwise it will be placed directly on the target."); string text3 = "03 - Soul Spiral"; spiralLimit = config.Bind<int>(text3, "Soul Spiral Limit", 999, "Default is 6"); autoCastSpiral = config.Bind<bool>(text3, "Auto Cast Soul Spiral", true, (ConfigDescription)null); spiralSpeedScaling = config.Bind<bool>(text3, "Soul Spiral Orbiting Speed Scale w/ Attack Speed", true, (ConfigDescription)null); spiralRadius = config.Bind<float>(text3, "Soul Spiral Orbiting Radius", 6f, "Default is 4.75"); spiralSmallHop = config.Bind<bool>(text3, "Soul Spiral Hop On Hit", true, (ConfigDescription)null); spiralSmallHopAmount = config.Bind<float>(text3, "Soul Spiral Hop Amount", 4f, (ConfigDescription)null); spiralSmallHopWhileGrounded = config.Bind<bool>(text3, "Soul Spiral Hop While Grounded", false, "Needs Soul Spiral Hop On Hit to be enabled."); string text4 = "04 - Sojourn"; sojournTimer = config.Bind<bool>(text4, "Sojourn Timer On Crosshair", true, (ConfigDescription)null); castSecondary = config.Bind<bool>(text4, "Cast Secondary While In Sojourn", true, (ConfigDescription)null); castSpecial = config.Bind<bool>(text4, "Cast Special While In Sojourn", true, (ConfigDescription)null); wasdMovement = config.Bind<bool>(text4, "Directional Input Movement Sojourn", true, "Aim up/down, directional input for movement."); string text5 = "05 - Meditate"; noMinigame = config.Bind<bool>(text5, "No Meditate QTE", true, "Functions like usual, but lets you move and removes the minigame."); minigameRevive = config.Bind<bool>(text5, "QTE On Revive", true, "Enables minigame for the revive only. Requires No Minigame to be enabled."); string text6 = "06 - Sojourn Spirit"; spiritSojournDuration = config.Bind<float>(text6, "Sojourn Spirit Duration", 3.5f, (ConfigDescription)null); spiritSojournBuffDuration = config.Bind<float>(text6, "Sojourn Spirit Additional Duration Per Tranquility", 0.5f, (ConfigDescription)null); spiritSojournBaseSpeed = config.Bind<float>(text6, "Sojourn Spirit Base Speed", 15f, (ConfigDescription)null); spiritSojournBuffBaseSpeed = config.Bind<float>(text6, "Sojourn Spirit Additional Base Speed Per Tranquility", 2.5f, (ConfigDescription)null); string text7 = "07 - Mantra Ray"; rayDamage = config.Bind<float>(text7, "Mantra Ray Damage Coefficient", 0.9f, (ConfigDescription)null); rayExplosionDamage = config.Bind<float>(text7, "Mantra Ray Explosion Damage Coefficient", 2f, (ConfigDescription)null); rayExplosionBuffDamage = config.Bind<float>(text7, "Mantra Ray Additional Explosion Damage Coefficient Per Tranquility", 0.2f, (ConfigDescription)null); rayFireRate = config.Bind<float>(text7, "Mantra Ray Fire Interval", 0.25f, (ConfigDescription)null); rayHealAmount = config.Bind<float>(text7, "Mantra Ray Explosion Heal Coefficient", 0.02f, (ConfigDescription)null); string text8 = "08 - SpiritVeil"; veilBarrierAmount = config.Bind<float>(text8, "Spirit Veil Barrier Coefficient", 0.2f, (ConfigDescription)null); veilBuffBarrierAmount = config.Bind<float>(text8, "Spirit Veil Additional Barrier Coefficient Per Tranquility", 0.05f, (ConfigDescription)null); veilBaseMaxDistance = config.Bind<float>(text8, "Spirit Veil Base Max Distance", 70f, (ConfigDescription)null); veilBuffBaseMaxDistance = config.Bind<float>(text8, "Spirit Veil Additional Base Max Distance Per Tranquility", 15f, (ConfigDescription)null); string text9 = "09 - Dhamma"; skyBeamDamageCoefficient = config.Bind<float>(text9, "Dhamma Damage Coefficient", 4f, "Damage Per Second"); skyBeamBuffDamageCoefficient = config.Bind<float>(text9, "Dhamma Additional Damage Coefficient Per Tranquility", 0.35f, "Additional Damage Per Second"); skyBeamHealCoefficient = config.Bind<float>(text9, "Dhamma Heal Coefficient", 0.05f, "Total Heal Max HP Per Second"); skyBeamBuffHealCoefficient = config.Bind<float>(text9, "Dhamma Additional Heal Coefficient Per Tranquility", 0.025f, "Additional Total Heal Max HP Per Second"); skyBeamRadius = config.Bind<float>(text9, "Dhamma Radius", 35f, (ConfigDescription)null); } } internal class TravelSojourn : Sojourn { private float skillDuration; private GameObject indicator; private SojournVehicle vehicle; private float stopwatch; private bool triggeredExit; public override void OnEnter() { //IL_00a9: Unknown result type (might be due to invalid IL or missing references) ((Sojourn)this).OnEnter(); skillDuration = Configs.spiritSojournDuration.Value + Configs.spiritSojournBuffDuration.Value * (float)((EntityState)this).characterBody.GetBuffCount(Buffs.ChakraBuff); base.vehiclePrefab = Prefabs.vehiclePrefab; Debug.LogWarning((object)base.vehiclePrefab); if (((EntityState)this).isAuthority && Configs.sojournTimer.Value) { CrosshairManager val = CrosshairManager.instancesList.Find((CrosshairManager x) => (Object)(object)x.crosshairHudElement.targetBodyObject == (Object)(object)((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)val)) { indicator = Object.Instantiate<GameObject>(Prefabs.sojournIndicator, (Transform)(object)val.container); indicator.transform.localPosition = Vector3.zero; indicator.GetComponent<SojournIndicatorBehaviour>().duration = skillDuration; } } if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.HiddenInvincibility); } } public override void Update() { ((EntityState)this).Update(); if (Configs.castSecondary.Value && ((ButtonState)(ref ((EntityState)this).inputBank.skill2)).justPressed && ((EntityState)this).skillLocator.secondary.CanExecute()) { ((EntityState)this).skillLocator.secondary.ExecuteIfReady(); } if (Configs.castSpecial.Value && ((ButtonState)(ref ((EntityState)this).inputBank.skill4)).justPressed && ((EntityState)this).skillLocator.special.CanExecute()) { ((EntityState)this).skillLocator.special.ExecuteIfReady(); } } public override void FixedUpdate() { ((Sojourn)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (!Object.op_Implicit((Object)(object)vehicle) && (Object)(object)((EntityState)this).characterBody.currentVehicle != (Object)null) { vehicle = ((Component)((EntityState)this).characterBody.currentVehicle).GetComponent<SojournVehicle>(); } if (Object.op_Implicit((Object)(object)vehicle) && stopwatch >= 0.1f) { stopwatch = 0f; vehicle.currentSpeed = Configs.spiritSojournBaseSpeed.Value + Configs.spiritSojournBuffBaseSpeed.Value * (float)((EntityState)this).characterBody.GetBuffCount(Buffs.ChakraBuff); } if (NetworkServer.active && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.currentVehicle) && ((EntityState)this).fixedAge >= skillDuration && !triggeredExit) { ((EntityState)this).characterBody.currentVehicle.SetPassenger((GameObject)null); } if (((EntityState)this).isAuthority && base.seekerController.doesExitVehicle) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(Buffs.HiddenInvincibility); } if (Object.op_Implicit((Object)(object)indicator)) { EntityState.Destroy((Object)(object)indicator); } ((Sojourn)this).OnExit(); } } internal class BetterSojourn : Sojourn { private GameObject indicator; public override void OnEnter() { //IL_0075: Unknown result type (might be due to invalid IL or missing references) ((Sojourn)this).OnEnter(); base.vehiclePrefab = Prefabs.Load<GameObject>("RoR2/DLC2/Seeker/SojournVehicle/SojournVehicle.prefab"); if (((EntityState)this).isAuthority && Configs.sojournTimer.Value) { CrosshairManager val = CrosshairManager.instancesList.Find((CrosshairManager x) => (Object)(object)x.crosshairHudElement.targetBodyObject == (Object)(object)((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)val)) { indicator = Object.Instantiate<GameObject>(Prefabs.sojournIndicator, (Transform)(object)val.container); indicator.transform.localPosition = Vector3.zero; } } } public override void Update() { ((EntityState)this).Update(); if (Configs.castSecondary.Value && ((ButtonState)(ref ((EntityState)this).inputBank.skill2)).justPressed && ((EntityState)this).skillLocator.secondary.CanExecute()) { ((EntityState)this).skillLocator.secondary.ExecuteIfReady(); } if (Configs.castSpecial.Value && ((ButtonState)(ref ((EntityState)this).inputBank.skill4)).justPressed && ((EntityState)this).skillLocator.special.CanExecute()) { ((EntityState)this).skillLocator.special.ExecuteIfReady(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)indicator)) { EntityState.Destroy((Object)(object)indicator); } ((Sojourn)this).OnExit(); } } internal class SkyBeam : BaseSkillState { private SeekerController controller; private Dictionary<CharacterBody, GameObject> enemyIndicators = new Dictionary<CharacterBody, GameObject>(); private Dictionary<CharacterBody, GameObject> allyIndicators = new Dictionary<CharacterBody, GameObject>(); private AimRequest request; public override void OnEnter() { ((BaseState)this).OnEnter(); controller = ((EntityState)this).GetComponent<SeekerController>(); ((EntityState)this).PlayAnimation("Gesture, Override", "SojournEnterTransform", "SojournEnterTransform.playbackRate", 0.5f, 0f); request = ((EntityState)this).cameraTargetParams.RequestAimType((AimType)5); ((EntityState)this).GetModelAnimator().SetLayerWeight(6, 0.5f); AkSoundEngine.PostEvent("Play_seeker_skill4_timeout", ((EntityState)this).gameObject); } private void UpdateAreaIndicators() { //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_000f: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: 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_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) TeamMask none = TeamMask.none; ((TeamMask)(ref none)).AddTeam(((EntityState)this).teamComponent.teamIndex); TeamMask enemyTeams = TeamMask.GetEnemyTeams(((EntityState)this).teamComponent.teamIndex); GameObject value = null; float value2 = Configs.skyBeamRadius.Value; bool flag = ((EntityState)this).characterBody.HasBuff(Buffs.RevitalizeBuff); foreach (CharacterBody instances in CharacterBody.instancesList) { bool flag2 = Vector3.Distance(instances.transform.position, ((EntityState)this).transform.position) <= value2; if ((Object)(object)instances != (Object)(object)((EntityState)this).characterBody && ((TeamMask)(ref enemyTeams)).HasTeam(instances.teamComponent.teamIndex)) { if (!enemyIndicators.TryGetValue(instances, out value) && flag2) { enemyIndicators.Add(instances, Object.Instantiate<GameObject>(Prefabs.skyBeamAreaIndicator, instances.footPosition, Quaternion.identity, instances.transform)); } else if (Object.op_Implicit((Object)(object)value) && !flag2) { enemyIndicators.Remove(instances); EntityState.Destroy((Object)(object)value); } } else { if (!((TeamMask)(ref none)).HasTeam(((EntityState)this).teamComponent.teamIndex)) { continue; } if (!allyIndicators.TryGetValue(instances, out value)) { if (flag2 || flag) { allyIndicators.Add(instances, Object.Instantiate<GameObject>(Prefabs.skyBeamHealingAreaIndicator, instances.footPosition, Quaternion.identity, instances.transform)); } } else if (Object.op_Implicit((Object)(object)value) && !flag2 && !flag) { allyIndicators.Remove(instances); EntityState.Destroy((Object)(object)value); } } } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.1f) { ((EntityState)this).fixedAge = 0f; UpdateAreaIndicators(); } if (((EntityState)this).isAuthority && !((BaseSkillState)this).IsKeyDownAuthority()) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_0233: 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) AkSoundEngine.PostEvent("Play_seeker_skill4_win", ((EntityState)this).gameObject); AkSoundEngine.PostEvent("Play_seeker_skill3_explo", ((EntityState)this).gameObject); ((EntityState)this).GetModelAnimator().SetLayerWeight(6, 1f); if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { request.Dispose(); } int buffCount = ((EntityState)this).characterBody.GetBuffCount(Buffs.ChakraBuff); bool flag = ((EntityState)this).characterBody.HasBuff(Buffs.RevitalizeBuff); foreach (KeyValuePair<CharacterBody, GameObject> enemyIndicator in enemyIndicators) { CharacterBody key = enemyIndicator.Key; GameObject value = enemyIndicator.Value; if (Object.op_Implicit((Object)(object)value)) { GameObject val = Object.Instantiate<GameObject>(Prefabs.skyBeamBeam, key.footPosition, Quaternion.Euler(Vector3.right * -90f), key.transform); if (NetworkServer.active) { DamagingBeamBehaviour damagingBeamBehaviour = val.AddComponent<DamagingBeamBehaviour>(); damagingBeamBehaviour.owner = ((EntityState)this).gameObject; damagingBeamBehaviour.damage = ((BaseState)this).damageStat * (Configs.skyBeamDamageCoefficient.Value + (float)buffCount * Configs.skyBeamBuffDamageCoefficient.Value); damagingBeamBehaviour.crit = ((BaseState)this).RollCrit(); damagingBeamBehaviour.teamIndex = ((EntityState)this).teamComponent.teamIndex; } EntityState.Destroy((Object)(object)value); } } foreach (KeyValuePair<CharacterBody, GameObject> allyIndicator in allyIndicators) { CharacterBody key2 = allyIndicator.Key; GameObject value2 = allyIndicator.Value; if (Object.op_Implicit((Object)(object)value2)) { GameObject val2 = Object.Instantiate<GameObject>(Prefabs.skyHealingBeamBeam, key2.footPosition, Quaternion.Euler(Vector3.right * -90f), key2.transform); if (NetworkServer.active) { HealingBeamBehaviour healingBeamBehaviour = val2.AddComponent<HealingBeamBehaviour>(); healingBeamBehaviour.owner = ((EntityState)this).gameObject; healingBeamBehaviour.healAmount = ((EntityState)this).healthComponent.fullCombinedHealth * (Configs.skyBeamHealCoefficient.Value + (float)buffCount * Configs.skyBeamBuffHealCoefficient.Value); healingBeamBehaviour.teamIndex = ((EntityState)this).teamComponent.teamIndex; } EntityState.Destroy((Object)(object)value2); } } if (NetworkServer.active) { if (!flag) { if (buffCount < 6) { ((EntityState)this).characterBody.AddBuff(Buffs.ChakraBuff); controller.currentChakraGate = (byte)(buffCount + 1); } else { ((EntityState)this).characterBody.AddBuff(Buffs.RevitalizeBuff); controller.currentChakraGate = 7; } } else { controller.currentChakraGate = 0; ((EntityState)this).characterBody.RemoveBuff(Buffs.RevitalizeBuff); for (int i = 0; i < 6; i++) { ((EntityState)this).characterBody.RemoveBuff(Buffs.ChakraBuff); } } Debug.LogWarning((object)controller.currentChakraGate); controller.CallRpcSetPedalsValue(controller.currentChakraGate); } ((EntityState)this).PlayAnimation("Gesture, Override", "SoulSpiralFinish"); ((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)4; } } internal class SpiritRay : BaseSkillState { private float fireRate; private float baseFireRate = Configs.rayFireRate.Value; private Transform muzzle; private BezierCurveLine beamEffect; private CharacterBody cachedBody; private Animator animator; private float startupDuration = 0.5f; private float stopwatch; private SeekerTracker tracker; private float damageCoefficient = Configs.rayDamage.Value; private float explosionDamageCoefficient = Configs.rayExplosionDamage.Value; private GameObject muzzleEffect; private float downPos = 1.8f; private float backPos = 0.3f; private uint ID; private bool soundLoop; private bool pLaYiTagAin; public override void OnEnter() { ((BaseState)this).OnEnter(); Configs.config.Reload(); tracker = ((EntityState)this).GetComponent<SeekerTracker>(); startupDuration /= ((BaseState)this).attackSpeedStat; cachedBody = ((HuntressTracker)tracker).trackingTarget.healthComponent.body; ((EntityState)this).PlayAnimation("Gesture, Override", "TargetHeal"); animator = ((EntityState)this).GetModelAnimator(); muzzle = ((Component)animator).GetComponent<ChildLocator>().FindChild("MuzzleEnergyBomb"); ((EntityState)this).PlayCrossfade("Gesture, Additive", "SpiritPunchFinisher", "FireGauntlet.playbackRate", startupDuration, 0.025f); ((EntityState)this).PlayCrossfade("Gesture, Override", "SpiritPunchFinisher", "FireGauntlet.playbackRate", startupDuration, 0.025f); AkSoundEngine.PostEvent(Sounds.Play_SeekerTweaks_Beam_Start, ((EntityState)this).gameObject); } private void InstantiateBeamEffect() { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_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_006c: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)beamEffect) && Object.op_Implicit((Object)(object)cachedBody) && Object.op_Implicit((Object)(object)((Component)((HuntressTracker)tracker).trackingTarget).transform)) { beamEffect = Object.Instantiate<GameObject>(Prefabs.beamEffect, muzzle.position + -((EntityState)this).characterDirection.forward * backPos + Vector3.down * downPos, Quaternion.identity, muzzle).GetComponent<BezierCurveLine>(); beamEffect.endTransform = ((Component)((HuntressTracker)tracker).trackingTarget).transform; if (!Object.op_Implicit((Object)(object)muzzleEffect)) { muzzleEffect = Object.Instantiate<GameObject>(Prefabs.muzzleEffect, muzzle.position + -((EntityState)this).characterDirection.forward * backPos + Vector3.down * downPos, Quaternion.identity, muzzle); } } } public override void Update() { ((EntityState)this).Update(); if (Object.op_Implicit((Object)(object)cachedBody)) { if (Object.op_Implicit((Object)(object)beamEffect) && Object.op_Implicit((Object)(object)beamEffect.endTransform) && Object.op_Implicit((Object)(object)((HuntressTracker)tracker).trackingTarget) && (Object)(object)beamEffect.endTransform != (Object)(object)((HuntressTracker)tracker).trackingTarget) { beamEffect.endTransform = ((Component)((HuntressTracker)tracker).trackingTarget).transform; cachedBody = ((HuntressTracker)tracker).trackingTarget.healthComponent.body; } if (!cachedBody.healthComponent.alive || !Object.op_Implicit((Object)(object)((HuntressTracker)tracker).trackingTarget)) { cachedBody = null; } if (!Object.op_Implicit((Object)(object)beamEffect)) { InstantiateBeamEffect(); } return; } if (soundLoop) { soundLoop = false; pLaYiTagAin = true; AkSoundEngine.StopPlayingID(ID); AkSoundEngine.PostEvent(Sounds.Play_SeekerTweaks_Beam_End, ((EntityState)this).gameObject); } if (Object.op_Implicit((Object)(object)beamEffect)) { EntityState.Destroy((Object)(object)((Component)beamEffect).gameObject); } if (Object.op_Implicit((Object)(object)((HuntressTracker)tracker).trackingTarget)) { cachedBody = ((HuntressTracker)tracker).trackingTarget.healthComponent.body; } } public override void FixedUpdate() { //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: 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_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_019c: 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_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Expected O, but got Unknown //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_02a2: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Expected O, but got Unknown //IL_0340: Unknown result type (might be due to invalid IL or missing references) //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_036b: Unknown result type (might be due to invalid IL or missing references) //IL_0379: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); ((BaseState)this).StartAimMode(2f, false); fireRate = baseFireRate / ((BaseState)this).attackSpeedStat; if (((EntityState)this).fixedAge >= startupDuration * 0.9f) { animator.SetFloat("FireGauntlet.playbackRate", 0f); } if (((EntityState)this).isAuthority && !((BaseSkillState)this).IsKeyDownAuthority()) { ((EntityState)this).outer.SetNextStateToMain(); return; } if (((EntityState)this).fixedAge >= startupDuration) { InstantiateBeamEffect(); if (!soundLoop && Object.op_Implicit((Object)(object)cachedBody)) { soundLoop = true; if (pLaYiTagAin) { pLaYiTagAin = false; AkSoundEngine.PostEvent(Sounds.Play_SeekerTweaks_Beam_Start, ((EntityState)this).gameObject); } ID = AkSoundEngine.PostEvent(Sounds.Play_SeekerTweaks_Beam_Loop, ((EntityState)this).gameObject); } stopwatch += Time.fixedDeltaTime; } if (!Object.op_Implicit((Object)(object)cachedBody) || !(stopwatch >= fireRate)) { return; } stopwatch = 0f; AkSoundEngine.PostEvent(Sounds.Play_SeekerTweaks_Beam_Impact, ((EntityState)this).gameObject); if (!NetworkServer.active) { return; } Vector3 corePosition = cachedBody.corePosition; DamageInfo val = new DamageInfo { position = corePosition, attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, crit = ((BaseState)this).RollCrit(), damage = ((BaseState)this).damageStat * (damageCoefficient * fireRate), procCoefficient = 0.65f }; cachedBody.healthComponent.TakeDamage(val); EffectManager.SimpleEffect(Prefabs.beamHitEffect, corePosition, Quaternion.identity, true); if (cachedBody.GetBuffCount(Prefabs.mantra) < 4) { cachedBody.AddTimedBuff(Prefabs.mantra, 10f); return; } MantraStacks mantraStacks = Array.Find(((Component)cachedBody).GetComponents<MantraStacks>(), (MantraStacks x) => (Object)(object)x != (Object)null && (Object)(object)x.ownerBody == (Object)(object)((EntityState)this).characterBody); if (!Object.op_Implicit((Object)(object)mantraStacks)) { mantraStacks = ((Component)cachedBody).gameObject.AddComponent<MantraStacks>(); mantraStacks.ownerBody = ((EntityState)this).characterBody; } mantraStacks.stacks++; cachedBody.ClearTimedBuffs(Prefabs.mantra); float num = 3.5f; BlastAttack val2 = new BlastAttack { position = corePosition, attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, crit = ((BaseState)this).RollCrit(), baseDamage = ((BaseState)this).damageStat * (explosionDamageCoefficient + Configs.rayExplosionBuffDamage.Value * (float)((EntityState)this).characterBody.GetBuffCount(Buffs.ChakraBuff)), procCoefficient = 0.35f, attackerFiltering = (AttackerFiltering)2, radius = num, teamIndex = ((EntityState)this).teamComponent.teamIndex, falloffModel = (FalloffModel)0, damageColorIndex = (DamageColorIndex)3 }; DamageAPI.AddModdedDamageType(val2, Prefabs.explosion); val2.Fire(); EffectManager.SpawnEffect(Prefabs.Load<GameObject>("RoR2/DLC2/Seeker/SoulSearchExplosionVFX.prefab"), new EffectData { origin = corePosition, scale = num }, true); } public override void OnExit() { AkSoundEngine.StopPlayingID(ID); AkSoundEngine.PostEvent(Sounds.Play_SeekerTweaks_Beam_End, ((EntityState)this).gameObject); animator.SetFloat("FireGauntlet.playbackRate", 1f); if (Object.op_Implicit((Object)(object)muzzleEffect)) { EntityState.Destroy((Object)(object)muzzleEffect); } if (Object.op_Implicit((Object)(object)beamEffect)) { EntityState.Destroy((Object)(object)((Component)beamEffect).gameObject); } animator.SetTrigger("trigger"); ((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)2; } } internal class SpiritVeil : BaseSkillState { private Transform target; private CharacterBody targetBody; private Vector3 cachedPos; private float duration; private AllyTracker tracker; private ChildLocator lotusChildLocator; private GameObject lotus; private uint ID; private NetworkedBodyAttachment attachment; public override void OnEnter() { ((BaseState)this).OnEnter(); tracker = ((EntityState)this).GetComponent<AllyTracker>(); targetBody = tracker.target; target = targetBody.transform; duration = tracker.castDuration; ((EntityState)this).PlayAnimation("Body", "Idle"); ((EntityState)this).PlayAnimation("FullBody, Override", "MeditationStart", "Meditation.playbackRate", duration, 0f); lotusChildLocator = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>(); lotus = Object.Instantiate<GameObject>(Prefabs.Load<GameObject>("RoR2/DLC2/Seeker/MeditateLotusVFX.prefab"), lotusChildLocator.FindChild("Lotus"), false); lotus.GetComponentInChildren<Animator>().Play("MeditationSuccess"); ID = Util.PlaySound("Play_seeker_skill2_start", ((EntityState)this).gameObject); if (NetworkServer.active) { attachment = Object.Instantiate<GameObject>(Prefabs.shieldAttachment).GetComponent<NetworkedBodyAttachment>(); attachment.AttachToGameObjectAndSpawn(((Component)((EntityState)this).characterBody).gameObject, (string)null); } } public override void FixedUpdate() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)target)) { cachedPos = target.position; } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { TeleportHelper.TeleportBody(((EntityState)this).characterBody, Utils.FindNearestNodePosition(cachedPos, (GraphType)0)); ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown if (NetworkServer.active) { float num = ((EntityState)this).healthComponent.combinedHealth * Configs.veilBarrierAmount.Value + Configs.veilBuffBarrierAmount.Value * (float)((EntityState)this).characterBody.GetBuffCount(Buffs.ChakraBuff); ((EntityState)this).healthComponent.AddBarrier(num); if (Object.op_Implicit((Object)(object)targetBody)) { targetBody.healthComponent.AddBarrier(num); } } ((EntityState)this).PlayAnimation("FullBody, Override", "MeditationSuccess", "Meditation.playbackRate", duration, 0f); Util.PlaySound("Play_seeker_skill4_win", ((EntityState)this).gameObject); AkSoundEngine.StopPlayingID(ID); EffectManager.SpawnEffect(Prefabs.Load<GameObject>("RoR2/DLC2/Seeker/MeditateSuccessVFX.prefab"), new EffectData { origin = ((EntityState)this).characterBody.corePosition }, false); if (Object.op_Implicit((Object)(object)lotus)) { EntityState.Destroy((Object)(object)lotus); } if (Object.op_Implicit((Object)(object)attachment)) { EntityState.Destroy((Object)(object)((Component)attachment).gameObject); } ((EntityState)this).OnExit(); } } internal class Hook { internal static void Hooks() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Expected O, but got Unknown //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Expected O, but got Unknown if (Configs.noMinigame.Value) { MeditationUI.OnEnter += new hook_OnEnter(MeditationUI_OnEnter); } if (Configs.spiralSpeedScaling.Value) { SoulSpiralOrbiter.UpdateCurrentSpeedAndDamage += new hook_UpdateCurrentSpeedAndDamage(SoulSpiralOrbiter_UpdateCurrentSpeedAndDamage); } if (Configs.targetedHand.Value) { UnseenHand.UpdateAreaIndicator += new hook_UpdateAreaIndicator(UnseenHand_UpdateAreaIndicator); } if (Configs.spiralSmallHop.Value) { GlobalEventManager.onClientDamageNotified += GlobalEventManager_onClientDamageNotified; } if (Configs.wasdMovement.Value) { SojournVehicle.FixedUpdateMovement += new hook_FixedUpdateMovement(SojournVehicle_FixedUpdateMovement); } if (Configs.addAlts.Value) { GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); } } private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.noHit)) { damageInfo.rejected = true; } orig.Invoke(self, damageInfo); } private static void GlobalEventManager_onServerDamageDealt(DamageReport damageReport) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)damageReport.attackerBody) && DamageAPI.HasModdedDamageType(damageReport.damageInfo, Prefabs.explosion)) { HealthComponent healthComponent = damageReport.attackerBody.healthComponent; HealOrb val = new HealOrb(); ((Orb)val).origin = damageReport.damageInfo.position; ((Orb)val).target = damageReport.attackerBody.mainHurtBox; val.healValue = healthComponent.fullCombinedHealth * Configs.rayHealAmount.Value; val.overrideDuration = 0.3f; OrbManager.instance.AddOrb((Orb)(object)val); } } private static void MeditationUI_OnEnter(orig_OnEnter orig, MeditationUI self) { orig.Invoke(self); bool value = Configs.minigameRevive.Value; if (!value || (value && !((EntityState)self).characterBody.HasBuff(Buffs.RevitalizeBuff))) { if (self.overlayController != null) { HudOverlayManager.RemoveOverlay(self.overlayController); self.overlayController = null; } self.meditationSuccess = true; self.meditationWrapUp = true; self.spawnedLotus = true; self.lotusChildLocator = ((Component)((EntityState)self).GetModelTransform()).GetComponent<ChildLocator>(); self.lotus = Object.Instantiate<GameObject>(self.lotusPrefab, self.lotusChildLocator.FindChild("Lotus"), false); } } private static void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport) { //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)damageReport.victim) || !Object.op_Implicit((Object)(object)damageReport.victim.body)) { return; } MantraStacks[] components = ((Component)damageReport.victim).GetComponents<MantraStacks>(); MantraStacks[] array = components; foreach (MantraStacks mantraStacks in array) { if (!Object.op_Implicit((Object)(object)mantraStacks.ownerBody)) { continue; } foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { CharacterBody body = instance.body; if (Object.op_Implicit((Object)(object)body) && Vector3.Distance(((Component)damageReport.victim).transform.position, body.transform.position) <= 35f) { HealOrb val = new HealOrb(); ((Orb)val).origin = damageReport.victim.body.corePosition; ((Orb)val).target = damageReport.victim.body.mainHurtBox; val.healValue = mantraStacks.ownerBody.healthComponent.fullCombinedHealth * ((float)mantraStacks.stacks * 0.01f); val.overrideDuration = RoR2Application.rng.RangeFloat(0.3f, 0.75f); OrbManager.instance.AddOrb((Orb)(object)val); } } } } private static void SojournVehicle_FixedUpdateMovement(orig_FixedUpdateMovement orig, SojournVehicle self) { //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: 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_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.vehicleSeat) && Object.op_Implicit((Object)(object)self.vehicleSeat.currentPassengerBody) && (Object)(object)self.vehicleSeat.currentPassengerInputBank != (Object)null) { CharacterBody currentPassengerBody = self.vehicleSeat.currentPassengerBody; CharacterMaster master = currentPassengerBody.master; if (Object.op_Implicit((Object)(object)master.playerCharacterMasterController) && Object.op_Implicit((Object)(object)master.playerCharacterMasterController.networkUser) && master.playerCharacterMasterController.networkUser.inputPlayer != null) { Player inputPlayer = master.playerCharacterMasterController.networkUser.inputPlayer; InputBankTest currentPassengerInputBank = self.vehicleSeat.currentPassengerInputBank; Vector3 aimDirection = currentPassengerInputBank.aimDirection; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(inputPlayer.GetAxis(0), 0f, inputPlayer.GetAxis(1)); Rigidbody vehicleRigidbody = self.vehicleRigidbody; Vector3 val2 = Util.QuaternionSafeLookRotation(aimDirection) * val; vehicleRigidbody.MoveRotation(Util.QuaternionSafeLookRotation(((Vector3)(ref val2)).normalized)); self.vehicleRigidbody.velocity = ((val == Vector3.zero) ? val : (((Component)self.vehicleRigidbody).transform.forward * self.currentSpeed)); } } } private static void GlobalEventManager_onClientDamageNotified(DamageDealtMessage damageMessage) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Invalid comparison between Unknown and I4 //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)damageMessage.attacker) && (int)DamageTypeCombo.op_Implicit(damageMessage.damageType) == 262144 && damageMessage.attacker.GetComponent<CharacterBody>().baseNameToken == "SEEKER_BODY_NAME") { CharacterMotor component = damageMessage.attacker.GetComponent<CharacterMotor>(); if ((Object.op_Implicit((Object)(object)component) && !component.isGrounded) || Configs.spiralSmallHopWhileGrounded.Value) { ((BaseCharacterController)component).Motor.ForceUnground(0.1f); component.velocity = new Vector3(component.velocity.x, Mathf.Max(component.velocity.y, Configs.spiralSmallHopAmount.Value), component.velocity.z); } } } private static void UnseenHand_UpdateAreaIndicator(orig_UpdateAreaIndicator orig, UnseenHand self) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) self.goodPlacement = false; if (Object.op_Implicit((Object)(object)self.areaIndicatorInstance)) { float maxDistance = UnseenHand.maxDistance; float num = 0f; RaycastHit val = default(RaycastHit); if (Physics.Raycast(CameraRigController.ModifyAimRayIfApplicable(((BaseState)self).GetAimRay(), ((EntityState)self).gameObject, ref num), ref val, maxDistance + num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask))) { self.areaIndicatorInstance.transform.position = ((RaycastHit)(ref val)).point; self.goodPlacement = true; } HurtBox val2 = (Object.op_Implicit((Object)(object)((RaycastHit)(ref val)).collider) ? ((Component)((RaycastHit)(ref val)).collider).GetComponent<HurtBox>() : null); if (Object.op_Implicit((Object)(object)val2) && Physics.Raycast(((Component)val2).transform.position, Vector3.down, ref val, 69f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask))) { self.areaIndicatorInstance.transform.position = ((RaycastHit)(ref val)).point; self.goodPlacement = true; } self.areaIndicatorInstance.SetActive(self.goodPlacement); } } private static void SoulSpiralOrbiter_UpdateCurrentSpeedAndDamage(orig_UpdateCurrentSpeedAndDamage orig, SoulSpiralOrbiter self, float _currentTime) { if (Object.op_Implicit((Object)(object)self.seekerController) && Object.op_Implicit((Object)(object)self.seekerController.characterBody)) { _currentTime *= self.seekerController.characterBody.attackSpeed; } orig.Invoke(self, _currentTime); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Dragonyck.SeekerTweaks", "SeekerTweaks", "1.0.3")] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.Dragonyck.SeekerTweaks"; public const string MODNAME = "SeekerTweaks"; public const string VERSION = "1.0.3"; public const string MODNAMEKEY = "SEEKERTWEAKS"; private void Awake() { Assets.PopulateAssets(); Configs.Init(); Prefabs.CreatePrefabs(); Hook.Hooks(); } } 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("SeekerTweaks.AssetBundle.seekertweaksassets"); MainAssetBundle = AssetBundle.LoadFromStream(stream); } using Stream stream2 = executingAssembly.GetManifestResourceStream("SeekerTweaks.SeekerTweaks.bnk"); byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } } internal class Prefabs { internal static GameObject seekerBodyPrefab; internal static GameObject vehiclePrefab; internal static GameObject sojournIndicator; internal static GameObject beamEffect; internal static GameObject muzzleEffect; internal static GameObject trackingIndicator; internal static GameObject beamHitEffect; internal static GameObject shieldAttachment; internal static GameObject allyIndicator; internal static GameObject areaIndicator; internal static GameObject skyBeamAreaIndicator; internal static GameObject skyBeamHealingAreaIndicator; internal static GameObject skyBeamBeam; internal static GameObject skyHealingBeamBeam; internal static Material tpTargetMat; internal static BuffDef mantra; internal static ModdedDamageType explosion; internal static ModdedDamageType noHit; internal static Dictionary<string, Sprite> bodyIcons = new Dictionary<string, Sprite>(); 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); } [SystemInitializer(new Type[] { typeof(BodyCatalog) })] internal static void SetBodyIcons() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown foreach (CharacterBody allBodyPrefabBodyBodyComponent in BodyCatalog.allBodyPrefabBodyBodyComponents) { string baseNameToken = allBodyPrefabBodyBodyComponent.baseNameToken; Sprite value = null; if (Object.op_Implicit((Object)(object)allBodyPrefabBodyBodyComponent.portraitIcon) && !bodyIcons.TryGetValue(baseNameToken, out value)) { bodyIcons.Add(baseNameToken, Utils.CreateSprite((Texture2D)allBodyPrefabBodyBodyComponent.portraitIcon)); } } } internal static void CreatePrefabs() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Expected O, but got Unknown //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Expected O, but got Unknown //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_111f: Unknown result type (might be due to invalid IL or missing references) //IL_1124: Unknown result type (might be due to invalid IL or missing references) //IL_1133: Unknown result type (might be due to invalid IL or missing references) //IL_1138: Unknown result type (might be due to invalid IL or missing references) //IL_1165: Unknown result type (might be due to invalid IL or missing references) //IL_116a: Unknown result type (might be due to invalid IL or missing references) //IL_1179: Unknown result type (might be due to invalid IL or missing references) //IL_117e: Unknown result type (might be due to invalid IL or missing references) //IL_11ab: Unknown result type (might be due to invalid IL or missing references) //IL_11b0: Unknown result type (might be due to invalid IL or missing references) //IL_11bf: Unknown result type (might be due to invalid IL or missing references) //IL_11c4: Unknown result type (might be due to invalid IL or missing references) //IL_11f1: Unknown result type (might be due to invalid IL or missing references) //IL_11f6: Unknown result type (might be due to invalid IL or missing references) //IL_1205: Unknown result type (might be due to invalid IL or missing references) //IL_120a: Unknown result type (might be due to invalid IL or missing references) //IL_1237: Unknown result type (might be due to invalid IL or missing references) //IL_123c: Unknown result type (might be due to invalid IL or missing references) //IL_124b: Unknown result type (might be due to invalid IL or missing references) //IL_1250: Unknown result type (might be due to invalid IL or missing references) //IL_127d: Unknown result type (might be due to invalid IL or missing references) //IL_1282: Unknown result type (might be due to invalid IL or missing references) //IL_1291: Unknown result type (might be due to invalid IL or missing references) //IL_1296: Unknown result type (might be due to invalid IL or missing references) //IL_12c3: Unknown result type (might be due to invalid IL or missing references) //IL_12c8: Unknown result type (might be due to invalid IL or missing references) //IL_12d7: Unknown result type (might be due to invalid IL or missing references) //IL_12dc: Unknown result type (might be due to invalid IL or missing references) //IL_1303: Unknown result type (might be due to invalid IL or missing references) //IL_1312: Unknown result type (might be due to invalid IL or missing references) //IL_1317: Unknown result type (might be due to invalid IL or missing references) //IL_1332: Unknown result type (might be due to invalid IL or missing references) //IL_1341: Unknown result type (might be due to invalid IL or missing references) //IL_1346: Unknown result type (might be due to invalid IL or missing references) //IL_1361: Unknown result type (might be due to invalid IL or missing references) //IL_1370: Unknown result type (might be due to invalid IL or missing references) //IL_1375: Unknown result type (might be due to invalid IL or missing references) //IL_1390: Unknown result type (might be due to invalid IL or missing references) //IL_139f: Unknown result type (might be due to invalid IL or missing references) //IL_13a4: Unknown result type (might be due to invalid IL or missing references) //IL_13bf: Unknown result type (might be due to invalid IL or missing references) //IL_13ce: Unknown result type (might be due to invalid IL or missing references) //IL_13d3: Unknown result type (might be due to invalid IL or missing references) //IL_13ee: Unknown result type (might be due to invalid IL or missing references) //IL_13fd: Unknown result type (might be due to invalid IL or missing references) //IL_1402: Unknown result type (might be due to invalid IL or missing references) //IL_141d: Unknown result type (might be due to invalid IL or missing references) //IL_142c: Unknown result type (might be due to invalid IL or missing references) //IL_1431: Unknown result type (might be due to invalid IL or missing references) //IL_047b: Unknown result type (might be due to invalid IL or missing references) //IL_0494: Unknown result type (might be due to invalid IL or missing references) //IL_049b: Expected O, but got Unknown //IL_04b9: Unknown result type (might be due to invalid IL or missing references) //IL_04ce: Unknown result type (might be due to invalid IL or missing references) //IL_04d5: Expected O, but got Unknown //IL_04f3: Unknown result type (might be due to invalid IL or missing references) //IL_04fd: Unknown result type (might be due to invalid IL or missing references) //IL_0565: Unknown result type (might be due to invalid IL or missing references) //IL_056a: Unknown result type (might be due to invalid IL or missing references) //IL_0351: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_0607: Unknown result type (might be due to invalid IL or missing references) //IL_062a: Unknown result type (might be due to invalid IL or missing references) //IL_062f: Unknown result type (might be due to invalid IL or missing references) //IL_064f: Unknown result type (might be due to invalid IL or missing references) //IL_0659: Expected O, but got Unknown //IL_069f: Unknown result type (might be due to invalid IL or missing references) //IL_06a9: Expected O, but got Unknown //IL_06b6: Unknown result type (might be due to invalid IL or missing references) //IL_06c6: Unknown result type (might be due to invalid IL or missing references) //IL_06d0: Expected O, but got Unknown //IL_0713: Unknown result type (might be due to invalid IL or missing references) //IL_071a: Expected O, but got Unknown //IL_0753: Unknown result type (might be due to invalid IL or missing references) //IL_075d: Unknown result type (might be due to invalid IL or missing references) //IL_0772: Unknown result type (might be due to invalid IL or missing references) //IL_077c: Expected O, but got Unknown //IL_07e4: Unknown result type (might be due to invalid IL or missing references) //IL_07e9: Unknown result type (might be due to invalid IL or missing references) //IL_0840: Unknown result type (might be due to invalid IL or missing references) //IL_0845: Unknown result type (might be due to invalid IL or missing references) //IL_0854: Unknown result type (might be due to invalid IL or missing references) //IL_0859: Unknown result type (might be due to invalid IL or missing references) //IL_08b4: Unknown result type (might be due to invalid IL or missing references) //IL_08b9: Unknown result type (might be due to invalid IL or missing references) //IL_091e: Unknown result type (might be due to invalid IL or missing references) //IL_0928: Unknown result type (might be due to invalid IL or missing references) //IL_0941: Unknown result type (might be due to invalid IL or missing references) //IL_0948: Expected O, but got Unknown //IL_0969: Unknown result type (might be due to invalid IL or missing references) //IL_0970: Expected O, but got Unknown //IL_0982: Unknown result type (might be due to invalid IL or missing references) //IL_0987: Unknown result type (might be due to invalid IL or missing references) //IL_09ab: Unknown result type (might be due to invalid IL or missing references) //IL_09b2: Expected O, but got Unknown //IL_03bc: Unknown result type (might be due to invalid IL or missing references) //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_03dd: Expected O, but got Unknown //IL_0acd: Unknown result type (might be due to invalid IL or missing references) //IL_0ad2: Unknown result type (might be due to invalid IL or missing references) //IL_0afe: Unknown result type (might be due to invalid IL or missing references) //IL_0b08: Unknown result type (might be due to invalid IL or missing references) //IL_0a8a: Unknown result type (might be due to invalid IL or missing references) //IL_0b84: Unknown result type (might be due to invalid IL or missing references) //IL_0b89: Unknown result type (might be due to invalid IL or missing references) //IL_0b96: Unknown result type (might be due to invalid IL or missing references) //IL_0b9b: Unknown result type (might be due to invalid IL or missing references) //IL_0ba4: Unknown result type (might be due to invalid IL or missing references) //IL_0c36: Unknown result type (might be due to invalid IL or missing references) //IL_0c43: Unknown result type (might be due to invalid IL or missing references) //IL_0c5a: Unknown result type (might be due to invalid IL or missing references) //IL_0c64: Expected O, but got Unknown //IL_0c85: Unknown result type (might be due to invalid IL or missing references) //IL_0c9a: Unknown result type (might be due to invalid IL or missing references) //IL_0ca1: Expected O, but got Unknown //IL_0ccf: Unknown result type (might be due to invalid IL or missing references) //IL_0db6: Unknown result type (might be due to invalid IL or missing references) //IL_0e3a: Unknown result type (might be due to invalid IL or missing references) //IL_0ed8: Unknown result type (might be due to invalid IL or missing references) //IL_0fa9: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("dontDestroyOnLoad"); Object.DontDestroyOnLoad((Object)(object)val); val.SetActive(false); GameObject val2 = Load<GameObject>("RoR2/DLC2/Seeker/SoulSpiralProjectile.prefab"); if (Configs.spiralSmallHop.Value) { val2.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)262144); } if (Configs.spiralLimit.Value != 6 || Configs.spiralRadius.Value != 4.75f) { val2.AddComponent<SoulSpiralTracker>(); } seekerBodyPrefab = Load<GameObject>("RoR2/DLC2/Seeker/SeekerBody.prefab"); Utils.NewStateMachine<Idle>(seekerBodyPrefab, "Sojourn"); seekerBodyPrefab.GetComponent<NetworkStateMachine>().stateMachines = seekerBodyPrefab.GetComponents<EntityStateMachine>(); bool flag = false; if (Configs.castSecondary.Value || Configs.castSpecial.Value || Configs.sojournTimer.Value) { ContentAddition.AddEntityState<BetterSojourn>(ref flag); SkillDef val3 = Load<SkillDef>("RoR2/DLC2/Seeker/SeekerBodySojourn.asset"); val3.activationState = new SerializableEntityStateType(typeof(BetterSojourn)); val3.activationStateMachineName = "Sojourn"; } if (Configs.canInterrupt.Value) { SkillDef val4 = Load<SkillDef>("RoR2/DLC2/Seeker/SeekerBodyMeditate2.asset"); val4.interruptPriority = (InterruptPriority)1; } seekerBodyPrefab.AddComponent<SeekerTweakBehaviour>(); if (Configs.autoCastSpiral.Value) { seekerBodyPrefab.AddComponent<AutoCastBehaviour>(); } if (Configs.addAlts.Value) { noHit = DamageAPI.ReserveDamageType(); skyBeamBeam = Instantiate("RoR2/DLC1/VoidSurvivor/VoidSurvivorBeamCorrupt.prefab", "SkyBeamBeamBeam"); skyBeamBeam.transform.localRotation = Quaternion.Euler(-90f, 0f, 0f); skyBeamBeam.transform.localScale = new Vector3(4f, 4f, 1f); skyBeamBeam.GetComponentInChildren<Light>().color = Color.green; Object.Destroy((Object)(object)skyBeamBeam.GetComponent<VfxKillBehavior>()); DestroyOnTimer component = skyBeamBeam.GetComponent<DestroyOnTimer>(); ((Behaviour)component).enabled = true; component.duration = 2f; MeshRenderer componentInChildren = skyBeamBeam.GetComponentInChildren<MeshRenderer>(); Material val5 = new Material(((Renderer)componentInChildren).material); val5.SetFloat("_DstBlend", 1f); val5.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampEngiOffset.png")); Material val6 = new Material(Load<Material>("RoR2/DLC2/Seeker/matSpiritPunchSphereOpaque.mat")); val6.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)87, (byte)250, (byte)100, (byte)180))); val6.SetTextureScale("_Cloud1Tex", Vector2.one * 2f); val6.SetFloat("_AlphaBoost", 1f); val6.SetVector("_CutoffScroll", new Vector4(20f, -60f, 40f, -10f)); ((Renderer)componentInChildren).materials = (Material[])(object)new Material[2] { val5, val6 }; ParticleSystemRenderer[] componentsInChildren = skyBeamBeam.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val7 in componentsInChildren) { string name = ((Object)val7).name; if (name == "Particles") { ((Component)val7).transform.localScale = Vector3.one * 2f; ((Renderer)val7).material = Load<Material>("RoR2/DLC2/Seeker/matSpiritPunchSoftRay.mat"); } if (name == "Particles, Bright") { ((Renderer)val7).material = Load<Material>("RoR2/DLC2/Seeker/matSpiritPunchFistTendrilsOpaque.mat"); } if (name == "MuzzleRayParticles") { ((Component)val7).transform.localScale = Vector3.one; ((Renderer)val7).material = new Material(Load<Material>("RoR2/DLC1/Railgunner/matRailgunImpact.mat")); ((Renderer)val7).material.DisableKeyword("VERTEXCOLOR"); ((Renderer)val7).material.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampBeetleQueen2.png")); ((Renderer)val7).material.SetFloat("_DstBlend", 1f); ((Renderer)val7).material.SetFloat("_Boost", 4f); } } skyHealingBeamBeam = Instantiate(skyBeamBeam, "SkyHealingBeamBeamBeam"); skyHealingBeamBeam.transform.localScale = new Vector3(1f, 1f, 0.15f); MeshRenderer componentInChildren2 = skyHealingBeamBeam.GetComponentInChildren<MeshRenderer>(); Material val8 = new Material(val5); val8.SetTexture("_Cloud1Tex", (Texture)(object)Load<Texture2D>("RoR2/DLC2/Child/texChildPrimaryStarCloud.png")); val8.SetTextureScale("_Cloud1Tex", Vector2.one); Material val9 = new Material(Load<Material>("RoR2/Base/Captain/matCaptainAirstrikeAltAreaIndicatorOuter.mat")); val9.SetTexture("_Cloud1Tex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/texCloudBone1.png")); val8.SetTextureScale("_Cloud1Tex", Vector2.one * 0.6f); val9.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampAntler.png")); val9.SetFloat("_DstBlendFloat", 1f); ((Renderer)componentInChildren2).materials = (Material[])(object)new Material[2] { val8, val8 }; Light componentInChildren3 = skyHealingBeamBeam.GetComponentInChildren<Light>(); componentInChildren3.color = Color32.op_Implicit(new Color32((byte)88, byte.MaxValue, (byte)107, byte.MaxValue)); componentInChildren3.intensity = 20f; componentInChildren3.range = 3f; Object.Destroy((Object)(object)((Component)componentInChildren3).GetComponent<ShakeEmitter>()); ParticleSystemRenderer[] componentsInChildren2 = skyHealingBeamBeam.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val10 in componentsInChildren2) { ((Component)val10).gameObject.SetActive(false); } skyBeamAreaIndicator = Instantiate("RoR2/DLC2/Seeker/UnseenHandAreaIndicator.prefab", "SkyBeamHealingAreaIndicator"); skyBeamHealingAreaIndicator = Instantiate(skyBeamAreaIndicator, "SkyBeamHealingAreaIndicator"); skyBeamHealingAreaIndicator.transform.localScale = Vector3.one; skyBeamHealingAreaIndicator.GetComponentInChildren<Light>().color = Color32.op_Implicit(new Color32((byte)88, byte.MaxValue, (byte)107, byte.MaxValue)); MeshRenderer componentInChildren4 = skyBeamHealingAreaIndicator.GetComponentInChildren<MeshRenderer>(); ((Renderer)componentInChildren4).material = new Material(((Renderer)componentInChildren4).material); ((Renderer)componentInChildren4).material.SetFloat("_DstBlendFloat", 1f); ((Renderer)componentInChildren4).material.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampAntler.png")); ParticleSystemRenderer componentInChildren5 = ((Component)componentInChildren4).GetComponentInChildren<ParticleSystemRenderer>(); ((Renderer)componentInChildren5).material = new Material(((Renderer)componentInChildren5).material); ((Renderer)componentInChildren5).material.SetColor("_TintColor", Color.green); allyIndicator = new GameObject("Indicator"); allyIndicator.layer = LayerIndex.ui.intVal; allyIndicator.transform.parent = val.transform; GameObject val11 = new GameObject("IndicatorSprite", new Type[1] { typeof(SpriteRenderer) }); val11.layer = LayerIndex.ui.intVal; val11.transform.parent = allyIndicator.transform; SpriteRenderer component2 = val11.GetComponent<SpriteRenderer>(); ((Component)component2).transform.localScale = Vector3.one * 0.04f; tpTargetMat = new Material(Load<Material>("RoR2/InDev/matEcho.mat")); tpTargetMat.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampCaptainBodyArmor.png")); tpTargetMat.SetTexture("_MainTex", (Texture)null); tpTargetMat.SetTexture("_Cloud1Tex", (Texture)null); tpTargetMat.SetTexture("_Cloud2Tex", (Texture)null); tpTargetMat.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)59, (byte)243, (byte)173, byte.MaxValue))); tpTargetMat.SetFloat("_FresnelPower", 2f); tpTargetMat.SetFloat("_ZTest", 8f); mantra = Utils.NewBuffDef("Mantra", stack: true, hidden: false, Assets.Load<Sprite>("buff"), Color32.op_Implicit(new Color32((byte)59, (byte)243, (byte)173, byte.MaxValue))); explosion = DamageAPI.ReserveDamageType(); vehiclePrefab = Instantiate("RoR2/DLC2/Seeker/SojournVehicle/SojournVehicle.prefab", "ChillVehicle", registerNetwork: true); SojournVehicle component3 = vehiclePrefab.GetComponent<SojournVehicle>(); component3.initialFlightGracePeriod = 9999f; component3.overlapFirePeriod = 9999f; component3.blastRadiusIndicators = (GameObject[])(object)new GameObject[0]; component3.blastDamageCoefficient = 0f; component3.blastDamageType = DamageTypeCombo.op_Implicit((DamageType)32); component3.sojournOverlayPrefab = null; component3.detonateOnCollision = false; component3.startingSpeedBoost = Configs.spiritSojournBaseSpeed.Value; vehiclePrefab.AddComponent<VehicleTimer>(); vehiclePrefab.GetComponent<SphereCollider>().radius = 1f; shieldAttachment = Instantiate("RoR2/DLC1/MajorAndMinorConstruct/MegaConstructBubbleShield.prefab", "ShieldAttachment", registerNetwork: true); shieldAttachment.transform.localScale = Vector3.one * 0.2f; Material val12 = Load<Material>("RoR2/DLC1/MajorAndMinorConstruct/matMajorConstructDefenseMatrixEdges.mat"); Material val13 = new Material(val12); val13.SetTexture("_Cloud1Tex", (Texture)(object)Load<Texture2D>("RoR2/DLC2/Seeker/texSeekerLotusMask3.png")); Material val14 = new Material(Load<Material>("RoR2/DLC2/Seeker/matSpiritPunchSphereFresnel.mat")); val14.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)34, (byte)34, (byte)34, byte.MaxValue))); val14.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/DLC1/Common/ColorRamps/texRampConstructLaserTypeB.png")); Material val15 = new Material(val12); val15.SetTexture("_Cloud1Tex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/VFX/ParticleMasks/texAlphaGradient2Mask.png")); ((Renderer)shieldAttachment.GetComponentInChildren<MeshRenderer>()).materials = (Material[])(object)new Material[3] { val13, val14, val15 }; seekerBodyPrefab.AddComponent<AllyTracker>(); beamHitEffect = Instantiate("RoR2/DLC2/Seeker/SpiritPunchOmniImpactVFX.prefab", "BeamHitEffect"); beamHitEffect.GetComponent<EffectComponent>().soundName = "Play_SeekerTweaks_Beam_Impact"; ContentAddition.AddEffect(beamHitEffect); trackingIndicator = Instantiate("RoR2/Base/Huntress/HuntressTrackingIndicator.prefab", "TrackingIndicator"); SpriteRenderer[] componentsInChildren3 = trackingIndicator.GetComponentsInChildren<SpriteRenderer>(true); for (int k = 0; k < componentsInChildren3.Length; k++) { if (k != 0) { ((Component)componentsInChildren3[k]).gameObject.SetActive(false); } else { componentsInChildren3[k].color = new Color(0.8549f, 0.698f, 0.3137f); } } Transform child = trackingIndicator.transform.GetChild(1); GameObject val16 = Object.Instantiate<GameObject>(((Component)componentsInChildren3[0]).gameObject, ((Component)child).transform.position, Quaternion.identity, child); val16.GetComponent<SpriteRenderer>().sprite = Load<Sprite>("RoR2/DLC2/Seeker/texMeditationInputCircle.png"); val16.transform.localScale = Vector3.one * 0.15f; muzzleEffect = Instantiate("RoR2/DLC2/Seeker/SpiritPunchMuzzleFlashVFX.prefab", "MuzzleEffect"); Object.Destroy((Object)(object)muzzleEffect.GetComponent<EffectComponent>()); Object.Destroy((Object)(object)muzzleEffect.GetComponent<DestroyOnParticleEnd>()); Object.Destroy((Object)(object)muzzleEffect.GetComponent<EffectManagerHelper>()); Object.Destroy((Object)(object)muzzleEffect.GetComponent<VFXAttributes>()); ParticleSystem[] comp