#BEGIN_PROPERTIES#
{
    "version": "1.0",
    "commandsIntroduced":
        ["object.passableFor",
         "map.validateExactlyXManyObjects"],
    "nextBonusLevel": "AB_5_PathOfDoom.jsx"
}
#END_PROPERTIES#
/****************************
 *      BatAttack.js		*
 ****************************
 *
 * As you proceed into the cave
 * you notice some creatures hiding in the darkness.
 * They seem to be asleep... Proceed with care though,
 * for they tend to sleep lightly.
 * Sneaky or smart, you never truly had an option.
 *
 * Every traveller knows that the
 * adventures never truly end.
 */
 

function startLevel(map) {
#START_OF_START_LEVEL#

    function wakeAndHunt(obj, type) {
		var direction;
        var target = obj.findNearest(type);
        var leftDist = obj.getX() - target.x;
        var upDist = obj.getY() - target.y;
		
		if (Math.abs(upDist) < 4 && Math.abs(leftDist) < 8) {			
			if (upDist == 0 && leftDist == 0) {
				return;
			} if (upDist > 0 && upDist >= leftDist) {
				direction = 'up';
			} else if (upDist < 0 && upDist < leftDist) {
				direction = 'down';
			} else if (leftDist > 0 && leftDist >= upDist) {
				direction = 'left';
			} else {
				direction = 'right';
			}
			obj.move(direction);
		}
    }
	
    map.defineObject('bat', {
        'type': 'dynamic',
		'symbol': String.fromCharCode(0x03E1),
        'color': 'purple',
        'onCollision': function (player) {
            player.killedBy('a bat');
        },
        'behavior': function (me) {
            wakeAndHunt(me, 'player');
		}
    });

	map.defineObject('boulder', {
		'color' : '#5C1F00',
		'symbol': String.fromCharCode(0x2617),
		'impassable': true,
        'passableFor': ['bat']
	});
	
	map.createFromGrid(
	['##################################################',
	'####################################    E#########',
	'#############     ##############         #########',
	'############       ############          #########',
	'##########     #    #########     ################',
	'#########     #B#    ###BBB###    ################',
	'#######      #BBB#    #########    ###############',
	'########    #######    ###BBB###    ##############',
	'#######    #########    #########    #############',
	'########    #######    #########    ##############',
	'#######    ###BBB###    ###BBB###    #############',
	'###BBB##    #######    #########    ##############',
	'#######    #########    #########    #############',
	'########    ##BBB##    #########    ##############',
	'#######    #########    ##BBB####    #############',
	'##BBB###    #######    #########    ##############',
	'#######    #########    ########    ##############',
	'########    #######    #######    ################',
	'#######    ###BBB###    #BBB#    #################',
	'########    #######      #B#    ##################',
	'#######    ##########     #    ###################',
	'####         #########        ####################',
	'####        ###########      #####################',
	'#### @     #######################################',
	'##################################################'],
		{
			'@': 'player',
			'E': 'exit',
			'#': 'boulder',
			'B': 'bat',
		}, 0, 0);	
	
#BEGIN_EDITABLE#




#END_EDITABLE#
	
#END_OF_START_LEVEL#
}

function validateLevel(map) {
    map.validateExactlyXManyObjects(1, 'exit');
}

