Skip to content

Spy Cards

Spy Cards data are split in 4 TextAssets in the game only loaded during the course of a CardGame (everything is handled independently by CardGame, not MainManager):

  • By LoadCardData:
    • Ressources/data/CardData
    • CardText from the corresponding dialogue directory of the current languageid
  • By CardStart:
    • Ressources/data/CardOrder

The CardData is also loaded during the course of Events 210 (Spy Card tournament event).

CardData data

The asset contains one line per Spy Card whose id corresponds to the line index. Each line contains fields separated by ,:

Name Type Description
tp int The cost of the card in TP
attack int The attack value of the card
enemyid int The Enemy id this card is bound to
namesizeX (unused) float The unused version of namesizeX
type Type (int only) The type of the card
effects @ separated list of effects The effects of the card (see below for details)
tribe @ separated list of Tribe (int only) The list of tribes this card belongs to

The data will be loaded into carddata[id], where id is the Spy Card id using the respective fields of a CardData struct except for namesizeX which is not loaded from here, it's loaded from CardText.

A Type can be one of the following values:

Value Name
0 Attacker
1 Effect
2 Miniboss
3 Boss

A Tribe can be one of the following values:

Value Name
0 Seedling
1 Wasp
2 Fungi
3 Zombie
4 Plant
5 Bug
6 Machine
7 Thief
8 Unknown
9 Chomper
10 Leafbug
11 DeadLander
12 Mothfly
13 Spider

A card effect contains 3 fields separated by #:

Name Type Description
Effect Effects (int only) The specific effect this has
First parameter int The first parameter of the effect
Second parameter int The second parameter of the effect

The first and second parameters's meaning depends on the effect. Here are the valid values for an Effects:

Value Name
0 Attack
1 Defense
2 RandomMiniboss
3 Heal
4 HealIfWin
5 Summon
6 AttackOnCoin
7 DefenseOnCoin
8 SummonOnCoin
9 NumbFront
10 NumbFrontCoin
11 MultiplyPerTribe
12 AttackPerTribe
13 MultiplyAttackPerID
14 NumbAll
15 NumbAllCoin
16 DamageOnWin
17 AttackPerID
18 AttackIfOtherCard
19 HealIfOtherCard
20 AttackIfOpponentID
21 AttackIfOpponentTribe
22 MultiplyIfOpponentID
23 MultiplyIfOpponentTribe
24 DefenseIfOpponentID
25 DefenseIfOpponentTribe
26 IgnoreDefense
27 HealIfAttackAmmount
28 AttackPerOpponentTribe
29 AttackPerOpponentID
30 DefensePerOpponentTribe
31 DefensePerOpponentID
32 AttackOrDefenseCoin
33 HealIfWinOnce
34 AttackPerTribeOnce
35 AttackPerIDOnce
36 AttackOnce
37 Heal1OnTribeQuanity
38 NumbIfTribeAmmount
39 SummonRandomFromTribe
40 NumbIfOtherCard
41 DefenseOnOtherCard
42 AttackNextTurn

TODO: Document the specific effects.

CardText data

The asset contains one line per Spy Card whose id corresponds to the line index. Each line contains fields separated by @:

Name Type Description
Description SetText string The description of the card
namesizeX float The horizontal scaling to apply to the SetText string of the Enemy's name

The data will be loaded into carddata[id], where id is the Spy Card id using the respective fields of a CardData struct.

It should be noted that namesizeX is ignored when the languageid is set to Japanese. Under that language, there is no scaling applied horizontally if the Enemy name is at most 3 characters. If the name is longer, then it's a Lerp from 0.45 to 1.0 where the value is 1 - the length of the name string / 10.0.

How the namesizeX work is normally, the SetText call for the enemy name is sent with a size parameter of (0.5, 0.5), but the field is multiplied by the horizontal component. A value of 1.0 means 0.5 while a value of 0.5 means 0.25. It does not change the vertical component, only the horizontal one.

CardOrder data

The asset contains the order to render the Spy Cards in the Spy Cards List Type where each line contains one field:

Name Type Description
Spy Card id int The Spy Card id of the card to render at the position of the line index

The data will be loaded into order[i] where i is the line index.