summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/char/inter.c281
-rw-r--r--src/map/atcommand.c101
-rw-r--r--src/map/atcommand.h2
-rw-r--r--src/map/chat.c2
-rw-r--r--src/map/chrif.c6
-rw-r--r--src/map/clif.c18
-rw-r--r--src/map/guild.c8
-rw-r--r--src/map/map.c2
-rw-r--r--src/map/mob.c2
-rw-r--r--src/map/npc.c25
-rw-r--r--src/map/pc.c251
-rw-r--r--src/map/script.c2
-rw-r--r--src/map/skill.c4
13 files changed, 368 insertions, 336 deletions
diff --git a/src/char/inter.c b/src/char/inter.c
index ff99865f8..e1deb1a07 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -66,8 +66,8 @@ struct WisData {
static DBMap* wis_db = NULL; // int wis_id -> struct WisData*
static int wis_dellist[WISDELLIST_MAX], wis_delnum;
-#define MAX_JOB_NAMES 106
-static char* msg_table[MAX_JOB_NAMES]; // messages 550 ~ 655 are job names
+#define MAX_JOB_NAMES 150
+static char* msg_table[MAX_JOB_NAMES]; // messages 550 ~ 699 are job names
const char* msg_txt(int msg_number) {
msg_number -= 550;
@@ -78,17 +78,24 @@ const char* msg_txt(int msg_number) {
return "Unknown";
}
-/*==========================================
- * Read Message Data -- at char server we only keep job names.
- *------------------------------------------*/
-int msg_config_read(const char* cfgName) {
+/**
+ * Reads Message Data.
+ *
+ * This is a modified version of the mapserver's msg_config_read to
+ * only read messages with IDs between 550 and 550+MAX_JOB_NAMES.
+ *
+ * @param[in] cfg_name configuration filename to read.
+ * @param[in] allow_override whether to allow duplicate message IDs to override the original value.
+ * @return success state.
+ */
+bool msg_config_read(const char *cfg_name, bool allow_override) {
int msg_number;
char line[1024], w1[1024], w2[1024];
FILE *fp;
static int called = 1;
- if ((fp = fopen(cfgName, "r")) == NULL) {
- ShowError("Messages file not found: %s\n", cfgName);
+ if ((fp = fopen(cfg_name, "r")) == NULL) {
+ ShowError("Messages file not found: %s\n", cfg_name);
return 1;
}
@@ -102,15 +109,21 @@ int msg_config_read(const char* cfgName) {
continue;
if (strcmpi(w1, "import") == 0)
- msg_config_read(w2);
+ msg_config_read(w2, true);
else {
msg_number = atoi(w1);
if( msg_number < 550 || msg_number > (550+MAX_JOB_NAMES) )
continue;
msg_number -= 550;
if (msg_number >= 0 && msg_number < MAX_JOB_NAMES) {
- if (msg_table[msg_number] != NULL)
+ if (msg_table[msg_number] != NULL) {
+ if (!allow_override) {
+ ShowError("Duplicate message: ID '%d' was already used for '%s'. Message '%s' will be ignored.\n",
+ msg_number, w2, msg_table[msg_number]);
+ continue;
+ }
aFree(msg_table[msg_number]);
+ }
msg_table[msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char));
strcpy(msg_table[msg_number],w2);
}
@@ -133,107 +146,107 @@ void do_final_msg(void) {
/* from pc.c due to @accinfo. any ideas to replace this crap are more than welcome. */
const char* job_name(int class_) {
switch (class_) {
- case JOB_NOVICE:
- case JOB_SWORDMAN:
- case JOB_MAGE:
- case JOB_ARCHER:
- case JOB_ACOLYTE:
- case JOB_MERCHANT:
- case JOB_THIEF:
+ case JOB_NOVICE: // 550
+ case JOB_SWORDMAN: // 551
+ case JOB_MAGE: // 552
+ case JOB_ARCHER: // 553
+ case JOB_ACOLYTE: // 554
+ case JOB_MERCHANT: // 555
+ case JOB_THIEF: // 556
return msg_txt(550 - JOB_NOVICE+class_);
- case JOB_KNIGHT:
- case JOB_PRIEST:
- case JOB_WIZARD:
- case JOB_BLACKSMITH:
- case JOB_HUNTER:
- case JOB_ASSASSIN:
+ case JOB_KNIGHT: // 557
+ case JOB_PRIEST: // 558
+ case JOB_WIZARD: // 559
+ case JOB_BLACKSMITH: // 560
+ case JOB_HUNTER: // 561
+ case JOB_ASSASSIN: // 562
return msg_txt(557 - JOB_KNIGHT+class_);
case JOB_KNIGHT2:
return msg_txt(557);
- case JOB_CRUSADER:
- case JOB_MONK:
- case JOB_SAGE:
- case JOB_ROGUE:
- case JOB_ALCHEMIST:
- case JOB_BARD:
- case JOB_DANCER:
+ case JOB_CRUSADER: // 563
+ case JOB_MONK: // 564
+ case JOB_SAGE: // 565
+ case JOB_ROGUE: // 566
+ case JOB_ALCHEMIST: // 567
+ case JOB_BARD: // 568
+ case JOB_DANCER: // 569
return msg_txt(563 - JOB_CRUSADER+class_);
case JOB_CRUSADER2:
return msg_txt(563);
- case JOB_WEDDING:
- case JOB_SUPER_NOVICE:
- case JOB_GUNSLINGER:
- case JOB_NINJA:
- case JOB_XMAS:
+ case JOB_WEDDING: // 570
+ case JOB_SUPER_NOVICE: // 571
+ case JOB_GUNSLINGER: // 572
+ case JOB_NINJA: // 573
+ case JOB_XMAS: // 574
return msg_txt(570 - JOB_WEDDING+class_);
case JOB_SUMMER:
return msg_txt(621);
- case JOB_NOVICE_HIGH:
- case JOB_SWORDMAN_HIGH:
- case JOB_MAGE_HIGH:
- case JOB_ARCHER_HIGH:
- case JOB_ACOLYTE_HIGH:
- case JOB_MERCHANT_HIGH:
- case JOB_THIEF_HIGH:
+ case JOB_NOVICE_HIGH: // 575
+ case JOB_SWORDMAN_HIGH: // 576
+ case JOB_MAGE_HIGH: // 577
+ case JOB_ARCHER_HIGH: // 578
+ case JOB_ACOLYTE_HIGH: // 579
+ case JOB_MERCHANT_HIGH: // 580
+ case JOB_THIEF_HIGH: // 581
return msg_txt(575 - JOB_NOVICE_HIGH+class_);
- case JOB_LORD_KNIGHT:
- case JOB_HIGH_PRIEST:
- case JOB_HIGH_WIZARD:
- case JOB_WHITESMITH:
- case JOB_SNIPER:
- case JOB_ASSASSIN_CROSS:
+ case JOB_LORD_KNIGHT: // 582
+ case JOB_HIGH_PRIEST: // 583
+ case JOB_HIGH_WIZARD: // 584
+ case JOB_WHITESMITH: // 585
+ case JOB_SNIPER: // 586
+ case JOB_ASSASSIN_CROSS: // 587
return msg_txt(582 - JOB_LORD_KNIGHT+class_);
case JOB_LORD_KNIGHT2:
return msg_txt(582);
- case JOB_PALADIN:
- case JOB_CHAMPION:
- case JOB_PROFESSOR:
- case JOB_STALKER:
- case JOB_CREATOR:
- case JOB_CLOWN:
- case JOB_GYPSY:
+ case JOB_PALADIN: // 588
+ case JOB_CHAMPION: // 589
+ case JOB_PROFESSOR: // 590
+ case JOB_STALKER: // 591
+ case JOB_CREATOR: // 592
+ case JOB_CLOWN: // 593
+ case JOB_GYPSY: // 594
return msg_txt(588 - JOB_PALADIN + class_);
case JOB_PALADIN2:
return msg_txt(588);
- case JOB_BABY:
- case JOB_BABY_SWORDMAN:
- case JOB_BABY_MAGE:
- case JOB_BABY_ARCHER:
- case JOB_BABY_ACOLYTE:
- case JOB_BABY_MERCHANT:
- case JOB_BABY_THIEF:
+ case JOB_BABY: // 595
+ case JOB_BABY_SWORDMAN: // 596
+ case JOB_BABY_MAGE: // 597
+ case JOB_BABY_ARCHER: // 598
+ case JOB_BABY_ACOLYTE: // 599
+ case JOB_BABY_MERCHANT: // 600
+ case JOB_BABY_THIEF: // 601
return msg_txt(595 - JOB_BABY + class_);
- case JOB_BABY_KNIGHT:
- case JOB_BABY_PRIEST:
- case JOB_BABY_WIZARD:
- case JOB_BABY_BLACKSMITH:
- case JOB_BABY_HUNTER:
- case JOB_BABY_ASSASSIN:
+ case JOB_BABY_KNIGHT: // 602
+ case JOB_BABY_PRIEST: // 603
+ case JOB_BABY_WIZARD: // 604
+ case JOB_BABY_BLACKSMITH: // 605
+ case JOB_BABY_HUNTER: // 606
+ case JOB_BABY_ASSASSIN: // 607
return msg_txt(602 - JOB_BABY_KNIGHT + class_);
case JOB_BABY_KNIGHT2:
return msg_txt(602);
- case JOB_BABY_CRUSADER:
- case JOB_BABY_MONK:
- case JOB_BABY_SAGE:
- case JOB_BABY_ROGUE:
- case JOB_BABY_ALCHEMIST:
- case JOB_BABY_BARD:
- case JOB_BABY_DANCER:
+ case JOB_BABY_CRUSADER: // 608
+ case JOB_BABY_MONK: // 609
+ case JOB_BABY_SAGE: // 610
+ case JOB_BABY_ROGUE: // 611
+ case JOB_BABY_ALCHEMIST: // 612
+ case JOB_BABY_BARD: // 613
+ case JOB_BABY_DANCER: // 614
return msg_txt(608 - JOB_BABY_CRUSADER + class_);
case JOB_BABY_CRUSADER2:
@@ -250,74 +263,82 @@ const char* job_name(int class_) {
case JOB_SOUL_LINKER:
return msg_txt(618);
- case JOB_GANGSI:
- case JOB_DEATH_KNIGHT:
- case JOB_DARK_COLLECTOR:
+ case JOB_GANGSI: // 622
+ case JOB_DEATH_KNIGHT: // 623
+ case JOB_DARK_COLLECTOR: // 624
return msg_txt(622 - JOB_GANGSI+class_);
- case JOB_RUNE_KNIGHT:
- case JOB_WARLOCK:
- case JOB_RANGER:
- case JOB_ARCH_BISHOP:
- case JOB_MECHANIC:
- case JOB_GUILLOTINE_CROSS:
+ case JOB_RUNE_KNIGHT: // 625
+ case JOB_WARLOCK: // 626
+ case JOB_RANGER: // 627
+ case JOB_ARCH_BISHOP: // 628
+ case JOB_MECHANIC: // 629
+ case JOB_GUILLOTINE_CROSS: // 630
return msg_txt(625 - JOB_RUNE_KNIGHT+class_);
- case JOB_RUNE_KNIGHT_T:
- case JOB_WARLOCK_T:
- case JOB_RANGER_T:
- case JOB_ARCH_BISHOP_T:
- case JOB_MECHANIC_T:
- case JOB_GUILLOTINE_CROSS_T:
- return msg_txt(625 - JOB_RUNE_KNIGHT_T+class_);
-
- case JOB_ROYAL_GUARD:
- case JOB_SORCERER:
- case JOB_MINSTREL:
- case JOB_WANDERER:
- case JOB_SURA:
- case JOB_GENETIC:
- case JOB_SHADOW_CHASER:
+ case JOB_RUNE_KNIGHT_T: // 656
+ case JOB_WARLOCK_T: // 657
+ case JOB_RANGER_T: // 658
+ case JOB_ARCH_BISHOP_T: // 659
+ case JOB_MECHANIC_T: // 660
+ case JOB_GUILLOTINE_CROSS_T: // 661
+ return msg_txt(656 - JOB_RUNE_KNIGHT_T+class_);
+
+ case JOB_ROYAL_GUARD: // 631
+ case JOB_SORCERER: // 632
+ case JOB_MINSTREL: // 633
+ case JOB_WANDERER: // 634
+ case JOB_SURA: // 635
+ case JOB_GENETIC: // 636
+ case JOB_SHADOW_CHASER: // 637
return msg_txt(631 - JOB_ROYAL_GUARD+class_);
- case JOB_ROYAL_GUARD_T:
- case JOB_SORCERER_T:
- case JOB_MINSTREL_T:
- case JOB_WANDERER_T:
- case JOB_SURA_T:
- case JOB_GENETIC_T:
- case JOB_SHADOW_CHASER_T:
- return msg_txt(631 - JOB_ROYAL_GUARD_T+class_);
+ case JOB_ROYAL_GUARD_T: // 662
+ case JOB_SORCERER_T: // 663
+ case JOB_MINSTREL_T: // 664
+ case JOB_WANDERER_T: // 665
+ case JOB_SURA_T: // 666
+ case JOB_GENETIC_T: // 667
+ case JOB_SHADOW_CHASER_T: // 668
+ return msg_txt(662 - JOB_ROYAL_GUARD_T+class_);
case JOB_RUNE_KNIGHT2:
- case JOB_RUNE_KNIGHT_T2:
return msg_txt(625);
+ case JOB_RUNE_KNIGHT_T2:
+ return msg_txt(656);
+
case JOB_ROYAL_GUARD2:
- case JOB_ROYAL_GUARD_T2:
return msg_txt(631);
+ case JOB_ROYAL_GUARD_T2:
+ return msg_txt(662);
+
case JOB_RANGER2:
- case JOB_RANGER_T2:
return msg_txt(627);
+ case JOB_RANGER_T2:
+ return msg_txt(658);
+
case JOB_MECHANIC2:
- case JOB_MECHANIC_T2:
return msg_txt(629);
- case JOB_BABY_RUNE:
- case JOB_BABY_WARLOCK:
- case JOB_BABY_RANGER:
- case JOB_BABY_BISHOP:
- case JOB_BABY_MECHANIC:
- case JOB_BABY_CROSS:
- case JOB_BABY_GUARD:
- case JOB_BABY_SORCERER:
- case JOB_BABY_MINSTREL:
- case JOB_BABY_WANDERER:
- case JOB_BABY_SURA:
- case JOB_BABY_GENETIC:
- case JOB_BABY_CHASER:
+ case JOB_MECHANIC_T2:
+ return msg_txt(660);
+
+ case JOB_BABY_RUNE: // 638
+ case JOB_BABY_WARLOCK: // 639
+ case JOB_BABY_RANGER: // 640
+ case JOB_BABY_BISHOP: // 641
+ case JOB_BABY_MECHANIC: // 642
+ case JOB_BABY_CROSS: // 643
+ case JOB_BABY_GUARD: // 644
+ case JOB_BABY_SORCERER: // 645
+ case JOB_BABY_MINSTREL: // 646
+ case JOB_BABY_WANDERER: // 647
+ case JOB_BABY_SURA: // 648
+ case JOB_BABY_GENETIC: // 649
+ case JOB_BABY_CHASER: // 650
return msg_txt(638 - JOB_BABY_RUNE+class_);
case JOB_BABY_RUNE2:
@@ -332,19 +353,19 @@ const char* job_name(int class_) {
case JOB_BABY_MECHANIC2:
return msg_txt(642);
- case JOB_SUPER_NOVICE_E:
- case JOB_SUPER_BABY_E:
+ case JOB_SUPER_NOVICE_E: // 651
+ case JOB_SUPER_BABY_E: // 652
return msg_txt(651 - JOB_SUPER_NOVICE_E+class_);
- case JOB_KAGEROU:
- case JOB_OBORO:
+ case JOB_KAGEROU: // 653
+ case JOB_OBORO: // 654
return msg_txt(653 - JOB_KAGEROU+class_);
case JOB_REBELLION:
return msg_txt(655);
default:
- return msg_txt(656);
+ return msg_txt(620); // "Unknown Job"
}
}
@@ -916,7 +937,7 @@ int inter_init_sql(const char *file)
inter_auction_sql_init();
geoip_readdb();
- msg_config_read("conf/messages.conf");
+ msg_config_read("conf/messages.conf", false);
return 0;
}
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 6a0c75db3..50ec913c4 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -80,40 +80,46 @@ const char* atcommand_msg(int msg_number) {
return "??";
}
-/*==========================================
- * Read Message Data
- *------------------------------------------*/
-bool msg_config_read(const char* cfgName)
-{
+/**
+ * Reads Message Data
+ *
+ * @param[in] cfg_name configuration filename to read.
+ * @param[in] allow_override whether to allow duplicate message IDs to override the original value.
+ * @return success state.
+ */
+bool msg_config_read(const char *cfg_name, bool allow_override) {
int msg_number;
char line[1024], w1[1024], w2[1024];
FILE *fp;
static int called = 1;
- if ((fp = fopen(cfgName, "r")) == NULL) {
- ShowError("Messages file not found: %s\n", cfgName);
+ if ((fp = fopen(cfg_name, "r")) == NULL) {
+ ShowError("Messages file not found: %s\n", cfg_name);
return false;
}
if ((--called) == 0)
memset(atcommand->msg_table, 0, sizeof(atcommand->msg_table[0]) * MAX_MSG);
- while(fgets(line, sizeof(line), fp))
- {
+ while(fgets(line, sizeof(line), fp)) {
if (line[0] == '/' && line[1] == '/')
continue;
if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2)
continue;
- if (strcmpi(w1, "import") == 0)
- msg_config_read(w2);
- else
- {
+ if (strcmpi(w1, "import") == 0) {
+ msg_config_read(w2, true);
+ } else {
msg_number = atoi(w1);
- if (msg_number >= 0 && msg_number < MAX_MSG)
- {
- if (atcommand->msg_table[msg_number] != NULL)
+ if (msg_number >= 0 && msg_number < MAX_MSG) {
+ if (atcommand->msg_table[msg_number] != NULL) {
+ if (!allow_override) {
+ ShowError("Duplicate message: ID '%d' was already used for '%s'. Message '%s' will be ignored.\n",
+ msg_number, w2, atcommand->msg_table[msg_number]);
+ continue;
+ }
aFree(atcommand->msg_table[msg_number]);
+ }
/* this could easily become consecutive memory like get_str() and save the malloc overhead for over 1k calls [Ind] */
atcommand->msg_table[msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char));
strcpy(atcommand->msg_table[msg_number],w2);
@@ -156,11 +162,11 @@ ACMD(send)
// read message type as hex number (without the 0x)
if(!message || !*message ||
!((sscanf(message, "len %x", &type)==1 && (len=1))
- || sscanf(message, "%x", &type)==1) )
- {
- int i;
- for (i = 900; i <= 903; ++i)
- clif->message(fd, msg_txt(i));
+ || sscanf(message, "%x", &type)==1) ) {
+ clif->message(fd, msg_txt(900)); // Usage:
+ clif->message(fd, msg_txt(901)); // @send len <packet hex number>
+ clif->message(fd, msg_txt(902)); // @send <packet hex number> {<value>}*
+ clif->message(fd, msg_txt(903)); // Value: <type=B(default),W,L><number> or S<length>"<string>"
return false;
}
@@ -476,7 +482,7 @@ ACMD(jumpto) {
}
if( pc_isdead(sd) ) {
- clif->message(fd, msg_txt(664));
+ clif->message(fd, msg_txt(864)); // "You cannot use this command when dead."
return false;
}
@@ -503,9 +509,8 @@ ACMD(jump)
return false;
}
- if( pc_isdead(sd) )
- {
- clif->message(fd, msg_txt(664));
+ if( pc_isdead(sd) ) {
+ clif->message(fd, msg_txt(864)); // "You cannot use this command when dead."
return false;
}
@@ -980,7 +985,7 @@ ACMD(kill)
ACMD(alive)
{
if (!status->revive(&sd->bl, 100, 100)) {
- clif->message(fd, msg_txt(667));
+ clif->message(fd, msg_txt(867)); // "You're not dead."
return false;
}
clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
@@ -1901,7 +1906,7 @@ ACMD(monster)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message) {
- clif->message(fd, msg_txt(80)); // Give the display name or monster name/id please.
+ clif->message(fd, msg_txt(80)); // Please specify a display name or monster name/id.
return false;
}
if (sscanf(message, "\"%23[^\"]\" %23s %d", name, monster, &number) > 1 ||
@@ -2163,7 +2168,7 @@ ACMD(memo)
if( !message || !*message || sscanf(message, "%d", &position) < 1 )
{
int i;
- clif->message(sd->fd, msg_txt(668));
+ clif->message(sd->fd, msg_txt(868)); // "Your current memo positions are:"
for( i = 0; i < MAX_MEMOPOINTS; i++ )
{
if( sd->status.memo_point[i].map )
@@ -3324,7 +3329,7 @@ ACMD(idsearch)
return false;
}
- sprintf(atcmd_output, msg_txt(77), item_name); // The reference result of '%s' (name: id):
+ sprintf(atcmd_output, msg_txt(77), item_name); // Search results for '%s' (name: id):
clif->message(fd, atcmd_output);
match = itemdb->search_name_array(item_array, MAX_SEARCH, item_name, 0);
if (match > MAX_SEARCH) {
@@ -3336,7 +3341,7 @@ ACMD(idsearch)
sprintf(atcmd_output, msg_txt(78), item_array[i]->jname, item_array[i]->nameid); // %s: %d
clif->message(fd, atcmd_output);
}
- sprintf(atcmd_output, msg_txt(79), match); // It is %d affair above.
+ sprintf(atcmd_output, msg_txt(79), match); // %d results found.
clif->message(fd, atcmd_output);
return true;
@@ -4417,7 +4422,7 @@ ACMD(jail) {
//Duration of INT_MAX to specify infinity.
sc_start4(NULL,&pl_sd->bl,SC_JAILED,100,INT_MAX,m_index,x,y,1000);
- clif->message(pl_sd->fd, msg_txt(117)); // GM has send you in jails.
+ clif->message(pl_sd->fd, msg_txt(117)); // You have been jailed by a GM.
clif->message(fd, msg_txt(118)); // Player warped in jails.
return true;
}
@@ -4734,7 +4739,7 @@ ACMD(undisguise)
{
if (sd->disguise != -1) {
pc->disguise(sd, -1);
- clif->message(fd, msg_txt(124)); // Undisguise applied.
+ clif->message(fd, msg_txt(124)); // Disguise removed.
} else {
clif->message(fd, msg_txt(125)); // You're not disguised.
return false;
@@ -4756,7 +4761,7 @@ ACMD(undisguiseall) {
pc->disguise(pl_sd, -1);
mapit->free(iter);
- clif->message(fd, msg_txt(124)); // Undisguise applied.
+ clif->message(fd, msg_txt(124)); // Disguise removed.
return true;
}
@@ -4787,7 +4792,7 @@ ACMD(undisguiseguild)
if( (pl_sd = g->member[i].sd) && pl_sd->disguise != -1 )
pc->disguise(pl_sd, -1);
- clif->message(fd, msg_txt(124)); // Undisguise applied.
+ clif->message(fd, msg_txt(124)); // Disguise removed.
return true;
}
@@ -4866,21 +4871,21 @@ ACMD(email)
memset(new_email, '\0', sizeof(new_email));
if (!message || !*message || sscanf(message, "%99s %99s", actual_email, new_email) < 2) {
- clif->message(fd, msg_txt(1151)); // Please enter 2 emails (usage: @email <actual@email> <new@email>).
+ clif->message(fd, msg_txt(1151)); // Please enter two e-mail addresses (usage: @email <current@email> <new@email>).
return false;
}
if (e_mail_check(actual_email) == 0) {
- clif->message(fd, msg_txt(144)); // Invalid actual email. If you have default e-mail, give a@a.com.
+ clif->message(fd, msg_txt(144)); // Invalid e-mail. If your email hasn't been set, use a@a.com.
return false;
} else if (e_mail_check(new_email) == 0) {
- clif->message(fd, msg_txt(145)); // Invalid new email. Please enter a real e-mail.
+ clif->message(fd, msg_txt(145)); // Invalid new email. Please enter a real e-mail address.
return false;
} else if (strcmpi(new_email, "a@a.com") == 0) {
- clif->message(fd, msg_txt(146)); // New email must be a real e-mail.
+ clif->message(fd, msg_txt(146)); // New email must be a real e-mail address.
return false;
} else if (strcmpi(actual_email, new_email) == 0) {
- clif->message(fd, msg_txt(147)); // New email must be different of the actual e-mail.
+ clif->message(fd, msg_txt(147)); // New e-mail must be different from the current e-mail address.
return false;
}
@@ -4980,7 +4985,7 @@ ACMD(npcmove) {
}
if ((m=nd->bl.m) < 0 || nd->bl.prev == NULL) {
- clif->message(fd, msg_txt(1154)); // NPC is not on this map.
+ clif->message(fd, msg_txt(1154)); // NPC is not in this map.
return false; //Not on a map.
}
@@ -5460,7 +5465,7 @@ ACMD(changelook)
ACMD(autotrade) {
if( map->list[sd->bl.m].flag.autotrade != battle_config.autotrade_mapflag ) {
- clif->message(fd, msg_txt(1179)); // Autotrade is not allowed on this map.
+ clif->message(fd, msg_txt(1179)); // Autotrade is not allowed in this map.
return false;
}
@@ -5470,7 +5475,7 @@ ACMD(autotrade) {
}
if( !sd->state.vending && !sd->state.buyingstore ) { //check if player is vending or buying
- clif->message(fd, msg_txt(549)); // "You should have a shop open to use @autotrade."
+ clif->message(fd, msg_txt(549)); // "You should have a shop open in order to use @autotrade."
return false;
}
@@ -5508,7 +5513,7 @@ ACMD(changegm) {
}
if( map->list[sd->bl.m].flag.guildlock || map->list[sd->bl.m].flag.gvg_castle ) {
- clif->message(fd, msg_txt(1182)); // You cannot change guild leaders on this map.
+ clif->message(fd, msg_txt(1182)); // You cannot change guild leaders in this map.
return false;
}
@@ -5948,7 +5953,7 @@ ACMD(clearweather) {
map->list[sd->bl.m].flag.fireworks=0;
map->list[sd->bl.m].flag.leaves=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(291));
+ clif->message(fd, msg_txt(291)); // "Weather effects will disappear after teleporting or refreshing."
return true;
}
@@ -7203,7 +7208,7 @@ ACMD(version) {
sprintf(atcmd_output,msg_txt(1295),git); // Git Hash '%s'
clif->message(fd,atcmd_output);
} else if ( svn[0] != HERC_UNKNOWN_VER ) {
- sprintf(atcmd_output,msg_txt(1436),git); // SVN r%s
+ sprintf(atcmd_output,msg_txt(1294),git); // SVN r%s
clif->message(fd,atcmd_output);
} else
clif->message(fd,msg_txt(1296)); // Cannot determine version
@@ -7622,7 +7627,7 @@ ACMD(invite) {
if(battle_config.duel_only_on_same_map && target_sd->bl.m != sd->bl.m)
{
- // "Duel: You can't invite %s because he/she isn't on the same map."
+ // "Duel: You can't invite %s because he/she isn't in the same map."
sprintf(atcmd_output, msg_txt(364), message);
clif->message(fd, atcmd_output);
return false;
@@ -8294,7 +8299,7 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand
memset(line_buff,' ',CHATBOX_SIZE);
line_buff[CHATBOX_SIZE-1] = 0;
- clif->message(fd, msg_txt(273)); // "Commands available:"
+ clif->message(fd, msg_txt(273)); // "Available commands:"
for (cmd = dbi_first(iter); dbi_exists(iter); cmd = dbi_next(iter)) {
size_t slen;
@@ -8665,7 +8670,7 @@ ACMD(join) {
if( idb_exists(channel->users, sd->status.char_id) ) {
- sprintf(atcmd_output, msg_txt(1475),name); // You're already in the '%s' channel
+ sprintf(atcmd_output, msg_txt(1436),name); // You're already in the '%s' channel
clif->message(fd, atcmd_output);
return false;
}
diff --git a/src/map/atcommand.h b/src/map/atcommand.h
index 39f7cc2b2..bc4ab30a3 100644
--- a/src/map/atcommand.h
+++ b/src/map/atcommand.h
@@ -86,7 +86,7 @@ struct atcommand_interface {
bool (*can_use2) (struct map_session_data *sd, const char *command, AtCommandType type);
void (*load_groups) (GroupSettings **groups, config_setting_t **commands_, size_t sz);
AtCommandInfo* (*exists) (const char* name);
- bool (*msg_read) (const char* cfgName);
+ bool (*msg_read) (const char *cfg_name, bool allow_override);
void (*final_msg) (void);
/* atcommand binding */
struct atcmd_binding_data* (*get_bind_byname) (const char* name);
diff --git a/src/map/chat.c b/src/map/chat.c
index 549904ca6..08fc4a575 100644
--- a/src/map/chat.c
+++ b/src/map/chat.c
@@ -86,7 +86,7 @@ bool chat_createpcchat(struct map_session_data* sd, const char* title, const cha
}
if( map->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOCHAT) ) {
- clif->message (sd->fd, msg_txt(665)); // "Can't create chat rooms in this area."
+ clif->message (sd->fd, msg_txt(865)); // "Can't create chat rooms in this area."
return false;
}
diff --git a/src/map/chrif.c b/src/map/chrif.c
index 301c8ec66..1b87b7b62 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -782,7 +782,7 @@ bool chrif_changesex(struct map_session_data *sd) {
WFIFOW(chrif->fd,30) = 5;
WFIFOSET(chrif->fd,44);
- clif->message(sd->fd, msg_txt(408)); //"Need disconnection to perform change-sex request..."
+ clif->message(sd->fd, msg_txt(408)); //"Disconnecting to perform change-sex request..."
if (sd->fd)
clif->authfail_fd(sd->fd, 15);
@@ -887,7 +887,7 @@ void chrif_changedsex(int fd) {
// save character
sd->login_id1++; // change identify, because if player come back in char within the 5 seconds, he can change its characters
// do same modify in login-server for the account, but no in char-server (it ask again login_id1 to login, and don't remember it)
- clif->message(sd->fd, msg_txt(409)); //"Your sex has been changed (need disconnection by the server)..."
+ clif->message(sd->fd, msg_txt(409)); //"Your sex has been changed (disconnection required to complete the process)..."
set_eof(sd->fd); // forced to disconnect for the change
map->quit(sd); // Remove leftovers (e.g. autotrading) [Paradox924X]
}
@@ -982,7 +982,7 @@ void chrif_idbanned(int fd) {
if (RFIFOB(fd,6) == 0) { // 0: change of statut
int ret_status = RFIFOL(fd,7); // status or final date of a banishment
if(0<ret_status && ret_status<=9)
- clif->message(sd->fd, msg_txt(411+ret_status));
+ clif->message(sd->fd, msg_txt(411+ret_status)); // Message IDs (for search convenience): 412, 413, 414, 415, 416, 417, 418, 419, 420
else if(ret_status==100)
clif->message(sd->fd, msg_txt(421));
else
diff --git a/src/map/clif.c b/src/map/clif.c
index 5387f8fb8..c61a72597 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -6931,7 +6931,7 @@ void clif_sendegg(struct map_session_data *sd)
fd=sd->fd;
if (battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m)) { //Disable pet hatching in GvG grounds during Guild Wars [Skotlex]
- clif->message(fd, msg_txt(666));
+ clif->message(fd, msg_txt(866)); // "Pets are not allowed in Guild Wars."
return;
}
WFIFOHEAD(fd, MAX_INVENTORY * 2 + 4);
@@ -9350,7 +9350,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) {
// pet
if( sd->pd ) {
if( battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m) ) { //Return the pet to egg. [Skotlex]
- clif->message(sd->fd, msg_txt(666));
+ clif->message(sd->fd, msg_txt(866)); // "Pets are not allowed in Guild Wars."
pet->menu(sd, 3); //Option 3 is return to egg.
} else {
map->addblock(&sd->pd->bl);
@@ -10908,7 +10908,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
if( npc->isnear(&sd->bl) ) {
// uncomment for more verbose message.
//char output[150];
- //sprintf(output, msg_txt(662), battle_config.min_npc_vendchat_distance);
+ //sprintf(output, msg_txt(862), battle_config.min_npc_vendchat_distance); // "You're too close to a NPC, you must be at least %d cells away from any NPC."
//clif_displaymessage(sd->fd, output);
clif->skill_fail(sd,1,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
return;
@@ -13173,7 +13173,7 @@ void clif_parse_GuildLeave(int fd,struct map_session_data *sd) {
return;
}
if( sd->bg_id ) {
- clif->message(fd, msg_txt(670)); //"You can't leave battleground guilds."
+ clif->message(fd, msg_txt(870)); //"You can't leave battleground guilds."
return;
}
@@ -14041,7 +14041,7 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) {
// Friend already exists
for (i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id != 0; i++) {
if (sd->status.friends[i].char_id == f_sd->status.char_id) {
- clif->message(fd, msg_txt(671)); //"Friend already exists."
+ clif->message(fd, msg_txt(871)); //"Friend already exists."
return;
}
}
@@ -14137,7 +14137,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
(sd->status.friends[i].char_id != char_id || sd->status.friends[i].account_id != account_id); i++);
if (i == MAX_FRIENDS) {
- clif->message(fd, msg_txt(672)); //"Name not found in list."
+ clif->message(fd, msg_txt(872)); //"Name not found in list."
return;
}
@@ -14162,7 +14162,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
} else { //friend not online -- ask char server to delete from his friendlist
if(!chrif->removefriend(char_id,sd->status.char_id)) { // char-server offline, abort
- clif->message(fd, msg_txt(673)); //"This action can't be performed at the moment. Please try again later."
+ clif->message(fd, msg_txt(873)); //"This action can't be performed at the moment. Please try again later."
return;
}
}
@@ -14175,7 +14175,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
memcpy(&sd->status.friends[j-1], &sd->status.friends[j], sizeof(sd->status.friends[0]));
memset(&sd->status.friends[MAX_FRIENDS-1], 0, sizeof(sd->status.friends[MAX_FRIENDS-1]));
- clif->message(fd, msg_txt(674)); //"Friend removed"
+ clif->message(fd, msg_txt(874)); //"Friend removed"
WFIFOHEAD(fd,packet_len(0x20a));
WFIFOW(fd,0) = 0x20a;
@@ -15032,7 +15032,7 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd)
}
if( DIFF_TICK(sd->cansendmail_tick, timer->gettick()) > 0 ) {
- clif->message(sd->fd,msg_txt(675)); //"Cannot send mails too fast!!."
+ clif->message(sd->fd,msg_txt(875)); //"Cannot send mails too fast!!."
clif->mail_send(fd, true); // fail
return;
}
diff --git a/src/map/guild.c b/src/map/guild.c
index 27c3b71a9..562878fb8 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -1423,7 +1423,7 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
if(map->agit_flag || map->agit2_flag) {
// Disable alliance creation during woe [Valaris]
- clif->message(sd->fd,msg_txt(676)); //"Alliances cannot be made during Guild Wars!"
+ clif->message(sd->fd,msg_txt(876)); //"Alliances cannot be made during Guild Wars!"
return 0;
}
@@ -1540,7 +1540,7 @@ int guild_delalliance(struct map_session_data *sd,int guild_id,int flag) {
if(map->agit_flag || map->agit2_flag) {
// Disable alliance breaking during woe [Valaris]
- clif->message(sd->fd,msg_txt(677)); //"Alliances cannot be broken during Guild Wars!"
+ clif->message(sd->fd,msg_txt(877)); //"Alliances cannot be broken during Guild Wars!"
return 0;
}
@@ -1822,12 +1822,12 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
strcpy(g->master, g->member[0].name);
if (g->member[pos].sd && g->member[pos].sd->fd) {
- clif->message(g->member[pos].sd->fd, msg_txt(678)); //"You no longer are the Guild Master."
+ clif->message(g->member[pos].sd->fd, msg_txt(878)); //"You no longer are the Guild Master."
g->member[pos].sd->state.gmaster_flag = 0;
}
if (g->member[0].sd && g->member[0].sd->fd) {
- clif->message(g->member[0].sd->fd, msg_txt(679)); //"You have become the Guild Master!"
+ clif->message(g->member[0].sd->fd, msg_txt(879)); //"You have become the Guild Master!"
g->member[0].sd->state.gmaster_flag = 1;
//Block his skills for 5 minutes to prevent abuse.
guild->block_skill(g->member[0].sd, 300000);
diff --git a/src/map/map.c b/src/map/map.c
index 838a88f01..a7e83cae3 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -5680,7 +5680,7 @@ int do_init(int argc, char *argv[])
}
battle->config_read(map->BATTLE_CONF_FILENAME);
- atcommand->msg_read(map->MSG_CONF_NAME);
+ atcommand->msg_read(map->MSG_CONF_NAME, false);
map->inter_config_read(map->INTER_CONF_NAME);
logs->config_read(map->LOG_CONF_NAME);
}
diff --git a/src/map/mob.c b/src/map/mob.c
index ff63048d1..8f12d4b1b 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -146,7 +146,7 @@ void mvptomb_create(struct mob_data *md, char *killer, time_t time)
nd->bl.y = md->bl.y;
nd->bl.type = BL_NPC;
- safestrncpy(nd->name, msg_txt(656), sizeof(nd->name));
+ safestrncpy(nd->name, msg_txt(856), sizeof(nd->name)); // "Tomb"
nd->class_ = 565;
nd->speed = 200;
diff --git a/src/map/npc.c b/src/map/npc.c
index 36efc7267..fa2fa1ead 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -1115,28 +1115,27 @@ int npc_globalmessage(const char* name, const char* mes)
}
// MvP tomb [GreenBox]
-void run_tomb(struct map_session_data* sd, struct npc_data* nd)
-{
+void run_tomb(struct map_session_data* sd, struct npc_data* nd) {
char buffer[200];
- char time[10];
+ char time[10];
- strftime(time, sizeof(time), "%H:%M", localtime(&nd->u.tomb.kill_time));
+ strftime(time, sizeof(time), "%H:%M", localtime(&nd->u.tomb.kill_time));
// TODO: Find exact color?
- snprintf(buffer, sizeof(buffer), msg_txt(657), nd->u.tomb.md->db->name);
- clif->scriptmes(sd, nd->bl.id, buffer);
+ snprintf(buffer, sizeof(buffer), msg_txt(857), nd->u.tomb.md->db->name); // "[ ^EE0000%s^000000 ]"
+ clif->scriptmes(sd, nd->bl.id, buffer);
- clif->scriptmes(sd, nd->bl.id, msg_txt(658));
+ clif->scriptmes(sd, nd->bl.id, msg_txt(858)); // "Has met its demise"
- snprintf(buffer, sizeof(buffer), msg_txt(659), time);
- clif->scriptmes(sd, nd->bl.id, buffer);
+ snprintf(buffer, sizeof(buffer), msg_txt(859), time); // "Time of death : ^EE0000%s^000000"
+ clif->scriptmes(sd, nd->bl.id, buffer);
- clif->scriptmes(sd, nd->bl.id, msg_txt(660));
+ clif->scriptmes(sd, nd->bl.id, msg_txt(860)); // "Defeated by"
- snprintf(buffer, sizeof(buffer), msg_txt(661), nd->u.tomb.killer_name[0] ? nd->u.tomb.killer_name : "Unknown");
- clif->scriptmes(sd, nd->bl.id, buffer);
+ snprintf(buffer, sizeof(buffer), msg_txt(861), nd->u.tomb.killer_name[0] ? nd->u.tomb.killer_name : msg_txt(15)); // "[^EE0000%s^000000]" / "Unknown"
+ clif->scriptmes(sd, nd->bl.id, buffer);
- clif->scriptclose(sd, nd->bl.id);
+ clif->scriptclose(sd, nd->bl.id);
}
/*==========================================
diff --git a/src/map/pc.c b/src/map/pc.c
index 284a459e7..31aac3445 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4221,9 +4221,8 @@ int pc_isUseitem(struct map_session_data *sd,int n)
case ITEMID_WOB_RACHEL: // Red Butterfly Wing
case ITEMID_WOB_LOCAL: // Blue Butterfly Wing
case ITEMID_SIEGE_TELEPORT_SCROLL:
- if( sd->duel_group && !battle_config.duel_allow_teleport )
- {
- clif->message(sd->fd, msg_txt(663));
+ if( sd->duel_group && !battle_config.duel_allow_teleport ) {
+ clif->message(sd->fd, msg_txt(863)); // "Duel: Can't use this item in duel."
return 0;
}
if( nameid != ITEMID_WING_OF_FLY && nameid != ITEMID_GIANT_FLY_WING && map->list[sd->bl.m].flag.noreturn )
@@ -5557,107 +5556,107 @@ int pc_mapid2jobid(unsigned short class_, int sex)
const char* job_name(int class_)
{
switch (class_) {
- case JOB_NOVICE:
- case JOB_SWORDMAN:
- case JOB_MAGE:
- case JOB_ARCHER:
- case JOB_ACOLYTE:
- case JOB_MERCHANT:
- case JOB_THIEF:
+ case JOB_NOVICE: // 550
+ case JOB_SWORDMAN: // 551
+ case JOB_MAGE: // 552
+ case JOB_ARCHER: // 553
+ case JOB_ACOLYTE: // 554
+ case JOB_MERCHANT: // 555
+ case JOB_THIEF: // 556
return msg_txt(550 - JOB_NOVICE+class_);
- case JOB_KNIGHT:
- case JOB_PRIEST:
- case JOB_WIZARD:
- case JOB_BLACKSMITH:
- case JOB_HUNTER:
- case JOB_ASSASSIN:
+ case JOB_KNIGHT: // 557
+ case JOB_PRIEST: // 558
+ case JOB_WIZARD: // 559
+ case JOB_BLACKSMITH: // 560
+ case JOB_HUNTER: // 561
+ case JOB_ASSASSIN: // 562
return msg_txt(557 - JOB_KNIGHT+class_);
case JOB_KNIGHT2:
return msg_txt(557);
- case JOB_CRUSADER:
- case JOB_MONK:
- case JOB_SAGE:
- case JOB_ROGUE:
- case JOB_ALCHEMIST:
- case JOB_BARD:
- case JOB_DANCER:
+ case JOB_CRUSADER: // 563
+ case JOB_MONK: // 564
+ case JOB_SAGE: // 565
+ case JOB_ROGUE: // 566
+ case JOB_ALCHEMIST: // 567
+ case JOB_BARD: // 568
+ case JOB_DANCER: // 569
return msg_txt(563 - JOB_CRUSADER+class_);
case JOB_CRUSADER2:
return msg_txt(563);
- case JOB_WEDDING:
- case JOB_SUPER_NOVICE:
- case JOB_GUNSLINGER:
- case JOB_NINJA:
- case JOB_XMAS:
+ case JOB_WEDDING: // 570
+ case JOB_SUPER_NOVICE: // 571
+ case JOB_GUNSLINGER: // 572
+ case JOB_NINJA: // 573
+ case JOB_XMAS: // 574
return msg_txt(570 - JOB_WEDDING+class_);
case JOB_SUMMER:
return msg_txt(621);
- case JOB_NOVICE_HIGH:
- case JOB_SWORDMAN_HIGH:
- case JOB_MAGE_HIGH:
- case JOB_ARCHER_HIGH:
- case JOB_ACOLYTE_HIGH:
- case JOB_MERCHANT_HIGH:
- case JOB_THIEF_HIGH:
+ case JOB_NOVICE_HIGH: // 575
+ case JOB_SWORDMAN_HIGH: // 576
+ case JOB_MAGE_HIGH: // 577
+ case JOB_ARCHER_HIGH: // 578
+ case JOB_ACOLYTE_HIGH: // 579
+ case JOB_MERCHANT_HIGH: // 580
+ case JOB_THIEF_HIGH: // 581
return msg_txt(575 - JOB_NOVICE_HIGH+class_);
- case JOB_LORD_KNIGHT:
- case JOB_HIGH_PRIEST:
- case JOB_HIGH_WIZARD:
- case JOB_WHITESMITH:
- case JOB_SNIPER:
- case JOB_ASSASSIN_CROSS:
+ case JOB_LORD_KNIGHT: // 582
+ case JOB_HIGH_PRIEST: // 583
+ case JOB_HIGH_WIZARD: // 584
+ case JOB_WHITESMITH: // 585
+ case JOB_SNIPER: // 586
+ case JOB_ASSASSIN_CROSS: // 587
return msg_txt(582 - JOB_LORD_KNIGHT+class_);
case JOB_LORD_KNIGHT2:
return msg_txt(582);
- case JOB_PALADIN:
- case JOB_CHAMPION:
- case JOB_PROFESSOR:
- case JOB_STALKER:
- case JOB_CREATOR:
- case JOB_CLOWN:
- case JOB_GYPSY:
+ case JOB_PALADIN: // 588
+ case JOB_CHAMPION: // 589
+ case JOB_PROFESSOR: // 590
+ case JOB_STALKER: // 591
+ case JOB_CREATOR: // 592
+ case JOB_CLOWN: // 593
+ case JOB_GYPSY: // 594
return msg_txt(588 - JOB_PALADIN + class_);
case JOB_PALADIN2:
return msg_txt(588);
- case JOB_BABY:
- case JOB_BABY_SWORDMAN:
- case JOB_BABY_MAGE:
- case JOB_BABY_ARCHER:
- case JOB_BABY_ACOLYTE:
- case JOB_BABY_MERCHANT:
- case JOB_BABY_THIEF:
+ case JOB_BABY: // 595
+ case JOB_BABY_SWORDMAN: // 596
+ case JOB_BABY_MAGE: // 597
+ case JOB_BABY_ARCHER: // 598
+ case JOB_BABY_ACOLYTE: // 599
+ case JOB_BABY_MERCHANT: // 600
+ case JOB_BABY_THIEF: // 601
return msg_txt(595 - JOB_BABY + class_);
- case JOB_BABY_KNIGHT:
- case JOB_BABY_PRIEST:
- case JOB_BABY_WIZARD:
- case JOB_BABY_BLACKSMITH:
- case JOB_BABY_HUNTER:
- case JOB_BABY_ASSASSIN:
+ case JOB_BABY_KNIGHT: // 602
+ case JOB_BABY_PRIEST: // 603
+ case JOB_BABY_WIZARD: // 604
+ case JOB_BABY_BLACKSMITH: // 605
+ case JOB_BABY_HUNTER: // 606
+ case JOB_BABY_ASSASSIN: // 607
return msg_txt(602 - JOB_BABY_KNIGHT + class_);
case JOB_BABY_KNIGHT2:
return msg_txt(602);
- case JOB_BABY_CRUSADER:
- case JOB_BABY_MONK:
- case JOB_BABY_SAGE:
- case JOB_BABY_ROGUE:
- case JOB_BABY_ALCHEMIST:
- case JOB_BABY_BARD:
- case JOB_BABY_DANCER:
+ case JOB_BABY_CRUSADER: // 608
+ case JOB_BABY_MONK: // 609
+ case JOB_BABY_SAGE: // 610
+ case JOB_BABY_ROGUE: // 611
+ case JOB_BABY_ALCHEMIST: // 612
+ case JOB_BABY_BARD: // 613
+ case JOB_BABY_DANCER: // 614
return msg_txt(608 - JOB_BABY_CRUSADER + class_);
case JOB_BABY_CRUSADER2:
@@ -5674,74 +5673,82 @@ const char* job_name(int class_)
case JOB_SOUL_LINKER:
return msg_txt(618);
- case JOB_GANGSI:
- case JOB_DEATH_KNIGHT:
- case JOB_DARK_COLLECTOR:
+ case JOB_GANGSI: // 622
+ case JOB_DEATH_KNIGHT: // 623
+ case JOB_DARK_COLLECTOR: // 624
return msg_txt(622 - JOB_GANGSI+class_);
- case JOB_RUNE_KNIGHT:
- case JOB_WARLOCK:
- case JOB_RANGER:
- case JOB_ARCH_BISHOP:
- case JOB_MECHANIC:
- case JOB_GUILLOTINE_CROSS:
+ case JOB_RUNE_KNIGHT: // 625
+ case JOB_WARLOCK: // 626
+ case JOB_RANGER: // 627
+ case JOB_ARCH_BISHOP: // 628
+ case JOB_MECHANIC: // 629
+ case JOB_GUILLOTINE_CROSS: // 630
return msg_txt(625 - JOB_RUNE_KNIGHT+class_);
- case JOB_RUNE_KNIGHT_T:
- case JOB_WARLOCK_T:
- case JOB_RANGER_T:
- case JOB_ARCH_BISHOP_T:
- case JOB_MECHANIC_T:
- case JOB_GUILLOTINE_CROSS_T:
- return msg_txt(681 - JOB_RUNE_KNIGHT_T+class_);
-
- case JOB_ROYAL_GUARD:
- case JOB_SORCERER:
- case JOB_MINSTREL:
- case JOB_WANDERER:
- case JOB_SURA:
- case JOB_GENETIC:
- case JOB_SHADOW_CHASER:
+ case JOB_RUNE_KNIGHT_T: // 656
+ case JOB_WARLOCK_T: // 657
+ case JOB_RANGER_T: // 658
+ case JOB_ARCH_BISHOP_T: // 659
+ case JOB_MECHANIC_T: // 660
+ case JOB_GUILLOTINE_CROSS_T: // 661
+ return msg_txt(656 - JOB_RUNE_KNIGHT_T+class_);
+
+ case JOB_ROYAL_GUARD: // 631
+ case JOB_SORCERER: // 632
+ case JOB_MINSTREL: // 633
+ case JOB_WANDERER: // 634
+ case JOB_SURA: // 635
+ case JOB_GENETIC: // 636
+ case JOB_SHADOW_CHASER: // 637
return msg_txt(631 - JOB_ROYAL_GUARD+class_);
- case JOB_ROYAL_GUARD_T:
- case JOB_SORCERER_T:
- case JOB_MINSTREL_T:
- case JOB_WANDERER_T:
- case JOB_SURA_T:
- case JOB_GENETIC_T:
- case JOB_SHADOW_CHASER_T:
- return msg_txt(687 - JOB_ROYAL_GUARD_T+class_);
+ case JOB_ROYAL_GUARD_T: // 662
+ case JOB_SORCERER_T: // 663
+ case JOB_MINSTREL_T: // 664
+ case JOB_WANDERER_T: // 665
+ case JOB_SURA_T: // 666
+ case JOB_GENETIC_T: // 667
+ case JOB_SHADOW_CHASER_T: // 668
+ return msg_txt(662 - JOB_ROYAL_GUARD_T+class_);
case JOB_RUNE_KNIGHT2:
- case JOB_RUNE_KNIGHT_T2:
return msg_txt(625);
+ case JOB_RUNE_KNIGHT_T2:
+ return msg_txt(656);
+
case JOB_ROYAL_GUARD2:
- case JOB_ROYAL_GUARD_T2:
return msg_txt(631);
+ case JOB_ROYAL_GUARD_T2:
+ return msg_txt(662);
+
case JOB_RANGER2:
- case JOB_RANGER_T2:
return msg_txt(627);
+ case JOB_RANGER_T2:
+ return msg_txt(658);
+
case JOB_MECHANIC2:
- case JOB_MECHANIC_T2:
return msg_txt(629);
- case JOB_BABY_RUNE:
- case JOB_BABY_WARLOCK:
- case JOB_BABY_RANGER:
- case JOB_BABY_BISHOP:
- case JOB_BABY_MECHANIC:
- case JOB_BABY_CROSS:
- case JOB_BABY_GUARD:
- case JOB_BABY_SORCERER:
- case JOB_BABY_MINSTREL:
- case JOB_BABY_WANDERER:
- case JOB_BABY_SURA:
- case JOB_BABY_GENETIC:
- case JOB_BABY_CHASER:
+ case JOB_MECHANIC_T2:
+ return msg_txt(660);
+
+ case JOB_BABY_RUNE: // 638
+ case JOB_BABY_WARLOCK: // 639
+ case JOB_BABY_RANGER: // 640
+ case JOB_BABY_BISHOP: // 641
+ case JOB_BABY_MECHANIC: // 642
+ case JOB_BABY_CROSS: // 643
+ case JOB_BABY_GUARD: // 644
+ case JOB_BABY_SORCERER: // 645
+ case JOB_BABY_MINSTREL: // 646
+ case JOB_BABY_WANDERER: // 647
+ case JOB_BABY_SURA: // 648
+ case JOB_BABY_GENETIC: // 649
+ case JOB_BABY_CHASER: // 650
return msg_txt(638 - JOB_BABY_RUNE+class_);
case JOB_BABY_RUNE2:
@@ -5756,19 +5763,19 @@ const char* job_name(int class_)
case JOB_BABY_MECHANIC2:
return msg_txt(642);
- case JOB_SUPER_NOVICE_E:
- case JOB_SUPER_BABY_E:
+ case JOB_SUPER_NOVICE_E: // 651
+ case JOB_SUPER_BABY_E: // 652
return msg_txt(651 - JOB_SUPER_NOVICE_E+class_);
- case JOB_KAGEROU:
- case JOB_OBORO:
+ case JOB_KAGEROU: // 653
+ case JOB_OBORO: // 654
return msg_txt(653 - JOB_KAGEROU+class_);
case JOB_REBELLION:
return msg_txt(655);
default:
- return msg_txt(656);
+ return msg_txt(620); // "Unknown Job"
}
}
diff --git a/src/map/script.c b/src/map/script.c
index 03ebb80a3..54ca37e9f 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -12732,7 +12732,7 @@ BUILDIN(recovery)
status->revive(&sd->bl, 100, 100);
else
status_percent_heal(&sd->bl, 100, 100);
- clif->message(sd->fd,msg_txt(680));
+ clif->message(sd->fd,msg_txt(880)); // "You have been recovered!"
}
mapit->free(iter);
return true;
diff --git a/src/map/skill.c b/src/map/skill.c
index 37ee297ca..064b18bdf 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -512,7 +512,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
if( npc->isnear(&sd->bl) ) {
// uncomment for more verbose message.
//char output[150];
- //sprintf(output, msg_txt(662), battle_config.min_npc_vendchat_distance);
+ //sprintf(output, msg_txt(862), battle_config.min_npc_vendchat_distance); // "You're too close to a NPC, you must be at least %d cells away from any NPC."
//clif->message(sd->fd, output);
clif->skill_fail(sd,skill_id,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
return 1;
@@ -5503,7 +5503,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd)
clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
if (skill->break_equip(bl, EQP_WEAPON, 10000, BCT_PARTY) && sd && sd != dstsd)
- clif->message(sd->fd, msg_txt(669));
+ clif->message(sd->fd, msg_txt(869)); // "You broke the target's weapon."
}
break;