配置自动部署,删除部分不需要的函数

This commit is contained in:
unanmed 2023-01-04 11:32:01 +08:00
parent dc6eb041df
commit 90f14bc067
11 changed files with 301 additions and 716 deletions

74
.github/workflows/codeql.yml vendored Normal file
View File

@ -0,0 +1,74 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ "master" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "master" ]
schedule:
- cron: '29 5 * * 5'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"

38
.github/workflows/page.yml vendored Normal file
View File

@ -0,0 +1,38 @@
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages
on:
# Runs on pushes targeting the default branch
push:
branches:
- master
# Allow one concurrent deployment
concurrency:
group: 'pages'
cancel-in-progress: true
jobs:
# Single deploy job since we're just deploying
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
persist-credentials: false
# 执行依赖安装
- name: 安装依赖
run: |
npm i -g pnpm
pnpm i
pnpm build
# 执行部署
- name: 部署
uses: JamesIves/github-pages-deploy-action@releases/v3 # 这个action会根据配置自动推送代码到指定分支
with:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} # 指定密钥
BRANCH: gh-pages ##指定推送到的远程分支
FOLDER: dist # 指定构建之后要推送哪个目录的代码

View File

@ -6,207 +6,182 @@
*/
var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_type": "object",
"_data": {
"events": {
"_type": "object",
"_data": {
"resetGame": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "重置游戏"
_type: 'object',
_data: {
events: {
_type: 'object',
_data: {
resetGame: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '重置游戏'
},
"win": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "游戏获胜"
win: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '游戏获胜'
},
"lose": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "游戏失败"
lose: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '游戏失败'
},
"changingFloor": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "切换楼层中"
changingFloor: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '切换楼层中'
},
"afterChangeFloor": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "切换楼层后"
afterChangeFloor: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '切换楼层后'
},
"flyTo": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "楼层飞行"
flyTo: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '楼层飞行'
},
"beforeBattle": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "战前判定"
beforeBattle: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '战前判定'
},
"afterBattle": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "战后脚本"
afterBattle: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '战后脚本'
},
"afterOpenDoor": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "开门后脚本"
afterOpenDoor: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '开门后脚本'
},
"afterGetItem": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "道具后脚本"
afterGetItem: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '道具后脚本'
},
"afterPushBox": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "推箱子后"
afterPushBox: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '推箱子后'
}
}
},
"enemys": {
"_type": "object",
"_data": {
"getSpecials": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "怪物特殊属性"
enemys: {
_type: 'object',
_data: {
getSpecials: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '怪物特殊属性'
},
"getEnemyInfo": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "怪物真实属性"
getEnemyInfo: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '怪物真实属性'
},
"getDamageInfo": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "战斗伤害信息"
getDamageInfo: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '战斗伤害信息'
}
}
},
"actions": {
"_type": "object",
"_data": {
"onKeyUp": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "按键处理"
},
"onStatusBarClick": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_docs": "点击状态栏",
"_data": "状态栏点击事件,仅在开启自绘状态栏时生效"
actions: {
_type: 'object',
_data: {
onKeyUp: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '按键处理'
}
}
},
"control": {
"_type": "object",
"_data": {
"saveData": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "存档操作"
control: {
_type: 'object',
_data: {
saveData: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '存档操作'
},
"loadData": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "读档操作"
loadData: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '读档操作'
},
"getStatusLabel": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "状态名定义"
getStatusLabel: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '状态名定义'
},
"triggerDebuff": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "毒衰咒处理"
triggerDebuff: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '毒衰咒处理'
},
"updateStatusBar": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "更新状态栏"
updateStatusBar: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '更新状态栏'
},
"updateCheckBlock": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "阻激夹域伤害"
updateCheckBlock: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '阻激夹域伤害'
},
"moveOneStep": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "每步后操作"
moveOneStep: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '每步后操作'
},
"moveDirectly": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "瞬间移动"
moveDirectly: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '瞬间移动'
},
"parallelDo": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "并行脚本"
parallelDo: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '并行脚本'
}
}
},
"ui": {
"_type": "object",
"_data": {
"getToolboxItems": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "道具栏显示项"
},
"drawStatusBar": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "自绘状态栏"
},
"drawStatistics": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "数据统计"
},
"drawAbout": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "关于界面"
}
ui: {
_type: 'object',
_data: {
drawStatistics: {
_leaf: true,
_type: 'textarea',
_lint: true,
_data: '数据统计'
}
}
}
}
};

View File

@ -125,13 +125,6 @@ actions.prototype._init = function () {
this._sys_longClick_lockControl,
50
);
// --- onStatusBarClick注册
this.registerAction(
'onStatusBarClick',
'_sys_onStatusBarClick',
this._sys_onStatusBarClick,
0
);
};
////// 注册一个用户交互行为 //////
@ -1050,24 +1043,6 @@ actions.prototype._sys_longClick_lockControl = function (x, y, px, py) {
return false;
};
actions.prototype.onStatusBarClick = function (e) {
if (!core.isPlaying()) return false;
var left = core.dom.gameGroup.offsetLeft + 3;
var top = core.dom.gameGroup.offsetTop + 3;
var px = parseInt((e.clientX - left) / core.domStyle.scale),
py = parseInt((e.clientY - top) / core.domStyle.scale);
return this.doRegisteredAction(
'onStatusBarClick',
Math.max(px, 0),
Math.max(py, 0)
);
};
actions.prototype._sys_onStatusBarClick = function (px, py, vertical) {
if (this.actionsdata.onStatusBarClick)
return this.actionsdata.onStatusBarClick(px, py, vertical);
};
/////////////////// 在某个界面时的按键点击效果 ///////////////////
actions.prototype._getChoicesTopIndex = function (length) {
@ -2992,10 +2967,8 @@ actions.prototype._clickGameInfo = function (x, y) {
case 3:
return core.ui._drawHelp();
case 4:
return core.ui._drawAbout();
case 5:
return this._clickGameInfo_download();
case 6:
case 5:
core.status.event.selection = 5;
core.playSound('取消');
core.ui._drawSettings();

View File

@ -2471,20 +2471,6 @@ control.prototype._replayAction_key = function (action) {
return true;
};
control.prototype._replayAction_click = function (action) {
if (action.indexOf('click:') != 0) return false;
var p = action.split(':');
if (p.length != 4) return false;
core.actions.doRegisteredAction(
'onStatusBarClick',
parseInt(p[2]),
parseInt(p[3]),
parseInt(p[1])
);
core.replay();
return true;
};
control.prototype._replayAction_ignoreInput = function (action) {
if (
action.indexOf('input:') == 0 ||
@ -3202,7 +3188,6 @@ control.prototype.setHeroLoc = function (name, value, noGather) {
if ((name == 'x' || name == 'y') && !noGather) {
this.gatherFollowers();
}
core.ui.drawStatusBar();
};
////// 获得勇士的位置 //////

View File

@ -3176,7 +3176,6 @@ ui.prototype._drawGameInfo = function () {
'查看工程',
'游戏主页',
'操作帮助',
'关于游戏',
'下载离线版本',
'返回主菜单'
]);
@ -3836,11 +3835,6 @@ ui.prototype._drawKeyBoard = function () {
);
};
////// 绘制状态栏 /////
ui.prototype.drawStatusBar = function () {
this.uidata.drawStatusBar();
};
////// 绘制“数据统计”界面 //////
ui.prototype._drawStatistics = function (floorIds) {
core.playSound('打开界面');
@ -4079,11 +4073,6 @@ ui.prototype._drawStatistics_generateText = function (obj, type, data) {
return text;
};
////// 绘制“关于”界面 //////
ui.prototype._drawAbout = function () {
return this.uidata.drawAbout();
};
////// 绘制帮助页面 //////
ui.prototype._drawHelp = function () {
core.playSound('打开界面');

View File

@ -715,15 +715,6 @@ main.prototype.listen = function () {
}
};
main.dom.statusCanvas.onclick = function (e) {
try {
e.preventDefault();
main.core.onStatusBarClick(e);
} catch (e) {
console.error(e);
}
};
////// 点击状态栏中的怪物手册时 //////
main.statusBar.image.book.onclick = function (e) {
e.stopPropagation();

View File

@ -1149,48 +1149,20 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
case 74: // J:打开技能树
core.useItem('skill1');
break;
case 56: // 8
core.useItem('wand');
break;
case 27: // ESC打开菜单栏
core.openSettings(true);
break;
case 88: // X使用怪物手册
if (!core.getFlag('fixToBook')) core.openBook(true);
else core.useItem('wand');
core.openBook(true);
break;
case 71: // G使用楼传器
core.useFly(true);
break;
case 65: // A读取自动存档回退
if (core.status.floorId != 'tower6') {
core.doSL('autoSave', 'load');
} else {
core.myconfirm(
'确定要读取自动存档吗读取后无法通过按W回退至现在',
function () {
core.doSL('autoSave', 'load');
},
function () {
return;
}
);
}
break;
case 87: // W撤销回退
if (core.status.floorId != 'tower6') {
core.doSL('autoSave', 'reload');
} else {
core.myconfirm(
'确定要撤销回退吗撤销后后无法通过按A回退至现在',
function () {
core.doSL('autoSave', 'reload');
},
function () {
return;
}
);
}
break;
case 83: // S存档
core.save(true);
@ -1278,62 +1250,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
}
}
break;
case 51: // 快捷键3: 飞
break;
case 52: // 快捷键4破冰/冰冻/地震/上下楼器/... 其他道具依次判断
{
var list = [
'icePickaxe',
'freezeBadge',
'earthquake',
'upFly',
'downFly',
'jumpShoes',
'lifeWand',
'poisonWine',
'weakWine',
'curseWine',
'superWine'
];
for (var i = 0; i < list.length; i++) {
var itemId = list[i];
if (core.canUseItem(itemId)) {
core.status.route.push('key:52');
core.useItem(itemId, true);
break;
}
}
}
break;
case 53: // 5读取自动存档回退方便手机版操作
if (core.status.floorId != 'tower6') {
core.doSL('autoSave', 'load');
} else {
core.myconfirm(
'确定要读取自动存档吗读取后无法通过按6回退至现在',
function () {
core.doSL('autoSave', 'load');
},
function () {
return;
}
);
}
break;
case 54: // 6撤销回退方便手机版操作
if (core.status.floorId != 'tower6') {
core.doSL('autoSave', 'reload');
} else {
core.myconfirm(
'确定要撤销回退吗撤销后后无法通过按5回退至现在',
function () {
core.doSL('autoSave', 'reload');
},
function () {
return;
}
);
}
break;
case 55: // 快捷键7绑定为轻按方便手机版操作
core.getNextItem();
@ -1341,55 +1262,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
case 118: // F7开启debug模式
core.debug();
break;
case 70: // F开启技能“二倍斩”
break;
// 在这里可以任意新增或编辑已有的快捷键内容
/*
case 0: // 使用该按键的keyCode
// 还可以再判定altKey是否被按下即 if (altKey) { ...
// ... 在这里写你要执行脚本
// **强烈建议所有新增的自定义快捷键均能给个对应的道具可点击,以方便手机端的行为**
if (core.hasItem('...')) {
core.status.route.push("key:0");
core.useItem('...', true); // 增加true代表该使用道具不计入录像
}
break;
*/
}
},
onStatusBarClick: function (px, py) {
// 点击状态栏时触发的事件,仅在自绘状态栏开启时生效
// px和py为点击的像素坐标
//
// 横屏模式下状态栏的画布大小是 149*480
// 竖屏模式下状态栏的画布大小是 480*(32*rows+9) 其中rows为状态栏行数即全塔属性中statusCanvasRowsOnMobile值
// 可以使用 core.domStyle.isVertical 来判定当前是否是竖屏模式
// 如果正在执行事件,则忽略
if (core.status.lockControl) return;
// 如果当前正在行走,则忽略;也可以使用 core.waitHeroToStop(callback) 来停止行走再回调执行脚本
if (core.isMoving()) return;
if (!core.domStyle.isVertical) {
if (px >= 20 && px <= 129 && py >= 320 && py <= 350) {
core.useItem('skill1');
}
if (px >= 20 && px <= 129 && py >= 280 && py <= 310) {
core.useItem('cross');
}
} else {
if (px >= 400 && px <= 430 && py >= 10 && py <= 95) {
core.useItem('skill1');
}
if (px >= 440 && px <= 470 && py >= 10 && py <= 95) {
core.useItem('cross');
}
}
// 判定px和py来执行自己的脚本内容.... 注意横竖屏
// 这里是直接打出点击坐标的例子。
// console.log("onStatusBarClick:", px, py);
}
},
control: {
@ -1514,52 +1387,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
// action获得还是解除'get'表示获得,'remove'表示解除
// type一个数组表示获得了哪些毒衰咒效果poison, weakcurse
if (!(type instanceof Array)) type = [type];
if (action == 'get') {
if (core.inArray(type, 'poison') && !core.hasFlag('poison')) {
// 获得毒效果
core.setFlag('poison', true);
}
if (core.inArray(type, 'weak') && !core.hasFlag('weak')) {
// 获得衰效果
core.setFlag('weak', true);
if (core.values.weakValue >= 1) {
// >=1直接扣数值
core.addStatus('atk', -core.values.weakValue);
core.addStatus('def', -core.values.weakValue);
} else {
// <1扣比例
core.addBuff('atk', -core.values.weakValue);
core.addBuff('def', -core.values.weakValue);
}
}
if (core.inArray(type, 'curse') && !core.hasFlag('curse')) {
// 获得咒效果
core.setFlag('curse', true);
}
} else if (action == 'remove') {
if (core.inArray(type, 'poison') && core.hasFlag('poison')) {
// 移除毒效果
core.setFlag('poison', false);
}
if (core.inArray(type, 'weak') && core.hasFlag('weak')) {
// 移除衰效果
core.setFlag('weak', false);
if (core.values.weakValue >= 1) {
// >=1直接扣数值
core.addStatus('atk', core.values.weakValue);
core.addStatus('def', core.values.weakValue);
} else {
// <1扣比例
core.addBuff('atk', core.values.weakValue);
core.addBuff('def', core.values.weakValue);
}
}
if (core.inArray(type, 'curse') && core.hasFlag('curse')) {
// 移除咒效果
core.setFlag('curse', false);
}
}
},
updateStatusBar: function () {
// 更新状态栏
@ -1567,125 +1394,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
// 检查等级
core.events.checkLvUp();
// 检查HP上限
if (core.flags.statusBarItems.indexOf('enableHPMax') >= 0) {
core.setStatus(
'hp',
Math.min(core.getStatus('hpmax'), core.getStatus('hp'))
);
}
// 设置楼层名
if (core.status.floorId) {
core.setStatusBarInnerHTML(
'floor',
core.status.maps[core.status.floorId].name
);
}
// 设置勇士名字和图标
core.setStatusBarInnerHTML('name', core.getStatus('name'));
// 设置等级名称
core.setStatusBarInnerHTML('lv', core.getLvName());
// 设置生命上限、生命值、攻防护盾金币和经验值
var statusList = [
'hpmax',
'hp',
'mana',
'atk',
'def',
'mdef',
'money',
'exp'
];
statusList.forEach(function (item) {
// 向下取整
core.status.hero[item] = Math.floor(core.status.hero[item]);
// 大数据格式化
core.setStatusBarInnerHTML(item, core.getRealStatus(item));
});
// 设置魔力值; status:manamax 只有在非负时才生效。
if (
core.status.hero.manamax != null &&
core.getRealStatus('manamax') >= 0
) {
core.status.hero.mana = Math.min(
core.status.hero.mana,
core.getRealStatus('manamax')
);
core.setStatusBarInnerHTML(
'mana',
core.status.hero.mana + '/' + core.getRealStatus('manamax')
);
} else {
core.setStatusBarInnerHTML('mana', core.status.hero.mana);
}
// 设置技能栏
// 可以用flag:skill表示当前开启的技能类型flag:skillName显示技能名详见文档-个性化-技能塔的支持
core.setStatusBarInnerHTML(
'skill',
core.getFlag('skillName', '无')
);
// 可以在这里添加自己额外的状态栏信息,比如想攻击显示 +0.5 可以这么写:
// if (core.hasFlag('halfAtk')) core.setStatusBarInnerHTML('atk', core.statusBar.atk.innerText + "+0.5");
// 如果是自定义添加的状态栏,也需要在这里进行设置显示的数值
// 进阶
if (
core.flags.statusBarItems.indexOf('enableLevelUp') >= 0 &&
core.status.hero.lv < core.firstData.levelUp.length
) {
var need = core.calValue(
core.firstData.levelUp[core.status.hero.lv].need
);
if (core.flags.statusBarItems.indexOf('levelUpLeftMode') >= 0)
core.setStatusBarInnerHTML(
'up',
core.formatBigNumber(need - core.getStatus('exp')) || ''
);
else
core.setStatusBarInnerHTML(
'up',
core.formatBigNumber(need) || ''
);
} else core.setStatusBarInnerHTML('up', '');
// 钥匙
var keys = ['yellowKey', 'blueKey', 'redKey', 'greenKey'];
keys.forEach(function (key) {
core.setStatusBarInnerHTML(
key,
core.setTwoDigits(core.itemCount(key))
);
});
// 毒衰咒
core.setStatusBarInnerHTML(
'poison',
core.hasFlag('poison') ? '毒' : ''
);
core.setStatusBarInnerHTML(
'weak',
core.hasFlag('weak') ? '衰' : ''
);
core.setStatusBarInnerHTML(
'curse',
core.hasFlag('curse') ? '咒' : ''
);
// 破炸飞
core.setStatusBarInnerHTML(
'pickaxe',
'破' + core.itemCount('pickaxe')
);
core.setStatusBarInnerHTML('bomb', '炸' + core.itemCount('bomb'));
core.setStatusBarInnerHTML(
'fly',
'飞' + core.itemCount('centerFly')
);
// 难度
if (core.statusBar.hard.innerText != core.status.hard) {
core.statusBar.hard.innerText = core.status.hard;
@ -1695,8 +1405,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
core.statusBar.hard.style.color = hardColor;
core.statusBar.hard.setAttribute('_style', hardColor);
}
// 自定义状态栏绘制
core.drawStatusBar();
// 更新阻激夹域的伤害值
core.updateCheckBlock();
@ -1902,32 +1610,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
}
}
// 捕捉
// 如果要防止捕捉效果,可以直接简单的将 flag:no_ambush 设为true
if (
enemy &&
core.enemys.hasSpecial(enemy.special, 27) &&
!core.hasFlag('no_ambush')
) {
// 给周围格子加上【捕捉】记号
for (var dir in core.utils.scan) {
var nx = x + core.utils.scan[dir].x,
ny = y + core.utils.scan[dir].y,
currloc = nx + ',' + ny;
if (
nx < 0 ||
nx >= width ||
ny < 0 ||
ny >= height ||
!core.canMoveHero(x, y, dir, floorId)
)
continue;
ambush[currloc] = (ambush[currloc] || []).concat([
[x, y, id, dir]
]);
}
}
// 夹击;在这里提前计算所有可能的夹击点,具体计算逻辑在下面
// 如果要防止夹击伤害,可以简单的将 flag:no_betweenAttack 设为true
if (
@ -2026,13 +1708,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
}
}
// 取消注释下面这一段可以让护盾抵御阻激夹域伤害
/*
for (var loc in damage) {
damage[loc] = Math.max(0, damage[loc] - core.getRealStatus('mdef'));
}
*/
core.flags.canGoDeadZone = canGoDeadZone;
core.status.checkBlock = {
damage: damage,
@ -2084,9 +1759,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
// 执行目标点的阻激夹域事件
core.checkBlock();
// 执行目标点的script和事件
if (core.status.floorId == 'tower6')
core.setMapBlockDisabled('tower6', nowx, nowy, false);
if (!hasTrigger) core.trigger(nowx, nowy, callback);
// 检查该点是否是滑冰
@ -2234,14 +1906,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
if (ignoreSteps == null) ignoreSteps = core.canMoveDirectly(x, y);
if (core.status.checkBlock.haveHunt) return false;
if (ignoreSteps >= 0) {
// 中毒也允许瞬移
if (core.hasFlag('poison')) {
var damage = ignoreSteps * core.values.poisonDamage;
if (damage >= core.status.hero.hp) return false;
core.status.hero.statistics.poisonDamage += damage;
core.status.hero.hp -= damage;
}
core.clearMap('hero');
// 获得勇士最后的朝向
var lastDirection =
@ -2284,25 +1948,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
}
},
ui: {
getToolboxItems: function (cls) {
// 获得道具栏中当前某类型道具的显示项和显示顺序
// cls为道具类型只可能是 tools, constants 和 equips
// 返回一个数组,代表当前某类型道具的显示内容和顺序
// 默认按id升序排列您可以取消下面的注释改为按名称排列
//
// 用不到这个东西
},
drawStatusBar: function () {
// 自定义绘制状态栏需要开启状态栏canvas化
// 作为样板,只绘制楼层、生命、攻击、防御、护盾、金币、钥匙这七个内容
// 需要其他的请自行进行修改;横竖屏都需要进行适配绘制。
// 可以使用Chrome浏览器开控制台来模拟手机上的竖屏模式的显示效果具体方式自行百度
// 横屏模式下的画布大小是 149*480
// 竖屏模式下的画布大小是 480*(32*rows+9) 其中rows为状态栏行数即全塔属性中statusCanvasRowsOnMobile值
// 可以使用 core.domStyle.isVertical 来判定当前是否是竖屏模式
//
// 这里不需要写任何东西状态栏全在vue里面
},
drawStatistics: function () {
// 浏览地图时参与的统计项目
@ -2352,62 +1997,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
'shield5'
// 在这里可以增加新的ID来进行统计个数只能增加道具ID
];
},
drawAbout: function () {
// 绘制“关于”界面
core.ui.closePanel();
core.lockControl();
core.status.event.id = 'about';
var left = 52,
top = 68,
right = core.__PIXELS__ - 2 * left,
bottom = core.__PIXELS__ - 2 * top;
core.setAlpha('ui', 0.85);
core.fillRect('ui', left, top, right, bottom, '#000000');
core.setAlpha('ui', 1);
core.strokeRect(
'ui',
left - 1,
top - 1,
right + 1,
bottom + 1,
'#FFFFFF',
2
);
var text_start = left + 24;
// 名称
core.setTextAlign('ui', 'left');
var globalAttribute =
core.status.globalAttribute || core.initStatus.globalAttribute;
core.fillText(
'ui',
'HTML5 魔塔样板',
text_start,
top + 35,
globalAttribute.selectColor,
'bold 22px ' + globalAttribute.font
);
core.fillText(
'ui',
'版本: ' + main.__VERSION__,
text_start,
top + 80,
'#FFFFFF',
'bold 17px ' + globalAttribute.font
);
core.fillText('ui', '作者: 艾之葵', text_start, top + 112);
core.fillText(
'ui',
'HTML5魔塔交流群539113091',
text_start,
top + 112 + 32
);
// TODO: 写自己的“关于”页面每次增加32像素即可
core.playSound('打开界面');
}
}
};

View File

@ -6,7 +6,8 @@
"这里显示本塔中需要注意的事项。",
"<br>",
"<br>",
"1. <span style=\"color: yellow\">本百科全书字数很多,可以选择性地阅读。</span>",
"1. <span style=\"color: yellow; font-weight: 700\">",
"本百科全书字数很多,可以选择性地阅读。</span>",
"<br>",
"<br>",
"2. 本塔中<span style=\"color: gold\">几乎所有 ui </span>都可以纵向滚动,如果发现显示不全,",
@ -78,7 +79,7 @@
"勇士的金币,可以用于购买物品。本塔中在进入第二章后会有用",
"<br>",
"<span style=\"color: lightgreen\">6. 护盾</span>",
"勇士的护盾,用处是能够在战后减少同等数值的伤害,可以使伤害变为负值。本塔中,在点开无上之盾技能后,",
"勇士的护盾,用处是能够在战后减少同等数值的伤害,在本塔中可以使伤害变为负值。本塔中,在点开无上之盾技能后,",
"智慧会充当护盾。更多信息可以查看“勇士属性”条目。"
]
},
@ -287,8 +288,7 @@
"<br>",
"<br>",
"点击一个怪物或者按下回车空格后,将进入怪物详细信息界面。这个界面分为多个栏,分别是特殊属性栏,详细临界栏,更多信息栏。",
"进入怪物详细信息后默认在特殊属性栏,该栏可以查看怪物的特殊属性。<span style=\"color: gold\">",
"同时也是唯一一个会在点击屏幕后会返回到怪物手册界面的栏,更多信息请查看本条目的最后一段</span>。",
"进入怪物详细信息后默认在特殊属性栏,该栏可以查看怪物的特殊属性。",
"注意特殊属性依然可以纵向滚动。在特殊属性下方,",
"是怪物的临界表,可以粗略地查看怪物的临界信息。在下方,你可以点击详细临界信息进入详细临界栏。",
"<br>",

View File

@ -5,14 +5,6 @@ interface ActionData {
* @param altKey alt键
*/
onKeyUp(keyCode: number, altKey: boolean): boolean;
/**
*
* @param px
* @param py
* @param vertical
*/
onClickStatusBar(px: number, py: number, vertical: boolean): boolean;
}
interface ControlData {
@ -125,26 +117,10 @@ interface EnemyData {
}
interface UiData {
/**
*
* @param cls
*/
getToolboxItems<T extends Exclude<ItemCls, 'items'>>(cls: T): ItemIdOf<T>[];
/**
*
*/
drawStatusBar(): void;
/**
*
*/
drawStatistics(): AllIdsOf<'items'>[];
/**
*
*/
drawAbout(): void;
}
interface EventData {

5
src/types/ui.d.ts vendored
View File

@ -755,11 +755,6 @@ interface Ui {
*/
getToolboxItems<T extends Exclude<ItemCls, 'items'>>(cls: T): ItemIdOf<T>[];
/**
*
*/
drawStatusBar(): void;
/**
*
* @param name