战斗函数修改
This commit is contained in:
parent
a0cbb8cdb8
commit
fcbb8add3e
@ -524,222 +524,223 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
},
|
},
|
||||||
"enemys": {
|
"enemys": {
|
||||||
"getSpecials": function () {
|
"getSpecials": function () {
|
||||||
// 获得怪物的特殊属性,每一行定义一个特殊属性。
|
// 获得怪物的特殊属性,每一行定义一个特殊属性。
|
||||||
// 分为五项,第一项为该特殊属性的数字,第二项为特殊属性的名字,第三项为特殊属性的描述
|
// 分为五项,第一项为该特殊属性的数字,第二项为特殊属性的名字,第三项为特殊属性的描述
|
||||||
// 第四项为该特殊属性的颜色,可以写十六进制 #RRGGBB 或者 [r,g,b,a] 四元数组
|
// 第四项为该特殊属性的颜色,可以写十六进制 #RRGGBB 或者 [r,g,b,a] 四元数组
|
||||||
// 第五项为该特殊属性的标记;目前 1 代表是地图类技能(需要进行遍历全图)
|
// 第五项为该特殊属性的标记;目前 1 代表是地图类技能(需要进行遍历全图)
|
||||||
// 名字和描述可以直接写字符串,也可以写个function将怪物传进去
|
// 名字和描述可以直接写字符串,也可以写个function将怪物传进去
|
||||||
return [
|
return [
|
||||||
[1, "先攻", "怪物首先攻击", "#ffcc33"],
|
[1, "先攻", "怪物首先攻击", "#ffcc33"],
|
||||||
[3, "坚固", "怪物防御不小于角色攻击-1", "#c0b088"],
|
[2, "魔攻", "怪物无视角色的防御", "#bbb0ff"],
|
||||||
[
|
[3, "坚固", "怪物防御不小于角色攻击-1", "#c0b088"],
|
||||||
6,
|
[
|
||||||
function (enemy) {
|
6,
|
||||||
return (enemy.n || "") + "连击";
|
function (enemy) {
|
||||||
},
|
return (enemy.n || "") + "连击";
|
||||||
function (enemy) {
|
},
|
||||||
return "怪物每回合攻击" + (enemy.n || 4) + "次";
|
function (enemy) {
|
||||||
},
|
return "怪物每回合攻击" + (enemy.n || 4) + "次";
|
||||||
"#ffee77",
|
},
|
||||||
],
|
"#ffee77",
|
||||||
[
|
],
|
||||||
7,
|
[
|
||||||
"破甲",
|
7,
|
||||||
function (enemy) {
|
"破甲",
|
||||||
return (
|
function (enemy) {
|
||||||
"战斗前,怪物附加角色防御的" +
|
return (
|
||||||
Math.floor(
|
"战斗前,怪物附加角色防御的" +
|
||||||
100 * (enemy.breakArmor || core.values.breakArmor || 0)
|
Math.floor(
|
||||||
) +
|
100 * (enemy.breakArmor || core.values.breakArmor || 0)
|
||||||
"%作为伤害"
|
) +
|
||||||
);
|
"%作为伤害"
|
||||||
},
|
);
|
||||||
"#88c0ff",
|
},
|
||||||
],
|
"#88c0ff",
|
||||||
[
|
],
|
||||||
8,
|
[
|
||||||
"反击",
|
8,
|
||||||
function (enemy) {
|
"反击",
|
||||||
return (
|
function (enemy) {
|
||||||
"战斗时,怪物每回合附加角色攻击的" +
|
return (
|
||||||
Math.floor(
|
"战斗时,怪物每回合附加角色攻击的" +
|
||||||
100 * (enemy.counterAttack || core.values.counterAttack || 0)
|
Math.floor(
|
||||||
) +
|
100 * (enemy.counterAttack || core.values.counterAttack || 0)
|
||||||
"%作为伤害,无视角色防御"
|
) +
|
||||||
);
|
"%作为伤害,无视角色防御"
|
||||||
},
|
);
|
||||||
"#ffaa44",
|
},
|
||||||
],
|
"#ffaa44",
|
||||||
[
|
],
|
||||||
9,
|
[
|
||||||
"净化",
|
9,
|
||||||
function (enemy) {
|
"净化",
|
||||||
return (
|
function (enemy) {
|
||||||
"战斗前,怪物附加角色护盾的" +
|
return (
|
||||||
(enemy.purify || core.values.purify) +
|
"战斗前,怪物附加角色护盾的" +
|
||||||
"倍作为伤害"
|
(enemy.purify || core.values.purify) +
|
||||||
);
|
"倍作为伤害"
|
||||||
},
|
);
|
||||||
"#80eed6",
|
},
|
||||||
],
|
"#80eed6",
|
||||||
[10, "模仿", "怪物的攻防和角色攻防相等", "#b0c0dd"],
|
],
|
||||||
[
|
[10, "模仿", "怪物的攻防和角色攻防相等", "#b0c0dd"],
|
||||||
11,
|
[
|
||||||
"吸血",
|
11,
|
||||||
function (enemy) {
|
"吸血",
|
||||||
return (
|
function (enemy) {
|
||||||
"战斗前,怪物首先吸取角色的" +
|
return (
|
||||||
Math.floor(100 * enemy.vampire || 0) +
|
"战斗前,怪物首先吸取角色的" +
|
||||||
"%生命(约" +
|
Math.floor(100 * enemy.vampire || 0) +
|
||||||
Math.floor((enemy.vampire || 0) * core.getStatus("hp")) +
|
"%生命(约" +
|
||||||
"点)作为伤害" +
|
Math.floor((enemy.vampire || 0) * core.getStatus("hp")) +
|
||||||
(enemy.add ? ",并把伤害数值加到自身生命上" : "")
|
"点)作为伤害" +
|
||||||
);
|
(enemy.add ? ",并把伤害数值加到自身生命上" : "")
|
||||||
},
|
);
|
||||||
"#dd4448",
|
},
|
||||||
],
|
"#dd4448",
|
||||||
[
|
],
|
||||||
12,
|
[
|
||||||
"中毒",
|
12,
|
||||||
"战斗后,角色陷入中毒状态,每一步损失生命" +
|
"中毒",
|
||||||
core.values.poisonDamage +
|
"战斗后,角色陷入中毒状态,每一步损失生命" +
|
||||||
"点",
|
core.values.poisonDamage +
|
||||||
"#99ee88",
|
"点",
|
||||||
],
|
"#99ee88",
|
||||||
[
|
],
|
||||||
13,
|
[
|
||||||
"衰弱",
|
13,
|
||||||
"战斗后,角色陷入衰弱状态,攻防暂时下降" +
|
"衰弱",
|
||||||
(core.values.weakValue >= 1
|
"战斗后,角色陷入衰弱状态,攻防暂时下降" +
|
||||||
? core.values.weakValue + "点"
|
(core.values.weakValue >= 1 ?
|
||||||
: parseInt(core.values.weakValue * 100) + "%"),
|
core.values.weakValue + "点" :
|
||||||
"#f0bbcc",
|
parseInt(core.values.weakValue * 100) + "%"),
|
||||||
],
|
"#f0bbcc",
|
||||||
[
|
],
|
||||||
14,
|
[
|
||||||
"诅咒",
|
14,
|
||||||
"战斗后,角色陷入诅咒状态,战斗无法获得金币和经验",
|
"诅咒",
|
||||||
"#bbeef0",
|
"战斗后,角色陷入诅咒状态,战斗无法获得金币和经验",
|
||||||
],
|
"#bbeef0",
|
||||||
[
|
],
|
||||||
15,
|
[
|
||||||
"领域",
|
15,
|
||||||
function (enemy) {
|
"领域",
|
||||||
return (
|
function (enemy) {
|
||||||
"经过怪物周围" +
|
return (
|
||||||
(enemy.zoneSquare ? "九宫格" : "十字") +
|
"经过怪物周围" +
|
||||||
"范围内" +
|
(enemy.zoneSquare ? "九宫格" : "十字") +
|
||||||
(enemy.range || 1) +
|
"范围内" +
|
||||||
"格时自动减生命" +
|
(enemy.range || 1) +
|
||||||
(enemy.zone || 0) +
|
"格时自动减生命" +
|
||||||
"点"
|
(enemy.zone || 0) +
|
||||||
);
|
"点"
|
||||||
},
|
);
|
||||||
"#c677dd",
|
},
|
||||||
],
|
"#c677dd",
|
||||||
[16, "夹击", "经过两只相同的怪物中间,角色生命值变成一半", "#bb99ee"],
|
],
|
||||||
[
|
[16, "夹击", "经过两只相同的怪物中间,角色生命值变成一半", "#bb99ee"],
|
||||||
17,
|
[
|
||||||
"仇恨",
|
17,
|
||||||
"战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得" +
|
"仇恨",
|
||||||
(core.values.hatred || 0) +
|
"战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得" +
|
||||||
"点仇恨值)",
|
(core.values.hatred || 0) +
|
||||||
"#b0b666",
|
"点仇恨值)",
|
||||||
],
|
"#b0b666",
|
||||||
[
|
],
|
||||||
18,
|
[
|
||||||
"阻击",
|
18,
|
||||||
function (enemy) {
|
"阻击",
|
||||||
return (
|
function (enemy) {
|
||||||
"经过怪物周围" +
|
return (
|
||||||
(enemy.zoneSquare ? "九宫格" : "十字") +
|
"经过怪物周围" +
|
||||||
"时自动减生命" +
|
(enemy.zoneSquare ? "九宫格" : "十字") +
|
||||||
(enemy.repulse || 0) +
|
"时自动减生命" +
|
||||||
"点,同时怪物后退一格"
|
(enemy.repulse || 0) +
|
||||||
);
|
"点,同时怪物后退一格"
|
||||||
},
|
);
|
||||||
"#8888e6",
|
},
|
||||||
],
|
"#8888e6",
|
||||||
[19, "自爆", "战斗后角色的生命值变成1", "#ff6666"],
|
],
|
||||||
[20, "无敌", "角色无法打败怪物,除非拥有十字架", "#aaaaaa"],
|
[19, "自爆", "战斗后角色的生命值变成1", "#ff6666"],
|
||||||
[
|
[20, "无敌", "角色无法打败怪物,除非拥有十字架", "#aaaaaa"],
|
||||||
21,
|
[
|
||||||
"退化",
|
21,
|
||||||
function (enemy) {
|
"退化",
|
||||||
return (
|
function (enemy) {
|
||||||
"战斗后角色永久下降" +
|
return (
|
||||||
(enemy.atkValue || 0) +
|
"战斗后角色永久下降" +
|
||||||
"点攻击和" +
|
(enemy.atkValue || 0) +
|
||||||
(enemy.defValue || 0) +
|
"点攻击和" +
|
||||||
"点防御"
|
(enemy.defValue || 0) +
|
||||||
);
|
"点防御"
|
||||||
},
|
);
|
||||||
],
|
},
|
||||||
[
|
],
|
||||||
22,
|
[
|
||||||
"固伤",
|
22,
|
||||||
function (enemy) {
|
"固伤",
|
||||||
return (
|
function (enemy) {
|
||||||
"战斗前,怪物对角色造成" +
|
return (
|
||||||
(enemy.damage || 0) +
|
"战斗前,怪物对角色造成" +
|
||||||
"点固定伤害,未开启负伤时无视角色护盾。"
|
(enemy.damage || 0) +
|
||||||
);
|
"点固定伤害,未开启负伤时无视角色护盾。"
|
||||||
},
|
);
|
||||||
"#ff9977",
|
},
|
||||||
],
|
"#ff9977",
|
||||||
[23, "重生", "怪物被击败后,角色转换楼层则怪物将再次出现", "#a0e0ff"],
|
],
|
||||||
[
|
[23, "重生", "怪物被击败后,角色转换楼层则怪物将再次出现", "#a0e0ff"],
|
||||||
24,
|
[
|
||||||
"激光",
|
24,
|
||||||
function (enemy) {
|
"激光",
|
||||||
return "经过怪物同行或同列时自动减生命" + (enemy.laser || 0) + "点";
|
function (enemy) {
|
||||||
},
|
return "经过怪物同行或同列时自动减生命" + (enemy.laser || 0) + "点";
|
||||||
"#dda0dd",
|
},
|
||||||
],
|
"#dda0dd",
|
||||||
[
|
],
|
||||||
25,
|
[
|
||||||
"光环",
|
25,
|
||||||
function (enemy) {
|
"光环",
|
||||||
return (
|
function (enemy) {
|
||||||
(enemy.range != null
|
return (
|
||||||
? (enemy.haloSquare ? "该怪物九宫格" : "该怪物十字") +
|
(enemy.range != null ?
|
||||||
enemy.haloRange +
|
(enemy.haloSquare ? "该怪物九宫格" : "该怪物十字") +
|
||||||
"格范围内"
|
enemy.haloRange +
|
||||||
: "同楼层所有") +
|
"格范围内" :
|
||||||
"怪物生命提升" +
|
"同楼层所有") +
|
||||||
(enemy.hpBuff || 0) +
|
"怪物生命提升" +
|
||||||
"%,攻击提升" +
|
(enemy.hpBuff || 0) +
|
||||||
(enemy.atkBuff || 0) +
|
"%,攻击提升" +
|
||||||
"%,防御提升" +
|
(enemy.atkBuff || 0) +
|
||||||
(enemy.defBuff || 0) +
|
"%,防御提升" +
|
||||||
"%," +
|
(enemy.defBuff || 0) +
|
||||||
(enemy.haloAdd ? "可叠加" : "不可叠加")
|
"%," +
|
||||||
);
|
(enemy.haloAdd ? "可叠加" : "不可叠加")
|
||||||
},
|
);
|
||||||
"#e6e099",
|
},
|
||||||
1,
|
"#e6e099",
|
||||||
],
|
1,
|
||||||
[
|
],
|
||||||
26,
|
[
|
||||||
"支援",
|
26,
|
||||||
"当周围一圈的怪物受到攻击时将上前支援,并组成小队战斗。",
|
"支援",
|
||||||
"#77c0b6",
|
"当周围一圈的怪物受到攻击时将上前支援,并组成小队战斗。",
|
||||||
1,
|
"#77c0b6",
|
||||||
],
|
1,
|
||||||
[
|
],
|
||||||
27,
|
[
|
||||||
"捕捉",
|
27,
|
||||||
function (enemy) {
|
"捕捉",
|
||||||
return (
|
function (enemy) {
|
||||||
"当走到怪物周围" +
|
return (
|
||||||
(enemy.zoneSquare ? "九宫格" : "十字") +
|
"当走到怪物周围" +
|
||||||
"时会强制进行战斗。"
|
(enemy.zoneSquare ? "九宫格" : "十字") +
|
||||||
);
|
"时会强制进行战斗。"
|
||||||
},
|
);
|
||||||
"#c0ddbb",
|
},
|
||||||
],
|
"#c0ddbb",
|
||||||
];
|
],
|
||||||
},
|
];
|
||||||
|
},
|
||||||
"getEnemyInfo": function (enemy, hero, x, y, floorId) {
|
"getEnemyInfo": function (enemy, hero, x, y, floorId) {
|
||||||
// 获得某个怪物变化后的数据;该函数将被伤害计算和怪物手册使用
|
// 获得某个怪物变化后的数据;该函数将被伤害计算和怪物手册使用
|
||||||
// 例如:坚固、模仿、仿攻等等
|
// 例如:坚固、模仿、仿攻等等
|
||||||
@ -907,6 +908,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
hero_def = core.getRealStatusOrDefault(hero, "def"),
|
hero_def = core.getRealStatusOrDefault(hero, "def"),
|
||||||
hero_matk = core.getRealStatusOrDefault(hero, "matk"),
|
hero_matk = core.getRealStatusOrDefault(hero, "matk"),
|
||||||
hero_mdef = core.getRealStatusOrDefault(hero, "mdef"),
|
hero_mdef = core.getRealStatusOrDefault(hero, "mdef"),
|
||||||
|
hero_mhp = core.getRealStatusOrDefault(hero, "mhp"),
|
||||||
hero_speed = core.getRealStatusOrDefault(hero, "speed"),
|
hero_speed = core.getRealStatusOrDefault(hero, "speed"),
|
||||||
hero_spell = core.getRealStatusOrDefault(hero, "spell"),
|
hero_spell = core.getRealStatusOrDefault(hero, "spell"),
|
||||||
origin_hero_hp = core.getStatusOrDefault(hero, "hp"),
|
origin_hero_hp = core.getStatusOrDefault(hero, "hp"),
|
||||||
@ -935,8 +937,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
//勇士属性取整
|
//勇士属性取整
|
||||||
hero_atk = Math.max(0, Math.floor(hero_atk));
|
hero_atk = Math.max(0, Math.floor(hero_atk));
|
||||||
hero_def = Math.max(0, Math.floor(hero_def));
|
hero_def = Math.max(0, Math.floor(hero_def));
|
||||||
hero_mdef = Math.max(0, Math.floor(hero_mdef));
|
|
||||||
hero_speed = Math.max(0, Math.floor(hero_speed));
|
hero_speed = Math.max(0, Math.floor(hero_speed));
|
||||||
|
hero_spell = Math.max(0, Math.floor(hero_spell));
|
||||||
|
hero_matk = Math.min(100, Math.max(0, Math.floor(hero_matk)));
|
||||||
|
hero_mdef = Math.min(100, Math.max(0, Math.floor(hero_mdef)));
|
||||||
|
hero_mhp = Math.min(100, Math.max(0, Math.floor(hero_mhp)));
|
||||||
|
|
||||||
// 如果是无敌属性,且勇士未持有十字架
|
// 如果是无敌属性,且勇士未持有十字架
|
||||||
if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross"))
|
if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross"))
|
||||||
@ -964,12 +969,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
|
|
||||||
//——第二部分:变量定义和初始赋值——
|
//——第二部分:变量定义和初始赋值——
|
||||||
// 每回合怪物对勇士造成的战斗伤害
|
// 每回合怪物对勇士造成的战斗伤害
|
||||||
let per_damage = Math.max(mon_atk - hero_def, 0);
|
let per_damage = Math.max(mon_atk - hero_def, 0),
|
||||||
//if (enemyInfo.magic) per_damage = Math.max(mon_atk - hero_mdef, 0);
|
per_mdamage = 0;
|
||||||
|
if (core.hasSpecial(mon_special, 2)) {
|
||||||
|
per_mdamage = Math.floor(mon_atk * (100 - hero_mdef) / 100);
|
||||||
|
}
|
||||||
//
|
//
|
||||||
let hero_per_damage = Math.max(hero_atk - mon_def, 0);
|
let hero_per_damage = Math.max(hero_atk - mon_def, 0),
|
||||||
//if (hero_magic) hero_per_damage = Math.max(hero_atk - mon_mdef, 0);
|
|
||||||
|
hero_per_mdamage = Math.floor((hero_spell * hero_matk / 100) * (100 - mon_mdef) / 100);
|
||||||
|
|
||||||
let damage = 0,
|
let damage = 0,
|
||||||
hero_turn = 0,
|
hero_turn = 0,
|
||||||
@ -989,7 +997,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
hero_time = 0; now_mon_hp > 0;
|
hero_time = 0; now_mon_hp > 0;
|
||||||
|
|
||||||
) {
|
) {
|
||||||
//勇士和怪物的长度
|
//勇士和怪物的长度。这里需要把if else改成轮次的if和math.min
|
||||||
mon_time = mon_length / mon_speed;
|
mon_time = mon_length / mon_speed;
|
||||||
hero_time = hero_length / hero_speed;
|
hero_time = hero_length / hero_speed;
|
||||||
if (
|
if (
|
||||||
@ -1027,7 +1035,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
}
|
}
|
||||||
let hero_diff = {},
|
let hero_diff = {},
|
||||||
mon_diff = {};
|
mon_diff = {};
|
||||||
//这里插入汇总勇士和怪物在此回合结束时的情况数值,用以跑条动画读取
|
//这里插入汇总勇士和怪物在此回合结束时的情况变化(hp, atk, def, speed, spell, damage, etc),用以跑条动画读取
|
||||||
heroDiffPerTurn.push(hero_diff);
|
heroDiffPerTurn.push(hero_diff);
|
||||||
enemyDiffPerTurn.push(mon_diff); //将勇士和怪物此回合结束时的属性变动保存到heroPerInfo和enemyPerInfo中,用以跑条动画读取
|
enemyDiffPerTurn.push(mon_diff); //将勇士和怪物此回合结束时的属性变动保存到heroPerInfo和enemyPerInfo中,用以跑条动画读取
|
||||||
}
|
}
|
||||||
@ -1059,7 +1067,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
);
|
);
|
||||||
//上面这些还没修改
|
//上面这些还没修改
|
||||||
//勇士护盾计算
|
//勇士护盾计算
|
||||||
let barrier = hero_mdef;
|
let barrier = Math.floor(hero_spell * hero_mhp / 100);
|
||||||
|
|
||||||
|
|
||||||
// ------ 支援 ----- //
|
// ------ 支援 ----- //
|
||||||
|
Loading…
Reference in New Issue
Block a user