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 | ||||
|     |   stopAsync_s | ||||
|     |   op_s | ||||
|     |   setmusics_s | ||||
|     |   introAndLoop_s | ||||
|     |   battle_s | ||||
|     |   battle_1_s | ||||
|     |   openDoor_s | ||||
| @ -963,8 +965,7 @@ action | ||||
|     |   animationDrawable_s | ||||
|     |   over_s | ||||
|     |   overlist_s | ||||
|     |   playStereo_s | ||||
|     |   moveStereo_s | ||||
|     |   cgtextList_s | ||||
|     |   pass_s | ||||
|     ; | ||||
| 
 | ||||
| @ -1123,22 +1124,33 @@ overtextEmpty | ||||
| var 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 | ||||
|     :    '背景' EvalString? '回忆滤镜' Bool? '移除对话框' Bool? '头像' EvalString?'名字' EvalString?'坐标PX' Number'打字间隔' Int? BGNL? Newline | ||||
|     :    '背景' EvalString? '回忆滤镜' Bool? '移除对话框' Bool? '剧情库序列' Int '头像' EvalString?'坐标PX' Number'打字间隔' Int? BGNL? Newline | ||||
|      '自动等待时长' Int '音频文件(需在全塔属性——使用音效注册)'EvalString? BGNL? Newline | ||||
|      EvalString? BGNL? Newline textcgDrawingList+? Newline | ||||
|       textcgDrawingList+? Newline | ||||
|      | ||||
| 
 | ||||
| /* cgtext_s | ||||
| tooltip : cgtext:显示一段包含cg的文字(剧情) | ||||
| helpUrl : /_docs/#/instruction | ||||
| allImages : ['EvalString_0','EvalString_1'] | ||||
| allSounds : ['EvalString_3'] | ||||
| default : ["bg_5043.webp",false,"face_050445.webp",false,"菲奥奈",-300,0,2000,"","这句话显示在对话框内",[{ "name":"tati_050145a.webp" , "px": 100,"filter":false }]] | ||||
| allSounds : ['EvalString_2'] | ||||
| 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 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; | ||||
| */; | ||||
| textcgDrawingList | ||||
| @ -2612,6 +2624,23 @@ var code = '{"type": "setq"'+IdString_0+'},\n'; | ||||
| 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 | ||||
|     :   'cg回廊获取cg 文件名'EvalString?'不填为清空cg获取记录'  Newline | ||||
| @ -2621,12 +2650,26 @@ tooltip : setcgs:cg回廊中的cg获取 | ||||
| helpUrl : /_docs/#/instruction | ||||
| default : [""] | ||||
| allImages : ['EvalString_0'] | ||||
| colour : this.imageColor | ||||
| colour : this.soundColor | ||||
| EvalString_0 = EvalString_0 ? (', "img": "'+EvalString_0+'"') : ''; | ||||
| var code = '{"type": "setcgs"'+EvalString_0+'},\n'; | ||||
| 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 | ||||
|     :   '图片放缩' '图片编号' NInt '中心点像素' 'x' PosString? 'y' PosString? '移动方式' MoveMode_List BGNL? '放缩比例' Number '动画时间' Int '不等待执行完毕' Bool Newline | ||||
|         | ||||
| @ -3045,38 +3088,7 @@ var code = '{"type": "playSound", "name": "'+EvalString_0+'"'+Bool_0+IntString_0 | ||||
| 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 | ||||
|     :   '播放系统音效' NameMap_List '停止之前音效' Bool? '音调' IntString? '等待播放完毕' Bool? Newline | ||||
|  | ||||
| @ -542,6 +542,12 @@ MotaActionParser = function () { | ||||
|           ); | ||||
|         } | ||||
|         break; | ||||
|       case "cgtextList": | ||||
|         this.next = MotaActionBlocks["cgtextList_s"].xmlText([ | ||||
|           data.textList, | ||||
|           this.next, | ||||
|         ]); | ||||
|         break; | ||||
|       case "cgtext": // cg对话框
 | ||||
|         var buildcgDrawing = function (obj) { | ||||
|           obj = MotaActionFunctions.processcgDrawing(obj || []); | ||||
| @ -563,13 +569,12 @@ MotaActionParser = function () { | ||||
|           data.bg, | ||||
|           data.memory, | ||||
|           data.WindowSkin, | ||||
|           data.index, | ||||
|           data.head.name, | ||||
|           data.name || "", | ||||
|           data.head.px || -300, | ||||
|           data.time, | ||||
|           data.wait, | ||||
|           data.sound, | ||||
|           data.text, | ||||
|           buildcgDrawing(data.bodyList), | ||||
|           this.next, | ||||
|         ]); | ||||
| @ -620,6 +625,20 @@ MotaActionParser = function () { | ||||
|       case "setcgs": | ||||
|         this.next = MotaActionBlocks["setcgs_s"].xmlText([data.img, this.next]); | ||||
|         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": // 注释
 | ||||
|         this.next = MotaActionBlocks["comment_s"].xmlText([ | ||||
|           this.EvalString_Multi(data.text), | ||||
| @ -1506,27 +1525,6 @@ MotaActionParser = function () { | ||||
|           ]); | ||||
|         } | ||||
|         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": | ||||
|         var knownItems = MotaActionBlocks["NameMap_List"].options.map(function ( | ||||
|           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", | ||||
| 				"_range": "typeof(thiseval)=='string' || thiseval==null", | ||||
| 				"_data": "音乐鉴赏" | ||||
| 			}, | ||||
| 			"intro&loop": { | ||||
| 				"_leaf": true, | ||||
| 				"_type": "textarea", | ||||
| 				"_range": "typeof(thiseval)=='string' || thiseval==null", | ||||
| 				"_data": "背景音乐拼接" | ||||
| 			} | ||||
| 		} | ||||
| 		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
											
										
									
								
							
							
								
								
									
										1166
									
								
								libs/loader.js
									
									
									
									
									
								
							
							
						
						
									
										1166
									
								
								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) { | ||||
|   if (!(fonts instanceof Array) || fonts.length == 0) return; | ||||
|   var style = document.createElement("style"); | ||||
|   style.type = "text/css"; | ||||
|   var html = ""; | ||||
|   fonts.forEach(function (font) { | ||||
|     html += | ||||
| @ -910,7 +909,7 @@ main.prototype.listen = function () { | ||||
|   ////// 点击“开始游戏”时 //////
 | ||||
|   main.dom.playGame.onclick = function () { | ||||
|     main.dom.startButtons.style.display = "none"; | ||||
|     main.core.control.checkBgm(); | ||||
|     main.core.checkBgm(); | ||||
| 
 | ||||
|     if (main.levelChoose.length == 0) { | ||||
|       core.events.startGame(""); | ||||
| @ -923,13 +922,13 @@ main.prototype.listen = function () { | ||||
| 
 | ||||
|   ////// 点击“载入游戏”时 //////
 | ||||
|   main.dom.loadGame.onclick = function () { | ||||
|     main.core.control.checkBgm(); | ||||
|     main.core.checkBgm(); | ||||
|     main.core.load(); | ||||
|   }; | ||||
| 
 | ||||
|   ////// 点击“录像回放”时 //////
 | ||||
|   main.dom.replayGame.onclick = function () { | ||||
|     main.core.control.checkBgm(); | ||||
|     main.core.checkBgm(); | ||||
|     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" | ||||
| 		], | ||||
| 		"bgms": [ | ||||
| 			"Ascension.opus", | ||||
| 			"Asphodelus_Ceui.opus", | ||||
| 			"Blind_Alley.opus", | ||||
| 			"Blood_Stain.opus", | ||||
| 			"Crawler.opus", | ||||
| 			"Halbmond.opus", | ||||
| 			"ed.opus", | ||||
| 			"op.opus", | ||||
| 			"theme.opus" | ||||
| 		], | ||||
| @ -994,7 +998,6 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = | ||||
| 			"aiy820000010.opus", | ||||
| 			"aiy820000020.opus", | ||||
| 			"attack.opus", | ||||
| 			"attack.opus", | ||||
| 			"bomb.opus", | ||||
| 			"cancel.opus", | ||||
| 			"centerFly.opus", | ||||
| @ -1019,6 +1022,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = | ||||
| 		], | ||||
| 		"fonts": [ | ||||
| 			"HATTEN", | ||||
| 			"Verdana", | ||||
| 			"number", | ||||
| 			"pala", | ||||
| 			"simhei" | ||||
| @ -1441,7 +1445,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = | ||||
| 			}, | ||||
| 			{ | ||||
| 				"type": "function", | ||||
| 				"function": "function(){\ncore.control.checkBgm()\n}" | ||||
| 				"function": "function(){\ncore.checkBgm()\n}" | ||||
| 			}, | ||||
| 			{ | ||||
| 				"type": "if", | ||||
| @ -1489,6 +1493,10 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = | ||||
| 				"type": "setValue", | ||||
| 				"name": "item:fly", | ||||
| 				"value": "1" | ||||
| 			}, | ||||
| 			{ | ||||
| 				"type": "insert", | ||||
| 				"name": "强制横屏" | ||||
| 			} | ||||
| 		], | ||||
| 		"shops": [ | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =  | ||||
| { | ||||
| 	"greenSlime": {"name":"绿头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, | ||||
| 	"redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"value":10}, | ||||
| 	"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,"magic":false}, | ||||
| 	"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]}, | ||||
| 	"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" | ||||
|             } | ||||
|         ], | ||||
|         "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": [ | ||||
|             { | ||||
|                 "type": "insert", | ||||
|                 "name": "chapter04" | ||||
|             } | ||||
|         ], | ||||
|         "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" | ||||
|                 "name": "chapter01" | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|  | ||||
							
								
								
									
										
											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) { | ||||
| 			// 正在切换楼层过程中执行的操作;此函数的执行时间是“屏幕完全变黑“的那一刻
 | ||||
| 			// floorId为要切换到的楼层ID;heroLoc表示勇士切换到的位置
 | ||||
| 	// 正在切换楼层过程中执行的操作;此函数的执行时间是“屏幕完全变黑“的那一刻
 | ||||
| 	// floorId为要切换到的楼层ID;heroLoc表示勇士切换到的位置
 | ||||
| 
 | ||||
| 			// ---------- 此时还没有进行切换,当前floorId还是原来的 ---------- //
 | ||||
| 			var currentId = core.status.floorId || null; // 获得当前的floorId,可能为null
 | ||||
| 			var fromLoad = core.hasFlag('__fromLoad__'); // 是否是读档造成的切换
 | ||||
| 			var isFlying = core.hasFlag('__isFlying__'); // 是否是楼传造成的切换
 | ||||
| 			if (!fromLoad && !(isFlying && currentId == floorId)) { | ||||
| 				if (!core.hasFlag("__leaveLoc__")) core.setFlag("__leaveLoc__", {}); | ||||
| 				if (currentId != null) core.getFlag("__leaveLoc__")[currentId] = core.clone(core.status.hero.loc); | ||||
| 	// ---------- 此时还没有进行切换,当前floorId还是原来的 ---------- //
 | ||||
| 	var currentId = core.status.floorId || null; // 获得当前的floorId,可能为null
 | ||||
| 	var fromLoad = core.hasFlag('__fromLoad__'); // 是否是读档造成的切换
 | ||||
| 	var isFlying = core.hasFlag('__isFlying__'); // 是否是楼传造成的切换
 | ||||
| 	if (!fromLoad && !(isFlying && currentId == floorId)) { | ||||
| 		if (!core.hasFlag("__leaveLoc__")) core.setFlag("__leaveLoc__", {}); | ||||
| 		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进行判定,比如删除某些自定义图层等
 | ||||
| 			// if (currentId == 'MT0') {
 | ||||
| 			//     core.deleteAllCanvas();
 | ||||
| 			// }
 | ||||
| 	// ---------- 重绘新地图;这一步将会设置core.status.floorId ---------- //
 | ||||
| 	core.drawMap(floorId); | ||||
| 
 | ||||
| 			// 根据分区信息自动砍层与恢复
 | ||||
| 			if (core.autoRemoveMaps) core.autoRemoveMaps(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(); | ||||
| 
 | ||||
| 			// 重置画布尺寸
 | ||||
| 			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) { | ||||
| 	// 转换楼层结束的事件;此函数会在整个楼层切换完全结束后再执行
 | ||||
| 	// floorId是切换到的楼层
 | ||||
| @ -531,15 +531,21 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = | ||||
| 	var hero_hp = core.getRealStatusOrDefault(hero, 'hp'), | ||||
| 		hero_atk = core.getRealStatusOrDefault(hero, 'atk'), | ||||
| 		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), | ||||
| 		mon_atk = core.getEnemyValue(enemy, 'atk', 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); | ||||
| 	var mon_money = core.getEnemyValue(enemy, 'money', x, y, floorId), | ||||
| 		mon_exp = core.getEnemyValue(enemy, 'exp', 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)) { | ||||
| 		mon_atk = hero_atk; | ||||
| @ -633,10 +639,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = | ||||
| 		"hp": Math.floor(mon_hp), | ||||
| 		"atk": Math.floor(mon_atk), | ||||
| 		"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), | ||||
| 		"exp": Math.floor(mon_exp), | ||||
| 		"point": Math.floor(mon_point), | ||||
| 		"special": mon_special, | ||||
| 		"magic": mon_magic, | ||||
| 		"guards": guards, // 返回支援情况
 | ||||
| 	}; | ||||
| }, | ||||
| @ -655,15 +666,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = | ||||
| 		hero_atk = core.getRealStatusOrDefault(hero, 'atk'), | ||||
| 		hero_def = core.getRealStatusOrDefault(hero, 'def'), | ||||
| 		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_atk = core.getStatusOrDefault(hero, 'atk'), | ||||
| 		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之中
 | ||||
| @ -671,23 +680,34 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = | ||||
| 	var mon_hp = enemyInfo.hp, | ||||
| 		mon_atk = enemyInfo.atk, | ||||
| 		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:二倍斩
 | ||||
| 		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")) | ||||
| 		return null; // 不可战斗
 | ||||
| 
 | ||||
| 	// 战前造成的额外伤害(可被护盾抵消)
 | ||||
| 	var init_damage = 0; | ||||
| 	let init_damage = 0; | ||||
| 
 | ||||
| 	// 吸血
 | ||||
| 	if (core.hasSpecial(mon_special, 11)) { | ||||
| 		var vampire_damage = hero_hp * enemy.vampire; | ||||
| 		let vampire_damage = hero_hp * enemy.vampire; | ||||
| 
 | ||||
| 		// 如果有神圣盾免疫吸血等可以在这里写
 | ||||
| 		// 也可以用hasItem和hasEquip来判定装备
 | ||||
| @ -701,17 +721,60 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = | ||||
| 		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); | ||||
| 
 | ||||
| 	// 每回合的反击伤害;反击是按照勇士的攻击次数来计算回合
 | ||||
| 	var counterDamage = 0; | ||||
| 	let counterDamage = 0; | ||||
| 	if (core.hasSpecial(mon_special, 8)) | ||||
| 		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)) | ||||
| 		init_damage += Math.floor((enemy.purify || core.values.purify) * hero_mdef); | ||||
| 
 | ||||
| 	// 勇士每回合对怪物造成的伤害
 | ||||
| 	var hero_per_damage = Math.max(hero_atk - mon_def, 0); | ||||
| 
 | ||||
| 	// 如果没有破防,则不可战斗
 | ||||
| 	if (hero_per_damage <= 0) return null; | ||||
| 
 | ||||
| 	// 勇士的攻击回合数;为怪物生命除以每回合伤害向上取整
 | ||||
| 	var turn = Math.ceil(mon_hp / hero_per_damage); | ||||
| 	//上面这些还没修改
 | ||||
| 	//勇士护盾计算
 | ||||
| 	let barrier = hero_mdef; | ||||
| 	if (enemyInfo.magic) barrier = hero_def; | ||||
| 
 | ||||
| 	// ------ 支援 ----- //
 | ||||
| 	// 这个递归最好想明白为什么,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)?
 | ||||
| 	turn += core.getFlag("__extraTurn__", 0); | ||||
| 	if (guards.length > 0) { | ||||
| @ -764,13 +822,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = | ||||
| 			turn += core.getFlag("__extraTurn__", 0); | ||||
| 		} | ||||
| 	} | ||||
| 	core.removeFlag("__extraTurn__"); | ||||
| 	core.removeFlag("__extraTurn__");*/ | ||||
| 	// ------ 支援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) | ||||
| @ -788,12 +846,18 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = | ||||
| 		"mon_hp": Math.floor(mon_hp), | ||||
| 		"mon_atk": Math.floor(mon_atk), | ||||
| 		"mon_def": Math.floor(mon_def), | ||||
| 		"mon_mdef": Math.floor(mon_mdef), | ||||
| 		"init_damage": Math.floor(init_damage), | ||||
| 		"per_damage": Math.floor(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) | ||||
| 	}; | ||||
| 	/*TODO:怪物手册的修改(需要修改这里return的内容以及一些战后判断) | ||||
| 	1. 显示怪物是魔攻还是物攻(在怪物名字上做颜色变化,物攻是黄色,魔攻是蓝色) | ||||
| 	2. 一防减伤是物防还是魔防(由怪物是物攻还是魔攻来转换) | ||||
| 	3. 特殊战斗的怪物,在怪物手册里“伤害”写为“特殊战”*/ | ||||
| } | ||||
|     }, | ||||
|     "actions": { | ||||
| @ -824,7 +888,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = | ||||
| 		core.openBook(true); | ||||
| 		break; | ||||
| 	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; | ||||
| 	case 65: // A:读取自动存档(回退)
 | ||||
| 		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": "可以自由往来去过的楼层", | ||||
| 		"hideInReplay": 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})();" | ||||
| 	}, | ||||
| 	"coin": { | ||||
|  | ||||
							
								
								
									
										9932
									
								
								project/plugins.js
									
									
									
									
									
								
							
							
						
						
									
										9932
									
								
								project/plugins.js
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										701
									
								
								styles.css
									
									
									
									
									
								
							
							
						
						
									
										701
									
								
								styles.css
									
									
									
									
									
								
							| @ -1,534 +1,585 @@ | ||||
| html, body { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     background-color: #000; | ||||
|     overflow: hidden; | ||||
| html, | ||||
| body { | ||||
|   margin: 0; | ||||
|   padding: 0; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   background-color: #000; | ||||
|   overflow: hidden; | ||||
| } | ||||
| 
 | ||||
| #gameGroup { | ||||
|     position: absolute; | ||||
|     box-sizing: border-box; | ||||
|     -moz-box-sizing: border-box; | ||||
|     -webkit-box-sizing: border-box; | ||||
|     background-color: #000; | ||||
|   position: absolute; | ||||
|   box-sizing: border-box; | ||||
|   -moz-box-sizing: border-box; | ||||
|   -webkit-box-sizing: border-box; | ||||
|   background-color: #000; | ||||
| } | ||||
| 
 | ||||
| #mainTips { | ||||
|     color: #fff; | ||||
|     font-size: 0.8em; | ||||
|     position: fixed; | ||||
|     top: 10px; | ||||
|     left: 10px; | ||||
|     z-index: 370; | ||||
|   color: #fff; | ||||
|   font-size: 0.8em; | ||||
|   position: fixed; | ||||
|   top: 10px; | ||||
|   left: 10px; | ||||
|   z-index: 370; | ||||
| } | ||||
| 
 | ||||
| #musicBtn { | ||||
|     position: fixed; | ||||
|     bottom: 3px; | ||||
|     right: 3px; | ||||
|     cursor: pointer; | ||||
|     z-index: 400; | ||||
|     display: none; | ||||
|   position: fixed; | ||||
|   bottom: 3px; | ||||
|   right: 3px; | ||||
|   cursor: pointer; | ||||
|   z-index: 400; | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| #enlargeBtn { | ||||
|     position: fixed; | ||||
|     bottom: 3px; | ||||
|     right: 34px; | ||||
|     cursor: pointer; | ||||
|     z-index: 400; | ||||
|     display: none; | ||||
|   position: fixed; | ||||
|   bottom: 3px; | ||||
|   right: 34px; | ||||
|   cursor: pointer; | ||||
|   z-index: 400; | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| #startPanel { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     position: absolute; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     background-color: #fff; | ||||
|     overflow: hidden; | ||||
|     z-index: 300; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   position: absolute; | ||||
|   top: 0; | ||||
|   left: 0; | ||||
|   background-color: #fff; | ||||
|   overflow: hidden; | ||||
|   z-index: 300; | ||||
| } | ||||
| 
 | ||||
| #startTop { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     position: absolute; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     background-color: #000; | ||||
|     z-index: 350; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   position: absolute; | ||||
|   top: 0; | ||||
|   left: 0; | ||||
|   background-color: #000; | ||||
|   z-index: 350; | ||||
| } | ||||
| 
 | ||||
| #startTopProgressBar { | ||||
|     width: 90%; | ||||
|     height: 5%; | ||||
|     margin: 0 5%; | ||||
|     position: absolute; | ||||
|     top: 5%; | ||||
|     background-color: #fff; | ||||
|     z-index: 15; | ||||
|   width: 90%; | ||||
|   height: 5%; | ||||
|   margin: 0 5%; | ||||
|   position: absolute; | ||||
|   top: 5%; | ||||
|   background-color: #fff; | ||||
|   z-index: 15; | ||||
| } | ||||
| 
 | ||||
| #startTopProgress { | ||||
|     width: 0%; | ||||
|     height: 100%; | ||||
|     background-color: #666; | ||||
|   width: 0%; | ||||
|   height: 100%; | ||||
|   background-color: #666; | ||||
| } | ||||
| 
 | ||||
| #startTopLoadTips { | ||||
|     color: #fff; | ||||
|     font-size: 0.6em; | ||||
|     position: absolute; | ||||
|     top: 10%; | ||||
|     left: 5%; | ||||
|     z-index: 15; | ||||
|   color: #fff; | ||||
|   font-size: 0.6em; | ||||
|   position: absolute; | ||||
|   top: 10%; | ||||
|   left: 5%; | ||||
|   z-index: 15; | ||||
| } | ||||
| 
 | ||||
| #startTopHint { | ||||
|     color: #66CCFF; | ||||
|     position: absolute; | ||||
|     bottom: 0; | ||||
|     left: 5%; | ||||
|     z-index: 15; | ||||
|     font-size: 1.1em; | ||||
|   color: #66ccff; | ||||
|   position: absolute; | ||||
|   bottom: 0; | ||||
|   left: 5%; | ||||
|   z-index: 15; | ||||
|   font-size: 1.1em; | ||||
| } | ||||
| 
 | ||||
| #startBackground { | ||||
|     position:absolute; | ||||
|     top:50%; | ||||
|     left:50%; | ||||
|     height: 100%; | ||||
|     width: 100%; | ||||
|     transform:translate(-50%,-50%); | ||||
|     z-index: 260; | ||||
|   position: absolute; | ||||
|   top: 50%; | ||||
|   left: 50%; | ||||
|   height: 100%; | ||||
|   width: 100%; | ||||
|   transform: translate(-50%, -50%); | ||||
|   z-index: 260; | ||||
| } | ||||
| 
 | ||||
| #startLogo { | ||||
|     user-select: none; | ||||
|     position: absolute; | ||||
|     z-index: 290; | ||||
|     left: 0; | ||||
|     right: 0; | ||||
|     margin-left: auto; | ||||
|     margin-right: auto; | ||||
|     margin-top: 8%; | ||||
|     max-width: 100%; | ||||
|     text-align: center; | ||||
|     font: bold 0em STXingkai; | ||||
| 	color: #000000; | ||||
|   user-select: none; | ||||
|   position: absolute; | ||||
|   z-index: 290; | ||||
|   left: 0; | ||||
|   right: 0; | ||||
|   margin-left: auto; | ||||
|   margin-right: auto; | ||||
|   margin-top: 8%; | ||||
|   max-width: 100%; | ||||
|   text-align: center; | ||||
|   font: bold 0em STXingkai; | ||||
|   color: #000000; | ||||
| } | ||||
| 
 | ||||
| #startTitle { | ||||
|     user-select: none; | ||||
|     position: absolute; | ||||
|     z-index: 280; | ||||
|   user-select: none; | ||||
|   position: absolute; | ||||
|   z-index: 280; | ||||
| } | ||||
| 
 | ||||
| #startButtonGroup { | ||||
|     width: auto; | ||||
|     position: absolute; | ||||
|     text-align: center; | ||||
|     font-size: 1.4em; | ||||
|     display: none; | ||||
|     z-index: 310; | ||||
|     bottom: 0; | ||||
|     margin-bottom: 5%; | ||||
|     left: 50%; | ||||
|     transform: translateX(-50%); | ||||
|     padding: 15px 25px; | ||||
|     min-width: 100%; | ||||
|     /* default value */ | ||||
|     background-color: #000000; | ||||
|     opacity: 0.55; | ||||
|     color: #FFFFFF; | ||||
|     border: #FFFFFF 0px solid; | ||||
|     caret-color: #ffffff; | ||||
|     border-radius: 0px; | ||||
|   width: auto; | ||||
|   position: absolute; | ||||
|   text-align: center; | ||||
|   font-size: 1.4em; | ||||
|   display: none; | ||||
|   z-index: 310; | ||||
|   bottom: 0; | ||||
|   margin-bottom: 5%; | ||||
|   left: 50%; | ||||
|   transform: translateX(-50%); | ||||
|   padding: 15px 25px; | ||||
|   min-width: 100%; | ||||
|   /* default value */ | ||||
|   background-color: #000000; | ||||
|   opacity: 0.55; | ||||
|   color: #ffffff; | ||||
|   border: #ffffff 0px solid; | ||||
|   caret-color: #ffffff; | ||||
|   border-radius: 0px; | ||||
| } | ||||
| 
 | ||||
| #startButtons { | ||||
|     display: none; | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| #levelChooseButtons { | ||||
|     display: none; | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| .startButton { | ||||
|     width: 100%; | ||||
|     margin: 0; | ||||
| 	font:1.2rem "pala", sans-serif; | ||||
|     font-weight: normal; | ||||
|     display: block; | ||||
|     cursor: pointer; | ||||
|     padding: 0px 0; | ||||
|     border-color: transparent; | ||||
|     border-width: 0px; | ||||
|     border-style: solid; | ||||
|     border-radius: 0px; | ||||
|   width: 100%; | ||||
|   margin: 0; | ||||
|   font: 1.2rem pala, sans-serif; | ||||
|   font-weight: normal; | ||||
|   display: block; | ||||
|   cursor: pointer; | ||||
|   padding: 0px 0; | ||||
|   border-color: transparent; | ||||
|   border-width: 0px; | ||||
|   border-style: solid; | ||||
|   border-radius: 0px; | ||||
| } | ||||
| 
 | ||||
| .onChoiceAnimate { | ||||
|     animation: onChoice 2s ease-in-out 0s infinite normal none running; | ||||
|   animation: onChoice 2s ease-in-out 0s infinite normal none running; | ||||
| } | ||||
| 
 | ||||
| #floorMsgGroup { | ||||
|     position: absolute; | ||||
|     text-align: center; | ||||
|     display: none; | ||||
|     color: #fff; | ||||
|     background-color: #000; | ||||
|     z-index: 230; | ||||
|   position: absolute; | ||||
|   text-align: center; | ||||
|   display: none; | ||||
|   color: #fff; | ||||
|   background-color: #000; | ||||
|   z-index: 230; | ||||
| } | ||||
| 
 | ||||
| #logoLabel { | ||||
|     margin-top: 8%; | ||||
|     font: bold 3em STXingkai; | ||||
|     margin-left: auto; | ||||
|     margin-right: auto; | ||||
|   margin-top: 8%; | ||||
|   font: bold 3em STXingkai; | ||||
|   margin-left: auto; | ||||
|   margin-right: auto; | ||||
| } | ||||
| 
 | ||||
| #versionLabel { | ||||
|     margin-top: -3%; | ||||
|     font-size: 1.2em; | ||||
|     font-weight: bold; | ||||
|   margin-top: -3%; | ||||
|   font-size: 1.2em; | ||||
|   font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| #floorNameLabel { | ||||
|     margin-top: 30px; | ||||
|     font-size: 1.6em; | ||||
|     font-weight: bold; | ||||
|   margin-top: 30px; | ||||
|   font-size: 1.6em; | ||||
|   font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| #statusBar { | ||||
|     position: absolute; | ||||
|     box-sizing: border-box; | ||||
|     -moz-box-sizing: border-box; | ||||
|     -webkit-box-sizing: border-box; | ||||
|     background: url(project/materials/ground.png) repeat; | ||||
|     z-index: 185; | ||||
|     display: none; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     padding: 3px; | ||||
|   position: absolute; | ||||
|   box-sizing: border-box; | ||||
|   -moz-box-sizing: border-box; | ||||
|   -webkit-box-sizing: border-box; | ||||
|   background: url(project/materials/ground.png) repeat; | ||||
|   z-index: 185; | ||||
|   display: none; | ||||
|   top: 0; | ||||
|   left: 0; | ||||
|   padding: 3px; | ||||
| } | ||||
| #statusBar .status{ | ||||
|     position: relative; | ||||
|     display: block; | ||||
|     float: left; | ||||
|     width: 100%; | ||||
| #statusBar .status { | ||||
|   position: relative; | ||||
|   display: block; | ||||
|   float: left; | ||||
|   width: 100%; | ||||
| } | ||||
| .status img{ | ||||
|     vertical-align: middle; | ||||
|     width: auto; | ||||
|     height: 100%; | ||||
|     max-height: 1.6em; | ||||
| .status img { | ||||
|   vertical-align: middle; | ||||
|   width: auto; | ||||
|   height: 100%; | ||||
|   max-height: 1.6em; | ||||
| } | ||||
| #statusBar span{ | ||||
|     font: bold italic 1.1em Verdana; | ||||
|     display: inline; | ||||
| #statusBar span { | ||||
|   font: bold italic 1.1em Verdana; | ||||
|   display: inline; | ||||
| } | ||||
| #statusBar p { | ||||
|     display: inline-block; | ||||
|     vertical-align: middle; | ||||
|     width: 60%; | ||||
|     margin: 0; | ||||
|     color: white; | ||||
|     font: bold italic 1.1em Verdana; | ||||
|     white-space: nowrap; | ||||
|   display: inline-block; | ||||
|   vertical-align: middle; | ||||
|   width: 60%; | ||||
|   margin: 0; | ||||
|   color: white; | ||||
|   font: bold italic 1.1em Verdana; | ||||
|   white-space: nowrap; | ||||
| } | ||||
| #toolBar { | ||||
|     position: absolute; | ||||
|     background: url(project/materials/ground.png) repeat; | ||||
|     z-index: 210; | ||||
|     box-sizing: border-box; | ||||
|     -moz-box-sizing: border-box; | ||||
|     -webkit-box-sizing: border-box; | ||||
|     display: none; | ||||
|     padding: 3px; | ||||
|   position: absolute; | ||||
|   background: url(project/materials/ground.png) repeat; | ||||
|   z-index: 210; | ||||
|   box-sizing: border-box; | ||||
|   -moz-box-sizing: border-box; | ||||
|   -webkit-box-sizing: border-box; | ||||
|   display: none; | ||||
|   padding: 3px; | ||||
| } | ||||
| #toolBar .tools{ | ||||
|     position: relative; | ||||
|     display: block; | ||||
|     float: left; | ||||
| #toolBar .tools { | ||||
|   position: relative; | ||||
|   display: block; | ||||
|   float: left; | ||||
| } | ||||
| 
 | ||||
| p#hard { | ||||
|     width: 6em; | ||||
|     vertical-align: middle; | ||||
|     display: inline-block; | ||||
|     color: red; | ||||
|     font: bold normal 1.1em "Arial Black"; | ||||
|     text-align: center; | ||||
|     margin: 0 6px 6px 0; | ||||
|     word-break: keep-all; | ||||
|   width: 6em; | ||||
|   vertical-align: middle; | ||||
|   display: inline-block; | ||||
|   color: red; | ||||
|   font: bold normal 1.1em "Arial Black"; | ||||
|   text-align: center; | ||||
|   margin: 0 6px 6px 0; | ||||
|   word-break: keep-all; | ||||
| } | ||||
| 
 | ||||
| span#poison, span#weak, span#curse, span#pickaxe, span#bomb, span#fly { | ||||
|     font-style: normal; | ||||
|     font-size: 1em; | ||||
| span#poison, | ||||
| span#weak, | ||||
| span#curse, | ||||
| span#pickaxe, | ||||
| span#bomb, | ||||
| span#fly { | ||||
|   font-style: normal; | ||||
|   font-size: 1em; | ||||
| } | ||||
| 
 | ||||
| p#name { | ||||
|     font-style: normal; | ||||
|   font-style: normal; | ||||
| } | ||||
| 
 | ||||
| .gameCanvas { | ||||
|     position: absolute; | ||||
|     box-sizing: border-box; | ||||
|     -moz-box-sizing: border-box; | ||||
|     -webkit-box-sizing: border-box; | ||||
|   position: absolute; | ||||
|   box-sizing: border-box; | ||||
|   -moz-box-sizing: border-box; | ||||
|   -webkit-box-sizing: border-box; | ||||
| } | ||||
| 
 | ||||
| #gif { | ||||
|     z-index: 20; | ||||
|     position: absolute; | ||||
|     overflow: hidden; | ||||
|   z-index: 20; | ||||
|   position: absolute; | ||||
|   overflow: hidden; | ||||
| } | ||||
| 
 | ||||
| #gif2 { | ||||
|     z-index: 90; | ||||
|     position: absolute; | ||||
|     overflow: hidden; | ||||
|   z-index: 90; | ||||
|   position: absolute; | ||||
|   overflow: hidden; | ||||
| } | ||||
| 
 | ||||
| #gameDraw { | ||||
|     position: absolute; | ||||
|     background: #000000; | ||||
|     overflow: hidden; | ||||
|     z-index: 185; | ||||
|   position: absolute; | ||||
|   background: #000000; | ||||
|   overflow: hidden; | ||||
|   z-index: 185; | ||||
| } | ||||
| 
 | ||||
| #bg { | ||||
|     z-index: 10; | ||||
|   z-index: 10; | ||||
| } | ||||
| 
 | ||||
| #event { | ||||
|     z-index: 30; | ||||
|   z-index: 30; | ||||
| } | ||||
| 
 | ||||
| #hero { | ||||
|     z-index: 40; | ||||
|   z-index: 40; | ||||
| } | ||||
| 
 | ||||
| #event2 { | ||||
|     z-index: 50; | ||||
|   z-index: 50; | ||||
| } | ||||
| 
 | ||||
| #fg { | ||||
|     z-index: 60; | ||||
|   z-index: 60; | ||||
| } | ||||
| 
 | ||||
| #damage { | ||||
|     z-index: 65; | ||||
|   z-index: 65; | ||||
| } | ||||
| 
 | ||||
| #animate { | ||||
|     z-index: 70; | ||||
|   z-index: 70; | ||||
| } | ||||
| 
 | ||||
| #curtain { | ||||
|     z-index: 125; | ||||
|   z-index: 125; | ||||
| } | ||||
| 
 | ||||
| #ui { | ||||
|     z-index: 140; | ||||
|   z-index: 140; | ||||
| } | ||||
| 
 | ||||
| #data { | ||||
|     z-index: 170; | ||||
|   z-index: 170; | ||||
| } | ||||
| 
 | ||||
| #inputDiv { | ||||
|     display: none; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     position: fixed; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     background: rgba(127,127,127,0.6); | ||||
|     z-index: 2000 | ||||
|   display: none; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   position: fixed; | ||||
|   top: 0; | ||||
|   left: 0; | ||||
|   background: rgba(127, 127, 127, 0.6); | ||||
|   z-index: 2000; | ||||
| } | ||||
| 
 | ||||
| #inputDialog { | ||||
|     position: fixed; | ||||
|     top: 50%; | ||||
|     left: 50%; | ||||
|     transform: translate(-50%, -55%); | ||||
|     background: white; | ||||
|     width: 250px; | ||||
|     min-height: 50px; | ||||
|   position: fixed; | ||||
|   top: 50%; | ||||
|   left: 50%; | ||||
|   transform: translate(-50%, -55%); | ||||
|   background: white; | ||||
|   width: 250px; | ||||
|   min-height: 50px; | ||||
| } | ||||
| 
 | ||||
| #inputMessage { | ||||
|     word-wrap: break-word; | ||||
|     text-align: left; | ||||
|     margin-left: 8%; | ||||
|     margin-right: 5%; | ||||
|   word-wrap: break-word; | ||||
|   text-align: left; | ||||
|   margin-left: 8%; | ||||
|   margin-right: 5%; | ||||
| } | ||||
| 
 | ||||
| #inputBox { | ||||
|     margin-left: 8%; | ||||
|     width: 80%; | ||||
|     margin-bottom: 10px; | ||||
|     padding: 5px 3px; | ||||
|     border: 1px solid; | ||||
|     background: #F0F0F0; | ||||
|   margin-left: 8%; | ||||
|   width: 80%; | ||||
|   margin-bottom: 10px; | ||||
|   padding: 5px 3px; | ||||
|   border: 1px solid; | ||||
|   background: #f0f0f0; | ||||
| } | ||||
| 
 | ||||
| #inputYes { | ||||
|     margin-bottom: 15px; | ||||
|     margin-left: 8%; | ||||
|   margin-bottom: 15px; | ||||
|   margin-left: 8%; | ||||
| } | ||||
| 
 | ||||
| #inputNo { | ||||
|     float:right; | ||||
|     margin-right: 10%; | ||||
|   float: right; | ||||
|   margin-right: 10%; | ||||
| } | ||||
| 
 | ||||
| #_selector, ._uievent_selector { | ||||
|     animation: selector 2s ease-in-out 0s infinite normal none running; | ||||
| #_selector, | ||||
| ._uievent_selector { | ||||
|   animation: selector 2s ease-in-out 0s infinite normal none running; | ||||
| } | ||||
| 
 | ||||
| @-webkit-keyframes selector { | ||||
|     0% { opacity: 0.95; } | ||||
|     50% { opacity: 0.55; } | ||||
|     100% { opacity: 0.95; } | ||||
|   0% { | ||||
|     opacity: 0.95; | ||||
|   } | ||||
|   50% { | ||||
|     opacity: 0.55; | ||||
|   } | ||||
|   100% { | ||||
|     opacity: 0.95; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @keyframes selector { | ||||
|     0% { opacity: 0.95; } | ||||
|     50% { opacity: 0.55; } | ||||
|     100% { opacity: 0.95; } | ||||
|   0% { | ||||
|     opacity: 0.95; | ||||
|   } | ||||
|   50% { | ||||
|     opacity: 0.55; | ||||
|   } | ||||
|   100% { | ||||
|     opacity: 0.95; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #next { | ||||
|     width: 5px; | ||||
|     height: 5px; | ||||
|     display: none; | ||||
|     position: absolute; | ||||
|     transform: rotate(45deg); | ||||
|     border-bottom-width: 4px; | ||||
|     border-bottom-style: solid; | ||||
|     border-right-width: 4px; | ||||
|     border-right-style: solid; | ||||
|     -webkit-animation: next .5s ease-in-out alternate infinite; | ||||
|     animation: next .5s ease-in-out alternate infinite; | ||||
|     left: 0; | ||||
|     top: 0; | ||||
|     opacity: 0.7; | ||||
|     z-index: 169; | ||||
|   width: 5px; | ||||
|   height: 5px; | ||||
|   display: none; | ||||
|   position: absolute; | ||||
|   transform: rotate(45deg); | ||||
|   border-bottom-width: 4px; | ||||
|   border-bottom-style: solid; | ||||
|   border-right-width: 4px; | ||||
|   border-right-style: solid; | ||||
|   -webkit-animation: next 0.5s ease-in-out alternate infinite; | ||||
|   animation: next 0.5s ease-in-out alternate infinite; | ||||
|   left: 0; | ||||
|   top: 0; | ||||
|   opacity: 0.7; | ||||
|   z-index: 169; | ||||
| } | ||||
| 
 | ||||
| @-webkit-keyframes next { | ||||
|     100% { | ||||
|         transform: rotate(45deg) translate(-3px, -3px); | ||||
|     } | ||||
|   100% { | ||||
|     transform: rotate(45deg) translate(-3px, -3px); | ||||
|   } | ||||
| } | ||||
| @keyframes next { | ||||
|     100% { | ||||
|         transform: rotate(45deg) translate(-3px, -3px); | ||||
|     } | ||||
|   100% { | ||||
|     transform: rotate(45deg) translate(-3px, -3px); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| #startImageBackgroundDiv { | ||||
|     display: none; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     position: fixed; | ||||
|     z-index: 10000; | ||||
|   display: none; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   position: fixed; | ||||
|   z-index: 10000; | ||||
| } | ||||
| 
 | ||||
| #startImageDiv { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     position: fixed; | ||||
|     background: black; | ||||
|     opacity: 1; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   position: fixed; | ||||
|   background: black; | ||||
|   opacity: 1; | ||||
| } | ||||
| 
 | ||||
| #startImageLogo { | ||||
|     opacity: 0; | ||||
|     max-width: 60%; | ||||
|     max-height: 60%; | ||||
|     position: fixed; | ||||
|     left: 50%; | ||||
|     top: 50%; | ||||
|     transform: translate(-50%, -50%); | ||||
|   opacity: 0; | ||||
|   max-width: 60%; | ||||
|   max-height: 60%; | ||||
|   position: fixed; | ||||
|   left: 50%; | ||||
|   top: 50%; | ||||
|   transform: translate(-50%, -50%); | ||||
| } | ||||
| 
 | ||||
| .startImageAnimation { | ||||
|     -webkit-animation: startImage 4s ease-in-out 1s alternate 1; | ||||
|     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; | ||||
| } | ||||
| 
 | ||||
| @-webkit-keyframes startImage { | ||||
|     0% { opacity: 0; } | ||||
|     60% { opacity: 1; } | ||||
|     100% { opacity: 0; } | ||||
|   0% { | ||||
|     opacity: 0; | ||||
|   } | ||||
|   60% { | ||||
|     opacity: 1; | ||||
|   } | ||||
|   100% { | ||||
|     opacity: 0; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @keyframes startImage { | ||||
|     0% { opacity: 0; } | ||||
|     60% { opacity: 1; } | ||||
|     100% { opacity: 0; } | ||||
|   0% { | ||||
|     opacity: 0; | ||||
|   } | ||||
|   60% { | ||||
|     opacity: 1; | ||||
|   } | ||||
|   100% { | ||||
|     opacity: 0; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| .startImageDivAnimation { | ||||
|     -webkit-animation: startImageDivDisappear 2s ease-in-out 5s alternate 1; | ||||
|     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; | ||||
| } | ||||
| 
 | ||||
| @-webkit-keyframes startImageDivDisappear { | ||||
|     0% { opacity: 1 } | ||||
|     100% { opacity: 0 } | ||||
|   0% { | ||||
|     opacity: 1; | ||||
|   } | ||||
|   100% { | ||||
|     opacity: 0; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @keyframes startImageDivDisappear { | ||||
|     0% { opacity: 1 } | ||||
|     100% { opacity: 0 } | ||||
|   0% { | ||||
|     opacity: 1; | ||||
|   } | ||||
|   100% { | ||||
|     opacity: 0; | ||||
|   } | ||||
| } | ||||
| #ui-editor { | ||||
|     z-index: 9999; | ||||
|     position: absolute; | ||||
|     overflow: visible; | ||||
|     height: 100%; | ||||
|   z-index: 9999; | ||||
|   position: absolute; | ||||
|   overflow: visible; | ||||
|   height: 100%; | ||||
| } | ||||
| 
 | ||||
| @font-face { | ||||
|     font-family: Fira Code; | ||||
|     src: url(../src/fonts/FiraCode-Regular.ttf); | ||||
|   font-family: Fira Code; | ||||
|   src: url(../src/fonts/FiraCode-Regular.ttf); | ||||
| } | ||||
| 
 | ||||
| /* 注释下面这三行以开启抗锯齿 */ | ||||
| .anti-aliasing { | ||||
|     image-rendering: pixelated; | ||||
|   image-rendering: pixelated; | ||||
| } | ||||
| 
 | ||||
| .warning { | ||||
|     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; | ||||
|     -webkit-animation: warning 1s linear 0s alternate infinite; | ||||
|   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; | ||||
|   -webkit-animation: warning 1s linear 0s alternate infinite; | ||||
| } | ||||
| 
 | ||||
| @keyframes warning { | ||||
|     0 % { 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);} | ||||
|   0 % { | ||||
|     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 { | ||||
|     0 % { 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);} | ||||
|   0 % { | ||||
|     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 { | ||||
|     transition: transform 1.5s ease-out; | ||||
|     -webkit-transition: transform 1.5s ease-out; | ||||
| } | ||||
|   transition: transform 1.5s ease-out; | ||||
|   -webkit-transition: transform 1.5s ease-out; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user