summaryrefslogtreecommitdiff
path: root/engine/vigour.go
diff options
context:
space:
mode:
authorEwy <ewy@ewy.one>2026-09-21 21:40:05 +0200
committerEwy <ewy@ewy.one>2026-09-21 21:40:05 +0200
commit83b2f2e9922f46fe46fd5330e6b38c66d1483ade (patch)
tree21a6a4402fe99e2afabb67f2cc0d41d0c0ea85be /engine/vigour.go
parent1f8364b145dbd0ff9ff7583f50aeb7498967b0f9 (diff)
(wip)
Diffstat (limited to 'engine/vigour.go')
-rw-r--r--engine/vigour.go43
1 files changed, 42 insertions, 1 deletions
diff --git a/engine/vigour.go b/engine/vigour.go
index 62ececd..24732d0 100644
--- a/engine/vigour.go
+++ b/engine/vigour.go
@@ -7,14 +7,40 @@ import (
type Vigour int
type VigorAction struct {
+ *BaseAction
Name string
From func(p *Player) *pool.Pool
To func(p *Player) *pool.Pool
}
+func (v *VigorAction) Then(g *Game) {
+ v.From(v.Actor(g)).Add(-1)
+ v.To(v.Actor(g)).Add(1)
+ v.Actor(g).Vigour -= 1
+}
+
+func (v *VigorAction) Can(p *Player) bool {
+ return p.Vigour > 0 && v.From(p).Has(1) && v.To(p).Fits(1)
+}
+
+func VigorActions(g *Game, p *Player) []Action {
+ var acs []Action
+ for _, a := range Actions {
+ if a.Can(p) {
+ acs = append(acs, a)
+ }
+ }
+ return acs
+}
+
var Actions = []*VigorAction{
{
Name: "Approach",
+ BaseAction: &BaseAction{
+ User: nil,
+ BaseSource: nil,
+ Description: "Move a sakura from Distance to Aura",
+ },
From: func(p *Player) *pool.Pool {
return p.Game.Distance
},
@@ -24,6 +50,11 @@ var Actions = []*VigorAction{
},
{
Name: "Retreat",
+ BaseAction: &BaseAction{
+ User: nil,
+ BaseSource: nil,
+ Description: "Move a sakura from Aura to Distance",
+ },
From: func(p *Player) *pool.Pool {
return p.Aura
},
@@ -33,6 +64,11 @@ var Actions = []*VigorAction{
},
{
Name: "Charge",
+ BaseAction: &BaseAction{
+ User: nil,
+ BaseSource: nil,
+ Description: "Move a sakura from your Aura to Flare",
+ },
From: func(p *Player) *pool.Pool {
return p.Aura
},
@@ -41,7 +77,12 @@ var Actions = []*VigorAction{
},
},
{
- Name: "Recover",
+ Name: "Charge",
+ BaseAction: &BaseAction{
+ User: nil,
+ BaseSource: nil,
+ Description: "Move a sakura from Aura to Flare",
+ },
From: func(p *Player) *pool.Pool {
return p.Game.Shadow
},