93 lines
2 KiB
CUE
93 lines
2 KiB
CUE
// Iditacards card and deck asset specification
|
|
|
|
package iditacards
|
|
|
|
import "list"
|
|
|
|
#CardType: "attachment" | "dog" | "food" | "movement" | "personal" | "sled" | "damage"
|
|
#UnaryEffect: "see" | "destroy" | "supply" | "take" | "speed" | "draw" |
|
|
"daydraw" | "move" | "damage"
|
|
#NilaryEffect: "immortal" | "safepass" | "inplayatstart" | "discardonkill" |
|
|
"nohypothermia" | "doubledistance" | "passdie" | "nohold" | "damagetext"
|
|
|
|
// the template for a card gets this
|
|
#Card: {
|
|
name: string
|
|
type: #CardType
|
|
costs: {
|
|
energy: uint | *0 | "ALL"
|
|
health: uint | *0 | "ALL"
|
|
risk: uint | *0 | "ALL"
|
|
}
|
|
// effects: [#NAryEffect]: {} | null | int | "ALL" | =~"x[0-9]+"
|
|
effects: [#UnaryEffect]: int | "ALL" | =~"x[0-9]+"
|
|
effects: [#NilaryEffect]: {} | null
|
|
flavour: string
|
|
image: string
|
|
rarity?: #Rarity
|
|
deck?: string
|
|
}
|
|
cards: [string]: #Card
|
|
|
|
#Rarity: "info" | "starting" | "common" | "rare" | "epic" | "legendary"
|
|
|
|
decks: [string]: [Name=_]: {
|
|
rarity: #Rarity
|
|
count: int
|
|
}
|
|
|
|
assets: {
|
|
for deckname, deck in decks
|
|
for cardname, freq in deck
|
|
let card = cards[cardname] {
|
|
"\(deckname)-\(cardname)[\(freq.count)]": {
|
|
size: "750x1050"
|
|
print: "-set option:distort:viewport 825x1125-37-37 -virtual-pixel Edge -distort SRT 0 +repage"
|
|
|
|
kind: "template"
|
|
template: "card.tex"
|
|
data: cards[cardname] & {
|
|
rarity: freq.rarity
|
|
deck: deckname
|
|
}
|
|
}
|
|
}
|
|
|
|
if false {
|
|
for deckname, deck in decks
|
|
for cardname, freq in deck
|
|
let card = cards[cardname] {
|
|
"card/\(cardname)": {
|
|
kind: "image"
|
|
source: "images/card/\(cardname).png"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
pseudoassets: {
|
|
for deckname, deck in decks {
|
|
"\(deckname)-deck": {
|
|
kind: "cat"
|
|
contents: [
|
|
for cardname, freq in deck
|
|
for idx in list.Range(0, freq.count, 1) {
|
|
"\(deckname)-\(cardname)[\(freq.count)]"
|
|
},
|
|
]
|
|
}
|
|
}
|
|
|
|
cardrun: {
|
|
kind: "cat"
|
|
contents: [
|
|
for deckname, deck in decks
|
|
for cardname, card in deck {
|
|
for idx in list.Range(0, card.count, 1) {
|
|
"\(deckname)-\(cardname)[\(card.count)]"
|
|
}
|
|
},
|
|
]
|
|
}
|
|
}
|