From 7b68f647bb107c9c415b2f0e86f6ccbf1026e3df Mon Sep 17 00:00:00 2001 From: NB Kelly Date: Sun, 25 Jan 2026 17:25:38 +1300 Subject: [PATCH 1/3] more modern rewrite for ebc --- src/clj/game/cards/assets.clj | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/clj/game/cards/assets.clj b/src/clj/game/cards/assets.clj index 5bb0ef0f03..2d1006d2db 100644 --- a/src/clj/game/cards/assets.clj +++ b/src/clj/game/cards/assets.clj @@ -1096,25 +1096,18 @@ (defcard "Executive Boot Camp" {:derezzed-events [corp-rez-toast] - :flags {:corp-phase-12 (req (some #(not (rezzed? %)) (all-installed state :corp)))} - ; A card rezzed by Executive Bootcamp is ineligible to receive the turn-begins event for this turn. - :suppress [{:event :corp-turn-begins - :req (req (= (:cid target) (:ebc-rezzed (get-card state card))))}] - :events [{:event :corp-turn-ends - :silent (req true) - :req (req (:ebc-rezzed card)) - :effect (effect (update! (dissoc card :ebc-rezzed)))}] - :abilities [{:async true - :once :per-turn - :choices {:req (req (and (corp? target) - (not (rezzed? target)) - (can-pay-to-rez? state side (assoc eid :source card) - target {:cost-bonus -1})))} - :label "Rez a card, lowering the cost by 1 [Credits] (start of turn)" - :effect (req (wait-for (rez state side target {:no-warning true :cost-bonus -1}) - (update! state side (assoc card :ebc-rezzed (:cid target))) - (effect-completed state side eid)))} - {:prompt "Choose an asset to reveal and add to HQ" + :events [{:event :corp-turn-begins + :interactive (req true) + :prompt "Rez a card, paying 1 [Credit] less" + :choices {:req (req (and (corp? target) + (installed? target) + (not (rezzed? target)) + (can-pay-to-rez? state side eid target {:cost-bonus -1})))} + :change-in-game-state {:req (req (some #(not (rezzed? %)) (all-installed state :corp))) + :silent true} + :async true + :effect (req (rez state side eid target {:cost-bonus -1 :no-warning true}))}] + :abilities [{:prompt "Choose an asset to reveal and add to HQ" :msg (msg "reveal " (:title target) ", add it to HQ, and shuffle R&D") :choices (req (cancellable (filter asset? (:deck corp)) From 1deaacbd31d8ddb8ad7d474702c6b45bd0871186 Mon Sep 17 00:00:00 2001 From: NB Kelly Date: Sun, 25 Jan 2026 17:25:48 +1300 Subject: [PATCH 2/3] unit test for ebc --- test/clj/game/cards/assets_test.clj | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/test/clj/game/cards/assets_test.clj b/test/clj/game/cards/assets_test.clj index dcd6e87924..fd5bb09630 100644 --- a/test/clj/game/cards/assets_test.clj +++ b/test/clj/game/cards/assets_test.clj @@ -1969,16 +1969,13 @@ (rez state :corp ebc) (take-credits state :runner) (is (:corp-phase-12 @state) "Corp in Step 1.2") - (card-ability state :corp ebc 0) - (click-card state :corp eve) - (is (= 2 (:credit (get-corp))) "EBC saved 1 credit on the rez of Eve") - (is (= 16 (get-counters (refresh eve) :credit))) - (end-phase-12 state :corp) - (is (= 2 (:credit (get-corp))) "Corp did not gain credits from Eve") + (click-card state :corp "Eve Campaign") + (is (= 2 (:credit (get-corp))) "EBC saved 1 credit on the rez of Eve, Corp did not gain credits from Eve") (is (= 16 (get-counters (refresh eve) :credit)) "Did not take counters from Eve") (take-credits state :corp) (take-credits state :runner) - (is (not (:corp-phase-12 @state)) "With nothing to rez, EBC does not trigger Step 1.2") + (click-prompt state :corp "Executive Boot Camp") + (is (not (:corp-phase-12 @state)) "NCIGS fizzles With nothing to facedown, EBC does not trigger Step 1.2") (is (= 14 (get-counters (refresh eve) :credit)) "Took counters from Eve")))) (deftest executive-boot-camp-works-with-ice-that-has-alternate-rez-costs @@ -1997,8 +1994,6 @@ (is (= 9 (:credit (get-corp))) "Corp ends turn with 9 credits") (take-credits state :runner) (is (not (rezzed? (refresh tith))) "Tithonium not rezzed") - (is (:corp-phase-12 @state) "Corp in Step 1.2") - (card-ability state :corp ebc 0) (click-card state :corp tith) (click-prompt state :corp "No") (is (and (:installed (refresh tith)) (rezzed? (refresh tith))) "Rezzed Tithonium") @@ -2019,19 +2014,15 @@ (rez state :corp ebc) (rez state :corp mum) (take-credits state :runner) - (is (:corp-phase-12 @state) "Corp in Step 1.2") - (card-ability state :corp ebc 0) - (click-card state :corp eve) + (click-card state :corp "Eve Campaign") (dotimes [_ 2] (click-card state :corp mum)) (is (= 2 (:credit (get-corp))) "EBC + Mumba saved 3 credit on the rez of Eve") - (is (= 16 (get-counters (refresh eve) :credit))) - (end-phase-12 state :corp) - (is (= 2 (:credit (get-corp))) "Corp did not gain credits from Eve") (is (= 16 (get-counters (refresh eve) :credit)) "Did not take counters from Eve") (take-credits state :corp) (take-credits state :runner) - (is (not (:corp-phase-12 @state)) "With nothing to rez, EBC does not trigger Step 1.2") + (click-prompt state :corp "Executive Boot Camp") + (is (not (:corp-phase-12 @state)) "NCIGS fizzles With nothing to facedown, EBC does not trigger Step 1.2") (is (= 14 (get-counters (refresh eve) :credit)) "Took counters from Eve")))) (deftest executive-search-firm From d4dcc11b664d98a218174d8fcbe23f88e4ed320c Mon Sep 17 00:00:00 2001 From: NB Kelly Date: Sun, 25 Jan 2026 17:47:50 +1300 Subject: [PATCH 3/3] waiting prompt --- src/clj/game/cards/assets.clj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/clj/game/cards/assets.clj b/src/clj/game/cards/assets.clj index 2d1006d2db..c722f3a2e4 100644 --- a/src/clj/game/cards/assets.clj +++ b/src/clj/game/cards/assets.clj @@ -1099,6 +1099,7 @@ :events [{:event :corp-turn-begins :interactive (req true) :prompt "Rez a card, paying 1 [Credit] less" + :waiting-prompt true :choices {:req (req (and (corp? target) (installed? target) (not (rezzed? target))