Example #1
0
 public bool CanBeWalked(byte avoidDamageType = 0)
 {
     return(!CreatureIds.Any() &&
            Ground != null &&
            !Ground.IsPathBlocking(avoidDamageType) &&
            !TopItems1.Any(i => i.IsPathBlocking(avoidDamageType)) &&
            !TopItems2.Any(i => i.IsPathBlocking(avoidDamageType)) &&
            !DownItems.Any(i => i.IsPathBlocking(avoidDamageType)));
 }
Example #2
0
        public IThing GetThingAtStackPosition(byte stackPosition)
        {
            if (stackPosition == 0 && Ground != null)
            {
                return(Ground);
            }

            var currentPos = Ground == null ? -1 : 0;

            if (stackPosition > currentPos + _topItems1OnTile.Count)
            {
                currentPos += _topItems1OnTile.Count;
            }
            else
            {
                foreach (var item in TopItems1)
                {
                    if (++currentPos == stackPosition)
                    {
                        return(item);
                    }
                }
            }

            if (stackPosition > currentPos + _topItems2OnTile.Count)
            {
                currentPos += _topItems2OnTile.Count;
            }
            else
            {
                foreach (var item in TopItems2)
                {
                    if (++currentPos == stackPosition)
                    {
                        return(item);
                    }
                }
            }

            if (stackPosition > currentPos + _creatureIdsOnTile.Count)
            {
                currentPos += _creatureIdsOnTile.Count;
            }
            else
            {
                foreach (var creatureId in CreatureIds)
                {
                    if (++currentPos == stackPosition)
                    {
                        return(Game.Instance.GetCreatureWithId(creatureId));
                    }
                }
            }

            return(stackPosition <= currentPos + _downItemsOnTile.Count ? DownItems.FirstOrDefault(item => ++ currentPos == stackPosition) : null);
        }