private void moveTo(int dir) { Room checkRoom = map.getRoomAt(currentRoom, dir); if (checkRoom != null) { Vector2 start = checkRoom.getLocationStartFrom(dir); if (!start.Equals(Vector2.Zero)) { player.position = start; player.currentPosition = start; entryPoint = start; Room tempRoom = currentRoom; currentRoom.sadakoPositionInRoom = sadako.position; currentRoom = checkRoom; lurkDelay = 0; if (sadako.disturbed) { transferRoomViaChase(start, sadako.wayPoints.Count, currentRoom); } else { float difference = player.maxPresence - tempRoom.roomPresence; int threshold = (int)(difference / 1000); int chance = rand.Next(0, threshold); if (chance == 0 && sadakoRoom != currentRoom) { transferSadakoRandomly(currentRoom); } if (chance == 1 && sadakoRoom != tempRoom) { transferSadakoRandomly(tempRoom); } } sadako.wayPoints = new List <Vector2>(); sadako.wayPoints.Add(player.position); } if (currentRoom == sadakoRoom) { sadako.disable = false; sadako.position = currentRoom.sadakoPositionInRoom; } else { sadako.disable = true; } } }
private void moveSadakoTo(int dir) { Room checkRoom = map.getRoomAt(currentRoom, dir); if (checkRoom != null) { Vector2 start = checkRoom.getLocationStartFrom(dir); if (!start.Equals(Vector2.Zero)) { sadako.teleport(checkRoom); checkRoom.sadakoPositionInRoom = sadako.position; sadakoRoom = checkRoom; sadako.disable = true; } } }