var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = 
{
    "init": function () {

	console.log("插件编写测试");

	// 可以写一些直接执行的代码
	// 在这里写的代码将会在【资源加载前】被执行，此时图片等资源尚未被加载。
	// 请勿在这里对包括bgm，图片等资源进行操作。


	this._afterLoadResources = function () {
		// 本函数将在所有资源加载完毕后，游戏开启前被执行
		// 可以在这个函数里面对资源进行一些操作，比如切分图片等。

		// 这是一个将assets.png拆分成若干个32x32像素的小图片并保存的样例。
		// var arr = core.splitImage("assets.png", 32, 32);
		// for (var i = 0; i < arr.length; i++) {
		//     core.material.images.images["asset"+i+".png"] = arr[i];
		// }

	}
core.control._checkBlock_soundAndAnimate = function (x,y) {
    var x=core.getHeroLoc('x'), y=core.getHeroLoc('y'), loc = x+","+y;
    if(core.status.checkBlock.type[loc]=="领域伤害") {
    core.playSound('zone1.mp3');
    core.drawAnimate("zone1", x, y);}
    else if(core.status.checkBlock.type[loc]=="激光伤害") {
    core.playSound('zone2.mp3');
    core.drawAnimate("zone2", x, y);}
    else {
    if(core.status.checkBlock.type[loc]=="阻击伤害") {
    core.playSound('zone3.mp3');
    core.drawAnimate("zone3", x, y);}
    else if(core.status.checkBlock.type[loc]=="夹击伤害") {
    core.playSound('zone4.mp3');
    core.drawAnimate("zone4", x, y);}
    else {
    if (core.status.checkBlock.type[loc]=="精准射击伤害") {
    core.playSound('zone5.mp3');
    core.drawAnimate("zone5", x, y);}
    else {
    //捕捉写在下面
    return}
    }
    }
    }
    core.control._checkBlock_ambush = function (ambush) {
    if (!ambush || ambush.length == 0) return;
    core.drawAnimate('zone6',core.getHeroLoc('x'),core.getHeroLoc('y'));
    core.playSound('zone6.mp3');
    // 捕捉效果
    var actions = [];
    ambush.forEach(function (t) {
    actions.push({"type": "move", "loc": [t[0],t[1]], "steps": [t[3]], "time": 500, "keep": false, "async":true});
    });
    actions.push({"type": "waitAsync"});
    // 强制战斗
    ambush.forEach(function (t) {
    actions.push({"type": "battle", "id": t[2]});
    });
    core.insertAction(actions);
    }
    ////// 绘制背景层 //////
    core.maps.drawBg = function (floorId, ctx) {
    floorId = floorId || core.status.floorId;
    var onMap = ctx == null;
    if (onMap) {
        ctx = core.canvas.bg;
        core.clearMap(ctx);
        core.status.floorAnimateObjs = this._getFloorImages(floorId);
    }
    // ------ 调整这两行的顺序来控制是先绘制贴图还是先绘制背景图块；后绘制的覆盖先绘制的。
    var floor = core.getFlag("floorId",[]);
    var id = core.getFlag("changeFloorId","");
    var a = false;
    for (var i = 0;i < floor.length;i++) {
    if (floor[i] == id) {
    a = true;
    }
    }
    if (!a) core.maps._drawBg_drawBackground(floorId, ctx);
    core.maps._drawFloorImages(floorId, ctx, 'bg');
    core.maps._drawBgFgMap(floorId, ctx, 'bg', onMap);
    core.removeFlag("changeFloorId");
    }
    ////// 生成groundPattern //////
    core.maps.generateGroundPattern = function (floorId) {
    // 生成floorId层的groundPattern（盒子内的怪物动画）
    var id = (floorId || core.status.floorId) || "";
    var groundId = ((core.status.maps || core.floors)[floorId || core.status.floorId] || {}).defaultGround || "ground";
    core.material.groundCanvas.clearRect(0, 0, 32, 32);
    var floor = core.getFlag("floorId",[]);
    var a = false;
    for (var i = -1;i < floor.length;i++) {
    if (floor[i] == id) {
    a = true;
    break;
    }
    }
    console.log(floorId||core.status.floorId);
    if (!a) {
    core.material.groundCanvas.drawImage(core.material.images.terrains, 0, 32 * core.material.icons.terrains[groundId], 32, 32, 0, 0, 32, 32);
    core.material.groundPattern = core.material.groundCanvas.createPattern(core.material.groundCanvas.canvas, 'repeat');
    }
    }
    ////// 绘制某张地图 //////
    /*core.maps.drawMap = function (floorId, callback) {
    floorId = floorId || core.status.floorId;
    if (!floorId) {
    if (callback) callback();
    return;
    }
    core.clearMap('all');
    var a = false;
    for (var i = -1;i < floor.length;i++) {
    if (floor[i] == id) {
    a = true;
    break;
    }
    }
    console.log(floorId||core.status.floorId);
    if (!a) {
    this.generateGroundPattern(floorId);
    }
    core.status.floorId = floorId;
    core.status.thisMap = core.status.maps[floorId];
    
    this._drawMap_drawAll();
    if (core.status.curtainColor) {
    core.fillRect('curtain', 0, 0, core.__PIXELS__, core.__PIXELS__,
    core.arrayToRGBA(core.status.curtainColor));
    }
    core.drawHero();
    core.updateStatusBar();
    if (callback) callback();
    }*/
    // 如果需要用纯色可以直接将下面代码改成改成
    //core.removeFlag("changeFloorId");    
    // core.material.groundPattern = '#000000';
    

	// 可以在任何地方（如afterXXX或自定义脚本事件）调用函数，方法为 core.plugin.xxx();
	// 从V2.6开始，插件中用this.XXX方式定义的函数也会被转发到core中，详见文档-脚本-函数的转发。
},
    "drawLight": function () {

	// 绘制灯光/漆黑层效果。调用方式 core.plugin.drawLight(...)
	// 【参数说明】
	// name：必填，要绘制到的画布名；可以是一个系统画布，或者是个自定义画布；如果不存在则创建
	// color：可选，只能是一个0~1之间的数，为不透明度的值。不填则默认为0.9。
	// lights：可选，一个数组，定义了每个独立的灯光。
	//        其中每一项是三元组 [x,y,r] x和y分别为该灯光的横纵坐标，r为该灯光的半径。
	// lightDec：可选，0到1之间，光从多少百分比才开始衰减（在此范围内保持全亮），不设置默认为0。
	//        比如lightDec为0.5代表，每个灯光部分内圈50%的范围全亮，50%以后才开始快速衰减。
	// 【调用样例】
	// core.plugin.drawLight('curtain'); // 在curtain层绘制全图不透明度0.9，等价于更改画面色调为[0,0,0,0.9]。
	// core.plugin.drawLight('ui', 0.95, [[25,11,46]]); // 在ui层绘制全图不透明度0.95，其中在(25,11)点存在一个半径为46的灯光效果。
	// core.plugin.drawLight('test', 0.2, [[25,11,46,0.1]]); // 创建一个test图层，不透明度0.2，其中在(25,11)点存在一个半径为46的灯光效果，灯光中心不透明度0.1。
	// core.plugin.drawLight('test2', 0.9, [[25,11,46],[105,121,88],[301,221,106]]); // 创建test2图层，且存在三个灯光效果，分别是中心(25,11)半径46，中心(105,121)半径88，中心(301,221)半径106。
	// core.plugin.drawLight('xxx', 0.3, [[25,11,46],[105,121,88,0.2]], 0.4); // 存在两个灯光效果，它们在内圈40%范围内保持全亮，且40%后才开始衰减。
	this.drawLight = function (name, color, lights, lightDec) {

		// 清空色调层；也可以修改成其它层比如animate/weather层，或者用自己创建的canvas
		var ctx = core.getContextByName(name);
		if (ctx == null) {
			if (typeof name == 'string')
				ctx = core.createCanvas(name, 0, 0, core.__PIXELS__, core.__PIXELS__, 98);
			else return;
		}

		ctx.mozImageSmoothingEnabled = false;
		ctx.webkitImageSmoothingEnabled = false;
		ctx.msImageSmoothingEnabled = false;
		ctx.imageSmoothingEnabled = false;

		core.clearMap(name);
		// 绘制色调层，默认不透明度
		if (color == null) color = 0.9;
		ctx.fillStyle = "rgba(0,0,0," + color + ")";
		ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);

		lightDec = core.clamp(lightDec, 0, 1);

		// 绘制每个灯光效果
		ctx.globalCompositeOperation = 'destination-out';
		lights.forEach(function (light) {
			// 坐标，半径，中心不透明度
			var x = light[0],
				y = light[1],
				r = light[2];
			// 计算衰减距离
			var decDistance = parseInt(r * lightDec);
			// 正方形区域的直径和左上角坐标
			var grd = ctx.createRadialGradient(x, y, decDistance, x, y, r);
			grd.addColorStop(0, "rgba(0,0,0,1)");
			grd.addColorStop(1, "rgba(0,0,0,0)");
			ctx.beginPath();
			ctx.fillStyle = grd;
			ctx.arc(x, y, r, 0, 2 * Math.PI);
			ctx.fill();
		});
		ctx.globalCompositeOperation = 'source-over';
		// 可以在任何地方（如afterXXX或自定义脚本事件）调用函数，方法为  core.plugin.xxx();
	}
},
    "fly": function () {
	core.ui.drawCenterFly = function () {
		var x = core.status.hero.loc.x;
		var y = core.status.hero.loc.y;
		var floorId = "MT4";
		var loc = [x, y];
		var cannotfly = [
			[3, 1],
			[4, 1],
			[3, 2],
			[4, 2],
			[9, 11],
			[8, 11],
			[9, 10],
			[8, 10]
		];
		//八个点 这里我写的是(1,1)(2,2)(3,3)(4,4)() 你看着改就行 这里是判定了勇士坐标
		for (var i = 0; i < cannotfly.length; i++) {
			if (loc[0] == cannotfly[i][0] && loc[1] == cannotfly[i][1] && core.status.floorId == floorId) {
				core.drawTip("高度差过大，无法飞行");
				return;
			}
		}
		core.lockControl();
		core.status.event.id = 'centerFly';
		var fillstyle = 'rgba(255,0,0,0.5)';
		if (core.canUseItem('centerFly')) fillstyle = 'rgba(0,255,0,0.5)';
		var toX = core.bigmap.width - 1 - core.getHeroLoc('x'),
			toY = core.bigmap.height - 1 - core.getHeroLoc('y');
		core.drawThumbnail(null, null, { heroLoc: core.status.hero.loc, heroIcon: core.getFlag('heroIcon', "hero.png") }, { ctx: 'ui', centerX: toX, centerY: toY });
		var offsetX = core.clamp(toX - core.__HALF_SIZE__, 0, core.bigmap.width - core.__SIZE__),
			offsetY = core.clamp(toY - core.__HALF_SIZE__, 0, core.bigmap.height - core.__SIZE__);
		core.fillRect('ui', (toX - offsetX) * 32, (toY - offsetY) * 32, 32, 32, fillstyle);
		core.status.event.data = { "x": toX, "y": toY, "posX": toX - offsetX, "posY": toY - offsetY };
		core.drawTip("请确认当前中心对称飞行器的位置");
		return;
	}
},

"pickaxeEvent":function(){
	core.events.tryUseItem = function (itemId) {
		core.ui.closePanel();
		if (itemId == 'book') return core.openBook(false);
		if (itemId == 'fly') return core.useFly(false);
		if (itemId == 'centerFly') return core.ui.drawCenterFly();
		
		if(itemId=='pickaxe'){
			var blk = core.getBlock(core.nextX(),core.nextY());
			if (blk && blk.block.id == 40106) {
				core.insertAction(["\t[hero]\b[hero]破这？你是傻子么？！"]);
				return;
			}
		}
		if (core.canUseItem(itemId)) core.useItem(itemId);
		else core.drawTip("当前无法使用" + core.material.items[itemId].name);
	}
}

}