It is currently 20 Jul 2025, 17:13
   
Text Size

Formal Request Thread

Moderator: CCGHQ Admins

Re: Formal Request Thread

Postby sumomole » 19 Oct 2013, 19:35

thefiremind wrote:
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.
I thought about that, but I have no idea about how to make it count as land drop.
I used Gather Specimens 's code, I'm not sure if there are problems.
| 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>
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: Formal Request Thread

Postby Rickycoe123 » 19 Oct 2013, 19:49

I 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.
Lol, ok now i look stupid.. i reread the instructions... I honestly had no clue what was involved :)
Rickycoe123
 
Posts: 138
Joined: 14 Mar 2013, 22:44
Has thanked: 1 time
Been thanked: 15 times

Re: Formal Request Thread

Postby drleg3nd » 19 Oct 2013, 20:07

sumomole wrote:
thefiremind wrote:
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.
I thought about that, but I have no idea about how to make it count as land drop.
I used Gather Specimens 's code, I'm not sure if there are problems.
| 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>
put this under original code or replace it ?
drleg3nd
 
Posts: 528
Joined: 14 May 2012, 20:05
Has thanked: 5 times
Been thanked: 30 times

Re: Formal Request Thread

Postby sumomole » 19 Oct 2013, 20:13

drleg3nd wrote:put this under original code or replace it ?
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.
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>
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: Formal Request Thread

Postby thepiebaker » 20 Oct 2013, 04:50

Kieran wrote:
thepiebaker wrote:I'm formally requesting these four cards:
Golem's Heart
Rage Extractor
Norn's Annex
Warstorm Surge
All of those cards, except Norn's Annex, can be found in the Deck Request thread here: Phyrexian Rage.

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.
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.

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

Postby thefiremind » 20 Oct 2013, 08:47

thepiebaker wrote:on a separate note, is it possible to program custom creature types?
Start from here:
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.

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?
There's a couple already:
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. :wink:)
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Formal Request Thread

Postby jacque » 20 Oct 2013, 09:38

Can I request for these two cards?
- Arcane Denial
- Circular Logic

Thanks yea... *my brains not working lately* =(
Learn making your own cards today!!!

Click on Image if a post/reply helped you.

I stitch old cards together to make new ones...

~ Jacque, the confused
jacque
 
Posts: 217
Joined: 07 Jun 2013, 20:11
Has thanked: 26 times
Been thanked: 44 times

Re: Formal Request Thread

Postby thefiremind » 20 Oct 2013, 09:44

jacque wrote:- Quest for Ula's Temple
This is in my mod.
jacque wrote:- Clockspinning
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.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Formal Request Thread

Postby jacque » 20 Oct 2013, 11:45

thefiremind wrote:Quest for Ula's Temple
Weeeeee... =)

thefiremind wrote:Clockspinning
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...*
Learn making your own cards today!!!

Click on Image if a post/reply helped you.

I stitch old cards together to make new ones...

~ Jacque, the confused
jacque
 
Posts: 217
Joined: 07 Jun 2013, 20:11
Has thanked: 26 times
Been thanked: 44 times

Re: Formal Request Thread

Postby thefiremind » 20 Oct 2013, 12:49

jacque wrote:I thought it would be something like what I did with Aether Snap, the counters thingie...
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:as for the targetting cards in exile... hmmm was toying the idea with the Rift Elemental you made...
Rift Elemental doesn't target the suspended cards.

jacque wrote:*don't really know the indexes thingie tho...*
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:
Code: Select all
---- Choose a counter. ----
|     [  -1374896  ]      |
|     [   4574587  ]      |
---------------------------
You have 50% chance to hit the counter you really wish to choose, good luck. :mrgreen:
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...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Formal Request Thread

Postby 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
drleg3nd
 
Posts: 528
Joined: 14 May 2012, 20:05
Has thanked: 5 times
Been thanked: 30 times

Re: Formal Request Thread

Postby thefiremind » 20 Oct 2013, 12:58

drleg3nd wrote:how do i code "whenever you scry " ? i'm trying to make Flamespeaker Adept but no idea how to implement this
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.
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) &gt; 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...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Formal Request Thread

Postby drleg3nd » 20 Oct 2013, 13:40

thefiremind wrote:
drleg3nd wrote:how do i code "whenever you scry " ? i'm trying to make Flamespeaker Adept but no idea how to implement this
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.
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) &gt; 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>
thx TFM, was looking at post so is this the scry code you are referring too ?
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
if so, what number need to be changed to fix scry count ?
drleg3nd
 
Posts: 528
Joined: 14 May 2012, 20:05
Has thanked: 5 times
Been thanked: 30 times

Re: Formal Request Thread

Postby thefiremind » 20 Oct 2013, 14:52

drleg3nd wrote:thx TFM, was looking at post so is this the scry code you are referring too ?
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.
< Former DotP 2012/2013/2014 modder >
Currently busy with life...
User avatar
thefiremind
Programmer
 
Posts: 3515
Joined: 07 Nov 2011, 10:55
Has thanked: 118 times
Been thanked: 722 times

Re: Formal Request Thread

Postby RiiakShiNal » 20 Oct 2013, 15:01

thefiremind wrote:
jacque wrote:*don't really know the indexes thingie tho...*
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:
Code: Select all
---- Choose a counter. ----
|     [  -1374896  ]      |
|     [   4574587  ]      |
---------------------------
You have 50% chance to hit the counter you really wish to choose, good luck. :mrgreen:
Actually, you can get a menu that would look something like this for the player to choose a counter type:
Code: Select all
---- Choose a counter. ----
|     [   +1/+1    ]      |
|     [  Divinity  ]      |
---------------------------
However, making the menu is fairly difficult. You would need to give each counter type a specific index in a data chest for example you set +1/+1 counters to index 0, -1/-1 to index 1, ..., Divinity to index 13, .... Then you get the numeric value for each of those types and put those values in the appropriate indexes PlusOnePlusOneCounters() to index 0, MinusOneMinusOneCounters() to index 1, ..., GetCountersType("Divinity") to index 13, then when building the multiple choice menu to the user you choose menu items based on whether or not the card has the counter type that is present in the data chest index for that name. Example:
Code: Select all
player:BeginNewMultipleChoice()
if (oCard:CountCounters( oCounterDC:Int_Get( 0 ) ) &gt; 0) then
  player:AddMultipleChoiceAnswer( "COUNTER_PLUS1PLUS1" )
end
if (oCard:CountCounters( oCounterDC:Int_Get( 1 ) ) &gt; 0) then
  player:AddMultipleChoiceAnswer( "COUNTER_MINUS1MINUS1" )
end
...
if (oCard:CountCounters( oCounterDC:Int_Get( 13 ) ) &gt; 0) then
  player:AddMultipleChoiceAnswer( "COUNTER_DIVINITY" )
end
...
player:AskMultipleChoiceQuestion("CARD_QUERY_CHOOSE_COUNTER_TYPE", EffectSource())
Obviously this is fairly difficult to do right (especially if you have more than 7 counter types on a single card because then you would have to worry about paging the question), but it is possible to choose a counter type (this is really what should be done for Proliferate rather than basing it off of counter type weightings).

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.

thefiremind wrote:
thepiebaker wrote:on a separate note, is it possible to program custom creature types?
Start from here:
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.
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):
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.
Originally posted here.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 7 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 7 users online :: 0 registered, 0 hidden and 7 guests (based on users active over the past 10 minutes)
Most users ever online was 7303 on 15 Jul 2025, 20:46

Users browsing this forum: No registered users and 7 guests

Login Form