It is currently 18 Apr 2024, 17:17
   
Text Size

[confirm]Blinkmoth Nexus AI vs propaganda effects

Report wrong Card behavior to get it fixed.
PLEASE ADD SAVEGAMES TO YOUR TOPIC !

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

[confirm]Blinkmoth Nexus AI vs propaganda effects

Postby gnomefry » 02 Jun 2020, 15:30

Describe the Bug:

This will be an odd one.

In most game situations Windborn Muse's propaganda ability is working as intended. I'm seeing a repeat-able scenario where one creature seems to be able to ignore the propaganda effect and attack without paying (2) mana.

There are three elements which I'll list below. I'm unsure if the cause is the particular creature (Arcbound Ravager), the sequence of precombat events taken by the AI, or a combination of these things.

1) AI taps an artifact land to activate Blinkmoth Nexus.
2) AI sacrifices that tapped artifact land to Arcbound Ravager
3) AI attacks with Arcbound Ravager without paying (2) required by defender's Windborn Muse.

Savegame attached.

Which card behaved improperly?

Windborn Muse

Which update are you using? (date, name)Which type? (duel, gauntlet, sealed deck)
Manalink 5-2020 10bda4ca0 - gauntlet

What exactly should be the correct behavior/interaction?

Pay (2) per attacking creature.


Are any other cards possibly affected by this bug?

Possibly involves Arcbound Ravager or Blinkmoth Nexus and their activations
Attachments
windbornmuse.rar
(2.35 KiB) Downloaded 124 times
Last edited by Aswan jaguar on 03 Jun 2020, 11:19, edited 2 times in total.
Reason: confirmed-retitled to correct issue
User avatar
gnomefry
Tester
 
Posts: 288
Joined: 28 Dec 2018, 00:44
Has thanked: 25 times
Been thanked: 24 times

Re: Windborn Muse propaganda effect situational ignore

Postby Aswan jaguar » 03 Jun 2020, 11:18

The issue is in Blinkmoth Nexus. Something is wrong with instance->targets[1].player = 66 and AI. If in choice 2 to animate it we disable below code:
Code: Select all
               if (player == AI){
               instance->targets[1].player = 66;
            }
Then AI will not be able to cheat with propaganda effects but also one side effect I noticed (there could be more) is that AI will be unable to use lands that produce colored mana except of the use of basic ones to animate it.
Code: Select all
int card_blinkmoth_nexus(int player, int card, event_t event){
/* CARD_ID_BLINKMOTH_NEXUS   6860
Blinkmoth Nexus   ""
Land
|T: Add |C to your mana pool.
|1: ~ becomes a 1/1 Blinkmoth artifact creature with flying until end of turn. It's still a land.
|1, |T: Target Blinkmoth creature gets +1/+1 until end of turn. */

   // Used externally
   card_instance_t *instance = get_card_instance(player, card);

   double_faced_card(player, card, event);

   if (event == EVENT_COUNT_MANA && affect_me(player, card)){
      if (!is_tapped(player, card) && !is_animated_and_sick(player, card) && instance->targets[1].player != 66){
         return mana_producer(player, card, event);
      }
   } else if (event == EVENT_CAN_ACTIVATE || event == EVENT_ACTIVATE || event == EVENT_RESOLVE_ACTIVATION){
      if (event == EVENT_CAN_ACTIVATE && instance->targets[1].player == 66){
         return 0;
      }
      if (paying_mana()){
         return mana_producer(player, card, event);
      }

      target_definition_t td;
      default_target_definition(player, card, &td, TYPE_CREATURE);
      td.preferred_controller = player;
      td.required_subtype = SUBTYPE_BLINKMOTH;

      int can_generate_mana = (!is_tapped(player, card) && !is_animated_and_sick(player, card)
                         && instance->targets[1].player != 66 && can_produce_mana(player, card));
      int ai_priority_generate_mana = -1;

      int can_animate = can_use_activated_abilities(player, card) && has_mana_for_activated_ability(player, card, MANACOST_X(1));
      int ai_priority_animate = (is_what(player, card, TYPE_CREATURE)
                           || (current_turn == player && current_phase > PHASE_MAIN1)
                           || (current_turn != player && current_phase != PHASE_BEFORE_BLOCKING)) ? 0 : 2;

      int can_pump = (can_use_activated_abilities(player, card) && has_mana_for_activated_ability(player, card, MANACOST_X(2))
                  && !is_tapped(player, card) && !is_animated_and_sick(player, card) && can_target(&td));
      int ai_priority_pump = current_phase == PHASE_AFTER_BLOCKING ? 3 : 1;

      int choice = DIALOG(player, card, event,
                     "Generate mana", can_generate_mana, ai_priority_generate_mana,
                     "Animate", can_animate, ai_priority_animate,
                     "Pump a Blinkmoth", can_pump, ai_priority_pump);

      if (event == EVENT_CAN_ACTIVATE){
         return choice;
      } else if (event == EVENT_ACTIVATE){
         if (choice == 1){
            return mana_producer(player, card, event);
         } else if (choice == 2){
            if (player == AI){
               instance->targets[1].player = 66;
            }
            charge_mana_for_activated_ability(player, card, MANACOST_X(1));
            instance->targets[1].player = 0;
         } else if (choice == 3){
            instance->targets[1].player = 66;
            instance->number_of_targets = 0;
            if (charge_mana_for_activated_ability(player, card, MANACOST_X(1)) && pick_target(&td, "TARGET_CREATURE")){
               tap_card(player, card);
            }
            instance->targets[1].player = 0;
         }
      } else {   // event == EVENT_RESOLVE_ACTIVATION
         if (choice == 2 && instance->targets[13].player == instance->targets[13].card){
            land_animation(player, instance->parent_card);
         } else if (choice == 3 && valid_target(&td)){
            pump_until_eot(player, instance->parent_card, instance->targets[0].player, instance->targets[0].card, 1, 1);
         }
      }
   } else {
      return mana_producer(player, card, event);
   }
   return 0;
}
drool66 any idea what's going on?
---
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


Return to Bug Reports

Who is online

Users browsing this forum: No registered users and 16 guests


Who is online

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

Login Form