diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/char/inter.c | 281 | ||||
-rw-r--r-- | src/map/atcommand.c | 101 | ||||
-rw-r--r-- | src/map/atcommand.h | 2 | ||||
-rw-r--r-- | src/map/chat.c | 2 | ||||
-rw-r--r-- | src/map/chrif.c | 6 | ||||
-rw-r--r-- | src/map/clif.c | 18 | ||||
-rw-r--r-- | src/map/guild.c | 8 | ||||
-rw-r--r-- | src/map/map.c | 2 | ||||
-rw-r--r-- | src/map/mob.c | 2 | ||||
-rw-r--r-- | src/map/npc.c | 25 | ||||
-rw-r--r-- | src/map/pc.c | 251 | ||||
-rw-r--r-- | src/map/script.c | 2 | ||||
-rw-r--r-- | src/map/skill.c | 4 |
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; |