Skip to content

Commit 39e76ae

Browse files
authored
Merge pull request #6639 from francescopellegrini/use-can-pay-where-appropriate
Use can pay where appropriate
2 parents fd9a3ae + b59407e commit 39e76ae

File tree

6 files changed

+54
-46
lines changed

6 files changed

+54
-46
lines changed

src/clj/game/cards/assets.clj

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
[game.core.play-instants :refer [play-instant]]
4747
[game.core.prompts :refer [cancellable]]
4848
[game.core.props :refer [add-counter add-icon add-prop remove-icon set-prop]]
49+
[game.core.payment :refer [can-pay?]]
4950
[game.core.revealing :refer [reveal]]
5051
[game.core.rezzing :refer [derez rez]]
5152
[game.core.say :refer [system-msg]]
@@ -426,23 +427,22 @@
426427

427428
(defcard "City Surveillance"
428429
{:derezzed-events [corp-rez-toast]
429-
:flags {:runner-phase-12 (req (pos? (:credit runner)))}
430+
:flags {:runner-phase-12 (req true)}
430431
:events [{:event :runner-turn-begins
431432
:player :runner
432433
:prompt "Choose one"
433-
:choices (req [(when (pos? (:credit runner))
434+
:choices (req [(when (can-pay? state :runner eid card nil [:credit 1])
434435
"Pay 1 [Credits]")
435436
"Take 1 tag"])
436-
:msg "make the Runner pay 1 [Credits] or take 1 tag"
437+
:msg (msg (if (= target "Take 1 tag")
438+
"give the runner 1 tag"
439+
(str "force the runner to " (decapitalize target))))
437440
:async true
438-
:effect (req (case target
439-
"Pay 1 [Credits]"
441+
:effect (req (if (= target "Pay 1 [Credits]")
440442
(wait-for (pay state :runner (make-eid state eid) card :credit 1)
441-
(when-let [payment-str (:msg async-result)]
442-
(system-msg state :runner payment-str))
443+
(system-msg state :runner (:msg async-result))
443444
(effect-completed state side eid))
444-
(do (system-msg state :runner "takes 1 tag")
445-
(gain-tags state :corp eid 1))))}]})
445+
(gain-tags state :corp eid 1)))}]})
446446

447447
(defcard "Clearinghouse"
448448
(let [ability {:once :per-turn
@@ -480,26 +480,22 @@
480480

481481
(defcard "Clyde Van Rite"
482482
(let [ability {:async true
483-
:req (req (or (pos? (:credit runner))
484-
(pos? (count (:deck runner)))))
483+
:req (req (or (can-pay? state :runner eid card nil [:credit 1])
484+
(seq (:deck runner))))
485485
:player :runner
486486
:once :per-turn
487-
:prompt "Pay 1 [Credits] or trash the top card of the Stack"
488-
:choices (req [(when (pos? (:credit runner))
487+
:prompt "Choose one"
488+
:choices (req [(when (can-pay? state :runner eid card nil [:credit 1])
489489
"Pay 1 [Credits]")
490-
(when (pos? (count (:deck runner)))
491-
"Trash top card")])
492-
:label "make the Runner pay 1 [Credits] or trash the top card of the Stack (start of turn)"
493-
:msg "make the Runner pay 1 [Credits] or trash the top card of the Stack"
494-
:effect (req (case target
495-
"Pay 1 [Credits]"
490+
(when (seq (:deck runner))
491+
"Trash the top card of the stack")])
492+
:label "make the Runner pay 1 [Credits] or trash the top card of the stack (start of turn)"
493+
:msg (msg "force the Runner to " (decapitalize target))
494+
:effect (req (if (= target "Pay 1 [Credits]")
496495
(wait-for (pay state side (make-eid state eid) card :credit 1)
497-
(when-let [payment-str (:msg async-result)]
498-
(system-msg state side payment-str))
499-
(effect-completed state side eid))
500-
"Trash top card"
501-
(do (system-msg state side "trashes the top card of the Stack")
502-
(mill state :runner eid :runner 1))))}]
496+
(system-msg state side (:msg async-result))
497+
(effect-completed state side eid))
498+
(mill state :runner eid :runner 1)))}]
503499
{:derezzed-events [corp-rez-toast]
504500
:flags {:corp-phase-12 (req true)}
505501
:events [(assoc ability :event :corp-turn-begins)]

src/clj/game/cards/events.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2205,7 +2205,7 @@
22052205
:waiting-prompt "Corp to choose an option"
22062206
:player :corp
22072207
:prompt "Choose one"
2208-
:choices (req [(when (can-pay? state :corp eid card "Mining Accident" :credit 5)
2208+
:choices (req [(when (can-pay? state :corp eid card nil :credit 5)
22092209
"Pay 5 [Credits]")
22102210
"Take 1 bad publicity"])
22112211
:async true

src/clj/game/cards/ice.clj

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,9 @@
158158
:async true
159159
:label (str "End the run unless the Runner pays " amount " [Credits]")
160160
:prompt "Choose one"
161-
:choices ["End the run"
162-
(str "Pay " amount " [Credits]")]
161+
:choices (req ["End the run"
162+
(when (can-pay? state :runner eid card nil [:credit amount])
163+
(str "Pay " amount " [Credits]"))])
163164
:msg (msg (if (= "End the run" target)
164165
(decapitalize target)
165166
(str "force the runner to " (decapitalize target))))
@@ -172,8 +173,9 @@
172173
{:async true
173174
:label (str "End the run unless the Corp pays " amount " [Credits]")
174175
:prompt "Choose one"
175-
:choices ["End the run"
176-
(str "Pay " amount " [Credits]")]
176+
:choices (req ["End the run"
177+
(when (can-pay? state :corp eid card nil [:credit amount])
178+
(str "Pay " amount " [Credits]"))])
177179
:msg (msg (decapitalize target))
178180
:effect (req (if (= "End the run" target)
179181
(end-run state :corp eid card)
@@ -1199,7 +1201,7 @@
11991201
{:on-encounter {:player :runner
12001202
:msg (msg "force the runner to " (decapitalize target) " on encountering it")
12011203
:prompt "Choose one"
1202-
:choices (req [(when (can-pay? state :runner eid card "Data Ward" :credit 3)
1204+
:choices (req [(when (can-pay? state :runner eid card nil :credit 3)
12031205
"Pay 3 [Credits]")
12041206
"Take 1 tag"])
12051207
:async true
@@ -1444,7 +1446,9 @@
14441446
:msg (msg "force the Runner to " (decapitalize target))
14451447
:player :runner
14461448
:prompt "Choose one"
1447-
:choices ["Pay 1 [Credits]" "Trash an installed card"]
1449+
:choices (req [(when (can-pay? state :runner eid card nil [:credit 1])
1450+
"Pay 1 [Credits]")
1451+
"Trash an installed card"])
14481452
:async true
14491453
:effect (req (if (= target "Pay 1 [Credits]")
14501454
(wait-for (pay state side (make-eid state eid) card :credit 1)
@@ -1460,7 +1464,9 @@
14601464
:msg (msg "force the Runner to " (decapitalize target))
14611465
:player :runner
14621466
:prompt "Choose one"
1463-
:choices ["Pay 2 [Credits]" "Trash an installed card"]
1467+
:choices (req [(when (can-pay? state :runner eid card nil [:credit 2])
1468+
"Pay 2 [Credits]")
1469+
"Trash an installed card"])
14641470
:async true
14651471
:effect (req (if (= target "Pay 2 [Credits]")
14661472
(wait-for (pay state side (make-eid state eid) card :credit 2)
@@ -1477,7 +1483,9 @@
14771483
:msg (msg "force the Runner to " (decapitalize target))
14781484
:player :runner
14791485
:prompt "Choose one"
1480-
:choices ["Pay 3 [Credits]" "Trash an installed card"]
1486+
:choices (req [(when (can-pay? state :runner eid card nil [:credit 3])
1487+
"Pay 3 [Credits]")
1488+
"Trash an installed card"])
14811489
:async true
14821490
:effect (req (if (= target "Pay 3 [Credits]")
14831491
(wait-for (pay state side (make-eid state eid) card :credit 3)
@@ -1600,7 +1608,7 @@
16001608
:label "Give the Runner 1 tag unless they pay 4 [Credits]"
16011609
:prompt "Choose one"
16021610
:choices (req ["Take 1 tag"
1603-
(when (can-pay? state :runner eid card "Funhouse" :credit 4)
1611+
(when (can-pay? state :runner eid card nil :credit 4)
16041612
"Pay 4 [Credits]")])
16051613
:msg (msg (if (= target "Pay 4 [Credits]")
16061614
(str "force the runner to " (decapitalize target))
@@ -2851,7 +2859,7 @@
28512859
:waiting-prompt "Runner to choose an option"
28522860
:prompt "Choose one"
28532861
:choices [(str "Access " title)
2854-
(when (>= (:credit runner) 3)
2862+
(when (can-pay? state :runner eid card nil [:credit 3])
28552863
"Pay 3 [Credits]")]
28562864
:msg (msg "force the Runner to " (decapitalize target))
28572865
:effect (req (if (= target "Pay 3 [Credits]")
@@ -2928,8 +2936,9 @@
29282936
:async true
29292937
:label "Do 1 net damage unless the Runner pays 1 [Credits]"
29302938
:prompt "Choose one"
2931-
:choices ["Suffer 1 net damage"
2932-
"Pay 1 [Credits]"]
2939+
:choices (req ["Suffer 1 net damage"
2940+
(when (can-pay? state :runner eid card nil [:credit 1])
2941+
"Pay 1 [Credits]")])
29332942
:effect (req (if (= "Suffer 1 net damage" target)
29342943
(continue-ability state :corp (do-net-damage 1) card nil)
29352944
(wait-for (pay state :runner (make-eid state eid) card [:credit 1])
@@ -3340,8 +3349,9 @@
33403349
:async true
33413350
:label "Trash a program"
33423351
:prompt "Choose one"
3343-
:choices ["The Corp trashes a program"
3344-
"Pay 3 [Credits]"]
3352+
:choices (req ["The Corp trashes a program"
3353+
(when (can-pay? state :runner eid card nil [:credit 3])
3354+
"Pay 3 [Credits]")])
33453355
:effect (req (if (= "Pay 3 [Credits]" target)
33463356
(wait-for (pay state :runner (make-eid state eid) card [:credit 3])
33473357
(system-msg state :runner (:msg async-result))

src/clj/game/cards/operations.clj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2559,7 +2559,9 @@
25592559
:msg (msg "force the Runner to " (decapitalize target))
25602560
:player :runner
25612561
:prompt "Choose one"
2562-
:choices ["Pay 4 [Credits]" "Take 1 tag"]
2562+
:choices (req [(when (can-pay? state :runner eid card nil [:credit 4])
2563+
"Pay 4 [Credits]")
2564+
"Take 1 tag"])
25632565
:effect (req (if (= target "Pay 4 [Credits]")
25642566
(wait-for (pay state :runner (make-eid state eid) card :credit 4)
25652567
(system-msg state :runner (:msg async-result))

src/clj/game/cards/upgrades.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@
637637
:async true
638638
:waiting-prompt "Runner to choose an option"
639639
:prompt "Choose one"
640-
:choices [(when (can-pay? state :runner eid card "Giordano Memorial Field" :credit credit-cost)
640+
:choices [(when (can-pay? state :runner eid card nil :credit credit-cost)
641641
(str "Pay " credit-cost " [Credits]"))
642642
"End the run"]
643643
:msg (msg (if (= "End the run" target)

test/clj/game/cards/assets_test.clj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -843,8 +843,8 @@
843843
(card-ability state :corp clyde 0)
844844
(is (zero? (:credit (get-runner))))
845845
(is (= 2 (count (:deck (get-runner)))))
846-
(is (some #{"Trash top card"} (prompt-buttons :runner)))
847-
(click-prompt state :runner "Trash top card")
846+
(is (some #{"Trash the top card of the stack"} (prompt-buttons :runner)))
847+
(click-prompt state :runner "Trash the top card of the stack")
848848
(is (zero? (:credit (get-runner))))
849849
(is (= 1 (count (:deck (get-runner))))))))
850850

@@ -863,8 +863,8 @@
863863
(card-ability state :corp clyde 0)
864864
(is (= 9 (:credit (get-runner))))
865865
(is (= 2 (count (:deck (get-runner)))))
866-
(is (some #{"Pay 1 [Credits]" "Trash top card"} (prompt-buttons :runner)))
867-
(click-prompt state :runner "Trash top card")
866+
(is (some #{"Pay 1 [Credits]" "Trash the top card of the stack"} (prompt-buttons :runner)))
867+
(click-prompt state :runner "Trash the top card of the stack")
868868
(is (= 9 (:credit (get-runner))))
869869
(is (= 1 (count (:deck (get-runner))))))))
870870

0 commit comments

Comments
 (0)