aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-09 20:32:44 -0400
committerhistoria <[not public]>2026-06-09 20:32:44 -0400
commit6a0f3d7a252de4b1741cfe5e1c561412c602becc (patch)
tree368954bc9a52da6462823cc5efdb5a69d7ac1741 /internal
parent9a8848eaa84d46578595a7ca3efe66d1fe36d1e0 (diff)
downloadthehouseoficarus-6a0f3d7a252de4b1741cfe5e1c561412c602becc.tar.gz
feat: better login screen
Diffstat (limited to 'internal')
-rw-r--r--internal/game/game.go53
-rw-r--r--internal/net/server.go23
-rw-r--r--internal/player/player.go4
3 files changed, 52 insertions, 28 deletions
diff --git a/internal/game/game.go b/internal/game/game.go
index 0e1b82d..528c895 100644
--- a/internal/game/game.go
+++ b/internal/game/game.go
@@ -98,7 +98,7 @@ func (g *Game) handleAccountName(sess *net.Session, input string) {
} else {
sess.Account = &net.AccountEntry{Name: name}
sess.State = net.StateNewAccountPass
- sess.Write("Account not found. Enter a password to create it (or press enter to cancel): ")
+ sess.Write("A new visitor to this rock!\nChoose password: ")
}
}
@@ -379,7 +379,7 @@ func (g *Game) handlePurgeAccount(sess *net.Session, input string) {
// Delete account file
os.Remove(g.AccountStore.AccountPath(sess.Account.Name))
- sess.WriteLine(fmt.Sprintf("Account %s has been purged.", sess.Account.Name))
+ sess.WriteLine(fmt.Sprintf("Account %s has been purged. Thanks for playing.", sess.Account.Name))
sess.Conn.Close()
}
@@ -387,22 +387,25 @@ func (g *Game) showMenu(sess *net.Session) {
sess.State = net.StateMenu
lines := []string{
"",
- fmt.Sprintf("Welcome, %s!", sess.Account.Name),
+ fmt.Sprintf("SUCCESSFUL LOGIN as %s.", sess.Account.Name),
"",
- "(C)onnect to character",
}
if len(sess.Account.Characters) > 0 {
- lines = append(lines, "(L)ist characters")
+ lines = append(lines,
+ " (C)onnect character to TC",
+ "",
+ " (L)ist characters",
+ " (R)ename character",
+ " (D)elete character",
+ )
}
lines = append(lines,
- "(N)ew character",
- "(R)ename character",
- "(D)elete character",
- "(P)urge account",
- "(A)ccount rename",
- "(Q)uit",
+ " (N)ew character",
+ " (P)urge account",
+ " (A)ccount rename",
+ " (Q)uit",
"",
- "Choice: ",
+ "INPUT: ",
)
sess.WriteLines(lines...)
}
@@ -410,11 +413,11 @@ func (g *Game) showMenu(sess *net.Session) {
func (g *Game) handleMenu(sess *net.Session, input string) {
switch strings.ToLower(strings.TrimSpace(input)) {
case "":
- sess.Write("Choice: ")
+ sess.Write("INPUT: ")
case "c":
if len(sess.Account.Characters) == 0 {
- sess.WriteLine("\nNo characters on this account.")
- sess.Write("\nChoice: ")
+ sess.WriteLine("\nSYSTEM ERROR: Make a character with 'N' first!")
+ sess.Write("\nINPUT: ")
return
}
if len(sess.Account.Characters) == 1 {
@@ -431,19 +434,19 @@ func (g *Game) handleMenu(sess *net.Session, input string) {
case "l":
if len(sess.Account.Characters) == 0 {
- sess.WriteLine("\nNo characters on this account.")
+ sess.WriteLine("\nSYSTEM ERROR: Zero characters on this account.\n(Make a character with 'N' first)")
} else {
- sess.WriteLine("\nCharacters:")
+ sess.WriteLine("\nSELECT Humans FROM GaiaZeroFour:")
for _, name := range sess.Account.Characters {
sess.WriteLine(fmt.Sprintf(" - %s", name))
}
}
- sess.Write("\nChoice: ")
+ sess.Write("\nINPUT: ")
case "n":
sess.State = net.StateNewCharName
sess.PendingChar = ""
- sess.Write("Character name: ")
+ sess.Write("What's your character name?: ")
case "a":
sess.State = net.StateRenameAccount
@@ -467,12 +470,12 @@ func (g *Game) handleMenu(sess *net.Session, input string) {
for i, name := range sess.Account.Characters {
sess.WriteLine(fmt.Sprintf(" %d) %s", i+1, name))
}
- sess.Write("\nChoice: ")
+ sess.Write("\n> : ")
case "d":
if len(sess.Account.Characters) == 0 {
sess.WriteLine("\nNo characters to delete.")
- sess.Write("\nChoice: ")
+ sess.Write("\nINPUT: ")
return
}
if len(sess.Account.Characters) == 1 {
@@ -483,23 +486,23 @@ func (g *Game) handleMenu(sess *net.Session, input string) {
for i, name := range sess.Account.Characters {
sess.WriteLine(fmt.Sprintf(" %d) %s", i+1, name))
}
- sess.Write("\nChoice: ")
+ sess.Write("\n>: ")
return
}
g.showDeleteConfirm(sess)
case "p":
sess.State = net.StatePurgeAccount
- sess.WriteLine(fmt.Sprintf("\nPurge account %s and all characters? Type PURGE %s to confirm, or anything else to cancel.", sess.Account.Name, sess.Account.Name))
+ sess.WriteLine(fmt.Sprintf("\nPurge account %s and all characters?\nTo be clear you are about to PERMANENTLY DELETE EVERYTHING!\nType PURGE %s to confirm, or anything else to cancel.", sess.Account.Name, sess.Account.Name))
sess.Write("\n> ")
case "q":
- sess.WriteLine("Goodbye.")
+ sess.WriteLine("Later.")
sess.Conn.Close()
return
default:
- sess.Write("Invalid choice. Choice: ")
+ sess.Write("SYNTAX ERROR\nINPUT: ")
}
}
diff --git a/internal/net/server.go b/internal/net/server.go
index fa0b509..e5761a2 100644
--- a/internal/net/server.go
+++ b/internal/net/server.go
@@ -160,8 +160,27 @@ func (s *Server) handleSession(session *Session, handler func(*Session, string))
}()
_, _ = session.Conn.Write([]byte("\033[2J\033[H")) // clear screen
- session.Write("Welcome to Third Collapse!\r\n")
- session.Write("Account name: ")
+
+ welcomeart := `
+ , 3333333 333 333 333 3333333 3333333
+ | 33! 33! 333 33! 33! 333 33! 333 ':. +
+ -+- * 3!! 3!3!3!3! !!3 3!3!!3! 3!3 !3! '::._ *
+ | !!: !!: !!! !!: !!: :!! !!: !!! '._)
+ : : : : : : : : :: : : ,
+ . * ,
+ , welcome to third collapse . *
+
+ 3333333 333333 333 , 333 333333 3333333 333333 33333333
+ !33 33! 333 33! 33! 33! 333 33! 333 !33 33!
+ !3! 3!3 !3! 3!! 3!! + 3!3!3!3! 3!33!3! !33!! 3!!!:!
+ :!! !!: !!! !!: !!: !!: !!! !!: !:! !!:
+ :: :: : : :. : : ::.: : : ::.: : : : : : ::.: : : :: :::
+
+
+`
+
+ session.Write(welcomeart)
+ session.Write("ACCOUNT NAME> ")
for {
line, err := session.Reader.ReadString('\n')
diff --git a/internal/player/player.go b/internal/player/player.go
index 581fc04..ad56923 100644
--- a/internal/player/player.go
+++ b/internal/player/player.go
@@ -25,12 +25,13 @@ const (
Construction SkillName = "construction"
Scavenging SkillName = "scavenging"
Hunter SkillName = "hunter"
+ Slayer SkillName = "slayer"
)
var AllSkills = []SkillName{
Attack, Strength, Defense, Hitpoints, Ranged, Science, Technology,
Fishing, Cooking, Woodcutting, Mining, Smithing, Crafting, Fletching,
- Alchemy, Thieving, Agility, Construction, Scavenging, Hunter,
+ Alchemy, Thieving, Agility, Construction, Scavenging, Hunter, Slayer,
}
var SkillAbbr = map[SkillName]string{
@@ -54,6 +55,7 @@ var SkillAbbr = map[SkillName]string{
Construction: "con",
Scavenging: "scv",
Hunter: "hnt",
+ Slayer: "sly",
}
type AttackStyle string