thefiremind wrote:- Break Open: it depends on the current morph/manifest approximation functions, I don't know.
- Cairn Wanderer, Cephalid Snitch, Escaped Shapeshifter: the difficult part is handling protection, so it would depend on Xander9009's filter handling functions. He should be the one to answer on these.
- Camouflage: I would have called this card "Wall of Text"... I'm not even sure if I understood correctly what it does, but I'd call it impossible.
- Chancellor of the Tangle, Channel: by using Riiak's mana functions they should be possible.
- Dragon Hunter: I'm not sure. You could give it reach and then make an exception for anything that is not a Dragon, but then what if he somehow gains the "complete" reach? The exception should be shut down.
- Emblazoned Golem: unless someone has a brilliant idea about how to approximate the restriction on the kicker cost, I'd call it impossible.
- False Dawn: I don't know if Riiak's mana functions could handle this.
- Firestorm Phoenix: you can't keep the card revealed. You could approximate the card by omitting that part of the effect, but would you be satisfied by that?
- Forethought Amulet: you could approximate this by preventing the damage that exceeds 2, but it wouldn't work with unpreventable damage.
- Illusionist's Gambit: I saw a remove from combat approximation in the CW, so I'd say it's possible to approximate this card.
- Imperiosaur: I don't know if Riiak's mana functions could handle this.
- Krark's Thumb: it would probably require to change the cards that flip coins so that they are aware of this one.
Break Open is possible, but there's a catch. There are currently two separate ways manifest is handled, and morph is handled in a third. For the newest iteration of Manifest (only currently used on a couple of cards, but will eventually be used on all of them), you'd call CW_Manifest_TurnFaceUp_Manager(oCard). Nothing else would need done.
For the older version of manifest, which was based on Neo's Morph code, you'd call these two.
- Code: Select all
RSN_Characteristics_Set( oCard, CW_CHARACTERISTIC_MANIFEST_TRIGGER, 1 )
RSN_Characteristics_Set( oCard, CW_CHARACTERISTIC_FACEDOWN, 0 )
MTG():ReevaluateContinuousEffects()
And for morph you'd call:
- Code: Select all
RSN_Characteristics_Set( Object(), NEO_CHARACTERISTIC_MORPH_TRIGGER, 1 )
RSN_Characteristics_Set( Object(), CW_CHARACTERISTIC_FACEDOWN, 0 )
MTG():ReevaluateContinuousEffects()
Cairn Wanderer,
Cephalid Snitch,
Escaped Shapeshifter: Yes, these would be possible once the protection functions are distributed. You'd have to check each card in your graveyard with CW_Protection_HasProtection(oCard). If it's true, then get the protection filter with CW_Protection_GetProtectionFilter_F(CardName), and then just call CW_Protection().
Camaflouge: It's really just a very long-winded way of saying creatures block randomly. You choose how many of your opponent's attackers will be blocked (by deciding how many piles to leave empty), and you dice how your blockers will group up, but not which creatures they'll block. It could probably be approximated once protection can be properly checked and Creature A blocks Creature B if able is working. (Which, yes, I'm getting the hint... I'll go distribute the code soon.)
Channel: I coded this. I don't know how I managed it, but I apparently never added it to the CW, and the code has since gone MIA. But it's definitely possible, and I can say that with certainty, because I already did it once lol.
Dragon Hunter: There aren't too many cards (~25) that can possibly grant reach to
Dragon Hunter (about 15 others can grant reach, but only to themselves). So, it would only be a matter of taking those cards that can and adding an extra bit on a lower layer which disables the pseudo-reach exception.
Emblazoned Golem: Perhaps an ability in hand/graveyard/exile (like convoke and delve) which allows you to choose which kicker to grant, and the available options are limited to colored combinations you can actually afford? If you've got
,
, and
mana available, it'll show options for
,
,
,
,
,
,
. The chosen kicker cost is granted to the card, and when cast, you can still choose whether or not to pay it. That all I've got...
False Dawn: The mana functions themselves can't, but we could monitor for the mana tokens being created, and replace each created instance with a white mana token. Spending it as though it's mana of any color... that's another story.
Firestorm Phoenix: I personally would be satisfied with that, but only because I'm confident the
purpose of keeping it revealed is to ensure all players are certain it hasn't been cast. Since the game can handle that, the onus isn't on us to ensure it's not cast, which is enough for me to not care about whether or not it remains revealed.
Forethought Amulet: Because of how it's worded, wouldn't a complete replacement work fine? In a pretrigger replacement, multiply the damage by 0, and then call TriggerObjectLKI():DealDamageTo(2, EffectController()). We'd have to check if it's supposed to be unpreventable, but there are less than 20 cards that deal unpreventable damage.
Illusionist's Gambit: I was warned that function might not be working right. I'll post back about it later.
Imperiosaur: Not without changing how the functions behave, which I think would probably require an additional RTA to process the created tokens.
----
To continue his work, I've got some time.
- Lethargy Trap: Quite possible. Nothing more than an alternate cost with an <AVAILABILITY> tag. See Archive Trap.
- Leyline of Singularity: Should be either possible or able to be approximated. If you can't add the legendary supertype, you should at least be able to implement a manual legendary rule. Note this approximation would require modifying 35 cards to consider everything legendary while this card's out.
- Liar's Pendulum: Possible. There are several methods of naming a card (mostly involving getting a listing of cards in the duel and letting the player choose one). It would probably be ugly, since it'd end up in all caps and in brackets when displayed. It would even be possible to use Neo's string building multiple choice questions to let you name any card, including a card name that doesn't exist.
- Lich: The only part of this that might seem questionable to me is the bit about not losing for having 0 or less life, but we've got a working PLAYER_CHARACTERISTIC_DOESNT_DIE_ON_ZERO_LIFE. This one's possible.
- Lightning Storm: I'm neither sure activated abilities could be made usable on the stack, nor that you could put charge counters on something on the stack, nor that you could put charge counters on a non-permanent. Unless TFM or someone else knows, this might just need tested.
- Lim-Dûl's Paladin: Should be possible. Just check for the step blockers declared, and if it's not blocked, grant it a characteristic to deal no combat damage and make it deal 4 damage.
- Magewright's Stone: Same issue as with Imprison. Only ways to manage this would be to have a master list of all valid targets or to modify every single card with such an ability. Not really feasible. I'd agree with thefiremind that it's impossible.
- Mana Maze: Pretty simple. Whenever a spell is cast, store its colors, and have a filter in a static ability iterate through all colors in the storage chest, adding spells of any of those colors. Grant each filtered card (in any zone) the can't be cast characteristic.
- Marble Priest: This is something which is as yet considered impossible, but eventually with the protection filters should become possible. Those abilities haven't been tested, though, so it's sort of a "wait and see" deal. (Note that while I've mentioned the protection issue, there's also the issue of special blocking restrictions, which will also need dealt with. But I'm planning to deal with those at the same time.)
- Master of Cruelties: Should be possible with a triggered CANT_ATTACK_TEST ability.
- Meddle: Along with Mirrorwing Dragon and similar cards, it'll be possible soon.
- Mindlock Orb: Already discussed this effect. Lots of cards would need modified.
- Mirror Gallery: I don't think this one's possible, per se, but if you can remove the legendary supertype, then you can probably approximate it by modifying cards that reference legends on the battlefield.
- Mizzium Meddler: Mirrorwing Dragon type issues.
- Mizzix's Mastery: Probably possible using Neo's approximation of overload. It's a tricky effect, but he got it working as a very decent approximation.
- Muck Drubb: Mirrorwing Dragon type issues.
- Muraganda Petroglyphs: I can't think of any way to handle this.
- Myr Welder: Impossible.
- Mystic Barrier: Probably possible. You can use GetNextPlayer(), but you can also take advantage of the fact that players should be seated in the same order they appear when calling MTG():GetNthPlayer(i). Each player would have their creatures prevented from attacking anyone other than the next person found using that function. Should definitely be tested to make sure, but should work fine.
- Nacatl War-Pride: Probably not entirely possible, but you can likely approximate it. I imagine it'll always have issues with cards that can't block alone, or if it's somehow given menace or something like that. Outside of those situations, just giving it "must be blocked" and "can't be blocked by more than one creature" would probably work correctly in most situations.
- Nix: Likely only able to be approximated. Keep track of what's untapped/in mana pools. When a spell is cast, if something became tapped/mana was removed from the mana pool, it had mana spent on it. This might have major issues I'm not noticing now.
- North Star: Basically a toned down version of Mycosynth Lattice. fallenangle recently worked on an approximation for this type of ability, and if it works, then this can be approximated.
- Obscuring Æther: Neo's morph code includes a check for cards that alter costs of face down permanents. So, this should be possible, but I'm not familiar enough with the code to really help much with it.
- Ogre Enforcer: Maybe able to be approximated. Give it indestructible, and make a triggered ability for taking damage, and increment a variable in a LinkedDC whose register is on the source of that damage, as well as whether or not it has deathtouch. In a state-based trigger, check each stored variable for either being >= to its toughness or for being >= 1 if it had deathtouch. If any return true, remove indestructible (not directly, though; since if it's granted indestructible another way, it shouldn't lose it this way; just set some variable to 1, and in the CA that grants indestructible, only do so if that variable is 0).