Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of ItemExchangeNotifier v1.4.2
ItemExchangeNotifier.dll
Decompiled 8 months agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using On.RoR2; using R2API.Utils; using RoR2; using RoR2.Networking; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ItemExchangeNotifier")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+db00d670ee92516c59fcaa02a80800b7c9a2867d")] [assembly: AssemblyProduct("ItemExchangeNotifier")] [assembly: AssemblyTitle("ItemExchangeNotifier")] [assembly: AssemblyVersion("1.0.0.0")] namespace ItemExchangeNotifier; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.MagnusMagnuson.ItemExchangeNotifier", "ItemExchangeNotifier", "1.4.2")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class ItemExchangeNotifier : BaseUnityPlugin { public void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown PurchaseInteraction.OnInteractionBegin += (hook_OnInteractionBegin)delegate(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor activator) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) if (self.CanBeAffordedByInteractor(activator)) { CostTypeIndex costType = self.costType; if (costType - 4 <= 2) { CharacterBody component = ((Component)activator).GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { Inventory inventory = component.inventory; if (Object.op_Implicit((Object)(object)inventory)) { List<ItemCount> list = new List<ItemCount>(); List<ItemCount> list2 = new List<ItemCount>(); list = getAllCurrentItems(inventory); orig.Invoke(self, activator); list2 = getAllCurrentItems(inventory); if (list.Count > 0) { List<ItemCount> list3 = new List<ItemCount>(); foreach (ItemCount item3 in list) { bool flag = false; foreach (ItemCount item4 in list2) { if (item3.itemIndex == item4.itemIndex) { flag = true; if (item3.count > item4.count) { ItemCount item = new ItemCount(item3.itemIndex, item3.count - item4.count); list3.Add(item); } break; } } if (!flag) { ItemCount item2 = new ItemCount(item3.itemIndex, item3.count); list3.Add(item2); } } string tradeInMessage = constructItemsLostString(list3); SendCustomMessage(activator, tradeInMessage); } } else { orig.Invoke(self, activator); } } else { orig.Invoke(self, activator); } } else { orig.Invoke(self, activator); } } }; CharacterMasterNotificationQueue.PushItemTransformNotification += new hook_PushItemTransformNotification(CharacterMasterNotificationQueue_PushItemTransformNotification); } private void CharacterMasterNotificationQueue_PushItemTransformNotification(orig_PushItemTransformNotification orig, CharacterMaster characterMaster, ItemIndex oldIndex, ItemIndex newIndex, TransformationType transformationType) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: 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) //IL_000c: 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_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Expected O, but got Unknown orig.Invoke(characterMaster, oldIndex, newIndex, transformationType); if (newIndex == Items.LunarSun.itemIndex) { NetworkConnection clientAuthorityOwner = characterMaster.networkIdentity.clientAuthorityOwner; PickupIndex val = default(PickupIndex); ((PickupIndex)(ref val))..ctor(oldIndex); string @string = Language.GetString(ItemCatalog.GetItemDef(oldIndex).nameToken); string text = "#" + ColorUtility.ToHtmlStringRGB(((PickupIndex)(ref val)).GetPickupColor()); string text2 = "<color=#8296ae>Egocentrism consumed one "; text2 = text2 + "<color=" + text + ">" + @string + "</color>."; SimpleChatMessage val2 = new SimpleChatMessage { baseToken = text2 }; NetworkWriter val3 = new NetworkWriter(); val3.StartMessage((short)59); val3.Write(((ChatMessageBase)val2).GetTypeIndex()); val3.Write((MessageBase)(object)val2); val3.FinishMessage(); if (clientAuthorityOwner != null) { clientAuthorityOwner.SendWriter(val3, QosChannelIndex.chat.intVal); } } } private void SendCustomMessage(Interactor activator, string tradeInMessage) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown NetworkConnection clientAuthorityOwner = ((Component)activator).GetComponent<NetworkIdentity>().clientAuthorityOwner; SimpleChatMessage val = new SimpleChatMessage { baseToken = tradeInMessage }; NetworkWriter val2 = new NetworkWriter(); val2.StartMessage((short)59); val2.Write(((ChatMessageBase)val).GetTypeIndex()); val2.Write((MessageBase)(object)val); val2.FinishMessage(); if (clientAuthorityOwner != null) { clientAuthorityOwner.SendWriter(val2, QosChannelIndex.chat.intVal); } } private string constructItemsLostString(List<ItemCount> difference) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) string text = "<color=#8296ae>You gave up "; PickupIndex val = default(PickupIndex); for (int i = 0; i < difference.Count; i++) { ItemCount itemCount = difference[i]; ((PickupIndex)(ref val))..ctor(itemCount.itemIndex); string @string = Language.GetString(ItemCatalog.GetItemDef(itemCount.itemIndex).nameToken); string text2 = "#" + ColorUtility.ToHtmlStringRGB(((PickupIndex)(ref val)).GetPickupColor()); text = text + "x" + itemCount.count + " <color=" + text2 + ">" + @string + "</color>"; text = ((i + 1 >= difference.Count) ? (text + "</color>") : (text + ", ")); } return text; } private List<ItemCount> getAllCurrentItems(Inventory inv) { //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_001c: 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) List<ItemCount> list = new List<ItemCount>(); foreach (ItemIndex item2 in inv.itemAcquisitionOrder) { ItemCount item = new ItemCount(item2, inv.GetItemCount(item2)); list.Add(item); } return list; } } internal class ItemCount { public ItemIndex itemIndex; public int count; public ItemCount(ItemIndex index, int count) { //IL_0007: 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) itemIndex = index; this.count = count; } }