第二章二区准备
@ -237,6 +237,30 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
|
||||
"_docs": "饥渴",
|
||||
"_data": "饥渴"
|
||||
},
|
||||
"ice": {
|
||||
"_leaf": true,
|
||||
"_type": "textarea",
|
||||
"_docs": "霜冻",
|
||||
"_data": "霜冻"
|
||||
},
|
||||
"iceHalo": {
|
||||
"_leaf": true,
|
||||
"_type": "textarea",
|
||||
"_docs": "冰封光环",
|
||||
"_data": "冰封光环"
|
||||
},
|
||||
"night": {
|
||||
"_leaf": true,
|
||||
"_type": "textarea",
|
||||
"_docs": "永夜",
|
||||
"_data": "永夜"
|
||||
},
|
||||
"day": {
|
||||
"_leaf": true,
|
||||
"_type": "textarea",
|
||||
"_docs": "极昼",
|
||||
"_data": "极昼"
|
||||
},
|
||||
"value": {
|
||||
"_leaf": true,
|
||||
"_type": "textarea",
|
||||
|
@ -1705,6 +1705,7 @@ control.prototype.drawDamage = function (ctx) {
|
||||
|
||||
control.prototype._drawDamage_draw = function (ctx, onMap) {
|
||||
if (!core.hasItem('book')) return;
|
||||
core.drawHalo(ctx, onMap);
|
||||
|
||||
core.setFont(ctx, "14px 'normal'");
|
||||
core.setTextAlign(ctx, 'left');
|
||||
|
BIN
public/project/autotiles/autotile10.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
public/project/autotiles/autotile8.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
public/project/autotiles/autotile9.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/project/bgms/palaceNorth.mp3
Normal file
BIN
public/project/bgms/palaceSouth.mp3
Normal file
BIN
public/project/bgms/winterTown.mp3
Normal file
@ -40,7 +40,21 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
"MT28",
|
||||
"MT29",
|
||||
"MT30",
|
||||
"MT31"
|
||||
"MT31",
|
||||
"MT32",
|
||||
"MT33",
|
||||
"MT34",
|
||||
"MT35",
|
||||
"MT36",
|
||||
"MT37",
|
||||
"MT38",
|
||||
"MT39",
|
||||
"MT40",
|
||||
"MT41",
|
||||
"MT42",
|
||||
"MT43",
|
||||
"MT44",
|
||||
"MT45"
|
||||
],
|
||||
"floorPartitions": [
|
||||
[
|
||||
@ -94,7 +108,8 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
"004-Mountain01.png",
|
||||
"Map-Tower01.png",
|
||||
"Caverna1.png",
|
||||
"map-tower.png"
|
||||
"map-tower.png",
|
||||
"winter1.png"
|
||||
],
|
||||
"animates": [
|
||||
"amazed",
|
||||
@ -128,7 +143,8 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
"grass.mp3",
|
||||
"mount.mp3",
|
||||
"night.mp3",
|
||||
"palace.mp3",
|
||||
"palaceNorth.mp3",
|
||||
"palaceSouth.mp3",
|
||||
"plot1.mp3",
|
||||
"road.mp3",
|
||||
"title.mp3",
|
||||
@ -136,7 +152,8 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
"towerBoss.mp3",
|
||||
"towerBoss2.mp3",
|
||||
"towerBoss3.mp3",
|
||||
"winter.mp3"
|
||||
"winter.mp3",
|
||||
"winterTown.mp3"
|
||||
],
|
||||
"sounds": [
|
||||
"008-System08.ogg",
|
||||
|
@ -41,7 +41,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
||||
"elemental": {"name":"元素生物","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"steelGuard": {"name":"铁守卫","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[18],"value":20},
|
||||
"evilBat": {"name":"邪恶蝙蝠","hp":1000,"atk":800,"def":350,"money":1,"exp":40,"point":0,"special":[2]},
|
||||
"frozenSkeleton": {"name":"冻死骨","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"frozenSkeleton": {"name":"冻死骨","hp":7500,"atk":2500,"def":1000,"money":2,"exp":90,"point":0,"special":[1,20],"crit":500,"ice":10},
|
||||
"silverSlimelord": {"name":"银怪王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"goldSlimelord": {"name":"金怪王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"skeletonWarrior": {"name":"骷髅士兵","hp":500,"atk":100,"def":20,"money":0,"exp":12,"point":0,"special":[1],"crit":500},
|
||||
@ -99,7 +99,7 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
||||
"E511": {"name":"山野蝙蝠","hp":1500,"atk":300,"def":120,"money":1,"exp":37,"point":0,"special":[5]},
|
||||
"E512": {"name":"专业盗贼","hp":1800,"atk":400,"def":170,"money":1,"exp":40,"point":0,"special":[5]},
|
||||
"E513": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E514": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E514": {"name":"雪原剑客","hp":10000,"atk":3000,"def":500,"money":2,"exp":110,"point":0,"special":[5,19]},
|
||||
"E515": {"name":"勇气之剑","hp":2500,"atk":550,"def":270,"money":2,"exp":40,"point":0,"special":[5,10],"courage":500},
|
||||
"E517": {"name":"勇气之盾","hp":4000,"atk":400,"def":350,"money":1,"exp":30,"point":0,"special":[9]},
|
||||
"E518": {"name":"勇气圣骑","hp":4000,"atk":1000,"def":400,"money":1,"exp":45,"point":0,"special":[11],"charge":600},
|
||||
@ -138,5 +138,19 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
||||
"E576": {"name":"智慧守卫","hp":7500,"atk":2500,"def":1250,"money":10,"exp":500,"point":0,"special":[1],"crit":250},
|
||||
"E577": {"name":"智慧守护者","hp":15000,"atk":2500,"def":1200,"money":50,"exp":2500,"point":0,"special":[1],"crit":1000},
|
||||
"E578": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E579": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}
|
||||
"E579": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E590": {"name":"冰封史莱姆","hp":7500,"atk":1750,"def":1000,"money":2,"exp":75,"point":0,"special":[20],"ice":25},
|
||||
"E591": {"name":"新敌人","hp":10000,"atk":2000,"def":1000,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E592": {"name":"冰封巨兽","hp":10000,"atk":2000,"def":1000,"money":2,"exp":85,"point":0,"special":[20,21],"iceHalo":10,"ice":50},
|
||||
"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":[]},
|
||||
"E595": {"name":"寒冰兽人","hp":12500,"atk":1800,"def":800,"money":2,"exp":100,"point":0,"special":[7],"hungry":25},
|
||||
"E596": {"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":[]},
|
||||
"E599": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E600": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E601": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
|
||||
"E602": {"name":"永夜蝠","hp":6000,"atk":2000,"def":800,"money":1,"exp":65,"point":0,"special":[22],"night":100},
|
||||
"E603": {"name":"极昼蝠","hp":8000,"atk":1750,"def":1000,"money":1,"exp":65,"point":0,"special":[23],"day":100}
|
||||
}
|
@ -44,8 +44,8 @@ main.floors.MT27=
|
||||
[143,143,143,143, 91,143,143,143,143,143,143,143,143,143,143],
|
||||
[143,143,143,143, 0,143,143,420,143,143,143,143,143,143,143],
|
||||
[ 92, 0, 0,482, 0,497,143,430,491,280,143,143,143,143,143],
|
||||
[143,143,492,143,143,143,143,143,143, 0,143,143,143,143,143],
|
||||
[143, 0, 0,492,491,492,390, 0,484, 0,143,143,143,143,143],
|
||||
[143,143,494,143,143,143,143,143,143, 0,143,143,143,143,143],
|
||||
[143, 0, 0,494,491,494,390, 0,484, 0,143,143,143,143,143],
|
||||
[143, 0,143,143,143,143, 0,143,143,143,143,143,143,143,143],
|
||||
[143,441,143,390,482,143, 0,143,484,396,143,143,143,143,143],
|
||||
[143, 33,500,482,396,143,403,568, 21,403,143,143,143,143,143],
|
||||
|
@ -47,7 +47,101 @@ main.floors.MT31=
|
||||
],
|
||||
"eachArrive": [],
|
||||
"parallelDo": "",
|
||||
"events": {},
|
||||
"events": {
|
||||
"14,7": [
|
||||
{
|
||||
"type": "if",
|
||||
"condition": "(!flag:inWinter)",
|
||||
"true": [
|
||||
{
|
||||
"type": "setCurtain",
|
||||
"color": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"time": 1500,
|
||||
"keep": true
|
||||
},
|
||||
{
|
||||
"type": "setText",
|
||||
"text": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"background": "winskin3.png"
|
||||
},
|
||||
"人类简史——进化篇",
|
||||
{
|
||||
"type": "playSound",
|
||||
"name": "paper.mp3"
|
||||
},
|
||||
"经过了漫长的行走,他感到真相越来越接近。",
|
||||
{
|
||||
"type": "playSound",
|
||||
"name": "paper.mp3"
|
||||
},
|
||||
"前方,是会将凛冽渗入骨髓的冰封雪原。",
|
||||
{
|
||||
"type": "playSound",
|
||||
"name": "paper.mp3"
|
||||
},
|
||||
"这里,他将寻找到所谓的真相。",
|
||||
{
|
||||
"type": "changeFloor",
|
||||
"floorId": "MT32",
|
||||
"loc": [
|
||||
0,
|
||||
7
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "setCurtain",
|
||||
"time": 1000
|
||||
},
|
||||
{
|
||||
"type": "setText",
|
||||
"text": [
|
||||
255,
|
||||
255,
|
||||
255,
|
||||
1
|
||||
],
|
||||
"background": "winskin2.png"
|
||||
},
|
||||
"\t[初级智人]\b[up,hero]呼,好冷。",
|
||||
"\t[初级智人]\b[up,hero]嗯?",
|
||||
{
|
||||
"type": "moveHero",
|
||||
"time": 250,
|
||||
"steps": [
|
||||
"right:1"
|
||||
]
|
||||
},
|
||||
"\t[初级智人]\b[up,hero]这是杰克给我留下的衣服吗?",
|
||||
"\t[初级智人]\b[up,hero]先穿上吧,这里太冷了。",
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "flag:inWinter",
|
||||
"value": "true"
|
||||
}
|
||||
],
|
||||
"false": [
|
||||
{
|
||||
"type": "changeFloor",
|
||||
"floorId": "MT32",
|
||||
"loc": [
|
||||
0,
|
||||
7
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"changeFloor": {
|
||||
"0,7": {
|
||||
"floorId": "MT29",
|
||||
@ -153,7 +247,7 @@ main.floors.MT31=
|
||||
[143,143, 0, 0, 0, 0,143,491,491,468,468,466,466,143,143],
|
||||
[143,143, 0,491,491, 0,143, 85,143,143,143,143,143,143,143],
|
||||
[143,143, 0, 0, 0, 0,143, 0, 0, 0, 0, 0, 0,143,143],
|
||||
[ 92, 0, 0, 23,123, 0,497, 0, 0, 0,577, 0, 0, 0, 0],
|
||||
[ 92, 0, 0, 23,123, 0,497, 0, 0, 0,577, 0, 0, 0, 94],
|
||||
[143,143, 0, 0, 0, 0,143, 0, 0, 0, 0, 0, 0,143,143],
|
||||
[143,143, 0,491,491, 0,143, 85,143,143,143,143,143,143,143],
|
||||
[143,143, 0, 0, 0, 0,143,491,491,468,468,467,467,143,143],
|
||||
|
104
public/project/floors/MT32.js
Normal file
@ -0,0 +1,104 @@
|
||||
main.floors.MT32=
|
||||
{
|
||||
"floorId": "MT32",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.mp3",
|
||||
"firstArrive": [],
|
||||
"eachArrive": [],
|
||||
"parallelDo": "",
|
||||
"events": {
|
||||
"0,7": [
|
||||
{
|
||||
"type": "changeFloor",
|
||||
"floorId": "MT31",
|
||||
"loc": [
|
||||
14,
|
||||
7
|
||||
]
|
||||
}
|
||||
],
|
||||
"1,6": [
|
||||
"宝石血瓶的加成已提升至8倍"
|
||||
],
|
||||
"1,8": [
|
||||
"衣服是个装备,记得穿上",
|
||||
"光环会在地图上显示,如果不想要可以在背包里面的系统设置里面关闭",
|
||||
"每张地图会保证极昼怪的数量与永夜怪的数量相同"
|
||||
]
|
||||
},
|
||||
"changeFloor": {},
|
||||
"beforeBattle": {},
|
||||
"afterBattle": {},
|
||||
"afterGetItem": {},
|
||||
"afterOpenDoor": {},
|
||||
"autoEvent": {},
|
||||
"cannotMove": {},
|
||||
"cannotMoveIn": {},
|
||||
"map": [
|
||||
[147,147,147,147,147,147,147,147,147,147,147,147,147,147,147],
|
||||
[147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147, 0, 0, 0, 0,514, 0, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147,147,147,147,147, 0,274, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147,129, 0, 21,147,590, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 92, 0,589, 0,492, 0,595, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147,129, 0, 22,147,602, 0, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147,147,147,147,147, 0,603, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,592, 0, 0,147],
|
||||
[147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147],
|
||||
[147,147,147,147,147,147,147,147,147,147,147,147,147,147,147]
|
||||
],
|
||||
"bgmap": [
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145,145,145,145],
|
||||
[145,145,145,145,145,145,145,145,145,145,145,145, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
],
|
||||
"fgmap": [
|
||||
|
||||
],
|
||||
"bg2map": [
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
],
|
||||
"fg2map": [
|
||||
|
||||
]
|
||||
}
|
45
public/project/floors/MT33.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT33=
|
||||
{
|
||||
"floorId": "MT33",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT34.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT34=
|
||||
{
|
||||
"floorId": "MT34",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT35.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT35=
|
||||
{
|
||||
"floorId": "MT35",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT36.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT36=
|
||||
{
|
||||
"floorId": "MT36",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT37.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT37=
|
||||
{
|
||||
"floorId": "MT37",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT38.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT38=
|
||||
{
|
||||
"floorId": "MT38",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT39.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT39=
|
||||
{
|
||||
"floorId": "MT39",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT40.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT40=
|
||||
{
|
||||
"floorId": "MT40",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT41.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT41=
|
||||
{
|
||||
"floorId": "MT41",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT42.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT42=
|
||||
{
|
||||
"floorId": "MT42",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT43.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT43=
|
||||
{
|
||||
"floorId": "MT43",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT44.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT44=
|
||||
{
|
||||
"floorId": "MT44",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
45
public/project/floors/MT45.js
Normal file
@ -0,0 +1,45 @@
|
||||
main.floors.MT45=
|
||||
{
|
||||
"floorId": "MT45",
|
||||
"title": "冰封雪原",
|
||||
"name": "冰封雪原",
|
||||
"width": 15,
|
||||
"height": 15,
|
||||
"canFlyTo": true,
|
||||
"canFlyFrom": true,
|
||||
"canUseQuickShop": true,
|
||||
"cannotViewMap": false,
|
||||
"images": [],
|
||||
"ratio": 8,
|
||||
"defaultGround": "T580",
|
||||
"bgm": "winter.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]
|
||||
],
|
||||
}
|
@ -378,6 +378,10 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
Math.ceil((core.status.hero.mdef / 10) * 0.3) * 10;
|
||||
}
|
||||
|
||||
if (core.getSkillLevel(11) > 0) {
|
||||
core.declineStudiedSkill();
|
||||
}
|
||||
|
||||
// 计算当前怪物的支援怪物
|
||||
var guards = [];
|
||||
if (x != null && y != null) {
|
||||
@ -409,18 +413,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
hint += ',经验+' + exp;
|
||||
core.drawTip(hint, enemy.id);
|
||||
|
||||
// 战后的技能处理,比如扣除魔力值
|
||||
if (core.flags.statusBarItems.indexOf('enableSkill') >= 0) {
|
||||
// 检测当前开启的技能类型
|
||||
var skill = core.getFlag('skill', 0);
|
||||
if (skill == 1) {
|
||||
// 技能1:二倍斩
|
||||
core.status.hero.mana -= 5; // 扣除5点魔力值
|
||||
}
|
||||
// 关闭技能
|
||||
core.setFlag('skill', 0);
|
||||
core.setFlag('skillName', '无');
|
||||
}
|
||||
if (core.getFlag('bladeOn') && core.getFlag('blade')) {
|
||||
core.setFlag('blade', false);
|
||||
}
|
||||
@ -575,7 +567,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
'%的伤害'
|
||||
);
|
||||
},
|
||||
'#ffcc33'
|
||||
'#fc3'
|
||||
],
|
||||
[2, '恶毒', '怪物攻击无视勇士的防御', '#bbb0ff'],
|
||||
[3, '坚固', '怪物防御不小于勇士攻击-1', '#c0b088'],
|
||||
@ -713,37 +705,34 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
',最后与该怪物战斗',
|
||||
'#ff6666'
|
||||
],
|
||||
[20, '荆棘', '勇士无法打败怪物,除非拥有十字架', '#aaaaaa'],
|
||||
[
|
||||
20,
|
||||
'霜冻',
|
||||
enemy =>
|
||||
`怪物寒冷的攻击使勇士动作变慢,勇士每回合对怪物造成的伤害减少${enemy.ice}%。装备杰克的衣服后可以免疫。`,
|
||||
'cyan'
|
||||
],
|
||||
[
|
||||
21,
|
||||
'退化',
|
||||
function (enemy) {
|
||||
return (
|
||||
'战斗后勇士永久下降' +
|
||||
(enemy.atkValue || 0) +
|
||||
'点攻击和' +
|
||||
(enemy.defValue || 0) +
|
||||
'点防御'
|
||||
);
|
||||
}
|
||||
'冰封光环',
|
||||
enemy =>
|
||||
`寒气逼人,使勇士对该怪物周围7*7范围内的怪物伤害减少${enemy.iceHalo}%(线性叠加)`,
|
||||
'cyan',
|
||||
1
|
||||
],
|
||||
[
|
||||
22,
|
||||
'固伤',
|
||||
function (enemy) {
|
||||
return (
|
||||
'战斗前,怪物对勇士造成' +
|
||||
(enemy.damage || 0) +
|
||||
'点固定伤害,未开启负伤时无视勇士护盾。'
|
||||
);
|
||||
},
|
||||
'#ff9977'
|
||||
'永夜',
|
||||
enemy =>
|
||||
`战斗后,减少勇士${enemy.night}点攻防,加到本层所有怪物身上`,
|
||||
'#d8a'
|
||||
],
|
||||
[
|
||||
23,
|
||||
'重生',
|
||||
'怪物被击败后,角色转换楼层则怪物将再次出现',
|
||||
'#a0e0ff'
|
||||
'极昼',
|
||||
enemy =>
|
||||
`战斗后,减少本层所有怪物${enemy.day}点攻防,加到勇士身上`,
|
||||
'#ffd'
|
||||
],
|
||||
[
|
||||
24,
|
||||
@ -811,6 +800,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
mon_exp = core.getEnemyValue(enemy, 'exp', x, y, floorId),
|
||||
mon_point = core.getEnemyValue(enemy, 'point', x, y, floorId);
|
||||
|
||||
let iceDecline = 0;
|
||||
|
||||
if (typeof enemy === 'number')
|
||||
core.getBlockByNumber(enemy).event.id;
|
||||
if (typeof enemy === 'string') enemy = core.material.enemys[enemy];
|
||||
@ -851,56 +842,68 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
// 检查光环和支援的缓存
|
||||
var index =
|
||||
x != null && y != null ? x + ',' + y : 'floor' + enemy.id;
|
||||
if (!core.status.checkBlock.cache)
|
||||
core.status.checkBlock.cache = {};
|
||||
core.status.checkBlock.cache ??= {};
|
||||
var cache = core.status.checkBlock.cache[index];
|
||||
if (!cache) {
|
||||
// 没有该点的缓存,则遍历每个图块
|
||||
core.extractBlocks(floorId);
|
||||
core.status.maps[floorId].blocks.forEach(function (block) {
|
||||
if (!block.disable) {
|
||||
// 获得该图块的ID
|
||||
var id = block.event.id,
|
||||
e = core.material.enemys[id];
|
||||
var dx = Math.abs(block.x - x),
|
||||
dy = Math.abs(block.y - y);
|
||||
// 检查【支援】技能,数字26
|
||||
if (
|
||||
e &&
|
||||
core.hasSpecial(e.special, 26) &&
|
||||
// 检查支援条件,坐标存在,距离为1,且不能是自己
|
||||
// 其他类型的支援怪,比如十字之类的话.... 看着做是一样的
|
||||
x != null &&
|
||||
y != null &&
|
||||
Math.abs(block.x - x) <= 1 &&
|
||||
Math.abs(block.y - y) <= 1 &&
|
||||
!(x == block.x && y == block.y)
|
||||
) {
|
||||
// 记录怪物的x,y,ID
|
||||
guards.push([block.x, block.y, id]);
|
||||
}
|
||||
// 抱团
|
||||
if (
|
||||
e &&
|
||||
core.hasSpecial(mon_special, 8) &&
|
||||
core.hasSpecial(e.special, 8) &&
|
||||
!(dx == 0 && dy == 0) &&
|
||||
dx < 3 &&
|
||||
dy < 3
|
||||
) {
|
||||
atk_buff += enemy.together || 0;
|
||||
def_buff += enemy.together || 0;
|
||||
}
|
||||
|
||||
// TODO:如果有其他类型光环怪物在这里仿照添加检查
|
||||
// 注:新增新的类光环属性(需要遍历全图的)需要在特殊属性定义那里的第五项写1,参见光环和支援的特殊属性定义。
|
||||
if (block.disable) return;
|
||||
// 获得该图块的ID
|
||||
var id = block.event.id,
|
||||
e = core.material.enemys[id];
|
||||
var dx = Math.abs(block.x - x),
|
||||
dy = Math.abs(block.y - y);
|
||||
// 检查【支援】技能,数字26
|
||||
if (
|
||||
e &&
|
||||
core.hasSpecial(e.special, 26) &&
|
||||
// 检查支援条件,坐标存在,距离为1,且不能是自己
|
||||
// 其他类型的支援怪,比如十字之类的话.... 看着做是一样的
|
||||
x != null &&
|
||||
y != null &&
|
||||
Math.abs(block.x - x) <= 1 &&
|
||||
Math.abs(block.y - y) <= 1 &&
|
||||
!(x == block.x && y == block.y)
|
||||
) {
|
||||
// 记录怪物的x,y,ID
|
||||
guards.push([block.x, block.y, id]);
|
||||
}
|
||||
|
||||
// 抱团
|
||||
if (
|
||||
e &&
|
||||
core.hasSpecial(mon_special, 8) &&
|
||||
core.hasSpecial(e.special, 8) &&
|
||||
!(dx == 0 && dy == 0) &&
|
||||
dx < 3 &&
|
||||
dy < 3
|
||||
) {
|
||||
atk_buff += enemy.together || 0;
|
||||
def_buff += enemy.together || 0;
|
||||
}
|
||||
|
||||
// 冰封光环
|
||||
if (
|
||||
e &&
|
||||
core.hasSpecial(e.special, 21) &&
|
||||
x != null &&
|
||||
y != null &&
|
||||
dx < 4 &&
|
||||
dy < 4
|
||||
) {
|
||||
iceDecline += e.iceHalo;
|
||||
}
|
||||
|
||||
// TODO:如果有其他类型光环怪物在这里仿照添加检查
|
||||
// 注:新增新的类光环属性(需要遍历全图的)需要在特殊属性定义那里的第五项写1,参见光环和支援的特殊属性定义。
|
||||
});
|
||||
core.status.checkBlock.cache[index] = {
|
||||
hp_buff: hp_buff,
|
||||
atk_buff: atk_buff,
|
||||
def_buff: def_buff,
|
||||
guards: guards
|
||||
guards: guards,
|
||||
iceHalo: iceDecline
|
||||
};
|
||||
} else {
|
||||
// 直接使用缓存数据
|
||||
@ -908,6 +911,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
atk_buff = cache.atk_buff;
|
||||
def_buff = cache.def_buff;
|
||||
guards = cache.guards;
|
||||
iceDecline = cache.iceHalo;
|
||||
}
|
||||
|
||||
// 增加比例;如果要增加数值可以直接在这里修改
|
||||
@ -931,7 +935,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
exp: Math.floor(mon_exp),
|
||||
point: Math.floor(mon_point),
|
||||
special: mon_special,
|
||||
guards: guards // 返回支援情况
|
||||
guards: guards, // 返回支援情况
|
||||
iceDecline
|
||||
};
|
||||
},
|
||||
getDamageInfo: function (enemy, hero, x, y, floorId) {
|
||||
@ -1011,12 +1016,12 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
if (core.hasSpecial(mon_special, 5)) per_damage *= 3;
|
||||
if (core.hasSpecial(mon_special, 6)) per_damage *= enemy.n || 4;
|
||||
// 勇士每回合对怪物造成的伤害
|
||||
let hero_per_damage = Math.max(hero_atk - mon_def, 0);
|
||||
if (!core.hasSpecial(mon_special, 9)) {
|
||||
var hero_per_damage = Math.max(hero_atk - mon_def, 0);
|
||||
hero_per_damage = Math.max(hero_atk - mon_def, 0);
|
||||
if (hero_per_damage > 0) hero_per_damage += hero_extraAtk;
|
||||
}
|
||||
if (core.hasSpecial(mon_special, 9)) {
|
||||
var hero_per_damage = Math.max(
|
||||
} else {
|
||||
hero_per_damage = Math.max(
|
||||
hero_atk + hero_extraAtk - mon_def,
|
||||
0
|
||||
);
|
||||
@ -1025,6 +1030,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
// 如果没有破防,则不可战斗
|
||||
if (hero_per_damage <= 0) return null;
|
||||
|
||||
if (
|
||||
core.hasSpecial(mon_special, 20) &&
|
||||
!core.hasEquip('I589')
|
||||
) {
|
||||
hero_per_damage *= 1 - enemy.ice / 100;
|
||||
}
|
||||
|
||||
hero_per_damage *= 1 - enemyInfo.iceDecline / 100;
|
||||
|
||||
// 勇士的攻击回合数;为怪物生命除以每回合伤害向上取整
|
||||
let turn = Math.ceil(mon_hp / hero_per_damage);
|
||||
|
||||
@ -1437,20 +1451,36 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
core.updateCheckBlock();
|
||||
// 更新全地图显伤
|
||||
core.updateDamage();
|
||||
|
||||
// 已学习的技能
|
||||
if (
|
||||
core.getSkillLevel(11) > 0 &&
|
||||
(core.status.hero.special?.num ?? []).length > 0
|
||||
) {
|
||||
core.plugin.showStudiedSkill.value = true;
|
||||
} else {
|
||||
core.plugin.showStudiedSkill.value = false;
|
||||
}
|
||||
},
|
||||
updateCheckBlock: function (floorId) {
|
||||
// 领域、夹击、阻击等的伤害值计算
|
||||
floorId = floorId || core.status.floorId;
|
||||
if (!floorId || !core.status.maps) return;
|
||||
|
||||
const haloMap = {
|
||||
21: 'square:7:cyan'
|
||||
};
|
||||
const haloEntry = Object.entries(haloMap);
|
||||
|
||||
var width = core.floors[floorId].width,
|
||||
height = core.floors[floorId].height;
|
||||
var blocks = core.getMapBlocksObj(floorId);
|
||||
|
||||
var damage = {}, // 每个点的伤害值
|
||||
const damage = {}, // 每个点的伤害值
|
||||
type = {}, // 每个点的伤害类型
|
||||
repulse = {}, // 每个点的阻击怪信息
|
||||
mockery = {}; // 电摇嘲讽
|
||||
mockery = {}, // 电摇嘲讽
|
||||
halo = {}; // 光环
|
||||
var betweenAttackLocs = {}; // 所有可能的夹击点
|
||||
var needCache = false;
|
||||
var canGoDeadZone = core.flags.canGoDeadZone;
|
||||
@ -1680,6 +1710,16 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
)
|
||||
needCache = true;
|
||||
if (specialFlag & 2) haveHunt = true;
|
||||
|
||||
if (enemy) {
|
||||
for (const [num, range] of haloEntry) {
|
||||
const n = parseInt(num);
|
||||
if (core.hasSpecial(enemy.special, n)) {
|
||||
halo[loc] ??= [];
|
||||
halo[loc].push(range);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 对每个可能的夹击点计算夹击伤害
|
||||
@ -1758,7 +1798,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
mockery,
|
||||
needCache: needCache,
|
||||
cache: {}, // clear cache
|
||||
haveHunt: haveHunt
|
||||
haveHunt: haveHunt,
|
||||
halo
|
||||
};
|
||||
},
|
||||
moveOneStep: function (callback) {
|
||||
|
@ -112,7 +112,16 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
|
||||
"T552": 52,
|
||||
"T553": 53,
|
||||
"T554": 54,
|
||||
"T555": 55
|
||||
"T555": 55,
|
||||
"T580": 56,
|
||||
"T581": 57,
|
||||
"T582": 58,
|
||||
"T583": 59,
|
||||
"T584": 60,
|
||||
"T585": 61,
|
||||
"T586": 62,
|
||||
"T587": 63,
|
||||
"T588": 64
|
||||
},
|
||||
"animates": {
|
||||
"star": 0,
|
||||
@ -343,7 +352,21 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
|
||||
"E576": 131,
|
||||
"E577": 132,
|
||||
"E578": 133,
|
||||
"E579": 134
|
||||
"E579": 134,
|
||||
"E590": 135,
|
||||
"E591": 136,
|
||||
"E592": 137,
|
||||
"E593": 138,
|
||||
"E594": 139,
|
||||
"E595": 140,
|
||||
"E596": 141,
|
||||
"E597": 142,
|
||||
"E598": 143,
|
||||
"E599": 144,
|
||||
"E600": 145,
|
||||
"E601": 146,
|
||||
"E602": 147,
|
||||
"E603": 148
|
||||
},
|
||||
"enemy48": {
|
||||
"angel": 0,
|
||||
@ -536,7 +559,8 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
|
||||
"I560": 97,
|
||||
"I565": 98,
|
||||
"I574": 99,
|
||||
"I575": 100
|
||||
"I575": 100,
|
||||
"I589": 101
|
||||
},
|
||||
"autotile": {
|
||||
"autotile": 0,
|
||||
@ -546,6 +570,9 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
|
||||
"autotile4": 0,
|
||||
"autotile5": 0,
|
||||
"autotile6": 0,
|
||||
"autotile7": 0
|
||||
"autotile7": 0,
|
||||
"autotile8": 0,
|
||||
"autotile9": 0,
|
||||
"autotile10": 0
|
||||
}
|
||||
}
|
@ -1326,5 +1326,18 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
||||
"atk": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
"I589": {
|
||||
"cls": "equips",
|
||||
"name": "杰克的衣服",
|
||||
"canUseItemEffect": "true",
|
||||
"text": "杰克为主角留下的衣服,可以抵御寒冷。防御+25,免疫怪物的霜冻属性。",
|
||||
"equip": {
|
||||
"type": "衣服",
|
||||
"value": {
|
||||
"def": 25
|
||||
},
|
||||
"percentage": {}
|
||||
}
|
||||
}
|
||||
}
|
@ -115,6 +115,9 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
|
||||
"142": {"cls":"autotile","id":"autotile5"},
|
||||
"143": {"cls":"autotile","id":"autotile6"},
|
||||
"144": {"cls":"autotile","id":"autotile7"},
|
||||
"145": {"cls":"autotile","id":"autotile8"},
|
||||
"146": {"cls":"autotile","id":"autotile9","canPass":true},
|
||||
"147": {"cls":"autotile","id":"autotile10"},
|
||||
"151": {"cls":"autotile","id":"autotile1"},
|
||||
"152": {"cls":"autotile","id":"autotile2"},
|
||||
"153": {"cls":"autotile","id":"autotile3"},
|
||||
@ -504,6 +507,30 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
|
||||
"577": {"cls":"enemys","id":"E577"},
|
||||
"578": {"cls":"enemys","id":"E578"},
|
||||
"579": {"cls":"enemys","id":"E579"},
|
||||
"580": {"cls":"terrains","id":"T580","canPass":true},
|
||||
"581": {"cls":"terrains","id":"T581"},
|
||||
"582": {"cls":"terrains","id":"T582"},
|
||||
"583": {"cls":"terrains","id":"T583"},
|
||||
"584": {"cls":"terrains","id":"T584"},
|
||||
"585": {"cls":"terrains","id":"T585"},
|
||||
"586": {"cls":"terrains","id":"T586"},
|
||||
"587": {"cls":"terrains","id":"T587"},
|
||||
"588": {"cls":"terrains","id":"T588"},
|
||||
"589": {"cls":"items","id":"I589"},
|
||||
"590": {"cls":"enemys","id":"E590"},
|
||||
"591": {"cls":"enemys","id":"E591"},
|
||||
"592": {"cls":"enemys","id":"E592"},
|
||||
"593": {"cls":"enemys","id":"E593"},
|
||||
"594": {"cls":"enemys","id":"E594"},
|
||||
"595": {"cls":"enemys","id":"E595"},
|
||||
"596": {"cls":"enemys","id":"E596"},
|
||||
"597": {"cls":"enemys","id":"E597"},
|
||||
"598": {"cls":"enemys","id":"E598"},
|
||||
"599": {"cls":"enemys","id":"E599"},
|
||||
"600": {"cls":"enemys","id":"E600"},
|
||||
"601": {"cls":"enemys","id":"E601"},
|
||||
"602": {"cls":"enemys","id":"E602"},
|
||||
"603": {"cls":"enemys","id":"E603"},
|
||||
"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"]},
|
||||
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 53 KiB |
@ -1640,7 +1640,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
false
|
||||
);
|
||||
if (!firstNoPass) return;
|
||||
core.status.hero.hp -= 200 * flags.hard;
|
||||
if (flags.chapter <= 1) core.status.hero.hp -= 200 * flags.hard;
|
||||
core.updateStatusBar();
|
||||
flags['jump_' + core.status.floorId]++;
|
||||
if (core.status.hero.hp <= 0) {
|
||||
@ -4103,7 +4103,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
title: '学习',
|
||||
desc: [
|
||||
'<span style="color: gold">主动技能</span>,可以消耗500智慧学习一个怪物的技能,',
|
||||
'持续5场战斗,每学习一次消耗的智慧点增加200,每次升级使持续的战斗次数增加3次。更多信息可在学习后在百科全书查看。'
|
||||
'持续5场战斗,每学习一次消耗的智慧点增加250,每次升级使持续的战斗次数增加3次。更多信息可在学习后在百科全书查看。'
|
||||
],
|
||||
consume: '2500 * level ** 2 + 2500',
|
||||
front: [
|
||||
@ -4528,7 +4528,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
1: ['crit'],
|
||||
6: ['n'],
|
||||
7: ['hungry'],
|
||||
8: ['togrther'],
|
||||
8: ['together'],
|
||||
10: ['courage'],
|
||||
11: ['charge']
|
||||
};
|
||||
@ -4536,10 +4536,10 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
const cannotStudy = [9, 12, 14, 15, 24];
|
||||
|
||||
this.canStudySkill = function (number) {
|
||||
core.status.hero.special ??= { num: [] };
|
||||
if (core.status.hero.special.num.length >= 1) {
|
||||
return false;
|
||||
}
|
||||
const s = (core.status.hero.special ??= { num: [], last: [] });
|
||||
if (core.getSkillLevel(11) === 0) return false;
|
||||
if (s.num.length >= 1) return false;
|
||||
if (s.num.includes(number)) return false;
|
||||
if (cannotStudy.includes(number)) return false;
|
||||
return true;
|
||||
};
|
||||
@ -4577,7 +4577,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
};
|
||||
|
||||
this.declineStudiedSkill = function () {
|
||||
const s = core.status.hero.special;
|
||||
const s = (core.status.hero.special ??= { num: [], last: [] });
|
||||
s.last = s.last.map(v => v - 1);
|
||||
};
|
||||
|
||||
@ -4590,5 +4590,58 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
haloRange: function () {
|
||||
/**
|
||||
* 绘制光环范围
|
||||
* @param {CanvasRenderingContext2D} ctx
|
||||
* @param {boolean} onMap
|
||||
*/
|
||||
this.drawHalo = function (ctx, onMap) {
|
||||
if (main.replayChecking) return;
|
||||
if (!core.getLocalStorage('showHalo', true)) return;
|
||||
const halo = core.status.checkBlock.halo;
|
||||
ctx.save();
|
||||
core.clearMap(ctx);
|
||||
ctx.globalAlpha = 0.1;
|
||||
ctx.globalCompositeOperation = 'source-over';
|
||||
for (const [loc, range] of Object.entries(halo)) {
|
||||
const [x, y] = loc.split(',').map(v => parseInt(v));
|
||||
for (const r of range) {
|
||||
const [type, value, color, border] = r.split(':');
|
||||
if (type === 'square') {
|
||||
// 正方形光环
|
||||
const n = parseInt(value);
|
||||
const r = Math.floor(n / 2);
|
||||
let left = x - r,
|
||||
right = x + r,
|
||||
top = y - r,
|
||||
bottom = y + r;
|
||||
if (onMap && core.bigmap.v2) {
|
||||
left -= core.bigmap.posX;
|
||||
top -= core.bigmap.posY;
|
||||
right -= core.bigmap.posX;
|
||||
bottom -= core.bigmap.posY;
|
||||
if (
|
||||
right < -1 ||
|
||||
left > core._PX_ / 32 + 1 ||
|
||||
top < -1 ||
|
||||
bottom > core._PY_ / 32 + 1
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
ctx.fillStyle = color;
|
||||
ctx.strokeStyle = border ?? color;
|
||||
ctx.lineWidth = 1;
|
||||
ctx.fillRect(left * 32, top * 32, n * 32, n * 32);
|
||||
ctx.globalAlpha = 0.6;
|
||||
ctx.strokeRect(left * 32, top * 32, n * 32, n * 32);
|
||||
ctx.globalAlpha = 0.1;
|
||||
}
|
||||
}
|
||||
}
|
||||
ctx.restore();
|
||||
};
|
||||
}
|
||||
};
|
||||
|
BIN
public/project/tilesets/winter1.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
public/project/tilesets/winter2.png
Normal file
After Width: | Height: | Size: 628 KiB |
BIN
public/project/tilesets/winter3.png
Normal file
After Width: | Height: | Size: 95 KiB |
@ -1,7 +1,10 @@
|
||||
<template>
|
||||
<div id="non-ui">
|
||||
<StatusBar v-if="showStatusBar"></StatusBar>
|
||||
<MarkedEnemy v-if="showMarkedEnemy"></MarkedEnemy>
|
||||
<MarkedEnemy v-if="showMarkedEnemy && showStatusBar"></MarkedEnemy>
|
||||
<Studied
|
||||
v-if="showStudiedSkill && showStatusBar && showStudied"
|
||||
></Studied>
|
||||
<Chapter v-if="chapterShowed" :chapter="chapterContent"></Chapter>
|
||||
</div>
|
||||
</template>
|
||||
@ -9,11 +12,13 @@
|
||||
<script lang="ts" setup>
|
||||
import { ref } from 'vue';
|
||||
import StatusBar from './ui/statusBar.vue';
|
||||
import { showStatusBar } from './plugin/uiController';
|
||||
import { showStatusBar, showStudiedSkill } from './plugin/uiController';
|
||||
import MarkedEnemy from './ui/markedEnemy.vue';
|
||||
import Chapter from './ui/chapter.vue';
|
||||
import { chapterContent, chapterShowed } from './plugin/ui/chapter';
|
||||
import { showMarkedEnemy } from './plugin/mark';
|
||||
import Studied from './ui/studied.vue';
|
||||
import { showStudied } from './plugin/settings';
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
@ -3,7 +3,12 @@
|
||||
<div :id="`box-main-${id}`" class="box-main" @click="click">
|
||||
<slot></slot>
|
||||
</div>
|
||||
<div :id="`box-move-${id}`" class="box-move" :selected="moveSelected">
|
||||
<div
|
||||
v-if="dragable"
|
||||
:id="`box-move-${id}`"
|
||||
class="box-move"
|
||||
:selected="moveSelected"
|
||||
>
|
||||
<drag-outlined
|
||||
:id="`box-drag-${id}`"
|
||||
class="box-drag"
|
||||
@ -14,21 +19,25 @@
|
||||
class="border border-vertical border-left"
|
||||
:id="`border-left-${id}`"
|
||||
:selected="moveSelected && resizable"
|
||||
:selectable="resizable"
|
||||
></div>
|
||||
<div
|
||||
class="border border-horizontal border-top"
|
||||
:id="`border-top-${id}`"
|
||||
:selected="moveSelected && resizable"
|
||||
:selectable="resizable"
|
||||
></div>
|
||||
<div
|
||||
class="border border-vertical border-right"
|
||||
:id="`border-right-${id}`"
|
||||
:selected="moveSelected && resizable"
|
||||
:selectable="resizable"
|
||||
></div>
|
||||
<div
|
||||
class="border border-horizontal border-bottom"
|
||||
:id="`border-bottom-${id}`"
|
||||
:selected="moveSelected && resizable"
|
||||
:selectable="resizable"
|
||||
></div>
|
||||
</div>
|
||||
</template>
|
||||
@ -41,6 +50,7 @@ import { has } from '../plugin/utils';
|
||||
import { sleep } from 'mutate-animate';
|
||||
|
||||
const props = defineProps<{
|
||||
dragable?: boolean;
|
||||
resizable?: boolean;
|
||||
left?: number;
|
||||
top?: number;
|
||||
@ -162,18 +172,20 @@ onMounted(async () => {
|
||||
|
||||
if (!main) return;
|
||||
|
||||
useDrag(
|
||||
drag,
|
||||
dragFn,
|
||||
(x, y) => {
|
||||
lastX = x;
|
||||
lastY = y;
|
||||
},
|
||||
() => {
|
||||
moveSelected.value = false;
|
||||
},
|
||||
true
|
||||
);
|
||||
if (props.dragable) {
|
||||
useDrag(
|
||||
drag,
|
||||
dragFn,
|
||||
(x, y) => {
|
||||
lastX = x;
|
||||
lastY = y;
|
||||
},
|
||||
() => {
|
||||
moveSelected.value = false;
|
||||
},
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
if (props.resizable) {
|
||||
useDrag(
|
||||
@ -202,7 +214,7 @@ onMounted(async () => {
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
cancelGlobalDrag(dragFn);
|
||||
if (props.dragable) cancelGlobalDrag(dragFn);
|
||||
if (props.resizable) {
|
||||
cancelGlobalDrag(leftDrag);
|
||||
cancelGlobalDrag(topDrag);
|
||||
@ -264,13 +276,13 @@ onUnmounted(() => {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.border-horizontal[selected='true'] {
|
||||
.border-horizontal[selected='true'][selectable='true'] {
|
||||
transform: scaleY(300%);
|
||||
cursor: ns-resize;
|
||||
}
|
||||
|
||||
.border-horizontal:hover,
|
||||
.border-horizontal:active {
|
||||
.border-horizontal:hover[selectable='true'],
|
||||
.border-horizontal:active[selectable='true'] {
|
||||
transform: scaleY(500%);
|
||||
cursor: ns-resize;
|
||||
}
|
||||
@ -281,13 +293,13 @@ onUnmounted(() => {
|
||||
top: 0px;
|
||||
}
|
||||
|
||||
.border-vertical[selected='true'] {
|
||||
.border-vertical[selected='true'][selectable='true'] {
|
||||
transform: scaleX(300%);
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
.border-vertical:hover,
|
||||
.border-vertical:active {
|
||||
.border-vertical:hover[selectable='true'],
|
||||
.border-vertical:active[selectable='true'] {
|
||||
transform: scaleX(500%);
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
@ -10,16 +10,16 @@
|
||||
"本百科全书字数很多,可以选择性地阅读。</span>",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"2. 本塔中<span style=\"color: gold\">几乎所有 ui </span>都可以纵向滚动,如果发现显示不全,",
|
||||
"2. 本百科全书的内容会<span style=\"color: gold\">随着游戏的推进而增加新内容</span>,",
|
||||
"同时每次增加新内容时都会有提示。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"3. 本塔中<span style=\"color: gold\">几乎所有 ui </span>都可以纵向滚动,如果发现显示不全,",
|
||||
"可以尝试上下拖动,就像浏览网页一样。电脑端还可以使用滚轮上下滚动。",
|
||||
"大部分可以纵向滚动的 ui 都会在右方有一个滚动条,也可以拖动它进行滚动,例如本百科全书的条目列表和",
|
||||
"条目说明都是可以通过上述方式滚动的。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"3. 本百科全书的内容会<span style=\"color: gold\">随着游戏的推进而增加新内容</span>,",
|
||||
"同时每次增加新内容时都会有提示。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"4. 本塔主要面向电脑端设计,",
|
||||
"<span style=\"color: gold\">建议使用电脑游玩以获得更好的游戏体验</span>。但是手机依然可以游玩本塔,",
|
||||
"但部分操作可能不是很方便,ui 也可能不是很美观,不过依然可以完整体验本游戏。",
|
||||
@ -406,6 +406,46 @@
|
||||
"这些技能一般需要尽早点出。"
|
||||
]
|
||||
},
|
||||
"study": {
|
||||
"text": "学习",
|
||||
"condition": "core.getSkillLevel(11) > 0",
|
||||
"desc": [
|
||||
"本条目会详细说明学习的机制与所有可以被学习的技能被学习后的效果。当前已经学习的技能会以与状态栏类似的盒子展示出来。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"首先,学习技能消耗的智慧点会越来越多,初始消耗的智慧点为500,每学习一次增加250。",
|
||||
"学习的技能可以持续5场战斗,在技能树界面每升级一次增加3场,",
|
||||
"<span style=\"color: gold\">当前为${core.getSkillLevel(11) * 3 + 2}场</span>。",
|
||||
"学习后对应属性的值,例如抱团怪增加的属性百分比,会与被学习的怪物相同。学习界面可以使用背包中的道具或点击状态栏打开。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"下面会详细说明每一种可以被学习的技能被学习后的效果,没有列出的均不可学习。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"<span style=\"color: #fc3\">1. 致命一击</span>:勇士每5回合对怪物造成一次强力攻击。",
|
||||
"<br>",
|
||||
"<span style=\"color: #bbb0ff\">2. 恶毒</span>:勇士攻击无视怪物的防御。",
|
||||
"<br>",
|
||||
"<span style=\"color: #c0b088\">3. 坚固</span>:勇士防御不低于怪物的攻击-1。",
|
||||
"<br>",
|
||||
"<span style=\"color: #fe7\">4. n连击</span>:勇士每回合攻击n次",
|
||||
"<br>",
|
||||
"<span style=\"color: #b30000\">5. 饥渴</span>:勇士在战前吸取怪物一定量的攻击加载自己身上,",
|
||||
"同时减少怪物相应量的攻击,优先于怪物。",
|
||||
"<br>",
|
||||
"<span style=\"color: #fa4\">6. 抱团</span>:勇士周围每有一个拥有抱团属性的怪物,勇士的属性便增加一定值。",
|
||||
"相应地,拥有抱团属性的怪物也会受到勇士的加成。",
|
||||
"<br>",
|
||||
"<span style=\"color: #b0c0dd\">7. 勇气之刃</span>:勇士第一回合造成一定量的伤害,之后正常。",
|
||||
"<br>",
|
||||
"<span style=\"color: #ff00d2\">8. 勇气冲锋</span>:勇士首先发动冲锋,造成一定量的伤害,眩晕怪物5回合。",
|
||||
"学习该技能后,勇士无条件先手。",
|
||||
"<br>",
|
||||
"<span style=\"color: #bbb0ff\">9. 魔攻</span>:勇士攻击无视怪物的防御。",
|
||||
"<br>",
|
||||
"<span style=\"color: #b0b666\">10. 先攻</span>:勇士无条件先手。"
|
||||
]
|
||||
},
|
||||
"special1": {
|
||||
"text": "第一章怪物特技",
|
||||
"condition": "flags.chapter > 0",
|
||||
|
@ -29,5 +29,15 @@
|
||||
"<br>",
|
||||
"2. 如果缩放后游戏画面高度高于页面高度的95%,那么缩小一个缩放比例,否则保持最大比例"
|
||||
]
|
||||
},
|
||||
"showHalo": {
|
||||
"text": "展示范围光环",
|
||||
"desc": ["开启后,会在地图上显示范围光环。"]
|
||||
},
|
||||
"showStudied": {
|
||||
"text": "展示已学习技能",
|
||||
"desc": [
|
||||
"开启后,会在画面内以类似状态栏的盒子的形式显示当前已学习的怪物技能。"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { ref, watch } from 'vue';
|
||||
import { has } from './utils';
|
||||
|
||||
/**
|
||||
* 打开和关闭ui时是否展示动画
|
||||
@ -21,6 +20,16 @@ export const autoSkill = ref(true);
|
||||
*/
|
||||
export const autoScale = ref(true);
|
||||
|
||||
/**
|
||||
* 是否在地图上展示范围光环
|
||||
*/
|
||||
export const showHalo = ref(true);
|
||||
|
||||
/**
|
||||
* 是否展示已学习的技能
|
||||
*/
|
||||
export const showStudied = ref(true);
|
||||
|
||||
watch(transition, n => {
|
||||
core.plugin.transition.value = n;
|
||||
core.setLocalStorage('transition', n);
|
||||
@ -41,6 +50,14 @@ watch(autoScale, n => {
|
||||
core.setLocalStorage('autoScale', n);
|
||||
});
|
||||
|
||||
watch(showStudied, n => {
|
||||
core.setLocalStorage('showStudied', n);
|
||||
});
|
||||
|
||||
watch(showHalo, n => {
|
||||
core.setLocalStorage('showHalo', n);
|
||||
});
|
||||
|
||||
/**
|
||||
* 重置设置信息,从localStorage读取即可
|
||||
*/
|
||||
@ -49,6 +66,8 @@ function reset() {
|
||||
transition.value = t;
|
||||
core.plugin.transition.value = transition.value;
|
||||
autoScale.value = core.getLocalStorage('autoScale', true);
|
||||
showStudied.value = core.getLocalStorage('showStudied', true);
|
||||
showHalo.value = core.getLocalStorage('showHalo', true);
|
||||
}
|
||||
|
||||
function resetFlag() {
|
||||
|
@ -21,11 +21,10 @@ export function getAddStatus(equip: Equip) {
|
||||
return (
|
||||
<div class="equip-add-detail">
|
||||
{keys.map(v => {
|
||||
const value =
|
||||
(equip.value[v] ?? 0) +
|
||||
Math.floor(
|
||||
const value = Math.floor(
|
||||
(equip.value[v] ?? 0) * core.getBuff(v) +
|
||||
(core.status.hero[v] * (equip.percentage[v] ?? 0)) / 100
|
||||
);
|
||||
);
|
||||
|
||||
return (
|
||||
<span style="display: flex">
|
||||
@ -72,7 +71,9 @@ export function getNowStatus(nowEquip?: Equip, onCol: boolean = false) {
|
||||
|
||||
let add = 0;
|
||||
if (has(nowEquip)) {
|
||||
add += nowEquip.value[v] ?? 0;
|
||||
add += Math.floor(
|
||||
(nowEquip.value[v] ?? 0) * core.getBuff(v)
|
||||
);
|
||||
const per = Math.floor(
|
||||
(nowEquip.percentage[v] * core.getStatus(v)) / 100
|
||||
);
|
||||
|
@ -18,6 +18,7 @@ export const descOpened = ref(false);
|
||||
export const skillOpened = ref(false);
|
||||
export const skillTreeOpened = ref(false);
|
||||
export const flyOpened = ref(false);
|
||||
export const showStudiedSkill = ref(false);
|
||||
|
||||
export const transition = ref(true);
|
||||
export const noClosePanel = ref(false);
|
||||
@ -67,7 +68,8 @@ export default function init() {
|
||||
descOpened,
|
||||
skillOpened,
|
||||
skillTreeOpened,
|
||||
flyOpened
|
||||
flyOpened,
|
||||
showStudiedSkill
|
||||
};
|
||||
}
|
||||
|
||||
|
27
src/source/cls.d.ts
vendored
@ -114,6 +114,9 @@ interface IdToCls {
|
||||
autotile5: 'autotile';
|
||||
autotile6: 'autotile';
|
||||
autotile7: 'autotile';
|
||||
autotile8: 'autotile';
|
||||
autotile9: 'autotile';
|
||||
autotile10: 'autotile';
|
||||
autotile1: 'autotile';
|
||||
autotile2: 'autotile';
|
||||
autotile3: 'autotile';
|
||||
@ -503,6 +506,30 @@ interface IdToCls {
|
||||
E577: 'enemys';
|
||||
E578: 'enemys';
|
||||
E579: 'enemys';
|
||||
T580: 'terrains';
|
||||
T581: 'terrains';
|
||||
T582: 'terrains';
|
||||
T583: 'terrains';
|
||||
T584: 'terrains';
|
||||
T585: 'terrains';
|
||||
T586: 'terrains';
|
||||
T587: 'terrains';
|
||||
T588: 'terrains';
|
||||
I589: 'items';
|
||||
E590: 'enemys';
|
||||
E591: 'enemys';
|
||||
E592: 'enemys';
|
||||
E593: 'enemys';
|
||||
E594: 'enemys';
|
||||
E595: 'enemys';
|
||||
E596: 'enemys';
|
||||
E597: 'enemys';
|
||||
E598: 'enemys';
|
||||
E599: 'enemys';
|
||||
E600: 'enemys';
|
||||
E601: 'enemys';
|
||||
E602: 'enemys';
|
||||
E603: 'enemys';
|
||||
X20037: 'tileset';
|
||||
X20038: 'tileset';
|
||||
X20039: 'tileset';
|
||||
|
18
src/source/data.d.ts
vendored
@ -39,6 +39,20 @@ type FloorIds =
|
||||
| 'MT29'
|
||||
| 'MT30'
|
||||
| 'MT31'
|
||||
| 'MT32'
|
||||
| 'MT33'
|
||||
| 'MT34'
|
||||
| 'MT35'
|
||||
| 'MT36'
|
||||
| 'MT37'
|
||||
| 'MT38'
|
||||
| 'MT39'
|
||||
| 'MT40'
|
||||
| 'MT41'
|
||||
| 'MT42'
|
||||
| 'MT43'
|
||||
| 'MT44'
|
||||
| 'MT45'
|
||||
|
||||
type ImageIds =
|
||||
| 'IQ.png'
|
||||
@ -148,7 +162,8 @@ type BgmIds =
|
||||
| 'grass.mp3'
|
||||
| 'mount.mp3'
|
||||
| 'night.mp3'
|
||||
| 'palace.mp3'
|
||||
| 'palaceNorth.mp3'
|
||||
| 'palaceSouth.mp3'
|
||||
| 'plot1.mp3'
|
||||
| 'road.mp3'
|
||||
| 'title.mp3'
|
||||
@ -157,6 +172,7 @@ type BgmIds =
|
||||
| 'towerBoss2.mp3'
|
||||
| 'towerBoss3.mp3'
|
||||
| 'winter.mp3'
|
||||
| 'winterTown.mp3'
|
||||
|
||||
type FontIds =
|
||||
| 'normal'
|
||||
|
1
src/source/items.d.ts
vendored
@ -184,4 +184,5 @@ interface ItemDeclaration {
|
||||
I565: 'constants';
|
||||
I574: 'items';
|
||||
I575: 'equips';
|
||||
I589: 'equips';
|
||||
}
|
54
src/source/maps.d.ts
vendored
@ -114,6 +114,9 @@ interface IdToNumber {
|
||||
autotile5: 142;
|
||||
autotile6: 143;
|
||||
autotile7: 144;
|
||||
autotile8: 145;
|
||||
autotile9: 146;
|
||||
autotile10: 147;
|
||||
autotile1: 151;
|
||||
autotile2: 152;
|
||||
autotile3: 153;
|
||||
@ -503,6 +506,30 @@ interface IdToNumber {
|
||||
E577: 577;
|
||||
E578: 578;
|
||||
E579: 579;
|
||||
T580: 580;
|
||||
T581: 581;
|
||||
T582: 582;
|
||||
T583: 583;
|
||||
T584: 584;
|
||||
T585: 585;
|
||||
T586: 586;
|
||||
T587: 587;
|
||||
T588: 588;
|
||||
I589: 589;
|
||||
E590: 590;
|
||||
E591: 591;
|
||||
E592: 592;
|
||||
E593: 593;
|
||||
E594: 594;
|
||||
E595: 595;
|
||||
E596: 596;
|
||||
E597: 597;
|
||||
E598: 598;
|
||||
E599: 599;
|
||||
E600: 600;
|
||||
E601: 601;
|
||||
E602: 602;
|
||||
E603: 603;
|
||||
X20037: 20037;
|
||||
X20038: 20038;
|
||||
X20039: 20039;
|
||||
@ -651,6 +678,9 @@ interface NumberToId {
|
||||
142: 'autotile5';
|
||||
143: 'autotile6';
|
||||
144: 'autotile7';
|
||||
145: 'autotile8';
|
||||
146: 'autotile9';
|
||||
147: 'autotile10';
|
||||
151: 'autotile1';
|
||||
152: 'autotile2';
|
||||
153: 'autotile3';
|
||||
@ -1040,6 +1070,30 @@ interface NumberToId {
|
||||
577: 'E577';
|
||||
578: 'E578';
|
||||
579: 'E579';
|
||||
580: 'T580';
|
||||
581: 'T581';
|
||||
582: 'T582';
|
||||
583: 'T583';
|
||||
584: 'T584';
|
||||
585: 'T585';
|
||||
586: 'T586';
|
||||
587: 'T587';
|
||||
588: 'T588';
|
||||
589: 'I589';
|
||||
590: 'E590';
|
||||
591: 'E591';
|
||||
592: 'E592';
|
||||
593: 'E593';
|
||||
594: 'E594';
|
||||
595: 'E595';
|
||||
596: 'E596';
|
||||
597: 'E597';
|
||||
598: 'E598';
|
||||
599: 'E599';
|
||||
600: 'E600';
|
||||
601: 'E601';
|
||||
602: 'E602';
|
||||
603: 'E603';
|
||||
20037: 'X20037';
|
||||
20038: 'X20038';
|
||||
20039: 'X20039';
|
||||
|
18
src/types/enemy.d.ts
vendored
@ -77,8 +77,8 @@ type Enemy<I extends EnemyIds = EnemyIds> = {
|
||||
*/
|
||||
type EnemySpecialDeclaration = [
|
||||
id: number,
|
||||
name: string | ((enemy: Enemy) => string),
|
||||
desc: string | ((enemy: Enemy) => string),
|
||||
name: string | ((enemy: EnemySpecialBase) => string),
|
||||
desc: string | ((enemy: EnemySpecialBase) => string),
|
||||
color: Color,
|
||||
extra?: number
|
||||
];
|
||||
@ -95,7 +95,14 @@ interface DamageString {
|
||||
color: Color;
|
||||
}
|
||||
|
||||
interface EnemyInfoBase {
|
||||
interface EnemySpecialBase {
|
||||
/**
|
||||
* 怪物特殊属性
|
||||
*/
|
||||
special: number[];
|
||||
}
|
||||
|
||||
interface EnemyInfoBase extends EnemySpecialBase {
|
||||
/**
|
||||
* 生命值
|
||||
*/
|
||||
@ -125,11 +132,6 @@ interface EnemyInfoBase {
|
||||
* 加点量
|
||||
*/
|
||||
point: number;
|
||||
|
||||
/**
|
||||
* 特殊属性列表
|
||||
*/
|
||||
special: number[];
|
||||
}
|
||||
|
||||
interface EnemyInfo extends EnemyInfoBase {
|
||||
|
3
src/types/plugin.d.ts
vendored
@ -175,6 +175,9 @@ interface PluginUis {
|
||||
/** 是否展示标记的怪物 */
|
||||
readonly showMarkedEnemy: Ref<boolean>;
|
||||
|
||||
/** 是否展示已学习的技能 */
|
||||
readonly showStudiedSkill: Ref<boolean>;
|
||||
|
||||
/** ui栈 */
|
||||
readonly uiStack: Ref<Component[]>;
|
||||
|
||||
|
5
src/types/status.d.ts
vendored
@ -53,6 +53,11 @@ interface CheckBlockStatus {
|
||||
* 缓存信息,是每个怪物受到的光环加成
|
||||
*/
|
||||
cache: Record<string, DeepReadonly<EnemyBuffCache>>;
|
||||
|
||||
/**
|
||||
* 光环信息
|
||||
*/
|
||||
halo: Record<LocString, string[]>;
|
||||
}
|
||||
|
||||
interface DamageStatus {
|
||||
|
@ -4,8 +4,9 @@
|
||||
><div id="desc-list">
|
||||
<div
|
||||
v-for="(data, k) in desc"
|
||||
class="selectable"
|
||||
class="selectable desc-item"
|
||||
:selected="selected === k"
|
||||
:show="show(data.condition)"
|
||||
@click="click(k)"
|
||||
>
|
||||
<span v-if="show(data.condition)">{{ data.text }}</span>
|
||||
@ -31,7 +32,7 @@ function exit() {
|
||||
}
|
||||
|
||||
const content = computed(() => {
|
||||
return splitText(desc[selected.value].desc);
|
||||
return eval('`' + splitText(desc[selected.value].desc) + '`');
|
||||
});
|
||||
|
||||
function click(key: DescKey) {
|
||||
@ -53,4 +54,9 @@ function show(condition: string) {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.desc-item[show='false'] {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
|
@ -9,6 +9,7 @@
|
||||
v-model:width="getBoxPos(v).width"
|
||||
v-model:height="getBoxPos(v).height"
|
||||
:resizable="true"
|
||||
:dragable="true"
|
||||
>
|
||||
<Scroll class="box-scroll" :no-scroll="true">
|
||||
<div class="marked-main">
|
||||
|
@ -34,6 +34,23 @@
|
||||
autoScale ? 'ON' : 'OFF'
|
||||
}}</span
|
||||
>
|
||||
<span
|
||||
class="selectable"
|
||||
:selected="selected === 'showHalo'"
|
||||
@click="click('showHalo')"
|
||||
>展示范围光环: {{
|
||||
showHalo ? 'ON' : 'OFF'
|
||||
}}</span
|
||||
>
|
||||
<span
|
||||
class="selectable"
|
||||
:selected="selected === 'showStudied'"
|
||||
v-if="core.getSkillLevel(11) > 0"
|
||||
@click="click('showStudied')"
|
||||
>展示已学习技能: {{
|
||||
showStudied ? 'ON' : 'OFF'
|
||||
}}</span
|
||||
>
|
||||
</div></template
|
||||
>
|
||||
<template #right><span v-html="descText"></span></template
|
||||
@ -46,7 +63,9 @@ import {
|
||||
transition,
|
||||
itemDetail,
|
||||
autoSkill,
|
||||
autoScale
|
||||
autoScale,
|
||||
showStudied,
|
||||
showHalo
|
||||
} from '../plugin/settings';
|
||||
import settingInfo from '../data/settings.json';
|
||||
import { has, splitText } from '../plugin/utils';
|
||||
@ -54,6 +73,8 @@ import Column from '../components/colomn.vue';
|
||||
|
||||
type Settings = typeof settingInfo;
|
||||
|
||||
const core = window.core;
|
||||
|
||||
const selected = ref<keyof Settings>('transition');
|
||||
|
||||
const descText = computed(() => {
|
||||
@ -77,6 +98,8 @@ function click(id: keyof Settings) {
|
||||
autoSkill.value = !autoSkill.value;
|
||||
} else if (id === 'autoScale') {
|
||||
autoScale.value = !autoScale.value;
|
||||
} else if (id === 'showHalo') {
|
||||
showHalo.value = !showHalo.value;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -1,6 +1,11 @@
|
||||
<template>
|
||||
<div id="status-bar">
|
||||
<Box :resizable="true" v-model:width="width" v-model:height="height">
|
||||
<Box
|
||||
:resizable="true"
|
||||
:dragable="true"
|
||||
v-model:width="width"
|
||||
v-model:height="height"
|
||||
>
|
||||
<Scroll
|
||||
id="status-main"
|
||||
v-model:update="updateStatus"
|
||||
@ -9,7 +14,7 @@
|
||||
<div id="status-div">
|
||||
<span
|
||||
id="status-floor"
|
||||
@click="viewMap"
|
||||
@click.stop="viewMap"
|
||||
class="button-text"
|
||||
>{{ floor }}</span
|
||||
>
|
||||
@ -271,7 +276,7 @@ function openStudy() {}
|
||||
|
||||
.status-extra {
|
||||
position: absolute;
|
||||
right: 15%;
|
||||
right: 10%;
|
||||
bottom: 0;
|
||||
font-size: 1.6vw;
|
||||
}
|
||||
|
115
src/ui/studied.vue
Normal file
@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<div id="studied">
|
||||
<Box
|
||||
:resizable="true"
|
||||
:dragable="true"
|
||||
v-model:width="width"
|
||||
v-model:height="height"
|
||||
v-model:left="left"
|
||||
v-model:top="top"
|
||||
>
|
||||
<Scroll :no-scroll="true" style="height: 100%">
|
||||
<div id="studied-main">
|
||||
<div v-for="(num, i) of studied" :key="i">
|
||||
<div id="studied-rough">
|
||||
<right-outlined
|
||||
:folded="!!folded[i]"
|
||||
@click="folded[i] = !folded[i]"
|
||||
id="studied-fold"
|
||||
/>
|
||||
<span
|
||||
>{{ i }}. {{ skills[i] }},剩余{{
|
||||
last[i]
|
||||
}}场战斗</span
|
||||
>
|
||||
</div>
|
||||
<div id="studied-detail" v-if="!folded[i]">
|
||||
{{ hint(num) }}
|
||||
</div>
|
||||
</div>
|
||||
</div></Scroll
|
||||
></Box
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, onMounted, onUpdated, reactive, ref, watch } from 'vue';
|
||||
import Box from '../components/box.vue';
|
||||
import { status } from '../plugin/ui/statusBar';
|
||||
import { RightOutlined } from '@ant-design/icons-vue';
|
||||
import Scroll from '../components/scroll.vue';
|
||||
|
||||
watch(status, n => {});
|
||||
|
||||
let main: HTMLDivElement;
|
||||
|
||||
const width = ref(200);
|
||||
const height = ref(0);
|
||||
const left = ref(window.innerWidth - 300);
|
||||
const top = ref(window.innerHeight - 300);
|
||||
|
||||
const folded = reactive<boolean[]>([]);
|
||||
|
||||
const studied = computed(() => {
|
||||
status.value;
|
||||
return core.status.hero.special?.num ?? [];
|
||||
});
|
||||
|
||||
const last = computed(() => {
|
||||
status.value;
|
||||
return core.status.hero.special?.last ?? [];
|
||||
});
|
||||
|
||||
const skills = computed(() => {
|
||||
const specials = core.getSpecials();
|
||||
return studied.value.map(v => {
|
||||
const s = specials[v - 1][1];
|
||||
// @ts-ignore
|
||||
if (s instanceof Function) return s(core.status.hero.special);
|
||||
else return s;
|
||||
});
|
||||
});
|
||||
|
||||
function hint(number: number) {
|
||||
const specials = core.getSpecials();
|
||||
const s = specials[number - 1][2];
|
||||
// @ts-ignore
|
||||
if (s instanceof Function) return s(core.status.hero.special);
|
||||
else return s;
|
||||
}
|
||||
|
||||
async function calHeight() {
|
||||
await new Promise<void>(resolve => {
|
||||
requestAnimationFrame(() => {
|
||||
const style = getComputedStyle(main);
|
||||
height.value = parseFloat(style.height);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
onUpdated(() => {
|
||||
calHeight();
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
main = document.getElementById('studied-main') as HTMLDivElement;
|
||||
calHeight();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
#studied {
|
||||
font-family: 'normal';
|
||||
font-size: 1vw;
|
||||
}
|
||||
|
||||
#studied-fold {
|
||||
transition: transform 0.2s ease-out;
|
||||
}
|
||||
|
||||
#studied-fold[folded='true'] {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
</style>
|