Decompiled source of Xenologist v1.0.3
Xenologist.dll
Decompiled 4 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.AI; using EntityStates.AI.Walker; using EntityStates.BrotherMonster.Weapon; using EntityStates.Commando; using EntityStates.Huntress; using EntityStates.Mage.Weapon; using EntityStates.Merc; using EntityStates.NewtMonster; using EntityStates.VoidInfestor; using JetBrains.Annotations; using KinematicCharacterController; using On.RoR2; using On.RoR2.UI; using R2API; using R2API.Utils; using Rewired.ComponentControls.Effects; using RoR2; using RoR2.CharacterAI; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using TMPro; using Unity; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Bindings; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.Rendering.PostProcessing; using UnityEngine.UI; [assembly: AssemblyCompany("Xenologist")] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyConfiguration("Debug")] [assembly: CompilationRelaxations(8)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyTitle("Xenologist")] [assembly: AssemblyProduct("Xenologist")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Xenologist { internal class Assets { public static AssetBundle MainAssetBundle; public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Xenologist.xenoassets")) { MainAssetBundle = AssetBundle.LoadFromStream(stream); } } } } internal class AIFollowProjectile : MonoBehaviour { private BaseAI ai; private AISkillDriver driver; private EntityStateMachine machine; public GameObject target; private void Start() { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_010e: 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_0146: Unknown result type (might be due to invalid IL or missing references) machine = ((Component)this).GetComponent<EntityStateMachine>(); if (Object.op_Implicit((Object)(object)machine)) { machine.SetNextState((EntityState)(object)new AIFolowProjectileState()); } ai = ((Component)this).GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)ai)) { ai.currentEnemy.Reset(); driver = ((Component)this).gameObject.AddComponent<AISkillDriver>(); driver.customName = "FollowProjectile"; driver.moveTargetType = (TargetType)3; driver.movementType = (MovementType)1; driver.aimType = (AimType)4; driver.ignoreNodeGraph = true; driver.buttonPressType = (ButtonPressType)0; driver.skillSlot = (SkillSlot)(-1); ai.currentEnemy.gameObject = target; ai.customTarget.gameObject = target; ai.selectedSkilldriverName = "FollowProjectile"; ai.skillDriverEvaluation = new SkillDriverEvaluation { aimTarget = ai.customTarget, target = ai.customTarget, dominantSkillDriver = driver }; } } private void FixedUpdate() { if (!Object.op_Implicit((Object)(object)target)) { Object.Destroy((Object)(object)this); } if (Object.op_Implicit((Object)(object)ai)) { ai.skillDriverUpdateTimer = 0.1f; } } private void OnDisable() { if (Object.op_Implicit((Object)(object)ai)) { ai.customTarget.gameObject = null; ai.currentEnemy.Reset(); } if (Object.op_Implicit((Object)(object)driver)) { Object.Destroy((Object)(object)driver); } } } internal class BoomerangVoidBehaviour : MonoBehaviour { public GameObject projectile; public GameObject projectileGhost; public CharacterBody attacker; public float damage; public HealthComponent target; public int count; private void Start() { //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)projectile)) { projectileGhost = ((Component)projectile.GetComponent<ProjectileController>().ghost).gameObject; projectileGhost.SetActive(false); projectile.SetActive(false); } if (Object.op_Implicit((Object)(object)target) && Object.op_Implicit((Object)(object)target.body)) { Util.PlaySound("Play_item_void_critGlasses", ((Component)this).gameObject); if (NetworkServer.active) { DamageInfo val = new DamageInfo(); val.attacker = ((Component)attacker).gameObject; val.damage = damage; val.damageType = (DamageType)0; val.damageColorIndex = (DamageColorIndex)9; val.position = target.body.corePosition; val.crit = attacker.RollCrit(); val.rejected = false; target.TakeDamage(val); GlobalEventManager.instance.OnHitEnemy(val, ((Component)target).gameObject); GlobalEventManager.instance.OnHitAll(val, ((Component)target).gameObject); } } } public HealthComponent PickNextTarget(TeamIndex team, float dist = 160f) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Invalid comparison between Unknown and I4 //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) BullseyeSearch val = new BullseyeSearch(); val.searchOrigin = ((Component)this).transform.position; val.searchDirection = Vector3.zero; val.teamMaskFilter = TeamMask.allButNeutral; if ((int)team != -1) { ((TeamMask)(ref val.teamMaskFilter)).RemoveTeam(team); } val.filterByLoS = false; val.sortMode = (SortMode)1; val.maxDistanceFilter = dist; val.RefreshCandidates(); HurtBox val2 = val.GetResults().FirstOrDefault(); return Object.op_Implicit((Object)(object)val2) ? val2.healthComponent : null; } private void OnDisable() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) if (count > 0) { if (Object.op_Implicit((Object)(object)attacker)) { HealthComponent val = null; val = ((Object.op_Implicit((Object)(object)target) && target.alive) ? target : PickNextTarget(attacker.teamComponent.teamIndex)); if (Object.op_Implicit((Object)(object)val) && NetworkServer.active) { GameObject val2 = Object.Instantiate<GameObject>(Prefabs.boomerangVoidHitEffect, Object.op_Implicit((Object)(object)val.body) ? val.body.corePosition : ((Component)this).transform.position, Quaternion.identity); BoomerangVoidBehaviour component = val2.GetComponent<BoomerangVoidBehaviour>(); component.count = count - 1; component.projectile = projectile; component.damage = damage; component.attacker = attacker; component.target = val; NetworkServer.Spawn(val2); } } } else { projectileGhost.SetActive(true); projectile.SetActive(true); } } } internal class DisplayBehaviour : MonoBehaviour { private uint ID; public bool Switch = true; private float stopwatch; public float lerpDuration = 6f; public float yPos = 0.1f; private Vector3 startPos = Vector3.zero; private AnimationCurve curve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); public CharacterModel model; private void OnEnable() { ID = AkSoundEngine.PostEvent("Play_roboBall_spawn", ((Component)this).gameObject); TemporaryOverlay val = ((Component)this).gameObject.AddComponent<TemporaryOverlay>(); val.duration = 1.2f; val.destroyComponentOnEnd = true; val.originalMaterial = Prefabs.Load<Material>("RoR2/Base/RoboBallBoss/matSummonRoboBall.mat"); val.inspectorCharacterModel = model; val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.animateShaderAlpha = true; } private void FixedUpdate() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: 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) stopwatch += Time.fixedDeltaTime; float num = curve.Evaluate(stopwatch / lerpDuration); Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(0f, Switch ? yPos : (0f - yPos), 0f); ((Component)this).transform.localPosition = Vector3.Lerp(startPos, val, num); if (((Component)this).transform.localPosition == val) { startPos = ((Component)this).transform.localPosition; stopwatch = 0f; Switch = !Switch; } } private void OnDisable() { AkSoundEngine.StopPlayingID(ID); } } internal class MalachiteTargetFinder : MonoBehaviour { public float stopwatch; public SyringeBehaviour behaviour; public ProjectileSteerTowardTarget steer; public ProjectileTargetComponent target; public bool On; public int count; public HurtBox PickNextTarget(GameObject filter, int count) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Expected O, but got Unknown //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) float num = 1 + count / 10; BullseyeSearch val = new BullseyeSearch(); val.searchOrigin = ((Component)this).transform.position; val.searchDirection = ((Component)this).transform.forward; val.teamMaskFilter = TeamMask.allButNeutral; val.sortMode = (SortMode)3; val.maxDistanceFilter = 25f * num; val.minAngleFilter = 0f; val.maxAngleFilter = 20f * num; val.RefreshCandidates(); if (Object.op_Implicit((Object)(object)filter)) { val.FilterOutGameObject(filter); } return val.GetResults().FirstOrDefault(); } public void Start() { behaviour = ((Component)this).GetComponent<SyringeBehaviour>(); steer = ((Component)this).GetComponent<ProjectileSteerTowardTarget>(); target = ((Component)this).GetComponent<ProjectileTargetComponent>(); } public void FixedUpdate() { if (!On) { if (Object.op_Implicit((Object)(object)behaviour) && behaviour.sampleModifiers.Contains(5) && Object.op_Implicit((Object)(object)behaviour.behaviour)) { count = behaviour.behaviour.GetSampleCount(5); On = count > 0; } return; } stopwatch += Time.fixedDeltaTime; if (!(stopwatch >= 0.1f) || !Object.op_Implicit((Object)(object)behaviour) || !Object.op_Implicit((Object)(object)behaviour.owner) || !Object.op_Implicit((Object)(object)steer) || !Object.op_Implicit((Object)(object)target)) { return; } stopwatch = 0f; if (!Object.op_Implicit((Object)(object)target.target)) { steer.rotationSpeed = 60 + 30 * count; HurtBox val = PickNextTarget(behaviour.owner, count); if (Object.op_Implicit((Object)(object)val)) { target.target = ((Component)val).transform; } } } } internal class OverloadBounce : MonoBehaviour { public int remainingBounces; } internal class SampleInteraction : NetworkBehaviour, IInteractable, IDisplayNameProvider { [SyncVar] public int sampleIndex; public Renderer renderer; public Material sampleMat; private bool available = true; public string sampleName => sampleIndex switch { 0 => "Neutral", 1 => "Blazing", 2 => "Overloading", 3 => "Glacial", 4 => "Mending", 5 => "Malachite", 6 => "Celestine", 7 => "Perfected", 8 => "Voidtouched", _ => "", }; public int NetworksampleIndex { get { return sampleIndex; } [param: In] set { ((NetworkBehaviour)this).SetSyncVar<int>(value, ref sampleIndex, 1u); } } private void Start() { if (Object.op_Implicit((Object)(object)renderer)) { switch (sampleIndex) { case 0: sampleMat = Prefabs.neutral; break; case 1: sampleMat = Prefabs.blazing; break; case 2: sampleMat = Prefabs.overloading; break; case 3: sampleMat = Prefabs.glacial; break; case 4: sampleMat = Prefabs.mending; break; case 5: sampleMat = Prefabs.malachite; break; case 6: sampleMat = Prefabs.celestine; break; case 7: sampleMat = Prefabs.perfected; break; case 8: sampleMat = Prefabs.voidtouched; break; } renderer.material = sampleMat; } } public string GetContextString([NotNull] Interactor activator) { return "Pick up " + sampleName + " Sample"; } public void OnInteractionBegin([NotNull] Interactor activator) { //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) if (!available) { return; } CharacterBody component = ((Component)activator).GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } XenoSampleBehaviour component2 = ((Component)activator).GetComponent<XenoSampleBehaviour>(); if (Object.op_Implicit((Object)(object)component2)) { available = false; component2.CallRpcAddSample(sampleIndex); switch (sampleIndex) { case 1: component.AddTimedBuff(Prefabs.blazingPickup, 2f); break; case 2: component.AddTimedBuff(Prefabs.overloadingPickup, 2f); break; case 3: component.AddTimedBuff(Prefabs.glacialPickup, 2f); break; case 4: component.AddTimedBuff(Prefabs.mendingPickup, 2f); break; case 5: component.AddTimedBuff(Prefabs.malachitePickup, 2f); break; case 6: component.AddTimedBuff(Prefabs.celestinePickup, 2f); component.AddTimedBuff(Buffs.Cloak, 2f); break; case 7: component.AddTimedBuff(Prefabs.perfectedPickup, 2f); break; case 8: component.AddTimedBuff(Prefabs.voidtouchedPickup, 2f); component.AddTimedBuff(Buffs.BearVoidReady, 2f); break; } } else { BuffIndex val = (BuffIndex)(-1); switch (sampleIndex) { case 0: val = Prefabs.neutralSampleBuff.buffIndex; break; case 1: val = Buffs.AffixRed.buffIndex; break; case 2: val = Buffs.AffixBlue.buffIndex; break; case 3: val = Buffs.AffixWhite.buffIndex; break; case 4: val = Buffs.EliteEarth.buffIndex; break; case 5: val = Buffs.AffixPoison.buffIndex; break; case 6: val = Buffs.AffixHaunted.buffIndex; break; case 7: val = Buffs.AffixLunar.buffIndex; break; case 8: val = Buffs.EliteVoid.buffIndex; break; } component.AddTimedBuff(val, 10f); } NetworkServer.Destroy(((Component)this).gameObject); } public Interactability GetInteractability([NotNull] Interactor activator) { //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 (Interactability)2; } public bool ShouldIgnoreSpherecastForInteractibility([NotNull] Interactor activator) { return false; } public bool ShouldShowOnScanner() { return false; } public string GetDisplayName() { return "Sample"; } private void UNetVersion() { } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { if (forceAll) { writer.WritePackedUInt32((uint)sampleIndex); return true; } bool flag = false; if ((((NetworkBehaviour)this).syncVarDirtyBits & (true ? 1u : 0u)) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.WritePackedUInt32((uint)sampleIndex); } if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); } return flag; } public override void OnDeserialize(NetworkReader reader, bool initialState) { if (initialState) { sampleIndex = (int)reader.ReadPackedUInt32(); return; } int num = (int)reader.ReadPackedUInt32(); if (((uint)num & (true ? 1u : 0u)) != 0) { sampleIndex = (int)reader.ReadPackedUInt32(); } } } internal class SampleTracker : MonoBehaviour { public BaseAI droneAI; public CharacterMaster droneMaster; public List<int> sampleList = new List<int> { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; public List<int> sampleCount = new List<int>(); public int currentSampleIndex = -1; public XenoDroneBehaviour droneBehaviour; public CharacterBody body; public float crosshairRotation; } internal class SoundLooper : MonoBehaviour { public string startSound; public string loopSound; public string endSound; private uint ID; private void Start() { if (!Utility.IsNullOrWhiteSpace(startSound)) { AkSoundEngine.PostEvent(startSound, ((Component)this).gameObject); } if (!Utility.IsNullOrWhiteSpace(loopSound)) { ID = AkSoundEngine.PostEvent(loopSound, ((Component)this).gameObject); } } private void OnDisable() { if (!Utility.IsNullOrWhiteSpace(loopSound)) { AkSoundEngine.StopPlayingID(ID); } if (!Utility.IsNullOrWhiteSpace(endSound)) { AkSoundEngine.PostEvent(endSound, ((Component)this).gameObject); } } } internal class SpecialExecuteTracker : HuntressTracker { public HealthComponent target; private CharacterBody body; private float stopwatch; private void Awake() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown body = ((Component)this).GetComponent<CharacterBody>(); base.indicator = new Indicator(((Component)this).gameObject, Prefabs.Load<GameObject>("RoR2/Base/Lightning/LightningIndicator.prefab")); } private void OnEnable() { ((HuntressTracker)this).OnEnable(); if (Object.op_Implicit((Object)(object)base.indicator.visualizerInstance)) { Debug.LogWarning((object)"visualizer"); base.indicator.visualizerInstance.GetComponentInChildren<InputBindingDisplayController>().actionName = "Special"; } base.trackerUpdateFrequency = 10f; base.maxTrackingDistance = 1000f; } private void FixedUpdate() { //IL_00d4: 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_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_0120: Unknown result type (might be due to invalid IL or missing references) ((HuntressTracker)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.skillLocator) && Object.op_Implicit((Object)(object)body.skillLocator.special) && Object.op_Implicit((Object)(object)body.skillLocator.special.skillDef)) { base.indicator.active = (Object)(object)body.skillLocator.special.skillDef == (Object)(object)SpecialPickerState.perfected; } base.trackerUpdateStopwatch = 0f; stopwatch += Time.fixedDeltaTime; if (stopwatch >= 0.1f) { stopwatch = 0f; Ray val = default(Ray); ((Ray)(ref val))..ctor(base.inputBank.aimOrigin, base.inputBank.aimDirection); base.search.filterByLoS = true; base.search.searchOrigin = ((Ray)(ref val)).origin; base.search.searchDirection = ((Ray)(ref val)).direction; base.search.sortMode = (SortMode)1; base.search.maxDistanceFilter = base.maxTrackingDistance; base.search.maxAngleFilter = base.maxTrackingAngle; base.search.RefreshCandidates(); base.search.FilterOutGameObject(((Component)this).gameObject); base.search.FilterByHealthPercentage(Configs.specialPerfectedExecuteThreshold.Value); base.trackingTarget = base.search.GetResults().FirstOrDefault(); base.indicator.targetTransform = (Object.op_Implicit((Object)(object)base.trackingTarget) ? ((Component)base.trackingTarget).transform : null); target = (Object.op_Implicit((Object)(object)base.trackingTarget) ? base.trackingTarget.healthComponent : null); } } } internal class SpecialMalachiteDotBehaviour : MonoBehaviour { public CharacterBody attacker; public CharacterBody victim; private float stopwatch; private float lifetime; private void Start() { victim = ((Component)this).GetComponent<CharacterBody>(); } private void FixedUpdate() { //IL_0107: 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_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) lifetime += Time.fixedDeltaTime; if (Object.op_Implicit((Object)(object)attacker) && Object.op_Implicit((Object)(object)victim) && Object.op_Implicit((Object)(object)victim.healthComponent) && Object.op_Implicit((Object)(object)victim.healthComponent.body)) { stopwatch += Time.fixedDeltaTime; if (stopwatch >= Configs.specialMalachiteRate.Value) { stopwatch = 0f; if ((lifetime >= 2f && Object.op_Implicit((Object)(object)victim.characterMotor) && victim.characterMotor.isGrounded) || !victim.healthComponent.alive) { Object.Destroy((Object)(object)this); } EffectManager.SimpleEffect(Prefabs.Load<GameObject>("RoR2/Base/ElitePoison/OmniExplosionVFXUrchin.prefab"), victim.healthComponent.body.corePosition, Quaternion.identity, true); DamageInfo val = new DamageInfo(); val.damage = attacker.damage * Configs.specialMalachiteDamage.Value; val.attacker = ((Component)this).gameObject; val.inflictor = ((Component)this).gameObject; val.force = Vector3.zero; val.crit = attacker.RollCrit(); val.procChainMask = default(ProcChainMask); val.procCoefficient = Configs.specialMalachiteRate.Value; val.position = victim.healthComponent.body.corePosition; val.damageColorIndex = (DamageColorIndex)4; val.damageType = (DamageType)0; victim.healthComponent.TakeDamage(val); GlobalEventManager.instance.OnHitEnemy(val, ((Component)victim).gameObject); GlobalEventManager.instance.OnHitAll(val, ((Component)victim).gameObject); } } if (!Object.op_Implicit((Object)(object)attacker)) { Object.Destroy((Object)(object)this); } } } internal class SyringeBehaviour : MonoBehaviour, IProjectileImpactBehavior { public ProjectileController controller; public List<int> sampleModifiers = new List<int>(); public float damage; public BullseyeSearch search = new BullseyeSearch(); public GameObject owner; public XenoSampleBehaviour behaviour; public HurtBox PickNextTarget(GameObject filter, TeamIndex team) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: 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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Invalid comparison between Unknown and I4 //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (search == null) { search = new BullseyeSearch(); } search.searchOrigin = ((Component)this).transform.position; search.searchDirection = Vector3.zero; search.teamMaskFilter = TeamMask.allButNeutral; if ((int)team != -1) { ((TeamMask)(ref search.teamMaskFilter)).RemoveTeam(team); } search.filterByLoS = false; search.sortMode = (SortMode)1; search.maxDistanceFilter = 60f; search.RefreshCandidates(); if (Object.op_Implicit((Object)(object)filter)) { search.FilterOutGameObject(filter); } return search.GetResults().FirstOrDefault(); } public void Start() { controller = ((Component)this).GetComponent<ProjectileController>(); } public void FixedUpdate() { if (!Object.op_Implicit((Object)(object)owner) && Object.op_Implicit((Object)(object)controller)) { owner = controller.owner; behaviour = controller.owner.GetComponent<XenoSampleBehaviour>(); } } public void OnProjectileImpact(ProjectileImpactInfo impactInfo) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0379: Unknown result type (might be due to invalid IL or missing references) //IL_037e: Unknown result type (might be due to invalid IL or missing references) //IL_0385: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_0397: Unknown result type (might be due to invalid IL or missing references) //IL_039c: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_03b4: Expected O, but got Unknown //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_03ba: Unknown result type (might be due to invalid IL or missing references) //IL_03cb: Unknown result type (might be due to invalid IL or missing references) //IL_03e7: Unknown result type (might be due to invalid IL or missing references) //IL_03f2: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0401: Unknown result type (might be due to invalid IL or missing references) //IL_0406: Unknown result type (might be due to invalid IL or missing references) //IL_0408: Unknown result type (might be due to invalid IL or missing references) //IL_040d: Unknown result type (might be due to invalid IL or missing references) //IL_0418: Unknown result type (might be due to invalid IL or missing references) //IL_0420: Unknown result type (might be due to invalid IL or missing references) //IL_0427: Unknown result type (might be due to invalid IL or missing references) //IL_042c: Unknown result type (might be due to invalid IL or missing references) //IL_0431: Unknown result type (might be due to invalid IL or missing references) //IL_0433: Unknown result type (might be due to invalid IL or missing references) //IL_0438: Unknown result type (might be due to invalid IL or missing references) //IL_0440: Unknown result type (might be due to invalid IL or missing references) //IL_0445: Unknown result type (might be due to invalid IL or missing references) //IL_044a: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04c7: Unknown result type (might be due to invalid IL or missing references) //IL_04f5: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: 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_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02cf: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_029f: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: 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_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: 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_0308: Unknown result type (might be due to invalid IL or missing references) //IL_030d: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_05ac: Unknown result type (might be due to invalid IL or missing references) //IL_054e: Unknown result type (might be due to invalid IL or missing references) //IL_05b9: Unknown result type (might be due to invalid IL or missing references) //IL_05c0: Expected O, but got Unknown //IL_05cd: Unknown result type (might be due to invalid IL or missing references) //IL_05d2: Unknown result type (might be due to invalid IL or missing references) //IL_05fd: Unknown result type (might be due to invalid IL or missing references) //IL_0602: Unknown result type (might be due to invalid IL or missing references) //IL_0618: Unknown result type (might be due to invalid IL or missing references) //IL_063b: Unknown result type (might be due to invalid IL or missing references) //IL_0583: Unknown result type (might be due to invalid IL or missing references) Collider collider = impactInfo.collider; if (!Object.op_Implicit((Object)(object)collider)) { return; } HurtBox component = ((Component)collider).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.healthComponent) || !Object.op_Implicit((Object)(object)component.healthComponent.body) || !Object.op_Implicit((Object)(object)controller) || !Object.op_Implicit((Object)(object)controller.owner)) { return; } CharacterBody component2 = controller.owner.GetComponent<CharacterBody>(); bool flag = FriendlyFireManager.ShouldDirectHitProceed(component.healthComponent, ((Component)this).GetComponent<TeamFilter>().teamIndex); if (!Object.op_Implicit((Object)(object)behaviour)) { return; } for (int i = 0; i < sampleModifiers.Count; i++) { int sampleCount = behaviour.GetSampleCount(sampleModifiers[i]); if (sampleCount <= 0) { continue; } switch (sampleModifiers[i]) { case 1: { if (!NetworkServer.active) { break; } if (flag) { DotController.InflictDot(((Component)component.healthComponent.body).gameObject, controller.owner, (DotIndex)1, 10f, Configs.primaryBlazingDamage.Value * (float)sampleCount, (uint?)null); break; } for (int n = 0; n < sampleCount; n++) { component.healthComponent.body.AddTimedBuff(Prefabs.dmgUp, 6f, sampleCount); } break; } case 2: { bool flag2 = false; OverloadBounce component3 = ((Component)this).GetComponent<OverloadBounce>(); if (!Object.op_Implicit((Object)(object)component3)) { Prefabs.syringeOverloadProjectile.GetComponent<OverloadBounce>().remainingBounces = sampleCount - 1; flag2 = true; } else if (component3.remainingBounces > 0) { Prefabs.syringeOverloadProjectile.GetComponent<OverloadBounce>().remainingBounces = component3.remainingBounces - 1; flag2 = true; } if (flag2) { SyringeBehaviour component4 = Prefabs.syringeOverloadProjectile.GetComponent<SyringeBehaviour>(); component4.sampleModifiers = sampleModifiers; component4.damage = damage; HurtBox val = PickNextTarget(((Component)component.healthComponent.body).gameObject, component2.teamComponent.teamIndex); Vector3 val2; Vector3 normalized; if (!Object.op_Implicit((Object)(object)val)) { val2 = impactInfo.estimatedPointOfImpact - component.healthComponent.body.corePosition; normalized = ((Vector3)(ref val2)).normalized; } else { val2 = ((Component)val).transform.position - ((Component)this).transform.position; normalized = ((Vector3)(ref val2)).normalized; } Vector3 val3 = normalized; ProjectileManager.instance.FireProjectile(Prefabs.syringeOverloadProjectile, ((Component)this).transform.position + val3 * (component.healthComponent.body.radius * 2.5f), Util.QuaternionSafeLookRotation(val3), controller.owner, damage, 240f, component2.RollCrit(), (DamageColorIndex)0, (GameObject)null, 100f); } break; } case 3: if (flag) { if (NetworkServer.active) { float num = Configs.primaryGlacialRadius.Value * (float)sampleCount; EffectManager.SpawnEffect(Prefabs.Load<GameObject>("RoR2/Base/EliteIce/AffixWhiteExplosion.prefab"), new EffectData { origin = ((Component)this).transform.position, rotation = Util.QuaternionSafeLookRotation(((Component)this).transform.forward), scale = num }, true); new BlastAttack { attacker = controller.owner, baseDamage = component2.damage * (Configs.primaryGlacialDamageMult.Value * (float)sampleCount), baseForce = 200f, crit = component2.RollCrit(), damageType = (DamageType)0, falloffModel = (FalloffModel)0, procCoefficient = 1f, radius = num, position = ((Component)this).transform.position, attackerFiltering = (AttackerFiltering)2, teamIndex = component2.teamComponent.teamIndex }.Fire(); } } else { GenericSkill[] allSkills = component.healthComponent.body.skillLocator.allSkills; foreach (GenericSkill val4 in allSkills) { val4.RunRecharge((float)sampleCount); } } break; case 4: if (!flag && NetworkServer.active) { EffectManager.SimpleEffect(Prefabs.Load<GameObject>("RoR2/Base/Fruit/FruitHealEffect.prefab"), component.healthComponent.body.corePosition, Quaternion.identity, true); component.healthComponent.Heal(component.healthComponent.fullHealth * Configs.primaryMendingAllyHeal.Value * (float)sampleCount, default(ProcChainMask), true); } break; case 5: { if (flag || !NetworkServer.active) { break; } HurtBox val5 = null; for (int l = 0; l < sampleCount; l++) { if (Object.op_Implicit((Object)(object)val5)) { val5 = PickNextTarget(((Component)val5.healthComponent).gameObject, component2.teamComponent.teamIndex); if (!Object.op_Implicit((Object)(object)val5)) { val5 = PickNextTarget(((Component)component.healthComponent.body).gameObject, component2.teamComponent.teamIndex); } } else { val5 = PickNextTarget(((Component)component.healthComponent.body).gameObject, component2.teamComponent.teamIndex); } DevilOrb val6 = new DevilOrb(); ((Orb)val6).origin = component.healthComponent.body.corePosition; val6.damageValue = component.healthComponent.fullHealth * Configs.primaryMalachiteDamage.Value; val6.teamIndex = TeamComponent.GetObjectTeam(((Component)component2).gameObject); val6.attacker = ((Component)component2).gameObject; val6.damageColorIndex = (DamageColorIndex)4; val6.scale = 1f; ((ProcChainMask)(ref val6.procChainMask)).AddProc((ProcType)10); val6.effectType = (EffectType)0; if (Object.op_Implicit((Object)(object)val5)) { ((Orb)val6).target = val5; val6.isCrit = component2.RollCrit(); OrbManager.instance.AddOrb((Orb)(object)val6); } } break; } case 6: if (!NetworkServer.active) { break; } if (flag) { for (int m = 0; m < sampleCount; m++) { component.healthComponent.body.AddTimedBuff(Prefabs.slow, 3f, sampleCount); } } else { component.healthComponent.body.AddTimedBuff(Buffs.Cloak, (float)sampleCount); } break; case 7: if (NetworkServer.active) { for (int j = 0; j < sampleCount; j++) { component.healthComponent.body.AddTimedBuff(Prefabs.curse, 10f, sampleCount); } } break; case 8: if (!flag && RoR2Application.rng.RangeFloat(0f, 1f) <= Configs.primaryVoidtouchedKOChance.Value * (float)sampleCount) { Object.Destroy((Object)(object)component.healthComponent.body.AddItemBehavior<BearVoidBehavior>(1), (float)sampleCount); } break; } } } } internal class XenoBoomerang : MonoBehaviour { public ProjectileController controller; public GameObject owner; public CharacterBody ownerBody; public Rigidbody rigid; public XenoSampleBehaviour behaviour; public ProjectileOverlapAttack overlap; public BoomerangProjectile boomerang; public List<int> sampleModifiers = new List<int>(); public BoomerangState currentState; public float damage; public float speedReduction; public float idealSpeed; public float fireRingRange; public int perfectedCount; public int malachiteCount; public int blazingCount; public int mendingCount; public int voidCount; private float perfectedStopwatch; private float malachiteFireStopwatch; private float stopStopwatch; private float mendingStopwatch; private Transform fireRing; private HitBox hitbox; public HurtBox PickNextTarget(GameObject filter, TeamIndex team, float dist = 160f) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Invalid comparison between Unknown and I4 //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) BullseyeSearch val = new BullseyeSearch(); val.searchOrigin = ((Component)this).transform.position; val.searchDirection = Vector3.zero; val.teamMaskFilter = TeamMask.allButNeutral; if ((int)team != -1) { ((TeamMask)(ref val.teamMaskFilter)).RemoveTeam(team); } val.filterByLoS = false; val.sortMode = (SortMode)1; val.maxDistanceFilter = dist; val.RefreshCandidates(); if (Object.op_Implicit((Object)(object)filter)) { val.FilterOutGameObject(filter); } return val.GetResults().FirstOrDefault(); } public IEnumerable<HurtBox> PickTargets(GameObject filter, TeamIndex team, float dist = 160f) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Invalid comparison between Unknown and I4 //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) BullseyeSearch val = new BullseyeSearch(); val.searchOrigin = ((Component)this).transform.position; val.searchDirection = Vector3.zero; val.teamMaskFilter = TeamMask.allButNeutral; if ((int)team != -1) { ((TeamMask)(ref val.teamMaskFilter)).RemoveTeam(team); } val.filterByLoS = false; val.sortMode = (SortMode)1; val.maxDistanceFilter = dist; val.RefreshCandidates(); if (Object.op_Implicit((Object)(object)filter)) { val.FilterOutGameObject(filter); } return val.GetResults(); } public void Start() { hitbox = ((Component)this).GetComponentInChildren<HitBox>(); controller = ((Component)this).GetComponent<ProjectileController>(); overlap = ((Component)this).GetComponent<ProjectileOverlapAttack>(); rigid = ((Component)this).GetComponent<Rigidbody>(); boomerang = ((Component)this).GetComponent<BoomerangProjectile>(); } public void Update() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Invalid comparison between Unknown and I4 //IL_004d: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)overlap) && overlap.attack != null && (int)overlap.attack.damageType != 262144) { overlap.attack.damageType = (DamageType)262144; } } private void OnDisable() { if (Object.op_Implicit((Object)(object)behaviour)) { behaviour.boomerangBehaviour = null; behaviour.boomerangProjectile = null; } } public void FixedUpdate() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Invalid comparison between Unknown and I4 //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Invalid comparison between Unknown and I4 //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0408: Unknown result type (might be due to invalid IL or missing references) //IL_040d: Unknown result type (might be due to invalid IL or missing references) //IL_0426: Unknown result type (might be due to invalid IL or missing references) //IL_0432: Unknown result type (might be due to invalid IL or missing references) //IL_043c: Unknown result type (might be due to invalid IL or missing references) //IL_0629: Unknown result type (might be due to invalid IL or missing references) //IL_050e: Unknown result type (might be due to invalid IL or missing references) //IL_0513: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Unknown result type (might be due to invalid IL or missing references) //IL_0535: Unknown result type (might be due to invalid IL or missing references) //IL_053c: Unknown result type (might be due to invalid IL or missing references) //IL_0551: Unknown result type (might be due to invalid IL or missing references) //IL_0567: Unknown result type (might be due to invalid IL or missing references) //IL_0584: Unknown result type (might be due to invalid IL or missing references) //IL_058b: Unknown result type (might be due to invalid IL or missing references) //IL_05b2: Unknown result type (might be due to invalid IL or missing references) //IL_0820: Unknown result type (might be due to invalid IL or missing references) //IL_0825: Unknown result type (might be due to invalid IL or missing references) //IL_082f: Unknown result type (might be due to invalid IL or missing references) //IL_083d: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0860: Unknown result type (might be due to invalid IL or missing references) //IL_0865: Unknown result type (might be due to invalid IL or missing references) //IL_0868: Unknown result type (might be due to invalid IL or missing references) //IL_0875: Expected O, but got Unknown //IL_0888: Unknown result type (might be due to invalid IL or missing references) //IL_088d: Unknown result type (might be due to invalid IL or missing references) //IL_089e: Unknown result type (might be due to invalid IL or missing references) //IL_08ba: Unknown result type (might be due to invalid IL or missing references) //IL_08c5: Unknown result type (might be due to invalid IL or missing references) //IL_08c7: Unknown result type (might be due to invalid IL or missing references) //IL_08cc: Unknown result type (might be due to invalid IL or missing references) //IL_08dd: Unknown result type (might be due to invalid IL or missing references) //IL_08df: Unknown result type (might be due to invalid IL or missing references) //IL_08e4: Unknown result type (might be due to invalid IL or missing references) //IL_08f0: Unknown result type (might be due to invalid IL or missing references) //IL_08f1: Unknown result type (might be due to invalid IL or missing references) //IL_08f6: Unknown result type (might be due to invalid IL or missing references) //IL_08fb: Unknown result type (might be due to invalid IL or missing references) //IL_08fd: Unknown result type (might be due to invalid IL or missing references) //IL_0902: Unknown result type (might be due to invalid IL or missing references) //IL_0905: Unknown result type (might be due to invalid IL or missing references) //IL_090a: Unknown result type (might be due to invalid IL or missing references) //IL_090f: Unknown result type (might be due to invalid IL or missing references) //IL_0915: Unknown result type (might be due to invalid IL or missing references) //IL_091b: Unknown result type (might be due to invalid IL or missing references) //IL_0926: 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_092d: Unknown result type (might be due to invalid IL or missing references) //IL_0938: 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_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0198: 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_0175: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_073d: Unknown result type (might be due to invalid IL or missing references) //IL_0743: Invalid comparison between Unknown and I4 if (Object.op_Implicit((Object)(object)boomerang)) { if (boomerang.stopwatch >= boomerang.maxFlyStopwatch && (int)currentState != 2) { currentState = (BoomerangState)2; } if ((int)currentState == 2) { if (Object.op_Implicit((Object)(object)rigid) && malachiteCount > 0) { stopStopwatch += Time.fixedDeltaTime; if (stopStopwatch <= Configs.secondaryMalachiteStopDuration.Value * (float)malachiteCount) { rigid.isKinematic = true; if (malachiteFireStopwatch == 0f || malachiteFireStopwatch >= Configs.secondaryMalachiteFireDelay.Value) { malachiteFireStopwatch = 0f; Util.PlaySound(FireLunarShards.fireSound, ((Component)this).gameObject); Object.Destroy((Object)(object)Object.Instantiate<GameObject>(Prefabs.Load<GameObject>("RoR2/Base/ElitePoison/UrchinMinigunVFX.prefab"), ((Component)this).transform.position, Quaternion.identity), 0.3f); if (NetworkServer.active) { HurtBox val = PickNextTarget(((Component)ownerBody).gameObject, ownerBody.teamComponent.teamIndex); Vector3 val2; if (!Object.op_Implicit((Object)(object)val)) { val2 = Random.insideUnitSphere; } else { Vector3 val3 = ((Component)val).transform.position - ((Component)this).transform.position; val2 = ((Vector3)(ref val3)).normalized; } Vector3 val4 = val2; ProjectileManager.instance.FireProjectile(Prefabs.Load<GameObject>("RoR2/Base/ElitePoison/UrchinSeekingProjectile.prefab"), ((Component)this).transform.position, Util.QuaternionSafeLookRotation(val4), controller.owner, ownerBody.damage * (Configs.secondaryMalachiteDamage.Value * (float)malachiteCount), 240f, ownerBody.RollCrit(), (DamageColorIndex)0, (GameObject)null, 100f); } } malachiteFireStopwatch += Time.fixedDeltaTime; } else { rigid.isKinematic = false; } } if (boomerang.transitionDuration != 1f) { boomerang.transitionDuration = 1f; } } } if (!Object.op_Implicit((Object)(object)owner) && Object.op_Implicit((Object)(object)controller)) { owner = controller.owner; if (Object.op_Implicit((Object)(object)owner)) { ownerBody = owner.GetComponent<CharacterBody>(); behaviour = owner.GetComponent<XenoSampleBehaviour>(); behaviour.boomerangProjectile = ((Component)this).gameObject; behaviour.boomerangBehaviour = this; boomerang.travelSpeed = 60f * (1f + Configs.secondaryNeutralSpeed.Value * (float)behaviour.GetSampleCount(0)); boomerang.transitionDuration = 1f * (1f + Configs.secondaryGlacialLifetimeMult.Value * (float)behaviour.GetSampleCount(3)); idealSpeed = boomerang.travelSpeed; Debug.LogWarning((object)idealSpeed); Debug.LogWarning((object)boomerang.transitionDuration); BoomerangProjectile obj = boomerang; obj.travelSpeed -= idealSpeed * speedReduction; Debug.LogWarning((object)boomerang.travelSpeed); int sampleCount = behaviour.GetSampleCount(6); if (sampleCount > 0) { RadialForce val5 = ((Component)this).gameObject.AddComponent<RadialForce>(); val5.radius = Configs.secondaryCelestinePullRadius.Value * (float)sampleCount; val5.forceMagnitude = -10000f; GameObject val6 = Object.Instantiate<GameObject>(Prefabs.gravSphere, ((Component)this).transform.position, Quaternion.identity, ((Component)this).transform); val6.GetComponentInChildren<ObjectScaleCurve>().baseScale = Vector3.one * val5.radius / 3f; } perfectedCount = behaviour.GetSampleCount(7); malachiteCount = behaviour.GetSampleCount(5); blazingCount = behaviour.GetSampleCount(1); mendingCount = behaviour.GetSampleCount(4); voidCount = behaviour.GetSampleCount(8); if (Object.op_Implicit((Object)(object)controller.ghost)) { fireRing = ((Component)((Component)controller.ghost).GetComponentsInChildren<MeshRenderer>()[2]).transform; if (Object.op_Implicit((Object)(object)fireRing)) { if (Object.op_Implicit((Object)(object)hitbox)) { Vector3 localScale = ((Component)hitbox).transform.localScale; ((Component)hitbox).transform.localScale = new Vector3(localScale.x + 0.8f * (float)blazingCount, localScale.y, localScale.z + 0.8f * (float)blazingCount); float num = ((Component)hitbox).transform.localScale.x * 0.16949153f; ((Component)fireRing).transform.localScale = Vector3.one * num; } if (blazingCount == 0) { ((Component)fireRing).transform.localScale = Vector3.zero; } } } } } if (Object.op_Implicit((Object)(object)ownerBody) && mendingCount > 0) { mendingStopwatch += Time.fixedDeltaTime; if (mendingStopwatch >= 0.1f) { mendingStopwatch = 0f; IEnumerable<HurtBox> enumerable = PickTargets(null, ownerBody.teamComponent.teamIndex, Configs.secondaryMendingRange.Value * (float)mendingCount); foreach (HurtBox item in enumerable) { if (!Object.op_Implicit((Object)(object)item.healthComponent) || !Object.op_Implicit((Object)(object)item.healthComponent.body) || !Object.op_Implicit((Object)(object)item.healthComponent.body.masterObject)) { continue; } AIFollowProjectile aIFollowProjectile = item.healthComponent.body.masterObject.GetComponent<AIFollowProjectile>(); if (!Object.op_Implicit((Object)(object)aIFollowProjectile)) { aIFollowProjectile = item.healthComponent.body.masterObject.AddComponent<AIFollowProjectile>(); } aIFollowProjectile.target = ((Component)this).gameObject; if (!NetworkServer.active) { continue; } for (int i = 0; i < mendingCount; i++) { item.healthComponent.body.AddTimedBuff(Prefabs.enemySpeedBuff, 1f, mendingCount); if (Object.op_Implicit((Object)(object)boomerang) && (int)boomerang.boomerangState == 2) { item.healthComponent.body.AddTimedBuff(Prefabs.sunder, Configs.secondaryMendingWeakenBuffDuration.Value, mendingCount); } } } } } if (!Object.op_Implicit((Object)(object)ownerBody) || perfectedCount <= 0) { return; } perfectedStopwatch += Time.fixedDeltaTime; if (perfectedStopwatch >= Configs.secondaryPerfectedFireDelay.Value / (float)perfectedCount) { perfectedStopwatch = 0f; Ray val7 = default(Ray); ((Ray)(ref val7))..ctor(((Component)this).transform.position, Vector3.down); RaycastHit val8 = default(RaycastHit); if (Physics.Raycast(val7, ref val8, 1000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)) && NetworkServer.active) { EffectData val9 = new EffectData { origin = ((RaycastHit)(ref val8)).point }; EffectManager.SpawnEffect(Prefabs.Load<GameObject>("RoR2/Base/Meteor/MeteorStrikeImpact.prefab"), val9, true); new BlastAttack { inflictor = ((Component)ownerBody).gameObject, baseDamage = ownerBody.damage * Configs.secondaryPerfectedDamage.Value, baseForce = 4000f, attackerFiltering = (AttackerFiltering)1, crit = ownerBody.RollCrit(), falloffModel = (FalloffModel)1, attacker = owner, bonusForce = Vector3.zero, damageColorIndex = (DamageColorIndex)3, position = ((RaycastHit)(ref val8)).point, procChainMask = default(ProcChainMask), procCoefficient = 1f, teamIndex = (TeamIndex)(-1), radius = 8f }.Fire(); } } } public void Recall() { //IL_005b: 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_0105: 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_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Expected O, but got Unknown //IL_00ce: 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_00ea: 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_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015f: 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_018e: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: 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_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)boomerang) || !Object.op_Implicit((Object)(object)overlap) || !Object.op_Implicit((Object)(object)behaviour) || !Object.op_Implicit((Object)(object)ownerBody)) { return; } boomerang.travelSpeed = idealSpeed; boomerang.boomerangState = (BoomerangState)2; if (sampleModifiers.Contains(4)) { } if (Object.op_Implicit((Object)(object)overlap)) { overlap.ResetOverlapAttack(); } if (blazingCount > 0) { if (Object.op_Implicit((Object)(object)hitbox) && Object.op_Implicit((Object)(object)fireRing)) { Transform transform = ((Component)hitbox).transform; transform.localScale *= 2f; Transform obj = fireRing; obj.localScale *= 2f; } EffectData val = new EffectData { origin = ((Component)this).transform.position, scale = Configs.secondaryBlazingRange.Value * (float)blazingCount }; EffectManager.SpawnEffect(Prefabs.boomerangBlazingExplosion, val, false); if (NetworkServer.active) { new BlastAttack { attacker = ((Component)this).gameObject, baseDamage = ownerBody.damage * (Configs.secondaryBlazingDamageMult.Value * (float)blazingCount), baseForce = 1200f, crit = ownerBody.RollCrit(), damageType = (DamageType)0, damageColorIndex = (DamageColorIndex)3, falloffModel = (FalloffModel)0, procCoefficient = 1f, radius = Configs.secondaryBlazingRange.Value * (float)blazingCount, position = ((Component)this).transform.position, attackerFiltering = (AttackerFiltering)2, teamIndex = ownerBody.teamComponent.teamIndex }.Fire(); } } } } internal class XenoCrosshairBehaviour : CrosshairController { private void Start() { //IL_0098: Unknown result type (might be due to invalid IL or missing references) HudElement component = ((Component)this).GetComponent<HudElement>(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.targetBodyObject) || !Util.HasEffectiveAuthority(component.targetBodyObject)) { return; } XenoSampleBehaviour component2 = component.targetBodyObject.GetComponent<XenoSampleBehaviour>(); component2.dotRoot = ((Component)this).GetComponent<ChildLocator>().FindChild("root"); component2.dots = ((Component)component2.dotRoot).GetComponentsInChildren<RawImage>(); if (Object.op_Implicit((Object)(object)component2.tracker)) { for (int i = 0; i < component2.tracker.sampleList.Count; i++) { ((Graphic)component2.dots[i]).color = component2.dotColor(component2.tracker.sampleList[i]); } } } } internal class XenoDroneBehaviour : MonoBehaviour { public GameObject ownerBodyObject; public CharacterMaster ownerMaster; public EntityStateMachine machine; public BaseAI ai; public CharacterMaster master; public SampleTracker tracker; public AISkillDriver hover; public float collectedDamage; private void Start() { ai = ((Component)this).GetComponent<BaseAI>(); master = ((Component)this).GetComponent<CharacterMaster>(); if (!Object.op_Implicit((Object)(object)master) || !Object.op_Implicit((Object)(object)master.minionOwnership) || !Object.op_Implicit((Object)(object)master.minionOwnership.ownerMaster)) { return; } master.ToggleGod(); tracker = ((Component)master.minionOwnership.ownerMaster).GetComponent<SampleTracker>(); if (Object.op_Implicit((Object)(object)tracker)) { tracker.droneMaster = master; tracker.droneBehaviour = this; tracker.droneAI = ai; } ownerBodyObject = master.minionOwnership.ownerMaster.GetBodyObject(); ownerMaster = master.minionOwnership.ownerMaster; if (Object.op_Implicit((Object)(object)ownerBodyObject)) { XenoSampleBehaviour component = ownerBodyObject.GetComponent<XenoSampleBehaviour>(); if (!Object.op_Implicit((Object)(object)component)) { } } machine = Array.Find(ownerBodyObject.GetComponents<EntityStateMachine>(), (EntityStateMachine x) => x.customName == "Drone"); hover = Array.Find(((Component)this).GetComponents<AISkillDriver>(), (AISkillDriver x) => x.customName == "HoverEnemies"); } } internal class XenoSampleBehaviour : NetworkBehaviour { public float maxTrackingDistance = 20f; public float maxTrackingAngle = 20f; public float trackerUpdateFrequency = 10f; public HurtBox trackingTarget; public CharacterBody characterBody; public TeamComponent teamComponent; public InputBankTest inputBank; public float trackerUpdateStopwatch; public Indicator indicator; private readonly BullseyeSearch search = new BullseyeSearch(); private GameObject samplePanel; private CharacterBody body; private SkillLocator skillLocator; public TextMeshProUGUI[] sampleCounters; public RawImage[] dots; public GameObject boomerangProjectile; public XenoBoomerang boomerangBehaviour; public SampleTracker tracker; public bool canExecute = true; public List<int> sampleCount = new List<int> { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; public MeshRenderer[] displaySamples; public string sound = "Play_ui_obj_nullWard_activate"; public float crosshairRotation = 0f; public Transform dotRoot; public float rotSpeed = -0.6f; private static int kCmdCmdAddEliteBuff; private static int kCmdCmdRemoveEliteBuff; private static int kRpcRpcAddSample; private static int kCmdCmdUpdateSampleCount; private static int kRpcRpcUpdateSampleCount; public Action<List<int>, List<int>> onSampleUpdated { get; set; } public HurtBox target => Object.op_Implicit((Object)(object)trackingTarget) ? trackingTarget : null; private void SearchForTarget(Ray aimRay) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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) search.teamMaskFilter = TeamMask.GetUnprotectedTeams(teamComponent.teamIndex); search.filterByLoS = true; search.searchOrigin = ((Ray)(ref aimRay)).origin; search.searchDirection = ((Ray)(ref aimRay)).direction; search.sortMode = (SortMode)1; search.maxDistanceFilter = maxTrackingDistance; search.maxAngleFilter = maxTrackingAngle; search.RefreshCandidates(); search.FilterOutGameObject(((Component)this).gameObject); trackingTarget = search.GetResults().FirstOrDefault(); } public Color dotColor(int sampleIndex) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: 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_00ab: Unknown result type (might be due to invalid IL or missing references) return (Color)(sampleIndex switch { 0 => MainPlugin.neutralColor, 1 => MainPlugin.blazingColor, 2 => MainPlugin.overloadingColor, 3 => new Color(0.5254902f, 0.9098039f, 0.9490196f), 4 => MainPlugin.mendingColor, 5 => new Color(0.2627451f, 48f / 85f, 0.2980392f), 6 => new Color(0.2627451f, 0.6039216f, 0.5803922f), 7 => MainPlugin.perfectedColor, 8 => MainPlugin.voidtouchedColor, _ => MainPlugin.neutralColor, }); } private Material getSampleMaterial(int sampleIndex) { return (Material)(sampleIndex switch { 1 => Prefabs.blazing, 2 => Prefabs.overloading, 3 => Prefabs.glacial, 4 => Prefabs.mending, 5 => Prefabs.malachite, 6 => Prefabs.celestine, 7 => Prefabs.perfected, 8 => Prefabs.voidtouched, _ => Prefabs.neutral, }); } private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown indicator = new Indicator(((Component)this).gameObject, Prefabs.scanIndicator); } private void OnEnable() { //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Expected O, but got Unknown maxTrackingDistance = 50f; indicator.active = true; body = ((Component)this).GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.modelLocator) && Object.op_Implicit((Object)(object)body.modelLocator.modelTransform)) { ChildLocator component = ((Component)body.modelLocator.modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component)) { displaySamples = ((Component)component.FindChild("Chest")).GetComponentsInChildren<MeshRenderer>(); } } skillLocator = body.skillLocator; HUD.Update += new hook_Update(HUD_Update); } private void OnDisable() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown indicator.active = false; HUD.Update -= new hook_Update(HUD_Update); if (Object.op_Implicit((Object)(object)samplePanel)) { Object.Destroy((Object)(object)samplePanel); } } private void Start() { //IL_01e7: 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Expected O, but got Unknown //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Expected O, but got Unknown //IL_016b: Unknown result type (might be due to invalid IL or missing references) characterBody = ((Component)this).GetComponent<CharacterBody>(); inputBank = ((Component)this).GetComponent<InputBankTest>(); teamComponent = ((Component)this).GetComponent<TeamComponent>(); if (Object.op_Implicit((Object)(object)body.masterObject)) { SampleTracker component = body.masterObject.GetComponent<SampleTracker>(); if (Object.op_Implicit((Object)(object)component)) { tracker = component; } else { tracker = body.masterObject.AddComponent<SampleTracker>(); } if (NetworkServer.active && !Object.op_Implicit((Object)(object)tracker.droneMaster)) { MasterSummon val = new MasterSummon { masterPrefab = Prefabs.droneMaster, position = ((Component)this).transform.position + ((Component)this).transform.forward * 3f, rotation = Util.QuaternionSafeLookRotation(((Component)this).transform.forward), summonerBodyObject = ((Component)this).gameObject, ignoreTeamMemberLimit = true }; tracker.droneMaster = val.Perform(); Deployable val2 = ((Component)tracker.droneMaster).gameObject.AddComponent<Deployable>(); val2.onUndeploy = new UnityEvent(); val2.onUndeploy.AddListener(new UnityAction(tracker.droneMaster.TrueKill)); characterBody.master.AddDeployable(val2, Prefabs.drone); } } if (!Object.op_Implicit((Object)(object)tracker)) { return; } if (tracker.crosshairRotation != 0f) { crosshairRotation = tracker.crosshairRotation; if (Object.op_Implicit((Object)(object)dotRoot)) { ((Component)dotRoot).transform.localRotation = Quaternion.Euler(0f, 0f, crosshairRotation); } } for (int i = 0; i < tracker.sampleList.Count; i++) { int index = tracker.sampleList[i]; sampleCount[index]++; } tracker.sampleCount = sampleCount; if (Object.op_Implicit((Object)(object)tracker.droneBehaviour) && !Object.op_Implicit((Object)(object)tracker.droneBehaviour.machine)) { tracker.droneBehaviour.machine = Array.Find(((Component)this).GetComponents<EntityStateMachine>(), (EntityStateMachine x) => x.customName == "Drone"); } tracker.body = body; for (int j = 0; j < tracker.sampleList.Count; j++) { ((Renderer)displaySamples[j]).material = getSampleMaterial(tracker.sampleList[j]); } List<int> sampleList = tracker.sampleList; for (int k = 0; k < sampleList.Count; k++) { int index2 = sampleList[k]; int num = sampleCount[index2]; SkillDef val3 = SpecialPickerState.indexSkillDef(index2); if (num == 10) { body.skillLocator.special.SetSkillOverride((object)((Component)this).gameObject, val3, (SkillOverridePriority)4); } } } public int GetSampleCount(int sampleIndex) { return sampleCount[sampleIndex]; } [Command] public void CmdAddEliteBuff(int buffIndex) { body.AddBuff((BuffIndex)buffIndex); } [Command] public void CmdRemoveEliteBuff(int buffIndex) { body.RemoveBuff((BuffIndex)buffIndex); } [ClientRpc] public void RpcAddSample(int sampleIndex) { //IL_010d: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)tracker) && !tracker.sampleList.IsNullOrEmpty() && !dots.IsNullOrEmpty() && !displaySamples.IsNullOrEmpty() && !sampleCount.IsNullOrEmpty() && !tracker.sampleCount.IsNullOrEmpty() && !sampleCounters.IsNullOrEmpty()) { if (tracker.currentSampleIndex != 9) { tracker.currentSampleIndex++; } else { tracker.currentSampleIndex = 0; } tracker.sampleList[tracker.currentSampleIndex] = sampleIndex; if (dots != null && dots.Length != 0 && Object.op_Implicit((Object)(object)dots[tracker.currentSampleIndex])) { ((Graphic)dots[tracker.currentSampleIndex]).color = dotColor(sampleIndex); } if (displaySamples != null && displaySamples.Length != 0 && Object.op_Implicit((Object)(object)displaySamples[tracker.currentSampleIndex])) { ((Renderer)displaySamples[tracker.currentSampleIndex]).material = getSampleMaterial(sampleIndex); } for (int i = 0; i < sampleCount.Count; i++) { sampleCount[i] = 0; } for (int j = 0; j < tracker.sampleList.Count; j++) { int index = tracker.sampleList[j]; sampleCount[index]++; } tracker.sampleCount = sampleCount; CallCmdUpdateSampleCount(sampleCount.ToArray()); for (int k = 0; k < sampleCounters.Length; k++) { int num = sampleCount[k]; ((TMP_Text)sampleCounters[k]).text = ((num > 0) ? ("x" + num) : ""); } crosshairRotation += -36f; tracker.crosshairRotation = crosshairRotation; onSampleUpdated?.Invoke(tracker.sampleList, sampleCount); } } [Command] public void CmdUpdateSampleCount(int[] s) { CallRpcUpdateSampleCount(s); } [ClientRpc] public void RpcUpdateSampleCount(int[] s) { List<int> list = s.ToList(); if (sampleCount != list) { sampleCount = list; tracker.sampleCount = sampleCount; } } private void FixedUpdate() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) trackerUpdateStopwatch += Time.fixedDeltaTime; if (trackerUpdateStopwatch >= 1f / trackerUpdateFrequency) { trackerUpdateStopwatch -= 1f / trackerUpdateFrequency; HurtBox val = trackingTarget; Ray aimRay = default(Ray); ((Ray)(ref aimRay))..ctor(inputBank.aimOrigin, inputBank.aimDirection); SearchForTarget(aimRay); indicator.targetTransform = (Object.op_Implicit((Object)(object)trackingTarget) ? ((Component)trackingTarget).transform : null); } if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.skillLocator) && Object.op_Implicit((Object)(object)body.skillLocator.utility)) { indicator.active = body.skillLocator.utility.CanExecute(); } if (Object.op_Implicit((Object)(object)dotRoot)) { ((Component)dotRoot).transform.localRotation = Quaternion.Lerp(((Component)dotRoot).transform.localRotation, Quaternion.Euler(0f, 0f, crosshairRotation), -36f * rotSpeed * Time.fixedDeltaTime); } } private void HUD_Update(orig_Update orig, HUD self) { //IL_00ac: 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) orig.Invoke(self); if (Object.op_Implicit((Object)(object)samplePanel) || !Object.op_Implicit((Object)(object)self.targetBodyObject) || !((Object)(object)self.targetBodyObject == (Object)(object)((Component)this).gameObject) || !Object.op_Implicit((Object)(object)self.mainUIPanel) || !Util.HasEffectiveAuthority(((Component)this).gameObject) || !Object.op_Implicit((Object)(object)self.skillIcons[3])) { return; } GameObject gameObject = ((Component)self.skillIcons[3]).gameObject; samplePanel = Object.Instantiate<GameObject>(Prefabs.samplePanel, gameObject.transform.parent); samplePanel.transform.localPosition = Vector2.op_Implicit(new Vector2(-100f, 300f)); sampleCounters = samplePanel.GetComponentsInChildren<TextMeshProUGUI>(); int i; for (i = 0; i < sampleCounters.Length; i++) { int num = tracker.sampleList.Count((int x) => x == i); ((TMP_Text)sampleCounters[i]).text = ((num > 0) ? ("x" + num) : ""); } } private void UNetVersion() { } protected static void InvokeCmdCmdAddEliteBuff(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdAddEliteBuff called on client."); } else { ((XenoSampleBehaviour)(object)obj).CmdAddEliteBuff((int)reader.ReadPackedUInt32()); } } protected static void InvokeCmdCmdRemoveEliteBuff(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdRemoveEliteBuff called on client."); } else { ((XenoSampleBehaviour)(object)obj).CmdRemoveEliteBuff((int)reader.ReadPackedUInt32()); } } protected static void InvokeCmdCmdUpdateSampleCount(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdUpdateSampleCount called on client."); } else { ((XenoSampleBehaviour)(object)obj).CmdUpdateSampleCount(GeneratedNetworkCode._ReadArrayInt32_None(reader)); } } public void CallCmdAddEliteBuff(int buffIndex) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdAddEliteBuff called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdAddEliteBuff(buffIndex); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdAddEliteBuff); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); val.WritePackedUInt32((uint)buffIndex); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdAddEliteBuff"); } public void CallCmdRemoveEliteBuff(int buffIndex) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdRemoveEliteBuff called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdRemoveEliteBuff(buffIndex); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdRemoveEliteBuff); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); val.WritePackedUInt32((uint)buffIndex); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdRemoveEliteBuff"); } public void CallCmdUpdateSampleCount(int[] s) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdUpdateSampleCount called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdUpdateSampleCount(s); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdUpdateSampleCount); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); GeneratedNetworkCode._WriteArrayInt32_None(val, s); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdUpdateSampleCount"); } protected static void InvokeRpcRpcAddSample(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkClient.active) { Debug.LogError((object)"RPC RpcAddSample called on server."); } else { ((XenoSampleBehaviour)(object)obj).RpcAddSample((int)reader.ReadPackedUInt32()); } } protected static void InvokeRpcRpcUpdateSampleCount(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkClient.active) { Debug.LogError((object)"RPC RpcUpdateSampleCount called on server."); } else { ((XenoSampleBehaviour)(object)obj).RpcUpdateSampleCount(GeneratedNetworkCode._ReadArrayInt32_None(reader)); } } public void CallRpcAddSample(int sampleIndex) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { Debug.LogError((object)"RPC Function RpcAddSample called on client."); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)2); val.WritePackedUInt32((uint)kRpcRpcAddSample); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); val.WritePackedUInt32((uint)sampleIndex); ((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcAddSample"); } public void CallRpcUpdateSampleCount(int[] s) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { Debug.LogError((object)"RPC Function RpcUpdateSampleCount called on client."); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)2); val.WritePackedUInt32((uint)kRpcRpcUpdateSampleCount); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); GeneratedNetworkCode._WriteArrayInt32_None(val, s); ((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcUpdateSampleCount"); } static XenoSampleBehaviour() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Expected O, but got Unknown //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Expected O, but got Unknown kCmdCmdAddEliteBuff = -1770257014; NetworkBehaviour.RegisterCommandDelegate(typeof(XenoSampleBehaviour), kCmdCmdAddEliteBuff, new CmdDelegate(InvokeCmdCmdAddEliteBuff)); kCmdCmdRemoveEliteBuff = 895178653; NetworkBehaviour.RegisterCommandDelegate(typeof(XenoSampleBehaviour), kCmdCmdRemoveEliteBuff, new CmdDelegate(InvokeCmdCmdRemoveEliteBuff)); kCmdCmdUpdateSampleCount = -1854395273; NetworkBehaviour.RegisterCommandDelegate(typeof(XenoSampleBehaviour), kCmdCmdUpdateSampleCount, new CmdDelegate(InvokeCmdCmdUpdateSampleCount)); kRpcRpcAddSample = 138843408; NetworkBehaviour.RegisterRpcDelegate(typeof(XenoSampleBehaviour), kRpcRpcAddSample, new CmdDelegate(InvokeRpcRpcAddSample)); kRpcRpcUpdateSampleCount = -460886175; NetworkBehaviour.RegisterRpcDelegate(typeof(XenoSampleBehaviour), kRpcRpcUpdateSampleCount, new CmdDelegate(InvokeRpcRpcUpdateSampleCount)); NetworkCRC.RegisterBehaviour("XenoSampleBehaviour", 0); } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { bool result = default(bool); return result; } public override void OnDeserialize(NetworkReader reader, bool initialState) { } } internal class Configs { internal static ConfigFile primary; internal static ConfigFile secondary; internal static ConfigFile utility; internal static ConfigFile special; internal static ConfigEntry<float> primaryBaseDamage; internal static ConfigEntry<int> primaryBaseFireCount; internal static ConfigEntry<float> primaryNeutralDamageReduction; internal static ConfigEntry<float> primaryNeutralSpeedIncrease; internal static ConfigEntry<float> primaryBlazingDamage; internal static ConfigEntry<float> primaryBlazingAllyDamage; internal static ConfigEntry<float> primaryOverloadingSpeed; internal static ConfigEntry<float> primaryGlacialRadius; internal static ConfigEntry<float> primaryGlacialDamageMult; internal static ConfigEntry<float> primaryMendingLSMult; internal static ConfigEntry<float> primaryMendingAllyHeal; internal static ConfigEntry<float> primaryMalachiteDamage; internal static ConfigEntry<float> primaryCelestineSlowMult; internal static ConfigEntry<float> primaryCelestineArmorReduction; internal static ConfigEntry<float> primaryPerfectedCurseMult; internal static ConfigEntry<float> primaryPerfectedDamageMult; internal static ConfigEntry<float> primaryVoidtouchedKOChance; internal static ConfigEntry<float> primaryVoidtouchedKODamage; internal static ConfigEntry<float> secondaryBaseDamage; internal static ConfigEntry<float> secondaryNeutralSpeed; internal static ConfigEntry<float> secondaryBlazingRange; internal static ConfigEntry<float> secondaryBlazingDamageMult; internal static ConfigEntry<float> secondaryOverloadingCDReduction; internal static ConfigEntry<float> secondaryOverloadingDashMult; internal static ConfigEntry<float> secondaryOverloadingDashDamageMult; internal static ConfigEntry<float> secondaryGlacialLifetimeMult; internal static ConfigEntry<float> secondaryGlacialSpeedReduction; internal static ConfigEntry<float> secondaryMendingRange; internal static ConfigEntry<float> secondaryMendingSpeedBuff; internal static ConfigEntry<float> secondaryMendingWeakenBuff; internal static ConfigEntry<float> secondaryMendingWeakenBuffDuration; internal static ConfigEntry<float> secondaryMalachiteStopDuration; internal static ConfigEntry<float> secondaryMalachiteFireDelay; internal static ConfigEntry<float> secondaryMalachiteDamage; internal static ConfigEntry<float> secondaryCelestinePullRadius; internal static ConfigEntry<float> secondaryPerfectedFireDelay; internal static ConfigEntry<float> secondaryPerfectedDamage; internal static ConfigEntry<int> secondaryVoidtouchedHitCount; internal static ConfigEntry<float> utilityBaseTargetDuration; internal static ConfigEntry<float> utilityBaseTargetCD; internal static ConfigEntry<float> utilityNeutralCrit; internal static ConfigEntry<float> utilityBlazingDamage; internal static ConfigEntry<float> utilityOverloadingLightningChance; internal static ConfigEntry<float> utilityOverloadingLightningDamage; internal static ConfigEntry<float> utilityOverloadingLightningRange; internal static ConfigEntry<float> utilityGlacialFreezeChance; internal static ConfigEntry<float> utilityMendingDamage; internal static ConfigEntry<float> utilityMendingHeal; internal static ConfigEntry<float> utilityMalachiteDamage; internal static ConfigEntry<float> utilityCelestineChance; internal static ConfigEntry<float> utilityCelestineDuration; internal static ConfigEntry<float> utilityPerfectedDMGMult; internal static ConfigEntry<float> utilityVoidtouchedChance; internal static ConfigEntry<float> specialBaseDamage; internal static ConfigEntry<float> specialNeutralDamage; internal static ConfigEntry<float> specialBlazingDamage; internal static ConfigEntry<int> specialBlazingHitCount; internal static ConfigEntry<float> specialBlazingBurnDamage; internal static ConfigEntry<float> specialOverloadingDamage; internal static ConfigEntry<float> specialGlacialDamage; internal static ConfigEntry<float> specialGlacialRadius; internal static ConfigEntry<float> specialMendingHeal; internal static ConfigEntry<float> specialMalachiteDamage; internal static ConfigEntry<float> specialMalachiteForce; internal static ConfigEntry<float> specialMalachiteRate; internal static ConfigEntry<int> specialCelestineArmor; internal static ConfigEntry<float> specialCelestineSpeed; internal static ConfigEntry<float> specialCelestineDuration; internal static ConfigEntry<float> specialPerfectedExecuteThreshold; internal static ConfigEntry<int> specialVoidtouchedHPLeft; internal static void SetConfigs() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0078: 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_0097: Expected O, but got Unknown //IL_0097: Expected O, but got Unknown //IL_00ab: 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_00c6: Expected O, but got Unknown //IL_00c6: Expected O, but got Unknown //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected O, but got Unknown //IL_00f9: Expected O, but got Unknown //IL_010d: 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_012c: Expected O, but got Unknown //IL_012c: Expected O, but got Unknown //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected O, but got Unknown //IL_015f: Expected O, but got Unknown //IL_0173: 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) //IL_0192: Expected O, but got Unknown //IL_0192: Expected O, but got Unknown //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Expected O, but got Unknown //IL_01c5: Expected O, but got Unknown //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Expected O, but got Unknown //IL_01f8: Expected O, but got Unknown //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Expected O, but got Unknown //IL_022b: Expected O, but got Unknown //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Expected O, but got Unknown //IL_025e: Expected O, but got Unknown //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Expected O, but got Unknown //IL_0291: Expected O, but got Unknown //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02c4: Expected O, but got Unknown //IL_02c4: Expected O, but got Unknown //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_02f7: Expected O, but got Unknown //IL_02f7: Expected O, but got Unknown //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0320: Unknown result type (might be due to invalid IL or missing references) //IL_032a: Expected O, but got Unknown //IL_032a: Expected O, but got Unknown //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Expected O, but got Unknown //IL_035d: Expected O, but got Unknown //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_0386: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Expected O, but got Unknown //IL_0390: Expected O, but got Unknown //IL_03a4: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Unknown result type (might be due to invalid IL or missing references) //IL_03c3: Expected O, but got Unknown //IL_03c3: Expected O, but got Unknown //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Expected O, but got Unknown //IL_03f6: Expected O, but got Unknown //IL_040a: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_0429: Expected O, but got Unknown //IL_0429: Expected O, but got Unknown //IL_043d: Unknown result type (might be due to invalid IL or missing references) //IL_0452: Unknown result type (might be due to invalid IL or missing references) //IL_045c: Expected O, but got Unknown /