mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-01-19 04:19:30 +08:00
完善技能树和百科全书
This commit is contained in:
parent
e24fb961b8
commit
6292bf2df7
4
idea.md
4
idea.md
@ -17,8 +17,6 @@
|
|||||||
|
|
||||||
玩法:一个会转动的圆盘,带有一个伸出去的把手,boss 从四面八方射子弹,当子弹恰好落到把手前端时,点击按键或屏幕,可以抵挡子弹,简单难度 3 条命,困难 1 条。简单难度音符密度低。困难难度为冰与火之舞的节奏。简单难度判定时间为前后各 100ms,困难为 50ms
|
玩法:一个会转动的圆盘,带有一个伸出去的把手,boss 从四面八方射子弹,当子弹恰好落到把手前端时,点击按键或屏幕,可以抵挡子弹,简单难度 3 条命,困难 1 条。简单难度音符密度低。困难难度为冰与火之舞的节奏。简单难度判定时间为前后各 100ms,困难为 50ms
|
||||||
|
|
||||||
### 第三章 战争
|
|
||||||
|
|
||||||
## 主角
|
## 主角
|
||||||
|
|
||||||
- 反抢夺:1 级反 1.0,2 级反 2.0,3 级反 3.0,用智慧点点
|
- 反抢夺:1 级反 1.0,2 级反 2.0,3 级反 3.0,用智慧点点
|
||||||
@ -26,6 +24,8 @@
|
|||||||
- 铸剑为盾:主动技能,减少攻击,增加防御
|
- 铸剑为盾:主动技能,减少攻击,增加防御
|
||||||
- 血之代偿:消耗一定血量,战前对怪物造成同等数值的伤害
|
- 血之代偿:消耗一定血量,战前对怪物造成同等数值的伤害
|
||||||
|
|
||||||
|
### 第三章 战争
|
||||||
|
|
||||||
## 机制
|
## 机制
|
||||||
|
|
||||||
### 通用
|
### 通用
|
||||||
|
@ -77,7 +77,10 @@ items.prototype.getItemEffectTip = function (itemId) {
|
|||||||
////// 使用道具 //////
|
////// 使用道具 //////
|
||||||
items.prototype.useItem = function (itemId, noRoute, callback) {
|
items.prototype.useItem = function (itemId, noRoute, callback) {
|
||||||
const ignore = ['I560', 'I559'];
|
const ignore = ['I560', 'I559'];
|
||||||
if (!this.canUseItem(itemId) || ignore.includes(itemId)) {
|
if (
|
||||||
|
!this.canUseItem(itemId) ||
|
||||||
|
(ignore.includes(itemId) && core.isReplaying())
|
||||||
|
) {
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -86,7 +89,8 @@ items.prototype.useItem = function (itemId, noRoute, callback) {
|
|||||||
// 执行完毕
|
// 执行完毕
|
||||||
this._afterUseItem(itemId);
|
this._afterUseItem(itemId);
|
||||||
// 记录路线
|
// 记录路线
|
||||||
if (!noRoute) core.status.route.push('item:' + itemId);
|
if (!noRoute && !ignore.includes(itemId))
|
||||||
|
core.status.route.push('item:' + itemId);
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -131,6 +131,7 @@ main.floors.MT6=
|
|||||||
"你可以通过拾取绿宝石来获取智慧,拥有足够的智慧后请尽快加点",
|
"你可以通过拾取绿宝石来获取智慧,拥有足够的智慧后请尽快加点",
|
||||||
"合理分配技能是该塔的关键,所以请加点时慎重选择",
|
"合理分配技能是该塔的关键,所以请加点时慎重选择",
|
||||||
"按J或者点击状态栏的技能树可以打开技能树",
|
"按J或者点击状态栏的技能树可以打开技能树",
|
||||||
|
"现在技能树已经可以在百科全书中查看",
|
||||||
"祝您游戏愉快!",
|
"祝您游戏愉快!",
|
||||||
{
|
{
|
||||||
"type": "openDoor",
|
"type": "openDoor",
|
||||||
|
@ -29,7 +29,15 @@ function popValue() {
|
|||||||
// 绘制
|
// 绘制
|
||||||
if (one.frame >= 60) core.setAlpha(ctx, 3 - one.frame / 30);
|
if (one.frame >= 60) core.setAlpha(ctx, 3 - one.frame / 30);
|
||||||
else core.setAlpha(ctx, 1);
|
else core.setAlpha(ctx, 1);
|
||||||
core.fillBoldText(ctx, one.value, one.px, one.py);
|
core.fillBoldText(
|
||||||
|
ctx,
|
||||||
|
one.value,
|
||||||
|
one.px,
|
||||||
|
one.py,
|
||||||
|
'#f22',
|
||||||
|
'#000',
|
||||||
|
'24px normal'
|
||||||
|
);
|
||||||
if (one.frame >= 90) count++;
|
if (one.frame >= 90) count++;
|
||||||
});
|
});
|
||||||
if (count > 0) pop.splice(0, count);
|
if (count > 0) pop.splice(0, count);
|
||||||
|
@ -2,13 +2,14 @@
|
|||||||
<Colomn @close="exit" :width="80" :height="80" :left="30" :right="70"
|
<Colomn @close="exit" :width="80" :height="80" :left="30" :right="70"
|
||||||
><template #left
|
><template #left
|
||||||
><div id="desc-list">
|
><div id="desc-list">
|
||||||
<span
|
<div
|
||||||
v-for="(data, k) in desc"
|
v-for="(data, k) in desc"
|
||||||
class="selectable desc-item"
|
class="selectable desc-item"
|
||||||
:selected="selected === k"
|
:selected="selected === k"
|
||||||
@click="selected = k"
|
@click="click(k)"
|
||||||
>{{ data.text }}</span
|
|
||||||
>
|
>
|
||||||
|
<span v-if="show(data.condition)">{{ data.text }}</span>
|
||||||
|
</div>
|
||||||
</div></template
|
</div></template
|
||||||
>
|
>
|
||||||
<template #right><span v-html="content"></span></template
|
<template #right><span v-html="content"></span></template
|
||||||
@ -32,6 +33,15 @@ function exit() {
|
|||||||
const content = computed(() => {
|
const content = computed(() => {
|
||||||
return splitText(desc[selected.value].desc);
|
return splitText(desc[selected.value].desc);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function click(key: DescKey) {
|
||||||
|
if (!eval(desc[key].condition)) return;
|
||||||
|
selected.value = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
function show(condition: string) {
|
||||||
|
return eval(condition);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
@ -46,5 +56,6 @@ const content = computed(() => {
|
|||||||
|
|
||||||
.desc-item {
|
.desc-item {
|
||||||
padding: 1% 3% 1% 3%;
|
padding: 1% 3% 1% 3%;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -168,17 +168,19 @@ function draw() {
|
|||||||
const d = dict.value;
|
const d = dict.value;
|
||||||
const w = canvas.width;
|
const w = canvas.width;
|
||||||
const per = w / 11;
|
const per = w / 11;
|
||||||
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||||
skills.value.forEach(v => {
|
skills.value.forEach(v => {
|
||||||
const [x, y] = v.loc.map(v => v * 2 - 1);
|
const [x, y] = v.loc.map(v => v * 2 - 1);
|
||||||
// 技能连线
|
// 技能连线
|
||||||
v.front.forEach(([skill]) => {
|
v.front.forEach(([skill], i) => {
|
||||||
const s = skills.value[d[skill]];
|
const s = skills.value[d[skill]];
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
ctx.moveTo(x * per + per / 2, y * per + per / 2);
|
ctx.moveTo(x * per + per / 2, y * per + per / 2);
|
||||||
ctx.lineTo(
|
ctx.lineTo(
|
||||||
...(s.loc.map(v => (v * 2 - 1) * per + per / 2) as LocArr)
|
...(s.loc.map(v => (v * 2 - 1) * per + per / 2) as LocArr)
|
||||||
);
|
);
|
||||||
if (core.getSkillLevel(s.index) === 0) ctx.strokeStyle = '#aaa';
|
if (core.getSkillLevel(s.index) < v.front[i][1])
|
||||||
|
ctx.strokeStyle = '#aaa';
|
||||||
else ctx.strokeStyle = '#0f8';
|
else ctx.strokeStyle = '#0f8';
|
||||||
ctx.lineWidth = devicePixelRatio;
|
ctx.lineWidth = devicePixelRatio;
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
@ -249,6 +251,7 @@ function selectChapter(delta: number) {
|
|||||||
font-size: 2.8vh;
|
font-size: 2.8vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#skill-title {
|
#skill-title {
|
||||||
|
Loading…
Reference in New Issue
Block a user