From 9a9e8f293415785561b940b15643c99fe54c8375 Mon Sep 17 00:00:00 2001 From: kdovtdc Date: Wed, 27 Nov 2024 22:28:23 +0100 Subject: [PATCH 1/2] Fix Serval Traces * change A4 to correctly apply during `BattleStart` event * change A4 to add flat energy instead of fixed energy * redo A6 logic to have A6Check and A6 buff mod --- internal/character/serval/trace.go | 48 ++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/internal/character/serval/trace.go b/internal/character/serval/trace.go index bc997315..9d1b4fae 100644 --- a/internal/character/serval/trace.go +++ b/internal/character/serval/trace.go @@ -1,10 +1,12 @@ package serval import ( + "github.com/simimpact/srsim/pkg/engine/event" "github.com/simimpact/srsim/pkg/engine/info" "github.com/simimpact/srsim/pkg/engine/modifier" "github.com/simimpact/srsim/pkg/engine/prop" "github.com/simimpact/srsim/pkg/key" + "github.com/simimpact/srsim/pkg/model" ) // A4: @@ -15,29 +17,45 @@ import ( // // Upon defeating an enemy, ATK is increased by 20% for 2 turn(s). const ( - A4 = "serval-a4" - A6 = "serval-a6" + A4 = "serval-a4" + A6 = "serval-a6" + A6Check = "serval-a6-check" ) +func init() { + modifier.Register(A6Check, modifier.Config{ + Listeners: modifier.Listeners{ + OnTriggerDeath: a6Buff, + }, + }) + modifier.Register(A6, modifier.Config{ + StatusType: model.StatusType_STATUS_BUFF, + Stacking: modifier.ReplaceBySource, + CanDispel: true, + }) +} + func (c *char) initTraces() { - if c.info.Traces["102"] { - c.engine.ModifyEnergyFixed(info.ModifyAttribute{ - Key: A4, - Target: c.id, - Source: c.id, - Amount: 15.0, - }) - } + c.engine.Events().BattleStart.Subscribe(func(event event.BattleStart) { + if c.info.Traces["102"] { + c.engine.ModifyEnergy(info.ModifyAttribute{ + Key: A4, + Target: c.id, + Source: c.id, + Amount: 15.0, + }) + } + }) + if c.info.Traces["103"] { - modifier.Register(A6, modifier.Config{ - Listeners: modifier.Listeners{ - OnTriggerDeath: A6Buff, - }, + c.engine.AddModifier(c.id, info.Modifier{ + Name: A6Check, + Source: c.id, }) } } -func A6Buff(mod *modifier.Instance, target key.TargetID) { +func a6Buff(mod *modifier.Instance, target key.TargetID) { mod.Engine().AddModifier(mod.Owner(), info.Modifier{ Name: A6, Source: mod.Owner(), From c152ebfdb0c1f027a2f12335b1b565440450fdd6 Mon Sep 17 00:00:00 2001 From: kdovtdc Date: Wed, 27 Nov 2024 22:31:03 +0100 Subject: [PATCH 2/2] Update trace.go --- internal/character/serval/trace.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/character/serval/trace.go b/internal/character/serval/trace.go index 9d1b4fae..050c3d7a 100644 --- a/internal/character/serval/trace.go +++ b/internal/character/serval/trace.go @@ -36,16 +36,16 @@ func init() { } func (c *char) initTraces() { - c.engine.Events().BattleStart.Subscribe(func(event event.BattleStart) { - if c.info.Traces["102"] { + if c.info.Traces["102"] { + c.engine.Events().BattleStart.Subscribe(func(event event.BattleStart) { c.engine.ModifyEnergy(info.ModifyAttribute{ Key: A4, Target: c.id, Source: c.id, Amount: 15.0, }) - } - }) + }) + } if c.info.Traces["103"] { c.engine.AddModifier(c.id, info.Modifier{