Exemplo n.º 1
0
 public bool IsCutTree(int x, int y)
 {
     if (!IsInCurrentArea(x, y))
     {
         return(false);
     }
     return(OriginalNpcs.Find(s => s.PositionX == x && s.PositionY == y &&
                              s.NpcName.ToLowerInvariant().StartsWith(".cut") && s.Data.Settings.Sprite == 9) != null);
 }
Exemplo n.º 2
0
 public bool IsPc(int x, int y)
 {
     if (!IsInCurrentArea(x, y))
     {
         return(false);
     }
     return(Objects.Any(ob => ob.x == x && ob.z == -y && ob.Name.StartsWith("PCComputer")) &&
            OriginalNpcs.Any(n => n.PositionX == x && n.PositionY == y &&
                             n.NpcName.ToLowerInvariant().StartsWith("new")));
 }
Exemplo n.º 3
0
 public bool IsRockSmash(int x, int y)
 {
     if (!IsInCurrentArea(x, y))
     {
         return(false);
     }
     if (OriginalNpcs.Find(s => s.PositionX == x && s.PositionY == y &&
                           s.NpcName.ToLowerInvariant().StartsWith(".rocksmash") && s.Data.Settings.Sprite == 11) != null)
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 4
0
        public MoveResult CanMove(Direction direction, int destinationX, int destinationY, bool isOnGround, bool isSurfing, bool canUseCut, bool canUseSmashRock)
        {
            var newArea = CheckArea(destinationX, destinationY);

            if ((destinationX < 0 || destinationX > DimensionX ||
                 destinationY < 0 || destinationY > DimensionY) && !HasLink(destinationX, destinationY) &&
                newArea?.AreaName.ToLowerInvariant() == CurrentArea?.AreaName.ToLowerInvariant())
            {
                return(MoveResult.Fail);
            }

            if (OriginalNpcs.Any(npc => npc.PositionX == destinationX && npc.PositionY == destinationY && !npc.IsMoving && npc.CanBlockPlayer && npc.IsVisible))
            {
                return(MoveResult.Fail);
            }

            if (direction != Direction.Down && GetCollider(destinationX, destinationY) == 4)
            {
                return(MoveResult.Fail);
            }

            if (IsUnmoveableCellSide(direction, destinationX, destinationY))
            {
                return(MoveResult.Fail);
            }


            int collider = GetCollider(destinationX, destinationY);

            if (!IsMovementValid(direction, collider, isOnGround, isSurfing, canUseCut, canUseSmashRock, destinationX, destinationY))
            {
                return(MoveResult.Fail);
            }

            if (collider == 4 || collider == 6)
            {
                return(MoveResult.Jump);
            }

            if (isSurfing && !IsWater(destinationX, destinationY))
            {
                return(MoveResult.NoLongerSurfing);
            }


            return(MoveResult.Success);
        }