This repository has been archived on 2021-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
scriptcraft/src/main/js/plugins/drone/contrib/castle.js
2015-01-16 21:20:34 +00:00

81 lines
2.2 KiB
JavaScript

'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);