It is currently 23 Apr 2024, 17:53
   
Text Size

Impossible Cards (tracking, discussing, etc.)

Moderator: CCGHQ Admins

Re: Impossible Cards (tracking, discussing, etc.)

Postby thefiremind » 29 Oct 2016, 23:41

Xander9009 wrote:Otherwise, it'll need replaced with a ChooseItem() function.
I would strongly recommend this choice. If an ability isn't using the word "target", don't use TARGET blocks: you'll confuse yourself and the other modders who look at the code. Long time has passed since DotP2012 required an extensive use of targets even when there were none, luckily for us. :mrgreen:

Using Make_Targets/Get_Targets instead of Make_Chest/Get_Chest when you are the one initializing them, though, is totally fine. I think the only difference is that target chests can also include a target definition, while regular chests can't.
< 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: Impossible Cards (tracking, discussing, etc.)

Postby Splinterverse » 30 Oct 2016, 11:00

I've switched Forbidden Crypt to use chooseitem. I'll be testing it later today.

Has anyone created a manager for experience counters? I'm guessing it would be similar to energy but without the spending.

These are the cards that would use it:
Daxos the Returned
Ezuri, Claw of Progress
Kalemne, Disciple of Iroas
Meren of Clan Nel Toth
Mizzix of the Izmagnus
---------------------------------------------
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: 75 times

Re: Impossible Cards (tracking, discussing, etc.)

Postby Splinterverse » 30 Oct 2016, 21:37

OP updated and new text file sent to Xander.
---------------------------------------------
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: 75 times

Re: Impossible Cards (tracking, discussing, etc.)

Postby Splinterverse » 06 Nov 2016, 11:58

Is Joint Assault possible with the current implementation of Soulbond? Or would each Soulbond card have to be updated for it to work? In other words, how can Joint Assault check to see if the target creature is paired via Soulbond?
---------------------------------------------
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: 75 times

Re: Impossible Cards (tracking, discussing, etc.)

Postby Xander9009 » 06 Nov 2016, 19:29

Splinterverse wrote:Is Joint Assault possible with the current implementation of Soulbond? Or would each Soulbond card have to be updated for it to work? In other words, how can Joint Assault check to see if the target creature is paired via Soulbond?
Completely possible. Go have a look at one, and you'll see this line
Code: Select all
RSN_ObjectDC():Set_CardPtr(S_COMPARTMENT_ID_OBJ_PAIRED, target)
However, it only stores the target of the card with soulbond printed on it. This means that to determine if it's soulbonded, you'll first need to check if that card pointer is valid on the target. Then, if it's not, you'll need to check each other creature to see if its pointer is valid and set to the target. So, if the target points to another card in that pointer or another card points to the target, then they're soulbonded.

Code: Select all
<TARGET tag="CARD_QUERY_CHOOSE_CREATURE_TO_GET_2_2" definition="0" compartment="0" count="1" />
<TARGET_DEFINITION id="0">
   local oFilter = ClearFilter()
   oFilter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
</TARGET_DEFINITION>
<RESOLUTION_TIME_ACTION>
   local oTarget = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
   if oTarget ~= nil then
      local oPairedCreature = RSN_GetObjectDC(oTarget) and RSN_GetObjectDC(oTarget):Get_CardPtr(S_COMPARTMENT_ID_OBJ_PAIRED)
      if oPairedCreature ~= nil then
         EffectDC():Set_CardPtr(1, oPairedCreature)
      else
         local oFilter = ClearFilter()
         oFilter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
         oFilter:Add(FE_CARD_INSTANCE, OP_NOT, oTarget)
         oFilter:Add(FE_CONTROLLER, OP_IS, oTarget:GetController())
         local iCount = oFilter:EvaluateObjects()
         for i=0,iCount-1 do
            local oCreature = oFilter:GetNthEvaluatedObject(i)
            if oCreature ~= nil then
               oPairedCreature = RSN_GetObjectDC(oCreature) and RSN_GetObjectDC(oCreature):Get_CardPtr(S_COMPARTMENT_ID_OBJ_PAIRED)
               if oPairedCreature ~= nil and oPairedCreature == oTarget then
                  EffectDC():Set_CardPtr(1, oCreature)
               end
            end
         end
      end
   end
</RESOLUTION_TIME_ACTION>
<CONTINUOUS_ACTION layer="7C">
   local oTarget = EffectDC():Get_Targets(0) and EffectDC():Get_Targets(0):Get_CardPtr(0)
   if oTarget ~= nil then
      local oCharacteristics = oTarget:GetCurrentCharacteristics()
      oCharacteristics:Power_Add(2)
      oCharacteristics:Toughness_Add(2)
   end
   local oPairedCreature = EffectDC():Get_CardPtr(1)
   if oPairedCreature ~= nil then
      local oCharacteristics = oPairedCreature:GetCurrentCharacteristics()
      oCharacteristics:Power_Add(2)
      oCharacteristics:Toughness_Add(2)
   end
</CONTINUOUS_ACTION>
<DURATION simple_duration="UntilEOT" />
<AI_SIMPLIFIED_TARGETING compartment="0" hint="HINT_ALLIED_ONLY" />
Although, actually, phasing cards all need to be recoded a bit anyway. They currently use the CHARACTERISTIC_PHASING constant. It wasn't in use by anything at the time, and it was thought impossible until NeoAnderson came along and coded it. Now, since it's actually in use, the soulbond abilities that use that constant need to be given their own. I'll add it to my to-do list.
_______________________________
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: Impossible Cards (tracking, discussing, etc.)

Postby Splinterverse » 08 Nov 2016, 14:16

Thanks Xander. I will test that today.

New question -- is Hoarder's Greed possible given the ruling "10/1/2007 : The effect will automatically repeat itself until its controller doesn’t win the clash. There’s no other way to stop it"?

I ask because I see "return Player_Clash" in a separate RTA from the remainder of the existing clash cards' blocks. I would expect to have the result in the same block to be able to determine if it should repeat.
---------------------------------------------
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: 75 times

Re: Impossible Cards (tracking, discussing, etc.)

Postby thefiremind » 08 Nov 2016, 15:48

Splinterverse wrote:New question -- is Hoarder's Greed possible given the ruling "10/1/2007 : The effect will automatically repeat itself until its controller doesn’t win the clash. There’s no other way to stop it"?

I ask because I see "return Player_Clash" in a separate RTA from the remainder of the existing clash cards' blocks. I would expect to have the result in the same block to be able to determine if it should repeat.
Wouldn't it be about the same as Crazed Firecat, then? Make a repeating action with a parity check: when parity == 0 you clash and always repeat (return true), when parity == 1 you check the clash result and repeat if you won.
< 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: Impossible Cards (tracking, discussing, etc.)

Postby Splinterverse » 17 Nov 2016, 15:00

Are Errantry and Master of Cruelties possible with their "can only attack alone" clauses? The only implementation I could think of might be an approximation where you are asked at the beginning of combat if you want to attack with the creature enchanted by Errantry. If you select yes, all other creatures on your team get a can't attack characteristic until end of turn. But I'm guessing that implementation might interact poorly with certain cards. I can't think of any example cards off-hand, but it just seems like the kind of thing that would be problematic.

Also, what about Flash? Is that card impossible? Looking at the code in Gonti, I would think that some of the functions used there might help, but I can't think of any implementation that doesn't involve hard-coding every possible combination of mana symbols and reducing it by 2 (which would definitely not be worth it).
---------------------------------------------
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: 75 times

Re: Impossible Cards (tracking, discussing, etc.)

Postby Xander9009 » 17 Nov 2016, 16:21

Splinterverse wrote:Are Errantry and Master of Cruelties possible with their "can only attack alone" clauses? The only implementation I could think of might be an approximation where you are asked at the beginning of combat if you want to attack with the creature enchanted by Errantry. If you select yes, all other creatures on your team get a can't attack characteristic until end of turn. But I'm guessing that implementation might interact poorly with certain cards. I can't think of any example cards off-hand, but it just seems like the kind of thing that would be problematic.

Also, what about Flash? Is that card impossible? Looking at the code in Gonti, I would think that some of the functions used there might help, but I can't think of any implementation that doesn't involve hard-coding every possible combination of mana symbols and reducing it by 2 (which would definitely not be worth it).
For the can only attack alone check, use a "CANT_ATTACK_TEST" triggered ability. If TriggerObject() == EffectSource() and there are creatures other than EffectSource() currently attacking, then return true.

You don't need to hard-code the mana cost combinations. Once you've gotten it as a string (which the functions can give you), you can check the string for instances of colorless mana. Basically, just search for {#} within the cost string, and if it's found, reduce it by two. If it's greater than 0 still, you're done. If it's less than 1, remove it altogether.
Code: Select all
local sCost = SomeFunction() -- sCost == "{3}{R}{R}"
local sOriginalColorlessCost = string.match(sCost, '{%d+}') -- Find {#} within the cost. Returns "{3}".
if sOriginalColorlessCost ~= nil then
    local iColorlessCost = tonumber(string.sub(sOriginalColorlessCost, 2, -2)) - 2 -- Get just the number section (even if it's multiple digits) and reduces it by 2. Returns 1.
    local sColorlessCost = ""
    if iColorlessCost &gt;= 1 then
        sColorlessCost = "{"..iColorlessCost .."}" -- If the colorless cost component is still valid, turn it back into a mana string component with braces.
    end
    sCost = string.gsub(sCost, sOriginalColorlessCost, sColorlessCost) --The original colorless cost component is now either replaced with the reduced version (if it was >=1) or removed entirely.
end
--sCost is now reduced by up to {2} and is still a usable cost string.
It may not be the best code, owing to my being very tired at the moment, but it should either work or be close. The idea, at least, should be easy enough to grasp from 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: Impossible Cards (tracking, discussing, etc.)

Postby Splinterverse » 18 Nov 2016, 14:40

I will be trying the above today.

New question -- is there a way to make the game a draw? Cards like Celestial Convergence and Divine Intervention refer to the game being a draw, but I am only familiar with WinGame() and LoseGame() functions. I'm guessing if I call LoseGame() on one player, the other one will automatically "win" so I don't think I can just call LoseGame() on the other player (or players).
---------------------------------------------
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: 75 times

Re: Impossible Cards (tracking, discussing, etc.)

Postby Xander9009 » 18 Nov 2016, 14:42

Before overcomplicating it too much, try just calling LoseGame() on all players inside the same RTA and see what happens.
_______________________________
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: Impossible Cards (tracking, discussing, etc.)

Postby nivmizzet1 » 25 Nov 2016, 04:03

is Zada, Hedron Grinder possible?

It's not listed in the exhaustive list of impossible cards in this thread but

Migookman in 2015 suggested it isn't possible


but later, very recently, he tried to code it, but without success so far


From the ensuing discussion it sounds like this card isn't possible at present but will be possible once Xander has distributed his protection functions.
nivmizzet1
 
Posts: 613
Joined: 21 Mar 2013, 10:10
Has thanked: 100 times
Been thanked: 25 times

Re: Impossible Cards (tracking, discussing, etc.)

Postby Xander9009 » 25 Nov 2016, 17:53

It's possible. It's just difficult/tedious, because you're correct when you say it just needs my protection functions to be distributed. When I get a chance, I'll do so unless someone else decides to do 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: Impossible Cards (tracking, discussing, etc.)

Postby Splinterverse » 09 Dec 2016, 14:15

I'll be updating the master list soon.

I'm looking for answers to these questions and/or confirmation of some of my assumptions:

Leyline of Singularity - Don't think there's a way to make something "legendary".

Outwit - Is there a way to check if a spell on the stack is targeting a player?

Rings of Brighthearth - not sure if there is a trigger for this or if it can distinguish between mana abilities and non-mana abilities.

Riptide Replicator and Volrath's Laboratory -- guessing we'd need a generic token that can assume the creature type and PT? Maybe with generic art of some kind?

Runic Repetition and Tombfire -- can we detect whether a card has flashback?

Season of the Witch -- is checking for tapped/untapped and Defender sufficient here? I'm thinking that there are spells that prevent creatures from attacking and I'm not sure how to make this card aware of that. Maybe, since this happens at the end step, it could check for the can't attack characteristic?

Siege Behemoth - "as though it weren't blocked" damage assignment. Maybe approximate-able with a "deals no combat damage", but I'm not sure how the assignment of all the damage would happen since the number of creatures could be different every time.

Skullcrack - Preventing damage prevention?

Spiny Starfish - The rulings state that the tokens are based on the times it actually regenerated NOT how many times regeneration was applied. Is there a way to track how many times it regenerated?

Stabilizer - I don't think there's a way to track cycling. Am I correct?

Street Savvy - Any way to block landwalk creatures as though they didn't have that ability with just this creature?

Tromokratis - seems like blocking restriction, but I'm not sure.

Tsabo's Web - is there a way to detect whether a land has an activated ability that is not mana-producing?

Vassal's Duty - can we detect which creatures are legendary?

Ydwen Efreet - "become unblocked" is that possible?
---------------------------------------------
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: 75 times

Re: Impossible Cards (tracking, discussing, etc.)

Postby RiiakShiNal » 10 Dec 2016, 00:18

Splinterverse wrote:Leyline of Singularity - Don't think there's a way to make something "legendary".
Wouldn't you just use oCard:GetCurrentCharacteristics():SuperType_GetWritable():Add(SUPERTYPE_LEGENDARY)?

Splinterverse wrote:Outwit - Is there a way to check if a spell on the stack is targeting a player?
There is, but it's not very friendly. Essentially you have a trigger to catch when an object targets a player, store off the object reference, then allow targeting of that reference while it is on the stack.

Splinterverse wrote:Rings of Brighthearth - not sure if there is a trigger for this or if it can distinguish between mana abilities and non-mana abilities.
I think you have a more fundamental problem. How will you copy the ability and/or change the targets?

Splinterverse wrote:Riptide Replicator and Volrath's Laboratory -- guessing we'd need a generic token that can assume the creature type and PT? Maybe with generic art of some kind?
Either a generic token or a token for each and every type. It's not particularly difficult to specify a type in either an ObjectDC chest or the DuelDataChest() then when the token enters the battlefield gets the type it needs from the chest sets it locally and assigns it to itself. Same can be done with P/T.

Splinterverse wrote:Runic Repetition and Tombfire -- can we detect whether a card has flashback?
If you give cards with Flashback a custom characteristic, then yes.

Splinterverse wrote:Season of the Witch -- is checking for tapped/untapped and Defender sufficient here? I'm thinking that there are spells that prevent creatures from attacking and I'm not sure how to make this card aware of that. Maybe, since this happens at the end step, it could check for the can't attack characteristic?
No, because a creature could attack then become untapped, or it could have Vigilance.

Splinterverse wrote:Siege Behemoth - "as though it weren't blocked" damage assignment. Maybe approximate-able with a "deals no combat damage", but I'm not sure how the assignment of all the damage would happen since the number of creatures could be different every time.
If you approximate this you would need to make sure the damage dealt is considered "Combat" damage for ability interaction, though making it work with approximated Planeswalkers would probably be extremely complex. Assigning damage would be done on a per attacking creature basis so you would either use a repeating RTA or a filtered RTAs (depending on which works better with queries).

Splinterverse wrote:Skullcrack - Preventing damage prevention?
You may not be able to handle that effect right.

Splinterverse wrote:Spiny Starfish - The rulings state that the tokens are based on the times it actually regenerated NOT how many times regeneration was applied. Is there a way to track how many times it regenerated?
I don't think so, I believe that is buried in the engine itself.

Splinterverse wrote:Stabilizer - I don't think there's a way to track cycling. Am I correct?
You may not be able to track cycling, but you could rewrite cycling to first check for a flag to make sure cycling is allowed before cards cycle. Though it requires changing all flags that cycle.

Splinterverse wrote:Street Savvy - Any way to block landwalk creatures as though they didn't have that ability with just this creature?
No.

Splinterverse wrote:Tromokratis - seems like blocking restriction, but I'm not sure.
It is a blocking restriction, but it may not be possible to code that specific restriction. It may need engine support.

Splinterverse wrote:Tsabo's Web - is there a way to detect whether a land has an activated ability that is not mana-producing?
Sure, change all lands with Activated abilities that aren't mana producing to have a custom characteristic and check that.

Splinterverse wrote:Vassal's Duty - can we detect which creatures are legendary?
Yes, use Test() on the Type object which you can get from oCard:GetSuperType().

Splinterverse wrote:Ydwen Efreet - "become unblocked" is that possible?
Not that I am aware of.
RiiakShiNal
Programmer
 
Posts: 2185
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 25 guests


Who is online

In total there are 25 users online :: 0 registered, 0 hidden and 25 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 25 guests

Login Form