Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] Use maps instead of strings for messages #7971

Draft
wants to merge 18 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions src/clj/game/cards/agendas.clj
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@
[game.core.shuffling :refer [shuffle! shuffle-into-deck
shuffle-into-rd-effect]]
[game.core.tags :refer [gain-tags]]
[game.core.to-string :refer [card-str]]
[game.core.to-string :refer [card-str card-str-map]]
[game.core.toasts :refer [toast]]
[game.core.update :refer [update!]]
[game.core.winning :refer [check-win-by-agenda]]
[game.macros :refer [continue-ability effect msg req wait-for]]
[game.macros :refer [continue-ability effect msg map-msg map-msg-apply req wait-for]]
[game.utils :refer :all]
[jinteki.utils :refer :all]))

Expand Down Expand Up @@ -101,7 +101,7 @@
(all-active-installed state :runner)))
:choices {:card #(and (installed? %)
(resource? %))}
:msg (msg "trash " (card-str state target))
:msg (map-msg :trash (card-str-map state target))
:async true
:effect (effect (trash eid target {:cause-card card}))}})

Expand Down Expand Up @@ -1263,17 +1263,17 @@
:choices {:max (req (count (:hand corp)))
:card #(and (corp? %)
(in-hand? %))}
:msg (msg "trash " (quantify (count targets) "card") " from HQ")
:msg (map-msg :trash-from-hand (count targets))
:async true
; TODO decline
:cancel-effect (effect (system-msg (str "declines to use " (:title card) " to trash any cards from HQ"))
(shuffle-into-rd-effect eid card 3))
:effect (req (wait-for (trash-cards state side targets {:unpreventable true :cause-card card})
(shuffle-into-rd-effect state side eid card 3)))}})

(defcard "Luminal Transubstantiation"
{:on-score
{:silent (req true)
:effect (req (gain-clicks state :corp 3)
{:effect (req (gain-clicks state :corp 3)
(register-turn-flag!
state side card :can-score
(fn [state side card]
Expand Down Expand Up @@ -1443,7 +1443,7 @@
(defcard "Offworld Office"
{:on-score
{:async true
:msg "gain 7 [Credits]"
:msg {:gain-credits 7}
:effect (effect (gain-credits :corp eid 7))}})

(defcard "Ontological Dependence"
Expand All @@ -1465,7 +1465,7 @@

(defcard "Orbital Superiority"
{:on-score
{:msg (msg (if (is-tagged? state) "do 4 meat damage" "give the Runner 1 tag"))
{:msg (map-msg-apply (if (is-tagged? state) {:take-meat 4} {:gain-tag 1}))
:async true
:effect (req (if (is-tagged? state)
(damage state :corp eid :meat 4 {:card card})
Expand Down Expand Up @@ -2175,7 +2175,7 @@
:on-score
{:optional
{:prompt "Draw 2 cards?"
:yes-ability {:msg "draw 2 cards"
:yes-ability {:msg {:draw-cards 2}
:async true
:effect (effect (draw :corp eid 2))}}}})

Expand Down Expand Up @@ -2253,7 +2253,7 @@
(defcard "Tomorrow's Headline"
(let [ability
{:interactive (req true)
:msg "give the Runner 1 tag"
:msg {:give-tag 1}
:async true
:effect (req (gain-tags state :corp eid 1))}]
{:on-score ability
Expand Down
13 changes: 7 additions & 6 deletions src/clj/game/cards/assets.clj
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
[game.core.toasts :refer [toast]]
[game.core.update :refer [update!]]
[game.core.winning :refer [check-win-by-agenda win]]
[game.macros :refer [continue-ability effect msg req wait-for]]
[game.macros :refer [continue-ability effect msg map-msg req wait-for]]
[game.utils :refer :all]
[jinteki.utils :refer :all]
[game.core.link :refer [get-link]]))
Expand Down Expand Up @@ -582,7 +582,7 @@
{:prompt (msg "Trash this asset to do " (get-counters card :advancement) " meat damage?")
:yes-ability
{:async true
:msg "do 1 meat damage for each hosted advancement counter"
:msg (map-msg :deal-meat (get-counters card :advancement))
:effect (req (wait-for
(trash state side card {:cause-card card})
(damage state side eid :meat (get-counters card :advancement) {:card card})))}}}
Expand Down Expand Up @@ -2015,7 +2015,7 @@
:interactive (req true)
:once :per-turn
:label "Take 3 [Credits] (start of turn)"
:msg (msg "gain " (min 3 (get-counters card :credit)) " [Credits]")
:msg (map-msg :gain-credits (min 3 (get-counters card :credit)))
:req (req (:corp-phase-12 @state))
:effect (req (let [credits (min 3 (get-counters card :credit))]
(add-counter state side card :credit (- credits))
Expand All @@ -2025,6 +2025,7 @@
(effect-completed state side eid)
(wait-for
(trash state :corp card {:unpreventable true :cause-card card})
;; TODO this doesn't fit cleanly, it's not a use but the card isn't the source
(system-msg state :corp (str "trashes Nico Campaign"
(when (seq (:deck corp))
" and draws 1 card")))
Expand Down Expand Up @@ -2433,7 +2434,7 @@
:label "Take 3 [Credits] from this asset"
:cost [(->c :click 1)]
:keep-menu-open :while-clicks-left
:msg (msg "gain " (min 3 (get-counters card :credit)) " [Credits]")
:msg (map-msg :gain-credits (min 3 (get-counters card :credit)))
:async true
:effect (req (let [credits (min 3 (get-counters card :credit))]
(wait-for (gain-credits state :corp (make-eid state eid) credits)
Expand Down Expand Up @@ -2707,7 +2708,7 @@

(defcard "Spin Doctor"
{:on-rez {:async true
:msg "draw 2 cards"
:msg {:draw-cards 2}
:effect (effect (draw eid 2))}
:abilities [{:label "Shuffle up to 2 cards from Archives into R&D"
:cost [(->c :remove-from-game)]
Expand Down Expand Up @@ -3005,7 +3006,7 @@
(effect-completed state side eid)))}]})

(defcard "Urtica Cipher"
(advance-ambush 0 {:msg (msg "do " (+ 2 (get-counters (get-card state card) :advancement)) " net damage")
(advance-ambush 0 {:msg (map-msg :deal-net (+ 2 (get-counters (get-card state card) :advancement)))
:async true
:effect (effect (damage eid :net (+ 2 (get-counters (get-card state card) :advancement)) {:card card}))}))

Expand Down
20 changes: 10 additions & 10 deletions src/clj/game/cards/basic.clj
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
[game.core.runs :refer [make-run]]
[game.core.say :refer [play-sfx system-msg]]
[game.core.tags :refer [lose-tags]]
[game.core.to-string :refer [card-str]]
[game.macros :refer [effect msg req wait-for]]
[game.core.to-string :refer [card-str-map]]
[game.macros :refer [effect msg map-msg req wait-for]]
[game.utils :refer :all]
[jinteki.utils :refer :all]))
;; Card definitions
Expand All @@ -31,7 +31,7 @@
{:abilities [{:action true
:label "Gain 1 [Credits]"
:cost [(->c :click)]
:msg "gain 1 [Credits]"
:msg {:gain-credits 1}
:async true
:effect (req (wait-for (gain-credits state side 1 {:action :corp-click-credit})
(swap! state update-in [:stats side :click :credit] (fnil inc 0))
Expand All @@ -41,7 +41,7 @@
:label "Draw 1 card"
:req (req (not-empty (:deck corp)))
:cost [(->c :click)]
:msg "draw 1 card"
:msg {:draw-cards 1}
:async true
:effect (req (trigger-event state side :corp-click-draw {:card (-> @state side :deck (nth 0))})
(swap! state update-in [:stats side :click :draw] (fnil inc 0))
Expand Down Expand Up @@ -91,7 +91,7 @@
:label "Advance 1 installed card"
:cost [(->c :click 1) (->c :credit 1)]
:async true
:msg (msg "advance " (card-str state (:card context)))
:msg (map-msg :advance (card-str-map state (:card context)))
:effect (effect (update-advancement-requirement (:card context))
(add-prop (get-card state (:card context)) :advance-counter 1)
(play-sfx "click-advance")
Expand All @@ -102,7 +102,7 @@
:async true
:req (req tagged)
:prompt "Choose a resource to trash"
:msg (msg "trash " (:title target))
:msg (map-msg :trash (:title target))
;; I hate that we need to modify the basic action card like this, but I don't think there's any way around it -nbkelly, '24
:choices {:req (req (and (if (and (untrashable-while-resources? target)
(< (count (filter resource? (all-active-installed state :runner))) 2))
Expand Down Expand Up @@ -145,7 +145,7 @@
{:action true
:label "Purge virus counters"
:cost [(->c :click 3)]
:msg "purge all virus counters"
:msg {:purge true}
:async true
:effect (req (play-sfx state side "virus-purge")
(purge state side eid))}]})
Expand All @@ -154,7 +154,7 @@
{:abilities [{:action true
:label "Gain 1 [Credits]"
:cost [(->c :click)]
:msg "gain 1 [Credits]"
:msg {:gain-credits 1}
:async true
:effect (req (wait-for (gain-credits state side 1 {:action :runner-click-credit})
(swap! state update-in [:stats side :click :credit] (fnil inc 0))
Expand All @@ -164,7 +164,7 @@
:label "Draw 1 card"
:req (req (not-empty (:deck runner)))
:cost [(->c :click)]
:msg "draw 1 card"
:msg {:draw-cards 1}
:async true
:effect (req (trigger-event state side :runner-click-draw {:card (-> @state side :deck (nth 0))})
(swap! state update-in [:stats side :click :draw] (fnil inc 0))
Expand Down Expand Up @@ -204,7 +204,7 @@
{:action true
:label "Remove 1 tag"
:cost [(->c :click 1) (->c :credit 2)]
:msg "remove 1 tag"
:msg {:remove-tag 1}
:req (req tagged)
:async true
:effect (effect (play-sfx "click-remove-tag")
Expand Down
23 changes: 11 additions & 12 deletions src/clj/game/cards/events.clj
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
[game.core.toasts :refer [toast]]
[game.core.update :refer [update!]]
[game.core.virus :refer [get-virus-counters]]
[game.macros :refer [continue-ability effect msg req wait-for]]
[game.macros :refer [continue-ability effect msg map-msg req wait-for]]
[game.utils :refer :all]
[jinteki.utils :refer :all]
[jinteki.validator :refer [legal?]]))
Expand Down Expand Up @@ -783,9 +783,8 @@
:leave-play (req (swap! state update-in [:corp :bad-publicity :additional] dec))})

(defcard "Creative Commission"
{:on-play {:msg (msg "gain 5 [Credits]"
(when (pos? (:click runner))
" and lose [Click]"))
{:on-play {:msg (map-msg :gain-credits 5
:lose-click (if (pos? (:click runner)) 1 0))
:async true
:effect (req (when (pos? (:click runner))
(lose-clicks state :runner 1))
Expand Down Expand Up @@ -2161,6 +2160,7 @@
:msg "draw 1 card"
:req (req (and (#{:hq :rd} (target-server context))
this-card-run))
; N.B. jailbreak has no msg here for the access bonus
:effect (effect (register-events
card [(breach-access-bonus (target-server context) 1 {:duration :end-of-run})])
(draw eid 1))}]})
Expand Down Expand Up @@ -2619,7 +2619,7 @@
{:prompt "Choose an Icebreaker"
:change-in-game-state (req (seq (:deck runner)))
:choices (req (cancellable (filter #(has-subtype? % "Icebreaker") (:deck runner)) :sorted))
:msg (msg "add " (:title target) " from the stack to the grip and shuffle the stack")
:msg (map-msg :add-from-stack (:title target))
:async true
:effect (effect (trigger-event :searched-stack)
(continue-ability
Expand All @@ -2631,7 +2631,7 @@
{:prompt (str "Install " (:title icebreaker) "?")
:yes-ability
{:async true
:msg (msg " install " (:title icebreaker))
:msg (map-msg :install (:title icebreaker))
:effect (req (runner-install state side (assoc eid :source card :source-type :runner-install) icebreaker nil)
(shuffle! state side :deck))}
:no-ability
Expand Down Expand Up @@ -3792,7 +3792,7 @@

(defcard "Sure Gamble"
{:on-play
{:msg "gain 9 [Credits]"
{:msg {:gain-credits 9}
:async true
:effect (effect (gain-credits eid 9))}})

Expand Down Expand Up @@ -4120,9 +4120,8 @@

(defcard "VRcation"
{:on-play
{:msg (msg "draw 4 cards"
(when (pos? (:click runner))
" and lose [Click]"))
{:msg (map-msg :draw-cards 4
:lose-click (if (pos? (:click runner)) 1 0))
:change-in-game-state (req (or (seq (:deck runner))
(pos? (:click runner))))
:async true
Expand Down Expand Up @@ -4188,12 +4187,12 @@
{:on-play (choose-one-helper
{:player :corp}
[{:option "Runner gains 6 [Credits]"
:ability {:msg "force the Runner to gain 6 [Credits]"
:ability {:msg (map-msg :gain-credits-force 6)
:display-side :corp
:async true
:effect (req (gain-credits state :runner eid 6))}}
{:option "Runner draws 4 cards"
:ability {:msg "force the Runner to draw 4 cards"
:ability {:msg (map-msg :draw-cards-force 4)
:display-side :corp
:async true
:effect (req (draw state :runner eid 4))}}])})
Expand Down
14 changes: 8 additions & 6 deletions src/clj/game/cards/hardware.clj
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
[game.core.update :refer [update!]]
[game.core.virus :refer [count-virus-programs]]
[game.core.winning :refer [win]]
[game.macros :refer [continue-ability effect msg req wait-for]]
[game.macros :refer [continue-ability effect msg map-msg req wait-for]]
[game.utils :refer :all]
[jinteki.utils :refer :all]
[game.core.set-aside :refer [set-aside get-set-aside]]
Expand Down Expand Up @@ -475,7 +475,7 @@
(not (get-in @state [:per-turn (:cid card)]))
(<= 2 (count (:hand runner)))))
:cost [(->c :trash-from-hand 2)]
:msg (msg "trash " (:title target) " at no cost")
:msg (map-msg :trash-free (:title target))
:once :per-turn
:async true
:effect (effect (trash eid (assoc target :seen true) {:accessed true
Expand Down Expand Up @@ -710,7 +710,7 @@
:hq 1
{:req (req (and (= :hq target)
(first-event? state side :breach-server #(= :hq (first %)))))
:msg "access 1 additional card from HQ"})]})
:msg (map-msg :access-additional-from-hq 1)})]})

(defcard "Doppelgänger"
{:static-abilities [(mu+ 1)]
Expand Down Expand Up @@ -782,6 +782,7 @@
:req (req (and (program? target)
(first-event? state :runner :runner-install #(program? (first %)))))
:silent (req true)
; TODO actually this never shows up, because of the above silent
:msg (msg "reduce the install cost of " (:title target) " by 1 [Credits]")}]})

(defcard "e3 Feedback Implants"
Expand Down Expand Up @@ -1599,12 +1600,13 @@
(assoc eid :source card :source-type :runner-install)
target {:msg-keys {:install-source card
:display-origin true}}))
; TODO decline
:cancel-effect (effect (system-msg :runner (str "declines to use " (:title card) " to install a card"))
(effect-completed eid))}
gain-credit-ability
{:interactive (req true)
:async true
:msg "gain 1 [Credits]"
:msg {:gain-credits 1}
:effect (req (wait-for (gain-credits state :runner 1)
(continue-ability state side install-ability card nil)))}]
{:static-abilities [(mu+ 1)]
Expand Down Expand Up @@ -1725,13 +1727,13 @@
:events [{:event :successful-run
:silent (req true)
:async true
:msg "place 1 [Credits]"
:msg {:place-counter [:credit 1]}
:effect (req (add-counter state :runner eid card :credit 1 nil))}]
:abilities [{:action true
:cost [(->c :click 1)]
:label "Gain 1 [Credits]. Take all hosted credits"
:async true
:msg (msg "gain " (inc (get-counters card :credit)) " [Credits]")
:msg (map-msg :gain-credits (inc (get-counters card :credit)))
:effect (req (let [credits (inc (get-counters card :credit))]
(add-counter state side card :credit (-(dec credits)))
(gain-credits state :runner eid credits)))}]})
Expand Down
Loading