aboutsummaryrefslogtreecommitdiff
path: root/go/game/trigger.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/game/trigger.go')
-rw-r--r--go/game/trigger.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/go/game/trigger.go b/go/game/trigger.go
index 6ab42856..6401dee6 100644
--- a/go/game/trigger.go
+++ b/go/game/trigger.go
@@ -45,6 +45,22 @@ func (t *triggerBase) trigger(s *LocalState, e Event) ([]*TriggeredAction, bool)
return []*TriggeredAction{newTriggeredAction(e, t, t.resolveFunc(s, e), t.costFunc)}, remove
}
+func newUpkeepTrigger(
+ src any,
+ remove func(*LocalState, Event) bool,
+ cond func(*LocalState, Event) bool,
+ resolveFunc func(*LocalState, Event) ActionResolveFunc,
+ desc string,
+) Trigger {
+ t := triggerBase{source: src, resolveFunc: resolveFunc, desc: desc}
+ t.condition = func(s *LocalState, event Event) (bool, bool) {
+ triggered := event.eventType == EventTypes.PhaseChange && s.activePhase == Phases.UpkeepPhase && cond(s, event)
+ removed := remove(s, event)
+ return triggered, removed
+ }
+ return &t
+}
+
func newTargetedTrigger(p Permanent, singleshot bool, resolveFunc func(*LocalState, Event) ActionResolveFunc, desc string) Trigger {
t := triggerBase{source: p, resolveFunc: resolveFunc, desc: desc}
t.condition = func(_ *LocalState, event Event) (bool, bool) {