From cd149a036073ae2cbc4a9e2df890281141287ef1 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sat, 10 Mar 2018 21:02:47 +0800 Subject: [PATCH 1/6] Save canvas --- libs/actions.js | 4 ---- libs/maps.js | 7 ------- libs/ui.js | 2 -- project/floors/sample0.js | 1 - 4 files changed, 14 deletions(-) diff --git a/libs/actions.js b/libs/actions.js index e93d5238..48601e6f 100644 --- a/libs/actions.js +++ b/libs/actions.js @@ -418,10 +418,6 @@ actions.prototype.ondown = function (x ,y) { } core.status.downTime = new Date(); - // core.status.holdingPath=1; - //core.status.mouseOutCheck =1; - // window.setTimeout(core.clearStepPostfix); - core.saveCanvas('ui'); core.clearMap('ui', 0, 0, 416,416); var pos={'x':x,'y':y} core.status.stepPostfix=[]; diff --git a/libs/maps.js b/libs/maps.js index 90b12abb..5ae7fc93 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -520,8 +520,6 @@ maps.prototype.moveBlock = function(x,y,steps,time,immediateHide,callback) { time = time || 500; core.status.replay.animate=true; - //clearInterval(core.interval.tipAnimate); - core.saveCanvas('animate'); core.clearMap('animate', 0, 0, 416, 416); var block = core.getBlock(x,y,core.status.floorId,false); @@ -592,7 +590,6 @@ maps.prototype.moveBlock = function(x,y,steps,time,immediateHide,callback) { core.canvas.animate.drawImage(blockImage, animateCurrent * 32, blockIcon * 32, 32, 32, nowX, nowY, 32, 32); if (opacityVal<=0) { clearInterval(animate); - core.loadCanvas('animate'); core.clearMap('animate', 0, 0, 416, 416); core.setOpacity('animate', 1); core.status.replay.animate=false; @@ -620,8 +617,6 @@ maps.prototype.moveBlock = function(x,y,steps,time,immediateHide,callback) { maps.prototype.animateBlock = function (loc,type,time,callback) { if (type!='hide') type='show'; - //clearInterval(core.interval.tipAnimate); - core.saveCanvas('animate'); core.clearMap('animate', 0, 0, 416, 416); if (typeof loc[0] == 'number' && typeof loc[1] == 'number') @@ -663,11 +658,9 @@ maps.prototype.animateBlock = function (loc,type,time,callback) { core.setOpacity('animate', opacityVal); core.clearMap('animate',0,0,416,416); - // core.canvas.animate.drawImage(blockImage, 0, blockIcon * 32, 32, 32, block.x * 32, block.y * 32, 32, 32); draw(); if (opacityVal >=1 || opacityVal<=0) { clearInterval(animate); - core.loadCanvas('animate'); core.clearMap('animate', 0, 0, 416, 416); core.setOpacity('animate', 1); core.status.replay.animate=false; diff --git a/libs/ui.js b/libs/ui.js index 7160ebf4..203552d8 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -163,7 +163,6 @@ ui.prototype.drawTip = function (text, itemIcon) { var textX, textY, width, height, hide = false, opacityVal = 0; clearInterval(core.interval.tipAnimate); core.setFont('data', "16px Arial"); - core.saveCanvas('data'); core.setOpacity('data', 0); core.canvas.data.textAlign = 'left'; if (!core.isset(itemIcon)) { @@ -194,7 +193,6 @@ ui.prototype.drawTip = function (text, itemIcon) { core.fillText('data', text, textX + 5, textY + 15, '#fff'); if (opacityVal > 0.6 || opacityVal < 0) { if (hide) { - core.loadCanvas('data'); core.clearMap('data', 5, 5, 400, height); core.setOpacity('data', 1); clearInterval(core.interval.tipAnimate); diff --git a/project/floors/sample0.js b/project/floors/sample0.js index d5815cc9..e78b84ac 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -78,7 +78,6 @@ main.floors.sample0 = }, }, "changeFloor": { // 楼层转换事件;该事件不能和上面的events有冲突(同位置点),否则会被覆盖 - "7,9": {"floorId": "sample1", "stair": "downFloor"}, "6,0": {"floorId": "sample1", "stair": "downFloor"}, // 目标点:sample1层的下楼梯位置 "0,11": {"floorId": "sample0", "loc": [0,12]}, // 目标点:sample0层的x=0,y=12位置 "0,12": {"floorId": "sample0", "stair": "upFloor"}, // 注意,目标层有多个楼梯的话,写stair可能会导致到达位置不确定。这时候推荐写loc指明目标点位置。 From 8fe982ed15022fe279a14647f7f48954f254f6f8 Mon Sep 17 00:00:00 2001 From: oc Date: Sat, 10 Mar 2018 23:43:52 +0800 Subject: [PATCH 2/6] Compress --- main.js | 54 +++++++++++++++--------------------- project/data.comment.js | 1 - project/data.js | 5 ---- 常用工具/JS代码压缩工具.exe | Bin 7168 -> 8192 bytes 常用工具/RM动画导出器.exe | Bin 33792 -> 34304 bytes 5 files changed, 22 insertions(+), 38 deletions(-) diff --git a/main.js b/main.js index fee0d1aa..272e6d52 100644 --- a/main.js +++ b/main.js @@ -4,6 +4,11 @@ function main() { this.version = "1.4.1"; // 游戏版本号;如果更改了游戏内容建议修改此version以免造成缓存问题。 + this.useCompress = false; // 是否使用压缩文件 + // 当你即将发布你的塔时,请使用“JS代码压缩工具”将所有js代码进行压缩,然后将这里的useCompress改为true。 + // 请注意,只有useCompress是false时才会读取floors目录下的文件,为true时会直接读取libs目录下的floors.min.js文件。 + // 如果要进行剧本的修改请务必将其改成false。 + //------------------------ 用户修改内容 END ------------------------// this.dom = { @@ -122,7 +127,7 @@ main.prototype.init = function (mode, callback) { image.src="project/images/"+t+".png"; main.statusBar.icons[t] = image; }) - main.loadPureData(function(){ + main.loaderJs('project', main.pureData, function(){ var mainData = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.main; for(var ii in mainData)main[ii]=mainData[ii]; @@ -140,7 +145,7 @@ main.prototype.init = function (mode, callback) { main.dom.levelChooseButtons.appendChild(span); }); - main.loaderJs(function () { + main.loaderJs('libs', main.loadList, function () { main.core = core; for (i = 0; i < main.loadList.length; i++) { @@ -163,21 +168,32 @@ main.prototype.init = function (mode, callback) { } ////// 动态加载所有核心JS文件 ////// -main.prototype.loaderJs = function (callback) { +main.prototype.loaderJs = function (dir, loadList, callback) { var instanceNum = 0; // 加载js main.setMainTipsText('正在加载核心js文件...') - for (var i = 0; i < main.loadList.length; i++) { - main.loadMod(main.loadList[i], function (modName) { + for (var i = 0; i < loadList.length; i++) { + main.loadMod(dir, loadList[i], function (modName) { main.setMainTipsText(modName + '.js 加载完毕'); instanceNum++; - if (instanceNum === main.loadList.length) { + if (instanceNum === loadList.length) { callback(); } }); } } +////// 加载某一个JS文件 ////// +main.prototype.loadMod = function (dir, modName, callback) { + var script = document.createElement('script'); + var name = modName; + script.src = dir + '/' + modName + (this.useCompress?".min":"") + '.js?v=' + this.version; + main.dom.body.appendChild(script); + script.onload = function () { + callback(name); + } +} + ////// 动态加载所有楼层(剧本) ////// main.prototype.loaderFloors = function (callback) { @@ -205,17 +221,6 @@ main.prototype.loaderFloors = function (callback) { } } -////// 加载某一个JS文件 ////// -main.prototype.loadMod = function (modName, callback) { - var script = document.createElement('script'); - var name = modName; - script.src = 'libs/' + modName + (this.useCompress?".min":"") + '.js?v=' + this.version; - main.dom.body.appendChild(script); - script.onload = function () { - callback(name); - } -} - ////// 加载某一个楼层 ////// main.prototype.loadFloor = function(floorId, callback) { var script = document.createElement('script'); @@ -226,27 +231,12 @@ main.prototype.loadFloor = function(floorId, callback) { } } -main.prototype.loadPureData = function(callback) { - var loadedNum = 0; - main.pureData.forEach(function(name){ - var script = document.createElement('script'); - script.src = 'project/' + name +'.js?v=' + main.version; - main.dom.body.appendChild(script); - script.onload = function () { - loadedNum++; - if (loadedNum == main.pureData.length)callback(); - } - }); - -} - ////// 加载过程提示 ////// main.prototype.setMainTipsText = function (text) { main.dom.mainTips.innerHTML = text; } - main.prototype.listen = function () { ////// 窗口大小变化时 ////// diff --git a/project/data.comment.js b/project/data.comment.js index 5fc22fd5..dedc872c 100644 --- a/project/data.comment.js +++ b/project/data.comment.js @@ -1,7 +1,6 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "main": { - "useCompress": " 是否使用压缩文件 \n 当你即将发布你的塔时,请使用“JS代码压缩工具”将所有js代码进行压缩,然后将这里的useCompress改为true。 \n 请注意,只有useCompress是false时才会读取floors目录下的文件,为true时会直接读取libs目录下的floors.min.js文件。 \n 如果要进行剧本的修改请务必将其改成false。 \n$select({\"values\":[false]})$end", "floorIds": " 在这里按顺序放所有的楼层;其顺序直接影响到楼层传送器的顺序和上楼器/下楼器的顺序 \n$leaf(true)$end", "pngs": " 在此存放所有可能使用的图片,只能是png格式,可以不写后缀名 \n 图片可以被作为背景图(的一部分),也可以直接用自定义事件进行显示。 \n 图片名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 \n 建议对于较大的图片,在网上使用在线的“图片压缩工具(http://compresspng.com/zh/)”来进行压缩,以节省流量 \n 依次向后添加 \n$leaf(true)$end", "animates": " 在此存放所有可能使用的动画,必须是animate格式,在这里不写后缀名 \n 动画必须放在animates目录下;文件名不能使用中文,不能带空格或特殊字符 \n \"jianji\", \"thunder\" \n 根据需求自行添加 \n$leaf(true)$end", diff --git a/project/data.js b/project/data.js index f1ffcbc6..4b3d99a5 100644 --- a/project/data.js +++ b/project/data.js @@ -1,11 +1,6 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = { "main" : { - "useCompress" : false, // 是否使用压缩文件 - // 当你即将发布你的塔时,请使用“JS代码压缩工具”将所有js代码进行压缩,然后将这里的useCompress改为true。 - // 请注意,只有useCompress是false时才会读取floors目录下的文件,为true时会直接读取libs目录下的floors.min.js文件。 - // 如果要进行剧本的修改请务必将其改成false。 - "floorIds" : [ "sample0", "sample1", "sample2" ],// 在这里按顺序放所有的楼层;其顺序直接影响到楼层传送器的顺序和上楼器/下楼器的顺序 diff --git a/常用工具/JS代码压缩工具.exe b/常用工具/JS代码压缩工具.exe index a7a7f9ef43627bf1087f730843242c654c204774..787fd7ea7baa68dbae9a5be80458741bf4536f2f 100644 GIT binary patch delta 2267 zcmbtWX>3$g6h80G%$t2Wx3BYNUrNCamQJyhq-7VYh*lDqKv^TDEmEjXxh(`@WJ=Vi zC`$AA0cay&`~k!mQWuoOsF4_=KSX09KWJ*=h9O8I(Le(AyLXma{UM1nx#ykjo^#%J z&b>2(&4Y^$JU?aAjW^a(@iRuM;#S;51{98h($_R}a+UAQETXJXEF#)y8>-el8;LxS z2OEiEX0nmq^==?_&kWEl8p{dBf5eJ3S=zJ z{GQF!qBCuD(`v3#GkJ~Yi2Bl%M6NWVy4*Yu*`x9HvN`~@XEf+_=1{LI%>)U8+;!=I zm8d@iR<|;%BNqneaqzv^nTvo=R;<=-4t@+Wv*n_~PjfIE)0k~dE(VdmDU!*Ixww!| zOcI0pu}9H$rW?r_!%WX5L73tqAeX4k6>J<$9*UXE3 z-G!7<1({t1l%|wz!~((9dVmF3)yq8#SB;O4^9DG|ja7NwZErb-#yEHfly?dn3ivP7 zf-ERe3zksZTS^MlLWUl04j^rwg;@BAj(#5&#e4n@$I&_wUF>Sj6C` z5au|G1epgk#LpGPuoO$kMJABTBjsiIA~xi1cS zjKyT7v0|mN#d?Lk-p>1xs?H|Qs_tiQJ#OfU=2K$q<1BGRXRLx*ivyfwNkco%l0oJN z4e_V26-<~h(1>g>m_iEzIDf9f5fC?kUcnfDMZBcE59DaK>XpU7DV8$$u#A=pifE~j zL=jAwRZ1YiM);|M%S4k$i6sDPf+biSpgx2npfNu`55Ig`928a|=ZOCd4GdljDkvWy zUN1yZ3xBlCeNpC?SWDJ-OI+c0x*Mmt2?)_b(pOLrHx}moPulso5-ad^>Xo2jDGI+> z)-JZT3PVCoPc;W^>G_9LqMAKKRtr%tR!w$*_dM}fzlhnV5q*i+aMn`f3(#yTwl0^3k%6S8)iZAf{6rdyWKF>185NxB?#j-?&6)v^I} zxup~Ipt=ovl5*yK^ANcbjSVN$vjaJ34y% z&9B|teHDGgDMwqWn>uO0yw~$XJ~=>Js0RTv)JHpD?xt4ipaHD;w2mm)xh>uPVs?6d z_o1shpX>f(Sq7dNQrM(Ww4Nv|yy}-l#wS}ENU6ynWk015QG6GGEBVZml~4nbv#Xev z0-LE9RpwC4QtHCSIiiqz>S^MeB2kX1dE4F2UX;HHUc}7J-iMXA`Jp$iOf$dpPPHh> z2J@^pI+F4oRdC2gjrh0zt2Z8bd;NH_c6iG>=2sODC>>_dzo5mMQdHk;d$mvXRc@&4 zb~xfbAGiW7u$H(F+Iaavt7U*`|Co%!UW zq2$FE#%&|}nO&(IEBU>Teohk>8Y|nfAW` DZf2uB delta 1487 zcmbVMTZmgl82)EYa!zi0_Dm+%O?I(-N#ccwteHf@r}9Tck@VBDic-LIn{d{xjKx;-d%VoA1BO z{4?MA&zadiGkW$^W~R02DOi1O0VRIo2MD6W({cV*Xk6ZJpDO^Am18@=VRs|V1BU?u zXdm1Fkd$e@2-QcVH`nunye)ud4-IS0l7pn!`E;J^*n-uf*Vd|0j^^yf;J9Q zl5oLH6ioPw%KbE77d3#Rep6u8qd7c}FBd}aFGT~MT3DG(K?LFco9|J8sVLGuuT_iT z?6<@*Tvv-DPxT+*E=x4fX0F-*dbrzSF6L&gN-cq=co##uTrH{0^UAEN^4gA`!8L^2 z%#Nhi%`v++sJ1Z0946>PFq8L3xHEbYZ^HVSbAel?_!y(i5{oKn2p8znb5AdDwHxp< zk3MoPg;|L+cuB$;WA%u*fhm_5i!uu_Chm01xHbob+5r8zVYRu^VkybJSkX_gu(u;o zx)%fHL=SL>IjsM!>b7#b-4-cK)Cm_YM&=efEDH2SAxwx0QK=@C-&_g$GM31oAOUj+~$mW<1auJj^Hx+y0gc7U(fo^86)D*rSqZv}UeLvn;~&91Q`wjHblpYeDGZN*m67_`wbs3v)l|AK$W?oU>|ha|p) zY4lBF_dZz~FMYl7pN-2~8pTf+zi6ax%(ji@LdYV)&sP7JxB`|GA8w>0^je{j4mDfh V&7^6^{&v$p3QacjJ82ZGe*ybN6@35z diff --git a/常用工具/RM动画导出器.exe b/常用工具/RM动画导出器.exe index 0e762d67695a42ca135c482e611e77202c42a737..77f2d0f71d13d0de50ae76cf1b1d6398e78e0cb0 100644 GIT binary patch delta 6367 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 From 61a804a19da9af10d309fdb636fed00f23c30b5f Mon Sep 17 00:00:00 2001 From: oc Date: Sun, 11 Mar 2018 01:32:03 +0800 Subject: [PATCH 3/6] PS v2.0 --- 常用工具/便捷PS工具.exe | Bin 20992 -> 23552 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/常用工具/便捷PS工具.exe b/常用工具/便捷PS工具.exe index 3d453d0ce4ad23e752467ebce89088974a9bba9e..8fbef677ad8737db1800a2346b7a5049cb072d35 100644 GIT binary patch literal 23552 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 From 0d592f4b4e72931177d7c4e88067cd3b50e472dd Mon Sep 17 00:00:00 2001 From: oc Date: Sun, 11 Mar 2018 01:33:02 +0800 Subject: [PATCH 4/6] PS v2.0 --- 常用工具/便捷PS工具.exe | Bin 23552 -> 23552 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/常用工具/便捷PS工具.exe b/常用工具/便捷PS工具.exe index 8fbef677ad8737db1800a2346b7a5049cb072d35..605b18a29cd313a677536c58a2e7c036db2adcce 100644 GIT binary patch delta 189 zcmZqJ!Pu~aaY6^QHtM^>hK!KATxJXDIRW zfA8j;@G|LqfI@9(u&@8*72XyCm+zlEe1JREw~g!UJeLSroy{M-XRwOy5L*%j)W^UC l#4?Nw3`>AkFPS_yP@GY1^VUFiM#dMD_XZhm{uIQ=2>_SgVT_%;UCy1cck_R_x15qwSQr?TLxUMCl!01-I+Wc*Jzapb$7WW|8A{yT z-@7>{yi7VDpinz`jkkrs^!z^o+g>KQZhlqz_({07;N~yhGgw7A#g;??^)N62u?!;v h!vdhS3nniN6lYZ3yfcuUk@3mogF%Ly-vtSA0sv{9I6?pb From ea0848f5a8e51d77b2ed5be6b2b734b12d1d7637 Mon Sep 17 00:00:00 2001 From: oc Date: Sun, 11 Mar 2018 23:23:45 +0800 Subject: [PATCH 5/6] Enable HP Max --- editor.html | 4 + index.html | 4 + libs/control.js | 15 ++- main.js | 3 + project/data.comment.js | 5 +- project/data.js | 250 ++++++++++++++++----------------------- project/images/hpmax.png | Bin 0 -> 481 bytes 7 files changed, 127 insertions(+), 154 deletions(-) create mode 100644 project/images/hpmax.png diff --git a/editor.html b/editor.html index b2d4dd54..25da0428 100644 --- a/editor.html +++ b/editor.html @@ -246,6 +246,10 @@

+
+ +

+

diff --git a/index.html b/index.html index 3d8ecc60..20a62a7d 100644 --- a/index.html +++ b/index.html @@ -50,6 +50,10 @@

+
+ +

+

diff --git a/libs/control.js b/libs/control.js index ba257bbe..5df50f52 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2067,8 +2067,8 @@ control.prototype.updateStatusBar = function () { core.events.checkLvUp(); // 检查HP上限 - if (core.values.HPMAX>0) { - core.setStatus('hp', Math.min(core.values.HPMAX, core.getStatus('hp'))); + if (core.flags.enableHPMax) { + core.setStatus('hp', Math.min(core.getStatus('hpmax'), core.getStatus('hp'))); } // 更新领域、阻击、显伤 @@ -2080,7 +2080,7 @@ control.prototype.updateStatusBar = function () { core.statusBar.lv.style.fontStyle = 'italic'; else core.statusBar.lv.style.fontStyle = 'normal'; - var statusList = ['hp', 'atk', 'def', 'mdef', 'money', 'experience']; + var statusList = ['hpmax', 'hp', 'atk', 'def', 'mdef', 'money', 'experience']; statusList.forEach(function (item) { core.statusBar[item].innerHTML = core.getStatus(item); }); @@ -2181,9 +2181,10 @@ control.prototype.resize = function(clientWidth, clientHeight) { toolsWidth, toolsHeight,toolsMargin,toolsPMaxwidth, fontSize, toolbarFontSize, margin; - var count = 11; + var count = 12; if (!core.flags.enableFloor) count--; if (!core.flags.enableLv) count--; + if (!core.flags.enableHPMax) count--; if (!core.flags.enableMDef) count--; if (!core.flags.enableMoney) count--; if (!core.flags.enableExperience) count--; @@ -2416,6 +2417,12 @@ control.prototype.resize = function(clientWidth, clientHeight) { display: core.flags.enableLv ? 'block': 'none' } }, + { + id: 'hpmaxCol', + rules: { + display: core.flags.enableHPMax ? 'block': 'none' + } + }, { id: 'mdefCol', rules: { diff --git a/main.js b/main.js index 95c25034..292a2e74 100644 --- a/main.js +++ b/main.js @@ -43,6 +43,7 @@ function main() { 'statusLabels': document.getElementsByClassName('statusLabel'), 'floorCol': document.getElementById('floorCol'), 'lvCol': document.getElementById('lvCol'), + 'hpmaxCol': document.getElementById('hpmaxCol'), 'mdefCol': document.getElementById('mdefCol'), 'moneyCol': document.getElementById('moneyCol'), 'expCol': document.getElementById('expCol'), @@ -65,6 +66,7 @@ function main() { 'image': { 'floor': document.getElementById('img-floor'), 'lv': document.getElementById('img-lv'), + 'hpmax': document.getElementById('img-hpmax'), 'hp': document.getElementById("img-hp"), 'atk': document.getElementById("img-atk"), 'def': document.getElementById("img-def"), @@ -95,6 +97,7 @@ function main() { }, 'floor': document.getElementById('floor'), 'lv': document.getElementById('lv'), + 'hpmax': document.getElementById('hpmax'), 'hp': document.getElementById('hp'), 'atk': document.getElementById('atk'), 'def': document.getElementById("def"), diff --git a/project/data.comment.js b/project/data.comment.js index dedc872c..fee8d03b 100644 --- a/project/data.comment.js +++ b/project/data.comment.js @@ -19,6 +19,7 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "hero": { "name": " 勇士初始数据 \n 勇士名;可以改成喜欢的 ", "lv": " 初始等级,该项必须为正整数 \n$range(thiseval==~~thiseval &&thiseval>0)$end", + "hpmax": " 初始生命上限,只有在enableHPMax开启时才有效", "hp": " 初始生命值 ", "atk": " 初始攻击 ", "def": " 初始防御 ", @@ -115,8 +116,7 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = ] */ }, "values": { - "HPMAX": " 各种数值;一些数值可以在这里设置\n /****** 角色相关 ******/ \n HP上限;-1则无上限 ", - "lavaDamage": " 经过血网受到的伤害 ", + "lavaDamage": " 各种数值;一些数值可以在这里设置\n /****** 角色相关 ******/ \n 经过血网受到的伤害 ", "poisonDamage": " 中毒后每步受到的伤害 ", "weakValue": " 衰弱状态下攻防减少的数值 ", "redJewel": " /****** 道具相关 ******/ \n 红宝石加攻击的数值 ", @@ -148,6 +148,7 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "flags": { "enableFloor": " 系统FLAG,在游戏运行中中请不要修改它。 /****** 状态栏相关 ******/ \n 是否在状态栏显示当前楼层 \n$select({\"values\":[true,false]})$end", "enableLv": " 是否在状态栏显示当前等级 \n$select({\"values\":[true,false]})$end", + "enableHPMax": " 是否是否启用生命上限 \n$select({\"values\":[true,false]})$end", "enableMDef": " 是否在状态栏及战斗界面显示魔防(护盾) \n$select({\"values\":[true,false]})$end", "enableMoney": " 是否在状态栏、怪物手册及战斗界面显示金币 \n$select({\"values\":[true,false]})$end", "enableExperience": " 是否在状态栏、怪物手册及战斗界面显示经验 \n$select({\"values\":[true,false]})$end", diff --git a/project/data.js b/project/data.js index 4b3d99a5..bcfd57e2 100644 --- a/project/data.js +++ b/project/data.js @@ -3,51 +3,39 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "main" : { "floorIds" : [ "sample0", "sample1", "sample2" - ],// 在这里按顺序放所有的楼层;其顺序直接影响到楼层传送器的顺序和上楼器/下楼器的顺序 + ], "pngs" : [ - "bg", // 在此存放所有可能使用的图片,只能是png格式,可以不写后缀名 - // 图片可以被作为背景图(的一部分),也可以直接用自定义事件进行显示。 - // 图片名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 - // 建议对于较大的图片,在网上使用在线的“图片压缩工具(http://compresspng.com/zh/)”来进行压缩,以节省流量 - // 依次向后添加 + "bg", ], "animates" : [ - "hand", "sword", "zone", "yongchang", // "jianji", "thunder" - // 在此存放所有可能使用的动画,必须是animate格式,在这里不写后缀名 - // 动画必须放在animates目录下;文件名不能使用中文,不能带空格或特殊字符 - // 根据需求自行添加 + "hand", "sword", "zone", "yongchang", ], "bgms" : [ 'bgm.mp3', 'qianjin.mid', 'star.mid', - // 在此存放所有的bgm,和文件名一致。第一项为默认播放项 - // 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 ], "sounds" : [ 'floor.mp3', 'attack.ogg', 'door.ogg', 'item.ogg', 'zone.ogg' - // 在此存放所有的SE,和文件名一致 - // 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 ], - "bgmRemote" : false, // 是否使用远程的背景音乐;此项一般不要开启 - "startBackground" : "bg.png",// 标题界面的背景,建议使用jpg格式以压缩背景图空间 - "startLogoStyle" : "color: black",// 标题样式:可以改变颜色,也可以隐藏标题(如果背景图自带) + "bgmRemote" : false, + "startBackground" : "bg.png", + "startLogoStyle" : "color: black", "levelChoose" : [["简单","Easy"],["普通","Normal"],["困难","Hard"],["噩梦","Hell"]], - //难度选择:每个数组的第一个是其在标题界面显示的难度,第二个是在游戏内部传输的字符串,会显示在状态栏,修改此处后需要在project/functions中作相应更改 }, "firstData" : { - "title": "魔塔样板", // 游戏名,将显示在标题页面以及切换楼层的界面中 - "name": "template", // 游戏的唯一英文标识符。由英文、数字、下划线组成,不能超过20个字符。 - "version": "Ver 1.4.1", // 当前游戏版本;版本不一致的存档不能通用。 - "floorId": "sample0", // 初始楼层ID + "title": "魔塔样板", + "name": "template", + "version": "Ver 1.4.1", + "floorId": "sample0", "hero": { - "name": "阳光", // 勇士初始数据 - // 勇士名;可以改成喜欢的 - 'lv': 1, // 初始等级,该项必须为正整数 - "hp": 1000, // 初始生命值 - "atk": 100, // 初始攻击 - "def": 100, // 初始防御 - "mdef": 100, // 初始魔防 - "money": 100, // 初始金币 - "experience": 0, // 初始经验 + "name": "阳光", + 'lv': 1, + "hpmax": 9999, + "hp": 1000, + "atk": 100, + "def": 100, + "mdef": 100, + "money": 100, + "experience": 0, "items": { "keys": { "yellowKey": 0, @@ -56,159 +44,125 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = }, "constants": {}, "tools": {} - },// 初始道具个数 - "flyRange": [], // 初始可飞的楼层;一般留空数组即可 - "loc": {"direction": "up", "x": 6, "y": 10}, // 勇士初始位置 - "flags": { - "poison": false, // 游戏过程中的变量或flags - // 毒 - "weak": false, // 衰 - "curse": false, // 咒 }, - "steps": 0, // 行走步数统计 + "flyRange": [], + "loc": {"direction": "up", "x": 6, "y": 10}, + "flags": { + "poison": false, + "weak": false, + "curse": false, + }, + "steps": 0, }, "startText": [ "Hi,欢迎来到 HTML5 魔塔样板!\n\n本样板由艾之葵制作,可以让你在不会写任何代码\n的情况下也能做出属于自己的H5魔塔!", "这里游戏开始时的剧情。\n定义在data.js的startText处。\n\n你可以在这里写上自己的内容。", "赶快来试一试吧!" - ], // 游戏开始前剧情。如果无剧情直接留一个空数组即可。 - "shops": [ // 定义全局商店(即快捷商店) + ], + "shops": [ { - "id": "moneyShop1", // 商店唯一ID - "name": "贪婪之神", // 商店名称(标题) - "icon": "blueShop", // 商店图标,在icons.js中的npc一项定义 - "textInList": "1F金币商店", // 在快捷商店栏中显示的名称 - "use": "money", // 商店所要使用的。只能是"money"或"experience"。 - "need": "20+10*times*(times+1)", // 商店需要的金币/经验数值;可以是一个表达式,以times作为参数计算。 - // 这里用到的times为该商店的已经的访问次数。首次访问该商店时times的值为0。 - // 上面的例子是50层商店的计算公式。你也可以写任意其他的计算公式,只要以times作为参数即可。 - // 例如: "need": "25" 就是恒定需要25金币的商店; "need": "20+2*times" 就是第一次访问要20金币,以后每次递增2金币的商店。 - // 如果是对于每个选项有不同的计算公式,写 "need": "-1" 即可。可参见下面的经验商店。 - "text": "勇敢的武士啊,给我${need}金币就可以:", // 显示的文字,需手动加换行符。可以使用${need}表示上面的need值。 - "choices": [ // 商店的选项 + "id": "moneyShop1", + "name": "贪婪之神", + "icon": "blueShop", + "textInList": "1F金币商店", + "use": "money", + "need": "20+10*times*(times+1)", + "text": "勇敢的武士啊,给我${need}金币就可以:", + "choices": [ {"text": "生命+800", "effect": "status:hp+=800"}, - // 如果有多个effect以分号分开,参见下面的经验商店 {"text": "攻击+4", "effect": "status:atk+=4"}, {"text": "防御+4", "effect": "status:def+=4"}, {"text": "魔防+10", "effect": "status:mdef+=10"} - // effect只能对status和item进行操作,不能修改flag值。 - // 必须是X+=Y的形式,其中Y可以是一个表达式,以status:xxx或item:xxx为参数 - // 其他effect样例: - // "item:yellowKey+=1" 黄钥匙+1 - // "item:pickaxe+=3" 破墙镐+3 - // "status:hp+=2*(status:atk+status:def)" 将生命提升攻防和的数值的两倍 ] }, { - "id": "expShop1", // 商店唯一ID + "id": "expShop1", "name": "经验之神", "icon": "pinkShop", "textInList": "1F经验商店", - "use": "experience", // 该商店使用的是经验进行计算 - "need": "-1", // 如果是对于每个选项所需要的数值不同,这里直接写-1,然后下面选项里给定具体数值 + "use": "experience", + "need": "-1", "text": "勇敢的武士啊,给我若干经验就可以:", "choices": [ - // 在choices中写need,可以针对每个选项都有不同的需求。 - // 这里的need同样可以以times作为参数,比如 "need": "100+20*times" {"text": "等级+1", "need": "100", "effect": "status:lv+=1;status:hp+=1000;status:atk+=7;status:def+=7"}, - // 多个effect直接以分号分开即可。如上面的意思是生命+1000,攻击+7,防御+7。 {"text": "攻击+5", "need": "30", "effect": "status:atk+=5"}, {"text": "防御+5", "need": "30", "effect": "status:def+=5"}, ] } ], "levelUp": [ - {}, // 经验升级所需要的数值,是一个数组 - // 第一项为初始等级,可以简单留空,也可以写name - - // 每一个里面可以含有三个参数 need, name, effect - // need为所需要的经验数值,是一个正整数。请确保need所需的依次递增 - // name为该等级的名称,也可以省略代表使用系统默认值;本项将显示在状态栏中 - // effect为本次升级所执行的操作,可由若干项组成,由分号分开 - // 其中每一项写法和上面的商店完全相同,同样必须是X+=Y的形式,Y是一个表达式,同样可以使用status:xxx或item:xxx代表勇士的某项数值/道具个数 - {"need": 20, "name": "第二级", "effect": "status:hp+=2*(status:atk+status:def);status:atk+=10;status:def+=10"}, // 先将生命提升攻防和的2倍;再将攻击+10,防御+10 - - + {}, + {"need": 20, "name": "第二级", "effect": "status:hp+=2*(status:atk+status:def);status:atk+=10;status:def+=10"}, {"need": 40, "effect": function () { core.insertAction("恭喜升级!"); core.status.hero.hp *= 2; core.status.hero.atk += 100; core.status.hero.def += 100; - }}, // effect也允许写一个function,代表本次升级将会执行的操作 - - // 依次往下写需要的数值即可 + }}, ] }, - "values" : { // 各种数值;一些数值可以在这里设置 - /****** 角色相关 ******/ - "HPMAX": 999999, // HP上限;-1则无上限 - "lavaDamage": 100, // 经过血网受到的伤害 - "poisonDamage": 10, // 中毒后每步受到的伤害 - "weakValue": 20, // 衰弱状态下攻防减少的数值 - /****** 道具相关 ******/ - "redJewel": 3, // 红宝石加攻击的数值 - "blueJewel": 3, // 蓝宝石加防御的数值 - "greenJewel": 5, // 绿宝石加魔防的数值 - "redPotion": 100, // 红血瓶加血数值 - "bluePotion": 250, // 蓝血瓶加血数值 - "yellowPotion": 500, // 黄血瓶加血数值 - "greenPotion": 800, // 绿血瓶加血数值 - "sword0": 0, // 默认装备折断的剑的攻击力 - "shield0": 0, // 默认装备残破的盾的防御力 - "sword1": 10, // 铁剑加攻数值 - "shield1": 10, // 铁盾加防数值 - "sword2": 20, // 银剑加攻数值 - "shield2": 20, // 银盾加防数值 - "sword3": 40, // 骑士剑加攻数值 - "shield3": 40, // 骑士盾加防数值 - "sword4": 80, // 圣剑加攻数值 - "shield4": 80, // 圣盾加防数值 - "sword5": 160, // 神圣剑加攻数值 - "shield5": 160, // 神圣盾加防数值 - "moneyPocket": 500, // 金钱袋加金币的数值 + "values" : { + "lavaDamage": 100, + "poisonDamage": 10, + "weakValue": 20, + "redJewel": 3, + "blueJewel": 3, + "greenJewel": 5, + "redPotion": 100, + "bluePotion": 250, + "yellowPotion": 500, + "greenPotion": 800, + "sword0": 0, + "shield0": 0, + "sword1": 10, + "shield1": 10, + "sword2": 20, + "shield2": 20, + "sword3": 40, + "shield3": 40, + "sword4": 80, + "shield4": 80, + "sword5": 160, + "shield5": 160, + "moneyPocket": 500, /****** 怪物相关 ******/ - 'breakArmor': 0.9, // 破甲的比例(战斗前,怪物附加角色防御的x%作为伤害) - 'counterAttack': 0.1, // 反击的比例(战斗时,怪物每回合附加角色攻击的x%作为伤害,无视角色防御) - 'purify': 3, // 净化的比例(战斗前,怪物附加勇士魔防的x倍作为伤害) - 'hatred': 2, // 仇恨属性中,每杀死一个怪物获得的仇恨值 - /****** 系统相关 ******/ - 'animateSpeed': 500, // 动画时间 + 'breakArmor': 0.9, + 'counterAttack': 0.1, + 'purify': 3, + 'hatred': 2, + 'animateSpeed': 500, }, - "flags" : { // 系统FLAG,在游戏运行中中请不要修改它。 - /****** 状态栏相关 ******/ - "enableFloor": true, // 是否在状态栏显示当前楼层 - "enableLv": true, // 是否在状态栏显示当前等级 - "enableMDef": true, // 是否在状态栏及战斗界面显示魔防(护盾) - "enableMoney": true, // 是否在状态栏、怪物手册及战斗界面显示金币 - "enableExperience": true, // 是否在状态栏、怪物手册及战斗界面显示经验 - "enableLevelUp": true, // 是否允许等级提升(进阶);如果上面enableExperience为false,则此项恒视为false - "enableDebuff": true, // 是否涉及毒衰咒;如果此项为false则不会在状态栏中显示毒衰咒的debuff - ////// 上述的几个开关将直接影响状态栏的显示效果 ////// - /****** 道具相关 ******/ - "flyNearStair": true, // 是否需要在楼梯边使用传送器 - "pickaxeFourDirections": true, // 使用破墙镐是否四个方向都破坏;如果false则只破坏面前的墙壁 - "bombFourDirections": true, // 使用炸弹是否四个方向都会炸;如果false则只炸面前的怪物(即和圣锤等价) - "bigKeyIsBox": false, // 如果此项为true,则视为钥匙盒,红黄蓝钥匙+1;若为false,则视为大黄门钥匙 - "equipment": false, // 剑和盾是否直接作为装备。如果此项为true,则作为装备,需要在道具栏使用,否则将直接加属性。 - "enableDeleteItem": true, // 是否允许删除(丢弃)道具 - /****** 怪物相关 ******/ - "enableAddPoint": false, // 是否支持加点 - "enableNegativeDamage": true, // 是否支持负伤害(回血) - "hatredDecrease": true, // 是否在和仇恨怪战斗后减一半的仇恨值,此项为false则和仇恨怪不会扣减仇恨值。 - "betweenAttackCeil": false, // 夹击方式是向上取整还是向下取整。如果此项为true则为向上取整,为false则为向下取整 - /****** 系统相关 ******/ - "startDirectly": false, // 点击“开始游戏”后是否立刻开始游戏而不显示难度选择界面 - "canOpenBattleAnimate": true, // 是否允许用户开启战斗过程;如果此项为false,则下面两项均强制视为false - "showBattleAnimateConfirm": true, // 是否在游戏开始时提供“是否开启战斗动画”的选项 - "battleAnimate": true, // 是否默认显示战斗动画;用户可以手动在菜单栏中开关 - "displayEnemyDamage": true, // 是否地图怪物显伤;用户可以手动在菜单栏中开关 - "displayExtraDamage": true, // 是否地图高级显伤(领域、夹击等);用户可以手动在菜单栏中开关 - "enableGentleClick": true, // 是否允许轻触(获得面前物品) - "potionWhileRouting": false, // 寻路算法是否经过血瓶;如果该项为false,则寻路算法会自动尽量绕过血瓶 - "enableViewMaps": true, // 是否支持在菜单栏中查看所有楼层的地图 - "portalWithoutTrigger": true, // 是否支持穿透。所谓穿透,即当自动寻路经过楼梯时,不触发楼层转换事件而是穿过它。 - "enableMoveDirectly": true, // 是否允许瞬间移动 + "flags" : { + "enableFloor": true, + "enableLv": false, + "enableHPMax": false, + "enableMDef": true, + "enableMoney": true, + "enableExperience": false, + "enableLevelUp": false, + "enableDebuff": false, + "flyNearStair": true, + "pickaxeFourDirections": true, + "bombFourDirections": true, + "bigKeyIsBox": false, + "equipment": false, + "enableDeleteItem": true, + "enableAddPoint": false, + "enableNegativeDamage": true, + "hatredDecrease": true, + "betweenAttackCeil": false, + "startDirectly": false, + "canOpenBattleAnimate": true, + "showBattleAnimateConfirm": true, + "battleAnimate": true, + "displayEnemyDamage": true, + "displayExtraDamage": true, + "enableGentleClick": true, + "potionWhileRouting": false, + "enableViewMaps": true, + "portalWithoutTrigger": true, + "enableMoveDirectly": true, } } \ No newline at end of file diff --git a/project/images/hpmax.png b/project/images/hpmax.png new file mode 100644 index 0000000000000000000000000000000000000000..78497f617465ea91ec78d6c0918c47da74acb7ef GIT binary patch literal 481 zcmV<70UrK|P)NCl@CdKfuAs$;rvxNlJx6g@Q#Rt*tdkOleA*MDdmr zxRQj_=Ec|IkOL1yZr(ZX-uupdsZ@dhriB9i9OTvB~$kPFlB1YOCe0ZLdd;s?x!6js*B^PA0VJbm*~#RWW-O40-%o5BLn&9Vf142R+Z(B-lO*vn;f0elPg zhCz#B@oe&Svw6G)kqwE}evZd9%VuMf;{fmpAs+~OJ4DQLIbrhWa@l7>aKdRieHF`& zEk$uR6iGWu$iRWl9!S^_9)F4$&I$YW%>dCsbgCRYbizEsJ+-Ia0LHnLcY(ED-+DJj zHb4ksG-+`1vFFb+nQJKmcq4B~KnRCJ%6+q6WbDRzC2887^w*Cl%+>0~n~i@ZPaqrL XC$uQy$ge$u00000NkvXXu0mjfa{bs= literal 0 HcmV?d00001 From 8592e4be31414e0cd893772361fb896fe6a009d1 Mon Sep 17 00:00:00 2001 From: oc Date: Sun, 11 Mar 2018 23:31:05 +0800 Subject: [PATCH 6/6] Enemy Special --- project/comment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/comment.js b/project/comment.js index 76385ca8..9c0a6b06 100644 --- a/project/comment.js +++ b/project/comment.js @@ -19,7 +19,7 @@ comment_c456ea59_6018_45ef_8bcc_211a24c627dc = 'money': '金币', 'experience': '经验', 'point': '加点', - 'special': '特殊属性\n\n0:无,1:先攻,2:魔攻,3:坚固,4:2连击,\n5:3连击,6:n连击,7:破甲,8:反击,9:净化,\n10:模仿,11:吸血,12:中毒,13:衰弱,14:诅咒,\n15:领域,16:夹击,17:仇恨,18:阻击,19:自爆,\n20:无敌,21:退化,22:固伤\n\n多个属性例如用[1,4,11]表示先攻2连击吸血\n模仿怪的攻防设为0就好\n$leaf(true)$end', + 'special': '特殊属性\n\n0:无,1:先攻,2:魔攻,3:坚固,4:2连击,\n5:3连击,6:n连击,7:破甲,8:反击,9:净化,\n10:模仿,11:吸血,12:中毒,13:衰弱,14:诅咒,\n15:领域,16:夹击,17:仇恨,18:阻击,19:自爆,\n20:无敌,21:退化,22:固伤,23:重生\n\n多个属性例如用[1,4,11]表示先攻2连击吸血\n模仿怪的攻防设为0就好\n$leaf(true)$end', 'value': '特殊属性的数值\n领域怪需要加value表示领域伤害的数值\n吸血怪需要在后面添加value代表吸血比例', 'zoneSquare': '领域怪zoneSquare代表是否九宫格伤害', 'range': 'range可选,代表领域伤害的范围;不加默认为1\n$range((thiseval==~~thiseval && thiseval>0)||thiseval==null)$end',