Page 444 of 505

[fixed by Gargaroz]Dryad's Caress-Global-Ravnica cards

PostPosted: 08 Jun 2013, 10:09
by Aswan jaguar
Describe the Bug:
1- Dryad's Caress if you don't have available it's mana cost x2 times it will make you pay 2 times it's cost.If you have available it's mana cost x2 times it will cost normally.
2- In the menu that appears you are asked to pay 4GG or 3GG the W is missing it works fine though.(as 3GGW)
Which card did behave improperly ?
Dryad's Caress

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)
ML3-MAY/2013

What exactly should be the correct behavior/interaction ?
1- The card is available to be played with only 4GG or 3GGW available mana.

Are any other cards possibly affected by this bug ?

SAVEGAME CORRUPTED

Re: Mindleech Mass

PostPosted: 08 Jun 2013, 12:26
by Gargaroz
Fixed the first bug.

Re: Drift of Phantasms transmute doesn't work

PostPosted: 08 Jun 2013, 12:27
by Gargaroz
Fixed.

Re: Dryad's Caress

PostPosted: 08 Jun 2013, 12:49
by Gargaroz
It's a global issue of all similar card from Ravnica. It's fixed now.

Re: [confirmed]Izzet Staticaster and damage effects

PostPosted: 08 Jun 2013, 12:52
by Gargaroz
It's a tricky issue as there's hardcoded stuff running underneath. I'll see if I could fix it but it will take time.

Re: [confirmed]Izzet Staticaster and damage effects

PostPosted: 08 Jun 2013, 14:13
by Aswan jaguar
Fire Ants work fine.

Re: [confirmed]Izzet Staticaster and damage effects

PostPosted: 08 Jun 2013, 22:51
by Korath
Based on Fire Ants,
Code: Select all
diff --git a/src/cards/return_to_ravnica.c b/src/cards/return_to_ravnica.c
index e2026a9..38930b0 100644
--- a/src/cards/return_to_ravnica.c
+++ b/src/cards/return_to_ravnica.c
@@ -3609,7 +3609,7 @@ int card_izzet_staticaster(int player, int card, event_t event){
                        test_definition_t this_test;
                        default_test_definition(&this_test, TYPE_CREATURE);
                        this_test.id = get_id(instance->targets[0].player, instance->targets[0].card);
-                       new_damage_all(player, card, 2, 1, 0, &this_test);
+                       new_damage_all(player, instance->parent_card, 2, 1, 0, &this_test);
                }
        }

fixes it. I must admit I don't fully understand why. In particular, Tibor and Lumia (enchanted by Phyresis) looks like it shouldn't work for the same reason, but does.

[fixed by Gargaroz]Adjacent Punishing Fire

PostPosted: 08 Jun 2013, 23:37
by Korath
Describe the Bug:
When two adjacent copies of Punishing Fire are in your graveyard and the first is returned to your hand, the second isn't prompted for.

Which card did behave improperly ?
Punishing Fire.

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)
Planeswalking to Modern 05182013.rar on top of CirothUngol. Solo duel/none for this savegame (first observed in challenge gauntlet).

What exactly should be the correct behavior/interaction ?
Whenever an opponent gains life, each copy of Punishing Fire in your graveyard can be returned to your hand for {R}.

Are any other cards possibly affected by this bug ?
Nope.

The problem here's that cards are being removed from the graveyard in the middle of a loop over all cards in the graveyard array. A fix:
Code: Select all
diff --git a/src/functions/functions.c b/src/functions/functions.c
index cf48d33..7005905 100644
--- a/src/functions/functions.c
+++ b/src/functions/functions.c
@@ -8872,10 +8872,11 @@ void gain_life(int player, int amount){
                     if( choice == 0 ){
                         charge_mana(1-p, COLOR_RED, 1);
                         if( spell_fizzled != 1 ){
                                                        hand_count[1-p]++;
                             rfg_card_from_grave(1-p, i, -1);
+                            --i;
                         }
                                                else{
                                                        obliterate_card(1-p, card_added);
                                                }
                     }

Re: [confirmed]Izzet Staticaster and damage effects

PostPosted: 09 Jun 2013, 00:02
by Gargaroz
Oh, I see, you're right. Fixed.
On a coding perspect, when a card is in EVENT_RESOLVE_ACTIVATION, the paramter "card" refers to its invisible legacy, the real card is in "instance->parent_card". So if you call something using "card", probably something strange is going to happen.

[fixed by Korath]Noetic Scales

PostPosted: 09 Jun 2013, 00:07
by Korath
Describe the Bug:
Noetic Scales only triggers for a player if he controls an enchantment (in addition to its normal condition). The card doesn't mention enchantments at all.

Which card did behave improperly ?
Noetic Scales.

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)
Planeswalking to Modern 05182013.rar on top of CirothUngol. Solo duel/none for this savegame (first observed in challenge gauntlet).

What exactly should be the correct behavior/interaction ?
At start of each player's upkeep, bounce his creatures that have more power than he has cards in hand.

Are any other cards possibly affected by this bug ?
Nope.

Code: Select all
diff --git a/src/cards/urza_saga.c b/src/cards/urza_saga.c
index cd9e689..bde207a 100644
--- a/src/cards/urza_saga.c
+++ b/src/cards/urza_saga.c
@@ -2725,13 +2725,7 @@ int card_no_rest_for_the_wicked(int player, int card, event_t event){

 int card_noetic_scales(int player, int card, event_t event){

-    target_definition_t td;
-    default_target_definition(player, card, &td, TYPE_ENCHANTMENT);
-    td.allowed_controller = current_turn;
-    td.preferred_controller = current_turn;
-    td.illegal_abilities = 0;
-
-    if( can_target(&td) && upkeep_trigger(player, card, event) ){
+    if( upkeep_trigger(player, card, event) ){
         int count = active_cards_count[current_turn]-1;
                int amount = hand_count[current_turn];
         while( count > -1 ){

Re: Adjacent Punishing Fire in graveyard

PostPosted: 09 Jun 2013, 00:08
by Gargaroz
Fixed. In this case, you should set a cycle that counts backward, or something will go wrong ;

Re: [confirmed]Izzet Staticaster not hasted

PostPosted: 09 Jun 2013, 00:09
by Gargaroz
Fixed.

fixed by Gargaroz]Root Maze,others- becomes-tapped triggers

PostPosted: 09 Jun 2013, 03:08
by Korath
Describe the Bug:
With Root Maze in play, I play a City of Brass. It taps after coming into play and deals 1 damage to me, instead of coming into play tapped.

Which card did behave improperly ?
Root Maze.

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)
Planeswalking to Modern 05182013.rar on top of CirothUngol. Solo duel/none.

What exactly should be the correct behavior/interaction ?
Ruling for Kismet: Cards enter the battlefield tapped. They do not enter the battlefield untapped and then immediately tap, therefore they do not trigger any effects due to tapping.

Are any other cards possibly affected by this bug ?
Most likely all the "[card type]s come into play tapped" cards implemented in C, which is at least Uphill Battle, Urabrask the Hidden, Orb of Dreams, Due Respect, and Blind Obedience. The only one of these that I've tested is Uphill Battle (using Fallowsage instead of City of Brass). Kismet works properly.

[fixed by Gargaroz]Kismet - AI and Ravnica Shocklands

PostPosted: 09 Jun 2013, 03:26
by Korath
Describe the Bug:
With Kismet in play under my control, the AI plays Temple Garden and chooses to pay 2 life. It comes into play untapped (and then the AI taps it to cast Wild Growth while I'm still fighting with the screen captures).

Which card did behave improperly ?
Temple Garden.

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)
Planeswalking to Modern 05182013.rar on top of CirothUngol. Solo duel/none for this savegame (first observed in challenge gauntlet).

What exactly should be the correct behavior/interaction ?
Ruling for Temple Garden: If another effect (such as Loxodon Gatekeeper's ability) tells you to put lands onto the battlefield tapped, it enters the battlefield tapped whether you pay 2 life or not.

Are any other cards possibly affected by this bug ?
All the shocklands. Probably all the "Lands (and maybe other stuff) come into play tapped" cards not implemented in C, which is at least Kismet, Frozen AEther, and Loxodon Gatekeeper. Root Maze and the other cards of this sort implemented in C work properly. So does Kismet controlled by the AI vs. a shockland played by the human.

[fixed by Korath]Wall of Shards

PostPosted: 09 Jun 2013, 05:53
by Korath
Describe the Bug:
Wall of Shards continuously prompts me to pay the cumulative upkeep (with an extra counter each time) until I refuse; it's only sacced if I don't pay it at least once.

Which card did behave improperly ?
Wall of Shards.

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)
Planeswalking to Modern 05182013.rar on top of CirothUngol. Solo duel/none.

What exactly should be the correct behavior/interaction ?
The cumulative upkeep should be payable exactly once per upkeep. (Give or take Paradox Haze and Eon Hub and Gibbering Descent, since upkeep can't really be doubled or skipped in Manalink.)

Are any other cards possibly affected by this bug ?
Nope.
Edit: At least Etherwrought Page gets infinite upkeeps, too, and for the same reason (it never decrements count). I'll look for others.
Edit again: Glacial Plating, Vexing Sphinx, AEther Rift, and Dimensional Breach (via its legacy card) all look to do the same. I've only tested Wall of Shards and Etherwrought Page.

Fix for Wall of Shards:
Code: Select all
diff --git a/src/cards/coldsnap.c b/src/cards/coldsnap.c
index 422643f..8d76a4c 100644
--- a/src/cards/coldsnap.c
+++ b/src/cards/coldsnap.c
@@ -3102,22 +3102,19 @@ int card_wall_of_shards(int player, int card, event_t event){

        if( current_turn == player && upkeep_trigger(player, card, event) ){
                int count = count_upkeeps(player);
-               int kill = count;
                while( count > 0 ){
                                add_ccounter(player, card);
                                int result = count_ccounters(player, card);
                                int choice = do_dialog(player, player, card, -1, -1, " Pay Cumulative Upkeep\n Don't pay", 0);
                                if( choice == 0){
                                        gain_life(1-player, result);
-                                       kill--;
+                                       count--;
                                }
                                else{
+                                       kill_card(player, card, KILL_SACRIFICE);
                                        break;
                                }
                }
-               if( kill > 0 ){
-                       kill_card(player, card, KILL_SACRIFICE);
-               }
        }
        return 0;
 }