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()
        {
            if (Item.Charges == 0)
            {
                return(Fail(Item, "{subject} is used up."));
            }
            else if (Item.Charges < 0)
            {
                // not lit, light it
                Log(LogType.Message, "{subject} light[s] {object}.", Item);
                Dungeon.DirtyLighting();

                Item.Charges = -Item.Charges;
            }
            else
            {
                // lit, unlight it
                Log(LogType.Message, "{subject} extinguish[es] {object}.", Item);
                Dungeon.DirtyLighting();

                Item.Charges = -Item.Charges;
            }

            return(ActionResult.Done);
        }
Exemple #3
0
        protected override void OnSetPosition(Vec pos)
        {
            Vec oldPos = Position;

            base.OnSetPosition(pos);

            if (GivesOffLight)
            {
                Dungeon.DirtyLighting();
            }

            OnMoved(new ValueChangeEventArgs <Vec>(oldPos, pos));
        }
Exemple #4
0
        protected override ActionResult OnProcess()
        {
            Item.Charges--;

            if (Item.Charges == 200)
            {
                Log(LogType.Message, Item, "{subject} is growing faint.");
            }
            else if (Item.Charges == 100)
            {
                Log(LogType.Message, Item, "{subject} is growing guttering.");
            }
            else if (Item.Charges == 0)
            {
                Log(LogType.Message, Item, "{subject} has gone out.");
                Dungeon.DirtyLighting();
            }

            return(ActionResult.Done);
        }