It is currently 12 Apr 2021, 00:20
   
Text Size

Hour of Devastation development -- 176/186 uploaded

Moderators: Xander9009, CCGHQ Admins

Re: Hour of Devastation development

Postby fallenangle » 24 Jun 2017, 21:19

As for the proposed changes, I'm perfectly fine with what you've done with Embalm and Eternalize. If we remove the MIDs from the Filename, that will indeed make it easier for us if we code spoiled sets. I would go for this change; although I would be fine if we didn't change it if there are strong objections from Splinterverse.

You should really use his Scorpion God, since he made it first. I would keep my Bontu's over his, just so that all of the "Last" cards use the same code for land-tapping. Still, he made a stab at it even before I did, so I'd rather he got credit for it first before my name shows up on the author tag.
fallenangle
 
Posts: 319
Joined: 20 Jul 2013, 02:31
Has thanked: 73 times
Been thanked: 38 times

Re: Hour of Devastation development

Postby Xander9009 » 24 Jun 2017, 21:23

I agree about making sure they use the same land-tap code, so I've added Splinterverse as an author to Bontu's Last Reckoning. I'll discard The Scorpion God (which, but the way, I nearly always type as "The Scorpion King" before correcting it... Thanks Mummy...). (Well, I'll keep it on hand for now, but I'll move it where I won't accidentally upload 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: 443 times

Re: Hour of Devastation development

Postby Splinterverse » 24 Jun 2017, 21:45

I'm cool with the renaming of the tokens. I haven't changed any that I've coded though. If it's as simple as ETERNALIZE_CARD_NAME, it should be easy to do that.

I definitely am a fan of removing the IDs from the name, so we can play with spoiled cards sooner. The only issues I see are:

(1) we wouldn't have translations in the spoiled ones, which is fine because those can be added later.
(2) we would need to type the artist and expansion in as we go.
(3) sometimes the spoilers are translations, so the English names could end up not being correct; that's not a big deal because we can always rename them and remove the old ones. The challenge would be when people have made decks with those cards; it would error, but that's not that bad.
(4) if we're typing everything, including P/T, there's going to be a lot more that can go wrong; I generally don't worry too much about P/T or keyword abilities since I know that the official card will have it later. Definitely not a reason to not do it, we would just have to be very careful.

What would be awesome is if there was a way to get the data from some place like MythicSpoiler.com similar to how we do from Gatherer.

I'm guessing we'd need to use some other ID system inside the card itself? We could do the date with increment afterward or time. Magic-Ville's spoilers include a time. So it could be something like 201706241101 for 2017-06-24 11:01.
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 70 times

Re: Hour of Devastation development

Postby Xander9009 » 25 Jun 2017, 06:05

Unless either of you specifically want it to be ETERNALIZE_CARD_NAME, then it'll be TOKEN_ETERNALIZE_CARD_NAME. Doing it this way wouldn't require updating any of the tools I've made (of which there are about 2 dozen, not counting the main CW tool I've worked on every now and then). But yeah, that's all the change would be.

For points 1, 2, and 4, all of these can be fixed once they're up on gatherer without any issues with decks crashing the game, so I agree that they wouldn't be reasons not to do it this way.

On point 3, it could be handled either by simply waiting for non-English card names to be spoiled in English, or by taking our best guess and fixing it later. It would be simple to make sure that any cards whose names are translations of non-English spoilers have a visible ability in-game (and in the Deck Builder) that states "Non-English Spoiler" or something as a warning that they may change soon. Heck, make it an activated ability that when you activate it, it shows a more useful message like planeswalker attacking does. I could whip that up with no problem.

Regarding the issue of getting spoilers to work with the card generator, I've made a new input plugin for it. However, it will require a bit more work to be done than the typical plugins. This is because it needs to get the information from Google Drive. I set up a new tool which will periodically check for new spoiled cards MTGSalvation.com (once per minute, since it's an RSS feed, so somewhat quick interval based polling is exactly what they're expecting to happen with it). When there's a new one, it'll write the card's information to a file with the card's name in "...\Community Wad Tools\Working\Spoilers\Spoiled Cards". This file will have the necessary information for the generator to create the basic card if you use the new LocalInputX99 plugin I've uploaded in the Card Generator thread.

This isn't relevant here, but since the plugin reads local files, this can also be used to create custom cards. Just point it to a folder of your choice, make a card there with the right format (very simple and explained in the card generator thread), and use the input plugin.

This should hopefully make coding newly spoiled cards easier, since you can now use the generator to get the basis. Sometime in the future, I'll write up a tool to take a barebones XML file and copy any translations and simple tags to another XML. This will mean that when the final release happens on gatherer, the spoiled cards can be updated with the newly available translations and MIDs.

Keep in mind that both you (by virtue of having access to the CW's files) will also have the ability to delete the txt spoiler cards. This would be an easy way to show you've already coded it so others needn't do so.

And finally, I've updated the Community Wad Sync utility. It now he the ability to notify you when there are newly spoiled cards in the Google Drive folder. You can tell it how often to check (in seconds), or else just click a button to check when you actively want to. If there are any new ones, it'll prompt you to go to open the folder.

----

So, with all of the that said, here's the short version. Get the updated Input file (and the output one, too, since it should make planeswalkers easier). Edit that file to point to your Google Drive Spoiled Cards folder. Convert from the TXT to XML using the generator. Delete the TXT from the Spoiled Cards folder. Alternatively, move the TXT elsewhere before converting. (For instance, if you don't have GD running, then download through the browser and then delete the file in the browser.) Let me know if there are any problems.

I'd make a point to go through when you get the chance and delete any you've already coded. I'll delete Bontu's Last Reckoning and Oketra's Last Mercy, and I'll also delete Torment of Hailfire, since I'm the one that coded that.

One thing I want to do soon is to add in the ability for the planeswalkers to automatically create the manager token. However, it won't currently do that.
_______________________________
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: 443 times

Re: Hour of Devastation development

Postby Splinterverse » 25 Jun 2017, 09:15

TOKEN_ETERNALIZE_CARD_NAME works well. I like it.

I have deleted Resilient Khenra from the the spoiled cards because it is the same as the translation Reshaper Khenra. I will test the output/input stuff using it.

Thanks for getting spoilers imported. Any chance we can do it with a site that has Ixalan or Commander 2017 spoilers? MTGSalvation seems to only be handling the official (non-leak) ones. The only one I know of is MythicSpoilers.com but there may be others.
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 70 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby Splinterverse » 25 Jun 2017, 13:37

I have uploaded everything that has been coded so far except Oketra's Last Mercy because I don't have that code. Bontu's Last Mercy and Torment of Hailfire were already uploaded.

This means that these cards will be playable with the next CW update! :P

I have updated the OP and will endeavor to keep it updated as things develop.
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 70 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby Xander9009 » 25 Jun 2017, 19:30

Oketra's Last Mercy is in there, too.
_______________________________
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: 443 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby Xander9009 » 25 Jun 2017, 21:35

Mythic Spoiler is now supported. Gosh I need a break! haha

They'll appear in the spoilers folder as they're spoiled just like with MTGSalvation. I've also improved the script in a few ways. Most notably, cards that are already in the CW should usually be skipped automatically. No more basic lands or other reprints. (Mostly since if we do end up doing any changes to those, they can probably wait until the gatherer release anyway.)

Unlike with MTGSalvation, however, each card must be downloaded individually. I get the links to the cards from the recent spoilers page. However, given that this page isn't an RSS type page, it's not really designed to have super-frequent calls to it from the same source over and over. They're only run once per minute, so I don't expect it'll matter, but it's possible. There's a slim chance they'll block it at some point. If so, I'll wait until the block expires and implement a speedbump, but I doubt it'll be necessary. It's a pretty big site, so I strongly suspect the strain from this (which will load the page once per minute, but has the potential to call hundreds of other pages per minute if they release enough spoilers at once or if the tool is taken offline long enough to need to update that many), then they might take note.

There actually is an RSS feed, but it's pretty useless. Unlike MTGSalvation's feed, it doesn't list the card contents. It only lists the page the card can be found on. However, this isn't even the card's actual page, just the set page for that card...

All in all, though, it should work pretty well. Let me know if there are any issues with it. (Oh, and there are 70 spoiled cards from future sets currently in there... Just sayin'.)
_______________________________
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: 443 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby Xander9009 » 26 Jun 2017, 06:41

Neither of us seemed to notice it wasn't handling subtypes properly... The plugin is fixed, so those will work properly now. However, it'll mean any creatures without their subtypes will need to be fixed. This will probably also apply to equipment and auras (and possibly planeswalkers). Anything with subtypes.

EDIT: I've added the various subtypes to these cards, and any future cards should have their subtypes handled properly, but it should be something to note that needs to be specifically double checked.

I also updated the D14_PLW.LOL file.
_______________________________
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: 443 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby Splinterverse » 26 Jun 2017, 11:27

Thanks Xander9009 for making Mythic Spoiler compatible. :) :)

Ammitt Eternal has been coded and uploaded (along with LQ art). It has not been tested.

@Xander9009 I used 1.1 of the local generator, but it didn't generate the subtypes. I added them manually for Ammitt Eternal.

I uploaded HQ art for Inferno Jet.

I was going to use Captured by the Consulate as a reference, but I don't see it in the CW. Is it because it's impossible? I remember that I chose not to code it during KLD, but I thought someone else did. Maybe I'm remembering wrong though.

I won't be coding again until a brief time in the morning tomorrow.

EDIT TO ADD: I don't plan to code the basic lands until the art is available AND the Gatherer has been updated. Since there are many basic lands with the same names, I think we should return MIDs in the filenames for those.
---------------------------------------------
The DOTP2014 CW is updated nightly between 11 PM and 12 AM EST.
Known Issues/Bugs |
Impossible Cards List | Update Your Land Pools
Splinterverse
 
Posts: 918
Joined: 04 Sep 2016, 13:32
Has thanked: 150 times
Been thanked: 70 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby fallenangle » 26 Jun 2017, 17:34

I think Captured By the Consulate is impossible in 2014. We can check if a spell has a single target, and we can also change the targets of such a spell. We cannot, as far as I know, change the targets to a specific card, however. It might be possible to get around this by granting everything but the enchanted card protection during the choosing of targets, but I'm not sure.
fallenangle
 
Posts: 319
Joined: 20 Jul 2013, 02:31
Has thanked: 73 times
Been thanked: 38 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby Xander9009 » 26 Jun 2017, 19:28

Regarding Captured by the Consulate, yes, granting everything else protection from that card instance for the duration of the targeting would work. Back when I was working on the protection functions, I managed to get a working copy of Mirrorwing Dragon, and this was the method I used, and it worked fine.

It's may also be possible to skip the targeting bit and simply writing to its target check. You check if it has a single target by getting the target chest, so it might be possible to simply write directly to it. This way, it would skip the player having to actually select Captured by the Consulate's enchanted creature. However, this is hypothetical, and I have no idea if it would work.

----

For the subtype issue, that's because you need version 1.2. The plugin itself needed to be updated, and I somehow blanked that little detail. I'm uploading it to the card generator thread now, but it is, as always, available in the public tools folder.
_______________________________
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: 443 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby fallenangle » 26 Jun 2017, 20:14

Xander9009 wrote:It's may also be possible to skip the targeting bit and simply writing to its target check. You check if it has a single target by getting the target chest, so it might be possible to simply write directly to it. This way, it would skip the player having to actually select Captured by the Consulate's enchanted creature. However, this is hypothetical, and I have no idea if it would work.
I would be very curious to see what a hypothetical code for writing directly to the target chest would look like.
fallenangle
 
Posts: 319
Joined: 20 Jul 2013, 02:31
Has thanked: 73 times
Been thanked: 38 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby Xander9009 » 26 Jun 2017, 20:45

Sorry, took a while to write up and comment.

Code: Select all
--This functions as if it only works if there's only one target.
--So, it will first check how many targets it finds using this method, and then it will attempt to change the target in the found chest.

local oSpell = SomeSpell   --This is the spell that needs to target something new.
local oNewTarget = EffectSource()   --This is the new target the spell will be given.

if oSpell ~= nil and oNewTarget ~= nil then   --Obviously, don't do anything if the necessary variables aren't set.
   local iVerifiedTargetChestIndex = -1   --As long as this is -1, no valid target has been found. At -2, more than one was found.
   local oSpellDC = oSpell:GetDataChest()   --This gets "EffectDC()" from oSpell.
   if oSpellDC ~= nil then               
      local iTargetChestIndex = 0         --This will track which "Get_Targets()" index we're on.
      local oTargets = oSpellDC:Get_NthTargets(iTargetChestIndex)   --Although, technically, we're using "Get_NthTargets()", because it will skip EffectDC registers in use by other things like cards and players.
      while oTargets ~= nil do                           --As long as it keeps finding new target DCs, keep running through them.
         local iCardIndex = 0                           --This tracks which index within the current target chest we're on.
         local oTarget = oTargets:Get_NthCardPtr(iCardIndex)      --Like "Get_NthTargets()", this skips non-cardptr registers.
         while oTarget ~= nil do                           --As long as we keep finding new card targets, keep running through them.
            if iVerifiedTargetChestIndex == -1 then            --If this index has never been set
               iVerifiedTargetChestIndex = iTargetChestIndex   --The set it to a positive number.
            else                                    --Otherwise, it's been set before, and we have a new valid target, meaning there are multiple
               iVerifiedTargetChestIndex = -2               --So set it to -2.
            end
            iCardIndex = iCardIndex + 1                     --Update card index so we keep moving forward.
            oTarget = oTargets:Get_NthCardPtr(iCardIndex)      --Update card ptr so we can check if it's valid.
         end
         iTargetChestIndex = iTargetChestIndex + 1            --Update chest index so we keep moving forward.
         oTargets = oSpellDC:Get_NthTargets(iTargetChestIndex)   --Update chest ptr so we can check if it's valid.
      end
      if iVerifiedTargetChestIndex >= 0 then               --If this is 0 or greater, then exactly one valid target was found, and it was in this target chest.
         local oTargets = oSpellDC:Get_NthTargets(iVerifiedTargetChestIndex)   --Get that target chest.
         local iCardIndex = 0                           --We can't "Set_NthCardPtr()", but we know there's exactly one. So, just run through the chest with this index until we find it.
         local oTarget = oTargets:Get_CardPtr(iCardIndex)      --Get the next register as a card ptr.
         while oTarget == nil and iCardIndex <= 10000 do      --Unless we've found a valid ptr or we're out of bounds, keep looking.
            iCardIndex = iCardIndex + 1
            oTarget = oTargets:Get_CardPtr(iCardIndex)
         end
         if oTarget ~= nil then                           --We found the card ptr. It didn't go out of bounds. So, iCardIndex is currently correct.
            oTargets:Set_CardPtr(iCardIndex, oNewTarget)      --Set that register to the new target and hope for the best.
         end
      end
   end
end
EDIT: This does not check the "if able" part. That requires the use of the protection functions. This function will check those protection functions, but until every card with protection has been given those functions, it won't work with them: "CW_General_CanSpellTargetObject_F(oSpell, oTarget)".
_______________________________
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: 443 times

Re: Hour of Devastation development -- 78 uploaded and compl

Postby merdok » 26 Jun 2017, 22:20

The Locust God has bug, its activated ability is causing it to tap.
merdok
 
Posts: 24
Joined: 31 May 2015, 20:33
Has thanked: 1 time
Been thanked: 11 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 18 guests


Who is online

In total there are 18 users online :: 0 registered, 0 hidden and 18 guests (based on users active over the past 10 minutes)
Most users ever online was 1371 on 09 Feb 2020, 16:22

Users browsing this forum: No registered users and 18 guests

Login Form