diff options
| author | historia <[not public]> | 2026-06-19 18:20:26 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-19 18:20:26 -0400 |
| commit | 0ea4eec5dd2122c6704216971eb1249276297867 (patch) | |
| tree | 430fbbef04e837820f1d031c190f52ecd6112e25 /internal/game/action_use.go | |
| parent | 3a58125d14bb307f861b38c6c5b0a63babde7e08 (diff) | |
| download | thehouseoficarus-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.go | 25 |
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 } |
