Page 1 of 5

2014 official cards & decks & functions from ipad

PostPosted: 25 Jun 2013, 06:26
by sumomole
tools 2013 can be used to unpack!
EDIT: decompile the .lol files.

MODE_SELECT

PostPosted: 25 Jun 2013, 06:45
by sumomole
CHARACTERISTIC_CAN_BLOCK_ANY_NUMBER_OF_CREATURES
CHARACTERISTIC_CAN_ATTACK_AS_THOUGH_HAS_HASTE
WTF! Where is CHARACTERISTIC_CAN_ATTACK_ALONE???

Cryptic Command | Open
Code: Select all
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Choose two — Counter target spell; or return target permanent to its owner’s hand; or tap all creatures your opponents control; or draw a card.]]></LOCALISED_TEXT>
    <SFX text="TARGET_PLASMA_PLAY" />
    <MODE_SELECT tag="MODE_CHOOSE_ONE" min="2" max="2">
      <MODE tag="CARD_QUERY_MODE_CRYPTIC_COMMAND_COUNTER" index="1" />
      <MODE tag="CARD_QUERY_MODE_CRYPTIC_COMMAND_BOUNCE" index="2" />
      <MODE tag="CARD_QUERY_MODE_CRYPTIC_COMMAND_TAP" index="3" />
      <MODE tag="CARD_QUERY_MODE_CRYPTIC_COMMAND_DRAW" index="4" />
    </MODE_SELECT>
    <TARGET tag="CARD_QUERY_CHOOSE_SPELL_TO_COUNTER" definition="0" compartment="0" mode="1" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:SetZone( ZONE_STACK )
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION mode="1">
    local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then
       target:CounterSpell()
    end
    </RESOLUTION_TIME_ACTION>
    <TARGET tag="CARD_QUERY_CHOOSE_PERMANENT_TO_PUT_INTO_HAND" definition="1" compartment="1" mode="2" count="1" />
    <TARGET_DEFINITION id="1">
    local filter = ClearFilter()
    filter:Add( FE_IS_PERMANENT, true )
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION mode="2">
    local target = EffectDC():Get_Targets(1):Get_CardPtr(0)
    if  target ~= nil then
       target:PutInHand()
    end 
    </RESOLUTION_TIME_ACTION>
    <FILTER filter_id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE  )
    filter:Add( FE_TEAM, OP_NOT, EffectController():GetTeam() )
    </FILTER>
    <RESOLUTION_TIME_ACTION mode="3" filter_id="0">
    if FilteredCard() ~= nil then
       FilteredCard():Tap()
    end
    </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION mode="4">
    EffectController():DrawCards(1)
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
    <AI_SIMPLIFIED_TARGETING compartment="1" hint="HINT_ENEMY" />
  </SPELL_ABILITY>
gain all creature types = CHARACTERISTIC_CHANGELING
Blades of Velis Vel | Open
Code: Select all
<?xml version="1.0"?>
<CARD_V2 ExportVersion="11">
  <FILENAME text="BLADES_OF_VELIS_VEL_348506" />
  <CARDNAME text="BLADES_OF_VELIS_VEL" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Blades of Velis Vel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Lames de Velis Vel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Espadas de Velis Vel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Klingen aus Velis Vel]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Lame di Velis Vel]]></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[Lâminas de Velis Vel]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="348506" />
  <ARTID value="105394" />
  <ARTIST name="Ron Spencer" />
  <CASTING_COST cost="{1}{R}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“The changing kind suffers as we do. We must join as one to quench our tyrants!”]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[« Le peuple malléable souffre autant que nous. Nous devons nous unir pour anéantir les tyrans ! »]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[“Los cambiantes sufren como nosotros. ¡Debemos unirnos para derrotar a nuestros tiranos.”]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[„Die Wandler leiden genau wie wir. Wir müssen uns vereinigen, um die Tyrannei abzuschütteln!“]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[“La razza mutevole soffre come noi. Dobbiamo unirci per reprimere i nostri tiranni!”]]></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[“A raça morfoloide sofre como nós. Precisamos nos unir para extinguir nossos tiranos!”]]></LOCALISED_TEXT>
  </FLAVOURTEXT>
  <TYPE metaname="Tribal" />
  <TYPE metaname="Instant" />
  <SUB_TYPE metaname="Shapeshifter" />
  <EXPANSION value="DPI" />
  <RARITY metaname="C" />
  <STATIC_ABILITY active_zone="ZONE_ANY">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Changeling]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Changelin]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Cambiaformas.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Wandelwicht]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Cangiante]]></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[Morfoloide]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="4">
    if EffectSource() ~= nil then
    local characteristics = EffectSource():GetCurrentCharacteristics()
       characteristics:Bool_Set( CHARACTERISTIC_CHANGELING, 1 )
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <SPELL_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Up to two target creatures each get +2/+0 and gain all creature types until end of turn.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Jusqu'à deux créatures ciblées gagnent chacune +2/+0 et acquièrent tous les types de créature jusqu'à la fin du tour.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Hasta dos criaturas objetivo obtienen +2/+0 cada una y ganan todos los tipos de criatura hasta el final del turno.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Bis zu zwei Kreaturen deiner Wahl erhalten bis zum Ende des Zuges +2/+0 und alle Kreaturentypen.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fino a due creature bersaglio prendono +2/+0 e hanno tutti i tipi di creatura fino alla fine del turno.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[最大2体までのクリーチャーを対象とする。それらはそれぞれ、ターン終了時まで+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[Até duas criaturas alvo recebem +2/+0 cada uma e ganham todos os tipos de criatura até o final do turno.]]></LOCALISED_TEXT>
    <TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TO_GET_2_0" definition="0" compartment="0" count="2" up_to="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
    </TARGET_DEFINITION>
    <CONTINUOUS_ACTION layer="7C">
    for i = 0, (1) do
       local target = EffectDC():Get_Targets(0):Get_CardPtr(i)
       if target ~= nil then
          local characteristics = target:GetCurrentCharacteristics()
          characteristics:Power_Add( 2 )
          characteristics:Toughness_Add( 0 )
       end
    end
    </CONTINUOUS_ACTION>
    <CONTINUOUS_ACTION layer="4">
    for i = 0, (1) do
       local target = EffectDC():Get_Targets(0):Get_CardPtr(i)
       if target ~= nil then
          local characteristics = target:GetCurrentCharacteristics()
          characteristics:Bool_Set( CHARACTERISTIC_CHANGELING, 1 )
       end
    end
    </CONTINUOUS_ACTION>
    <DURATION simple_duration="UntilEOT" />
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ALLIED_ONLY" />
  </SPELL_ABILITY>
  <AI_AVAILABILITY window_step="declare_blockers" type="window" />
  <AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
  <HELP title="MORE_INFO_BADGE_TITLE_35" body="MORE_INFO_BADGE_BODY_35" zone="ZONE_ANY" />
  <AI_BASE_SCORE score="900" zone="ZONE_HAND" />
</CARD_V2>

Re: 2014 official cards & functions from ipad

PostPosted: 25 Jun 2013, 11:06
by Scion of Darkness
Sumomole is the deck structure equal to 2013? With the cards from 2014 i can start doing some work hehehe =) i want to bring the rest of the slivers to the game =P

Re: 2014 official cards & decks & functions from ipad

PostPosted: 25 Jun 2013, 12:01
by thefiremind
You can't imagine how much I'm excited! There are lots of improvements everywhere that open so many new possibilities! There are things that need to be done differently from DotP2013 (filters, for example) so it will take some time to digest, but I'm sure that the modding scene for DotP2014 will be brighter than ever! :D

By the way, I have been a Magus of the Future, too: look at Gravecrawler:
Code: Select all
<UTILITY_ABILITY qualifier="Normal_Cast" active_zone="ZONE_GRAVEYARD">
and look at what I said before:
thefiremind wrote:giving more power to UTILITY_ABILITY blocks so that they can give alternative costs that can be used to play the card in different zones.
:lol: :lol: :lol:

EDIT: Bad news: Concerted Effort was on the preliminary lists but it isn't here (protection still can't be checked). Good news: Virulent Sliver!!! :shock:
Code: Select all
SecondaryPlayer():AddPoisonCounters(1)
This means 2 things: AI will finally give poison counters the importance they need, and we won't need hacks to add poison counters. :D
Other good news: CHARACTERISTIC_CAN_BLOCK_IF_TAPPED: if it isn't just a placeholder, we may code Masako the Humorless!

Re: 2014 official cards & functions from ipad

PostPosted: 25 Jun 2013, 12:57
by RiiakShiNal
Scion of Darkness wrote:Sumomole is the deck structure equal to 2013? With the cards from 2014 i can start doing some work hehehe =) i want to bring the rest of the slivers to the game =P
It looks like the basic deck structure is the same, but we have a bunch more attributes for the DECK tag (I just pulled these from D14_DIMIR):
  • cheat_menu_filter_deck_type="Standard" - This probably isn't very important to us as we likely won't have access to the cheat menu, but regular decks have "Standard", land pools have "Utility", Challenges have "Challenge", and Encounters have "Encounter"
  • tus_save_data_id="2" - I'm not sure what this is maybe an entry to say which spot in the profile/save to put the deck configuration???
  • ios_id_1="D14_DECK_UNLOCK_10" - This seems to be the unlock id for apple devices.
  • ios_id_2="D14_DECK_FOIL_10" - This seems to be the foil id for apple devices.
  • steam_id_1="213892" - This looks like our AppId for steam unlocking (maybe no more AppId Linking files).
  • steam_id_2="213893" - This looks like our AppId for steam foiling (maybe no more AppId Linking files).
  • android_id_1="d14_deck_unlock_10" - This seems to be the unlock id for android devices.
  • android_id_2="d14_deck_foil_10" - This seems to be the foil id for android devices.
  • cheat_menu_filter_datapool="D14" - It seems like all decks are put into pool "D14", but again we likely won't have access to the cheat menu so this may not matter to us.
  • name_tag="D14_DIMIR" - I assume this will be the name of the deck (I assume text permanent reference), though I don't know if it is also related to the actual filename.
  • description_tag="DECK_DESCRIPTION_DIMIR" - Looks like we will now be able to give our decks descriptions (looks like a text permanent reference to me).

It also looks like the Land Pools have changed, now they only list the basic lands used for the deck and they do not necessarily have four of each of those lands.

Edit:
FE_LUA_CONDITION = 28
Looks like we may be able to write custom conditions for the filter object.

Also looks like we are missing several creature types again (including Germ, Surrakar, and others).

TRIGGER_CONSIDERED_FOR_CAST = 83
TRIGGER_CONSIDERED_FOR_ACTIVATION = 84
Ooh... this is interesting, hopefully they aren't just placeholders.

STACK_OBJECT_ABILITY = 2
Maybe we can now counter abilities.

QUERY_FLAG_REVEAL_RESULTS = 8
Looks like we can get rid of most of the reveal hacks we used before.

QUERY_FLAG_UNBOUNDED
"Choose Any Number of Targets"?

BADGE_BUSHIDO = 36
BADGE_TEMPORARY_CONTROL_CHANGE = 37
BADGE_MUST_ATTACK = 38
BADGE_CANT_BLOCK = 39
BADGE_MUST_BE_BLOCKED = 40
BADGE_PREVENT_ALL_COMBAT_DAMAGE_RECEIVED = 41
A few more badges including one we really wanted: "Can't Block" (for all those creatures that can't block this turn)

It also looks like our Interrogate options have significantly increased.

Re: 2014 official cards & decks & functions from ipad

PostPosted: 25 Jun 2013, 13:15
by Scion of Darkness
I really like what i see, never a day took so much time to pass, i really want to play this, and with the sealed campain, even more will possibilities will rise

Re: 2014 official cards & decks & functions from ipad

PostPosted: 25 Jun 2013, 13:33
by RiiakShiNal
thefiremind wrote:Bad news: Concerted Effort was on the preliminary lists but it isn't here (protection still can't be checked).
Actually, I have an idea on how to make Concerted Effort, I just got fed up with it in DotP 2013 because at one point I lost all the code and functions I had written for it (though I did have it mostly working at one point, even had it checking and assigning protection) and didn't really want to re-write everything from scratch.

Re: 2014 official cards & functions from ipad

PostPosted: 25 Jun 2013, 13:41
by thefiremind
RiiakShiNal wrote:
TRIGGER_CONSIDERED_FOR_CAST = 83
TRIGGER_CONSIDERED_FOR_ACTIVATION = 84
Ooh... this is interesting, hopefully they aren't just placeholders.
I don't know about the 2nd, but the 1st is now used for coding cost variations (look at Thalia, Guardian of Thraben for example). I wonder if targets are already available at the moment of checking the trigger condition, because if that's so, Elderwood Scion might become possible (with emphasis on "might" because I think there would still be the usual problem of verifying if the spell is affordable before choosing targets).

Re: 2014 official cards & functions from ipad

PostPosted: 25 Jun 2013, 14:33
by RiiakShiNal
thefiremind wrote:I don't know about the 2nd, but the 1st is now used for coding cost variations (look at Thalia, Guardian of Thraben for example). I wonder if targets are already available at the moment of checking the trigger condition, because if that's so, Elderwood Scion might become possible (with emphasis on "might" because I think there would still be the usual problem of verifying if the spell is affordable before choosing targets).
Well TRIGGER_CONSIDERED_FOR_ACTIVATION might make possible cards like Gloom, Heartstone, Power Artifact, and Drought. Though they would still require functions to alter ability costs.

Edit: Looking at Temporal Mastery I see:
Code: Select all
<FRAME_TYPE type="miracle" />
So we may have some control over frames again after all.

Edit 2: Commandeer uses ChooseNewTargets(<Object>) for changing the targets and it is not tied to taking control of the spell. I don't know if we have a function for checking how many targets a spell/ability has though so I don't know if Deflection is possible yet.

Looking at Mwonvuli Beast Tracker I see we can add sub filters (looks similar to how I do my advanced filters in my deck builder. Looking at creatures that have built-in characteristics (like Flying, etc...) it looks like they use a new INTRINSIC tag to mark the characteristic. Though temporary abilities still seem to be handled using GetCurrentCharacteristics():Bool_Set( CHARACTERISTIC_<ability>, 1 ).

Looking at how they assign protection it looks like to code Concerted Effort I'm going to have to resurrect what I tried for 2013, which is going to be a pain.

I'm looking at Virulent Sliver and it looks like the FILTER tag has been changed to actually use the Filter object which is cool. It also looks like we are now able to have different filters for different actions in the same ability.

Looking at Veiled Sentry I see an extra block in the TRIGGERED_ABILITY, INTERVENING_IF, I'm guessing it is checked at a slightly different time than the TRIGGER itself.

Looking at Retether it seems to use a hack to allow it to only enchant creatures. :(

Re: 2014 official cards & functions from ipad

PostPosted: 25 Jun 2013, 16:58
by sumomole
RiiakShiNal wrote:Looking at Veiled Sentry I see an extra block in the TRIGGERED_ABILITY, INTERVENING_IF, I'm guessing it is checked at a slightly different time than the TRIGGER itself.
INTERVENING_IF is used for "intervening 'if' clause". e.g. Valakut, the Molten Pinnacle
Valakut, the Molten Pinnacle's triggered ability has an "intervening 'if' clause." That means (1) the ability won't trigger at all unless, at the time a Mountain enters the battlefield under your control, you control five or more Mountains other than that new one, and (2) the ability will do nothing if you control fewer than five Mountains other than that new one by the time it resolves.

Re: 2014 official cards & functions from ipad

PostPosted: 25 Jun 2013, 17:06
by RiiakShiNal
sumomole wrote:
RiiakShiNal wrote:Looking at Veiled Sentry I see an extra block in the TRIGGERED_ABILITY, INTERVENING_IF, I'm guessing it is checked at a slightly different time than the TRIGGER itself.
INTERVENING_IF is used for "intervening 'if' clause". e.g. Valakut, the Molten Pinnacle
Valakut, the Molten Pinnacle's triggered ability has an "intervening 'if' clause." That means (1) the ability won't trigger at all unless, at the time a Mountain enters the battlefield under your control, you control five or more Mountains other than that new one, and (2) the ability will do nothing if you control fewer than five Mountains other than that new one by the time it resolves.
I understand that much, I was saying that it is probably checked at a slightly different time, otherwise why would they put it into a separate block instead of just putting it into the TRIGGER block like we would do in DotP 2013.

Re: 2014 official cards & functions from ipad

PostPosted: 25 Jun 2013, 20:15
by thefiremind
RiiakShiNal wrote:I understand that much, I was saying that it is probably checked at a slightly different time, otherwise why would they put it into a separate block instead of just putting it into the TRIGGER block like we would do in DotP 2013.
I guess it's just for avoiding writing the same check twice, since the intervening if should be checked both in the trigger condition and during resolution. Many of the choices done by the developers through the DotP games seem to be driven by convenience only.

Re: 2014 official cards & decks & functions from ipad

PostPosted: 25 Jun 2013, 22:50
by alexandreonly
But still no infect decks? Yes, there's the Sliver deck with Virulent Sliver, but not a infect based deck. Also i noticed wither on functions.

Re: 2014 official cards & decks & functions from ipad

PostPosted: 25 Jun 2013, 23:29
by RiiakShiNal
alexandreonly wrote:But still no infect decks? Yes, there's the Sliver deck with Virulent Sliver, but not a infect based deck. Also i noticed wither on functions.
This could mean that the AI is still stupid when trying to handle infect (like DotP 2013). We still have characteristics for infect so it wouldn't necessarily stop us from creating an infect deck.

Edit: Or it could be they are saving that theme for one of the expansions.

Re: 2014 official cards & decks & functions from ipad

PostPosted: 26 Jun 2013, 00:42
by NEMESiS
On an unrelated note. Have you taken a look at the Ramaz boss deck? Its built like an encounter deck rather then a normal deck. If the cards are listed backwards on the deck list the draws are perfect which would help so that player don't just unlock it like they did with the bolas deck to abuse its power online.