text: 'use strict';
  /*global require */
  var Drone = require('drone'),
    blocks = require('blocks');
  /************************************************************************
  ### Drone.castle() method
  
  Creates a Castle. A castle is just a big wide fort with 4 taller forts at each corner. 
  See also Drone.fort() method.
  
  #### Parameters
   
   * side - How many blocks wide and long the castle will be (default: 24. Must be greater than 19)
   * height - How tall the castle will be (default: 10. Must be geater than 7)
  
  #### Example
  
  At the in-game prompt you can create a castle by looking at a block and typing:
  
  ```javascript
  /js castle()
  ```
  
  Alternatively you can create a new Drone object from a Player or Location object and call the castle() method.
  
  ```javascript
  var d = new Drone(player);
  d.castle();
  ```
  ![castle example](img/castleex1.png)
  
  ***/
  function castle(side, height) {
    //
    // use sensible default parameter values
    // if no parameters are supplied
    //
    if (typeof side == 'undefined') side = 24;
    if (typeof height == 'undefined') height = 10;
    if (height < 8 || side < 20)
      throw new java.lang.RuntimeException(
        'Castles must be at least 20 wide X 8 tall'
      );
    //
    // how big the towers at each corner will be...
    //
    var towerSide = 10;
    var towerHeight = height + 4;
  
    //
    // the main castle building will be front and right of the first tower
    //
    this.chkpt('castle')
      .fwd(towerSide / 2)
      .right(towerSide / 2)
      .fort(side, height)
      .move('castle');
    //
    // now place 4 towers at each corner (each tower is another fort)
    //
    for (var corner = 0; corner < 4; corner++) {
      // construct a 'tower' fort
      this.fort(towerSide, towerHeight)
        .chkpt('tower-' + corner)
        .fwd(towerSide - 1)
        .right(towerSide - 3)
        .up(towerHeight - 5) // create 2 doorways from main castle rampart into each tower
        .box(blocks.air, 1, 2, 1)
        .back(2)
        .right(2)
        .box(blocks.air, 1, 2, 1)
        .move('tower-' + corner)
        .fwd(side + towerSide - 1) // move forward the length of the castle then turn right
        .turn();
    }
    this.move('castle');
  }
  Drone.extend(castle);
  