It is currently 18 Jul 2025, 22:15
   
Text Size

Community Wad

Moderator: CCGHQ Admins

Re: Community Wad

Postby Splinterverse » 18 Sep 2016, 10:49

Xander -- I added a plugin to my Notepad++ that's really been helping me. It's called XML Tools. You can add it from inside the program.

Here are the two main things it has done:
1. It won't let me save if there is an un-closed tag (and any other errors)
2. There is an option in the menu called "Pretty Print" that when selected cleans up all the tabs/spaces.

Instructions on using it are here: http://notepadhelper.com/notepad-plus-plus/xml-tools-plugin/

Also, I have been using http://www.mtgassist.com to search for similar cards. The advanced search lets you search for cards that are similar to a specified card. Also, you can search for specific text. One nice feature is that you can do two phrases that appear separately, ex search contents: "target opponent" and "more creatures". This feature allows me to find phrases that can sometimes be interrupted by the card name or appear far apart in the text.
---------------------------------------------
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: 76 times

Re: Community Wad

Postby Splinterverse » 18 Sep 2016, 16:56

Advice needed . . .

Waylay -- tokens are being created and badges appear to be there, but the tokens aren't being exiled at end of turn.
http://pastebin.com/P8XeeYQd
---------------------------------------------
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: 76 times

Re: Community Wad

Postby Splinterverse » 18 Sep 2016, 18:16

Well of Knowledge -- It isn't becoming "active". My thinking is it could be that the Draw step is too short or the available block needs to be combined into a single block.
http://pastebin.com/HU41DwFB
---------------------------------------------
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: 76 times

Re: Community Wad

Postby Xander9009 » 18 Sep 2016, 18:24

I'll be busy moving a bunch of furniture today, but after getting the go ahead from migookman, I did get it started yesterday. I expect it to be ready either later today or early tomorrow. I thought of a better way to handle a major part of it as I woke up today, so might take some time to get that in. (Should reduce it from updating once per day to once per minute. If it works.)

But first, I need know this: Splinterverse, I believe you are uploading all cards to the Auto-Upload folder I pointed you to, right?

migookman, are you uploading to the auto-upload or directly to the CARDS folder?

The answer doesn't actually matter, I just need to know if I need to watch both folder.

Also, please don't put me on such a pedestal. :oops: I'd just feel that much worse if I fail. (Although the energy system honestly does sound pretty easy. I mean, at absolute worst, Riiak's manual mana mod could be adapted.)
_______________________________
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: Community Wad

Postby Splinterverse » 18 Sep 2016, 18:37

Xander9009 wrote:But first, I need know this: Splinterverse, I believe you are uploading all cards to the Auto-Upload folder I pointed you to, right?
Auto-Upload all the way. :)
---------------------------------------------
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: 76 times

Re: Community Wad

Postby Splinterverse » 18 Sep 2016, 18:37

Advice needed . . .

Worldgorger Dragon -- the Exile on entry works, but the cards don't return when he leaves the battlefield.
http://pastebin.com/CkXmNpzW
---------------------------------------------
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: 76 times

Re: Community Wad

Postby Xander9009 » 18 Sep 2016, 18:45

Line 67. It's trying to store 'target' instead of 'FilteredCard()'.
_______________________________
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: Community Wad

Postby migookman » 18 Sep 2016, 18:55

I am uploading to the Auto-Upload starting this week and will continue to do so. Before I was just throwing them into the CW loose card folder.
User avatar
migookman
 
Posts: 135
Joined: 05 Aug 2014, 06:37
Has thanked: 22 times
Been thanked: 28 times

Re: Community Wad

Postby Xander9009 » 18 Sep 2016, 18:58

You can upload however you want. I just needed to know which folders to watch, that's all. The auto-upload, by its nature, is easy to catch new cards, since they're moved out of the folder by the very script that would alert the tracker. So, that's definitely the easiest option.
_______________________________
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: Community Wad

Postby Splinterverse » 18 Sep 2016, 22:36

I feel like a fail today. I spent all day coding and only about half of what I did works when tested. :\ Oh, well. Something is better than nothing.

All cards are from the Missing Cards list.

Coded, tested, and uploaded with HQ art:
Petalmane Baku
Skullmane Baku
Wave of Reckoning
Weight of Spires
Well of Discovery
Well of Life
Whimwader
Whippoorwill
Wielding the Green Dragon
Wild Research
Witherscale Wurm
Worldgorger Dragon

Bugs fixed and Tested:
Abundant Growth -- had a typo
Blademane Baku -- was not subtracting ki counters or adding power
Ground Assault -- was allowing player targeting but is only supposed to be creatures

My Problem Cards:

Quillmane Baku -- http://pastebin.com/9fw8fFPa -- ability never lights up as being available for use

Subterranean Tremors -- http://pastebin.com/ArLB8U5n -- card seems to work in every way, but the token never shows up on >8 for X.

Warren Pilferers -- http://pastebin.com/QvxwCngc -- everything works except applying haste to Warren Pilferers. Getting error message about target is nil, but there is definitely a target card because it ends up in my hand.

Waxmane Baku -- http://pastebin.com/g3p5NaBr -- ability lights up, counters are subtracted, but it never does anything (no targets are able to be selected or tapped).

Waylay -- http://pastebin.com/P8XeeYQd -- tokens are being created and badges appear to be there, but the tokens aren't being exiled at end of turn.

Weathered Wayfarer -- http://pastebin.com/G8jFYXKF -- ability works, but it is available all of the time (it is ignoring the availability condition).

Well of Knowledge -- http://pastebin.com/HU41DwFB -- It isn't becoming "active". My thinking is it could be that the Draw step is too short or the available block needs to be combined into a single block.

Wellspring -- http://pastebin.com/ZhvuURJL -- fizzles on play.

Wheel of Sun and Moon -- http://pastebin.com/L5vmpmk1 -- fizzles on play.

Whipgrass Entangler -- http://pastebin.com/5hFnDnGd -- seems to work, but when the opponent chooses to pay the cost, he/she/it doesn't end up tapping mana to pay it.

Whirlpool Warrior -- http://pastebin.com/N7LyLz1n -- activated ability works, but only affects owner (instead of all players); ability on battlefield entry doesn't work.

Widespread Panic -- http://pastebin.com/B5v0PDNk -- literally does nothing and there aren't many examples to compare it to. Not sure what's going on.

Wild Mammoth -- http://pastebin.com/uxE6kDNG -- creature count check does not work.

I welcome anyone's feedback. I'd like to eventually get every card into the game (at least the ones that are possible).

I hope to be back on Thursday to do more cards.
---------------------------------------------
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: 76 times

Re: Community Wad

Postby migookman » 18 Sep 2016, 23:31

For Wellspring, try a SPELL_ABILITY rather than a STATIC_ABILITY to enchant the land.
User avatar
migookman
 
Posts: 135
Joined: 05 Aug 2014, 06:37
Has thanked: 22 times
Been thanked: 28 times

Re: Community Wad

Postby Splinterverse » 19 Sep 2016, 01:40

migookman wrote:For Wellspring, try a SPELL_ABILITY rather than a STATIC_ABILITY to enchant the land.
I will try that! Thanks, migookman!
---------------------------------------------
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: 76 times

Re: Community Wad

Postby Xander9009 » 19 Sep 2016, 06:41

No need to feel like a failure. Plenty of successes, and the rest can be learned.

Quillmane Baku -- http://pastebin.com/9fw8fFPa -- ability never lights up as being available for use.
...
Waxmane Baku -- http://pastebin.com/g3p5NaBr -- ability lights up, counters are subtracted, but it never does anything (no targets are able to be selected or tapped).
For Quillmane Baku, the ability never lights up because there's no valid target. It's trying to find a target with CMC X, but until you pay X, it's nil (or maybe 0). You can't pay the cost until you can cast the card, and you can't cast the card until there are valid targets, and you can't have valid targets until you pay the cost. It's a triangle of "can't"s, each preventing the next.

To fix this, you need to make the target definition return as if it found a valid target so long as there are creatures that would be valid. You just can't actually check their CMC agains the number of counters removed yet. Replace the target definition with this.

Code: Select all
<TARGET_DEFINITION id="0">
   local cost_max
   if EffectDC():Get_Int(3) == 0 then
      cost_max = EffectSource():CountCounters(MTG():GetCountersType("Ki"))
   else
      cost_max = EffectDC():Get_Int(4)
   end
   local filter = ClearFilter()
   filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
   filter:Add( FE_CMC, OP_LESS_THAN_OR_EQUAL_TO, cost_max )
</TARGET_DEFINITION>
In the above code, you'll see EffectDC():Get_Int(3) and Get_Int(4) are used. On lines 84-85, add in the following.
Code: Select all
EffectDC():Set_Int(3, 1)
EffectDC():Set_Int(4, decision)
Now, once the cost is paid, no matter what number is chosen, int 3 is 1 and int 4 contains the number chosen. The targeting definition will now know it's really choosing targets (thanks to int 3) and it will know the real max CMC to target (thanks to int 4). Until that's done, it'll allow targets with CMC up to the current number of ki counters.



For Waxmane Baku, the issue is probably related to what I fixed above with int 4. I think it's likely having trouble reading the result that was made inside the COST outside of that. In other words, "local decision = EffectController():GetNumericalChoiceResult()" on line 84 can't access the result of line 79. So, instead, store the result right after it's made (in the RTA where the counters are removed, just like in Quillman Baku) in EffectDC. Then, get the number from the EffectDC in the target block.

Whether this is the problem or not, you also need to limit the number of counters they're allowed to remove. They shouldn't be able to remove more counters than the number of creatures they can target. This will actually be somewhat in-depth. It will need to ensure they don't have protection from Waxmane Baku (the functions I recently made). They'll also need to make sure they don't have shroud, and they either don't have hexproof or you (or an ally) controls them. If you can get it working otherwise, I'll do the code for that bit.

Subterranean Tremors -- http://pastebin.com/ArLB8U5n -- card seems to work in every way, but the token never shows up on >8 for X.
Line 72: 'token_count' isn't a defined variable, and it should just be 1. Also, for tokens, you don't have to, but you can use CW_Tokens(). You shorten the token name by removing "TOKEN_" from the beginning and "_CW_#" from the end. You don't need to provide a player if it's EffectController() (as it usually is...) and you don't have to provide a number if it's 1 (as it usually is...).
CW_Tokens("LIZARD_C_8_8_R") would make the token. The only catch here is that if you use this, you need to register each version of the token. Just open CW_TOKENS.LOL. Find the token in the list and see how many there are. The number at the end of each token's FILENAME is what changes. For instance, there's only one 8/8 red lizard. But there are, for example (not really) 3 2/2 green wolves. You'd need to register
Code: Select all
<TOKEN_REGISTRATION reservation="1" type="TOKEN_WOLF_C_2_2_G_CW_1" />
<TOKEN_REGISTRATION reservation="1" type="TOKEN_WOLF_C_2_2_G_CW_2" />
<TOKEN_REGISTRATION reservation="1" type="TOKEN_WOLF_C_2_2_G_CW_3" />
This function produces the same results, except the created token can be any version of the token you're making. They all work the same but they have different art. And if you don't want to mess with the registrations, you don't even have to. Just let me know, and I can run a quick script I have that does all of the token registrations (for all cards) automatically.

Just an option.

Warren Pilferers -- http://pastebin.com/QvxwCngc -- everything works except applying haste to Warren Pilferers. Getting error message about target is nil, but there is definitely a target card because it ends up in my hand.
The problem here is that the target changes zones. Warren Pilferers is probably granted haste for one frame, then the target is put into your hand and the continuous action can no longer check if it's a goblin, because the pointer to it is nil now that it's changed zones. The solution here is to store either 1 or 0 in the effectdc before the card moves zones based on whether or not it's a goblin. If it is, store a 1 (0 is default, don't need to code that). In the continuous action, just check if EffectDC():Get_Int(1) == 1 before granting haste. (Note that it's in register 1 since register 0 is taken up by the target).

Waylay -- http://pastebin.com/P8XeeYQd -- tokens are being created and badges appear to be there, but the tokens aren't being exiled at end of turn.
Line 58 makes a delayed trigger for resource id 3, but the delayed trigger on line 80 has id 2.

Weathered Wayfarer -- http://pastebin.com/G8jFYXKF -- ability works, but it is available all of the time (it is ignoring the availability condition).
In the availability block, you've got the first if that checks "if n &lt; NumPlayers then". Inside this, there's another if block, but no matter what happens in that inner block, the code will finish and reach the next line after that inner if, which is "return true". So, in essence, that block says "if n < NumPlayers, then return true".

This is exaccerbated by the fact that you're calling "MTG():GetActionRepCount()", which has no meaning. It's only used is RTAs and PTA with the attribute 'repeating_action="1"'. So, having no meaning, it always returns 0, which is always less than the number of players.

The way to handle this ability would be to start off by counting the player's lands, stored in a variable like PlayersLandCount. Then, go through each player with a 'for i=0,NumPlayers do' loop. Get the 'i'th player, and make sure it's an opponent. If it is, then use the filter to count that opponent's lands. If they have more, immediately return true. At the very end of this block, right before ending the availability, return false (liek it's always doing).

This way, it will only return true when it successfully finds an opponent with more lands.

Well of Knowledge -- http://pastebin.com/HU41DwFB -- It isn't becoming "active". My thinking is it could be that the Draw step is too short or the available block needs to be combined into a single block.
The availability blocks might need combined, I don't know off-hand. However, the issue is in fact the length of the draw step. To fix it, what you do is make an empty triggered ability that triggers at the beginning of each player's draw step. It has to have a valid trigger, but it doesn't need anything else. This way, the timer will give the players a chance to activate it.

Note that the code here may not be enough to ensure that only the player whose turn it is can activate it. Sadly, I'd have to fiddle with it a bunch if it's not.

Like with Wellspring, the enchant ability should be a SPELL_ABILITY.

Whipgrass Entangler -- http://pastebin.com/5hFnDnGd -- seems to work, but when the opponent chooses to pay the cost, he/she/it doesn't end up tapping mana to pay it.
We can't really effectively do abilities that require payment to attack or block. Basically any way we go with these will result in them interacting incorrectly with various other cards.

The issue with this code in particular is probably related to the fact that the code is trying to tell the player to pay the cost about once per frame. Continuous actions are constantly running again and again. Anything in them such as PayManaCost would cause huge issues, and the game probably simply ignores the function because of that.

You can see this happening if you add a line in a CA that simply reads "EffectController():GainLife(1)". You'll hit the maximum amount of life if just a few seconds.

In order to even come close to being right, this would have to grant a delayed ability to the creature that allows its controller to pay the cost in an RTA once per turn right before combat. Store their decision in a LinkedDC, and use that in the CA to determine if the attacking and blocking restrictions should be applied.

But honestly, this card will likely never work exactly the way it's supposed to. As far as an approximation goes, the above is probably the best way to manage it. I'm not certain, though. It'd require more thought.

Whirlpool Warrior -- http://pastebin.com/N7LyLz1n -- activated ability works, but only affects owner (instead of all players); ability on battlefield entry doesn't work.
First and foremost, never handle costs in the resolution. "EffectSource():Destroy()" in an RTA down there will simply make it so that the controller can activate the ability multiple times in a row. It'll also mean that if they can make it indestructible, then the sacrifice component of the cost is negated. Costs always need to go in a cost tag. In this case: <COST type="SacrificeSelf" />.

Secondly, a minor issue, but it should be addressed anyway, you are checking if the 'player' variable is nil, which is correct. But you're using the variable (to get the hand count) before checking if it's nil. move the nil check above the hand count.

Finally, this might be related to the game trying to handle various functions in the same RTA. It doesn't normally matter in situations like this, but it might be the case. If that is the problem, you'll need recode it such that the hand movement, the shuffling, and the drawing are handled in different RTA. You don't need to figure it out from scratch, though, because there's already a card that does exactly this: Winds of Change.


Widespread Panic -- http://pastebin.com/B5v0PDNk -- literally does nothing and there aren't many examples to compare it to. Not sure what's going on.
The first problem I see is also very easy to fix. In the TRIGGER tag, the trigger value has the "TRIGGER_" prefix. Trigger tags' value attributes have "TRIGGER_" removed from their beginning.
The second issue is that the trigger has simple_qualifier="controller", which means this trigger will only every fire if the player who is triggering it is EffectController(). It needs removed and checked in the trigger block.

Code: Select all
<TRIGGER value="TRIGGER_SPELL_OR_ABILITY_CAUSED_SHUFFLE" simple_qualifier="controller" />

becomes

<TRIGGER value="SPELL_OR_ABILITY_CAUSED_SHUFFLE">
   return TriggerObject() ~= nil and SecondaryPlayer() ~= nil and TriggerObject():GetController() == SecondaryPlayer()
</TRIGGER>
Note that I do not know if TriggerObject and SecondaryPlayer are correct. They might need swapped to TriggerPlayer and SecondaryObject.

Not sure if that will make the card work, but it should hopefully be a decent next step.

Wild Mammoth -- http://pastebin.com/uxE6kDNG -- creature count check does not work.
This is a lot more verbose than it needs to be, and I'm not certain where exactly the problem lies. So, instead of figuring out the exact issue here (sorry), I'm just going to suggest a much simpler way of doing it.

You can use a for loop and two variables. One variable tracks the most creatures a player has been found to control so far: iMaxFound, which starts at 0. The other variable tracks who that player was: oFoundPlayer which starts nil. Iterate through the players with the for loop. When you find a number of creatures that beats the current count, set both variables. iMaxFound becomes the new count, and oFoundPlayer becomes the player who controlled them. If you find a number that matches the current max, then leave the current max alone, but set the oPlayerFound to nil.

The result of this is that each time a new max is found, oPlayerFound becomes valid. Whenever they're discovered to have the same number as someone else, they become invalid. So at the end, if oPlayerFound is valid (not nil), then you've got the player with the most creatures. If two players both controlled 5, and 5 was the most anyone controlled, then oPlayerFound will be nil.

Code: Select all
local oSource = EffectSource()
if oSource ~= nil then
   local iPlayerCount = MTG():GetNumberOfPlayers()
   local oPlayerFound = nil
   local iMaxFound = 0
   for i=0,iPlayerCount-1 do
      local oPlayer = MTG():GetNthPlayer(i)
      if oPlayer ~= nil then
         local oFilter = ClearFilter()
         oFilter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
         oFilter:Add(FE_CONTROLLER, OP_IS, oPlayer)
         local iCount = oFilter:Count()
         if iCount &gt; iMaxFound then
            iMaxFound = iCount
            oPlayerFound = oPlayer
         elseif iCount == iMaxFound
            oPlayerFound = nil
         end
      end
   end
   if oPlayerFound ~= nil then
      oSource:SetBaseController(oPlayerFound)
   end
end
I can't guarantee this code will work as-is, but it should be at least very close.

----

I'm extremely tired, so I'm sorry if there are any mistakes in here.
_______________________________
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: Community Wad

Postby Splinterverse » 19 Sep 2016, 11:13

Wow. Xander. Thanks for all the help. What a nice surprise to wake up to!
---------------------------------------------
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: 76 times

Re: Community Wad

Postby MasterXploder7 » 19 Sep 2016, 21:20

Xander9009 wrote:I'm not sure I understand what you mean.

Also, my response to you was missing the word "don't". I meant to say, "I don't think it would work, ..." I don't think we can add counters to players, but it might be worth checking. That's what I meant to say. Not sure if that affects what you're saying, but just in case, I thought I'd mention it.
Primordial Hydra. Thats why im saying we use a card representation. The mana pool (in the game) houses up to 50 mana tokens (at least thats the highest of seen) of any color. So if we use a card to manage the energy counters as literal counters (like charge or +1/+1 counters) then the limit would be 9999 (just like primordial hydra can have P/T of 9999/9999).

Another way of doing it would be in a perma-text box maybe? if you cast Time Warp from the base game (or literally any card that lets you take an extra turn) there is most notably a little thing at your persona that says something along the lines of "extra turn". Would there be a fruitful way to use that space for an energy counter number that can be read by the engine? or would it only stand as a static message that can never change? If we can use this idea then we could also assert more to this area hopefully. (i believe/think it is an emblem on the player - I am not 100% sure if we can edit those)

My biggest goal in my suggestions is to prevent further use of the mana text box that only stays on the screen for about 3ish seconds. I believe energy counters are going to need slightly more versatility than the mana that we normally use.
"Hate is an everlasting wellspring from which it is eternally sustained." - Nirkana Revenant
MasterXploder7
 
Posts: 293
Joined: 18 Jan 2014, 10:55
Has thanked: 28 times
Been thanked: 11 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: Majestic-12 [Bot] and 10 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 11 users online :: 1 registered, 0 hidden and 10 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: Majestic-12 [Bot] and 10 guests

Login Form