Skip to content

Commit 86e5978

Browse files
committed
add immunity check in ms_abigail for prompts
1 parent e1e4c75 commit 86e5978

3 files changed

Lines changed: 15 additions & 2 deletions

File tree

src/cards/game_enums.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ namespace banggame {
2626
enum class effect_flag {
2727
is_bang,
2828
is_missed,
29+
is_prompt,
2930
play_as_bang,
3031
single_target,
3132
multi_target,

src/effects/armedanddangerous/ms_abigail.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "effects/base/draw_check.h"
55

66
#include "cards/game_enums.h"
7+
#include "cards/game_events.h"
78

89
#include "game/game_table.h"
910

@@ -24,6 +25,13 @@ namespace banggame {
2425
}
2526
return {};
2627
});
28+
29+
origin->m_game->add_listener<event_type::apply_immunity_modifier>(origin_card,
30+
[=](card_ptr e_origin_card, player_ptr e_origin, const_player_ptr e_target, effect_flags flags, card_list &cards) {
31+
if (e_target == origin && flags.check(effect_flag::is_prompt) && effect_ms_abigail::can_escape(e_origin, e_origin_card, flags)) {
32+
cards.push_back(origin_card);
33+
}
34+
});
2735
}
2836

2937
bool effect_ms_abigail::can_play(card_ptr origin_card, player_ptr origin) {

src/game/prompts.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "prompts.h"
22

33
#include "cards/filter_enums.h"
4+
#include "cards/game_enums.h"
45

56
#include "effects/ghost_cards/ruleset.h"
67
#include "effects/frontier/ruleset.h"
@@ -103,8 +104,11 @@ namespace banggame::prompts {
103104
}
104105

105106
prompt_string bot_check_immunity(card_ptr origin_card, player_ptr origin, player_ptr target, effect_flags flags) {
106-
if (origin->is_bot() && target->immune_to(origin_card, origin, flags, true)) {
107-
return {"PROMPT_TARGET_IMMUNE", origin_card, target};
107+
if (origin->is_bot()) {
108+
flags.add(effect_flag::is_prompt);
109+
if (target->immune_to(origin_card, origin, flags, true)) {
110+
return {"PROMPT_TARGET_IMMUNE", origin_card, target};
111+
}
108112
}
109113
return {};
110114
}

0 commit comments

Comments
 (0)