diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/achievement.c | 6 | ||||
-rw-r--r-- | src/map/clif.c | 46 | ||||
-rw-r--r-- | src/map/clif.h | 11 | ||||
-rw-r--r-- | src/map/guild.c | 3 | ||||
-rw-r--r-- | src/map/itemdb.c | 24 | ||||
-rw-r--r-- | src/map/map.c | 10 | ||||
-rw-r--r-- | src/map/messages_main.h | 158 | ||||
-rw-r--r-- | src/map/messages_re.h | 158 | ||||
-rw-r--r-- | src/map/messages_zero.h | 158 | ||||
-rw-r--r-- | src/map/mob.c | 41 | ||||
-rw-r--r-- | src/map/mob.h | 1 | ||||
-rw-r--r-- | src/map/packets.h | 16 | ||||
-rw-r--r-- | src/map/packets_keys_main.h | 10 | ||||
-rw-r--r-- | src/map/packets_keys_zero.h | 7 | ||||
-rw-r--r-- | src/map/packets_shuffle_main.h | 10 | ||||
-rw-r--r-- | src/map/packets_shuffle_re.h | 9 | ||||
-rw-r--r-- | src/map/packets_shuffle_zero.h | 7 | ||||
-rw-r--r-- | src/map/packets_struct.h | 15 | ||||
-rw-r--r-- | src/map/pc.c | 15 | ||||
-rw-r--r-- | src/map/script.c | 3 | ||||
-rw-r--r-- | src/map/skill.c | 2 | ||||
-rw-r--r-- | src/map/status.c | 6 | ||||
-rw-r--r-- | src/map/stylist.c | 3 |
23 files changed, 637 insertions, 82 deletions
diff --git a/src/map/achievement.c b/src/map/achievement.c index 7ab80e183..c2ebb5fdd 100644 --- a/src/map/achievement.c +++ b/src/map/achievement.c @@ -1099,7 +1099,8 @@ static bool achievement_get_rewards(struct map_session_data *sd, const struct ac */ static void achievement_readdb_ranks(void) { - const char *filename = "db/achievement_rank_db.conf"; + char filename[256]; + libconfig->format_db_path("achievement_rank_db.conf", filename, sizeof(filename)); struct config_t ar_conf = { 0 }; struct config_setting_t *ardb = NULL, *conf = NULL; int entry = 0; @@ -1777,7 +1778,8 @@ static void achievement_readdb_additional_fields(const struct config_setting_t * */ static void achievement_readb(void) { - const char *filename = "db/"DBPATH"achievement_db.conf"; + char filename[256]; + libconfig->format_db_path(DBPATH"achievement_db.conf", filename, sizeof(filename)); struct config_t ach_conf = { 0 }; struct config_setting_t *achdb = NULL, *conf = NULL; int entry = 0, count = 0; diff --git a/src/map/clif.c b/src/map/clif.c index 3abbc2c36..5c86edcaa 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -12377,6 +12377,42 @@ static void clif_parse_RemoveOption(int fd, struct map_session_data *sd) } } +static void clif_parse_reqGearOff(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); +static void clif_parse_reqGearOff(int fd, struct map_session_data *sd) +{ +#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709 + const struct PACKET_CZ_REQ_MOUNTOFF *p = RFIFOP(fd, 0); + switch (p->action) { + case REMOVE_MOUNT_DRAGON: + if (pc_isridingdragon(sd)) + pc->setoption(sd, sd->sc.option &~ OPTION_DRAGON); + break; + case REMOVE_MOUNT_MADO: + if (pc_ismadogear(sd)) + pc->setoption(sd, sd->sc.option &~ OPTION_MADOGEAR); + break; + case REMOVE_MOUNT_PECO: + if (pc_isridingpeco(sd)) + pc->setoption(sd, sd->sc.option &~ OPTION_RIDING); + break; + case REMOVE_MOUNT_FALCON: + if (pc_isfalcon(sd)) + pc->setoption(sd, sd->sc.option &~ OPTION_FALCON); + break; + case REMOVE_MOUNT_CART: + // this packet exists in clients with only new carts [4144] + if (sd->sc.data[SC_PUSH_CART]) + pc->setcart(sd, 0); + break; + case REMOVE_MOUNT_0: + case REMOVE_MOUNT_2: + default: + ShowError("Unknown action in remove mount packet: %d\n", p->action); + break; + } +#endif +} + static void clif_parse_ChangeCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); /// Request to change cart's visual look (CZ_REQ_CHANGECART). /// 01af <num>.W @@ -19794,7 +19830,8 @@ static void clif_cashshop_db(void) { struct config_t cashshop_conf; struct config_setting_t *cashshop = NULL, *cats = NULL; - const char *config_filename = "db/cashshop_db.conf"; // FIXME hardcoded name + char config_filename[256]; + libconfig->format_db_path("cashshop_db.conf", config_filename, sizeof(config_filename)); int i, item_count_t = 0; for( i = 0; i < CASHSHOP_TAB_MAX; i++ ) { CREATE(clif->cs.data[i], struct hCSData *, 1); @@ -21065,7 +21102,8 @@ static bool clif_parse_roulette_db(void) { struct config_t roulette_conf; struct config_setting_t *roulette = NULL, *levels = NULL; - const char *config_filename = "db/roulette_db.conf"; // FIXME hardcoded name + char config_filename[256]; + libconfig->format_db_path("roulette_db.conf", config_filename, sizeof(config_filename)); int i, j, item_count_t = 0; for( i = 0; i < MAX_ROULETTE_LEVEL; i++ ) { @@ -22549,7 +22587,8 @@ static bool clif_parse_attendance_db(void) { struct config_t attendance_conf; struct config_setting_t *attendance = NULL, *it = NULL; - const char *config_filename = "db/attendance_db.conf"; // FIXME hardcoded name + char config_filename[256]; + libconfig->format_db_path("attendance_db.conf", config_filename, sizeof(config_filename)); int i = 0; if (!libconfig->load_file(&attendance_conf, config_filename)) @@ -24680,4 +24719,5 @@ void clif_defaults(void) clif->lapineDdukDdak_result = clif_lapineDdukDdak_result; clif->plapineDdukDdak_ack = clif_parse_lapineDdukDdak_ack; clif->plapineDdukDdak_close = clif_parse_lapineDdukDdak_close; + clif->pReqGearOff = clif_parse_reqGearOff; } diff --git a/src/map/clif.h b/src/map/clif.h index 0dfc00c01..eb5cb36bd 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -733,6 +733,16 @@ enum lapineddukddak_result { LAPINEDDKUKDDAK_INVALID_ITEM = 7, }; +enum removeGear_flag { + REMOVE_MOUNT_0 = 0, // unused + REMOVE_MOUNT_DRAGON = 1, + REMOVE_MOUNT_2 = 2, // unused + REMOVE_MOUNT_MADO = 3, + REMOVE_MOUNT_PECO = 4, + REMOVE_MOUNT_FALCON = 5, + REMOVE_MOUNT_CART = 6, +}; + /** * Clif.c Interface **/ @@ -1670,6 +1680,7 @@ struct clif_interface { bool (*lapineDdukDdak_result) (struct map_session_data *sd, enum lapineddukddak_result result); void (*plapineDdukDdak_ack) (int fd, struct map_session_data *sd); void (*plapineDdukDdak_close) (int fd, struct map_session_data *sd); + void (*pReqGearOff) (int fd, struct map_session_data *sd); }; #ifdef HERCULES_CORE diff --git a/src/map/guild.c b/src/map/guild.c index e270bf01e..2fcbe02e7 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -152,7 +152,8 @@ static bool guild_read_castledb_libconfig(void) { struct config_t castle_conf; struct config_setting_t *castle_db = NULL, *it = NULL; - const char *config_filename = "db/castle_db.conf"; // FIXME hardcoded name + char config_filename[256]; + libconfig->format_db_path("castle_db.conf", config_filename, sizeof(config_filename)); int i = 0; if (libconfig->load_file(&castle_conf, config_filename) == 0) diff --git a/src/map/itemdb.c b/src/map/itemdb.c index a97325e57..5dc3d9317 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -846,11 +846,8 @@ static void itemdb_read_groups(void) { struct config_t item_group_conf; struct config_setting_t *itg = NULL, *it = NULL; -#ifdef RENEWAL - const char *config_filename = "db/re/item_group.conf"; // FIXME hardcoded name -#else - const char *config_filename = "db/pre-re/item_group.conf"; // FIXME hardcoded name -#endif + char config_filename[256]; + libconfig->format_db_path(DBPATH"item_group.conf", config_filename, sizeof(config_filename)); const char *itname; int i = 0, count = 0, c; unsigned int *gsize = NULL; @@ -1144,11 +1141,8 @@ static void itemdb_read_packages(void) { struct config_t item_packages_conf; struct config_setting_t *itg = NULL, *it = NULL, *t = NULL; -#ifdef RENEWAL - const char *config_filename = "db/re/item_packages.conf"; // FIXME hardcoded name -#else - const char *config_filename = "db/pre-re/item_packages.conf"; // FIXME hardcoded name -#endif + char config_filename[256]; + libconfig->format_db_path(DBPATH"item_packages.conf", config_filename, sizeof(config_filename)); const char *itname; int i = 0, count = 0, c = 0, highest_gcount = 0; unsigned int *must = NULL, *random = NULL, *rgroup = NULL, **rgroups = NULL; @@ -1393,7 +1387,8 @@ static void itemdb_read_options(void) struct config_t item_options_db; struct config_setting_t *ito = NULL, *conf = NULL; int index = 0, count = 0; - const char *filepath = "db/item_options.conf"; + char filepath[256]; + libconfig->format_db_path("item_options.conf", filepath, sizeof(filepath)); VECTOR_DECL(int) duplicate_id; if (!libconfig->load_file(&item_options_db, filepath)) @@ -1494,11 +1489,8 @@ static void itemdb_read_chains(void) { struct config_t item_chain_conf; struct config_setting_t *itc = NULL; -#ifdef RENEWAL - const char *config_filename = "db/re/item_chain.conf"; // FIXME hardcoded name -#else - const char *config_filename = "db/pre-re/item_chain.conf"; // FIXME hardcoded name -#endif + char config_filename[256]; + libconfig->format_db_path(DBPATH"item_chain.conf", config_filename, sizeof(config_filename)); int i = 0, count = 0; if (!libconfig->load_file(&item_chain_conf, config_filename)) diff --git a/src/map/map.c b/src/map/map.c index 957098dd4..50ad9a5cd 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -4054,6 +4054,7 @@ static bool map_config_read_database(const char *filename, struct config_t *conf return false; } libconfig->setting_lookup_mutable_string(setting, "db_path", map->db_path, sizeof(map->db_path)); + libconfig->set_db_path(map->db_path); libconfig->setting_lookup_int(setting, "save_settings", &map->save_settings); if (libconfig->setting_lookup_int(setting, "autosave_time", &map->autosave_interval) == CONFIG_TRUE) { @@ -5573,12 +5574,8 @@ static void read_map_zone_db(void) { struct config_t map_zone_db; struct config_setting_t *zones = NULL; - /* TODO: #ifndef required for re/pre-re */ -#ifdef RENEWAL - const char *config_filename = "db/re/map_zone_db.conf"; // FIXME hardcoded name -#else - const char *config_filename = "db/pre-re/map_zone_db.conf"; // FIXME hardcoded name -#endif + char config_filename[256]; + libconfig->format_db_path(DBPATH"map_zone_db.conf", config_filename, sizeof(config_filename)); if (!libconfig->load_file(&map_zone_db, config_filename)) return; @@ -6776,6 +6773,7 @@ void map_defaults(void) map->extra_scripts_count = 0; sprintf(map->db_path ,"db"); + libconfig->set_db_path(map->db_path); sprintf(map->help_txt ,"conf/help.txt"); sprintf(map->charhelp_txt ,"conf/charhelp.txt"); diff --git a/src/map/messages_main.h b/src/map/messages_main.h index 69fc34ee9..eb33b41ad 100644 --- a/src/map/messages_main.h +++ b/src/map/messages_main.h @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20191016 +Latest version: 20191113 */ enum clif_messages { @@ -632,9 +632,11 @@ Fire Wind */ MSG_WIND = 0x76, -/*20031028 to latest +/*20031028 to 20191023 같은종류의 장비아이템은 한번에 한개만 살 수 있습니다. Please avoid buying 2 of the same items at one time. +20191030 to latest +같은 종류의 장비 아이템은 한 번에 한 개만 살 수 있습니다. */ MSG_EQUIPITEM_OLNY_ONE = 0x77, /*20031028 to latest @@ -21793,8 +21795,10 @@ AP가 부족합니다. 제련도가 조합에 필요한 요구치보다 높습니다. */ MSG_ID_E3D = 0xe3d, -/*20190731 to latest +/*20190731 to 20191107 '카드가 끼워져있거나 인챈트 되어 있습니다. +20191113 to latest +카드가 끼워져있거나 인챈트 되어 있습니다. */ MSG_ID_E3E = 0xe3e, /*20190731 to latest @@ -22010,6 +22014,154 @@ VTC 인증에 실패하였습니다. */ MSG_ID_E6A = 0xe6a, #endif +#if PACKETVER >= 20191030 +/*20191030 to latest +같은 아이템은 %d개까지 소유할 수 있습니다. +*/ + MSG_ID_E6B = 0xe6b, +/*20191030 to latest +같은 아이템은 한 번에 %d개까지 교환할 수 있습니다. +*/ + MSG_ID_E6C = 0xe6c, +/*20191030 to latest +해당 로덱스는 "%s"서버에서 열 수 있습니다. +*/ + MSG_ID_E6D = 0xe6d, +/*20191030 to latest +[공지]편지함의 모든 메일을 삭제하시겠습니까 ? +(해당 "%s"서버의 메일만 삭제됩니다.) +*/ + MSG_ID_E6E = 0xe6e, +/*20191030 to latest +[공지]편지함의 모든 첨부 물품을 받으시겠습니까? +(해당 "%s"서버의 메일의 물품만 받으실 수 있습니다.) +*/ + MSG_ID_E6F = 0xe6f, +/*20191030 to latest +해당 메일은 "%s"서버에서만 삭제 가능합니다. +*/ + MSG_ID_E70 = 0xe70, +/*20191030 to latest +해당 메일은 "%s"서버에서만 물품 받기가 가능합니다. +*/ + MSG_ID_E71 = 0xe71, +/*20191030 to latest +해당 메일은 "%s"서버에서만 내용읽기가 가능합니다. +*/ + MSG_ID_E72 = 0xe72, +/*20191030 to latest +합계 : %d z +*/ + MSG_ID_E73 = 0xe73, +/*20191030 to latest +메세지 +*/ + MSG_ID_E74 = 0xe74, +#endif +#if PACKETVER >= 20191106 +/*20191106 to latest +구매상점 개설 중에는 개인상점의 물건을 구입할 수 없습니다. +*/ + MSG_ID_E75 = 0xe75, +#endif +#if PACKETVER >= 20191113 +/*20191113 to latest +등급강화가 성공적으로 되었습니다. +*/ + MSG_ID_E76 = 0xe76, +/*20191113 to latest +등급강화가 실패하였습니다. +*/ + MSG_ID_E77 = 0xe77, +/*20191113 to latest +등급 수치가 하향 조정 되었습니다. +*/ + MSG_ID_E78 = 0xe78, +/*20191113 to latest +장비가 파괴되었습니다. +*/ + MSG_ID_E79 = 0xe79, +/*20191113 to latest +장비가 보호되었습니다. +*/ + MSG_ID_E7A = 0xe7a, +/*20191113 to latest +재료가 선택되지 않았습니다. +*/ + MSG_ID_E7B = 0xe7b, +/*20191113 to latest +재료가 부족합니다. +*/ + MSG_ID_E7C = 0xe7c, +/*20191113 to latest +소지 금액이 부족합니다. +*/ + MSG_ID_E7D = 0xe7d, +/*20191113 to latest +아이템 공간이 부족합니다. +*/ + MSG_ID_E7E = 0xe7e, +/*20191113 to latest +장비가 보호되고 있습니다. +*/ + MSG_ID_E7F = 0xe7f, +/*20191113 to latest +장비가 파괴될 수 있습니다. +*/ + MSG_ID_E80 = 0xe80, +/*20191113 to latest +등급강화 실패 시 등급이 내려갑니다. +*/ + MSG_ID_E81 = 0xe81, +/*20191113 to latest +등급강화 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다. +*/ + MSG_ID_E82 = 0xe82, +/*20191113 to latest +등급강화 중에는 로덱스를 사용할 수 없습니다. +*/ + MSG_ID_E83 = 0xe83, +/*20191113 to latest +등급강화 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_E84 = 0xe84, +/*20191113 to latest +등급강화 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_E85 = 0xe85, +/*20191113 to latest +[%s] 님이 등급강화를 성공하여, [%s등급 %s] 아이템을 획득하였습니다. +*/ + MSG_ID_E86 = 0xe86, +/*20191113 to latest +[%s] 님이 [%s등급 %s] 아이템의 등급강화에 실패하였습니다. +*/ + MSG_ID_E87 = 0xe87, +/*20191113 to latest +등급 강화가 불가능한 장비입니다. +*/ + MSG_ID_E88 = 0xe88, +/*20191113 to latest +체인지 메테리얼 +*/ + MSG_ID_E89 = 0xe89, +/*20191113 to latest +가나다 정렬 +*/ + MSG_ID_E8A = 0xe8a, +/*20191113 to latest +기본 결과물은 %s %d개 이나, 낮은 확률로 최대 %d개까지 생성될 수 있습니다. +*/ + MSG_ID_E8B = 0xe8b, +/*20191113 to latest +성공 %d%% +*/ + MSG_ID_E8C = 0xe8c, +/*20191113 to latest +아이템 태그는 소지한 아이템만 태그할 수 있습니다. +*/ + MSG_ID_E8D = 0xe8d, +#endif }; #endif /* MAP_MESSAGES_MAIN_H */ diff --git a/src/map/messages_re.h b/src/map/messages_re.h index 84ccecc5e..dd01e1576 100644 --- a/src/map/messages_re.h +++ b/src/map/messages_re.h @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20191016 +Latest version: 20191113 */ enum clif_messages { @@ -625,9 +625,11 @@ Fire Wind */ MSG_WIND = 0x76, -/*20080827 to latest +/*20080827 to 20191023 같은종류의 장비아이템은 한번에 한개만 살 수 있습니다. Please avoid buying 2 of the same items at one time. +20191030 to latest +같은 종류의 장비 아이템은 한 번에 한 개만 살 수 있습니다. */ MSG_EQUIPITEM_OLNY_ONE = 0x77, /*20080827 to latest @@ -21272,8 +21274,10 @@ AP가 부족합니다. 제련도가 조합에 필요한 요구치보다 높습니다. */ MSG_ID_E3D = 0xe3d, -/*20190731 to latest +/*20190731 to 20191107 '카드가 끼워져있거나 인챈트 되어 있습니다. +20191113 to latest +카드가 끼워져있거나 인챈트 되어 있습니다. */ MSG_ID_E3E = 0xe3e, /*20190731 to latest @@ -21487,6 +21491,154 @@ VTC 인증에 실패하였습니다. */ MSG_ID_E6A = 0xe6a, #endif +#if PACKETVER >= 20191030 +/*20191030 to latest +같은 아이템은 %d개까지 소유할 수 있습니다. +*/ + MSG_ID_E6B = 0xe6b, +/*20191030 to latest +같은 아이템은 한 번에 %d개까지 교환할 수 있습니다. +*/ + MSG_ID_E6C = 0xe6c, +/*20191030 to latest +해당 로덱스는 "%s"서버에서 열 수 있습니다. +*/ + MSG_ID_E6D = 0xe6d, +/*20191030 to latest +[공지]편지함의 모든 메일을 삭제하시겠습니까 ? +(해당 "%s"서버의 메일만 삭제됩니다.) +*/ + MSG_ID_E6E = 0xe6e, +/*20191030 to latest +[공지]편지함의 모든 첨부 물품을 받으시겠습니까? +(해당 "%s"서버의 메일의 물품만 받으실 수 있습니다.) +*/ + MSG_ID_E6F = 0xe6f, +/*20191030 to latest +해당 메일은 "%s"서버에서만 삭제 가능합니다. +*/ + MSG_ID_E70 = 0xe70, +/*20191030 to latest +해당 메일은 "%s"서버에서만 물품 받기가 가능합니다. +*/ + MSG_ID_E71 = 0xe71, +/*20191030 to latest +해당 메일은 "%s"서버에서만 내용읽기가 가능합니다. +*/ + MSG_ID_E72 = 0xe72, +/*20191030 to latest +합계 : %d z +*/ + MSG_ID_E73 = 0xe73, +/*20191030 to latest +메세지 +*/ + MSG_ID_E74 = 0xe74, +#endif +#if PACKETVER >= 20191106 +/*20191106 to latest +구매상점 개설 중에는 개인상점의 물건을 구입할 수 없습니다. +*/ + MSG_ID_E75 = 0xe75, +#endif +#if PACKETVER >= 20191113 +/*20191113 to latest +등급강화가 성공적으로 되었습니다. +*/ + MSG_ID_E76 = 0xe76, +/*20191113 to latest +등급강화가 실패하였습니다. +*/ + MSG_ID_E77 = 0xe77, +/*20191113 to latest +등급 수치가 하향 조정 되었습니다. +*/ + MSG_ID_E78 = 0xe78, +/*20191113 to latest +장비가 파괴되었습니다. +*/ + MSG_ID_E79 = 0xe79, +/*20191113 to latest +장비가 보호되었습니다. +*/ + MSG_ID_E7A = 0xe7a, +/*20191113 to latest +재료가 선택되지 않았습니다. +*/ + MSG_ID_E7B = 0xe7b, +/*20191113 to latest +재료가 부족합니다. +*/ + MSG_ID_E7C = 0xe7c, +/*20191113 to latest +소지 금액이 부족합니다. +*/ + MSG_ID_E7D = 0xe7d, +/*20191113 to latest +아이템 공간이 부족합니다. +*/ + MSG_ID_E7E = 0xe7e, +/*20191113 to latest +장비가 보호되고 있습니다. +*/ + MSG_ID_E7F = 0xe7f, +/*20191113 to latest +장비가 파괴될 수 있습니다. +*/ + MSG_ID_E80 = 0xe80, +/*20191113 to latest +등급강화 실패 시 등급이 내려갑니다. +*/ + MSG_ID_E81 = 0xe81, +/*20191113 to latest +등급강화 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다. +*/ + MSG_ID_E82 = 0xe82, +/*20191113 to latest +등급강화 중에는 로덱스를 사용할 수 없습니다. +*/ + MSG_ID_E83 = 0xe83, +/*20191113 to latest +등급강화 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_E84 = 0xe84, +/*20191113 to latest +등급강화 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_E85 = 0xe85, +/*20191113 to latest +[%s] 님이 등급강화를 성공하여, [%s등급 %s] 아이템을 획득하였습니다. +*/ + MSG_ID_E86 = 0xe86, +/*20191113 to latest +[%s] 님이 [%s등급 %s] 아이템의 등급강화에 실패하였습니다. +*/ + MSG_ID_E87 = 0xe87, +/*20191113 to latest +등급 강화가 불가능한 장비입니다. +*/ + MSG_ID_E88 = 0xe88, +/*20191113 to latest +체인지 메테리얼 +*/ + MSG_ID_E89 = 0xe89, +/*20191113 to latest +가나다 정렬 +*/ + MSG_ID_E8A = 0xe8a, +/*20191113 to latest +기본 결과물은 %s %d개 이나, 낮은 확률로 최대 %d개까지 생성될 수 있습니다. +*/ + MSG_ID_E8B = 0xe8b, +/*20191113 to latest +성공 %d%% +*/ + MSG_ID_E8C = 0xe8c, +/*20191113 to latest +아이템 태그는 소지한 아이템만 태그할 수 있습니다. +*/ + MSG_ID_E8D = 0xe8d, +#endif }; #endif /* MAP_MESSAGES_RE_H */ diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h index 80e4c0de0..0f0511c60 100644 --- a/src/map/messages_zero.h +++ b/src/map/messages_zero.h @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20191008 +Latest version: 20191113 */ enum clif_messages { @@ -625,9 +625,11 @@ Fire Wind */ MSG_WIND = 0x76, -/*20171018 to latest +/*20171018 to 20191008 같은종류의 장비아이템은 한번에 한개만 살 수 있습니다. Please avoid buying 2 of the same items at one time. +20191023 to latest +같은 종류의 장비 아이템은 한 번에 한 개만 살 수 있습니다. */ MSG_EQUIPITEM_OLNY_ONE = 0x77, /*20171018 to latest @@ -17882,8 +17884,10 @@ AP가 부족합니다. 제련도가 조합에 필요한 요구치보다 높습니다. */ MSG_ID_E3D = 0xe3d, -/*20190724 to latest +/*20190724 to 20191106 '카드가 끼워져있거나 인챈트 되어 있습니다. +20191113 to latest +카드가 끼워져있거나 인챈트 되어 있습니다. */ MSG_ID_E3E = 0xe3e, #endif @@ -18101,6 +18105,154 @@ VTC 인증에 실패하였습니다. */ MSG_ID_E6A = 0xe6a, #endif +#if PACKETVER >= 20191023 +/*20191023 to latest +같은 아이템은 %d개까지 소유할 수 있습니다. +*/ + MSG_ID_E6B = 0xe6b, +/*20191023 to latest +같은 아이템은 한 번에 %d개까지 교환할 수 있습니다. +*/ + MSG_ID_E6C = 0xe6c, +/*20191023 to latest +해당 로덱스는 "%s"서버에서 열 수 있습니다. +*/ + MSG_ID_E6D = 0xe6d, +/*20191023 to latest +[공지]편지함의 모든 메일을 삭제하시겠습니까 ? +(해당 "%s"서버의 메일만 삭제됩니다.) +*/ + MSG_ID_E6E = 0xe6e, +/*20191023 to latest +[공지]편지함의 모든 첨부 물품을 받으시겠습니까? +(해당 "%s"서버의 메일의 물품만 받으실 수 있습니다.) +*/ + MSG_ID_E6F = 0xe6f, +/*20191023 to latest +해당 메일은 "%s"서버에서만 삭제 가능합니다. +*/ + MSG_ID_E70 = 0xe70, +/*20191023 to latest +해당 메일은 "%s"서버에서만 물품 받기가 가능합니다. +*/ + MSG_ID_E71 = 0xe71, +/*20191023 to latest +해당 메일은 "%s"서버에서만 내용읽기가 가능합니다. +*/ + MSG_ID_E72 = 0xe72, +#endif +#if PACKETVER >= 20191106 +/*20191106 to latest +합계 : %d z +*/ + MSG_ID_E73 = 0xe73, +/*20191106 to latest +메세지 +*/ + MSG_ID_E74 = 0xe74, +/*20191106 to latest +구매상점 개설 중에는 개인상점의 물건을 구입할 수 없습니다. +*/ + MSG_ID_E75 = 0xe75, +#endif +#if PACKETVER >= 20191113 +/*20191113 to latest +등급강화가 성공적으로 되었습니다. +*/ + MSG_ID_E76 = 0xe76, +/*20191113 to latest +등급강화가 실패하였습니다. +*/ + MSG_ID_E77 = 0xe77, +/*20191113 to latest +등급 수치가 하향 조정 되었습니다. +*/ + MSG_ID_E78 = 0xe78, +/*20191113 to latest +장비가 파괴되었습니다. +*/ + MSG_ID_E79 = 0xe79, +/*20191113 to latest +장비가 보호되었습니다. +*/ + MSG_ID_E7A = 0xe7a, +/*20191113 to latest +재료가 선택되지 않았습니다. +*/ + MSG_ID_E7B = 0xe7b, +/*20191113 to latest +재료가 부족합니다. +*/ + MSG_ID_E7C = 0xe7c, +/*20191113 to latest +소지 금액이 부족합니다. +*/ + MSG_ID_E7D = 0xe7d, +/*20191113 to latest +아이템 공간이 부족합니다. +*/ + MSG_ID_E7E = 0xe7e, +/*20191113 to latest +장비가 보호되고 있습니다. +*/ + MSG_ID_E7F = 0xe7f, +/*20191113 to latest +장비가 파괴될 수 있습니다. +*/ + MSG_ID_E80 = 0xe80, +/*20191113 to latest +등급강화 실패 시 등급이 내려갑니다. +*/ + MSG_ID_E81 = 0xe81, +/*20191113 to latest +등급강화 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다. +*/ + MSG_ID_E82 = 0xe82, +/*20191113 to latest +등급강화 중에는 로덱스를 사용할 수 없습니다. +*/ + MSG_ID_E83 = 0xe83, +/*20191113 to latest +등급강화 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_E84 = 0xe84, +/*20191113 to latest +등급강화 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_E85 = 0xe85, +/*20191113 to latest +[%s] 님이 등급강화를 성공하여, [%s등급 %s] 아이템을 획득하였습니다. +*/ + MSG_ID_E86 = 0xe86, +/*20191113 to latest +[%s] 님이 [%s등급 %s] 아이템의 등급강화에 실패하였습니다. +*/ + MSG_ID_E87 = 0xe87, +/*20191113 to latest +등급 강화가 불가능한 장비입니다. +*/ + MSG_ID_E88 = 0xe88, +/*20191113 to latest +체인지 메테리얼 +*/ + MSG_ID_E89 = 0xe89, +/*20191113 to latest +가나다 정렬 +*/ + MSG_ID_E8A = 0xe8a, +/*20191113 to latest +기본 결과물은 %s %d개 이나, 낮은 확률로 최대 %d개까지 생성될 수 있습니다. +*/ + MSG_ID_E8B = 0xe8b, +/*20191113 to latest +성공 %d%% +*/ + MSG_ID_E8C = 0xe8c, +/*20191113 to latest +아이템 태그는 소지한 아이템만 태그할 수 있습니다. +*/ + MSG_ID_E8D = 0xe8d, +#endif }; #endif /* MAP_MESSAGES_ZERO_H */ diff --git a/src/map/mob.c b/src/map/mob.c index d2d8727e3..dce084a23 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -1173,13 +1173,15 @@ static int mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap) battle->check_range(&md->bl,bl,md->db->range2) ) { //Pick closest target? #ifdef ACTIVEPATHSEARCH - struct walkpath_data wpd; - if (!path->search(&wpd, &md->bl, md->bl.m, md->bl.x, md->bl.y, bl->x, bl->y, 0, CELL_CHKNOPASS)) // Count walk path cells - return 0; - //Standing monsters use range2, walking monsters use range3 - if ((md->ud.walktimer == INVALID_TIMER && wpd.path_len > md->db->range2) - || (md->ud.walktimer != INVALID_TIMER && wpd.path_len > md->db->range3)) - return 0; + struct walkpath_data wpd; + bool is_standing = (md->ud.walktimer == INVALID_TIMER); + if (!path->search(&wpd, &md->bl, md->bl.m, md->bl.x, md->bl.y, bl->x, bl->y, 0, CELL_CHKNOPASS) // Count walk path cells + || (is_standing && wpd.path_len > md->db->range2) //Standing monsters use range2, walking monsters use range3 + || (!is_standing && wpd.path_len > md->db->range3)) { + if (!check_distance_bl(&md->bl, bl, md->status.rhw.range) + || !path->search_long(NULL, &md->bl, md->bl.m, md->bl.x, md->bl.y, bl->x, bl->y, CELL_CHKWALL)) + return 0; + } #endif (*target) = bl; md->target_id=bl->id; @@ -1362,10 +1364,10 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) ) { short x = bl->x, y = bl->y; mob_stop_attack(md); - const struct mob_data *m_md = BL_CCAST(BL_MOB, bl); - nullpo_retr(0, m_md); - if (map->search_freecell(&md->bl, bl->m, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 1) - && (battle_config.slave_chase_masters_chasetarget == 0 || !mob->is_in_battle_state(m_md)) + const struct mob_data *m_md = BL_CCAST(BL_MOB, bl); // Can be NULL due to master being BL_PC + // If master is BL_MOB and in battle, lock & chase to master's target instead, unless configured not to. + if ((battle_config.slave_chase_masters_chasetarget == 0 || (m_md != NULL && !mob->is_in_battle_state(m_md))) + && map->search_freecell(&md->bl, bl->m, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 1) && unit->walktoxy(&md->bl, x, y, 0)) return 1; } @@ -1378,13 +1380,12 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) //Avoid attempting to lock the master's target too often to avoid unnecessary overload. [Skotlex] if (DIFF_TICK(md->last_linktime, tick) < MIN_MOBLINKTIME && !md->target_id) { struct unit_data *ud = unit->bl2ud(bl); - struct mob_data *m_md = BL_CAST(BL_MOB, bl); + struct mob_data *m_md = BL_CAST(BL_MOB, bl); // Can be NULL due to master being BL_PC nullpo_retr(0, ud); - nullpo_retr(0, m_md); md->last_linktime = tick; struct block_list *tbl = NULL; - if (battle_config.slave_chase_masters_chasetarget == 1 && m_md->target_id != 0) { // possibly chasing something + if (battle_config.slave_chase_masters_chasetarget == 1 && m_md != NULL && m_md->target_id != 0) { // possibly chasing something tbl = map->id2bl(m_md->target_id); } else if (ud->target != 0 && ud->state.attack_continue != 0) { tbl = map->id2bl(ud->target); @@ -2235,6 +2236,14 @@ static void mob_log_damage(struct mob_data *md, struct block_list *src, int dama md->dmglog[minpos].flag= flag; md->dmglog[minpos].dmg = damage; } +#if (PACKETVER >= 20120404 && PACKETVER < 20131223) + // Show HP bar to all chars who hit the mob (fixes TF_STEAL not showing HP bar right away but only when target leaves/re-enters sight range) + if (battle_config.show_monster_hp_bar != 0 && (md->status.mode & MD_BOSS) == 0) { + struct map_session_data *sd = map->charid2sd(char_id); + if (sd != NULL && check_distance_bl(&md->bl, &sd->bl, AREA_SIZE)) // check if in range + clif->monster_hp_bar(md, sd); + } +#endif } return; } @@ -4105,10 +4114,8 @@ static bool mob_read_optdrops_group(struct config_setting_t *group, int n) */ static bool mob_read_optdrops_db(void) { - const char *filename = "option_drop_groups.conf"; // FIXME hardcoded name - char filepath[256]; - safesnprintf(filepath, sizeof(filepath), "%s/%s", map->db_path, filename); + libconfig->format_db_path("option_drop_groups.conf", filepath, sizeof(filepath)); struct config_t option_groups; if (libconfig->load_file(&option_groups, filepath) == CONFIG_FALSE) { diff --git a/src/map/mob.h b/src/map/mob.h index 9b0f6ffe0..6c3aa938b 100644 --- a/src/map/mob.h +++ b/src/map/mob.h @@ -40,7 +40,6 @@ struct hplugin_data_store; //The number of drops all mobs have and the max drop-slot that the steal skill will attempt to steal from. #define MAX_MOB_DROP 10 #define MAX_MVP_DROP 3 -#define MAX_STEAL_DROP 7 //Min time between AI executions #define MIN_MOBTHINKTIME 100 diff --git a/src/map/packets.h b/src/map/packets.h index 8fb47eb7a..326f41791 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -1796,6 +1796,14 @@ packet(0x96e,clif->ackmergeitems); // changed packet sizes #endif +#if PACKETVER >= 20160302 + packet(0x0a4f,clif->plapineDdukDdak_ack); +#endif + +#if PACKETVER_MAIN_NUM >= 20160504 || PACKETVER_RE_NUM >= 20160504 || defined(PACKETVER_ZERO) + packet(0x0a70,clif->plapineDdukDdak_close); +#endif + // all 2016-05-25 #if PACKETVER >= 20160525 packet(0x0a77,clif->pCameraInfo); // CZ_CAMERA_INFO @@ -1959,12 +1967,12 @@ packet(0x96e,clif->ackmergeitems); packet(0x0b2c,clif->pGuildCastleInfoRequest); #endif -#if PACKETVER >= 20160302 - packet(0x0a4f,clif->plapineDdukDdak_ack); +#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 + packet(0x0b35,clif->pReqGearOff); #endif -#if PACKETVER >= 20160504 - packet(0x0a70,clif->plapineDdukDdak_close); +#if PACKETVER_ZERO_NUM >= 20190709 + packet(0x0b35,clif->pReqGearOff); #endif #endif /* MAP_PACKETS_H */ diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h index d02e7f20d..34f4255fc 100644 --- a/src/map/packets_keys_main.h +++ b/src/map/packets_keys_main.h @@ -37,7 +37,7 @@ packetKeys(0x49357d72,0x22c370a1,0x5f836591); #endif -// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE +// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-06bRagexeRE, 2019-11-07aRagexe, 2019-11-07aRagexeRE, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-13eRagexeRE #if PACKETVER == 20101123 || \ PACKETVER == 20101124 || \ PACKETVER == 20101125 || \ @@ -168,7 +168,13 @@ PACKETVER == 20190918 || \ PACKETVER == 20190925 || \ PACKETVER == 20191002 || \ - PACKETVER >= 20191016 + PACKETVER == 20191016 || \ + PACKETVER == 20191018 || \ + PACKETVER == 20191023 || \ + PACKETVER == 20191030 || \ + PACKETVER == 20191106 || \ + PACKETVER == 20191107 || \ + PACKETVER >= 20191113 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h index e4319817b..b398f1894 100644 --- a/src/map/packets_keys_zero.h +++ b/src/map/packets_keys_zero.h @@ -30,7 +30,7 @@ /* This file is autogenerated, please do not commit manual changes */ -// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero +// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero #if PACKETVER == 20171018 || \ PACKETVER == 20171019 || \ PACKETVER == 20171023 || \ @@ -96,7 +96,10 @@ PACKETVER == 20190911 || \ PACKETVER == 20190918 || \ PACKETVER == 20190925 || \ - PACKETVER >= 20191008 + PACKETVER == 20191008 || \ + PACKETVER == 20191023 || \ + PACKETVER == 20191106 || \ + PACKETVER >= 20191113 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h index ede178384..9b82f25d8 100644 --- a/src/map/packets_shuffle_main.h +++ b/src/map/packets_shuffle_main.h @@ -9794,12 +9794,18 @@ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 #endif -// 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe +// 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-07aRagexe, 2019-11-13cRagexe, 2019-11-13eRagexe #if PACKETVER == 20190904 || \ PACKETVER == 20190918 || \ PACKETVER == 20190925 || \ PACKETVER == 20191002 || \ - PACKETVER == 20191016 + PACKETVER == 20191016 || \ + PACKETVER == 20191018 || \ + PACKETVER == 20191023 || \ + PACKETVER == 20191030 || \ + PACKETVER == 20191106 || \ + PACKETVER == 20191107 || \ + PACKETVER == 20191113 packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h index 049d4808a..e002a5b84 100644 --- a/src/map/packets_shuffle_re.h +++ b/src/map/packets_shuffle_re.h @@ -9744,12 +9744,17 @@ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 #endif -// 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE +// 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-11-06bRagexeRE, 2019-11-07aRagexeRE, 2019-11-13eRagexeRE #if PACKETVER == 20190904 || \ PACKETVER == 20190918 || \ PACKETVER == 20190925 || \ PACKETVER == 20191002 || \ - PACKETVER == 20191016 + PACKETVER == 20191016 || \ + PACKETVER == 20191023 || \ + PACKETVER == 20191030 || \ + PACKETVER == 20191106 || \ + PACKETVER == 20191107 || \ + PACKETVER == 20191113 packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h index 0259a9555..bb5300024 100644 --- a/src/map/packets_shuffle_zero.h +++ b/src/map/packets_shuffle_zero.h @@ -803,12 +803,15 @@ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 #endif -// 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero +// 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero #if PACKETVER == 20190828 || \ PACKETVER == 20190911 || \ PACKETVER == 20190918 || \ PACKETVER == 20190925 || \ - PACKETVER == 20191008 + PACKETVER == 20191008 || \ + PACKETVER == 20191023 || \ + PACKETVER == 20191106 || \ + PACKETVER == 20191113 packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index c0d1054d7..a7a9e2e63 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -3687,6 +3687,13 @@ struct PACKET_ZC_LAPINEDDUKDDAK_OPEN { DEFINE_PACKET_HEADER(ZC_LAPINEDDUKDDAK_OPEN, 0x0a4e); #endif // PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO) +#if PACKETVER_MAIN_NUM >= 20160504 || PACKETVER_RE_NUM >= 20160504 || defined(PACKETVER_ZERO) +struct PACKET_CZ_LAPINEDDUKDDAK_CLOSE { + int16 packetType; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_LAPINEDDUKDDAK_CLOSE, 0x0a70); +#endif // PACKETVER_MAIN_NUM >= 20160504 || PACKETVER_RE_NUM >= 20160504 || defined(PACKETVER_ZERO) + #if PACKETVER >= 20160302 struct PACKET_CZ_LAPINEDDUKDDAK_ACK_sub { int16 index; @@ -3714,6 +3721,14 @@ struct PACKET_ZC_LAPINEDDUKDDAK_RESULT { DEFINE_PACKET_HEADER(ZC_LAPINEDDUKDDAK_RESULT, 0x0a50); #endif // PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO) +#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709 +struct PACKET_CZ_REQ_MOUNTOFF { + int16 packetType; + uint8 action; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_REQ_MOUNTOFF, 0x0b35); +#endif + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris diff --git a/src/map/pc.c b/src/map/pc.c index 5eccfbaf6..56a00b5ce 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -5583,15 +5583,17 @@ static int pc_steal_item(struct map_session_data *sd, struct block_list *bl, uin // Try dropping one item, in the order from first to last possible slot. // Droprate is affected by the skill success rate. - for (i = 0; i < MAX_STEAL_DROP; i++) { + for (i = 0; i < MAX_MOB_DROP; i++) { if (md->db->dropitem[i].nameid == 0) continue; if ((data = itemdb->exists(md->db->dropitem[i].nameid)) == NULL) continue; + if (data->type == IT_CARD) + continue; if (rnd() % 10000 < apply_percentrate(md->db->dropitem[i].p, rate, 100)) break; } - if (i == MAX_STEAL_DROP) + if (i == MAX_MOB_DROP) return 0; itemid = md->db->dropitem[i].nameid; @@ -11533,12 +11535,9 @@ static bool pc_read_exp_db(void) struct config_t exp_db_conf; struct config_setting_t *edb = NULL; int entry_count = 0; - -#ifdef RENEWAL - const char *config_filename = "db/re/exp_group_db.conf"; -#else - const char *config_filename = "db/pre-re/exp_group_db.conf"; -#endif + char config_filename[256]; + + libconfig->format_db_path(DBPATH"exp_group_db.conf", config_filename, sizeof(config_filename)); if (!libconfig->load_file(&exp_db_conf, config_filename)) return false; diff --git a/src/map/script.c b/src/map/script.c index 9d99b99f9..4c2761812 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -5150,7 +5150,8 @@ static uint8 script_add_language(const char *name) static void script_load_translations(void) { struct config_t translations_conf; - const char *config_filename = "db/translations.conf"; // FIXME hardcoded name + char config_filename[256]; + libconfig->format_db_path("translations.conf", config_filename, sizeof(config_filename)); struct config_setting_t *translations = NULL; int i, size; int total = 0; diff --git a/src/map/skill.c b/src/map/skill.c index e44389d3c..7451fbf41 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -21109,7 +21109,7 @@ static bool skill_read_skilldb(const char *filename) nullpo_retr(false, filename); - sprintf(filepath,"db/%s",filename); + libconfig->format_db_path(filename, filepath, sizeof(filepath)); if (!libconfig->load_file(&skilldb, filepath)) { return false; // Libconfig error report. diff --git a/src/map/status.c b/src/map/status.c index 96a02c023..d2c67b84e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -13367,10 +13367,12 @@ static void status_read_job_db(void) int i = 0; struct config_t job_db_conf; struct config_setting_t *jdb = NULL; + char config_filename[256]; + #ifdef RENEWAL_ASPD - const char *config_filename = "db/re/job_db.conf"; + libconfig->format_db_path(DBPATH_RE"job_db.conf", config_filename, sizeof(config_filename)); #else - const char *config_filename = "db/pre-re/job_db.conf"; + libconfig->format_db_path(DBPATH_PRE"job_db.conf", config_filename, sizeof(config_filename)); #endif if (!libconfig->load_file(&job_db_conf, config_filename)) diff --git a/src/map/stylist.c b/src/map/stylist.c index 7e7c13bf7..438302214 100644 --- a/src/map/stylist.c +++ b/src/map/stylist.c @@ -40,7 +40,8 @@ static bool stylist_read_db_libconfig(void) { struct config_t stylist_conf; struct config_setting_t *stylist_db = NULL, *it = NULL; - const char *config_filename = "db/stylist_db.conf"; // FIXME hardcoded name + char config_filename[256]; + libconfig->format_db_path("stylist_db.conf", config_filename, sizeof(config_filename)); int i = 0; if (!libconfig->load_file(&stylist_conf, config_filename)) |