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);
                     * }*/
                }
            }
        }
示例#2
0
        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);
                }
            }
        }