refactor: update doc and .d.ts

This commit is contained in:
hyper 2026-04-16 17:14:13 +08:00
parent 693c279e0f
commit a010a0bca6
8 changed files with 109 additions and 60 deletions

View File

@ -1,4 +1,4 @@
# slay the spire + backpack heroes
# 杀戮尖塔 + 背包英雄
玩家有4x6的背包
@ -6,68 +6,113 @@
战斗时玩杀戮尖塔
## Roguelike structure
## 肉鸽结构
Zone based Point Crawl:
- 分4个区域每个区域有独立的随机遭遇池
- 遭遇分为随机遭遇、战斗、服务
- 随机遭遇使用d6双阶段结构
- 战斗遭遇分简单和困难,困难可以绕
- 服务遭遇分商店(恢复/卖装备/附魔)篝火(恢复/补充药水/下次战斗buff奇遇随机奖励/风险事件)
区域点到点地图
- 分4个区域每个区域有独立的随机遭遇池目前先考虑第一个区域
- 每区域10层26个遭遇节点
- 荒野层6层×3节点小怪50%/精英25%/事件25%
- 聚落层2层×4节点≥1篝火/≥1商店/≥1奇遇第4随机
- 起点→终点终点为boss战
- 分支1-3-3-4-3-3-4-3-3-1
## 战斗
## 战斗小怪、精英、boss
典中典5手牌3费每个格子1张牌同一装备牌逻辑相同但根据邻接吃到的牌buff不同
基本流程
- 怪物战斗开始效应
- 玩家战斗开始效应
- 重复直至一方不剩下存活角色
- 玩家回合
- 怪物回合
3种牌攻击/防御/强化攻击克强化克防御克攻击强化比sts强化窄但效果更大
怪物战斗开始
- 获得初始buff、初始血量、初始意图
洗牌堆时洗入两张《疲劳》1费/消耗)
玩家战斗开始
- 获得3点能量抓5张手牌
背包物品可能会引用相邻的物品、同一行的物品、同一列的物品等
玩家回合
- buff更新阶段临时buff消失、延时buff-1层
- 回合开始:触发回合开始效果
- 行动:玩家可以自由出牌直至结束回合
- 回合结束:触发回合结束效果
- 重置恢复到3点能量弃掉剩余手牌抓5张手牌
- 洗回牌堆每当牌堆为空需要抓牌或与牌堆顶交互则将弃牌堆与2张《疲劳》没有效果不能打出洗回牌堆然后再继续。
部分物品带使用次数限制,药瓶喝完可以在篝火补
怪物回合
- buff更新阶段每个怪物临时buff消失、延时buff-1层
- 回合开始:触发每个怪物的回合开始效果
- 行动:怪物的意图生效,然后更新意图
- 回合结束:触发每个怪物的回合结束效果
## 费用
## 篝火
60%牌1费20%牌2费20%牌0费
在篝火处可进行3次行动每次行动可以
- 恢复20%最大生命
- 恢复1次所有药品的使用次数
- 合成一个物品(暂未设计)
怪物强化平均节奏较sts更快
## 商店
## 关键词
在商店可以买/卖物品
- 有5个随机的不同物品可以买价格为原价50%-150%随机
- 购买之后不会补充
- 可以以原价25%的价格卖出背包内的任意物品
行动关键词以【攻击4】表示。分为指向行动或非指向行动。随机打出指向行动时指向随机目标。
## 奇遇
buff/debuff以【防御3】表示。分为不衰减持续整场战斗、回合衰减每次更新层数-1、临时下次更新清空和姿态受伤害时扣除层数四种。
奇遇为Yarn Spinner驱动的分支对话遭遇
物品的构筑配合按邻接性设计临场动态策略配合按buff考虑
对玩家产生的影响根据Yarn Spinner的命令结算
## Buff / Debuff
在对话结束后奇遇结算结束
玩家buff主要按照“有默认功能的货币”考虑
## 战斗内Effect
debuff暂时只考虑“条件回合覆盖”类debuff有时可以当货币用
Effect分以下类型
- 瞬间:立即生效,直接改变状态
- Buff作为状态叠加到角色身上
- 持久Buff持续整场战斗
- 临时Buff持续到下次Buff更新
- 延时Buff每次Buff更新-1层持续到归零
- 姿态Buff受到伤害时移除同等数量的层数
- 卡牌:作为状态卡牌加入
- 弃牌:加入弃牌堆
- 手牌:加入手牌
- 牌堆:加入抓牌堆
- 物品:作为物品状态叠加到物品上,通常是效应来源卡牌对应的物品周围的物品,若没有上下文物品则可能无效或对玩家的随机物品生效
- 临时持续到下次Buff更新
- 持久:持续整场战斗
- 永久:持续整个冒险
- 直到打出:持续到下次打出该物品的卡牌
- 直到弃掉:持续到下次弃掉该物品的卡牌
敌人buff和debuff与玩家对称设计
## 时机
## 遗物与药水
产生Effect的时机包括
- 打出卡牌/抓到卡牌/弃掉卡牌
- 敌人意图生效
- Effect侦听器需要的特定侦听事件
药水在sts里属于不稳定容错比较鸡肋
## 卡牌属性
这里药水作为物品携带0费消耗次数使用随篝火补充功能较难溢出且稳定性更强
- 费用:能量费用或物品使用次数费用,如果不能支付则无法打出
- 抓牌效果/打出效果/弃掉效果:包括目标(自身、选择目标、全体),效果类型,和层数,可能有复数条
纯触发奖励性遗物用以调节节奏,还是要有的,但是分池发
能量费用以3费为准希望大约60%牌1费20%牌2费20%牌0费
## 区域设计
## 遗物
每区域10小怪4精英2商店2篝火8奇遇1事件
遗物不需要放在背包格里,且仅提供正面触发效果,暂未设计
## 设计量
## 区域设计量
每区域10小怪4精英8奇遇1 boss暂未设计
目前仅考虑沙漠一个区域
## 角色设计量
~24 物品 每角色4种各6个
-10 小怪 4 精英 1 boss 每区域
-3+ 遗物 每角色
-8 遗物 每角色
在扩展更多区域后需添加更多内容随区域/奇遇解锁

View File

@ -1,5 +1,7 @@
# Fighter
战士角色:默认的角色。
## 物品
4种物品各6个武器、防具、耗材、工具。
@ -8,7 +10,7 @@
每种物品每格提供一张牌加入玩家牌堆。
使用武器、防具、工具的卡牌花费能量每回合3点。耗材使用不计入费用消耗本身的使用次数。使用次数在篝火处会完全恢复。
使用武器、防具、工具的卡牌花费能量。每回合有3点能量。耗材使用不计入费用但消耗本身的使用次数。使用次数在篝火处可以恢复。
### 初始装备
@ -29,7 +31,9 @@
防具可以检查周围物品,每个匹配的给奖励。
盾 2x2/1费【防御3】
物品被动:每个防具的周围每种不同防具+1最大生命。
盾 2x2/1费【防御3】。
斗笠 4格T型/2费【防御8】
披风 3格L型/1费【防御2】下回合【防御2】
护腕 1格/0费【防御1】抓1张牌

View File

@ -6,31 +6,31 @@
概念:防+强化
【尖刺X】对攻击者造成X点伤害
【尖刺X】自己施加的持续buff攻击者造成X点伤害
### 蛇
概念:攻+强化
蛇毒/1费消耗。一回合弃掉超过1张蛇毒时受到6伤害。
【蛇毒X】对玩家施加的手牌状态同名状态牌/1费打出时移除此牌。弃掉时受到3点伤害。
### 木乃伊
概念:攻+防
【诅咒】:受攻击时物品【攻击】-1直到弃掉一张该物品的牌
【诅咒】:对自己施加的延时buff。玩家卡牌攻击时,卡牌对应物品【攻击】-1直到玩家弃掉一张该物品的牌
### 枪手
概念:单回高攻
【瞄准X】造成双倍伤害。受伤时失去等量【瞄准】。
【瞄准X】对自己施加的姿态buff。造成双倍伤害。
### 风卷草
概念:防+强化
【滚动X】攻击时每消耗10点【滚动】造成等量伤害
【滚动X】对自己施加的姿态buff。攻击时若有至少10层滚动则消耗10层滚动让攻击+10
### 秃鹫
@ -38,49 +38,49 @@
若造成伤害,玩家获得秃鹫之眼。
秃鹫之眼/0费受到秃鹫的攻击。当你受到伤害时自动从手牌打出。
秃鹫之眼:对玩家施加的抓牌堆状态卡牌(同名状态牌/0费打出时移除。抓到时获得3层【暴露】临时debuff受到的伤害+1/每层))
### 沙蝎
概念:攻+强化
【尾刺X】玩家回合结束时受到沙蝎的X点攻击。受伤时失去等量【尾刺】
【尾刺X】对自己施加的姿态buff。攻击时伤害提升X
### 幼沙虫
防+强化
每回合第一次受伤时玩家失去1点能量。
【能量吸取】对自己施加的延时buff。受伤时玩家失去X点能量。
### 蜥蜴
概念:攻+防+逃跑
【脱皮】:若脱皮达到生命上限,则怪物逃跑,玩家不能获得战斗奖励。
【脱皮】:对自己施加的姿态buff。若脱皮达到生命上限,则怪物逃跑,玩家不能获得战斗奖励。
### 沙匪
概念:攻特化
概念:弱化玩家
洗牌时,将一个随机物品的牌全部弃掉
【劫掠】对玩家施加的延时debuff。回合开始时随机弃掉一张手牌
## 精英 - 4种
### 风暴之灵
静电/0费抓一张牌。在手里时受到【电击】伤害+1。
静电:对玩家施加的弃牌堆状态卡牌/0费打出时自己获得1层【暴露】并抓一张牌。临时debuff,受到的伤害+1/每层)
【风暴X】攻击时玩家获得1张静电。受伤时失去等量【风暴】。
【风暴X】对自己施加的姿态buff。攻击时玩家获得1张静电。
### 骑马枪手
【冲锋X】受到或造成的伤害翻倍并消耗等量的冲锋。
【冲锋X】对自己施加的姿态buff受到或造成的伤害翻倍并消耗等量的冲锋。(额外伤害不会消耗姿态)
### 沙虫王
召唤幼体沙虫
每当玩家弃掉一张牌恢复1生命
玩家弃掉疲劳时恢复10生命
### 沙漠守卫

View File

@ -4,7 +4,7 @@ type EncounterDesertTable = readonly {
readonly type: "minion" | "elite" | "event" | "shop" | "camp" | "curio";
readonly name: string;
readonly description: string;
readonly enemies: readonly [readonly enemy: EnemyDesert, readonly bonusHp: number];
readonly enemies: readonly (readonly [enemy: EnemyDesert, bonusHp: number])[];
readonly dialogue: string;
}[];

View File

@ -3,7 +3,7 @@ import type { EffectDesert } from './effectDesert.csv';
type EnemyDesertTable = readonly {
readonly id: string;
readonly initHp: number;
readonly initBuffs: readonly [readonly effect: EffectDesert, readonly stacks: number];
readonly initBuffs: readonly (readonly [effect: EffectDesert, stacks: number])[];
readonly initialIntent: string;
}[];

View File

@ -6,7 +6,7 @@ type EnemyIntentDesertTable = readonly {
readonly id: string;
readonly nextIntents: readonly EnemyIntentDesert[];
readonly brokenIntent: readonly EnemyIntentDesert[];
readonly effects: readonly ["self" | "player" | "team", EffectDesert, number];
readonly effects: readonly (readonly [target: "self" | "player" | "team", effect: EffectDesert, value: number])[];
}[];
export type EnemyIntentDesert = EnemyIntentDesertTable[number];

View File

@ -9,7 +9,7 @@ type HeroItemFighter1Table = readonly {
readonly targetType: "single" | "none";
readonly price: number;
readonly desc: string;
readonly effects: readonly ["self" | "target" | "all" | "random", EffectDesert, number];
readonly effects: readonly (readonly [target: "self" | "target" | "all" | "random", effect: EffectDesert, value: number])[];
}[];
export type HeroItemFighter1 = HeroItemFighter1Table[number];

View File

@ -5,7 +5,7 @@ type StatusCardDesertTable = readonly {
readonly name: string;
readonly desc: string;
readonly unplayable: boolean;
readonly effects: readonly ["self", EffectDesert, number];
readonly effects: readonly (readonly [target: "self", effect: EffectDesert, value: number])[];
}[];
export type StatusCardDesert = StatusCardDesertTable[number];