It is currently 27 Apr 2024, 05:56
   
Text Size

Modding tests (what changed from 2014, what didn't)

Moderator: CCGHQ Admins

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 12 Jul 2015, 14:37

thefiremind wrote:[*]SetBlockController is still broken: when choosing how the opponents' creatures block, the only possible choice is no blockers at all.

[*]Layer 4 is now called 4B. Be sure to change it when you port a DotP2014 card, or it won't work.

[*]card:Reveal() doesn't exist anymore: now the cards to reveal need to be put in a chest and then you call player:RevealToMe(chest).
1.) SetBlockController - No Odric, Master Tactician. Would approximations work?

2.) Layer 4 is now called 4B - Thanks for revealing that. Any more discoveries concerning Layers?

3.) card:Reveal() - I imported Thoughtsieze from the CW and noticed that it's fully functional but there are now two phases to the effect. Whereas usually their hand would be revealed and you choose a card for them to discard, now their hand is revealed in a first prompt and then their is a second prompt where you actually select the card. Can you share your code for how you would create this card for 2015?

I'm pouring back over the 2015 threads once again for information I missed.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 13 Jul 2015, 16:51

Seance 2014.png
Seance 2014 by Sumomole using Layer 4

Seance 2015.png
Seance 2015 using Layer 4B


AS POINTED OUT BY TFM, LAYER 4 IS NOW CALLED LAYER 4B

Layer 4B affects card types. It's a simple matter to change the attribute value from 4 to 4B. I did so with Dance of the Skywise from Xander9009's Dragos of Tarkir set and it worked after a few tweaks. Below is a list of cards from Gatherer that affect card types in some way. I used different search phrases.

Search Phrase: Bestow

Baleful Eidolon
Boon Satyr
Cavern Lampad
Celestial Archon
Chromanticore
Crystalline Nautilus
Eidolon of Countless Battles
Erebos's Emissary
Everflame Eidolon
Flitterstep Eidolon
Ghostblade Eidolon
Gnarled Scarhide
Heliod's Emissary
Herald of Torment
Hopeful Eidolon
Hypnotic Siren
Leafcrown Dryad
Mogis's Warhound
Nighthowler
Nimbus Naiad
Noble Quarry
Nylea's Emissary
Nyxborn Eidolon
Nyxborn Rollicker
Nyxborn Shieldmate
Nyxborn Triton
Nyxborn Wolf
Observant Alseid
Purphoros's Emissary
Sightless Brawler
Spearpoint Oread
Spirespine
Spiteful Returned
Thassa's Emissary

Search Phrase: Creature that's still a

Animate Land
Gideon Jura
Gideon, Battle-Forged
Lifespark Spellbomb
Living Terrain
Mishra's Groundbreaker
Quirion Druid
Spike Tiller
Stalking Stones
Verdant Touch

Search Phrase: In addition to its other types

Adaptive Automaton
Angelic Armaments
Angelic Destiny
Aquitect's Will
Arbiter of the Ideal
Argent Mutation
Ashes of the Fallen
Ashiok, Nightmare Weaver
Ashnod's Transmogrant
Aurification
Call to Serve
Captivating Vampire
Chainer, Dementia Master
Copy Artifact
Dismiss into Dream
Dread Slaver
Elvish Branchbender
Ensoul Artifact
Feldon of the Third Path
Felhide Spiritbinder
Ghoulflesh
Grave Betrayal
Halcyon Glaze
Lazav, Dimir Mastermind
Lim-Dûl the Necromancer
Liquimetal Coating
Master Biomancer
Memnarch
Mephidross Vampire
Mistform Sliver
Myr Landshaper
Myth Realized
Necromantic Selection
Neurok Transmuter
Nylea's Presence
Olivia Voldaren
Opalescence
Phantasmal Image
Phyrexian Metamorph
Primal Clay
Rise from the Grave
Sakashima the Impostor
Sakashima's Student
Sealock Monster
Séance
Sensei Golden-Tail
Silverskin Armor
Starfield of Nyx
Still Life
Testament of Faith
Thran Forge
Transmogrifying Licid
Urborg, Tomb of Yawgmoth
Xathrid Gorgon
Xenograft

Search Phrase: With base

Dance of the Skywise
Darksteel Mutation
Dragonshift
Ensoul Artifact
Figure of Destiny
Island of Wak-Wak
Lignify
Omnibian
Polymorphist's Jest
Skinshifter
Snakeform
Tezzeret the Seeker
Tezzeret, Agent of Bolas
Turn/Burn
Turn to Frog
Warden of the First Tree
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Xander9009 » 13 Jul 2015, 17:11

Using Riiak's Deck Builder's advanced filters to search for layer="4", I came up with 275 cards throughout either the base game or the CW. At least that's a really simple change. Simply doing a search/replace for layer="4" to layer="4B" would fix this one.

Unfortunately, Reveal() is a lot less simple to fix since it needs a chest created. Although, adding the card to a new chest and then revealing it could be automated for specific abilities. Still, if we want to do it properly, it'll be a lot of recoding. 214 cards with :Reveal().
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 13 Jul 2015, 21:44

Craterhoof - 2014 - 2015 Comparison 1.png
Craterhoof - 2014 - 2015 Comparison 1

Craterhoof - 2014 - 2015 Comparison 2.png
Craterhoof - 2014 - 2015 Comparison 2


I knew I was missing a lot of cards. I just wanted to cite some examples. And I don't mind re-coding the cards to add the B4 attribute value. It's simple enough.

With the :Reveal() I'll wait for someone to create a card using the new chest. On a different note, I also noticed that Delve, Manifest, and Morph stopped working when I ported a few cards with their keywords over to 2015. We'll have to create new codes for them or modify the existing ones.

When everyone agrees on how we will 'Officially' structure the 2015 Community Wad we can proceed. I'm just waiting for the green light. I also did a XML Comparison with the official Craterhoof Behemoth XMLs from 2014 and 2015. The color highlights show what was added, deleted, changed, changed within a change, and what was ignored. Starting from the top, Craterhoof Behemoth is

INFORMATION CHANGED OR MISSING FROM THE OFFICIAL 2014 CRATERHOOF BEHEMOTH XML:
Code: Select all
<CARD_V2 ExportVersion="66">
<FILENAME text="CRATERHOOF_BEHEMOTH_388071" />
<MULTIVERSEID value="388071" />

<LOCALISED_TEXT LanguageCode="zh-CN">
<LOCALISED_TEXT LanguageCode="zh-HK">

<DECKBUILDING_ACTIVATION_LEVEL base_score="0">
<DECKBUILDING_SYNERGY_BONUS score_per_unit="50" resource_name="Token" />
</DECKBUILDING_ACTIVATION_LEVEL>
<DECKBUILDING_ACTIVATION_LEVEL base_score="0">
<DECKBUILDING_SYNERGY_BONUS max_amount="24" score_per_unit="50" resource_type="CREATURE" />
</DECKBUILDING_ACTIVATION_LEVEL>
<DECKBUILDING_ACTIVATION_LEVEL base_score="1900"

<EXPLAIN play_tag="HINT_CREATURE_ETB_WHY_PLAY" removal_tag="HINT_CREATURE_VANILLA_WHY_REMOVE" is_removal="false"/>
The overall statistics are below.

Added (14,3)
Changed (10)
Changed in changed (8)
Deleted(0,2)
Ignored (0)
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 13 Jul 2015, 22:56

Aurelia's Assault.png
Aurelia's Assault



I also forgot to mention that the need for a TEXT PERMANENT to display triggers are more optional now. The game intuitively reads the card information. I first noticed this when I tested Palace Siege from the Fate Reforged set. Take note of the screenshot of Angelic Skirmisher when her ability triggers.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby thefiremind » 13 Jul 2015, 23:02

Tejahn wrote:I also forgot to mention that the need for a TEXT PERMANENT to display triggers are more optional now. The game intuitively reads the card information. I first noticed this when I tested Palace Siege from the Fate Reforged set. Take note of the screenshot of Angelic Skirmisher.
The ability text was displayed in DotP2014 as well, but it was in a separate window on the bottom right if I remember correctly. The text for the 3 choices still works because standard TEXT_PERMANENT strings were used, which carried over to the official DotP2015 files without changes.

On a different note, I wanted to announce that I stopped my DotP2015 tests because there's a chance we could move directly to Magic Duels without waiting too long. According to spirolone, the ZED files used in Magic Duels (extracted by me from the iPad version) have the same format as the DotP2015 ones, the developers just changed the encryption key. As soon as the Steam version is released, a run of the executable through a debugger will be possible, and hopefully the new key will be discovered. If everything goes as planned, it will be just a matter of looking inside the new ZED files and discover what changed again. I think there's a high chance that Magic Duels won't have any card limit (because it's built to be expandable), so it may give us more flexibility. There would also be 2HG available, which many people want to play, not to mention double-faced cards and Planeswalkers. For me, it's worth waiting a bit. :)
< 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: 721 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 13 Jul 2015, 23:26

You're correct about the two different box screens that appeared in 2014. I too am awaiting the PC release. And we're all awaiting the return of 2HG. In the meantime, I'm still testing to familiarize myself with the changes in 2015 since they may have carried over to Magic Duels. Expandability is a key feature of the new game so I think there will be no card limit as well. I've not yet installed Magic Duels but I may do so tonight.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Xander9009 » 14 Jul 2015, 00:13

In mentioning the modability of 2015 and its limitations and my hope for Origins to a friend, he mentioned the possibility that they'll impose a limit specifically to make modding harder, and simply raise the limit periodically to accommodate whatever cards they add. I don't find it likely, but it's worth keeping in mind. But yeah, I haven't done much with it, and probably won't unless someone can come up with a good way to go about it.
_______________________________
Community Wad - Community Wad Website - How to Help and Report Bugs
Discord: discord.gg/4AXvHzW
User avatar
Xander9009
Programmer
 
Posts: 2905
Joined: 29 Jun 2013, 07:44
Location: Indiana, United States
Has thanked: 121 times
Been thanked: 445 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 15 Jul 2015, 00:57

Myth Realized - Enchantment 1.png
Myth Realized - Enchantment 1

Myth Realized - Enchantment 2.png
Myth Realized - Enchantment 2

Myth Realized - Creature 1.png
Myth Realized - Creature 1

Myth Realized - Creature 2.png
Myth Realized - Creature 2


I was looking in my Snagit folder for a screenshot from another game and realized I forgot to post these the other day. This is proof that changing only the attribute value 4 to 4B works. Thanks for the card Xander9009! I built a control deck around Dragonlord Ojutai and Silumgar, the Drifting Death featuring Myth Realized. Consuming Vapors and a few other Rebound cards are helping a lot.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby thefiremind » 17 Jul 2015, 12:54

GrovyleXShinyCelebi wrote:I wonder, is it possible to make additional costs optional, then test to see if that cost was paid with 2015's engine (i.e. Dragonlord's Prerogative)?
This answer comes pretty late, but I finished coding Draconic Roar now, and I had to try some different workarounds in order to find the best one. My final idea has been to code the additional cost as a kicker, while the check for controlling a Dragon is done in a triggered ability that triggers when the spell is played.
Note that Gatherer rulings say that the bonus given by the additional cost should be copied by copies of the spell (kicker will take care of this for us), while the bonus given by controlling a Dragon shouldn't (hence why I added the WasCast check, actually I'm not sure if LinkedDC gets copied by copies of the spell, but this way it's guaranteed to work).
Draconic Roar code (tested, non-English text omitted) | Open
Code: Select all
  <UTILITY_ABILITY qualifier="Kicker">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As an additional cost to cast Draconic Roar, you may reveal a Dragon card from your hand.]]></LOCALISED_TEXT>
    <COST type="Reveal" definition="0" compartment="1" query_tag="CARD_QUERY_CHOOSE_CARD_TO_REVEAL" item_count="1" amount="1" />
    <COST_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add(FE_SUBTYPE, OP_IS, CREATURE_TYPE_DRAGON)
    </COST_DEFINITION>
    <ABILITY_TEXT tag="CARD_QUERY_CHOOSE_CARD_TO_REVEAL" secondary_tag="CARD_QUERY_DO_NOTHING" />
  </UTILITY_ABILITY>
  <TRIGGERED_ABILITY replacement_effect="1" linked_ability_group="1" active_zone="ZONE_ANY">
    <TRIGGER value="SPELL_PLAYED" simple_qualifier="self" />
    <RESOLUTION_TIME_ACTION>
    if EffectSourceLKI():WasCast() then
       local filter = ClearFilter()
       filter:Add(FE_SUBTYPE, OP_IS, CREATURE_TYPE_DRAGON)
       filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
       LinkedDC():Set_Int( 1, filter:CountStopAt(1) )
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <SPELL_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Draconic Roar deals 3 damage to target creature. If you revealed a Dragon card or controlled a Dragon as you cast Draconic Roar, Draconic Roar deals 3 damage to that creature’s controller.]]></LOCALISED_TEXT>
    <SFX text="TARGET_FLAME_PLAY" />
    <TARGET tag="CARD_QUERY_CHOOSE_CREATURE_DEAL_3_DAMAGE" definition="0" compartment="0" count="1" />
    <TARGET_DEFINITION id="0">
    local filter = ClearFilter()
    filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
    </TARGET_DEFINITION>
    <RESOLUTION_TIME_ACTION>
    local target_creature = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target_creature ~= nil then
       local controller = nil
       if EffectSourceLKI():WasKicked() or LinkedDC():Get_Int(1) == 1 then
          controller = target_creature:GetController()
       end
       EffectSourceLKI():DealDamageTo(3, target_creature)
       if controller ~= nil then
          EffectSourceLKI():DealDamageTo(3, controller)
       end
    end
    </RESOLUTION_TIME_ACTION>
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
  </SPELL_ABILITY>
I know this would be incompatible with cards like Rumbling Aftershocks, but those cards would be impossible to code anyway because WasKicked() is set only upon resolution.

By the way, I'm pretty sure this would work in DotP2014 as well.
< 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: 721 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 17 Jul 2015, 13:33

Thanks! I coded Dragonlord's Prerogative a while back. It's the draw engine for the control deck I mentioned earlier. I coded it in a somewhat similar way with no regard for the official rulings because it's in a deck I don't plan on releasing. Either way, great job as always! I can't wait to test your version. Bravo!
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby thefiremind » 17 Jul 2015, 13:41

Tejahn wrote:Thanks! I coded Dragonlord's Prerogative a while back. It's the draw engine for the control deck I mentioned earlier. I coded it in a somewhat similar way with no regard for the official rulings because it's in a deck I don't plan on releasing. Either way, great job as always! I can't wait to test your version. Bravo!
Now that I think about it, though, "can't be countered" must be granted on the stack, so kicker won't help. I'm not sure about how to adapt my code to that.
< 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: 721 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 17 Jul 2015, 16:19

Be sure to post your final result. I'll post the one I hastily created when I leave work.
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby Tejahn » 18 Jul 2015, 20:36

thefiremind wrote:[*]Kira, Great Glass-Spinner and similar cards can be coded now! We have a brand new INTERROGATE_BECAME_TARGET which allows us to do this:
Kira, Great Glass-Spinner granted ability | Open
Code: Select all
  <TRIGGERED_ABILITY resource_id="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Whenever this creature becomes the target of a spell or ability for the first time in a turn, counter that spell or ability.]]></LOCALISED_TEXT>
    <TRIGGER value="BECAME_TARGET_OF_SPELL" simple_qualifier="self">
    local creature = EffectSource()
    if creature ~= nil then
       local interrogation = MTG():ClearInterrogationQuery()
       interrogation:SetObject(creature)
       return interrogation:Count(INTERROGATE_BECAME_TARGET, INTERROGATE_THIS_TURN) == 0
    end
    return false
    </TRIGGER>
    <TRIGGER value="BECAME_TARGET_OF_ABILITY" simple_qualifier="self">
    local creature = EffectSource()
    if creature ~= nil then
       local interrogation = MTG():ClearInterrogationQuery()
       interrogation:SetObject(creature)
       return interrogation:Count(INTERROGATE_BECAME_TARGET, INTERROGATE_THIS_TURN) == 0
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    MTG():CounterStackObject( TriggerStackObjectID() )
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
Is Icefall Regent possible now? I've been trying to follow your code to make it's second ability but now I just want to request the code if you can post it.

EDIT: While I'm at it, but not to start a request thread, does someone think the following cards which were impossible in 2014 are now possible in 2015 based on what we know so far? I'm asking because I don't want to spend time trying to create them if someone already knows that they're impossible to implement.

Archetype of Imagination
Battlefield Thaumaturge
Charging Rhino (I actually played with this cards on Magic Duels Origins last night and liked it)
Dark Impostor
Daxos of Meletis
Ghostly Prison
Kurkesh, Onakke Ancient
Lazav, Dimir Mastermind
Lush Growth
Meandering Towershell
Mindlock Orb
Ob Nixilis, Unshackled
Oppressive Rays
Psychic Intrusion
Skill Borrower
Sphere of Safety
Training Grounds
Tromokratis
Urborg, Tomb of Yawgmoth
Tejahn
 
Posts: 430
Joined: 14 May 2013, 01:35
Has thanked: 25 times
Been thanked: 25 times

Re: Modding tests (what changed from 2014, what didn't)

Postby thefiremind » 18 Jul 2015, 21:09

About Dragonlord's Prerogative, I gave up: I can't make it work like Draconic Roar.

Tejahn wrote:Is Icefall Regent possible now? I've been trying to follow your code to make it's second ability but now I just want to request the code if you can post it.
Icefall Regent is a totally different story: I don't think we'll ever get the support to have different costs with different targets in DotP because it would require a radical change for a few cards (unless we get lucky and a similar mechanic becomes a keyword in a future expansion, then we might see it in Magic Duels).

Tejahn wrote:While I'm at it, but not to start a request thread, does someone think the following cards which were impossible in 2014 are now possible in 2015 based on what we know so far?
< 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: 721 times

PreviousNext

Return to 2015

Who is online

Users browsing this forum: No registered users and 3 guests


Who is online

In total there are 3 users online :: 0 registered, 0 hidden and 3 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 3 guests

Login Form