コード例 #1
0
ファイル: OpenDoorAction.cs プロジェクト: stjordanis/amaranth
        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."));
            }
        }
コード例 #2
0
        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);
        }