diff options
Diffstat (limited to 'go/game/trigger.go')
| -rw-r--r-- | go/game/trigger.go | 16 |
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) { |
