mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-02-07 20:09:27 +08:00
事件中的强制战斗
This commit is contained in:
parent
351e136775
commit
fbe81fedd2
@ -7,3 +7,4 @@ public/project/floors/*.js
|
|||||||
public/project/maps.js
|
public/project/maps.js
|
||||||
public/_server/**/*.js
|
public/_server/**/*.js
|
||||||
script/**/*.js
|
script/**/*.js
|
||||||
|
public/editor.html
|
@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<link href="_server/css/editor.css" rel="stylesheet">
|
<link href="_server/css/editor.css" rel="stylesheet">
|
||||||
@ -8,6 +9,7 @@
|
|||||||
<link id="color_css" rel="stylesheet">
|
<link id="color_css" rel="stylesheet">
|
||||||
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
|
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<script>
|
<script>
|
||||||
if (innerWidth < innerHeight) { //pic:1242*2208 | chrome info:1340*2380
|
if (innerWidth < innerHeight) { //pic:1242*2208 | chrome info:1340*2380
|
||||||
@ -74,16 +76,27 @@
|
|||||||
<!-- ["terrains", "animates", "enemys", "enemy48", "items", "npcs", "npc48"] -->
|
<!-- ["terrains", "animates", "enemys", "enemy48", "items", "npcs", "npc48"] -->
|
||||||
<input id="appendConfirm" type="button" value="追加" />
|
<input id="appendConfirm" type="button" value="追加" />
|
||||||
<input id="quickAppendConfirm" type="button" value="快速追加" />
|
<input id="quickAppendConfirm" type="button" value="快速追加" />
|
||||||
<span style="font-size: 13px"> 自动注册</span><input id="appendRegister" type="checkbox" checked/>
|
<span style="font-size: 13px"> 自动注册</span><input id="appendRegister" type="checkbox"
|
||||||
|
checked />
|
||||||
</p>
|
</p>
|
||||||
<p><small>从V2.7.1开始,你可以直接将素材图片拖到对应的素材区,将自动追加并注册。同时,4x4的道具素材已支持快速追加一次16个。</small></p>
|
<p><small>从V2.7.1开始,你可以直接将素材图片拖到对应的素材区,将自动追加并注册。同时,4x4的道具素材已支持快速追加一次16个。</small></p>
|
||||||
<p>
|
<p>
|
||||||
色相:<input id='changeColorInput' type="range" min="0" max="12" step="1" value="0" list="huelists" style="width: 60%;margin-left: 3%;vertical-align: middle">
|
色相:<input id='changeColorInput' type="range" min="0" max="12" step="1" value="0" list="huelists"
|
||||||
|
style="width: 60%;margin-left: 3%;vertical-align: middle">
|
||||||
<datalist id="huelists" style="display: none">
|
<datalist id="huelists" style="display: none">
|
||||||
<option value="0"/><option value="1"/><option value="2"/>
|
<option value="0" />
|
||||||
<option value="3"/><option value="4"/><option value="5"/>
|
<option value="1" />
|
||||||
<option value="6"/><option value="7"/><option value="8"/>
|
<option value="2" />
|
||||||
<option value="9"/><option value="10"/><option value="11"/><option value="12"/>
|
<option value="3" />
|
||||||
|
<option value="4" />
|
||||||
|
<option value="5" />
|
||||||
|
<option value="6" />
|
||||||
|
<option value="7" />
|
||||||
|
<option value="8" />
|
||||||
|
<option value="9" />
|
||||||
|
<option value="10" />
|
||||||
|
<option value="11" />
|
||||||
|
<option value="12" />
|
||||||
</datalist>
|
</datalist>
|
||||||
</p>
|
</p>
|
||||||
<div id="appendPicCanvas" style="position:relative;overflow: auto;height:470px;">
|
<div id="appendPicCanvas" style="position:relative;overflow: auto;height:470px;">
|
||||||
@ -101,7 +114,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left2" class='leftTab' style="z-index:-1;opacity: 0;"><!-- loc -->
|
<div id="left2" class='leftTab' style="z-index:-1;opacity: 0;"><!-- loc -->
|
||||||
<h3 class="leftTabHeader">地图选点 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.uifunctions.addAutoEvent()">添加自动事件页</button> <button onclick="editor_multi.editCommentJs('loc')">配置表格</button>
|
<h3 class="leftTabHeader">地图选点 <button
|
||||||
|
onclick="editor.mode.onmode('save')">保存</button> <button
|
||||||
|
onclick="editor.uifunctions.addAutoEvent()">添加自动事件页</button> <button
|
||||||
|
onclick="editor_multi.editCommentJs('loc')">配置表格</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<p id='pos_a6771a78_a099_417c_828f_0a24851ebfce' style="margin-left: 15px">0,0</p>
|
<p id='pos_a6771a78_a099_417c_828f_0a24851ebfce' style="margin-left: 15px">0,0</p>
|
||||||
@ -119,7 +135,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left3" class='leftTab' style="z-index:-1;opacity: 0;"><!-- enemyitem -->
|
<div id="left3" class='leftTab' style="z-index:-1;opacity: 0;"><!-- enemyitem -->
|
||||||
<h3 class="leftTabHeader">图块属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button onclick="editor_multi.editCommentJs('enemyitem')">配置表格</button>
|
<h3 class="leftTabHeader">图块属性 <button
|
||||||
|
onclick="editor.mode.onmode('save')">保存</button> <button
|
||||||
|
onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button
|
||||||
|
onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button
|
||||||
|
onclick="editor_multi.editCommentJs('enemyitem')">配置表格</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div id="enemyItemTable"><!-- enemy and item -->
|
<div id="enemyItemTable"><!-- enemy and item -->
|
||||||
@ -159,7 +179,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left4" class='leftTab' style="z-index:-1;opacity: 0;"><!-- floor -->
|
<div id="left4" class='leftTab' style="z-index:-1;opacity: 0;"><!-- floor -->
|
||||||
<h3 class="leftTabHeader">楼层属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button onclick="editor_multi.editCommentJs('floor')">配置表格</button>
|
<h3 class="leftTabHeader">楼层属性 <button
|
||||||
|
onclick="editor.mode.onmode('save')">保存</button> <button
|
||||||
|
onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button
|
||||||
|
onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button
|
||||||
|
onclick="editor_multi.editCommentJs('floor')">配置表格</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
@ -185,7 +209,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left5" class='leftTab' style="z-index:-1;opacity: 0;"><!-- tower -->
|
<div id="left5" class='leftTab' style="z-index:-1;opacity: 0;"><!-- tower -->
|
||||||
<h3 class="leftTabHeader">全塔属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor_multi.editCommentJs('tower')">配置表格</button>
|
<h3 class="leftTabHeader">全塔属性 <button
|
||||||
|
onclick="editor.mode.onmode('save')">保存</button> <button
|
||||||
|
onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button
|
||||||
|
onclick="editor_multi.editCommentJs('tower')">配置表格</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
@ -216,11 +243,15 @@
|
|||||||
<div class="searchLogo"></div>
|
<div class="searchLogo"></div>
|
||||||
<input type="text" id="searchBlock" placeholder="搜索事件块..." />
|
<input type="text" id="searchBlock" placeholder="搜索事件块..." />
|
||||||
</div>
|
</div>
|
||||||
<button class="cpPanel" onclick="editor_blockly.selectPointFromButton()" style="margin-left:5px">地图选点</button>
|
<button class="cpPanel" onclick="editor_blockly.selectPointFromButton()"
|
||||||
<button class="cpPanel" onclick="editor.uievent.searchUsedFlags()" style="margin-left:5px">变量出现位置搜索</button>
|
style="margin-left:5px">地图选点</button>
|
||||||
<input type="checkbox" class="cpPanel" id="blocklyReplace" onchange="editor_blockly.triggerReplace()" style="margin-left: 10px" />
|
<button class="cpPanel" onclick="editor.uievent.searchUsedFlags()"
|
||||||
|
style="margin-left:5px">变量出现位置搜索</button>
|
||||||
|
<input type="checkbox" class="cpPanel" id="blocklyReplace"
|
||||||
|
onchange="editor_blockly.triggerReplace()" style="margin-left: 10px" />
|
||||||
<span class="cpPanel" style="margin-left: -4px; font-size: 13px">开启中文名替换</span>
|
<span class="cpPanel" style="margin-left: -4px; font-size: 13px">开启中文名替换</span>
|
||||||
<input type="checkbox" class="cpPanel" id="blocklyExpandCompare" onchange="editor_blockly.triggerExpandCompare()" style="margin-left: 10px" />
|
<input type="checkbox" class="cpPanel" id="blocklyExpandCompare"
|
||||||
|
onchange="editor_blockly.triggerExpandCompare()" style="margin-left: 10px" />
|
||||||
<span class="cpPanel" style="margin-left: -4px; font-size: 13px">展开值块逻辑运算</span>
|
<span class="cpPanel" style="margin-left: -4px; font-size: 13px">展开值块逻辑运算</span>
|
||||||
<xml id="toolbox" style="display:none">
|
<xml id="toolbox" style="display:none">
|
||||||
</xml>
|
</xml>
|
||||||
@ -247,14 +278,18 @@
|
|||||||
<input type="checkbox" onclick="editor_multi.toggerLint()" id="lintCheckbox"
|
<input type="checkbox" onclick="editor_multi.toggerLint()" id="lintCheckbox"
|
||||||
style="vertical-align: middle;margin-left:6px" />
|
style="vertical-align: middle;margin-left:6px" />
|
||||||
<span style="vertical-align: middle; margin-left: -3px">语法检查</span>
|
<span style="vertical-align: middle; margin-left: -3px">语法检查</span>
|
||||||
<select id="codemirrorCommands" onchange="editor_multi.doCommand(this)" style="vertical-align: middle; margin-left: 6px;"></select>
|
<select id="codemirrorCommands" onchange="editor_multi.doCommand(this)"
|
||||||
|
style="vertical-align: middle; margin-left: 6px;"></select>
|
||||||
<span>字体大小</span>
|
<span>字体大小</span>
|
||||||
<input style="width: 40px" type="number" onchange="editor_multi.setFontSize()" id="editor_multi_fontsize" />
|
<input style="width: 40px" type="number" onchange="editor_multi.setFontSize()"
|
||||||
|
id="editor_multi_fontsize" />
|
||||||
</div>
|
</div>
|
||||||
<textarea id="multiLineCode" name="multiLineCode"></textarea>
|
<textarea id="multiLineCode" name="multiLineCode"></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div id="left8" class='leftTab' style="z-index:-1;opacity: 0;"><!-- functions -->
|
<div id="left8" class='leftTab' style="z-index:-1;opacity: 0;"><!-- functions -->
|
||||||
<h3 class="leftTabHeader">脚本编辑 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor_multi.editCommentJs('functions')">配置表格</button>
|
<h3 class="leftTabHeader">脚本编辑 <button
|
||||||
|
onclick="editor.mode.onmode('save')">保存</button> <button
|
||||||
|
onclick="editor_multi.editCommentJs('functions')">配置表格</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
@ -271,7 +306,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left9" class='leftTab' style="z-index:-1;opacity: 0;"><!-- commonevent -->
|
<div id="left9" class='leftTab' style="z-index:-1;opacity: 0;"><!-- commonevent -->
|
||||||
<h3 class="leftTabHeader">公共事件 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.table.addfunc()">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button onclick="editor_multi.editCommentJs('commonevent')">配置表格</button>
|
<h3 class="leftTabHeader">公共事件 <button
|
||||||
|
onclick="editor.mode.onmode('save')">保存</button> <button
|
||||||
|
onclick="editor.table.addfunc()">添加</button> <button
|
||||||
|
onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button
|
||||||
|
onclick="editor_multi.editCommentJs('commonevent')">配置表格</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
@ -288,7 +327,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="left10" class='leftTab' style="z-index:-1;opacity: 0;"><!-- plugins -->
|
<div id="left10" class='leftTab' style="z-index:-1;opacity: 0;"><!-- plugins -->
|
||||||
<h3 class="leftTabHeader">插件编写 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.table.addfunc()">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button onclick="editor_multi.editCommentJs('plugins')">配置表格</button>
|
<h3 class="leftTabHeader">插件编写 <button
|
||||||
|
onclick="editor.mode.onmode('save')">保存</button> <button
|
||||||
|
onclick="editor.table.addfunc()">添加</button> <button
|
||||||
|
onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button
|
||||||
|
onclick="editor_multi.editCommentJs('plugins')">配置表格</button>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="leftTabContent">
|
<div class="leftTabContent">
|
||||||
<div class='etable'>
|
<div class='etable'>
|
||||||
@ -325,7 +368,8 @@
|
|||||||
<option value="commonevent">公共事件(,)</option>
|
<option value="commonevent">公共事件(,)</option>
|
||||||
<option value="plugins">插件编写(.)</option>
|
<option value="plugins">插件编写(.)</option>
|
||||||
</select>
|
</select>
|
||||||
<span style="font-size: 12px"><input type="checkbox" id="showMovable" style="margin-left:0;margin-right: 2px"/>通行度</span>
|
<span style="font-size: 12px"><input type="checkbox" id="showMovable"
|
||||||
|
style="margin-left:0;margin-right: 2px" />通行度</span>
|
||||||
<select id="editorTheme" style="margin-left: 0; font-size: 11px;">
|
<select id="editorTheme" style="margin-left: 0; font-size: 11px;">
|
||||||
<option value="editor_color">默认白</option>
|
<option value="editor_color">默认白</option>
|
||||||
<option value="editor_color_dark">夜间黑</option>
|
<option value="editor_color_dark">夜间黑</option>
|
||||||
@ -341,7 +385,8 @@
|
|||||||
<br />
|
<br />
|
||||||
<span style="font-size: 12px">
|
<span style="font-size: 12px">
|
||||||
<input type="radio" id="layerMod2" name="layerMod" value="bgmap" />背景层
|
<input type="radio" id="layerMod2" name="layerMod" value="bgmap" />背景层
|
||||||
<input type="radio" id="layerMod" name="layerMod" value="map" checked="checked" style="margin-left: 5px" />事件层
|
<input type="radio" id="layerMod" name="layerMod" value="map" checked="checked"
|
||||||
|
style="margin-left: 5px" />事件层
|
||||||
<input type="radio" id="layerMod3" name="layerMod" value="fgmap" style="margin-left: 5px" />前景层
|
<input type="radio" id="layerMod3" name="layerMod" value="fgmap" style="margin-left: 5px" />前景层
|
||||||
</span>
|
</span>
|
||||||
<br>
|
<br>
|
||||||
@ -356,12 +401,14 @@
|
|||||||
<input type="button" value="选层" id='selectFloorBtn' />
|
<input type="button" value="选层" id='selectFloorBtn' />
|
||||||
<input type="button" value="保存地图" id='saveFloor' />
|
<input type="button" value="保存地图" id='saveFloor' />
|
||||||
<input type="button" value="后退" id="undoFloor" style="display: none;" />
|
<input type="button" value="后退" id="undoFloor" style="display: none;" />
|
||||||
<input type="button" value="帮助文档" id="openDoc" />
|
<input type="button" style="display: none;" value="帮助文档" id="openDoc" />
|
||||||
<input type="button" value="前往游戏" onclick="window.open('./index.html', '_blank')"/>
|
<input type="button" style="display: none;" value="前往游戏"
|
||||||
|
onclick="window.open('./index.html', '_blank')" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="mid2">
|
<div id="mid2">
|
||||||
<p style="margin: 10px"><span id='lastUsedTitle'></span><small>(Ctrl+滚轮放缩,右键置顶)</small> <button id='clearLastUsedBtn'>清除</button></p>
|
<p style="margin: 10px"><span id='lastUsedTitle'></span><small>(Ctrl+滚轮放缩,右键置顶)</small> <button
|
||||||
|
id='clearLastUsedBtn'>清除</button></p>
|
||||||
<div class="map" id="lastUsedDiv">
|
<div class="map" id="lastUsedDiv">
|
||||||
<canvas id='lastUsed' class="gameCanvas" style="overflow: hidden"></canvas>
|
<canvas id='lastUsed' class="gameCanvas" style="overflow: hidden"></canvas>
|
||||||
</div>
|
</div>
|
||||||
@ -377,13 +424,27 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="menuDiv">
|
<div id="menuDiv">
|
||||||
<div id="midMenu" style="display:none">
|
<div id="midMenu" style="display:none">
|
||||||
<div id='extraEvent' class='menuitem' style="display:none"><div class="menuitem-content"></div></div>
|
<div id='extraEvent' class='menuitem' style="display:none">
|
||||||
<div id='chooseThis' class="menuitem"><div class="menuitem-content">选中此点</div></div>
|
<div class="menuitem-content"></div>
|
||||||
<div id='chooseInRight' class="menuitem"><div class="menuitem-content">在素材区选中此图块</div></div>
|
</div>
|
||||||
<div id='copyLoc' class="menuitem"><div class="menuitem-content">复制此事件</div></div>
|
<div id='chooseThis' class="menuitem">
|
||||||
<div id='pasteLoc' class="menuitem"><div class="menuitem-content">粘贴到此事件</div></div>
|
<div class="menuitem-content">选中此点</div>
|
||||||
<div id='clearEvent' class="menuitem"><div class="menuitem-content">仅清空此点事件</div></div>
|
</div>
|
||||||
<div id='clearLoc' class="menuitem"><div class="menuitem-content">清空此点及事件</div></div>
|
<div id='chooseInRight' class="menuitem">
|
||||||
|
<div class="menuitem-content">在素材区选中此图块</div>
|
||||||
|
</div>
|
||||||
|
<div id='copyLoc' class="menuitem">
|
||||||
|
<div class="menuitem-content">复制此事件</div>
|
||||||
|
</div>
|
||||||
|
<div id='pasteLoc' class="menuitem">
|
||||||
|
<div class="menuitem-content">粘贴到此事件</div>
|
||||||
|
</div>
|
||||||
|
<div id='clearEvent' class="menuitem">
|
||||||
|
<div class="menuitem-content">仅清空此点事件</div>
|
||||||
|
</div>
|
||||||
|
<div id='clearLoc' class="menuitem">
|
||||||
|
<div class="menuitem-content">清空此点及事件</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -480,4 +541,5 @@
|
|||||||
<script src="_server/thirdparty/jsColor.js"></script>
|
<script src="_server/thirdparty/jsColor.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@ -1468,11 +1468,11 @@ control.prototype.updateDamage = function (floorId, ctx) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
control.prototype._updateDamage_damage = function (floorId, onMap) {
|
control.prototype._updateDamage_damage = function (floorId, onMap) {
|
||||||
// Deprecated. See src/plugin/game/damage.ts EnemyCollection.render.
|
// Deprecated. See src/plugin/game/enemy/damage.ts EnemyCollection.render.
|
||||||
};
|
};
|
||||||
|
|
||||||
control.prototype._updateDamage_extraDamage = function (floorId, onMap) {
|
control.prototype._updateDamage_extraDamage = function (floorId, onMap) {
|
||||||
// Deprecated. See src/plugin/game/damage.ts EnemyCollection.render.
|
// Deprecated. See src/plugin/game/enemy/damage.ts EnemyCollection.render.
|
||||||
};
|
};
|
||||||
|
|
||||||
////// 重绘地图显伤 //////
|
////// 重绘地图显伤 //////
|
||||||
|
@ -203,7 +203,7 @@ enemys.prototype.getEnemyValue = function (enemy, name, x, y, floorId) {
|
|||||||
|
|
||||||
////// 能否获胜 //////
|
////// 能否获胜 //////
|
||||||
enemys.prototype.canBattle = function (enemy, x, y, floorId) {
|
enemys.prototype.canBattle = function (enemy, x, y, floorId) {
|
||||||
// Deprecated. See src/plugin/game/battle.ts
|
// Deprecated. See src/plugin/game/enemy/battle.ts
|
||||||
};
|
};
|
||||||
|
|
||||||
enemys.prototype.getDamageString = function (enemy, x, y, floorId, hero) {
|
enemys.prototype.getDamageString = function (enemy, x, y, floorId, hero) {
|
||||||
|
@ -430,49 +430,22 @@ events.prototype._trigger_ignoreChangeFloor = function (block) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
events.prototype._sys_battle = function (data, callback) {
|
events.prototype._sys_battle = function (data, callback) {
|
||||||
// todo: 重写这个函数的一部分
|
// Deprecated. See /src/plugin/game/enemy/battle.ts
|
||||||
|
|
||||||
// 检查战前事件
|
|
||||||
var beforeBattle = [];
|
|
||||||
core.push(
|
|
||||||
beforeBattle,
|
|
||||||
core.floors[core.status.floorId].beforeBattle[data.x + ',' + data.y]
|
|
||||||
);
|
|
||||||
core.push(
|
|
||||||
beforeBattle,
|
|
||||||
(core.material.enemys[data.event.id] || {}).beforeBattle
|
|
||||||
);
|
|
||||||
if (beforeBattle.length > 0) {
|
|
||||||
core.push(beforeBattle, [{ type: 'battle', x: data.x, y: data.y }]);
|
|
||||||
core.clearContinueAutomaticRoute();
|
|
||||||
|
|
||||||
// 自动存档
|
|
||||||
var inAction = core.status.event.id == 'action';
|
|
||||||
if (inAction) {
|
|
||||||
core.insertAction(beforeBattle, data.x, data.y);
|
|
||||||
core.doAction();
|
|
||||||
} else {
|
|
||||||
core.autosave(true);
|
|
||||||
core.insertAction(beforeBattle, data.x, data.y, callback);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.battle(data.event.id, data.x, data.y, false, callback);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
////// 战斗 //////
|
////// 战斗 //////
|
||||||
events.prototype.battle = function (id, x, y, force, callback) {
|
events.prototype.battle = function (id, x, y, force, callback) {
|
||||||
// Deprecated. See src/plugin/game/battle.ts
|
// Deprecated. See src/plugin/game/enemy/battle.ts
|
||||||
};
|
};
|
||||||
|
|
||||||
////// 战斗前触发的事件 //////
|
////// 战斗前触发的事件 //////
|
||||||
events.prototype.beforeBattle = function (enemyId, x, y) {
|
events.prototype.beforeBattle = function (enemyId, x, y) {
|
||||||
// Deprecated. See src/plugin/game/battle.ts
|
// Deprecated. See src/plugin/game/enemy/battle.ts
|
||||||
};
|
};
|
||||||
|
|
||||||
////// 战斗结束后触发的事件 //////
|
////// 战斗结束后触发的事件 //////
|
||||||
events.prototype.afterBattle = function (enemyId, x, y) {
|
events.prototype.afterBattle = function (enemyId, x, y) {
|
||||||
// Deprecated. See src/plugin/game/battle.ts
|
// Deprecated. See src/plugin/game/enemy/battle.ts
|
||||||
};
|
};
|
||||||
|
|
||||||
events.prototype._sys_openDoor = function (data, callback) {
|
events.prototype._sys_openDoor = function (data, callback) {
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
import { DamageDir, DamageEnemy, getNeedCalDir } from './damage';
|
import {
|
||||||
import { findDir, has } from './utils';
|
DamageDir,
|
||||||
|
DamageEnemy,
|
||||||
|
getNeedCalDir,
|
||||||
|
getSingleEnemy
|
||||||
|
} from './damage';
|
||||||
|
import { findDir, has } from '../utils';
|
||||||
|
|
||||||
export function getEnemy(
|
export function getEnemy(
|
||||||
x: number,
|
x: number,
|
||||||
@ -205,6 +210,24 @@ core.events._sys_battle = function (data: Block, callback?: () => void) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
core.events._action_battle = function (data, x, y, prefix) {
|
||||||
|
if (data.id) {
|
||||||
|
const enemy = getSingleEnemy(data.id as EnemyIds);
|
||||||
|
// todo: 与不在地图上的怪物战斗
|
||||||
|
} else {
|
||||||
|
if (data.floorId != core.status.floorId) {
|
||||||
|
core.doAction();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const [ex, ey] = this.__action_getLoc(data.loc, x, y, prefix) as LocArr;
|
||||||
|
const dir = findDir(core.status.hero.loc, {
|
||||||
|
x: ex,
|
||||||
|
y: ey
|
||||||
|
}) as DamageDir;
|
||||||
|
this.battle(ex, ey, dir, true, core.doAction);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface Events {
|
interface Events {
|
||||||
/**
|
/**
|
@ -1,6 +1,6 @@
|
|||||||
import { equal } from './utils';
|
import { equal } from '../utils';
|
||||||
import { getHeroStatusOf, getHeroStatusOn } from './hero';
|
import { getHeroStatusOf, getHeroStatusOn } from '../hero';
|
||||||
import { Range, RangeCollection } from './range';
|
import { Range, RangeCollection } from '../range';
|
||||||
import {
|
import {
|
||||||
backDir,
|
backDir,
|
||||||
checkV2,
|
checkV2,
|
||||||
@ -9,7 +9,7 @@ import {
|
|||||||
has,
|
has,
|
||||||
manhattan,
|
manhattan,
|
||||||
ofDir
|
ofDir
|
||||||
} from './utils';
|
} from '../utils';
|
||||||
|
|
||||||
interface HaloType {
|
interface HaloType {
|
||||||
square: {
|
square: {
|
||||||
@ -968,11 +968,11 @@ const skills: [unlock: string, condition: string][] = [
|
|||||||
export function getNeedCalDir(
|
export function getNeedCalDir(
|
||||||
x?: number,
|
x?: number,
|
||||||
y?: number,
|
y?: number,
|
||||||
floorId: FloorIds = core.status.floorId,
|
floorId?: FloorIds,
|
||||||
hero: Partial<HeroStatus> = core.status.hero
|
hero: Partial<HeroStatus> = core.status.hero
|
||||||
): (Dir | 'none')[] {
|
): (Dir | 'none')[] {
|
||||||
// 第一章或序章,或者没有指定怪物位置,或者没开自动定位,用不到这个函数
|
// 第一章或序章,或者没有指定怪物位置,或者没开自动定位,用不到这个函数
|
||||||
if (flags.chapter < 2 || !has(x) || !has(y)) {
|
if (flags.chapter < 2 || !has(x) || !has(y) || !floorId) {
|
||||||
return ['none'];
|
return ['none'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1105,6 +1105,15 @@ export function ensureFloorDamage(floorId: FloorIds) {
|
|||||||
floor.enemy ??= new EnemyCollection(floorId);
|
floor.enemy ??= new EnemyCollection(floorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getSingleEnemy(id: EnemyIds) {
|
||||||
|
const e = core.material.enemys[id];
|
||||||
|
const enemy = new DamageEnemy(e);
|
||||||
|
enemy.calAttribute();
|
||||||
|
enemy.getRealInfo();
|
||||||
|
enemy.calDamage(core.status.hero, false)[0];
|
||||||
|
return enemy;
|
||||||
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface PluginDeclaration {
|
interface PluginDeclaration {
|
||||||
damage: {
|
damage: {
|
@ -17,8 +17,8 @@ import * as study from './study';
|
|||||||
import * as towerBoss from './towerBoss';
|
import * as towerBoss from './towerBoss';
|
||||||
import * as utils from './utils';
|
import * as utils from './utils';
|
||||||
import * as chase from './chase';
|
import * as chase from './chase';
|
||||||
import * as damage from './damage';
|
import * as damage from './enemy/damage';
|
||||||
import * as battle from './battle';
|
import * as battle from './enemy/battle';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
halo,
|
halo,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { ensureFloorDamage } from './damage';
|
import { ensureFloorDamage } from './enemy/damage';
|
||||||
|
|
||||||
core.control.updateDamage = function (floorId = core.status.floorId, ctx) {
|
core.control.updateDamage = function (floorId = core.status.floorId, ctx) {
|
||||||
if (!floorId || core.status.gameOver || main.mode !== 'play') return;
|
if (!floorId || core.status.gameOver || main.mode !== 'play') return;
|
||||||
|
4
src/types/event.d.ts
vendored
4
src/types/event.d.ts
vendored
@ -760,6 +760,10 @@ interface Events extends EventData {
|
|||||||
tryUseItem(itemId: ItemIdOf<'tools' | 'constants'>): void;
|
tryUseItem(itemId: ItemIdOf<'tools' | 'constants'>): void;
|
||||||
|
|
||||||
_sys_battle(data: Block, callback?: () => void): void;
|
_sys_battle(data: Block, callback?: () => void): void;
|
||||||
|
|
||||||
|
_action_battle(data: any, x?: number, y?: number, prefix?: any): void;
|
||||||
|
|
||||||
|
__action_getLoc(data: any, x?: number, y?: number, prefix?: any): any;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare const events: new () => Events;
|
declare const events: new () => Events;
|
||||||
|
Loading…
Reference in New Issue
Block a user