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 PingOrdering v1.1.2
PingOrdering.dll
Decompiled 2 years agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using EntityStates; using EntityStates.AI; using EntityStates.AI.Walker; using IL.RoR2.UI; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Navigation; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("PingOrdering")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+dc3c63f8043ea2277dec5f28ddcc3914ebce0876")] [assembly: AssemblyProduct("PingOrdering")] [assembly: AssemblyTitle("PingOrdering")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace PingOrdering; public class AwaitOrders : BaseAIState { public enum Orders { None, Move, Attack, Assist } public Orders order; public Vector3? targetPosition; public GameObject target; public float sprintThreshold; public PingIndicator ping; public AwaitOrders(PingIndicator ing = null) { ping = ing; } public override void OnEnter() { //IL_00eb: 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_0105: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_01da: 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_01f5: 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) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_0375: 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_0382: Unknown result type (might be due to invalid IL or missing references) //IL_038f: 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) ((BaseAIState)this).OnEnter(); if (!Object.op_Implicit((Object)(object)((BaseAIState)this).ai) || !Object.op_Implicit((Object)(object)((BaseAIState)this).body)) { ((EntityState)this).outer.SetNextStateToMain(); AIOrdersPlugin.subordinateDict[((BaseAIState)this).characterMaster.minionOwnership.ownerMaster].Remove(this); return; } if (!Object.op_Implicit((Object)(object)ping)) { ping = Object.Instantiate<GameObject>(LegacyResourcesAPI.Load<GameObject>("Prefabs/PingIndicator")).GetComponent<PingIndicator>(); PingIndicator obj = ping; MinionOwnership minionOwnership = ((BaseAIState)this).characterMaster.minionOwnership; object pingOwner; if (minionOwnership == null) { pingOwner = null; } else { CharacterMaster ownerMaster = minionOwnership.ownerMaster; pingOwner = ((ownerMaster != null) ? ((Component)ownerMaster).gameObject : null); } obj.pingOwner = (GameObject)pingOwner; PingIndicator obj2 = ping; CharacterBody body = ((BaseAIState)this).body; Vector3? obj3; if (body == null) { obj3 = null; } else { Transform transform = body.transform; obj3 = ((transform != null) ? new Vector3?(transform.position) : null); } obj2.pingOrigin = (Vector3)(((??)obj3) ?? ((EntityState)this).transform.position); ping.pingNormal = Vector3.zero; ping.pingTarget = ((Component)((BaseAIState)this).body).gameObject; ((Component)ping).transform.position = ((BaseAIState)this).body.transform.position; ping.positionIndicator.targetTransform = ((BaseAIState)this).body.transform; ping.positionIndicator.defaultPosition = ((BaseAIState)this).body.transform.position; ping.targetTransformToFollow = ((BaseAIState)this).body.coreTransform; ping.pingDuration = float.PositiveInfinity; ping.fixedTimer = float.PositiveInfinity; ping.pingColor = Color.cyan; ((Graphic)ping.pingText).color = ping.textBaseColor * ping.pingColor; TextMeshPro pingText = ping.pingText; MinionOwnership minionOwnership2 = ((BaseAIState)this).characterMaster.minionOwnership; ((TMP_Text)pingText).text = Util.GetBestMasterName((minionOwnership2 != null) ? minionOwnership2.ownerMaster : null); ((Behaviour)ping.pingObjectScaleCurve).enabled = false; ((Behaviour)ping.pingObjectScaleCurve).enabled = true; ping.pingHighlight.highlightColor = (HighlightColor)451; Highlight pingHighlight = ping.pingHighlight; ModelLocator modelLocator = ((BaseAIState)this).body.modelLocator; object targetRenderer; if (modelLocator == null) { targetRenderer = null; } else { Transform modelTransform = modelLocator.modelTransform; targetRenderer = ((modelTransform == null) ? null : ((Component)modelTransform).GetComponentInChildren<CharacterModel>()?.baseRendererInfos?.First((RendererInfo r) => !r.ignoreOverlays).renderer); } pingHighlight.targetRenderer = (Renderer)targetRenderer; ping.pingHighlight.strength = 1f; ping.pingHighlight.isOn = true; GameObject[] enemyPingGameObjects = ping.enemyPingGameObjects; foreach (GameObject val in enemyPingGameObjects) { val.SetActive(true); SpriteRenderer component = val.GetComponent<SpriteRenderer>(); if (Object.op_Implicit((Object)(object)component)) { component.color = Color.cyan; } ParticleSystem component2 = val.GetComponent<ParticleSystem>(); if (Object.op_Implicit((Object)(object)component2)) { MainModule main = component2.main; MinMaxGradient startColor = ((MainModule)(ref main)).startColor; ((MinMaxGradient)(ref startColor)).colorMax = Color.cyan; ((MinMaxGradient)(ref startColor)).colorMin = Color.cyan; ((MinMaxGradient)(ref startColor)).color = Color.cyan; } } } AISkillDriver? obj4 = ((IEnumerable<AISkillDriver>)((BaseAIState)this).ai.skillDrivers).FirstOrDefault((Func<AISkillDriver, bool>)((AISkillDriver drive) => drive.shouldSprint)); sprintThreshold = ((obj4 != null) ? obj4.minDistanceSqr : float.PositiveInfinity); } public override void FixedUpdate() { //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Expected O, but got Unknown //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: 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_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) //IL_01b3: 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_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) ((BaseAIState)this).FixedUpdate(); if (!Object.op_Implicit((Object)(object)((BaseAIState)this).ai)) { ((EntityState)this).outer.SetNextStateToMain(); AIOrdersPlugin.subordinateDict[((BaseAIState)this).characterMaster.minionOwnership.ownerMaster].Remove(this); return; } if (!Object.op_Implicit((Object)(object)target) && !targetPosition.HasValue) { ((BaseAIState)this).AimAt(ref base.bodyInputs, ((BaseAIState)this).ai.leader); } switch (order) { case Orders.None: break; case Orders.Attack: ((BaseAIState)this).ai.currentEnemy.gameObject = target; ((BaseAIState)this).ai.enemyAttention = ((BaseAIState)this).ai.enemyAttentionDuration; ((EntityState)this).outer.SetNextState((EntityState)new Combat()); break; case Orders.Move: { if (!Object.op_Implicit((Object)(object)((BaseAIState)this).body) || ((BaseAIState)this).body.moveSpeed == 0f) { ((EntityState)this).outer.SetNextStateToMain(); } Agent broadNavigationAgent = ((BaseAIState)this).ai.broadNavigationAgent; ((Agent)(ref broadNavigationAgent)).currentPosition = ((BaseAIState)this).ai.body.footPosition; ((BaseAIState)this).ai.SetGoalPosition(targetPosition); LocalNavigator localNavigator = ((BaseAIState)this).ai.localNavigator; AgentOutput output = ((Agent)(ref broadNavigationAgent)).output; localNavigator.targetPosition = (Vector3)(((??)((AgentOutput)(ref output)).nextPosition) ?? ((BaseAIState)this).ai.localNavigator.targetPosition); output = ((Agent)(ref broadNavigationAgent)).output; if (!((AgentOutput)(ref output)).targetReachable) { ((Agent)(ref broadNavigationAgent)).InvalidatePath(); } ((BaseAIState)this).ai.localNavigator.Update(BaseAIState.cvAIUpdateInterval.value); base.bodyInputs.moveVector = ((BaseAIState)this).ai.localNavigator.moveVector; Vector3 val = ((BaseAIState)this).body.footPosition - targetPosition.Value; float sqrMagnitude = ((Vector3)(ref val)).sqrMagnitude; base.bodyInputs.pressSprint = sqrMagnitude > sprintThreshold; if (((BaseAIState)this).ai.localNavigator.wasObstructedLastUpdate) { ((BaseAIState)this).ModifyInputsForJumpIfNeccessary(ref base.bodyInputs); } float num = ((BaseAIState)this).body.radius * ((BaseAIState)this).body.radius * 4f; if (sqrMagnitude < num) { ((EntityState)this).outer.SetNextStateToMain(); } break; } case Orders.Assist: ((BaseAIState)this).ai.buddy.gameObject = target; ((BaseAIState)this).ai.customTarget.gameObject = target; ((EntityState)this).outer.SetNextState((EntityState)new Combat()); break; } } public override void OnExit() { ((BaseAIState)this).OnExit(); if (Object.op_Implicit((Object)(object)ping)) { ping.fixedTimer = 0f; } } public void SubmitOrder(Orders command, GameObject target, Vector3? targetPosition = null) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) order = command; this.target = target; this.targetPosition = targetPosition; if (targetPosition.HasValue) { Agent broadNavigationAgent = ((BaseAIState)this).ai.broadNavigationAgent; ((Agent)(ref broadNavigationAgent)).goalPosition = targetPosition; ((Agent)(ref broadNavigationAgent)).InvalidatePath(); } } } [BepInPlugin("xyz.yekoc.PingOrdering", "Ping Ordering", "1.1.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class AIOrdersPlugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Update <>9__2_0; public static Func<Instruction, bool> <>9__2_4; public static Func<Instruction, bool> <>9__2_5; public static Func<PingIndicator, bool> <>9__2_6; public static Func<Instruction, bool> <>9__2_7; public static Func<Instruction, bool> <>9__2_8; public static Func<PingIndicator, bool> <>9__2_9; public static Manipulator <>9__2_1; public static hook_GetColor <>9__2_2; internal void <Awake>b__2_0(orig_Update orig, PlayerCharacterMasterController self) { //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_0034: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); KeyboardShortcut value = attentionButton.Value; if (!((KeyboardShortcut)(ref value)).IsPressed() || !self.hasEffectiveAuthority) { return; } MinionGroup val = MinionGroup.FindGroup(((NetworkBehaviour)self.master).netId); if (val == null) { return; } MinionOwnership[] members = val.members; foreach (MinionOwnership val2 in members) { if (!Object.op_Implicit((Object)(object)((val2 != null) ? ((Component)val2).gameObject : null))) { continue; } AwaitOrders awaitOrders = new AwaitOrders(); if (!subordinateDict.ContainsKey(self.master)) { subordinateDict.Add(self.master, new List<AwaitOrders>()); } subordinateDict[self.master].Add(awaitOrders); if (val2 == null) { continue; } GameObject gameObject = ((Component)val2).gameObject; if (gameObject != null) { EntityStateMachine component = gameObject.GetComponent<EntityStateMachine>(); if (component != null) { component.SetState((EntityState)(object)awaitOrders); } } } } internal void <Awake>b__2_1(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_ENEMY") }); val.Index += 6; ILLabel val2 = val.MarkLabel(); val.GotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_ENEMY") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<PingIndicator, bool>>((Func<PingIndicator, bool>)delegate(PingIndicator self) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: 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_017a: 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_01bc: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass2_0 <>c__DisplayClass2_ = new <>c__DisplayClass2_0 { self = self }; CharacterMaster component2 = <>c__DisplayClass2_.self.pingOwner.GetComponent<CharacterMaster>(); CharacterMaster master = <>c__DisplayClass2_.self.pingTarget.GetComponent<CharacterBody>().master; if (subordinateDict.ContainsKey(component2) && subordinateDict[component2].Any()) { <>c__DisplayClass2_1 CS$<>8__locals1 = new <>c__DisplayClass2_1 { CS$<>8__locals1 = <>c__DisplayClass2_, flag = TeamManager.IsTeamEnemy(component2.teamIndex, master.teamIndex) }; subordinateDict[component2].ForEach(delegate(AwaitOrders m) { m.SubmitOrder(CS$<>8__locals1.flag ? AwaitOrders.Orders.Attack : AwaitOrders.Orders.Assist, CS$<>8__locals1.CS$<>8__locals1.self.pingTarget); }); subordinateDict.Remove(component2); CS$<>8__locals1.CS$<>8__locals1.self.pingDuration = 1f; return true; } BaseAI component3 = ((Component)master).GetComponent<BaseAI>(); object obj; if (component3 == null) { obj = null; } else { CharacterBody characterBody = component3.leader.characterBody; obj = ((characterBody != null) ? characterBody.master : null); } if ((Object)obj == (Object)(object)component2) { <>c__DisplayClass2_.self.pingOwner.GetComponent<PingerController>().pingIndicator = null; PingerController component4 = <>c__DisplayClass2_.self.pingOwner.GetComponent<PingerController>(); component4.pingStock++; subordinateDict.Add(component2, new List<AwaitOrders> { new AwaitOrders(<>c__DisplayClass2_.self) }); ((Component)master).GetComponent<EntityStateMachine>().SetState((EntityState)(object)subordinateDict[component2][0]); <>c__DisplayClass2_.self.pingColor = Color.cyan; <>c__DisplayClass2_.self.pingDuration = float.PositiveInfinity; <>c__DisplayClass2_.self.enemyPingGameObjects[0].GetComponent<SpriteRenderer>().color = Color.cyan; <>c__DisplayClass2_.self.pingHighlight.highlightColor = (HighlightColor)451; return true; } return false; }); val.Emit(OpCodes.Brtrue, (object)val2); val.Index = 0; val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_DEFAULT") }); val.Index += 5; val2 = val.MarkLabel(); val.GotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_DEFAULT") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<PingIndicator, bool>>((Func<PingIndicator, bool>)delegate(PingIndicator self) { <>c__DisplayClass2_2 CS$<>8__locals0 = new <>c__DisplayClass2_2 { self = self }; CharacterMaster component = CS$<>8__locals0.self.pingOwner.GetComponent<CharacterMaster>(); if (subordinateDict.ContainsKey(component)) { subordinateDict[component].ForEach(delegate(AwaitOrders m) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) m.SubmitOrder(AwaitOrders.Orders.Move, null, CS$<>8__locals0.self.pingOrigin); }); subordinateDict.Remove(component); CS$<>8__locals0.self.pingDuration = 1f; return true; } return false; }); val.Emit(OpCodes.Brtrue, (object)val2); } internal bool <Awake>b__2_4(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_ENEMY"); } internal bool <Awake>b__2_5(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_ENEMY"); } internal bool <Awake>b__2_6(PingIndicator self) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: 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_017a: 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_01bc: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass2_0 <>c__DisplayClass2_ = new <>c__DisplayClass2_0 { self = self }; CharacterMaster component = <>c__DisplayClass2_.self.pingOwner.GetComponent<CharacterMaster>(); CharacterMaster master = <>c__DisplayClass2_.self.pingTarget.GetComponent<CharacterBody>().master; if (subordinateDict.ContainsKey(component) && subordinateDict[component].Any()) { <>c__DisplayClass2_1 CS$<>8__locals0 = new <>c__DisplayClass2_1 { CS$<>8__locals1 = <>c__DisplayClass2_, flag = TeamManager.IsTeamEnemy(component.teamIndex, master.teamIndex) }; subordinateDict[component].ForEach(delegate(AwaitOrders m) { m.SubmitOrder(CS$<>8__locals0.flag ? AwaitOrders.Orders.Attack : AwaitOrders.Orders.Assist, CS$<>8__locals0.CS$<>8__locals1.self.pingTarget); }); subordinateDict.Remove(component); CS$<>8__locals0.CS$<>8__locals1.self.pingDuration = 1f; return true; } BaseAI component2 = ((Component)master).GetComponent<BaseAI>(); object obj; if (component2 == null) { obj = null; } else { CharacterBody characterBody = component2.leader.characterBody; obj = ((characterBody != null) ? characterBody.master : null); } if ((Object)obj == (Object)(object)component) { <>c__DisplayClass2_.self.pingOwner.GetComponent<PingerController>().pingIndicator = null; PingerController component3 = <>c__DisplayClass2_.self.pingOwner.GetComponent<PingerController>(); component3.pingStock++; subordinateDict.Add(component, new List<AwaitOrders> { new AwaitOrders(<>c__DisplayClass2_.self) }); ((Component)master).GetComponent<EntityStateMachine>().SetState((EntityState)(object)subordinateDict[component][0]); <>c__DisplayClass2_.self.pingColor = Color.cyan; <>c__DisplayClass2_.self.pingDuration = float.PositiveInfinity; <>c__DisplayClass2_.self.enemyPingGameObjects[0].GetComponent<SpriteRenderer>().color = Color.cyan; <>c__DisplayClass2_.self.pingHighlight.highlightColor = (HighlightColor)451; return true; } return false; } internal bool <Awake>b__2_7(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_DEFAULT"); } internal bool <Awake>b__2_8(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_DEFAULT"); } internal bool <Awake>b__2_9(PingIndicator self) { <>c__DisplayClass2_2 CS$<>8__locals0 = new <>c__DisplayClass2_2 { self = self }; CharacterMaster component = CS$<>8__locals0.self.pingOwner.GetComponent<CharacterMaster>(); if (subordinateDict.ContainsKey(component)) { subordinateDict[component].ForEach(delegate(AwaitOrders m) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) m.SubmitOrder(AwaitOrders.Orders.Move, null, CS$<>8__locals0.self.pingOrigin); }); subordinateDict.Remove(component); CS$<>8__locals0.self.pingDuration = 1f; return true; } return false; } internal Color <Awake>b__2_2(orig_GetColor orig, Highlight self) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: 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_0021: Invalid comparison between Unknown and I4 //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) Color val = orig.Invoke(self); if (val == Color.magenta && (int)self.highlightColor == 451) { return Color.cyan + new Color(0.01f, 0f, 0f); } return val; } } [CompilerGenerated] private sealed class <>c__DisplayClass2_0 { public PingIndicator self; } [CompilerGenerated] private sealed class <>c__DisplayClass2_1 { public bool flag; public <>c__DisplayClass2_0 CS$<>8__locals1; internal void <Awake>b__10(AwaitOrders m) { m.SubmitOrder(flag ? AwaitOrders.Orders.Attack : AwaitOrders.Orders.Assist, CS$<>8__locals1.self.pingTarget); } } [CompilerGenerated] private sealed class <>c__DisplayClass2_2 { public PingIndicator self; internal void <Awake>b__11(AwaitOrders m) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) m.SubmitOrder(AwaitOrders.Orders.Move, null, self.pingOrigin); } } public static Dictionary<CharacterMaster, List<AwaitOrders>> subordinateDict = new Dictionary<CharacterMaster, List<AwaitOrders>>(); public static ConfigEntry<KeyboardShortcut> attentionButton; private void Awake() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown //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) //IL_00b1: Expected O, but got Unknown attentionButton = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("Controls", "Order All", new KeyboardShortcut((KeyCode)102, Array.Empty<KeyCode>()), "Calls the attention of all subordiantes."); if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")) { RoOptionize(); } object obj = <>c.<>9__2_0; if (obj == null) { hook_Update val = delegate(orig_Update orig, PlayerCharacterMasterController self) { //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_0034: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); KeyboardShortcut value = attentionButton.Value; if (((KeyboardShortcut)(ref value)).IsPressed() && self.hasEffectiveAuthority) { MinionGroup val8 = MinionGroup.FindGroup(((NetworkBehaviour)self.master).netId); if (val8 != null) { MinionOwnership[] members = val8.members; foreach (MinionOwnership val9 in members) { if (Object.op_Implicit((Object)(object)((val9 != null) ? ((Component)val9).gameObject : null))) { AwaitOrders awaitOrders = new AwaitOrders(); if (!subordinateDict.ContainsKey(self.master)) { subordinateDict.Add(self.master, new List<AwaitOrders>()); } subordinateDict[self.master].Add(awaitOrders); if (val9 != null) { GameObject gameObject = ((Component)val9).gameObject; if (gameObject != null) { EntityStateMachine component5 = gameObject.GetComponent<EntityStateMachine>(); if (component5 != null) { component5.SetState((EntityState)(object)awaitOrders); } } } } } } } }; <>c.<>9__2_0 = val; obj = (object)val; } PlayerCharacterMasterController.Update += (hook_Update)obj; object obj2 = <>c.<>9__2_1; if (obj2 == null) { Manipulator val2 = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) ILCursor val6 = new ILCursor(il); val6.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_ENEMY") }); val6.Index += 6; ILLabel val7 = val6.MarkLabel(); val6.GotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_ENEMY") }); val6.Emit(OpCodes.Ldarg_0); val6.EmitDelegate<Func<PingIndicator, bool>>((Func<PingIndicator, bool>)delegate(PingIndicator self) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: 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_017a: 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_01bc: Unknown result type (might be due to invalid IL or missing references) CharacterMaster component2 = self.pingOwner.GetComponent<CharacterMaster>(); CharacterMaster master = self.pingTarget.GetComponent<CharacterBody>().master; if (subordinateDict.ContainsKey(component2) && subordinateDict[component2].Any()) { bool flag = TeamManager.IsTeamEnemy(component2.teamIndex, master.teamIndex); subordinateDict[component2].ForEach(delegate(AwaitOrders m) { m.SubmitOrder(flag ? AwaitOrders.Orders.Attack : AwaitOrders.Orders.Assist, self.pingTarget); }); subordinateDict.Remove(component2); self.pingDuration = 1f; return true; } BaseAI component3 = ((Component)master).GetComponent<BaseAI>(); object obj4; if (component3 == null) { obj4 = null; } else { CharacterBody characterBody = component3.leader.characterBody; obj4 = ((characterBody != null) ? characterBody.master : null); } if ((Object)obj4 == (Object)(object)component2) { self.pingOwner.GetComponent<PingerController>().pingIndicator = null; PingerController component4 = self.pingOwner.GetComponent<PingerController>(); component4.pingStock++; subordinateDict.Add(component2, new List<AwaitOrders> { new AwaitOrders(self) }); ((Component)master).GetComponent<EntityStateMachine>().SetState((EntityState)(object)subordinateDict[component2][0]); self.pingColor = Color.cyan; self.pingDuration = float.PositiveInfinity; self.enemyPingGameObjects[0].GetComponent<SpriteRenderer>().color = Color.cyan; self.pingHighlight.highlightColor = (HighlightColor)451; return true; } return false; }); val6.Emit(OpCodes.Brtrue, (object)val7); val6.Index = 0; val6.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_DEFAULT") }); val6.Index += 5; val7 = val6.MarkLabel(); val6.GotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "PLAYER_PING_DEFAULT") }); val6.Emit(OpCodes.Ldarg_0); val6.EmitDelegate<Func<PingIndicator, bool>>((Func<PingIndicator, bool>)delegate(PingIndicator self) { CharacterMaster component = self.pingOwner.GetComponent<CharacterMaster>(); if (subordinateDict.ContainsKey(component)) { subordinateDict[component].ForEach(delegate(AwaitOrders m) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) m.SubmitOrder(AwaitOrders.Orders.Move, null, self.pingOrigin); }); subordinateDict.Remove(component); self.pingDuration = 1f; return true; } return false; }); val6.Emit(OpCodes.Brtrue, (object)val7); }; <>c.<>9__2_1 = val2; obj2 = (object)val2; } PingIndicator.RebuildPing += (Manipulator)obj2; object obj3 = <>c.<>9__2_2; if (obj3 == null) { hook_GetColor val3 = delegate(orig_GetColor orig, Highlight self) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: 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_0021: Invalid comparison between Unknown and I4 //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) Color val5 = orig.Invoke(self); return (val5 == Color.magenta && (int)self.highlightColor == 451) ? (Color.cyan + new Color(0.01f, 0f, 0f)) : val5; }; <>c.<>9__2_2 = val3; obj3 = (object)val3; } Highlight.GetColor += (hook_GetColor)obj3; ContentManager.collectContentPackProviders += (CollectContentPackProvidersDelegate)delegate(AddContentPackProviderDelegate del) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Expected O, but got Unknown //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown SimpleContentPackProvider val4 = new SimpleContentPackProvider(); val4.identifier = "PingOrdering"; val4.generateContentPackAsyncImplementation = (GenerateContentPackAsyncDelegate)Delegate.Combine((Delegate?)(object)val4.generateContentPackAsyncImplementation, (Delegate?)new GenerateContentPackAsyncDelegate(whycantthisbealambda)); val4.finalizeAsyncImplementation = (FinalizeAsyncDelegate)Delegate.Combine((Delegate?)(object)val4.finalizeAsyncImplementation, (Delegate?)new FinalizeAsyncDelegate(rapidclapping)); val4.loadStaticContentImplementation = (LoadStaticContentAsyncDelegate)Delegate.Combine((Delegate?)(object)val4.loadStaticContentImplementation, (Delegate?)new LoadStaticContentAsyncDelegate(wow)); del.Invoke((IContentPackProvider)(object)val4); }; } private IEnumerator whycantthisbealambda(GetContentPackAsyncArgs args) { args.output.entityStateTypes.Add(new Type[1] { typeof(AwaitOrders) }); args.ReportProgress(1f); yield break; } private IEnumerator wow(LoadStaticContentAsyncArgs args) { args.ReportProgress(1f); yield break; } private IEnumerator rapidclapping(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } private void OnDestroy() { } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void RoOptionize() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown ModSettingsManager.AddOption((BaseOption)new KeyBindOption(attentionButton)); } }