Initial pass at unicorn pack.
This commit is contained in:
+440
-3
@@ -19,6 +19,9 @@ type CardKind string
|
||||
const (
|
||||
KindPet CardKind = "pet"
|
||||
KindFood CardKind = "food"
|
||||
// KindAilment (Unicorn pack) is a temporary debuff card (Spooked, Exposed)
|
||||
// attached to a pet during battle. It is neither a pet nor a food.
|
||||
KindAilment CardKind = "ailment"
|
||||
)
|
||||
|
||||
// Food identifiers.
|
||||
@@ -37,6 +40,15 @@ const (
|
||||
FoodPotato = "potato"
|
||||
FoodDurian = "durian"
|
||||
FoodTomato = "tomato"
|
||||
// FoodFairyDust (Unicorn pack) is a perk food: the pet it's on gains 1 Mana
|
||||
// when played. FoodWaterOfYouth is a one-shot shop food (not a perk) that
|
||||
// upgrades a pet into a next-tier card.
|
||||
FoodFairyDust = "fairyDust"
|
||||
FoodWaterOfYouth = "waterOfYouth"
|
||||
// Unicorn pack perk foods, tiers 4-6.
|
||||
FoodHealthPotion = "healthPotion" // Hurt: heal 3 damage
|
||||
FoodBigManaPotion = "bigManaPotion" // Play: gain 3 Mana
|
||||
FoodCornucopia = "cornucopia" // Play: eat 2 Apples, add 2 on deck
|
||||
)
|
||||
|
||||
// EffectTrigger is when an effect fires.
|
||||
@@ -209,6 +221,91 @@ const (
|
||||
// Retriever, when summoned, prevents Count damage on its first hit (German
|
||||
// Shepherd).
|
||||
ActionGuardRetriever EffectAction = "guardRetriever"
|
||||
|
||||
// --- Unicorn pack ---
|
||||
// ActionGainMana adds Count Mana to the acting side. Mana is a persistent
|
||||
// resource (unlike Trumpets): it is gained shop-time (Buy: Cuddle Toad,
|
||||
// Thunderbird) or battle-time (Play/Faint: Alchemedes, Fur-Bearing Trout),
|
||||
// kept between rounds, and spent via CostMana (see Effect.CostMana).
|
||||
ActionGainMana EffectAction = "gainMana"
|
||||
// ActionAddAilment attaches Count Ailment cards (Effect.Ailment: "spooked" |
|
||||
// "exposed") to the enemy. Target "" hits the enemy pet in play; Target
|
||||
// "enemyDeck" puts them on top of the enemy deck to snare the next pet. When
|
||||
// Eat > 0 (Calygreyhound) the pet also eats that many apples. Battle-time.
|
||||
ActionAddAilment EffectAction = "addAilment"
|
||||
// ActionAilmentImmune (passive) makes the pet discard the first Ailment it
|
||||
// would receive (or one it enters play with) — Baku.
|
||||
ActionAilmentImmune EffectAction = "ailmentImmune"
|
||||
// ActionThrowRockGainMana (play) throws Count rocks at the enemy pet, then
|
||||
// gains 1 Mana for each rock that rolled a blank (a 0) — Tatzelwurm.
|
||||
ActionThrowRockGainMana EffectAction = "throwRockGainMana"
|
||||
// ActionReviveSelf (faint) puts a plain copy of this pet back on top of its
|
||||
// owner's deck once per battle (the copy carries no faint ability, so it
|
||||
// can't loop) — Slime.
|
||||
ActionReviveSelf EffectAction = "reviveSelf"
|
||||
// ActionNegateEnemyFaint (faint) sets the pet aside: the next enemy pet to
|
||||
// faint has its Faint ability do nothing — Mandrake.
|
||||
ActionNegateEnemyFaint EffectAction = "negateEnemyFaint"
|
||||
// ActionNextRoundApple (faint) banks Count apples that land in the owner's
|
||||
// hand at the start of the next round — Skeleton Dog.
|
||||
ActionNextRoundApple EffectAction = "nextRoundApple"
|
||||
// ActionPeekShop (passive) marks a pet whose owner may reveal it from hand to
|
||||
// look at the top of the current shop deck, once per round — Bigfoot. It is
|
||||
// an optional shop action (see Game.PeekShopDeck), never auto-fired.
|
||||
ActionPeekShop EffectAction = "peekShop"
|
||||
// ActionUpgradeNextTier (buy) discards this food and a pet from the player's
|
||||
// hand to take the top card of the next tier's deck for free — Water of
|
||||
// Youth. Shop-time; opens a PendingSacrifice choice.
|
||||
ActionUpgradeNextTier EffectAction = "upgradeNextTier"
|
||||
|
||||
// --- Unicorn pack, tiers 4-6 ---
|
||||
// ActionAilmentToApples (faint) sets the pet aside and arms a side guard: the
|
||||
// next Ailment that would land on a friendly pet or friendly deck is replaced
|
||||
// by 2 Apples on top of the owner's deck — Unicorn.
|
||||
ActionAilmentToApples EffectAction = "ailmentToApples"
|
||||
// ActionSmallPetAura (faint) sets the pet aside: friendly pets with base
|
||||
// Power <= 2 get +Count Power for the rest of the battle — Rootlin.
|
||||
ActionSmallPetAura EffectAction = "smallPetAura"
|
||||
// ActionReviveNextFaint (faint) sets the pet aside (paying CostMana): the next
|
||||
// time a friendly pet faints, a copy goes on the bottom of the owner's deck —
|
||||
// Fairy.
|
||||
ActionReviveNextFaint EffectAction = "reviveNextFaint"
|
||||
// ActionGainAbility (play) reveals a random pet from the highest tier with
|
||||
// discards and copies its effects onto this pet — Abomination.
|
||||
ActionGainAbility EffectAction = "gainAbility"
|
||||
// ActionSummonFromDiscard (faint, paying CostMana) adds Count random cards
|
||||
// from the FromTier discard pile as temporary copies on top of the deck —
|
||||
// Chimera.
|
||||
ActionSummonFromDiscard EffectAction = "summonFromDiscard"
|
||||
// ActionSummonFromTierDeck (faint, paying CostMana) adds a temporary copy of
|
||||
// the top of the FromTier shop deck on top of the owner's deck — Pixiu.
|
||||
ActionSummonFromTierDeck EffectAction = "summonFromTierDeck"
|
||||
// ActionRockThenEat (play) throws Count rocks at the enemy pet, then feeds
|
||||
// this pet Apples equal to the damage those rocks actually dealt (Exposed
|
||||
// counts) — Vampire Bat. Usually gated on ConditionEnemyAilment.
|
||||
ActionRockThenEat EffectAction = "rockThenEat"
|
||||
// ActionBounceEnemy (play) sends the enemy pet to the bottom of the enemy
|
||||
// deck as a fresh body (its Play ability stripped so it can't re-loop) —
|
||||
// Loveland Frogman.
|
||||
ActionBounceEnemy EffectAction = "bounceEnemy"
|
||||
// ActionManaPower (passive) sets the pet's base Power to the owner's Mana at
|
||||
// play time, capped at Cap — Sleipnir.
|
||||
ActionManaPower EffectAction = "manaPower"
|
||||
// ActionSpendManaRocks (play) spends all the owner's Mana to throw that many
|
||||
// rocks at the enemy pet — Sea Serpent.
|
||||
ActionSpendManaRocks EffectAction = "spendManaRocks"
|
||||
// ActionSpendManaSpook (play) spends all the owner's Mana to add that many
|
||||
// Spooked to the enemy pet — Bakunawa.
|
||||
ActionSpendManaSpook EffectAction = "spendManaSpook"
|
||||
// ActionAilmentBoost (faint) sets the pet aside: Ailments on enemy pets count
|
||||
// for Count more — Manticore.
|
||||
ActionAilmentBoost EffectAction = "ailmentBoost"
|
||||
// ActionManaFeedOnPlay (faint) sets the pet aside: each time the owner plays a
|
||||
// pet, spend 1 Mana to feed it Count Apples — Team Spirit.
|
||||
ActionManaFeedOnPlay EffectAction = "manaFeedOnPlay"
|
||||
// ActionRevealTierForApples (buy) opens a reveal of a hand pet at tier <= Cap
|
||||
// for Count Apples — Quetzalcoatl. Shop-time.
|
||||
ActionRevealTierForApples EffectAction = "revealTierForApples"
|
||||
)
|
||||
|
||||
// Per multipliers for dynamic effect counts.
|
||||
@@ -236,6 +333,19 @@ const (
|
||||
ConditionTripled = "tripledThisRound" // player Tripled during this round's shop
|
||||
ConditionHasPerk = "hasPerk" // this pet has a perk attached
|
||||
ConditionFirstPet = "firstPet" // this is the first pet the side has played (Komodo)
|
||||
// ConditionEnemyAilment gates a battle effect on the enemy pet in play
|
||||
// carrying at least one Ailment (Unicorn pack: Mothman).
|
||||
ConditionEnemyAilment = "enemyAilment"
|
||||
// ConditionEvenRound gates a battle effect to even-numbered rounds (Unicorn
|
||||
// pack: Werewolf).
|
||||
ConditionEvenRound = "evenRound"
|
||||
)
|
||||
|
||||
// Ailment kinds (Unicorn pack). Ailments are temporary debuff cards attached to
|
||||
// a pet during battle; they stack and are removed at the end of the round.
|
||||
const (
|
||||
AilmentSpooked = "spooked" // the pet deals N less damage in a clash (min 0)
|
||||
AilmentExposed = "exposed" // the pet takes N extra damage each time it is hit
|
||||
)
|
||||
|
||||
// Effect is one trigger→action pair printed on a card.
|
||||
@@ -257,6 +367,22 @@ type Effect struct {
|
||||
// effect to fire (Golden pack). It's auto-paid when affordable and the
|
||||
// effect is skipped otherwise — battles take no player input.
|
||||
CostTrumpet int `json:"costTrumpet,omitempty"`
|
||||
// CostMana, when > 0, is a Mana cost paid the same way as CostTrumpet
|
||||
// (Unicorn pack). Unlike Trumpets, Mana persists across rounds.
|
||||
CostMana int `json:"costMana,omitempty"`
|
||||
// Ailment names the debuff an ActionAddAilment applies ("spooked" |
|
||||
// "exposed"); Count is how many (Unicorn pack).
|
||||
Ailment string `json:"ailment,omitempty"`
|
||||
// Eat, on an ActionAddAilment, also feeds the pet that many apples
|
||||
// (Calygreyhound spends 1 Mana to eat and spook in one ability).
|
||||
Eat int `json:"eat,omitempty"`
|
||||
// FromTier names a tier a battle effect pulls from — a discard pile (Chimera)
|
||||
// or a shop deck (Pixiu) — 1-based (Unicorn pack).
|
||||
FromTier int `json:"fromTier,omitempty"`
|
||||
// Once marks an After-Attack effect that fires at most once per battle
|
||||
// (Bulldog); without it the effect fires after every clash survived
|
||||
// (Behemoth).
|
||||
Once bool `json:"once,omitempty"`
|
||||
// SurviveOnly marks a Hurt effect that fires only when the pet lives through
|
||||
// the hit. By default a Hurt effect still fires on a fatal hit (the Lizard
|
||||
// drops its Bee even when killed); self-buffs that are pointless once the
|
||||
@@ -295,10 +421,14 @@ type Card struct {
|
||||
// Temporary cards (apples, bees) are removed from the deck after the
|
||||
// next battle.
|
||||
Temporary bool `json:"temporary,omitempty"`
|
||||
// Ailment marks a debuff card (Unicorn pack): "spooked" | "exposed". Set
|
||||
// together with Kind == KindAilment.
|
||||
Ailment string `json:"ailment,omitempty"`
|
||||
}
|
||||
|
||||
func (c Card) IsPet() bool { return c.Kind == KindPet }
|
||||
func (c Card) IsFood() bool { return c.Kind == KindFood }
|
||||
func (c Card) IsPet() bool { return c.Kind == KindPet }
|
||||
func (c Card) IsFood() bool { return c.Kind == KindFood }
|
||||
func (c Card) IsAilment() bool { return c.Kind == KindAilment }
|
||||
|
||||
// petTemplate is the printed definition of a pet. Suits lists the suit of
|
||||
// each physical copy in the tier deck (one card per entry).
|
||||
@@ -613,7 +743,7 @@ var goldenPetTiers = [MaxRounds][]petTemplate{
|
||||
},
|
||||
{
|
||||
Name: "Bulldog", Power: 2, Suits: []Suit{SuitRed, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerAfterAttack, Action: ActionEatApple}},
|
||||
Effects: []Effect{{Trigger: TriggerAfterAttack, Action: ActionEatApple, Once: true}},
|
||||
EffectText: "After Attacking: if it hasn't fainted, eat 1 Apple (once per round)",
|
||||
},
|
||||
{
|
||||
@@ -853,6 +983,294 @@ var goldenFoodTiers = [MaxRounds][]foodTemplate{
|
||||
},
|
||||
}
|
||||
|
||||
// unicornPetTiers defines the Unicorn pack's pets. Tiers 1-3 are printed;
|
||||
// tiers 4-6 are still being authored. Each pet ships as two copies (one per
|
||||
// listed suit). The pack adds two mechanics the others don't have: Mana (a
|
||||
// persistent resource spent to power abilities) and Ailments (Spooked/Exposed
|
||||
// debuffs attached to enemy pets during battle).
|
||||
var unicornPetTiers = [MaxRounds][]petTemplate{
|
||||
{ // Tier 1
|
||||
{
|
||||
Name: "Alchemedes", Power: 1, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionGainMana}},
|
||||
EffectText: "Play: gain 1 Mana",
|
||||
},
|
||||
{
|
||||
Name: "Cuddle Toad", Power: 2, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerBuy, Action: ActionGainMana}},
|
||||
EffectText: "Buy: gain 1 Mana",
|
||||
},
|
||||
{
|
||||
Name: "Pengobble", Power: 2, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionThrowRock, Count: 2, CostMana: 1}},
|
||||
EffectText: "Play: spend 1 Mana to throw 2 Rocks",
|
||||
},
|
||||
{
|
||||
Name: "Barghest", Power: 1, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentSpooked}},
|
||||
EffectText: "Play: add 1 Spooked to the enemy pet",
|
||||
},
|
||||
{
|
||||
Name: "Basilisk", Power: 1, Suits: []Suit{SuitRed, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentExposed}},
|
||||
EffectText: "Play: add 1 Exposed to the enemy pet",
|
||||
},
|
||||
{
|
||||
Name: "Baku", Power: 2, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerPassive, Action: ActionAilmentImmune}},
|
||||
EffectText: "Discard the first Ailment added to this pet",
|
||||
},
|
||||
},
|
||||
{ // Tier 2
|
||||
{
|
||||
Name: "Thunderbird", Power: 2, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{{Trigger: TriggerBuy, Action: ActionGainMana, Count: 2}},
|
||||
EffectText: "Buy: gain 2 Mana",
|
||||
},
|
||||
{
|
||||
Name: "Gargoyle", Power: 2, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionSummonTop, Card: "apple", Count: 2, CostMana: 1}},
|
||||
EffectText: "Faint: spend 1 Mana to add 2 Apples on top of your deck",
|
||||
},
|
||||
{
|
||||
Name: "Frost Wolf", Power: 2, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerFaint, Action: ActionAddAilment, Ailment: AilmentExposed},
|
||||
{Trigger: TriggerFaint, Action: ActionAddAilment, Ailment: AilmentExposed, Target: "enemyDeck"},
|
||||
},
|
||||
EffectText: "Faint: add 1 Exposed to the enemy pet and 1 on top of the enemy deck",
|
||||
},
|
||||
{
|
||||
Name: "Mothman", Power: 2, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionEatApple, Count: 2, Condition: ConditionEnemyAilment}},
|
||||
EffectText: "Play: if the enemy pet has an Ailment, eat 2 Apples",
|
||||
},
|
||||
{
|
||||
Name: "Nightcrawler", Power: 1, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentSpooked, Count: 2}},
|
||||
EffectText: "Play: add 2 Spooked to the enemy pet",
|
||||
},
|
||||
{
|
||||
Name: "Bigfoot", Power: 3, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerPassive, Action: ActionPeekShop}},
|
||||
EffectText: "Reveal from your hand to look at the top of the shop deck (once per round)",
|
||||
},
|
||||
},
|
||||
{ // Tier 3
|
||||
{
|
||||
Name: "Fur-Bearing Trout", Power: 2, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerFaint, Action: ActionGainMana},
|
||||
{Trigger: TriggerFaint, Action: ActionSummonTop, Card: "apple", Count: 2},
|
||||
},
|
||||
EffectText: "Faint: gain 1 Mana and add 2 Apples on top of your deck",
|
||||
},
|
||||
{
|
||||
Name: "Calygreyhound", Power: 3, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentSpooked, Eat: 1, CostMana: 1}},
|
||||
EffectText: "Play: spend 1 Mana to eat 1 Apple and add 1 Spooked to the enemy pet",
|
||||
},
|
||||
{
|
||||
Name: "Tatzelwurm", Power: 2, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionThrowRockGainMana, Count: 2}},
|
||||
EffectText: "Play: throw 2 Rocks, then gain 1 Mana for each blank rolled",
|
||||
},
|
||||
{
|
||||
Name: "Skeleton Dog", Power: 3, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerFaint, Action: ActionSummonTop, Card: "apple"},
|
||||
{Trigger: TriggerFaint, Action: ActionNextRoundApple},
|
||||
},
|
||||
EffectText: "Faint: add 1 Apple on top of your deck and 1 to your hand next round",
|
||||
},
|
||||
{
|
||||
Name: "Mandrake", Power: 2, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionNegateEnemyFaint}},
|
||||
EffectText: "Faint: set aside — the next enemy Faint ability does nothing",
|
||||
},
|
||||
{
|
||||
Name: "Lucky Cat", Power: 3, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerTriple, Action: ActionGainApple, Count: 3}},
|
||||
EffectText: "Triple: add 3 Apples to your hand",
|
||||
},
|
||||
{
|
||||
Name: "Slime", Power: 2, Suits: []Suit{SuitBlue, SuitRed},
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerFaint, Action: ActionReviveSelf},
|
||||
{Trigger: TriggerFaint, Action: ActionAddAilment, Ailment: AilmentExposed, Target: "enemyDeck"},
|
||||
},
|
||||
EffectText: "Faint: put this pet on top of your deck and 1 Exposed on the enemy deck (once per round)",
|
||||
},
|
||||
},
|
||||
{ // Tier 4
|
||||
{
|
||||
Name: "Roc", Power: 4, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerPlay, Action: ActionGainMana},
|
||||
{Trigger: TriggerSell, Action: ActionGainMana},
|
||||
},
|
||||
EffectText: "Play: gain 1 Mana · Sell: gain 1 Mana",
|
||||
},
|
||||
{
|
||||
Name: "Chimera", Power: 1, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionSummonFromDiscard, Count: 2, FromTier: 1, CostMana: 4}},
|
||||
EffectText: "Faint: spend 4 Mana to add 2 random cards from the tier 1 discard pile on top of your deck",
|
||||
},
|
||||
{
|
||||
Name: "Kraken", Power: 4, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentSpooked},
|
||||
{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentSpooked, Target: "enemyDeck"},
|
||||
},
|
||||
EffectText: "Play: add 1 Spooked to the enemy pet and 1 on top of the enemy deck",
|
||||
},
|
||||
{
|
||||
Name: "Unicorn", Power: 4, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionAilmentToApples}},
|
||||
EffectText: "Faint: set aside — replace the next friendly Ailment with 2 Apples on your deck",
|
||||
},
|
||||
{
|
||||
Name: "Abomination", Power: 4, Suits: []Suit{SuitYellow, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionGainAbility}},
|
||||
EffectText: "Play: reveal a random pet from the highest tier discard pile and gain its ability",
|
||||
},
|
||||
{
|
||||
Name: "Rootlin", Power: 4, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionSmallPetAura, Count: 1}},
|
||||
EffectText: "Faint: set aside — your pets with base Power 2 or less have +1 Power",
|
||||
},
|
||||
{
|
||||
Name: "Fairy", Power: 1, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionReviveNextFaint, CostMana: 3}},
|
||||
EffectText: "Faint: spend 3 Mana to set aside — the next friendly faint returns to the bottom of your deck",
|
||||
},
|
||||
},
|
||||
{ // Tier 5
|
||||
{
|
||||
Name: "Kitsune", Power: 2, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionGainMana, Per: PerFaintedPets}},
|
||||
EffectText: "Play: gain 1 Mana for each friendly fainted pet",
|
||||
},
|
||||
{
|
||||
Name: "Pixiu", Power: 2, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionSummonFromTierDeck, FromTier: 6, CostMana: 4}},
|
||||
EffectText: "Faint: spend 4 Mana to add the top card of the tier 6 deck on top of your deck",
|
||||
},
|
||||
{
|
||||
Name: "Red Dragon", Power: 2, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentExposed, Count: 2},
|
||||
{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentExposed, Count: 2, Target: "enemyDeck"},
|
||||
{Trigger: TriggerPlay, Action: ActionThrowRock, Count: 2},
|
||||
},
|
||||
EffectText: "Play: add 2 Exposed to the enemy pet and 2 on the enemy deck, then throw 2 Rocks",
|
||||
},
|
||||
{
|
||||
Name: "Amalgamation", Power: 1, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerPlay, Action: ActionEatApple, Per: PerFaintedPets},
|
||||
{Trigger: TriggerPlay, Action: ActionAddAilment, Ailment: AilmentSpooked, Count: 2},
|
||||
},
|
||||
EffectText: "Play: eat 1 Apple per friendly fainted pet, then add 2 Spooked to the enemy pet",
|
||||
},
|
||||
{
|
||||
Name: "Vampire Bat", Power: 3, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionRockThenEat, Count: 2, Condition: ConditionEnemyAilment}},
|
||||
EffectText: "Play: if the enemy pet has an Ailment, throw 2 Rocks, then eat Apples equal to the damage dealt",
|
||||
},
|
||||
{
|
||||
Name: "Werewolf", Power: 2, Suits: []Suit{SuitRed, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionEatApple, Count: 6, Condition: ConditionEvenRound}},
|
||||
EffectText: "Play: on an even-numbered round, eat 6 Apples",
|
||||
},
|
||||
{
|
||||
Name: "Loveland Frogman", Power: 2, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionBounceEnemy}},
|
||||
EffectText: "Play: put the enemy pet on the bottom of the enemy deck",
|
||||
},
|
||||
},
|
||||
{ // Tier 6
|
||||
{
|
||||
Name: "Sleipnir", Power: 0, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerPassive, Action: ActionManaPower, Cap: 9}},
|
||||
EffectText: "This pet's base Power equals your Mana (max 9)",
|
||||
},
|
||||
{
|
||||
Name: "Sea Serpent", Power: 4, Suits: []Suit{SuitYellow, SuitRed},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionSpendManaRocks}},
|
||||
EffectText: "Play: spend any number of Mana to throw that many Rocks",
|
||||
},
|
||||
{
|
||||
Name: "Bakunawa", Power: 3, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionSpendManaSpook}},
|
||||
EffectText: "Play: spend any number of Mana to add that many Spooked to the enemy pet",
|
||||
},
|
||||
{
|
||||
Name: "Manticore", Power: 6, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionAilmentBoost, Count: 1}},
|
||||
EffectText: "Faint: set aside — Ailments on enemy pets count for 1 more",
|
||||
},
|
||||
{
|
||||
Name: "Team Spirit", Power: 4, Suits: []Suit{SuitYellow, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerFaint, Action: ActionManaFeedOnPlay, Count: 2}},
|
||||
EffectText: "Faint: set aside — each pet you play, spend 1 Mana to feed it 2 Apples",
|
||||
},
|
||||
{
|
||||
Name: "Behemoth", Power: 6, Suits: []Suit{SuitBlue, SuitYellow},
|
||||
Effects: []Effect{{Trigger: TriggerAfterAttack, Action: ActionEatApple, Count: 2}},
|
||||
EffectText: "After Attacking: if it hasn't fainted, eat 2 Apples",
|
||||
},
|
||||
{
|
||||
Name: "Quetzalcoatl", Power: 6, Suits: []Suit{SuitRed, SuitBlue},
|
||||
Effects: []Effect{{Trigger: TriggerBuy, Action: ActionRevealTierForApples, Count: 3, Cap: 3}},
|
||||
EffectText: "Buy: reveal a tier 3 or lower pet from your hand to gain 3 Apples",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// unicornFoodTiers defines the Unicorn pack's food cards (tiers 1-3 printed).
|
||||
var unicornFoodTiers = [MaxRounds][]foodTemplate{
|
||||
{}, // Tier 1
|
||||
{ // Tier 2
|
||||
{
|
||||
Name: "Fairy Dust", Food: FoodFairyDust, Copies: 2, Perk: true,
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionGainMana}},
|
||||
EffectText: "Play: gain 1 Mana",
|
||||
},
|
||||
},
|
||||
{ // Tier 3
|
||||
{
|
||||
Name: "Water of Youth", Food: FoodWaterOfYouth, Copies: 2,
|
||||
Effects: []Effect{{Trigger: TriggerBuy, Action: ActionUpgradeNextTier}},
|
||||
EffectText: "Buy: discard this and a pet to buy the top of the next tier for free",
|
||||
},
|
||||
},
|
||||
{ // Tier 4
|
||||
{
|
||||
Name: "Health Potion", Food: FoodHealthPotion, Copies: 2, Perk: true,
|
||||
Effects: []Effect{{Trigger: TriggerHurt, Action: ActionHeal, Count: 3, SurviveOnly: true}},
|
||||
EffectText: "Hurt: if this pet hasn't fainted, heal 3 damage",
|
||||
},
|
||||
},
|
||||
{ // Tier 5
|
||||
{
|
||||
Name: "Big Mana Potion", Food: FoodBigManaPotion, Copies: 2, Perk: true,
|
||||
Effects: []Effect{{Trigger: TriggerPlay, Action: ActionGainMana, Count: 3}},
|
||||
EffectText: "Play: gain 3 Mana",
|
||||
},
|
||||
},
|
||||
{ // Tier 6
|
||||
{
|
||||
Name: "Cornucopia", Food: FoodCornucopia, Copies: 2, Perk: true,
|
||||
Effects: []Effect{
|
||||
{Trigger: TriggerPlay, Action: ActionEatApple, Count: 2},
|
||||
{Trigger: TriggerPlay, Action: ActionSummonTop, Card: "apple", Count: 2},
|
||||
},
|
||||
EffectText: "Play: eat 2 Apples and add 2 Apples on top of your deck",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// newCardID mints a unique card ID within the game.
|
||||
func (g *Game) newCardID() string {
|
||||
g.NextCardID++
|
||||
@@ -866,6 +1284,8 @@ func packTiers(pack string) (*[MaxRounds][]petTemplate, *[MaxRounds][]foodTempla
|
||||
switch pack {
|
||||
case "golden":
|
||||
return &goldenPetTiers, &goldenFoodTiers
|
||||
case "unicorn":
|
||||
return &unicornPetTiers, &unicornFoodTiers
|
||||
default: // turtle (and the placeholder packs, until they ship)
|
||||
return &petTiers, &foodTiers
|
||||
}
|
||||
@@ -981,6 +1401,23 @@ func (g *Game) newApple() Card {
|
||||
}
|
||||
}
|
||||
|
||||
// newAilment mints an ailment debuff card (Unicorn pack). It is temporary — it
|
||||
// leaves play at the end of the round, like an apple — and belongs to no deck
|
||||
// until an effect attaches it to a pet or drops it on a deck.
|
||||
func (g *Game) newAilment(kind string) Card {
|
||||
name := "Spooked"
|
||||
if kind == AilmentExposed {
|
||||
name = "Exposed"
|
||||
}
|
||||
return Card{
|
||||
ID: g.newCardID(),
|
||||
Kind: KindAilment,
|
||||
Name: name,
|
||||
Ailment: kind,
|
||||
Temporary: true,
|
||||
}
|
||||
}
|
||||
|
||||
// newBee mints a bee: a temporary 1-power pet with no effect, summoned by
|
||||
// other pets' effects. It counts as a pet while it exists (foods can attach
|
||||
// to it in battle).
|
||||
|
||||
Reference in New Issue
Block a user