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); }
protected override void OnSetPosition(Vec pos) { Vec oldPos = Position; base.OnSetPosition(pos); if (GivesOffLight) { Dungeon.DirtyLighting(); } OnMoved(new ValueChangeEventArgs <Vec>(oldPos, pos)); }
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); }