protected override ActionResult OnProcess() { switch (Dungeon.Tiles[mDoorPos].Type) { case TileType.DoorClosed: // open it Dungeon.SetTileType(mDoorPos, TileType.DoorOpen); Dungeon.DirtyLighting(); Dungeon.DirtyVisibility(); Log(LogType.Message, "{subject} open[s] the door."); return(ActionResult.Done); case TileType.DoorOpen: case TileType.DoorStore1: case TileType.DoorStore2: case TileType.DoorStore3: case TileType.DoorStore4: case TileType.DoorStore5: case TileType.DoorStore6: return(Fail("The door is already open.")); default: return(Fail("There is no door there.")); } }
protected override ActionResult OnProcess() { Vec pos = Entity.Position; if (!Dungeon.TryFindOpenTileWithin(Entity.Position, 4, 12, out pos)) { return(Fail("{subject} fails to create the portal!")); } Dungeon.SetTileType(pos, TileType.TownPortal); if (Game.Depth > 0) { Log(LogType.Message, "{subject} create[s] a portal back to the town."); } else { Log(LogType.Message, "{subject} create[s] a portal back to the deepest dungeon."); } return(ActionResult.Done); }