2013-12-24 01:18:43 +01:00
|
|
|
var Drone = require('../drone').Drone;
|
|
|
|
|
2013-12-24 01:09:49 +01:00
|
|
|
//
|
|
|
|
// constructs a medieval fort
|
|
|
|
//
|
2014-01-29 20:49:15 +01:00
|
|
|
Drone.extend('fort', function( side, height ) {
|
2014-02-19 01:15:44 +01:00
|
|
|
var brick = 98,
|
|
|
|
turret,
|
|
|
|
i,
|
|
|
|
torch,
|
|
|
|
ladder;
|
|
|
|
|
2014-01-29 20:49:15 +01:00
|
|
|
if ( typeof side == 'undefined' ) {
|
|
|
|
side = 18;
|
|
|
|
}
|
|
|
|
if ( typeof height == 'undefined' ) {
|
|
|
|
height = 6;
|
|
|
|
}
|
|
|
|
// make sure side is even
|
|
|
|
if ( side % 2 ) {
|
|
|
|
side++;
|
|
|
|
}
|
2014-02-16 19:29:36 +01:00
|
|
|
var battlementWidth = 3;
|
|
|
|
if ( side <= 12 ) {
|
|
|
|
battlementWidth = 2;
|
|
|
|
}
|
2014-01-29 20:49:15 +01:00
|
|
|
if ( height < 4 || side < 10 ) {
|
|
|
|
throw new java.lang.RuntimeException('Forts must be at least 10 wide X 4 tall');
|
|
|
|
}
|
|
|
|
//
|
|
|
|
// build walls.
|
|
|
|
//
|
2014-02-19 01:15:44 +01:00
|
|
|
this.chkpt('fort')
|
|
|
|
.box0(brick,side,height-1,side)
|
|
|
|
.up(height-1);
|
2014-01-29 20:49:15 +01:00
|
|
|
//
|
|
|
|
// build battlements
|
|
|
|
//
|
|
|
|
for ( i = 0; i <= 3; i++ ) {
|
2014-02-19 01:15:44 +01:00
|
|
|
|
|
|
|
turret = [
|
|
|
|
'109:'+ Drone.PLAYER_STAIRS_FACING[this.dir],
|
|
|
|
'109:'+ Drone.PLAYER_STAIRS_FACING[(this.dir+2)%4]
|
|
|
|
];
|
2014-01-29 20:49:15 +01:00
|
|
|
this.box(brick) // solid brick corners
|
2014-02-19 01:15:44 +01:00
|
|
|
.up()
|
|
|
|
.box('50:5')
|
|
|
|
.down() // light a torch on each corner
|
|
|
|
.fwd()
|
|
|
|
.boxa(turret,1,1,side-2)
|
|
|
|
.fwd(side-2)
|
|
|
|
.turn();
|
2014-01-29 20:49:15 +01:00
|
|
|
}
|
|
|
|
//
|
|
|
|
// build battlement's floor
|
|
|
|
//
|
2014-02-19 01:15:44 +01:00
|
|
|
this.move('fort')
|
|
|
|
.up(height-2)
|
|
|
|
.fwd()
|
|
|
|
.right();
|
|
|
|
|
|
|
|
for ( i = 0; i < battlementWidth; i++ ) {
|
|
|
|
|
|
|
|
this.box0('126:0', side - ( 2 + (i * 2) ), 1, side - ( 2 + ( i * 2) ))
|
|
|
|
.fwd()
|
|
|
|
.right();
|
2014-01-29 20:49:15 +01:00
|
|
|
}
|
|
|
|
//
|
|
|
|
// add door
|
|
|
|
//
|
2014-02-19 01:15:44 +01:00
|
|
|
torch = '50:' + Drone.PLAYER_TORCH_FACING[this.dir];
|
|
|
|
this.move('fort')
|
|
|
|
.right((side/2)-1)
|
|
|
|
.door2() // double doors
|
|
|
|
.back()
|
|
|
|
.left()
|
|
|
|
.up()
|
2014-01-29 20:49:15 +01:00
|
|
|
.box(torch) // left torch
|
|
|
|
.right(3)
|
|
|
|
.box(torch); // right torch
|
|
|
|
//
|
|
|
|
// add ladder up to battlements
|
|
|
|
//
|
2014-02-19 01:15:44 +01:00
|
|
|
ladder = '65:' + Drone.PLAYER_SIGN_FACING[(this.dir+2)%4];
|
|
|
|
this.move('fort')
|
|
|
|
.right((side/2)-3)
|
|
|
|
.fwd(1) // move inside fort
|
|
|
|
.box(ladder, 1,height-1,1)
|
|
|
|
.move('fort');
|
2013-12-24 01:09:49 +01:00
|
|
|
});
|
|
|
|
|