mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-01-31 23:29:27 +08:00
fix: 杀戮光环 & feat: 注册新图块
This commit is contained in:
parent
3b064b6322
commit
32f57cafec
8
components.d.ts
vendored
8
components.d.ts
vendored
@ -7,6 +7,14 @@ export {}
|
|||||||
|
|
||||||
declare module '@vue/runtime-core' {
|
declare module '@vue/runtime-core' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
|
AButton: typeof import('ant-design-vue/es')['Button']
|
||||||
|
ADivider: typeof import('ant-design-vue/es')['Divider']
|
||||||
|
AInput: typeof import('ant-design-vue/es')['Input']
|
||||||
|
AProgress: typeof import('ant-design-vue/es')['Progress']
|
||||||
|
ASelect: typeof import('ant-design-vue/es')['Select']
|
||||||
|
ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
|
||||||
|
ASlider: typeof import('ant-design-vue/es')['Slider']
|
||||||
|
ASwitch: typeof import('ant-design-vue/es')['Switch']
|
||||||
Box: typeof import('./src/components/box.vue')['default']
|
Box: typeof import('./src/components/box.vue')['default']
|
||||||
BoxAnimate: typeof import('./src/components/boxAnimate.vue')['default']
|
BoxAnimate: typeof import('./src/components/boxAnimate.vue')['default']
|
||||||
Colomn: typeof import('./src/components/colomn.vue')['default']
|
Colomn: typeof import('./src/components/colomn.vue')['default']
|
||||||
|
2
idea.md
2
idea.md
@ -22,7 +22,7 @@
|
|||||||
### 机制
|
### 机制
|
||||||
|
|
||||||
[] 苍蓝之殿 1: 红蓝黄门转换
|
[] 苍蓝之殿 1: 红蓝黄门转换
|
||||||
[] 苍蓝之殿 2:
|
[] 苍蓝之殿 2: 乾坤挪移、杀戮光环、同化
|
||||||
[] 苍蓝之殿 3: 传送门
|
[] 苍蓝之殿 3: 传送门
|
||||||
[] 苍蓝之殿 4:
|
[] 苍蓝之殿 4:
|
||||||
[] 苍蓝之殿中: 让我们把这些东西结合起来...
|
[] 苍蓝之殿中: 让我们把这些东西结合起来...
|
||||||
|
@ -285,6 +285,38 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
|
|||||||
"_docs": "苍蓝刻",
|
"_docs": "苍蓝刻",
|
||||||
"_data": "苍蓝刻"
|
"_data": "苍蓝刻"
|
||||||
},
|
},
|
||||||
|
"specialHalo": {
|
||||||
|
"_leaf": true,
|
||||||
|
"_type": "popCheckboxSet",
|
||||||
|
"_checkboxSet": function () {
|
||||||
|
var array = Mota.require('var', 'enemySpecials');
|
||||||
|
var b = [],
|
||||||
|
c = [];
|
||||||
|
for (var index = 0; index < array.length; index++) {
|
||||||
|
b.push(index)
|
||||||
|
var name = array[index].name;
|
||||||
|
if (name instanceof Function) name = name({});
|
||||||
|
c.push(name + "(" + index + ")")
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
"prefix": c,
|
||||||
|
"key": b
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"_data": "杀戮光环"
|
||||||
|
},
|
||||||
|
"specialMultiply": {
|
||||||
|
"_leaf": true,
|
||||||
|
"_type": "checkbox",
|
||||||
|
"_docs": "光环叠加",
|
||||||
|
"_data": "光环叠加是否为乘算"
|
||||||
|
},
|
||||||
|
"haloRange": {
|
||||||
|
"_leaf": true,
|
||||||
|
"_type": "textarea",
|
||||||
|
"_docs": "光环范围",
|
||||||
|
"_data": "光环范围"
|
||||||
|
},
|
||||||
"value": {
|
"value": {
|
||||||
"_leaf": true,
|
"_leaf": true,
|
||||||
"_type": "textarea",
|
"_type": "textarea",
|
||||||
|
@ -60,7 +60,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
|||||||
"grayRock": {"name":"林间巨石","hp":100,"atk":60,"def":0,"money":0,"exp":12,"point":0,"special":[3],"description":"貌似比山洞里面的那些家伙硬了一些?哼,那又能有什么用呢?"},
|
"grayRock": {"name":"林间巨石","hp":100,"atk":60,"def":0,"money":0,"exp":12,"point":0,"special":[3],"description":"貌似比山洞里面的那些家伙硬了一些?哼,那又能有什么用呢?"},
|
||||||
"yellowPriest": {"name":"中级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"yellowPriest": {"name":"中级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"evilPrincess": {"name":"痛苦魔女","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"evilPrincess": {"name":"痛苦魔女","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"blademaster": {"name":"剑圣","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"blademaster": {"name":"苍蓝之剑","hp":5000,"atk":10000,"def":5000,"money":0,"exp":0,"point":0,"special":[1,5],"courage":null,"crit":250},
|
||||||
"evilFairy": {"name":"黑暗仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"evilFairy": {"name":"黑暗仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"blueRock": {"name":"勇气之石","hp":2000,"atk":450,"def":230,"money":1,"exp":30,"point":0,"special":[],"description":"巨石,这本身是一种不可怕的怪物。而可怕的是,当这些巨石拥有了勇气,或许就很少有人敢于直面他们了。"},
|
"blueRock": {"name":"勇气之石","hp":2000,"atk":450,"def":230,"money":1,"exp":30,"point":0,"special":[],"description":"巨石,这本身是一种不可怕的怪物。而可怕的是,当这些巨石拥有了勇气,或许就很少有人敢于直面他们了。"},
|
||||||
"skeletonLite": {"name":"骷髅精英","hp":2000,"atk":275,"def":240,"money":1,"exp":35,"point":0,"special":[9],"description":"骷髅们总是说,没有防御力,让我怎么去攻击别人?呵,这防御力不就来了吗?可是,这又有何用呢?"},
|
"skeletonLite": {"name":"骷髅精英","hp":2000,"atk":275,"def":240,"money":1,"exp":35,"point":0,"special":[9],"description":"骷髅们总是说,没有防御力,让我怎么去攻击别人?呵,这防御力不就来了吗?可是,这又有何用呢?"},
|
||||||
@ -125,7 +125,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
|||||||
"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":[]},
|
"E561": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E562": {"name":"嘲讽剑客","hp":5000,"atk":1600,"def":500,"money":1,"exp":60,"point":0,"special":[19]},
|
"E562": {"name":"嘲讽剑客","hp":5000,"atk":1600,"def":500,"money":1,"exp":60,"point":0,"special":[19]},
|
||||||
"E563": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E563": {"name":"嘲讽剑圣","hp":15000,"atk":6000,"def":3000,"money":0,"exp":0,"point":0,"special":[19]},
|
||||||
"E564": {"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":[]},
|
||||||
"E566": {"name":"智慧史莱姆","hp":6000,"atk":1200,"def":600,"money":1,"exp":50,"point":0,"special":[8],"together":25},
|
"E566": {"name":"智慧史莱姆","hp":6000,"atk":1200,"def":600,"money":1,"exp":50,"point":0,"special":[8],"together":25},
|
||||||
"E567": {"name":"精明史莱姆","hp":5000,"atk":1200,"def":550,"money":0,"exp":0,"point":0,"special":[8],"together":30},
|
"E567": {"name":"精明史莱姆","hp":5000,"atk":1200,"def":550,"money":0,"exp":0,"point":0,"special":[8],"together":30},
|
||||||
@ -145,7 +145,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
|||||||
"E593": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E593": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E594": {"name":"苍蓝骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E594": {"name":"苍蓝骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E595": {"name":"寒冰兽人","hp":12500,"atk":1800,"def":800,"money":2,"exp":100,"point":0,"special":[7],"hungry":25},
|
"E595": {"name":"寒冰兽人","hp":12500,"atk":1800,"def":800,"money":2,"exp":100,"point":0,"special":[7],"hungry":25},
|
||||||
"E596": {"name":"苍蓝兽人","hp":10000,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E596": {"name":"苍蓝兽人","hp":20000,"atk":5000,"def":3000,"money":4,"exp":250,"point":0,"special":[1,28],"paleShield":30,"specialHalo":[],"iceHalo":20,"haloRange":2,"value":1000,"melt":50,"together":20,"fireCore":20,"crit":500},
|
||||||
"E597": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E597": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E598": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E598": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E599": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E599": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
@ -160,7 +160,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
|||||||
"E609": {"name":"具形雪人","hp":7500,"atk":2250,"def":1250,"money":2,"exp":90,"point":0,"special":[25],"melt":15},
|
"E609": {"name":"具形雪人","hp":7500,"atk":2250,"def":1250,"money":2,"exp":90,"point":0,"special":[25],"melt":15},
|
||||||
"E610": {"name":"高冷雪人","hp":10000,"atk":2500,"def":1500,"money":2,"exp":150,"point":0,"special":[25],"melt":25},
|
"E610": {"name":"高冷雪人","hp":10000,"atk":2500,"def":1500,"money":2,"exp":150,"point":0,"special":[25],"melt":25},
|
||||||
"E611": {"name":"具形雪人法师","hp":15000,"atk":2500,"def":1750,"money":2,"exp":175,"point":0,"special":[13,25],"melt":30},
|
"E611": {"name":"具形雪人法师","hp":15000,"atk":2500,"def":1750,"money":2,"exp":175,"point":0,"special":[13,25],"melt":30},
|
||||||
"E612": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E612": {"name":"苍蓝雪人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E613": {"name":"寒冰核心","hp":20000,"atk":2750,"def":1500,"money":3,"exp":150,"point":0,"special":[26],"iceCore":20},
|
"E613": {"name":"寒冰核心","hp":20000,"atk":2750,"def":1500,"money":3,"exp":150,"point":0,"special":[26],"iceCore":20},
|
||||||
"E614": {"name":"火焰核心","hp":15000,"atk":2750,"def":1750,"money":3,"exp":140,"point":0,"special":[27],"fireCore":20},
|
"E614": {"name":"火焰核心","hp":15000,"atk":2750,"def":1750,"money":3,"exp":140,"point":0,"special":[27],"fireCore":20},
|
||||||
"E615": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E615": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
@ -171,5 +171,9 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
|||||||
"E644": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E644": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E645": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E645": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E646": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
"E646": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
"E647": {"name":"苍蓝之灵-虚","hp":30000,"atk":5000,"def":3000,"money":10,"exp":2500,"point":0,"special":[28],"paleShield":10}
|
"E647": {"name":"苍蓝之灵-虚","hp":30000,"atk":5000,"def":3000,"money":10,"exp":2500,"point":0,"special":[28],"paleShield":10},
|
||||||
|
"E656": {"name":"触手史莱姆","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[8]},
|
||||||
|
"E657": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
|
"E658": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||||
|
"E659": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}
|
||||||
}
|
}
|
@ -33,12 +33,12 @@ main.floors.MT50=
|
|||||||
"9,13": [
|
"9,13": [
|
||||||
"在你刚进入苍蓝之殿时,你只能先前往左下角部分(本地图的左面),右下角暂时不能前往。"
|
"在你刚进入苍蓝之殿时,你只能先前往左下角部分(本地图的左面),右下角暂时不能前往。"
|
||||||
],
|
],
|
||||||
"5,1": [
|
|
||||||
"左边两个机关门在打完左下角区域的boss后开启,右边同理。"
|
|
||||||
],
|
|
||||||
"9,1": [
|
"9,1": [
|
||||||
"建议优先点出学习技能,对于特定场景将会非常有帮助",
|
"建议优先点出学习技能,对于特定场景将会非常有帮助",
|
||||||
"本区域可以使用跳跃技能,不要忘记了。"
|
"本区域可以使用跳跃技能,不要忘记了。"
|
||||||
|
],
|
||||||
|
"5,1": [
|
||||||
|
"左边两个机关门在打完左下角区域的boss后开启,右边同理。"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"changeFloor": {
|
"changeFloor": {
|
||||||
@ -60,7 +60,7 @@ main.floors.MT50=
|
|||||||
"map": [
|
"map": [
|
||||||
[648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648],
|
[648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648],
|
||||||
[648, 0, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0, 0,648],
|
[648, 0, 0, 0, 0,129, 0, 0, 0,129, 0, 0, 0, 0,648],
|
||||||
[648, 0, 0, 0, 0,648, 0, 0, 0,648, 0, 0, 0, 0,648],
|
[648, 0, 0, 0, 0,648,596,563,249,648, 0, 0, 0, 0,648],
|
||||||
[648, 0, 0, 0, 0,648, 0, 0, 0,648, 0, 0, 0, 0,648],
|
[648, 0, 0, 0, 0,648, 0, 0, 0,648, 0, 0, 0, 0,648],
|
||||||
[648, 0, 0, 0,103,648, 0, 0, 0,648,103, 0, 0, 0,648],
|
[648, 0, 0, 0,103,648, 0, 0, 0,648,103, 0, 0, 0,648],
|
||||||
[648, 85,648,648,648,648, 0, 0, 0,648,648,648,648, 85,648],
|
[648, 85,648,648,648,648, 0, 0, 0,648,648,648,648, 85,648],
|
||||||
|
@ -134,7 +134,10 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
|
|||||||
"T652": 74,
|
"T652": 74,
|
||||||
"T653": 75,
|
"T653": 75,
|
||||||
"T654": 76,
|
"T654": 76,
|
||||||
"T655": 77
|
"T655": 77,
|
||||||
|
"T660": 78,
|
||||||
|
"T661": 79,
|
||||||
|
"T662": 80
|
||||||
},
|
},
|
||||||
"animates": {
|
"animates": {
|
||||||
"star": 0,
|
"star": 0,
|
||||||
@ -416,7 +419,11 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
|
|||||||
"E644": 164,
|
"E644": 164,
|
||||||
"E645": 165,
|
"E645": 165,
|
||||||
"E646": 166,
|
"E646": 166,
|
||||||
"E647": 167
|
"E647": 167,
|
||||||
|
"E656": 168,
|
||||||
|
"E657": 169,
|
||||||
|
"E658": 170,
|
||||||
|
"E659": 171
|
||||||
},
|
},
|
||||||
"enemy48": {
|
"enemy48": {
|
||||||
"angel": 0,
|
"angel": 0,
|
||||||
|
@ -165,7 +165,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
|||||||
"text": "真的是一把很普通的银剑,哦不,铁剑。攻击+180,额外攻击+50",
|
"text": "真的是一把很普通的银剑,哦不,铁剑。攻击+180,额外攻击+50",
|
||||||
"equip": {
|
"equip": {
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"animate": "sword",
|
"animate": "jianji",
|
||||||
"value": {
|
"value": {
|
||||||
"mana": 50,
|
"mana": 50,
|
||||||
"atk": 180
|
"atk": 180
|
||||||
@ -349,7 +349,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
|||||||
"name": "查看技能",
|
"name": "查看技能",
|
||||||
"text": "查看勇士的技能",
|
"text": "查看勇士的技能",
|
||||||
"canUseItemEffect": true,
|
"canUseItemEffect": true,
|
||||||
"useItemEffect": "Mota.Plugin.require('gameUi_g').openSkill();"
|
"useItemEffect": "Mota.require('var', 'mainUi').open('skill');"
|
||||||
},
|
},
|
||||||
"dagger": {
|
"dagger": {
|
||||||
"cls": "constants",
|
"cls": "constants",
|
||||||
|
@ -584,6 +584,12 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
|
|||||||
"653": {"cls":"terrains","id":"T653"},
|
"653": {"cls":"terrains","id":"T653"},
|
||||||
"654": {"cls":"terrains","id":"T654"},
|
"654": {"cls":"terrains","id":"T654"},
|
||||||
"655": {"cls":"terrains","id":"T655"},
|
"655": {"cls":"terrains","id":"T655"},
|
||||||
|
"656": {"cls":"enemys","id":"E656"},
|
||||||
|
"657": {"cls":"enemys","id":"E657"},
|
||||||
|
"658": {"cls":"enemys","id":"E658"},
|
||||||
|
"659": {"cls":"enemys","id":"E659"},
|
||||||
|
"660": {"cls":"terrains","id":"T660"},
|
||||||
|
"661": {"cls":"terrains","id":"T661"},
|
||||||
"20032": {"cls":"tileset","id":"X20032","cannotOut":["up","left"],"cannotIn":["up","left"]},
|
"20032": {"cls":"tileset","id":"X20032","cannotOut":["up","left"],"cannotIn":["up","left"]},
|
||||||
"20033": {"cls":"tileset","id":"X20033","cannotOut":["up"],"cannotIn":["up"]},
|
"20033": {"cls":"tileset","id":"X20033","cannotOut":["up"],"cannotIn":["up"]},
|
||||||
"20034": {"cls":"tileset","id":"X20034","cannotOut":["up","right"],"cannotIn":["up","right"]},
|
"20034": {"cls":"tileset","id":"X20034","cannotOut":["up","right"],"cannotIn":["up","right"]},
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 171 KiB |
Binary file not shown.
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 67 KiB |
@ -156,6 +156,116 @@ function init() {
|
|||||||
core.battle(ex, ey, true, core.doAction);
|
core.battle(ex, ey, true, core.doAction);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
core.events.afterBattle = function afterBattle(
|
||||||
|
enemy: DamageEnemy,
|
||||||
|
x?: number,
|
||||||
|
y?: number
|
||||||
|
) {
|
||||||
|
const floorId = core.status.floorId;
|
||||||
|
const special = enemy.info.special;
|
||||||
|
|
||||||
|
// 播放战斗动画
|
||||||
|
let animate: AnimationIds = 'hand';
|
||||||
|
// 检查当前装备是否存在攻击动画
|
||||||
|
const equipId = core.getEquip(0);
|
||||||
|
if (equipId && (core.material.items[equipId].equip || {}).animate)
|
||||||
|
animate = core.material.items[equipId].equip.animate;
|
||||||
|
|
||||||
|
// 检查该动画是否存在SE,如果不存在则使用默认音效
|
||||||
|
if (!core.material.animates[animate]?.se) core.playSound('attack.mp3');
|
||||||
|
|
||||||
|
// 战斗伤害
|
||||||
|
const info = enemy.calDamage(core.status.hero);
|
||||||
|
const damage = info.damage;
|
||||||
|
// 判定是否致死
|
||||||
|
if (damage >= core.status.hero.hp) {
|
||||||
|
core.status.hero.hp = 0;
|
||||||
|
core.updateStatusBar(false, true);
|
||||||
|
core.events.lose('战斗失败');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 扣减体力值并记录统计数据
|
||||||
|
core.status.hero.hp -= damage;
|
||||||
|
core.status.hero.statistics.battleDamage += damage;
|
||||||
|
core.status.hero.statistics.battle++;
|
||||||
|
|
||||||
|
// 智慧之源
|
||||||
|
if (special.includes(14) && flags.hard === 2) {
|
||||||
|
core.addFlag(
|
||||||
|
'inte_' + floorId,
|
||||||
|
Math.ceil((core.status.hero.mdef / 10) * 0.3) * 10
|
||||||
|
);
|
||||||
|
core.status.hero.mdef -=
|
||||||
|
Math.ceil((core.status.hero.mdef / 10) * 0.3) * 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 极昼永夜
|
||||||
|
if (special.includes(22)) {
|
||||||
|
flags[`night_${floorId}`] ??= 0;
|
||||||
|
flags[`night_${floorId}`] -= enemy.info.night!;
|
||||||
|
}
|
||||||
|
if (special.includes(23)) {
|
||||||
|
flags[`night_${floorId}`] ??= 0;
|
||||||
|
flags[`night_${floorId}`] += enemy.info.day;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (core.plugin.skillTree.getSkillLevel(11) > 0) {
|
||||||
|
// core.plugin.study.declineStudiedSkill();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 如果是融化怪,需要特殊标记一下
|
||||||
|
if (special.includes(25) && has(x) && has(y)) {
|
||||||
|
flags[`melt_${floorId}`] ??= {};
|
||||||
|
flags[`melt_${floorId}`][`${x},${y}`] = enemy.info.melt;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得金币
|
||||||
|
const money = enemy.info.money!;
|
||||||
|
core.status.hero.money += money;
|
||||||
|
core.status.hero.statistics.money += money;
|
||||||
|
|
||||||
|
// 获得经验
|
||||||
|
const exp = enemy.info.exp!;
|
||||||
|
core.status.hero.exp += exp;
|
||||||
|
core.status.hero.statistics.exp += exp;
|
||||||
|
|
||||||
|
const hint =
|
||||||
|
'打败 ' + enemy.enemy.name + ',金币+' + money + ',经验+' + exp;
|
||||||
|
core.drawTip(hint, enemy.id);
|
||||||
|
|
||||||
|
if (core.getFlag('bladeOn') && core.getFlag('blade')) {
|
||||||
|
core.setFlag('blade', false);
|
||||||
|
}
|
||||||
|
if (core.getFlag('shieldOn') && core.getFlag('shield')) {
|
||||||
|
core.setFlag('shield', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 事件的处理
|
||||||
|
const todo: MotaEvent = [];
|
||||||
|
|
||||||
|
// 战后事件
|
||||||
|
if (has(core.status.floorId)) {
|
||||||
|
const loc = `${x},${y}` as LocString;
|
||||||
|
todo.push(
|
||||||
|
...(core.floors[core.status.floorId].afterBattle[loc] ?? [])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
todo.push(...(enemy.enemy.afterBattle ?? []));
|
||||||
|
|
||||||
|
// 如果事件不为空,将其插入
|
||||||
|
if (todo.length > 0) core.insertAction(todo, x, y);
|
||||||
|
|
||||||
|
if (has(x) && has(y)) {
|
||||||
|
core.drawAnimate(animate, x, y);
|
||||||
|
core.removeBlock(x, y);
|
||||||
|
} else core.drawHeroAnimate(animate);
|
||||||
|
|
||||||
|
// 如果已有事件正在处理中
|
||||||
|
if (core.status.event.id == null) core.continueAutomaticRoute();
|
||||||
|
else core.clearContinueAutomaticRoute();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
loading.once('coreInit', init);
|
loading.once('coreInit', init);
|
||||||
|
|
||||||
|
@ -8,15 +8,22 @@ import {
|
|||||||
manhattan
|
manhattan
|
||||||
} from '@/plugin/game/utils';
|
} from '@/plugin/game/utils';
|
||||||
|
|
||||||
|
// todo: 光环划分优先级,从而可以实现光环的多级运算
|
||||||
|
|
||||||
interface HaloType {
|
interface HaloType {
|
||||||
square: {
|
square: {
|
||||||
x: number;
|
x: number;
|
||||||
y: number;
|
y: number;
|
||||||
d: number;
|
d: number;
|
||||||
};
|
};
|
||||||
|
manhattan: {
|
||||||
|
x: number;
|
||||||
|
y: number;
|
||||||
|
d: number;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
interface EnemyInfo extends Partial<Enemy> {
|
export interface EnemyInfo extends Partial<Enemy> {
|
||||||
atk: number;
|
atk: number;
|
||||||
def: number;
|
def: number;
|
||||||
hp: number;
|
hp: number;
|
||||||
@ -62,10 +69,30 @@ interface CriticalDamageDelta extends Omit<DamageDelta, 'info'> {
|
|||||||
atkDelta: number;
|
atkDelta: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
type HaloFn = (info: EnemyInfo, enemy: Enemy) => void;
|
type HaloFn = (info: EnemyInfo, enemy: EnemyInfo) => void;
|
||||||
|
|
||||||
/** 光环属性 */
|
/** 光环属性 */
|
||||||
export const haloSpecials: Set<number> = new Set([8, 21, 25, 26, 27]);
|
export const haloSpecials: Set<number> = new Set([8, 21, 25, 26, 27, 29]);
|
||||||
|
/** 特殊属性对应 */
|
||||||
|
export const specialValue: Map<number, SelectKey<Enemy, number | undefined>[]> =
|
||||||
|
new Map();
|
||||||
|
specialValue
|
||||||
|
.set(1, ['crit'])
|
||||||
|
.set(6, ['n'])
|
||||||
|
.set(7, ['hungry'])
|
||||||
|
.set(8, ['together'])
|
||||||
|
.set(10, ['courage'])
|
||||||
|
.set(11, ['charge'])
|
||||||
|
.set(15, ['value'])
|
||||||
|
.set(18, ['value'])
|
||||||
|
.set(20, ['ice'])
|
||||||
|
.set(21, ['iceHalo'])
|
||||||
|
.set(22, ['night'])
|
||||||
|
.set(23, ['day'])
|
||||||
|
.set(25, ['melt'])
|
||||||
|
.set(26, ['iceCore'])
|
||||||
|
.set(27, ['fireCore'])
|
||||||
|
.set(28, ['paleShield']);
|
||||||
|
|
||||||
export class EnemyCollection implements RangeCollection<DamageEnemy> {
|
export class EnemyCollection implements RangeCollection<DamageEnemy> {
|
||||||
floorId: FloorIds;
|
floorId: FloorIds;
|
||||||
@ -107,6 +134,8 @@ export class EnemyCollection implements RangeCollection<DamageEnemy> {
|
|||||||
this.haloList = [];
|
this.haloList = [];
|
||||||
this.list.forEach(v => {
|
this.list.forEach(v => {
|
||||||
v.reset();
|
v.reset();
|
||||||
|
});
|
||||||
|
this.list.forEach(v => {
|
||||||
v.preProvideHalo();
|
v.preProvideHalo();
|
||||||
});
|
});
|
||||||
this.list.forEach(v => {
|
this.list.forEach(v => {
|
||||||
@ -150,21 +179,22 @@ export class EnemyCollection implements RangeCollection<DamageEnemy> {
|
|||||||
applyHalo<K extends keyof HaloType>(
|
applyHalo<K extends keyof HaloType>(
|
||||||
type: K,
|
type: K,
|
||||||
data: HaloType[K],
|
data: HaloType[K],
|
||||||
|
enemy: DamageEnemy,
|
||||||
halo: HaloFn | HaloFn[],
|
halo: HaloFn | HaloFn[],
|
||||||
recursion: boolean = false
|
recursion: boolean = false
|
||||||
) {
|
) {
|
||||||
const arr = ensureArray(halo);
|
const arr = ensureArray(halo);
|
||||||
const enemy = this.range.scan(type, data);
|
const enemys = this.range.scan(type, data);
|
||||||
if (!recursion) {
|
if (!recursion) {
|
||||||
arr.forEach(v => {
|
arr.forEach(v => {
|
||||||
enemy.forEach(e => {
|
enemys.forEach(e => {
|
||||||
e.injectHalo(v, e.enemy);
|
e.injectHalo(v, enemy.info);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
enemy.forEach(e => {
|
enemys.forEach(e => {
|
||||||
arr.forEach(v => {
|
arr.forEach(v => {
|
||||||
e.injectHalo(v, e.enemy);
|
e.injectHalo(v, enemy.info);
|
||||||
e.preProvideHalo();
|
e.preProvideHalo();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -429,6 +459,66 @@ export class DamageEnemy<T extends EnemyIds = EnemyIds> {
|
|||||||
preProvideHalo() {
|
preProvideHalo() {
|
||||||
if (this.progress !== 0) return;
|
if (this.progress !== 0) return;
|
||||||
this.progress = 1;
|
this.progress = 1;
|
||||||
|
if (!this.floorId) return;
|
||||||
|
if (!has(this.x) || !has(this.y)) return;
|
||||||
|
const special = this.getHaloSpecials();
|
||||||
|
const col = this.col ?? core.status.maps[this.floorId!].enemy;
|
||||||
|
|
||||||
|
for (const halo of special) {
|
||||||
|
switch (halo) {
|
||||||
|
case 29: {
|
||||||
|
// 特殊光环
|
||||||
|
const e = this.enemy;
|
||||||
|
const type = 'square';
|
||||||
|
const r = Math.floor(e.haloRange!);
|
||||||
|
const d = r * 2 + 1;
|
||||||
|
const range = { x: this.x, y: this.y, d };
|
||||||
|
|
||||||
|
// 这一句必须放到applyHalo之前
|
||||||
|
this.providedHalo.add(29);
|
||||||
|
|
||||||
|
col.applyHalo(
|
||||||
|
type,
|
||||||
|
range,
|
||||||
|
this,
|
||||||
|
(e, enemy) => {
|
||||||
|
const s = enemy.specialHalo!;
|
||||||
|
|
||||||
|
for (const spe of s) {
|
||||||
|
// 防止重复
|
||||||
|
if (!e.special.includes(spe))
|
||||||
|
e.special.push(spe);
|
||||||
|
}
|
||||||
|
// 如果是自身,就不进行特殊属性数值处理了
|
||||||
|
if (e === this.info) return;
|
||||||
|
// 然后计算特殊属性数值
|
||||||
|
for (const spec of s) {
|
||||||
|
const toChange = specialValue.get(spec);
|
||||||
|
if (!toChange) continue;
|
||||||
|
for (const key of toChange) {
|
||||||
|
// 这种光环应该获取怪物的原始数值,而不是真实数值
|
||||||
|
if (enemy.enemy.specialMultiply) {
|
||||||
|
e[key] ??= 1;
|
||||||
|
e[key] *= enemy[key] ?? 1;
|
||||||
|
} else {
|
||||||
|
e[key] ??= 0;
|
||||||
|
e[key] += enemy[key] ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// true表示递归计算,视为第一类光环
|
||||||
|
true
|
||||||
|
);
|
||||||
|
col.haloList.push({
|
||||||
|
type: 'square',
|
||||||
|
data: { x: this.x, y: this.y, d },
|
||||||
|
special: 29,
|
||||||
|
from: this
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -504,14 +594,14 @@ export class DamageEnemy<T extends EnemyIds = EnemyIds> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
col.applyHalo('square', { x: this.x, y: this.y, d: 7 }, square7);
|
col.applyHalo('square', { x: this.x, y: this.y, d: 7 }, this, square7);
|
||||||
col.applyHalo('square', { x: this.x, y: this.y, d: 5 }, square5);
|
col.applyHalo('square', { x: this.x, y: this.y, d: 5 }, this, square5);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 接受其他怪的光环
|
* 接受其他怪的光环
|
||||||
*/
|
*/
|
||||||
injectHalo(halo: HaloFn, enemy: Enemy) {
|
injectHalo(halo: HaloFn, enemy: EnemyInfo) {
|
||||||
halo(this.info, enemy);
|
halo(this.info, enemy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
import { getHeroStatusOn } from '@/game/hero';
|
import { getHeroStatusOn } from '@/game/hero';
|
||||||
|
import { EnemyInfo } from './damage';
|
||||||
|
|
||||||
export interface SpecialDeclaration {
|
export interface SpecialDeclaration {
|
||||||
code: number;
|
code: number;
|
||||||
name: string | ((enemy: Enemy) => string);
|
name: string | ((enemy: EnemyInfo) => string);
|
||||||
desc: string | ((enemy: Enemy) => string);
|
desc: string | ((enemy: EnemyInfo) => string);
|
||||||
color: string;
|
color: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const fromFunc = (func: string | ((enemy: Enemy) => string), enemy: Enemy) => {
|
const fromFunc = (
|
||||||
|
func: string | ((enemy: EnemyInfo) => string),
|
||||||
|
enemy: EnemyInfo
|
||||||
|
) => {
|
||||||
return typeof func === 'string' ? func : func(enemy);
|
return typeof func === 'string' ? func : func(enemy);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -209,18 +213,24 @@ export const specials: SpecialDeclaration[] = [
|
|||||||
code: 29,
|
code: 29,
|
||||||
name: '杀戮光环',
|
name: '杀戮光环',
|
||||||
desc: enemy => {
|
desc: enemy => {
|
||||||
const special = enemy.special;
|
let content = '';
|
||||||
let str = '<div style="margin-left: 10px">';
|
enemy.specialHalo?.forEach((v, i) => {
|
||||||
|
content +=
|
||||||
special.forEach(v => {
|
' '.repeat(8) +
|
||||||
const { name, desc, color } = specials[v];
|
`${i + 1}. <span style="color: ${
|
||||||
str += `<span style="color:${color}">${fromFunc(
|
specials[v].color
|
||||||
name,
|
}">${fromFunc(specials[v].name, enemy)}</span>: ${fromFunc(
|
||||||
enemy
|
specials[v].desc,
|
||||||
)}</span><span>${fromFunc(desc, enemy)}</span>`;
|
enemy
|
||||||
|
)}<br />`;
|
||||||
});
|
});
|
||||||
|
return (
|
||||||
return str;
|
`怪物周围九宫格${enemy.haloRange}格范围内所有怪物获得以下特殊属性(包括自身),` +
|
||||||
|
`特殊属性数值间为${
|
||||||
|
enemy.specialMultiply ? '相乘' : '相加'
|
||||||
|
}关系:<br />` +
|
||||||
|
content
|
||||||
|
);
|
||||||
},
|
},
|
||||||
color: '#F721F7'
|
color: '#F721F7'
|
||||||
}
|
}
|
||||||
|
@ -28,8 +28,6 @@ export function init() {
|
|||||||
Mota.rewrite(core.events, 'afterBattle', 'add', (_, enemy, x, y) => {
|
Mota.rewrite(core.events, 'afterBattle', 'add', (_, enemy, x, y) => {
|
||||||
// 打怪特效
|
// 打怪特效
|
||||||
const setting = Mota.require('var', 'mainSetting');
|
const setting = Mota.require('var', 'mainSetting');
|
||||||
console.log(setting.getValue('fx.frag'));
|
|
||||||
|
|
||||||
if (setting.getValue('fx.frag') && has(x) && has(y)) {
|
if (setting.getValue('fx.frag') && has(x) && has(y)) {
|
||||||
const frame = core.status.globalAnimateStatus % 2;
|
const frame = core.status.globalAnimateStatus % 2;
|
||||||
const canvas = document.createElement('canvas');
|
const canvas = document.createElement('canvas');
|
||||||
|
@ -2,7 +2,8 @@ const haloColor: Record<number, string[]> = {
|
|||||||
21: ['cyan'],
|
21: ['cyan'],
|
||||||
25: ['purple'],
|
25: ['purple'],
|
||||||
26: ['blue'],
|
26: ['blue'],
|
||||||
27: ['red']
|
27: ['red'],
|
||||||
|
29: ['#BD0D0D']
|
||||||
};
|
};
|
||||||
|
|
||||||
export function drawHalo(
|
export function drawHalo(
|
||||||
|
@ -20,7 +20,7 @@ export function init() {
|
|||||||
ensureFloorDamage(floorId);
|
ensureFloorDamage(floorId);
|
||||||
|
|
||||||
floor.enemy.extract();
|
floor.enemy.extract();
|
||||||
floor.enemy.calDamage(true);
|
floor.enemy.calRealAttribute();
|
||||||
floor.enemy.calMapDamage();
|
floor.enemy.calMapDamage();
|
||||||
core.status.damage.data = [];
|
core.status.damage.data = [];
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { getDamageColor } from '../utils';
|
import { getDamageColor } from '../utils';
|
||||||
import { ToShowEnemy } from './book';
|
import { ToShowEnemy } from './book';
|
||||||
import type { DamageEnemy } from '../../game/enemy/damage';
|
import type { DamageEnemy, EnemyInfo } from '../../game/enemy/damage';
|
||||||
import { isMobile } from '../use';
|
import { isMobile } from '../use';
|
||||||
|
|
||||||
export function getLocFromMouseLoc(x: number, y: number): LocArr {
|
export function getLocFromMouseLoc(x: number, y: number): LocArr {
|
||||||
@ -23,19 +23,21 @@ export function getDetailedEnemy(
|
|||||||
const damage = core.formatBigNumber(dam);
|
const damage = core.formatBigNumber(dam);
|
||||||
|
|
||||||
const fromFunc = (
|
const fromFunc = (
|
||||||
func: string | ((enemy: Enemy) => string),
|
func: string | ((enemy: EnemyInfo) => string),
|
||||||
enemy: Enemy
|
enemy: EnemyInfo
|
||||||
) => {
|
) => {
|
||||||
return typeof func === 'string' ? func : func(enemy);
|
return typeof func === 'string' ? func : func(enemy);
|
||||||
};
|
};
|
||||||
const special: [string, string, string][] = enemy.enemy.special.map(vv => {
|
const special: [string, string, string][] = enemy.info.special
|
||||||
const s = Mota.require('var', 'enemySpecials')[vv];
|
.filter(v => !enemy.info.specialHalo?.includes(v))
|
||||||
return [
|
.map(vv => {
|
||||||
fromFunc(s.name, enemy.enemy),
|
const s = Mota.require('var', 'enemySpecials')[vv];
|
||||||
fromFunc(s.desc, enemy.enemy),
|
return [
|
||||||
s.color as string
|
fromFunc(s.name, enemy.info),
|
||||||
];
|
fromFunc(s.desc, enemy.info),
|
||||||
});
|
s.color as string
|
||||||
|
];
|
||||||
|
});
|
||||||
const l = isMobile ? 1 : 2;
|
const l = isMobile ? 1 : 2;
|
||||||
const showSpecial =
|
const showSpecial =
|
||||||
special.length > l
|
special.length > l
|
||||||
|
7
src/source/cls.d.ts
vendored
7
src/source/cls.d.ts
vendored
@ -582,6 +582,13 @@ interface IdToCls {
|
|||||||
T652: 'terrains';
|
T652: 'terrains';
|
||||||
T653: 'terrains';
|
T653: 'terrains';
|
||||||
T654: 'terrains';
|
T654: 'terrains';
|
||||||
|
T655: 'terrains';
|
||||||
|
E656: 'enemys';
|
||||||
|
E657: 'enemys';
|
||||||
|
E658: 'enemys';
|
||||||
|
E659: 'enemys';
|
||||||
|
T660: 'terrains';
|
||||||
|
T661: 'terrains';
|
||||||
X20032: 'tileset';
|
X20032: 'tileset';
|
||||||
X20033: 'tileset';
|
X20033: 'tileset';
|
||||||
X20034: 'tileset';
|
X20034: 'tileset';
|
||||||
|
14
src/source/maps.d.ts
vendored
14
src/source/maps.d.ts
vendored
@ -582,6 +582,13 @@ interface IdToNumber {
|
|||||||
T652: 652;
|
T652: 652;
|
||||||
T653: 653;
|
T653: 653;
|
||||||
T654: 654;
|
T654: 654;
|
||||||
|
T655: 655;
|
||||||
|
E656: 656;
|
||||||
|
E657: 657;
|
||||||
|
E658: 658;
|
||||||
|
E659: 659;
|
||||||
|
T660: 660;
|
||||||
|
T661: 661;
|
||||||
X20032: 20032;
|
X20032: 20032;
|
||||||
X20033: 20033;
|
X20033: 20033;
|
||||||
X20034: 20034;
|
X20034: 20034;
|
||||||
@ -1249,6 +1256,13 @@ interface NumberToId {
|
|||||||
652: 'T652';
|
652: 'T652';
|
||||||
653: 'T653';
|
653: 'T653';
|
||||||
654: 'T654';
|
654: 'T654';
|
||||||
|
655: 'T655';
|
||||||
|
656: 'E656';
|
||||||
|
657: 'E657';
|
||||||
|
658: 'E658';
|
||||||
|
659: 'E659';
|
||||||
|
660: 'T660';
|
||||||
|
661: 'T661';
|
||||||
20032: 'X20032';
|
20032: 'X20032';
|
||||||
20033: 'X20033';
|
20033: 'X20033';
|
||||||
20034: 'X20034';
|
20034: 'X20034';
|
||||||
|
7
src/types/enemy.d.ts
vendored
7
src/types/enemy.d.ts
vendored
@ -36,7 +36,8 @@ type BooleanEnemyProperty =
|
|||||||
| 'haloSquare'
|
| 'haloSquare'
|
||||||
| 'notBomb'
|
| 'notBomb'
|
||||||
| 'add'
|
| 'add'
|
||||||
| 'haloAdd';
|
| 'haloAdd'
|
||||||
|
| 'specialMultiply';
|
||||||
|
|
||||||
type DetailedEnemy<I extends EnemyIds = EnemyIds> = {
|
type DetailedEnemy<I extends EnemyIds = EnemyIds> = {
|
||||||
specialText: string[];
|
specialText: string[];
|
||||||
@ -85,10 +86,12 @@ type Enemy<I extends EnemyIds = EnemyIds> = {
|
|||||||
* 战后事件
|
* 战后事件
|
||||||
*/
|
*/
|
||||||
afterBattle: MotaEvent;
|
afterBattle: MotaEvent;
|
||||||
|
|
||||||
|
specialHalo?: number[];
|
||||||
} & {
|
} & {
|
||||||
[P in PartialNumbericEnemyProperty]?: number;
|
[P in PartialNumbericEnemyProperty]?: number;
|
||||||
} & {
|
} & {
|
||||||
[P in BooleanEnemyProperty]: boolean;
|
[P in BooleanEnemyProperty]?: boolean;
|
||||||
} & EnemyInfoBase;
|
} & EnemyInfoBase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -68,8 +68,8 @@ const detail = ((): [number, string, string][] => {
|
|||||||
[enemy.enemy.money, '金币', 'lightyellow'],
|
[enemy.enemy.money, '金币', 'lightyellow'],
|
||||||
[enemy.enemy.exp, '经验', 'lawgreen'],
|
[enemy.enemy.exp, '经验', 'lawgreen'],
|
||||||
[data?.atkDelta ?? 0, '临界', 'lightsalmon'],
|
[data?.atkDelta ?? 0, '临界', 'lightsalmon'],
|
||||||
[data?.delta ?? 0, '临界减伤', 'lightpink'],
|
[-data?.delta ?? 0, '临界减伤', 'lightpink'],
|
||||||
[enemy.calDefDamage(ratio).delta, `${ratio}防`, 'cyan']
|
[-enemy.calDefDamage(ratio).delta, `${ratio}防`, 'cyan']
|
||||||
];
|
];
|
||||||
})();
|
})();
|
||||||
const special = (() => {
|
const special = (() => {
|
||||||
|
Loading…
Reference in New Issue
Block a user