puresteel paladin...removed from supported...added to unsupported.
I have no idea why, but this card has cause a surge of completely different bug reports, crashes, strange interactions between cards, you name it...im surprised we didn't receive a report that it caused someone dog to die of heartworms....
anyways if i find some time, i will debug this pandora's box of a code and see why exactly it causes such strange difficult to reproduce bugs.
ok this target chooser is set apart from the others becuase it focuses on relationship between cards instead of other forms of checking, also i made sure to add a method for deeper Targeting.
it is the same as any other target chooser when it comes to writeing the syntax and can be used in almost every way a normal one can.
here is what i mean by deeper targeting
this targetchooser allows you to denote a nested targetchooser.
target(children[targerchooser])
all(parents[targetchooser])
it is plural becuase i do allow maxtargeting to be denoted here. lets say you want to have a domain that lets you do the following
"2 of my target inhabitants get +1/+1 until end of turn"
you can do this...
auto={0}:target(<2>children) +1/+1 ueot
how about even more complex?
auto={0}:target(<2>children[elf[power=1]]) +1/+1
2 of my children that are elves with power equal to 1.
the same goes for parents, you can also lord( with this targetchooser.
if you want to say
"the inhabitants of this domain gain flying"
auto=lord(children) flying
here are some example coding that you can play around with.
[card]
name=Forest
text=G
auto=lord(children[elf]) +3/+3
auto={0}:target(<2>children) +12/+12
type=Basic Land
subtype=Forest
[/card]
[card]
name=Tidal Kraken
abilities=unblockable
target=land|mybattlefield
auto=connect
auto={0}:target(parents) destroy
text=Tidal Kraken is unblockable.
mana={0}
type=Creature
subtype=Kraken
power=6
toughness=6
[/card]
[card]
name=Arbor Elf
target=<upto:3>land|mybattlefield
auto=connect
auto=foreach(parents[forest]) 1/1
mana={0}
type=creature
subtype=elf
power=1
toughness=1
[/card]
*above, arbor elf can target upto 3 domains...for each one you choose to connect him to that is a forest, arbor elf would gain 1/1..
so as you can see it is pretty indepth.
note: all test pass.
target=*|mybattlefield
auto={0}:equip
auto=connect
notice i declare the equip before the connect, this is becuase connect will use the equip ability of the card to handle it.
target= can be used for connecting them now as the first time equip. please remember to use teach( or autoskill= to avoid giving abilities forever to a target...this makes equipments hybrid auras.
also, moved parentchildrule init from original init to rules.txt...
in yourrules.txt
should look like this:
include mtg.txt
name=Classic
[INIT]
mode=mtg
auto=connectrule
[PLAYERS]
auto=shuffle
auto=draw:7
i did this becuase i want to reuse the parentchild associations for mtgabilities...and if parents will always kill thier children, i won't be able to use it :P
changed connect into an instant ability, i don't want this ability to be done by menu choice.
added parentchildrule which currently only handles the removel of children if a parent dies, but will be extended to handle other actions based on event receiving that deal with child and parent association.
add keyword targetable ability "connect"
connect means "the source adds the target to it's parent vector, the target adds the source to it's children vector"
this can be multitargeted, so it is possible that
"Big Bad Dragon" can live it 2 different domains.
not sure if this was even asked for, but i thought it would be cool to be able to say
"to play big bad creature you need to give it 2 homes"
or
"big bad creature can live in upto 4 homes"
this adds a level of stratigy, becuase now big bad creature can have "all creatures which share a domain with big bad creature gain +2/+2"...or "all domains that city planner live in gain 1 capacity"
but also add the possibility of faster removel from a card like
"destroy all creatures on target domain".
i thought it would be a nice add to kai rules.
connect clears a target= on a card after connecting...this is to avoid abilities transfering to the target, unless you want it to effect the target like
"tap target domain as this becomes a inhabatant"
target=domain
auto=tap
auto=connect
auto=<==this line on will not be targeting the domain
refactored some of the initialization code
left place holder for Zoom in/out with pinch recognizer. The idea here is to make a virtual function like OnScroll for Zoom so we can take care of the zoom features natively.
reorganized some of the method declarations.
moved debug framerate message to be 10px higher. current position covers the credit count on the game shop screens.
changed hard coded numeric values for menu ids to Labels. ( this was done only to GameStateAward )
small add with big impact:
added the useage of castrestriction on triggers and activated abilities.
this can be used to create such cards as library of alexandria.
{t}:draw:1 restriction{type(*|myhand)~equalto~7}
and replace instances were we were putting false triggers on the stack from abilities which contained nested aslongas...
meaning cards like epic struggle, won't need to be triggered every turn even if you have no creatures...
for epic struggle here is an example of how to replace it
@each myupkeep restriction{type(creature|mybattlefield)~morethan~19}:wingame controller
any of the current cast and other restrictions can be used. this includes turn:1 <===and various others such as phase based checking.
syntax is
restriction{ whatever casting/other restriction you want }
a nice quality of life fix for false triggers (which don't mean theyre incorrect, just annoying when they trigger when they will do nothing)
another example would be the triggers on cards like
skullcage.
auto=@each opponent upkeep:aslongas(*|opponenthand) damage:2 opponent >4
auto=@each opponent upkeep:aslongas(*|opponenthand) damage:2 opponent <3
becomes
auto=@each opponent upkeep restriction{type(*|opponenthand)~morethan~4}:damage:2 opponent
auto=@each opponent upkeep restriction{type(*|opponenthand)~lessthan~3}:damage:2 opponent
now instead of triggering every opponent upkeep even without a resolve...it will only triggers when the restriction requirement is met.
enjoy :)
note:all test pass.
* Single Tap now implemented
* Touch and Hold (2 secs) to pop up menu
* added a pan gesture to simulate flicking up/down and left/right
* removed dependency on binding keys to game for iOS devices. (perhaps extend this to all touch devices.)
* flicking motion needs to be expanded to allow for smooth scrolling. Right now every flick is equivalent to going one slot up/down/left/right.
-- Most of the added cards are from recent sets and unhinged.
- removed Cinder Seer from Borderline as it seems a more accurate version is in crappy
*** Removed from unsupported.txt because they also exist in other files:
Ancient Ooze was in supported files but also in unsupported ones
Blood Moon was in supported files but also in unsupported ones
Custody Battle was in supported files but also in unsupported ones
Deglamer was in supported files but also in unsupported ones
Flourishing Defenses was in supported files but also in unsupported ones
Fylgja was in supported files but also in unsupported ones
Glowering Rogon was in supported files but also in unsupported ones
Magus of the Unseen was in supported files but also in unsupported ones
Mana Chains was in supported files but also in unsupported ones
Mana Echoes was in supported files but also in unsupported ones
Melira's Keepers was in supported files but also in unsupported ones
Nullmage Advocate was in supported files but also in unsupported ones
Orim's Thunder was in supported files but also in unsupported ones
Overwhelming Instinct was in supported files but also in unsupported ones
Preeminent Captain was in supported files but also in unsupported ones
Protean Hydra was in supported files but also in unsupported ones
Renewing Touch was in supported files but also in unsupported ones
Renounce was in supported files but also in unsupported ones
Riptide Survivor was in supported files but also in unsupported ones
Rise from the Grave was in supported files but also in unsupported ones
Sky Hussar was in supported files but also in unsupported ones
Tatterkite was in supported files but also in unsupported ones
Tidal Warrior was in supported files but also in unsupported ones
Twigwalker was in supported files but also in unsupported ones
Wu Scout was in supported files but also in unsupported ones
Examples:
# COUNTER-MOVING CARDS #
[card]
name=Ghave, Guru of Spores
auto=counter(1/1,5)
auto={1}{C(1/1,-1),creature|mybattlefield}:token(Saproling,Creature Saproling,1/1,green)
auto={1}{S(creature|mybattlefield}:counter(1/1,1) target(creature)
text=Ghave, Guru of Spores enters the battlefield with five +1/+1 counters on it. -- {1}, Remove a +1/+1 counter from a creature you control: Put a 1/1 green Saproling creature token onto the battlefield. -- {1}, Sacrifice a creature: Put a +1/+1 counter on target creature.
mana={2}{B}{G}{W}
type=Legendary Creature
subtype=Fungus Shaman
power=0
toughness=0
[/card]
# IF...THEN #
[card]
name=Goblin Goon
auto=@each my attackers:if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then transforms((,cantattack)) ueot
auto=@each my blockers:if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then transforms((,cantblock)) ueot
text=Goblin Goon can't attack unless you control more creatures than defending player. -- Goblin Goon can't block unless you control more creatures than attacking player.
mana={3}{R}
type=Creature
subtype=Goblin Mutant
power=6
toughness=6
[/card]
[card]
name=Pulse of the Tangle
auto=token(Beast,Creature Beast,3/3,green)
auto=if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then moveto(myhand)
text=Put a 3/3 green Beast creature token onto the battlefield. Then if an opponent controls more creatures than you, return Pulse of the Tangle to its owner's hand.
mana={1}{G}{G}
type=Sorcery
[/card]
# MULTIKICKER #
[card]
name=Joraga Warcaller
auto=kicker counter(1/1,kicked)
kicker=multi{1}{G}
auto=thisforeach(counter{1/1.1}) lord(other elf|myBattlefield) 1/1
text=Multikicker {1}{G} (You may pay an additional {1}{G} any number of times as you cast this spell.) -- Joraga Warcaller enters the battlefield with a +1/+1 counter on it for each time it was kicked. -- Other Elf creatures you control get +1/+1 for each +1/+1 counter on Joraga Warcaller.
mana={G}
type=Creature
subtype=Elf Warrior
power=1
toughness=1
[/card]
# PROLIFERATE #
[card]
name=Contagion Clasp
auto=counter(-1/-1,1) target(creature)
auto={4}{T}:target(proliferation) proliferate
text=When Contagion Clasp enters the battlefield, put a -1/-1 counter on target creature. -- {4}, Tap: Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.)
mana={2}
type=Artifact
[/card]
# MULTI-TARGET #
[card]
name=Argothian Elder
auto={T}:target(<2>land) untap
text={T}: Untap two target lands.
mana={3}{G}
type=Creature
subtype=Elf Druid
power=2
toughness=2
[/card]
[card]
name=Aven Augur
abilities=flying
auto={S}:target(<upto:2>other creature) moveTo(ownerhand) myUpkeepOnly
text=Flying -- Sacrifice Aven Augur: Return up to two target creatures to their owners' hands. Activate this ability only during your upkeep.
mana={3}{U}
type=Creature
subtype=Bird Wizard
power=2
toughness=2
[/card]
[card]
name=Bone Harvest
target=<anyamount>creature|mygraveyard
auto=moveTo(mylibrary)
auto=@next upkeep:draw:1 controller
text=Put any number of target creature cards from your graveyard on top of your library. -- Draw a card at the beginning of the next turn's upkeep.
mana={2}{B}
type=Instant
[/card]
Test suite tests will follow on weekend.
Have fun!