It is currently 16 Apr 2024, 18:59
   
Text Size

[fixed]Iridescent Drake stolen aura no return to owner gy

Moderators: BAgate, drool66, Aswan jaguar, gmzombie, stassy, CCGHQ Admins

[fixed]Iridescent Drake stolen aura no return to owner gy

Postby Aswan jaguar » 06 Aug 2016, 13:45

Describe the Bug:
I cast Iridescent Drake only AI had an aura in graveyard- Armadillo Cloak and chose that of course.On AI's turn AI cast Tragic Arrogance.For creature selected my Iridescent Drake,it went to my graveyard together with Armadillo Cloak which is owned by AI however.

Which card did behave improperly ?
Iridescent Drake probably

Which update are you using?(date,name)Which type(Duel,Gauntlet,Sealed Deck)
Manalink 2016/01/15: Battle For Zendikar v2,duel

What exactly should be the correct behavior/interaction ?
If you steal from opponent's graveyard an aura with Iridescent Drake if Iridescent Drake dies the stolen aura has to return to it's owner's graveyard.

Are any other cards possibly affected by this bug ?
-
*Savegame is one turn late as I saw Armadillo Cloak being on my grave on my turn.if you still want it let me know.
Last edited by Aswan jaguar on 12 Jan 2021, 14:13, edited 6 times in total.
Reason: fixed
---
Trying to squash some bugs and playtesting.
User avatar
Aswan jaguar
Super Tester Elite
 
Posts: 8078
Joined: 13 May 2010, 12:17
Has thanked: 730 times
Been thanked: 458 times

Re: Iridescent Drake stolen aura doesn't return to owner gy

Postby Korath » 06 Aug 2016, 18:30

Fixed in ee9905e, though what business Iridescent Drake has moving the aura to the battlefield itself instead of going through reanimate_permanent() like it should, I can't begin to guess. That's going to cause plenty more problems in the future.
User avatar
Korath
DEVELOPER
 
Posts: 3707
Joined: 02 Jun 2013, 05:57
Has thanked: 496 times
Been thanked: 1106 times

Re: [???]Iridescent Drake stolen aura doesn't return to owne

Postby BAgate » 08 Aug 2016, 20:38

Works, but an interface request: could there be a cancel button when selecting an aura, or at least a back. If you select one player you should be able to back out and look at the other gy.
Working on: housekeeping and archived reports
User avatar
BAgate
Tester
 
Posts: 2444
Joined: 06 Mar 2012, 11:09
Has thanked: 117 times
Been thanked: 158 times

Re: [???]Iridescent Drake stolen aura doesn't return to owne

Postby Gargaroz » 14 Sep 2016, 16:07

Modified with the suggestion of both Korath and BAgate in 75d6fe2
----
- Current / medium term task: adjusting the code for making Misdirection and such usable
- Long term task: inserting all the good stuff I left out from the "Golden Years" mod
Gargaroz
Programmer
 
Posts: 7097
Joined: 06 Nov 2009, 11:11
Has thanked: 82 times
Been thanked: 595 times

Re: still bug]Iridescent Drake stolen aura no return to owne

Postby Aswan jaguar » 16 Apr 2018, 12:39

1- You still can't change graveyard if you have picked one.
2- Also you are not obliged as you should to get an aura. If you hit done in menu it enters without targeting an aura.
Ruling: 4/10/2004 You must pick an Aura even if there are only undesirable ones in the graveyard.
---
Trying to squash some bugs and playtesting.
User avatar
Aswan jaguar
Super Tester Elite
 
Posts: 8078
Joined: 13 May 2010, 12:17
Has thanked: 730 times
Been thanked: 458 times

Re: still bug]Iridescent Drake stolen aura no return to owne

Postby Aswan jaguar » 12 Jan 2021, 14:12

Fixed in commit 7c4eb4a. Now if you don't choose an aura from the graveyard you chose first (and both have auras of the wanted subtype)you can re-choose graveyard once. Be careful not to choose the one you picked the first time as it will prompt for any graveyard and not the one you didn't choose the first time.
---
Trying to squash some bugs and playtesting.
User avatar
Aswan jaguar
Super Tester Elite
 
Posts: 8078
Joined: 13 May 2010, 12:17
Has thanked: 730 times
Been thanked: 458 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby drool66 » 26 Jan 2021, 07:44

Aswan jaguar, care to try this out? I think it addresses all the issues above, selection is compulsory, and you can switch graveyards as many times as you want:
Code: Select all
int card_iridescent_drake(int player, int card, event_t event){

   /* Iridescent Drake   |3|U
    * Creature - Drake 2/2
    * Flying
    * When ~ enters the battlefield, put target Aura card from a graveyard onto the battlefield under your control attached to ~. */

   etb_ability(player, card, event, RESOLVE_TRIGGER_MANDATORY);

   if( event == EVENT_ETB_ABILITY ){
      test_definition_t this_test;
      default_test_definition(&this_test, TYPE_ENCHANTMENT);
      this_test.subtype = SUBTYPE_AURA_CREATURE;
      this_test.sub2 = SUBTYPE_AURA_PERMANENT;
      this_test.subtype_flag = F2_MULTISUBTYPE;

      if( select_target_from_either_grave(player, card, SFG_CANNOT_CANCEL, AI_MAX_CMC, AI_MAX_CMC, &this_test, 0, 1) != -1){
         card_instance_t* instance = get_card_instance(player, card);
         int selected = validate_target_from_grave_source(player, card, instance->targets[0].player, 1);
         if( selected != -1 ){
            reanimate_permanent(player, card, instance->targets[0].player, selected, REANIMATE_ATTACH_AS_AURA);
         }
      }
   }

   return 0;
}
User avatar
drool66
Programmer
 
Posts: 1163
Joined: 25 Nov 2010, 22:38
Has thanked: 186 times
Been thanked: 267 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby Aswan jaguar » 26 Jan 2021, 15:26

drool66 wrote:selection is compulsory, and you can switch graveyards as many times as you want
Selection is compulsory but you can't switch even once as SFG_CANNOT_CANCEL doesn't let you rechoose grave. If that gets fixed it will just need the proper prompts the other code uses.
---
Trying to squash some bugs and playtesting.
User avatar
Aswan jaguar
Super Tester Elite
 
Posts: 8078
Joined: 13 May 2010, 12:17
Has thanked: 730 times
Been thanked: 458 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby drool66 » 26 Jan 2021, 16:04

The user can change graveyards here :D :
Screenshot (61).png


The prompt can be done by using:
Code: Select all
new_default_test_definition(&this_test, TYPE_ENCHANTMENT, "Select target aura card with enchant creature or permanent");
Last edited by drool66 on 26 Jan 2021, 16:16, edited 1 time in total.
Reason: Add info on prompts
User avatar
drool66
Programmer
 
Posts: 1163
Joined: 25 Nov 2010, 22:38
Has thanked: 186 times
Been thanked: 267 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby Aswan jaguar » 26 Jan 2021, 16:19

In your photo I can see the rechoose button like I can see in mine but if I click on it and I think you, too it doesn't go to the other grave.
---
Trying to squash some bugs and playtesting.
User avatar
Aswan jaguar
Super Tester Elite
 
Posts: 8078
Joined: 13 May 2010, 12:17
Has thanked: 730 times
Been thanked: 458 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby drool66 » 26 Jan 2021, 16:45

Huh, that's an oversight in select_target_from_either_grave(). Can be fixed like this ( deck.c -> select_target_from_either_grave() ):
Code: Select all
  int temp_mode = mode;
  if (p0 && p1){
     hack_override_show_deck_done_button_label = "Rechoose graveyard";
     temp_mode &= ~SFG_CANNOT_CANCEL;
   }
  int rval = select_target_from_grave_source(player, card, tgt_gy.player, temp_mode,
                                  tgt_gy.player == player ? ai_mode_own_graveyard : ai_mode_opponent_graveyard,
                                  test, ret_location_card);
  hack_override_show_deck_done_button_label = NULL;
Retested working ok.
User avatar
drool66
Programmer
 
Posts: 1163
Joined: 25 Nov 2010, 22:38
Has thanked: 186 times
Been thanked: 267 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby Korath » 28 Jan 2021, 23:38

drool66 wrote:The user can change graveyards here :D :
Probably my fault, but that "rechoose graveyard" text is being stored in a 12-character-long buffer in the midend. It's overwriting the stack and corrupting memory; that it seems to work in the short term instead of crashing immediately is entirely accidental.
User avatar
Korath
DEVELOPER
 
Posts: 3707
Joined: 02 Jun 2013, 05:57
Has thanked: 496 times
Been thanked: 1106 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby drool66 » 29 Jan 2021, 04:21

Oh interesting. So would it be best to increase the buffer size, change the prompt, or something else? "Rechoose GY" is 11 chars.
User avatar
drool66
Programmer
 
Posts: 1163
Joined: 25 Nov 2010, 22:38
Has thanked: 186 times
Been thanked: 267 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby Korath » 06 Feb 2021, 14:38

While changing the buffer is feasible, it's more effort than it's worth. It's part of a local struct in show_deck_back_end() at 0x46c4a0 (a short, seemingly easily-rewriteable function) which is passed by address to dlgproc_show_deck() at 0x46c8f0 (a much more complex one). Changing the layout of that struct in any nontrivial way means you have to rewrite dlgproc_show_deck to match it. I eventually had to do that in Shandalar - see the show_deck section in shandalar/ui.cpp - but what made it worthwhile wasn't increasing that string's max size, it was increasing the 500-card limit in the same struct. On the other hand, the buffer looks like it's at the end of the struct, so you might be able to get away with just lengthening it; there's no way I'd trust that without analyzing the assembly manually, though.

TLDR: Go with "Rechoose GY" or "Other GY" or similar.
User avatar
Korath
DEVELOPER
 
Posts: 3707
Joined: 02 Jun 2013, 05:57
Has thanked: 496 times
Been thanked: 1106 times

Re: [fixed]Iridescent Drake stolen aura no return to owner g

Postby drool66 » 07 Feb 2021, 18:44

Thank you, Korath!
Committed changes to select_target_from_either_grave() in 3323517

Updated code for Iridescent Drake as above in f151cb8
Aswan jaguar, I know you put a lot of work into your code and this is "your" bugfix, so feel free to edit or revert if you see reason to.
User avatar
drool66
Programmer
 
Posts: 1163
Joined: 25 Nov 2010, 22:38
Has thanked: 186 times
Been thanked: 267 times


Return to Archived Reports

Who is online

Users browsing this forum: No registered users and 71 guests


Who is online

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

Login Form