first commit

This commit is contained in:
richarjiang
2026-09-21 14:45:24 +08:00
commit 12380c715c
34 changed files with 6609 additions and 0 deletions

288
src/content/catalog.ts Normal file
View File

@@ -0,0 +1,288 @@
export const HANDS = [
['高牌', 5, 1, 10, 1, '冥王星'],
['对子', 10, 2, 15, 1, '水星'],
['两对', 20, 2, 20, 1, '天王星'],
['三条', 30, 3, 20, 2, '金星'],
['顺子', 30, 4, 30, 3, '土星'],
['同花', 35, 4, 15, 2, '木星'],
['葫芦', 40, 4, 25, 2, '地球'],
['四条', 60, 7, 30, 3, '火星'],
['同花顺', 100, 8, 40, 4, '海王星'],
['五条', 120, 12, 35, 3, 'X 行星'],
['同花葫芦', 140, 14, 40, 4, '谷神星'],
['同花五条', 160, 16, 50, 3, '阋神星'],
] as const;
export type JokerDef = {
id: string;
name: string;
en: string;
desc: string;
price: number;
rarity: string;
color: string;
motif: number;
};
export const JOKERS: JokerDef[] = [
{
id: 'smile',
name: '微笑先生',
en: 'THE SMILER',
desc: '每次出牌 +4 倍率。',
price: 4,
rarity: '普通',
color: '#d36856',
motif: 0,
},
{
id: 'pair',
name: '双面演员',
en: 'TWO FACED',
desc: '打出的牌包含对子时,+8 倍率。',
price: 5,
rarity: '普通',
color: '#7296a0',
motif: 1,
},
{
id: 'triple',
name: '三重奏',
en: 'TRIO',
desc: '包含三条时,+20 倍率。',
price: 6,
rarity: '普通',
color: '#b69253',
motif: 2,
},
{
id: 'flush',
name: '花色诗人',
en: 'SUIT POET',
desc: '5 张同花色时,+18 倍率。',
price: 6,
rarity: '普通',
color: '#749574',
motif: 3,
},
{
id: 'straight',
name: '走钢丝',
en: 'TIGHTROPE',
desc: '包含顺子时,+100 筹码。',
price: 5,
rarity: '普通',
color: '#bb795f',
motif: 4,
},
{
id: 'chips',
name: '筹码匠',
en: 'CHIP MAKER',
desc: '每次出牌 +80 筹码。',
price: 5,
rarity: '普通',
color: '#5896aa',
motif: 5,
},
{
id: 'hearts',
name: '红心皇后',
en: 'QUEEN OF HEARTS',
desc: '每张计分红桃 +4 倍率。',
price: 6,
rarity: '普通',
color: '#bc5869',
motif: 6,
},
{
id: 'spades',
name: '夜行客',
en: 'NIGHT WALKER',
desc: '每张计分黑桃 +35 筹码。',
price: 5,
rarity: '普通',
color: '#6c779b',
motif: 7,
},
{
id: 'diamonds',
name: '钻石眼',
en: 'DIAMOND EYE',
desc: '每张计分方块赚取 $1。',
price: 6,
rarity: '罕见',
color: '#c59b62',
motif: 8,
},
{
id: 'clubs',
name: '三叶草',
en: 'CLOVER',
desc: '每张计分梅花 +4 倍率。',
price: 5,
rarity: '普通',
color: '#639176',
motif: 9,
},
{
id: 'faces',
name: '宫廷画师',
en: 'COURT PAINTER',
desc: '每张计分 J、Q、K +5 倍率。',
price: 6,
rarity: '普通',
color: '#b08b5c',
motif: 10,
},
{
id: 'aces',
name: '王牌魔术',
en: 'ACE MAGIC',
desc: '每张计分 A +30 筹码、+4 倍率。',
price: 6,
rarity: '罕见',
color: '#839aac',
motif: 11,
},
{
id: 'even',
name: '偶数哲学',
en: 'EVEN ODDS',
desc: '每张计分 2、4、6、8、10 +4 倍率。',
price: 5,
rarity: '普通',
color: '#8c9c72',
motif: 12,
},
{
id: 'odd',
name: '奇数俱乐部',
en: 'ODD SOCIETY',
desc: '每张计分 A、3、5、7、9 +35 筹码。',
price: 5,
rarity: '普通',
color: '#a67d98',
motif: 13,
},
{
id: 'echo',
name: '回声',
en: 'ENCORE',
desc: '第一张计分牌额外触发一次。',
price: 8,
rarity: '罕见',
color: '#70a5a0',
motif: 14,
},
{
id: 'moon',
name: '月后',
en: 'MOON QUEEN',
desc: '每张留在手中的 Q +13 倍率。',
price: 6,
rarity: '罕见',
color: '#8a83b0',
motif: 15,
},
{
id: 'double',
name: '双倍赌注',
en: 'DOUBLE DOWN',
desc: '打出的牌包含对子时,倍率 ×2。',
price: 9,
rarity: '稀有',
color: '#bb6656',
motif: 16,
},
{
id: 'minimal',
name: '独幕剧',
en: 'SOLO ACT',
desc: '打出不超过 3 张牌时,倍率 ×2。',
price: 8,
rarity: '罕见',
color: '#7797a0',
motif: 17,
},
{
id: 'growth',
name: '常青藤',
en: 'EVERGREEN',
desc: '每次出牌永久积累 +2 倍率;弃牌减少 1,最低 0。',
price: 7,
rarity: '罕见',
color: '#73946b',
motif: 18,
},
{
id: 'scholar',
name: '老学者',
en: 'THE SCHOLAR',
desc: '倍率增加本局该牌型已打出次数 ×3(含本次)。',
price: 7,
rarity: '罕见',
color: '#ad9570',
motif: 19,
},
{
id: 'bank',
name: '银行家',
en: 'THE BANKER',
desc: '每持有 $5,+4 倍率(结算到此刻的余额)。',
price: 7,
rarity: '罕见',
color: '#8aa579',
motif: 20,
},
{
id: 'egg',
name: '金蛋',
en: 'GOLDEN EGG',
desc: '每次过关额外赚取 $4。',
price: 5,
rarity: '普通',
color: '#ceac65',
motif: 21,
},
{
id: 'last',
name: '最后一舞',
en: 'LAST DANCE',
desc: '本轮最后一次出牌,倍率 ×3。',
price: 7,
rarity: '罕见',
color: '#a77a93',
motif: 22,
},
{
id: 'wanderer',
name: '流浪艺人',
en: 'THE WANDERER',
desc: '每跳过一个盲注,永久增加 ×0.35 倍率,初始 ×1。',
price: 8,
rarity: '稀有',
color: '#af9367',
motif: 23,
},
];
export const TAROTS = [
{ name: '恋人', desc: '选择 1–3 张牌,转为红桃。', max: 3 },
{ name: '月亮', desc: '选择 1–3 张牌,转为黑桃。', max: 3 },
{ name: '力量', desc: '选择 1–2 张牌,点数 +1(A 变为 2)。', max: 2 },
{ name: '魔术师', desc: '选择 1 张牌,复制到手牌与牌组。', max: 1 },
{ name: '倒吊人', desc: '选择 1–2 张牌,永久移除。', max: 2 },
{ name: '正义', desc: '选择 1 张牌,变成玻璃牌:计分 ×2 倍率,1/4 概率破碎。', max: 1 },
{ name: '战车', desc: '选择 1 张牌,变成钢铁牌:留手 ×1.5 倍率。', max: 1 },
{ name: '太阳', desc: '选择 1 张牌,增加 +30 筹码强化与红色蜡封(重触发)。', max: 1 },
{ name: '女皇', desc: '选择 1–2 张牌,变成多倍牌:计分时 +4 倍率。', max: 2 },
];
export const BOSSES = [
{ name: '红心禁令', en: 'THE HEART', desc: '所有红桃牌失效:仍可组成牌型,但不触发计分。' },
{ name: '黑夜帷幕', en: 'THE VEIL', desc: '所有黑桃牌失效:仍可组成牌型,但不触发计分。' },
{ name: '狭窄舞台', en: 'THE STAGE', desc: '本轮手牌上限减少 1。' },
{ name: '孤注一掷', en: 'THE GAMBLE', desc: '本轮没有弃牌次数。' },
{ name: '满员谢幕', en: 'THE CAST', desc: '每次必须打出 5 张牌。' },
{ name: '钝刃', en: 'THE FLINT', desc: '牌型基础筹码与倍率减半,向上取整。' },
{ name: '天鹅绒终幕', en: 'THE FINAL CURTAIN', desc: '最终挑战:目标分数为基础分数的 4 倍。' },
];
export const BASE_TARGETS = [300, 800, 2000, 5000, 11000, 20000, 35000, 50000];
export const jokerDef = (id: string) => JOKERS.find((j) => j.id === id)!;