跳到主要内容

祝福卡 cards.yml

祝福是这一场限定的强化:首领、精英打完从几张里选一张,一直带到这场结束。同一张可以叠好几层,效果照层数相加。离开副本时全部自动移除,不会带出去。

cards.yml 是选用的:没有这个文件时使用内置的 16 张祝福(就是范例「深渊回廊」那一份,validate 会显示一行提示)。

cards.yml
draft:
choices: 3 # 每次给几张选
when: [boss, elite] # 什么时候选:boss 每层首领打完 / elite 精英房打完 / start 起点房(开场先选一张)
picker: each # each 每人各选 / leader 队长帮全队选 / vote 全队投票(卡片给每个人)
timeout: 40s # 时间到自动帮还没选的人选
auto: random # 超时:random 随机一张 / first 第一张 / skip 不拿(改拿 skip-coins)
rerolls: 1 # 每场每人免费重抽次数
reroll-cost: 15 # 免费次数用完后,每次重抽要多少魂晶(每次再加 reroll-cost-step)
reroll-cost-step: 5
skip-coins: 10 # 略过不拿卡,改拿魂晶
boss-min-rarity: rare # 首领后的选项里至少一张这个稀有度以上(空白 = 不保证)
confirm-click: false # true = 点两下才确定

rarities: # 由低到高(顺序就是稀有度高低)
common: { name: "&f普通", color: "&f", weight: 70, material: PAPER }
rare: { name: "&9稀有", color: "&9", weight: 24, per-floor: 1, material: BOOK }
epic: { name: "&5史诗", color: "&5", weight: 5, per-floor: 0.5, material: ENCHANTED_BOOK, glow: true }
legendary: { name: "&6传说", color: "&6", weight: 1, per-floor: 0.2, material: NETHER_STAR, glow: true }
curse: { name: "&4诅咒", color: "&4", weight: 0, material: FERMENTED_SPIDER_EYE } # 0 = 选卡不会出现,只能由事件 / 脚本给

cards:
sharp_blade:
name: "&c锋利之刃"
rarity: common
weight: 10
max-stacks: 5
icon: { material: IRON_SWORD }
description: ["&7造成的伤害 &c+8%", "&8(目前 {stacks} 层)"]
stats: { damage: 8 }

选祝福 draft​

键默认说明
choices3每次给几张选,1~3
when[boss, elite]什么时候全队选一次:boss 每层首领打完、elite 精英房打完、start 起点房(开场先选一张)。[] = 只有宝藏房、商店、脚本给
pickereacheach(每人)每人一组选项各选各的;leader(队长)全队一组,队长选的卡每个人都拿到;vote(投票)全队一组投票,票最多的卡每个人都拿到(平手看队长)
timeout40s时间到还没选的人照 auto 自动处理
autorandom超时怎么处理:random 随机一张 / first 第一张 / skip 不拿(改拿 skip-coins)
rerolls1每场每人免费重抽几次
reroll-cost15免费次数用完后,重抽一次要多少魂晶
reroll-cost-step5每付费重抽一次,下一次再贵多少
skip-coins10略过不拿祝福时改拿多少魂晶
boss-min-rarityrare首领打完的选项里至少一张这个稀有度以上;空白 = 不保证(没有 rare 这个稀有度时默认空白)
confirm-clickfalsetrue = 同一张要点两下才确定

选祝福的时候:

  • 出现大标题「✦ 选择祝福」与聊天按钮,约 1 秒后自动打开菜单(装了云界面 CloudUI 会用云界面画面)。场上还有怪的时候只发聊天按钮,不会突然打开菜单挡住视线。
  • 关掉菜单也没关系:输入 /cd card(或点聊天按钮)重新打开。也可以直接 /cd card pick <1-3>、/cd card reroll、/cd card skip。
  • 全队一起选(首领、精英、起点)的时候门会等大家选完才出现,这段时间不算进时间、倒下也不扣命;宝藏房的个人选祝福不会挡住门。
  • 重抽:先用免费次数(rerolls + 商店重抽券 + 脚本给的,有权限 clouddungeon.rogue.extra-reroll 的人每场再多 1 次),用完后每次 reroll-cost + reroll-cost-step × 已付费次数。重抽出来的三张不会和刚才的重复。
  • 掉线的人到时间会照 auto 自动处理;重新连线时如果还没选,会重新打开菜单。
  • 没有任何能选的祝福时(例如全部叠满了),直接改拿 skip-coins。

稀有度 rarities​

键说明
name稀有度名称(菜单上显示)
color卡片名称前面的颜色
weight抽中这个稀有度的权重;0 = 选卡时不会出现,只能由脚本、事件、商店指定给
per-floor每往下一层权重再加多少(越深越容易抽到高稀有度)
material这个稀有度的卡默认用的物品
glow默认发光

稀有度高低 = 文件里的顺序(越后面越稀有),random:rare+、boss-min-rarity 都照这个顺序判断。没有写 rarities: 时用上面那五个。每张卡的稀有度音效是 card-<稀有度>(没有设置就用 card-common)。

抽卡方式:每一格先照「稀有度权重 + per-floor × (层数 − 1)」抽一个稀有度,再在那个稀有度里照卡片的 weight 抽一张,同一次选项里不会重复。

每张祝福的设置​

cards:
berserker:
name: "&4狂战士"
rarity: rare
weight: 10 # 同稀有度之间的权重
max-stacks: 2 # 最多叠几层
icon: { material: NETHERITE_AXE }
description: ["&7造成的伤害 &c+20%", "&7最大生命 &4-2 ❤", "&8(目前 {stacks} 层)"]
floors: all # 第几层起会出现:1-5 / 3+ / all
pools: [main] # main = 一般选卡;也可以自定义(card draft pool=…)
requires: [] # 出现条件(脚本条件写法,对象 = 选卡的人)
exclusive: [iron_skin] # 有这些卡就不会出现
tags: [] # curse 标签 = 诅咒(净化可以移除)
stats: { damage: 20 }
attributes: [{ attribute: max_health, amount: -4, operation: add }]
potions: [] # 例:["SPEED:1"]
potion-level-per-stack: false
on-pick: [] # 选到时执行(对象 = 选卡的人)
on-room-enter: []
on-room-clear: []
on-floor-start: []
on-kill: [] # 击杀时执行({mob} = 怪物 ID)
on-remove: [] # 失去这张卡或离开副本时
undo-commands: [] # 选卡时给了「副本外也有效」的东西:这里写还原用的控制台指令
键默认说明
name卡片 ID显示名称
rarityrarities 的第一个稀有度 ID;写错 = 提示并改用第一个
weight10同稀有度之间的权重;0 = 不会被抽到
max-stacks1最多叠几层;叠满的卡不会再出现在选项里
icon稀有度的物品卡片的物品(稀有度有 glow 时默认发光)
description空说明文字,{stacks} = 目前层数
floorsall第几层才会出现:1-5、3+、all
pools[main]属于哪些卡池。一般选祝福只抽 main;自定义的卡池给脚本 card draft pool=<卡池> 或 random:pool=<卡池> 用
requires空出现条件,脚本条件写法,例如 ["{floor} >= 2"]、["card sharp_blade 3"]
exclusive空已经有这些卡(卡片 ID)就不会出现
tags空标签;有 curse 标签(或稀有度是 curse)的卡算诅咒
stats无数值(每层的量),见下表
attributes无属性加成(每层的量),见下方
potions无一直有效的药水效果,写成 SPEED:1
potion-level-per-stackfalsetrue = 每多一层,药水再高一级
on-pick 等空脚本,见 祝福的脚本
undo-commands空还原用的控制台指令,见 还原指令

数值 stats​

每层的量,叠几层就乘几倍;多张卡的同一种数值会加总。

键单位效果上下限
damage%打副本怪物的伤害加成(可以是负数)合计最少 −90%
defense%受到副本怪物的伤害减少合计 0~80%
lifesteal%造成伤害的这个比例转成自己的生命合计最多 100%
crit-chance%暴击概率合计 0~100%
crit-damage%暴击时的伤害倍率 = 1.5 + 这个值—
coin-gain%获得的魂晶增加—
heal-on-kill生命点数每击杀一只怪回复(2 = 1 颗心)—
heal-on-clear生命点数每清除一间房回复—
thorns%被副本怪物打到时,把这个比例的伤害反弹给它—

damage、defense、暴击、吸血、荆棘只作用在副本里的怪物与直接攻击(近战、弹射物、宠物)上,不影响玩家之间、也不影响环境伤害。

属性 attributes​

attributes:
- { attribute: max_health, amount: 4, operation: add } # 最大生命 +4(2 颗心)
- { attribute: attack_speed, amount: 0.1, operation: scalar } # 攻击速度 +10%
键说明
attributemax_health、movement_speed、attack_damage、attack_speed、armor、armor_toughness、knockback_resistance、luck(前面加不加 generic. 都可以)
amount每层的量
operationadd(加数值,默认)/ scalar(加百分比)/ multiply(乘)

属性加成是暂时的:不会写进玩家数据,离开副本、掉线时移除,当机也不会残留。最大生命变少时血量会跟着降到上限,变多时不会自动补血。

药水 potions​

写成 效果:等级,例如 ["SPEED:1", "NIGHT_VISION:1"]。药水在副本里一直有效(每几秒自动续上,喝牛奶也会补回来),离开副本时移除,当机的话最多残留约 30 秒;房间本身给的同种药水不受影响。

诅咒​

  • 稀有度是 curse,或 tags 有 curse 的卡就是诅咒。
  • 内置的 curse 稀有度权重是 0:一般选祝福不会出现,要由事件、脚本给(例如 card give random:curse @self)。
  • 休息处的「净化」、商店的「净化」商品、脚本 card remove curse 都能移除诅咒。净化每次是选一张诅咒拿掉 1 层:叠了 3 层的诅咒要净化 3 次才会整张消失。
  • {curses} 变量 = 诅咒的总层数(一张叠了 3 层的诅咒算 3),常用在条件里(requires: ["{curses} >= 1"])。

祝福的脚本​

键什么时候执行(每位拥有这张卡的人各执行一次)
on-pick选到(或拿到)这张卡时
on-room-enter每次进入新房间
on-room-clear每次房间清除
on-floor-start每层开始
on-kill自己击杀副本怪物时({mob} = 怪物 ID)
on-remove失去这张卡,或离开副本时

脚本的对象(@self)是拥有这张卡的人,可以用 {card}(卡片 ID)、{stacks}(层数)、{rarity}(稀有度)。祝福的脚本整场有效,换房间不会中断。

second_life:
name: "&d第二条命"
rarity: epic
max-stacks: 1
description: ["&7选到时立刻多 1 条生命", "&8第 2 层以后才会出现"]
requires: ["{floor} >= 2"]
on-pick: ["lives +1 @self"]

还原指令 undo-commands​

如果 on-pick 给了「副本外也有效」的东西(例如用控制台指令给权限、称号),在 undo-commands 写还原用的控制台指令(可以用 {player}、{uuid}):

on-pick: ["console lp user {player} permission set vip.fly true"]
undo-commands: ["lp user {player} permission unset vip.fly"]

离开副本、这张卡被移除时执行;就算服务器当机,玩家下次登录时也会补执行。

祝福的写法​

写法意思
sharp_blade指定那张卡
random一般卡池(main)随机一张
random:rare那个稀有度随机一张
random:rare+那个稀有度以上随机一张
random:tag=fire有这个标签的卡随机一张
random:pool=boss那个卡池随机一张

随机的只会抽到这位玩家这一层拿得到的卡(floors 符合、没叠满、没有互斥、requires 成立)。

内置的 16 张祝福​

没有 cards.yml 时使用这一份(/cd admin create --roguelike 建立的 cards.yml 也是这一份):

卡片稀有度每层效果最多层
sharp_blade 锋利之刃普通伤害 +8%5
iron_skin 铁皮普通受到伤害 −6%(和狂战士互斥)5
swift 迅捷普通速度(每层再快一级)2
vitality 活力普通最大生命 +2 ❤3
greed 贪婪普通魂晶 +25%3
quick_hands 快手普通攻击速度 +10%3
berserker 狂战士稀有伤害 +20%、最大生命 −2 ❤(和铁皮互斥)2
soul_reaper 灵魂收割稀有每击杀回复 1 ❤3
thorn_armor 荆棘甲稀有反弹 20% 伤害3
keen_eye 锐眼稀有暴击率 +10%、暴击伤害 +25%3
mender 愈合稀有每清除一间房回复 3 ❤2
vampire_fang 吸血獠牙史诗吸血 5%2
second_life 第二条命史诗选到时多 1 条生命(第 2 层起出现)1
undying_will 不屈意志传说受到伤害 −20%、最大生命 +4 ❤1
weak_curse 虚弱诅咒诅咒伤害 −15%3
frail_curse 脆弱诅咒诅咒最大生命 −2 ❤3

菜单​

  • 箱子菜单:plugins/CloudDungeon/gui/draft.yml(选祝福)、gui/cards.yml(我的祝福,也用在淬炼 / 净化选卡),见 菜单与界面。
  • 装了云界面 CloudUI 时,选祝福改用云界面画面 clouddungeon_draft。
  • 随时查看自己的祝福:/cd cards(或 /cd card list)、副本内菜单的「我的祝福」、/cd run。