aboutsummaryrefslogtreecommitdiff
path: root/internal/game/act_use.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-07-01 03:21:52 -0400
committerhistoria <[not public]>2026-07-01 03:21:52 -0400
commitfbe5090ac3325ff8ea6989cdf4515c7f077c975b (patch)
tree1811ad9c6a596e7177bb2c42944c389c0a120066 /internal/game/act_use.go
parent5f37dc9b6f6b79da04da70ae0c33ec8d02998587 (diff)
downloadthehouseoficarus-fbe5090ac3325ff8ea6989cdf4515c7f077c975b.tar.gz
feat: item messaging standardized, custom messages for production paths implemented
Diffstat (limited to 'internal/game/act_use.go')
-rw-r--r--internal/game/act_use.go28
1 files changed, 23 insertions, 5 deletions
diff --git a/internal/game/act_use.go b/internal/game/act_use.go
index 0d8582d..1e9d8e9 100644
--- a/internal/game/act_use.go
+++ b/internal/game/act_use.go
@@ -3,6 +3,7 @@ package game
import (
"fmt"
"math/rand"
+ "strings"
"thehouseoficarus/internal/behavior"
"thehouseoficarus/internal/engine"
@@ -34,7 +35,11 @@ func (g *Game) startUse(sess *net.Session, p *player.Player, obj *object.ObjectD
return
}
- g.broadcastAction(sess, "%s uses the %s.", p.Name, obj.Name)
+ if cfg.BroadcastMessage != "" {
+ g.broadcastAction(sess, strings.ReplaceAll(cfg.BroadcastMessage, "%o", obj.Name), p.Name)
+ } else {
+ g.broadcastAction(sess, "%s uses the %s.", p.Name, obj.Name)
+ }
p.Action = &behavior.Action{
Type: "use",
@@ -44,7 +49,7 @@ func (g *Game) startUse(sess *net.Session, p *player.Player, obj *object.ObjectD
Data: &behavior.UseData{Cfg: cfg, Step: 0},
}
- sess.WriteLine(fmt.Sprintf("%s", cfg.Message))
+ sess.WriteLine(fmt.Sprintf("%s", cfg.StartMessage))
}
func (g *Game) advanceUse(sess *net.Session, p *player.Player) {
@@ -76,8 +81,8 @@ func (g *Game) advanceUse(sess *net.Session, p *player.Player) {
skillLevel := p.Level(player.SkillName(cfg.Skill))
chance := behavior.SuccessChance(*cfg.Success, skillLevel, cfg.Level)
if rand.Float64() >= chance {
- if cfg.FailMsg != "" {
- sess.WriteLine(cfg.FailMsg)
+ if cfg.FailMessage != "" {
+ sess.WriteLine(cfg.FailMessage)
}
p.Action.WaitLeft = engine.ToTicks(cfg.Wait)
return
@@ -107,17 +112,30 @@ func (g *Game) advanceUse(sess *net.Session, p *player.Player) {
if rewardDef != nil {
itemName = rewardDef.Name
}
- line := fmt.Sprintf("You make a %s.", g.itemColorize(sess, rewardDef, itemName))
+ coloredName := g.itemColorize(sess, rewardDef, itemName)
+
+ var line string
+ if cfg.SuccessMessage != "" {
+ line = strings.ReplaceAll(cfg.SuccessMessage, "%n", coloredName)
+ } else {
+ line = fmt.Sprintf("You make a %s.", coloredName)
+ }
if cfg.XP > 0 && p.OptionBool("xp_drops") {
line += g.formatXpDropSingle(sess, p, player.SkillName(cfg.Skill), cfg.XP)
}
sess.WriteLine(line)
if p.FirstFreeSlot() == -1 {
+ if cfg.EndMessage != "" {
+ sess.WriteLine(cfg.EndMessage)
+ }
sess.WriteLine("Your inventory is full.")
g.cancelAction(p)
return
}
+ if cfg.EndMessage != "" {
+ sess.WriteLine(cfg.EndMessage)
+ }
p.Action.WaitLeft = engine.ToTicks(cfg.Wait)
}