It is currently 12 Sep 2025, 16:35
   
Text Size

Formal Request Thread

Moderator: CCGHQ Admins

Re: Formal Request Thread

Postby zysron » 27 Mar 2015, 06:35

i dont know what exactly is wrong with it (maybe the no image) but i tried making Nomads' Assembly with the code posted a few pages ago and it doestn show up in game... also is there a limit to how many cards are in a deck? like do i have to put those extra cards into the unlocks? or am i screwing something up?
zysron
 
Posts: 102
Joined: 13 Mar 2015, 09:02
Has thanked: 0 time
Been thanked: 2 times

Re: Formal Request Thread

Postby RiiakShiNal » 27 Mar 2015, 10:50

zysron wrote:i dont know what exactly is wrong with it (maybe the no image) but i tried making Nomads' Assembly with the code posted a few pages ago and it doestn show up in game...
My first guess here would be that you didn't get the encoding right when using the posted code. Card files must be saved using UTF-8 encoding to work properly if anywhere in the card's code non-English characters are used. Note that simply changing the encoding to UTF-8 and re-saving will not work as you will have already lost information if it was previously saved as ANSI/ASCII. If you did not save it in the correct format initially then you will need to take the original code and re-paste it then save in UTF-8.

zysron wrote:also is there a limit to how many cards are in a deck? like do i have to put those extra cards into the unlocks? or am i screwing something up?
Yes and No.

There is a card limit for how many cards the DotP 2014 engine will support in a deck including all unlocks. The limit is 100 cards (including basic lands in the main deck).

If you want the game engine to manage the basic land in the main deck then your main deck (including the amount of basic lands you want) needs to be no more than 60 cards. You can put more than 60 cards into the main deck, but then you will have to manually manage the land as the game engine will no longer be able to manage it for you.

It is highly recommended that you design a 60 card deck (including lands) as the main deck and include any extra cards you want for the deck in the "Unlocks" as that is what the game engine was designed to handle. You can design decks that are different and make them work, but it usually requires quite a bit more work on your part to do so.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Formal Request Thread

Postby Xander9009 » 27 Mar 2015, 15:18

Hey, Riiak, I'm looking into the possibility of coding Assault Formation, but of course there's no direct way to code the attacking/defender bit. I counted up the current cards that reference defender in any way, and there are 116. However, I narrowed it down (VERY roughly) to about 11 that target or count defenders.

So, my question: do you think it would work out alright to have things that attack as thought they didn't have defender remove the game's internal defender characteristic and temporarily replace it with a fake defender characteristic, and then add an OR to the cards that target or count defenders to check for either the internal or the fake defender characteristics?

It seems reasonable to me, but I might be missing something.

EDIT: As an addition to the above, I only mostly understand how layers work, so I could be wrong about this, but shouldn't we be able to include a check in the static ability that grants the fake defender which makes it only grant it if it already has it by doing so on a lower layer than the layer on which it's removed? And if they need to be done on the same layer, could we perhaps use a lower layer continuous action whose only purpose is to set an int to 1 or 0 depending on whether or not it has defender at that layer which the fake defender granting action could check? I don't know if there might be instances where this might be necessary, but if there would be, it shouldn't theoretically be difficult to implement if I'm right about how the layers work.

Also, on a completely unrelated note, I know the cards are stored as tables internally. Would it be theoretically possibly to read those tables through lua without using the functions meant to do so? Specifically, I'm thinking of Lazav, Dimir Mastermind. There's currently no way at all to change the name of a card, but if we could read and subsequently write to the card table directly, then we should be able to manage that. So, I'm wondering if it's just a matter of accessing and deciphering the card's table or if there would be technical hurdles we wouldn't be able to overcome. I'm not really intending to try (at the moment, at least, I don't intend to ever try), but I'm curious if it would be potentially possible.
_______________________________
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: Formal Request Thread

Postby Zambooo » 27 Mar 2015, 19:07

Is Exploration supposed to "stack" with Crucible of Worlds (letting me play 2 Land Cards from my graveyard)? If so.. it doesn't on the game :P
User avatar
Zambooo
 
Posts: 242
Joined: 01 Jul 2012, 21:33
Has thanked: 19 times
Been thanked: 17 times

Re: Formal Request Thread

Postby ShoGUN » 27 Mar 2015, 20:05

Yes it is... :)
User avatar
ShoGUN
 
Posts: 28
Joined: 17 Feb 2015, 09:30
Has thanked: 6 times
Been thanked: 5 times

Re: Formal Request Thread

Postby zysron » 27 Mar 2015, 20:11

theres a static ability on the equipment Warmonger's Chariot i beleive you can turn that into a target ability
i know 2014 has a creature that searches library for a creature with deathtouch or trample (under sealed decks)
i do not know if its possible to take those search params and modify them to work for permenents, but if so could you use that to make the card?

and everything is possible... we just got to figure it out
zysron
 
Posts: 102
Joined: 13 Mar 2015, 09:02
Has thanked: 0 time
Been thanked: 2 times

Re: Formal Request Thread

Postby Xander9009 » 27 Mar 2015, 20:27

zysron wrote:theres a static ability on the equipment Warmonger's Chariot i beleive you can turn that into a target ability
i know 2014 has a creature that searches library for a creature with deathtouch or trample (under sealed decks)
i do not know if its possible to take those search params and modify them to work for permenents, but if so could you use that to make the card?

and everything is possible... we just got to figure it out
To make what card?

I don't have the card Warmonger's Chariot. And if you mean to make the defender that can attack ability, the problem is that all methods of doing so thus far have included removing defender, which messes up cards that count or target defenders.
_______________________________
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: Formal Request Thread

Postby RiiakShiNal » 27 Mar 2015, 23:24

Xander9009 wrote:Hey, Riiak, I'm looking into the possibility of coding Assault Formation, but of course there's no direct way to code the attacking/defender bit. I counted up the current cards that reference defender in any way, and there are 116. However, I narrowed it down (VERY roughly) to about 11 that target or count defenders.

So, my question: do you think it would work out alright to have things that attack as thought they didn't have defender remove the game's internal defender characteristic and temporarily replace it with a fake defender characteristic, and then add an OR to the cards that target or count defenders to check for either the internal or the fake defender characteristics?

It seems reasonable to me, but I might be missing something.
If we decide to recode all cards that refer to defender then we can actually completely replace it with a fake defender characteristic. Essentially, at the start of combat on our turn we would need to check cards for the fake defender characteristic as well as any effects that would allow it to attack as though it didn't have defender. If it has the fake defender characteristic and does not have any effects that would allow it to attack during this combat then we would temporarily set CHARACTERISTIC_CANT_ATTACK until end of combat (we could have it expire after attackers are declared, but I think the indicator might be nice just to show why they didn't attack), otherwise we don't set it. Do note, however, that due to the fake characteristics implementation any static ability checking for the fake defender characteristic would need to check on layer 8. We would want to continue to follow the rules for fake characteristics for setting of the flag.

Xander9009 wrote:EDIT: As an addition to the above, I only mostly understand how layers work, so I could be wrong about this, but shouldn't we be able to include a check in the static ability that grants the fake defender which makes it only grant it if it already has it by doing so on a lower layer than the layer on which it's removed? And if they need to be done on the same layer, could we perhaps use a lower layer continuous action whose only purpose is to set an int to 1 or 0 depending on whether or not it has defender at that layer which the fake defender granting action could check? I don't know if there might be instances where this might be necessary, but if there would be, it shouldn't theoretically be difficult to implement if I'm right about how the layers work.
I'm not exactly sure what you are trying to say here, but layers work by executing code on the lowest layer first in the order in which the card/effect entered play (later used cards/effects work later). Once a given layer has been completely executed then you execute the next layer up as per the previous rule. Layer 7 is an exception in that it is composed of sub-layers which execute in order from 7a through 7e and is used exclusively for determining power/toughness. Layer 8 is the last layer I am aware of (there might be a layer 9, but I have never seen it).

One of the tricky layers is layer 6 as that is where most abilities get granted and where LoseAllAbilities() operates so careful testing is required there.

Xander9009 wrote:Also, on a completely unrelated note, I know the cards are stored as tables internally. Would it be theoretically possibly to read those tables through lua without using the functions meant to do so? Specifically, I'm thinking of Lazav, Dimir Mastermind. There's currently no way at all to change the name of a card, but if we could read and subsequently write to the card table directly, then we should be able to manage that. So, I'm wondering if it's just a matter of accessing and deciphering the card's table or if there would be technical hurdles we wouldn't be able to overcome. I'm not really intending to try (at the moment, at least, I don't intend to ever try), but I'm curious if it would be potentially possible.
Theoretically, it may be possible to access and read those tables using Lua functions as long as the C objects that are exposed through the table structure support those built-in Lua functions. For example it may be possible to get a listing of all items in the table by using the table.unpack function. Unfortunately this won't necessarily tell you what a specific item is for example it could be an integer, string, table, or function pointer. So parsing and trying to figure out what is there could be very difficult.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Formal Request Thread

Postby Zambooo » 28 Mar 2015, 01:27

I coded an "approximation" of Assault Formation (already in the CW), and the best I could do without fake characteristics was to remove Defender for the shortest amount possible: from the beginning of combat to the Defenders declared step (excluded)
Recoding all cards with Defender didn't not seem like an affordable idea IMO :/
User avatar
Zambooo
 
Posts: 242
Joined: 01 Jul 2012, 21:33
Has thanked: 19 times
Been thanked: 17 times

Re: Formal Request Thread

Postby Xander9009 » 28 Mar 2015, 02:27

RiiakShiNal wrote:If we decide to recode all cards that refer to defender then we can actually completely replace it with a fake defender characteristic. Essentially, at the start of combat on our turn we would need to check cards for the fake defender characteristic as well as any effects that would allow it to attack as though it didn't have defender. If it has the fake defender characteristic and does not have any effects that would allow it to attack during this combat then we would temporarily set CHARACTERISTIC_CANT_ATTACK until end of combat (we could have it expire after attackers are declared, but I think the indicator might be nice just to show why they didn't attack), otherwise we don't set it. Do note, however, that due to the fake characteristics implementation any static ability checking for the fake defender characteristic would need to check on layer 8. We would want to continue to follow the rules for fake characteristics for setting of the flag.
I could do that, but I actually only intended to recode the 11 cards that count or target defenders.

RiiakShiNal wrote:I'm not exactly sure what you are trying to say here, but layers work by executing code on the lowest layer first in the order in which the card/effect entered play (later used cards/effects work later). Once a given layer has been completely executed then you execute the next layer up as per the previous rule. Layer 7 is an exception in that it is composed of sub-layers which execute in order from 7a through 7e and is used exclusively for determining power/toughness. Layer 8 is the last layer I am aware of (there might be a layer 9, but I have never seen it).

One of the tricky layers is layer 6 as that is where most abilities get granted and where LoseAllAbilities() operates so careful testing is required there.
That's how I thought they worked. I was just saying that I wasn't 100% certain if it would be necessary, but if a creature with defender is given the ability to attack as though it didn't have defender until end of turn, and then the same creature loses defender, it would still have the fake characteristic which shouldn't be there.

Activate Wakestone Gargoyle. Wakestone Gargoyle removes intrinsic defender characteristic from Gargoyle Sentinel and replace it with a fake defender characteristic and a "can attack as though..." fake characteristic.
Activate Gargoyle Sentinel, which tries to remove the intrinsic defender, but it's already gone. Now, Gargoyle Sentinel will still count for Vent Sentinel even though it shouldn't. It could attack, which it should be able to do, and that much works, but it's still a potential for the same problem the current method has.

What I was asking about is if it would be possible to check on layer 1 if Gargoyle Sentinel has the intrinsic defender characteristic each continuous action iteration before removing and replacing it on layer 6. If it doesn't have it, then don't grant the fake one because it's been removed somehow. This is only if we don't want to recode all of the cards with defender. Which I'd rather avoid.

RiiakShiNal wrote:Theoretically, it may be possible to access and read those tables using Lua functions as long as the C objects that are exposed through the table structure support those built-in Lua functions. For example it may be possible to get a listing of all items in the table by using the table.unpack function. Unfortunately this won't necessarily tell you what a specific item is for example it could be an integer, string, table, or function pointer. So parsing and trying to figure out what is there could be very difficult.
Yeah, I figured that if it was possible to get some arbitrary element, it would have to be tested to see what it is. I was thinking that it would be easiest to take a few simple cards and get as many elements as possible and compare them to the cards and try to spot a pattern.

Zambooo wrote:I coded an "approximation" of Assault Formation (already in the CW), and the best I could do without fake characteristics was to remove Defender for the shortest amount possible: from the beginning of combat to the Defenders declared step (excluded)
Recoding all cards with Defender didn't not seem like an affordable idea IMO :/
Yes, the point of the layer questions was to avoid recoding all cards with defender. Only 11 or so would need redone to grant and/or check the fake characteristic. Everything else would stay as it is.
_______________________________
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: Formal Request Thread

Postby RiiakShiNal » 28 Mar 2015, 12:46

Xander9009 wrote:What I was asking about is if it would be possible to check on layer 1 if Gargoyle Sentinel has the intrinsic defender characteristic each continuous action iteration before removing and replacing it on layer 6. If it doesn't have it, then don't grant the fake one because it's been removed somehow. This is only if we don't want to recode all of the cards with defender. Which I'd rather avoid.
Yes and no. You can check intrinsic characteristics like that, but you typically can't check assigned characteristics until layer 7 or 8 (since they are assigned on layer 6). Though you would still have a problem checking things on layer 1 since what you see on layer 1 may or may not equal what you see on layer 8. For example you have your Gargoyle Sentinel and use it's ability to remove the intrinsic defender on layer 0 and you check on layer 1 to see if it needs fake defender. Then an opponent casts Ovinize on the Gargoyle Sentinel so now on layer 6 there is a LoseAllAbilities() which will clear any intrinsic/granted abilities, but unfortunately this does not clear fake characteristics (which are stored in chests in the DuelDataChest()) which is what makes things tricky. Now you still have the fake characteristic on Gargoyle Sentinel (even though it shouldn't be due to Ovinize) and it will still be counted for Vent Sentinel even though it shouldn't at this point.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: Formal Request Thread

Postby zysron » 29 Mar 2015, 22:12

OK i got all the errors fixed... but i put it into my deck and it doest have any abilities... can i get some help with my necrotic ooze?
Code: Select all
<?xml version='1.0'?>
<CARD_V2>
  <FILENAME text="NECROTIC_OOZE_CW_277300" />
  <CARDNAME text="NECROTIC_OOZE" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Necrotic Ooze]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="277300" />
  <ARTID value="131041" />
  <ARTIST name="James Ryman" />
  <CASTING_COST cost="{2}{B}{B}" />
  <FLAVOURTEXT>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[“To death all must go, and so in death lies ultimate power.”
Geth, Lord of the Vault]]></LOCALISED_TEXT>
</FLAVOURTEXT>
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Ooze" order_de-DE="0" order_es-ES="0" order_fr-FR="0" order_it-IT="0" order_jp-JA="0" order_ko-KR="0" order_pt-BR="0" order_ru-RU="0" />
  <EXPANSION value="DPG" />
  <RARITY metaname="R" />
  <POWER value="4" />
  <TOUGHNESS value="3" />
  <STATIC_ABILITY filter_zone="ZONE_GRAVEYARD">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as Necrotic Ooze is on the battlefield, it has all activated abilities of all creature cards in all graveyards.]]></LOCALISED_TEXT>
    <FILTER>
    return (FilteredCard() ~= nil and
    FilteredCard():GetCardType():Test( CARD_TYPE_CREATURE ) ~= 0 and
    FilteredCard():GetZone() == (ZONE_GRAVEYARD))
    </FILTER>
    <CONTINUOUS_ACTION>
    local characteristics = Object():GetCurrentCharacteristics()
    local card = FilteredCard()
    if card:GetCardName() == "AVATAR_OF_WOE" then
       characteristics:GrantAbility(1)
    elseif card:GetCardName() == "BURNISHED_HART" then
       characteristics:GrantAbility(2)
    elseif card:GetCardName() == "DRANA_KALASTRIA_BLOODCHIEF" then
       characteristics:GrantAbility(3)
    elseif card:GetCardName() == "GETH_LORD_OF_THE_VAULT" then
       characteristics:GrantAbility(4)
    elseif card:GetCardName() == "PACK_RAT" then
       characteristics:GrantAbility(5)
    elseif card:GetCardName() == "STEEL_HELLKITE" then
       characteristics:GrantAbility(6)
    elseif card:GetCardName() == "STEEL_HELLKITE" then
       characteristics:GrantAbility(7)
    elseif card:GetCardName() == "URBORG_SKELETON" then
       characteristics:GrantAbility(8)
    elseif card:GetCardName() == "SKIRSDAG_HIGH_PRIEST" then
       characteristics:GrantAbility(9)
       characteristics:GrantAbility(10)
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <ACTIVATED_ABILITY resource_id="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{T}: Destroy target creature. It can’t be regenerated.]]></LOCALISED_TEXT>
   <COST type="TapSelf" />
    <TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TO_DESTROY" 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 = EffectDC():Get_Targets(0):Get_CardPtr(0)
    if target ~= nil then   
       target:DestroyWithoutRegenerate() 
    end
    </RESOLUTION_TIME_ACTION>
    <AI_AVAILABILITY window_step="declare_blockers" type="window" />
    <AI_AVAILABILITY type="in_response" response_source="1" />
    <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
    <AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
    <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
    <AI_AVAILABILITY window_step="declare_blockers" type="window" />
    <AI_AVAILABILITY window_step="end_of_turn" type="window" />
    <AI_AVAILABILITY type="in_response" response_source="1" response_target="1" />
    <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
  </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY resource_id="2">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{3}, Sacrifice Necrotic Ooze: Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library.]]></LOCALISED_TEXT>
    <COST mana_cost="{3}" type="Mana" />
      <COST type="SacrificeSelf" />
      <RESOLUTION_TIME_ACTION>
         local effectController = EffectController()
         local filter = ClearFilter()
         filter:Add( FE_TYPE, OP_IS, CARD_TYPE_LAND )
         filter:Add( FE_SUPERTYPE, OP_IS, SUPERTYPE_BASIC )
         filter:SetZone( ZONE_LIBRARY, effectController)
         effectController:SetItemCount( 2 )
         effectController:SetItemPrompt( 0, "CARD_QUERY_CHOOSE_LAND_TO_PUT_ONTO_THE_BATTLEFIELD_TAPPED" )
         effectController:SetItemPrompt( 1, "CARD_QUERY_CHOOSE_LAND_TO_PUT_ONTO_THE_BATTLEFIELD_TAPPED" )
         effectController:ChooseItems( EffectDC():Make_Targets(0), QUERY_FLAG_UP_TO )
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         for i = 0,(2-1) do
            local target_card = EffectDC():Get_Targets(0):Get_CardPtr(i)
            if target_card ~= nil  then
               target_card:PutOntoBattlefieldTapped( EffectController() )
            end
         end
      </RESOLUTION_TIME_ACTION>
      <RESOLUTION_TIME_ACTION>
         EffectController():ShuffleLibrary()
      </RESOLUTION_TIME_ACTION>
      <AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY type="in_response" />
      <AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
   </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY resource_id="3">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{X}{B}{B}: Target creature gets -0/-X until end of turn and Necrotic Ooze gets +X/+0 until end of turn.]]></LOCALISED_TEXT>
    <COST mana_cost="{X}{B}{B}" type="Mana" />
      <TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TO_LOSE_0_X" definition="0" compartment="0" count="1" />
      <TARGET_DEFINITION id="0">
         local filter = ClearFilter()
         filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
      </TARGET_DEFINITION>
      <CONTINUOUS_ACTION layer="7C">
         local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
         if target ~= nil then
            target:GetCurrentCharacteristics():Toughness_Add( -GetEffectX() )
         end
      </CONTINUOUS_ACTION>
      <CONTINUOUS_ACTION layer="7C">
         if EffectSource() ~= nil then
            EffectSource():GetCurrentCharacteristics():Power_Add( GetEffectX() )
         end
      </CONTINUOUS_ACTION>
      <DURATION simple_duration="UntilEOT" />
      <AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ENEMY_ONLY" />
      <AI_AVAILABILITY type="in_response" response_source="1" />
      <AI_AVAILABILITY window_step="begin_combat" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_blockers" type="window" />
      <AI_AVAILABILITY window_step="end_of_turn" type="window" />
      <SFX text="TARGET_FANG_PLAY" />
   </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY resource_id="4">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{X}{B}: Put target artifact or creature card with converted mana cost X from an opponent’s graveyard onto the battlefield under your control tapped. Then that player puts the top X cards of his or her library into his or her graveyard.]]></LOCALISED_TEXT>
    <COST mana_cost="{X}{B}" type="Mana" />      
      <TARGET tag="CARD_QUERY_CHOOSE_ARTIFACT_OR_CREATURE_TO_PUT_ONTO_THE_BATTLEFIELD" definition="0" compartment="0" count="1" />
      <TARGET_DEFINITION id="0">
         local filter = ClearFilter()
         filter:Add( FE_CMC, OP_EQUALS, GetEffectX() )
         local subfilter = filter:AddSubFilter_Or()
            subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ARTIFACT )
            subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
         filter:Add( FE_OWNER, OP_NOT, EffectController() )
         filter:SetZone( ZONE_GRAVEYARD )
    </TARGET_DEFINITION>
      <RESOLUTION_TIME_ACTION>
         local target = EffectDC():Get_Targets(0):Get_CardPtr(0)
         if  target ~= nil then
            target:PutOntoBattlefieldTapped( EffectController() )
            target:GetOwner():MillCards( GetEffectX() )
         end 
    </RESOLUTION_TIME_ACTION>
   </ACTIVATED_ABILITY>
    <ACTIVATED_ABILITY resource_id="5">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{2}{B}, Discard a card: Put a token onto the battlefield that’s a copy of Pack Rat.]]></LOCALISED_TEXT>
    <COST mana_cost="{2}{B}" type="Mana" />
      <COST type="Discard" definition="0" compartment="1" query_tag="CARD_QUERY_CHOOSE_CARD_TO_DISCARD" item_count="1" />
      <COST_DEFINITION id="0">
         local filter = ClearFilter()
         filter:SetZone( ZONE_HAND, EffectController())
      </COST_DEFINITION>
      <RESOLUTION_TIME_ACTION>
         MTG():PutTokenCopiesOntoBattlefield( EffectSourceLKI(), 1, EffectController() )
      </RESOLUTION_TIME_ACTION>
      <AI_AVAILABILITY window_step="declare_blockers" type="window" />
      <AI_AVAILABILITY type="in_response" response_source="1" />
      <AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
   </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY firebreathing="1" resource_id="6">
   <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{2}: Necrotic Ooze gets +1/+0 until end of turn.]]></LOCALISED_TEXT>
    <COST mana_cost="{2}" type="Mana" />
      <CONTINUOUS_ACTION layer="7C">
         if EffectSource() ~= nil then
            local characteristics = EffectSource():GetCurrentCharacteristics()
            characteristics:Power_Add( 1 )
            characteristics:Toughness_Add( 0 )
         end
      </CONTINUOUS_ACTION>
      <DURATION simple_duration="UntilEOT" />
         </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY per_turn_limit="1" resource_id="7">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{X}: Destroy each nonland permanent with converted mana cost X whose controller was dealt combat damage by Necrotic Ooze this turn. Activate this ability only once each turn.]]></LOCALISED_TEXT>
    <COST type="Mana" cost="{X}" />
    <FILTER>
    local player = ObjectDC():Get_PlayerPtr(97)
    return (FilteredCard():GetPlayer() == player and FilteredCard():GetConvertedManaCost() == GetEffectX())
    </FILTER>
    <RESOLUTION_TIME_ACTION>
    FilteredCard():Destroy()
    </RESOLUTION_TIME_ACTION>
    <AI_AVAILABILITY step="main_2" turn="my_turn" />
  </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY resource_id="8">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[{B}: Regenerate Necrotic Ooze.]]></LOCALISED_TEXT>
    <COST mana_cost="{B}" type="Mana" />
      <RESOLUTION_TIME_ACTION>
         if EffectSource() ~= nil then
            EffectSource():GiveRegeneration()
         end
      </RESOLUTION_TIME_ACTION>
      <AI_AVAILABILITY window_step="declare_blockers" type="window" window_in_combat="1" />
      <AI_AVAILABILITY type="in_response" response_source="1" />
      <AI_AVAILABILITY type="restriction" restriction_type="no_regeneration_shield" />
      <AI_MODIFIERS combat_immunity="1" />
  </ACTIVATED_ABILITY>
  <ACTIVATED_ABILITY resource_id="9">
   <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[|Morbid| — {T}, Tap two untapped creatures you control: Put a 5/5 black Demon creature token with flying onto the battlefield. Activate this ability only if a creature died this turn.]]></LOCALISED_TEXT>
    <AVAILABILITY>
         local interrogation = MTG():ClearInterrogationQuery()
         interrogation:SetFromZone( ZONE_BATTLEFIELD )
         interrogation:SetToZone( ZONE_GRAVEYARD )
         interrogation:SetType( CARD_TYPE_CREATURE )
         if interrogation:Test( INTERROGATE_CARDS_MOVED_ZONE, INTERROGATE_THIS_TURN ) then
            return true
         else
            return false
         end
      </AVAILABILITY>
      <COST type="TapSelf" />
      <COST type="Tap" definition="0" compartment="1" query_tag="CARD_QUERY_CHOOSE_CREATURE_TAP" item_count="2" />
      <COST_DEFINITION id="0">
         local filter = ClearFilter()
         filter:Add( FE_CARD_INSTANCE, OP_NOT, EffectSource() )
         filter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
         filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
         filter:Add( FE_IS_TAPPED, false )
      </COST_DEFINITION>
      <RESOLUTION_TIME_ACTION>
         MTG():PutTokensOntoBattlefield( "TOKEN_DEMON_C_5_5_B_F_CW_1", 1, EffectController() )
      </RESOLUTION_TIME_ACTION>
      <AI_AVAILABILITY window_step="declare_blockers" type="window" />
      <AI_AVAILABILITY type="in_response" response_source="1" />
      <AI_AVAILABILITY window_step="end_of_turn" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="declare_attackers" window_turn="their_turn" type="window" />
      <AI_AVAILABILITY window_step="main_2" window_turn="my_turn" type="window" />
      <AI_AVAILABILITY window_step="main_1" window_turn="my_turn" type="window" />
   </ACTIVATED_ABILITY>
   <TOKEN_REGISTRATION reservation="1" type="TOKEN_DEMON_C_5_5_B_F_CW_1" />
  <HELP title="MORE_INFO_BADGE_TITLE_10" body="MORE_INFO_BADGE_BODY_10" zone="ZONE_ANY" />
  <HELP title="MORE_INFO_BADGE_TITLE_31" body="MORE_INFO_BADGE_BODY_31" zone="ZONE_ANY" />
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
  <AI_BASE_SCORE score="600" zone="ZONE_IN_PLAY" />
</CARD_V2>
i dont know why the only thing i changed was the abilities

oh damn do i need the full cards name including the cw multiverse id?
zysron
 
Posts: 102
Joined: 13 Mar 2015, 09:02
Has thanked: 0 time
Been thanked: 2 times

Re: Formal Request Thread

Postby zysron » 29 Mar 2015, 22:37

nope that did nothing
zysron
 
Posts: 102
Joined: 13 Mar 2015, 09:02
Has thanked: 0 time
Been thanked: 2 times

Re: Formal Request Thread

Postby Xander9009 » 29 Mar 2015, 22:38

Look closer at a random card. It has two tags, CARDNAME and FILENAME. GetCardName returns the CARDNAME tag, not the FILENAME tag, so no, you don't need the CW and multiverse ID bits.

Get rid of filter_zone="ZONE_GRAVEYARD". Secondly, Within a <FILTER> block, you shouldn't use FilteredCard(). The filter you need is this:

<FILTER filter_id="1">
local filter = ClearFilter()
filter:SetZone(ZONE_GRAVEYARD)
filter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
</FILTER>

And then the continuous action needs to refer to filter_id="1" in order to use FilteredCard().

<CONTINUOUS_ACTION filter_id="1">
_______________________________
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: Formal Request Thread

Postby zysron » 29 Mar 2015, 22:43

also Geth, Lord of The Vault does not work... ?

Ogre Slumlord doesnt work correctly
if there are multiple slumlords on the field then you should also get a rat if a slumlord dies example
my opponent had 4 slumlords i had two if i used black sun zenith my opponent should have gotten 20 rats and i should have gotten 10 rats but instead neither of us got rats.
zysron
 
Posts: 102
Joined: 13 Mar 2015, 09:02
Has thanked: 0 time
Been thanked: 2 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 10 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 10 users online :: 0 registered, 0 hidden and 10 guests (based on users active over the past 10 minutes)
Most users ever online was 7967 on 09 Sep 2025, 23:08

Users browsing this forum: No registered users and 10 guests

Login Form