diff options
Diffstat (limited to 'internal/game/cmd_move.go')
| -rw-r--r-- | internal/game/cmd_move.go | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/internal/game/cmd_move.go b/internal/game/cmd_move.go index b3fe254..5d6ea66 100644 --- a/internal/game/cmd_move.go +++ b/internal/game/cmd_move.go @@ -10,8 +10,8 @@ import ( "thehouseoficarus/internal/player" ) -func (g *Game) doMove(sess *net.Session, dir string) { - p := sess.Player.(*player.Player) +func (g *Game) doMove(sess *net.Session, dir string, multiplier float64) { + p := sess.Player exitDir := g.World.ResolveExit(dir) if exitDir == "" { sess.WriteLine("Go where?") @@ -50,10 +50,10 @@ func (g *Game) doMove(sess *net.Session, dir string) { inCombat := combat.GetCombat(p.Name) != nil if !inCombat && p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } - ticks := g.moveTicks(p) + ticks := g.moveTicks(p, multiplier) p.MoveDirection = string(exitDir) p.MoveTarget = targetID @@ -83,7 +83,7 @@ var gracefulItems = map[string]bool{ "graceful_cape": true, } -func (g *Game) moveTicks(p *player.Player) int { +func (g *Game) moveTicks(p *player.Player, multiplier float64) int { if id, ok := p.Equipment[object.SlotBack]; ok && id == "cape_of_agility" { return 0 } @@ -95,11 +95,12 @@ func (g *Game) moveTicks(p *player.Player) int { } } - base := 4.0 - float64(count)*0.25 + base := 2.0 - float64(count)*0.15 if count == 6 { - base -= 0.5 + base -= 0.1 } + base *= multiplier return engine.ToTicks(base) - 1 } @@ -152,7 +153,7 @@ func (g *Game) completeMove(sess *net.Session, p *player.Player) { g.doMap(sess) } - g.RunEnterSteps(sess, targetID) + g.runEnterSteps(sess, targetID) g.checkAggro(sess) } @@ -183,11 +184,8 @@ func (g *Game) seedRoomObjects(roomID int) { if len(obj.WanderRooms) > 0 { g.World.SetObjWander(roomID, obj.ID, obj.WanderRooms, obj.WanderInterval) } - if def.BehaviorID != "" { - cfg, err := g.BehaviorStore.LoadGather(def.BehaviorID) - if err == nil && cfg.DepleteTimer > 0 { - g.World.SetObjDepleteTimer(roomID, obj.ID, cfg.DepleteTimer) - } + if def.IsGatherable() && def.Gather.DepleteTimer > 0 { + g.World.SetObjDepleteTimer(roomID, obj.ID, def.Gather.DepleteTimer) } } } |
