public static void SimulatePickup(CharacterMaster characterMaster, ItemDef itemDef, int amount = 1, bool showNotif = true) { var self = characterMaster.inventory; var pickupIndex = PickupCatalog.FindPickupIndex(itemDef.itemIndex); //var pickupDef = PickupCatalog.GetPickupDef(pickupIndex); //var nameToken = pickupDef.nameToken; //var color = pickupDef.baseColor; //var body = characterMaster.GetBody(); if (pickupIndex > PickupIndex.none) { //Chat.AddPickupMessage(body, nameToken, color, (uint)amount); Util.PlaySound("Play_UI_item_pickup", characterMaster.GetBodyObject()); self.GiveItem(itemDef, amount); GenericPickupController.SendPickupMessage(characterMaster, pickupIndex); if (showNotif) { var list = NotificationQueue.instancesList; list[0].OnPickup(characterMaster, pickupIndex); /*for (int i = 0; i < list.Count; i++) * { * list[i].OnPickup(characterMaster, pickupIndex); * }*/ } } }
private void GenericPickupController_GrantLunarCoin(On.RoR2.GenericPickupController.orig_GrantLunarCoin orig, GenericPickupController self, CharacterBody body, uint count) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'System.Void RoR2.GenericPickupController::GrantLunarCoin(RoR2.CharacterBody,System.UInt32)' called on client"); return; } CharacterMaster master = body.master; NetworkUser networkUser = Util.LookUpBodyNetworkUser(body); if (networkUser) { if (master) { GenericPickupController.SendPickupMessage(master, self.pickupIndex); } networkUser.AwardLunarCoins(count); UnityEngine.Object.Destroy(self.gameObject); } else { if (master && master.teamIndex != TeamIndex.Player) { var component = master.GetBodyObject().GetComponent <DropInventoryOnDeath>(); if (!component) { component = master.GetBodyObject().AddComponent <DropInventoryOnDeath>(); } component.incrementCoins(); GenericPickupController.SendPickupMessage(master, self.pickupIndex); UnityEngine.Object.Destroy(self.gameObject); } } }