From 877cc9d779881ab5e2cc2a208c61ead87a06b931 Mon Sep 17 00:00:00 2001 From: hypercross Date: Wed, 22 Apr 2026 15:57:52 +0800 Subject: [PATCH] refactor: update schema definitions in slay-the-spire-like data Refactor CSV schema headers in the desert sample to use named type aliases instead of inline union strings. This improves readability and maintains consistency with the project's use of `inline-schema`. Changes include: - Updating `card.csv` to use `CardType`, `CardCostType`, and `CardTargetType`. - Updating `encounter.csv` to use `EncounterType` and `EnemyList`. - Updating `intent.csv` to use `IntentEffectTarget` and replacing `self` with `user` for effect targets. --- .../slay-the-spire-like/data/desert/card.csv | 67 ++++++++++--------- .../data/desert/encounter.csv | 5 +- .../data/desert/intent.csv | 50 +++++++------- 3 files changed, 66 insertions(+), 56 deletions(-) diff --git a/src/samples/slay-the-spire-like/data/desert/card.csv b/src/samples/slay-the-spire-like/data/desert/card.csv index 6c673af..ea9a14a 100644 --- a/src/samples/slay-the-spire-like/data/desert/card.csv +++ b/src/samples/slay-the-spire-like/data/desert/card.csv @@ -2,37 +2,42 @@ # type: 'item' = inventory item card, 'status' = status effect card # costType: 'energy' = costs energy per turn, 'uses' = limited uses, 'none' = free # targetType: 'single' = target one enemy, 'none' = no target + +# type CardType = 'item' | 'status' +# type CardCostType = 'energy' | 'uses' | 'none' +# type CardTargetType = 'player' | 'enemy' | 'enemies' + # inject effects = ~cardEffect(card) id,name,desc,type,costType,costCount,targetType -string,string,string,'item'|'status','energy'|'uses'|'none',int,'single'|'none' -sword,剑,【攻击2】【攻击2】,item,energy,1,single -greataxe,长斧,对全体【攻击5】,item,energy,2,none -spear,长枪,【攻击2】【攻击2】【攻击2】,item,energy,1,single -dagger,短刀,【攻击3】【攻击3】,item,energy,1,single -dart,飞镖,【攻击1】抓一张牌,item,energy,0,single -crossbow,十字弩,【攻击6】对同一目标打出其他十字弩,item,energy,2,single -shield,盾,【防御3】,item,energy,1,none -hat,斗笠,【防御8】,item,energy,2,none -cape,披风,【防御2】下回合【防御2】,item,energy,1,none -bracer,护腕,【防御1】抓1张牌,item,energy,0,none -greatshield,大盾,【防御5】,item,energy,1,none -chainmail,锁子甲,本回合受到伤害-3,item,energy,1,none -bandage,绷带,从牌堆或弃牌堆随机移除1张伤口,item,uses,3,none -poisonPotion,淬毒药剂,周围物品的【攻击】+2,item,uses,3,none -fortifyPotion,强固药剂,周围物品的【防御】+2,item,uses,3,none -vitalityPotion,活力药剂,获得1点能量,item,uses,3,none -focusPotion,集中药剂,抓2张牌,item,uses,3,none -healingPotion,治疗药剂,从牌堆或弃牌堆移除3张伤口,item,uses,3,none -waterBag,水袋,下回合开始时获得1能量抓2张牌,item,energy,1,none -rope,绳索,周围物品的牌【防御】+2直到打出,item,energy,1,none -belt,腰带,从牌堆周围物品的牌当中选择一张加入手牌,item,energy,0,none -torch,火把,下次打出周围物品的牌时将其消耗并获得1能量,item,energy,1,none -whetstone,磨刀石,周围物品的牌【攻击】+3直到打出,item,energy,1,none -blacksmithHammer,铁匠锤,从牌堆/弃牌堆选择一张牌随机变为一张周围物品的牌,item,energy,1,none -wound,伤口,无效果占用手牌和牌堆,status,none,0,none -venom,蛇毒,弃掉时受到3点伤害,status,none,0,none -curse,诅咒,受攻击时物品攻击-1直到弃掉一张该物品的牌,status,none,0,none -static,静电,在手里时受电击伤害+1,status,none,0,none -fatigue,疲劳,占用手牌,status,none,0,none -vultureEye,秃鹫之眼,抓到时获得3层暴露,status,none,0,none +string,string,string,CardType,CardCostType,int,CardTargetType +sword,剑,【攻击2】【攻击2】,item,energy,1,enemy +greataxe,长斧,对全体【攻击5】,item,energy,2,enemies +spear,长枪,【攻击2】【攻击2】【攻击2】,item,energy,1,enemy +dagger,短刀,【攻击3】【攻击3】,item,energy,1,enemy +dart,飞镖,【攻击1】抓一张牌,item,energy,0,enemy +crossbow,十字弩,【攻击6】对同一目标打出其他十字弩,item,energy,2,enemy +shield,盾,【防御3】,item,energy,1,player +hat,斗笠,【防御8】,item,energy,2,player +cape,披风,【防御2】下回合【防御2】,item,energy,1,player +bracer,护腕,【防御1】抓1张牌,item,energy,0,player +greatshield,大盾,【防御5】,item,energy,1,player +chainmail,锁子甲,本回合受到伤害-3,item,energy,1,player +bandage,绷带,从牌堆或弃牌堆随机移除1张伤口,item,uses,3,player +poisonPotion,淬毒药剂,周围物品的【攻击】+2,item,uses,3,player +fortifyPotion,强固药剂,周围物品的【防御】+2,item,uses,3,player +vitalityPotion,活力药剂,获得1点能量,item,uses,3,player +focusPotion,集中药剂,抓2张牌,item,uses,3,player +healingPotion,治疗药剂,从牌堆或弃牌堆移除3张伤口,item,uses,3,player +waterBag,水袋,下回合开始时获得1能量抓2张牌,item,energy,1,player +rope,绳索,周围物品的牌【防御】+2直到打出,item,energy,1,player +belt,腰带,从牌堆周围物品的牌当中选择一张加入手牌,item,energy,0,player +torch,火把,下次打出周围物品的牌时将其消耗并获得1能量,item,energy,1,player +whetstone,磨刀石,周围物品的牌【攻击】+3直到打出,item,energy,1,player +blacksmithHammer,铁匠锤,从牌堆/弃牌堆选择一张牌随机变为一张周围物品的牌,item,energy,1,player +wound,伤口,无效果占用手牌和牌堆,status,none,0,player +venom,蛇毒,弃掉时受到3点伤害,status,none,0,player +curse,诅咒,受攻击时物品攻击-1直到弃掉一张该物品的牌,status,none,0,player +static,静电,在手里时受电击伤害+1,status,none,0,player +fatigue,疲劳,占用手牌,status,none,0,player +vultureEye,秃鹫之眼,抓到时获得3层暴露,status,none,0,player diff --git a/src/samples/slay-the-spire-like/data/desert/encounter.csv b/src/samples/slay-the-spire-like/data/desert/encounter.csv index e4ec9a0..e9ef294 100644 --- a/src/samples/slay-the-spire-like/data/desert/encounter.csv +++ b/src/samples/slay-the-spire-like/data/desert/encounter.csv @@ -6,8 +6,11 @@ # curio (8): random pickup of treasure or resources # enemies: array of [enemyId; initialHp; buffs[]] +# type EncounterType = 'minion' | 'elite' | 'event' | 'shop' | 'camp' | 'curio' +# type EnemyList = [data: @enemy; hp: int; effects: [effect: @effect; stacks: int][]][] + id,type,name,description,enemies,dialogue -string,'minion'|'elite'|'event'|'shop'|'camp'|'curio',string,string,[data: @enemy; hp: int; effects: [effect: @effect;stacks: int][]][],string +string,EncounterType,string,string,EnemyList,string cactus_pair,minion,仙人掌怪,概念:防+强化。【尖刺X】:对攻击者造成X点伤害。,[仙人掌怪;12;[]];[仙人掌怪;12;[]], snake_pair,minion,蛇,概念:攻+强化。给玩家塞入蛇毒牌(1费:打出时移除此牌。弃掉时受到3点伤害)。,[蛇;10;[]], mummy_cactus,minion,木乃伊,概念:攻+防。【诅咒】:受攻击时物品【攻击】-1,直到弃掉一张该物品的牌。,[木乃伊;14;[]];[仙人掌怪;12;[]], diff --git a/src/samples/slay-the-spire-like/data/desert/intent.csv b/src/samples/slay-the-spire-like/data/desert/intent.csv index fcd73f3..5ae1059 100644 --- a/src/samples/slay-the-spire-like/data/desert/intent.csv +++ b/src/samples/slay-the-spire-like/data/desert/intent.csv @@ -6,46 +6,48 @@ # initBuffs: initial buffs for this intent (applied when intent becomes active) # effects: effects executed when this intent is active +# type IntentEffectTarget = 'user' | 'eachEnemy' | 'randomEnemy' | 'player' + id,enemy,initialIntent,nextIntents,brokenIntent,effects -string,@enemy,boolean,@intent[],@intent[],['self'|'player'|'team';@effect;number][] -仙人掌怪-boost,仙人掌怪,true,仙人掌怪-boost;仙人掌怪-defend,,[self;spike;1];[self;defend;4] -仙人掌怪-defend,仙人掌怪,false,仙人掌怪-attack,,[self;defend;8] +string,@enemy,boolean,@intent[],@intent[],[IntentEffectTarget;@effect;number][] +仙人掌怪-boost,仙人掌怪,true,仙人掌怪-boost;仙人掌怪-defend,,[user;spike;1];[user;defend;4] +仙人掌怪-defend,仙人掌怪,false,仙人掌怪-attack,,[user;defend;8] 仙人掌怪-attack,仙人掌怪,false,仙人掌怪-boost,,[player;attack;5] 蛇-poison,蛇,true,蛇-attack;蛇-attack,,[player;venom;1];[player;attack;4] 蛇-attack,蛇,false,蛇-poison;蛇-boost,,[player;attack;6] -蛇-boost,蛇,false,蛇-poison;蛇-attack,,[self;defend;3];[player;venom;1] +蛇-boost,蛇,false,蛇-poison;蛇-attack,,[user;defend;3];[player;venom;1] 木乃伊-attack,木乃伊,true,木乃伊-defend;木乃伊-curse,,[player;attack;6] -木乃伊-defend,木乃伊,false,木乃伊-attack,,[self;defend;6] +木乃伊-defend,木乃伊,false,木乃伊-attack,,[user;defend;6] 木乃伊-curse,木乃伊,false,木乃伊-defend;木乃伊-attack,木乃伊-attack,[player;curse;1] -枪手-aim,枪手,true,枪手-attack,,[self;aim;2] +枪手-aim,枪手,true,枪手-attack,,[user;aim;2] 枪手-attack,枪手,false,枪手-aim;枪手-defend,枪手-aim,[player;attack;8] -枪手-defend,枪手,false,枪手-aim,枪手-aim,[self;defend;5] -风卷草-boost,风卷草,true,风卷草-defend;风卷草-defend;风卷草-boost,,[self;roll;5];[self;defend;4] -风卷草-defend,风卷草,false,风卷草-boost;风卷草-attack,,[self;defend;8] +枪手-defend,枪手,false,枪手-aim,枪手-aim,[user;defend;5] +风卷草-boost,风卷草,true,风卷草-defend;风卷草-defend;风卷草-boost,,[user;roll;5];[user;defend;4] +风卷草-defend,风卷草,false,风卷草-boost;风卷草-attack,,[user;defend;8] 风卷草-attack,风卷草,false,风卷草-boost,,[player;rollDamage;0] 秃鹫-attack,秃鹫,true,秃鹫-defend;秃鹫-defend,,[player;attack;6];[player;vultureEye;1] -秃鹫-defend,秃鹫,false,秃鹫-attack;秃鹫-attack,,[self;defend;5] -沙蝎-boost,沙蝎,true,沙蝎-attack;沙蝎-attack,,[self;tailSting;2] +秃鹫-defend,秃鹫,false,秃鹫-attack;秃鹫-attack,,[user;defend;5] +沙蝎-boost,沙蝎,true,沙蝎-attack;沙蝎-attack,,[user;tailSting;2] 沙蝎-attack,沙蝎,false,沙蝎-boost;沙蝎-attack,,[player;attack;6] -幼沙虫-defend,幼沙虫,true,幼沙虫-defend;幼沙虫-boost,,[self;defend;6] -幼沙虫-boost,幼沙虫,false,幼沙虫-attack;幼沙虫-defend,,[self;energyDrain;1];[self;defend;4] +幼沙虫-defend,幼沙虫,true,幼沙虫-defend;幼沙虫-boost,,[user;defend;6] +幼沙虫-boost,幼沙虫,false,幼沙虫-attack;幼沙虫-defend,,[user;energyDrain;1];[user;defend;4] 幼沙虫-attack,幼沙虫,false,幼沙虫-defend;幼沙虫-defend,,[player;attack;5] 蜥蜴-attack,蜥蜴,true,蜥蜴-defend;蜥蜴-molt,,[player;attack;5] -蜥蜴-defend,蜥蜴,false,蜥蜴-attack;蜥蜴-attack,,[self;defend;6] -蜥蜴-molt,蜥蜴,false,蜥蜴-defend;蜥蜴-attack,,[self;molt;3] +蜥蜴-defend,蜥蜴,false,蜥蜴-attack;蜥蜴-attack,,[user;defend;6] +蜥蜴-molt,蜥蜴,false,蜥蜴-defend;蜥蜴-attack,,[user;molt;3] 沙匪-attack,沙匪,true,沙匪-attack;沙匪-heavyAttack,,[player;attack;6] 沙匪-heavyAttack,沙匪,false,沙匪-attack;沙匪-attack;沙匪-debuff,,[player;attack;10] 沙匪-debuff,沙匪,false,沙匪-attack;沙匪-attack,,[player;discard;1] -风暴之灵-storm,风暴之灵,true,风暴之灵-attack;风暴之灵-storm,,[self;storm;2];[self;defend;3] +风暴之灵-storm,风暴之灵,true,风暴之灵-attack;风暴之灵-storm,,[user;storm;2];[user;defend;3] 风暴之灵-attack,风暴之灵,false,风暴之灵-storm;风暴之灵-defend,,[player;attack;8];[player;static;1] -风暴之灵-defend,风暴之灵,false,风暴之灵-storm;风暴之灵-attack,,[self;defend;8] -骑马枪手-charge,骑马枪手,true,骑马枪手-attack,,[self;charge;2] +风暴之灵-defend,风暴之灵,false,风暴之灵-storm;风暴之灵-attack,,[user;defend;8] +骑马枪手-charge,骑马枪手,true,骑马枪手-attack,,[user;charge;2] 骑马枪手-attack,骑马枪手,false,骑马枪手-charge;骑马枪手-defend,骑马枪手-charge,[player;attack;6] -骑马枪手-defend,骑马枪手,false,骑马枪手-charge;骑马枪手-attack,骑马枪手-charge,[self;defend;5] -沙虫王-summon,沙虫王,true,沙虫王-attack;沙虫王-defend,,[self;summonSandwormLarva;18] +骑马枪手-defend,骑马枪手,false,骑马枪手-charge;骑马枪手-attack,骑马枪手-charge,[user;defend;5] +沙虫王-summon,沙虫王,true,沙虫王-attack;沙虫王-defend,,[user;summonSandwormLarva;18] 沙虫王-attack,沙虫王,false,沙虫王-summon;沙虫王-defend,,[player;attack;9] -沙虫王-defend,沙虫王,false,沙虫王-attack;沙虫王-summon,,[self;defend;6] -沙漠守卫-summon,沙漠守卫,true,沙漠守卫-attack;沙漠守卫-defend,,[self;summonMummy;14] +沙虫王-defend,沙虫王,false,沙虫王-attack;沙虫王-summon,,[user;defend;6] +沙漠守卫-summon,沙漠守卫,true,沙漠守卫-attack;沙漠守卫-defend,,[user;summonMummy;14] 沙漠守卫-attack,沙漠守卫,false,沙漠守卫-defend;沙漠守卫-summon,,[player;attack;8] -沙漠守卫-defend,沙漠守卫,false,沙漠守卫-attack;沙漠守卫-revive,,[self;defend;8] -沙漠守卫-revive,沙漠守卫,false,沙漠守卫-attack;沙漠守卫-summon,,[self;reviveMummy;1] +沙漠守卫-defend,沙漠守卫,false,沙漠守卫-attack;沙漠守卫-revive,,[user;defend;8] +沙漠守卫-revive,沙漠守卫,false,沙漠守卫-attack;沙漠守卫-summon,,[user;reviveMummy;1]