Ejemplo n.º 1
0
        public bool MoveToInventory(IEntity item, Inventory inventory)
        {
            var hasRemovedItemFromSomewhere = false;

            hasRemovedItemFromSomewhere |= TryRemoveItemFromMap(item);

            hasRemovedItemFromSomewhere |= TryRemoveItemFromCurrentInventory(item);

            var hasSpace = inventory.Capacity > inventory.Contents.Count();

            if (hasRemovedItemFromSomewhere && hasSpace)
            {
                AddItemDirectlyToInventory(item, inventory);
            }
            else
            {
                if (!hasSpace)
                {
                    messageSystem.Write("Couldn't add the item to the inventory because the inventory is full.");
                }

                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        public override ActionEventData ChooseAction(IEntity entity)
        {
            if (!Resting)
            {
                return(null);
            }

            if (EventSystem.GetStat(entity, "Tension") > 0)
            {
                MessageSystem.Write("Your rest is interrupted!");
                Resting = false;
                return(null);
            }

            var tilt         = entity.Get <TiltFighter>();
            var aura         = entity.Get <AuraFighter>();
            var currentAegis = EventSystem.GetStat(entity, "CurrentAegisLevel");
            var maxAegis     = EventSystem.GetStat(entity, "Aegis");

            if (tilt.Tilt.Current == 0 &&
                aura.Aura.Current == aura.BaseAura &&
                tilt.BrokenTicks == 0 &&
                currentAegis == maxAegis)
            {
                MessageSystem.Write("You finish resting.");
                Resting = false;
                return(null);
            }

            return(new ActionEventData {
                Action = ActionType.Wait, Speed = 1000
            });
        }
        public bool Apply(EventType type, IEntity sender, object eventData)
        {

            if (sender.Has<GodMode>())
            {
                var data = eventData as DamageEventData;
                _messageSystem.Write($"GodMode prevents {data.Damage} damage.");
                return false;
            }

            return true;
        }
        public bool Apply(EventType type, IEntity sender, object eventData)
        {
            var data = (ActivateSkillEventData)eventData;

            var skillDefinition = prototypeSystem.Get(data.SkillName).Get <Skill>();

            var userAura = sender.Get <AuraFighter>().Aura;

            if (userAura.Current < skillDefinition.Cost)
            {
                if (sender.IsPlayer)
                {
                    messageSystem.Write("You don't have enough Aura!");
                }
                return(false);
            }

            return(true);
        }
Ejemplo n.º 5
0
        public override ActionEventData ChooseAction(IEntity entity)
        {
            var currentCoordinate = _positionSystem.CoordinateOf(entity);

            if (Path.FirstOrDefault() == currentCoordinate)
            {
                Path.Remove(currentCoordinate);
            }

            if (Path.Any())
            {
                SetWaitingForInputIfPlayer(entity, false);

                if (_playerSystem.Player == entity && _eventRuleSystem.GetStat(entity, "Tension") > 0)
                {
                    _messageSystem.Write("You can't auto-walk when tension is this high.");
                    EndPath(entity);
                    return(null);
                }

                var coordinate = Path.First();
                var vector     = currentCoordinate - coordinate;

                if (CantReach(vector))
                {
                    EndPath(entity);
                }

                return(new ActionEventData {
                    Action = ActionType.Move, Parameters = vector.ToString(), Speed = entity.Get <Actor>().Speed
                });
            }
            else
            {
                EndPath(entity);
                return(null);
            }
        }