aboutsummaryrefslogtreecommitdiff
path: root/internal/game/look_target.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-25 19:37:20 -0400
committerhistoria <[not public]>2026-06-25 19:37:20 -0400
commitc55d0e4150b23f2c5c9f96bbc3d4dc2fc6dbaa36 (patch)
treed1c02acea2b4c8d0f672c1539cfdb373b6272ed0 /internal/game/look_target.go
parent068ce514ea3eebdc42b595c631b4b00ce4594577 (diff)
downloadthehouseoficarus-c55d0e4150b23f2c5c9f96bbc3d4dc2fc6dbaa36.tar.gz
feat: yaml conversation trees more robust
Diffstat (limited to 'internal/game/look_target.go')
-rw-r--r--internal/game/look_target.go49
1 files changed, 30 insertions, 19 deletions
diff --git a/internal/game/look_target.go b/internal/game/look_target.go
index 4819411..96dc174 100644
--- a/internal/game/look_target.go
+++ b/internal/game/look_target.go
@@ -57,33 +57,40 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
if best.Protected {
mobColor = "protected_mob"
}
- mobLevel := mobCombatLevel(best)
- levelStr := g.levelColorize(sess, p.CombatLevel(), mobLevel, fmt.Sprintf("(level %d)", mobLevel))
+ var levelStr string
+ if best.Protected {
+ levelStr = color.Render(g.colorMode(sess), color.Parse("223"), "(protected)")
+ } else {
+ mobLevel := mobCombatLevel(best)
+ levelStr = g.levelColorize(sess, p.CombatLevel(), mobLevel, fmt.Sprintf("(level %d)", mobLevel))
+ }
sess.WriteLines(
"",
fmt.Sprintf("%s %s", g.colorize(sess, mobColor, best.Name), levelStr),
)
- if best.IdleDescription != "" {
- sess.WriteLine(best.IdleDescription)
+ if best.Description != "" {
+ sess.WriteLine(color.ExpandTags(g.colorMode(sess), best.Description))
}
- sess.WriteLines(
- "",
- fmt.Sprintf("Attack: %d", best.Attack),
- fmt.Sprintf("Strength: %d", best.Strength),
- fmt.Sprintf("Defense: %d", best.Defense),
- fmt.Sprintf("HP: %d/%d", best.HP, best.MaxHP),
- )
- if best.StabDefense != 0 || best.SlashDefense != 0 || best.CrushDefense != 0 ||
- best.ScienceDefense != 0 || best.RangedDefense != 0 {
+ if !best.Protected {
sess.WriteLines(
"",
- "Defense bonuses:",
- fmt.Sprintf(" Stab: %+d Slash: %+d Crush: %+d", best.StabDefense, best.SlashDefense, best.CrushDefense),
- fmt.Sprintf(" Science: %+d Ranged: %+d", best.ScienceDefense, best.RangedDefense),
+ fmt.Sprintf("Attack: %d", best.Attack),
+ fmt.Sprintf("Strength: %d", best.Strength),
+ fmt.Sprintf("Defense: %d", best.Defense),
+ fmt.Sprintf("HP: %d/%d", best.HP, best.MaxHP),
)
- }
- if best.Weakness != "" {
- sess.WriteLine(fmt.Sprintf("Weakness: %s", best.Weakness))
+ if best.StabDefense != 0 || best.SlashDefense != 0 || best.CrushDefense != 0 ||
+ best.ScienceDefense != 0 || best.RangedDefense != 0 {
+ sess.WriteLines(
+ "",
+ "Defense bonuses:",
+ fmt.Sprintf(" Stab: %+d Slash: %+d Crush: %+d", best.StabDefense, best.SlashDefense, best.CrushDefense),
+ fmt.Sprintf(" Science: %+d Ranged: %+d", best.ScienceDefense, best.RangedDefense),
+ )
+ }
+ if best.Weakness != "" {
+ sess.WriteLine(fmt.Sprintf("Weakness: %s", best.Weakness))
+ }
}
return
}
@@ -142,6 +149,10 @@ func (g *Game) doLookTarget(sess *net.Session, input string) {
sess.WriteLine(color.ExpandTags(g.colorMode(sess), objDescText))
}
+ if def.OnLook != nil {
+ g.applyNodeAction(sess, def.OnLook)
+ }
+
if def.Safespot != nil {
realSt := g.World.GetObjState(p.RoomID, st.DefID, st.Index)
if realSt != nil {