Board index
Programs with AI or Rules Enforcement
Magic: The Gathering - Duels of the Planeswalkers
New MTG Cards and Decks (2010, 2012, 2013, 2014, 2015, Magic Duels)
![](./styles/solarsentinel/theme/images/arrow.png)
![](./styles/solarsentinel/theme/images/arrow.png)
![](./styles/solarsentinel/theme/images/arrow.png)
Lands Only Request Thread
User-made mods in DLC (Downloadable Content) form.
Get MTG cards here for your DotP that aren't available anywhere else!
Get MTG cards here for your DotP that aren't available anywhere else!
Moderator: CCGHQ Admins
Re: Lands Only Request Thread
by sumomole » 08 May 2013, 12:43
The last ability of Alchemist's Refuge applies to nonland cards in any zone, provided something is allowing you to cast them. For example, you could cast a sorcery with flashback as though it had flash.Blue Ghost wrote:I'm currently working on Alchemist's Refuge. I can't get it working, and I can't figure out why. Can someone help?
PS: "as though they had flash" doesn't mean the flash characteristic, it can't be found by Mystical Teachings and other similar effect, so I suggest that only includes the top card of the deck when you control Future Sight or other similar effect.
-
sumomole - Programmer
- Posts: 611
- Joined: 07 Jun 2011, 08:34
- Has thanked: 51 times
- Been thanked: 234 times
Re: Lands Only Request Thread
by Blue Ghost » 09 May 2013, 04:50
Thanks for the help, guys! Here's Alchemist's Refuge. Couldn't find an image on Google. Is there a better place to look for images?
- Attachments
-
ALCHEMISTS_REFUGE_240194.zip
- (1.45 KiB) Downloaded 489 times
- Blue Ghost
- Posts: 52
- Joined: 07 Apr 2013, 20:41
- Has thanked: 6 times
- Been thanked: 0 time
Re: Lands Only Request Thread
by thefiremind » 09 May 2013, 09:09
When you can't find a good picture anywhere else, go for the scans made by this forum's scan team:Blue Ghost wrote:Couldn't find an image on Google. Is there a better place to look for images?
viewtopic.php?f=15&t=445
You could also find some art through the trick explained here:
http://community.wizards.com/go/thread/ ... rt_Gallery
but not for cards that are too old or too recent, and scans are usually better than the 300px pictures you usually find this way.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
Currently busy with life...
-
thefiremind - Programmer
- Posts: 3515
- Joined: 07 Nov 2011, 10:55
- Has thanked: 118 times
- Been thanked: 721 times
Re: Lands Only Request Thread
by Kieran » 11 May 2013, 13:19
Blue Ghost, thanks! I've updated the first post to reflect your contribution. Alchemist's Refuge is a land I really wanted for a Simic deck I'm putting together.
Re: Lands Only Request Thread
by NEMESiS » 12 May 2013, 18:15
Here are some of the lands that I have made:
Crumbling Necropolis
Urzatron (Urza's Tower, Urza's Power Plant, Urza's Mine)
Akoum Refuge
Jwar Isle Refuge
I will try to make few more later.
EDIT: Note that Crumbling Necropolis, Akoum Refuge and Jwar Isle Refuge need the functions folder to work. "Urzatron" its stand alone.
Crumbling Necropolis
Urzatron (Urza's Tower, Urza's Power Plant, Urza's Mine)
Akoum Refuge
Jwar Isle Refuge
I will try to make few more later.
EDIT: Note that Crumbling Necropolis, Akoum Refuge and Jwar Isle Refuge need the functions folder to work. "Urzatron" its stand alone.
- Attachments
-
Lands.zip
- (1.56 MiB) Downloaded 514 times
Last edited by NEMESiS on 13 May 2013, 12:40, edited 1 time in total.
-
NEMESiS - Posts: 460
- Joined: 03 Jan 2013, 04:02
- Location: Pools of Becoming
- Has thanked: 70 times
- Been thanked: 21 times
Re: Lands Only Request Thread
by East Bay » 12 May 2013, 20:01
It's not on you're list but I did Wasteland
- Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2>
<FILENAME text="WASTELAND_4944" />
<CARDNAME text="WASTELAND" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Wasteland]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Wasteland]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Wasteland]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wasteland]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Wasteland]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Wasteland]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Wasteland]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Wasteland]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Wasteland]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="4944" />
<ARTID value="WASTELAND" />
<ARTIST name="Una Fricker" />
<CASTING_COST cost="" />
<FLAVOURTEXT>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[“The land promises nothing and keeps its promise.”
—Oracle en-Vec]]></LOCALISED_TEXT>
</FLAVOURTEXT>
<TYPE metaname="Land" />
<EXPANSION value="TE" />
<RARITY metaname="U" />
<MANA_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Aggiungi {1} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Add {1} to your mana pool.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<PRODUCES amount="{1}" />
</MANA_ABILITY>
<ACTIVATED_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}, Sacrifice Wasteland: Destroy target nonbasic land.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T}, Sacrifice Wasteland: Destroy target nonbasic land.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}, Sacrifice Wasteland: Destroy target nonbasic land.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}, Sacrifice Wasteland: Destroy target nonbasic land.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}, Sacrifica le Lande Desolate: Distruggi una terra non base bersaglio.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}, Sacrifice Wasteland: Destroy target nonbasic land.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}, Sacrifice Wasteland: Destroy target nonbasic land.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}, Sacrifice Wasteland: Destroy target nonbasic land.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}, Sacrifice Wasteland: Destroy target nonbasic land.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<COST type="SacrificeSelf" />
<TARGET_DEFINITION id="0">
local filter = Object():GetFilter()
filter:Clear()
filter:AddExtra( FILTER_EXTRA_FLIP_SUPER_TYPES )
filter:AddSupertype( SUPERTYPE_BASIC )
filter:AddCardType( CARD_TYPE_LAND )
filter:AddExtra( FILTER_EXTRA_FLIP_COLOUR )
filter:SetHint( HINT_ENEMY_ONLY, EffectController() )
filter:SetZone( ZONE_IN_PLAY )
</TARGET_DEFINITION>
<TARGET_DETERMINATION>
return AtLeastOneTargetFromDefinition(0)
</TARGET_DETERMINATION>
<PLAY_TIME_ACTION target_choosing="1">
EffectController():ChooseTarget( 0, "CARD_QUERY_CHOOSE_LAND_TO_DESTROY", EffectDC():Make_Targets(0) )
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
if target ~= nil then
target:Destroy()
end
</RESOLUTION_TIME_ACTION>
<DURATION simple_duration="UntilEOT" />
<AI_AVAILABILITY step="main_1" turn="my_turn" />
<AI_AVAILABILITY step="declare_blockers" blocking_or_blocked="1" />
</ACTIVATED_ABILITY>
</CARD_V2>
- Attachments
-
WASTELAND.rar
- (219.28 KiB) Downloaded 557 times
Re: Lands Only Request Thread
by Kieran » 12 May 2013, 23:19
Thanks for the lands. Your contributions are noted on the front page.
@ East Bay: Any lands are welcome here. The list is just a compilation of cards I personally wanted to create / request. Plus, land destruction cards are especially sacred. It's perhaps the quickest way to make a person stand up and kick over the table. Lol! I've actually experienced that before and it was priceless! Again, thanks!
@ East Bay: Any lands are welcome here. The list is just a compilation of cards I personally wanted to create / request. Plus, land destruction cards are especially sacred. It's perhaps the quickest way to make a person stand up and kick over the table. Lol! I've actually experienced that before and it was priceless! Again, thanks!
Re: Lands Only Request Thread
by Tejahn » 14 May 2013, 01:45
Fair greetings to all. I would like to request Creeping Tar Pit and Lavaclaw Reaches? Actually, I would like to request any manlands but those are the ones I desperately need at the moment. I've been watching my brother Kieran become active on this forum and I decided to join so I can make request, provide feedback, and try to contribute to this site as well. I've been using decks we got from this site against his various custom made decks but it's time I started making my own custom decks to combat the annoying stuff he made keeps putting together. Also, the Keyrunes would be good to have. I need more utility.
Re: Lands Only Request Thread
by Scion of Darkness » 14 May 2013, 10:46
Kieran the code of the tokens was implemented some time ago, and it requires the .lol file too, if you want i can upload my multi lands with that badge thing and it auto selects the the mana granted and auto taps for mana too
(most of the times the land grants the best mana but if you need something else it just need to activate the ability and change the mana ability it grants) right now i have all the original dual lands and one multi land (those of 3 mana colors)
![Wink ;)](./images/smilies/icon_wink.gif)
-
Scion of Darkness - Posts: 235
- Joined: 27 Aug 2012, 13:14
- Has thanked: 17 times
- Been thanked: 23 times
Re: Lands Only Request Thread
by Kieran » 14 May 2013, 12:48
Yes, that at-a-glance indicator would be wonderful to have. Thanks for the offer. And be sure to provide whatever lands you can. Also, where is the thread to study how the token codes are implemented? I performed a search but I've yet to pinpoint it.
Re: Lands Only Request Thread
by Kieran » 14 May 2013, 13:06
Tejahn, nice of you to have finally joined. This is one of the most prolific sites dedicated to MTG. The community is always helpful and willing to provide any cards that can be coded. There are a few manlands already available. Blinkmoth Nexus, Inkmoth Nexus, Mutavault, and Treetop Village are all located in the Data_Core. I'm not sure if any Modder has made any manlands but I can take a look @ the codes of the aforementioned cards and see if I can fulfill your request. But most likely, one of the modders here will probably have them available before I finish my assignments. Good luck with your request.
Re: Lands Only Request Thread
by Scion of Darkness » 14 May 2013, 13:29
The mana tokens use depends on the land you want to code, for example lands like city of brass that the mana ability have a life cost associated or creatures that you might need more control on tapping for mana mana tokens are the way to go and the firemind implementation here is fantastic http://www.slightlymagic.net/forum/viewtopic.php?f=63&t=7655&p=111220&hilit=mana+token#p111220 search the last thefiremind post (with this code no duplicated mana tokens will be made), for the dual, tri or 5 color lands i recommend using the automatic code i'll try to post it tonight here
but for a heads up my lands are a slightly tweaked version of this:
but for a heads up my lands are a slightly tweaked version of this:
- Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2>
<FILENAME text="DRAGONSKULL_SUMMIT_249716" />
<CARDNAME text="DRAGONSKULL_SUMMIT" />
<ARTID value="DRAGONSKULL_SUMMIT_249716" />
<ARTIST name="Jon Foster" />
<TYPE metaname="Land" />
<CASTING_COST cost="" />
<MULTIVERSEID value="249716" />
<EXPANSION value="DPE" />
<RARITY metaname="R" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Dragonskull Summit]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Drachenschädel-Pass]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Cumbre Cráneo de Dragón]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Sommet du Crânedragon]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Vetta del Teschio di Drago]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[竜髑髏の山頂]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[용두개골 봉우리]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пик Драконьего Черепа]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Pico da Caveira de Dragão]]></LOCALISED_TEXT>
</TITLE>
<TRIGGERED_ABILITY filter_zone="ZONE_IN_PLAY" internal="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Dragonskull Summit enters the battlefield tapped unless you control a Swamp or a Mountain.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Der Drachenschädel-Pass kommt getappt ins Spiel, falls du nicht einen Sumpf oder ein Gebirge kontrollierst.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[La Cumbre Cráneo de Dragón entra al campo de batalla girada a menos que controles un pantano o una montaña.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Le Sommet du Crânedragon arrive sur le champ de bataille engagé à moins que vous ne contrôliez un marais ou une montagne.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[La Vetta del Teschio di Drago entra nel campo di battaglia TAPpata a meno che tu non controlli una Palude o una Montagna.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[竜髑髏の山頂は、あなたが沼か山をコントロールしていないかぎり、タップ状態で戦場に出る。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[용두개골 봉우리는 당신이 늪이나 산을 조종하지 않으면 탭된 채로 전장에 들어온다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Пик Драконьего Черепа выходит на поле битвы повернутым, если только под вашим контролем нет Болота или Горы.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Pico da Caveira de Dragão entra no campo de batalha virado, a menos que você controle um Pântano ou uma Montanha.]]></LOCALISED_TEXT>
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_IN_PLAY" />
<RESOLUTION_TIME_ACTION>
<![CDATA[
MultiLand:TapUnlessPlayerControl(LAND_TYPE_SWAMP, LAND_TYPE_MOUNTAIN)
]]>
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<ACTIVATED_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add {B} or {R} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Erhöhe deinen Manavorrat um {B} oder {R}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Agrega {B} o {R} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T} : Ajoutez {B} ou {R} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Aggiungi {B} o {R} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:あなたのマナ・プールに{B}か{R}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}: {B}나 {R}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: добавьте {B} или {R} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Adicione {B} ou {R} à sua reserva de mana.]]></LOCALISED_TEXT>
<COST type="Generic">
<TARGET_DETERMINATION>
<![CDATA[
return MultiLand:PlayableByUser()
]]>
</TARGET_DETERMINATION>
</COST>
<PLAY_TIME_ACTION>
<![CDATA[
MultiLand:ColourDialog()
]]>
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
<![CDATA[
MultiLand:ApplyUserChoice()
]]>
</RESOLUTION_TIME_ACTION>
</ACTIVATED_ABILITY>
<STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
<CONTINUOUS_ACTION layer="6">
<![CDATA[
MultiLand:GrantAbility(COLOUR_BLACK, COLOUR_RED)
]]>
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<MANA_ABILITY resource_id="2">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add {R} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Erhöhe deinen Manavorrat um {R}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Agrega {R} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T} : Ajoutez {R} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Aggiungi {R} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:あなたのマナ・プールに{R}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}: {R}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: добавьте {R} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Adicione {R} à sua reserva de mana.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<PRODUCES amount="{R}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Add {B} to your mana pool.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[{T}: Erhöhe deinen Manavorrat um {B}.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[{T}: Agrega {B} a tu reserva de maná.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[{T} : Ajoutez {B} à votre réserve.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[{T}: Aggiungi {B} alla tua riserva di mana.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[{T}:あなたのマナ・プールに{B}を加える。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[{T}: {B}를 당신의 마나풀에 담는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[{T}: добавьте {B} в ваше хранилище маны.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[{T}: Adicione {B} à sua reserva de mana.]]></LOCALISED_TEXT>
<COST type="TapSelf" />
<PRODUCES amount="{B}" />
</MANA_ABILITY>
<TRIGGERED_ABILITY internal="1">
<TRIGGER value="DREW_CARD" simple_qualifier="controller">
<![CDATA[
return MultiLand:PlayableByEngine()
]]>
</TRIGGER>
<RESOLUTION_TIME_ACTION>
<![CDATA[
MultiLand:ApplyEngineChoice()
]]>
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<AI_BASE_SCORE score="150" zone="ZONE_IN_PLAY" />
</CARD_V2>
-
Scion of Darkness - Posts: 235
- Joined: 27 Aug 2012, 13:14
- Has thanked: 17 times
- Been thanked: 23 times
Re: Lands Only Request Thread
by Scion of Darkness » 14 May 2013, 13:33
- Code: Select all
Mana generation abilities.
This module contains the code behing the dual lands in this DLC. The main
idea is to abstract as much code as posible and to keep in the card only the
required abilities/triggers without lots of lua scripting.
To make things clear we are going to continue with an example. The code here
was taken from Razorverge Thicket (also in this DLC).
The first step is to implement the "enters the battlefield" trigger, which
in the case of Razorverge Thicket states:
"Razorverge Thicket enters the battlefield tapped unless you control
two or fewer other lands."
Code:
<TRIGGERED_ABILITY filter_zone="ZONE_IN_PLAY" internal="1">
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_IN_PLAY" />
<RESOLUTION_TIME_ACTION>
MultiLand:TapIfPlayerControlMoreThan(2, CARD_TYPE_LAND)
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
As you can see only one line is required to get the ability working. Also if
we were to implement Sunpetal Grove instead we can do it with:
Code:
MultiLand:TapUnlessPlayerControl(LAND_TYPE_FOREST, LAND_TYPE_PLAINS)
The second step is to define a static ability to keep our mana abilities
running. This ability is like a setup. The choices you make here will affect
the behavioir of the rest of the interface.
Code:
<STATIC_ABILITY filter_zone="ZONE_IN_PLAY">
<CONTINUOUS_ACTION layer="6">
MultiLand:GrantAbility(COLOUR_GREEN, COLOUR_WHITE)
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
When you call MultiLand:GrantAbility() with two colours a simple rotation
based switching will be used. If you three a multiple choice dialog will be
used instead (four colour dialogs are not supported. The UI provided by the
engine is limited to three options). When the special value
MultiLand:MANA_COLOUR_ALL is used a colour dialog will be used instead.
This dialogs are presented only to a human player. The interface for them
is provided for an activated ability like this:
Code:
<ACTIVATED_ABILITY>
<COST type="Generic">
<TARGET_DETERMINATION>
return MultiLand:PlayableByUser()
</TARGET_DETERMINATION>
</COST>
<PLAY_TIME_ACTION>
MultiLand:ColourDialog()
</PLAY_TIME_ACTION>
<RESOLUTION_TIME_ACTION>
MultiLand:ApplyUserChoice()
</RESOLUTION_TIME_ACTION>
</ACTIVATED_ABILITY>
For the AI to make choices we should provide a trigger to make some
calculations based on the current state of the game.
Code:
<TRIGGERED_ABILITY internal="1">
<TRIGGER value="DREW_CARD" simple_qualifier="controller">
return MultiLand:PlayableByEngine()
</TRIGGER>
<RESOLUTION_TIME_ACTION>
MultiLand:ApplyEngineChoice()
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
This trigger fire the calculations when the AI player draw a card for the
first time in a turn.
The final step is to provide the real mana abalities:
Code:
<MANA_ABILITY resource_id="2">
<COST type="TapSelf" />
<PRODUCES amount="{W}" />
</MANA_ABILITY>
<MANA_ABILITY resource_id="1">
<COST type="TapSelf" />
<PRODUCES amount="{G}" />
</MANA_ABILITY>
The resource ids are asigned sequentialy starting from 1, being 1 also the
default ability. The match between id and colour is done when you call
MultiLand:GrantAbility, the order of the parameters specify the order of the
abilities. For The special value MultiLand.MANA_COLOUR_ALL the order is
WUBRG, being W assigned to 1 and G to 5. (See Birds of Paradise for a
concrete example).
Known limitations:
- Dynamic mana generation is not supported.
Affects: Dark Ritual, Elvish Archdruid, etc.
- Cards using this library are affected by spells targetting abilities.
Examples: Linvala, Keeper of Silence; Burning-Tree Shaman; etc.
--]]
local COLOUR_DATA = {
engine_colour_list = {COLOUR_WHITE, COLOUR_BLUE, COLOUR_BLACK, COLOUR_RED, COLOUR_GREEN},
[COLOUR_COLOURLESS] = {symbol = "{1}", message = "ADD_1_TO_YOUR_MANA_POOL"},
[COLOUR_WHITE] = {symbol = "{W}", message = "ADD_W_TO_YOUR_MANA_POOL", badge = BADGE_PLAINS_WALK },
[COLOUR_BLUE] = {symbol = "{U}", message = "ADD_U_TO_YOUR_MANA_POOL", badge = BADGE_ISLAND_WALK },
[COLOUR_BLACK] = {symbol = "{B}", message = "ADD_B_TO_YOUR_MANA_POOL", badge = BADGE_SWAMP_WALK },
[COLOUR_RED] = {symbol = "{R}", message = "ADD_R_TO_YOUR_MANA_POOL", badge = BADGE_MOUNTAIN_WALK},
[COLOUR_GREEN] = {symbol = "{G}", message = "ADD_G_TO_YOUR_MANA_POOL", badge = BADGE_FOREST_WALK },
}
local function get(compartment, default)
if MultiLand[Object()] == nil then
MultiLand[Object()] = {}
end
return (MultiLand[Object()][compartment] or default)
end
local function set(compartment, new_value)
if MultiLand[Object()] == nil then
MultiLand[Object()] = {}
end
MultiLand[Object()][compartment] = new_value
end
local function mana_available(colour)
local amount_value = 0
local amount_string = COLOUR_DATA[colour].symbol
while EffectController():CanAfford(amount_string) ~= 0 do
amount_value = amount_value + 1
amount_string = amount_string .. COLOUR_DATA[colour].symbol
end
return amount_value
end
local function mana_required(colour, limit)
local filter = Object():GetFilter()
filter:Clear()
filter:NotTargetted()
filter:SetConvertedCostMax(limit)
filter:SetPlayer(EffectController())
filter:SetZone(ZONE_HAND)
return filter:ChromaCount(colour)
end
MultiLand = setmetatable({
ABILITY_COMPARTMENT = 1,
ABILITY_LIST_COMPARTMENT = 2,
SELECTION_MODE_COMPARTMENT = 3,
MANA_COLOUR_ALL = -1,
MANA_ABILITY_DEFAULT = 1,
MODE_ROTATION = 1,
MODE_MULTIPLE_CHOICE = 2,
MODE_COLOUR_DIALOG = 3,
TapUnlessPlayerControl = function(self, ...)
local filter = Object():GetFilter()
local player = Object():GetPlayer()
for _, subtype in ipairs(arg) do
filter:Clear()
filter:SetPlayer(player)
filter:SetZone(ZONE_IN_PLAY)
filter:AddSubType(subtype)
if filter:CountStopAt(1) == 1 then
return
end
end
Object():ComesIntoPlayTapped()
end,
TapIfPlayerControlMoreThan = function(self, n, ...)
local filter = Object():GetFilter()
local player = Object():GetPlayer()
filter:Clear()
filter:SetPlayer(player)
filter:SetZone(ZONE_IN_PLAY)
filter:SetCardInstance(Object())
filter:AddExtra(FILTER_EXTRA_FLIP_CARD_INSTANCE)
for _, card_type in ipairs(arg) do
filter:AddCardType(card_type)
end
if filter:Count() > n then
Object():ComesIntoPlayTapped()
end
end,
GrantAbility = function(self, ...)
if get(self.ABILITY_LIST_COMPARTMENT) == nil then
set(self.ABILITY_COMPARTMENT, self.MANA_ABILITY_DEFAULT)
if arg.n == 1 and arg[1] == MultiLand.MANA_COLOUR_ALL then
set(self.ABILITY_LIST_COMPARTMENT, COLOUR_DATA.engine_colour_list)
set(self.SELECTION_MODE_COMPARTMENT, self.MODE_COLOUR_DIALOG)
elseif arg.n == 2 then
set(self.ABILITY_LIST_COMPARTMENT, arg)
set(self.SELECTION_MODE_COMPARTMENT, self.MODE_ROTATION)
else
set(self.ABILITY_LIST_COMPARTMENT, arg)
set(self.SELECTION_MODE_COMPARTMENT, self.MODE_MULTIPLE_CHOICE)
end
self:ApplyEngineChoice()
end
local current_ability = get(self.ABILITY_COMPARTMENT)
local desired_colour = get(self.ABILITY_LIST_COMPARTMENT)[current_ability]
local current_badge = COLOUR_DATA[desired_colour].badge
local characteristics = Object():GetCurrentCharacteristics()
characteristics:Badge_Set(current_badge)
characteristics:GrantAbility(current_ability)
end,
ColourDialog = function(self)
local mode = get(self.SELECTION_MODE_COMPARTMENT)
local player = EffectController()
if mode == self.MODE_COLOUR_DIALOG then
player:ChooseColour("CARD_QUERY_CHOOSE_COLOUR", 1)
elseif mode == self.MODE_MULTIPLE_CHOICE then
player:BeginNewMultipleChoice()
for _, colour in ipairs(get(self.ABILITY_LIST_COMPARTMENT)) do
player:AddMultipleChoiceAnswer(COLOUR_DATA[colour].message)
end
player:AskMultipleChoiceQuestion("CARD_QUERY_CHOOSE_COLOUR")
end
end,
ApplyUserChoice = function(self)
local mode = get(self.SELECTION_MODE_COMPARTMENT)
if mode == self.MODE_COLOUR_DIALOG then
set(self.ABILITY_COMPARTMENT, GetChosenColour())
elseif mode == self.MODE_MULTIPLE_CHOICE then
set(self.ABILITY_COMPARTMENT, 1 + Object():GetMultipleChoiceResult())
elseif mode == self.MODE_ROTATION then
local current = get(self.ABILITY_COMPARTMENT)
local list = get(self.ABILITY_LIST_COMPARTMENT)
local selected = 1
while (selected <= #list and selected ~= current) do
selected = selected + 1
end
selected = selected + 1
if selected > #list then
selected = 1
end
set(self.ABILITY_COMPARTMENT, selected)
end
end,
PlayableByUser = function(self)
return ((Object():Tapped() == 0 and EffectController():IsHuman() ~= 0) and 1 or 0)
end,
PlayableByEngine = function(self)
local player = EffectController()
return (
player
and player == TriggerPlayer()
and player:IsAI() ~= 0
and MTG():Interrogate_CardsDrawnThisTurn(player) == 1
)
end,
ApplyEngineChoice = function(self)
local ability_index = self.MANA_ABILITY_DEFAULT
local ability_score = - math.huge
local current_total = mana_available(COLOUR_COLOURLESS)
local current_score
for index, colour in ipairs(get(self.ABILITY_LIST_COMPARTMENT)) do
required = mana_required(colour, 1 + current_total)
if required > 0 then
current_score = required - mana_available(colour)
if current_score > ability_score then
ability_score = current_score
ability_index = index
end
end
end
set(self.ABILITY_COMPARTMENT, ability_index)
end,
}, {__mode = "k"})
-
Scion of Darkness - Posts: 235
- Joined: 27 Aug 2012, 13:14
- Has thanked: 17 times
- Been thanked: 23 times
Re: Lands Only Request Thread
by Kieran » 14 May 2013, 13:45
Nice! I'll start looking into everything shortly.
Re: Lands Only Request Thread
by Kieran » 20 May 2013, 17:16
NEMESiS, the credit for your contributions of Arcane Sanctum, Jungle Shrine, and Savage Lands have been added to the opening post. I'll actually provide a DL of all the lands currently available a little later. Thank you to everyone!
37 posts
• Page 2 of 3 • 1, 2, 3
Return to New MTG Cards and Decks (2010, 2012, 2013, 2014, 2015, Magic Duels)
Who is online
Users browsing this forum: No registered users and 17 guests