Miscs

Abilities

Abilities :=

| justAbilities(ChargeAbil, TauntAbil, StealthAbil, UntargetableAbil, ShieldAbil, PoisonousAbil, LifestealAbil)

DmgAbilities :=

| dmgAbilities(PoisonousAbil, LifestealAbil)

ChargeAbil :=

| noCharge()

| justCharge()

TauntAbil :=

| noTaunt()

| justTaunt()

StealthAbil :=

| noStealth()

| justStealth()

UntargetableAbil :=

| noUntargetable()

| justUntargetable()

ShiledAbil :=

| noShield()

| justShield()

PoisonousAbil :=

| noPoisonous()

| justPoisonous()

LifestealAbil :=

| noLifesteal()

| justLifesteal()

Abilities is for representing the set of abilities generated below the Root for the card. There are seven possible abilities, and their functionality is defined on the game mechanism page. As different abilities can co-exist, the formulation here is a decomposition into seven parts and each part is followed by a binary stochastic expansion indicating whether or not it has the ability. DmgAbility is used with damage effects (see the Effects page) to add Poisonous and/or Lifesteal abilities particularly to spells. Leaders are constrained not to get Stealth ability, and spells cannot get Charge, Taunt, Stealth or Shield ability and they can only get Poisonous and Lifesteal abilities through DmgAbility if there are damage effects on it (i.e. the Abilities node below the Root can only possibly generate Untargetability ability for a spell, which prevent them from being targeted at your hand by targeted effects).

Destination

Destination :=

| fieldDest(AlleCond)

| ownerFieldDest()

| handDest(AlleCond)

| ownerHandDest()

| deckDest(AlleCond)

| ownerDeckDest()

Destination is for representing the destination for a movement type effects (move, copy) or for effects spawning new cards (see the Effects page). There two main form of destinations. The first form (fieldDest, handDest, deckDest) is to some side(s)' field/hand/deck, where the side is specified by an AlleCond node (see the Conditions page), and the allegiance (sides) is relative to the source of the effect (the character/card where the enclosed effect is on). The second form is to the owner(s)' field/hand/deck, in which case each applicable target will be moved to its owner's field/hand/deck, regardless of which side the source of the effect is.

NewCardVariant

NewCardVariant :=

| plainMinion(Card)

| plainMinionCard(Card)

| fixedMinion(Card)

| fixedCard(Card)

| randomMinion(int)

| randomCard(int)

NewCardVariant is for representing what new card to present when transformation effects or effects spawning new cards (see the Effects page) are triggered. There are two main form of new card variants. The first form (plainMinion, plainMinionCard, fixedMinion, fixedCard) is static versions where the new card is decided at the time this source card is generated. For this form we need to generate the new card (the whole card, including a new item tree leaded by a new CardRoot, but wrapped in an object representing the card, following the convention of GIGL) when generating the source card and when the effect is triggered, the same card is copied out for transformation or spawning each time. The plain minion versions are just simpler version having no effects and single attack (can have abilities though) which relatively common versions. The second form (randomMinion, randomCard) is dynamic versions where the new card is stochastically generated only when the effect is triggered. When generating the source card, only an integer (mana cost) needs to be determined (in the range of 0 ~10). In an effect spawning new cards, when dynamically randomized cards are spawned for both sides, both sides gets the same set of randomized cards (duplicate pairs).