mirror of
https://github.com/tbamud/tbamud.git
synced 2026-04-05 11:57:19 +02:00
Minor update to login and moved credits
This commit is contained in:
parent
d4bda3ad4a
commit
7c23a93b7a
8 changed files with 137 additions and 133 deletions
|
|
@ -1,7 +1,15 @@
|
|||
T B A M U D
|
||||
2 0 2 5
|
||||
You are descending into...
|
||||
|
||||
Based on CircleMUD by Jeremy Elson and DikuMUD by Hans-Henrik Staerfeldt,
|
||||
Katja Nyboe, Tom Madsen, Michael Seifert, and Sebastian Hammer
|
||||
___ ____ _ _
|
||||
| \/ (_) | | | |
|
||||
| . . |_ _ __ __ _ _ __ | |_| |__ __ _ ___
|
||||
| |\/| | | '__/ _` | '_ \| __| '_ \ / _` / __|
|
||||
| | | | | | | (_| | | | | |_| | | | (_| \__ \
|
||||
\_| |_/_|_| \__,_|_| |_|\__|_| |_|\__,_|___/
|
||||
|
||||
|
||||
By what name do you wish to be known?
|
||||
Select an option:
|
||||
[C] Connect to the game
|
||||
[X] Disconnect from the game
|
||||
|
||||
Enter choice:
|
||||
|
|
|
|||
|
|
@ -7069,14 +7069,14 @@ questions, you may want to ask someone whose level is at least 32. Of course,
|
|||
everyone is encouraged to help everyone else, but know that those who are not
|
||||
at least level 32 may have relatively little experience.
|
||||
|
||||
Level 31 (Immortal) Anyone who is new to TBA and is working on their trial
|
||||
Level 2 (Immortal) Anyone who is new to TBA and is working on their trial
|
||||
vnum or zone.
|
||||
Level 32 (God) An experienced builder with proven knowledge that is
|
||||
Level 3 (God) An experienced builder with proven knowledge that is
|
||||
willing to teach others. Immortals of level 32 and above
|
||||
are considered staff.
|
||||
Level 33 (Greater God) An experienced builder that has contributed significantly
|
||||
Level 4 (Greater God) An experienced builder that has contributed significantly
|
||||
to TBA.
|
||||
Level 34 (Implementor) Current developers: Welcor, Wyld, and Opie.
|
||||
Level 5 (Implementor) Current developers: Welcor, Wyld, and Opie.
|
||||
|
||||
Please do not bother asking to be advanced. If your goal is merely to rise in
|
||||
the ranks, you are wasting your time. The Gods here are dedicated to helping
|
||||
|
|
|
|||
|
|
@ -1,11 +1,7 @@
|
|||
(lib/text/imotd)
|
||||
|
||||
Welcome to tbaMUD!
|
||||
|
||||
This is the immortal MOTD -- the file that immortals will see when they
|
||||
log in to the game. You should change it to something more interesting
|
||||
when you get a chance (as well as most of the other files in lib/text.)
|
||||
|
||||
If you need help, find a bug, or wish to contribute please stop by
|
||||
The Builder Academy at: tbamud.com 9091 or @Chttp://tbamud.com@n.
|
||||
|
||||
+-----------------------------------------------------------------------------+
|
||||
| |
|
||||
| Based on tbaMUD by Rumble, CircleMUD by Jeremy Elson, and DikuMUD by |
|
||||
| Hans-Henrik Staerfeldt, Katja Nyboe, Tom Madsen, Michael Seifert, |
|
||||
| and Sebastian Hammer. |
|
||||
| |
|
||||
+-----------------------------------------------------------------------------+
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
Welcome to
|
||||
T B A M U D
|
||||
D E V E L O P M E N T P O R T
|
||||
Please be brutal with the bug, idea, and typo commands. -- Rumble
|
||||
+-----------------------------------------------------------------------------+
|
||||
| |
|
||||
| Based on tbaMUD by Rumble, CircleMUD by Jeremy Elson, and DikuMUD by |
|
||||
| Hans-Henrik Staerfeldt, Katja Nyboe, Tom Madsen, Michael Seifert, |
|
||||
| and Sebastian Hammer. |
|
||||
| |
|
||||
+-----------------------------------------------------------------------------+
|
||||
|
|
|
|||
|
|
@ -1449,7 +1449,7 @@ static void init_descriptor (struct descriptor_data *newd, int desc)
|
|||
*newd->output = '\0';
|
||||
newd->bufptr = 0;
|
||||
newd->has_prompt = 1; /* prompt is part of greetings */
|
||||
STATE(newd) = CONFIG_PROTOCOL_NEGOTIATION ? CON_GET_PROTOCOL : CON_GET_NAME;
|
||||
STATE(newd) = CONFIG_PROTOCOL_NEGOTIATION ? CON_GET_PROTOCOL : CON_GET_CONNECT;
|
||||
CREATE(newd->history, char *, HISTORY_SIZE);
|
||||
if (++last_desc == 1000)
|
||||
last_desc = 1;
|
||||
|
|
@ -2135,7 +2135,7 @@ static void check_idle_passwords(void)
|
|||
|
||||
for (d = descriptor_list; d; d = next_d) {
|
||||
next_d = d->next;
|
||||
if (STATE(d) != CON_PASSWORD && STATE(d) != CON_GET_NAME)
|
||||
if (STATE(d) != CON_PASSWORD && STATE(d) != CON_GET_NAME && STATE(d) != CON_GET_CONNECT)
|
||||
continue;
|
||||
if (!d->idle_tics) {
|
||||
d->idle_tics++;
|
||||
|
|
|
|||
|
|
@ -1321,7 +1321,7 @@ EVENTFUNC(get_protocols)
|
|||
write_to_output(d, buf, 0);
|
||||
|
||||
write_to_output(d, GREETINGS, 0);
|
||||
STATE(d) = CON_GET_NAME;
|
||||
STATE(d) = CON_GET_CONNECT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1366,6 +1366,26 @@ void nanny(struct descriptor_data *d, char *arg)
|
|||
case CON_GET_PROTOCOL:
|
||||
write_to_output(d, "Collecting Protocol Information... Please Wait.\r\n");
|
||||
return;
|
||||
case CON_GET_CONNECT:
|
||||
if (!*arg) {
|
||||
write_to_output(d, GREETINGS, 0);
|
||||
return;
|
||||
}
|
||||
switch (UPPER(*arg)) {
|
||||
case 'C':
|
||||
write_to_output(d, "By what name do you wish to be known? ");
|
||||
STATE(d) = CON_GET_NAME;
|
||||
return;
|
||||
case 'X':
|
||||
write_to_output(d, "Goodbye.\r\n");
|
||||
STATE(d) = CON_CLOSE;
|
||||
return;
|
||||
default:
|
||||
write_to_output(d,
|
||||
"That is an invalid selection.\r\n");
|
||||
write_to_output(d, GREETINGS, 0);
|
||||
return;
|
||||
}
|
||||
case CON_GET_NAME: /* wait for input of name */
|
||||
if (d->character == NULL) {
|
||||
CREATE(d->character, struct char_data, 1);
|
||||
|
|
@ -1437,7 +1457,7 @@ void nanny(struct descriptor_data *d, char *arg)
|
|||
|
||||
/* Check for multiple creations of a character. */
|
||||
if (!valid_name(tmp_name)) {
|
||||
write_to_output(d, "Invalid name, please try another.\r\nName: ");
|
||||
write_to_output(d, "Invalid name, please try another.\r\nBy what name do you wish to be known? ");
|
||||
return;
|
||||
}
|
||||
CREATE(d->character->player.name, char, strlen(tmp_name) + 1);
|
||||
|
|
@ -1468,7 +1488,7 @@ void nanny(struct descriptor_data *d, char *arg)
|
|||
echo_off(d);
|
||||
STATE(d) = CON_NEWPASSWD;
|
||||
} else if (*arg == 'n' || *arg == 'N') {
|
||||
write_to_output(d, "Okay, what IS it, then? ");
|
||||
write_to_output(d, "Okay, what IS it, then?\r\nBy what name do you wish to be known? ");
|
||||
free(d->character->player.name);
|
||||
d->character->player.name = NULL;
|
||||
STATE(d) = CON_GET_NAME;
|
||||
|
|
@ -1721,42 +1741,44 @@ case CON_QCLASS:
|
|||
}
|
||||
|
||||
case CON_PLR_DESC:
|
||||
/* If the player canceled or has no description, prompt again */
|
||||
if (!d->character->player.description || !*d->character->player.description) {
|
||||
/* Description accepted — save and continue */
|
||||
save_char(d->character);
|
||||
|
||||
if (!GET_BACKGROUND(d->character) || !*GET_BACKGROUND(d->character)) {
|
||||
write_to_output(d,
|
||||
"\r\nYou must provide a description before entering the world.\r\n"
|
||||
"Please try again. Type '/s' on a blank line when finished.\r\n\r\n");
|
||||
"\r\nBefore stepping into Miranthas, share a bit of your character's background.\r\n"
|
||||
"Guideline: aim for at least four lines that hint at where they came from,\r\n"
|
||||
"who shaped them, and why they now walk the Tyr region. Touch on things like:\r\n"
|
||||
" - The city-state, tribe, or caravan that claimed them.\r\n"
|
||||
" - Mentors, slavers, or patrons who left a mark.\r\n"
|
||||
" - A defining hardship, triumph, oath, or secret.\r\n"
|
||||
" - The goal, vengeance, or hope that drives them back into the wastes.\r\n"
|
||||
"\r\nExample 1:\r\n"
|
||||
" Raised beneath the ziggurat of Tyr, I learned to barter gossip between\r\n"
|
||||
" templars and gladiators just to stay alive. Freedom came when Kalak fell,\r\n"
|
||||
" but the slave-scar on my shoulder still aches. I now search the desert\r\n"
|
||||
" for the relic my clutch mates died protecting, hoping to buy their kin peace.\r\n"
|
||||
"\r\nExample 2:\r\n"
|
||||
" I rode caravan outrider routes from Balic until giants shattered our train.\r\n"
|
||||
" Two nights buried in silt taught me to whisper with the wind and trust only\r\n"
|
||||
" my erdlu. I hunt the warlord who sold us out, yet coin and company on the\r\n"
|
||||
" road must come first.\r\n"
|
||||
"\r\nExample 3:\r\n"
|
||||
" Born outside Raam, I was tempered by obsidian shards and psionic murmurs.\r\n"
|
||||
" A defiler ruined our oasis, so I swore to hound such spell-scars wherever\r\n"
|
||||
" they bloom. Rumor of a hidden well near Tyr is the lone hope that guides me.\r\n"
|
||||
"\r\nType your background now. Use '/s' on a blank line when you finish.\r\n"
|
||||
"If you'd rather keep it secret, just save immediately and we'll note the mystery.\r\n\r\n");
|
||||
d->backstr = NULL;
|
||||
d->str = &d->character->player.description;
|
||||
if (GET_BACKGROUND(d->character) && *GET_BACKGROUND(d->character))
|
||||
d->backstr = strdup(GET_BACKGROUND(d->character));
|
||||
d->str = &d->character->player.background;
|
||||
d->max_str = PLR_DESC_LENGTH;
|
||||
STATE(d) = CON_PLR_BACKGROUND;
|
||||
send_editor_help(d);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Count lines */
|
||||
{
|
||||
int line_count = 0;
|
||||
for (char *p = d->character->player.description; *p; p++)
|
||||
if (*p == '\n')
|
||||
line_count++;
|
||||
|
||||
if (line_count < 4) {
|
||||
write_to_output(d,
|
||||
"\r\nYour description must be at least four lines long.\r\n"
|
||||
"Please expand on your appearance and try again.\r\n");
|
||||
free(d->character->player.description);
|
||||
d->character->player.description = NULL;
|
||||
d->backstr = NULL;
|
||||
d->str = &d->character->player.description;
|
||||
d->max_str = PLR_DESC_LENGTH;
|
||||
send_editor_help(d);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Description accepted — save and continue */
|
||||
save_char(d->character);
|
||||
|
||||
write_to_output(d, "%s\r\n*** PRESS RETURN: ", motd);
|
||||
STATE(d) = CON_RMOTD;
|
||||
|
||||
|
|
@ -1781,72 +1803,6 @@ case CON_QCLASS:
|
|||
break;
|
||||
|
||||
case '1':
|
||||
/* Require a description before entering the world */
|
||||
if (!d->character->player.description || !*d->character->player.description) {
|
||||
write_to_output(d,
|
||||
"\r\nBefore entering the world, you must describe your character.\r\n"
|
||||
"Focus on what others can immediately see — height, build, complexion,\r\n"
|
||||
"facial structure, hair, eyes, and other physical traits.\r\n"
|
||||
"When done, type '/s' on a blank line.\r\n\r\n");
|
||||
d->backstr = NULL;
|
||||
d->str = &d->character->player.description;
|
||||
d->max_str = PLR_DESC_LENGTH;
|
||||
STATE(d) = CON_PLR_DESC;
|
||||
send_editor_help(d);
|
||||
return;
|
||||
} else {
|
||||
int line_count = 0;
|
||||
for (char *p = d->character->player.description; *p; p++)
|
||||
if (*p == '\n')
|
||||
line_count++;
|
||||
if (line_count < 4) {
|
||||
write_to_output(d,
|
||||
"\r\nYour description must be at least four lines long.\r\n"
|
||||
"Please expand it before entering the world.\r\n\r\n");
|
||||
d->backstr = NULL;
|
||||
d->str = &d->character->player.description;
|
||||
d->max_str = PLR_DESC_LENGTH;
|
||||
STATE(d) = CON_PLR_DESC;
|
||||
send_editor_help(d);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!GET_BACKGROUND(d->character) || !*GET_BACKGROUND(d->character)) {
|
||||
write_to_output(d,
|
||||
"\r\nBefore stepping into Athas, share a bit of your character's background.\r\n"
|
||||
"Guideline: aim for at least four lines that hint at where they came from,\r\n"
|
||||
"who shaped them, and why they now walk the Tyr region. Touch on things like:\r\n"
|
||||
" - The city-state, tribe, or caravan that claimed them.\r\n"
|
||||
" - Mentors, slavers, or patrons who left a mark.\r\n"
|
||||
" - A defining hardship, triumph, oath, or secret.\r\n"
|
||||
" - The goal, vengeance, or hope that drives them back into the wastes.\r\n"
|
||||
"\r\nExample 1:\r\n"
|
||||
" Raised beneath the ziggurat of Tyr, I learned to barter gossip between\r\n"
|
||||
" templars and gladiators just to stay alive. Freedom came when Kalak fell,\r\n"
|
||||
" but the slave-scar on my shoulder still aches. I now search the desert\r\n"
|
||||
" for the relic my clutch mates died protecting, hoping to buy their kin peace.\r\n"
|
||||
"\r\nExample 2:\r\n"
|
||||
" I rode caravan outrider routes from Balic until giants shattered our train.\r\n"
|
||||
" Two nights buried in silt taught me to whisper with the wind and trust only\r\n"
|
||||
" my erdlu. I hunt the warlord who sold us out, yet coin and company on the\r\n"
|
||||
" road must come first.\r\n"
|
||||
"\r\nExample 3:\r\n"
|
||||
" Born outside Raam, I was tempered by obsidian shards and psionic murmurs.\r\n"
|
||||
" A defiler ruined our oasis, so I swore to hound such spell-scars wherever\r\n"
|
||||
" they bloom. Rumor of a hidden well near Tyr is the lone hope that guides me.\r\n"
|
||||
"\r\nType your background now. Use '/s' on a blank line when you finish.\r\n"
|
||||
"If you'd rather keep it secret, just save immediately and we'll note the mystery.\r\n\r\n");
|
||||
d->backstr = NULL;
|
||||
if (GET_BACKGROUND(d->character) && *GET_BACKGROUND(d->character))
|
||||
d->backstr = strdup(GET_BACKGROUND(d->character));
|
||||
d->str = &d->character->player.background;
|
||||
d->max_str = PLR_DESC_LENGTH;
|
||||
STATE(d) = CON_PLR_BACKGROUND;
|
||||
send_editor_help(d);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Proceed into the world */
|
||||
load_result = enter_player_game(d);
|
||||
send_to_char(d->character, "%s", CONFIG_WELC_MESSG);
|
||||
|
|
|
|||
58
src/modify.c
58
src/modify.c
|
|
@ -125,6 +125,7 @@ void string_write(struct descriptor_data *d, char **writeto, size_t len, long ma
|
|||
void string_add(struct descriptor_data *d, char *str)
|
||||
{
|
||||
int action;
|
||||
char **orig_str = d->str;
|
||||
|
||||
/* Determine if this is the terminal string, and truncate if so. Changed to
|
||||
* only accept '\t' at the beginning of line. - JE */
|
||||
|
|
@ -207,6 +208,7 @@ void string_add(struct descriptor_data *d, char *str)
|
|||
/* Ok, now final cleanup. */
|
||||
if (action == STRINGADD_SAVE || action == STRINGADD_ABORT) {
|
||||
int i;
|
||||
int chain_write;
|
||||
struct {
|
||||
int mode;
|
||||
void (*func)(struct descriptor_data *d, int action);
|
||||
|
|
@ -231,15 +233,18 @@ void string_add(struct descriptor_data *d, char *str)
|
|||
(*cleanup_modes[i].func)(d, action);
|
||||
|
||||
/* Common post cleanup code. */
|
||||
d->str = NULL;
|
||||
d->mail_to = 0;
|
||||
d->max_str = 0;
|
||||
if (d->character && !IS_NPC(d->character)) {
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_BUG);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_IDEA);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_TYPO);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_MAILING);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_WRITING);
|
||||
chain_write = (d->str && d->str != orig_str);
|
||||
if (!chain_write) {
|
||||
d->str = NULL;
|
||||
d->mail_to = 0;
|
||||
d->max_str = 0;
|
||||
if (d->character && !IS_NPC(d->character)) {
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_BUG);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_IDEA);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_TYPO);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_MAILING);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_WRITING);
|
||||
}
|
||||
}
|
||||
} else if (action != STRINGADD_ACTION && strlen(*d->str) + 3 <= d->max_str) /* 3 = \r\n\0 */
|
||||
strcat(*d->str, "\r\n");
|
||||
|
|
@ -300,6 +305,41 @@ static void exdesc_string_cleanup(struct descriptor_data *d, int action)
|
|||
if (action == STRINGADD_ABORT)
|
||||
write_to_output(d, "Description aborted.\r\n");
|
||||
|
||||
if (d->character && (!GET_BACKGROUND(d->character) || !*GET_BACKGROUND(d->character))) {
|
||||
write_to_output(d,
|
||||
"\r\nBefore stepping into Miranthas, share a bit of your character's background.\r\n"
|
||||
"Guideline: aim for at least four lines that hint at where they came from,\r\n"
|
||||
"who shaped them, and why they now walk the Tyr region. Touch on things like:\r\n"
|
||||
" - The city-state, tribe, or caravan that claimed them.\r\n"
|
||||
" - Mentors, slavers, or patrons who left a mark.\r\n"
|
||||
" - A defining hardship, triumph, oath, or secret.\r\n"
|
||||
" - The goal, vengeance, or hope that drives them back into the wastes.\r\n"
|
||||
"\r\nExample 1:\r\n"
|
||||
" Raised beneath the ziggurat of Tyr, I learned to barter gossip between\r\n"
|
||||
" templars and gladiators just to stay alive. Freedom came when Kalak fell,\r\n"
|
||||
" but the slave-scar on my shoulder still aches. I now search the desert\r\n"
|
||||
" for the relic my clutch mates died protecting, hoping to buy their kin peace.\r\n"
|
||||
"\r\nExample 2:\r\n"
|
||||
" I rode caravan outrider routes from Balic until giants shattered our train.\r\n"
|
||||
" Two nights buried in silt taught me to whisper with the wind and trust only\r\n"
|
||||
" my erdlu. I hunt the warlord who sold us out, yet coin and company on the\r\n"
|
||||
" road must come first.\r\n"
|
||||
"\r\nExample 3:\r\n"
|
||||
" Born outside Raam, I was tempered by obsidian shards and psionic murmurs.\r\n"
|
||||
" A defiler ruined our oasis, so I swore to hound such spell-scars wherever\r\n"
|
||||
" they bloom. Rumor of a hidden well near Tyr is the lone hope that guides me.\r\n"
|
||||
"\r\nType your background now. Use '/s' on a blank line when you finish.\r\n"
|
||||
"If you'd rather keep it secret, just save immediately and we'll note the mystery.\r\n\r\n");
|
||||
d->backstr = NULL;
|
||||
if (GET_BACKGROUND(d->character) && *GET_BACKGROUND(d->character))
|
||||
d->backstr = strdup(GET_BACKGROUND(d->character));
|
||||
d->str = &d->character->player.background;
|
||||
d->max_str = PLR_DESC_LENGTH;
|
||||
STATE(d) = CON_PLR_BACKGROUND;
|
||||
send_editor_help(d);
|
||||
return;
|
||||
}
|
||||
|
||||
write_to_output(d, "%s", CONFIG_MENU);
|
||||
STATE(d) = CON_MENU;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -340,6 +340,7 @@
|
|||
#define CON_MSGEDIT 32 /**< OLC mode - message editor */
|
||||
#define CON_PLR_BACKGROUND 33 /**< Entering a new character background */
|
||||
#define CON_GET_PROTOCOL 33 /**< Used at log-in while attempting to get protocols > */
|
||||
#define CON_GET_CONNECT 34 /**< Login connect/disconnect menu */
|
||||
|
||||
/* OLC States range - used by IS_IN_OLC and IS_PLAYING */
|
||||
#define FIRST_OLC_STATE CON_OEDIT /**< The first CON_ state that is an OLC */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue