summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map/atcommand.c20
-rw-r--r--src/map/pc.h1
2 files changed, 19 insertions, 2 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 707522423..cafe3e39f 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -7856,6 +7856,7 @@ ACMD(fakename)
if (sd->fakename[0])
{
sd->fakename[0] = '\0';
+ sd->fakename_options = FAKENAME_OPTION_NONE;
clif->blname_ack(0, &sd->bl);
if( sd->disguise )
clif->blname_ack(sd->fd, &sd->bl);
@@ -7867,13 +7868,28 @@ ACMD(fakename)
return false;
}
- if (strlen(message) < 2)
+ int options = FAKENAME_OPTION_NONE;
+ char buf[NAME_LENGTH] = {'\0'};
+ const char *fake_name = NULL;
+
+ if (sscanf(message, "%d %23[^\n]", &options, buf) == 2) {
+ fake_name = buf;
+ } else {
+ options = FAKENAME_OPTION_NONE;
+ fake_name = message;
+ }
+
+ if (strlen(fake_name) < 2)
{
clif->message(sd->fd, msg_fd(fd,1309)); // Fake name must be at least two characters.
return false;
}
- safestrncpy(sd->fakename, message, sizeof(sd->fakename));
+ if (options < FAKENAME_OPTION_NONE)
+ options = FAKENAME_OPTION_NONE;
+
+ safestrncpy(sd->fakename, fake_name, sizeof(sd->fakename));
+ sd->fakename_options = options;
clif->blname_ack(0, &sd->bl);
if (sd->disguise) // Another packet should be sent so the client updates the name for sd
clif->blname_ack(sd->fd, &sd->bl);
diff --git a/src/map/pc.h b/src/map/pc.h
index e940c3310..007c08f20 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -492,6 +492,7 @@ END_ZEROED_BLOCK;
int change_level_3rd; // job level when changing from 2nd to 3rd class [jobchange_level_3rd in global_reg_value]
char fakename[NAME_LENGTH]; // fake names [Valaris]
+ int fakename_options; // Fake name display options.
int duel_group; // duel vars [LuzZza]
int duel_invite;