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)
2014




Formal Request Thread
Moderator: CCGHQ Admins
Re: Formal Request Thread
by sumomole » 19 Oct 2013, 19:35
I used Gather Specimens 's code, I'm not sure if there are problems.thefiremind wrote:I thought about that, but I have no idea about how to make it count as land drop.MC Brodie wrote:Edit - I don't know if its possible but for lands you might be able to use the PutOntoBattlefield() function then find someway to trick the game into thinking that was your land drop for the turn.
- | Open
- Code: Select all
<TRIGGERED_ABILITY replacement_effect="1" linked_ability_group="1" replacement_effect_type="control">
<TRIGGER value="ZONECHANGE_TRANSITION" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_EXILE" pre_trigger="1">
local total = LinkedDC():Get_Int(0)
for i = 1,(total) do
local card = LinkedDC():Get_CardPtr(i)
if card ~= nil and TriggerObject() == card then
return TriggerObject():GetCardType():Test( CARD_TYPE_LAND ) and TriggerObject():GetPlayer() ~= EffectController()
end
end
return false
</TRIGGER>
<RESOLUTION_TIME_ACTION layer="2">
if TriggerObject() ~= nil then
TriggerObject():SetBaseController(EffectController())
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
-
sumomole - Programmer
- Posts: 611
- Joined: 07 Jun 2011, 08:34
- Has thanked: 51 times
- Been thanked: 234 times
Re: Formal Request Thread
by Rickycoe123 » 19 Oct 2013, 19:49
Lol, ok now i look stupid.. i reread the instructions... I honestly had no clue what was involvedI can't see what's complicated in opening Notepad, copying and pasting a card's code, then saving it as XML with UTF-8 encoding and same name as the FILENAME written in the code. If you want to make things even easier, make a copy of another card's file, so you already have a file with XML extension and UTF-8 encoding: after that, all you need to do is rename it and change its contents.

- Rickycoe123
- Posts: 138
- Joined: 14 Mar 2013, 22:44
- Has thanked: 1 time
- Been thanked: 15 times
Re: Formal Request Thread
by drleg3nd » 19 Oct 2013, 20:07
put this under original code or replace it ?sumomole wrote:I used Gather Specimens 's code, I'm not sure if there are problems.thefiremind wrote:I thought about that, but I have no idea about how to make it count as land drop.MC Brodie wrote:Edit - I don't know if its possible but for lands you might be able to use the PutOntoBattlefield() function then find someway to trick the game into thinking that was your land drop for the turn.
- | Open
- Code: Select all
<TRIGGERED_ABILITY replacement_effect="1" linked_ability_group="1" replacement_effect_type="control">
<TRIGGER value="ZONECHANGE_TRANSITION" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_EXILE" pre_trigger="1">
local total = LinkedDC():Get_Int(0)
for i = 1,(total) do
local card = LinkedDC():Get_CardPtr(i)
if card ~= nil and TriggerObject() == card then
return TriggerObject():GetCardType():Test( CARD_TYPE_LAND ) and TriggerObject():GetPlayer() ~= EffectController()
end
end
return false
</TRIGGER>
<RESOLUTION_TIME_ACTION layer="2">
if TriggerObject() ~= nil then
TriggerObject():SetBaseController(EffectController())
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
Re: Formal Request Thread
by sumomole » 19 Oct 2013, 20:13
No, this's my card, I don't know how firemind's is, but I guess it should be similar, following is my code, you can compare them.drleg3nd wrote:put this under original code or replace it ?
- Nightveil Specter | Open
- Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="1">
<FILENAME text="NIGHTVEIL_SPECTER_627315" />
<CARDNAME text="NIGHTVEIL_SPECTER" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Nightveil Specter]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Spectre voilenuit]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Espectro velo nocturno]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Nachtschleiergespenst]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Spettro Velo Notturno]]></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[Espectro do Véu da Noite]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[夜篷幽灵]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[夜篷幽靈]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="627315" />
<ARTID value="627315" />
<ARTIST name="Steven Belledin" />
<CASTING_COST cost="{U/B}{U/B}{U/B}" />
<TYPE metaname="Creature" />
<SUB_TYPE metaname="Specter" />
<EXPANSION value="DPI" />
<RARITY metaname="R" />
<POWER value="2" />
<TOUGHNESS value="3" />
<STATIC_ABILITY>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Flying]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vol]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Vuela]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Fliegend]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Volare]]></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[Voar]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[飞行]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[飛行]]></LOCALISED_TEXT>
<INTRINSIC characteristic="CHARACTERISTIC_FLYING" />
</STATIC_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever Nightveil Specter deals combat damage to a player, that player exiles the top card of his or her library.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que le Spectre voilenuit inflige des blessures de combat à un joueur, ce joueur exile la carte du dessus de sa bibliothèque.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que el Espectro velo nocturno haga daño de combate a un jugador, ese jugador exilia la primera carta de su biblioteca.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn das Nachtschleiergespenst einem Spieler Kampfschaden zufügt, schickt dieser Spieler die oberste Karte seiner Bibliothek ins Exil.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta lo Spettro Velo Notturno infligge danno da combattimento a un giocatore, quel giocatore esilia la prima carta del suo grimorio.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Whenever Nightveil Specter deals combat damage to a player, that player exiles the top card of his or her library.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[밤장막 스펙터가 플레이어에게 전투피해를 입힐 때마다, 그 플레이어는 자신의 서고 맨 위의 카드를 추방한다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз, когда Призрак Ночного Покрова наносит боевые повреждения игроку, тот игрок изгоняет верхнюю карту своей библиотеки.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[VoarToda vez que Espectro do Véu da Noite causa dano de combate a um jogador, aquele jogador exila o card do topo do próprio grimório.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[每当夜篷幽灵对任一牌手造成战斗伤害时,该牌手放逐其牌库顶牌。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[每當夜篷幽靈對任一玩家造成戰鬥傷害時,該玩家放逐其牌庫頂牌。]]></LOCALISED_TEXT>
<TRIGGER value="SOURCE_DEALS_DAMAGE_TO_PLAYER" simple_qualifier="self" damage_type="combat" />
<RESOLUTION_TIME_ACTION>
local player = SecondaryPlayer()
local source = EffectSource()
if player ~= nil then
local card = player:Library_GetTop()
if card ~= nil then
card:GuidedReveal( card:GetZone() , ZONE_EXILE )
card:Exile()
if source ~= nil then
local count_so_far = LinkedDC():Get_Int(0)
LinkedDC():Set_CardPtr(1 + count_so_far, card)
LinkedDC():Set_Int(0, count_so_far + 1)
end
end
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<STATIC_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[You may play cards exiled with Nightveil Specter.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Vous pouvez jouer les cartes exilées par le Spectre voilenuit.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Puedes jugar las cartas exiliadas con el Espectro velo nocturno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Du kannst mit dem Nachtschleiergespenst ins Exil geschickte Karten spielen.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Puoi giocare le carte esiliate con lo Spettro Velo Notturno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[You may play cards exiled with Nightveil Specter.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신은 밤장막 스펙터가 추방한 카드들을 플레이할 수 있다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Вы можете разыгрывать карты, изгнанные Призраком Ночного Покрова.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[You may play cards exiled with Nightveil Specter.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[你可以使用以夜篷幽灵放逐的牌。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[你可以使用以夜篷幽靈放逐的牌。]]></LOCALISED_TEXT>
<CONTINUOUS_ACTION layer="8">
local total = LinkedDC():Get_Int(0)
for i = 1,(total) do
local card = LinkedDC():Get_CardPtr(i)
if card ~= nil then
card:GetCurrentCharacteristics():GrantAbility(0)
end
end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>
<TRIGGERED_ABILITY replacement_effect="1" linked_ability_group="1" replacement_effect_type="control">
<TRIGGER value="ZONECHANGE_TRANSITION" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_EXILE" pre_trigger="1">
local total = LinkedDC():Get_Int(0)
for i = 1,(total) do
local card = LinkedDC():Get_CardPtr(i)
if card ~= nil and TriggerObject() == card then
return TriggerObject():GetCardType():Test( CARD_TYPE_LAND ) and TriggerObject():GetPlayer() ~= EffectController()
end
end
return false
</TRIGGER>
<RESOLUTION_TIME_ACTION layer="2">
if TriggerObject() ~= nil then
TriggerObject():SetBaseController(EffectController())
end
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<UTILITY_ABILITY resource_id="0" qualifier="Normal_Cast" origin_controller_can_use="1" active_zone="ZONE_EXILE">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Play Card.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Jouer une carte.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Jugar carta.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Karte spielen.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Gioca carta.]]></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[Jogar Card.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-CN"><![CDATA[使用此牌。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="zh-HK"><![CDATA[使用此牌。]]></LOCALISED_TEXT>
</UTILITY_ABILITY>
<HELP title="MORE_INFO_BADGE_TITLE_10" body="MORE_INFO_BADGE_BODY_10" zone="ZONE_ANY" />
<SFX text="COMBAT_BITE_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
<SFX text="COMBAT_BITE_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
<AI_BASE_SCORE score="450" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
-
sumomole - Programmer
- Posts: 611
- Joined: 07 Jun 2011, 08:34
- Has thanked: 51 times
- Been thanked: 234 times
Re: Formal Request Thread
by thepiebaker » 20 Oct 2013, 04:50
well this is embarrassing... that deck was a request i made a few months ago that i decided to try my own hand at programming.Kieran wrote:All of those cards, except Norn's Annex, can be found in the Deck Request thread here: Phyrexian Rage.thepiebaker wrote:I'm formally requesting these four cards:
Golem's Heart
Rage Extractor
Norn's Annex
Warstorm Surge
I can make Norn's Annex using Ghostly Prison if you really need it but Ghostly Prison is already so broken I can just image how God Mode you would become if opponents had to pay life. Let me know if you really want Norn's Annex and I'll try.
yeah id really appreciate norns annex mostly because it runs on the phyrexian mana which is what the deck is primarily focused on.
on a separate note, is it possible to program custom creature types? I am attempting to create some cross-over decks that would require that. also would you guys say that it'd be accepting here if i posted a thread dedicated to these decks since non of the cards in them will be official mtg cards?
- thepiebaker
- Posts: 34
- Joined: 29 Aug 2013, 01:48
- Has thanked: 3 times
- Been thanked: 1 time
Re: Formal Request Thread
by thefiremind » 20 Oct 2013, 08:47
Start from here:thepiebaker wrote:on a separate note, is it possible to program custom creature types?
viewtopic.php?f=109&t=11681&p=131467#p131467
Remember that 2 mods with different creature types on the same line of CREATURE_TYPES.TXT will be incompatible.
There's a couple already:thepiebaker wrote:also would you guys say that it'd be accepting here if i posted a thread dedicated to these decks since non of the cards in them will be official mtg cards?
viewtopic.php?f=71&t=11031
viewtopic.php?f=109&t=11725
so why not?

(Using the Custom Releases section would be recommended, but nobody will throw stones at you if you think that the 2014 section gives you more visibility.

< 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: 722 times
Re: Formal Request Thread
by jacque » 20 Oct 2013, 09:38
Can I request for these two cards?
- Arcane Denial
- Circular Logic
Thanks yea... *my brains not working lately* =(
- Arcane Denial
- Circular Logic
Thanks yea... *my brains not working lately* =(
Learn making your own cards today!!!
Click on
if a post/reply helped you.
I stitch old cards together to make new ones...
~ Jacque, the confused
Click on

I stitch old cards together to make new ones...
~ Jacque, the confused
Re: Formal Request Thread
by thefiremind » 20 Oct 2013, 09:44
This is in my mod.jacque wrote:- Quest for Ula's Temple
I don't think that Clockspinning is possible: how do you choose a specific counter? Keeping track of the counter types on permanents is possible, but then you would have a bunch of numerical indexes that can't be matched to their names. Not to mention that you can't properly target cards in exile.jacque wrote:- Clockspinning
< 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: 722 times
Re: Formal Request Thread
by jacque » 20 Oct 2013, 11:45
Weeeeee... =)thefiremind wrote:Quest for Ula's Temple
I thought it would be something like what I did with Aether Snap, the counters thingie... as for the targetting cards in exile... hmmm was toying the idea with the Rift Elemental you made... hmmm... *don't really know the indexes thingie tho...*thefiremind wrote:Clockspinning
Learn making your own cards today!!!
Click on
if a post/reply helped you.
I stitch old cards together to make new ones...
~ Jacque, the confused
Click on

I stitch old cards together to make new ones...
~ Jacque, the confused
Re: Formal Request Thread
by thefiremind » 20 Oct 2013, 12:49
You don't need to choose a counter for AEther Snap, you just remove them all. Same for Vorel of the Hull Clade and Gilder Bairn, which double them all.jacque wrote:I thought it would be something like what I did with Aether Snap, the counters thingie...
Rift Elemental doesn't target the suspended cards.jacque wrote:as for the targetting cards in exile... hmmm was toying the idea with the Rift Elemental you made...
Have you ever wondered what GetCountersType and GetBestOrWorstCounterType return? It's a number, you can check it by yourself with a DisplayMessage. When you declare a counter type for the first time, a unique number is assigned to it, and during different duels it's different for the same counter types. Once you have that number, do you know how to get back to the counter name? There's no way. So if you have a creature with a +1/+1 counter and a divinity counter, for example, the best Clockspinning query you could do would be something like:jacque wrote:*don't really know the indexes thingie tho...*
- Code: Select all
---- Choose a counter. ----
| [ -1374896 ] |
| [ 4574587 ] |
---------------------------

Last edited by thefiremind on 20 Oct 2013, 12:57, edited 1 time in total.
< 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: 722 times
Re: Formal Request Thread
by drleg3nd » 20 Oct 2013, 12:55
how do i code "whenever you scry " ? i'm trying to make Flamespeaker Adept but no idea how to implement this
Re: Formal Request Thread
by thefiremind » 20 Oct 2013, 12:58
I discussed that matter with sumomole in the Theros cards thread, and he came up with this idea: viewtopic.php?f=109&t=11681&start=15#p131352 but the cards with scry need to be coded so that they support Flamespeaker Adept.drleg3nd wrote:how do i code "whenever you scry " ? i'm trying to make Flamespeaker Adept but no idea how to implement this
The good news is that I was already aware of his idea when I coded the scry mechanic in my mod, so if you use my scry functions, this Flamespeaker Adept will work:
- Flamespeaker Adept (tested, needs my mod and needs scry cards to be coded using my scry functions) | Open
- Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
<FILENAME text="FLAMESPEAKER_ADEPT_373705" />
<CARDNAME text="FLAMESPEAKER_ADEPT" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Flamespeaker Adept]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Oratrice de feu experte]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Perita de las llamas]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Kundige Flammenseherin]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Esperta Oratrice delle Fiamme]]></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[Adepto Flamividente]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="373705" />
<ARTID value="373705" />
<ARTIST name="Lucas Graciano" />
<CASTING_COST cost="{2}{R}" />
<FLAVOURTEXT>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“I see your future, mantled in ash.”]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[« Je vois votre avenir, couvert de cendres. »]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“Veo tu futuro cubierto de cenizas”.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[„Ich sehe deine Zukunft, ummantelt in Asche.”]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“Vedo il tuo futuro, ammantato di cenere.”]]></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[“Vejo seu futuro, sob um manto de cinzas.”]]></LOCALISED_TEXT>
</FLAVOURTEXT>
<TYPE metaname="Creature" />
<SUB_TYPE metaname="Human" />
<SUB_TYPE metaname="Shaman" />
<EXPANSION value="THS" />
<RARITY metaname="U" />
<POWER value="2" />
<TOUGHNESS value="3" />
<TRIGGERED_ABILITY linked_ability_group="1" replacement_effect="1" priority="20">
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
<TRIGGER value="CONTROLLER_CHANGED" simple_qualifier="self" />
<RESOLUTION_TIME_ACTION>
-- Align the creature's scry count with the controller's scry count
LinkedDC():Set_Int( 0, TFM_MyPlayerDC( EffectController() ):Get_Int(TFM_PLAYER_SCRY_COUNT) )
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever you scry, Flamespeaker Adept gets +2/+0 and gains first strike until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que vous appliquez le regard, l’Oratrice de feu experte gagne +2/+0 et acquiert l’initiative jusqu’à la fin du tour.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que adivines, la Perita de las llamas obtiene +2/+0 y gana la habilidad de dañar primero hasta el final del turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn du Hellsicht anwendest, erhält die Kundige Flammenseherin +2/+0 und Erstschlag bis zum Ende des Zuges.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta profetizzi, l’Esperta Oratrice delle Fiamme prende +2/+0 e ha attacco improvviso fino alla fine del turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたが占術を行うたび、炎語りの達人はターン終了時まで+2/+0の修整を受けるとともに先制攻撃を得る。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신이 점술을 할 때마다, 화염의 예언자는 턴종료까지 +2/+0을 받고 선제공격 능력을 얻는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз, когда вы предсказываете, Огнеречивый Адепт получает +2/+0 и Первый удар до конца хода.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que você usa vidência, Adepto Flamividente recebe +2+0 e ganha iniciativa até o final do turno.]]></LOCALISED_TEXT>
<TRIGGER value="STATE_BASED_EFFECTS">
-- If the creature's scry count gets disaligned, it means its controller scried
if TFM_MyPlayerDC( EffectController() ):Get_Int(TFM_PLAYER_SCRY_COUNT) > LinkedDC():Get_Int(0) then
LinkedDC():Int_Inc(0)
return true
end
return false
</TRIGGER>
<CONTINUOUS_ACTION layer="7C">
if EffectSource() ~= nil then
EffectSource():GetCurrentCharacteristics():Power_Add(2)
end
</CONTINUOUS_ACTION>
<CONTINUOUS_ACTION layer="6">
if EffectSource() ~= nil then
EffectSource():GetCurrentCharacteristics():Bool_Set(CHARACTERISTIC_FIRST_STRIKE, 1)
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
<AUTO_SKIP always="1" />
</TRIGGERED_ABILITY>
<HELP title="MORE_INFO_BADGE_TITLE_0" body="MORE_INFO_BADGE_BODY_0" zone="ZONE_ANY" />
<SFX text="COMBAT_FLAME_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
<SFX text="COMBAT_FLAME_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
<AI_BASE_SCORE score="300" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
< 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: 722 times
Re: Formal Request Thread
by drleg3nd » 20 Oct 2013, 13:40
thx TFM, was looking at post so is this the scry code you are referring too ?thefiremind wrote:I discussed that matter with sumomole in the Theros cards thread, and he came up with this idea: viewtopic.php?f=109&t=11681&start=15#p131352 but the cards with scry need to be coded so that they support Flamespeaker Adept.drleg3nd wrote:how do i code "whenever you scry " ? i'm trying to make Flamespeaker Adept but no idea how to implement this
The good news is that I was already aware of his idea when I coded the scry mechanic in my mod, so if you use my scry functions, this Flamespeaker Adept will work:
- Flamespeaker Adept (tested, needs my mod and needs scry cards to be coded using my scry functions) | Open
- Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
<FILENAME text="FLAMESPEAKER_ADEPT_373705" />
<CARDNAME text="FLAMESPEAKER_ADEPT" />
<TITLE>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Flamespeaker Adept]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Oratrice de feu experte]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Perita de las llamas]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Kundige Flammenseherin]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Esperta Oratrice delle Fiamme]]></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[Adepto Flamividente]]></LOCALISED_TEXT>
</TITLE>
<MULTIVERSEID value="373705" />
<ARTID value="373705" />
<ARTIST name="Lucas Graciano" />
<CASTING_COST cost="{2}{R}" />
<FLAVOURTEXT>
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“I see your future, mantled in ash.”]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[« Je vois votre avenir, couvert de cendres. »]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“Veo tu futuro cubierto de cenizas”.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[„Ich sehe deine Zukunft, ummantelt in Asche.”]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“Vedo il tuo futuro, ammantato di cenere.”]]></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[“Vejo seu futuro, sob um manto de cinzas.”]]></LOCALISED_TEXT>
</FLAVOURTEXT>
<TYPE metaname="Creature" />
<SUB_TYPE metaname="Human" />
<SUB_TYPE metaname="Shaman" />
<EXPANSION value="THS" />
<RARITY metaname="U" />
<POWER value="2" />
<TOUGHNESS value="3" />
<TRIGGERED_ABILITY linked_ability_group="1" replacement_effect="1" priority="20">
<TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
<TRIGGER value="CONTROLLER_CHANGED" simple_qualifier="self" />
<RESOLUTION_TIME_ACTION>
-- Align the creature's scry count with the controller's scry count
LinkedDC():Set_Int( 0, TFM_MyPlayerDC( EffectController() ):Get_Int(TFM_PLAYER_SCRY_COUNT) )
</RESOLUTION_TIME_ACTION>
</TRIGGERED_ABILITY>
<TRIGGERED_ABILITY linked_ability_group="1">
<LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever you scry, Flamespeaker Adept gets +2/+0 and gains first strike until end of turn.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[À chaque fois que vous appliquez le regard, l’Oratrice de feu experte gagne +2/+0 et acquiert l’initiative jusqu’à la fin du tour.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Siempre que adivines, la Perita de las llamas obtiene +2/+0 y gana la habilidad de dañar primero hasta el final del turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Immer wenn du Hellsicht anwendest, erhält die Kundige Flammenseherin +2/+0 und Erstschlag bis zum Ende des Zuges.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Ogniqualvolta profetizzi, l’Esperta Oratrice delle Fiamme prende +2/+0 e ha attacco improvviso fino alla fine del turno.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[あなたが占術を行うたび、炎語りの達人はターン終了時まで+2/+0の修整を受けるとともに先制攻撃を得る。]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[당신이 점술을 할 때마다, 화염의 예언자는 턴종료까지 +2/+0을 받고 선제공격 능력을 얻는다.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Каждый раз, когда вы предсказываете, Огнеречивый Адепт получает +2/+0 и Первый удар до конца хода.]]></LOCALISED_TEXT>
<LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Toda vez que você usa vidência, Adepto Flamividente recebe +2+0 e ganha iniciativa até o final do turno.]]></LOCALISED_TEXT>
<TRIGGER value="STATE_BASED_EFFECTS">
-- If the creature's scry count gets disaligned, it means its controller scried
if TFM_MyPlayerDC( EffectController() ):Get_Int(TFM_PLAYER_SCRY_COUNT) > LinkedDC():Get_Int(0) then
LinkedDC():Int_Inc(0)
return true
end
return false
</TRIGGER>
<CONTINUOUS_ACTION layer="7C">
if EffectSource() ~= nil then
EffectSource():GetCurrentCharacteristics():Power_Add(2)
end
</CONTINUOUS_ACTION>
<CONTINUOUS_ACTION layer="6">
if EffectSource() ~= nil then
EffectSource():GetCurrentCharacteristics():Bool_Set(CHARACTERISTIC_FIRST_STRIKE, 1)
end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
<AUTO_SKIP always="1" />
</TRIGGERED_ABILITY>
<HELP title="MORE_INFO_BADGE_TITLE_0" body="MORE_INFO_BADGE_BODY_0" zone="ZONE_ANY" />
<SFX text="COMBAT_FLAME_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
<SFX text="COMBAT_FLAME_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
<AI_BASE_SCORE score="300" zone="ZONE_BATTLEFIELD" />
</CARD_V2>
- Scry | Open
- Code: Select all
S_ScryFateseal = function(index, player)
if player == nil then
return false
end
local n = MTG():GetActionRepCount()
local parity = n % 2
local effectController = EffectController()
if parity == 0 then
local filter = ClearFilter()
filter:SetZone( ZONE_LIBRARY, player )
if n == 0 then
local scry_count = filter:CountStopAt(index)
EffectDC():Set_Int(2, scry_count)
filter:SetPortion( scry_count )
effectController:SetItemCount( scry_count )
for i = 0, (scry_count-1) do
effectController:SetItemPrompt( i, "CARD_QUERY_CHOOSE_CARD_TO_PUT_ON_BOTTOM_LIBRARY" )
end
effectController:ChooseItems( EffectDC():Make_Targets(100+n/2), QUERY_FLAG_UP_TO )
else
local scry_count = EffectDC():Get_Int(2)
if scry_count > 0 then
filter:SetPortion( scry_count )
effectController:SetItemCount( scry_count )
for i = 0, (scry_count-1) do
effectController:SetItemPrompt( i, "CARD_QUERY_CHOOSE_CARD_TO_PUT_ONTO_LIBRARY" )
end
effectController:ChooseItems( EffectDC():Make_Targets(100+n/2) )
end
end
return true
else
local scry_count = EffectDC():Get_Int(2)
if scry_count > 0 then
for i = 0, (scry_count-1) do
local target = EffectDC():Get_Targets(100+n/2):Get_CardPtr(i)
if target ~= nil then
if n == 1 then
target:PutOnBottomOfLibrary()
scry_count = scry_count - 1
else
target:PutOnTopOfLibrary()
end
end
end
end
if n == 3 or scry_count < 2 then
effectController:PlayerDataChest():Int_Inc( -2626 )
return false
else
EffectDC():Set_Int(2, scry_count)
return true
end
end
end
Re: Formal Request Thread
by thefiremind » 20 Oct 2013, 14:52
No, that's sumomole's. My code can be found on my copies of Mystic Speculation and Cryptic Annelid, and the only parameter (on Resolution1) is the scry count.drleg3nd wrote:thx TFM, was looking at post so is this the scry code you are referring too ?
< 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: 722 times
Re: Formal Request Thread
by RiiakShiNal » 20 Oct 2013, 15:01
Actually, you can get a menu that would look something like this for the player to choose a counter type:thefiremind wrote:Have you ever wondered what GetCountersType and GetBestOrWorstCounterType return? It's a number, you can check it by yourself with a DisplayMessage. When you declare a counter type for the first time, a unique number is assigned to it, and during different duels it's different for the same counter types. Once you have that number, do you know how to get back to the counter name? There's no way. So if you have a creature with a +1/+1 counter and a divinity counter, for example, the best Clockspinning query you could do would be something like:jacque wrote:*don't really know the indexes thingie tho...*You have 50% chance to hit the counter you really wish to choose, good luck.
- Code: Select all
---- Choose a counter. ----
| [ -1374896 ] |
| [ 4574587 ] |
---------------------------
- Code: Select all
---- Choose a counter. ----
| [ +1/+1 ] |
| [ Divinity ] |
---------------------------
- Code: Select all
player:BeginNewMultipleChoice()
if (oCard:CountCounters( oCounterDC:Int_Get( 0 ) ) > 0) then
player:AddMultipleChoiceAnswer( "COUNTER_PLUS1PLUS1" )
end
if (oCard:CountCounters( oCounterDC:Int_Get( 1 ) ) > 0) then
player:AddMultipleChoiceAnswer( "COUNTER_MINUS1MINUS1" )
end
...
if (oCard:CountCounters( oCounterDC:Int_Get( 13 ) ) > 0) then
player:AddMultipleChoiceAnswer( "COUNTER_DIVINITY" )
end
...
player:AskMultipleChoiceQuestion("CARD_QUERY_CHOOSE_COUNTER_TYPE", EffectSource())
The actual indices chosen for each type doesn't really matter as long as they are consistent across the entirety of choosing a counter type.
Also I have an idea that can make mods with different CREATURE_TYPES.TXT specs compatible (though I haven't had any feedback on what people think about it):thefiremind wrote:Start from here:thepiebaker wrote:on a separate note, is it possible to program custom creature types?
viewtopic.php?f=109&t=11681&p=131467#p131467
Remember that 2 mods with different creature types on the same line of CREATURE_TYPES.TXT will be incompatible.
Originally posted here.RiiakShiNal wrote:Though this does give me an idea for another enhancement to the Deck Builder:
- The ability to merge spec files and generate a new LOL file with updated constants for those sub-types.
Though there are a couple of issues with that either modders would need to use a naming standard for sub-type constants (which the Deck Builder would follow when merging specs) or would need to create a file with information about the sub-type which the Deck Builder would then parse and process (think an XML file that would define the sub-type and the desired constant to use for it).
Also the Deck Builder would have to generate one or more extra constant(s) so that modders can determine how many sub-types are actually present. This could include something like _CREATURE_TYPE_COUNT which just says how many types are defined or could even generate constants like CREATURE_TYPE_FIRST and CREATURE_TYPE_LAST which would be the values of the first (1000) and last creature respectfully. It would be necessary to use constants in code for sub-types (which I think most modders already do) as the actual values of added types could vary depending on which mod would be scanned first for added types.
Granted if this feature is added and modders make use of it, regular users would need to also get the Deck Builder and run it to actually "Merge Specs" so that sub-types from the mods they have would get updated into a single spot and set with high priority to make sure it is used above all others.
Just getting started: Xander9009's DotP 2014 Community Wad
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
Need a deck builder: DotP 2014 Deck Builder
Problems Modding: DotP 2014 Frequent Modding Mistakes
- RiiakShiNal
- Programmer
- Posts: 2188
- Joined: 16 May 2011, 21:37
- Has thanked: 75 times
- Been thanked: 497 times
Who is online
Users browsing this forum: No registered users and 7 guests