aboutsummaryrefslogtreecommitdiff
path: root/internal/game/action_use.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-19 18:20:26 -0400
committerhistoria <[not public]>2026-06-19 18:20:26 -0400
commit0ea4eec5dd2122c6704216971eb1249276297867 (patch)
tree430fbbef04e837820f1d031c190f52ecd6112e25 /internal/game/action_use.go
parent3a58125d14bb307f861b38c6c5b0a63babde7e08 (diff)
downloadthehouseoficarus-0ea4eec5dd2122c6704216971eb1249276297867.tar.gz
shop fixes, 'toggle' completely removed, movement speed increased
Diffstat (limited to 'internal/game/action_use.go')
-rw-r--r--internal/game/action_use.go25
1 files changed, 11 insertions, 14 deletions
diff --git a/internal/game/action_use.go b/internal/game/action_use.go
index 78bf028..368162b 100644
--- a/internal/game/action_use.go
+++ b/internal/game/action_use.go
@@ -12,8 +12,8 @@ import (
)
func (g *Game) startUse(sess *net.Session, p *player.Player, obj *object.ObjectDef) {
- cfg, err := g.BehaviorStore.LoadUse(obj.BehaviorID)
- if err != nil {
+ cfg := obj.Use
+ if cfg == nil {
sess.WriteLine("You can't use this.")
return
}
@@ -49,17 +49,16 @@ func (g *Game) startUse(sess *net.Session, p *player.Player, obj *object.ObjectD
TargetID: obj.ID,
TargetName: obj.Name,
WaitLeft: engine.ToTicks(1),
- Data: map[string]any{"step": 0, "behavior_id": obj.BehaviorID},
+ Data: map[string]any{"step": 0, "use_cfg": cfg},
}
sess.WriteLine(fmt.Sprintf("\n%s", cfg.Message))
}
func (g *Game) advanceUse(sess *net.Session, p *player.Player) {
- behaviorID := p.Action.Data["behavior_id"].(string)
- cfg, err := g.BehaviorStore.LoadUse(behaviorID)
- if err != nil {
- g.CancelAction(p)
+ cfg, ok := p.Action.Data["use_cfg"].(*action.UseConfig)
+ if !ok || cfg == nil {
+ g.cancelAction(p)
return
}
@@ -70,12 +69,12 @@ func (g *Game) advanceUse(sess *net.Session, p *player.Player) {
defName = def.Name
}
sess.WriteLine(fmt.Sprintf("You've run out of %s.", defName))
- g.CancelAction(p)
+ g.cancelAction(p)
return
}
if !p.RemoveItem(itemID, qty) {
sess.WriteLine(fmt.Sprintf("You need %d of %s.", qty, itemID))
- g.CancelAction(p)
+ g.cancelAction(p)
return
}
}
@@ -95,7 +94,7 @@ func (g *Game) advanceUse(sess *net.Session, p *player.Player) {
freeSlot := p.FirstFreeSlot()
if freeSlot == -1 {
sess.WriteLine("Your inventory is full.")
- g.CancelAction(p)
+ g.cancelAction(p)
return
}
@@ -106,9 +105,7 @@ func (g *Game) advanceUse(sess *net.Session, p *player.Player) {
p.SetInvSlot(freeSlot, &player.InventorySlot{ItemID: cfg.Reward.ItemID, Quantity: qty})
if cfg.XP > 0 {
- if newLevel := p.AddSkillXP(player.SkillName(cfg.Skill), cfg.XP); newLevel > 0 {
- sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d %s! ***", newLevel, cfg.Skill)))
- }
+ g.awardSkillXP(sess, p, player.SkillName(cfg.Skill), cfg.XP)
}
g.AccountStore.SaveCharacter(p)
@@ -125,7 +122,7 @@ func (g *Game) advanceUse(sess *net.Session, p *player.Player) {
if p.FirstFreeSlot() == -1 {
sess.WriteLine("Your inventory is full.")
- g.CancelAction(p)
+ g.cancelAction(p)
return
}