Compare commits
21 Commits
8b267f3745
...
bb41bad059
Author | SHA1 | Date | |
---|---|---|---|
bb41bad059 | |||
4609a85797 | |||
4936449f67 | |||
1eec945d93 | |||
d5fde8eaca | |||
6c4515a3ef | |||
089956431f | |||
13f3a69173 | |||
df22828641 | |||
4ef2280dc1 | |||
![]() |
a10e4018b4 | ||
d36f936f6f | |||
f2c4d83671 | |||
83dfd91c2a | |||
e7413191f9 | |||
38979d5040 | |||
c1263db1af | |||
c5c1e12d8b | |||
![]() |
6ba9415c32 | ||
b3da61870c | |||
24807dffe0 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
_saves/
|
||||||
|
_server/config.json
|
@ -1 +0,0 @@
|
|||||||
1
|
|
@ -1 +0,0 @@
|
|||||||
N4IgZgNg9lBOCSATEAuEBnALrApjzADAIwgA0IAFjrFKqAJYC2AhgOY6qXVQB0A7jgBGABzIhmAOybNMHFGGYR0OchOaM5IAMLMmYiADdURchWEsAHqgCct66dEoiBF+RZrLqALQmQ75qgE5DIA1sauIIg4YOFBflExKHHownjISW5QEjgAnoHkOBaOcTgAjgCu9OY4EpioANoAuuT0sozodCAAxllYkpgdKKCCMGFO5JB5TgC+5JgwSnSzIGWVwoOg6HxwiCQzy9BdnYj0uF2Y9Fmc5aLkVigArORTzsuQbBsgrTiMACL4uggqGw5RUIHKygAQvgBDUADL0VgUOooEFggD66OUOEQmOMAHYAGwEawADgATOSACxxTGwSS49EE4lkyk04K4ZiDeqgDyaAA65SpOAIgkFDy6VPJYhY6wa2l0jAoUA0IEas156gFQpFYvKEqlMuYcpQ9RAACt6OVWOVJGqNSA+ZxBcLReLJdK3MbuSAANIAFQAavbSJrVWhBfjyYTyZHyWASF6TWaA4GAGLS9Whx1a53lKMxuMJo3JkCsKAQRAhXIhsPa116g2evze+WCegUCHlWhZut513Md2GpM+y3MKCYSSsWs58MgF0iwf6j0ln3oKgSVgSAzK1W92f1xdD5uytcUejb3ccfdOiP56Ox+/Fkfyy048cz2/z++Fp+JlullguD4MQYhAXghDNjaU5dBQU5iNBm6wVOzYWPQ45oVOoF3OhUCYZuBCobh+GsAAzJ+uYoBI5QQBAL6miAOT0BUJA3pR1G0fRZpMRUmYOreHF0QBPo8eU5FseGglcYxzFChRkk0UJp7yqJDzyXIUnCSpsmEupqCacpDGifielUYp0miaSpkGa2RmydY1nmVpdksQQ9rNBgIRVKgChKGCcGwOktLogFiBaBWcB4mguDIOQmLfIwAASF6YFFTRxeiEA4MwBg4HCUBdFFwDLJiBj0Og3yMp04EgXsaLLIIMJ4BIACCmCTl0IS/DIARmZxICYswOD0GlHmYic6DMIIWVVUMGDYBBoGmvURCkQ8zRNOqbwVtAAiwNyHlYDgJq+H0FxYPQXSfPMk4QP6TByOSDxEEQUpRjwhJ2C91hPN05SwLA93hkQDxUtYPCkXYUNQ4SDj5CAggyJgWXw4wWQ1hkKxFPDiPtVl3UsOw8PCFA5VZATbByCUFjYMwFNE5jaO5b8pw4OcEBTHEiISHAOAAMqyCaySTrAKKElSDykTwVLTMsoWcKu1ULbVnSyg0QQa6Qmva1ruv1D4pAG0bJgG0ExuGyblsWxbzQa1t5A0OUsicL6UAZloVKsAAvGIBiKKCGzLLl+2XBIebWDgpGIOKggPAQkbMNY0flNYhHx/qpKg+6BBgIK1iEkQMTkDa9DpCA5LMIghKEog1iFYgYBgFS6JUqSifooIVKEmA6JgIgU0EDgNJV3gYgXMD+KkficfWKRBBSi40xAA==
|
|
@ -854,6 +854,8 @@ action
|
|||||||
| waitAsync_s
|
| waitAsync_s
|
||||||
| stopAsync_s
|
| stopAsync_s
|
||||||
| op_s
|
| op_s
|
||||||
|
| setmusics_s
|
||||||
|
| introAndLoop_s
|
||||||
| battle_s
|
| battle_s
|
||||||
| battle_1_s
|
| battle_1_s
|
||||||
| openDoor_s
|
| openDoor_s
|
||||||
@ -963,8 +965,7 @@ action
|
|||||||
| animationDrawable_s
|
| animationDrawable_s
|
||||||
| over_s
|
| over_s
|
||||||
| overlist_s
|
| overlist_s
|
||||||
| playStereo_s
|
| cgtextList_s
|
||||||
| moveStereo_s
|
|
||||||
| pass_s
|
| pass_s
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1123,22 +1124,33 @@ overtextEmpty
|
|||||||
var code = [];
|
var code = [];
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
cgtextList_s
|
||||||
|
: '切换剧情文本库' EvalString Newline
|
||||||
|
|
||||||
|
|
||||||
|
/* cgtextList_s
|
||||||
|
tooltip : cgtextList:设置cg剧情文本库
|
||||||
|
helpUrl : /_docs/#/instruction
|
||||||
|
default : ["chapter0"]
|
||||||
|
var code = '{"type": "cgtextList", "textList":"'+EvalString_0+'"},\n';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
cgtext_s
|
cgtext_s
|
||||||
: '背景' EvalString? '回忆滤镜' Bool? '移除对话框' Bool? '头像' EvalString?'名字' EvalString?'坐标PX' Number'打字间隔' Int? BGNL? Newline
|
: '背景' EvalString? '回忆滤镜' Bool? '移除对话框' Bool? '剧情库序列' Int '头像' EvalString?'坐标PX' Number'打字间隔' Int? BGNL? Newline
|
||||||
'自动等待时长' Int '音频文件(需在全塔属性——使用音效注册)'EvalString? BGNL? Newline
|
'自动等待时长' Int '音频文件(需在全塔属性——使用音效注册)'EvalString? BGNL? Newline
|
||||||
EvalString? BGNL? Newline textcgDrawingList+? Newline
|
textcgDrawingList+? Newline
|
||||||
|
|
||||||
|
|
||||||
/* cgtext_s
|
/* cgtext_s
|
||||||
tooltip : cgtext:显示一段包含cg的文字(剧情)
|
tooltip : cgtext:显示一段包含cg的文字(剧情)
|
||||||
helpUrl : /_docs/#/instruction
|
helpUrl : /_docs/#/instruction
|
||||||
allImages : ['EvalString_0','EvalString_1']
|
allImages : ['EvalString_0','EvalString_1']
|
||||||
allSounds : ['EvalString_3']
|
allSounds : ['EvalString_2']
|
||||||
default : ["bg_5043.webp",false,"face_050445.webp",false,"菲奥奈",-300,0,2000,"","这句话显示在对话框内",[{ "name":"tati_050145a.webp" , "px": 100,"filter":false }]]
|
default : ["bg_5043.webp",false,false,0,"face_050445.webp",-300,0,2000,"","这句话显示在对话框内",[{ "name":"tati_050145a.webp" , "px": 100,"filter":false }]]
|
||||||
var head ='{ "name": "'+EvalString_1+'", "px": '+Number_0+' }'
|
var head ='{ "name": "'+EvalString_1+'", "px": '+Number_0+' }'
|
||||||
var list=',"bodyList": [\n'+textcgDrawingList_0.slice(0,-1)+'\n]'
|
var list=',"bodyList": [\n'+textcgDrawingList_0.slice(0,-1)+'\n]'
|
||||||
var code = '{"type": "cgtext", "bg":"'+EvalString_0+'","memory":'+Bool_0+',"WindowSkin":'+Bool_1+',"head":'+head+' ,"name":"'+EvalString_2+'","time":'+Int_0+',"wait":'+Int_1+',"sound":"'+EvalString_3+'","text": "'+EvalString_4+'"'+list+' },\n';
|
var code = '{"type": "cgtext", "bg":"'+EvalString_0+'","memory":'+Bool_0+',"WindowSkin":'+Bool_1+',"head":'+head+' ,"index":"'+Int_0+'","time":'+Int_1+',"wait":'+Int_2+',"sound":"'+EvalString_2+'"'+list+' },\n';
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
textcgDrawingList
|
textcgDrawingList
|
||||||
@ -2612,6 +2624,23 @@ var code = '{"type": "setq"'+IdString_0+'},\n';
|
|||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
|
introAndLoop_s
|
||||||
|
: '前奏音乐文件'EvalString? '前奏音乐文件播放时长(可填小数,单位为秒)'EvalString'循环音乐文件'EvalString? Newline
|
||||||
|
|
||||||
|
/* introAndLoop_s
|
||||||
|
tooltip : introAndLoop:设置任务目标楼层(显示在小地图)
|
||||||
|
helpUrl : /_docs/#/instruction
|
||||||
|
default : ["",1,""]
|
||||||
|
allBgms : ['EvalString_0','EvalString_2']
|
||||||
|
colour :this.imageColor
|
||||||
|
if(EvalString_1&&!/^(0|([1-9][0-9]*))(\.[\d]+)?$/.test(EvalString_1))throw new Error("此项仅能填写小数或整数,单位为秒");
|
||||||
|
EvalString_0 = EvalString_0 ? (', "intro": "'+EvalString_0+'"') : '';
|
||||||
|
EvalString_1= EvalString_1 ? (', "time": '+EvalString_1+'') : '';
|
||||||
|
EvalString_2 = EvalString_2 ? (', "loop": "'+EvalString_2+'"') : '';
|
||||||
|
var code = '{"type": "introAndLoop"'+EvalString_0+EvalString_1+EvalString_2+'},\n';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
|
|
||||||
setcgs_s
|
setcgs_s
|
||||||
: 'cg回廊获取cg 文件名'EvalString?'不填为清空cg获取记录' Newline
|
: 'cg回廊获取cg 文件名'EvalString?'不填为清空cg获取记录' Newline
|
||||||
@ -2621,12 +2650,26 @@ tooltip : setcgs:cg回廊中的cg获取
|
|||||||
helpUrl : /_docs/#/instruction
|
helpUrl : /_docs/#/instruction
|
||||||
default : [""]
|
default : [""]
|
||||||
allImages : ['EvalString_0']
|
allImages : ['EvalString_0']
|
||||||
colour : this.imageColor
|
colour : this.soundColor
|
||||||
EvalString_0 = EvalString_0 ? (', "img": "'+EvalString_0+'"') : '';
|
EvalString_0 = EvalString_0 ? (', "img": "'+EvalString_0+'"') : '';
|
||||||
var code = '{"type": "setcgs"'+EvalString_0+'},\n';
|
var code = '{"type": "setcgs"'+EvalString_0+'},\n';
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
|
setmusics_s
|
||||||
|
: '音乐鉴赏music 文件名'EvalString?'不填为清空music获取记录' Newline
|
||||||
|
|
||||||
|
/* setmusics_s
|
||||||
|
tooltip : setmusics:音乐鉴赏中的隐藏music获取
|
||||||
|
helpUrl : /_docs/#/instruction
|
||||||
|
default : [""]
|
||||||
|
allBgms : ['EvalString_0']
|
||||||
|
colour : this.soundColor
|
||||||
|
EvalString_0 = EvalString_0 ? (', "bgm": "'+EvalString_0+'"') : '';
|
||||||
|
var code = '{"type": "setmusics"'+EvalString_0+'},\n';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
scaleImage_s
|
scaleImage_s
|
||||||
: '图片放缩' '图片编号' NInt '中心点像素' 'x' PosString? 'y' PosString? '移动方式' MoveMode_List BGNL? '放缩比例' Number '动画时间' Int '不等待执行完毕' Bool Newline
|
: '图片放缩' '图片编号' NInt '中心点像素' 'x' PosString? 'y' PosString? '移动方式' MoveMode_List BGNL? '放缩比例' Number '动画时间' Int '不等待执行完毕' Bool Newline
|
||||||
|
|
||||||
@ -3045,39 +3088,8 @@ var code = '{"type": "playSound", "name": "'+EvalString_0+'"'+Bool_0+IntString_0
|
|||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
playStereo_s
|
|
||||||
: '播放音效(立体音)' EvalString '左声道音量' Int '右声道音量' Int '启用立体音' Bool? Newline
|
|
||||||
|
|
||||||
|
|
||||||
/* playStereo_s
|
|
||||||
tooltip : playSound: 播放音效(立体音)
|
|
||||||
helpUrl : /_docs/#/instruction
|
|
||||||
default : ["item.mp3",1,1,true]
|
|
||||||
colour : this.imageColor
|
|
||||||
allSounds : ['EvalString_0']
|
|
||||||
material : ["./project/sounds/", "EvalString_0"]
|
|
||||||
|
|
||||||
var code = '{"type": "playStereo", "name": "'+EvalString_0+'", "left": '+Int_0+', "right": '+Int_1+', "split": '+Bool_0+'},\n';
|
|
||||||
return code;
|
|
||||||
*/;
|
|
||||||
|
|
||||||
moveStereo_s
|
|
||||||
: '播放渐变音效(立体音)' EvalString '左声道音量' Int '右声道音量' Int '启用立体音' Bool? BGNL? Newline
|
|
||||||
'左声道目标音量' Int '右声道目标音量' Int '渐变时长'Int Newline
|
|
||||||
|
|
||||||
|
|
||||||
/* moveStereo_s
|
|
||||||
tooltip : playSound: 播放渐变音效(立体音)
|
|
||||||
helpUrl : /_docs/#/instruction
|
|
||||||
default : ["item.mp3",1,1,true,10,10,1000]
|
|
||||||
colour : this.imageColor
|
|
||||||
allSounds : ['EvalString_0']
|
|
||||||
material : ["./project/sounds/", "EvalString_0"]
|
|
||||||
|
|
||||||
var code = '{"type": "moveStereo", "name": "'+EvalString_0+'", "left": '+Int_0+', "right": '+Int_1+', "split": '+Bool_0+', "leftTo": '+Int_2+', "rightTo": '+Int_3+', "time": '+Int_4+'},\n';
|
|
||||||
return code;
|
|
||||||
*/;
|
|
||||||
|
|
||||||
playSound_1_s
|
playSound_1_s
|
||||||
: '播放系统音效' NameMap_List '停止之前音效' Bool? '音调' IntString? '等待播放完毕' Bool? Newline
|
: '播放系统音效' NameMap_List '停止之前音效' Bool? '音调' IntString? '等待播放完毕' Bool? Newline
|
||||||
|
|
||||||
|
@ -542,6 +542,12 @@ MotaActionParser = function () {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "cgtextList":
|
||||||
|
this.next = MotaActionBlocks["cgtextList_s"].xmlText([
|
||||||
|
data.textList,
|
||||||
|
this.next,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
case "cgtext": // cg对话框
|
case "cgtext": // cg对话框
|
||||||
var buildcgDrawing = function (obj) {
|
var buildcgDrawing = function (obj) {
|
||||||
obj = MotaActionFunctions.processcgDrawing(obj || []);
|
obj = MotaActionFunctions.processcgDrawing(obj || []);
|
||||||
@ -563,13 +569,12 @@ MotaActionParser = function () {
|
|||||||
data.bg,
|
data.bg,
|
||||||
data.memory,
|
data.memory,
|
||||||
data.WindowSkin,
|
data.WindowSkin,
|
||||||
|
data.index,
|
||||||
data.head.name,
|
data.head.name,
|
||||||
data.name || "",
|
|
||||||
data.head.px || -300,
|
data.head.px || -300,
|
||||||
data.time,
|
data.time,
|
||||||
data.wait,
|
data.wait,
|
||||||
data.sound,
|
data.sound,
|
||||||
data.text,
|
|
||||||
buildcgDrawing(data.bodyList),
|
buildcgDrawing(data.bodyList),
|
||||||
this.next,
|
this.next,
|
||||||
]);
|
]);
|
||||||
@ -620,6 +625,20 @@ MotaActionParser = function () {
|
|||||||
case "setcgs":
|
case "setcgs":
|
||||||
this.next = MotaActionBlocks["setcgs_s"].xmlText([data.img, this.next]);
|
this.next = MotaActionBlocks["setcgs_s"].xmlText([data.img, this.next]);
|
||||||
break;
|
break;
|
||||||
|
case "setmusics":
|
||||||
|
this.next = MotaActionBlocks["setmusics_s"].xmlText([
|
||||||
|
data.bgm,
|
||||||
|
this.next,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
case "introAndLoop":
|
||||||
|
this.next = MotaActionBlocks["introAndLoop_s"].xmlText([
|
||||||
|
data.intro,
|
||||||
|
data.time,
|
||||||
|
data.loop,
|
||||||
|
this.next,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
case "comment": // 注释
|
case "comment": // 注释
|
||||||
this.next = MotaActionBlocks["comment_s"].xmlText([
|
this.next = MotaActionBlocks["comment_s"].xmlText([
|
||||||
this.EvalString_Multi(data.text),
|
this.EvalString_Multi(data.text),
|
||||||
@ -1506,27 +1525,6 @@ MotaActionParser = function () {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "playStereo":
|
|
||||||
this.next = MotaActionBlocks["playStereo_s"].xmlText([
|
|
||||||
data.name,
|
|
||||||
data.left,
|
|
||||||
data.right,
|
|
||||||
data.split || true,
|
|
||||||
this.next,
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
case "moveStereo":
|
|
||||||
this.next = MotaActionBlocks["moveStereo_s"].xmlText([
|
|
||||||
data.name,
|
|
||||||
data.left,
|
|
||||||
data.right,
|
|
||||||
data.split || true,
|
|
||||||
data.leftTo,
|
|
||||||
data.rightTo,
|
|
||||||
data.time,
|
|
||||||
this.next,
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
case "playSound":
|
case "playSound":
|
||||||
var knownItems = MotaActionBlocks["NameMap_List"].options.map(function (
|
var knownItems = MotaActionBlocks["NameMap_List"].options.map(function (
|
||||||
one
|
one
|
||||||
|
@ -1 +0,0 @@
|
|||||||
{ "viewportLoc": [0, 0], "editorLastFloorId": "jiedao" }
|
|
@ -389,7 +389,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"enemys_template": { 'name': '新敌人', 'hp': 0, 'atk': 0, 'def': 0, 'money': 0, 'exp': 0, 'point': 0, 'special': [] },
|
"enemys_template": { 'name': '新敌人', 'hp': 0, 'atk': 0, 'def': 0, 'mdef': 0, 'speed': 0, 'money': 0, 'exp': 0, 'point': 0, 'special': [] },
|
||||||
|
|
||||||
|
|
||||||
// --------------------------- 【图块属性】相关的表格配置 --------------------------- //
|
// --------------------------- 【图块属性】相关的表格配置 --------------------------- //
|
||||||
|
@ -122,6 +122,12 @@ var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
|
|||||||
"_type": "textarea",
|
"_type": "textarea",
|
||||||
"_range": "typeof(thiseval)=='string' || thiseval==null",
|
"_range": "typeof(thiseval)=='string' || thiseval==null",
|
||||||
"_data": "音乐鉴赏"
|
"_data": "音乐鉴赏"
|
||||||
|
},
|
||||||
|
"intro&loop": {
|
||||||
|
"_leaf": true,
|
||||||
|
"_type": "textarea",
|
||||||
|
"_range": "typeof(thiseval)=='string' || thiseval==null",
|
||||||
|
"_data": "背景音乐拼接"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (obj[key]) return obj[key];
|
if (obj[key]) return obj[key];
|
||||||
|
6529
libs/control.js
6529
libs/control.js
File diff suppressed because it is too large
Load Diff
7045
libs/events.js
7045
libs/events.js
File diff suppressed because it is too large
Load Diff
1164
libs/loader.js
1164
libs/loader.js
File diff suppressed because it is too large
Load Diff
7
main.js
7
main.js
@ -492,7 +492,6 @@ main.prototype.selectButton = function (index) {
|
|||||||
main.prototype.importFonts = function (fonts) {
|
main.prototype.importFonts = function (fonts) {
|
||||||
if (!(fonts instanceof Array) || fonts.length == 0) return;
|
if (!(fonts instanceof Array) || fonts.length == 0) return;
|
||||||
var style = document.createElement("style");
|
var style = document.createElement("style");
|
||||||
style.type = "text/css";
|
|
||||||
var html = "";
|
var html = "";
|
||||||
fonts.forEach(function (font) {
|
fonts.forEach(function (font) {
|
||||||
html +=
|
html +=
|
||||||
@ -910,7 +909,7 @@ main.prototype.listen = function () {
|
|||||||
////// 点击“开始游戏”时 //////
|
////// 点击“开始游戏”时 //////
|
||||||
main.dom.playGame.onclick = function () {
|
main.dom.playGame.onclick = function () {
|
||||||
main.dom.startButtons.style.display = "none";
|
main.dom.startButtons.style.display = "none";
|
||||||
main.core.control.checkBgm();
|
main.core.checkBgm();
|
||||||
|
|
||||||
if (main.levelChoose.length == 0) {
|
if (main.levelChoose.length == 0) {
|
||||||
core.events.startGame("");
|
core.events.startGame("");
|
||||||
@ -923,13 +922,13 @@ main.prototype.listen = function () {
|
|||||||
|
|
||||||
////// 点击“载入游戏”时 //////
|
////// 点击“载入游戏”时 //////
|
||||||
main.dom.loadGame.onclick = function () {
|
main.dom.loadGame.onclick = function () {
|
||||||
main.core.control.checkBgm();
|
main.core.checkBgm();
|
||||||
main.core.load();
|
main.core.load();
|
||||||
};
|
};
|
||||||
|
|
||||||
////// 点击“录像回放”时 //////
|
////// 点击“录像回放”时 //////
|
||||||
main.dom.replayGame.onclick = function () {
|
main.dom.replayGame.onclick = function () {
|
||||||
main.core.control.checkBgm();
|
main.core.checkBgm();
|
||||||
main.core.chooseReplayFile();
|
main.core.chooseReplayFile();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
BIN
project/bgms/Ascension.opus
Normal file
BIN
project/bgms/Ascension.opus
Normal file
Binary file not shown.
Binary file not shown.
BIN
project/bgms/Blood_Stain.opus
Normal file
BIN
project/bgms/Blood_Stain.opus
Normal file
Binary file not shown.
BIN
project/bgms/Halbmond.opus
Normal file
BIN
project/bgms/Halbmond.opus
Normal file
Binary file not shown.
BIN
project/bgms/ed.opus
Normal file
BIN
project/bgms/ed.opus
Normal file
Binary file not shown.
Binary file not shown.
@ -897,9 +897,13 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
|||||||
"zone"
|
"zone"
|
||||||
],
|
],
|
||||||
"bgms": [
|
"bgms": [
|
||||||
|
"Ascension.opus",
|
||||||
"Asphodelus_Ceui.opus",
|
"Asphodelus_Ceui.opus",
|
||||||
"Blind_Alley.opus",
|
"Blind_Alley.opus",
|
||||||
|
"Blood_Stain.opus",
|
||||||
"Crawler.opus",
|
"Crawler.opus",
|
||||||
|
"Halbmond.opus",
|
||||||
|
"ed.opus",
|
||||||
"op.opus",
|
"op.opus",
|
||||||
"theme.opus"
|
"theme.opus"
|
||||||
],
|
],
|
||||||
@ -994,7 +998,6 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
|||||||
"aiy820000010.opus",
|
"aiy820000010.opus",
|
||||||
"aiy820000020.opus",
|
"aiy820000020.opus",
|
||||||
"attack.opus",
|
"attack.opus",
|
||||||
"attack.opus",
|
|
||||||
"bomb.opus",
|
"bomb.opus",
|
||||||
"cancel.opus",
|
"cancel.opus",
|
||||||
"centerFly.opus",
|
"centerFly.opus",
|
||||||
@ -1019,6 +1022,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
|||||||
],
|
],
|
||||||
"fonts": [
|
"fonts": [
|
||||||
"HATTEN",
|
"HATTEN",
|
||||||
|
"Verdana",
|
||||||
"number",
|
"number",
|
||||||
"pala",
|
"pala",
|
||||||
"simhei"
|
"simhei"
|
||||||
@ -1441,7 +1445,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "function",
|
"type": "function",
|
||||||
"function": "function(){\ncore.control.checkBgm()\n}"
|
"function": "function(){\ncore.checkBgm()\n}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "if",
|
"type": "if",
|
||||||
@ -1489,6 +1493,10 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
|||||||
"type": "setValue",
|
"type": "setValue",
|
||||||
"name": "item:fly",
|
"name": "item:fly",
|
||||||
"value": "1"
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "insert",
|
||||||
|
"name": "强制横屏"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"shops": [
|
"shops": [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
|
||||||
{
|
{
|
||||||
"greenSlime": {"name":"绿头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0},
|
"greenSlime": {"name":"绿头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0,"magic":false},
|
||||||
"redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"value":10},
|
"redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"value":10,"magic":false},
|
||||||
"blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0},
|
"blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0},
|
||||||
"slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]},
|
"slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]},
|
||||||
"bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":[1]},
|
"bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":[1]},
|
||||||
|
1436
project/events.js
1436
project/events.js
File diff suppressed because it is too large
Load Diff
@ -26,58 +26,31 @@ main.floors.street01=
|
|||||||
"direction": "up"
|
"direction": "up"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"10,11": [
|
||||||
|
{
|
||||||
|
"type": "setmusics",
|
||||||
|
"bgm": "op.opus"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"10,10": [
|
||||||
|
{
|
||||||
|
"type": "setmusics",
|
||||||
|
"bgm": "ed.opus"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "setmusics",
|
||||||
|
"bgm": "Asphodelus_Ceui.opus"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"10,9": [
|
||||||
|
{
|
||||||
|
"type": "setmusics"
|
||||||
|
}
|
||||||
|
],
|
||||||
"6,11": [
|
"6,11": [
|
||||||
{
|
{
|
||||||
"type": "insert",
|
"type": "insert",
|
||||||
"name": "chapter04"
|
"name": "chapter01"
|
||||||
}
|
|
||||||
],
|
|
||||||
"4,11": [
|
|
||||||
{
|
|
||||||
"type": "animationDrawable",
|
|
||||||
"allFarme": 300,
|
|
||||||
"color": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"imageList": [
|
|
||||||
{
|
|
||||||
"image": "bg_1511.webp",
|
|
||||||
"beforefarme": 50,
|
|
||||||
"globalAlpha": 0,
|
|
||||||
"afterfarme": 250,
|
|
||||||
"aglobalAlpha": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"image": "eve_010304.webp",
|
|
||||||
"beforefarme": 70,
|
|
||||||
"globalAlpha": 0,
|
|
||||||
"afterfarme": 170,
|
|
||||||
"aglobalAlpha": 100,
|
|
||||||
"ax": 0,
|
|
||||||
"ay": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"image": "eve_010304.webp",
|
|
||||||
"beforefarme": 171,
|
|
||||||
"globalAlpha": 100,
|
|
||||||
"afterfarme": 270,
|
|
||||||
"aglobalAlpha": 100,
|
|
||||||
"ax": 800,
|
|
||||||
"ay": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"soundList": [
|
|
||||||
{
|
|
||||||
"sound": "",
|
|
||||||
"startfarme": 0,
|
|
||||||
"stopbefore": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "op"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
BIN
project/fonts/Verdana.ttf
Normal file
BIN
project/fonts/Verdana.ttf
Normal file
Binary file not shown.
@ -94,73 +94,73 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
"changingFloor": function (floorId, heroLoc) {
|
"changingFloor": function (floorId, heroLoc) {
|
||||||
// 正在切换楼层过程中执行的操作;此函数的执行时间是“屏幕完全变黑“的那一刻
|
// 正在切换楼层过程中执行的操作;此函数的执行时间是“屏幕完全变黑“的那一刻
|
||||||
// floorId为要切换到的楼层ID;heroLoc表示勇士切换到的位置
|
// floorId为要切换到的楼层ID;heroLoc表示勇士切换到的位置
|
||||||
|
|
||||||
// ---------- 此时还没有进行切换,当前floorId还是原来的 ---------- //
|
// ---------- 此时还没有进行切换,当前floorId还是原来的 ---------- //
|
||||||
var currentId = core.status.floorId || null; // 获得当前的floorId,可能为null
|
var currentId = core.status.floorId || null; // 获得当前的floorId,可能为null
|
||||||
var fromLoad = core.hasFlag('__fromLoad__'); // 是否是读档造成的切换
|
var fromLoad = core.hasFlag('__fromLoad__'); // 是否是读档造成的切换
|
||||||
var isFlying = core.hasFlag('__isFlying__'); // 是否是楼传造成的切换
|
var isFlying = core.hasFlag('__isFlying__'); // 是否是楼传造成的切换
|
||||||
if (!fromLoad && !(isFlying && currentId == floorId)) {
|
if (!fromLoad && !(isFlying && currentId == floorId)) {
|
||||||
if (!core.hasFlag("__leaveLoc__")) core.setFlag("__leaveLoc__", {});
|
if (!core.hasFlag("__leaveLoc__")) core.setFlag("__leaveLoc__", {});
|
||||||
if (currentId != null) core.getFlag("__leaveLoc__")[currentId] = core.clone(core.status.hero.loc);
|
if (currentId != null) core.getFlag("__leaveLoc__")[currentId] = core.clone(core.status.hero.loc);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 可以对currentId进行判定,比如删除某些自定义图层等
|
||||||
|
// if (currentId == 'MT0') {
|
||||||
|
// core.deleteAllCanvas();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 根据分区信息自动砍层与恢复
|
||||||
|
if (core.autoRemoveMaps) core.autoRemoveMaps(floorId);
|
||||||
|
|
||||||
|
// 重置画布尺寸
|
||||||
|
core.maps.resizeMap(floorId);
|
||||||
|
// 设置勇士的位置
|
||||||
|
heroLoc.direction = core.turnDirection(heroLoc.direction);
|
||||||
|
core.status.hero.loc = heroLoc;
|
||||||
|
// 检查重生怪并重置
|
||||||
|
if (!fromLoad) {
|
||||||
|
core.extractBlocks(floorId);
|
||||||
|
core.status.maps[floorId].blocks.forEach(function (block) {
|
||||||
|
if (block.disable && core.enemys.hasSpecial(block.event.id, 23)) {
|
||||||
|
block.disable = false;
|
||||||
|
core.setMapBlockDisabled(floorId, block.x, block.y, false);
|
||||||
|
core.maps._updateMapArray(floorId, block.x, block.y);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
core.control.gatherFollowers();
|
||||||
|
}
|
||||||
|
|
||||||
// 可以对currentId进行判定,比如删除某些自定义图层等
|
// ---------- 重绘新地图;这一步将会设置core.status.floorId ---------- //
|
||||||
// if (currentId == 'MT0') {
|
core.drawMap(floorId);
|
||||||
// core.deleteAllCanvas();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 根据分区信息自动砍层与恢复
|
// 切换楼层BGM
|
||||||
if (core.autoRemoveMaps) core.autoRemoveMaps(floorId);
|
if (core.status.maps[floorId].bgm) {
|
||||||
|
var bgm = core.status.maps[floorId].bgm;
|
||||||
|
if (bgm instanceof Array) bgm = bgm[Math.floor(Math.random() * bgm.length)]; // 多个bgm则随机播放一个
|
||||||
|
if (!core.hasFlag("__bgm__")) core.playBgm(bgm);
|
||||||
|
} else if (fromLoad && !core.hasFlag("__bgm__")) {
|
||||||
|
core.pauseBgm();
|
||||||
|
}
|
||||||
|
// 更改画面色调
|
||||||
|
var color = core.getFlag('__color__', null);
|
||||||
|
if (!color && core.status.maps[floorId].color)
|
||||||
|
color = core.status.maps[floorId].color;
|
||||||
|
core.clearMap('curtain');
|
||||||
|
core.status.curtainColor = color;
|
||||||
|
if (color) core.fillRect('curtain', 0, 0, core._PX_ || core.__PIXELS__, core._PY_ || core.__PIXELS__, core.arrayToRGBA(color));
|
||||||
|
// 更改天气
|
||||||
|
var weather = core.getFlag('__weather__', null);
|
||||||
|
if (!weather && core.status.maps[floorId].weather)
|
||||||
|
weather = core.status.maps[floorId].weather;
|
||||||
|
if (weather)
|
||||||
|
core.setWeather(weather[0], weather[1]);
|
||||||
|
else core.setWeather();
|
||||||
|
|
||||||
// 重置画布尺寸
|
// ...可以新增一些其他内容,比如创建个画布在右上角显示什么内容等等
|
||||||
core.maps.resizeMap(floorId);
|
|
||||||
// 设置勇士的位置
|
|
||||||
heroLoc.direction = core.turnDirection(heroLoc.direction);
|
|
||||||
core.status.hero.loc = heroLoc;
|
|
||||||
// 检查重生怪并重置
|
|
||||||
if (!fromLoad) {
|
|
||||||
core.extractBlocks(floorId);
|
|
||||||
core.status.maps[floorId].blocks.forEach(function (block) {
|
|
||||||
if (block.disable && core.enemys.hasSpecial(block.event.id, 23)) {
|
|
||||||
block.disable = false;
|
|
||||||
core.setMapBlockDisabled(floorId, block.x, block.y, false);
|
|
||||||
core.maps._updateMapArray(floorId, block.x, block.y);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
core.control.gatherFollowers();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------- 重绘新地图;这一步将会设置core.status.floorId ---------- //
|
},
|
||||||
core.drawMap(floorId);
|
|
||||||
|
|
||||||
// 切换楼层BGM
|
|
||||||
if (core.status.maps[floorId].bgm) {
|
|
||||||
var bgm = core.status.maps[floorId].bgm;
|
|
||||||
if (bgm instanceof Array) bgm = bgm[Math.floor(Math.random() * bgm.length)]; // 多个bgm则随机播放一个
|
|
||||||
if (!core.hasFlag("__bgm__")) core.playBgm(bgm);
|
|
||||||
} else if (fromLoad && !core.hasFlag("__bgm__")) {
|
|
||||||
core.pauseBgm();
|
|
||||||
}
|
|
||||||
// 更改画面色调
|
|
||||||
var color = core.getFlag('__color__', null);
|
|
||||||
if (!color && core.status.maps[floorId].color)
|
|
||||||
color = core.status.maps[floorId].color;
|
|
||||||
core.clearMap('curtain');
|
|
||||||
core.status.curtainColor = color;
|
|
||||||
if (color) core.fillRect('curtain', 0, 0, core._PX_ || core.__PIXELS__, core._PY_ || core.__PIXELS__, core.arrayToRGBA(color));
|
|
||||||
// 更改天气
|
|
||||||
var weather = core.getFlag('__weather__', null);
|
|
||||||
if (!weather && core.status.maps[floorId].weather)
|
|
||||||
weather = core.status.maps[floorId].weather;
|
|
||||||
if (weather)
|
|
||||||
core.setWeather(weather[0], weather[1]);
|
|
||||||
else core.setWeather();
|
|
||||||
|
|
||||||
// ...可以新增一些其他内容,比如创建个画布在右上角显示什么内容等等
|
|
||||||
|
|
||||||
},
|
|
||||||
"afterChangeFloor": function (floorId) {
|
"afterChangeFloor": function (floorId) {
|
||||||
// 转换楼层结束的事件;此函数会在整个楼层切换完全结束后再执行
|
// 转换楼层结束的事件;此函数会在整个楼层切换完全结束后再执行
|
||||||
// floorId是切换到的楼层
|
// floorId是切换到的楼层
|
||||||
@ -531,15 +531,21 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
var hero_hp = core.getRealStatusOrDefault(hero, 'hp'),
|
var hero_hp = core.getRealStatusOrDefault(hero, 'hp'),
|
||||||
hero_atk = core.getRealStatusOrDefault(hero, 'atk'),
|
hero_atk = core.getRealStatusOrDefault(hero, 'atk'),
|
||||||
hero_def = core.getRealStatusOrDefault(hero, 'def'),
|
hero_def = core.getRealStatusOrDefault(hero, 'def'),
|
||||||
hero_mdef = core.getRealStatusOrDefault(hero, 'mdef');
|
hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'),
|
||||||
|
hero_speed = core.getRealStatusOrDefault(hero, 'speed');
|
||||||
|
|
||||||
var mon_hp = core.getEnemyValue(enemy, 'hp', x, y, floorId),
|
var mon_hp = core.getEnemyValue(enemy, 'hp', x, y, floorId),
|
||||||
mon_atk = core.getEnemyValue(enemy, 'atk', x, y, floorId),
|
mon_atk = core.getEnemyValue(enemy, 'atk', x, y, floorId),
|
||||||
mon_def = core.getEnemyValue(enemy, 'def', x, y, floorId),
|
mon_def = core.getEnemyValue(enemy, 'def', x, y, floorId),
|
||||||
|
mon_mdef = core.getEnemyValue(enemy, 'mdef', x, y, floorId),
|
||||||
|
mon_speed = core.getEnemyValue(enemy, 'speed', x, y, floorId),
|
||||||
mon_special = core.getEnemyValue(enemy, 'special', x, y, floorId);
|
mon_special = core.getEnemyValue(enemy, 'special', x, y, floorId);
|
||||||
var mon_money = core.getEnemyValue(enemy, 'money', x, y, floorId),
|
var mon_money = core.getEnemyValue(enemy, 'money', x, y, floorId),
|
||||||
mon_exp = core.getEnemyValue(enemy, 'exp', x, y, floorId),
|
mon_exp = core.getEnemyValue(enemy, 'exp', x, y, floorId),
|
||||||
mon_point = core.getEnemyValue(enemy, 'point', x, y, floorId);
|
mon_point = core.getEnemyValue(enemy, 'point', x, y, floorId);
|
||||||
|
var mon_barrier = 0,
|
||||||
|
mon_absorb_damage = 0,
|
||||||
|
mon_magic = core.getEnemyValue(enemy, 'magic', x, y, floorId);
|
||||||
// 模仿
|
// 模仿
|
||||||
if (core.hasSpecial(mon_special, 10)) {
|
if (core.hasSpecial(mon_special, 10)) {
|
||||||
mon_atk = hero_atk;
|
mon_atk = hero_atk;
|
||||||
@ -633,10 +639,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
"hp": Math.floor(mon_hp),
|
"hp": Math.floor(mon_hp),
|
||||||
"atk": Math.floor(mon_atk),
|
"atk": Math.floor(mon_atk),
|
||||||
"def": Math.floor(mon_def),
|
"def": Math.floor(mon_def),
|
||||||
|
"mdef": Math.floor(mon_mdef),
|
||||||
|
"speed": Math.floor(mon_speed),
|
||||||
|
"barrier": Math.floor(mon_barrier),
|
||||||
|
"absorb": Math.floor(mon_absorb_damage),
|
||||||
"money": Math.floor(mon_money),
|
"money": Math.floor(mon_money),
|
||||||
"exp": Math.floor(mon_exp),
|
"exp": Math.floor(mon_exp),
|
||||||
"point": Math.floor(mon_point),
|
"point": Math.floor(mon_point),
|
||||||
"special": mon_special,
|
"special": mon_special,
|
||||||
|
"magic": mon_magic,
|
||||||
"guards": guards, // 返回支援情况
|
"guards": guards, // 返回支援情况
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -655,15 +666,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
hero_atk = core.getRealStatusOrDefault(hero, 'atk'),
|
hero_atk = core.getRealStatusOrDefault(hero, 'atk'),
|
||||||
hero_def = core.getRealStatusOrDefault(hero, 'def'),
|
hero_def = core.getRealStatusOrDefault(hero, 'def'),
|
||||||
hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'),
|
hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'),
|
||||||
|
hero_speed = core.getRealStatusOrDefault(hero, 'speed'),
|
||||||
|
hero_magic = core.getRealStatusOrDefault(hero, 'magic'),
|
||||||
origin_hero_hp = core.getStatusOrDefault(hero, 'hp'),
|
origin_hero_hp = core.getStatusOrDefault(hero, 'hp'),
|
||||||
origin_hero_atk = core.getStatusOrDefault(hero, 'atk'),
|
origin_hero_atk = core.getStatusOrDefault(hero, 'atk'),
|
||||||
origin_hero_def = core.getStatusOrDefault(hero, 'def');
|
origin_hero_def = core.getStatusOrDefault(hero, 'def');
|
||||||
|
|
||||||
// 勇士的负属性都按0计算
|
|
||||||
hero_hp = Math.max(0, hero_hp);
|
|
||||||
hero_atk = Math.max(0, hero_atk);
|
|
||||||
hero_def = Math.max(0, hero_def);
|
|
||||||
hero_mdef = Math.max(0, hero_mdef);
|
|
||||||
|
|
||||||
// 怪物的各项数据
|
// 怪物的各项数据
|
||||||
// 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中
|
// 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中
|
||||||
@ -671,23 +680,34 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
var mon_hp = enemyInfo.hp,
|
var mon_hp = enemyInfo.hp,
|
||||||
mon_atk = enemyInfo.atk,
|
mon_atk = enemyInfo.atk,
|
||||||
mon_def = enemyInfo.def,
|
mon_def = enemyInfo.def,
|
||||||
mon_special = enemyInfo.special;
|
mon_mdef = enemyInfo.mdef,
|
||||||
|
mon_speed = enemyInfo.speed,
|
||||||
|
mon_special = enemyInfo.special,
|
||||||
|
mon_absorb_damage = enemyInfo.absorb,
|
||||||
|
mon_barrier = enemyInfo.barrier;
|
||||||
|
|
||||||
|
//---第一部分:静态属性修正---
|
||||||
|
//此处写入静态影响勇士属性的勇士或怪物技能(静态影响怪物属性的技能于getEnemyInfo中写入)
|
||||||
// 技能的处理
|
// 技能的处理
|
||||||
if (core.getFlag('skill', 0) == 1) { // 开启了技能1:二倍斩
|
if (core.getFlag('skill', 0) == 1) { // 开启了技能1:二倍斩
|
||||||
hero_atk *= 2; // 计算时攻击力翻倍
|
hero_atk *= 2; // 计算时攻击力翻倍
|
||||||
}
|
}
|
||||||
|
//勇士属性取整
|
||||||
|
hero_atk = Math.max(0, Math.floor(hero_atk));
|
||||||
|
hero_def = Math.max(0, Math.floor(hero_def));
|
||||||
|
hero_mdef = Math.max(0, Math.floor(hero_mdef));
|
||||||
|
hero_speed = Math.max(0, Math.floor(hero_speed));
|
||||||
|
|
||||||
// 如果是无敌属性,且勇士未持有十字架
|
// 如果是无敌属性,且勇士未持有十字架
|
||||||
if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross"))
|
if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross"))
|
||||||
return null; // 不可战斗
|
return null; // 不可战斗
|
||||||
|
|
||||||
// 战前造成的额外伤害(可被护盾抵消)
|
// 战前造成的额外伤害(可被护盾抵消)
|
||||||
var init_damage = 0;
|
let init_damage = 0;
|
||||||
|
|
||||||
// 吸血
|
// 吸血
|
||||||
if (core.hasSpecial(mon_special, 11)) {
|
if (core.hasSpecial(mon_special, 11)) {
|
||||||
var vampire_damage = hero_hp * enemy.vampire;
|
let vampire_damage = hero_hp * enemy.vampire;
|
||||||
|
|
||||||
// 如果有神圣盾免疫吸血等可以在这里写
|
// 如果有神圣盾免疫吸血等可以在这里写
|
||||||
// 也可以用hasItem和hasEquip来判定装备
|
// 也可以用hasItem和hasEquip来判定装备
|
||||||
@ -701,17 +721,60 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
init_damage += vampire_damage;
|
init_damage += vampire_damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//——第二部分:变量定义和初始赋值——
|
||||||
// 每回合怪物对勇士造成的战斗伤害
|
// 每回合怪物对勇士造成的战斗伤害
|
||||||
var per_damage = mon_atk - hero_def;
|
let per_damage = Math.max(mon_atk - hero_def, 0);
|
||||||
|
if (enemyInfo.magic) per_damage = Math.max(mon_atk - hero_mdef, 0);
|
||||||
|
|
||||||
// 战斗伤害不能为负值
|
//
|
||||||
if (per_damage < 0) per_damage = 0;
|
let hero_per_damage = Math.max(hero_atk - mon_def, 0);
|
||||||
|
if (hero_magic) hero_per_damage = Math.max(hero_atk - mon_mdef, 0);
|
||||||
|
|
||||||
|
let damage = 0,
|
||||||
|
hero_turn = 0,
|
||||||
|
mon_turn = 0;
|
||||||
|
//---第三部分:递归开始---
|
||||||
|
let length = hero_speed * mon_speed;
|
||||||
|
|
||||||
|
for (let now_mon_hp = mon_hp, last_mon_hp = mon_hp, mon_length = length, hero_length = length, mon_time = 0, hero_time = 0; now_mon_hp > 0;) { //勇士和怪物的长度
|
||||||
|
mon_time = mon_length / mon_speed;
|
||||||
|
hero_time = hero_length / hero_speed;
|
||||||
|
if ((mon_time < hero_time) || ((mon_time = hero_time) && (mon_speed > hero_speed))) { //怪物攻击的回合
|
||||||
|
//这里计算怪物攻击时发生的各种变化
|
||||||
|
|
||||||
|
//伤害与回合增加
|
||||||
|
damage += per_damage;
|
||||||
|
if (core.hasSpecial(mon_special, 6)) {
|
||||||
|
mon_turn += enemy.n;
|
||||||
|
} else {
|
||||||
|
mon_turn += 1;
|
||||||
|
}
|
||||||
|
//重新为长度赋值
|
||||||
|
mon_length = length;
|
||||||
|
hero_length = hero_length - mon_time * hero_speed;
|
||||||
|
} else { //勇士攻击的回合
|
||||||
|
// 这里计算勇士攻击时发生的各种变化
|
||||||
|
|
||||||
|
// 伤害与回合数增加
|
||||||
|
now_mon_hp -= hero_per_damage;
|
||||||
|
hero_turn += 1; //勇士回合+1,如果有勇士每回合多次攻击的情况,在这里写判断
|
||||||
|
// 无法战斗计算
|
||||||
|
if (hero_turn % 50 == 0) {
|
||||||
|
if (now_mon_hp >= last_mon_hp) return null;
|
||||||
|
last_mon_hp = now_mon_hp;
|
||||||
|
}
|
||||||
|
//重新为长度赋值
|
||||||
|
hero_length = length;
|
||||||
|
mon_length = mon_length - hero_time * mon_speed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//下面这些还没修改
|
||||||
// 连击
|
// 连击
|
||||||
if (core.hasSpecial(mon_special, 6)) per_damage *= (enemy.n || 2);
|
if (core.hasSpecial(mon_special, 6)) per_damage *= (enemy.n || 2);
|
||||||
|
|
||||||
// 每回合的反击伤害;反击是按照勇士的攻击次数来计算回合
|
// 每回合的反击伤害;反击是按照勇士的攻击次数来计算回合
|
||||||
var counterDamage = 0;
|
let counterDamage = 0;
|
||||||
if (core.hasSpecial(mon_special, 8))
|
if (core.hasSpecial(mon_special, 8))
|
||||||
counterDamage += Math.floor((enemy.counterAttack || core.values.counterAttack) * hero_atk);
|
counterDamage += Math.floor((enemy.counterAttack || core.values.counterAttack) * hero_atk);
|
||||||
|
|
||||||
@ -725,19 +788,14 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// 净化
|
// 净化
|
||||||
if (core.hasSpecial(mon_special, 9))
|
if (core.hasSpecial(mon_special, 9))
|
||||||
init_damage += Math.floor((enemy.purify || core.values.purify) * hero_mdef);
|
init_damage += Math.floor((enemy.purify || core.values.purify) * hero_mdef);
|
||||||
|
//上面这些还没修改
|
||||||
// 勇士每回合对怪物造成的伤害
|
//勇士护盾计算
|
||||||
var hero_per_damage = Math.max(hero_atk - mon_def, 0);
|
let barrier = hero_mdef;
|
||||||
|
if (enemyInfo.magic) barrier = hero_def;
|
||||||
// 如果没有破防,则不可战斗
|
|
||||||
if (hero_per_damage <= 0) return null;
|
|
||||||
|
|
||||||
// 勇士的攻击回合数;为怪物生命除以每回合伤害向上取整
|
|
||||||
var turn = Math.ceil(mon_hp / hero_per_damage);
|
|
||||||
|
|
||||||
// ------ 支援 ----- //
|
// ------ 支援 ----- //
|
||||||
// 这个递归最好想明白为什么,flag:__extraTurn__是怎么用的
|
// 这个递归最好想明白为什么,flag:__extraTurn__是怎么用的
|
||||||
var guards = core.getFlag("__guards__" + x + "_" + y, enemyInfo.guards);
|
/*var guards = core.getFlag("__guards__" + x + "_" + y, enemyInfo.guards);
|
||||||
var guard_before_current_enemy = false; // ------ 支援怪是先打(true)还是后打(false)?
|
var guard_before_current_enemy = false; // ------ 支援怪是先打(true)还是后打(false)?
|
||||||
turn += core.getFlag("__extraTurn__", 0);
|
turn += core.getFlag("__extraTurn__", 0);
|
||||||
if (guards.length > 0) {
|
if (guards.length > 0) {
|
||||||
@ -764,13 +822,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
turn += core.getFlag("__extraTurn__", 0);
|
turn += core.getFlag("__extraTurn__", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
core.removeFlag("__extraTurn__");
|
core.removeFlag("__extraTurn__");*/
|
||||||
// ------ 支援END ------ //
|
// ------ 支援END ------ //
|
||||||
|
|
||||||
// 最终伤害:初始伤害 + 怪物对勇士造成的伤害 + 反击伤害
|
// 最终伤害:初始伤害 + 怪物对勇士造成的伤害 + 反击伤害
|
||||||
var damage = init_damage + (turn - 1) * per_damage + turn * counterDamage;
|
damage += init_damage + hero_turn * counterDamage;
|
||||||
// 再扣去护盾
|
// 再扣去护盾
|
||||||
damage -= hero_mdef;
|
damage -= barrier;
|
||||||
|
|
||||||
// 检查是否允许负伤
|
// 检查是否允许负伤
|
||||||
if (!core.flags.enableNegativeDamage)
|
if (!core.flags.enableNegativeDamage)
|
||||||
@ -788,12 +846,18 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
"mon_hp": Math.floor(mon_hp),
|
"mon_hp": Math.floor(mon_hp),
|
||||||
"mon_atk": Math.floor(mon_atk),
|
"mon_atk": Math.floor(mon_atk),
|
||||||
"mon_def": Math.floor(mon_def),
|
"mon_def": Math.floor(mon_def),
|
||||||
|
"mon_mdef": Math.floor(mon_mdef),
|
||||||
"init_damage": Math.floor(init_damage),
|
"init_damage": Math.floor(init_damage),
|
||||||
"per_damage": Math.floor(per_damage),
|
"per_damage": Math.floor(per_damage),
|
||||||
"hero_per_damage": Math.floor(hero_per_damage),
|
"hero_per_damage": Math.floor(hero_per_damage),
|
||||||
"turn": Math.floor(turn),
|
"turn": Math.floor(hero_turn),
|
||||||
|
"mon_turn": Math.floor(mon_turn),
|
||||||
"damage": Math.floor(damage)
|
"damage": Math.floor(damage)
|
||||||
};
|
};
|
||||||
|
/*TODO:怪物手册的修改(需要修改这里return的内容以及一些战后判断)
|
||||||
|
1. 显示怪物是魔攻还是物攻(在怪物名字上做颜色变化,物攻是黄色,魔攻是蓝色)
|
||||||
|
2. 一防减伤是物防还是魔防(由怪物是物攻还是魔攻来转换)
|
||||||
|
3. 特殊战斗的怪物,在怪物手册里“伤害”写为“特殊战”*/
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
@ -824,7 +888,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
core.openBook(true);
|
core.openBook(true);
|
||||||
break;
|
break;
|
||||||
case 71: // G:使用楼传器
|
case 71: // G:使用楼传器
|
||||||
core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId));
|
flags.canMoveFloor = core.canMoveFloor()
|
||||||
|
if (core.isPlaying()) core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId));
|
||||||
|
core.status.route.push("key:71");
|
||||||
break;
|
break;
|
||||||
case 65: // A:读取自动存档(回退)
|
case 65: // A:读取自动存档(回退)
|
||||||
core.doSL("autoSave", "load");
|
core.doSL("autoSave", "load");
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 1.3 KiB |
@ -332,7 +332,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
|
|||||||
"text": "可以自由往来去过的楼层",
|
"text": "可以自由往来去过的楼层",
|
||||||
"hideInReplay": true,
|
"hideInReplay": true,
|
||||||
"hideInToolbox": true,
|
"hideInToolbox": true,
|
||||||
"useItemEffect": "//core.ui.drawFly(core.floorIds.indexOf(core.status.floorId));\ncore.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId));",
|
"useItemEffect": "//core.ui.drawFly(core.floorIds.indexOf(core.status.floorId));\nflags.canMoveFloor = core.canMoveFloor()\nif (core.isPlaying()) core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId));",
|
||||||
"canUseItemEffect": "(function () {\n\tif (core.flags.flyNearStair && !core.nearStair() && !core.canMoveFloor())\n\t\treturn false;\n\treturn core.status.maps[core.status.floorId].canFlyFrom;\n})();"
|
"canUseItemEffect": "(function () {\n\tif (core.flags.flyNearStair && !core.nearStair() && !core.canMoveFloor())\n\t\treturn false;\n\treturn core.status.maps[core.status.floorId].canFlyFrom;\n})();"
|
||||||
},
|
},
|
||||||
"coin": {
|
"coin": {
|
||||||
|
9932
project/plugins.js
9932
project/plugins.js
File diff suppressed because it is too large
Load Diff
699
styles.css
699
styles.css
@ -1,534 +1,585 @@
|
|||||||
html, body {
|
html,
|
||||||
margin: 0;
|
body {
|
||||||
padding: 0;
|
margin: 0;
|
||||||
width: 100%;
|
padding: 0;
|
||||||
height: 100%;
|
width: 100%;
|
||||||
background-color: #000;
|
height: 100%;
|
||||||
overflow: hidden;
|
background-color: #000;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#gameGroup {
|
#gameGroup {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
#mainTips {
|
#mainTips {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
left: 10px;
|
left: 10px;
|
||||||
z-index: 370;
|
z-index: 370;
|
||||||
}
|
}
|
||||||
|
|
||||||
#musicBtn {
|
#musicBtn {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 3px;
|
bottom: 3px;
|
||||||
right: 3px;
|
right: 3px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
z-index: 400;
|
z-index: 400;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#enlargeBtn {
|
#enlargeBtn {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 3px;
|
bottom: 3px;
|
||||||
right: 34px;
|
right: 34px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
z-index: 400;
|
z-index: 400;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startPanel {
|
#startPanel {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
z-index: 300;
|
z-index: 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startTop {
|
#startTop {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
z-index: 350;
|
z-index: 350;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startTopProgressBar {
|
#startTopProgressBar {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
height: 5%;
|
height: 5%;
|
||||||
margin: 0 5%;
|
margin: 0 5%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 5%;
|
top: 5%;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
z-index: 15;
|
z-index: 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startTopProgress {
|
#startTopProgress {
|
||||||
width: 0%;
|
width: 0%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: #666;
|
background-color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startTopLoadTips {
|
#startTopLoadTips {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 0.6em;
|
font-size: 0.6em;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 10%;
|
top: 10%;
|
||||||
left: 5%;
|
left: 5%;
|
||||||
z-index: 15;
|
z-index: 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startTopHint {
|
#startTopHint {
|
||||||
color: #66CCFF;
|
color: #66ccff;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 5%;
|
left: 5%;
|
||||||
z-index: 15;
|
z-index: 15;
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startBackground {
|
#startBackground {
|
||||||
position:absolute;
|
position: absolute;
|
||||||
top:50%;
|
top: 50%;
|
||||||
left:50%;
|
left: 50%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
transform:translate(-50%,-50%);
|
transform: translate(-50%, -50%);
|
||||||
z-index: 260;
|
z-index: 260;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startLogo {
|
#startLogo {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 290;
|
z-index: 290;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-top: 8%;
|
margin-top: 8%;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font: bold 0em STXingkai;
|
font: bold 0em STXingkai;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startTitle {
|
#startTitle {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 280;
|
z-index: 280;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startButtonGroup {
|
#startButtonGroup {
|
||||||
width: auto;
|
width: auto;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 1.4em;
|
font-size: 1.4em;
|
||||||
display: none;
|
display: none;
|
||||||
z-index: 310;
|
z-index: 310;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
margin-bottom: 5%;
|
margin-bottom: 5%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
padding: 15px 25px;
|
padding: 15px 25px;
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
/* default value */
|
/* default value */
|
||||||
background-color: #000000;
|
background-color: #000000;
|
||||||
opacity: 0.55;
|
opacity: 0.55;
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
border: #FFFFFF 0px solid;
|
border: #ffffff 0px solid;
|
||||||
caret-color: #ffffff;
|
caret-color: #ffffff;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startButtons {
|
#startButtons {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#levelChooseButtons {
|
#levelChooseButtons {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.startButton {
|
.startButton {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font:1.2rem "pala", sans-serif;
|
font: 1.2rem pala, sans-serif;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
display: block;
|
display: block;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 0px 0;
|
padding: 0px 0;
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
border-width: 0px;
|
border-width: 0px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.onChoiceAnimate {
|
.onChoiceAnimate {
|
||||||
animation: onChoice 2s ease-in-out 0s infinite normal none running;
|
animation: onChoice 2s ease-in-out 0s infinite normal none running;
|
||||||
}
|
}
|
||||||
|
|
||||||
#floorMsgGroup {
|
#floorMsgGroup {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
display: none;
|
display: none;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
z-index: 230;
|
z-index: 230;
|
||||||
}
|
}
|
||||||
|
|
||||||
#logoLabel {
|
#logoLabel {
|
||||||
margin-top: 8%;
|
margin-top: 8%;
|
||||||
font: bold 3em STXingkai;
|
font: bold 3em STXingkai;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#versionLabel {
|
#versionLabel {
|
||||||
margin-top: -3%;
|
margin-top: -3%;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#floorNameLabel {
|
#floorNameLabel {
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
font-size: 1.6em;
|
font-size: 1.6em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#statusBar {
|
#statusBar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
background: url(project/materials/ground.png) repeat;
|
background: url(project/materials/ground.png) repeat;
|
||||||
z-index: 185;
|
z-index: 185;
|
||||||
display: none;
|
display: none;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
}
|
}
|
||||||
#statusBar .status{
|
#statusBar .status {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.status img{
|
.status img {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
width: auto;
|
width: auto;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
max-height: 1.6em;
|
max-height: 1.6em;
|
||||||
}
|
}
|
||||||
#statusBar span{
|
#statusBar span {
|
||||||
font: bold italic 1.1em Verdana;
|
font: bold italic 1.1em Verdana;
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
#statusBar p {
|
#statusBar p {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
width: 60%;
|
width: 60%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: white;
|
color: white;
|
||||||
font: bold italic 1.1em Verdana;
|
font: bold italic 1.1em Verdana;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
#toolBar {
|
#toolBar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
background: url(project/materials/ground.png) repeat;
|
background: url(project/materials/ground.png) repeat;
|
||||||
z-index: 210;
|
z-index: 210;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
display: none;
|
display: none;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
}
|
}
|
||||||
#toolBar .tools{
|
#toolBar .tools {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
p#hard {
|
p#hard {
|
||||||
width: 6em;
|
width: 6em;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
color: red;
|
color: red;
|
||||||
font: bold normal 1.1em "Arial Black";
|
font: bold normal 1.1em "Arial Black";
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 0 6px 6px 0;
|
margin: 0 6px 6px 0;
|
||||||
word-break: keep-all;
|
word-break: keep-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
span#poison, span#weak, span#curse, span#pickaxe, span#bomb, span#fly {
|
span#poison,
|
||||||
font-style: normal;
|
span#weak,
|
||||||
font-size: 1em;
|
span#curse,
|
||||||
|
span#pickaxe,
|
||||||
|
span#bomb,
|
||||||
|
span#fly {
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
p#name {
|
p#name {
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gameCanvas {
|
.gameCanvas {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
#gif {
|
#gif {
|
||||||
z-index: 20;
|
z-index: 20;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#gif2 {
|
#gif2 {
|
||||||
z-index: 90;
|
z-index: 90;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#gameDraw {
|
#gameDraw {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
background: #000000;
|
background: #000000;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
z-index: 185;
|
z-index: 185;
|
||||||
}
|
}
|
||||||
|
|
||||||
#bg {
|
#bg {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
#event {
|
#event {
|
||||||
z-index: 30;
|
z-index: 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
#hero {
|
#hero {
|
||||||
z-index: 40;
|
z-index: 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
#event2 {
|
#event2 {
|
||||||
z-index: 50;
|
z-index: 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
#fg {
|
#fg {
|
||||||
z-index: 60;
|
z-index: 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
#damage {
|
#damage {
|
||||||
z-index: 65;
|
z-index: 65;
|
||||||
}
|
}
|
||||||
|
|
||||||
#animate {
|
#animate {
|
||||||
z-index: 70;
|
z-index: 70;
|
||||||
}
|
}
|
||||||
|
|
||||||
#curtain {
|
#curtain {
|
||||||
z-index: 125;
|
z-index: 125;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ui {
|
#ui {
|
||||||
z-index: 140;
|
z-index: 140;
|
||||||
}
|
}
|
||||||
|
|
||||||
#data {
|
#data {
|
||||||
z-index: 170;
|
z-index: 170;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inputDiv {
|
#inputDiv {
|
||||||
display: none;
|
display: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
background: rgba(127,127,127,0.6);
|
background: rgba(127, 127, 127, 0.6);
|
||||||
z-index: 2000
|
z-index: 2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inputDialog {
|
#inputDialog {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translate(-50%, -55%);
|
transform: translate(-50%, -55%);
|
||||||
background: white;
|
background: white;
|
||||||
width: 250px;
|
width: 250px;
|
||||||
min-height: 50px;
|
min-height: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inputMessage {
|
#inputMessage {
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
margin-left: 8%;
|
margin-left: 8%;
|
||||||
margin-right: 5%;
|
margin-right: 5%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inputBox {
|
#inputBox {
|
||||||
margin-left: 8%;
|
margin-left: 8%;
|
||||||
width: 80%;
|
width: 80%;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
padding: 5px 3px;
|
padding: 5px 3px;
|
||||||
border: 1px solid;
|
border: 1px solid;
|
||||||
background: #F0F0F0;
|
background: #f0f0f0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inputYes {
|
#inputYes {
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
margin-left: 8%;
|
margin-left: 8%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inputNo {
|
#inputNo {
|
||||||
float:right;
|
float: right;
|
||||||
margin-right: 10%;
|
margin-right: 10%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#_selector, ._uievent_selector {
|
#_selector,
|
||||||
animation: selector 2s ease-in-out 0s infinite normal none running;
|
._uievent_selector {
|
||||||
|
animation: selector 2s ease-in-out 0s infinite normal none running;
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes selector {
|
@-webkit-keyframes selector {
|
||||||
0% { opacity: 0.95; }
|
0% {
|
||||||
50% { opacity: 0.55; }
|
opacity: 0.95;
|
||||||
100% { opacity: 0.95; }
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.55;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0.95;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes selector {
|
@keyframes selector {
|
||||||
0% { opacity: 0.95; }
|
0% {
|
||||||
50% { opacity: 0.55; }
|
opacity: 0.95;
|
||||||
100% { opacity: 0.95; }
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0.55;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0.95;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#next {
|
#next {
|
||||||
width: 5px;
|
width: 5px;
|
||||||
height: 5px;
|
height: 5px;
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
transform: rotate(45deg);
|
transform: rotate(45deg);
|
||||||
border-bottom-width: 4px;
|
border-bottom-width: 4px;
|
||||||
border-bottom-style: solid;
|
border-bottom-style: solid;
|
||||||
border-right-width: 4px;
|
border-right-width: 4px;
|
||||||
border-right-style: solid;
|
border-right-style: solid;
|
||||||
-webkit-animation: next .5s ease-in-out alternate infinite;
|
-webkit-animation: next 0.5s ease-in-out alternate infinite;
|
||||||
animation: next .5s ease-in-out alternate infinite;
|
animation: next 0.5s ease-in-out alternate infinite;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
z-index: 169;
|
z-index: 169;
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes next {
|
@-webkit-keyframes next {
|
||||||
100% {
|
100% {
|
||||||
transform: rotate(45deg) translate(-3px, -3px);
|
transform: rotate(45deg) translate(-3px, -3px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@keyframes next {
|
@keyframes next {
|
||||||
100% {
|
100% {
|
||||||
transform: rotate(45deg) translate(-3px, -3px);
|
transform: rotate(45deg) translate(-3px, -3px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#startImageBackgroundDiv {
|
#startImageBackgroundDiv {
|
||||||
display: none;
|
display: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startImageDiv {
|
#startImageDiv {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
background: black;
|
background: black;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#startImageLogo {
|
#startImageLogo {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
max-width: 60%;
|
max-width: 60%;
|
||||||
max-height: 60%;
|
max-height: 60%;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, -50%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.startImageAnimation {
|
.startImageAnimation {
|
||||||
-webkit-animation: startImage 4s ease-in-out 1s alternate 1;
|
-webkit-animation: startImage 4s ease-in-out 1s alternate 1;
|
||||||
animation: startImage 4s ease-in-out 1s alternate 1;
|
animation: startImage 4s ease-in-out 1s alternate 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes startImage {
|
@-webkit-keyframes startImage {
|
||||||
0% { opacity: 0; }
|
0% {
|
||||||
60% { opacity: 1; }
|
opacity: 0;
|
||||||
100% { opacity: 0; }
|
}
|
||||||
|
60% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes startImage {
|
@keyframes startImage {
|
||||||
0% { opacity: 0; }
|
0% {
|
||||||
60% { opacity: 1; }
|
opacity: 0;
|
||||||
100% { opacity: 0; }
|
}
|
||||||
|
60% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.startImageDivAnimation {
|
.startImageDivAnimation {
|
||||||
-webkit-animation: startImageDivDisappear 2s ease-in-out 5s alternate 1;
|
-webkit-animation: startImageDivDisappear 2s ease-in-out 5s alternate 1;
|
||||||
animation: startImageDivDisappear 2s ease-in-out 5s alternate 1;
|
animation: startImageDivDisappear 2s ease-in-out 5s alternate 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes startImageDivDisappear {
|
@-webkit-keyframes startImageDivDisappear {
|
||||||
0% { opacity: 1 }
|
0% {
|
||||||
100% { opacity: 0 }
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes startImageDivDisappear {
|
@keyframes startImageDivDisappear {
|
||||||
0% { opacity: 1 }
|
0% {
|
||||||
100% { opacity: 0 }
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#ui-editor {
|
#ui-editor {
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: Fira Code;
|
font-family: Fira Code;
|
||||||
src: url(../src/fonts/FiraCode-Regular.ttf);
|
src: url(../src/fonts/FiraCode-Regular.ttf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 注释下面这三行以开启抗锯齿 */
|
/* 注释下面这三行以开启抗锯齿 */
|
||||||
.anti-aliasing {
|
.anti-aliasing {
|
||||||
image-rendering: pixelated;
|
image-rendering: pixelated;
|
||||||
}
|
}
|
||||||
|
|
||||||
.warning {
|
.warning {
|
||||||
transition: left cubic-bezier(0, 0.9, 1, 0.1) 2.5s;
|
transition: left cubic-bezier(0, 0.9, 1, 0.1) 2.5s;
|
||||||
-webkit-transition: left cubic-bezier(0, 0.9, 1, 0.1) 2.5s;
|
-webkit-transition: left cubic-bezier(0, 0.9, 1, 0.1) 2.5s;
|
||||||
animation: warning 1s linear 0s alternate infinite;
|
animation: warning 1s linear 0s alternate infinite;
|
||||||
-webkit-animation: warning 1s linear 0s alternate infinite;
|
-webkit-animation: warning 1s linear 0s alternate infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes warning {
|
@keyframes warning {
|
||||||
0 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);}
|
0 % {
|
||||||
50 % { text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);}
|
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
|
||||||
100 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);}
|
}
|
||||||
|
50 % {
|
||||||
|
text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);
|
||||||
|
}
|
||||||
|
100 % {
|
||||||
|
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit - keyframes warning {
|
@-webkit - keyframes warning {
|
||||||
0 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);}
|
0 % {
|
||||||
50 % { text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);}
|
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
|
||||||
100 % { text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);}
|
}
|
||||||
|
50 % {
|
||||||
|
text-shadow: 0px 0px 30px rgba(255, 0, 0, 1), 0px 0px 6px rgb(129, 0, 0);
|
||||||
|
}
|
||||||
|
100 % {
|
||||||
|
text-shadow: 0px 0px 9px rgba(255, 0, 0, 0.5), 0px 0px 6px rgb(129, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.gameCanvas {
|
.gameCanvas {
|
||||||
transition: transform 1.5s ease-out;
|
transition: transform 1.5s ease-out;
|
||||||
-webkit-transition: transform 1.5s ease-out;
|
-webkit-transition: transform 1.5s ease-out;
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user