diff --git a/.prettierignore b/.prettierignore index 38d01af..d7dd646 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,6 +6,7 @@ public/project/items.js public/project/floors/*.js public/project/maps.js public/project/icons.js +public/project/enemys.js public/_server/**/*.js script/**/*.js public/editor.html diff --git a/public/_server/table/comment.js b/public/_server/table/comment.js index 3d5a2e8..a2e36f0 100644 --- a/public/_server/table/comment.js +++ b/public/_server/table/comment.js @@ -303,6 +303,12 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "_docs": "同化范围", "_data": "同化范围" }, + "horn": { + "_leaf": true, + "_type": "textarea", + "_docs": "战争号角", + "_data": "战争号角" + }, "specialHalo": { "_leaf": true, "_type": "popCheckboxSet", diff --git a/public/project/data.js b/public/project/data.js index d432f77..436108d 100644 --- a/public/project/data.js +++ b/public/project/data.js @@ -104,7 +104,11 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "MT90", "MT91", "MT92", - "MT93" + "MT93", + "MT94", + "MT95", + "MT96", + "MT97" ], "floorPartitions": [ [ diff --git a/public/project/enemys.js b/public/project/enemys.js index 9dad46c..f0409a3 100644 --- a/public/project/enemys.js +++ b/public/project/enemys.js @@ -155,7 +155,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "E603": {"name":"极昼蝠","hp":8000,"atk":1750,"def":1000,"money":1,"exp":65,"point":0,"special":[23],"day":100}, "E605": {"name":"乾坤之卫","hp":30000,"atk":7500,"def":2000,"money":4,"exp":300,"point":0,"special":[30],"translation":[2,2]}, "E606": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E607": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "E607": {"name":"呐喊之魂","hp":40000,"atk":20000,"def":4000,"money":8,"exp":800,"point":0,"special":[29,30],"specialHalo":[27],"haloRange":3,"iceCore":null,"fireCore":10,"translation":[1,0]}, "E608": {"name":"寒冰护卫","hp":20000,"atk":2750,"def":2000,"money":3,"exp":225,"point":0,"special":[]}, "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}, @@ -179,12 +179,12 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "E666": {"name":"苍蓝之灵-视","hp":150000,"atk":8000,"def":2000,"money":10,"exp":2500,"point":0,"special":[29],"n":5,"specialHalo":[4],"haloRange":5}, "E667": {"name":"苍之蓝","hp":50000,"atk":6000,"def":2000,"money":5,"exp":500,"point":0,"special":[29],"together":25,"specialHalo":[8],"haloRange":3}, "E668": {"name":"冰封护卫","hp":30000,"atk":7000,"def":2500,"money":5,"exp":550,"point":0,"special":[29],"specialHalo":[26],"iceCore":15,"haloRange":3}, - "E669": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "E669": {"name":"苍蓝禁卫","hp":75000,"atk":16000,"def":8000,"money":10,"exp":1000,"point":0,"special":[33],"horn":[5,1,1]}, "E670": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "E671": {"name":"圣殿骑士","hp":60000,"atk":12000,"def":4000,"money":7,"exp":750,"point":0,"special":[1],"crit":300}, "E672": {"name":"坚固骑士","hp":7500,"atk":10000,"def":0,"money":8,"exp":800,"point":0,"special":[29],"specialHalo":[3],"haloRange":2}, "E673": {"name":"苍蓝之灵-域","hp":250000,"atk":12000,"def":3000,"money":10,"exp":2500,"point":0,"special":[]}, - "E674": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "E674": {"name":"进攻亡灵","hp":80000,"atk":14000,"def":5000,"money":7,"exp":700,"point":0,"special":[29,30],"specialHalo":[12],"haloRange":3,"translation":[0,-1]}, "E675": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "E676": {"name":"冲锋骷髅","hp":50000,"atk":8000,"def":4000,"money":6,"exp":500,"point":0,"special":[12]}, "E677": {"name":"骷髅巫师","hp":150000,"atk":2000,"def":5000,"money":5,"exp":600,"point":0,"special":[13],"crit":null}, @@ -195,7 +195,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "E682": {"name":"苍蓝聚形","hp":25000,"atk":7000,"def":4000,"money":5,"exp":400,"point":0,"special":[8],"together":20}, "E683": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "E684": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E685": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "E685": {"name":"守卫队长","hp":100000,"atk":14000,"def":4000,"money":10,"exp":1000,"point":0,"special":[28,29],"specialHalo":[32],"paleShield":20,"haloRange":3,"assimilateRange":2}, "E686": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "E687": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "E688": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, @@ -203,5 +203,13 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = "E690": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "E691": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "E692": {"name":"苍蓝之灵-圣","hp":150000,"atk":15000,"def":5000,"money":20,"exp":5000,"point":0,"special":[4,28],"paleShield":25}, - "E693": {"name":"苍蓝之灵-战","hp":250000,"atk":25000,"def":6000,"money":20,"exp":5000,"point":0,"special":[32],"assimilateRange":6} + "E693": {"name":"苍蓝之灵-战","hp":250000,"atk":25000,"def":6000,"money":20,"exp":5000,"point":0,"special":[32],"assimilateRange":6}, + "E698": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "E699": {"name":"苍蓝朝拜者","hp":80000,"atk":12000,"def":6000,"money":9,"exp":900,"point":0,"special":[1,30],"crit":400,"translation":[0,1]}, + "E700": {"name":"亡语之魂","hp":75000,"atk":10000,"def":9000,"money":8,"exp":800,"point":0,"special":[29,30],"haloRange":3,"specialHalo":[25],"melt":15,"translation":[-1,0]}, + "E701": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "E702": {"name":"防守之魂","hp":10000,"atk":12000,"def":4000,"money":0,"exp":0,"point":0,"special":[3,29,30],"specialHalo":[26],"iceCore":10,"translation":[1,0],"haloRange":3}, + "E703": {"name":"新敌人","hp":40000,"atk":16000,"def":6000,"money":8,"exp":800,"point":0,"special":[29,30],"specialHalo":[27],"haloRange":3,"iceCore":null,"fireCore":10,"translation":[1,0],"displayIdInBook":null}, + "E704": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "E705": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]} } \ No newline at end of file diff --git a/public/project/floors/MT72.js b/public/project/floors/MT72.js index 273c0af..d642ec2 100644 --- a/public/project/floors/MT72.js +++ b/public/project/floors/MT72.js @@ -35,6 +35,13 @@ main.floors.MT72= 7, 14 ] + }, + "7,7": { + "floorId": "MT94", + "loc": [ + 7, + 7 + ] } }, "beforeBattle": {}, diff --git a/public/project/floors/MT94.js b/public/project/floors/MT94.js new file mode 100644 index 0000000..1ebdb8a --- /dev/null +++ b/public/project/floors/MT94.js @@ -0,0 +1,73 @@ +main.floors.MT94= +{ + "floorId": "MT94", + "title": "苍蓝之殿-中", + "name": "94", + "width": 15, + "height": 15, + "canFlyTo": true, + "canFlyFrom": true, + "canUseQuickShop": true, + "cannotViewMap": false, + "images": [], + "ratio": 8, + "defaultGround": "T650", + "bgm": "palaceNorth.mp3", + "firstArrive": [], + "eachArrive": [], + "parallelDo": "", + "events": { + "7,2": [ + "这里是漏怪检测,会检测\r[gold]第二章所有\r[]区域是否有遗漏怪物", + { + "type": "function", + "function": "function(){\nconst enemy = Mota.Plugin.require('remainEnemy_g').getRemainEnemyString(core.floorIds.slice(40, 107));\nif (enemy.length === 0) {\n\tcore.insertAction(['当前无剩余怪物!', { \"type\": \"hide\", \"remove\": true }, ]);\n} else {\n\tcore.insertAction(enemy);\n}\n}" + } + ] + }, + "changeFloor": { + "7,7": { + "floorId": "MT72", + "loc": [ + 7, + 7 + ] + } + }, + "beforeBattle": {}, + "afterBattle": {}, + "afterGetItem": {}, + "afterOpenDoor": {}, + "autoEvent": {}, + "cannotMove": {}, + "cannotMoveIn": {}, + "map": [ + [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], + [648, 0, 0, 0, 0,648,466,468,467,648, 0, 0, 0, 0,648], + [648, 0,648,648,648,648,648,516,648,648, 0, 0,648, 0,648], + [648, 0, 0, 0, 0, 0, 0, 0, 0,648,648,648,648, 0,648], + [648,648,648,648, 0,648, 0, 0, 0, 0, 0, 0,648, 0,648], + [648, 0, 0,648, 0,648,648, 0,648,648, 0, 0,648, 0,648], + [648, 0,648,648, 0,648,487, 0,487,648, 0,648,648, 0,648], + [ 92, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 94], + [648, 0,648,648,648,648,487, 0,487,648, 0,648,648,648,648], + [648, 0, 0, 0, 0,648,648, 0,648,648, 0, 0, 0, 0,648], + [648,648,648,648, 0,648, 0, 0, 0,648,648,648,648, 0,648], + [648, 0, 0, 0, 0,648, 0,648, 0, 0, 0, 0,648, 0,648], + [648, 0,648,648,648,648, 0,648,648,648, 0,648,648, 0,648], + [648, 0, 0, 0, 0, 0, 0, 0, 0,648, 0, 0, 0, 0,648], + [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] +], + "bgmap": [ + +], + "fgmap": [ + +], + "bg2map": [ + +], + "fg2map": [ + +] +} \ No newline at end of file diff --git a/public/project/floors/MT95.js b/public/project/floors/MT95.js new file mode 100644 index 0000000..dee9edc --- /dev/null +++ b/public/project/floors/MT95.js @@ -0,0 +1,45 @@ +main.floors.MT95= +{ +"floorId": "MT95", +"title": "苍蓝之殿-中", +"name": "95", +"width": 15, +"height": 15, +"canFlyTo": true, +"canFlyFrom": true, +"canUseQuickShop": true, +"cannotViewMap": false, +"images": [], +"ratio": 8, +"defaultGround": "T650", +"bgm": "palaceNorth.mp3", +"firstArrive": [], +"eachArrive": [], +"parallelDo": "", +"events": {}, +"changeFloor": {}, +"beforeBattle": {}, +"afterBattle": {}, +"afterGetItem": {}, +"afterOpenDoor": {}, +"autoEvent": {}, +"cannotMove": {}, +"cannotMoveIn": {}, +"map": [ + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +], +} \ No newline at end of file diff --git a/public/project/floors/MT96.js b/public/project/floors/MT96.js new file mode 100644 index 0000000..2d87837 --- /dev/null +++ b/public/project/floors/MT96.js @@ -0,0 +1,45 @@ +main.floors.MT96= +{ +"floorId": "MT96", +"title": "苍蓝之殿-中", +"name": "96", +"width": 15, +"height": 15, +"canFlyTo": true, +"canFlyFrom": true, +"canUseQuickShop": true, +"cannotViewMap": false, +"images": [], +"ratio": 8, +"defaultGround": "T650", +"bgm": "palaceNorth.mp3", +"firstArrive": [], +"eachArrive": [], +"parallelDo": "", +"events": {}, +"changeFloor": {}, +"beforeBattle": {}, +"afterBattle": {}, +"afterGetItem": {}, +"afterOpenDoor": {}, +"autoEvent": {}, +"cannotMove": {}, +"cannotMoveIn": {}, +"map": [ + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +], +} \ No newline at end of file diff --git a/public/project/floors/MT97.js b/public/project/floors/MT97.js new file mode 100644 index 0000000..d3f926e --- /dev/null +++ b/public/project/floors/MT97.js @@ -0,0 +1,45 @@ +main.floors.MT97= +{ +"floorId": "MT97", +"title": "苍蓝之殿-中", +"name": "97", +"width": 15, +"height": 15, +"canFlyTo": true, +"canFlyFrom": true, +"canUseQuickShop": true, +"cannotViewMap": false, +"images": [], +"ratio": 8, +"defaultGround": "T650", +"bgm": "palaceNorth.mp3", +"firstArrive": [], +"eachArrive": [], +"parallelDo": "", +"events": {}, +"changeFloor": {}, +"beforeBattle": {}, +"afterBattle": {}, +"afterGetItem": {}, +"afterOpenDoor": {}, +"autoEvent": {}, +"cannotMove": {}, +"cannotMoveIn": {}, +"map": [ + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +], +} \ No newline at end of file diff --git a/public/project/icons.js b/public/project/icons.js index a39dc0e..c840cd2 100644 --- a/public/project/icons.js +++ b/public/project/icons.js @@ -451,7 +451,15 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "E690": 196, "E691": 197, "E692": 198, - "E693": 199 + "E693": 199, + "E698": 200, + "E699": 201, + "E700": 202, + "E701": 203, + "E702": 204, + "E703": 205, + "E704": 206, + "E705": 207 }, "enemy48": { "angel": 0, diff --git a/public/project/maps.js b/public/project/maps.js index 2a6239d..037ffa3 100644 --- a/public/project/maps.js +++ b/public/project/maps.js @@ -626,6 +626,14 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "695": {"cls":"items","id":"I695"}, "696": {"cls":"items","id":"I696"}, "697": {"cls":"items","id":"I697"}, + "698": {"cls":"enemys","id":"E698"}, + "699": {"cls":"enemys","id":"E699"}, + "700": {"cls":"enemys","id":"E700"}, + "701": {"cls":"enemys","id":"E701"}, + "702": {"cls":"enemys","id":"E702"}, + "703": {"cls":"enemys","id":"E703"}, + "704": {"cls":"enemys","id":"E704"}, + "705": {"cls":"enemys","id":"E705"}, "20032": {"cls":"tileset","id":"X20032","cannotOut":["up","left"],"cannotIn":["up","left"]}, "20033": {"cls":"tileset","id":"X20033","cannotOut":["up"],"cannotIn":["up"]}, "20034": {"cls":"tileset","id":"X20034","cannotOut":["up","right"],"cannotIn":["up","right"]}, diff --git a/public/project/materials/enemys.png b/public/project/materials/enemys.png index 4c5417b..a1e0f09 100644 Binary files a/public/project/materials/enemys.png and b/public/project/materials/enemys.png differ diff --git a/src/core/fx/shadow.ts b/src/core/fx/shadow.ts index 985504b..6b62b4d 100644 --- a/src/core/fx/shadow.ts +++ b/src/core/fx/shadow.ts @@ -77,7 +77,7 @@ const hook = Mota.require('var', 'hook'); hook.once('reset', () => { Shadow.init(); addLightFromBlock( - core.floorIds.slice(61, 70).concat(core.floorIds.slice(72, 81)).concat(core.floorIds.slice(85, 103)), + core.floorIds.slice(61, 70).concat(core.floorIds.slice(72, 81)).concat(core.floorIds.slice(85, 107)), 103, { decay: 50, r: 300, color: [0.9333, 0.6, 0.333, 0.3] }, { background: [0, 0, 0, 0.2] }, @@ -89,48 +89,12 @@ hook.once('reset', () => { { decay: 20, r: 150, color: [0.9333, 0.6, 0.333, 0.3], noShelter: true }, { background: [0, 0, 0, 0.3] } ); - // Shadow.mount(); - - // 勇士身上的光源 - // Mota.rewrite(core.control, 'drawHero', 'add', () => { - // if (core.getFlag('__heroOpacity__') !== 0) { - // const shadow = Shadow.now(); - // if (shadow) { - // shadow.followHero.forEach(v => { - // shadow.modifyLight(v, { - // x: core.status.heroCenter.px, - // y: core.status.heroCenter.py + 8 - // }); - // }); - // if (shadow.followHero.size > 0) shadow.requestRefresh(); - // } - // } - // }); - // 更新地形数据 - // Mota.rewrite(core.maps, 'removeBlock', 'add', success => { - // if (success && !main.replayChecking) { - // Shadow.update(true); - // } - // return success; - // }); - // Mota.rewrite(core.maps, 'setBlock', 'add', () => { - // if (!main.replayChecking) { - // Shadow.update(true); - // } - // }); Mota.rewrite(core.control, 'loadData', 'add', () => { if (!main.replayChecking) { Shadow.update(true); LayerShadowExtends.shadowList.forEach(v => v.update()); } }); - // Mota.require('var', 'hook').on('changingFloor', (floorId) => { - // if (!main.replayChecking) { - // Shadow.clearBuffer(); - // Shadow.update(); - // setCanvasFilterByFloorId(floorId); - // } - // }) }); hook.on('reset', () => { Shadow.update(true); @@ -1015,7 +979,6 @@ export class Shadow { */ static clearBuffer() { const gl = this.gl; - const canvas = this.canvas; gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer.depth.position); gl.bufferData(gl.ARRAY_BUFFER, 0, gl.STATIC_DRAW); @@ -1037,11 +1000,6 @@ export class Shadow { static update(nocache: boolean = false) { const floor = core.status.floorId; this.map[floor]?.requestRefresh(nocache); - if (!this.map[floor]) { - this.canvas.style.display = 'none'; - } else { - this.canvas.style.display = 'block'; - } } static now() { @@ -1348,8 +1306,10 @@ export class LayerShadowExtends implements ILayerRenderExtends { this.sprite = new Sprite('static', false); this.sprite.setHD(true); this.sprite.size(layer.width, layer.height); - this.sprite.setRenderFn((canvas, transform) => { - canvas.ctx.drawImage(Shadow.canvas, 0, 0, layer.width, layer.height); + this.sprite.setRenderFn((canvas, transform) => { + if (Shadow.map[core.status.floorId]) { + canvas.ctx.drawImage(Shadow.canvas, 0, 0, layer.width, layer.height); + } }); layer.appendChild(this.sprite); diff --git a/src/core/render/preset/damage.ts b/src/core/render/preset/damage.ts index d54ecdf..d73e959 100644 --- a/src/core/render/preset/damage.ts +++ b/src/core/render/preset/damage.ts @@ -365,6 +365,18 @@ export class Damage extends Sprite { }; block.add(dam4); } + if (enemy.col && real.special.has(33)) { + const dam5: DamageRenderable = { + align: 'right', + baseline: 'top', + text: enemy.col.list.size.toString(), + color: '#fff866', + x: x * this.cellSize + this.cellSize - 1, + y: y * this.cellSize + 2, + strokeWidth: 3 + }; + block.add(dam5); + } } /** diff --git a/src/game/enemy/damage.ts b/src/game/enemy/damage.ts index 063fda8..7051161 100644 --- a/src/game/enemy/damage.ts +++ b/src/game/enemy/damage.ts @@ -74,7 +74,7 @@ export const haloSpecials: Set = new Set([ ]); /** 不可被同化的属性 */ export const unassimilatable: Set = new Set(haloSpecials); -unassimilatable.add(8).add(30); +unassimilatable.add(8).add(30).add(33); /** 特殊属性对应 */ export const specialValue: Map[]> = new Map(); @@ -95,7 +95,8 @@ specialValue .set(26, ['iceCore']) .set(27, ['fireCore']) .set(28, ['paleShield']) - .set(31, ['hpHalo']); + .set(31, ['hpHalo']) + .set(32, ['assimilateRange']); interface EnemyCollectionEvent { extract: []; @@ -365,6 +366,14 @@ export class DamageEnemy { // 此时已经inject光环,因此直接计算真实属性 const info = this.info; + if (info.special.has(33)) { + const count = this.col?.list.size ?? 0; + const [hp, atk, def] = this.enemy.horn ?? [0, 0, 0]; + info.hpBuff_ += hp * count; + info.atkBuff_ += atk * count; + info.defBuff_ += def * count; + } + info.atk = Math.floor(info.atk * (info.atkBuff_ / 100 + 1)); info.def = Math.floor(info.def * (info.defBuff_ / 100 + 1)); info.hp = Math.floor(info.hp * (info.hpBuff_ / 100 + 1)); diff --git a/src/game/enemy/special.ts b/src/game/enemy/special.ts index d31feca..d52627c 100644 --- a/src/game/enemy/special.ts +++ b/src/game/enemy/special.ts @@ -262,5 +262,19 @@ export const specials: SpecialDeclaration[] = [ `怪物会获得自身周围方形${enemy.assimilateRange}格范围内怪物的特殊属性(光环类属性除外),` + `特殊属性数值间为${enemy.specialMultiply ? '乘算' : '加算'}关系`, color: '#ffd366' + }, + { + code: 33, + name: '战争号角', + desc: enemy => { + const [hp, atk, def] = enemy.horn ?? []; + let str = '地图上每存在一个怪物(包括自身),自身'; + if (hp) str += `生命值增加${hp}%,`; + if (atk) str += `攻击增加${atk}%,`; + if (def) str += `防御增加${def}%,`; + str += '线性叠加'; + return str; + }, + color: '#fff866' } ]; diff --git a/src/plugin/fx/gameCanvas.ts b/src/plugin/fx/gameCanvas.ts index 8e1ae48..71837ea 100644 --- a/src/plugin/fx/gameCanvas.ts +++ b/src/plugin/fx/gameCanvas.ts @@ -13,9 +13,9 @@ function getCanvasFilterByFloorId(floorId: FloorIds = core.status.floorId) { Mota.require('var', 'loading').once('coreInit', () => { filterMap.push( - [['MT50', 'MT60', 'MT61'], 'brightness(80%)contrast(120%)'], // 童心佬的滤镜( + [['MT50', 'MT60', 'MT61'], 'contrast(120%)'], // 童心佬的滤镜( [ - core.floorIds.slice(61, 70).concat(core.floorIds.slice(72)), + core.floorIds.slice(61, 70).concat(core.floorIds.slice(72, 107)), 'contrast(120%)' ] // 童心佬的滤镜( ); diff --git a/src/source/cls.d.ts b/src/source/cls.d.ts index 3fb1080..2765531 100644 --- a/src/source/cls.d.ts +++ b/src/source/cls.d.ts @@ -625,6 +625,14 @@ interface IdToCls { I695: 'items'; I696: 'items'; I697: 'items'; + E698: 'enemys'; + E699: 'enemys'; + E700: 'enemys'; + E701: 'enemys'; + E702: 'enemys'; + E703: 'enemys'; + E704: 'enemys'; + E705: 'enemys'; X20032: 'tileset'; X20033: 'tileset'; X20034: 'tileset'; diff --git a/src/source/data.d.ts b/src/source/data.d.ts index c31d280..810ffc5 100644 --- a/src/source/data.d.ts +++ b/src/source/data.d.ts @@ -103,6 +103,10 @@ type FloorIds = | 'MT91' | 'MT92' | 'MT93' + | 'MT94' + | 'MT95' + | 'MT96' + | 'MT97' type ImageIds = | 'IQ.png' diff --git a/src/source/maps.d.ts b/src/source/maps.d.ts index 6cac3ac..f65fc26 100644 --- a/src/source/maps.d.ts +++ b/src/source/maps.d.ts @@ -625,6 +625,14 @@ interface IdToNumber { I695: 695; I696: 696; I697: 697; + E698: 698; + E699: 699; + E700: 700; + E701: 701; + E702: 702; + E703: 703; + E704: 704; + E705: 705; X20032: 20032; X20033: 20033; X20034: 20034; @@ -1335,6 +1343,14 @@ interface NumberToId { 695: 'I695'; 696: 'I696'; 697: 'I697'; + 698: 'E698'; + 699: 'E699'; + 700: 'E700'; + 701: 'E701'; + 702: 'E702'; + 703: 'E703'; + 704: 'E704'; + 705: 'E705'; 20032: 'X20032'; 20033: 'X20033'; 20034: 'X20034'; diff --git a/src/types/enemy.d.ts b/src/types/enemy.d.ts index 0291243..64df847 100644 --- a/src/types/enemy.d.ts +++ b/src/types/enemy.d.ts @@ -91,6 +91,8 @@ type Enemy = { specialHalo?: number[]; translation?: [number, number]; + /** 战争号角 */ + horn?: [number, number, number]; /** 大怪物绑定贴图 */ bigImage?: ImageIds;