Page 1 of 1

[confirmed]Soul of Shandalar exile-force discard 7 hand to 6

PostPosted: 10 Sep 2014, 16:22
by Nexhro
Describe the Bug:
1) Soul of Shandalar's first activated ability correctly prompts the player to target a player and one of their creatures, but then deals 6 damage to teh targetted player.

2) Soul of Shandalar's second activated ability (exile from gy) correctly asks for targets, but then deals no damage at all.

Which card did behave improperly ?
Soul of Shandalar

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

What exactly should be the correct behavior/interaction ?
In either case, Soul of Shandalar deals 3 damage to the targetted player and 3 damage to the targetted creature.

Are any other cards possibly affected by this bug ?
Bug 2 might be a general issue with the M15 Souls cycle.

Re: [confirmed]Soul of Shandalar bad damage

PostPosted: 11 Sep 2014, 10:50
by BAgate
For #1, note that it does 6 damage to targeted player and 0 to targeted creature.

Re: [confirmed]Soul of Shandalar bad damage

PostPosted: 14 Sep 2014, 14:08
by Gargaroz
Fixed in 4e2d041

Re: [fixed]Soul of Shandalar bad damage

PostPosted: 23 Sep 2014, 01:05
by Nexhro
Bug 1 is solved as of CoRM15 mini2.

Bug 2 still occurs - no damage at all when Soul's exile ability resolves.

Also, if its exile ability is activated during its owner's turn, that player's maximum hand size is reduced to 6 until the beginning of his/her next turn.

Re: [still bugged]Soul of Shandalar bad damage

PostPosted: 03 Oct 2014, 14:02
by Gargaroz
Fixed bug 2 in b3d1dab

Re: [still bugged]Soul of Shandalar bad damage

PostPosted: 19 Oct 2014, 11:43
by BAgate
If exile ability is used during owner's turn then max hand size is still reduced to 6 for that turn only.

Re: [still bug]Soul of Shandalar exile-force discard 7 hand

PostPosted: 03 Sep 2019, 10:51
by Aswan jaguar
The decrease hand issue has already been fixed in dev.
Now it doesn't deal damage if activated from grave.
I tried a lot :evil: to no avail. Unaltered by me code:
Code: Select all
int card_soul_of_shandalar(int player, int card, event_t event){
   /* Soul of Shandalar   |4|R|R   0x200c98d
    * Creature - Avatar 6/6
    * First strike
    * |3|R|R: ~ deals 3 damage to target player or planeswalker and 3 damage to up to one target creature that player or that planeswalker's controller controls.
    * |3|R|R, Exile ~ from your graveyard: ~ deals 3 damage to target player or planeswalker and 3 damage to up to one target creature that player or that planeswalker's controller controls. */
   if( IS_GAB_EVENT(event) ){
      target_definition_t td;
      default_target_definition(player, card, &td, TARGET_TYPE_PLANESWALKER);
      td.zone = TARGET_ZONE_CREATURE_OR_PLAYER;

      target_definition_t td1;
      default_target_definition(player, card, &td1, TYPE_CREATURE);

      card_instance_t* instance = get_card_instance(player, card);
      if( event == EVENT_GRAVEYARD_ABILITY ){
         if( has_mana_multi(player, MANACOST_XR(3, 2)) ){
            if( can_target(&td) ){
               return GA_BASIC;
            }
         }
      }

      if( event == EVENT_PAY_FLASHBACK_COSTS ){
         instance->number_of_targets = 0;
         if( charge_mana_multi(player, MANACOST_XR(3, 2)) ){
            if( pick_target(&td, "TARGET_PLAYER_OR_PLANESWALKER") ){
               instance->number_of_targets = 1;
               td1.allowed_controller = instance->targets[0].player;
               td1.preferred_controller = instance->targets[0].player;
               if( can_target(&td1) ){
                  new_pick_target(&td1, "TARGET_CREATURE", 1, 0);
               }
            }
         }
         if( spell_fizzled != 1 ){
            return GAPAID_EXILE;
         }
      }

      if( event == EVENT_RESOLVE_ACTIVATED_GRAVEYARD_ABILITY ){
         if( validate_target(player, card, &td, 0) ){
            damage_target0(player, card, 3);
         }
         if( instance->number_of_targets == 2 && validate_target(player, card, &td1, 1) ){
            damage_creature(instance->targets[1].player, instance->targets[1].card, 3, player, card);
         }
      }
   }

   if( ! IS_GAA_EVENT(event) ){
      return 0;
   }

   target_definition_t td;
   default_target_definition(player, card, &td, TARGET_TYPE_PLANESWALKER);
   td.zone = TARGET_ZONE_CREATURE_OR_PLAYER;

   target_definition_t td1;
   default_target_definition(player, card, &td1, TYPE_CREATURE);

   card_instance_t* instance = get_card_instance(player, card);

   if( event == EVENT_CAN_ACTIVATE ){
      return generic_activated_ability(player, card, event, GAA_CAN_TARGET, MANACOST_XR(3, 2), 0, &td, "TARGET_PLAYER_OR_PLANESWALKER");
   }

   if( event == EVENT_ACTIVATE ){
      instance->number_of_targets = 0;
      if( charge_mana_for_activated_ability(player, card, MANACOST_XR(3, 2)) ){
         if( pick_target(&td, "TARGET_PLAYER_OR_PLANESWALKER") ){
            instance->number_of_targets = 1;
            td1.allowed_controller = instance->targets[0].player;
            td1.preferred_controller = instance->targets[0].player;
            if( can_target(&td1) && new_pick_target(&td1, "TARGET_CREATURE", 1, 0) ){
               instance->number_of_targets = 2;
            }
         }
      }
   }

   if( event == EVENT_RESOLVE_ACTIVATION ){
      if( validate_target(player, card, &td, 0) ){
         damage_target0(player, card, 3);
      }
      if( instance->number_of_targets == 2 && validate_target(player, card, &td1, 1) ){
         damage_creature(instance->targets[1].player, instance->targets[1].card, 3, instance->parent_controller, instance->parent_card);
      }
   }

   return 0;
}