Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Xenologist v1.0.3
Xenologist.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.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 /