예제 #1
0
        // This function tries to do the following things in order:
        // tries to use an item if inventory is open
        // tries to interact with terrain under player
        // tries to pick up Item
        private void HandleSpacePressed()
        {
            if (UI.InventoryOpen)
            {
                //Console.WriteLine("Space trigger item use!");
                //Console.WriteLine("UsedItemEvent null? " + UsedItemEvent == null);
                UsedItemEvent?.Invoke(Util.PlayerID, EntityManager.GetComponent <InventoryComponent>(Util.PlayerID).Items[UI.InventoryCursorPosition - 1], ItemUsage.Consume);
                return;
            }

            var playerPos = EntityManager.GetComponent <TransformComponent>(Util.PlayerID).Position;

            int terrain = Util.CurrentFloor.GetTerrain(playerPos);

            if (terrain != 0) // is there special terrain?
            {
                var terrainInteraction = EntityManager.GetComponent <InteractableComponent>(terrain);

                if (terrainInteraction != null) // is it interactable?
                {
                    InteractionEvent?.Invoke(Util.PlayerID, terrain);
                    return;
                }
            }

            bool itemsOnFloor = Util.CurrentFloor.GetItems(playerPos).Count() > 0; // are there items here?

            if (!itemsOnFloor)
            {
                UISystem.Message("No items here to be picked up!");
                return;
            }

            PickupItemEvent?.Invoke(Util.PlayerID);
        }
예제 #2
0
 private void PickupItem(PickupItemEvent ev)
 {
     if (ev.Pickup.durability == 2818 && ev.Pickup.ItemId == ItemType.GunE11SR)
     {
         ev.Player.ShowHint(Text, 5);
         UserIDShooterDead = "";
     }
 }
예제 #3
0
 public void OnPickupItem(PickupItemEvent ev)
 {
     if (ev.Item == Scp035Pickup)
     {
         MakePlayer035(ev.Player);
         ev.Allow = false;
         ev.Item.Delete();
         Scp035Pickup = null;
     }
 }
예제 #4
0
        public static PickupItemEvent CreatePickupItemEvent(Player picker, Item item)
        {
            PickupItemEvent pEvent = new PickupItemEvent(picker, item);

            pEvent.CreateTime   = Game.TurnsPassed;
            pEvent.ActivateTime = Game.TurnsPassed + 0;

            picker.State = Creature.EntityState.BUSY;

            return(pEvent);
        }
예제 #5
0
 private void OnPickupItemEvent(PickupItemEvent pickupItemEvent)
 {
     if (pickupItemEvent.Result == PickupItemEvent.ActivationResult.Success &&
         _transferTiming.TryGetValue(pickupItemEvent.ItemId, out var transferEvent))
     {
         if (pickupItemEvent.Tick - transferEvent.Tick <= TickWindow &&
             _playerScoreMatcherGroup.TryGetMatchingEntity(transferEvent.PlayerEntityId, out var playerTuple))
         {
             playerTuple.Component2.ResourceManagement += 1;
         }
         _transferTiming.Remove(pickupItemEvent.ItemId);
     }
 }
예제 #6
0
 internal void PickupEvent(ref PickupItemEvent ev)
 {
     if (!PluginMain.ammo.ContainsKey(ev.Player))
     {
         PluginMain.ammo.Add(ev.Player, new Ammo(ev.Player));
     }
     if (ev.Item.ItemId.IsAmmo())
     {
         ev.Allow = false;
         PluginMain.ammo[ev.Player].Add(ev.Item.info.itemId, (int)ev.Item.info.durability);
         ev.Player.SetAmmo(AmmoType.Dropped5, 1);
         ev.Player.SetAmmo(AmmoType.Dropped7, 1);
         ev.Player.SetAmmo(AmmoType.Dropped9, 1);
         ev.Item.Delete();
     }
 }
예제 #7
0
        internal static void InvokePickupItemEvent(Player player, Pickup pickup, ref bool allow)
        {
            if (PickupItemEvent == null)
            {
                return;
            }

            var ev = new PickupItemEvent
            {
                Allow  = allow,
                Pickup = pickup,
                Player = player
            };

            PickupItemEvent.Invoke(ev);

            allow = ev.Allow;
        }
예제 #8
0
        public void OnPickupItem(PickupItemEvent ev)
        {
            if (!Sitrep.Events.Contains("pickupitemevent"))
            {
                return;
            }
            if (!Sitrep.CustomChannelIds.TryGetValue("pickupitemevent", out ulong channel))
            {
                channel = Sitrep.EventsId;
            }
            Player owner = ev.Item.ownerPlayer.GetPlayer();

            if (owner == null)
            {
                Send($":hook: [{ev.Player.Role.AsString()}] {ev.Player.Nick.DiscordSanitize()} ({ev.Player.ParsedUserId}) zvedl {ev.Item.ItemId}", channel);
            }
            else
            {
                Send($":hook: [{ev.Player.Role.AsString()}] {ev.Player.Nick.DiscordSanitize()} ({ev.Player.ParsedUserId}) zvedl {ev.Item.ItemId} hráče [{owner.Role.AsString()}] {owner.Nick.DiscordSanitize()} ({owner.ParsedUserId})", channel);
            }
        }
예제 #9
0
        private void Interact()
        {
            var tile = Util.CurrentFloor.GetTile(Util.GetPlayerPos());

            if (tile.Items != null && tile.Items.Count > 0)
            {
                PickupItemEvent?.Invoke(ControlledEntity);
                return;
            }

            if (tile.Structure != 0)
            {
                var interactableStructure = EntityManager.GetComponent <InteractableComponent>(tile.Structure);

                if (interactableStructure != null)
                {
                    InteractionEvent?.Invoke(Util.PlayerID, tile.Structure);
                    return;
                }
            }
        }