diff --git a/_server/blockly/MotaAction.g4 b/_server/blockly/MotaAction.g4 index b048ed4f..236d0d53 100644 --- a/_server/blockly/MotaAction.g4 +++ b/_server/blockly/MotaAction.g4 @@ -231,6 +231,7 @@ action | setFloor_s | setGlobalAttribute_s | setGlobalValue_s + | setGlobalFlag_s | show_s | hide_s | trigger_s @@ -500,6 +501,20 @@ return code; */; +setGlobalFlag_s + : '设置系统开关' ':' Global_Flag_List Bool Newline + + +/* setGlobalFlag_s +tooltip : setGlobalFlag:设置系统开关 +helpUrl : https://h5mota.com/games/template/docs/#/event?id=setGlobalValue%ef%bc%9a%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%85%a8%e5%b1%80%e6%95%b0%e5%80%bc +default : ["enableFloor","true"] +colour : this.dataColor +var code = '{"type": "setGlobalFlag", "name": "'+Global_Flag_List_0+'", "value": '+Bool_0+'},\n'; +return code; +*/; + + show_s : '显示事件' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '动画时间' Int? '不等待执行完毕' Bool? Newline @@ -1743,6 +1758,10 @@ Global_Value_List : '血网伤害'|'中毒伤害'|'衰弱效果'|'红宝石效果'|'蓝宝石效果'|'绿宝石效果'|'红血瓶效果'|'蓝血瓶效果'|'黄血瓶效果'|'绿血瓶效果'|'破甲比例'|'反击比例'|'净化比例'|'仇恨增加值'|'行走速度'|'动画时间'|'楼层切换时间' /*Global_Value_List ['lavaDamage','poisonDamage','weakValue', 'redJewel', 'blueJewel', 'greenJewel', 'redPotion', 'bluePotion', 'yellowPotion', 'greenPotion', 'breakArmor', 'counterAttack', 'purify', 'hatred', 'moveSpeed', 'animateSpeed', 'floorChangeTime']*/; +Global_Flag_List + : '显示当前楼层'|'显示勇士图标'|'显示当前等级'|'启用生命上限'|'显示魔力值'|'显示魔防值'|'显示金币值'|'显示经验值'|'允许等级提升'|'升级扣除模式'|'显示钥匙数量'|'显示破炸飞'|'显示毒衰咒'|'显示当前技能'|'楼梯边才能楼传'|'开启加点'|'开启负伤'|'循环计算临界'|'允许轻按'|'允许走到将死领域'|'允许瞬间移动'|'阻激夹域后禁用快捷商店' + /*Global_Flag_List ['enableFloor','enableName','enableLv', 'enableHPMax', 'enableMana', 'enableMDef', 'enableMoney', 'enableExperience', 'enableLevelUp', 'levelUpLeftMode', 'enableKeys', 'enablePZF', 'enableDebuff', 'enableSkill', 'flyNearStair', 'enableAddPoint', 'enableNegativeDamage', 'useLoop', 'enableGentleClick', 'canGoDeadZone', 'enableMoveDirectly', 'disableShopOnDamage']*/; + Bool: 'TRUE' | 'FALSE' ; @@ -2248,6 +2267,10 @@ ActionParser.prototype.parseAction = function() { this.next = MotaActionBlocks['setGlobalValue_s'].xmlText([ data.name, data.value, this.next]); break; + case "setGlobalFlag": + this.next = MotaActionBlocks['setGlobalFlag_s'].xmlText([ + data.name, data.value, this.next]); + break; case "input": this.next = MotaActionBlocks['input_s'].xmlText([ data.text,this.next]); diff --git a/_server/data.comment.js b/_server/data.comment.js index 9be56e8a..fc341189 100644 --- a/_server/data.comment.js +++ b/_server/data.comment.js @@ -480,7 +480,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = "_leaf": true, "_type": "checkbox", "_bool": "bool", - "_data": "是否涉及毒衰咒;如果此项为false则不会在状态栏中显示毒衰咒的debuff" + "_data": "是否在状态栏显示毒衰咒" }, "enableSkill": { "_leaf": true, diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 69ee87a1..2e4b4127 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -88,6 +88,7 @@ editor_blockly = function () { MotaActionBlocks['setFloor_s'].xmlText(), MotaActionBlocks['setGlobalAttribute_s'].xmlText(), MotaActionBlocks['setGlobalValue_s'].xmlText(), + MotaActionBlocks['setGlobalFlag_s'].xmlText(), MotaActionBlocks['input_s'].xmlText(), MotaActionBlocks['input2_s'].xmlText(), MotaActionBlocks['update_s'].xmlText(), diff --git a/docs/personalization.md b/docs/personalization.md index 98c8bdd2..1ee195ad 100644 --- a/docs/personalization.md +++ b/docs/personalization.md @@ -959,7 +959,7 @@ this.getAchievements = function () { - **`flag:equip_atk_buff`**, **`flag:equip_def_buff`**, **`flag:equip_mdef_buff`**: 当前攻防魔防的实际计算比例加成。 - **`flag:forceSave`**: 是否允许事件中强制自动存档。如果将此项置为true并调用core.autosave()即可在事件中强制自动存档,读档时会自动执行该楼层的`eachArrive`事件。 - **`flag:__color__`**, **`flag:__weather__`**, **`flag:__volume__`**: 当前的画面色调、天气和音量。 -- **`flag:textAttribute`**, **`flag:globalAttribute`**: 当前的剧情文本属性,当前的全局属性。 +- **`flag:textAttribute`**, **`flag:globalAttribute`**, **flag:globalFlags**: 当前的剧情文本属性,当前的全局属性,当前的全局开关。 - **`flag:cannotMoveDirectly`**, **`flag:clickMove`**: 当前是否不允许瞬间移动,当前用户是否开启了单击瞬移。 - **`flag:hideStatusBar`**, **`flag:showToolbox`**: 是否隐藏状态栏,是否显示工具栏。 - **`flag:debug`**, **`flag:consoleOpened`**: 当前是否开启了调试模式,是否开启了控制台。 diff --git a/libs/control.js b/libs/control.js index 4d6a74ac..9afa5a06 100644 --- a/libs/control.js +++ b/libs/control.js @@ -419,7 +419,13 @@ control.prototype.resetStatus = function(hero, hard, floorId, route, maps, value core.values = core.clone(values); else core.values = core.clone(core.data.values); + core.flags = core.clone(core.data.flags); + var systemFlags = core.getFlag("globalFlags", {}); + for (var key in systemFlags) + core.flags[key] = systemFlags[key]; + core.events.initGame(); + core.resize(); this.updateGlobalAttribute(Object.keys(core.status.globalAttribute)); this.triggerStatusBar(core.getFlag('hideStatusBar', false)?'hide':'show', core.getFlag("showToolbox")); core.status.played = true; @@ -2813,6 +2819,9 @@ control.prototype.needDraw = function(id) { control.prototype.resize = function(clientWidth, clientHeight) { if (main.mode=='editor')return; + clientWidth = clientWidth || main.dom.body.clientWidth; + clientHeight = clientHeight || main.dom.body.clientHeight; + // 默认画布大小 var DEFAULT_CANVAS_WIDTH = 422; // 默认边栏宽度 diff --git a/libs/events.js b/libs/events.js index 4dc6fd5a..ed5c4739 100644 --- a/libs/events.js +++ b/libs/events.js @@ -996,6 +996,16 @@ events.prototype.doAction = function() { core.values[data.name] = data.value; this.doAction(); break; + case "setGlobalFlag": + { + var flags = core.getFlag("globalFlags", {}); + flags[data.name] = data.value; + core.flags[data.name] = data.value; + core.setFlag("globalFlags", flags); + core.resize(); + this.doAction(); + break; + } case "setHeroIcon": { this.setHeroIcon(data.name);