mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-01-18 20:09:27 +08:00
优化百科全书的说明
This commit is contained in:
parent
25b87669ce
commit
427242c430
@ -18,32 +18,23 @@ main.floors.MT12=
|
||||
"parallelDo": "",
|
||||
"events": {
|
||||
"7,1": [
|
||||
"\t[原始人]\b[down,hero]欸,杰克兄弟,你怎么在这啊",
|
||||
"\t[杰克,thief]\b[down,7,1]啊,是你呀",
|
||||
"\t[杰克,thief]\b[down,7,1]我刚刚被一群怪物追杀,就逃到这里了",
|
||||
"\t[杰克,thief]\b[down,7,1]很奇怪,为什么这几天有这么多凶猛的怪物啊",
|
||||
"\t[原始人]\b[down,hero]不知道,我记得上一次这样,还是在老虎们在山间找不到食物,下山觅食的时候吧",
|
||||
"\t[原始人]\b[down,hero]难道说山上发生了什么灾害吗",
|
||||
"\t[杰克,thief]\b[down,7,1]好像有吧",
|
||||
"\t[杰克,thief]\b[down,7,1]我前几天还看见一道雷准准地劈在了山顶上",
|
||||
"\t[原始人]\b[down,hero]难道是山火吗",
|
||||
"\t[原始人]\b[down,hero]不对呀,山火的话我怎么没看见烟啊",
|
||||
"\t[杰克,thief]\b[down,7,1]不清楚,反正上面发生了我们不知道的事",
|
||||
"\t[原始人]\b[down,hero](这山上肯定发生了什么不得了的好事,我去了说不定还能找到不少好东西呢)",
|
||||
"\t[原始人]\b[down,hero]我要去山上走一遭",
|
||||
"\t[杰克,thief]\b[down,7,1]哈?",
|
||||
"\t[杰克,thief]\b[down,7,1]兄弟,你不是在骗我吧",
|
||||
"\t[杰克,thief]\b[down,7,1]山上这么危险,去了难道不是死路一条?",
|
||||
"\t[原始人]\b[down,hero]我最近力量提升很快,所以你不用担心我",
|
||||
"\t[杰克,thief]\b[down,7,1]但山上的怪物的强大你也知道,我们十来个人一起去打一个都被打得落荒而逃",
|
||||
"\t[原始人]\b[down,hero](我要不要把绿宝石的事告诉他呢?这一路上有很多绿宝石,他却没有提到,难道他看不见吗?)",
|
||||
"\t[原始人]\b[down,hero](感觉事情很奇怪,还是别告诉他了吧)",
|
||||
"\t[原始人]\b[down,hero]我有特殊的方法保命,你不需要操心太多",
|
||||
"\t[杰克,thief]\b[down,7,1]那看来我也拦不住你了",
|
||||
"\t[杰克,thief]\b[down,7,1]山地那边有一个地方被突然凸起来的高地挡着",
|
||||
"\t[杰克,thief]\b[down,7,1]我就把我新学的技能教给你吧",
|
||||
"\t[原始人]\b[down,hero]杰克?你怎么在这?",
|
||||
"\t[杰克,thief]\b[down,7,1]我刚刚出山洞,就发现了一堆怪物。",
|
||||
"\t[杰克,thief]\b[down,7,1]那些怪物冲着我就跑过来,我根本打不过他们。",
|
||||
"\t[杰克,thief]\b[down,7,1]我就跑到了这里。",
|
||||
"\t[杰克,thief]\b[down,7,1]多谢你救了我。",
|
||||
"\t[原始人]\b[down,hero]不用多谢了,咱都是兄弟的。",
|
||||
"\t[杰克,thief]\b[down,7,1]你来这里是要干什么?",
|
||||
"\t[原始人]\b[down,hero](他好像没有注意到绿色结晶,就不要提这件事了吧)",
|
||||
"\t[原始人]\b[down,hero]我要上山砍一些柴火。",
|
||||
"\t[原始人]\b[down,hero]但是上山的路被强大的怪物堵死了,我根本上不去。",
|
||||
"\t[杰克,thief]\b[down,7,1]这样啊。",
|
||||
"\t[杰克,thief]\b[down,7,1]正好,我最近学会了一招,能让你避开那些怪物,我来教给你吧!",
|
||||
"获得技能:跳跃\n快捷键2,消耗200点生命值,困难消耗400点,一个地图只能使用3次\n如果前方为可通行的地面,则不能使用该技能\n如果前方为怪物,则将怪物移至勇士视线上第一个不能通行的方块后\n如果前方为障碍物,则直接跳到该障碍物的后方",
|
||||
"\t[原始人]\b[down,hero]多谢兄弟了!",
|
||||
"\t[原始人]\b[down,hero]多谢杰克兄弟了啊。",
|
||||
"\t[杰克,thief]\b[down,7,1]不过还是要小心山上的那些怪物,那些怪物都很强。",
|
||||
"\t[原始人]\b[down,hero]我明白,但是我必须上山,不然都要饿死冻死了。",
|
||||
"\t[杰克,thief]\b[down,7,1]那我就不打扰你了,咱们之后再见。",
|
||||
"去南方那个之前过不去的地方推进游戏剧情",
|
||||
"手机端可以点击右下角的难度来切换下方工具栏至数字键",
|
||||
{
|
||||
|
@ -1,4 +1,30 @@
|
||||
{
|
||||
"tip": {
|
||||
"text": "注意事项",
|
||||
"condition": "true",
|
||||
"desc": [
|
||||
"这里显示本塔中需要注意的事项。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"1. 本塔中<span style=\"color: gold\">几乎所有 ui </span>都可以纵向滚动,如果发现显示不全,",
|
||||
"可以尝试上下拖动,就像浏览网页一样。电脑端还可以使用滚轮上下滚动。",
|
||||
"大部分可以纵向滚动的 ui 都会在右方有一个滚动条,也可以拖动它进行滚动,例如本百科全书的条目列表和",
|
||||
"条目说明都是可以通过上述方式滚动的。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"2. 本百科全书的内容会<span style=\"color: gold\">随着游戏的推进而增加新内容</span>,",
|
||||
"同时每次增加新内容时都会有提示。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"3. 本塔主要面向电脑端设计,",
|
||||
"<span style=\"color: gold\">建议使用电脑游玩以获得更好的游戏体验</span>。但是手机依然可以游玩本塔,",
|
||||
"但部分操作可能不是很方便,ui 也可能不是很美观,不过依然可以完整体验本游戏。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"4. 对于手机端,可以点击<span style=\"color: gold\">右下角的难度文字</span>来切换工具栏至数字键。",
|
||||
"这样,你可以更加方便地进行使用技能等操作。"
|
||||
]
|
||||
},
|
||||
"statusBar": {
|
||||
"text": "状态栏",
|
||||
"condition": "true",
|
||||
@ -60,8 +86,8 @@
|
||||
"<br>",
|
||||
"1. 打开怪物手册,选中怪物,进入怪物更多信息栏,点击标记怪物。",
|
||||
"<br>",
|
||||
"2. 将鼠标移动到你想要标记的怪物上面,按下<span style=\"color: gold\">",
|
||||
"M键</span>,即可标记怪物,注意浏览地图中不能用该方式标记。",
|
||||
"2. 将鼠标移动到你想要标记的怪物上面,<span style=\"color: gold\">",
|
||||
"按下M键</span>,即可标记怪物,注意浏览地图中不能用该方式标记。",
|
||||
"手机端暂时没有快速标记怪物的方式。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
@ -99,20 +125,27 @@
|
||||
"<br>",
|
||||
"<br>",
|
||||
"点击一个怪物或者按下回车空格后,将进入怪物详细信息界面。这个界面分为多个栏,分别是特殊属性栏,详细临界栏,更多信息栏。",
|
||||
"进入怪物详细信息后默认在特殊属性栏,该栏可以查看怪物的特殊属性。注意特殊属性依然可以纵向滚动。在特殊属性下方,",
|
||||
"进入怪物详细信息后默认在特殊属性栏,该栏可以查看怪物的特殊属性。<span style=\"color: gold\">",
|
||||
"同时也是唯一一个会在点击后返回到怪物手册界面的栏,更多信息请查看本条目的最后一段</span>。",
|
||||
"注意特殊属性依然可以纵向滚动。在特殊属性下方,",
|
||||
"是怪物的临界表,可以粗略地查看怪物的临界信息。在下方,你可以点击详细临界信息进入详细临界栏。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"在详细临界栏中,怪物的伤害会以可视化折线图的方式显示出来,从而你可以更为清晰地看出怪物减伤趋势。",
|
||||
"除了查看怪物伤害曲线,你还可以规划宝石。每个折线图下方都有一个滑动条,你可以拖动来模拟吃宝石。",
|
||||
"注意,拖动时,滑动条左边会显示当前的加攻或加防次数,这个数值指的是在勇士所在地图中需要吃的宝石数量。",
|
||||
"例如,当前勇士所在地图中一个宝石最低加2点攻击,加攻次数为3,那么勇士的攻击增加量就为6。",
|
||||
"注意,拖动时,滑动条左边会显示当前的加攻或加防次数,这个数值指的是在勇士所在地图中需要吃的最弱的宝石数量。",
|
||||
"例如,当前勇士所在地图中最弱的宝石加2点攻击,加攻次数为3,那么勇士的攻击增加量就为6。",
|
||||
"勇士增加的攻击数值也会在下方显示。当加攻次数和加防次数改变时,折线图也会变化。",
|
||||
"当前状态下怪物的伤害以及减伤总量也会在下方显示。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"在特殊属性栏,点击下方的怪物更多信息可以进入更多信息栏。此栏中,你可以查看怪物描述。但这不是这一栏的核心功能。",
|
||||
"这一栏的核心功能是标记怪物。被标记的怪物会有一些非常方便的行为,这些行为可以在“标记怪物”说明中查看。"
|
||||
"这一栏的核心功能是标记怪物。被标记的怪物会有一些非常方便的行为,这些行为可以在“标记怪物”条目中查看。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"注意,在怪物详细信息中,只有特殊属性栏可以通过点击返回到怪物手册界面,详细临界与更多信息栏均不行。",
|
||||
"如果你是电脑端,在任意栏目中<span style=\"color: gold\">按下X键</span>会退出怪物手册,返回游戏,",
|
||||
"<span style=\"color: gold\">按下回车(Enter)键</span>会回到怪物手册界面。"
|
||||
]
|
||||
},
|
||||
"tools": {
|
||||
@ -153,13 +186,14 @@
|
||||
"<span style=\"color: lightgreen\">2. 生命回复</span>:",
|
||||
"生命回复指的是勇士每回合回复的生命值。当与怪物战斗时,勇士每回合都会回复对应量的生命值。因此,当吃攻击时,",
|
||||
"与怪物战斗的回合数可能会减少,导致生命回复的总回复量减少。不过大部分情况下不需要在意这一点,",
|
||||
"减少一回合并不会对吸的血造成很大的影响。该项会显示在状态栏的生命值右方偏下的位置",
|
||||
"减少一回合并不会对吸的血造成很大的影响,除了一些特殊情况。",
|
||||
"该项会显示在状态栏的生命值右方偏下的位置。",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"<span style=\"color: lightcoral\">3. 额外攻击</span>:",
|
||||
"额外攻击指的是勇士每回合的额外造成的伤害。一般情况下,当勇士破了怪物的防御时,该项便会起作用。",
|
||||
"额外攻击相当于魔攻,无法通过一般方式减免。当勇士攻击怪物时,每回合都会附加对应量的伤害,对坚固怪同样有效。",
|
||||
"额外攻击会显示在状态栏的攻击右方偏下的位置"
|
||||
"额外攻击会显示在状态栏的攻击右方偏下的位置。"
|
||||
]
|
||||
},
|
||||
"skillTree": {
|
||||
@ -176,7 +210,7 @@
|
||||
"<br>",
|
||||
"<br>",
|
||||
"打开技能树页面后,你可以在上方看到技能的名称与描述,下方会显示技能树,以及升级要求等。点击一个技能可以选中技能,",
|
||||
"再次点击可以升级技能。",
|
||||
"再次点击可以升级技能。注意,前置技能栏可以上下滚动,因此如果发现显示不全,可以尝试上下滚动前置技能栏",
|
||||
"<br>",
|
||||
"<br>",
|
||||
"注意,技能在点开之后是无法取消的,因此,加点时请慎重加点。注意,部分技能是必点技能,这些技能会在技能说明中明确指出,",
|
||||
|
@ -1,17 +1,26 @@
|
||||
import { has } from '../utils';
|
||||
|
||||
export default function init() {
|
||||
return { splitArea };
|
||||
}
|
||||
|
||||
type BFSFromString = `${FloorIds},${number},${number},${Dir}`;
|
||||
type BFSToString = `${FloorIds},${number},${number}`;
|
||||
|
||||
interface MapBFSResult {
|
||||
maps: FloorIds[];
|
||||
link: Record<
|
||||
`${FloorIds}_${number}_${number}_${Dir}`,
|
||||
`${FloorIds}_${number}_${number}`
|
||||
>;
|
||||
link: Record<BFSFromString, BFSToString>;
|
||||
}
|
||||
|
||||
const bfsCache: Partial<Record<FloorIds, MapBFSResult>> = {};
|
||||
|
||||
const arrow: Partial<Record<AllIds, Dir>> = {
|
||||
leftPortal: 'left',
|
||||
rightPortal: 'right',
|
||||
upPortal: 'up',
|
||||
downPortal: 'down'
|
||||
};
|
||||
|
||||
export function splitArea() {}
|
||||
|
||||
export function getMapData(floorId: FloorIds) {}
|
||||
@ -23,13 +32,42 @@ export function getMapDrawData(floorId: FloorIds) {}
|
||||
* @param floorId 中心楼层id
|
||||
* @param noCache 是否不使用缓存
|
||||
*/
|
||||
function bfs(floorId: FloorIds, noCache: boolean = false) {
|
||||
if (bfsCache[floorId] && !noCache) return bfsCache[floorId];
|
||||
function bfs(floorId: FloorIds, noCache: boolean = false): MapBFSResult {
|
||||
if (has(bfsCache[floorId]) && !noCache) return bfsCache[floorId]!;
|
||||
|
||||
const queue = [floorId];
|
||||
const used: Partial<Record<FloorIds, boolean>> = {};
|
||||
const used: Partial<Record<FloorIds, boolean>> = {
|
||||
[floorId]: true
|
||||
};
|
||||
const floors = [floorId];
|
||||
const link: Record<BFSFromString, BFSToString> = {};
|
||||
|
||||
while (queue.length > 0) {
|
||||
const now = queue.shift()!;
|
||||
const change = core.floors[now].changeFloor;
|
||||
const blocks = core.getMapBlocksObj(now);
|
||||
for (const [loc, ev] of Object.entries(change)) {
|
||||
const target = ev.floorId as FloorIds;
|
||||
if (target.startsWith(':')) continue;
|
||||
const block = blocks[loc as LocString];
|
||||
const id = block.event.id;
|
||||
if (id in arrow) {
|
||||
const from = `${now},${loc},${arrow[id]}` as BFSFromString;
|
||||
const to = `${target},${ev.loc![0]},${
|
||||
ev.loc![1]
|
||||
}` as BFSToString;
|
||||
link[from] = to;
|
||||
if (!used[target]) {
|
||||
queue.push(target);
|
||||
floors.push(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
used[now] = true;
|
||||
}
|
||||
|
||||
return {
|
||||
maps: floors,
|
||||
link
|
||||
};
|
||||
}
|
||||
|
2
src/types/map.d.ts
vendored
2
src/types/map.d.ts
vendored
@ -23,7 +23,7 @@ type CompressedMap<T extends FloorIds = FloorIds> = Omit<
|
||||
NotCopyPropertyInCompressedMap
|
||||
>;
|
||||
|
||||
interface Block<N extends AllNumbers = AllNumbers> {
|
||||
interface Block<N extends Exclude<AllNumbers, 0> = Exclude<AllNumbers, 0>> {
|
||||
/**
|
||||
* 横坐标
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user