Board index
Programs with AI or Rules Enforcement
Magic: The Gathering - Duels of the Planeswalkers
Programming Talk



How to tap your own land
Moderator: CCGHQ Admins
How to tap your own land
by Shatterhouse » 05 Jul 2011, 03:20
Okay.
You can sort of enable manual land tapping. (AWESOME!)
But you have to implement it on every single spell. (BOGUS!)
Anyway, here's an example. Normally this spell would cost 1B. First, we reduce all the colorless mana in its cost to zero while it's in your hand. Second, we add an additional utility cost to the spell that requires you to tap an untapped land. Third, we prevent the spell from being cast if you have less than two lands untapped. So when you go to cast the spell, the required swamp will tap itself, and you can choose any other land you want to pay the colorless cost. Seen here:
You can sort of enable manual land tapping. (AWESOME!)
But you have to implement it on every single spell. (BOGUS!)
Anyway, here's an example. Normally this spell would cost 1B. First, we reduce all the colorless mana in its cost to zero while it's in your hand. Second, we add an additional utility cost to the spell that requires you to tap an untapped land. Third, we prevent the spell from being cast if you have less than two lands untapped. So when you go to cast the spell, the required swamp will tap itself, and you can choose any other land you want to pay the colorless cost. Seen here:
- Code: Select all
<UTILITY_ABILITY layer="0">
<COST qualifier="Additional" type="Tap">
<TARGET_DETERMINATION>
Object():GetFilter():AddExtra( FILTER_EXTRA_CREATURE_UNTAPPED )
return TargetLandYouControl()
</TARGET_DETERMINATION>
<PLAYTIME>
ChooseTarget( "ChooseLandToTap" )
</PLAYTIME>
</COST>
</UTILITY_ABILITY>
<STATIC_ABILITY zone="Hand" influencing_zone="Hand" layer="0">
<EFFECT>
Object():DecreaseCost( 1 )
</EFFECT>
</STATIC_ABILITY>
<STATIC_ABILITY zone="Hand" layer="0">
<EFFECT>
Object():GetFilter():Clear()
Object():GetFilter():SetZone( ZONE_IN_PLAY )
Object():GetFilter():AddCardType( CARD_TYPE_LAND )
Object():GetFilter():SetController( Object():GetController() )
Object():GetFilter():NotTargetted()
Object():GetFilter():AddExtra( FILTER_EXTRA_CREATURE_UNTAPPED )
if Object():GetFilter():Count() <2 then
CantBePlayed()
end
</EFFECT>
</STATIC_ABILITY>
- Shatterhouse
- Posts: 72
- Joined: 20 Apr 2011, 00:07
- Has thanked: 0 time
- Been thanked: 2 times
Re: How to tap your own land
by IceManOnline » 05 Jul 2011, 05:49
Or you could simply add the tap -> mana function to the lands and tap lands before you cast spells 

- IceManOnline
- Posts: 80
- Joined: 12 Dec 2010, 19:00
- Has thanked: 0 time
- Been thanked: 0 time
Re: How to tap your own land
by kevlahnota » 05 Jul 2011, 06:39
Will there be a problem if the AI or the player taps the land like Icy Manipulator? or any instant spells that taps the land?
Shatterhouse wrote:Okay.
You can sort of enable manual land tapping. (AWESOME!)
But you have to implement it on every single spell. (BOGUS!)
Anyway, here's an example. Normally this spell would cost 1B. First, we reduce all the colorless mana in its cost to zero while it's in your hand. Second, we add an additional utility cost to the spell that requires you to tap an untapped land. Third, we prevent the spell from being cast if you have less than two lands untapped. So when you go to cast the spell, the required swamp will tap itself, and you can choose any other land you want to pay the colorless cost. Seen here:
- Code: Select all
<UTILITY_ABILITY layer="0">
<COST qualifier="Additional" type="Tap">
<TARGET_DETERMINATION>
Object():GetFilter():AddExtra( FILTER_EXTRA_CREATURE_UNTAPPED )
return TargetLandYouControl()
</TARGET_DETERMINATION>
<PLAYTIME>
ChooseTarget( "ChooseLandToTap" )
</PLAYTIME>
</COST>
</UTILITY_ABILITY>
<STATIC_ABILITY zone="Hand" influencing_zone="Hand" layer="0">
<EFFECT>
Object():DecreaseCost( 1 )
</EFFECT>
</STATIC_ABILITY>
<STATIC_ABILITY zone="Hand" layer="0">
<EFFECT>
Object():GetFilter():Clear()
Object():GetFilter():SetZone( ZONE_IN_PLAY )
Object():GetFilter():AddCardType( CARD_TYPE_LAND )
Object():GetFilter():SetController( Object():GetController() )
Object():GetFilter():NotTargetted()
Object():GetFilter():AddExtra( FILTER_EXTRA_CREATURE_UNTAPPED )
if Object():GetFilter():Count() <2 then
CantBePlayed()
end
</EFFECT>
</STATIC_ABILITY>
-
kevlahnota - Programmer
- Posts: 825
- Joined: 19 Jul 2010, 17:45
- Location: Philippines
- Has thanked: 14 times
- Been thanked: 264 times
Re: How to tap your own land
by Shatterhouse » 05 Jul 2011, 23:49
re: Kev, no, UTILITY_ABILITY works as an additional cost to cast the spell and cannot be responded to. It's not like the triggered ability I used to mimic phyrexian mana, which could be responded to if the casting of the spell triggered something like Dragon's Claw.
re: Iceman, you could do that, but then you still have the problem with multicolor decks using up the colors you'd rather save for later. I've seen the game sometimes prefer to tap real lands over token lands for some reason. Unless there's a way to turn basic lands off so they can't be tapped automatically... My pet peeve with mana tokens is that it makes games take way longer overall. But it's nice this way. Casting spells is still quick and easy.
re: Iceman, you could do that, but then you still have the problem with multicolor decks using up the colors you'd rather save for later. I've seen the game sometimes prefer to tap real lands over token lands for some reason. Unless there's a way to turn basic lands off so they can't be tapped automatically... My pet peeve with mana tokens is that it makes games take way longer overall. But it's nice this way. Casting spells is still quick and easy.
- Shatterhouse
- Posts: 72
- Joined: 20 Apr 2011, 00:07
- Has thanked: 0 time
- Been thanked: 2 times
4 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 6 guests