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/cmd_look.go | |
| parent | 3a58125d14bb307f861b38c6c5b0a63babde7e08 (diff) | |
| download | thehouseoficarus-0ea4eec5dd2122c6704216971eb1249276297867.tar.gz | |
shop fixes, 'toggle' completely removed, movement speed increased
Diffstat (limited to 'internal/game/cmd_look.go')
| -rw-r--r-- | internal/game/cmd_look.go | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/internal/game/cmd_look.go b/internal/game/cmd_look.go index 6c83130..5fa2cf4 100644 --- a/internal/game/cmd_look.go +++ b/internal/game/cmd_look.go @@ -15,18 +15,30 @@ import ( ) func (g *Game) doLook(sess *net.Session) { - p := sess.Player.(*player.Player) + p := sess.Player room, err := g.World.LoadRoom(p.RoomID) if err != nil { sess.WriteLine("You are in a void.") return } + g.showRoomName(sess, p, room) + g.showRoomDescription(sess, p, room) + g.showRoomMobs(sess, p, room) + g.showRoomObjects(sess, p, room) + g.showGroundItems(sess, p, room) + g.showRoomExits(sess, p, room) + g.showRoomPlayers(sess, p, room) +} + +func (g *Game) showRoomName(sess *net.Session, p *player.Player, room *world.Room) { sess.WriteLines( "", fmt.Sprintf("%s (%s)", g.colorize(sess, "room_name", room.Name), g.colorize(sess, "room_number", fmt.Sprintf("#%d", room.ID))), ) +} +func (g *Game) showRoomDescription(sess *net.Session, p *player.Player, room *world.Room) { descWidth := p.OptionInt("room_desc_width") if descWidth <= 0 { descWidth = 70 @@ -51,8 +63,10 @@ func (g *Game) doLook(sess *net.Session) { sess.WriteLine(line) } } +} - mobs := g.MobStore.MobsInRoom(p.RoomID) +func (g *Game) showRoomMobs(sess *net.Session, p *player.Player, room *world.Room) { + mobs := g.MobStore.MobsInRoom(p.RoomID) if len(mobs) > 0 { sort.Slice(mobs, func(i, j int) bool { iDamaged := mobs[i].HP < mobs[i].MaxHP @@ -93,7 +107,9 @@ func (g *Game) doLook(sess *net.Session) { sess.WriteLine(fmt.Sprintf(" %s %s%s%s", g.colorize(sess, npcColor, displayName), levelStr, hp, desc)) } } +} +func (g *Game) showRoomObjects(sess *net.Session, p *player.Player, room *world.Room) { objs := g.World.AllObjInstances(p.RoomID) if len(objs) > 0 { sess.WriteLine("") @@ -155,6 +171,9 @@ func (g *Game) doLook(sess *net.Session) { } roomDesc := def.InRoomDescription + if roomDesc != "" { + roomDesc = color.ExpandTags(g.colorMode(sess), roomDesc) + } coloredName := g.objColorize(sess, def, def.Name) coloredPlural := g.objColorize(sess, def, def.Name+"s") @@ -217,7 +236,9 @@ func (g *Game) doLook(sess *net.Session) { } g.showFarmPatches(sess, p) +} +func (g *Game) showGroundItems(sess *net.Session, p *player.Player, room *world.Room) { ground := g.World.GroundItemsDetailed(p.RoomID) if len(ground) > 0 { showDespawn := p.OptionBool("despawn") @@ -334,13 +355,15 @@ func (g *Game) doLook(sess *net.Session) { } } } +} +func (g *Game) showRoomExits(sess *net.Session, p *player.Player, room *world.Room) { if len(room.Exits) > 0 { sess.WriteLine("") - if p.OptionBool("exits") { + if p.OptionBool("exits") { sess.WriteLine("Exits:") type exitLine struct { - dir string + dir string targetName string } var lines []exitLine @@ -383,11 +406,13 @@ func (g *Game) doLook(sess *net.Session) { sess.WriteLine("") } } +} +func (g *Game) showRoomPlayers(sess *net.Session, p *player.Player, room *world.Room) { others := g.Hub.PlayersInRoom(p.RoomID) for _, other := range others { if other != sess && other.Player != nil { - op := other.Player.(*player.Player) + op := other.Player line := fmt.Sprintf("\n%s is here", g.colorize(sess, "player_name", op.Name)) if cs := combat.GetCombat(op.Name); cs != nil { if mob := g.MobStore.GetInstance(cs.MobID); mob != nil && mob.HP > 0 { @@ -408,7 +433,7 @@ func (g *Game) doLook(sess *net.Session) { } func (g *Game) doLookTarget(sess *net.Session, input string) { - p := sess.Player.(*player.Player) + p := sess.Player lower := strings.ToLower(input) if exitDir := g.World.ResolveExit(lower); exitDir != "" { @@ -572,7 +597,7 @@ func (g *Game) doLookTarget(sess *net.Session, input string) { if other == sess || other.Player == nil { continue } - op := other.Player.(*player.Player) + op := other.Player if strings.ToLower(op.Name) != lower { continue } @@ -584,7 +609,7 @@ func (g *Game) doLookTarget(sess *net.Session, input string) { } func showPlayerInfo(g *Game, sess *net.Session, p *player.Player) { - myP := sess.Player.(*player.Player) + myP := sess.Player theirLevel := p.CombatLevel() levelStr := g.levelColorize(sess, myP.CombatLevel(), theirLevel, fmt.Sprint(theirLevel)) sess.WriteLines( @@ -623,7 +648,7 @@ func showPlayerInfo(g *Game, sess *net.Session, p *player.Player) { } func (g *Game) doExits(sess *net.Session) { - p := sess.Player.(*player.Player) + p := sess.Player room, err := g.World.LoadRoom(p.RoomID) if err != nil || len(room.Exits) == 0 { sess.WriteLine("There are no exits here.") |
