Page 455 of 505

Re: Special abilities in targets[16] aren't properly cleared

PostPosted: 17 Jun 2013, 01:32
by Gargaroz
Added your fix, thanx Korath.

[fixed by Gargaroz]Kazandu tuskcaller can't level up

PostPosted: 17 Jun 2013, 05:01
by Aquillion
Describe the Bug:

Kazandu Tuskcaller, a level-up creature, seems to be unable to level up.

Additionally, when I tried adding counters to it with debug mode, its ability cost one green mana to activate -- it should be free -- and produced two elephants rather than one even at level two. I'm not sure if this is related or if it's just a side-effect of using debug mode to add counters, but I thought I'd mention it here just in case.

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)

Manalink June 2013 : the Prophecy of Dragon's Maze Nemesis, from here.

Solo duel (in the attached save.) Also seen in sealed deck.

What exactly should be the correct behavior/interaction ?

Kazandu Tuskcaller should be able to level up. It should produce one elephant at levels 2-5, and two at level 6+, and shouldn't cost any mana to produce elephants.

Are any other cards possibly affected by this bug ?

Other level up creatures, I suppose?

[fixed by Gargaroz]Phyrexian Revoker

PostPosted: 17 Jun 2013, 05:11
by Aquillion
Describe the Bug:

Phyrexian Revoker is supposed to have you name any nonland card when it comes into play; it then suppresses the activated abilities of that card.

However, its current implementation allows you to name a land; it just fails to suppress mana abilities of that land.

In one of the attached saves, the AI is about to cast one; at least in my game, it named plains. This did not actually prevent me from tapping the plains for mana, but it's still a bug.

In the other attached save, you can cast one and name plains yourself.

I suspect this is because it uses a copy-paste of the Pithing Needle code (Pithing Needle allows you to name lands, but doesn't block mana abilities.) If this is true, that implies two other bugs:

First, it will probably fail to suppress the mana abilities of other nonland cards; this is a bug, since it's supposed to be able to do so.

Second, it means there's probably a secondary AI bug where the AI will name a basic land for Pithing Needle -- it is technically allowed to do that, but it's usually useless to do so (outside of extremely rare situations like a Koth of the Hammer ultimate emblem. And I suspect that that wouldn't even work in Manalink, since his ultimate would be an approximation.)

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)

Manalink June 2013 : the Prophecy of Dragon's Maze Nemesis, from here.

Sealed deck.

What exactly should be the correct behavior/interaction ?

It shouldn't be possible to name plains (or any other land) for Phyrexian Revoker.

Are any other cards possibly affected by this bug ?

Possibly what I saw implies an AI bug with Pithing Needle, though it'd be a slightly different bug.

Re: [fixed by Gargaroz-check next patch]Mirrorworks

PostPosted: 17 Jun 2013, 09:15
by stassy
As of PDMN, the bug with Mirrorworks entering the bf is fixed, however the double trigger is still here :
- After player target artifact to be copied, in my example it's a Black Lotus, a copy of Black Lotus with a colorless mana source appear in the bf which cause the trigger.
- After that trigger, the Black Lotus with colorless mana morph into a proper Black Lotus with all mana and the trigger happen again

Image

Image

Re: Hearthfire Hobgoblin doesn't have double strike

PostPosted: 17 Jun 2013, 09:51
by stassy
confirmed as of PDMN

Image

[fixed by Gargaroz]Leyline of Singularity

PostPosted: 17 Jun 2013, 12:18
by Korath
Describe the Bug:
Leyline of Singularity makes all permanents except basic lands legendary. In the savegame and screenshot attached, the AI is forced to sacrifice all but one each of Wayfaring Temple, Temple Garden, and Savannah, and I am forced to sacrifice all but one each of Watery Grave and Drowned Catacomb. The only card that should be affected is one Wayfaring Temple.

(Oh, and there's a typo in the legend rule prompt: "permanet"->"permanent".)

Which card did behave improperly ?
Leyline of Singularity.

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

What exactly should be the correct behavior/interaction ?
All non-land permanents should be legendary, so non-basic lands shouldn't be affected.

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

Code: Select all
diff --git a/src/cards/guildpact.c b/src/cards/guildpact.c
index a0eee61..86fc398 100644
--- a/src/cards/guildpact.c
+++ b/src/cards/guildpact.c
@@ -1277,7 +1277,7 @@ int card_leyline_of_singularity(int player, int card, event_t event){
                for(i=0; i<2; i++){
                        int count = active_cards_count[i]-1;
                        while( count > -1 ){
-                                       if( in_play(i, count) && is_what(i, count, TYPE_PERMANENT) && ! is_basic_land(i, count) && ! is_legendary(i, count) ){
+                                       if( in_play(i, count) && is_what(i, count, TYPE_PERMANENT) && ! is_what(i, count, TYPE_LAND) && ! is_legendary(i, count) ){
                                                verify_legend_rule(i, count, get_id(i, count));
                                        }
                                        count--;
@@ -1286,7 +1286,7 @@ int card_leyline_of_singularity(int player, int card, event_t event){
     }

     if( trigger_condition == TRIGGER_COMES_INTO_PLAY && affect_me(player, card) && player == reason_for_trigger_controller){
-               if( ! is_basic_land(trigger_cause_controller,trigger_cause) && ! is_legendary(trigger_cause_controller,trigger_cause) ){
+               if( ! is_what(trigger_cause_controller, trigger_cause, TYPE_LAND) && ! is_legendary(trigger_cause_controller,trigger_cause) ){
                        if( ! check_battlefield_for_id(2, CARD_ID_MIRROR_GALLERY) ){
                                if(event == EVENT_TRIGGER){
                                        event_result |= 2;
Both is_what() calls are needed in the first change, instead of just changing the first to is_what(i, count, TYPE_CREATURE | TYPE_ENCHANTMENT | TYPE_ARTIFACT), or else it'll hit cards like Dryad Arbor and Tree of Tales.

Re: [confirmed]Vorel of the Hull Clade

PostPosted: 17 Jun 2013, 12:36
by Gargaroz
Fixed.

Re: Kazandu tuskcaller can't level up

PostPosted: 17 Jun 2013, 12:39
by Gargaroz
Fixed.

Re: Phyrexian Revoker allows you to name lands.

PostPosted: 17 Jun 2013, 12:47
by Gargaroz
Fixed.

Re: [fixed-still one bug left]Mirrorworks

PostPosted: 17 Jun 2013, 12:52
by Gargaroz
I see, added another safeguard, this should be fixed now.

Re: [confirmed]Hearthfire Hobgoblin

PostPosted: 17 Jun 2013, 12:55
by Gargaroz
Fixed.

Re: Leyline of Singularity

PostPosted: 17 Jun 2013, 12:56
by Gargaroz
I see, plus this should be re-wrote to reflect the actual legend rule. I'll do it, consider it fixed.

Re: [fixed by Gargaroz]Leyline of Singularity

PostPosted: 17 Jun 2013, 15:49
by Aswan jaguar
Don't forget the other bugs that affect all Leylines that I reported,please.

Re: [check if fixed in v2]Lich[fixed by Gargaroz]Mirror Univ

PostPosted: 17 Jun 2013, 17:46
by stassy
As of PDMN, the combo correctly work (AI life set to 0), the minor notice is when Mirror Universe effect revolve, player automatically draws X cards with X = 20 - Y with Y the number of permanents player own at resolution.

[fixed by Korath]Fencepost error in new_select_a_card()

PostPosted: 17 Jun 2013, 20:33
by Korath
In new_select_a_card() with search_location set to TUTOR_FROM_HAND (4), 100 elements of the of 99-element array hand_index[] are set to -1. The final write to hand_index[99] sets a random address on the stack to -1.

In my builds, this manifests during activation of the Archenemy scheme My Wish Is Your Command: the overwritten address happens to be set_scheme_in_motion()'s player parameter, so manalink ends up crashing during the following copy_spell(-1, id) call.

It'll also die horribly if the target player happens to have more than 98 cards in his hand, though that's admittedly unlikely in practice.
Code: Select all
diff --git a/src/functions/tutors.c b/src/functions/tutors.c
index 56b4b52..f2b6f8c 100644
--- a/src/functions/tutors.c
+++ b/src/functions/tutors.c
@@ -125,7 +125,7 @@ int new_select_a_card(int player, int targ_player, int search_location, int must
        if( search_location == 4 ){
                int hand_index[99];
                int i;
-               for(i=0; i<100; i++){
+               for(i=0; i<99; i++){
                        hand_index[i] = -1;
                }
                int hand_c = 0;