mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-01-19 04:19:30 +08:00
电摇嘲讽
This commit is contained in:
parent
0b9360e55a
commit
33c147421e
@ -1502,7 +1502,6 @@ control.prototype.checkBlock = function () {
|
||||
core.updateStatusBar(false, true);
|
||||
}
|
||||
}
|
||||
this._checkBlock_ambush(core.status.checkBlock.ambush[loc]);
|
||||
this._checkBlock_repulse(core.status.checkBlock.repulse[loc]);
|
||||
};
|
||||
|
||||
@ -1533,42 +1532,6 @@ control.prototype._checkBlock_repulse = function (repulse) {
|
||||
core.insertAction(actions);
|
||||
};
|
||||
|
||||
////// 捕捉 //////
|
||||
control.prototype._checkBlock_ambush = function (ambush) {
|
||||
if (!ambush || ambush.length == 0) return;
|
||||
// 捕捉效果
|
||||
var actions = [];
|
||||
ambush.forEach(function (t) {
|
||||
actions.push({
|
||||
type: 'move',
|
||||
loc: [t[0], t[1]],
|
||||
steps: [t[3]],
|
||||
time: 250,
|
||||
keep: false,
|
||||
async: true
|
||||
});
|
||||
});
|
||||
actions.push({ type: 'waitAsync' });
|
||||
// 强制战斗
|
||||
ambush.forEach(function (t) {
|
||||
actions.push({
|
||||
type: 'function',
|
||||
function:
|
||||
'function() { ' +
|
||||
"core.battle('" +
|
||||
t[2] +
|
||||
"', " +
|
||||
t[0] +
|
||||
',' +
|
||||
t[1] +
|
||||
', true, core.doAction); ' +
|
||||
'}',
|
||||
async: true
|
||||
});
|
||||
});
|
||||
core.insertAction(actions);
|
||||
};
|
||||
|
||||
////// 更新全地图显伤 //////
|
||||
control.prototype.updateDamage = function (floorId, ctx) {
|
||||
floorId = floorId || core.status.floorId;
|
||||
@ -1701,9 +1664,9 @@ control.prototype._updateDamage_extraDamage = function (floorId, onMap) {
|
||||
});
|
||||
} else {
|
||||
// 检查捕捉
|
||||
if (core.status.checkBlock.ambush[x + ',' + y]) {
|
||||
if (core.status.checkBlock.mockery[x + ',' + y]) {
|
||||
core.status.damage.extraData.push({
|
||||
text: '!',
|
||||
text: '嘲',
|
||||
px: 32 * x + 16,
|
||||
py: 32 * (y + 1) - 14,
|
||||
color: '#ffaa33',
|
||||
|
@ -1077,8 +1077,7 @@ maps.prototype._canMoveDirectly_checkNextPoint = function (blocksObj, x, y) {
|
||||
// 是否存在阻激夹域伤害
|
||||
if (core.status.checkBlock.damage[index]) return false;
|
||||
if (core.status.checkBlock.repulse[index]) return false;
|
||||
// 是否存在捕捉
|
||||
if (core.status.checkBlock.ambush[index]) return false;
|
||||
if (core.status.checkBlock.mockery[index]) return false;
|
||||
|
||||
return true;
|
||||
};
|
||||
@ -1175,8 +1174,7 @@ maps.prototype._automaticRoute_deepAdd = function (x, y, blocks) {
|
||||
}
|
||||
// 绕过存在伤害的地方
|
||||
deepAdd += (core.status.checkBlock.damage[x + ',' + y] || 0) * 100;
|
||||
// 绕过捕捉
|
||||
if (core.status.checkBlock.ambush[x + ',' + y]) deepAdd += 1000;
|
||||
deepAdd += core.status.checkBlock.mockery[`${x},${y}`] ? 1000 : 0;
|
||||
return deepAdd;
|
||||
};
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
||||
{
|
||||
"greenSlime": {"name":"绿头怪","hp":100,"atk":11,"def":3,"money":0,"exp":1,"point":0,"special":[],"description":"一种极其低级的怪物,低级到普通人用手都可以打死。"},
|
||||
"redSlime": {"name":"红头怪","hp":120,"atk":16,"def":6,"money":0,"exp":2,"point":0,"special":[],"value":10},
|
||||
"blackSlime": {"name":"青头怪","hp":170,"atk":20,"def":8,"money":0,"exp":3,"point":0,"special":[]},
|
||||
"slimelord": {"name":"粘液王","hp":200,"atk":58,"def":24,"money":0,"exp":8,"point":0,"special":[]},
|
||||
"bat": {"name":"小蝙蝠","hp":60,"atk":15,"def":0,"money":0,"exp":2,"point":0,"special":[4]},
|
||||
"redSlime": {"name":"红头怪","hp":120,"atk":16,"def":6,"money":0,"exp":2,"point":0,"special":[],"value":10,"description":"即使是最弱的怪物,也有进化的时候,对吧?"},
|
||||
"blackSlime": {"name":"青头怪","hp":170,"atk":20,"def":8,"money":0,"exp":3,"point":0,"special":[],"description":"看,这就是最弱的怪物进化出的最强的怪物之一了"},
|
||||
"slimelord": {"name":"粘液王","hp":200,"atk":58,"def":24,"money":0,"exp":8,"point":0,"special":[],"description":"看上去黏糊糊的,实际也确实黏糊糊的,据说是史莱姆族的长老级人物"},
|
||||
"bat": {"name":"小蝙蝠","hp":60,"atk":15,"def":0,"money":0,"exp":2,"point":0,"special":[4],"description":"经常出现在山洞中,再平常不过了。但是这次它却有了攻击性。"},
|
||||
"bigBat": {"name":"大蝙蝠","hp":150,"atk":17,"def":5,"money":0,"exp":4,"point":0,"special":[4],"crit":0,"charge":0,"courage":0,"together":0,"hungry":0,"value":100,"n":1000},
|
||||
"redBat": {"name":"恐怖蝙蝠","hp":1200,"atk":260,"def":110,"money":1,"exp":32,"point":0,"special":[5]},
|
||||
"vampire": {"name":"冥灵魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
@ -32,7 +32,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
||||
"demonPriest": {"name":"魔神法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"goldHornSlime": {"name":"尖角怪","hp":1500,"atk":366,"def":166,"money":1,"exp":35,"point":0,"special":[]},
|
||||
"silverSlime": {"name":"银头怪","hp":250,"atk":50,"def":20,"money":0,"exp":11,"point":0,"special":[2]},
|
||||
"whiteHornSlime": {"name":"尖角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"whiteHornSlime": {"name":"恐怖尖角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"redSwordsman": {"name":"山间盗贼","hp":1000,"atk":175,"def":40,"money":1,"exp":24,"point":0,"special":[4],"n":8},
|
||||
"poisonZombie": {"name":"绿兽人","hp":100,"atk":120,"def":0,"money":13,"exp":0,"point":0,"special":[12]},
|
||||
"octopus": {"name":"血影","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
@ -68,7 +68,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
||||
"bowman": {"name":"猎人","hp":500,"atk":100,"def":50,"money":0,"exp":16,"point":0,"special":[24],"value":75},
|
||||
"liteBowman": {"name":"山间猎手","hp":1200,"atk":200,"def":60,"money":1,"exp":27,"point":0,"special":[24]},
|
||||
"crimsonZombie": {"name":"勇气之兽","hp":1800,"atk":2000,"def":-100,"money":1,"exp":35,"point":0,"special":[]},
|
||||
"watcherSlime": {"name":"邪眼怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"watcherSlime": {"name":"邪眼史莱姆","hp":5000,"atk":900,"def":600,"money":1,"exp":50,"point":0,"special":[17]},
|
||||
"mutantSlimeman": {"name":"变异史莱姆人","hp":350,"atk":70,"def":27,"money":0,"exp":13,"point":0,"special":[]},
|
||||
"devilKnight": {"name":"恶灵骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"grayPriest": {"name":"智慧法王","hp":3000,"atk":600,"def":250,"money":1,"exp":40,"point":0,"special":[13]},
|
||||
@ -122,5 +122,9 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
||||
"E549": {"name":"智慧之史","hp":1000,"atk":1000,"def":100,"money":1,"exp":35,"point":0,"special":[1],"crit":10000},
|
||||
"E550": {"name":"智慧之兔","hp":1500,"atk":600,"def":200,"money":1,"exp":35,"point":0,"special":[8],"together":20},
|
||||
"E556": {"name":"智慧之姆","hp":3000,"atk":800,"def":200,"money":1,"exp":45,"point":0,"special":[8],"together":20},
|
||||
"E557": {"name":"智慧之神","hp":10000,"atk":2000,"def":800,"money":10,"exp":500,"point":0,"special":[]}
|
||||
"E557": {"name":"智慧之神","hp":10000,"atk":2000,"def":800,"money":10,"exp":500,"point":0,"special":[]},
|
||||
"E561": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E562": {"name":"嘲讽剑客","hp":2000,"atk":1500,"def":600,"money":1,"exp":50,"point":0,"special":[19]},
|
||||
"E563": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E564": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}
|
||||
}
|
@ -29,7 +29,10 @@ main.floors.MT22=
|
||||
],
|
||||
"3,9": [
|
||||
"第二章的加点已开启,可以在技能树的前置技能下方选择",
|
||||
"如果你玩过上个版本,直接跳到了本章,记得查看背包里面的各种道具,尤其是百科全书"
|
||||
"如果你玩过上个版本,直接跳到了本章,记得查看背包里面的各种道具,尤其是百科全书,同时注意左边是你来的方向,那里还有些怪物"
|
||||
],
|
||||
"7,9": [
|
||||
"对于电摇嘲讽的怪物,当一个点可以被多个怪物嘲讽时,会优先选择最靠左上角的怪物。其次,在进入嘲讽区域之前会自动存档"
|
||||
]
|
||||
},
|
||||
"changeFloor": {
|
||||
@ -58,7 +61,7 @@ main.floors.MT22=
|
||||
[142,142,482,482,492, 0, 0,484, 0,494,484,491,484,143,143],
|
||||
[142,142,142,142,142, 0, 0, 0, 0,143,143,143,143,143,143],
|
||||
[ 92, 0, 0, 0,441, 0, 0,484, 0, 0, 0, 0, 0,143,143],
|
||||
[143,143, 0,129, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,143],
|
||||
[143,143, 0,129, 0, 0, 0,129, 0, 0, 0, 0, 0,143,143],
|
||||
[143,143,492,143,492,143,492,143,492,143,492,143,492,143,143],
|
||||
[143,143,482,143,482,143,482,143,482,143,482,143,482,143,143],
|
||||
[143,143,482,143,482,143,482,143,482,143,482,143,482,143,143],
|
||||
|
@ -36,8 +36,8 @@ main.floors.MT23=
|
||||
"map": [
|
||||
[143,143,143,143,143,143,143,143,143,143,143,143, 91,143,143],
|
||||
[143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143],
|
||||
[143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94],
|
||||
[143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143],
|
||||
[143, 0,275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94],
|
||||
[143, 0,562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143],
|
||||
[ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143],
|
||||
[143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143],
|
||||
[143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143],
|
||||
|
@ -424,6 +424,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
if (core.getFlag('bladeOn') && core.getFlag('blade')) {
|
||||
core.setFlag('blade', false);
|
||||
}
|
||||
if (core.getFlag('shieldOn') && core.getFlag('shield')) {
|
||||
core.setFlag('shield', false);
|
||||
}
|
||||
|
||||
// 事件的处理
|
||||
var todo = [];
|
||||
@ -447,11 +450,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
);
|
||||
}
|
||||
core.push(todo, enemy.afterBattle);
|
||||
if (
|
||||
core.status.hero.loc.direction == 'up' ||
|
||||
core.status.hero.loc.direction == 'down'
|
||||
)
|
||||
core.insertAction([{ type: 'moveAction' }]);
|
||||
|
||||
// 在这里增加其他的自定义事件需求
|
||||
/*
|
||||
if (enemyId=='xxx') {
|
||||
@ -694,14 +693,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
'经过两只相同的怪物中间,勇士生命值变成一半',
|
||||
'#bb99ee'
|
||||
],
|
||||
[
|
||||
17,
|
||||
'仇恨',
|
||||
'战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得' +
|
||||
(core.values.hatred || 0) +
|
||||
'点仇恨值)',
|
||||
'#b0b666'
|
||||
],
|
||||
[17, '先攻', '战斗时怪物首先攻击', '#b0b666'],
|
||||
[
|
||||
18,
|
||||
'阻击',
|
||||
@ -714,7 +706,12 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
},
|
||||
'#8888e6'
|
||||
],
|
||||
[19, '自爆', '战斗后勇士的生命值变成1', '#ff6666'],
|
||||
[
|
||||
19,
|
||||
'电摇嘲讽',
|
||||
'当勇士移动到怪物同行或同列时,勇士会直接冲向怪物,撞碎路上的所有地形和门,拾取路上的道具,与路上的怪物以及该怪物战斗',
|
||||
'#ff6666'
|
||||
],
|
||||
[20, '无敌', '勇士无法打败怪物,除非拥有十字架', '#aaaaaa'],
|
||||
[
|
||||
21,
|
||||
@ -990,6 +987,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
// 战斗伤害不能为负值
|
||||
if (per_damage < 0) per_damage = 0;
|
||||
|
||||
// 先攻
|
||||
if (core.hasSpecial(mon_special, 17)) damage += per_damage;
|
||||
|
||||
// 2连击 & 3连击 & N连击
|
||||
if (core.hasSpecial(mon_special, 4)) per_damage *= 2;
|
||||
if (core.hasSpecial(mon_special, 5)) per_damage *= 3;
|
||||
@ -1431,7 +1431,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
var damage = {}, // 每个点的伤害值
|
||||
type = {}, // 每个点的伤害类型
|
||||
repulse = {}, // 每个点的阻击怪信息
|
||||
ambush = {}; // 每个点的捕捉信息
|
||||
mockery = {}; // 电摇嘲讽
|
||||
var betweenAttackLocs = {}; // 所有可能的夹击点
|
||||
var needCache = false;
|
||||
var canGoDeadZone = core.flags.canGoDeadZone;
|
||||
@ -1528,7 +1528,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
}
|
||||
}
|
||||
// 射击
|
||||
// 如果要防止激光伤害,可以直接简单的将 flag:no_laser 设为true
|
||||
if (enemy && core.hasSpecial(enemy.special, 24)) {
|
||||
var beyondVisual = false;
|
||||
for (var nx = 0; nx < width; nx++) {
|
||||
@ -1618,6 +1617,22 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
}
|
||||
}
|
||||
|
||||
// 电摇嘲讽
|
||||
if (enemy && core.hasSpecial(enemy.special, 19)) {
|
||||
for (let nx = 0; nx < width; nx++) {
|
||||
if (!core.noPass(nx, y)) {
|
||||
mockery[`${nx},${y}`] ??= [];
|
||||
mockery[`${nx},${y}`].push([x, y]);
|
||||
}
|
||||
}
|
||||
for (let ny = 0; ny < height; ny++) {
|
||||
if (!core.noPass(x, ny)) {
|
||||
mockery[`${x},${ny}`] ??= [];
|
||||
mockery[`${x},${ny}`].push([x, y]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 夹击;在这里提前计算所有可能的夹击点,具体计算逻辑在下面
|
||||
// 如果要防止夹击伤害,可以简单的将 flag:no_betweenAttack 设为true
|
||||
if (
|
||||
@ -1721,7 +1736,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
damage: damage,
|
||||
type: type,
|
||||
repulse: repulse,
|
||||
ambush: ambush,
|
||||
mockery,
|
||||
needCache: needCache,
|
||||
cache: {}, // clear cache
|
||||
haveHunt: haveHunt
|
||||
|
@ -327,7 +327,11 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
|
||||
"E549": 115,
|
||||
"E550": 116,
|
||||
"E556": 117,
|
||||
"E557": 118
|
||||
"E557": 118,
|
||||
"E561": 119,
|
||||
"E562": 120,
|
||||
"E563": 121,
|
||||
"E564": 122
|
||||
},
|
||||
"enemy48": {
|
||||
"angel": 0,
|
||||
|
@ -97,8 +97,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"cls": "items",
|
||||
"name": "红血瓶",
|
||||
"text": ",生命+${core.values.redPotion}",
|
||||
"itemEffect": "core.status.hero.hp += 100 * core.status.thisMap.ratio",
|
||||
"itemEffectTip": ",生命+${100 * core.status.thisMap.ratio}",
|
||||
"itemEffect": "core.status.hero.hp += 100 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)",
|
||||
"itemEffectTip": ",生命+${100 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)}",
|
||||
"useItemEffect": "core.status.hero.hp += core.values.redPotion",
|
||||
"canUseItemEffect": "true"
|
||||
},
|
||||
@ -106,8 +106,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"cls": "items",
|
||||
"name": "蓝血瓶",
|
||||
"text": ",生命+${core.values.bluePotion}",
|
||||
"itemEffect": "core.status.hero.hp += 200 * core.status.thisMap.ratio",
|
||||
"itemEffectTip": ",生命+${200 * core.status.thisMap.ratio}",
|
||||
"itemEffect": "core.status.hero.hp += 200 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)",
|
||||
"itemEffectTip": ",生命+${200 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)}",
|
||||
"useItemEffect": "core.status.hero.hp += core.values.bluePotion",
|
||||
"canUseItemEffect": "true"
|
||||
},
|
||||
@ -115,8 +115,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"cls": "items",
|
||||
"name": "黄血瓶",
|
||||
"text": ",生命+${core.values.yellowPotion}",
|
||||
"itemEffect": "core.status.hero.hp += 400 * core.status.thisMap.ratio",
|
||||
"itemEffectTip": ",生命+${400 * core.status.thisMap.ratio}",
|
||||
"itemEffect": "core.status.hero.hp += 400 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)",
|
||||
"itemEffectTip": ",生命+${400 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)}",
|
||||
"useItemEffect": "core.status.hero.hp += core.values.yellowPotion",
|
||||
"canUseItemEffect": "true"
|
||||
},
|
||||
@ -124,8 +124,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"cls": "items",
|
||||
"name": "绿血瓶",
|
||||
"text": ",生命+${core.values.greenPotion}",
|
||||
"itemEffect": "core.status.hero.hp += 800 * core.status.thisMap.ratio",
|
||||
"itemEffectTip": ",生命+${800 * core.status.thisMap.ratio}",
|
||||
"itemEffect": "core.status.hero.hp += 800 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)",
|
||||
"itemEffectTip": ",生命+${800 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)}",
|
||||
"useItemEffect": "core.status.hero.hp += core.values.greenPotion",
|
||||
"canUseItemEffect": "true"
|
||||
},
|
||||
@ -1180,8 +1180,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"cls": "items",
|
||||
"name": "大红血瓶",
|
||||
"text": ",生命+${core.values.redPotion}",
|
||||
"itemEffect": "core.status.hero.hp += 1000 * core.status.thisMap.ratio",
|
||||
"itemEffectTip": ",生命+${1000 * core.status.thisMap.ratio}",
|
||||
"itemEffect": "core.status.hero.hp += 1000 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)",
|
||||
"itemEffectTip": ",生命+${1000 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)}",
|
||||
"useItemEffect": "core.status.hero.hp += core.values.redPotion",
|
||||
"canUseItemEffect": "true"
|
||||
},
|
||||
@ -1193,8 +1193,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"cls": "items",
|
||||
"name": "大蓝血瓶",
|
||||
"text": ",生命+${core.values.redPotion}",
|
||||
"itemEffect": "core.status.hero.hp += 2000 * core.status.thisMap.ratio",
|
||||
"itemEffectTip": ",生命+${2000 * core.status.thisMap.ratio}",
|
||||
"itemEffect": "core.status.hero.hp += 2000 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)",
|
||||
"itemEffectTip": ",生命+${2000 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)}",
|
||||
"useItemEffect": "core.status.hero.hp += core.values.redPotion",
|
||||
"canUseItemEffect": "true"
|
||||
},
|
||||
@ -1210,8 +1210,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"cls": "items",
|
||||
"name": "大绿血瓶",
|
||||
"text": ",生命+${core.values.redPotion}",
|
||||
"itemEffect": "core.status.hero.hp += 8000 * core.status.thisMap.ratio",
|
||||
"itemEffectTip": ",生命+${8000 * core.status.thisMap.ratio}",
|
||||
"itemEffect": "core.status.hero.hp += 8000 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)",
|
||||
"itemEffectTip": ",生命+${8000 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)}",
|
||||
"useItemEffect": "core.status.hero.hp += core.values.redPotion",
|
||||
"canUseItemEffect": "true"
|
||||
},
|
||||
@ -1231,8 +1231,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"cls": "items",
|
||||
"name": "大黄血瓶",
|
||||
"text": ",生命+${core.values.redPotion}",
|
||||
"itemEffect": "core.status.hero.hp += 4000 * core.status.thisMap.ratio",
|
||||
"itemEffectTip": ",生命+${4000 * core.status.thisMap.ratio}",
|
||||
"itemEffect": "core.status.hero.hp += 4000 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)",
|
||||
"itemEffectTip": ",生命+${4000 * core.status.thisMap.ratio * (1 + core.getSkillLevel(13) / 50)}",
|
||||
"useItemEffect": "core.status.hero.hp += core.values.redPotion",
|
||||
"canUseItemEffect": "true"
|
||||
},
|
||||
|
@ -485,6 +485,10 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
|
||||
"558": {"cls":"items","id":"I558"},
|
||||
"559": {"cls":"items","id":"I559"},
|
||||
"560": {"cls":"items","id":"I560"},
|
||||
"561": {"cls":"enemys","id":"E561"},
|
||||
"562": {"cls":"enemys","id":"E562"},
|
||||
"563": {"cls":"enemys","id":"E563"},
|
||||
"564": {"cls":"enemys","id":"E564"},
|
||||
"20037": {"cls":"tileset","id":"X20037","cannotOut":["up","left"],"cannotIn":["up","left"]},
|
||||
"20038": {"cls":"tileset","id":"X20038","cannotOut":["up"],"cannotIn":["up"]},
|
||||
"20039": {"cls":"tileset","id":"X20039","cannotOut":["up","right"],"cannotIn":["up","right"]},
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 123 KiB |
@ -2227,7 +2227,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
damaged[loc + direction] = true;
|
||||
core.drawHeroAnimate('hand');
|
||||
core.status.hero.hp -= 1000;
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, 1000);
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, -1000);
|
||||
core.updateStatusBar();
|
||||
if (core.status.hero.hp < 0) {
|
||||
clearInterval(skill1);
|
||||
@ -2245,7 +2245,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
damaged[loc + direction] = true;
|
||||
core.drawHeroAnimate('hand');
|
||||
core.status.hero.hp -= 1000;
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, 1000);
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, -1000);
|
||||
core.updateStatusBar();
|
||||
if (core.status.hero.hp < 0) {
|
||||
clearInterval(skill1);
|
||||
@ -2376,7 +2376,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
if (x == locs[index][0] && y == locs[index][1]) {
|
||||
core.drawHeroAnimate('hand');
|
||||
core.status.hero.hp -= 5000;
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, 5000);
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, -5000);
|
||||
core.updateStatusBar();
|
||||
if (core.status.hero.hp < 0) {
|
||||
core.status.hero.hp = 0;
|
||||
@ -2552,7 +2552,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
hy = core.status.hero.loc.y;
|
||||
if (Math.abs(hx - x) <= 1 && Math.abs(hy - y) <= 1) {
|
||||
core.status.hero.hp -= 3000 * power;
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, 3000 * power);
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, -3000 * power);
|
||||
core.updateStatusBar();
|
||||
if (core.status.hero.hp < 0) {
|
||||
core.status.hero.hp = 0;
|
||||
@ -2720,7 +2720,11 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
) {
|
||||
damaged[i] = true;
|
||||
core.status.hero.hp -= 3000;
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, 3000);
|
||||
core.addPop(
|
||||
x * 32 + 16,
|
||||
y * 32 + 16,
|
||||
-3000
|
||||
);
|
||||
core.updateStatusBar();
|
||||
core.playSound('electron.mp3');
|
||||
if (core.status.hero.hp < 0) {
|
||||
@ -3291,7 +3295,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
hy = core.status.hero.loc.y;
|
||||
if (loc[0] == hx && loc[1] == hy) {
|
||||
core.status.hero.hp -= 3000;
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, 3000);
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, -3000);
|
||||
core.updateStatusBar();
|
||||
if (core.status.hero.hp < 0) {
|
||||
core.status.hero.hp = 0;
|
||||
@ -3336,7 +3340,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
loc2[1];
|
||||
if (n1 * n2 <= 0) {
|
||||
core.status.hero.hp -= damage;
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, damage);
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, -damage);
|
||||
core.updateStatusBar();
|
||||
core.playSound('electron.mp3');
|
||||
if (core.status.hero.hp < 0) {
|
||||
@ -3362,7 +3366,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
loc2[1];
|
||||
if (n1 * n2 <= 0) {
|
||||
core.status.hero.hp -= damage;
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, damage);
|
||||
core.addPop(x * 32 + 16, y * 32 + 16, -damage);
|
||||
core.updateStatusBar();
|
||||
core.playSound('electron.mp3');
|
||||
if (core.status.hero.hp < 0) {
|
||||
@ -3380,7 +3384,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
popupDamage: function () {
|
||||
// 伤害弹出
|
||||
// 复写阻激夹域检测
|
||||
control.prototype.checkBlock = function () {
|
||||
control.prototype.checkBlock = function (forceMockery) {
|
||||
var x = core.getHeroLoc('x'),
|
||||
y = core.getHeroLoc('y'),
|
||||
loc = x + ',' + y;
|
||||
@ -3410,9 +3414,86 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
core.updateStatusBar();
|
||||
}
|
||||
}
|
||||
this._checkBlock_ambush(core.status.checkBlock.ambush[loc]);
|
||||
this._checkBlock_repulse(core.status.checkBlock.repulse[loc]);
|
||||
checkMockery(loc, forceMockery);
|
||||
};
|
||||
|
||||
control.prototype.moveHero = function (direction, callback) {
|
||||
// 如果正在移动,直接return
|
||||
if (core.status.heroMoving != 0) return;
|
||||
if (core.isset(direction)) core.setHeroLoc('direction', direction);
|
||||
|
||||
const nx = core.nextX();
|
||||
const ny = core.nextY();
|
||||
if (core.status.checkBlock.mockery[`${nx},${ny}`]) {
|
||||
core.autosave();
|
||||
}
|
||||
|
||||
if (callback) return this.moveAction(callback);
|
||||
this._moveHero_moving();
|
||||
};
|
||||
|
||||
function checkMockery(loc, force) {
|
||||
if (core.status.lockControl && !force) return;
|
||||
const mockery = core.status.checkBlock.mockery[loc];
|
||||
if (mockery) {
|
||||
mockery.sort((a, b) =>
|
||||
a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]
|
||||
);
|
||||
const action = [];
|
||||
const [tx, ty] = mockery[0];
|
||||
let { x, y } = core.status.hero.loc;
|
||||
const dir =
|
||||
x > tx ? 'left' : x < tx ? 'right' : y > ty ? 'up' : 'down';
|
||||
const { x: dx, y: dy } = core.utils.scan[dir];
|
||||
|
||||
action.push({ type: 'changePos', direction: dir });
|
||||
const blocks = core.getMapBlocksObj();
|
||||
while (1) {
|
||||
x += dx;
|
||||
y += dy;
|
||||
const block = blocks[`${x},${y}`];
|
||||
if (block) {
|
||||
block.event.cls === '';
|
||||
if (
|
||||
[
|
||||
'animates',
|
||||
'autotile',
|
||||
'tileset',
|
||||
'npcs',
|
||||
'npc48'
|
||||
].includes(block.event.cls)
|
||||
) {
|
||||
action.push(
|
||||
{
|
||||
type: 'hide',
|
||||
loc: [[x, y]],
|
||||
remove: true,
|
||||
time: 0
|
||||
},
|
||||
{
|
||||
type: 'animate',
|
||||
name: 'hand',
|
||||
loc: [x, y],
|
||||
async: true
|
||||
}
|
||||
);
|
||||
}
|
||||
if (block.event.cls.startsWith('enemy')) {
|
||||
action.push({ type: 'moveAction' });
|
||||
}
|
||||
}
|
||||
action.push({ type: 'moveAction' });
|
||||
if (x === tx && y === ty) break;
|
||||
}
|
||||
action.push({
|
||||
type: 'function',
|
||||
function: `function() { core.checkBlock(true); }`
|
||||
});
|
||||
action.push({ type: 'stopAsync' });
|
||||
core.insertAction(action);
|
||||
}
|
||||
}
|
||||
},
|
||||
hotReload: function () {
|
||||
if (main.mode !== 'play' || main.replayChecking) return;
|
||||
|
@ -33,6 +33,28 @@
|
||||
"同时,几乎所有 ui 的退出按钮都在左上角。"
|
||||
]
|
||||
},
|
||||
"about": {
|
||||
"text": "关于游戏",
|
||||
"condition": "true",
|
||||
"desc": [
|
||||
"使用样板:Vite 魔塔样板",
|
||||
"<br>",
|
||||
"样板版本:V2.10.0",
|
||||
"<br>",
|
||||
"游戏开源地址:<a href=\"https://github.com/unanmed/HumanBreak\" target=\"_blank\">",
|
||||
"https://github.com/unanmed/HumanBreak</a>",
|
||||
"<br>",
|
||||
"游戏作者:古祠",
|
||||
"<br>",
|
||||
"BGM来源:网易云音乐",
|
||||
"<br>",
|
||||
"素材来源:大素材库、爱给网、网站素材库",
|
||||
"<br>",
|
||||
"特别鸣谢:无名甲烷菌",
|
||||
"<br>",
|
||||
"测试:"
|
||||
]
|
||||
},
|
||||
"tutorial": {
|
||||
"text": "新手教程",
|
||||
"condition": "true",
|
||||
|
4
src/source/cls.d.ts
vendored
4
src/source/cls.d.ts
vendored
@ -484,6 +484,10 @@ interface IdToCls {
|
||||
I558: 'items';
|
||||
I559: 'items';
|
||||
I560: 'items';
|
||||
E561: 'enemys';
|
||||
E562: 'enemys';
|
||||
E563: 'enemys';
|
||||
E564: 'enemys';
|
||||
X20037: 'tileset';
|
||||
X20038: 'tileset';
|
||||
X20039: 'tileset';
|
||||
|
8
src/source/maps.d.ts
vendored
8
src/source/maps.d.ts
vendored
@ -484,6 +484,10 @@ interface IdToNumber {
|
||||
I558: 558;
|
||||
I559: 559;
|
||||
I560: 560;
|
||||
E561: 561;
|
||||
E562: 562;
|
||||
E563: 563;
|
||||
E564: 564;
|
||||
X20037: 20037;
|
||||
X20038: 20038;
|
||||
X20039: 20039;
|
||||
@ -1002,6 +1006,10 @@ interface NumberToId {
|
||||
558: 'I558';
|
||||
559: 'I559';
|
||||
560: 'I560';
|
||||
561: 'E561';
|
||||
562: 'E562';
|
||||
563: 'E563';
|
||||
564: 'E564';
|
||||
20037: 'X20037';
|
||||
20038: 'X20038';
|
||||
20039: 'X20039';
|
||||
|
Loading…
Reference in New Issue
Block a user