aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/help/prompt.yaml2
-rw-r--r--internal/game/cmd_prompt.go12
-rw-r--r--internal/game/render_prompt.go19
3 files changed, 22 insertions, 11 deletions
diff --git a/data/help/prompt.yaml b/data/help/prompt.yaml
index 37a98f9..45c7282 100644
--- a/data/help/prompt.yaml
+++ b/data/help/prompt.yaml
@@ -22,6 +22,8 @@ description: |
%s Attack style shorthand (acc, agg, def, bal)
%S Attack style longform (accurate, aggressive, defensive, balanced)
%i Free inventory slots
+ %e Open room exits as letters, blocked omitted (e.g. NSD)
+ %E All room exits as letters (e.g. NSD)
%x_<skill> XP to next level for a skill (e.g. %x_mining)
%X_<skill> Total XP for a skill (e.g. %X_accuracy)
diff --git a/internal/game/cmd_prompt.go b/internal/game/cmd_prompt.go
index 110d08c..3596ebf 100644
--- a/internal/game/cmd_prompt.go
+++ b/internal/game/cmd_prompt.go
@@ -9,7 +9,7 @@ import (
func (g *Game) executePrompt(sess *net.Session, args []string, rawInput string) {
if len(args) == 0 {
- g.doPrompt(sess, "")
+ g.doHelp(sess, "prompt")
} else {
msgStart := strings.Index(strings.ToLower(rawInput), "prompt ") + 7
if msgStart >= 7 && msgStart < len(rawInput) {
@@ -23,16 +23,6 @@ func (g *Game) executePrompt(sess *net.Session, args []string, rawInput string)
func (g *Game) doPrompt(sess *net.Session, input string) {
p := sess.Player
- if input == "" {
- prompt := p.Prompt
- if prompt == "" {
- prompt = "> "
- }
- sess.WriteLine(fmt.Sprintf("Prompt: %s", prompt))
- sess.WriteLine("Use 'prompt <value>' to change. Use 'prompt none' for blank. Use 'prompt reset' to restore default.")
- return
- }
-
if input == "reset" {
p.Prompt = "> "
g.AccountStore.SaveCharacter(p)
diff --git a/internal/game/render_prompt.go b/internal/game/render_prompt.go
index 7d3fafd..b992c8c 100644
--- a/internal/game/render_prompt.go
+++ b/internal/game/render_prompt.go
@@ -7,6 +7,7 @@ import (
"thehouseoficarus/internal/color"
"thehouseoficarus/internal/net"
"thehouseoficarus/internal/player"
+ "thehouseoficarus/internal/world"
)
func (g *Game) promptStr(sess *net.Session) string {
@@ -51,6 +52,24 @@ func (g *Game) expandPromptVars(sess *net.Session, text string) string {
text = strings.ReplaceAll(text, "%m", mobHP)
text = strings.ReplaceAll(text, "%M", mobMaxHP)
+ allExits, openExits := "", ""
+ if room, err := g.World.LoadRoom(p.RoomID); err == nil {
+ for _, dir := range world.ExitOrder {
+ exitDef, ok := room.Exits[dir]
+ if !ok {
+ continue
+ }
+ letter := strings.ToUpper(string(dir)[:1])
+ allExits += letter
+ if exitDef.Condition != nil && !g.checkCondition(sess, exitDef.Condition) {
+ continue
+ }
+ openExits += letter
+ }
+ }
+ text = strings.ReplaceAll(text, "%E", allExits)
+ text = strings.ReplaceAll(text, "%e", openExits)
+
for _, sk := range player.AllSkills {
tag := string(sk)
text = strings.ReplaceAll(text, "%X_"+tag, fmt.Sprint(p.Skills[sk]))