合并items

This commit is contained in:
ckcz123 2020-05-23 11:57:39 +08:00
parent 34e4a5130e
commit 7d6f5f35fb
7 changed files with 532 additions and 548 deletions

View File

@ -347,7 +347,7 @@ editor_file = function (editor, callback) {
mapActions.push(["add", "['" + idnum + "']", {'cls': image, 'id': id}]);
faceIds.push({idnum: idnum, id: id});
if (image=='items')
templateActions.push(["add", "['items']['" + id + "']", editor.file.comment._data.items_template]);
templateActions.push(["add", "['" + id + "']", editor.file.comment._data.items_template]);
else if (image.indexOf('enemy')==0)
templateActions.push(["add", "['" + id + "']", editor.file.comment._data.enemys_template]);
idnum++;
@ -449,7 +449,7 @@ editor_file = function (editor, callback) {
saveSetting('maps', [["add", "['" + idnum + "']", {'cls': info.images, 'id': id}]], tempcallback);
saveSetting('icons', [["add", "['" + info.images + "']['" + id + "']", info.y]], tempcallback);
if (info.images === 'items') {
saveSetting('items', [["add", "['items']['" + id + "']", editor.file.comment._data.items_template]], function (err) {
saveSetting('items', [["add", "['" + id + "']", editor.file.comment._data.items_template]], function (err) {
if (err) {
printe(err);
throw(err)
@ -479,7 +479,7 @@ editor_file = function (editor, callback) {
maps_90f36752_8815_4be8_b32b_d7fad1d0542e[idnum].id = id;
var arr=[icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1,items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a,{enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80:enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80}]
var arr=[icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1,{items: items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a},{enemys: enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80}]
arr.forEach(function (obj) {
for(var jj in obj){
var ii=obj[jj]
@ -497,8 +497,8 @@ editor_file = function (editor, callback) {
//callback(err:String)
editor.file.editItem = function (id, actionList, callback) {
/*actionList:[
["change","['items']['name']","红宝石的新名字"],
["add","['items']['新的和name同级的属性']",123],
["change","['name']","红宝石的新名字"],
["add","['新的和name同级的属性']",123],
["change","['itemEffectTip']","',攻击力+'+editor.core.values.redGem"],
]
[]时只查询不修改
@ -506,8 +506,7 @@ editor_file = function (editor, callback) {
checkCallback(callback);
if (isset(actionList) && actionList.length > 0) {
actionList.forEach(function (value) {
var tempindex = value[1].indexOf(']') + 1;
value[1] = [value[1].slice(0, tempindex), "['" + id + "']", value[1].slice(tempindex)].join('');
value[1] = "['" + id + "']" + value[1];
});
saveSetting('items', actionList, function (err) {
callback([err]);
@ -515,22 +514,12 @@ editor_file = function (editor, callback) {
} else {
callback([
(function () {
var locObj_ = {};
var locObj = Object.assign({}, editor.core.items.items[id]);
Object.keys(editor.file.comment._data.items._data).forEach(function (v) {
if (isset(editor.core.items[v][id]) && v !== 'items')
locObj_[v] = editor.core.items[v][id];
else
locObj_[v] = null;
if (!isset(editor.core.items.items[id][v]))
locObj[v] = null;
});
locObj_['items'] = (function () {
var locObj = Object.assign({}, editor.core.items.items[id]);
Object.keys(editor.file.comment._data.items._data.items._data).forEach(function (v) {
if (!isset(editor.core.items.items[id][v]))
locObj[v] = null;
});
return locObj;
})();
return locObj_;
return locObj;
})(),
editor.file.comment._data.items,
null]);
@ -930,7 +919,10 @@ editor_file = function (editor, callback) {
eval("items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a" + value[1] + '=' + JSON.stringify(value[2]));
});
var datastr = 'var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = \n';
datastr += JSON.stringify(items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a, null, '\t');
datastr += JSON.stringify(items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a, function (k, v) {
if (v.id != null) delete v.id;
return v;
}, '\t');
fs.writeFile('project/items.js', encode(datastr), 'base64', function (err, data) {
callback(err);
});
@ -944,6 +936,7 @@ editor_file = function (editor, callback) {
var emap = {};
var estr = JSON.stringify(enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80, function (k, v) {
if (v.hp != null) {
delete v.id;
var id_ = editor.util.guid();
emap[id_] = JSON.stringify(v);
return id_;

View File

@ -11,54 +11,55 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"items": {
"_type": "object",
"_data": {
"items": {
"_type": "object",
"_data": {
"cls": {
"_leaf": true,
"_type": "select",
"_select": {
"values": [
"items",
"constants",
"tools",
"equips"
]
},
"_docs": "道具类别",
"_data": "items(宝石、血瓶) constants(永久物品) tools(消耗道具) equips(装备)"
},
"name": {
"_leaf": true,
"_type": "textarea",
"_string": true,
"_data": "道具名称"
},
"text": {
"_leaf": true,
"_type": "textarea",
"_string": true,
"_docs": "道具描述",
"_data": "道具在道具栏中显示的描述"
},
"hideInToolbox": {
"_leaf": true,
"_type": "checkbox",
"_docs": "不显示在道具栏",
},
"equip": {
"_leaf": true,
"_type": "event",
"_event": "equip",
"_docs": "道具的装备属性"
},
"hideInReplay": {
"_leaf": true,
"_type": "checkbox",
"_docs": "回放不绘制道具栏",
"_data": "此项建议在会频繁连续多次使用的道具开启(如开启技能,或者《镜子》那样的镜像切换等等)"
}
}
"id": {
"_leaf": true,
"_type": "disable",
"_docs": "道具ID",
"_data": "道具ID可于页面底部修改"
},
"cls": {
"_leaf": true,
"_type": "select",
"_select": {
"values": [
"items",
"constants",
"tools",
"equips"
]
},
"_docs": "道具类别",
"_data": "items(宝石、血瓶) constants(永久物品) tools(消耗道具) equips(装备)"
},
"name": {
"_leaf": true,
"_type": "textarea",
"_string": true,
"_data": "道具名称"
},
"text": {
"_leaf": true,
"_type": "textarea",
"_string": true,
"_docs": "道具描述",
"_data": "道具在道具栏中显示的描述"
},
"hideInToolbox": {
"_leaf": true,
"_type": "checkbox",
"_docs": "不显示在道具栏",
},
"equip": {
"_leaf": true,
"_type": "event",
"_event": "equip",
"_docs": "道具的装备属性"
},
"hideInReplay": {
"_leaf": true,
"_type": "checkbox",
"_docs": "回放不绘制道具栏",
"_data": "此项建议在会频繁连续多次使用的道具开启(如开启技能,或者《镜子》那样的镜像切换等等)"
},
"itemEffect": {
"_leaf": true,
@ -115,6 +116,12 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"enemys": {
"_type": "object",
"_data": {
"id": {
"_leaf": true,
"_type": "disable",
"_docs": "怪物ID",
"_data": "怪物ID可于页面底部修改"
},
"name": {
"_leaf": true,
"_type": "textarea",

View File

@ -10,13 +10,13 @@ function enemys() {
enemys.prototype._init = function () {
this.enemys = enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80;
this.enemydata = functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.enemys;
for (var enemyId in this.enemys) {
this.enemys[enemyId].id = enemyId;
}
if (main.mode == 'play') {
this.enemydata.hasSpecial = function (a, b) {
return core.enemys.hasSpecial(a, b)
};
for (var enemyId in this.enemys) {
this.enemys[enemyId].id = enemyId;
}
}
}

View File

@ -8,17 +8,10 @@ function items() {
////// 初始化 //////
items.prototype._init = function () {
this.items = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.items;
this.itemEffect = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.itemEffect;
this.itemEffectTip = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.itemEffectTip;
this.useItemEffect = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.useItemEffect;
this.canUseItemEffect = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.canUseItemEffect;
if (!items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.equipCondition)
items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.equipCondition = {};
if (!items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.useItemEvent)
items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.useItemEvent = {};
this.equipCondition = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.equipCondition;
this.useItemEvent = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.useItemEvent;
this.items = items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a;
for (var itemId in this.items) {
this.items[itemId].id = itemId;
}
}
////// 获得所有道具 //////
@ -32,10 +25,11 @@ items.prototype.getItemEffect = function (itemId, itemNum) {
// 消耗品
if (itemCls === 'items') {
var curr_hp = core.status.hero.hp;
if (itemId in this.itemEffect) {
var itemEffect = core.material.items[itemId].itemEffect;
if (itemEffect) {
try {
for (var i = 0; i < itemNum; ++i)
eval(this.itemEffect[itemId]);
eval(itemEffect);
}
catch (e) {
main.log(e);
@ -43,9 +37,10 @@ items.prototype.getItemEffect = function (itemId, itemNum) {
}
core.status.hero.statistics.hp += core.status.hero.hp - curr_hp;
if (this.useItemEvent[itemId]) {
var useItemEvent = core.material.items[itemId].useItemEvent;
if (useItemEvent) {
try {
core.insertAction(this.useItemEvent[itemId]);
core.insertAction(useItemEvent);
}
catch (e) {
main.log(e);
@ -63,9 +58,10 @@ items.prototype.getItemEffectTip = function (itemId) {
var itemCls = core.material.items[itemId].cls;
// 消耗品
if (itemCls === 'items') {
if (itemId in this.itemEffectTip) {
var itemEffectTip = core.material.items[itemId].itemEffectTip;
if (itemEffectTip) {
try {
return core.replaceText(this.itemEffectTip[itemId]) || "";
return core.replaceText(itemEffectTip) || "";
} catch (e) {
main.log(e);
return "";
@ -91,17 +87,19 @@ items.prototype.useItem = function (itemId, noRoute, callback) {
}
items.prototype._useItemEffect = function (itemId) {
if (itemId in this.useItemEffect) {
var useItemEffect = core.material.items[itemId].useItemEffect;
if (useItemEffect) {
try {
eval(this.useItemEffect[itemId]);
eval(useItemEffect);
}
catch (e) {
main.log(e);
}
}
if (this.useItemEvent[itemId]) {
var useItemEvent = core.material.items[itemId].useItemEvent;
if (useItemEvent) {
try {
core.insertAction(this.useItemEvent[itemId]);
core.insertAction(useItemEvent);
}
catch (e) {
main.log(e);
@ -123,10 +121,11 @@ items.prototype._afterUseItem = function (itemId) {
items.prototype.canUseItem = function (itemId) {
// 没有道具
if (!core.hasItem(itemId)) return false;
if (itemId in this.canUseItemEffect) {
var canUseItemEffect = core.material.items[itemId].canUseItemEffect;
if (canUseItemEffect) {
try {
return eval(this.canUseItemEffect[itemId]);
return eval(canUseItemEffect);
}
catch (e) {
main.log(e);
@ -243,10 +242,10 @@ items.prototype.canEquip = function (equipId, hint) {
}
// 可装备条件
var condition = this.equipCondition[equipId];
if (condition) {
var equipCondition = core.material.items[equipId].equipCondition;
if (equipCondition) {
try {
if (!eval(condition)) {
if (!eval(equipCondition)) {
if (hint) core.drawTip("当前不可换上" + equip.name);
return false;
}

View File

@ -307,7 +307,7 @@ maps.prototype.saveMap = function (floorId) {
var map = maps[floorId];
var thisFloor = this._compressFloorData(map, core.floors[floorId]);
if (map.blocks) {
var mapArr = this.compressMap(map.blocks, map.width, map.height, floorId);
var mapArr = this.compressMap(this._getMapArrayFromBlocks(map.blocks, map.width, map.height, true), floorId);
if (mapArr != null) thisFloor.map = mapArr;
}
return thisFloor;

View File

@ -2846,7 +2846,7 @@ ui.prototype._drawStatistics_items = function (floorId, floor, id, obj) {
if (obj.cls[id]=='items' && id!='superPotion') {
var temp = core.clone(core.status.hero);
core.setFlag("__statistics__", true);
try { eval(core.items.itemEffect[id]); }
try { eval(core.material.items[id].itemEffect); }
catch (e) {}
hp = core.status.hero.hp - temp.hp;
atk = core.status.hero.atk - temp.atk;

View File

@ -1,454 +1,57 @@
var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
{
"items": {
"yellowKey": {
"cls": "tools",
"name": "黄钥匙",
"text": "可以打开一扇黄门",
"hideInToolbox": true
},
"blueKey": {
"cls": "tools",
"name": "蓝钥匙",
"text": "可以打开一扇蓝门",
"hideInToolbox": true
},
"redKey": {
"cls": "tools",
"name": "红钥匙",
"text": "可以打开一扇红门",
"hideInToolbox": true
},
"redGem": {
"cls": "items",
"name": "红宝石",
"text": "攻击+${core.values.redGem}"
},
"blueGem": {
"cls": "items",
"name": "蓝宝石",
"text": ",防御+${core.values.blueGem}"
},
"greenGem": {
"cls": "items",
"name": "绿宝石",
"text": ",护盾+${core.values.greenGem}"
},
"yellowGem": {
"cls": "items",
"name": "黄宝石",
"text": "可以进行加点"
},
"redPotion": {
"cls": "items",
"name": "红血瓶",
"text": ",生命+${core.values.redPotion}"
},
"bluePotion": {
"cls": "items",
"name": "蓝血瓶",
"text": ",生命+${core.values.bluePotion}"
},
"yellowPotion": {
"cls": "items",
"name": "黄血瓶",
"text": ",生命+${core.values.yellowPotion}"
},
"greenPotion": {
"cls": "items",
"name": "绿血瓶",
"text": ",生命+${core.values.greenPotion}"
},
"sword0": {
"cls": "items",
"name": "破旧的剑",
"text": "一把已经生锈的剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 0
}
}
},
"sword1": {
"cls": "items",
"name": "铁剑",
"text": "一把很普通的铁剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 10
}
}
},
"sword2": {
"cls": "items",
"name": "银剑",
"text": "一把很普通的银剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 20
}
}
},
"sword3": {
"cls": "items",
"name": "骑士剑",
"text": "一把很普通的骑士剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 40
}
}
},
"sword4": {
"cls": "items",
"name": "圣剑",
"text": "一把很普通的圣剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 80
}
}
},
"sword5": {
"cls": "items",
"name": "神圣剑",
"text": "一把很普通的神圣剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 160
}
}
},
"shield0": {
"cls": "items",
"name": "破旧的盾",
"text": "一个很破旧的铁盾",
"equip": {
"type": 1,
"value": {
"def": 0
}
}
},
"shield1": {
"cls": "items",
"name": "铁盾",
"text": "一个很普通的铁盾",
"equip": {
"type": 1,
"value": {
"def": 10
}
}
},
"shield2": {
"cls": "items",
"name": "银盾",
"text": "一个很普通的银盾",
"equip": {
"type": 1,
"value": {
"def": 20
}
}
},
"shield3": {
"cls": "items",
"name": "骑士盾",
"text": "一个很普通的骑士盾",
"equip": {
"type": 1,
"value": {
"def": 40
}
}
},
"shield4": {
"cls": "items",
"name": "圣盾",
"text": "一个很普通的圣盾",
"equip": {
"type": 1,
"value": {
"def": 80
}
}
},
"shield5": {
"cls": "items",
"name": "神圣盾",
"text": "一个很普通的神圣盾",
"equip": {
"type": 1,
"value": {
"def": 100,
"mdef": 100
}
}
},
"superPotion": {
"cls": "items",
"name": "圣水"
},
"silverCoin": {
"cls": "items",
"name": "银币"
},
"book": {
"cls": "constants",
"name": "怪物手册",
"text": "可以查看当前楼层各怪物属性",
"hideInToolbox": true
},
"fly": {
"cls": "constants",
"name": "楼层传送器",
"text": "可以自由往来去过的楼层",
"hideInReplay": true,
"hideInToolbox": true
},
"coin": {
"cls": "constants",
"name": "幸运金币",
"text": "持有时打败怪物可得双倍金币"
},
"freezeBadge": {
"cls": "constants",
"name": "冰冻徽章",
"text": "可以将面前的熔岩变成平地"
},
"cross": {
"cls": "constants",
"name": "十字架",
"text": "持有后无视怪物的无敌属性"
},
"dagger": {
"cls": "constants",
"name": "屠龙匕首",
"text": "该道具尚未被定义"
},
"amulet": {
"cls": "constants",
"name": "护符",
"text": "持有时无视负面地形"
},
"bigKey": {
"cls": "tools",
"name": "大黄门钥匙",
"text": "可以开启当前层所有黄门"
},
"greenKey": {
"cls": "tools",
"name": "绿钥匙",
"text": "可以打开一扇绿门"
},
"steelKey": {
"cls": "tools",
"name": "铁门钥匙",
"text": "可以打开一扇铁门"
},
"pickaxe": {
"cls": "tools",
"name": "破墙镐",
"text": "可以破坏勇士面前的墙"
},
"icePickaxe": {
"cls": "tools",
"name": "破冰镐",
"text": "可以破坏勇士面前的一堵冰墙"
},
"bomb": {
"cls": "tools",
"name": "炸弹",
"text": "可以炸掉勇士面前的怪物"
},
"centerFly": {
"cls": "tools",
"name": "中心对称飞行器",
"text": "可以飞向当前楼层中心对称的位置"
},
"upFly": {
"cls": "tools",
"name": "上楼器",
"text": "可以飞往楼上的相同位置"
},
"downFly": {
"cls": "tools",
"name": "下楼器",
"text": "可以飞往楼下的相同位置"
},
"earthquake": {
"cls": "tools",
"name": "地震卷轴",
"text": "可以破坏当前层的所有墙"
},
"poisonWine": {
"cls": "tools",
"name": "解毒药水",
"text": "可以解除中毒状态"
},
"weakWine": {
"cls": "tools",
"name": "解衰药水",
"text": "可以解除衰弱状态"
},
"curseWine": {
"cls": "tools",
"name": "解咒药水",
"text": "可以解除诅咒状态"
},
"superWine": {
"cls": "tools",
"name": "万能药水",
"text": "可以解除所有不良状态"
},
"hammer": {
"cls": "tools",
"name": "圣锤",
"text": "该道具尚未被定义"
},
"lifeWand": {
"cls": "tools",
"name": "生命魔杖",
"text": "可以恢复100点生命值"
},
"jumpShoes": {
"cls": "tools",
"name": "跳跃靴",
"text": "能跳跃到前方两格处"
},
"skill1": {
"cls": "constants",
"name": "技能:二倍斩",
"text": "可以打开或关闭主动技能二倍斩",
"hideInReplay": true
},
"wand": {
"cls": "items",
"name": "新物品"
}
"yellowKey": {
"cls": "tools",
"name": "黄钥匙",
"text": "可以打开一扇黄门",
"hideInToolbox": true
},
"itemEffect": {
"redGem": "core.status.hero.atk += core.values.redGem * core.status.thisMap.ratio",
"blueGem": "core.status.hero.def += core.values.blueGem * core.status.thisMap.ratio",
"greenGem": "core.status.hero.mdef += core.values.greenGem * core.status.thisMap.ratio",
"yellowGem": "core.status.hero.hp+=1000;core.status.hero.atk+=6;core.status.hero.def+=6;core.status.hero.mdef+=10;",
"redPotion": "core.status.hero.hp += core.values.redPotion * core.status.thisMap.ratio",
"bluePotion": "core.status.hero.hp += core.values.bluePotion * core.status.thisMap.ratio",
"yellowPotion": "core.status.hero.hp += core.values.yellowPotion * core.status.thisMap.ratio",
"greenPotion": "core.status.hero.hp += core.values.greenPotion * core.status.thisMap.ratio",
"sword0": "core.status.hero.atk += 0",
"sword1": "core.status.hero.atk += 10",
"sword2": "core.status.hero.atk += 20",
"sword3": "core.status.hero.atk += 40",
"sword4": "core.status.hero.atk += 80",
"sword5": "core.status.hero.atk += 100",
"shield0": "core.status.hero.def += 0",
"shield1": "core.status.hero.def += 10",
"shield2": "core.status.hero.def += 20",
"shield3": "core.status.hero.def += 40",
"shield4": "core.status.hero.def += 80",
"shield5": "core.status.hero.def += 100;core.status.hero.mdef += 100",
"bigKey": "core.status.hero.items.keys.yellowKey++;core.status.hero.items.keys.blueKey++;core.status.hero.items.keys.redKey++;",
"superPotion": "core.status.hero.hp *= 2",
"silverCoin": "core.status.hero.money += 500"
"blueKey": {
"cls": "tools",
"name": "蓝钥匙",
"text": "可以打开一扇蓝门",
"hideInToolbox": true
},
"itemEffectTip": {
"redGem": ",攻击+${core.values.redGem * core.status.thisMap.ratio}",
"blueGem": ",防御+${core.values.blueGem * core.status.thisMap.ratio}",
"greenGem": ",护盾+${core.values.greenGem * core.status.thisMap.ratio}",
"yellowGem": ",全属性提升",
"redPotion": ",生命+${core.values.redPotion * core.status.thisMap.ratio}",
"bluePotion": ",生命+${core.values.bluePotion * core.status.thisMap.ratio}",
"yellowPotion": ",生命+${core.values.yellowPotion * core.status.thisMap.ratio}",
"greenPotion": ",生命+${core.values.greenPotion * core.status.thisMap.ratio}",
"sword0": ",攻击+0",
"sword1": ",攻击+10",
"sword2": ",攻击+20",
"sword3": ",攻击+40",
"sword4": ",攻击+80",
"sword5": ",攻击+100",
"shield0": ",防御+0",
"shield1": ",防御+10",
"shield2": ",防御+20",
"shield3": ",防御+40",
"shield4": ",防御+80",
"shield5": ",防御+100护盾+100",
"bigKey": ",全钥匙+1",
"superPotion": ",生命值翻倍",
"silverCoin": ",金币+500"
"redKey": {
"cls": "tools",
"name": "红钥匙",
"text": "可以打开一扇红门",
"hideInToolbox": true
},
"useItemEffect": {
"book": "core.ui.drawBook(0);",
"fly": "core.ui.drawFly(core.floorIds.indexOf(core.status.floorId));",
"earthquake": "(function () {\n\tvar indexes = [];\n\tfor (var index in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[index];\n\t\tif (!block.disable && block.event.canBreak) {\n\t\t\tindexes.push(index);\n\t\t}\n\t}\n\tcore.removeBlockByIndexes(indexes);\n\tcore.drawMap(core.status.floorId, function () {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t});\n})();",
"pickaxe": "(function () {\n\tvar canBreak = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.block.disable) return false;\n\t\treturn block.block.event.canBreak;\n\t};\n\n\tvar success = false;\n\tvar pickaxeFourDirections = false; // 是否四方向破如果是将其改成true\n\tif (pickaxeFourDirections) {\n\t\t// 四方向破\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBreak(nx, ny)) {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅破当前\n\t\tif (canBreak(core.nextX(), core.nextY())) {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.playSound('pickaxe.mp3');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\t// 无法使用\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();",
"icePickaxe": "(function () {\n\tcore.removeBlock(core.nextX(), core.nextY());\n\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n})();",
"freezeBadge": "(function () {\n\tvar success = false;\n\n\tvar snowFourDirections = false; // 是否四方向雪花如果是将其改成true\n\tif (snowFourDirections) {\n\t\t// 四方向雪花\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (core.getBlockId(nx, ny) == 'lava') {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (core.getBlockId(core.nextX(), core.nextY()) == 'lava') {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();",
"bigKey": "(function () {\n\tvar actions = core.searchBlock(\"yellowDoor\").map(function (block) {\n\t\treturn { \"type\": \"openDoor\", \"loc\": [block.x, block.y], \"async\": true };\n\t});\n\tactions.push({ \"type\": \"waitAsync\" });\n\tactions.push({ \"type\": \"tip\", \"text\": core.material.items[itemId].name + \"使用成功\" });\n\tcore.insertAction(actions);\n})();",
"bomb": "(function () {\n\tvar canBomb = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.block.disable || block.block.event.cls.indexOf('enemy') != 0) return false;\n\t\tvar enemy = core.material.enemys[block.block.event.id];\n\t\treturn enemy && !enemy.notBomb;\n\t};\n\n\tvar bombList = []; // 炸掉的怪物坐标列表\n\tvar bombFourDirections = false; // 是否四方向可炸如果是将其改成true。\n\tif (bombFourDirections) {\n\t\t// 四方向炸\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBomb(nx, ny)) {\n\t\t\t\tbombList.push([nx, ny]);\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅炸当前\n\t\tif (canBomb(core.nextX(), core.nextY())) {\n\t\t\tbombList.push([core.nextX(), core.nextY()]);\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t}\n\t}\n\n\tif (bombList.length > 0) {\n\t\tcore.playSound('bomb.mp3');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip('当前无法使用' + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n\n\t// 炸弹后事件\n\t// 这是一个使用炸弹也能开门的例子\n\t/*\n\tif (core.status.floorId=='xxx' && core.terrainExists(x0,y0,'specialDoor') // 某个楼层,该机关门存在\n\t\t&& !core.enemyExists(x1,y1) && !core.enemyExists(x2,y2)) // 且守门的怪物都不存在\n\t{\n\t\tcore.insertAction([ // 插入事件\n\t\t\t{\"type\": \"openDoor\", \"loc\": [x0,y0]} // 开门\n\t\t])\n\t}\n\t*/\n})();",
"centerFly": "core.playSound('centerFly.mp3');\ncore.clearMap('hero');\ncore.setHeroLoc('x', core.bigmap.width - 1 - core.getHeroLoc('x'));\ncore.setHeroLoc('y', core.bigmap.height - 1 - core.getHeroLoc('y'));\ncore.drawHero();\ncore.drawTip(core.material.items[itemId].name + '使用成功');",
"upFly": "(function () {\n\tvar floorId = core.floorIds[core.floorIds.indexOf(core.status.floorId) + 1];\n\tif (core.status.event.id == 'action') {\n\t\tcore.insertAction([\n\t\t\t{ \"type\": \"changeFloor\", \"loc\": [core.getHeroLoc('x'), core.getHeroLoc('y')], \"floorId\": floorId },\n\t\t\t{ \"type\": \"tip\", \"text\": core.material.items[itemId].name + '使用成功' }\n\t\t]);\n\t} else {\n\t\tcore.changeFloor(floorId, null, core.status.hero.loc, null, function () {\n\t\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t\t\tcore.replay();\n\t\t});\n\t}\n})();",
"downFly": "(function () {\n\tvar floorId = core.floorIds[core.floorIds.indexOf(core.status.floorId) - 1];\n\tif (core.status.event.id == 'action') {\n\t\tcore.insertAction([\n\t\t\t{ \"type\": \"changeFloor\", \"loc\": [core.getHeroLoc('x'), core.getHeroLoc('y')], \"floorId\": floorId },\n\t\t\t{ \"type\": \"tip\", \"text\": core.material.items[itemId].name + '使用成功' }\n\t\t]);\n\t} else {\n\t\tcore.changeFloor(floorId, null, core.status.hero.loc, null, function () {\n\t\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t\t\tcore.replay();\n\t\t});\n\t}\n})();",
"poisonWine": "core.removeFlag('poison');",
"weakWine": "core.removeFlag('weak');\nif (core.values.weakValue>=1) { // >=1直接扣数值\n\tcore.status.hero.atk += core.values.weakValue;\n\tcore.status.hero.def += core.values.weakValue;\n}\nelse { // <1扣比例\n\tcore.addBuff(\"atk\", core.values.weakValue);\n\tcore.addBuff(\"def\", core.values.weakValue);\n}",
"curseWine": "core.removeFlag('curse');",
"superWine": "core.removeFlag('poison');\nif (core.hasFlag('weak')) {\n\tcore.removeFlag('weak');\n\tif (core.values.weakValue>=1) { // >=1直接扣数值\n\t\tcore.status.hero.atk += core.values.weakValue;\n\t\tcore.status.hero.def += core.values.weakValue;\n\t}\n\telse { // <1扣比例\n\t\tcore.addBuff(\"atk\", core.values.weakValue);\n\t\tcore.addBuff(\"def\", core.values.weakValue);\n\t}\n}\ncore.removeFlag('curse');",
"lifeWand": null,
"jumpShoes": "core.insertAction({ \"type\": \"jumpHero\", \"loc\": [core.nextX(2), core.nextY(2)] });",
"redPotion": "core.status.hero.hp += core.values.redPotion",
"bluePotion": "core.status.hero.hp += core.values.bluePotion",
"greenPotion": "core.status.hero.hp += core.values.greenPotion",
"yellowPotion": "core.status.hero.hp += core.values.yellowPotion",
"redGem": "core.status.hero.atk += core.values.redGem",
"blueGem": "core.status.hero.def += core.values.blueGem",
"greenGem": "core.status.hero.mdef += core.values.greenGem",
"yellowGem": null,
"skill1": "// 二倍斩的flag:skill为1\nif (core.getFlag('skill', 0)==0) { // 判断当前是否已经开了技能\n\tif (core.getStatus('mana')>=5) { // 这里要写当前能否开技能的条件判断,比如魔力值至少要多少\n\t\tcore.setFlag('skill', 1); // 开技能1\n\t\tcore.setFlag('skillName', '二倍斩'); // 设置技能名\n\t}\n\telse {\n\t\tcore.drawTip(\"魔力不足,无法开启技能\");\n\t}\n}\nelse { // 关闭技能\n\tcore.setFlag('skill', 0); // 关闭技能状态\n\tcore.setFlag('skillName', '无');\n}"
"redGem": {
"cls": "items",
"name": "红宝石",
"text": "攻击+${core.values.redGem}",
"itemEffect": "core.status.hero.atk += core.values.redGem * core.status.thisMap.ratio",
"itemEffectTip": ",攻击+${core.values.redGem * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.atk += core.values.redGem",
"canUseItemEffect": "true"
},
"canUseItemEffect": {
"book": "true",
"fly": "(function () {\n\treturn core.status.maps[core.status.floorId].canFlyTo;\n})();",
"pickaxe": "true",
"icePickaxe": "(function () {\n\treturn core.getBlockId(core.nextX(), core.nextY()) == 'ice';\n})();",
"bomb": "true",
"earthquake": "(function () {\n\treturn core.status.thisMap.blocks.filter(function (block) {\n\t\treturn !block.disable && block.event.canBreak;\n\t}).length > 0;\n})();",
"centerFly": "(function () {\n\tvar toX = core.bigmap.width - 1 - core.getHeroLoc('x'),\n\t\ttoY = core.bigmap.height - 1 - core.getHeroLoc('y');\n\tvar id = core.getBlockId(toX, toY);\n\treturn id == null;\n})();",
"upFly": "(function () {\n\tvar floorId = core.status.floorId,\n\t\tindex = core.floorIds.indexOf(floorId);\n\tif (index < core.floorIds.length - 1) {\n\t\tvar toId = core.floorIds[index + 1],\n\t\t\ttoX = core.getHeroLoc('x'),\n\t\t\ttoY = core.getHeroLoc('y');\n\t\tvar mw = core.floors[toId].width,\n\t\t\tmh = core.floors[toId].height;\n\t\tif (toX >= 0 && toX < mw && toY >= 0 && toY < mh && core.getBlock(toX, toY, toId) == null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();",
"downFly": "(function () {\n\tvar floorId = core.status.floorId,\n\t\tindex = core.floorIds.indexOf(floorId);\n\tif (index > 0) {\n\t\tvar toId = core.floorIds[index - 1],\n\t\t\ttoX = core.getHeroLoc('x'),\n\t\t\ttoY = core.getHeroLoc('y');\n\t\tvar mw = core.floors[toId].width,\n\t\t\tmh = core.floors[toId].height;\n\t\tif (toX >= 0 && toX < mw && toY >= 0 && toY < mh && core.getBlock(toX, toY, toId) == null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();",
"freezeBadge": "true",
"bigKey": "(function () {\n\treturn core.searchBlock('yellowDoor').length > 0;\n})();",
"poisonWine": "core.hasFlag('poison');",
"weakWine": "core.hasFlag('weak');",
"curseWine": "core.hasFlag('curse');",
"superWine": "(function() {\n\treturn core.hasFlag('poison') || core.hasFlag('weak') || core.hasFlag('curse');\n})();",
"lifeWand": "true",
"jumpShoes": "(function () {\n\tvar nx = core.nextX(2),\n\t\tny = core.nextY(2);\n\treturn nx >= 0 && nx < core.bigmap.width && ny >= 0 && ny < core.bigmap.height && core.getBlockId(nx, ny) == null;\n})();",
"redPotion": "true",
"bluePotion": "true",
"greenPotion": "true",
"yellowPotion": "true",
"redGem": "true",
"blueGem": "true",
"greenGem": "true",
"yellowGem": "true",
"skill1": "true"
"blueGem": {
"cls": "items",
"name": "蓝宝石",
"text": ",防御+${core.values.blueGem}",
"itemEffect": "core.status.hero.def += core.values.blueGem * core.status.thisMap.ratio",
"itemEffectTip": ",防御+${core.values.blueGem * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.def += core.values.blueGem",
"canUseItemEffect": "true"
},
"equipCondition": {},
"useItemEvent": {
"yellowGem": [
"greenGem": {
"cls": "items",
"name": "绿宝石",
"text": ",护盾+${core.values.greenGem}",
"itemEffect": "core.status.hero.mdef += core.values.greenGem * core.status.thisMap.ratio",
"itemEffectTip": ",护盾+${core.values.greenGem * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.mdef += core.values.greenGem",
"canUseItemEffect": "true"
},
"yellowGem": {
"cls": "items",
"name": "黄宝石",
"text": "可以进行加点",
"itemEffect": "core.status.hero.hp+=1000;core.status.hero.atk+=6;core.status.hero.def+=6;core.status.hero.mdef+=10;",
"itemEffectTip": ",全属性提升",
"useItemEvent": [
{
"type": "choices",
"choices": [
@ -488,7 +91,369 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
]
}
],
"lifeWand": [
"canUseItemEffect": "true"
},
"redPotion": {
"cls": "items",
"name": "红血瓶",
"text": ",生命+${core.values.redPotion}",
"itemEffect": "core.status.hero.hp += core.values.redPotion * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.redPotion * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.redPotion",
"canUseItemEffect": "true"
},
"bluePotion": {
"cls": "items",
"name": "蓝血瓶",
"text": ",生命+${core.values.bluePotion}",
"itemEffect": "core.status.hero.hp += core.values.bluePotion * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.bluePotion * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.bluePotion",
"canUseItemEffect": "true"
},
"yellowPotion": {
"cls": "items",
"name": "黄血瓶",
"text": ",生命+${core.values.yellowPotion}",
"itemEffect": "core.status.hero.hp += core.values.yellowPotion * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.yellowPotion * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.yellowPotion",
"canUseItemEffect": "true"
},
"greenPotion": {
"cls": "items",
"name": "绿血瓶",
"text": ",生命+${core.values.greenPotion}",
"itemEffect": "core.status.hero.hp += core.values.greenPotion * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.greenPotion * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.greenPotion",
"canUseItemEffect": "true"
},
"sword0": {
"cls": "items",
"name": "破旧的剑",
"text": "一把已经生锈的剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 0
}
},
"itemEffect": "core.status.hero.atk += 0",
"itemEffectTip": ",攻击+0"
},
"sword1": {
"cls": "items",
"name": "铁剑",
"text": "一把很普通的铁剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 10
}
},
"itemEffect": "core.status.hero.atk += 10",
"itemEffectTip": ",攻击+10"
},
"sword2": {
"cls": "items",
"name": "银剑",
"text": "一把很普通的银剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 20
}
},
"itemEffect": "core.status.hero.atk += 20",
"itemEffectTip": ",攻击+20"
},
"sword3": {
"cls": "items",
"name": "骑士剑",
"text": "一把很普通的骑士剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 40
}
},
"itemEffect": "core.status.hero.atk += 40",
"itemEffectTip": ",攻击+40"
},
"sword4": {
"cls": "items",
"name": "圣剑",
"text": "一把很普通的圣剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 80
}
},
"itemEffect": "core.status.hero.atk += 80",
"itemEffectTip": ",攻击+80"
},
"sword5": {
"cls": "items",
"name": "神圣剑",
"text": "一把很普通的神圣剑",
"equip": {
"type": 0,
"animate": "sword",
"value": {
"atk": 160
}
},
"itemEffect": "core.status.hero.atk += 100",
"itemEffectTip": ",攻击+100"
},
"shield0": {
"cls": "items",
"name": "破旧的盾",
"text": "一个很破旧的铁盾",
"equip": {
"type": 1,
"value": {
"def": 0
}
},
"itemEffect": "core.status.hero.def += 0",
"itemEffectTip": ",防御+0"
},
"shield1": {
"cls": "items",
"name": "铁盾",
"text": "一个很普通的铁盾",
"equip": {
"type": 1,
"value": {
"def": 10
}
},
"itemEffect": "core.status.hero.def += 10",
"itemEffectTip": ",防御+10"
},
"shield2": {
"cls": "items",
"name": "银盾",
"text": "一个很普通的银盾",
"equip": {
"type": 1,
"value": {
"def": 20
}
},
"itemEffect": "core.status.hero.def += 20",
"itemEffectTip": ",防御+20"
},
"shield3": {
"cls": "items",
"name": "骑士盾",
"text": "一个很普通的骑士盾",
"equip": {
"type": 1,
"value": {
"def": 40
}
},
"itemEffect": "core.status.hero.def += 40",
"itemEffectTip": ",防御+40"
},
"shield4": {
"cls": "items",
"name": "圣盾",
"text": "一个很普通的圣盾",
"equip": {
"type": 1,
"value": {
"def": 80
}
},
"itemEffect": "core.status.hero.def += 80",
"itemEffectTip": ",防御+80"
},
"shield5": {
"cls": "items",
"name": "神圣盾",
"text": "一个很普通的神圣盾",
"equip": {
"type": 1,
"value": {
"def": 100,
"mdef": 100
}
},
"itemEffect": "core.status.hero.def += 100;core.status.hero.mdef += 100",
"itemEffectTip": ",防御+100护盾+100"
},
"superPotion": {
"cls": "items",
"name": "圣水",
"itemEffect": "core.status.hero.hp *= 2",
"itemEffectTip": ",生命值翻倍"
},
"silverCoin": {
"cls": "items",
"name": "银币",
"itemEffect": "core.status.hero.money += 500",
"itemEffectTip": ",金币+500"
},
"book": {
"cls": "constants",
"name": "怪物手册",
"text": "可以查看当前楼层各怪物属性",
"hideInToolbox": true,
"useItemEffect": "core.ui.drawBook(0);",
"canUseItemEffect": "true"
},
"fly": {
"cls": "constants",
"name": "楼层传送器",
"text": "可以自由往来去过的楼层",
"hideInReplay": true,
"hideInToolbox": true,
"useItemEffect": "core.ui.drawFly(core.floorIds.indexOf(core.status.floorId));",
"canUseItemEffect": "(function () {\n\treturn core.status.maps[core.status.floorId].canFlyTo;\n})();"
},
"coin": {
"cls": "constants",
"name": "幸运金币",
"text": "持有时打败怪物可得双倍金币"
},
"freezeBadge": {
"cls": "constants",
"name": "冰冻徽章",
"text": "可以将面前的熔岩变成平地",
"useItemEffect": "(function () {\n\tvar success = false;\n\n\tvar snowFourDirections = false; // 是否四方向雪花如果是将其改成true\n\tif (snowFourDirections) {\n\t\t// 四方向雪花\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (core.getBlockId(nx, ny) == 'lava') {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (core.getBlockId(core.nextX(), core.nextY()) == 'lava') {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();",
"canUseItemEffect": "true"
},
"cross": {
"cls": "constants",
"name": "十字架",
"text": "持有后无视怪物的无敌属性"
},
"dagger": {
"cls": "constants",
"name": "屠龙匕首",
"text": "该道具尚未被定义"
},
"amulet": {
"cls": "constants",
"name": "护符",
"text": "持有时无视负面地形"
},
"bigKey": {
"cls": "tools",
"name": "大黄门钥匙",
"text": "可以开启当前层所有黄门",
"itemEffect": "core.status.hero.items.keys.yellowKey++;core.status.hero.items.keys.blueKey++;core.status.hero.items.keys.redKey++;",
"itemEffectTip": ",全钥匙+1",
"useItemEffect": "(function () {\n\tvar actions = core.searchBlock(\"yellowDoor\").map(function (block) {\n\t\treturn { \"type\": \"openDoor\", \"loc\": [block.x, block.y], \"async\": true };\n\t});\n\tactions.push({ \"type\": \"waitAsync\" });\n\tactions.push({ \"type\": \"tip\", \"text\": core.material.items[itemId].name + \"使用成功\" });\n\tcore.insertAction(actions);\n})();",
"canUseItemEffect": "(function () {\n\treturn core.searchBlock('yellowDoor').length > 0;\n})();"
},
"greenKey": {
"cls": "tools",
"name": "绿钥匙",
"text": "可以打开一扇绿门"
},
"steelKey": {
"cls": "tools",
"name": "铁门钥匙",
"text": "可以打开一扇铁门"
},
"pickaxe": {
"cls": "tools",
"name": "破墙镐",
"text": "可以破坏勇士面前的墙",
"useItemEffect": "(function () {\n\tvar canBreak = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.block.disable) return false;\n\t\treturn block.block.event.canBreak;\n\t};\n\n\tvar success = false;\n\tvar pickaxeFourDirections = false; // 是否四方向破如果是将其改成true\n\tif (pickaxeFourDirections) {\n\t\t// 四方向破\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBreak(nx, ny)) {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅破当前\n\t\tif (canBreak(core.nextX(), core.nextY())) {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.playSound('pickaxe.mp3');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\t// 无法使用\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();",
"canUseItemEffect": "true"
},
"icePickaxe": {
"cls": "tools",
"name": "破冰镐",
"text": "可以破坏勇士面前的一堵冰墙",
"useItemEffect": "(function () {\n\tcore.removeBlock(core.nextX(), core.nextY());\n\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n})();",
"canUseItemEffect": "(function () {\n\treturn core.getBlockId(core.nextX(), core.nextY()) == 'ice';\n})();"
},
"bomb": {
"cls": "tools",
"name": "炸弹",
"text": "可以炸掉勇士面前的怪物",
"useItemEffect": "(function () {\n\tvar canBomb = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.block.disable || block.block.event.cls.indexOf('enemy') != 0) return false;\n\t\tvar enemy = core.material.enemys[block.block.event.id];\n\t\treturn enemy && !enemy.notBomb;\n\t};\n\n\tvar bombList = []; // 炸掉的怪物坐标列表\n\tvar bombFourDirections = false; // 是否四方向可炸如果是将其改成true。\n\tif (bombFourDirections) {\n\t\t// 四方向炸\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBomb(nx, ny)) {\n\t\t\t\tbombList.push([nx, ny]);\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅炸当前\n\t\tif (canBomb(core.nextX(), core.nextY())) {\n\t\t\tbombList.push([core.nextX(), core.nextY()]);\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t}\n\t}\n\n\tif (bombList.length > 0) {\n\t\tcore.playSound('bomb.mp3');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip('当前无法使用' + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n\n\t// 炸弹后事件\n\t// 这是一个使用炸弹也能开门的例子\n\t/*\n\tif (core.status.floorId=='xxx' && core.terrainExists(x0,y0,'specialDoor') // 某个楼层,该机关门存在\n\t\t&& !core.enemyExists(x1,y1) && !core.enemyExists(x2,y2)) // 且守门的怪物都不存在\n\t{\n\t\tcore.insertAction([ // 插入事件\n\t\t\t{\"type\": \"openDoor\", \"loc\": [x0,y0]} // 开门\n\t\t])\n\t}\n\t*/\n})();",
"canUseItemEffect": "true"
},
"centerFly": {
"cls": "tools",
"name": "中心对称飞行器",
"text": "可以飞向当前楼层中心对称的位置",
"useItemEffect": "core.playSound('centerFly.mp3');\ncore.clearMap('hero');\ncore.setHeroLoc('x', core.bigmap.width - 1 - core.getHeroLoc('x'));\ncore.setHeroLoc('y', core.bigmap.height - 1 - core.getHeroLoc('y'));\ncore.drawHero();\ncore.drawTip(core.material.items[itemId].name + '使用成功');",
"canUseItemEffect": "(function () {\n\tvar toX = core.bigmap.width - 1 - core.getHeroLoc('x'),\n\t\ttoY = core.bigmap.height - 1 - core.getHeroLoc('y');\n\tvar id = core.getBlockId(toX, toY);\n\treturn id == null;\n})();"
},
"upFly": {
"cls": "tools",
"name": "上楼器",
"text": "可以飞往楼上的相同位置",
"useItemEffect": "(function () {\n\tvar floorId = core.floorIds[core.floorIds.indexOf(core.status.floorId) + 1];\n\tif (core.status.event.id == 'action') {\n\t\tcore.insertAction([\n\t\t\t{ \"type\": \"changeFloor\", \"loc\": [core.getHeroLoc('x'), core.getHeroLoc('y')], \"floorId\": floorId },\n\t\t\t{ \"type\": \"tip\", \"text\": core.material.items[itemId].name + '使用成功' }\n\t\t]);\n\t} else {\n\t\tcore.changeFloor(floorId, null, core.status.hero.loc, null, function () {\n\t\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t\t\tcore.replay();\n\t\t});\n\t}\n})();",
"canUseItemEffect": "(function () {\n\tvar floorId = core.status.floorId,\n\t\tindex = core.floorIds.indexOf(floorId);\n\tif (index < core.floorIds.length - 1) {\n\t\tvar toId = core.floorIds[index + 1],\n\t\t\ttoX = core.getHeroLoc('x'),\n\t\t\ttoY = core.getHeroLoc('y');\n\t\tvar mw = core.floors[toId].width,\n\t\t\tmh = core.floors[toId].height;\n\t\tif (toX >= 0 && toX < mw && toY >= 0 && toY < mh && core.getBlock(toX, toY, toId) == null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();"
},
"downFly": {
"cls": "tools",
"name": "下楼器",
"text": "可以飞往楼下的相同位置",
"useItemEffect": "(function () {\n\tvar floorId = core.floorIds[core.floorIds.indexOf(core.status.floorId) - 1];\n\tif (core.status.event.id == 'action') {\n\t\tcore.insertAction([\n\t\t\t{ \"type\": \"changeFloor\", \"loc\": [core.getHeroLoc('x'), core.getHeroLoc('y')], \"floorId\": floorId },\n\t\t\t{ \"type\": \"tip\", \"text\": core.material.items[itemId].name + '使用成功' }\n\t\t]);\n\t} else {\n\t\tcore.changeFloor(floorId, null, core.status.hero.loc, null, function () {\n\t\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t\t\tcore.replay();\n\t\t});\n\t}\n})();",
"canUseItemEffect": "(function () {\n\tvar floorId = core.status.floorId,\n\t\tindex = core.floorIds.indexOf(floorId);\n\tif (index > 0) {\n\t\tvar toId = core.floorIds[index - 1],\n\t\t\ttoX = core.getHeroLoc('x'),\n\t\t\ttoY = core.getHeroLoc('y');\n\t\tvar mw = core.floors[toId].width,\n\t\t\tmh = core.floors[toId].height;\n\t\tif (toX >= 0 && toX < mw && toY >= 0 && toY < mh && core.getBlock(toX, toY, toId) == null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();"
},
"earthquake": {
"cls": "tools",
"name": "地震卷轴",
"text": "可以破坏当前层的所有墙",
"useItemEffect": "(function () {\n\tvar indexes = [];\n\tfor (var index in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[index];\n\t\tif (!block.disable && block.event.canBreak) {\n\t\t\tindexes.push(index);\n\t\t}\n\t}\n\tcore.removeBlockByIndexes(indexes);\n\tcore.drawMap(core.status.floorId, function () {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t});\n})();",
"canUseItemEffect": "(function () {\n\treturn core.status.thisMap.blocks.filter(function (block) {\n\t\treturn !block.disable && block.event.canBreak;\n\t}).length > 0;\n})();"
},
"poisonWine": {
"cls": "tools",
"name": "解毒药水",
"text": "可以解除中毒状态",
"useItemEffect": "core.removeFlag('poison');",
"canUseItemEffect": "core.hasFlag('poison');"
},
"weakWine": {
"cls": "tools",
"name": "解衰药水",
"text": "可以解除衰弱状态",
"useItemEffect": "core.removeFlag('weak');\nif (core.values.weakValue>=1) { // >=1直接扣数值\n\tcore.status.hero.atk += core.values.weakValue;\n\tcore.status.hero.def += core.values.weakValue;\n}\nelse { // <1扣比例\n\tcore.addBuff(\"atk\", core.values.weakValue);\n\tcore.addBuff(\"def\", core.values.weakValue);\n}",
"canUseItemEffect": "core.hasFlag('weak');"
},
"curseWine": {
"cls": "tools",
"name": "解咒药水",
"text": "可以解除诅咒状态",
"useItemEffect": "core.removeFlag('curse');",
"canUseItemEffect": "core.hasFlag('curse');"
},
"superWine": {
"cls": "tools",
"name": "万能药水",
"text": "可以解除所有不良状态",
"useItemEffect": "core.removeFlag('poison');\nif (core.hasFlag('weak')) {\n\tcore.removeFlag('weak');\n\tif (core.values.weakValue>=1) { // >=1直接扣数值\n\t\tcore.status.hero.atk += core.values.weakValue;\n\t\tcore.status.hero.def += core.values.weakValue;\n\t}\n\telse { // <1扣比例\n\t\tcore.addBuff(\"atk\", core.values.weakValue);\n\t\tcore.addBuff(\"def\", core.values.weakValue);\n\t}\n}\ncore.removeFlag('curse');",
"canUseItemEffect": "(function() {\n\treturn core.hasFlag('poison') || core.hasFlag('weak') || core.hasFlag('curse');\n})();"
},
"hammer": {
"cls": "tools",
"name": "圣锤",
"text": "该道具尚未被定义"
},
"lifeWand": {
"cls": "tools",
"name": "生命魔杖",
"text": "可以恢复100点生命值",
"useItemEvent": [
{
"type": "comment",
"text": "先恢复一个魔杖(因为使用道具必须消耗一个)"
@ -523,6 +488,26 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"输入不合法!"
]
}
]
],
"canUseItemEffect": "true"
},
"jumpShoes": {
"cls": "tools",
"name": "跳跃靴",
"text": "能跳跃到前方两格处",
"useItemEffect": "core.insertAction({ \"type\": \"jumpHero\", \"loc\": [core.nextX(2), core.nextY(2)] });",
"canUseItemEffect": "(function () {\n\tvar nx = core.nextX(2),\n\t\tny = core.nextY(2);\n\treturn nx >= 0 && nx < core.bigmap.width && ny >= 0 && ny < core.bigmap.height && core.getBlockId(nx, ny) == null;\n})();"
},
"skill1": {
"cls": "constants",
"name": "技能:二倍斩",
"text": "可以打开或关闭主动技能二倍斩",
"hideInReplay": true,
"useItemEffect": "// 二倍斩的flag:skill为1\nif (core.getFlag('skill', 0)==0) { // 判断当前是否已经开了技能\n\tif (core.getStatus('mana')>=5) { // 这里要写当前能否开技能的条件判断,比如魔力值至少要多少\n\t\tcore.setFlag('skill', 1); // 开技能1\n\t\tcore.setFlag('skillName', '二倍斩'); // 设置技能名\n\t}\n\telse {\n\t\tcore.drawTip(\"魔力不足,无法开启技能\");\n\t}\n}\nelse { // 关闭技能\n\tcore.setFlag('skill', 0); // 关闭技能状态\n\tcore.setFlag('skillName', '无');\n}",
"canUseItemEffect": "true"
},
"wand": {
"cls": "items",
"name": "新物品"
}
}