diff --git a/2.0diff.md b/2.0diff.md new file mode 100644 index 00000000..0f9ad4eb --- /dev/null +++ b/2.0diff.md @@ -0,0 +1,121 @@ +# v2.0目前的改动 + +## 总体上: + +部分重构了运行时 ++ 把`libs`中的数据分离出来保存为类似json的js文件,分离后的数据进一步分离为纯数据和注释两部分 ++ 更改目录结构,分离后的`libs`一般无需修改,把数据楼层文件声音图片放入`project`目录中 + * 需要相应的修改地图生成器和js压缩工具 ++ 设置了三个模式`play|editor|replay`在`editor`模式关闭了部分动画,并且角色无法行动 + +重构editor ++ 重命名为`editor.html` + * 需要相应的修改本地服务的按钮打开的网址,为了兼容,临时加了个内容为``的`drawMapGUI.html` ++ 不再独立的导入数据和画图,尽可能的通过`main.init('editor')`复用代码 ++ 能够在本地服务器环境中直接修改`project`中的数据,目前只完成了文件操作的代码`_server/editor_file.js`,前端尚未完成 ++ 把`editor`的代码拆到了`_server/editor.js`中 + +## 具体: + +### main.js +用户修改内容转移到了`project/data.js`中 + +把事件监听打包成了`main.prototype.listen` + +`main.listen`和`main.init`改为在`index.html`中执行 + +添加了`main.prototype.loadPureData`,在`main.init`中先加载存数据再加载`libs` + +### core.js +`core.drawMap`中`editor`模式下不再画图,而是生成画图的函数提供给`editor` + +`editor`模式下`GlobalAnimate`可以独立的选择是否播放 + +`core.playBgm`和`core.playSound`中非`play`模式不再播放声音 + +`core.show`和`core.hide`中非`play`模式不再进行动画而是立刻完成并执行回调 + +`editor`模式不执行`core.resize` + +### data.js +数据转移到了`project/data.js`中 + +注释转移到了`project/data.comment.js`中 + +### enemy.js,items.js,maps.js,icons.js +数据转移到了`project`下的同名文件中 + +注释转移到了`project/comment.js`中 + +### editor_file.js +提供了以下函数进行楼层`map`数组相关的操作 +```javascript +editor.file.getFloorFileList +editor.file.loadFloorFile +editor.file.saveFloorFile +editor.file.saveFloorFileAs +``` +5个编辑模式有关的查询 +```javascript +editor.file.editItem(editor,'redJewel',[],function(a){console.log(a)}); +editor.file.editEnemy(editor,'redBat',[],function(a){console.log(a)}); +editor.file.editLoc(editor,2,0,[],function(a){console.log(a)}); +editor.file.editFloor(editor,[],function(a){console.log(a)}); +editor.file.editTower(editor,[],function(a){console.log(a)}); +``` +5个编辑模式有关的编辑 +```javascript +editor.info={images: "terrains", y: 9}; +editor.file.changeIdAndIdnum(editor,'yellowWall2',16,editor.info,function(a){console.log(a)}); +editor.file.editItem(editor,'book',[["change","['items']['name']","怪物手册的新名字"]],function(a){console.log(a)}); +editor.file.editEnemy(editor,'redBat',[['change',"['atk']",20]],function(a){console.log(a)}); +editor.file.editLoc(editor,2,6,[["change","['afterBattle']",null]],function(a){console.log(a)}); +editor.file.editFloor(editor,[["change","['title']",'样板 33 层']],function(a){console.log(a)}); +editor.file.editTower(editor,[["change","['values']['lavaDamage']",200]],function(a){console.log(a)}); +``` + +### drawMapGUI.html +把`editor`的代码拆到了`_server/editor.js`中 + +以`display:none`的形式引入了`index.html`的`dom`,修改了原来的`.gameCanvas #ui #data`等的名字以避免冲突 + +通过`main.init('editor')`加载数据,移除了原有的`editor.loadjs`等 + +背景层如果未设置`editor.bgY`则通过运行时中的代码画背景 + +`editor.updateMap`中只画未定义快的报错,其他的由运行时中的代码完成 + +`editor.ids[0] = 0; editor.indexs[0]=[0];` + +添加了`editor.changeFloor`用于切换楼层 + +### 注释的特殊指令 +``` +$range(evalstr:thiseval)$end + 限制取值范围,要求修改后的eval(evalstr)为true +$leaf(evalstr:thiseval)$end + 强制指定为叶节点,如果eval(evalstr)为true + +todo: +//以下几个中选一个 [ +$select(evalstr)$end + 渲染成,此为默认选项 +$textarea(evalstr)$end + 渲染成 -

{{ errors[error-1] }}

- -
- -
- -
- -
-
- -
- - -
-
-
-
- - - -
-
-
-
-

当前选择为清除块,可擦除地图上块

-
-

图块编号:{{ infos['idnum'] }}

-

图块ID:{{ infos['id'] }}

-

该图块无对应的数字或ID存在,请先前往icons.js和maps.js中进行定义!

-

图块所在素材:{{ infos['images'] + (isAutotile ? '( '+infos['id']+' )' : '') }}

-

图块索引:{{ infos['y'] }}

-
-
-
-

{{ mapMsg }}

-
-
- - - -
- 当前地板: - -
- - -
-
-
-
- - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/editor.html b/editor.html new file mode 100644 index 00000000..3b0f15cf --- /dev/null +++ b/editor.html @@ -0,0 +1,227 @@ + + + + + + + +
+
+
+
+
+
+ +

{{ errors[error-1] }}

+
+
+ +
+
+
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+
+
+
+

当前选择为清除块,可擦除地图上块

+
+

图块编号:{{ infos['idnum'] }}

+

图块ID:{{ infos['id'] }}

+

该图块无对应的数字或ID存在,请先前往icons.js和maps.js中进行定义!

+

图块所在素材:{{ infos['images'] + (isAutotile ? '( '+infos['id']+' )' : '') }}

+

图块索引:{{ infos['y'] }}

+
+
+
+

{{ mapMsg }}

+
+
+ + + +
+ 当前地板: + +
+ + +
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + diff --git a/libs/core.js b/libs/core.js index 11a9bc9b..93926547 100644 --- a/libs/core.js +++ b/libs/core.js @@ -79,7 +79,6 @@ function core() { 'mouseOutCheck': 1, 'moveStepBeforeStop': [], - // 勇士状态;中心对称飞行器 // event事件 'saveIndex': null, @@ -264,24 +263,15 @@ core.prototype.loader = function (callback) { // 加载pngs core.material.images.pngs = {}; + if (core.pngs.length==0) { + core.loadAutotile(callback); + return; + } for (var x=0;x0)$end', + 'bomb':' 加入 "bomb": false 代表该怪物不可被炸弹或圣锤炸掉\n$range(thiseval in [true,false])$end', + 'point': 'point可以在打败怪物后进行加点,详见文档说明\n$range(thiseval==~~thiseval && thiseval>0)$end', + 'n': '多连击需要在后面指定n代表是几连击\n$range(thiseval==~~thiseval &&thiseval>0)$end', + }, + "floors" : { + 'floor' : { + "floorId": "文件名和floorId需要保持完全一致 \n楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 \n推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 \n楼层唯一标识符,需要和名字完全一致 \n这里不能更改floorId,请通过另存为来实现\n$range(false)$end", + "title": "楼层中文名 ", + "name": "显示在状态栏中的层数 ", + "canFlyTo": "该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) \n$range(thiseval in [true,false])$end", + "canUseQuickShop": "该层是否允许使用快捷商店 \n$range(thiseval in [true,false])$end", + "defaultGround": "默认地面的图块ID(terrains中) ", + "png": "背景图;你可以选择一张png图片来作为背景素材。详细用法请参见文档“自定义素材”中的说明。 ", + "color": "该层的默认画面色调。本项可不写(代表无色调),如果写需要是一个RGBA数组。 \n$leaf(true)$end", + "bgm": "到达该层后默认播放的BGM。本项可忽略。 ", + //"map": "地图数据,需要是13x13,建议使用地图生成器来生成 ", + "firstArrive": "第一次到该楼层触发的事件 \n$leaf(true)$end", + }, + 'loc' : { + "events": "该楼的所有可能事件列表 \n$leaf(true)$end", + "changeFloor": "楼层转换事件;该事件不能和上面的events有冲突(同位置点),否则会被覆盖 \n$leaf(true)$end", + "afterBattle": "战斗后可能触发的事件列表 \n$leaf(true)$end", + "afterGetItem": "获得道具后可能触发的事件列表 \n$leaf(true)$end", + "afterOpenDoor": "开完门后可能触发的事件列表 \n$leaf(true)$end" + } + }, + /* + 'template' : { + "floorId": "tempfloor", + "title": "主塔 0 层", + "name": "0", + "canFlyTo": true, + "canUseQuickShop": true, + "defaultGround": "ground", + "map": [ + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + ], + "firstArrive": [], + "events": {}, + "changeFloor": {}, + "afterBattle": {}, + "afterGetItem": {}, + "afterOpenDoor": {} + }, */ +} \ No newline at end of file diff --git a/project/data.comment.js b/project/data.comment.js new file mode 100644 index 00000000..aff279fe --- /dev/null +++ b/project/data.comment.js @@ -0,0 +1,165 @@ +data_comment_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = +{ + "main": { + "useCompress": " 是否使用压缩文件 \n 当你即将发布你的塔时,请使用“JS代码压缩工具”将所有js代码进行压缩,然后将这里的useCompress改为true。 \n 请注意,只有useCompress是false时才会读取floors目录下的文件,为true时会直接读取libs目录下的floors.min.js文件。 \n 如果要进行剧本的修改请务必将其改成false。 ", + "floorIds": " 在这里按顺序放所有的楼层;其顺序直接影响到楼层传送器的顺序和上楼器/下楼器的顺序 \n$leaf(true)$end", + "pngs": " 在此存放所有可能的背景图片;背景图片最好是416*416像素,其他分辨率会被强制缩放成416*416 \n 建议对于较大的图片,在网上使用在线的“图片压缩工具”来进行压缩,以节省流量 \n 有关使用自定义背景图,请参见文档的“自定义素材”说明 \n\n 依次向后添加 \n$leaf(true)$end", + "bgms": " 在此存放所有的bgm,和文件名一致。第一项为默认播放项 \n 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 \n$leaf(true)$end", + "sounds": " 在此存放所有的SE,和文件名一致 \n 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 \n$leaf(true)$end" + }, + "firstData": { + "title": " 游戏名,将显示在标题页面以及切换楼层的界面中 ", + "name": " 游戏的唯一英文标识符。由英文、数字、下划线组成,不能超过20个字符。 ", + "version": " 当前游戏版本;版本不一致的存档不能通用。 ", + "floorId": " 初始楼层ID ", + "hero": { + "name": " 勇士初始数据 \n 勇士名;可以改成喜欢的 ", + "lv": " 初始等级,该项必须为正整数 ", + "hp": " 初始生命值 ", + "atk": " 初始攻击 ", + "def": " 初始防御 ", + "mdef": " 初始魔防 ", + "money": " 初始金币 ", + "experience": " 初始经验 ", + "items": { + "keys": { + "yellowKey": " 初始道具个数 ", + "blueKey": "", + "redKey": "" + }, + "constants": "\n$leaf(true)$end", + "tools": "\n$leaf(true)$end" + }, + "flyRange": " 初始可飞的楼层;一般留空数组即可 \n$leaf(true)$end", + "loc": { + "direction": " 勇士初始位置 ", + "x": "", + "y": "" + }, + "flags": { + "poison": " 游戏过程中的变量或flags \n 毒 ", + "weak": " 衰 ", + "curse": " 咒 " + } + }, + "startText": " 游戏开始前剧情。如果无剧情直接留一个空数组即可。 \n$leaf(true)$end", + "shops": { + "moneyShop1": { + "name": " 定义全局商店(即快捷商店) \n 商店唯一ID \n 商店名称(标题) ", + "icon": " 商店图标,blueShop为蓝色商店,pinkShop为粉色商店 ", + "textInList": " 在快捷商店栏中显示的名称 ", + "use": " 商店所要使用的。只能是\"money\"或\"experience\"。 ", + "need": " 商店需要的金币/经验数值;可以是一个表达式,以times作为参数计算。 \n 这里用到的times为该商店的已经的访问次数。首次访问该商店时times的值为0。 \n 上面的例子是50层商店的计算公式。你也可以写任意其他的计算公式,只要以times作为参数即可。 \n 例如: \"need\": \"25\" 就是恒定需要25金币的商店; \"need\": \"20+2*times\" 就是第一次访问要20金币,以后每次递增2金币的商店。 \n 如果是对于每个选项有不同的计算公式,写 \"need\": \"-1\" 即可。可参见下面的经验商店。 ", + "text": " 显示的文字,需手动加换行符。可以使用${need}表示上面的need值。 ", + "choices": [ + { + "text": "", + "effect": " 商店的选项 \n 如果有多个effect以分号分开,参见下面的经验商店 " + }, + { + "text": "", + "effect": "" + }, + { + "text": "", + "effect": "" + }, + { + "text": "", + "effect": " effect只能对status和item进行操作,不能修改flag值。 \n 必须是X+=Y的形式,其中Y可以是一个表达式,以status:xxx或item:xxx为参数 \n 其他effect样例: \n \"item:yellowKey+=1\" 黄钥匙+1 \n \"item:pickaxe+=3\" 破墙镐+3 \n \"status:hp+=2*(status:atk+status:def)\" 将生命提升攻防和的数值的两倍 " + } + ] + }, + "expShop1": { + "name": " 商店唯一ID ", + "icon": "", + "textInList": "", + "use": " 该商店使用的是经验进行计算 ", + "need": " 如果是对于每个选项所需要的数值不同,这里直接写-1,然后下面选项里给定具体数值 ", + "text": "", + "choices": [ + { + "text": "", + "need": "", + "effect": " 在choices中写need,可以针对每个选项都有不同的需求。 \n 这里的need同样可以以times作为参数,比如 \"need\": \"100+20*times\" 多个effect直接以分号分开即可。如上面的意思是生命+1000,攻击+7,防御+7。 " + }, + { + "text": "", + "need": "", + "effect": "" + }, + { + "text": "", + "need": "", + "effect": "" + } + ] + } + }, + "levelUp": [ + " 经验升级所需要的数值,是一个数组 \n 第一项为初始等级,可以简单留空,也可以写name \n 每一个里面可以含有三个参数 need, name, effect \n need为所需要的经验数值,是一个正整数。请确保need所需的依次递增 \n name为该等级的名称,也可以省略代表使用系统默认值;本项将显示在状态栏中 \n effect为本次升级所执行的操作,可由若干项组成,由分号分开 \n 其中每一项写法和上面的商店完全相同,同样必须是X+=Y的形式,Y是一个表达式,同样可以使用status:xxx或item:xxx代表勇士的某项数值/道具个数 \n$leaf(true)$end", + { + "need": "", + "name": "", + "effect": " 先将生命提升攻防和的2倍;再将攻击+10,防御+10 " + }, + { + "need": "", + "effect": " effect也允许写一个function,代表本次升级将会执行的操作 \n 依次往下写需要的数值即可 " + } + ] + }, + "values": { + "HPMAX": " 各种数值;一些数值可以在这里设置\n /****** 角色相关 ******/ \n HP上限;-1则无上限 ", + "lavaDamage": " 经过血网受到的伤害 ", + "poisonDamage": " 中毒后每步受到的伤害 ", + "weakValue": " 衰弱状态下攻防减少的数值 ", + "redJewel": " /****** 道具相关 ******/ \n 红宝石加攻击的数值 ", + "blueJewel": " 蓝宝石加防御的数值 ", + "greenJewel": " 绿宝石加魔防的数值 ", + "redPotion": " 红血瓶加血数值 ", + "bluePotion": " 蓝血瓶加血数值 ", + "yellowPotion": " 黄血瓶加血数值 ", + "greenPotion": " 绿血瓶加血数值 ", + "sword1": " 铁剑加攻数值 ", + "shield1": " 铁盾加防数值 ", + "sword2": " 银剑加攻数值 ", + "shield2": " 银盾加防数值 ", + "sword3": " 骑士剑加攻数值 ", + "shield3": " 骑士盾加防数值 ", + "sword4": " 圣剑加攻数值 ", + "shield4": " 圣盾加防数值 ", + "sword5": " 神圣剑加攻数值 ", + "shield5": " 神圣盾加防数值 ", + "moneyPocket": " 金钱袋加金币的数值 ", + "breakArmor": " /****** 怪物相关 ******/ \n 破甲的比例(战斗前,怪物附加角色防御的x%作为伤害) ", + "counterAttack": " 反击的比例(战斗时,怪物每回合附加角色攻击的x%作为伤害,无视角色防御) ", + "purify": " 净化的比例(战斗前,怪物附加勇士魔防的x倍作为伤害) ", + "hatred": " 仇恨属性中,每杀死一个怪物获得的仇恨值 ", + "animateSpeed": " /****** 系统相关 ******/ \n 动画时间 " + }, + "flags": { + "enableFloor": " 系统FLAG,在游戏运行中中请不要修改它。 /****** 状态栏相关 ******/ \n 是否在状态栏显示当前楼层 ", + "enableLv": " 是否在状态栏显示当前等级 ", + "enableMDef": " 是否在状态栏及战斗界面显示魔防(护盾) ", + "enableMoney": " 是否在状态栏、怪物手册及战斗界面显示金币 ", + "enableExperience": " 是否在状态栏、怪物手册及战斗界面显示经验 ", + "enableLevelUp": " 是否允许等级提升(进阶);如果上面enableExperience为false,则此项恒视为false ", + "enableDebuff": " 是否涉及毒衰咒;如果此项为false则不会在状态栏中显示毒衰咒的debuff ////// 上述的几个开关将直接影响状态栏的显示效果 ////// ", + "flyNearStair": " /****** 道具相关 ******/ \n 是否需要在楼梯边使用传送器 ", + "pickaxeFourDirections": " 使用破墙镐是否四个方向都破坏;如果false则只破坏面前的墙壁 ", + "bombFourDirections": " 使用炸弹是否四个方向都会炸;如果false则只炸面前的怪物(即和圣锤等价) ", + "bigKeyIsBox": " 如果此项为true,则视为钥匙盒,红黄蓝钥匙+1;若为false,则视为大黄门钥匙 ", + "enableNegativeDamage": " /****** 怪物相关 ******/ \n 是否支持负伤害(回血) ", + "zoneSquare": " 领域类型。如果此项为true则为九宫格伤害,为false则为十字伤害 ", + "startDirectly": " /****** 系统相关 ******/ \n 点击“开始游戏”后是否立刻开始游戏而不显示难度选择界面 ", + "canOpenBattleAnimate": " 是否允许用户开启战斗过程;如果此项为false,则下面两项均强制视为false ", + "showBattleAnimateConfirm": " 是否在游戏开始时提供“是否开启战斗动画”的选项 ", + "battleAnimate": " 是否默认显示战斗动画;用户可以手动在菜单栏中开关 ", + "displayEnemyDamage": " 是否地图怪物显伤;用户可以手动在菜单栏中开关 ", + "displayExtraDamage": " 是否地图高级显伤(领域、夹击等);用户可以手动在菜单栏中开关 ", + "enableGentleClick": " 是否允许轻触(获得面前物品) ", + "portalWithoutTrigger": " 经过楼梯、传送门时是否能“穿透”。穿透的意思是,自动寻路得到的的路径中间经过了楼梯,行走时是否触发楼层转换事件 ", + "potionWhileRouting": " 寻路算法是否经过血瓶;如果该项为false,则寻路算法会自动尽量绕过血瓶 " + } +} \ No newline at end of file diff --git a/project/data.js b/project/data.js index 978f5547..dc6c9b3b 100644 --- a/project/data.js +++ b/project/data.js @@ -6,21 +6,24 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = // 请注意,只有useCompress是false时才会读取floors目录下的文件,为true时会直接读取libs目录下的floors.min.js文件。 // 如果要进行剧本的修改请务必将其改成false。 - "floorIds" : [ // 在这里按顺序放所有的楼层;其顺序直接影响到楼层传送器的顺序和上楼器/下楼器的顺序 + "floorIds" : [ "sample0", "sample1", "sample2" - ], - "pngs" : [ // 在此存放所有可能的背景图片;背景图片最好是416*416像素,其他分辨率会被强制缩放成416*416 + ],// 在这里按顺序放所有的楼层;其顺序直接影响到楼层传送器的顺序和上楼器/下楼器的顺序 + "pngs" : [ + "bg.png", "yewai.png", // 在此存放所有可能的背景图片;背景图片最好是416*416像素,其他分辨率会被强制缩放成416*416 // 建议对于较大的图片,在网上使用在线的“图片压缩工具”来进行压缩,以节省流量 // 有关使用自定义背景图,请参见文档的“自定义素材”说明 - "bg.png", "yewai.png", // 依次向后添加 + // 依次向后添加 ], - "bgms" : [ // 在此存放所有的bgm,和文件名一致。第一项为默认播放项 - // 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 + "bgms" : [ '058-Slow01.mid', 'bgm.mp3', 'qianjin.mid', 'star.mid', - ], - "sounds" : [ // 在此存放所有的SE,和文件名一致 + // 在此存放所有的bgm,和文件名一致。第一项为默认播放项 // 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 + ], + "sounds" : [ 'floor.mp3', 'attack.ogg', 'door.ogg', 'item.ogg', + // 在此存放所有的SE,和文件名一致 + // 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 ], }, "firstData" : { @@ -28,8 +31,9 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "name": "template", // 游戏的唯一英文标识符。由英文、数字、下划线组成,不能超过20个字符。 "version": "Ver 1.0.0 (Beta)", // 当前游戏版本;版本不一致的存档不能通用。 "floorId": "sample0", // 初始楼层ID - "hero": { // 勇士初始数据 - "name": "阳光", // 勇士名;可以改成喜欢的 + "hero": { + "name": "阳光", // 勇士初始数据 + // 勇士名;可以改成喜欢的 'lv': 1, // 初始等级,该项必须为正整数 "hp": 1000, // 初始生命值 "atk": 100, // 初始攻击 @@ -37,7 +41,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "mdef": 100, // 初始魔防 "money": 100, // 初始金币 "experience": 0, // 初始经验 - "items": { // 初始道具个数 + "items": { "keys": { "yellowKey": 0, "blueKey": 0, @@ -45,23 +49,26 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = }, "constants": {}, "tools": {} - }, + },// 初始道具个数 "flyRange": [], // 初始可飞的楼层;一般留空数组即可 "loc": {"direction": "up", "x": 6, "y": 10}, // 勇士初始位置 - "flags": { // 游戏过程中的变量或flags - "poison": false, // 毒 + "flags": { + "poison": false, // 游戏过程中的变量或flags + // 毒 "weak": false, // 衰 "curse": false, // 咒 } }, - "startText": [ // 游戏开始前剧情。如果无剧情直接留一个空数组即可。 + "startText": [ "Hi,欢迎来到 HTML5 魔塔样板!\n\n本样板由艾之葵制作,可以让你在不会写任何代码\n的情况下也能做出属于自己的H5魔塔!", "这里游戏开始时的剧情。\n定义在data.js的startText处。\n\n你可以在这里写上自己的内容。", "赶快来试一试吧!" - ], - "shops": { // 定义全局商店(即快捷商店) - "moneyShop1": { // 商店唯一ID - "name": "贪婪之神", // 商店名称(标题) + ], // 游戏开始前剧情。如果无剧情直接留一个空数组即可。 + "shops": { + "moneyShop1": { + "name": "贪婪之神", // 定义全局商店(即快捷商店) + // 商店唯一ID + // 商店名称(标题) "icon": "blueShop", // 商店图标,blueShop为蓝色商店,pinkShop为粉色商店 "textInList": "1F金币商店", // 在快捷商店栏中显示的名称 "use": "money", // 商店所要使用的。只能是"money"或"experience"。 @@ -71,8 +78,8 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = // 例如: "need": "25" 就是恒定需要25金币的商店; "need": "20+2*times" 就是第一次访问要20金币,以后每次递增2金币的商店。 // 如果是对于每个选项有不同的计算公式,写 "need": "-1" 即可。可参见下面的经验商店。 "text": "勇敢的武士啊,给我${need}金币就可以:", // 显示的文字,需手动加换行符。可以使用${need}表示上面的need值。 - "choices": [ // 商店的选项 - {"text": "生命+800", "effect": "status:hp+=800"}, + "choices": [ + {"text": "生命+800", "effect": "status:hp+=800"}, // 商店的选项 // 如果有多个effect以分号分开,参见下面的经验商店 {"text": "攻击+4", "effect": "status:atk+=4"}, {"text": "防御+4", "effect": "status:def+=4"}, @@ -85,25 +92,27 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = // "status:hp+=2*(status:atk+status:def)" 将生命提升攻防和的数值的两倍 ] }, - "expShop1": { // 商店唯一ID - "name": "经验之神", + "expShop1": { + "name": "经验之神", // 商店唯一ID "icon": "pinkShop", "textInList": "1F经验商店", "use": "experience", // 该商店使用的是经验进行计算 "need": "-1", // 如果是对于每个选项所需要的数值不同,这里直接写-1,然后下面选项里给定具体数值 "text": "勇敢的武士啊,给我若干经验就可以:", "choices": [ + {"text": "等级+1", "need": "100", "effect": "status:lv+=1;status:hp+=1000;status:atk+=7;status:def+=7"}, // 在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 + "levelUp": [ + {}, // 经验升级所需要的数值,是一个数组 + // 第一项为初始等级,可以简单留空,也可以写name // 每一个里面可以含有三个参数 need, name, effect // need为所需要的经验数值,是一个正整数。请确保need所需的依次递增 @@ -112,26 +121,29 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = // 其中每一项写法和上面的商店完全相同,同样必须是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 - // effect也允许写一个function,代表本次升级将会执行的操作 - {"need": 40, "effect": function () { + + {"need": 40, "effect": `function () { core.drawText("恭喜升级!"); core.status.hero.hp *= 2; core.status.hero.atk += 100; core.status.hero.def += 100; - }}, + }`}, // effect也允许写一个function,代表本次升级将会执行的操作 // 依次往下写需要的数值即可 ] }, - // 各种数值;一些数值可以在这里设置 + "values" : { + + "HPMAX": 999999, // 各种数值;一些数值可以在这里设置 /****** 角色相关 ******/ - "HPMAX": 999999, // HP上限;-1则无上限 + // HP上限;-1则无上限 "lavaDamage": 100, // 经过血网受到的伤害 "poisonDamage": 10, // 中毒后每步受到的伤害 "weakValue": 20, // 衰弱状态下攻防减少的数值 - /****** 道具相关 ******/ - "redJewel": 3, // 红宝石加攻击的数值 + + "redJewel": 3, /****** 道具相关 ******/ + // 红宝石加攻击的数值 "blueJewel": 3, // 蓝宝石加防御的数值 "greenJewel": 5, // 绿宝石加魔防的数值 "redPotion": 100, // 红血瓶加血数值 @@ -149,18 +161,22 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "sword5": 160, // 神圣剑加攻数值 "shield5": 160, // 神圣盾加防数值 "moneyPocket": 500, // 金钱袋加金币的数值 - /****** 怪物相关 ******/ - 'breakArmor': 0.9, // 破甲的比例(战斗前,怪物附加角色防御的x%作为伤害) + + 'breakArmor': 0.9, /****** 怪物相关 ******/ + // 破甲的比例(战斗前,怪物附加角色防御的x%作为伤害) 'counterAttack': 0.1, // 反击的比例(战斗时,怪物每回合附加角色攻击的x%作为伤害,无视角色防御) 'purify': 3, // 净化的比例(战斗前,怪物附加勇士魔防的x倍作为伤害) 'hatred': 2, // 仇恨属性中,每杀死一个怪物获得的仇恨值 - /****** 系统相关 ******/ - 'animateSpeed': 500, // 动画时间 + + 'animateSpeed': 500, /****** 系统相关 ******/ + // 动画时间 }, - // 系统FLAG,在游戏运行中中请不要修改它。 + "flags" : { + + "enableFloor": true, // 系统FLAG,在游戏运行中中请不要修改它。 /****** 状态栏相关 ******/ - "enableFloor": true, // 是否在状态栏显示当前楼层 + // 是否在状态栏显示当前楼层 "enableLv": true, // 是否在状态栏显示当前等级 "enableMDef": true, // 是否在状态栏及战斗界面显示魔防(护盾) "enableMoney": true, // 是否在状态栏、怪物手册及战斗界面显示金币 @@ -168,16 +184,19 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "enableLevelUp": true, // 是否允许等级提升(进阶);如果上面enableExperience为false,则此项恒视为false "enableDebuff": true, // 是否涉及毒衰咒;如果此项为false则不会在状态栏中显示毒衰咒的debuff ////// 上述的几个开关将直接影响状态栏的显示效果 ////// - /****** 道具相关 ******/ - "flyNearStair": true, // 是否需要在楼梯边使用传送器 + + "flyNearStair": true, /****** 道具相关 ******/ + // 是否需要在楼梯边使用传送器 "pickaxeFourDirections": true, // 使用破墙镐是否四个方向都破坏;如果false则只破坏面前的墙壁 "bombFourDirections": true, // 使用炸弹是否四个方向都会炸;如果false则只炸面前的怪物(即和圣锤等价) "bigKeyIsBox": false, // 如果此项为true,则视为钥匙盒,红黄蓝钥匙+1;若为false,则视为大黄门钥匙 - /****** 怪物相关 ******/ - "enableNegativeDamage": true, // 是否支持负伤害(回血) + + "enableNegativeDamage": true, /****** 怪物相关 ******/ + // 是否支持负伤害(回血) "zoneSquare": false, // 领域类型。如果此项为true则为九宫格伤害,为false则为十字伤害 - /****** 系统相关 ******/ - "startDirectly": false, // 点击“开始游戏”后是否立刻开始游戏而不显示难度选择界面 + + "startDirectly": false, /****** 系统相关 ******/ + // 点击“开始游戏”后是否立刻开始游戏而不显示难度选择界面 "canOpenBattleAnimate": true, // 是否允许用户开启战斗过程;如果此项为false,则下面两项均强制视为false "showBattleAnimateConfirm": true, // 是否在游戏开始时提供“是否开启战斗动画”的选项 "battleAnimate": true, // 是否默认显示战斗动画;用户可以手动在菜单栏中开关 diff --git a/project/enemys.js b/project/enemys.js index b947b0e0..f0590884 100644 --- a/project/enemys.js +++ b/project/enemys.js @@ -1,4 +1,4 @@ -enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = //1:先攻,2:魔攻,3:坚固,4:2连击,5:3连击,6:4连击,7:破甲,8:反击,9:净化,10:模仿,11:吸血,12:中毒,13:衰弱,14:诅咒,15:领域,16:夹击,17:仇恨 +enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = { 'greenSlime': {'name': '绿头怪', 'hp': 100, 'atk': 120, 'def': 0, 'money': 1, 'experience': 1, 'special': [1,5,7,8]}, 'redSlime': {'name': '红头怪', 'hp': 0, 'atk': 0, 'def': 0, 'money': 0, 'experience': 0, 'special': 0}, diff --git a/project/floors/MT0.js b/project/floors/MT0.js index 624b8e91..7f141532 100644 --- a/project/floors/MT0.js +++ b/project/floors/MT0.js @@ -1,8 +1,9 @@ -// 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 -// 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 -// 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 -main.floors.MT0 = { - "floorId": "MT0", // 楼层唯一标识符,需要和名字完全一致 +main.floors.MT0 = +{ + "floorId": "MT0", // 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 + // 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 + // 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 + // 楼层唯一标识符,需要和名字完全一致 "title": "主塔 0 层", // 楼层中文名 "name": "0", // 显示在状态栏中的层数 "canFlyTo": true, // 该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) diff --git a/project/floors/sample0.js b/project/floors/sample0.js index 857473d0..57868613 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -1,8 +1,9 @@ -// 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 -// 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 -// 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 -main.floors.sample0 = { - "floorId": "sample0", // 楼层唯一标识符,需要和名字完全一致 +main.floors.sample0 = +{ + "floorId": "sample0", // 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 + // 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 + // 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 + // 楼层唯一标识符,需要和名字完全一致 "title": "样板 0 层", // 楼层中文名 "name": "0", // 显示在状态栏中的层数 "canFlyTo": true, // 该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) diff --git a/project/floors/sample1.js b/project/floors/sample1.js index 1be0fcf3..d42e4c00 100644 --- a/project/floors/sample1.js +++ b/project/floors/sample1.js @@ -1,8 +1,9 @@ -// 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 -// 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 -// 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 -main.floors.sample1 = { - "floorId": "sample1", // 楼层唯一标识符,需要和名字完全一致 +main.floors.sample1 = +{ + "floorId": "sample1", // 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 + // 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 + // 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 + // 楼层唯一标识符,需要和名字完全一致 "title": "样板 1 层", // 楼层中文名 "name": "1", // 显示在状态栏中的层数 "canFlyTo": true, // 该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) @@ -257,7 +258,7 @@ main.floors.sample1 = { "12,11": [ // 自定义事件的老人 "\t[老人,womanMagician]使用 {\"type\":\"function\"} 可以写自定义的JS脚本。\n本塔支持的所有主要API会在doc文档内给出。", "\t[老人,womanMagician]例如这个例子:即将弹出一个输入窗口,然后会将你的输入结果直接加到你的攻击力上。", - {"type": "function", "function": function() { // 自己写JS脚本并执行 + {"type": "function", "function": `function() { // 自己写JS脚本并执行 var value = prompt("请输入你要加攻击力的数值:"); // 弹出一个输入框让用户输入数据 if (value!=null) { value=parseInt(value); @@ -271,7 +272,7 @@ main.floors.sample1 = { ]); } } - }}, + }`}, "\t[老人,womanMagician]具体可参见样板中本事件的写法。" ] }, diff --git a/project/floors/sample2.js b/project/floors/sample2.js index 5e440aa4..bbdbe498 100644 --- a/project/floors/sample2.js +++ b/project/floors/sample2.js @@ -1,8 +1,9 @@ -// 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 -// 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 -// 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 -main.floors.sample2 = { - "floorId": "sample2", // 楼层唯一标识符,需要和名字完全一致 +main.floors.sample2 = +{ + "floorId": "sample2", // 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 + // 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 + // 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 + // 楼层唯一标识符,需要和名字完全一致 "title": "主塔 40 层", // 楼层中文名 "name": "40", // 显示在状态栏中的层数 "canFlyTo": false, // 该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) diff --git a/project/floors/test.js b/project/floors/test.js index c125ab71..e2452d33 100644 --- a/project/floors/test.js +++ b/project/floors/test.js @@ -1,8 +1,9 @@ -// 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 -// 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 -// 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 -main.floors.test = { - "floorId": "test", // 楼层唯一标识符,需要和名字完全一致 +main.floors.test = +{ + "floorId": "test", // 这里需要改楼层名,请和文件名及下面的floorId保持完全一致 + // 楼层唯一标识符仅能由字母、数字、下划线组成,且不能由数字开头 + // 推荐用法:第20层就用MT20,第38层就用MT38,地下6层就用MT_6(用下划线代替负号),隐藏3层用MT3h(h表示隐藏),等等 + // 楼层唯一标识符,需要和名字完全一致 "title": "test", // 楼层中文名 "name": "", // 显示在状态栏中的层数 "canFlyTo": true, // 该楼能否被楼传器飞到(不能的话在该楼也不允许使用楼传器) diff --git a/project/items.js b/project/items.js index c42662bd..b7ee75dc 100644 --- a/project/items.js +++ b/project/items.js @@ -2,12 +2,12 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = { "items" : { - // 钥匙 + 'yellowKey': {'cls': 'keys', 'name': '黄钥匙'}, 'blueKey': {'cls': 'keys', 'name': '蓝钥匙'}, 'redKey': {'cls': 'keys', 'name': '红钥匙'}, - // 宝石、血瓶 + 'redJewel': {'cls': 'items', 'name': '红宝石'}, 'blueJewel': {'cls': 'items', 'name': '蓝宝石'}, 'greenJewel': {'cls': 'items', 'name': '绿宝石'}, @@ -29,7 +29,7 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = 'superPotion': {'cls': 'items', 'name': '圣水'}, 'moneyPocket': {'cls': 'items', 'name': '金钱袋'}, - // 物品 + 'book': {'cls': 'constants', 'name': '怪物手册', 'text': '可以查看当前楼层各怪物属性'}, 'fly': {'cls': 'constants', 'name': '楼层传送器', 'text': '可以自由往来去过的楼层'}, 'coin': {'cls': 'constants', 'name': '幸运金币', 'text': '持有时打败怪物可得双倍金币'}, @@ -38,7 +38,7 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = 'knife': {'cls': 'constants', 'name': '屠龙匕首', 'text': '该道具尚未被定义'}, 'shoes': {'cls': 'constants', 'name': '绿鞋', 'text': '持有时无视负面地形'}, - // 道具 + 'bigKey': {'cls': 'tools', 'name': '大黄门钥匙', 'text': '可以开启当前层所有黄门'}, 'greenKey': {'cls': 'tools', 'name': '绿钥匙', 'text': '可以打开一扇绿门'}, 'steelKey': {'cls': 'tools', 'name': '铁门钥匙', 'text': '可以打开一扇铁门'}, @@ -63,8 +63,9 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "redJewel":"core.status.hero.atk += core.values.redJewel", "blueJewel":"core.status.hero.def += core.values.blueJewel", "greenJewel":"core.status.hero.mdef += core.values.greenJewel", - // 黄宝石属性:需自己定义 + "yellowJewel":"core.status.hero.hp+=1000;core.status.hero.atk+=6;core.status.hero.def+=6;core.status.hero.mdef+=10;", + // 黄宝石属性:需自己定义 "redPotion":"core.status.hero.hp += core.values.redPotion", "bluePotion":"core.status.hero.hp += core.values.bluePotion", "yellowPotion":"core.status.hero.hp += core.values.yellowPotion", @@ -79,8 +80,9 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "shield3":"core.status.hero.def += core.values.shield3", "shield4":"core.status.hero.def += core.values.shield4", "shield5":"core.status.hero.def += core.values.shield5", - // 只有是钥匙盒才会执行这一步 + "bigKey":"core.status.hero.items.keys.yellowKey++;core.status.hero.items.keys.blueKey++;core.status.hero.items.keys.redKey++;", + // 只有是钥匙盒才会执行这一步 "superPotion":"core.status.hero.hp *= 2", "moneyPocket":"core.status.hero.money += core.values.moneyPocket", }, diff --git a/project/maps.comment.js b/project/maps.comment.js new file mode 100644 index 00000000..374ed0c4 --- /dev/null +++ b/project/maps.comment.js @@ -0,0 +1,193 @@ +maps_comment_90f36752_8815_4be8_b32b_d7fad1d0542e = +{ + ////////////////////////// 地形部分 ////////////////////////// + + // 0-20 地形 + '1':' 黄墙', + '2':' 白墙', + '3':' 蓝墙', + '4':' 星空', + '5':' 岩浆', + '6':' 岩浆', + '7':' 蓝色商店左', + '8':' 蓝色商店右', + '9':' 粉色商店左', + '10':' 粉色商店左', + '11':' 血网', + '12':' 毒网', + '13':' 衰网', + '14':' 咒网', + '15':' 水', + // 在这里添加更多地形 + // 如果空位不足,可以从180以后开始继续放,只要不和现有的数字冲突即可 + + // Autotile + '20':' autotile', + // 更多的autotile从151到160等,只要不和现有的数字冲突即可 + '151':'', + '152':'', + '153':'', + + ////////////////////////// 物品部分 ////////////////////////// + + // 21-80 物品 + '21':' 黄钥匙', + '22':' 蓝钥匙', + '23':' 红钥匙', + '24':' 绿钥匙', + '25':' 铁门钥匙', + '26':' 大黄门钥匙(钥匙盒)', + '27':' 红宝石', + '28':' 蓝宝石', + '29':' 绿宝石', + '30':' 黄宝石', + '31':' 红血瓶', + '32':' 蓝血瓶', + '33':' 绿血瓶', + '34':' 黄血瓶', + '35':' 铁剑', + '36':' 铁盾', + '37':' 银剑', + '38':' 银盾', + '39':' 骑士剑', + '40':' 骑士盾', + '41':' 圣剑', + '42':' 圣盾', + '43':' 神圣剑', + '44':' 神圣盾', + '45':' 怪物手册', + '46':' 楼层传送器', + '47':' 破墙镐', + '48':' 破冰镐', + '49':' 炸弹', + '50':' 中心对称', + '51':' 上楼器', + '52':' 下楼器', + '53':' 幸运金币', + '54':' 冰冻徽章', + '55':' 十字架', + '56':' 圣水', + '57':' 地震卷轴', + '58':' 解毒药水', + '59':' 解衰药水', + '60':' 解咒药水', + '61':' 万能药水', + '62':' 屠龙匕首', + '63':' 金钱袋', + '64':' 绿鞋', + '65':' 圣锤', + + + ////////////////////////// 门、楼梯、传送点部分 ////////////////////////// + + // 81-100 门 + '81':' 黄门', + '82':' 蓝门', + '83':' 红门', + '84':' 绿门', + '85':' 机关门左', + '86':' 铁门', + '87':' 上楼梯', + '88':' 下楼梯', + '89':' 传送门', + '90':' 星空传送门', + '91':' 上箭头', + '92':' 左箭头', + '93':' 下箭头', + '94':' 右箭头', + + + ////////////////////////// NPC部分 ////////////////////////// + + // 121-150 NPC + '121':'', + '122':'', + '123':'', + '124':'', + '125':'', + '126':'', + '127':'', + '128':'', + '129':'', + '130':'', + '131':'', + '132':'', + + ////////////////////////// 其他部分 ////////////////////////// + + // 161-200 其他(单向箭头、灯、箱子等等) + '161':' 单向上箭头', + '162':' 单向下箭头', + '163':' 单向左箭头', + '164':' 单向右箭头', + '165':' 灯', + '166':' 暗灯', + + + ////////////////////////// 怪物部分 ////////////////////////// + + // 201-300 怪物 + '201':'', + '202':'', + '203':'', + '204':'', + '205':'', + '206':'', + '207':'', + '208':'', + '209':'', + '210':'', + '211':'', + '212':'', + '213':'', + '214':'', + '215':'', + '216':'', + '217':'', + '218':'', + '219':'', + '220':'', + '221':'', + '222':'', + '223':'', + '224':'', + '225':'', + '226':'', + '227':'', + '228':'', + '229':'', + '230':'', + '231':'', + '232':'', + '233':'', + '234':'', + '235':'', + '236':'', + '237':'', + '238':'', + '239':'', + '240':'', + '241':'', + '242':'', + '243':'', + '244':'', + '245':'', + '246':'', + '247':'', + '248':'', + '249':'', + '250':'', + '251':'', + '252':'', + '253':'', + '254':'', + '255':'', + '256':'', + '257':'', + '258':'', + '259':'', + '260':'', + + ////////////////////////// 待定... ////////////////////////// + // 目前ID暂时不要超过400 +} \ No newline at end of file diff --git a/test_main_init_mode.html b/test_main_init_mode.html index 61a2b11a..8a0f670c 100644 --- a/test_main_init_mode.html +++ b/test_main_init_mode.html @@ -25,7 +25,7 @@

资源即将开始加载

- +
@@ -48,39 +48,39 @@
- +

- +

- +

- +

- +

- +

- +

- +

- +

@@ -95,13 +95,13 @@
- - - - - - - + + + + + + +

@@ -131,15 +131,17 @@ var replay = function(){ } var afterInit = function(){ + main.editor.disableGlobalAnimate=false; main.editor.drawMapBg(); main.editor.updateMap(); + core.setHeroMoveTriggerInterval(); } var start = function(){ var hard = 'Hard'; core.resetStatus(core.firstData.hero, hard, core.firstData.floorId, core.initStatus.maps); core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() { /* core.setHeroMoveTriggerInterval(); */ - //afterInit(); + afterInit(); }); core.events.setInitData(hard); }