aboutsummaryrefslogtreecommitdiff
path: root/internal/game/act_use.go
diff options
context:
space:
mode:
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)
}