aboutsummaryrefslogtreecommitdiff
path: root/internal/game/action_finishing_blow.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-25 15:40:48 -0400
committerhistoria <[not public]>2026-06-25 15:40:48 -0400
commitabd612c15799f604e671e83dc7c410ed2b44185f (patch)
tree0597ca92350de73aac2a7cf26b2f2d6595dac0cc /internal/game/action_finishing_blow.go
parent2725e2927a1595c7b100d942d1f14146252adeb7 (diff)
downloadthehouseoficarus-abd612c15799f604e671e83dc7c410ed2b44185f.tar.gz
slop refactor
Diffstat (limited to 'internal/game/action_finishing_blow.go')
-rw-r--r--internal/game/action_finishing_blow.go78
1 files changed, 0 insertions, 78 deletions
diff --git a/internal/game/action_finishing_blow.go b/internal/game/action_finishing_blow.go
deleted file mode 100644
index d404fb3..0000000
--- a/internal/game/action_finishing_blow.go
+++ /dev/null
@@ -1,78 +0,0 @@
-package game
-
-import (
- "fmt"
- "strings"
-
- "thehouseoficarus/internal/combat"
- "thehouseoficarus/internal/net"
- "thehouseoficarus/internal/player"
- "thehouseoficarus/internal/world"
-)
-
-func (g *Game) tryFinishingBlow(sess *net.Session, input string) bool {
- p := sess.Player
- cs := combat.GetCombat(p.Name)
- if cs == nil {
- return false
- }
- mob := g.MobStore.GetInstance(cs.MobID)
- if mob == nil || mob.FinishingBlow == "" || mob.HP != 1 {
- return false
- }
- lower := strings.ToLower(input)
- var itemPart, targetPart string
- for _, sep := range []string{" on ", " with "} {
- if idx := strings.Index(lower, sep); idx > 0 {
- itemPart = strings.TrimSpace(input[:idx])
- targetPart = strings.TrimSpace(input[idx+len(sep):])
- break
- }
- }
- if targetPart == "" {
- itemPart = strings.TrimSpace(input)
- if mob.MatchQuality(itemPart) != world.MatchNone {
- targetPart = itemPart
- itemPart = strings.TrimSpace(mob.FinishingBlow)
- }
- }
- if targetPart == "" {
- return false
- }
- if mob.MatchQuality(targetPart) == world.MatchNone {
- return false
- }
- g.doFinishingBlow(sess, p, mob, itemPart)
- return true
-}
-
-func (g *Game) doFinishingBlow(sess *net.Session, p *player.Player, mob *world.MobInstance, itemInput string) {
- fbDef, err := g.ItemStore.Load(mob.FinishingBlow)
- if err != nil {
- sess.WriteLine("Something went wrong.")
- return
- }
- if !fbDef.MatchesName(itemInput) && !strings.EqualFold(itemInput, fbDef.ID) {
- sess.WriteLine(fmt.Sprintf("That won't work on %s. You need %s.", mobDisplayName(mob, true), g.itemColorize(sess, fbDef, fbDef.Name)))
- return
- }
- if !p.HasItem(mob.FinishingBlow) {
- sess.WriteLine(fmt.Sprintf("You don't have any %s.", g.itemColorize(sess, fbDef, fbDef.Name)))
- return
- }
- autoKey := "assassin_unlocked_auto_" + mob.FinishingBlow
- consumed := true
- if p.Flags != nil {
- if val, ok := p.Flags[autoKey]; ok {
- if b, ok := val.(bool); ok && b {
- consumed = false
- }
- }
- }
- if consumed {
- p.RemoveItem(mob.FinishingBlow, 1)
- }
- sess.WriteLine(fmt.Sprintf("You use the %s on %s!", g.itemColorize(sess, fbDef, fbDef.Name), g.colorize(sess, "mob", mobDisplayName(mob, true))))
- mob.HP = 0
- g.endCombat(sess, p, mob)
-}