From 6a079edada5a1abdbba3be15d0a8ac5f72fda0a9 Mon Sep 17 00:00:00 2001 From: wizputer Date: Sun, 28 Nov 2004 00:01:39 +0000 Subject: Fixed online system, online column works and prevent double login at the login server git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@392 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/chrif.c | 36 +++++++++++++++++++++++++++++++++++- src/map/chrif.h | 2 ++ src/map/map.c | 32 +++++--------------------------- 3 files changed, 42 insertions(+), 28 deletions(-) (limited to 'src/map') diff --git a/src/map/chrif.c b/src/map/chrif.c index adb26868d..a0706f594 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -904,11 +904,45 @@ int chrif_char_offline(struct map_session_data *sd) WFIFOW(char_fd,0) = 0x2b17; WFIFOL(char_fd,2) = sd->status.char_id; - WFIFOSET(char_fd,6); + WFIFOL(char_fd,6) = sd->status.account_id; + WFIFOSET(char_fd,10); + + return 0; +} + +/*========================================= + * Tell char-server to reset all chars offline [Wizputer] + *----------------------------------------- + */ +int chrif_char_reset_offline(void) { + if (char_fd < 0) + return -1; + + WFIFOW(char_fd,0) = 0x2b18; + WFIFOSET(char_fd,2); return 0; } +/*========================================= + * Tell char-server charcter is online [Wizputer] + *----------------------------------------- + */ + +int chrif_char_online(struct map_session_data *sd) +{ + if (char_fd < 0) + return -1; + + WFIFOW(char_fd,0) = 0x2b19; + WFIFOL(char_fd,2) = sd->status.char_id; + WFIFOL(char_fd,6) = sd->status.account_id; + WFIFOSET(char_fd,10); + + return 0; +} + + /*========================================== * *------------------------------------------ diff --git a/src/map/chrif.h b/src/map/chrif.h index de20c3086..ab4f9580b 100644 --- a/src/map/chrif.h +++ b/src/map/chrif.h @@ -23,6 +23,8 @@ int chrif_saveaccountreg2(struct map_session_data *sd); int chrif_reloadGMdb(void); int chrif_ragsrvinfo(int base_rate,int job_rate, int drop_rate); int chrif_char_offline(struct map_session_data *sd); +int chrif_char_reset_offline(void); +int chrif_char_online(struct map_session_data *sd); int chrif_changesex(int id, int sex); int chrif_chardisconnect(struct map_session_data *sd); diff --git a/src/map/map.c b/src/map/map.c index 254883e93..4a7c111b8 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -1570,8 +1570,8 @@ static int map_readmap(int m,char *fn, char *alias) { if(gat==NULL) return -1; -// printf("\rLoading Maps [%d/%d]: %-50s ",m,map_num,fn); -// fflush(stdout); + printf("\rLoading Maps [%d/%d]: %-50s ",m,map_num,fn); + fflush(stdout); map[m].m=m; xs=map[m].xs=*(int*)(gat+6); @@ -2054,25 +2054,6 @@ int sql_config_read(char *cfgName) return 0; } -// sql online status checking [Valaris] -void char_offline(struct map_session_data *sd) -{ - if(sd && sd->status.char_id) { - sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `char_id`='%d'", char_db, sd->status.char_id); - if(mysql_query(&mmysql_handle, tmp_sql) ) { - printf("DB server Error (update online `%s`)- %s\n", char_db, mysql_error(&mmysql_handle) ); - } - } -} - -void do_reset_online(void) -{ - sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `online`='1'", char_db); - if(mysql_query(&mmysql_handle, tmp_sql) ) { - printf("DB server Error (reset_online `%s`)- %s\n", char_db, mysql_error(&mmysql_handle) ); - } -} - int online_timer(int tid,unsigned int tick,int id,int data) { if(check_online_timer != tid) @@ -2090,16 +2071,13 @@ void char_online_check(void) int i; struct map_session_data *sd=NULL; - do_reset_online(); + chrif_char_reset_offline(); for(i=0;isession_data) && sd && sd->state.auth && !(battle_config.hide_GM_session && pc_isGM(sd))) if(sd->status.char_id) { - sprintf(tmp_sql,"UPDATE `%s` SET `online`='1' WHERE `char_id`='%d'", char_db, sd->status.char_id); - if(mysql_query(&mmysql_handle, tmp_sql) ) { - printf("DB server Error (update online `%s`)- %s\n", char_db, mysql_error(&mmysql_handle) ); - } + chrif_char_online(sd); } } @@ -2199,7 +2177,7 @@ void do_final(void) { do_final_storage(); do_final_guild(); #ifndef TXT_ONLY - do_reset_online(); + chrif_char_reset_offline(); map_sql_close(); #endif /* not TXT_ONLY */ } -- cgit v1.2.3-70-g09d2 From eb542a6335c6b6c91a9429f8975e7feab84ce4ff Mon Sep 17 00:00:00 2001 From: wizputer Date: Sun, 28 Nov 2004 00:54:09 +0000 Subject: Fixed Map crash when person uses global message hacks git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@394 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 1 + src/map/clif.c | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 45102a172..e30a15ec9 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,6 @@ Date Added 11/27 + * Fixed Map crash when person uses global message hacks [Wizputer] * Fixed online system, online column works and prevent double login at the login server [Wizputer] * Fixed some compile time errors associated with showmsg [MouseJstr] * Added get_svn_revision() in core.c [MC Cameri] diff --git a/src/map/clif.c b/src/map/clif.c index 9163671a8..50de1e108 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7647,8 +7647,8 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) { // S 008c < char *buf; nullpo_retv(sd); - if (is_charcommand(fd, sd, RFIFOP(fd,4),0)!= CharCommand_None) return; if ((is_atcommand(fd, sd, RFIFOP(fd,4), 0) != AtCommand_None) || + (is_charcommand(fd, sd, RFIFOP(fd,4),0)!= CharCommand_None) || (sd->sc_data && (sd->sc_data[SC_BERSERK].timer != -1 || //バーサーク時は会話も不可 sd->sc_data[SC_NOCHAT].timer != -1 ))) //チャット禁止 @@ -7662,7 +7662,7 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) { // S 008c < printf("Hack on global message: character '%s' (account: %d), use an other name to send a (normal) message.\n", sd->status.name, sd->status.account_id); // information is sended to all online GM - sprintf(message, "Hack on global message (normal message): character '%s' (account: %d) uses an other name.", sd->status.name, sd->status.account_id); + sprintf(message, "Hack on global message (normal message): character '%s' (account: %d) uses another name.", sd->status.name, sd->status.account_id); intif_wis_message_to_gm(wisp_server_name, battle_config.hack_info_GM_level, message, strlen(message) + 1); if (strlen(RFIFOP(fd,4)) == 0) strcpy(message, " This player sends a void name and a void message."); @@ -7680,6 +7680,11 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) { // S 008c < if (battle_config.ban_spoof_namer > 0) { chrif_char_ask_name(-1, sd->status.name, 2, 0, 0, 0, 0, battle_config.ban_spoof_namer, 0); // type: 2 - ban (year, month, day, hour, minute, second) clif_setwaitclose(fd); // forced to disconnect because of the hack + + if(message) free(message); + if(buf) free(buf); + + return; } // but for the hacker, we display on his screen (he see/look no difference). } else { -- cgit v1.2.3-70-g09d2 From bd6e84abfbb76a56b93597761fd5158a3aa265d5 Mon Sep 17 00:00:00 2001 From: wizputer Date: Sun, 28 Nov 2004 04:42:06 +0000 Subject: * Fixed a few map crashes when char-server crashes [Wizputer] * Added fix of 0x2aff and 0x2af8 flooding [Wizputer - thanks Toster] git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@395 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ src/map/chrif.c | 51 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 14 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index e30a15ec9..029e7c355 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 11/27 + * Fixed a few map crashes when char-server crashes [Wizputer] + * Added fix of 0x2aff and 0x2af8 flooding [Wizputer - thanks Toster] * Fixed Map crash when person uses global message hacks [Wizputer] * Fixed online system, online column works and prevent double login at the login server [Wizputer] * Fixed some compile time errors associated with showmsg [MouseJstr] diff --git a/src/map/chrif.c b/src/map/chrif.c index a0706f594..479b328f5 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -98,7 +98,7 @@ int chrif_save(struct map_session_data *sd) { nullpo_retr(-1, sd); - if (char_fd < 0) + if (char_fd < 1) return -1; pc_makesavestatus(sd); @@ -184,7 +184,10 @@ int chrif_changemapserver(struct map_session_data *sd, char *name, int x, int y, int i, s_ip; nullpo_retr(-1, sd); - + + if (!sd || char_fd < 1 ) + return -1; + s_ip = 0; for(i = 0; i < fd_max; i++) if (session[i] && session[i]->session_data == sd) { @@ -283,7 +286,7 @@ int chrif_authreq(struct map_session_data *sd) nullpo_retr(-1, sd); - if (!sd || !char_fd || !sd->bl.id || !sd->login_id1) + if (!sd || char_fd < 1 || !sd->bl.id || !sd->login_id1) return -1; for(i = 0; i < fd_max; i++) @@ -311,7 +314,7 @@ int chrif_charselectreq(struct map_session_data *sd) nullpo_retr(-1, sd); - if(!sd || !char_fd || !sd->bl.id || !sd->login_id1) + if(!sd || char_fd < 1 || !sd->bl.id || !sd->login_id1) return -1; s_ip = 0; @@ -337,7 +340,7 @@ int chrif_charselectreq(struct map_session_data *sd) */ int chrif_searchcharid(int char_id) { - if (!char_id) + if (!char_id || char_fd < 1) return -1; WFIFOW(char_fd,0) = 0x2b08; @@ -355,6 +358,9 @@ int chrif_changegm(int id, const char *pass, int len) { if (battle_config.etc_log) printf("chrif_changegm: account: %d, password: '%s'.\n", id, pass); + + if (char_fd < 1 ) + return -1; WFIFOW(char_fd,0) = 0x2b0a; WFIFOW(char_fd,2) = len + 8; @@ -373,7 +379,10 @@ int chrif_changeemail(int id, const char *actual_email, const char *new_email) { if (battle_config.etc_log) printf("chrif_changeemail: account: %d, actual_email: '%s', new_email: '%s'.\n", id, actual_email, new_email); - + + if (char_fd < 1 ) + return -1; + WFIFOW(char_fd,0) = 0x2b0c; WFIFOL(char_fd,2) = id; memcpy(WFIFOP(char_fd,6), actual_email, 40); @@ -396,6 +405,9 @@ int chrif_changeemail(int id, const char *actual_email, const char *new_email) */ int chrif_char_ask_name(int id, char * character_name, short operation_type, int year, int month, int day, int hour, int minute, int second) { + if (char_fd < 1 ) + return -1; + WFIFOW(char_fd, 0) = 0x2b0e; WFIFOL(char_fd, 2) = id; // account_id of who ask (for answer) -1 if nobody memcpy(WFIFOP(char_fd,6), character_name, 24); @@ -419,6 +431,9 @@ int chrif_char_ask_name(int id, char * character_name, short operation_type, int *------------------------------------------ */ int chrif_changesex(int id, int sex) { + if (char_fd < 1 ) + return -1; + WFIFOW(char_fd,0) = 0x3000; WFIFOW(char_fd,2) = 9; WFIFOL(char_fd,4) = id; @@ -649,7 +664,10 @@ int chrif_saveaccountreg2(struct map_session_data *sd) { int p, j; nullpo_retr(-1, sd); - + + if (char_fd < 1 ) + return -1; + p = 8; for(j = 0; j < sd->status.account_reg2_num; j++) { struct global_reg *reg = &sd->status.account_reg2[j]; @@ -820,7 +838,7 @@ int chrif_chardisconnect(struct map_session_data *sd) { nullpo_retr(-1, sd); - if(char_fd<=0) + if(char_fd < 1) return -1; WFIFOW(char_fd,0)=0x2b18; @@ -849,7 +867,9 @@ int chrif_recvgmaccounts(int fd) */ int chrif_reloadGMdb(void) { - + if (char_fd < 1 ) + return -1; + WFIFOW(char_fd,0) = 0x2af7; WFIFOSET(char_fd, 2); @@ -865,7 +885,10 @@ int chrif_reloadGMdb(void) char buf[256]; FILE *fp; int i; - + + if (char_fd < 1 ) + return -1; + WFIFOW(char_fd,0) = 0x2b16; WFIFOW(char_fd,2) = base_rate; WFIFOW(char_fd,4) = job_rate; @@ -899,7 +922,7 @@ int chrif_reloadGMdb(void) int chrif_char_offline(struct map_session_data *sd) { - if (char_fd < 0) + if (char_fd < 1) return -1; WFIFOW(char_fd,0) = 0x2b17; @@ -915,7 +938,7 @@ int chrif_char_offline(struct map_session_data *sd) *----------------------------------------- */ int chrif_char_reset_offline(void) { - if (char_fd < 0) + if (char_fd < 1) return -1; WFIFOW(char_fd,0) = 0x2b18; @@ -931,7 +954,7 @@ int chrif_char_reset_offline(void) { int chrif_char_online(struct map_session_data *sd) { - if (char_fd < 0) + if (char_fd < 1) return -1; WFIFOW(char_fd,0) = 0x2b19; @@ -1025,7 +1048,7 @@ int send_users_tochar(int tid, unsigned int tick, int id, int data) { int users = 0, i; struct map_session_data *sd; - if (char_fd <= 0 || session[char_fd] == NULL) + if (char_fd < 1 || session[char_fd] == NULL || !chrif_isconnect()) // Thanks to Toster return 0; WFIFOW(char_fd,0) = 0x2aff; -- cgit v1.2.3-70-g09d2 From 06809df779882f87277a662cc8d64dc07c0561d5 Mon Sep 17 00:00:00 2001 From: mc_cameri Date: Sun, 28 Nov 2004 14:36:55 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@402 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ src/map/map.c | 49 +++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 8 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 82f697288..e232ba20c 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 11/28 + * Added map_versionscreen(), displayed when --version flag is passed on command-line. [MC Cameri] + * Finished map_helpscreen(), displayed when --help flag passed on command-line. [MC Cameri] * Changed Suilds Extention Skill to +6 people per level. [Lupus] (tested it for 2 weeks! or a big server) * Added a fix for gettimeofday() for WIN32 [Codemaster] diff --git a/src/map/map.c b/src/map/map.c index 4a7c111b8..56e489639 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -14,6 +14,7 @@ #include "db.h" #include "grfio.h" #include "malloc.h" +#include "version.h" #include "map.h" #include "chrif.h" @@ -2183,6 +2184,34 @@ void do_final(void) { } void map_helpscreen() { + puts("Usage: map-server [options]"); + puts("Options:"); + puts(" --help, --h, -h, /? Displays this help screen"); + puts(" --map-config Load map-server configuration from "); + puts(" --battle-config Load battle configuration from "); + puts(" --atcommand-config Load atcommand configuration from "); + puts(" --charcommand-config Load charcommand configuration from "); + puts(" --script-config Load script configuration from "); + puts(" --msg-config Load message configuration from "); + puts(" --grf-path-file Load grf path file configuration from "); + puts(" --sql-config Load inter-server configuration from "); + puts(" (SQL Only)"); + puts(" --log-config Load logging configuration from "); + puts(" (SQL Only)"); + puts(" --version, --v, -v, /v Displays the server's version"); + puts("\n"); + exit(1); +} + +void map_versionscreen() { + printf("\033[1;29meAthena version %d.%02d.%02d, Athena Mod version %d\033[0;0m\n", + ATHENA_MAJOR_VERSION, ATHENA_MINOR_VERSION, ATHENA_REVISION, + ATHENA_MOD_VERSION); + puts("\033[1;32mWebsite/Forum:\033[0;0m http://eathena.deltaanime.net/"); + puts("\033[1;32mDownload URL:\033[0;0m http://eathena.systeminplace.net/"); + puts("\033[1;32mIRC Channel:\033[0;0m irc://irc.deltaanime.net/#athena"); + puts("\nOpen \033[1;29mreadme.html\033[0;0m for more information."); + if (ATHENA_RELEASE_FLAG) ShowNotice("This version is not for release.\n"); exit(1); } @@ -2213,23 +2242,27 @@ int do_init(int argc, char *argv[]) { if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "--h") == 0 || strcmp(argv[i], "--?") == 0 || strcmp(argv[i], "/?") == 0) map_helpscreen(); - else if (strcmp(argv[i], "--map_config") == 0) + if (strcmp(argv[i], "--version") == 0 || strcmp(argv[i], "--v") == 0 || strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "/v") == 0) + map_versionscreen(); + else if (strcmp(argv[i], "--map_config") == 0 || strcmp(argv[i], "--map-config") == 0) MAP_CONF_NAME=argv[i+1]; - else if (strcmp(argv[i],"--battle_config") == 0) + else if (strcmp(argv[i],"--battle_config") == 0 || strcmp(argv[i],"--battle-config") == 0) BATTLE_CONF_FILENAME = argv[i+1]; - else if (strcmp(argv[i],"--atcommand_config") == 0) + else if (strcmp(argv[i],"--atcommand_config") == 0 || strcmp(argv[i],"--atcommand-config") == 0) ATCOMMAND_CONF_FILENAME = argv[i+1]; - else if (strcmp(argv[i],"--charcommand_config") == 0) + else if (strcmp(argv[i],"--charcommand_config") == 0 || strcmp(argv[i],"--charcommand-config") == 0) CHARCOMMAND_CONF_FILENAME = argv[i+1]; - else if (strcmp(argv[i],"--script_config") == 0) + else if (strcmp(argv[i],"--script_config") == 0 || strcmp(argv[i],"--script-config") == 0) SCRIPT_CONF_NAME = argv[i+1]; - else if (strcmp(argv[i],"--msg_config") == 0) + else if (strcmp(argv[i],"--msg_config") == 0 || strcmp(argv[i],"--msg-config") == 0) MSG_CONF_NAME = argv[i+1]; - else if (strcmp(argv[i],"--grf_path_file") == 0) + else if (strcmp(argv[i],"--grf_path_file") == 0 || strcmp(argv[i],"--grf-path-file") == 0) GRF_PATH_FILENAME = argv[i+1]; #ifndef TXT_ONLY - else if (strcmp(argv[i],"--sql_config") == 0) + else if (strcmp(argv[i],"--sql_config") == 0 || strcmp(argv[i],"--sql-config") == 0) SQL_CONF_NAME = argv[i+1]; + else if (strcmp(argv[i],"--log_config") == 0 || strcmp(argv[i],"--log-config") == 0) + LOG_CONF_NAME = argv[i+1]; #endif /* not TXT_ONLY */ } -- cgit v1.2.3-70-g09d2 From 4a2c014e4eb9229ff61c3ff762c44d3bd21b7f7c Mon Sep 17 00:00:00 2001 From: amber Date: Sun, 28 Nov 2004 19:58:22 +0000 Subject: Fix some file types git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@404 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 1 + conf-tmpl/charcommand_athena.conf | 36 +- db/item_db.txt | 3394 ++++++++++++++++++------------------- db/skill_nocast_db.txt | 32 +- doc/effect_list.txt | 720 ++++---- doc/miscnotes.txt | 1102 ++++++------ npc/cities/louyang.txt | 128 +- src/map/charcommand.c | 1406 +++++++-------- src/map/charcommand.h | 100 +- 9 files changed, 3460 insertions(+), 3459 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index e232ba20c..689cd90eb 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,6 @@ Date Added 11/28 + * Fix some file props [MouseJstr] * Added map_versionscreen(), displayed when --version flag is passed on command-line. [MC Cameri] * Finished map_helpscreen(), displayed when --help flag passed on command-line. [MC Cameri] * Changed Suilds Extention Skill to +6 people per level. [Lupus] diff --git a/conf-tmpl/charcommand_athena.conf b/conf-tmpl/charcommand_athena.conf index dceae69c3..17329c997 100644 --- a/conf-tmpl/charcommand_athena.conf +++ b/conf-tmpl/charcommand_athena.conf @@ -1,18 +1,18 @@ -// Athena charcommand Configuration file. -// Translated by Peter Kieser - -// Set here the symbol that you want to use for your commands -// Only 1 character is get (default is '#'). You can set any character, -// except control-character (0x00-0x1f), '%' (party chat speaking) and '/' (standard ragnarok GM commands) -// and '@' (Standard GM Commands) -// With default character, all commands begin by a '#', example: #save SomePlayer -command_symbol: # - -job: 60 -jobchange: 60 -petrename: 50 -petfriendly: 50 -stats: 40 -option: 60 -save: 60 -statsall: 40 +// Athena charcommand Configuration file. +// Translated by Peter Kieser + +// Set here the symbol that you want to use for your commands +// Only 1 character is get (default is '#'). You can set any character, +// except control-character (0x00-0x1f), '%' (party chat speaking) and '/' (standard ragnarok GM commands) +// and '@' (Standard GM Commands) +// With default character, all commands begin by a '#', example: #save SomePlayer +command_symbol: # + +job: 60 +jobchange: 60 +petrename: 50 +petfriendly: 50 +stats: 40 +option: 60 +save: 60 +statsall: 40 diff --git a/db/item_db.txt b/db/item_db.txt index d67450a84..09ee0f183 100644 --- a/db/item_db.txt +++ b/db/item_db.txt @@ -1,1697 +1,1697 @@ -//ID,Name,Name,Type,Price,Sell,Weight,ATK,DEF,Range,Slot,Job,Gender,Loc,wLV,eLV,View,{UseScript},{EquipScript} - -// Healing Items -//============================================================= -0,DEFAULT,Default,0,20,,10,,,,,0,2,0,0,,,{},{},, -501,Red_Potion,Red Potion,0,50,0,70,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{} -502,Orange_Potion,Orange Potion,0,200,0,100,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{} -503,Yellow_Potion,Yellow Potion,0,550,0,130,,,,,10477567,2,,,,,{ itemheal rand(175,234),0; },{} -504,White_Potion,White Potion,0,1200,0,150,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} -505,Blue_Potion,Blue Potion,0,5000,0,150,,,,,10477567,2,,,,,{ itemheal 0,rand(40,59); },{} -506,Green_Potion,Green Potion,0,40,0,70,,,,,10477567,2,,,,,{ sc_end SC_Poison; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; },{} -507,Red_Herb,Red Herb,0,18,0,30,,,,,10477567,2,,,,,{ itemheal rand(18,27),0; },{} -508,Yellow_Herb,Yellow Herb,0,40,0,50,,,,,10477567,2,,,,,{ itemheal rand(38,57),0; },{} -509,White_Herb,White Herb,0,120,0,70,,,,,10477567,2,,,,,{ itemheal rand(75,114),0; },{} -510,Blue_Herb,Blue Herb,0,60,0,70,,,,,10477567,2,,,,,{ itemheal 0,rand(15,29); },{} -511,Green_Herb,Green Herb,0,10,0,30,,,,,10477567,2,,,,,{ sc_end SC_Poison; },{} -512,mace,Apple,0,15,0,20,,,,,10477567,2,,,,,{ itemheal rand(16,21),0; },{} -513,Banana,Banana,0,15,0,20,,,,,10477567,2,,,,,{ itemheal rand(17,20),0; },{} -514,Grape,Grape,0,200,0,20,,,,,10477567,2,,,,,{ itemheal 0,rand(10,14); },{} -515,Carrot,Carrot,0,15,0,20,,,,,10477567,2,,,,,{ itemheal rand(18,19),0; },{} -516,Sweet_Potato,Sweet Potato,0,15,0,20,,,,,10477567,2,,,,,{ itemheal rand(15,22),0; },{} -517,Meat,Meat,0,50,0,150,,,,,10477567,2,,,,,{ itemheal rand(70,99),0; },{} -518,Honey,Honey,0,500,0,100,,,,,10477567,2,,,,,{ itemheal rand(70,99),rand(20,39); },{} -519,Milk,Milk,0,25,0,30,,,,,10477567,2,,,,,{ itemheal rand(27,36),0; },{} -520,Hinalle_Leaflet,Hinalle Leaflet,0,150,0,10,,,,,10477567,2,,,,,{ itemheal rand(175,234),0; },{} -521,Aloe_Leaflet,Aloe Leaflet,0,360,0,20,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} -522,Mastela_Fruit,Mastela Fruit,0,840,0,30,,,,,10477567,2,,,,,{ itemheal rand(400,599),0; },{} -523,Holy_Water,Holy Water,0,20,0,30,,,,,10477567,2,,,,,{ sc_end SC_Curse; },{} -525,Panacea,Panacea,0,500,0,100,,,,,10477567,2,,,,,{ sc_end SC_Poison; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; sc_end SC_Curse; },{} -526,Royal_Jelly,Royal Jelly,0,7000,0,150,,,,,10477567,2,,,,,{ itemheal rand(325,404),rand(40,59); sc_end SC_Posion; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; sc_end SC_Curse; },{} -528,Monster's_Feed,Monster Food,0,60,0,150,,,,,10477567,2,,,,,{ itemheal rand(72,107),0; },{} -529,Candy,Candy,0,10,0,30,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{} -530,Candy_Cane,Candy Cane,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{} -531,Apple_Juice,Apple Juice,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(25,34),0; },{} -532,Banana_Juice,Banana Juice,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(26,33),0; },{} -533,Grape_Juice,Grape Juice,0,250,0,40,,,,,10477567,2,,,,,{ itemheal 0,rand(15,24); },{} -534,Carrot_Juice,Carrot Juice,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(27,32),0; },{} -535,Pumkin,Pumpkin,0,15,0,20,,,,,10477567,2,,,,,{ itemheal 19,0; },{} -536,Ice_Cream,Ice Cream,0,150,0,80,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{} -537,Pet_Food,Pet Food,0,1000,0,10,,,,,10477567,2,,,,,{ itemheal rand(50,89),0; },{} -538,Well-baked_Cookie,Well-baked Cookie,0,1000,0,30,,,,,10477567,2,,,,,{ itemheal rand(160,199),0; },{} -539,Piece_of_Cake,Piece of Cake,0,3000,0,100,,,,,10477567,2,,,,,{ itemheal rand(270,329),0; },{} -540,Falcon_food,Falcon food,0,20,0,50,,,,,10477567,2,,,,,{},{} -541,Pecopeco_food,Pecopeco food,0,20,0,50,,,,,10477567,2,,,,,{},{} -542,Festive_Cookie,Festive Cookie,0,10,0,10,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} -543,Festive_Rainbow_Cake,Festive Rainbow Cake,0,20,0,10,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} -544,Raw_Fish,Raw Fish,0,20,0,30,,,,,10477567,2,,,,,{ itemheal rand(25,59),0; },{} -545,Condensed_Red_Potion,Condensed Red Potion,0,20,0,20,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{} -546,Condensed_Yellow_Potion,Condensed Yellow Potion,0,20,0,30,,,,,10477567,2,,,,,{ itemheal rand(175,234),0; },{} -547,Condensed_White_Potion,Condensed White Potion,0,20,0,50,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} -548,Cheese,Cheese,0,2800,0,50,,,,,10477567,2,,,,,{ itemheal 0,rand(10,14); },{} -549,Yam,Hot Potato,0,180,0,80,,,,,10477567,2,,,,,{ itemheal rand(50,99),0; },{} -550,Rice_Cake,Rice Popper,0,20,5,10,,,,,10477567,2,,,,,{ itemheal rand(10,14),0; },{} -551,Sushi,Sushi,0,20,0,50,,,,,10477567,2,,,,,{ itemheal rand(50,60),0; },{} -552,Ketupat,Ketupat,0,20,0,10,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} -553,Dumpling,Dumpling,0,20,0,50,,,,,10477567,2,,,,,{ itemheal rand(39,68),0; },{} -554,Mochi,Mochi,0,100,0,80,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} -556,Rolled_Rice,Rolled Rice,0,20,0,10,,,,,10477567,3,,,,,{ itemheal rand(10,50),0; },{} -557,Cut_Rice_Rolls,Cut Rice Rolls,0,20,0,10,,,,,0,3,,,,,{ itemheal rand(10,200),0; },{} -558,Chocolate,Chocolate,0,500,0,20,,,,,10477567,2,,,,,{ itemheal 1,1; },{} -559,Hand-made_Chocolate,Hand-made Chocolate,0,5000,0,80,,,,,10477567,2,,,,,{ itemheal 50,50; },{} -560,White_Chocolate,White Chocolate,0,0,0,80,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} -561,Milk_Chocolate_Bar,Milk Chocolate,0,0,0,80,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} -562,Pizza,Pizza,0,20,0,150,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} -563,Double_Growing_Swiss_Pong_Tyu_,Unknown Item,0,20,0,150,,,,,10477567,3,,,,,{ itemheal rand(100,200),0; },{} -564,Meat_Dumpling,Meat Dumpling,0,20,0,30,,,,,0,2,,,,,{ itemheal rand(175,234),0; },{} -565,Vita_500_Bottle,Vita 500,0,2000,0,30,,,,,10477567,2,,,,,{ itemheal 500,0; },{} -566,Tom_Yum_Goong,Tom_Yum_Goong,0,20,150,0,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} -567,Prawn,Prawn,0,20,40,0,,,,,10477567,3,,,,,{ itemheal rand(50,100),0; },{} -568,Lemon,Lemon,0,20,40,0,,,,,0,3,,,,,{},{} - -// Usable Items -//=================================================================== -601,Fly_Wing,Fly Wing,2,60,0,50,,,,,10477567,2,,,,,{ warp "Random",0,0; },{} -602,Butterfly_Wing,Butterfly Wing,2,300,0,50,,,,,10477567,2,,,,,{ warp "SavePoint",0,0; },{} -603,Old_Blue_Box,Old Blue Box,2,10000,0,200,,,,,10477567,2,,,,,{ getitem -1,1; },{} -604,Dead_Branch,Dead Branch,2,50,0,50,,,,,10477567,2,,,,,{ monster "this",0,0,"--ja--",-1,1,; },{} -605,Anodyne,Anodyne,2,2000,0,100,,,,,10477567,2,,,,,{ itemskill 8,1,"??????????"; },{} -606,Aloevera,Aloevera,2,1500,0,100,,,,,10477567,2,,,,,{ itemskill 6,1,"?????"; },{} -607,Yggdrasilberry,Yggdrasilberry,0,2,0,300,,,,,10477567,2,,,,,{ percentheal 100,100; },{} -608,Yggdrasil_Seed,Yggdrasil Seed,0,5000,0,300,,,,,10477567,2,,,,,{ percentheal 50,50; },{} -609,Amulet,Amulet,2,100,0,100,,,,,10477567,2,,,,,{},{} -610,Yggdrasil_Leaf,Yggdrasil Leaf,2,4000,0,100,,,,,10477567,2,,,,,{ itemskill 54,1,"????????"; },{} -611,Magnifier,Magnifier,2,40,0,50,,,,,10477567,2,,,,,{ itemskill 40,1,"???"; },{} -// Smithing Items -612,Mini_Furnace,Mini Furnace,2,150,0,200,,,,,10477567,2,,,,,{ produce 16; },{} -613,Iron_Hammer,Iron Hammer,2,1000,0,200,,,,,10477567,2,,,,,{ produce 1; },{} -614,Golden_Hammer,Golden Hammer,2,3000,0,300,,,,,10477567,2,,,,,{ produce 2; },{} -615,Oridecon_Hammer,Oridecon Hammer,2,5000,0,400,,,,,10477567,2,,,,,{ produce 3; },{} -// Item Givers -616,Old_Card_Album,Old Card Album,2,10000,0,50,,,,,10477567,2,,,,,{ getitem -3,1; },{} -617,Old_Violet_Box,Old Violet Box,2,10000,0,200,,,,,10477567,2,,,,,{ getitem -2,1; },{} -618,Worn_Out_Scroll,Worn Out Scroll,2,50,0,20,,,,,10477567,2,,,,,{ getitem -5,1; },{} - -// Pet Tames -//=================================================================== -619,Unripe_Apple,Unripe Apple,2,1000,0,50,,,,,10477567,2,,,,,{ pet 1002; },{} -620,Orange_Juice,Orange Juice,2,1500,0,50,,,,,10477567,2,,,,,{ pet 1113; },{} -621,Bitter_Herb,Bitter Herb,2,20,0,50,,,,,10477567,2,,,,,{ pet 1031; },{}, -622,Rainbow_Carrot,Rainbow Carrot,2,2500,0,50,,,,,10477567,2,,,,,{ pet 1063; },{}, -623,Earthworm_the_Dude,Earthworm the Dude,2,4000,0,50,,,,,10477567,2,,,,,{ pet 1049; },{}, -624,Rotten_Fish,Rotten Fish,2,2500,0,50,,,,,10477567,2,,,,,{ pet 1011; },{}, -625,Rusty_Iron,Rusty Iron,2,100,0,50,,,,,10477567,2,,,,,{ pet 1042; },{}, -626,Monster_Juice,Monster Juice,2,1500,0,50,,,,,10477567,2,,,,,{ pet 1035; },{} -627,Sweet_Milk,Sweet Milk,2,7000,0,50,,,,,10477567,2,,,,,{ pet 1167; },{} -628,Well_Dried_Bone,Well Dried Bone,2,10000,0,50,,,,,10477567,2,,,,,{ pet 1107; },{} -629,Singing_Flower,Singing Flower,2,300,0,50,,,,,10477567,2,,,,,{ pet 1052; },{} -630,Dew_Laden_Moss,Dew Laden Moss,2,10,0,50,,,,,10477567,2,,,,,{ pet 1014; },{}, -631,Deadly_Noxious_Herb,Deadly Noxious Herb,2,20,0,50,,,,,10477567,2,,,,,{ pet 1077; },{}, -632,Fatty_Chubby_Earthworm,Fatty Chubby Earthworm,2,5000,0,50,,,,,10477567,2,,,,,{ pet 1019; },{}, -633,Baked_Yam,Baked Yam,2,20,0,50,,,,,10477567,2,,,,,{ pet 1056; },{},, -634,Tropical_Banana,Tropical Banana,2,20,0,50,,,,,10477567,2,,,,,{ pet 1057; },{},, -635,Horror_of_Tribe,Horror of Tribe,2,300,0,50,,,,,10477567,2,,,,,{ pet 1023; },{},, -636,No_Recipient,No Recipient,2,100,0,50,,,,,10477567,2,,,,,{ pet 1026; },{},, -637,Old_Broom,Old Broom,2,350,0,50,,,,,10477567,2,,,,,{ pet 1110; },{},, -638,Silver_Knife_of_Chastity,Silver Knife of Chastity,2,12000,0,50,,,,,10477567,2,,,,,{ pet 1170; },{},, -639,Armlet_of_Obedience,Armlet of Obedience,2,18000,0,50,,,,,10477567,2,,,,,{ pet 1029; },{},, -640,Shining_Stone,Shining Stone,2,3000,0,50,,,,,10477567,2,,,,,{ pet 1155; },{},, -641,Contract_in_Shadow,Contracts in Shadow,2,100,0,50,,,,,10477567,2,,,,,{ pet 1109; },{},, -642,Book_of_Devil,Book of Devil,2,1800,0,50,,,,,10477567,2,,,,,{ pet 1101; },{},, -643,Pet_Incubator,Pet Incubator,2,3000,,30,,,,,10477567,2,,,,,{ if((countitem(9030)<1)&&(countitem(9031)<1)&&(countitem(9032)<1)&&(countitem(9033)<1)&&(countitem(9034)<1)&&(countitem(9035)<1)&&(countitem(9036)<1)&&(countitem(9037)<1)&&(countitem(9038)<1)&&(countitem(9039)<1)) bpet; },{},, - -// Misc Items -//=================================================================== -644,Gift_Box,Gift Box,2,2,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, -645,Concentration_Potion,Concentration Potion,2,800,0,100,,,,,10477567,2,,,,,{ sc_start SC_SpeedPot0,1800,0; },{} -656,Awakening_Potion,Awakening Potion,2,1500,0,150,,,,,8904431,2,,,40,,{ sc_start SC_SpeedPot1,1800,0; },{} -657,Berserk_Potion,Berserk Potion,2,3000,0,200,,,,,410786,2,,,85,,{ sc_start SC_SpeedPot2,1800,0; },{} -658,Tribal_Solidarity,Tribal Solidarity,3,1000,0,500,,,,,,,,,,,{},{} -659,Her_Heart,Her Heart,2,500,0,50,,,,,10477567,2,,,,,{ pet 1188; },{},, -660,Forbidden_Red_Candle,Red Candle,2,20,0,50,,,,,10477567,2,,,,,{ pet 1200; },{},, -661,Sky_Apron,Soft Apron,2,20,0,50,,,,,10477567,2,,,,,{ pet 1275; },{} - -// Newer Items -664,Gift_Box_,Gift Box,2,20,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, -665,Gift_Box__,Gift Box,2,20,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, -666,Gift_Box___,Gift Box,2,20,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, -667,Gift_Box____,Gift Box,2,20,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, -668,Angpow,Angpow,0,1,0,2,,,,,10477567,2,,,,,{ set Zeny,Zeny+rand(100,10000); },{} -669,Rice_Cake_Soup,Rice Cake Soup,2,20,0,100,,,,,,,,,,,{},{},, -670,Gold_Coin_Pouch,Gold Coin Pouch,2,20,0,400,,,,,,,,,,,{},{},, -671,Gold_Coin,Gold Coin,2,20,0,40,,,,,,,,,,,{},{},, -672,Copper_Coin_Pouch,Copper Coin Pouch,2,20,0,400,,,,,,,,,,,{},{},, -673,Copper_Coin,Copper Coin,2,20,0,40,,,,,,,,,,,{},{},, -674,Mysterious_Ore_Coin,Mysterious Ore Coin,2,20,0,40,,,,,0,3,,,,,{},{} -675,Silver_Coin,Silver Coin,2,20,0,40,,,,,0,3,,,,,{},{} -676,Silver_Coin_Pouch,Silver Coin Pouch,2,20,0,400,,,,,0,3,,,,,{},{} -677,Platinum_Coin,Platinum Coin,2,20,0,40,,,,,0,3,,,,,{},{} -678,Deadly_Poison_Bottle,Deadly Poison Bottle,2,20,0,100,,,,,0,3,,,,,{},{} -679,Recall_Pills,Recall Pills,2,20,0,300,,,,,0,3,,,,,{},{} -680,Carnation,Carnation,2,20,0,1000,,,,,0,3,,,,,{},{} -681,Wedding_Photo_Album,Wedding_Photo_Album,2,20,0,10,,,,,0,3,,,,,{},{} -682,Realgar_Wine,Realgar Wine,2,20,0,50,,,,,10477567,2,,,,,{ sc_start SC_ATKPOT,30,30; },{} -683,Exorcize_Herb,Exorcize Herb,2,20,0,50,,,,,10477567,2,,,,,{ sc_start SC_MATKPOT,30,30; },{} -684,Durian,Durian,2,20,0,10,,,,,0,3,,,,,{},{} -685,Ramadan,Ramadan,2,20,10,10,,,,,0,3,,,,,{},{} - -701,Ora_Ora,Ora Ora,3,55000,0,200,,,,,,,,,,,{},{} -702,Animal_Gore,Animal Gore,3,2,0,100,,,,,,,,,,,{},{} -703,Hinalle,Hinalle,3,2,0,10,,,,,,,,,,,{},{} -704,Aloe,Aloe,3,2,0,10,,,,,,,,,,,{},{} -705,Clover,Clover,3,10,0,10,,,,,,,,,,,{},{} -706,Four_Leaf_Clover,Four-Leaf Clover,3,80000,0,10,,,,,,,,,,,{},{} -707,Singing_Plant,Singing Plant,3,2,0,10,,,,,,,,,,,{},{} -708,Ment,Ment,3,2,0,10,,,,,,,,,,,{},{} -709,Izidor,Izidor,3,2,0,10,,,,,,,,,,,{},{} -710,Illusion_Flower,Illusion Flower,3,2,0,10,,,,,,,,,,,{},{} -711,Shoot,Shoot,3,16,0,10,,,,,,,,,,,{},{} -712,Flower,Flower,3,2,0,10,,,,,,,,,,,{},{} -713,Empty_Bottle,Empty Bottle,3,6,0,20,,,,,,,,,,,{},{} -714,Emperium,Emperium,3,2,0,1000,,,,,,,,,,,{},{} -715,Yellow_Gemstone,Yellow Gemstone,3,600,0,30,,,,,,,,,,,{},{} -716,Red_Gemstone,Red Gemstone,3,600,0,30,,,,,,,,,,,{},{} -717,Blue_Gemstone,Blue Gemstone,3,600,0,30,,,,,,,,,,,{},{} -718,Garnet,Garnet,3,6000,0,100,,,,,,,,,,,{},{} -719,Amethyst,Amethyst,3,6000,0,100,,,,,,,,,,,{},{} -720,Aquamarine,Aquamarine,3,6000,0,100,,,,,,,,,,,{},{} -721,Emerald,Emerald,3,6000,0,100,,,,,,,,,,,{},{} -722,Pearl,Pearl,3,6000,0,100,,,,,,,,,,,{},{} -723,Ruby,Ruby,3,6000,0,100,,,,,,,,,,,{},{} -724,Cursed_Ruby,Cursed Ruby,3,1000,0,100,,,,,,,,,,,{},{} -725,Sardonyx,Sardonyx,3,6000,0,100,,,,,,,,,,,{},{} -726,Sapphire,Sapphire,3,6000,0,100,,,,,,,,,,,{},{} -727,Opal,Opal,3,6000,0,100,,,,,,,,,,,{},{} -728,Topaz,Topaz,3,6000,0,100,,,,,,,,,,,{},{} -729,Zircon,Zircon,3,6000,0,100,,,,,,,,,,,{},{} -730,1_Carat_Diamond,1 Carat Diamond,3,10000,0,100,,,,,,,,,,,{},{} -731,2_Carat_Diamond,2 Carat Diamond,3,25000,0,100,,,,,,,,,,,{},{} -732,3_Carat_Diamond,3 Carat Diamond,3,55000,0,100,,,,,,,,,,,{},{} -733,Cracked_Diamond,Cracked Diamond,3,2,0,100,,,,,,,,,,,{},{} -734,Red_Frame,Red Frame,3,3000,0,200,,,,,,,,,,,{},{} -735,Chung_Jah,Chung Jah,3,5000,0,500,,,,,,,,,,,{},{} -736,China,China,3,1000,0,300,,,,,,,,,,,{},{} -737,Black_Ladle,Black Ladle,3,400,0,50,,,,,,,,,,,{},{} -738,Pencil_Case,Pencil Case,3,300,0,100,,,,,,,,,,,{},{} -739,Rouge,Rouge,3,10000,0,10,,,,,,,,,,,{},{} -740,Puppet,Puppet,3,1000,0,100,,,,,,,,,,,{},{} -741,Poring_Doll,Poring Doll,3,1800,0,100,,,,,,,,,,,{},{} -742,Chonchon_Doll,Chonchon Doll,3,3000,1000,100,,,,,,,,,,,{},{} -743,Spore_Doll,Spore Doll,3,5500,0,100,,,,,,,,,,,{},{} -744,Bouquet,Bouquet,3,2000,0,50,,,,,,,,,,,{},{} -745,Wedding_Bouquet,Wedding Bouquet,3,10000,0,50,,,,,,,,,,,{},{} -746,Glass_Bead,Glass Bead,3,1400,0,50,,,,,,,,,,,{},{} -747,Crystal_Mirror,Crystal Mirror,3,15000,0,50,,,,,,,,,,,{},{} -748,Witherless_Rose,Witherless Rose,3,55000,0,10,,,,,,,,,,,{},{} -749,Frozen_Rose,Frozen Rose,3,35000,0,10,,,,,,,,,,,{},{} -750,Baphomet_Doll,Baphomet Doll,3,18000,0,100,,,,,,,,,,,{},{} -751,Osiris_Doll,Osiris Doll,3,14000,0,100,,,,,,,,,,,{},{} -752,Rocker_Doll,Grasshopper Doll,3,4000,0,100,,,,,,,,,,,{},{} -753,Yoyo_Doll,Yoyo Doll,3,6000,0,100,,,,,,,,,,,{},{} -754,Raccoon_Doll,Raccoon Doll,3,5000,0,100,,,,,,,,,,,{},{} -756,Rough_Oridecon,Rough Oridecon,3,548,0,200,,,,,,,,,,,{},{} -757,Rough_Elunium,Rough Elunium,3,648,0,200,,,,,,,,,,,{},{} -901,Danggie,Danggie,3,250,0,10,,,,,,,,,,,{},{} -902,Tree_Root,Tree Root,3,12,0,10,,,,,,,,,,,{},{} -903,Reptile_Tongue,Reptile Tongue,3,50,0,10,,,,,,,,,,,{},{} -904,Scorpion_Tail,Scorpion Tail,3,124,0,10,,,,,,,,,,,{},{} -905,Stem,Stem,3,58,0,10,,,,,,,,,,,{},{} -906,Pointed_Scale,Pointed Scale,3,70,0,10,,,,,,,,,,,{},{} -907,Resin,Resin,3,120,0,10,,,,,,,,,,,{},{} -908,Spawn,Spawn,3,148,0,10,,,,,,,,,,,{},{} -909,Jellopy,Jellopy,3,6,0,10,,,,,,,,,,,{},{} -910,Garlet,Garlet,3,40,0,10,,,,,,,,,,,{},{} -911,Scell,Scell,3,160,0,10,,,,,,,,,,,{},{} -912,Zargon,Zargon,3,480,0,10,,,,,,,,,,,{},{} -913,Tooth_of_Bat,Tooth of Bat,3,34,0,10,,,,,,,,,,,{},{} -914,Fluff,Fluff,3,8,0,10,,,,,,,,,,,{},{} -915,Chrysalis,Chrysalis,3,8,0,10,,,,,,,,,,,{},{} -916,Feather_of_Birds,Feather of Birds,3,10,0,10,,,,,,,,,,,{},{} -917,Talon,Talon,3,20,0,10,,,,,,,,,,,{},{} -918,Sticky_Webfoot,Sticky Webfoot,3,20,0,10,,,,,,,,,,,{},{} -919,Animal_Skin,Animal Skin,3,36,0,10,,,,,,,,,,,{},{} -920,Wolf_Claw,Wolf Claw,3,58,0,10,,,,,,,,,,,{},{} -921,Mushroom_Spore,Mushroom Spore,3,36,0,10,,,,,,,,,,,{},{} -922,Orc's_Fang,Orcish Fang,3,220,0,10,,,,,,,,,,,{},{} -923,Evil_Horn,Evil Horn,3,1020,0,10,,,,,,,,,,,{},{} -924,Powder_of_Butterfly,Powder of Butterfly,3,90,0,10,,,,,,,,,,,{},{} -925,Bill_of_Birds,Bill of Birds,3,64,0,10,,,,,,,,,,,{},{} -926,Snake_Scale,Snake Scale,3,82,0,10,,,,,,,,,,,{},{} -928,Insect_Feeler,Insect Feeler,3,114,0,10,,,,,,,,,,,{},{} -929,Immortal_Heart,Immortal Heart,3,374,0,10,,,,,,,,,,,{},{} -930,Rotten_Bandage,Rotten Bandage,3,358,0,10,,,,,,,,,,,{},{} -931,Orcish_Voucher,Orcish Voucher,3,168,0,10,,,,,,,,,,,{},{} -932,Skel-Bone,Skel-Bone,3,232,0,10,,,,,,,,,,,{},{} -934,Memento,Memento,3,600,0,10,,,,,,,,,,,{},{} -935,Shell,Shell,3,14,0,10,,,,,,,,,,,{},{} -936,Scale_Shell,Scale Shell,3,466,0,10,,,,,,,,,,,{},{} -937,Venom_Canine,Venom Canine,3,148,0,10,,,,,,,,,,,{},{} -938,Sticky_Mucus,Sticky Mucus,3,70,0,10,,,,,,,,,,,{},{} -939,Bee_Sting,Bee Sting,3,32,0,10,,,,,,,,,,,{},{} -940,Grasshopper's_Leg,Grasshoppers Leg,3,36,0,10,,,,,,,,,,,{},{} -941,Nose_Ring,Nose Ring,3,568,0,10,,,,,,,,,,,{},{} -942,Yoyo_Tail,Yoyo Tail,3,114,0,10,,,,,,,,,,,{},{} -943,Solid_Shell,Solid Shell,3,448,0,10,,,,,,,,,,,{},{} -944,Horseshoe,Horseshoe,3,588,0,10,,,,,,,,,,,{},{} -945,Raccoon_Leaf,Raccoon Leaf,3,106,0,10,,,,,,,,,,,{},{} -946,Snail's_Shell,Snails Shell,3,64,0,10,,,,,,,,,,,{},{} -947,Horn,Horn,3,116,0,10,,,,,,,,,,,{},{} -948,Bear's_Footskin,Bears Footskin,3,174,0,10,,,,,,,,,,,{},{} -949,Feather,Feather,3,20,0,10,,,,,,,,,,,{},{} -950,Heart_of_Mermaid,Heart of Mermaid,3,264,0,10,,,,,,,,,,,{},{} -951,Fin,Fin,3,412,0,10,,,,,,,,,,,{},{} -952,Cactus_Needle,Cactus Needle,3,82,0,10,,,,,,,,,,,{},{} -953,Stone_Heart,Stone Heart,3,184,0,10,,,,,,,,,,,{},{} -954,Shining_Scale,Shining Scale,3,466,0,10,,,,,,,,,,,{},{} -955,Worm_Peeling,Worm Peeling,3,52,0,10,,,,,,,,,,,{},{} -956,Gill,Gill,3,342,0,10,,,,,,,,,,,{},{} -957,Decayed_Nail,Decayed Nail,3,82,0,10,,,,,,,,,,,{},{} -958,Horrendous_Mouth,Horrendous Mouth,3,390,0,10,,,,,,,,,,,{},{} -959,Stinky_Scale,Stinky Scale,3,168,0,10,,,,,,,,,,,{},{} -960,Nipper,Nipper,3,114,0,10,,,,,,,,,,,{},{} -961,Conch,Conch,3,158,0,10,,,,,,,,,,,{},{} -962,Tentacle,Tentacle,3,70,0,10,,,,,,,,,,,{},{} -963,Sharp_scale,Sharp Scale,3,250,0,10,,,,,,,,,,,{},{} -964,Crab_Shell,Crab Shell,3,90,5,10,,,,,,,,,,,{},{} -965,Clam_Shell,Clam Shell,3,56,5,10,,,,,,,,,,,{},{} -966,Clam_Flesh,Clam Flesh,3,158,0,10,,,,,,,,,,,{},{} -967,Turtle_Shell,Turtle Shell,3,680,0,10,,,,,,,,,,,{},{} -968,Heroic_Emblem,Heroic Emblem,3,3000,0,10,,,,,,,,,,,{},{} -969,Gold,Gold,3,200000,0,200,,,,,,,,,,,{},{} -970,Alcohol,Alcohol,3,400,0,30,,,,,,,,,,,{},{} -971,Detrimindexta,Detrimindexta,3,400,0,30,,,,,,,,,,,{},{} -972,Karvodailnirol,Karvodailnirol,3,400,0,30,,,,,,,,,,,{},{} -973,Counteragent,Counteragent,3,200,0,70,,,,,,,,,,,{},{} -974,Mixture,Mixture,3,200,0,70,,,,,,,,,,,{},{} -975,Scarlet_Dyestuffs,Scarlet Dyestuffs,3,1000,0,150,,,,,,,,,,,{},{} -976,Lemon_Dyestuffs,Lemon Dyestuffs,3,1000,0,150,,,,,,,,,,,{},{} -978,Cobaltblue_Dyestuff,Cobaltblue Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} -979,Darkgreen_Dyestuff,Darkgreen Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} -980,Orange_Dyestuff,Orange Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} -981,Violet_Dyestuff,Violet Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} -982,White_Dyestuff,White Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} -983,Black_Dyestuff,Black Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} -984,Oridecon,Oridecon,3,1100,0,200,,,,,,,,,,,{},{} -985,Elunium,Elunium,3,1100,0,200,,,,,,,,,,,{},{} -986,Anvil,Anvil,3,30000,0,500,,,,,,,,,,,{},{} -987,Oridecon_Anvil,Oridecon Anvil,3,120000,0,700,,,,,,,,,,,{},{} -988,Golden_Anvil,Golden Anvil,3,300000,0,900,,,,,,,,,,,{},{} -989,Emperium_Anvil,Emperium Anvil,3,600000,0,1000,,,,,,,,,,,{},{} -990,Red_Blood,Red Blood,3,1000,0,50,,,,,,,,,,,{},{} -991,Crystal_Blue,Crystal Blue,3,1000,0,50,,,,,,,,,,,{},{} -992,Wind_of_Verdure,Wind of Verdure,3,1000,0,50,,,,,,,,,,,{},{} -993,Green_Live,Green Live,3,1000,0,50,,,,,,,,,,,{},{} -994,Flame_Heart,Flame Heart,3,3000,0,300,,,,,,,,,,,{},{} -995,Mystic_Frozen,Mystic Frozen,3,3000,0,300,,,,,,,,,,,{},{} -996,Rough_Wind,Rough Wind,3,3000,0,300,,,,,,,,,,,{},{} -997,Great_Nature,Great Nature,3,3000,0,300,,,,,,,,,,,{},{} -998,Iron,Iron,3,100,0,50,,,,,,,,,,,{},{} -999,Steel,Steel,3,1000,0,100,,,,,,,,,,,{},{} -1000,Star_Crumb,Star Crumb,3,4500,0,100,,,,,,,,,,,{},{} -1001,Star_Dust,Star Dust,3,1500,0,10,,,,,,,,,,,{},{} -1002,Iron_Ore,Iron Ore,3,50,0,150,,,,,,,,,,,{},{} -1003,Coal,Coal,3,500,0,50,,,,,,,,,,,{},{} -1004,Chivalry_Emblem,Chivalry Emblem,3,2,0,100,,,,,,,,,,,{},{} -1005,Hammer_of_Blacksmith,Hammer of Blacksmith,3,2,0,800,,,,,,,,,,,{},{} -1006,Old_Magic_Book,Old Magic Book,3,2,0,30,,,,,,,,,,,{},{} -1007,Necklace_of_Wisdom,Necklace of Wisdom,3,2,0,40,,,,,,,,,,,{},{} -1008,Necklace_of_Oblivion,Necklace of Oblivion,3,2,0,100,,,,,,,,,,,{},{} -1009,Hand_of_God,Hand of God,3,2,0,20,,,,,,,,,,,{},{} -1010,Phracon,Phracon,3,200,0,200,,,,,,,,,,,{},{} -1011,Emveretarcon,Emveretarcon,3,1000,0,200,,,,,,,,,,,{},{} -1012,Frill,Frill,3,250,0,10,,,,,,,,,,,{},{} -1013,Rainbow_Shell,Rainbow Shell,3,90,0,10,,,,,,,,,,,{},{} -1014,Ant_Jaw,Ant Jaw,3,232,0,10,,,,,,,,,,,{},{} -1015,Tongue,Tongue,3,528,0,10,,,,,,,,,,,{},{} -1016,Rat_Tail,Rat Tail,3,52,0,10,,,,,,,,,,,{},{} -1017,Mole_Whiskers,Mole Whiskers,3,106,0,10,,,,,,,,,,,{},{} -1018,Mole_Claw,Mole Claw,3,210,0,10,,,,,,,,,,,{},{} -1019,Trunk,Trunk,3,60,0,10,,,,,,,,,,,{},{} -1020,Black_Hair,Black Hair,3,292,0,10,,,,,,,,,,,{},{} -1021,Dokkaebi_Horn,Dokkaebi Horn,3,292,0,10,,,,,,,,,,,{},{} -1022,Nine_Tails,Nine Tails,3,650,0,10,,,,,,,,,,,{},{} -1023,Fish_Tail,Fish Tail,3,196,0,10,,,,,,,,,,,{},{} -1024,Squid_Ink,Squid Ink,3,264,0,10,,,,,,,,,,,{},{} -1025,Cobweb,Cobweb,3,184,0,10,,,,,,,,,,,{},{} -1026,Acorn,Acorn,3,98,0,10,,,,,,,,,,,{},{} -1027,Porcupine_Quill,Porcupine Quill,3,158,0,10,,,,,,,,,,,{},{} -1028,Mane,Mane,3,196,0,10,,,,,,,,,,,{},{} -1029,Tiger_Skin,Tiger Skin,3,548,0,10,,,,,,,,,,,{},{} -1030,Tiger's_Footskin,Tigers Footskin,3,1500,0,10,,,,,,,,,,,{},{} -1031,Mantis_Scythe,Mantis Scythe,3,196,0,10,,,,,,,,,,,{},{} -1032,Maneater_Blossom,Maneater Blossom,3,196,0,10,,,,,,,,,,,{},{} -1033,Maneater_Root,Maneater Root,3,208,0,10,,,,,,,,,,,{},{} -1034,Blue_Hair,Blue Hair,3,342,0,10,,,,,,,,,,,{},{} -1035,Dragon_Canine,Dragon Canine,3,484,0,10,,,,,,,,,,,{},{} -1036,Dragon_Scale,Dragon Scale,3,500,0,10,,,,,,,,,,,{},{} -1037,Dragon_Tail,Dragon Tail,3,1200,0,10,,,,,,,,,,,{},{} -1038,Little_Evil_Horn,Little Evil Horn,3,528,0,10,,,,,,,,,,,{},{} -1039,Little_Evil_Wing,Little Evil Wing,3,2000,0,10,,,,,,,,,,,{},{} -1040,Elder_Pixie's_Moustache,Elder Pixies Moustache,3,232,0,10,,,,,,,,,,,{},{} -1041,Lantern,Lantern,3,250,0,10,,,,,,,,,,,{},{} -1042,Bug_Leg,Bug Leg,3,430,0,10,,,,,,,,,,,{},{} -1043,Orc_Claw,Orc Claw,3,168,0,10,,,,,,,,,,,{},{} -1044,Zenorc's_Fang,Zenorcs Fang,3,264,0,10,,,,,,,,,,,{},{} -1045,Cultish_Masque,Cultish Masque,3,412,0,10,,,,,,,,,,,{},{} -1046,Scorpion_Nipper,Scorpion Nipper,3,614,0,10,,,,,,,,,,,{},{} -1047,Dead_Medusa,Dead Medusa,3,548,0,10,,,,,,,,,,,{},{} -1048,Horrendous_Hair,Horrendous Hair,3,800,0,10,,,,,,,,,,,{},{} -1049,Skirt_of_Virgin,Skirt of Virgin,3,1700,0,10,,,,,,,,,,,{},{} -1050,Tendon,Tendon,3,220,0,10,,,,,,,,,,,{},{} -1051,Detonator,Detonator,3,450,0,10,,,,,,,,,,,{},{} -1052,Single_Cell,Single Cell,3,46,0,10,,,,,,,,,,,{},{} -1053,Ancient_Tooth,Ancient Tooth,3,548,0,10,,,,,,,,,,,{},{} -1054,Ancient_Lips,Ancient Lips,3,1000,0,10,,,,,,,,,,,{},{} -1055,Earthworm_Peeling,Earthworm Peeling,3,196,0,10,,,,,,,,,,,{},{} -1056,Grit,Grit,3,306,0,10,,,,,,,,,,,{},{} -1057,Moth_Dust,Moth Dust,3,138,0,10,,,,,,,,,,,{},{} -1058,Moth_Wings,Moth Wings,3,200,0,10,,,,,,,,,,,{},{} -1059,Fabric,Fabric,3,306,0,10,,,,,,,,,,,{},{} -1060,Golden_Hair,Golden Hair,3,430,0,10,,,,,,,,,,,{},{} -1061,Witched_Starsand,Witched Starsand,3,484,0,10,,,,,,,,,,,{},{} -1062,Jack_o'_Pumpkin,Jack o' Pumpkin,3,374,0,10,,,,,,,,,,,{},{} -1063,Fang,Fang,3,680,0,10,,,,,,,,,,,{},{} -1064,Reins,Reins,3,802,0,10,,,,,,,,,,,{},{} -1065,Trap,Trap,3,100,0,10,,,,,,,,,,,{},{} -1066,Fine-grained_Trunk,Fine-grained Trunk,3,2,0,10,,,,,,,,,,,{},{} -1067,Solid_Trunk,Solid Trunk,3,2,0,10,,,,,,,,,,,{},{} -1068,Barren_Trunk,Barren Trunk,3,2,0,10,,,,,,,,,,,{},{} -1069,Orange_Net_Mushroom,Orange Net Mushroom,3,2,0,10,,,,,,,,,,,{},{} -1070,Orange_Gooey_Mushroom_,Orange Gooey Mushroom,3,2,0,10,,,,,,,,,,,{},{} -1071,Unknown_Test_Tube,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} -1072,Delivery_Message,DEL Message,3,2,0,10,,,,,,,,,,,{},{} -1073,Voucher,Voucher,3,2,0,10,,,,,,,,,,,{},{} -1074,Voucher_,Voucher,3,2,0,10,,,,,,,,,,,{},{} -1075,Voucher__,Voucher,3,2,0,10,,,,,,,,,,,{},{} -1076,Voucher___,Voucher,3,2,0,10,,,,,,,,,,,{},{} -1077,Voucher____,Voucher,3,2,0,10,,,,,,,,,,,{},{} -1078,Voucher_____,Voucher,3,2,0,10,,,,,,,,,,,{},{} -1079,Voucher______,Voucher,3,2,0,10,,,,,,,,,,,{},{} -1080,Voucher_______,Voucher,3,2,0,10,,,,,,,,,,,{},{} -1081,Delivery_Box,DEL Box,3,2,0,1200,,,,,,,,,,,{},{} -1082,Delivery_Box_,DEL Box,3,2,0,1200,,,,,,,,,,,{},{} -1083,Delivery_Box__,DEL Box,3,2,0,1200,,,,,,,,,,,{},{} -1084,Kafra_Pass,Kafra Pass,3,0,0,10,,,,,,,,,,,{},{} -1085,Unknown_Test_Tube_,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} -1086,Unknown_Test_Tube__,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} -1087,Unknown_Test_Tube___,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} -1088,Morroc_Solution,Morocc Solution,3,2,0,30,,,,,,,,,,,{},{} -1089,Payon_Solution,Payon Solution,3,2,0,30,,,,,,,,,,,{},{} -1090,Unknown_Test_Tube____,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} -1092,Empty_Test_Tube,Empty Testtube,3,3,0,20,,,,,,,,,,,{},{} -1093,Empty_Potion_Bottle,Empty Potion Bottle,3,10,0,10,,,,,,,,,,,{},{} -1094,Short_Daenggie,Short Daenggie,3,278,0,10,,,,,,,,,,,{},{} -1095,Clock_Hand,Needle of Alarm,3,546,0,10,,,,,,,,,,,{},{} -1096,Round_Shell,Round Shell,3,954,0,10,,,,,,,,,,,{},{} -1097,Worn_Out_Page,Worn Out Page,3,820,0,10,,,,,,,,,,,{},{} -1098,Manacles,Manacles,3,658,0,10,,,,,,,,,,,{},{} -1099,Worn-out_Prison_Uniform,Worn-out Prison Uniform,3,680,0,10,,,,,,,,,,,{},{} - -// Weapons -//=================================================================== -// 1 Handed Swords -1101,Sword,Sword,4,100,0,500,25,,1,3,8803555,2,2,1,2,2,{},{} -1102,Sword_,Sword,4,100,0,500,25,,1,4,8803555,2,2,1,2,2,{},{} -1103,Sword__,Sword,4,100,0,500,25,,1,0,8803555,2,2,1,2,2,{},{} -1104,Falchion,Falchion,4,1500,0,600,39,,1,3,8803555,2,2,1,2,2,{},{} -1105,Falchion_,Falchion,4,1500,0,600,39,,1,4,8803555,2,2,1,2,2,{},{} -1106,Falchion__,Falchion,4,1500,0,600,39,,1,0,8803555,2,2,1,2,2,{},{} -1107,Blade,Blade,4,2900,0,700,53,,1,3,8803555,2,2,1,2,2,{},{} -1108,Blade_,Blade,4,2900,0,700,53,,1,4,8803555,2,2,1,2,2,{},{} -1109,Blade__,Blade,4,2900,0,700,53,,1,0,8803555,2,2,1,2,2,{},{} -1110,Rapier,Rapier,4,10000,0,500,70,,1,2,8803555,2,2,2,14,2,{},{} -1111,Rapier_,Rapier,4,10000,0,500,70,,1,3,8803555,2,2,2,14,2,{},{} -1112,Rapier__,Rapier,4,10000,0,500,70,,1,0,8803555,2,2,2,14,2,{},{} -1113,Scimiter,Scimiter,4,17000,0,700,85,,1,2,8803555,2,2,2,14,2,{},{} -1114,Scimiter_,Scimiter,4,17000,0,700,85,,1,3,8803555,2,2,2,14,2,{},{} -1115,Scimiter__,Scimiter,4,17000,0,700,85,,1,0,8803555,2,2,2,14,2,{},{} -1116,Katana,Katana,4,2000,0,1000,60,,1,3,16514,2,34,1,4,3,{},{} -1117,Katana_,Katana,4,2000,0,1000,60,,1,4,16514,2,34,1,4,3,{},{} -1118,Katana__,Katana,4,2000,0,1000,60,,1,0,16514,2,34,1,4,3,{},{} -1119,Tsurugi,Tsurugi,4,51000,0,1200,130,,1,1,414946,2,2,3,27,2,{},{} -1120,Tsurugi_,Tsurugi,4,51000,0,1200,130,,1,2,414946,2,2,3,27,2,{},{} -1121,Tsurugi__,Tsurugi,4,51000,0,1200,130,,1,0,414946,2,2,3,27,2,{},{} -1122,Ring_Pommel_Saber,Ring Pommel Saber,4,24000,0,900,100,,1,2,414946,2,2,2,14,2,{},{} -1123,Haedonggum,Haedonggum,4,50000,0,900,120,,1,1,414946,2,2,3,27,2,{},{ bonus bInt,3; },,,,,, -1124,Orcish_Sword,Orcish sword,4,20,0,800,90,,1,0,8803555,2,2,3,5,2,{},{ bonus bUnbreakable,100; },,,,,,, -1125,Ring_Pommel_Saber_,Ring Pommel Saber,4,24000,0,900,100,,1,3,414946,2,2,2,14,2,{},{},,,,,,, -1126,Saber,Saber,4,49000,0,1000,115,,1,2,414946,2,2,3,27,2,{},{},,,,,,, -1127,Saber_,Saber,4,49000,0,1000,115,,1,3,414946,2,2,3,27,2,{},{},,,,,,, -1128,Haedonggum_,Haedonggum,4,50000,0,900,120,,1,2,414946,2,2,3,27,2,{},{ bonus bInt,3; },,,,,, -1129,Flamberge,Flamberge,4,60000,0,1500,150,,1,0,16512,2,2,3,27,2,{},{},,,,,,, -1130,Nagan,Nagan,4,20,0,500,120,,1,0,414946,2,2,4,40,2,{},{ bonus bDoubleRate,25; bonus2 bAddRace,7,5; },,,, -1131,Ice_Falchion,Ice Falchion,4,20,0,600,100,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,1; skill 14,3; bonus2 bAddEff,Eff_Freeze,500; bonus3 bAutoSpell,14,3,25; } -1132,Edge,Edge,4,20,0,700,115,,1,0,414946,2,2,4,40,2,{},{ bonus2 bAddEff,Eff_Curse,300; bonus2 bWeaponComaRace,11,10; },,, -1133,Fire_Brand,Fire Brand,4,20,0,500,100,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,3; skill 19,3; bonus3 bAutoSpell,19,3,25; },, -1134,Caesar's_Sword,Caesar's Sword,4,20,0,700,140,,1,0,414946,2,2,4,40,2,{},{ bonus2 bAddRace,3,25; bonus bIgnoreDefRace,3; },,,, -1135,Cutlas,Cutlas,4,20,0,900,150,,1,0,414946,2,2,4,40,2,{},{ skill 5,5; bonus bStr,2; bonus bDef,1; },,,, -1136,Solar_Sword,Solar Sword,4,20,0,1200,85,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,3; bonus2 bHPDrainRate,100,1; bonus2 bSPDrainRate,5,-15; },,,, -1137,Excalibur,Excalibur,4,20,0,1200,150,,1,0,414946,2,2,4,40,2,{},{ bonus bInt,5; bonus bLuk,10; bonus bDex,-1; bonus bAtkEle,6; },,, -1138,Mysteltainn_,Mysteltainn,4,20,0,1000,170,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,7; bonus2 bAddEle,8,15; bonus2 bAddEff,Eff_Stone,100; bonus bDex,3; }, -1139,Talefing_,Talefing,4,20,0,1000,200,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,7; bonus2 bSPDrainRate,5,-35; },,,,,,,,, -1140,Byeollungum,Byeollungum,4,20,0,900,150,,1,0,414946,2,2,4,40,2,{},{ bonus2 bSubRace,11,-10; bonus2 bAddRace,10,50; bonus bAllStats,2; } -1141,Immaterial_Sword,Immaterial Sword,4,20,0,900,140,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,8; bonus2 bSPDrainRate,1,30; bonus2 bSPDrainRate,100,-1; },,,,,,,,, -1142,Jewel_Sword,Crystal Sword,4,20,0,2200,104,,1,0,414946,2,2,3,68,2,{},{},,,,,,,,,, -1143,Gaia_Sword,Gaia Sword,4,20,0,2500,115,,1,0,414946,2,2,3,74,2,{},{ bonus3 bAddMonsterDropItem,1002,50,25000; },,,,,,,,,, -1144,Sashimi,Sashimi,4,20,0,1400,75,,1,0,414946,2,2,3,48,2,{},{ bonus bAtkEle,4; bonus3 bAddMonsterDropItem,544,5,4000; },,,,,, -1145,Holy_Avenger,Holy Avenger,4,20,0,1350,125,,1,0,16384,2,2,3,75,2,{},{ bonus bAtkEle,6; },,,,,,,, -// 2 Handed Swords -1151,Slayer,Slayer,4,15000,0,1300,90,,1,2,16514,2,34,2,18,3,{},{},,,,,,,,,, -1152,Slayer_,Slayer,4,15000,0,1300,90,,1,3,16514,2,34,2,18,3,{},{},,,,,,,,,, -1153,Slayer__,Slayer,4,15000,0,1300,90,,1,0,16514,2,34,2,18,3,{},{},,,,,,,,,, -1154,Bastard_Sword,Bastard Sword,4,22500,0,1600,115,,1,2,16514,2,34,2,18,3,{},{},,,,,,,,,, -1155,Bastard_Sword_,Bastard Sword,4,22500,0,1600,115,,1,3,16514,2,34,2,18,3,{},{},,,,,,,,,, -1156,Bastard_Sword__,Bastard Sword,4,22500,0,1600,115,,1,0,16514,2,34,2,18,3,{},{},,,,,,,,,, -1157,Two_handed_Sword,Two-handed Sword,4,60000,0,2200,160,,1,1,16514,2,34,3,33,3,{},{},,,,,,,,,, -1158,Two_handed_Sword_,Two-handed Sword,4,60000,0,2200,160,,1,2,16514,2,34,3,33,3,{},{},,,,,,,,,, -1159,Two_handed_Sword__,Two-handed Sword,4,60000,0,2200,160,,1,0,16514,2,34,3,33,3,{},{},,,,,, -1160,Broad_Sword,Broad Sword,4,65000,0,2000,140,,1,1,16514,2,34,3,33,3,{},{ bonus bDef,5; },,,,, -1161,Balmung,Balmung,4,20,0,1000,250,,2,0,2088959,2,2,4,48,1,{},{ bonus bInt,20; bonus bLuk,20; },,,, -1162,Broad_Sword_,Broad Sword,4,65000,0,2000,140,,1,2,16514,2,34,3,33,3,{},{ bonus bDef,5; },,,,, -1163,Claymore,Claymore,4,74000,0,2500,180,,1,0,16512,2,34,3,33,3,{},{},,,,,, -1164,Muramasa,Muramasa,4,20,0,1000,155,,1,0,16514,2,34,4,48,3,{},{ bonus bCritical,30; bonus bAspdAddRate,8; bonus2 bAddEff2,Eff_Curse,200; },, -1165,Masamune,Masamune,4,20,0,1000,200,,1,0,16514,2,34,4,48,3,{},{ bonus bFlee,30; bonus bStr,-5; bonus bAspd,2; bonus bDefRate,-50; bonus bDef2Rate,-50; }, -1166,Dragon_Slayer,Dragon Slayer,4,20,0,1300,150,,1,0,16514,2,34,4,48,3,{},{ bonus bIgnoreDefRace,9; bonus2 bAddRace,9,15; },,, -1167,Schweizersabel,Schweizersabel,4,20,0,1600,160,,1,0,16514,2,34,4,48,3,{},{ bonus bAtkEle,4; skill 20,3; bonus bDef,1; bonus3 bAutoSpell,20,3,25; } -1168,Zweihander,Zweihander,4,20,0,2200,200,,1,0,16514,2,34,4,48,3,{},{bonus bUnbreakable,100; },,,,,, -1169,Executioner_,Executioner,4,20,0,2200,155,,1,0,16514,2,34,4,48,3,{},{ bonus bIgnoreDefRace,7; bonus2 bAddRace,7,20; bonus2 bSubRace,7,-10; bonus bAtkEle,7; } -1170,Katzbalger,Katzbalger,4,20,0,2000,175,,1,0,16514,2,34,4,48,3,{},{ bonus bVit,10; bonus bDef,10; },,,, -// Knifes and Daggers -1201,Knife,Knife,4,50,0,400,17,,1,3,10444527,2,2,1,1,1,{},{},,,,,, -1202,Knife_,Knife,4,50,0,400,17,,1,4,10444527,2,2,1,1,1,{},{},,,,,, -1203,Knife__,Knife,4,50,0,400,17,,1,0,10444527,2,2,1,1,1,{},{},,,,,, -1204,Cutter,Cutter,4,1250,0,500,30,,1,3,10444527,2,2,1,1,1,{},{} -1205,Cutter_,Cutter,4,1250,0,500,30,,1,4,10444527,2,2,1,1,1,{},{} -1206,Cutter__,Cutter,4,1250,0,500,30,,1,0,10444527,2,2,1,1,1,{},{} -1207,Main_Gauche,Main Gauche,4,2400,0,600,43,,1,3,10444527,2,2,1,1,1,{},{} -1208,Main_Gauche_,Main Gauche,4,2400,0,600,43,,1,4,10444527,2,2,1,1,1,{},{} -1209,Main_Gauche__,Main Gauche,4,2400,0,600,43,,1,0,10444527,2,2,1,1,1,{},{} -1210,Dirk,Dirk,4,8500,0,500,59,,1,2,10444527,2,2,2,12,1,{},{} -1211,Dirk_,Dirk,4,8500,0,500,59,,1,3,10444527,2,2,2,12,1,{},{} -1212,Dirk__,Dirk,4,8500,0,500,59,,1,0,10444527,2,2,2,12,1,{},{} -1213,Dagger,Dagger,4,14000,0,600,73,,1,2,10444527,2,2,2,12,1,{},{} -1214,Dagger_,Dagger,4,14000,0,600,73,,1,3,10444527,2,2,2,12,1,{},{} -1215,Dagger__,Dagger,4,14000,0,600,73,,1,0,10444527,2,2,2,12,1,{},{} -1216,Stiletto,Stiletto,4,19500,0,700,87,,1,2,10444527,2,2,2,12,1,{},{} -1217,Stiletto_,Stiletto,4,19500,0,700,87,,1,3,10444527,2,2,2,12,1,{},{} -1218,Stiletto__,Stiletto,4,19500,0,700,87,,1,0,10444527,2,2,2,12,1,{},{} -1219,Gladius,Gladius,4,43000,0,700,105,,1,2,2055918,2,2,3,24,1,{},{} -1220,Gladius_,Gladius,4,43000,0,700,105,,1,3,2055918,2,2,3,24,1,{},{},,,,,, -1221,Gladius__,Gladius,4,43000,0,700,105,,1,0,2055918,2,2,3,24,1,{},{},,,,,, -1222,Damascus,Damascus,4,49000,0,800,118,,1,1,2055918,2,2,3,24,1,{},{},,,,,, -1223,Fortune_Sword,Fortune Sword,4,20,0,500,90,,1,0,2055918,2,2,4,24,1,{},{ bonus bLuk,5; bonus bFlee2,20; },,,, -1224,Sword_Breaker,Swordbreaker,4,20,0,1000,70,,1,0,2055918,2,2,4,36,1,{},{ bonus bBreakWeaponRate,500; },,,,,, -1225,Mail_Breaker,Mailbreaker,4,20,0,1000,70,,1,0,2055918,2,2,4,36,1,{},{ bonus bBreakArmorRate,500; },,,,,, -1226,Damascus_,Damascus,4,49000,0,800,118,,1,2,2055918,2,2,3,24,1,{},{},,,,,, -1227,Weeder_Knife,Weeder Knife,4,20,0,400,80,,1,0,2055918,2,2,4,36,1,{},{ bonus bIgnoreDefRace,3; bonus2 bAddRace,3,15; bonus2 bSubRace,3,15; }, -1228,Combat_Knife,Combat Knife,4,20,0,400,80,,1,0,2055918,2,2,4,36,1,{},{ bonus bIgnoreDefRace,7; bonus2 bSubRace,7,10; bonus2 bSubRace,6,-10; }, -1229,Mama's_Knife,Mama's Knife,4,20,0,500,75,,1,0,2055918,2,2,4,36,1,{},{ bonus bCritical,30; bonus2 bAddRace,7,3; bonus3 bAddMonsterDropItem,517,2,5000; } -1230,House_Auger,House Auger,4,20,0,600,80,,1,0,2055918,2,2,4,36,1,{},{ bonus bDefRatioAtkRace,10; bonus bDefRatioAtkRace,11; },,,, -1231,Bazerald,Bazerald,4,20,0,500,70,,1,0,2055918,2,2,4,36,1,{},{ bonus bAtkEle,3; bonus bInt,5; bonus bMatkRate,10; },,, -1232,Assassin_Dagger,Assasin Dagger,4,20,0,600,140,,1,0,4096,2,2,4,36,1,{},{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdAddRate,2; bonus bAtkEle,7; },, -1233,Exercise,Excorcise,4,20,0,700,90,,1,0,2055918,2,2,4,36,1,{},{ bonus bIgnoreDefRace,6; bonus2 bSubRace,6,5; bonus2 bSubRace,7,-10; }, -1234,Moonlight_Sword,Walgwanggum,4,20,0,700,50,,1,0,2055918,2,2,4,36,1,{},{ bonus bMaxSPrate,10; bonus2 bSPDrainRate,100,3; },,,,, -1235,Azoth,Azoth,4,20,0,700,110,,1,0,262144,2,2,4,36,1,{},{ bonus bClassChange,50; },,,,,, -1236,Sucsamad,Sucsamad,4,20,0,800,140,,1,0,2055918,2,2,4,36,1,{},{ bonus2 bAddEle,2,10; bonus2 bAddEle,4,10; bonus bUnbreakable,100; },, -1237,Grimtooth_,Grimtooth,4,20,0,800,180,,1,0,2055918,2,2,4,36,1,{},{ bonus bFlee,10; bonus bFlee2,5; bonus bDefRate,-50; bonus bDef2Rate,-50; },, -1238,Zeny_Knife,Zeny Knife,4,20,0,1200,64,,1,0,2055918,2,2,3,40,1,{},{ bonus bGetZenyNum,100; },,,,, -1239,Poison_Knife,Poison Knife,4,20,0,800,64,,1,0,2055918,2,2,3,65,1,{},{ bonus bAtkEle,5; bonus2 bAddEff,Eff_Poison,2000; },,,,, -1240,Princess_Knife,Princess Knife,4,20,0,400,84,,1,0,2055918,2,2,4,1,1,{},{ bonus bAllStats,1; } -1241,Cursed_Dagger,Cursed Dagger,4,20,0,400,55,,1,0,66052,2,2,4,85,1,{},{ bonus2 bAddEff,Eff_Curse,500; },,,, -1242,Counter_Dagger,Counter Dagger,4,20,0,550,75,,1,0,66052,2,2,4,55,1,{},{ bonus bCritical,5; bonus3 bAutoSpell,61,1,25; },,,,, -1243,Main_Gauche_For_Novice,Novice Main Gauche,4,20,0,1,45,,1,0,8388609,2,2,1,1,1,{},{},,,,,, -// Katars -1250,Jur,Jur,4,19500,0,800,125,,1,2,4096,2,34,2,18,16,{},{},,,,,, -1251,Jur_,Jur,4,19500,0,800,125,,1,3,4096,2,34,2,18,16,{},{},,,,,, -1252,Katar,Katar,4,41000,0,1200,148,,1,1,4096,2,34,3,33,16,{},{ bonus bDex,1; },,,,, -1253,Katar_,Katar,4,41000,0,1200,148,,1,2,4096,2,34,3,33,16,{},{ bonus bDex,1; },,,,, -1254,Jamadhar,Jamadhar,4,37200,0,1500,165,,1,0,4096,2,34,3,33,16,{},{},,,,,, -1255,Jamadhar_,Jamadhar,4,37200,0,1500,165,,1,1,4096,2,34,3,33,16,{},{},,,,,, -1256,Katar_of_Cold_Icicle,Katar of Cold Icicle,4,45000,0,1200,105,,1,0,4096,2,34,3,55,16,{},{ bonus bAtkEle,1; bonus2 bAddEff,Eff_Freeze,500; },,, -1257,Katar_of_Thornbush,Katar of Dusty Thornbush,4,45000,0,1200,105,,1,0,4096,2,34,3,55,16,{},{ bonus bAtkEle,2; bonus2 bAddEff,Eff_Blind,500; },, -1258,Katar_of_Raging_Blaze,Katar of Raging Blaze,4,45000,0,1200,105,,1,0,4096,2,34,3,55,16,{},{ bonus bAtkEle,3; bonus2 bAddEff,Eff_Silence,500; },, -1259,Katar_of_Piercing_Wind,Katar of Piercing Wind,4,45000,0,1200,105,,1,0,4096,2,34,3,55,16,{},{ bonus bAtkEle,4; bonus2 bAddEff,Eff_Sleep,500; },, -1260,Sharpened_Legbone_of_Ghoul,Sharpened Legbone of Ghoul,4,52500,0,1700,150,,1,0,4096,2,34,3,65,16,{},{ bonus bAtkEle,9; },,,, -1261,Infiltrator,Infiltrator,4,57000,0,1500,140,,1,0,4096,2,34,4,75,16,{},{ bonus2 bAddRace,7,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; } -// Axes -1301,Axe,Axe,4,500,0,800,38,,1,3,8803555,2,2,1,3,6,{},{},,,,, -1302,Axe_,Axe,4,500,0,800,38,,1,4,8803555,2,2,1,3,6,{},{},,,,, -1303,Axe__,Axe,4,500,0,800,38,,1,0,8803555,2,2,1,3,6,{},{},,,,, -1304,Orcish_Axe,Orcish Axe,4,20,0,1500,75,,1,0,8803555,2,2,3,3,6,{},{},,,,, -1305,Cleaver,Cleaver,4,20,0,1200,140,,1,0,279714,2,2,4,44,6,{},{ bonus2 bAddRace,7,5; bonus3 bAddMonsterDropItem,517,2,3000; } -1306,War_Axe,War Axe,4,20,0,4200,145,,1,1,263168,2,2,3,76,6,{},{ bonus bDex,2; bonus bLuk,2; },,, -1351,Battle_Axe,Battle Axe,4,5400,0,1500,80,,1,3,279714,2,34,1,3,7,{},{},,,,, -1352,Battle_Axe_,Battle Axe,4,5400,0,1500,80,,1,4,279714,2,34,1,3,7,{},{},,,,, -1353,Battle_Axe__,Battle Axe,4,5400,0,1500,80,,1,0,279714,2,34,1,3,7,{},{},,,,, -1354,Hammer,Hammer,4,15500,0,2000,120,,1,2,279714,2,34,2,16,7,{},{},,,, -1355,Hammer_,Hammer,4,15500,0,2000,120,,1,3,279714,2,34,2,16,7,{},{},,,, -1356,Hammer__,Hammer,4,15500,0,2200,120,,1,0,279714,2,34,2,16,7,{},{},,,, -1357,Buster,Buster,4,34000,0,2200,155,,1,1,279714,2,34,3,30,7,{},{},,,, -1358,Buster_,Buster,4,34000,0,2200,155,,1,2,279714,2,34,3,30,7,{},{},,,, -1359,Buster__,Buster,4,34000,0,2200,155,,1,0,279714,2,34,3,30,7,{},{},,,, -1360,Two_handed_Axe,Two-handed Axe,4,55000,0,2500,185,,1,1,279714,2,34,3,30,7,{},{},,,, -1361,Two_handed_Axe_,Two-handed Axe,4,55000,0,2500,185,,1,2,279714,2,34,3,30,7,{},{},,,, -1362,Two_handed_Axe__,Two-handed Axe,4,55000,0,2500,185,,1,0,279714,2,34,3,30,7,{},{},,,, -1363,Blood_Axe,Bloody Axe,4,20,0,400,170,,1,0,279714,2,34,4,44,7,{},{ bonus bStr,10; bonus bSpeedRate,25; },, -1364,Great_Axe,Great Axe,4,20,0,1800,187,,1,0,279714,2,34,4,44,7,{},{ bonus2 bAddEff,Eff_Stan,1500; },, -1365,Sabbath,Sabbath,4,20,0,2300,120,,1,0,279714,2,34,4,44,7,{},{ bonus2 bWeaponComaRace,6,50; bonus bAtkEle,7; }, -1366,Light_Epsilon,Light Epsilon,4,20,0,2300,180,,1,0,279714,2,34,4,44,7,{},{ bonus bAtkEle,6; skill 28,3; bonus2 bAddRace,6,3; } -1367,Slaughter,Slaughter,4,20,0,2500,120,,1,0,279714,2,34,4,44,7,{},{ bonus bIgnoreDefRace,2; bonus2 bWeaponComaRace,2,50; }, -1368,Tomahawk,Tomahawk,4,20,0,2500,165,,1,0,279714,2,34,4,44,7,{},{ bonus bAtkEle,4; },,, -1369,Guillotine,Guillotine,4,20,0,3000,215,,1,0,279714,2,34,4,44,7,{},{ bonus2 bWeaponComaRace,7,30; bonus2 bSPDrainRate,5,2; },, -// Spears -1401,Javelin,Javelin,4,150,0,700,28,,3,3,16514,2,2,1,4,4,{},{},,, -1402,Javelin_,Javelin,4,150,0,700,28,,3,4,16514,2,2,1,4,4,{},{},,, -1403,Javelin__,Javelin,4,150,0,700,28,,3,0,16514,2,2,1,4,4,{},{},,, -1404,Spear,Spear,4,1700,0,850,44,,3,3,16514,2,2,1,4,4,{},{},,, -1405,Spear_,Spear,4,1700,0,850,44,,3,4,16514,2,2,1,4,4,{},{},,, -1406,Spear__,Spear,4,1700,0,850,44,,3,0,16514,2,2,1,4,4,{},{},,, -1407,Pike,Pike,4,3450,0,1000,60,,3,3,16514,2,2,1,4,4,{},{},,, -1408,Pike_,Pike,4,3450,0,1000,60,,3,4,16514,2,2,1,4,4,{},{},,, -1409,Pike__,Pike,4,3450,0,1000,60,,3,0,16514,2,2,1,4,4,{},{},,, -1410,Lance,Lance,4,60000,0,2500,185,,3,0,16514,2,34,3,33,5,{},{},,, -1411,Lance_,Lance,4,60000,0,2500,185,,3,0,16514,2,34,3,33,5,{},{},,, -1412,Lance__,Lance,4,60000,0,2500,185,,3,0,16514,2,34,3,33,5,{},{},,, -1413,Gungnir,Gungnir,4,20,0,500,120,,3,0,16514,2,2,4,4,4,{},{ bonus bPerfectHitRate,25; bonus bHit,30; } -1414,Gelerdria,Gelerdria,4,20,0,700,145,,3,0,16514,2,2,4,48,4,{},{ bonus bAtkEle,2; bonus bMaxHP,500; bonus bMaxSP,-50; } -1415,Skewer,Brocca,4,20,0,850,100,,3,0,16514,2,2,4,48,4,{},{ bonus bIgnoreDefRace,11; bonus2 bAddEle,0,25; } -1416,Tjungkuletti,Tjungkuletti,4,20,0,1000,95,,3,0,16514,2,2,4,48,4,{},{ bonus2 bSPDrainRate,100,1; bonus2 bSPDrainRate,1,5; },,, -1417,Pole_Axe,Pole Axe,4,20,0,3800,160,,3,1,16514,2,2,3,71,4,{},{ bonus bStr,1; bonus bInt,2; bonus bDex,1; } -1451,Guisarme,Guisarme,4,13000,0,1000,84,,3,2,16514,2,34,2,18,5,{},{},,, -1452,Guisarme_,Guisarme,4,13000,0,1000,84,,3,3,16514,2,34,2,18,5,{},{},,, -1453,Guisarme__,Guisarme,4,13000,0,1000,84,,3,0,16514,2,34,2,18,5,{},{},,, -1454,Glaive,Glaive,4,20000,0,1200,104,,3,2,16514,2,34,2,18,5,{},{},,, -1455,Glaive_,Glaive,4,20000,0,1200,104,,3,3,16514,2,34,2,18,5,{},{},,, -1456,Glaive__,Glaive,4,20000,0,1200,104,,3,0,16514,2,34,2,18,5,{},{},,, -1457,Partizan,Partizan,4,27000,0,2000,124,,3,1,16514,2,34,2,18,5,{},{},,, -1458,Partizan_,Partizan,4,27000,0,2000,124,,3,2,16514,2,34,2,18,5,{},{},,, -1459,Partizan__,Partizan,4,27000,0,2000,124,,3,0,16514,2,34,3,33,5,{},{},,, -1460,Trident,Trident,4,51000,0,1200,150,,3,2,16514,2,34,3,33,5,{},{},,, -1461,Trident_,Trident,4,51000,0,1200,150,,3,3,16514,2,34,3,33,5,{},{},,, -1462,Trident__,Trident,4,51000,0,1200,150,,3,0,16514,2,34,3,33,5,{},{},,, -1463,Halberd,Halberd,4,54000,0,2500,165,,3,1,16514,2,34,3,33,5,{},{},,, -1464,Halberd_,Halberd,4,54000,0,2500,165,,3,2,16514,2,34,3,33,5,{},{},,,,,,, -1465,Halberd__,Halberd,4,54000,0,2500,165,,3,0,16514,2,34,3,33,5,{},{},,,,,,, -1466,Crescent_Scythe,Crescent Scythe,4,20,0,2500,180,,3,0,16514,2,34,4,48,5,{},{ bonus bCritical,30; bonus bHit,10; },,,,, -1467,Bill_Guisarme,Bill Guisarme,4,20,0,1000,183,,3,0,16514,2,34,4,48,5,{},{ bonus2 bAddRace,2,10; bonus2 bAddRace,7,5; },,, -1468,Zephyrus,Zephyrus,4,20,0,2000,170,,3,0,16514,2,34,4,48,5,{},{ bonus bAtkEle,4; skill 21,3; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,21,3,25; } -1469,Longinus's_Spear,Longinus's Spear,4,20,0,2500,180,,3,0,16514,2,34,4,48,5,{},{ bonus bAtkEle,7; bonus2 bAddRace,7,10; bonus2 bAddRace,8,10; },, -1470,Brionac,Brionac,4,20,0,3000,190,,3,0,16514,2,34,4,48,5,{},{ bonus bAtkEle,6; skill 28,5; skill 13,3; bonus3 bAutoSpell,13,3,25; bonus2 bAddRace,10,5; }, -1471,Hellfire,Hellfire,4,20,0,3500,200,,3,0,16514,2,34,4,48,5,{},{ bonus bAtkEle,3; skill 17,3; bonus3 bAutoSpell,17,3,25; bonus bStr,3; },, -// 2 Handed Staffs -1472,Staff_of_Soul,Soul Staff,4,20,0,1400,25,,1,0,66052,2,34,3,73,10,{},{ bonus bInt,5; bonus bAgi,2; bonus bMatkRate,15; },,,, -1473,Wizardy_Staff,Wizardy Staff,4,20,0,2400,120,,1,0,66052,2,34,4,90,10,{},{ bonus bInt,6; bonus bDex,2; bonus bMatkRate,15; },,,, -// Clubs and Maces -1501,Club,Club,4,120,0,700,23,,1,3,8701363,2,2,1,2,8,{},{},,,,,,, -1502,Club_,Club,4,120,0,700,23,,1,4,8701363,2,2,1,2,8,{},{},,,,,,, -1503,Club__,Club,4,120,0,700,23,,1,0,8701363,2,2,1,2,8,{},{},,,,,,, -1504,Mace,Mace,4,1600,0,800,37,,1,3,8701363,2,2,1,2,8,{},{},,,,,,, -1505,Mace_,Mace,4,1600,0,800,37,,1,4,8701363,2,2,1,2,8,{},{},,,,,,, -1506,Mace__,Mace,4,1600,0,800,37,,1,0,8701363,2,2,1,2,8,{},{} -1507,Smasher,Smasher,4,9000,0,1000,54,,1,2,8701363,2,2,2,14,8,{},{} -1508,Smasher_,Smasher,4,9000,0,1000,54,,1,3,8701363,2,2,2,14,8,{},{} -1509,Smasher__,Smasher,4,9000,0,1000,54,,1,3,8701363,2,2,2,14,8,{},{} -1510,Flail,Flail,4,16000,0,900,69,,1,2,312754,2,2,2,14,8,{},{} -1511,Flail_,Flail,4,16000,0,900,69,,1,3,312754,2,2,2,14,8,{},{} -1512,Flail__,Flail,4,16000,0,900,69,,1,3,312754,2,2,2,14,8,{},{} -1513,Morning_Star,Morning Star,4,41000,0,1500,110,,1,1,312754,2,2,3,27,8,{},{} -1514,Morning_Star_,Morning Star,4,41000,0,1500,110,,1,2,312754,2,2,3,27,8,{},{} -1515,Morning_Star__,Morning Star,4,41000,0,1500,110,,1,2,312754,2,2,3,27,8,{},{} -1516,Sword_Mace,Sword Mace,4,50000,0,1200,130,,1,0,312754,2,2,3,27,8,{},{} -1517,Sword_Mace_,Sword Mace,4,50000,0,1200,130,,1,1,312754,2,2,3,27,8,{},{} -1518,Sword_Mace__,Sword Mace,4,50000,0,1200,130,,1,1,312754,2,2,3,27,8,{},{} -1519,Chain,Chain,4,23000,0,800,84,,1,2,312754,2,2,2,14,8,{},{} -1520,Chain_,Chain,4,23000,0,800,84,,1,3,312754,2,2,2,14,8,{},{} -1521,Chain__,Chain,4,23000,0,800,84,,1,3,312754,2,2,2,14,8,{},{} -1522,Stunner,Stunner,4,60000,0,2000,140,,1,0,256,2,2,3,27,8,{},{ bonus2 bAddEff,Eff_Stan,1000; },,,, -1523,Spike,Spike,4,20,0,700,85,,1,0,33040,2,2,4,40,8,{},{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },,, -1524,Golden_Mace,Golden Mace,4,20,0,800,110,,1,1,33040,2,2,4,40,8,{},{ bonus2 bAddRace,1,10; bonus bUnbreakable,100; },,,, -1525,Long_Mace,Long Mace,4,20,0,800,135,,3,0,33040,2,2,4,40,8,{},{ bonus bLongAtkDef,10; },,,,, -1526,Slash,Slash,4,20,0,1000,145,,1,0,33040,2,2,4,40,8,{},{ bonus2 bAddRace,1,15; bonus2 bWeaponComaRace,1,50; },, -1527,Quadrille,Quadrille,4,20,0,900,165,,1,0,33040,2,2,4,40,8,{},{ bonus2 bAddRace,1,10; bonus2 bAddRace,7,10; bonus2 bAddEle,2,10; } -1528,Grand_Cross,Grand Cross,4,20,0,1500,140,,1,0,33040,2,2,4,40,8,{},{ bonus bAtkEle,6; skill 77,3; bonus3 bAutoSpell,77,3,25; bonus2 bHPDrainRate,100,1; }, -1529,Iron_Driver,Iron Driver,4,20,0,3000,155,,1,0,33024,2,2,3,78,8,{},{},,,,,, -1530,Mjolnir,Mjolnir,4,20,0,6000,250,,1,0,8701363,2,2,4,98,8,{},{ bonus bAtkEle,4; bonus bDex,40; bonus bStr,15; bonus bAspdRate,30; },, -1531,Spanner,Spanner,4,20,0,2500,115,,1,0,33040,2,2,3,55,8,{},{ bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stan,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100; },,,,,, -// Books -1550,Book,Book,4,30000,0,600,85,,1,3,65792,2,2,2,14,15,{},{},,,,,, -1551,Bible,Bible,4,60000,0,1000,115,,1,2,65792,2,2,3,27,15,{},{ bonus bInt,2; },,,,, -1552,Tablet,Tablet,4,51000,0,800,125,,1,1,65792,2,2,3,27,15,{},{},,,,,, -1553,Book_of_Billows,Book of Billows,4,35000,0,750,90,,1,0,65792,2,2,3,27,15,{},{ bonus bAtkEle,1; },,,,, -1554,Book_of_Mother_Earth,Book of Mother Earth,4,35000,0,750,90,,1,0,65792,2,2,3,27,15,{},{ bonus bAtkEle,2; },,,,, -1555,Book_of_Blazing_Sun,Book of Blazing Sun,4,35000,0,750,90,,1,0,65792,2,2,3,27,15,{},{ bonus bAtkEle,3; },,,,,,,,,, -1556,Book_of_Gust_of_Wind,Book of Gust of Wind,4,35000,0,750,90,,1,0,65792,2,2,3,27,15,{},{ bonus bAtkEle,4; },,,,,,,,,, -1557,Book_of_the_Apocalypse,Book of the Apocalypse,4,35000,0,800,120,,1,0,65792,2,2,4,40,15,{},{ bonus bAtkEle,7; bonus2 bSubEle,6,-5; bonus2 bAddEle,1,7; bonus2 bAddEle,2,7; bonus2 bAddEle,3,7; bonus2 bAddEle,4,7; } -1558,Girl's_Diary,Girl's Diary,4,20,0,300,60,,1,1,65792,2,2,4,40,15,{},{ bonus2 bAddDamageClass,1188,150; },,,,,,,,, -1599,Angra_Manyu,Angra Manyu,4,120,0,10,1,,1,5,10477567,2,2,4,2,8,{},{},,,,,,,,,,, -// Rods and Staffs -1601,Rod,Rod,4,50,0,400,15,,1,3,8487701,2,2,1,1,10,{},{ bonus bMatkRate,15; },,,,,,,,,, -1602,Rod_,Rod,4,50,0,400,15,,1,4,8487701,2,2,1,1,10,{},{ bonus bMatkRate,15; },,,,,,,,,, -1603,Rod__,Rod,4,50,0,400,15,,1,0,8487701,2,2,1,1,10,{},{ bonus bMatkRate,15; },,,,,,,,,, -1604,Wand,Wand,4,2500,0,400,25,,1,2,8487701,2,2,2,12,10,{},{ bonus bInt,1; bonus bMatkRate,15; },,,,,,,,, -1605,Wand_,Wand,4,2500,0,400,25,,1,3,8487701,2,2,2,12,10,{},{ bonus bInt,1; bonus bMatkRate,15; },,,,,,,,, -1606,Wand__,Wand,4,2500,0,400,25,,1,0,8487701,2,2,2,12,10,{},{ bonus bInt,1; bonus bMatkRate,15; },,,,,,,,, -1607,Staff,Staff,4,9500,0,400,40,,1,2,99092,2,2,2,12,10,{},{ bonus bInt,2; bonus bMatkRate,15; },,,,,,,,, -1608,Staff_,Staff,4,9500,0,400,40,,1,3,99092,2,2,2,12,10,{},{ bonus bInt,2; bonus bMatkRate,15; },,,,,,,,, -1609,Staff__,Staff,4,9500,0,400,40,,1,0,99092,2,2,2,12,10,{},{ bonus bInt,2; bonus bMatkRate,15; },,,,,,,,, -1610,Arc_Wand,Arc Wand,4,45000,0,400,60,,1,1,99092,2,2,3,24,10,{},{ bonus bInt,3; bonus bMatkRate,15; }, -1611,Arc_Wand_,Arc Wand,4,45000,0,400,60,,1,2,99092,2,2,3,24,10,{},{ bonus bInt,3; bonus bMatkRate,15; }, -1612,Arc_Wand__,Arc Wand,4,45000,0,400,60,,1,0,99092,2,2,3,24,10,{},{ bonus bInt,3; bonus bMatkRate,15; }, -1613,Mighty_Staff,Mighty Staff,4,20,0,700,130,,1,0,99092,2,2,3,24,10,{},{ bonus bStr,10; bonus bMatkRate,15; bonus2 bSpDrainRate,100,-2; }, -1614,Blessed_Wand,Wand of Occult,4,20,0,700,75,,1,0,99092,2,2,3,24,10,{},{ bonus bInt,3; bonus bMatkRate,15; }, -1615,Bone_Wand,Bone Wand,4,20,0,700,40,,1,0,99092,2,2,3,24,10,{},{ bonus bInt,4; bonus bAtkEle,9; bonus bMatkRate,15; } -// Bows -1701,Bow,Bow,4,1000,0,500,15,,5,3,1706056,2,34,1,4,11,{},{},,, -1702,Bow_,Bow,4,1000,0,500,15,,5,4,1706056,2,34,1,4,11,{},{},,, -1703,Bow__,Bow,4,1000,0,500,15,,5,0,1706056,2,34,1,4,11,{},{},,, -1704,Composite_Bow,Composite Bow,4,2500,0,600,29,,5,3,1706056,2,34,1,4,11,{},{},,, -1705,Composite_Bow_,Composite Bow,4,2500,0,600,29,,5,4,1706056,2,34,1,4,11,{},{},,, -1706,Composite_Bow__,Composite Bow,4,2500,0,600,29,,5,0,1706056,2,34,1,4,11,{},{},,, -1707,Great_Bow,Great Bow,4,10000,0,1000,50,,5,2,1706056,2,34,2,18,11,{},{},,, -1708,Great_Bow_,Great Bow,4,10000,0,1000,50,,5,3,1706056,2,34,2,18,11,{},{},,, -1709,Great_Bow__,Great Bow,4,10000,0,1000,50,,5,0,1706056,2,34,2,18,11,{},{},,, -1710,CrossBow,Cross Bow,4,17000,0,900,65,,5,2,1706056,2,34,2,18,11,{},{},,,,,,,,,,,,,, -1711,CrossBow_,Cross Bow,4,17000,0,900,65,,5,3,1706056,2,34,2,18,11,{},{},,,,,,,,,,,,,, -1712,CrossBow__,Cross Bow,4,17000,0,900,65,,5,0,1706056,2,34,2,18,11,{},{},,,,,,,,,,,,,, -1713,Arbalest,Arbalest,4,48000,0,1000,90,,5,1,1706056,2,34,3,33,11,{},{ bonus bDex,2; },,,,,,,,,,,,, -1714,Gakkung,Gakkung,4,42000,0,1100,100,,5,1,1706056,2,34,3,33,11,{},{},,,,,,,,,,,,,, -1715,Arbalest_,Arbalest,4,48000,0,1000,90,,5,2,1706056,2,34,3,33,11,{},{ bonus bDex,2; },,,,,,,,,,,,, -1716,Gakkung_,Gakkung,4,42000,0,1100,100,,5,2,1706056,2,34,3,33,11,{},{},,,,,,,,,,,,,, -1718,Hunter_Bow,Hunter Bow,4,64000,0,1500,125,,5,0,2048,2,34,3,33,11,{},{},,,,,,,,,,,,,, -1719,Bow_of_Roguemaster,Roguemaster's Bow,4,20,0,500,75,,11,0,131136,2,34,4,48,11,{},{ bonus2 bAddStealRate,100,0; },,,,,,,,,,,,,, -1720,Bow_of_Rudra,Rudra's Bow,4,20,0,1200,150,,5,0,1705992,2,34,4,48,11,{},{ bonus bAtkEle,6; bonus bInt,5; skill 35,1; skill 28,1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; } -1721,Repeating_Crossbow,Repeating Crossbow,4,89000,0,2000,95,,9,1,133184,2,34,3,65,11,{},{},,,,,,,,,,,,,, -1722,Ballista,Ballista,4,20,0,3500,145,,5,0,1574912,2,34,4,77,11,{},{},,,,,,,,,,,,,, -// Arrows -1750,Arrow,Arrow,10,1,0,1,25,,,,1706056,2,32768,,1,,{},{},,,,,,,,,,,,,, -1751,Silver_Arrow,Silver Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,6; },,,,,,,,,,,,, -1752,Fire_Arrow,Fire Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,3; },, -1753,Steel_Arrow,Steel Arrow,10,3,0,2,40,,,,1706056,2,32768,,1,,{},{},,, -1754,Crystal_Arrow,Crystal Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,1; },, -1755,Arrow_of_Wind,Arrow of Wind,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,4; },, -1756,Stone_Arrow,Stone Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,2; },, -1757,Immaterial_Arrow,Immaterial Arrow,10,3,0,1,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,8; },, -1758,Stun_Arrow,Stun Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Stan,500; }, -1759,Freezing_Arrow,Freeze Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,1; bonus2 bAddEff,Eff_Freeze,500; } -1760,Flash_Arrow,Flash Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Blind,500; }, -1761,Curse_Arrow,Curse Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Curse,500; }, -1762,Rusty_Arrow,Rusted Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,5; },, -1763,Poison_Arrow,Poison Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,5; bonus2 bAddEff,Eff_Poison,500; } -1764,Incisive_Arrow,Sharp Arrow,10,3,0,3,10,,,,1706056,2,32768,,1,,{},{ bonus bCritical,10; },, -1765,Oridecon_Arrow,Oridecon Arrow,10,3,0,3,50,,,,1706056,2,32768,,1,,{},{},,, -1766,Arrow_of_Counter_Evil,Arrow of Counter Evil,10,40,0,3,50,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,6; },, -1767,Arrow_of_Shadow,Shadow Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,7; },, -1768,Sleep_Arrow,Sleep Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Sleep,500; } -1769,Silence_Arrow,Mute Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Silence,500; } -1770,Iron_Arrow,Iron Arrow,10,2,0,1,30,,,,1706056,2,32768,,1,,{},{},, -// Knuckles -1801,Waghnakh,Waghnakh,4,8000,0,400,30,,1,3,33024,2,2,1,1,12,{},{},, -1802,Waghnakh_,Waghnakh,4,8000,0,400,30,,1,4,33024,2,2,1,1,12,{},{},, -1803,Knuckle_Duster,Knuckle Duster,4,25000,0,450,50,,1,2,33024,2,2,2,12,12,{},{},, -1804,Knuckle_Duster_,Knuckle Duster,4,25000,0,450,50,,1,3,33024,2,2,2,12,12,{},{},, -1805,Hora,Hora,4,32000,0,450,65,,1,2,33024,2,2,2,12,12,{},{},, -1806,Hora_,Hora,4,32000,0,450,65,,1,3,33024,2,2,2,12,12,{},{},, -1807,Fist,Fist,4,53000,0,650,115,,1,0,33024,2,2,3,24,12,{},{},, -1808,Fist_,Fist,4,53000,0,650,115,,1,1,33024,2,2,3,24,12,{},{},, -1809,Claw,Claw,4,55000,0,500,86,,1,1,33024,2,2,3,24,12,{},{ bonus bStr,2; }, -1810,Claw_,Claw,4,55000,0,500,86,,1,2,33024,2,2,3,24,12,{},{ bonus bStr,2; }, -1811,Finger,Finger,4,58000,0,500,97,,1,1,33024,2,2,3,24,12,{},{},, -1812,Finger_,Finger,4,58000,0,500,97,,1,2,33024,2,2,3,24,12,{},{},, -1813,Kaiser_Knuckle,Kaiser Knuckle,4,20,0,450,110,,1,0,33024,2,2,4,36,12,{},{ bonus bAtkEle,4; bonus2 bAddRace,1,5; bonus2 bAddEle,1,10; bonus2 bAddEle,2,10; bonus2 bAddEle,3,10; bonus2 bAddEle,4,10; } -1814,Berserk,Berserk,4,20,0,500,120,,1,0,33024,2,2,4,36,12,{},{ bonus bAspdRate,12; },,,,,,,,,, -// Instruments -1901,Violin,Violin,4,4000,0,700,50,,1,3,524288,2,2,1,2,13,{},{},,,,,,,,,,, -1902,Violin_,Violin,4,4000,0,700,50,,1,4,524288,2,2,1,2,13,{},{},,,,,,,,,,, -1903,Mandolin,Mandolin,4,18000,0,400,90,,1,2,524288,2,2,2,14,13,{},{},,,,,,,,,,, -1904,Mandolin_,Mandolin,4,18000,0,400,90,,1,3,524288,2,2,2,14,13,{},{},,,,,,,,,,, -1905,Lute,Lute,4,24500,0,500,105,,1,2,524288,2,2,2,14,13,{},{},,,,,,,,,,, -1906,Lute_,Lute,4,24500,0,500,105,,1,3,524288,2,2,2,14,13,{},{},,,,,,,,,,, -1907,Guitar,Guitar,4,47000,0,900,142,,1,0,524288,2,2,3,27,13,{},{},,,,,,,,,,, -1908,Guitar_,Guitar,4,47000,0,900,142,,1,1,524288,2,2,3,27,13,{},{},,,,,,,,,,, -1909,Harp,Harp,4,62000,0,900,114,,1,1,524288,2,2,3,27,13,{},{ bonus bInt,2; },,,,,,,,,, -1910,Harp_,Harp,4,62000,0,900,114,,1,2,524288,2,2,3,27,13,{},{ bonus bInt,2; },,,,,,,,,, -1911,Guh_Moon_Goh,Guhmoongoh,4,54000,0,1300,126,,1,1,524288,2,2,3,27,13,{},{},,,,,,,,,,, -1912,Guh_Moon_Goh_,Guhmoongoh,4,54000,0,1300,126,,1,2,524288,2,2,3,27,13,{},{},,,,,,,,,,, -1913,Electric_Guitar,Electric Guitar,4,20,0,1800,110,,1,0,524288,2,2,4,70,13,{},{ bonus3 bAutoSpell,84,1,25; bonus bAtkEle,4; bonus bInt,2; bonus bAgi,1; } -// Whips -1950,Rope,Rope,4,2500,0,400,45,,2,3,1048576,2,2,1,3,14,{},{},,, -1951,Rope_,Rope,4,2500,0,400,45,,2,4,1048576,2,2,1,3,14,{},{},,, -1952,Line,Line,4,12000,0,300,80,,2,2,1048576,2,2,2,16,14,{},{},,, -1953,Line_,Line,4,12000,0,300,80,,2,3,1048576,2,2,2,16,14,{},{},,, -1954,Wire,Wire,4,17500,0,1000,95,,2,2,1048576,2,2,2,16,14,{},{},,, -1955,Wire_,Wire,4,17500,0,1000,95,,2,3,1048576,2,2,2,16,14,{},{},,, -1956,Rante_Whip,Rante Whip,4,32000,0,900,135,,2,0,1048576,2,2,3,30,14,{},{},,, -1957,Rante_Whip_,Rante Whip,4,32000,0,900,135,,2,1,1048576,2,2,3,30,14,{},{},,, -1958,Tail,Tail,4,41000,0,700,105,,2,1,1048576,2,2,3,30,14,{},{ bonus bLuk,3; },, -1959,Tail_,Tail,4,41000,0,700,105,,2,2,1048576,2,2,3,30,14,{},{ bonus bLuk,3; },, -1960,Whip,Whip,4,38000,0,700,120,,2,1,1048576,2,2,3,30,14,{},{},,, -1961,Whip_,Whip,4,38000,0,700,120,,2,2,1048576,2,2,3,30,14,{},{},,, -1962,Lariat,Lariat,4,20,0,400,100,,2,0,1048576,2,2,4,44,14,{},{ bonus bDex,5; bonus bAgi,1; }, -1963,Rapture_Rose,Rapture Rose,4,20,0,300,115,,2,0,1048576,2,2,4,44,14,{},{ bonus bAtkEle,5; bonus2 bAddEff,Eff_Poison,5000; } -1964,Chemeti,Chemeti,4,20,0,700,135,,2,0,1048576,2,2,4,44,14,{},{ bonus bCritical,5; bonus bFlee,10; bonus bFlee2,2; } - -1998,Jeramiah's_Jur,Jeramiah's Jur,3,20,0,10,,,,,,,,,,,{},{} -1999,Zed's_Staff,Zed's Staff,3,20,0,10,,,,,,,,,,,{},{} - -// Shields -//=================================================================== -2101,Guard,Guard,5,500,0,300,,3,,0,10477567,2,32,,0,1,{},{},,, -2102,Guard_,Guard,5,500,0,300,,3,,1,10477567,2,32,,0,1,{},{},,, -2103,Buckler,Buckler,5,14000,0,600,,4,,0,2020850,2,32,,0,2,{},{},,, -2104,Buckler_,Buckler,5,14000,0,600,,4,,1,2020850,2,32,,0,2,{},{},,, -2105,Shield,Shield,5,56000,0,1300,,6,,0,16514,2,32,,0,3,{},{},,, -2106,Shield_,Shield,5,56000,0,1300,,6,,1,16514,2,32,,0,3,{},{},,, -2107,Mirror_Shield,Mirror Shield,5,60000,0,1000,,4,,0,16514,2,32,,0,4,{},{ bonus bMdef,5; },, -2108,Mirror_Shield_,Mirror Shield,5,60000,0,1000,,4,,1,16514,2,32,,0,4,{},{ bonus bMdef,5; },, -2109,Memorize_Book,Book of Summoning,5,20,0,1000,,3,,0,66052,2,32,,0,,{},{ bonus bInt,1; bonus bMdef,2; }, -2110,Holy_Guard,Holy Guard,5,20,0,1400,,5,,0,16384,2,32,,68,3,{},{ bonus bVit,2; bonus bMdef,2; }, -2111,Evangelist,Evangelist,5,20,0,1400,,5,,0,16384,2,32,,83,3,{},{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakable,100; } -2112,Novice_Guard,Novice Guard,5,20,0,1,,3,,0,8388609,2,32,,0,1,{},{},,, -2199,Ahura_Mazda,Ahura Mazda,5,20,0,100,,,,0,10477567,2,32,,,,{},{ bonus bMdef,1; bonus bDef,1; bonus bFlee2,1; bonus2 bSubEle,0,1; } - -// Headgear items -//=================================================================== -2201,Sunglasses,Sunglasses,5,5000,0,100,,0,,0,10477567,2,512,,0,12,{},{ bonus2 bResEff,Eff_Blind,500; }, -2202,Sunglasses_,Sunglasses,5,5000,0,100,,0,,1,10477567,2,512,,0,12,{},{ bonus2 bResEff,Eff_Blind,500; } -2203,Glasses,Glasses,5,4000,0,100,,0,,0,10477567,2,512,,0,3,{},{},, -2204,Glasses_,Glasses,5,4000,0,100,,0,,1,10477567,2,512,,0,3,{},{},, -2205,Diver's_Goggles,Diver Goggles,5,3500,0,100,,0,,0,10477567,2,512,,0,10,{},{},, -2206,Wedding_Veil,Wedding Veil,5,23000,0,100,,0,,0,10477567,0,256,,0,44,{},{ bonus bMdef,5; }, -2207,Fancy_Flower,Fancy Flower,5,20,0,100,,0,,0,10477567,2,256,,0,4,{},{ bonus2 bSubRace,3,10; } -2208,Ribbon,Ribbon,5,800,0,100,,1,,0,10477567,2,256,,0,17,{},{ bonus bMdef,3; }, -2209,Ribbon_,Ribbon,5,800,0,100,,1,,1,10477567,2,256,,0,17,{},{ bonus bMdef,3; }, -2210,Hair_Band,Hair Band,5,500,0,100,,1,,0,10477567,2,256,,0,9,{},{},, -2211,Bandana,Bandana,5,400,0,100,,1,,0,10477567,2,256,,0,6,{},{},, -2212,Eye_Bandage,Eye Patch,5,1000,0,100,,0,,0,10477567,2,512,,0,13,{},{},, -2213,Kitty_Band,Kitty Band,5,20,0,100,,2,,0,10477567,2,256,,0,2,{},{},, -2214,Bunny_Band,Bunny Band,5,20,0,100,,2,,0,10477567,2,256,,0,15,{},{ bonus bLuk,2; }, -2215,Flower_Hairband,Flower Band,5,20,0,100,,2,,0,10477567,2,256,,0,5,{},{},, -2216,Biretta,Biretta,5,9000,0,100,,4,,0,33040,2,256,,0,11,{},{},, -2217,Biretta_,Biretta,5,9000,0,100,,4,,1,33040,2,256,,0,11,{},{},, -2218,Flu_Mask,Flu Mask,5,300,0,100,,0,,0,10477567,2,1,,0,8,{},{ bonus2 bResEff,Eff_Silence,1000; } -2219,Flu_Mask_,Flu Mask,5,300,0,100,,0,,1,10477567,2,1,,0,8,{},{ bonus2 bResEff,Eff_Silence,1000; } -2220,Hat,Hat,5,1000,0,200,,2,,0,10477567,2,256,,0,16,{},{},, -2221,Hat_,Hat,5,1000,0,200,,2,,1,10477567,2,256,,0,16,{},{},, -2222,Turban,Turban,5,4500,0,300,,3,,0,2088958,2,256,,0,7,{},{},, -2223,Turban_,Turban,5,4500,0,300,,3,,1,2088958,2,256,,0,7,{},{},, -2224,Goggles,Goggles,5,10000,0,300,,5,,0,1989866,2,768,,0,1,{},{},, -2225,Goggles_,Goggles,5,10000,0,300,,5,,1,1989866,2,768,,0,1,{},{},, -2226,Cap,Cap,5,12000,0,400,,4,,0,1989866,2,256,,0,14,{},{},, -2227,Cap_,Cap,5,12000,0,400,,4,,1,1989866,2,256,,0,14,{},{},, -2228,Helm,Helm,5,44000,0,600,,6,,0,16514,2,256,,0,40,{},{},, -2229,Helm_,Helm,5,44000,0,600,,6,,1,16514,2,256,,0,40,{},{},, -2230,Gemmed_Sallet,Gemmed Sallet,5,50000,0,500,,4,,0,414946,2,256,,0,0,{},{ bonus bMdef,3; }, -2231,Gemmed_Sallet_,Gemmed Sallet,5,50000,0,500,,4,,1,414946,2,256,,0,0,{},{ bonus bMdef,3; }, -2232,Circlet,Circlet,5,7500,0,300,,3,,0,99092,2,256,,0,18,{},{ bonus bMdef,3; }, -2233,Circlet_,Circlet,5,7500,0,300,,3,,1,99092,2,256,,0,18,{},{ bonus bMdef,3; }, -2234,Tiara,Tiara,5,20,0,400,,4,,0,2088958,0,256,,45,19,{},{ bonus bInt,2; }, -2235,Crown,Crown,5,20,0,400,,4,,0,2088958,1,256,,45,45,{},{ bonus bInt,2; }, -2236,Santa's_Hat,Santa's Hat,5,20,0,100,,1,,0,10477567,2,256,,0,20,{},{ bonus bMdef,1; bonus bLuk,1; } -2237,Bandit_Beard,Bandit Beard,5,2,0,100,,0,,0,10477567,2,1,,0,21,{},{},, -2238,Moustache,Moustache,5,2,0,100,,0,,0,10477567,2,1,,0,22,{},{},, -2239,Single_Glass,Single Glass,5,10000,0,100,,0,,0,10477567,2,512,,0,23,{},{},, -2240,Beard,Beard,5,2,0,100,,0,,0,10477567,2,1,,0,24,{},{},, -2241,Granpa_Beard,Granpa Beard,5,5000,0,100,,0,,0,10477567,2,1,,0,25,{},{},, -2242,Purple_Sunglasses,Purple Glasses,5,24000,0,100,,1,,0,10477567,2,512,,0,26,{},{ bonus2 bResEff,Eff_Blind,1000; } -2243,Geek_Glasses,Geek Glasses,5,20000,0,100,,1,,0,10477567,2,512,,0,27,{},{ bonus2 bResEff,Eff_Blind,1500; } -2244,Big_Ribbon,Big Ribbon,5,15000,0,200,,2,,0,2088958,2,256,,0,28,{},{ bonus bMdef,3; }, -2245,Sweet_Gent,Sweet Gent,5,15000,0,400,,3,,0,2088958,2,256,,0,29,{},{},, -2246,Golden_Gear,Golden Gear,5,20,0,900,,5,,0,2088958,2,256,,40,30,{},{ bonus2 bSubEle,0,10; },, -2247,Romantic_Gent,Romantic Gent,5,15000,0,400,,3,,0,2088958,2,256,,0,31,{},{},, -2248,Western_Grace,Western Grace,5,15000,0,400,,3,,0,2088958,2,256,,0,32,{},{},, -2249,Coronet,Coronet,5,20,0,300,,3,,0,2088958,2,256,,0,33,{},{ bonus bInt,1; }, -2250,Fillet,Cute Ribbon,5,500,0,100,,1,,0,2088958,2,256,,0,34,{},{ bonus bMaxSP,20; },,,, -2251,Holy_Bonnet,Monk Hat,5,30000,0,100,,5,,0,33040,2,256,,0,35,{},{ bonus bMdef,3; },,,, -2252,Wizard_Hat,Wizard Hat,5,20,0,300,,4,,0,66052,2,256,,0,36,{},{ bonus bMaxSP,100; },,,, -2253,Sunflower,Sunflower,5,20,0,100,,1,,0,10477567,2,256,,0,37,{},{ bonus2 bSubRace,4,10; },,, -2254,Angel_Wing,Angel Wing,5,20,0,100,,2,,0,2088958,2,256,,0,38,{},{ bonus bMdef,3; bonus bAgi,1; bonus bLuk,1; bonus2 bSubRace,6,3; } -2255,Evil_Wing,Evil Wing,5,20,0,100,,3,,0,2088958,2,256,,0,39,{},{ bonus bMdef,2; bonus bStr,1; bonus2 bSubRace,8,3; }, -2256,Majestic_Goat,Majestic Goat,5,20,0,800,,5,,0,279714,2,256,,0,41,{},{ bonus bStr,1; },,,, -2257,Snow_Horn,Snow Horn,5,20,0,100,,2,,0,10477567,2,256,,0,42,{},{},,,,, -2258,Spiky_Band,Spiky Band,5,20,0,1000,,6,,0,447986,2,256,,50,43,{},{},,,,, -2259,Mini_Propeller,Mini Propeller,5,20,0,100,,1,,0,10477567,2,256,,0,46,{},{},,,,, -2260,Mini_Glasses,Mini Glasses,5,28000,0,100,,1,,0,2088958,2,512,,0,47,{},{},,,,, -2261,Army_Cap,Army Cap,5,20,0,400,,4,,0,414946,2,256,,0,48,{},{},,,,, -2262,Pierrot_Nose,Pierrot Nose,5,20,0,100,,0,,0,10477567,2,1,,0,49,{},{},,,,, -2263,Zorro_Masque,Zorro Masque,5,20,0,100,,0,,0,2088958,2,512,,0,50,{},{},,,,, -2264,Munak_Hat,Munak Hat,5,20,0,300,,5,,0,10477567,2,769,,0,51,{},{ bonus2 bSubRace,1,10; },,, -2265,Gangster_Mask,Gangster Mask,5,20,0,100,,0,,0,10477567,2,1,,0,52,{},{ bonus2 bResEff,Eff_Silence,1500; },,, -2266,Iron_Cain,Iron Cain,5,20,0,300,,1,,0,16514,2,1,,50,53,{},{},,, -2267,Cigar,Cigar,5,20,0,100,,0,,0,2088958,2,1,,0,54,{},{ bonus2 bSubRace,4,3; }, -2268,Pipe,Pipe,5,20,0,100,,0,,0,2088958,2,1,,0,55,{},{ bonus2 bSubRace,4,3; }, -2269,Centimental_Flower,Romantic Flower,5,20,0,100,,0,,0,2088958,2,1,,0,56,{},{ bonus2 bSubRace,3,3; }, -2270,Centimental_Leaf,Romantic Leaf,5,20,0,100,,0,,0,2088958,2,1,,0,57,{},{ bonus2 bSubRace,3,3; }, -2271,Jack_a_Dandy,Jack a Dandy,5,45000,0,100,,1,,0,2088958,2,256,,0,58,{},{},,, -2272,Stop_Post,Stop Post,5,20,0,400,,1,,0,10477567,2,256,,0,59,{},{},,, -2273,Doctor_Cap,Doctor Band,5,20,0,100,,1,,0,2088958,2,256,,0,60,{},{ bonus bInt,1; },, -2274,Ghost_Bandana,Ghost Bandana,5,20,0,100,,0,,0,2088958,2,256,,0,61,{},{ bonus bAgi,2; bonus2 bSubEle,8,10; } -2275,Red_Bandana,Red Bandana,5,20,0,100,,2,,0,10477567,2,256,,0,62,{},{},,, -2276,Eagle_Eyes,Eagle Eyes,5,20,0,100,,1,,0,10477567,2,512,,0,63,{},{},,, -2277,Nurse_Cap,Nurse Cap,5,20,0,100,,1,,0,33040,2,256,,0,64,{},{ bonus bInt,1; bonus bLuk,1; }, -2278,Mr_Smile,Mr. Smile,5,60,0,100,,1,,0,10477567,2,513,,0,65,{},{},,, -2279,Bomb_Wick,Bomb Wick,5,20,0,100,,1,,0,10477567,2,256,,0,66,{},{},,, -2280,Sakkat,Sakkat,5,20,0,300,,3,,0,10477567,2,256,,0,67,{},{ bonus bAgi,1; },, -2281,Opera_Masque,Opera Masque,5,8000,0,200,,2,,0,2088958,2,513,,0,68,{},{},,, -2282,Heaven_Ring,Heaven Ring,5,20,0,100,,0,,0,10477567,2,256,,0,69,{},{ bonus2 bSubEle,6,10; } -2283,Ear_Mufs,Ear Mufs,5,20,0,200,,3,,0,10477567,2,256,,0,70,{},{ bonus2 bResEff,Eff_Curse,1000; } -2284,Antler,Antler,5,20,0,500,,4,,0,2088958,2,256,,0,71,{},{},, -2285,Apple_o'_Archer,Apple o' Archer,5,20,0,200,,0,,0,2088958,2,256,,30,72,{},{ bonus bDex,3; }, -2286,Elven_Ears,Elven Ears,5,20,0,100,,0,,0,2088958,2,512,,70,73,{},{},, -2287,Pirate_Bandana,Pirate Bandana,5,20,0,100,,3,,0,2088958,2,256,,0,74,{},{ bonus bStr,1; }, -2288,Mr_Scream,Mr. Scream,5,20,0,100,,1,,0,2088958,2,513,,0,75,{},{},, -2289,Poo_Poo_Hat,Poo Poo Hat,5,20,0,700,,0,,0,10477567,2,256,,0,76,{},{ bonus2 bSubRace,7,10; } -2290,Funeral_Hat,Funeral Hat,5,3000,0,100,,1,,0,10477567,2,256,,0,77,{},{},, -2291,Masquerade,Masquerade,5,20,0,100,,0,,0,2088958,2,512,,0,78,{},{ bonus2 bAddRace,7,3; } -2292,Welding_Mask,Welding Mask,5,20,0,300,,2,,0,263200,2,513,,50,79,{},{ bonus2 bSubEle,3,10; } -2293,Pretend_Murdered,Pretend Murdered,5,20,0,100,,1,,0,10477567,2,256,,0,80,{},{},, -2294,Stellar,Stellar,5,20,0,100,,1,,0,10477567,2,256,,0,81,{},{},, -2295,Blinker,Blinker,5,1500,0,100,,0,,0,2088958,2,512,,0,82,{},{ bonus2 bResEff,Eff_Blind,10000; } -2296,Binoculars,Binoculars,5,20,0,100,,1,,0,1574920,2,512,,50,83,{},{ bonus bDex,1; }, -2297,Goblini_Mask,Goblini Mask,5,20,0,100,,1,,0,2088958,2,513,,0,84,{},{},, -2298,Green_Feeler,Green Feeler,5,20,0,100,,2,,0,10477567,2,256,,0,85,{},{} -2299,Viking_Helm,Viking Helm,5,20,0,500,,5,,0,414946,2,256,,0,86,{},{} - -// Armor -//=================================================================== -2301,Cotton_Shirt,Cotton Shirt,5,10,0,100,,1,,0,10477567,2,16,,0,0,{},{} -2302,Cotton_Shirt_,Cotton Shirt,5,10,0,100,,1,,1,10477567,2,16,,0,0,{},{} -2303,Leather_Jacket,Leather Jacket,5,200,0,200,,2,,0,10477567,2,16,,0,0,{},{} -2304,Leather_Jacket_,Leather Jacket,5,200,0,200,,2,,1,10477567,2,16,,0,0,{},{} -2305,Adventure_Suit,Adventurer's Suit,5,1000,0,300,,3,,0,10477567,2,16,,0,0,{},{} -2306,Adventure_Suit_,Adventurer's Suit,5,1000,0,300,,3,,1,10477567,2,16,,0,0,{},{} -2307,Mantle,Mantle,5,10000,0,600,,4,,0,2088958,2,16,,0,0,{},{} -2308,Mantle_,Mantle,5,10000,0,600,,4,,1,2088958,2,16,,0,0,{},{} -2309,Coat,Coat,5,22000,0,1200,,5,,0,2088958,2,16,,0,0,{},{} -2310,Coat_,Coat,5,22000,0,1200,,5,,1,2088958,2,16,,0,0,{},{} -2311,Mink_Coat,Mink Coat,5,50000,0,2300,,6,,1,2088958,2,16,,30,0,{},{} -2312,Padded_Armor,Padded Armor,5,48000,0,2800,,7,,0,414946,2,16,,0,0,{},{} -2313,Padded_Armor_,Padded Armor,5,48000,0,2800,,7,,1,414946,2,16,,0,0,{},{} -2314,Chain_Mail,Chain Mail,5,65000,0,3300,,8,,0,414946,2,16,,0,0,{},{},,,,, -2315,Chain_Mail_,Chain Mail,5,65000,0,3300,,8,,1,414946,2,16,,0,0,{},{},,,,, -2316,Full_Plate,Full Plate,5,80000,0,4500,,10,,0,16514,2,16,,40,0,{},{},,,,, -2317,Full_Plate_,Full Plate,5,80000,0,4500,,10,,1,16514,2,16,,40,0,{},{},,,,, -2318,Clothes_of_the_Lord,Lord's Clothes,5,20,0,2500,,8,,1,263200,2,16,,70,0,{},{ bonus bMdef,5; bonus bInt,1; },,, -2319,Glittering_Clothes,Glittering Jacket,5,20,0,2500,,7,,1,2088958,2,16,,60,0,{},{ bonus bMdef,5; bonus2 bAddEffect,Eff_Blind,500; },,,, -2320,Formal_Suit,Formal Suit,5,20,0,300,,5,,1,2088958,2,16,,0,0,{},{},,,,, -2321,Silk_Robe,Silk Robe,5,8000,0,400,,3,,0,378806,2,16,,0,0,{},{ bonus bMdef,10; },,,, -2322,Silk_Robe_,Silk Robe,5,8000,0,400,,3,,1,378806,2,16,,0,0,{},{ bonus bMdef,10; },,,, -2323,Scapulare,Scapulare,5,6500,0,400,,4,,0,33040,2,16,,0,0,{},{},,,,, -2324,Scapulare_,Scapulare,5,6500,0,400,,4,,1,33040,2,16,,0,0,{},{},,,,, -2325,Saint_Robe,Saint's Robe,5,54000,0,600,,6,,0,296240,2,16,,0,0,{},{ bonus bMdef,5; },,,, -2326,Saint_Robe_,Saint's Robe,5,54000,0,600,,6,,1,296240,2,16,,0,0,{},{ bonus bMdef,5; },,,, -2327,Holy_Robe,Holy Robe,5,20,0,1700,,7,,0,33040,2,16,,60,0,{},{ bonus bMdef,5; bonus2 bSubRace,6,15; bonus2 bSubEle,7,10; } -2328,Wooden_Mail,Wooden Mail,5,5500,0,1000,,4,,0,279714,2,16,,0,0,{},{},,,,, -2329,Wooden_Mail_,Wooden Mail,5,5500,0,1000,,4,,1,279714,2,16,,0,0,{},{},,,,, -2330,Tights,Tights,5,71000,0,500,,6,,0,1574920,2,16,,45,0,{},{ bonus bDex,1; }, -2331,Tights_,Tights,5,71000,0,500,,6,,1,1574920,2,16,,45,0,{},{ bonus bDex,1; }, -2332,Silver_Robe,Silver Robe,5,7000,0,700,,4,,0,66052,2,16,,0,0,{},{},, -2333,Silver_Robe_,Silver Robe,5,7000,0,700,,4,,1,66052,2,16,,0,0,{},{},, -2334,Mage_Coat,Mage Coat,5,20,0,600,,5,,0,66052,2,16,,50,0,{},{ bonus bMdef,5; bonus bInt,1; } -2335,Thief_Clothes,Thief Clothes,5,74000,0,100,,6,,0,135232,2,16,,0,0,{},{ bonus bAgi,1; }, -2336,Thief_Clothes_,Thief Clothes,5,74000,0,100,,6,,1,135232,2,16,,0,0,{},{ bonus bAgi,1; }, -2337,Ninja_Suit,Ninja Suit,5,20,0,1500,,7,,0,135232,2,16,,50,0,{},{ bonus bAgi,1; bonus bMdef,3; } -2338,Wedding_Dress,Wedding Dress,5,43000,0,500,,0,,0,10477566,0,16,,0,0,{},{ bonus bMdef,15; changebase 22; }, -2339,Pantie,Pantie,5,1000,0,100,,4,,0,10477567,2,16,,0,0,{},{},, -2340,Novice_Breastplate,Novice Breastplate,5,89000,0,500,,4,,1,8388609,2,16,,10,0,{},{},, -2341,Legion_Plate_Armor,Legion Plate Armor,5,94000,0,5500,,11,,0,16384,2,16,,70,0,{},{},, -2342,Legion_Plate_Armor_,Legion Plate Armor,5,94000,0,5500,,11,,1,16384,2,16,,70,0,{},{},, -2343,Robe_of_Casting,Casting Robe,5,20,0,1100,,5,,0,66048,2,16,,75,0,{},{ bonus bCastrate,-3; }, -2344,Armor_of_Fire,Lucias's Volcano Armor,5,20,0,2200,,4,,0,279714,2,16,,45,0,{},{ bonus bDefEle,3; }, -2345,Armor_of_Fire_,Lucias's Volcano Armor,5,20,0,2200,,4,,1,279714,2,16,,45,0,{},{ bonus bDefEle,3; }, -2346,Armor_of_Water,Sapien's Ocean Armor,5,20,0,2200,,4,,0,279714,2,16,,45,0,{},{ bonus bDefEle,1; }, -2347,Armor_of_Water_,Sapien's Ocean Armor,5,20,0,2200,,4,,1,279714,2,16,,45,0,{},{ bonus bDefEle,1; }, -2348,Armor_of_Wind,Ebeshi's Typhoon Armor,5,20,0,2200,,4,,0,279714,2,16,,45,0,{},{ bonus bDefEle,4; }, -2349,Armor_of_Wind_,Ebeshi's Typhoon Armor,5,20,0,2200,,4,,1,279714,2,16,,45,0,{},{ bonus bDefEle,4; }, -2350,Armor_of_Land,Kreitos's Earth Armor,5,20,0,2200,,4,,0,279714,2,16,,45,0,{},{ bonus bDefEle,2; }, -2351,Armor_of_Land_,Kreitos's Earth Armor,5,20,0,2200,,4,,1,279714,2,16,,45,0,{},{ bonus bDefEle,2; }, -2352,Armor_For_Novice,Novice Ninja Suit,5,20,0,1,,4,,0,8388609,2,16,,0,0,{},{},, - -// Foot gear -//=================================================================== -2401,Sandals,Sandals,5,400,0,200,,1,,0,10477567,2,64,,0,0,{},{} -2402,Sandals_,Sandals,5,400,0,200,,1,,1,10477567,2,64,,0,0,{},{} -2403,Shoes,Shoes,5,3500,0,400,,2,,0,2088958,2,64,,0,0,{},{} -2404,Shoes_,Shoes,5,3500,0,400,,2,,1,2088958,2,64,,0,0,{},{} -2405,Boots,Boots,5,18000,0,600,,4,,0,1989866,2,64,,0,0,{},{} -2406,Boots_,Boots,5,18000,0,600,,4,,1,1989866,2,64,,0,0,{},{} -2407,Crystal_Pumps,Crystal Pumps,5,20,0,100,,0,,0,2088958,0,64,,0,0,{},{ bonus bMdef,10; bonus bLuk,5; } -2408,Cuffs,Cuffs,5,5000,0,3000,,3,,0,10477567,2,64,,0,0,{},{} -2409,Spiky_Heel,Spiky Heel,5,8500,0,600,,2,,0,2088958,2,64,,0,0,{},{ bonus bMdef,5; } -2410,Sleipnir,Sleipnir,5,20,0,3500,,0,,0,10477567,2,64,,95,0,{},{ bonus bMdef,10; bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bSPrecovRate,15; bonus bSpeedRate,25; } -2411,Greaves,Greaves,5,48000,0,750,,5,,0,16512,2,64,,65,0,{},{},,,, -2412,Greaves_,Greaves,5,48000,0,750,,5,,1,16512,2,64,,65,0,{},{},,,, -2413,Safety_Shoes,Safety Shoes,5,20,0,350,,6,,0,16514,2,64,,30,0,{},{},,,, -2414,Sandal_For_Novice,Novice Sandals,5,20,0,1,,2,,0,8388609,2,64,,0,0,{},{},,,, -2415,Bunny_Slippers,Bunny Slippers,5,20,0,300,,,,,2088958,0,64,,,0,{},{ bonus bLuk,3; } - -// Garments -//=================================================================== -2501,Hood,Hood,5,1000,0,200,,1,,0,10477567,2,4,,0,0,{},{},,,, -2502,Hood_,Hood,5,1000,0,200,,1,,1,10477567,2,4,,0,0,{},{},,,, -2503,Muffler,Muffler,5,5000,0,400,,2,,0,2088958,2,4,,0,0,{},{},,,, -2504,Muffler_,Muffler,5,5000,0,400,,2,,1,2088958,2,4,,0,0,{},{},,,, -2505,Manteau,Manteau,5,32000,0,600,,4,,0,414946,2,4,,0,0,{},{},,,, -2506,Manteau_,Manteau,5,32000,0,600,,4,,1,414946,2,4,,0,0,{},{},,,, -2507,Cape_Of_Ancient_Lord,Cape of Old Marquess,5,20,0,600,,2,,0,2088958,2,4,,40,0,{},{ bonus bAgi,1; },,, -2508,Ragamuffin_Cape,Ragamuffin Manteau,5,20,0,500,,1,,0,2088958,2,4,,0,0,{},{ bonus bMdef,10; bonus bUnbreakable,100; },,, -2509,Manteau_of_Survival,Manteau of Life,5,20,0,550,,0,,0,66052,2,4,,75,0,{},{ bonus bVit,10; },,, -2510,Hood_For_Novice,Novice Hood,5,20,0,1,,2,,0,8388609,2,4,,0,0,{},{},, - -// Accessories -//=================================================================== -2601,Ring,Ring,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bStr,2; }, -2602,Earring,Earring,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bInt,2; }, -2603,Necklace,Necklace,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bVit,2; }, -2604,Glove,Glove,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bDex,2; }, -2605,Brooch,Brooch,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bAgi,2; }, -2607,Clip,Clip,5,30000,0,100,,0,,1,10477567,2,136,,0,0,{},{ bonus bMaxSP,10; }, -2608,Rosary,Rosary,5,15000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bMdef,5; bonus bLuk,2; } -2609,Skull_Ring,Skull Ring,5,10000,0,100,,0,,0,10477567,2,136,,0,0,{},{},, -2610,Gold_Ring,Gold Ring,5,30000,0,100,,0,,0,10477567,2,136,,0,0,{},{},, -2611,Silver_Ring,Silver Ring,5,20000,0,100,,0,,0,10477567,2,136,,0,0,{},{},, -2612,Flower_Ring,Flower Ring,5,1500,0,100,,0,,0,10477567,2,136,,0,0,{},{},, -2613,Diamond_Ring,Diamond Ring,5,45000,0,100,,0,,0,10477567,2,136,,0,0,{},{},, -2614,Eye_of_Dullahan,Eye of Dullahan,5,90000,0,100,,0,,0,2088958,2,136,,50,0,{},{ bonus2 bResEff,Eff_Poison,1000; bonus2 bResEff,Eff_Curse,1000; bonus2 bResEff,Eff_Silence,1000; bonus2 bResEff,Eff_Confusion,1000; bonus2 bResEff,Eff_Blind,1000; },, -2615,Safety_Ring,Safety Ring,5,75000,0,100,,3,,0,2088958,2,136,,40,0,{},{ bonus bMdef,3; },,,, -2616,Critical_Ring,Critical Ring,5,75000,0,100,,0,,0,2088958,2,136,,40,0,{},{ bonus bCritical,5; },,,, -2617,Celebrant's_Mitten,Celebrant's Mitten,5,20,0,100,,1,,0,2088958,2,136,,35,0,{},{ bonus bInt,1; },,,, -2618,Matyr's_Leash,Matyr's Leash,5,20,0,100,,1,,0,2088958,2,136,,35,0,{},{ bonus bAgi,1; },,,, -2619,Thimble_Of_Archer,Bow Thimble,5,30000,0,100,,0,,0,1574920,2,136,,65,0,{},{},,,,, -2620,Ring_Of_Rogue,Rogue's Treasure,5,30000,0,100,,0,,0,135232,2,136,,70,0,{},{ bonus bAddStealRate,100; },,,,, -2621,Ring_,Ancient Ring,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bStr,1; },,,, -2622,Earring_,Ancient Earring,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bInt,1; },,,, -2623,Necklace_,Ancient Necklace,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bVit,1; },,,, -2624,Glove_,Ancient Glove,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bDex,1; },,,, -2625,Brooch_,Ancient Brooch,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bAgi,1; },,,, -2626,Rosary_,Ancient Rosary,5,15000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bMdef,3; bonus bLuk,1; },,, -2627,Belt,Ancient Belt,5,20000,0,1200,,0,,1,10477567,2,136,,25,0,{},{},,,,, -2628,Novice_Armlet,Novice Armlet,5,400,0,200,,0,,1,8388609,2,136,,0,0,{},{ bonus bStr,1; bonus bInt,1; bonus bLuk,1; },, -2629,Megingjard,Megingjard,5,20,0,8000,,2,,0,10477567,2,136,,90,0,{},{ bonus bStr,40; bonus bMdef,7; },,, -2630,Brisingamen,Brisingamen,5,20,0,1500,,1,,0,10477567,2,136,,95,0,{},{ bonus bStr,3; bonus bAgi,3; bonus bVit,3; bonus bInt,3; bonus bMdef,5; } -2631,Celebration_Ring,Celebration Ring,5,20,0,10,,0,,0,10477567,2,136,,0,0,{},{ bonus bStr,2; bonus bAgi,2; bonus bVit,2; bonus bInt,2; bonus bDex,2; bonus bLuk,2; } -2634,Wedding_Ring_M,Wedding Ring,4,20,0,0,,,,0,10477567,1,2,,0,,{},{ skill 334,1; skill 336,1; } -2635,Wedding_Ring_F,Wedding Ring,4,20,0,0,,,,0,10477567,0,2,,0,,{},{ skill 335,1; skill 336,1; } -2636,Gold_Christmas_Ring,Gold Xmas Ring,5,20,0,0,,0,,0,10477567,2,136,,0,,{},{} -2637,Silver_Christmas_Ring,Silver Xmas Ring,5,20,0,0,,0,,0,10477567,2,136,,0,,{},{} -2638,Exorcize_Sachet,Exorcize Sachet,5,20,0,100,,0,,,10477567,2,136,,0,,{},{ bonus bStr,1; bonus bLuk,1; },,, -2639,Purification_Sachet,Purification Sachet,5,20,0,100,,0,,,10477567,2,136,,0,,{},{ bonus bAgi,1; bonus bInt,1; },,, -2640,Kafra_Ring,Kafra Ring,5,20,0,10,,,,,2088958,2,136,,,,{},{ bonus bStr,1; bonus bAgi,1; bonus bInt,1; bonus bLuk,1; } - -// Cards -//=================================================================== -4001,Poring_Card,Poring Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bLuk,2; bonus bFlee2,1; } -4002,Fabre_Card,Fabre Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bVit,1; bonus bMaxHP,100; } -4003,Pupa_Card,Pupa Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bMaxHP,700; } -4004,Drops_Card,Drops Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bDex,1; bonus bHit,3; } -4005,Poring__Card,Poring Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,7,20; } -4006,Lunatic_Card,Lunatic Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bLuk,1; bonus bCritical,1; bonus bFlee2,1; } -4007,Pecopeco_Egg_Card,Pecopeco Egg Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,0,20; } -4008,Picky_Card,Picky Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bStr,1; bonus bBaseAtk,10; } -4009,Chonchon_Card,Chonchon Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bAgi,1; bonus bFlee,2; } -4010,Wilow_Card,Wilow Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bMaxSP,80; } -4011,Picky__Card,Picky Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bVit,1; bonus bMaxHP,100; } -4012,Thief_Bug_Egg_Card,Thief Bug Egg Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMaxHP,400; } -4013,Andre_Egg_Card,Andre Egg Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMaxHPrate,5; } -4014,Roda_Frog_Card,Roda Frog Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bMaxHP,400; bonus bMaxSP,50; } -4015,Condor_Card,Condor Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bFlee,10; } -4016,Thief_Bug_Card,Thief Bug Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bAgi,1; } -4017,Savage_Babe_Card,Savage Babe Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Stan,500; } -4018,Andre_Larva_Card,Andre Larva Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bInt,1; bonus bMaxSP,10; } -4019,Hornet_Card,Hornet Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bStr,1; bonus bBaseAtk,3; } -4020,Farmiliar_Card,Farmiliar Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Blind,500; bonus bBaseAtk,5; } -4021,Rocker_Card,Rocker Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDex,1; } -4022,Spore_Card,Spore Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bVit,2; } -4023,Desert_Wolf_Babe_Card,Desert Wolf Babe Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bInt,1; } -4024,Plankton_Card,Plankton Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Sleep,500; bonus bBaseAtk,5; } -4025,Skeleton_Card,Skeleton Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bBaseAtk,10; bonus2 bAddEff,Eff_Stan,200; } -4026,Thief_bug_Female_Card,Thief bug Female Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAgi,1; bonus bFlee,1; } -4027,Kukre_Card,Kukre Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bAgi,2; } -4028,Tarou_Card,Tarou Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bStr,2; } -4029,Wolf_Card,Wolf Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bBaseAtk,15; bonus bCritical,1; } -4030,Mandragora_Card,Mandragora Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,4,20; } -4031,Pecopeco_Card,Pecopeco Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bMaxHPrate,10; } -4032,Ambernite_Card,Ambernite Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bDef,2; } -4033,Poporing_Card,Poporing Card,6,20,0,10,,,,,,,136,,,,{},{ skill 53,1; } -4034,Worm_Tail_Card,Worm Tail Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bDex,2; } -4035,Hydra_Card,Hydra Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,7,20; } -4036,Muka_Card,Muka Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bHPrecovRate,10; } -4037,Snake_Card,Snake Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Poison,500; bonus bBaseAtk,5; } -4038,Zombie_Card,Zombie Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bHPrecovRate,20; } -4039,Stainer_Card,Stainer Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Silence,2000; bonus bDef,1; } -4040,Creamy_Card,Creamy Card,6,20,0,10,,,,,,,136,,,,{},{ skill 26,1; } -4041,Coco_Card,Coco Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Sleep,2000; bonus bDef,1; } -4042,Steel_Chonchon_Card,Steel Chonchon Card,6,20,0,10,,,,,,,16,,,,{},{ bonus2 bSubEle,4,10; bonus bDef,2; } -4043,Andre_Card,Andre Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bBaseAtk,20; } -4044,Smokie_Card,Smokie Card,6,20,0,10,,,,,,,136,,,,{},{ skill 51,1; } -4045,horn_Card,horn Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bLongAtkDef,35; } -4046,Martin_Card,Martin Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Blind,2000; bonus bDef,1; } -4047,Ghostring_Card,Ghostring Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,8; bonus bHPrecovRate,-25; } -4048,Poison_Spore_Card,Poison Spore Card,6,20,0,10,,,,,,,136,,,,{},{ skill 52,3; } -4049,Vadon_Card,Vadon Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,3,20; } -4050,Thief_bug_Male_Card,Thief bug Male Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bAgi,2; } -4051,Yoyo_Card,Yoyo Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bFlee2,5; bonus bAgi,1; } -4052,Elder_Wilow_Card,Elder Wilow Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bInt,2; } -4053,Vitata_Card,Vitata Card,6,20,0,10,,,,,,,136,,,,{},{ skill 28,1; bonus bUseSPrate,25; } -4054,Angeling_Card,Angeling Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,6; } -4055,Marina_Card,Marina Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Freeze,500; bonus bBaseAtk,5; } -4056,Dustiness_Card,Dustiness Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,4,30; bonus bFlee,5; } -4057,Metaller_Card,Metaller Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Silence,500; bonus bBaseAtk,5; } -4058,Thara_Frog_Card,Thara Frog Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,7,30; } -4059,Soldier_Andre_Card,Soldier Andre Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,3,30; } -4060,Goblin_Card,Goblin Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,2,20; } -4061,Cornutus_Card,Cornutus Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDef,1; } -4062,Anacondaq_Card,Anacondaq Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,5,20; } -4063,Caramel_Card,Caramel Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,4,20; } -4064,Zerom_Card,Zerom Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bDex,3; } -4065,Kaho_Card,Kaho Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,2,20; } -4066,Orc_Warrior_Card,Orc Warrior Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,2,30; } -4067,Megalodon_Card,Megalodon Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bResEff,Eff_Freeze,2000; bonus bDef,1; } -4068,Scorpion_Card,Scorpion Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,3,20; } -4069,Drainliar_Card,Drainliar Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,1,20; } -4070,Eggyra_Card,Eggyra Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bSPrecovRate,15; } -4071,Orc_Zombie_Card,Orc Zombie Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,9,30; bonus bFlee,5; } -4072,Golem_Card,Golem Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bBaseAtk,5; } -4073,Pirate_Skel_Card,Pirate Skel Card,6,20,0,10,,,,,,,136,,,,{},{ skill 37,5; } -4074,BigFoot_Card,BigFoot Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,4,30; } -4075,Argos_Card,Argos Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bResEff,Eff_Stone,2000; bonus bDef,1; } -4076,Magnolia_Card,Magnolia Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Curse,500; bonus bBaseAtk,5; } -4077,Phen_Card,Phen Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bNoCastCancel,0; bonus bCastrate,25; } -4078,Savage_Card,Savage Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bVit,3; } -4079,Mantis_Card,Mantis Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bStr,3; } -4080,Flora_Card,Flora Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,5,20; } -4081,Hode_Card,Hode Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,2,30; bonus bFlee,5; } -4082,Desert_Wolf_Card,Desert Wolf Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddSize,0,15; bonus bBaseAtk,5; } -4083,Rafflesia_Card,Rafflesia Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,5,30; } -4084,Marine_Sphere_Card,Marine Sphere Card,6,20,0,10,,,,,,,136,,,,{},{ skill 7,3; } -4085,Orc_Skeleton_Card,Orc Skeleton Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,6,20; } -4086,Soldier_Skeleton_Card,Soldier Skeleton Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bCritical,9; } -4087,Giearth_Card,Giearth Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Confusion,10000; bonus2 bSubEle,2,15; } -4088,Frilldora_Card,Frilldora Card,6,20,0,10,,,,,,,4,,,,{},{ skill 135,1; } -4089,Sword_Fish_Card,Sword Fish Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,1; bonus bDef,1; } -4090,Munak_Card,Munak Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bResEff,Eff_Stone,1500; bonus2 bSubEle,2,5; bonus bDef,1; } -4091,Kobold_Card,Kobold Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bStr,1; bonus bCritical,4; } -4092,Skel_Worker_Card,Skel Worker Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddSize,1,15; bonus bBaseAtk,5; } -4093,Obeaune_Card,Obeaune Card,6,20,0,10,,,,,,,136,,,,{},{ skill 35,1; } -4094,Archer_Skeleton_Card,Archer Skeleton Card,6,20,0,10,,,,,,,2,,,,{},{} -4095,Marse_Card,Marse Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,1,30; } -4096,Zenorc_Card,Zenorc Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Poison,400; bonus bBaseAtk,10; } -4097,Matyr_Card,Matyr Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bMaxHPrate,10; bonus bAgi,1; } -4098,Dokebi_Card,Dokebi Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,4; bonus bDef,1; } -4099,Pasana_Card,Pasana Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,3; bonus bDef,1; } -4100,Sohee_Card,Sohee Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bMaxSPrate,15; bonus bSPrecovRate,3; } -4101,Sand_Man_Card,Sand Man Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,2; bonus bDef,1; } -4102,Whisper_Card,Whisper Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bFlee,20; bonus2 bSubEle,8,-50; } -4103,Horong_Card,Horong Card,6,20,0,10,,,,,,,136,,,,{},{ skill 10,1; } -4104,Requiem_Card,Requiem Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Confusion,500; } -4105,Marc_Card,Marc Card,6,20,0,10,,,,,,,16,,,,{},{ bonus2 bSubEle,1,5; bonus2 bResEff,Eff_Freeze,10000; } -4106,Mummy_Card,Mummy Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,20; } -4107,Verit_Card,Verit Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bMaxHPrate,8; bonus bMaxSPrate,8; } -4108,Myst_Card,Myst Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,5,30; bonus bFlee,5; } -4109,Jakk_Card,Jakk Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,3,30; bonus bFlee,5; } -4110,Ghoul_Card,Ghoul Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Poison,2000; bonus bDef,1; } -4111,Strouf_Card,Strouf Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,6,20; } -4112,Marduk_Card,Marduk Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Silence,10000; } -4113,Marionette_Card,Marionette Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,8,30; bonus bFlee,5; } -4114,Argiope_Card,Argiope Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,5; bonus bDef,1; } -4115,Hunter_Fly_Card,Hunter Fly Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bHpDrainRate,3,15; } -4116,Isis_Card,Isis Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,7,30; bonus bFlee,5; } -4117,Side_Winder_Card,Side Winder Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bDoubleRate,5; } -4118,Petit_Card,Petit Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,9,20; } -4119,Bathory_Card,Bathory Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,7; } -4120,Petit__Card,Petit Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,9,30; } -4121,Phreeoni_Card,Phreeoni Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,100; } -4122,Deviruchi_Card,Deviruchi Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bStr,1; bonus2 bResEff,Eff_Blind,10000; } -4123,Eddga_Card,Eddga Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bInfiniteEndure,0; bonus bMaxHPrate,-25; } -4124,Medusa_Card,Medusa Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,6,15; bonus2 bResEff,Eff_Stone,10000; } -4125,Deviace_Card,Deviace Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,7,7; bonus2 bAddRace,2,7; bonus2 bAddRace,3,7; bonus2 bAddRace,4,7; } -4126,Minorous_Card,Minorous Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddSize,2,15; bonus bBaseAtk,5; } -4127,Nightmare_Card,Nightmare Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Sleep,10000; bonus bAgi,1; } -4128,Golden_Bug_Card,Golden Bug Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bNoMagicDamage,0; bonus bUseSPrate,100; } -4129,Baphomet__Card,Baphomet Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bHit,-10; bonus bSplashRange,1; } -4130,Scorpion_King_Card,Scorpion King Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,9,20; } -4131,Moonlight_Flower_Card,Moonlight Flower Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bSpeedRate,25; } -4132,Mistress_Card,Mistress Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bNoGemStone,0; bonus bUseSPrate,25; } -4133,Daydric_Card,Daydric Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,0,20; } -4134,Dracula_Card,Dracula Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bSpDrainRate,1,5; } -4135,Orc_Lord_Card,Orc Lord Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bShortWeaponDamageReturn,30; } -4136,Khalitzburg_Card,Khalitzburg Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,6,30; } -4137,Drake_Card,Drake Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bNoSizeFix,0; } -4138,Anubis_Card,Anubis Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,8,30; } -4139,Joker_Card,Joker Card,6,20,0,10,,,,,,,136,,,,{},{ skill 50,1; } -4140,Knight_Of_Abyss_Card,Knight Of Abyss Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,10,25; } -4141,Evil_Druid_Card,Evil Druid Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,9; bonus bInt,1; bonus bDef,1; } -4142,Doppelganger_Card,Doppelganger Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAspdRate,15; } -4143,Orc_Hero_Card,Orc Hero Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bVit,3; bonus2 bResEff,Eff_Stan,10000; } -4144,Osiris_Card,Osiris Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bRestartFullRecover,0; } -4145,Berzebub_Card,Berzebub Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bCastrate,-30; bonus bMaxSPrate,-15; bonus bMaxHPrate,-5; } -4146,Maya_Card,Maya Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMagicDamageReturn,30; } -4147,Baphomet_Card,Baphomet Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,-10; bonus bSplashRange,1; } -4148,Pharaoh_Card,Pharaoh Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bUseSPrate,-30; } -4149,Bon_Gun_Card,Bon Gun Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bInt,2; } -4150,Orc_Archer_Card,Orc Archer Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bRange,1; } -4151,Mimic_Card,Mimic Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bAgi,1; bonus bDex,2; bonus bLuk,3; } -4152,Wraith_Card,Wraith Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bMatk,8; } -4153,Alarm_Card,Alarm Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bCastrate,-10; } -4154,Arclouse_Card,Arclouse Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bStr,2; } -4155,Rideword_Card,Rideword Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bDex,4; } -4156,Skeleton_Prisoner_Card,Skel Prisoner Card,6,20,0,10,,,,,,,136,,,,{},{ skill 45,3; } -4157,Zombie_Prisoner_Card,Zombie Prisoner Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bMaxHPrate,10; } -4158,Dark_Priest_Card,Dark Priest Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-15; } -4159,Punk_Card,Punk Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-5; } -4160,Zherlthsh_Card,Zherlthsh Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-10; } -4161,Mysteltainn_Card,Mysteltainn Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bAtk,30; bonus bMaxHPrate,-22; bonus bCastrate,-10; } -4162,Tirfing_Card,Tirfing Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAgi,3; bonus bFlee,10; } -4163,Executioner_Card,Executioner Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bRandomAttackIncrease,300, 4; } -4164,Anolian_Card,Anolian Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bStr,2; } -4165,Sting_Card,Sting Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bDex,4; } -4166,Wander_Man_Card,Wander Man Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,25; bonus bCritical,5; } -4167,Cramp_Card,Cramp Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bAgi,3; } -4168,Filamentous_Card,Filamentous Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Stone,100; bonus2 bResEff,Eff_Freeze,100; bonus2 bResEff,Eff_Stan,100; bonus2 bResEff,Eff_Sleep,100; bonus2 bResEff,Eff_Poison,100; bonus2 bResEff,Eff_Curse,100; bonus2 bResEff,Eff_Silence,100; bonus2 bResEff,Eff_Confusion,100; bonus2 bResEff,Eff_Blind,100; } -4169,Brilight_Card,Brilight Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bAgi,2; bonus bLuk,3; } -4170,Iron_Fist_Card,Iron Fist Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bVit,2; } -4171,High_Orc_Card,High Orc Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bStr,2; } -4172,Choco_Card,Choco Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bStr,1; bonus bAgi,1; bonus bVit,1; bonus bInt,1; bonus bDex,1; bonus bLuk,1; bonus bAtk,10; bonus bDef,1; } -4173,Stem_Worm_Card,Stem Worm Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bDex,2; } -4174,Penonema_Card,Penomena Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMaxHPrate, 15; } -4175,Marin_Card,Marin Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,1,20; } -4176,Sasquatch_Card,Sasquatch Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bAddSize,1,20; bonus bAtk,-10; } -4177,Antonio_Card,Antonio Card,6,20,0,10,,,,,,,136,,,,{},{ skill 50,5; skill 210,5; } -4178,Cruiser_Card,Cruiser Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bDex,3; } -4179,Mystcase_Card,Mystcase Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bCastrate,-10; bonus bAtk,10; } -4180,Chepet_Card,Chepet Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bLuk,5; } -4181,Knight_of_Windstorm_Card,Knight Of Windstorm Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bAddEff,Eff_Freeze,500; bonus bAtk,25; } -4182,Garm_Card,Garm Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bAddSize,2,20; bonus bAtk,-10; } -4183,Gargoyle_Card,Gargoyle Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bRange,5; } -4184,Raggler_Card,Raggler Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Sleep,500; } -4185,Neraid_Card,Neraid Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bAgi,2; } -4186,Pest_Card,Pest Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,0,20; } -4187,Injustice_Card,Injustice Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,9,20; } -4188,Goblin_Archer_Card,Goblin Archer Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,2,20; } -4189,Gryphon_Card,Gryphon Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Silence,500; bonus bAtk,25; } -4190,Dark_Frame_Card,Dark Frame Card,6,20,0,10,,,,,,,769,,,,{},{ skill 32,2; } -4191,Wind_Ghost_Card,Wind Ghost Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,4; } -4192,Merman_Card,Merman Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,1; } -4193,Cookie_Card,Cookie Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,7; } -4194,Aster_Card,Aster Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,3,20; } -4195,Carat_Card,Carat Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,6,20; } -4196,Bloody_Knight_Card,Bloody Knight Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Blind,500; bonus bAtk,25; bonus bMaxHPrate,-10; } -4197,Clock_Card,Clock Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bLuk,10; } -4198,Clock_Tower_Manager_Card,C Tower Manager Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Curse,500; } -4199,Alligator_Card,Alligator Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Poison,500; } -4200,Dark_Lord_Card,Dark Lord Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,9; } -4201,Orc_Lady_Card,Orc Lady Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,4,20; } -4202,Megalith_Card,Megalith Card,6,20,0,10,,,,,,,4,,,,{},{ skill 9,1; } -4203,Alice_Card,Alice Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,6; } -4204,Raydric_Archer_Card,Raydric Archer Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,3; } -4205,Greatest_General_Card,Greatest General Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,5,20; } -4206,Stalatic_Golem_Card,Stalactic Golem Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMaxHP,500; bonus bDex,-3; } -4207,Tri_Joint_Card,Tri Joint Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,7,20; } -4208,Steamrider_Goblin_Card,Steam Goblin Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,8,20; } -4209,Sage_Worm_Card,Sage Worm Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,8; } -4210,Kobold_Archer_Card,Kobold archer Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,15; bonus bAtk,15; } -4211,Chimera_Card,Chimera Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Stan,500; bonus bAtk,25; } - -// Extra Headgears -//=================================================================== -5001,Headset,Headset,5,20,0,200,,3,,0,2088958,2,256,,0,87,{},{ bonus2 bResEff,Eff_Curse,1000; }, -5002,Jewel_Crown,Jewel Crown,5,20,0,600,,4,,0,414946,2,256,,60,88,{},{ bonus bMdef,3; bonus bInt,2; bonus bLuk,1; } -5003,Joker_Jester,Joker Jester,5,20,0,100,,1,,0,2088958,2,256,,0,89,{},{ bonus bMdef,5; bonus bLuk,2; }, -5004,Oxygen_Mask,Oxygen Mask,5,20,0,200,,0,,0,2088958,2,1,,0,90,{},{ bonus2 bResEff,Eff_Poison,2000; },,,, -5005,Gas_Mask,Gas Mask,5,20,0,100,,1,,0,2088958,2,513,,0,91,{},{ bonus2 bResEff,Eff_Poison,3000; },,,, -5006,Machoman_Glasses,Machoman's Glasses,5,36000,0,100,,1,,0,2088958,2,512,,0,92,{},{},,,,,, -5007,Grand_Circlet,Grand Circlet,5,20,0,200,,3,,0,2088958,2,256,,55,93,{},{ bonus bMdef,4; bonus bStr,1; bonus bInt,1; bonus bLuk,1; },, -5008,Puppy_Love,Puppy Love,5,20,0,100,,1,,0,2088958,2,256,,0,94,{},{},,,,,, -5009,Safety_Helmet,Safety Helmet,5,20,0,500,,3,,0,2088958,2,256,,0,95,{},{ bonus bMdef,3; bonus bUnbreakable,100; },,,,, -5010,Indian_Hair_Piece,Indian Fillet,5,20,0,100,,3,,0,10477567,2,256,,0,96,{},{},,,,,, -5011,Aerial,Aerial,5,20,0,100,,3,,0,10477567,2,256,,0,97,{},{},,,,,, -5012,Ph.D_Hat,Ph.D Hat,5,20,0,200,,3,,0,2088958,2,256,,0,98,{},{ bonus bMdef,3; },,,,, -5013,Horn_Of_Lord_Kaho,Lord Kaho's Horn,5,20,0,100,,5,,0,10477567,2,256,,0,99,{},{ bonus bMdef,10; bonus bStr,5; bonus bAgi,10; bonus bVit,10; bonus bInt,5; bonus bLuk,20; } -5014,Fin_Helm,Fin Helm,5,20,0,300,,2,,0,16514,2,512,,65,100,{},{},,,,,, -5015,Egg_Shell,Egg Shell,5,20,0,200,,3,,0,10477567,2,256,,0,101,{},{},,,,,, -5016,Boy's_Cap,Boy's Cap,5,20,0,100,,2,,0,2088958,2,256,,0,102,{},{},,,,,, -5017,Bone_Helm,Bone Helm,5,20,0,800,,7,,0,279714,2,256,,70,103,{},{ bonus2 bSubEle,7,-15; },,,, -5018,Feather_Bonnet,Feather Bonnet,5,20,0,300,,4,,0,1574920,2,256,,0,104,{},{ bonus bAgi,1; },,,,, -5019,Corsair,Corsair,5,20,0,500,,5,,0,2088958,2,256,,0,105,{},{ bonus bVit,1; },,,,, -5020,Kafra_Band,Kafra's Band,5,20,0,500,,3,,0,10477567,2,256,,0,106,{},{ bonus bMdef,3; },, -5021,Bankruptcy_of_Heart,Money Loser's Grief,5,20,0,1200,,4,,0,263200,2,256,,38,107,{},{ bonus bInt,1; bonus bDex,1; }, -5022,Solar_God_Helm,Solar God Helm,5,20,0,2400,,4,,0,2088832,2,768,,0,138,{},{ bonus bStr,3; bonus bInt,2; }, -5023,Parcel_Hat,Parcel Hat,5,20,0,1000,,0,,0,263200,2,256,,0,108,{},{},,, -5024,Cake_Hat,Cake Hat,5,20,0,1500,,1,,0,10477567,2,256,,0,109,{},{},,, -5025,Angel_Helm,Angel Helm,5,20,0,1600,,5,,0,2088832,2,256,,74,110,{},{ bonus bAgi,1; bonus bLuk,1; bonus bMdef,3; } -5026,Chef_Hat,Chef's Hat,5,20,0,300,,1,,0,2088958,2,256,,50,111,{},{ bonus bDex,1; },, -5027,Mage_Hat,Mage Hat,5,20,0,300,,1,,0,66052,2,256,,0,112,{},{ bonus bInt,2; bonus bMaxSP,150; }, -5028,Candle,Candle,5,20,0,150,,5,,0,10477567,2,256,,0,113,{},{},,, -5029,Spore_Hat,Spore Hat,5,20,0,900,,3,,0,2088958,2,256,,20,114,{},{},,, -5030,Panda_Hat,Panda Hat,5,20,0,800,,3,,0,2088958,2,256,,40,115,{},{},,, -5031,Miner's_Helmet,Miner's Helmet,5,20,0,1500,,4,,0,447986,2,256,,55,116,{},{ bonus bDex,2; },, -5032,Sunday_Hat,Sunday Hat,5,20,0,800,,1,,0,2088958,2,256,,0,117,{},{},,, -5033,Smokie_Hat,Smokie Hat,5,20,0,900,,3,,0,2088958,2,256,,50,118,{},{},,, -5034,Lightbulb_Hairband,Lightbulb Hairband,5,20,0,500,,0,,0,2088958,2,256,,0,119,{},{},,, -5035,Poring_Hat,Poring Hat,5,20,0,700,,2,,0,2088958,2,256,,38,120,{},{},,, -5036,Cross_Hairband,Cross Hairband,5,20,0,250,,1,,0,2088958,2,256,,10,121,{},{},,, -5037,Fruit_Shell,Apple Hat,5,20,0,150,,4,,0,10477567,2,256,,5,122,{},{},,, -5038,Deviruchi_Hat,Deviruchi Hat,5,20,0,800,,2,,0,2088958,2,256,,64,123,{},{ bonus bStr,1; bonus bInt,1; }, -5039,Rainbow_Eggshell,Rainbow Eggshell,5,20,0,400,,4,,0,10477567,2,256,,19,124,{},{},,, -5040,Blush,Blush,5,20,0,100,,0,,0,10477567,2,512,,0,125,{},{},,, -5041,Heart_Hairpin,Heart Hairpin,5,20,0,100,,0,,0,10477567,2,256,,0,126,{},{},,, -5042,Hair_Protector,Dumpling Decoration,5,20,0,150,,0,,0,2088958,2,256,,14,127,{},{},,, -5043,Opera_Ghost_Mask,Opera Ghost Mask,5,20,0,200,,1,,0,2088958,2,512,,20,128,{},{},,, -5044,Wing_Of_Demon,Wings of Demon,5,20,0,350,,2,,0,10477567,2,256,,45,129,{},{},,, -5045,Magician_Hat,Magic Hat,5,20,0,500,,3,,0,554319315732,2,256,,50,130,{},{ bonus bDex,1; bonus bAgi,1; bonus bMaxSP,50; } -5046,Bongun_Hat,Bongun Hat,5,20,0,300,,5,,0,10477567,2,769,,0,139,{},{},,, -5047,Fashion_Sunglasses,Fashion Sunglasses,5,20,0,100,,0,,0,2088958,2,256,,0,131,{},{},,, -5048,Cresent_Hairpin,Cresent Hairpin,5,20,0,100,,0,,0,10477567,2,256,,0,132,{},{},,, -5049,Striped_Bandana,Striped Bandana,5,20,0,150,,1,,0,10477567,2,256,,0,133,{},{},,, -5050,Mysterious_Fruit_Shell,Mysterious Fruit Shell,5,20,0,300,,5,,0,10477567,2,256,,30,134,{},{},,, -5051,Bell_of_Pussycat,Bell of Pussycat,5,20,0,100,,5,,0,10477567,2,1,,0,135,{},{},,, -5052,Blue_Bandana,Blue Bandana,5,20,0,150,,1,,0,10477567,2,256,,0,136,{},{},,, -5053,Sphinx_Hat,Sphinx Hat,5,20,0,3000,,5,,0,16514,2,256,,65,137,{},{ bonus bStr,2; },, -5054,Assassin_Mask,Assassin Mask,5,20,0,100,,0,,0,4096,2,1,,70,180,{},{},,, -5055,Novice_Eggshell,Novice Eggshell,5,20,0,10,,3,,0,8388609,2,256,,0,101,{},{},,, -5056,Seed_Of_Love,Seed Of Love,5,20,0,200,,0,,0,2088958,2,256,,0,140,{},{} -5057,Black_Cat_Ears,Black Cat Ears,5,20,0,200,,2,,0,10477567,2,256,,45,141,{},{} -5058,Resting_Cat,Resting Cat,5,20,0,500,,1,,0,2088958,2,256,,0,142,{},{ bonus2 bResEff,Eff_Curse,3000; bonus bMdef,15; } -5059,Bear_Hat,Bear Hat,5,20,0,800,,3,,0,10477567,2,256,,50,143,{},{} -5060,Pointy_Cap,Pointy Cap,5,20,0,300,,3,,0,10477567,2,256,,0,144,{},{ bonus bLuk,1; } -5061,Flower_Hairpin,Flower Hairpin,5,20,0,100,,1,,0,10477567,2,256,,0,145,{},{} -5062,Straw_Hat,Straw Hat,5,20,0,200,,3,,0,10477567,2,256,,50,146,{},{ bonus bAgi,1; } -5063,Bandaid,Bandaid,5,20,0,100,,1,,0,2088958,2,256,,0,147,{},{} -5064,Transformation_Leaf,Transformation Leaf,5,20,0,100,,1,,0,10477567,2,256,,0,148,{},{} -5065,Fresh_Blueish_Fish,Fresh Blueish Fish,5,20,0,500,,2,,0,10477567,2,256,,50,149,{},{ bonus2 bAddRace,5,10; } -5066,Horns_Of_Succubus,Horns of Succubus,5,20,0,800,,4,,0,2088958,2,256,,70,150,{},{ bonus bInt,1; bonus bMdef,10; } -5067,Sombrero,Sombrero,5,20,0,350,,4,,0,2088958,2,256,,0,151,{},{ bonus bAgi,1; } -5068,Ears_of_Demon,Ears Of Demon,5,20,0,100,,1,,0,10477567,2,512,,70,152,{},{ bonus bStr,1; } -5069,Fox_Mask,Fox Mask,5,20,0,300,,1,,0,2088958,2,256,,0,153,{},{ bonus bAgi,1; bonus bLuk,1; } -5070,Bandage,Bandage,5,20,0,100,,1,,0,2088958,2,256,,0,154,{},{ bonus bStr,2; } -5071,Indian_Headband,Indian Headband,5,20,0,200,,1,,0,2088958,2,256,,0,155,{},{ bonus bDex,1; } -5072,Horns_Of_Incubus,Horns Of Incubus,5,20,0,800,,4,,0,2088958,2,256,,70,156,{},{ bonus bAgi,1; bonus bMdef,10; } -5073,Campus_Hat,Campus Hat,5,20,0,700,,2,,0,2088958,2,256,,0,157,{},{ bonus bDex,2; } -5074,Ears_of_Angel,Ears of Angel,5,20,0,100,,1,,0,10477567,2,512,,70,158,{},{ bonus bStr,1; } -5075,Cowboy_Hat,Cowboy Hat,5,20,0,500,,4,,0,10477567,2,256,,0,159,{},{} -5076,Furry_Hat,Furry Hat,5,20,0,350,,2,,0,10477567,2,256,,0,160,{},{ bonus bLuk,1; } -5077,Tulip_Hairpin,Tulip Hairpin,5,20,0,100,,1,,0,10477567,2,256,,0,161,{},{} -5078,Sea_Otter_Hat,Sea Otter Hat,5,20,0,800,,3,,0,10477567,2,256,,50,162,{},{ bonus bVit,1; } -5079,X_Hairpin,X Hairpin,5,20,0,100,,1,,0,10477567,2,256,,0,163,{},{} -5080,Crown_of_the_Ancient_Queen,Crown of The Ancient Queen,5,20,0,400,,4,,0,10477567,2,256,,45,164,{},{} -5081,Crown_of_Mistress,Crown of Mistress,5,20,0,100,,1,,0,2088958,0,256,,75,165,{},{ bonus bInt,2; bonus bMaxSP,100; } -5082,Mushroom_Hairband,Mushroom Hairband,5,20,0,100,,2,,0,10477567,2,256,,0,166,{},{} -5083,Back_Ribbon,Back Ribbon,5,20,0,200,,1,,0,10477567,0,256,,45,167,{},{ bonus bMdef,10; } -5084,Lazy_Raccoon_Hat,Lazy Racoon Hat,5,20,0,500,,1,,0,2088958,2,256,,0,168,{},{ bonus2 bResEff,Eff_Sleep,2000; } -5085,Small_Twin_Ribbons,Small Twin Ribbons,5,20,0,100,,1,,0,10477567,0,512,,45,169,{},{} -5086,Sad_Mask,Sad Mask,5,20,0,100,,2,,0,10477567,2,513,,0,170,{},{ bonus2 bResEff,Eff_Blind,5000; } -5087,Expressionless_Mask,Expressionless Mask,5,20,0,100,,1,,0,10477567,2,513,,0,171,{},{} -5088,Surprised_Mask,Surprised Mask,5,20,0,100,,1,,0,10477567,2,513,,0,172,{},{} -5089,Annoyed_Mask,Annoyed Mask,5,20,0,100,,1,,0,10477567,2,513,,0,173,{},{} -5090,Mask_of_the_Goblin_Leader,Mask of The Goblin Leader,5,20,0,100,,2,,0,10477567,2,513,,0,174,{},{} -5091,Big_Golden_Bell,Big Golden Bell,5,20,0,200,,2,,0,2088958,2,768,,35,175,{},{} -5092,Nun_Hat,Nun Hat,5,20,0,300,,5,,0,33024,0,768,,65,176,{},{} -5093,Nun_Hat_,Nun Hat,5,20,0,300,,5,,0,33024,0,768,,65,177,{},{ bonus bMaxSP,100; } -5094,Orc_Hero_Helm,Orc Hero Helm,5,20,0,900,,5,,0,2088958,2,768,,55,178,{},{ bonus bStr,2; bonus bVit,1; } -5096,Assassin_Mask_,Assassin Mask,5,20,0,100,,0,,0,4096,2,1,,70,180,{},{},,, -5097,Annual_Commemoration_Hat,Annual Commemoration Hat,5,20,0,30,,3,,0,10477567,2,256,,0,166,{},{ bonus bAllStats,3; } -5098,Tiger_Mask,Tiger Mask,5,20,0,400,,2,,,10477567,2,768,,,181,{},{ bonus bStr,3; bonus bMaxHP,100; } - -// Misc items -//=================================================================== -7001,Mold_Powder,Mould Powder,3,680,0,10,,,,,,,,,,,{},{} -7002,Ogre_Tooth,Ogre Tooth,3,658,0,10,,,,,,,,,,,{},{} -7003,Anolian_Skin,Anolian Skin,3,928,0,10,,,,,,,,,,,{},{} -7004,Mud_Lump,Mud Lump,3,876,0,10,,,,,,,,,,,{},{} -7005,Skull,Skull,3,1044,0,10,,,,,,,,,,,{},{} -7006,Wing_of_Red_Bat,Wing of Red Bat,3,168,0,10,,,,,,,,,,,{},{} -7007,Claw_of_Rat,Claw of Rat,3,748,0,10,,,,,,,,,,,{},{} -7008,Stiff_Horn,Stiff Horn,3,636,0,10,,,,,,,,,,,{},{} -7009,Glitter_Shell,Glitter Shell,3,528,0,10,,,,,,,,,,,{},{} -7010,Tail_of_Steel_Scorpion,Tail of Steel Scorpion,3,548,0,10,,,,,,,,,,,{},{} -7011,Claw_of_Monkey,Claw of Monkey,3,466,0,10,,,,,,,,,,,{},{} -7012,Tough_Scalelike_Stem,Tough Scalelike Stem,3,412,0,10,,,,,,,,,,,{},{} -7013,Coral_Reef,Coral Reef,3,772,0,10,,,,,,,,,,,{},{} -7014,Old_Portrait,Old Portrait,3,1500,0,100,,,,,,,,,,,{},{} -7015,Bookclip_in_Memory,Bookclip in Memory,3,3000,0,20,,,,,,,,,,,{},{} -7016,Spoon_Stub,Spoon Stub,3,2500,0,20,,,,,,,,,,,{},{} -7017,Executioner's_Mitten,Executioner's Mitten,3,4500,0,30,,,,,,,,,,,{},{} -7018,Young_Twig,Young Twig,3,50,0,10,,,,,,,,,,,{},{} -7019,Loki's_Whispers,Loki's Whispers,3,20,0,10,,,,,,,,,,,{},{} -7020,Mother's_Nightmare,Mother's Nightmare,3,20,0,10,,,,,,,,,,,{},{} -7021,Foolishness_of_the_Blind,Foolishness of the Blind,3,20,0,10,,,,,,,,,,,{},{} -7022,Old_Hilt,Old Hilt,3,150,0,30,,,,,,,,,,,{},{} -7023,Blade_Lost_in_Darkness,Blade Lost in Darkness,3,12000,0,40,,,,,,,,,,,{},{} -7024,Bloody_Edge,Bloody Edge,3,10000,0,40,,,,,,,,,,,{},{} -7025,Lucifer's_Lament,Lucifer's Lament,3,30000,0,50,,,,,,,,,,,{},{} -7026,Key_of_Clock_Tower,Key of Clock Tower,3,2,0,30,,,,,,,,,,,{},{} -7027,Key_of_Underground,Key of Underground,3,2,0,30,,,,,,,,,,,{},{} -7028,Invite_for_Duel,Invite for Duel,3,0,0,10,,,,,,,,,,,{},{} -7029,Admission_for_Duel,Admission for Duel,3,20,0,10,,,,,,,,,,,{},{} -7030,Claw_of_Desert_Wolf,Claw of Desert Wolf,3,208,0,10,,,,,,,,,,,{},{} -7031,Old_Frying_Pan,Old Frying Pan,3,196,0,10,,,,,,,,,,,{},{} -7032,Piece_of_Egg_Shell,Piece of Egg Shell,3,168,0,10,,,,,,,,,,,{},{} -7033,Poison_Spore,Poison Spore,3,114,0,10,,,,,,,,,,,{},{} -7034,Red_Socks_with_Holes,Red Socks with Holes,3,100,0,10,,,,,,,,,,,{},{} -7035,Matchstick,Matchstick,3,100,0,10,,,,,,,,,,,{},{} -7036,Fang_of_Garm,Fang of Garm,3,100,0,10,,,,,,,,,,,{},{} -7037,Coupon,Coupon,3,2000,0,10,,,,,,,,,,,{},{} -7038,Yarn,Yarn,3,20,0,10,,,,,,,,,,,{},{} -7039,Novice_Nametag,Novice Nametag,3,20,0,10,,,,,,,,,,,{},{} -7040,Megaphone,Megaphone,3,20,0,10,,,,,,,,,,,{},{} -7041,Fine_Grit,Fine Grit,3,20,0,10,,,,,,,,,,,{},{} -7042,Leather_Bag_of_Infinity,Leather Bag of Infinity,3,20,0,10,,,,,,,,,,,{},{} -7043,Fine_Sand,Fine Sand,3,100,0,10,,,,,,,,,,,{},{} -7044,Vigorgra,Vigorgra,3,20,0,10,,,,,,,,,,,{},{} -7045,Magic_Paint,Magic Paint,3,20,0,10,,,,,,,,,,,{},{} -7046,Cart_Parts,Cart Parts,3,20,0,10,,,,,,,,,,,{},{} -7047,Alice's_Apron,Alice's Apron,3,2424,0,10,,,,,,,,,,,{},{} -7048,Talon_of_Griffon,Talon of Griffon,3,100,0,10,,,,,,,,,,,{},{} -7049,Stone,Stone,3,0,0,30,,,,,,,,,,,{},{} -7050,Cotton_Mat,Cotton Mat,3,20,0,10,,,,,,,,,,,{},{} -7051,Silk_Mat,Silk Mat,3,20,0,10,,,,,,,,,,,{},{} -7052,Wasted_Magazine,Wasted Magazine,3,20,0,10,,,,,,,,,,,{},{} -7053,Cyfar,Cyfar,3,772,0,10,,,,,,,,,,,{},{} -7054,Brigan,Brigan,3,746,0,10,,,,,,,,,,,{},{} -7055,Animal_Poop,Animal Poop,3,20,0,50,,,,,,,,,,,{},{} -7056,Payment_Statement_for_Kafra_Employee,Payment Statement for Ka,3,20,0,50,,,,,,,,,,,{},{} -7057,Gjallar,Gjallar,3,20,0,500,,,,,,,,,,,{},{} -7058,Gleipnir,Gleipnir,3,20,0,500,,,,,,,,,,,{},{} -7059,Free_Ticket_for_Kafra_Storage,Free Ticket for Kafra St,3,20,0,10,,,,,,,,,,,{},{} -7060,Free_Ticket_for_Kafra_Transportation,Free Ticket for Kafra Tr,3,20,0,10,,,,,,,,,,,{},{} -7061,Free_Ticket_for_the_Cart_Service,Free Ticket for the Cart,3,20,0,10,,,,,,,,,,,{},{} -7062,Broken_Turtle_Shell,Broken Turtle Shell,3,20,0,10,,,,,,,,,,,{},{} -7063,Soft_Feather,Soft Feather,3,280,0,10,,,,,,,,,,,{},{} -7064,Wing_of_Dragonfly,Wing of Dragonfly,3,520,0,10,,,,,,,,,,,{},{} -7065,Sea-otter_Fur,Sea Otter Fur,3,820,0,10,,,,,,,,,,,{},{} -7066,Ice_Cubic,Ice Cubic,3,660,0,10,,,,,,,,,,,{},{} -7067,Stone_Fragment,Stone Fragment,3,640,0,10,,,,,,,,,,,{},{} -7068,Burnt_Tree,Burnt Tree,3,722,0,10,,,,,,,,,,,{},{} -7069,Destroyed_Armor,Destroyed Armor,3,1042,0,10,,,,,,,,,,,{},{} -7070,Broken_Shell,Broken Shell,3,900,0,10,,,,,,,,,,,{},{} -7071,Tattered_Clothes,Tattered Clothes,3,640,0,10,,,,,,,,,,,{},{} -7072,Old_Shuriken,Old Shuriken,3,1780,0,10,,,,,,,,,,,{},{} -7073,Freya's_Jewel,Freya's Jewel,3,20,0,500,,,,,,,,,,,{},{} -7074,Thor's_Gauntlet,Thor's Gauntlet,3,20,0,500,,,,,,,,,,,{},{} -7075,Iron_Maiden,Iron Maiden,3,20,0,500,,,,,,,,,,,{},{} -7076,Wheel_of_the_Unknown,Wheel of the Unknown,3,20,0,500,,,,,,,,,,,{},{} -7077,Silver_Ornament,Silver Ornament,3,20,0,500,,,,,,,,,,,{},{} -7078,Wrath_of_Valkyrie,Wrath of Valkyrie,3,20,0,500,,,,,,,,,,,{},{} -7079,Feather_of_Angel_Wing,Feather of Angel Wing,3,20,0,500,,,,,,,,,,,{},{} -7080,Cat_Tread,Footprints of Cat,3,20,0,500,,,,,,,,,,,{},{} -7081,Woman's_Moustache,Woman's Moustache,3,20,0,500,,,,,,,,,,,{},{} -7082,Root_of_Stone,Root of Stone,3,20,0,500,,,,,,,,,,,{},{} -7083,Spirit_of_Fish,Spirit of Fish,3,20,0,500,,,,,,,,,,,{},{} -7084,Sputum_of_Bird,Sputum of Bird,3,20,0,500,,,,,,,,,,,{},{} -7085,Sinew_of_Bear,Sinew of Bear,3,20,0,500,,,,,,,,,,,{},{} -7086,Emblem_of_the_Sun_God,Emblem of the Sun God,3,20,0,500,,,,,,,,,,,{},{} -7087,Breath_of_Spirit,Breath of Soul,3,20,0,500,,,,,,,,,,,{},{} -7088,Snow_Crystal,Snow Crystal,3,20,0,500,,,,,,,,,,,{},{} -7089,Omen_of_Tempest,Omen of Tempest,3,20,0,500,,,,,,,,,,,{},{} -7090,Ripple,Ripple,3,20,0,500,,,,,,,,,,,{},{} -7091,Billow,Billow,3,20,0,500,,,,,,,,,,,{},{} -7092,Drifting_Air,Drifting Air,3,20,0,500,,,,,,,,,,,{},{} -7093,Cogwheel,Metal Wheel,3,20,0,10,,,,,,,,,,,{},{} -7094,Fragment,Cabinet Chip,3,20,0,10,,,,,,,,,,,{},{} -7095,Metal_Fragment,Tooth Fragment,3,20,0,10,,,,,,,,,,,{},{} -7096,Lava,Hardened Lava,3,1108,0,10,,,,,,,,,,,{},{} -7097,Burning_Heart,Burning Heart,3,924,0,10,,,,,,,,,,,{},{} -7098,Live_Coal,Fire Seed,3,638,0,10,,,,,,,,,,,{},{} -7099,Worn-out_Magic_Scroll,Old Magical Circle,3,20,0,10,,,,,,,,,,,{},{} -7100,Sharp_Leaf,Sharpened Leaf,3,20,0,10,,,,,,,,,,,{},{} -7101,PecoPeco_Feather,Peco Feather,3,454,0,10,,,,,,,,,,,{},{} -7102,Nightmare,Nightmare,3,20,0,10,,,,,,,,,,,{},{} -7103,Unknown_Liquid_Bottle,Yellow Liquid Bottle,3,20,0,10,,,,,,,,,,,{},{} -7104,Fake_Angel's_Wing,Fake Angel's Wing,3,756,0,10,,,,,,,,,,,{},{} -7105,Fake_Heaven_Ring,Imitation Soul's Band,3,924,0,10,,,,,,,,,,,{},{} -7106,Antelope_Horn,Antelope Horn,3,672,0,10,,,,,,,,,,,{},{} -7107,Antelope_Skin,Antelope Skin,3,756,0,10,,,,,,,,,,,{},{} -7108,Piece_of_Shield,Broken Shield,3,20,0,10,,,,,,,,,,,{},{} -7109,Shining_Spear_Blade,Shiny Spear Tip,3,20,0,10,,,,,,,,,,,{},{} -7110,Broken_Sword,Broken Sword,3,588,0,10,,,,,,,,,,,{},{} -7111,Slick_Paper,String Paper,3,706,0,10,,,,,,,,,,,{},{} -7112,Sharp_Paper,Transparent Paper,3,906,0,10,,,,,,,,,,,{},{} -7113,Broken_Symbol_of_Pharaoh,Broken Symbol of Pharaoh,3,20,0,10,,,,,,,,,,,{},{} -7114,Masque_of_Tutankhamen,Sphinx Mask,3,20,0,10,,,,,,,,,,,{},{} -7115,Harpy_Feather,Blood Feather,3,1142,0,10,,,,,,,,,,,{},{} -7116,Harpy_Talon,Tooth of Lowblood,3,1210,0,10,,,,,,,,,,,{},{} -7117,Torn_Magic_Book,Torn Spell Book,3,20,0,10,,,,,,,,,,,{},{} -7118,Torn_Scroll,Torn Scroll,3,20,0,10,,,,,,,,,,,{},{} -7119,Bacillus,Hypha Body,3,1024,0,10,,,,,,,,,,,{},{} -7120,Burning_Horseshoe,Burning Horseshoe,3,822,0,10,,,,,,,,,,,{},{} -7121,Honey_Pot,Honey Jar,3,622,0,10,,,,,,,,,,,{},{} -7122,Burning_Hair,Hot Feather,3,974,0,10,,,,,,,,,,,{},{} -7123,Dragon_Skin,Dragon Skin,3,1024,0,10,,,,,,,,,,,{},{} -7124,Sand_Clump,Sand Lump,3,706,0,10,,,,,,,,,,,{},{} -7125,Scorpion_Claw,Crab Shot,3,706,0,10,,,,,,,,,,,{},{} -7126,Large_Jellopy,Large Jellopy,3,840,0,10,,,,,,,,,,,{},{} -7127,Alcohol_Creation_Book,Alcohol Creation Book,3,100000,0,10,,,,,,,,,,,{},{} -7128,Bottle_Grenade_Creation_Book,Fire Bottle Creation Book,3,100000,0,10,,,,,,,,,,,{},{} -7129,Acid_Bottle_Creation_Book,Acid Bottle Creation Book,3,100000,0,10,,,,,,,,,,,{},{} -7130,Plant_Bottle_Creation_Book,Plant Bottle Creation Book,3,100000,0,10,,,,,,,,,,,{},{} -7131,Mine_Bottle_Creation_Book,Mine Bottle Creation Book,3,100000,0,10,,,,,,,,,,,{},{} -7132,Glistening_Coat_Creation_Book,Glistening Coat Creation Book,3,100000,0,10,,,,,,,,,,,{},{} -7133,Condensed_Potion_Creation_Book,Condensed Potion Creation Book,3,240000,0,10,,,,,,,,,,,{},{} -7134,Medicine_Bowl,Medicine Bowl,3,8,0,10,,,,,,,,,,,{},{} -7135,Bottle_Grenade,Fire Bottle,3,20,0,10,,,,,,,,,,,{},{} -7136,Acid_Bottle,Hydrobolic Acid Bottle,3,20,0,10,,,,,,,,,,,{},{} -7137,Plant_Bottle,Water Bottle,3,20,0,10,,,,,,,,,,,{},{} -7138,Marine_Sphere_Bottle,Mine Bottle,3,20,0,10,,,,,,,,,,,{},{} -7139,Glistening_Coat,Coating Wax,3,20,0,10,,,,,,,,,,,{},{} -7140,Seed_of_Life,Seed of Life,3,20,0,10,,,,,,,,,,,{},{} -7141,Morning_Dew_of_Yggdrasil,Water Flow,3,20,0,10,,,,,,,,,,,{},{} -7142,Ancient_Life,Embryo,3,20,0,10,,,,,,,,,,,{},{} -7143,Glass_Tube,Seperation Tubes,2,50000,,1000,,,,,262144,2,,,,,{ bpet; },{} -7144,Potion_Creation_Gude,Potion Making Book,3,100000,0,10,,,,,,,,,,,{},{} -7145,Ragnarok_T-shirt,Ragnarok T-Shirt,3,20,0,10,,,,,,,,,,,{},{} -7146,Vacation_Ticket,Vacation Ticket,3,20,0,10,,,,,,,,,,,{},{} -7147,Jasmine,Jasmine,3,20,0,10,,,,,,,,,,,{},{} -7148,Mother's_Letter,Mother's Letter,3,20,0,10,,,,,,,,,,,{},{} -7149,Yellow_Plate,Yellow Plate,3,220,0,10,,,,,,,,,,,{},{} -7150,A_piece_of_Bamboo,Bamboo Trunk,3,310,0,10,,,,,,,,,,,{},{} -7151,Oil_Paper,Oiled Paper,3,310,0,10,,,,,,,,,,,{},{} -7152,Glossy_Hair,Glossy Hair,3,340,0,10,,,,,,,,,,,{},{} -7153,Worn-out_Kimono,Old Kimono,3,590,0,10,,,,,,,,,,,{},{} -7154,Poisonous_Powder,Poison Powder,3,160,0,10,,,,,,,,,,,{},{} -7155,Skin_of_Poisonous_Toad,Poisonous Toad Skin,3,280,0,10,,,,,,,,,,,{},{} -7156,Broken_Shuriken,Broken Shuriken,3,470,0,10,,,,,,,,,,,{},{} -7157,Black_Mask,Black Mask,3,20,0,10,,,,,,,,,,,{},{} -7158,Broken_Liquor_Bottle,Broken Liquor Bottle,3,160,0,10,,,,,,,,,,,{},{} -7159,Demon's_Nose,Demon's Nose,3,400,0,10,,,,,,,,,,,{},{} -7160,Passport_From_King,Passport From King,3,20,0,10,,,,,,,,,,,{},{} -7161,Skin_of_the_Black_Bear,Skin of the Black Bear,3,384,0,10,,,,,,,,,,,{},{} -7162,Piece_of_Cloud,Piece of Cloud,3,390,0,10,,,,,,,,,,,{},{} -7163,Hard_Antennae,Hard Antennae,3,570,0,10,,,,,,,,,,,{},{} -7164,Very_Hard_Peach,Very Hard Peach,3,400,0,10,,,,,,,,,,,{},{} -7165,Etherial_Winged_Clothing,Etherial Winged Clothing,3,650,0,10,,,,,,,,,,,{},{} -7166,Soft_Silk_Fabric,Soft Silk Fabric,3,1200,0,10,,,,,,,,,,,{},{} -7167,Strange_Piece_of_Iron,Strange Piece of Iron,3,430,0,10,,,,,,,,,,,{},{} -7168,Big_Wing_of_Butterfly,Big Wing of Butterfly,3,614,0,10,,,,,,,,,,,{},{} -7169,Tae_Guk_Tablet,Tae Guk Tablet,3,20,0,10,,,,,,,,,,,{},{} -7170,Tuxedo,Tuxedo,5,43000,0,10,,0,,0,10477566,1,16,,0,0,{},{ changebase 22; } -7171,Skin_of_Panther,Skin of Panther,3,282,0,10,,,,,,,,,,,{},{} -7172,Claw_of_Panther,Claw of Panther,3,290,0,10,,,,,,,,,,,{},{} -7173,Bun_Buster_Bag,Bun Buster Bag,3,20,0,10,,,,,,,,,,,{},{} -7174,Wrapping_Thread,Wrapping Thread,3,20,0,10,,,,,,,,,,,{},{} -7175,Wrapper,Wrapper,3,20,0,10,,,,,,,,,,,{},{} -7176,King's_Proof_Document,King's Proof Document,3,20,0,10,,,,,,,,,,,{},{} -7177,Piece_of_Starlight's_Sorrow,Piece of Starlight's Sorrow,3,20,0,10,,,,,,,,,,,{},{} -7178,Starlight's_Sorrow,Starlight's Sorrow,3,20,0,10,,,,,,,,,,,{},{} -7179,Donation_Ticket,Donation Ticket,3,20,0,10,,,,,,,,,,,{},{} -7180,Letter_of_Introduction,Letter of Introduction,3,20,0,10,,,,,,,,,,,{},{} -7181,Commodity_Receipt,Commodity Receipt,3,20,0,10,,,,,,,,,,,{},{} -7182,Cacao,Cacao,3,200,0,20,,,,,,,,,,,{},{} -7183,Letter_of_Younger_Sister,Letter of Younger Sister,3,20,0,10,,,,,,,,,,,{},{} -7184,Piano_Key,Piano Key,3,20,0,10,,,,,,,,,,,{},{} -7185,Quiz_Participation_Ticket,Quiz Participation Ticket,3,20,0,10,,,,,,,,,,,{},{} -7186,Thin_Trunk,Thin Trunk,3,20,0,10,,,,,,,,,,,{},{} -7187,Festival_Mask,Festival Mask,3,20,0,10,,,,,,,,,,,{},{} -7188,Brown_Root,Brown_Root,3,20,0,10,,,,,,,,,,,{},{} -7189,Wooden_Heart,Wooden Heart,3,20,0,10,,,,,,,,,,,{},{} -7190,Hard_Back_Shell,Hard Back Shell,3,20,0,10,,,,,,,,,,,{},{} -7191,Paper_Lantern,Paper Lantern,3,20,0,10,,,,,,,,,,,{},{} -7192,Pin_Wheel,Pin Wheel,3,20,0,10,,,,,,,,,,,{},{} -7193,Sprout,Sprout,3,20,0,10,,,,,,,,,,,{},{} -7194,Soft_Grass_Leaf,Soft Grass Leaf,3,20,0,10,,,,,,,,,,,{},{} -7195,Slingshot,Slingshot,3,20,0,10,,,,,,,,,,,{},{} -7196,Shoulder_Guard,Shoulder Guard,3,20,0,10,,,,,,,,,,,{},{} -7197,Durable_Vine,Durable Vine,3,20,0,10,,,,,,,,,,,{},{} -7198,Huge_Leaf,Huge Leaf,3,20,0,10,,,,,,,,,,,{},{} -7199,Hieroglyphic,Hieroglyphic,3,20,0,10,,,,,,,,,,,{},{} -7200,Elastic_Band,Elastic Band,3,20,0,10,,,,,,,,,,,{},{} -7201,Log,Log,3,20,0,10,,,,,,,,,,,{},{} -7202,Insect_Pinchers,Insect Pinchers,3,20,0,10,,,,,,,,,,,{},{} -7203,Healthy_Branch,Healthy Branch,3,20,0,10,,,,,,,,,,,{},{} -7204,Gun_Powder,Gun Powder,3,20,0,10,,,,,,,,,,,{},{} -7205,Black_Piece_of_Cloth,Black Piece of Cloth,3,20,0,10,,,,,,,,,,,{},{} -7206,Cat_Doll,Black Cat Doll,3,20,0,10,,,,,,,,,,,{},{} -7207,Old_Mantle,Old Mantle,3,20,0,10,,,,,,,,,,,{},{} -7208,Rusted_Knife,Rusted Knife,3,20,0,10,,,,,,,,,,,{},{} -7209,Dullahan's_Helm,Dullahan's Helm,3,20,0,10,,,,,,,,,,,{},{} -7210,Piece_of_Dullahan's_Armor,Dullahan's Armor Piece,3,20,0,10,,,,,,,,,,,{},{} -7211,Rosetta_Stone_Fragment,Rosetta Stone Fragment,3,20,0,10,,,,,,,,,,,{},{} -7212,Hanging_Doll,Hanging Doll,3,20,0,10,,,,,,,,,,,{},{} -7213,Pin_Cusion,Pin Cusion,3,20,0,10,,,,,,,,,,,{},{} -7214,Bat_Cage,Bat Cage,3,20,0,10,,,,,,,,,,,{},{} -7215,Broken_Needle,Broken Needle,3,20,0,10,,,,,,,,,,,{},{} -7216,Red_Scarf,Red Scarf,3,20,0,10,,,,,,,,,,,{},{} -7217,Spool_of_Thread,Spool of Thread,3,20,0,10,,,,,,,,,,,{},{} -7218,Rotted_Rope,Rotted Rope,3,20,0,10,,,,,,,,,,,{},{} -7219,Striped_Socks,Striped Socks,3,20,0,10,,,,,,,,,,,{},{} -7220,Ectoplasm,Ectoplasm,3,20,0,10,,,,,,,,,,,{},{} -7221,Chains,Chains,3,20,0,10,,,,,,,,,,,{},{} -7222,Old_Tree_Branch,Old Tree Branch,3,20,0,10,,,,,,,,,,,{},{} -7223,Ruined_Self_Portrait,Ruined Self Portrait,3,20,0,10,,,,,,,,,,,{},{} -7224,Philosophers_Stone,Philosopher's Stone,3,20,0,10,,,,,,,,,,,{},{} -7225,Silk_Lantern,Silk Lantern,3,20,0,10,,,,,,,,,,,{},{} -7226,Hallucination_Pill,Hallucination Pill,3,20,0,10,,,,,,,,,,,{},{} -7227,TCG_Card,TCG Card,3,20,0,10,,,,,,,,,,,{},{} -7228,Gold_Nugget,Gold Nugget,3,20,0,300,,,,,,,,,,,{},{} -7229,Iron_Nugget,Iron Nugget,3,20,0,300,,,,,,,,,,,{},{} -7230,Silver_Nugget,Silver Nugget,3,20,0,30,,,,,,,,,,,{},{} -7231,Gold_Ore,Gold Ore,3,20,0,150,,,,,,,,,,,{},{} -7232,Silver_Ore,Silver Ore,3,20,0,150,,,,,,,,,,,{},{} -7233,Mysterious_Ore,Mysterious Ore,3,20,0,150,,,,,,,,,,,{},{} - -// RWC Reward items -7234,Spirit_of_Guild,Spirit of Guild,3,20,0,10,,,,,,,,,,,{},{} -7235,Spirit_of_Assault,Spirit of Assault,3,20,0,10,,,,,,,,,,,{},{} -7236,Spirit_of_Defense,Spirit of Defense,3,20,0,10,,,,,,,,,,,{},{} -7237,Spirit_of_Cooperation,Spirit of Cooperation,3,20,0,10,,,,,,,,,,,{},{} -7238,Spirit_of_Harmony,Spirit of Harmony,3,20,0,10,,,,,,,,,,,{},{} -7239,Spirit_of_Advancement,Spirit of Advancement,3,20,0,10,,,,,,,,,,,{},{} -7240,Spirit_of_Trust,Spirit of Trust,3,20,0,10,,,,,,,,,,,{},{} -7241,Spirit_of_Concentration,Spirit of Concentration,3,20,0,10,,,,,,,,,,,{},{} -7242,Spirit_of_Unity,Spirit of Unity,3,20,0,10,,,,,,,,,,,{},{} -7243,Spirit_of_Integrity,Spirit of Integrity,3,20,0,10,,,,,,,,,,,{},{} -7244,Spirit_of_Communion,Spirit of Communion,3,20,0,10,,,,,,,,,,,{},{} -7245,Spirit_of_Friendship,Spirit of Friendship,3,20,0,10,,,,,,,,,,,{},{} -7246,Spirit_of_Peace,Spirit of Peace,3,20,0,10,,,,,,,,,,,{},{} -7247,Spirit_of_Nature,Spirit of Nature,3,20,0,10,,,,,,,,,,,{},{} -7248,Spirit_of_Fame,Spirit of Fame,3,20,0,10,,,,,,,,,,,{},{} -7249,Spirit_of_Contribution,Spirit of Contribution,3,20,0,10,,,,,,,,,,,{},{} -7250,Spirit_of_Glory,Spirit of Glory,3,20,0,10,,,,,,,,,,,{},{} -7251,Spirit_of_Victory,Spirit of Victory,3,20,0,10,,,,,,,,,,,{},{} - -//Gonryun Items -7252,Chinese_Medicine,Chinese Medicine,3,20,0,10,,,,,,,,,,,{},{} -7253,Golden_Flag,Golden Flag,3,20,0,10,,,,,,,,,,,{},{} -7254,Digitally_Printed_Ticket,Digitally Printed Ticket,3,20,0,10,,,,,,,,,,,{},{} -7262,Paper_Fan,Paper Fan,3,233,0,,,,,,,,,,,,{},{} -7263,Cat's_Eye,Cat's-Eye,3,20,477,10,,,,,,,,,,,{},{} -7264,Dried_Sand,Dried Sand,3,20,161,10,,,,,,,,,,,{},{} -7265,Dragon_Horn,Dragon Horn,3,20,0,10,,,,,,,,,,,{},{} -7266,Dragon_Teeth,Dragon Teeth,3,218,0,,,,,,,,,,,,{},{} -7267,Tigerskin_Underwear,Tigerskin Underwear,3,20,107,10,,,,,,,,,,,{},{} -7268,Ghost_Doll,Ghost Doll,3,20,605,10,,,,,,,,,,,{},{} -7269,Baby_Bib,Baby Bib,3,20,0,10,,,,,,,,,,,{},{} -7270,Baby_Bottle,Baby Bottle,3,20,0,,,,,,,,,,,,{},{} -7271,Novice_Statue,Novice Statue,3,20,0,10,,,,,,,,,,,{},{} -7272,Dumpling_Doll,Dumpling Doll,3,20,0,10,,,,,,,,,,,{},{} -7273,RWC_Necklace,RWC_Necklace,3,20,0,10,,,,,,,,,,,{},{} -7274,Ancient_Language_Book,Ancient_Language_Book,3,20,0,10,,,,,,,,,,,{},{} -7275,Ancient_Language_Document,Ancient_Language_Document,3,20,0,10,,,,,,,,,,,{},{} -7276,Picture_Letter,Picture Letter,3,20,0,10,,,,,,,,,,,{},{} -7277,Munak_Doll,Munak Doll,3,20,0,10,,,,,,,,,,,{},{} -7278,Welfare_Letter,Welfare Letter,3,20,0,10,,,,,,,,,,,{},{} -7279,Vita_500_Bottlecap,Vita 500 Bottlecap,3,20,0,10,,,,,,,,,,,{},{} -7280,Quiz_Participation_Certificate_1,QP Certificate 1,3,20,0,10,,,,,,,,,,,{},{} -7281,Quiz_Participation_Certificate_2,QP Certificate 2,3,20,0,10,,,,,,,,,,,{},{} -7282,Quiz_Participation_Certificate_3,QP Certificate 3,3,20,0,10,,,,,,,,,,,{},{} -7283,Quiz_Participation_Certificate_4,QP Certificate 4,3,20,0,10,,,,,,,,,,,{},{} -7284,Quiz_Participation_Certificate_5,QP Certificate 5,3,20,0,10,,,,,,,,,,,{},{} - -// 11/09(Ayothana) Items -7285,Sacred_Wool_Charm,Sacred_Wool_Charm,3,20,10,0,,,,,,,,,,,{},{},, -7286,Red_Chili,Red_Chili,3,20,10,0,,,,,,,,,,,{},{},, -7287,Sacred_Wool_Charm_2,Sacred_Wool_Charm_2,3,20,10,0,,,,,,,,,,,{},{},, -7288,Engagement_Ring,Engagement_Ring,3,20,10,0,,,,,,,,,,,{},{},, -7289,Olivite,Olivite,3,20,100,0,,,,,,,,,,,{},{},, -7290,Gold_Mica,Gold_Mica,3,20,100,0,,,,,,,,,,,{},{},, -7291,Agate,Agate,3,20,100,0,,,,,,,,,,,{},{},, -7292,White_Mica,White_Mica,3,20,100,0,,,,,,,,,,,{},{},, -7293,Rose_Quartz,Rose_Quartz,3,20,100,0,,,,,,,,,,,{},{},, -7294,Turquoise,Turquoise,3,20,100,0,,,,,,,,,,,{},{},, -7295,Citrine,Citrine,3,20,100,0,,,,,,,,,,,{},{} -7296,Augite,Augite,3,20,100,0,,,,,,,,,,,{},{},, -7297,Black_Mica,Black_Mica,3,20,100,0,,,,,,,,,,,{},{},, -7298,Leaf_Cloth,Leaf_Cloth,3,20,10,0,,,,,,,,,,,{},{},, -7299,Bamboo_Basket,Bamboo_Basket,3,20,10,0,,,,,,,,,,,{},{},, -7300,Jeweled_Ore,Jeweled_Ore,3,20,10,0,,,,,,,,,,,{},{} -7301,Knife_Decoration,Knife_Decoration,3,20,10,0,,,,,,,,,,,{},{},, -7302,Krathong,Krathong,3,20,10,0,,,,,,,,,,,{},{},, - -7500,THG_Membership,THG Membership,3,20,0,10,,,,,,,,,,,{},{} -7501,Token_Bag,Token Bag,3,20,0,10,,,,,,,,,,,{},{} - -// Pet Eggs -//=================================================================== -9001,Poring_Egg,Poring Egg,7,20,0,0,,,,,,,,,,,{},{} -9002,Drops_Egg,Drops Egg,7,20,0,0,,,,,,,,,,,{},{} -9003,Poporing_Egg,Poporing Egg,7,20,0,0,,,,,,,,,,,{},{} -9004,Lunatic_Egg,Lunatic Egg,7,20,0,0,,,,,,,,,,,{},{} -9005,Picky_Egg,Picky Egg,7,20,0,0,,,,,,,,,,,{},{} -9006,Chonchon_Egg,Chonchon Egg,7,20,0,0,,,,,,,,,,,{},{} -9007,Steel_Chonchon_Egg,Steel Chonchon Egg,7,20,0,0,,,,,,,,,,,{},{} -9008,Hunter_Fly_Egg,Hunter Fly Egg,7,20,0,0,,,,,,,,,,,{},{} -9009,Savage_Babe_Egg,Savage Babe Egg,7,20,0,0,,,,,,,,,,,{},{} -9010,Baby_Desert_Wolf_Egg,Baby Desert Wolf Egg,7,20,0,0,,,,,,,,,,,{},{} -9011,Rocker_Egg,Rocker Egg,7,20,0,0,,,,,,,,,,,{},{} -9012,Spore_Egg,Spore Egg,7,20,0,0,,,,,,,,,,,{},{} -9013,Poison_Spore_Egg,Poison Spore Egg,7,20,0,0,,,,,,,,,,,{},{} -9014,PecoPeco_Egg,PecoPeco Egg,7,20,0,0,,,,,,,,,,,{},{} -9015,Smokie_Egg,Smokie Egg,7,20,0,0,,,,,,,,,,,{},{} -9016,Yoyo_Egg,Yoyo Egg,7,20,0,0,,,,,,,,,,,{},{} -9017,Orc_Warrior_Egg,Orc Warrior Egg,7,20,0,0,,,,,,,,,,,{},{} -9018,Munak_Egg,Munak Egg,7,20,0,0,,,,,,,,,,,{},{} -9019,Dokkaebi_Egg,Dokkaebi Egg,7,20,0,0,,,,,,,,,,,{},{} -9020,Sohee_Egg,Sohee Egg,7,20,0,0,,,,,,,,,,,{},{} -9021,Isis_Egg,Isis Egg,7,20,0,0,,,,,,,,,,,{},{} -9022,Green_Petite_Egg,Green Petite Egg,7,20,0,0,,,,,,,,,,,{},{} -9023,Deviruchi_Egg,Deviruchi Egg,7,20,0,0,,,,,,,,,,,{},{} -9024,Bapho_Jr._Egg,Bapho Jr. Egg,7,20,0,0,,,,,,,,,,,{},{} -9025,Bongun_Egg,Bongun Egg,7,20,0,0,,,,,,,,,,,{},{} -9026,Alice_Egg,Alice Egg,7,20,0,0,,,,,,,,,,,{},{} -9027,Zherlthsh_Egg,Zherlthsh Egg,7,20,0,0,,,,,,,,,,,{},{} -9028,test_Egg,Test Egg,7,20,0,0,,,,,,,,,,,{},{} -9029,test_Egg_,Test Egg,7,20,0,0,,,,,,,,,,,{},{} - -// Pet Accessories -//=================================================================== -10001,Skull_Helm,Skull Helm,8,20,0,0,,,,,,,,,,,{},{} -10002,Monster_Oxygen_Mask,Monster Oxygen Mask,8,20,0,0,,,,,,,,,,,{},{} -10003,Transparent_Head_Protector,Transparent Headgear,8,20,0,0,,,,,,,,,,,{},{} -10004,Pacifier,Pacifier,8,20,0,0,,,,,,,,,,,{},{} -10005,Wig,Wig,8,20,0,0,,,,,,,,,,,{},{} -10006,Queen's_Hair_Ornament,Queen's Hair Ornament,8,20,0,0,,,,,,,,,,,{},{} -10007,Silk_Ribbon,Silk Ribbon,8,20,0,0,,,,,,,,,,,{},{} -10008,Punisher,Punisher,8,20,0,0,,,,,,,,,,,{},{} -10009,Wild_Flower,Wild Flower,8,20,0,0,,,,,,,,,,,{},{} -10010,Battered_Pot,Battered Pot,8,20,0,0,,,,,,,,,,,{},{} -10011,Stellar_Hairpin,Stellar Hairpin,8,20,0,0,,,,,,,,,,,{},{} -10012,Tiny_Egg_Shell,Tiny Egg Shell,8,20,0,0,,,,,,,,,,,{},{} -10013,Backpack,Backpack,8,1500,0,0,,,,,,,,,,,{},{} -10014,Rocker_Glasses,Rocker Glasses,8,2000,0,0,,,,,,,,,,,{},{} -10015,Green_Lace,Green Lace,8,20,0,0,,,,,,,,,,,{},{} -10016,Golden_Bell,Golden Bell,8,20,0,0,,,,,,,,,,,{},{} -10017,Bark_Shorts,Bark Shorts,8,20,0,0,,,,,,,,,,,{},{} -10018,Monkey_Circlet,Monkey Circlet,8,20,0,0,,,,,,,,,,,{},{} -10019,Red_Muffler,Red Muffler,8,20,0,0,,,,,,,,,,,{},{} -10020,Sword_of_Chinese_Exorcist,Sword of Chinese Exorcist,8,20,0,0,,,,,,,,,,,{},{} - -// History books -//=================================================================== -11000,Prontera_History_Book,Prontera History Book,3,20,0,0,,,,,,,,,,,{},{} -11001,Izlude_History_Book,Izlude History Book,3,20,0,0,,,,,,,,,,,{},{} -11002,Yuno_History_Book,Yuno History Book,3,20,0,0,,,,,,,,,,,{},{} -11003,Geffen_History_Book,Geffen History Book,3,20,0,0,,,,,,,,,,,{},{} -11004,Aldebaran_History_Book,Aldebaran History Book,3,20,0,0,,,,,,,,,,,{},{} -11005,Alberta_History_Book,Alberta History Book,3,20,0,0,,,,,,,,,,,{},{} -11006,Payon_History_Book,Payon History Book,3,20,0,0,,,,,,,,,,,{},{} -11007,History_Book,Unknown Item,3,20,0,0,,,,,,,,,,,{},{} -11009,History_Book,Unknown Item,3,20,0,0,,,,,,,,,,,{},{} -11010,Archer_Village_History_Book,Unknown Item,3,20,0,0,,,,,,,,,,,{},{} -11011,Lutie_History_Book,Luite History Book,3,20,0,0,,,,,,,,,,,{},{} -11012,Jawaii_History_Book,Jawaii History Book,3,20,0,0,,,,,,,,,,,{},{} -11013,Gonryun_History_Book,Gonryun History Book,3,20,0,0,,,,,,,,,,,{},{} -11014,Mjolnir_History_Book,Mjolnir History Book,3,20,0,0,,,,,,,,,,,{},{} -11015,Amatsu_History_Book,Amatsu History Book,3,20,0,0,,,,,,,,,,,{},{} -11016,Umbala_History_Book,Umbala History Book,3,20,0,0,,,,,,,,,,,{},{} -11017,Nifleheim_History_Book,Nifflheim History Book,3,20,0,0,,,,,,,,,,,{},{} -11018,Morroc_History_Book,Morroc History Book,3,20,0,0,,,,,,,,,,,{},{} -11019,Comodo_History_Book,Comodo History Book,3,20,0,0,,,,,,,,,,,{},{} -11020,Louyang_History_Book,Louyang History Book,3,20,0,0,,,,,,,,,,,{},{} +//ID,Name,Name,Type,Price,Sell,Weight,ATK,DEF,Range,Slot,Job,Gender,Loc,wLV,eLV,View,{UseScript},{EquipScript} + +// Healing Items +//============================================================= +0,DEFAULT,Default,0,20,,10,,,,,0,2,0,0,,,{},{},, +501,Red_Potion,Red Potion,0,50,0,70,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{} +502,Orange_Potion,Orange Potion,0,200,0,100,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{} +503,Yellow_Potion,Yellow Potion,0,550,0,130,,,,,10477567,2,,,,,{ itemheal rand(175,234),0; },{} +504,White_Potion,White Potion,0,1200,0,150,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} +505,Blue_Potion,Blue Potion,0,5000,0,150,,,,,10477567,2,,,,,{ itemheal 0,rand(40,59); },{} +506,Green_Potion,Green Potion,0,40,0,70,,,,,10477567,2,,,,,{ sc_end SC_Poison; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; },{} +507,Red_Herb,Red Herb,0,18,0,30,,,,,10477567,2,,,,,{ itemheal rand(18,27),0; },{} +508,Yellow_Herb,Yellow Herb,0,40,0,50,,,,,10477567,2,,,,,{ itemheal rand(38,57),0; },{} +509,White_Herb,White Herb,0,120,0,70,,,,,10477567,2,,,,,{ itemheal rand(75,114),0; },{} +510,Blue_Herb,Blue Herb,0,60,0,70,,,,,10477567,2,,,,,{ itemheal 0,rand(15,29); },{} +511,Green_Herb,Green Herb,0,10,0,30,,,,,10477567,2,,,,,{ sc_end SC_Poison; },{} +512,mace,Apple,0,15,0,20,,,,,10477567,2,,,,,{ itemheal rand(16,21),0; },{} +513,Banana,Banana,0,15,0,20,,,,,10477567,2,,,,,{ itemheal rand(17,20),0; },{} +514,Grape,Grape,0,200,0,20,,,,,10477567,2,,,,,{ itemheal 0,rand(10,14); },{} +515,Carrot,Carrot,0,15,0,20,,,,,10477567,2,,,,,{ itemheal rand(18,19),0; },{} +516,Sweet_Potato,Sweet Potato,0,15,0,20,,,,,10477567,2,,,,,{ itemheal rand(15,22),0; },{} +517,Meat,Meat,0,50,0,150,,,,,10477567,2,,,,,{ itemheal rand(70,99),0; },{} +518,Honey,Honey,0,500,0,100,,,,,10477567,2,,,,,{ itemheal rand(70,99),rand(20,39); },{} +519,Milk,Milk,0,25,0,30,,,,,10477567,2,,,,,{ itemheal rand(27,36),0; },{} +520,Hinalle_Leaflet,Hinalle Leaflet,0,150,0,10,,,,,10477567,2,,,,,{ itemheal rand(175,234),0; },{} +521,Aloe_Leaflet,Aloe Leaflet,0,360,0,20,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} +522,Mastela_Fruit,Mastela Fruit,0,840,0,30,,,,,10477567,2,,,,,{ itemheal rand(400,599),0; },{} +523,Holy_Water,Holy Water,0,20,0,30,,,,,10477567,2,,,,,{ sc_end SC_Curse; },{} +525,Panacea,Panacea,0,500,0,100,,,,,10477567,2,,,,,{ sc_end SC_Poison; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; sc_end SC_Curse; },{} +526,Royal_Jelly,Royal Jelly,0,7000,0,150,,,,,10477567,2,,,,,{ itemheal rand(325,404),rand(40,59); sc_end SC_Posion; sc_end SC_Silence; sc_end SC_Blind; sc_end SC_Confusion; sc_end SC_Curse; },{} +528,Monster's_Feed,Monster Food,0,60,0,150,,,,,10477567,2,,,,,{ itemheal rand(72,107),0; },{} +529,Candy,Candy,0,10,0,30,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{} +530,Candy_Cane,Candy Cane,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{} +531,Apple_Juice,Apple Juice,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(25,34),0; },{} +532,Banana_Juice,Banana Juice,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(26,33),0; },{} +533,Grape_Juice,Grape Juice,0,250,0,40,,,,,10477567,2,,,,,{ itemheal 0,rand(15,24); },{} +534,Carrot_Juice,Carrot Juice,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(27,32),0; },{} +535,Pumkin,Pumpkin,0,15,0,20,,,,,10477567,2,,,,,{ itemheal 19,0; },{} +536,Ice_Cream,Ice Cream,0,150,0,80,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{} +537,Pet_Food,Pet Food,0,1000,0,10,,,,,10477567,2,,,,,{ itemheal rand(50,89),0; },{} +538,Well-baked_Cookie,Well-baked Cookie,0,1000,0,30,,,,,10477567,2,,,,,{ itemheal rand(160,199),0; },{} +539,Piece_of_Cake,Piece of Cake,0,3000,0,100,,,,,10477567,2,,,,,{ itemheal rand(270,329),0; },{} +540,Falcon_food,Falcon food,0,20,0,50,,,,,10477567,2,,,,,{},{} +541,Pecopeco_food,Pecopeco food,0,20,0,50,,,,,10477567,2,,,,,{},{} +542,Festive_Cookie,Festive Cookie,0,10,0,10,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} +543,Festive_Rainbow_Cake,Festive Rainbow Cake,0,20,0,10,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} +544,Raw_Fish,Raw Fish,0,20,0,30,,,,,10477567,2,,,,,{ itemheal rand(25,59),0; },{} +545,Condensed_Red_Potion,Condensed Red Potion,0,20,0,20,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{} +546,Condensed_Yellow_Potion,Condensed Yellow Potion,0,20,0,30,,,,,10477567,2,,,,,{ itemheal rand(175,234),0; },{} +547,Condensed_White_Potion,Condensed White Potion,0,20,0,50,,,,,10477567,2,,,,,{ itemheal rand(325,404),0; },{} +548,Cheese,Cheese,0,2800,0,50,,,,,10477567,2,,,,,{ itemheal 0,rand(10,14); },{} +549,Yam,Hot Potato,0,180,0,80,,,,,10477567,2,,,,,{ itemheal rand(50,99),0; },{} +550,Rice_Cake,Rice Popper,0,20,5,10,,,,,10477567,2,,,,,{ itemheal rand(10,14),0; },{} +551,Sushi,Sushi,0,20,0,50,,,,,10477567,2,,,,,{ itemheal rand(50,60),0; },{} +552,Ketupat,Ketupat,0,20,0,10,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} +553,Dumpling,Dumpling,0,20,0,50,,,,,10477567,2,,,,,{ itemheal rand(39,68),0; },{} +554,Mochi,Mochi,0,100,0,80,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} +556,Rolled_Rice,Rolled Rice,0,20,0,10,,,,,10477567,3,,,,,{ itemheal rand(10,50),0; },{} +557,Cut_Rice_Rolls,Cut Rice Rolls,0,20,0,10,,,,,0,3,,,,,{ itemheal rand(10,200),0; },{} +558,Chocolate,Chocolate,0,500,0,20,,,,,10477567,2,,,,,{ itemheal 1,1; },{} +559,Hand-made_Chocolate,Hand-made Chocolate,0,5000,0,80,,,,,10477567,2,,,,,{ itemheal 50,50; },{} +560,White_Chocolate,White Chocolate,0,0,0,80,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} +561,Milk_Chocolate_Bar,Milk Chocolate,0,0,0,80,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} +562,Pizza,Pizza,0,20,0,150,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} +563,Double_Growing_Swiss_Pong_Tyu_,Unknown Item,0,20,0,150,,,,,10477567,3,,,,,{ itemheal rand(100,200),0; },{} +564,Meat_Dumpling,Meat Dumpling,0,20,0,30,,,,,0,2,,,,,{ itemheal rand(175,234),0; },{} +565,Vita_500_Bottle,Vita 500,0,2000,0,30,,,,,10477567,2,,,,,{ itemheal 500,0; },{} +566,Tom_Yum_Goong,Tom_Yum_Goong,0,20,150,0,,,,,10477567,2,,,,,{ itemheal rand(100,200),0; },{} +567,Prawn,Prawn,0,20,40,0,,,,,10477567,3,,,,,{ itemheal rand(50,100),0; },{} +568,Lemon,Lemon,0,20,40,0,,,,,0,3,,,,,{},{} + +// Usable Items +//=================================================================== +601,Fly_Wing,Fly Wing,2,60,0,50,,,,,10477567,2,,,,,{ warp "Random",0,0; },{} +602,Butterfly_Wing,Butterfly Wing,2,300,0,50,,,,,10477567,2,,,,,{ warp "SavePoint",0,0; },{} +603,Old_Blue_Box,Old Blue Box,2,10000,0,200,,,,,10477567,2,,,,,{ getitem -1,1; },{} +604,Dead_Branch,Dead Branch,2,50,0,50,,,,,10477567,2,,,,,{ monster "this",0,0,"--ja--",-1,1,; },{} +605,Anodyne,Anodyne,2,2000,0,100,,,,,10477567,2,,,,,{ itemskill 8,1,"??????????"; },{} +606,Aloevera,Aloevera,2,1500,0,100,,,,,10477567,2,,,,,{ itemskill 6,1,"?????"; },{} +607,Yggdrasilberry,Yggdrasilberry,0,2,0,300,,,,,10477567,2,,,,,{ percentheal 100,100; },{} +608,Yggdrasil_Seed,Yggdrasil Seed,0,5000,0,300,,,,,10477567,2,,,,,{ percentheal 50,50; },{} +609,Amulet,Amulet,2,100,0,100,,,,,10477567,2,,,,,{},{} +610,Yggdrasil_Leaf,Yggdrasil Leaf,2,4000,0,100,,,,,10477567,2,,,,,{ itemskill 54,1,"????????"; },{} +611,Magnifier,Magnifier,2,40,0,50,,,,,10477567,2,,,,,{ itemskill 40,1,"???"; },{} +// Smithing Items +612,Mini_Furnace,Mini Furnace,2,150,0,200,,,,,10477567,2,,,,,{ produce 16; },{} +613,Iron_Hammer,Iron Hammer,2,1000,0,200,,,,,10477567,2,,,,,{ produce 1; },{} +614,Golden_Hammer,Golden Hammer,2,3000,0,300,,,,,10477567,2,,,,,{ produce 2; },{} +615,Oridecon_Hammer,Oridecon Hammer,2,5000,0,400,,,,,10477567,2,,,,,{ produce 3; },{} +// Item Givers +616,Old_Card_Album,Old Card Album,2,10000,0,50,,,,,10477567,2,,,,,{ getitem -3,1; },{} +617,Old_Violet_Box,Old Violet Box,2,10000,0,200,,,,,10477567,2,,,,,{ getitem -2,1; },{} +618,Worn_Out_Scroll,Worn Out Scroll,2,50,0,20,,,,,10477567,2,,,,,{ getitem -5,1; },{} + +// Pet Tames +//=================================================================== +619,Unripe_Apple,Unripe Apple,2,1000,0,50,,,,,10477567,2,,,,,{ pet 1002; },{} +620,Orange_Juice,Orange Juice,2,1500,0,50,,,,,10477567,2,,,,,{ pet 1113; },{} +621,Bitter_Herb,Bitter Herb,2,20,0,50,,,,,10477567,2,,,,,{ pet 1031; },{}, +622,Rainbow_Carrot,Rainbow Carrot,2,2500,0,50,,,,,10477567,2,,,,,{ pet 1063; },{}, +623,Earthworm_the_Dude,Earthworm the Dude,2,4000,0,50,,,,,10477567,2,,,,,{ pet 1049; },{}, +624,Rotten_Fish,Rotten Fish,2,2500,0,50,,,,,10477567,2,,,,,{ pet 1011; },{}, +625,Rusty_Iron,Rusty Iron,2,100,0,50,,,,,10477567,2,,,,,{ pet 1042; },{}, +626,Monster_Juice,Monster Juice,2,1500,0,50,,,,,10477567,2,,,,,{ pet 1035; },{} +627,Sweet_Milk,Sweet Milk,2,7000,0,50,,,,,10477567,2,,,,,{ pet 1167; },{} +628,Well_Dried_Bone,Well Dried Bone,2,10000,0,50,,,,,10477567,2,,,,,{ pet 1107; },{} +629,Singing_Flower,Singing Flower,2,300,0,50,,,,,10477567,2,,,,,{ pet 1052; },{} +630,Dew_Laden_Moss,Dew Laden Moss,2,10,0,50,,,,,10477567,2,,,,,{ pet 1014; },{}, +631,Deadly_Noxious_Herb,Deadly Noxious Herb,2,20,0,50,,,,,10477567,2,,,,,{ pet 1077; },{}, +632,Fatty_Chubby_Earthworm,Fatty Chubby Earthworm,2,5000,0,50,,,,,10477567,2,,,,,{ pet 1019; },{}, +633,Baked_Yam,Baked Yam,2,20,0,50,,,,,10477567,2,,,,,{ pet 1056; },{},, +634,Tropical_Banana,Tropical Banana,2,20,0,50,,,,,10477567,2,,,,,{ pet 1057; },{},, +635,Horror_of_Tribe,Horror of Tribe,2,300,0,50,,,,,10477567,2,,,,,{ pet 1023; },{},, +636,No_Recipient,No Recipient,2,100,0,50,,,,,10477567,2,,,,,{ pet 1026; },{},, +637,Old_Broom,Old Broom,2,350,0,50,,,,,10477567,2,,,,,{ pet 1110; },{},, +638,Silver_Knife_of_Chastity,Silver Knife of Chastity,2,12000,0,50,,,,,10477567,2,,,,,{ pet 1170; },{},, +639,Armlet_of_Obedience,Armlet of Obedience,2,18000,0,50,,,,,10477567,2,,,,,{ pet 1029; },{},, +640,Shining_Stone,Shining Stone,2,3000,0,50,,,,,10477567,2,,,,,{ pet 1155; },{},, +641,Contract_in_Shadow,Contracts in Shadow,2,100,0,50,,,,,10477567,2,,,,,{ pet 1109; },{},, +642,Book_of_Devil,Book of Devil,2,1800,0,50,,,,,10477567,2,,,,,{ pet 1101; },{},, +643,Pet_Incubator,Pet Incubator,2,3000,,30,,,,,10477567,2,,,,,{ if((countitem(9030)<1)&&(countitem(9031)<1)&&(countitem(9032)<1)&&(countitem(9033)<1)&&(countitem(9034)<1)&&(countitem(9035)<1)&&(countitem(9036)<1)&&(countitem(9037)<1)&&(countitem(9038)<1)&&(countitem(9039)<1)) bpet; },{},, + +// Misc Items +//=================================================================== +644,Gift_Box,Gift Box,2,2,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, +645,Concentration_Potion,Concentration Potion,2,800,0,100,,,,,10477567,2,,,,,{ sc_start SC_SpeedPot0,1800,0; },{} +656,Awakening_Potion,Awakening Potion,2,1500,0,150,,,,,8904431,2,,,40,,{ sc_start SC_SpeedPot1,1800,0; },{} +657,Berserk_Potion,Berserk Potion,2,3000,0,200,,,,,410786,2,,,85,,{ sc_start SC_SpeedPot2,1800,0; },{} +658,Tribal_Solidarity,Tribal Solidarity,3,1000,0,500,,,,,,,,,,,{},{} +659,Her_Heart,Her Heart,2,500,0,50,,,,,10477567,2,,,,,{ pet 1188; },{},, +660,Forbidden_Red_Candle,Red Candle,2,20,0,50,,,,,10477567,2,,,,,{ pet 1200; },{},, +661,Sky_Apron,Soft Apron,2,20,0,50,,,,,10477567,2,,,,,{ pet 1275; },{} + +// Newer Items +664,Gift_Box_,Gift Box,2,20,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, +665,Gift_Box__,Gift Box,2,20,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, +666,Gift_Box___,Gift Box,2,20,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, +667,Gift_Box____,Gift Box,2,20,0,200,,,,,10477567,2,,,,,{ getitem -4,1; },{}, +668,Angpow,Angpow,0,1,0,2,,,,,10477567,2,,,,,{ set Zeny,Zeny+rand(100,10000); },{} +669,Rice_Cake_Soup,Rice Cake Soup,2,20,0,100,,,,,,,,,,,{},{},, +670,Gold_Coin_Pouch,Gold Coin Pouch,2,20,0,400,,,,,,,,,,,{},{},, +671,Gold_Coin,Gold Coin,2,20,0,40,,,,,,,,,,,{},{},, +672,Copper_Coin_Pouch,Copper Coin Pouch,2,20,0,400,,,,,,,,,,,{},{},, +673,Copper_Coin,Copper Coin,2,20,0,40,,,,,,,,,,,{},{},, +674,Mysterious_Ore_Coin,Mysterious Ore Coin,2,20,0,40,,,,,0,3,,,,,{},{} +675,Silver_Coin,Silver Coin,2,20,0,40,,,,,0,3,,,,,{},{} +676,Silver_Coin_Pouch,Silver Coin Pouch,2,20,0,400,,,,,0,3,,,,,{},{} +677,Platinum_Coin,Platinum Coin,2,20,0,40,,,,,0,3,,,,,{},{} +678,Deadly_Poison_Bottle,Deadly Poison Bottle,2,20,0,100,,,,,0,3,,,,,{},{} +679,Recall_Pills,Recall Pills,2,20,0,300,,,,,0,3,,,,,{},{} +680,Carnation,Carnation,2,20,0,1000,,,,,0,3,,,,,{},{} +681,Wedding_Photo_Album,Wedding_Photo_Album,2,20,0,10,,,,,0,3,,,,,{},{} +682,Realgar_Wine,Realgar Wine,2,20,0,50,,,,,10477567,2,,,,,{ sc_start SC_ATKPOT,30,30; },{} +683,Exorcize_Herb,Exorcize Herb,2,20,0,50,,,,,10477567,2,,,,,{ sc_start SC_MATKPOT,30,30; },{} +684,Durian,Durian,2,20,0,10,,,,,0,3,,,,,{},{} +685,Ramadan,Ramadan,2,20,10,10,,,,,0,3,,,,,{},{} + +701,Ora_Ora,Ora Ora,3,55000,0,200,,,,,,,,,,,{},{} +702,Animal_Gore,Animal Gore,3,2,0,100,,,,,,,,,,,{},{} +703,Hinalle,Hinalle,3,2,0,10,,,,,,,,,,,{},{} +704,Aloe,Aloe,3,2,0,10,,,,,,,,,,,{},{} +705,Clover,Clover,3,10,0,10,,,,,,,,,,,{},{} +706,Four_Leaf_Clover,Four-Leaf Clover,3,80000,0,10,,,,,,,,,,,{},{} +707,Singing_Plant,Singing Plant,3,2,0,10,,,,,,,,,,,{},{} +708,Ment,Ment,3,2,0,10,,,,,,,,,,,{},{} +709,Izidor,Izidor,3,2,0,10,,,,,,,,,,,{},{} +710,Illusion_Flower,Illusion Flower,3,2,0,10,,,,,,,,,,,{},{} +711,Shoot,Shoot,3,16,0,10,,,,,,,,,,,{},{} +712,Flower,Flower,3,2,0,10,,,,,,,,,,,{},{} +713,Empty_Bottle,Empty Bottle,3,6,0,20,,,,,,,,,,,{},{} +714,Emperium,Emperium,3,2,0,1000,,,,,,,,,,,{},{} +715,Yellow_Gemstone,Yellow Gemstone,3,600,0,30,,,,,,,,,,,{},{} +716,Red_Gemstone,Red Gemstone,3,600,0,30,,,,,,,,,,,{},{} +717,Blue_Gemstone,Blue Gemstone,3,600,0,30,,,,,,,,,,,{},{} +718,Garnet,Garnet,3,6000,0,100,,,,,,,,,,,{},{} +719,Amethyst,Amethyst,3,6000,0,100,,,,,,,,,,,{},{} +720,Aquamarine,Aquamarine,3,6000,0,100,,,,,,,,,,,{},{} +721,Emerald,Emerald,3,6000,0,100,,,,,,,,,,,{},{} +722,Pearl,Pearl,3,6000,0,100,,,,,,,,,,,{},{} +723,Ruby,Ruby,3,6000,0,100,,,,,,,,,,,{},{} +724,Cursed_Ruby,Cursed Ruby,3,1000,0,100,,,,,,,,,,,{},{} +725,Sardonyx,Sardonyx,3,6000,0,100,,,,,,,,,,,{},{} +726,Sapphire,Sapphire,3,6000,0,100,,,,,,,,,,,{},{} +727,Opal,Opal,3,6000,0,100,,,,,,,,,,,{},{} +728,Topaz,Topaz,3,6000,0,100,,,,,,,,,,,{},{} +729,Zircon,Zircon,3,6000,0,100,,,,,,,,,,,{},{} +730,1_Carat_Diamond,1 Carat Diamond,3,10000,0,100,,,,,,,,,,,{},{} +731,2_Carat_Diamond,2 Carat Diamond,3,25000,0,100,,,,,,,,,,,{},{} +732,3_Carat_Diamond,3 Carat Diamond,3,55000,0,100,,,,,,,,,,,{},{} +733,Cracked_Diamond,Cracked Diamond,3,2,0,100,,,,,,,,,,,{},{} +734,Red_Frame,Red Frame,3,3000,0,200,,,,,,,,,,,{},{} +735,Chung_Jah,Chung Jah,3,5000,0,500,,,,,,,,,,,{},{} +736,China,China,3,1000,0,300,,,,,,,,,,,{},{} +737,Black_Ladle,Black Ladle,3,400,0,50,,,,,,,,,,,{},{} +738,Pencil_Case,Pencil Case,3,300,0,100,,,,,,,,,,,{},{} +739,Rouge,Rouge,3,10000,0,10,,,,,,,,,,,{},{} +740,Puppet,Puppet,3,1000,0,100,,,,,,,,,,,{},{} +741,Poring_Doll,Poring Doll,3,1800,0,100,,,,,,,,,,,{},{} +742,Chonchon_Doll,Chonchon Doll,3,3000,1000,100,,,,,,,,,,,{},{} +743,Spore_Doll,Spore Doll,3,5500,0,100,,,,,,,,,,,{},{} +744,Bouquet,Bouquet,3,2000,0,50,,,,,,,,,,,{},{} +745,Wedding_Bouquet,Wedding Bouquet,3,10000,0,50,,,,,,,,,,,{},{} +746,Glass_Bead,Glass Bead,3,1400,0,50,,,,,,,,,,,{},{} +747,Crystal_Mirror,Crystal Mirror,3,15000,0,50,,,,,,,,,,,{},{} +748,Witherless_Rose,Witherless Rose,3,55000,0,10,,,,,,,,,,,{},{} +749,Frozen_Rose,Frozen Rose,3,35000,0,10,,,,,,,,,,,{},{} +750,Baphomet_Doll,Baphomet Doll,3,18000,0,100,,,,,,,,,,,{},{} +751,Osiris_Doll,Osiris Doll,3,14000,0,100,,,,,,,,,,,{},{} +752,Rocker_Doll,Grasshopper Doll,3,4000,0,100,,,,,,,,,,,{},{} +753,Yoyo_Doll,Yoyo Doll,3,6000,0,100,,,,,,,,,,,{},{} +754,Raccoon_Doll,Raccoon Doll,3,5000,0,100,,,,,,,,,,,{},{} +756,Rough_Oridecon,Rough Oridecon,3,548,0,200,,,,,,,,,,,{},{} +757,Rough_Elunium,Rough Elunium,3,648,0,200,,,,,,,,,,,{},{} +901,Danggie,Danggie,3,250,0,10,,,,,,,,,,,{},{} +902,Tree_Root,Tree Root,3,12,0,10,,,,,,,,,,,{},{} +903,Reptile_Tongue,Reptile Tongue,3,50,0,10,,,,,,,,,,,{},{} +904,Scorpion_Tail,Scorpion Tail,3,124,0,10,,,,,,,,,,,{},{} +905,Stem,Stem,3,58,0,10,,,,,,,,,,,{},{} +906,Pointed_Scale,Pointed Scale,3,70,0,10,,,,,,,,,,,{},{} +907,Resin,Resin,3,120,0,10,,,,,,,,,,,{},{} +908,Spawn,Spawn,3,148,0,10,,,,,,,,,,,{},{} +909,Jellopy,Jellopy,3,6,0,10,,,,,,,,,,,{},{} +910,Garlet,Garlet,3,40,0,10,,,,,,,,,,,{},{} +911,Scell,Scell,3,160,0,10,,,,,,,,,,,{},{} +912,Zargon,Zargon,3,480,0,10,,,,,,,,,,,{},{} +913,Tooth_of_Bat,Tooth of Bat,3,34,0,10,,,,,,,,,,,{},{} +914,Fluff,Fluff,3,8,0,10,,,,,,,,,,,{},{} +915,Chrysalis,Chrysalis,3,8,0,10,,,,,,,,,,,{},{} +916,Feather_of_Birds,Feather of Birds,3,10,0,10,,,,,,,,,,,{},{} +917,Talon,Talon,3,20,0,10,,,,,,,,,,,{},{} +918,Sticky_Webfoot,Sticky Webfoot,3,20,0,10,,,,,,,,,,,{},{} +919,Animal_Skin,Animal Skin,3,36,0,10,,,,,,,,,,,{},{} +920,Wolf_Claw,Wolf Claw,3,58,0,10,,,,,,,,,,,{},{} +921,Mushroom_Spore,Mushroom Spore,3,36,0,10,,,,,,,,,,,{},{} +922,Orc's_Fang,Orcish Fang,3,220,0,10,,,,,,,,,,,{},{} +923,Evil_Horn,Evil Horn,3,1020,0,10,,,,,,,,,,,{},{} +924,Powder_of_Butterfly,Powder of Butterfly,3,90,0,10,,,,,,,,,,,{},{} +925,Bill_of_Birds,Bill of Birds,3,64,0,10,,,,,,,,,,,{},{} +926,Snake_Scale,Snake Scale,3,82,0,10,,,,,,,,,,,{},{} +928,Insect_Feeler,Insect Feeler,3,114,0,10,,,,,,,,,,,{},{} +929,Immortal_Heart,Immortal Heart,3,374,0,10,,,,,,,,,,,{},{} +930,Rotten_Bandage,Rotten Bandage,3,358,0,10,,,,,,,,,,,{},{} +931,Orcish_Voucher,Orcish Voucher,3,168,0,10,,,,,,,,,,,{},{} +932,Skel-Bone,Skel-Bone,3,232,0,10,,,,,,,,,,,{},{} +934,Memento,Memento,3,600,0,10,,,,,,,,,,,{},{} +935,Shell,Shell,3,14,0,10,,,,,,,,,,,{},{} +936,Scale_Shell,Scale Shell,3,466,0,10,,,,,,,,,,,{},{} +937,Venom_Canine,Venom Canine,3,148,0,10,,,,,,,,,,,{},{} +938,Sticky_Mucus,Sticky Mucus,3,70,0,10,,,,,,,,,,,{},{} +939,Bee_Sting,Bee Sting,3,32,0,10,,,,,,,,,,,{},{} +940,Grasshopper's_Leg,Grasshoppers Leg,3,36,0,10,,,,,,,,,,,{},{} +941,Nose_Ring,Nose Ring,3,568,0,10,,,,,,,,,,,{},{} +942,Yoyo_Tail,Yoyo Tail,3,114,0,10,,,,,,,,,,,{},{} +943,Solid_Shell,Solid Shell,3,448,0,10,,,,,,,,,,,{},{} +944,Horseshoe,Horseshoe,3,588,0,10,,,,,,,,,,,{},{} +945,Raccoon_Leaf,Raccoon Leaf,3,106,0,10,,,,,,,,,,,{},{} +946,Snail's_Shell,Snails Shell,3,64,0,10,,,,,,,,,,,{},{} +947,Horn,Horn,3,116,0,10,,,,,,,,,,,{},{} +948,Bear's_Footskin,Bears Footskin,3,174,0,10,,,,,,,,,,,{},{} +949,Feather,Feather,3,20,0,10,,,,,,,,,,,{},{} +950,Heart_of_Mermaid,Heart of Mermaid,3,264,0,10,,,,,,,,,,,{},{} +951,Fin,Fin,3,412,0,10,,,,,,,,,,,{},{} +952,Cactus_Needle,Cactus Needle,3,82,0,10,,,,,,,,,,,{},{} +953,Stone_Heart,Stone Heart,3,184,0,10,,,,,,,,,,,{},{} +954,Shining_Scale,Shining Scale,3,466,0,10,,,,,,,,,,,{},{} +955,Worm_Peeling,Worm Peeling,3,52,0,10,,,,,,,,,,,{},{} +956,Gill,Gill,3,342,0,10,,,,,,,,,,,{},{} +957,Decayed_Nail,Decayed Nail,3,82,0,10,,,,,,,,,,,{},{} +958,Horrendous_Mouth,Horrendous Mouth,3,390,0,10,,,,,,,,,,,{},{} +959,Stinky_Scale,Stinky Scale,3,168,0,10,,,,,,,,,,,{},{} +960,Nipper,Nipper,3,114,0,10,,,,,,,,,,,{},{} +961,Conch,Conch,3,158,0,10,,,,,,,,,,,{},{} +962,Tentacle,Tentacle,3,70,0,10,,,,,,,,,,,{},{} +963,Sharp_scale,Sharp Scale,3,250,0,10,,,,,,,,,,,{},{} +964,Crab_Shell,Crab Shell,3,90,5,10,,,,,,,,,,,{},{} +965,Clam_Shell,Clam Shell,3,56,5,10,,,,,,,,,,,{},{} +966,Clam_Flesh,Clam Flesh,3,158,0,10,,,,,,,,,,,{},{} +967,Turtle_Shell,Turtle Shell,3,680,0,10,,,,,,,,,,,{},{} +968,Heroic_Emblem,Heroic Emblem,3,3000,0,10,,,,,,,,,,,{},{} +969,Gold,Gold,3,200000,0,200,,,,,,,,,,,{},{} +970,Alcohol,Alcohol,3,400,0,30,,,,,,,,,,,{},{} +971,Detrimindexta,Detrimindexta,3,400,0,30,,,,,,,,,,,{},{} +972,Karvodailnirol,Karvodailnirol,3,400,0,30,,,,,,,,,,,{},{} +973,Counteragent,Counteragent,3,200,0,70,,,,,,,,,,,{},{} +974,Mixture,Mixture,3,200,0,70,,,,,,,,,,,{},{} +975,Scarlet_Dyestuffs,Scarlet Dyestuffs,3,1000,0,150,,,,,,,,,,,{},{} +976,Lemon_Dyestuffs,Lemon Dyestuffs,3,1000,0,150,,,,,,,,,,,{},{} +978,Cobaltblue_Dyestuff,Cobaltblue Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} +979,Darkgreen_Dyestuff,Darkgreen Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} +980,Orange_Dyestuff,Orange Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} +981,Violet_Dyestuff,Violet Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} +982,White_Dyestuff,White Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} +983,Black_Dyestuff,Black Dyestuff,3,1000,0,150,,,,,,,,,,,{},{} +984,Oridecon,Oridecon,3,1100,0,200,,,,,,,,,,,{},{} +985,Elunium,Elunium,3,1100,0,200,,,,,,,,,,,{},{} +986,Anvil,Anvil,3,30000,0,500,,,,,,,,,,,{},{} +987,Oridecon_Anvil,Oridecon Anvil,3,120000,0,700,,,,,,,,,,,{},{} +988,Golden_Anvil,Golden Anvil,3,300000,0,900,,,,,,,,,,,{},{} +989,Emperium_Anvil,Emperium Anvil,3,600000,0,1000,,,,,,,,,,,{},{} +990,Red_Blood,Red Blood,3,1000,0,50,,,,,,,,,,,{},{} +991,Crystal_Blue,Crystal Blue,3,1000,0,50,,,,,,,,,,,{},{} +992,Wind_of_Verdure,Wind of Verdure,3,1000,0,50,,,,,,,,,,,{},{} +993,Green_Live,Green Live,3,1000,0,50,,,,,,,,,,,{},{} +994,Flame_Heart,Flame Heart,3,3000,0,300,,,,,,,,,,,{},{} +995,Mystic_Frozen,Mystic Frozen,3,3000,0,300,,,,,,,,,,,{},{} +996,Rough_Wind,Rough Wind,3,3000,0,300,,,,,,,,,,,{},{} +997,Great_Nature,Great Nature,3,3000,0,300,,,,,,,,,,,{},{} +998,Iron,Iron,3,100,0,50,,,,,,,,,,,{},{} +999,Steel,Steel,3,1000,0,100,,,,,,,,,,,{},{} +1000,Star_Crumb,Star Crumb,3,4500,0,100,,,,,,,,,,,{},{} +1001,Star_Dust,Star Dust,3,1500,0,10,,,,,,,,,,,{},{} +1002,Iron_Ore,Iron Ore,3,50,0,150,,,,,,,,,,,{},{} +1003,Coal,Coal,3,500,0,50,,,,,,,,,,,{},{} +1004,Chivalry_Emblem,Chivalry Emblem,3,2,0,100,,,,,,,,,,,{},{} +1005,Hammer_of_Blacksmith,Hammer of Blacksmith,3,2,0,800,,,,,,,,,,,{},{} +1006,Old_Magic_Book,Old Magic Book,3,2,0,30,,,,,,,,,,,{},{} +1007,Necklace_of_Wisdom,Necklace of Wisdom,3,2,0,40,,,,,,,,,,,{},{} +1008,Necklace_of_Oblivion,Necklace of Oblivion,3,2,0,100,,,,,,,,,,,{},{} +1009,Hand_of_God,Hand of God,3,2,0,20,,,,,,,,,,,{},{} +1010,Phracon,Phracon,3,200,0,200,,,,,,,,,,,{},{} +1011,Emveretarcon,Emveretarcon,3,1000,0,200,,,,,,,,,,,{},{} +1012,Frill,Frill,3,250,0,10,,,,,,,,,,,{},{} +1013,Rainbow_Shell,Rainbow Shell,3,90,0,10,,,,,,,,,,,{},{} +1014,Ant_Jaw,Ant Jaw,3,232,0,10,,,,,,,,,,,{},{} +1015,Tongue,Tongue,3,528,0,10,,,,,,,,,,,{},{} +1016,Rat_Tail,Rat Tail,3,52,0,10,,,,,,,,,,,{},{} +1017,Mole_Whiskers,Mole Whiskers,3,106,0,10,,,,,,,,,,,{},{} +1018,Mole_Claw,Mole Claw,3,210,0,10,,,,,,,,,,,{},{} +1019,Trunk,Trunk,3,60,0,10,,,,,,,,,,,{},{} +1020,Black_Hair,Black Hair,3,292,0,10,,,,,,,,,,,{},{} +1021,Dokkaebi_Horn,Dokkaebi Horn,3,292,0,10,,,,,,,,,,,{},{} +1022,Nine_Tails,Nine Tails,3,650,0,10,,,,,,,,,,,{},{} +1023,Fish_Tail,Fish Tail,3,196,0,10,,,,,,,,,,,{},{} +1024,Squid_Ink,Squid Ink,3,264,0,10,,,,,,,,,,,{},{} +1025,Cobweb,Cobweb,3,184,0,10,,,,,,,,,,,{},{} +1026,Acorn,Acorn,3,98,0,10,,,,,,,,,,,{},{} +1027,Porcupine_Quill,Porcupine Quill,3,158,0,10,,,,,,,,,,,{},{} +1028,Mane,Mane,3,196,0,10,,,,,,,,,,,{},{} +1029,Tiger_Skin,Tiger Skin,3,548,0,10,,,,,,,,,,,{},{} +1030,Tiger's_Footskin,Tigers Footskin,3,1500,0,10,,,,,,,,,,,{},{} +1031,Mantis_Scythe,Mantis Scythe,3,196,0,10,,,,,,,,,,,{},{} +1032,Maneater_Blossom,Maneater Blossom,3,196,0,10,,,,,,,,,,,{},{} +1033,Maneater_Root,Maneater Root,3,208,0,10,,,,,,,,,,,{},{} +1034,Blue_Hair,Blue Hair,3,342,0,10,,,,,,,,,,,{},{} +1035,Dragon_Canine,Dragon Canine,3,484,0,10,,,,,,,,,,,{},{} +1036,Dragon_Scale,Dragon Scale,3,500,0,10,,,,,,,,,,,{},{} +1037,Dragon_Tail,Dragon Tail,3,1200,0,10,,,,,,,,,,,{},{} +1038,Little_Evil_Horn,Little Evil Horn,3,528,0,10,,,,,,,,,,,{},{} +1039,Little_Evil_Wing,Little Evil Wing,3,2000,0,10,,,,,,,,,,,{},{} +1040,Elder_Pixie's_Moustache,Elder Pixies Moustache,3,232,0,10,,,,,,,,,,,{},{} +1041,Lantern,Lantern,3,250,0,10,,,,,,,,,,,{},{} +1042,Bug_Leg,Bug Leg,3,430,0,10,,,,,,,,,,,{},{} +1043,Orc_Claw,Orc Claw,3,168,0,10,,,,,,,,,,,{},{} +1044,Zenorc's_Fang,Zenorcs Fang,3,264,0,10,,,,,,,,,,,{},{} +1045,Cultish_Masque,Cultish Masque,3,412,0,10,,,,,,,,,,,{},{} +1046,Scorpion_Nipper,Scorpion Nipper,3,614,0,10,,,,,,,,,,,{},{} +1047,Dead_Medusa,Dead Medusa,3,548,0,10,,,,,,,,,,,{},{} +1048,Horrendous_Hair,Horrendous Hair,3,800,0,10,,,,,,,,,,,{},{} +1049,Skirt_of_Virgin,Skirt of Virgin,3,1700,0,10,,,,,,,,,,,{},{} +1050,Tendon,Tendon,3,220,0,10,,,,,,,,,,,{},{} +1051,Detonator,Detonator,3,450,0,10,,,,,,,,,,,{},{} +1052,Single_Cell,Single Cell,3,46,0,10,,,,,,,,,,,{},{} +1053,Ancient_Tooth,Ancient Tooth,3,548,0,10,,,,,,,,,,,{},{} +1054,Ancient_Lips,Ancient Lips,3,1000,0,10,,,,,,,,,,,{},{} +1055,Earthworm_Peeling,Earthworm Peeling,3,196,0,10,,,,,,,,,,,{},{} +1056,Grit,Grit,3,306,0,10,,,,,,,,,,,{},{} +1057,Moth_Dust,Moth Dust,3,138,0,10,,,,,,,,,,,{},{} +1058,Moth_Wings,Moth Wings,3,200,0,10,,,,,,,,,,,{},{} +1059,Fabric,Fabric,3,306,0,10,,,,,,,,,,,{},{} +1060,Golden_Hair,Golden Hair,3,430,0,10,,,,,,,,,,,{},{} +1061,Witched_Starsand,Witched Starsand,3,484,0,10,,,,,,,,,,,{},{} +1062,Jack_o'_Pumpkin,Jack o' Pumpkin,3,374,0,10,,,,,,,,,,,{},{} +1063,Fang,Fang,3,680,0,10,,,,,,,,,,,{},{} +1064,Reins,Reins,3,802,0,10,,,,,,,,,,,{},{} +1065,Trap,Trap,3,100,0,10,,,,,,,,,,,{},{} +1066,Fine-grained_Trunk,Fine-grained Trunk,3,2,0,10,,,,,,,,,,,{},{} +1067,Solid_Trunk,Solid Trunk,3,2,0,10,,,,,,,,,,,{},{} +1068,Barren_Trunk,Barren Trunk,3,2,0,10,,,,,,,,,,,{},{} +1069,Orange_Net_Mushroom,Orange Net Mushroom,3,2,0,10,,,,,,,,,,,{},{} +1070,Orange_Gooey_Mushroom_,Orange Gooey Mushroom,3,2,0,10,,,,,,,,,,,{},{} +1071,Unknown_Test_Tube,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} +1072,Delivery_Message,DEL Message,3,2,0,10,,,,,,,,,,,{},{} +1073,Voucher,Voucher,3,2,0,10,,,,,,,,,,,{},{} +1074,Voucher_,Voucher,3,2,0,10,,,,,,,,,,,{},{} +1075,Voucher__,Voucher,3,2,0,10,,,,,,,,,,,{},{} +1076,Voucher___,Voucher,3,2,0,10,,,,,,,,,,,{},{} +1077,Voucher____,Voucher,3,2,0,10,,,,,,,,,,,{},{} +1078,Voucher_____,Voucher,3,2,0,10,,,,,,,,,,,{},{} +1079,Voucher______,Voucher,3,2,0,10,,,,,,,,,,,{},{} +1080,Voucher_______,Voucher,3,2,0,10,,,,,,,,,,,{},{} +1081,Delivery_Box,DEL Box,3,2,0,1200,,,,,,,,,,,{},{} +1082,Delivery_Box_,DEL Box,3,2,0,1200,,,,,,,,,,,{},{} +1083,Delivery_Box__,DEL Box,3,2,0,1200,,,,,,,,,,,{},{} +1084,Kafra_Pass,Kafra Pass,3,0,0,10,,,,,,,,,,,{},{} +1085,Unknown_Test_Tube_,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} +1086,Unknown_Test_Tube__,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} +1087,Unknown_Test_Tube___,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} +1088,Morroc_Solution,Morocc Solution,3,2,0,30,,,,,,,,,,,{},{} +1089,Payon_Solution,Payon Solution,3,2,0,30,,,,,,,,,,,{},{} +1090,Unknown_Test_Tube____,Unknown Testtube,3,2,0,30,,,,,,,,,,,{},{} +1092,Empty_Test_Tube,Empty Testtube,3,3,0,20,,,,,,,,,,,{},{} +1093,Empty_Potion_Bottle,Empty Potion Bottle,3,10,0,10,,,,,,,,,,,{},{} +1094,Short_Daenggie,Short Daenggie,3,278,0,10,,,,,,,,,,,{},{} +1095,Clock_Hand,Needle of Alarm,3,546,0,10,,,,,,,,,,,{},{} +1096,Round_Shell,Round Shell,3,954,0,10,,,,,,,,,,,{},{} +1097,Worn_Out_Page,Worn Out Page,3,820,0,10,,,,,,,,,,,{},{} +1098,Manacles,Manacles,3,658,0,10,,,,,,,,,,,{},{} +1099,Worn-out_Prison_Uniform,Worn-out Prison Uniform,3,680,0,10,,,,,,,,,,,{},{} + +// Weapons +//=================================================================== +// 1 Handed Swords +1101,Sword,Sword,4,100,0,500,25,,1,3,8803555,2,2,1,2,2,{},{} +1102,Sword_,Sword,4,100,0,500,25,,1,4,8803555,2,2,1,2,2,{},{} +1103,Sword__,Sword,4,100,0,500,25,,1,0,8803555,2,2,1,2,2,{},{} +1104,Falchion,Falchion,4,1500,0,600,39,,1,3,8803555,2,2,1,2,2,{},{} +1105,Falchion_,Falchion,4,1500,0,600,39,,1,4,8803555,2,2,1,2,2,{},{} +1106,Falchion__,Falchion,4,1500,0,600,39,,1,0,8803555,2,2,1,2,2,{},{} +1107,Blade,Blade,4,2900,0,700,53,,1,3,8803555,2,2,1,2,2,{},{} +1108,Blade_,Blade,4,2900,0,700,53,,1,4,8803555,2,2,1,2,2,{},{} +1109,Blade__,Blade,4,2900,0,700,53,,1,0,8803555,2,2,1,2,2,{},{} +1110,Rapier,Rapier,4,10000,0,500,70,,1,2,8803555,2,2,2,14,2,{},{} +1111,Rapier_,Rapier,4,10000,0,500,70,,1,3,8803555,2,2,2,14,2,{},{} +1112,Rapier__,Rapier,4,10000,0,500,70,,1,0,8803555,2,2,2,14,2,{},{} +1113,Scimiter,Scimiter,4,17000,0,700,85,,1,2,8803555,2,2,2,14,2,{},{} +1114,Scimiter_,Scimiter,4,17000,0,700,85,,1,3,8803555,2,2,2,14,2,{},{} +1115,Scimiter__,Scimiter,4,17000,0,700,85,,1,0,8803555,2,2,2,14,2,{},{} +1116,Katana,Katana,4,2000,0,1000,60,,1,3,16514,2,34,1,4,3,{},{} +1117,Katana_,Katana,4,2000,0,1000,60,,1,4,16514,2,34,1,4,3,{},{} +1118,Katana__,Katana,4,2000,0,1000,60,,1,0,16514,2,34,1,4,3,{},{} +1119,Tsurugi,Tsurugi,4,51000,0,1200,130,,1,1,414946,2,2,3,27,2,{},{} +1120,Tsurugi_,Tsurugi,4,51000,0,1200,130,,1,2,414946,2,2,3,27,2,{},{} +1121,Tsurugi__,Tsurugi,4,51000,0,1200,130,,1,0,414946,2,2,3,27,2,{},{} +1122,Ring_Pommel_Saber,Ring Pommel Saber,4,24000,0,900,100,,1,2,414946,2,2,2,14,2,{},{} +1123,Haedonggum,Haedonggum,4,50000,0,900,120,,1,1,414946,2,2,3,27,2,{},{ bonus bInt,3; },,,,,, +1124,Orcish_Sword,Orcish sword,4,20,0,800,90,,1,0,8803555,2,2,3,5,2,{},{ bonus bUnbreakable,100; },,,,,,, +1125,Ring_Pommel_Saber_,Ring Pommel Saber,4,24000,0,900,100,,1,3,414946,2,2,2,14,2,{},{},,,,,,, +1126,Saber,Saber,4,49000,0,1000,115,,1,2,414946,2,2,3,27,2,{},{},,,,,,, +1127,Saber_,Saber,4,49000,0,1000,115,,1,3,414946,2,2,3,27,2,{},{},,,,,,, +1128,Haedonggum_,Haedonggum,4,50000,0,900,120,,1,2,414946,2,2,3,27,2,{},{ bonus bInt,3; },,,,,, +1129,Flamberge,Flamberge,4,60000,0,1500,150,,1,0,16512,2,2,3,27,2,{},{},,,,,,, +1130,Nagan,Nagan,4,20,0,500,120,,1,0,414946,2,2,4,40,2,{},{ bonus bDoubleRate,25; bonus2 bAddRace,7,5; },,,, +1131,Ice_Falchion,Ice Falchion,4,20,0,600,100,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,1; skill 14,3; bonus2 bAddEff,Eff_Freeze,500; bonus3 bAutoSpell,14,3,25; } +1132,Edge,Edge,4,20,0,700,115,,1,0,414946,2,2,4,40,2,{},{ bonus2 bAddEff,Eff_Curse,300; bonus2 bWeaponComaRace,11,10; },,, +1133,Fire_Brand,Fire Brand,4,20,0,500,100,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,3; skill 19,3; bonus3 bAutoSpell,19,3,25; },, +1134,Caesar's_Sword,Caesar's Sword,4,20,0,700,140,,1,0,414946,2,2,4,40,2,{},{ bonus2 bAddRace,3,25; bonus bIgnoreDefRace,3; },,,, +1135,Cutlas,Cutlas,4,20,0,900,150,,1,0,414946,2,2,4,40,2,{},{ skill 5,5; bonus bStr,2; bonus bDef,1; },,,, +1136,Solar_Sword,Solar Sword,4,20,0,1200,85,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,3; bonus2 bHPDrainRate,100,1; bonus2 bSPDrainRate,5,-15; },,,, +1137,Excalibur,Excalibur,4,20,0,1200,150,,1,0,414946,2,2,4,40,2,{},{ bonus bInt,5; bonus bLuk,10; bonus bDex,-1; bonus bAtkEle,6; },,, +1138,Mysteltainn_,Mysteltainn,4,20,0,1000,170,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,7; bonus2 bAddEle,8,15; bonus2 bAddEff,Eff_Stone,100; bonus bDex,3; }, +1139,Talefing_,Talefing,4,20,0,1000,200,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,7; bonus2 bSPDrainRate,5,-35; },,,,,,,,, +1140,Byeollungum,Byeollungum,4,20,0,900,150,,1,0,414946,2,2,4,40,2,{},{ bonus2 bSubRace,11,-10; bonus2 bAddRace,10,50; bonus bAllStats,2; } +1141,Immaterial_Sword,Immaterial Sword,4,20,0,900,140,,1,0,414946,2,2,4,40,2,{},{ bonus bAtkEle,8; bonus2 bSPDrainRate,1,30; bonus2 bSPDrainRate,100,-1; },,,,,,,,, +1142,Jewel_Sword,Crystal Sword,4,20,0,2200,104,,1,0,414946,2,2,3,68,2,{},{},,,,,,,,,, +1143,Gaia_Sword,Gaia Sword,4,20,0,2500,115,,1,0,414946,2,2,3,74,2,{},{ bonus3 bAddMonsterDropItem,1002,50,25000; },,,,,,,,,, +1144,Sashimi,Sashimi,4,20,0,1400,75,,1,0,414946,2,2,3,48,2,{},{ bonus bAtkEle,4; bonus3 bAddMonsterDropItem,544,5,4000; },,,,,, +1145,Holy_Avenger,Holy Avenger,4,20,0,1350,125,,1,0,16384,2,2,3,75,2,{},{ bonus bAtkEle,6; },,,,,,,, +// 2 Handed Swords +1151,Slayer,Slayer,4,15000,0,1300,90,,1,2,16514,2,34,2,18,3,{},{},,,,,,,,,, +1152,Slayer_,Slayer,4,15000,0,1300,90,,1,3,16514,2,34,2,18,3,{},{},,,,,,,,,, +1153,Slayer__,Slayer,4,15000,0,1300,90,,1,0,16514,2,34,2,18,3,{},{},,,,,,,,,, +1154,Bastard_Sword,Bastard Sword,4,22500,0,1600,115,,1,2,16514,2,34,2,18,3,{},{},,,,,,,,,, +1155,Bastard_Sword_,Bastard Sword,4,22500,0,1600,115,,1,3,16514,2,34,2,18,3,{},{},,,,,,,,,, +1156,Bastard_Sword__,Bastard Sword,4,22500,0,1600,115,,1,0,16514,2,34,2,18,3,{},{},,,,,,,,,, +1157,Two_handed_Sword,Two-handed Sword,4,60000,0,2200,160,,1,1,16514,2,34,3,33,3,{},{},,,,,,,,,, +1158,Two_handed_Sword_,Two-handed Sword,4,60000,0,2200,160,,1,2,16514,2,34,3,33,3,{},{},,,,,,,,,, +1159,Two_handed_Sword__,Two-handed Sword,4,60000,0,2200,160,,1,0,16514,2,34,3,33,3,{},{},,,,,, +1160,Broad_Sword,Broad Sword,4,65000,0,2000,140,,1,1,16514,2,34,3,33,3,{},{ bonus bDef,5; },,,,, +1161,Balmung,Balmung,4,20,0,1000,250,,2,0,2088959,2,2,4,48,1,{},{ bonus bInt,20; bonus bLuk,20; },,,, +1162,Broad_Sword_,Broad Sword,4,65000,0,2000,140,,1,2,16514,2,34,3,33,3,{},{ bonus bDef,5; },,,,, +1163,Claymore,Claymore,4,74000,0,2500,180,,1,0,16512,2,34,3,33,3,{},{},,,,,, +1164,Muramasa,Muramasa,4,20,0,1000,155,,1,0,16514,2,34,4,48,3,{},{ bonus bCritical,30; bonus bAspdAddRate,8; bonus2 bAddEff2,Eff_Curse,200; },, +1165,Masamune,Masamune,4,20,0,1000,200,,1,0,16514,2,34,4,48,3,{},{ bonus bFlee,30; bonus bStr,-5; bonus bAspd,2; bonus bDefRate,-50; bonus bDef2Rate,-50; }, +1166,Dragon_Slayer,Dragon Slayer,4,20,0,1300,150,,1,0,16514,2,34,4,48,3,{},{ bonus bIgnoreDefRace,9; bonus2 bAddRace,9,15; },,, +1167,Schweizersabel,Schweizersabel,4,20,0,1600,160,,1,0,16514,2,34,4,48,3,{},{ bonus bAtkEle,4; skill 20,3; bonus bDef,1; bonus3 bAutoSpell,20,3,25; } +1168,Zweihander,Zweihander,4,20,0,2200,200,,1,0,16514,2,34,4,48,3,{},{bonus bUnbreakable,100; },,,,,, +1169,Executioner_,Executioner,4,20,0,2200,155,,1,0,16514,2,34,4,48,3,{},{ bonus bIgnoreDefRace,7; bonus2 bAddRace,7,20; bonus2 bSubRace,7,-10; bonus bAtkEle,7; } +1170,Katzbalger,Katzbalger,4,20,0,2000,175,,1,0,16514,2,34,4,48,3,{},{ bonus bVit,10; bonus bDef,10; },,,, +// Knifes and Daggers +1201,Knife,Knife,4,50,0,400,17,,1,3,10444527,2,2,1,1,1,{},{},,,,,, +1202,Knife_,Knife,4,50,0,400,17,,1,4,10444527,2,2,1,1,1,{},{},,,,,, +1203,Knife__,Knife,4,50,0,400,17,,1,0,10444527,2,2,1,1,1,{},{},,,,,, +1204,Cutter,Cutter,4,1250,0,500,30,,1,3,10444527,2,2,1,1,1,{},{} +1205,Cutter_,Cutter,4,1250,0,500,30,,1,4,10444527,2,2,1,1,1,{},{} +1206,Cutter__,Cutter,4,1250,0,500,30,,1,0,10444527,2,2,1,1,1,{},{} +1207,Main_Gauche,Main Gauche,4,2400,0,600,43,,1,3,10444527,2,2,1,1,1,{},{} +1208,Main_Gauche_,Main Gauche,4,2400,0,600,43,,1,4,10444527,2,2,1,1,1,{},{} +1209,Main_Gauche__,Main Gauche,4,2400,0,600,43,,1,0,10444527,2,2,1,1,1,{},{} +1210,Dirk,Dirk,4,8500,0,500,59,,1,2,10444527,2,2,2,12,1,{},{} +1211,Dirk_,Dirk,4,8500,0,500,59,,1,3,10444527,2,2,2,12,1,{},{} +1212,Dirk__,Dirk,4,8500,0,500,59,,1,0,10444527,2,2,2,12,1,{},{} +1213,Dagger,Dagger,4,14000,0,600,73,,1,2,10444527,2,2,2,12,1,{},{} +1214,Dagger_,Dagger,4,14000,0,600,73,,1,3,10444527,2,2,2,12,1,{},{} +1215,Dagger__,Dagger,4,14000,0,600,73,,1,0,10444527,2,2,2,12,1,{},{} +1216,Stiletto,Stiletto,4,19500,0,700,87,,1,2,10444527,2,2,2,12,1,{},{} +1217,Stiletto_,Stiletto,4,19500,0,700,87,,1,3,10444527,2,2,2,12,1,{},{} +1218,Stiletto__,Stiletto,4,19500,0,700,87,,1,0,10444527,2,2,2,12,1,{},{} +1219,Gladius,Gladius,4,43000,0,700,105,,1,2,2055918,2,2,3,24,1,{},{} +1220,Gladius_,Gladius,4,43000,0,700,105,,1,3,2055918,2,2,3,24,1,{},{},,,,,, +1221,Gladius__,Gladius,4,43000,0,700,105,,1,0,2055918,2,2,3,24,1,{},{},,,,,, +1222,Damascus,Damascus,4,49000,0,800,118,,1,1,2055918,2,2,3,24,1,{},{},,,,,, +1223,Fortune_Sword,Fortune Sword,4,20,0,500,90,,1,0,2055918,2,2,4,24,1,{},{ bonus bLuk,5; bonus bFlee2,20; },,,, +1224,Sword_Breaker,Swordbreaker,4,20,0,1000,70,,1,0,2055918,2,2,4,36,1,{},{ bonus bBreakWeaponRate,500; },,,,,, +1225,Mail_Breaker,Mailbreaker,4,20,0,1000,70,,1,0,2055918,2,2,4,36,1,{},{ bonus bBreakArmorRate,500; },,,,,, +1226,Damascus_,Damascus,4,49000,0,800,118,,1,2,2055918,2,2,3,24,1,{},{},,,,,, +1227,Weeder_Knife,Weeder Knife,4,20,0,400,80,,1,0,2055918,2,2,4,36,1,{},{ bonus bIgnoreDefRace,3; bonus2 bAddRace,3,15; bonus2 bSubRace,3,15; }, +1228,Combat_Knife,Combat Knife,4,20,0,400,80,,1,0,2055918,2,2,4,36,1,{},{ bonus bIgnoreDefRace,7; bonus2 bSubRace,7,10; bonus2 bSubRace,6,-10; }, +1229,Mama's_Knife,Mama's Knife,4,20,0,500,75,,1,0,2055918,2,2,4,36,1,{},{ bonus bCritical,30; bonus2 bAddRace,7,3; bonus3 bAddMonsterDropItem,517,2,5000; } +1230,House_Auger,House Auger,4,20,0,600,80,,1,0,2055918,2,2,4,36,1,{},{ bonus bDefRatioAtkRace,10; bonus bDefRatioAtkRace,11; },,,, +1231,Bazerald,Bazerald,4,20,0,500,70,,1,0,2055918,2,2,4,36,1,{},{ bonus bAtkEle,3; bonus bInt,5; bonus bMatkRate,10; },,, +1232,Assassin_Dagger,Assasin Dagger,4,20,0,600,140,,1,0,4096,2,2,4,36,1,{},{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdAddRate,2; bonus bAtkEle,7; },, +1233,Exercise,Excorcise,4,20,0,700,90,,1,0,2055918,2,2,4,36,1,{},{ bonus bIgnoreDefRace,6; bonus2 bSubRace,6,5; bonus2 bSubRace,7,-10; }, +1234,Moonlight_Sword,Walgwanggum,4,20,0,700,50,,1,0,2055918,2,2,4,36,1,{},{ bonus bMaxSPrate,10; bonus2 bSPDrainRate,100,3; },,,,, +1235,Azoth,Azoth,4,20,0,700,110,,1,0,262144,2,2,4,36,1,{},{ bonus bClassChange,50; },,,,,, +1236,Sucsamad,Sucsamad,4,20,0,800,140,,1,0,2055918,2,2,4,36,1,{},{ bonus2 bAddEle,2,10; bonus2 bAddEle,4,10; bonus bUnbreakable,100; },, +1237,Grimtooth_,Grimtooth,4,20,0,800,180,,1,0,2055918,2,2,4,36,1,{},{ bonus bFlee,10; bonus bFlee2,5; bonus bDefRate,-50; bonus bDef2Rate,-50; },, +1238,Zeny_Knife,Zeny Knife,4,20,0,1200,64,,1,0,2055918,2,2,3,40,1,{},{ bonus bGetZenyNum,100; },,,,, +1239,Poison_Knife,Poison Knife,4,20,0,800,64,,1,0,2055918,2,2,3,65,1,{},{ bonus bAtkEle,5; bonus2 bAddEff,Eff_Poison,2000; },,,,, +1240,Princess_Knife,Princess Knife,4,20,0,400,84,,1,0,2055918,2,2,4,1,1,{},{ bonus bAllStats,1; } +1241,Cursed_Dagger,Cursed Dagger,4,20,0,400,55,,1,0,66052,2,2,4,85,1,{},{ bonus2 bAddEff,Eff_Curse,500; },,,, +1242,Counter_Dagger,Counter Dagger,4,20,0,550,75,,1,0,66052,2,2,4,55,1,{},{ bonus bCritical,5; bonus3 bAutoSpell,61,1,25; },,,,, +1243,Main_Gauche_For_Novice,Novice Main Gauche,4,20,0,1,45,,1,0,8388609,2,2,1,1,1,{},{},,,,,, +// Katars +1250,Jur,Jur,4,19500,0,800,125,,1,2,4096,2,34,2,18,16,{},{},,,,,, +1251,Jur_,Jur,4,19500,0,800,125,,1,3,4096,2,34,2,18,16,{},{},,,,,, +1252,Katar,Katar,4,41000,0,1200,148,,1,1,4096,2,34,3,33,16,{},{ bonus bDex,1; },,,,, +1253,Katar_,Katar,4,41000,0,1200,148,,1,2,4096,2,34,3,33,16,{},{ bonus bDex,1; },,,,, +1254,Jamadhar,Jamadhar,4,37200,0,1500,165,,1,0,4096,2,34,3,33,16,{},{},,,,,, +1255,Jamadhar_,Jamadhar,4,37200,0,1500,165,,1,1,4096,2,34,3,33,16,{},{},,,,,, +1256,Katar_of_Cold_Icicle,Katar of Cold Icicle,4,45000,0,1200,105,,1,0,4096,2,34,3,55,16,{},{ bonus bAtkEle,1; bonus2 bAddEff,Eff_Freeze,500; },,, +1257,Katar_of_Thornbush,Katar of Dusty Thornbush,4,45000,0,1200,105,,1,0,4096,2,34,3,55,16,{},{ bonus bAtkEle,2; bonus2 bAddEff,Eff_Blind,500; },, +1258,Katar_of_Raging_Blaze,Katar of Raging Blaze,4,45000,0,1200,105,,1,0,4096,2,34,3,55,16,{},{ bonus bAtkEle,3; bonus2 bAddEff,Eff_Silence,500; },, +1259,Katar_of_Piercing_Wind,Katar of Piercing Wind,4,45000,0,1200,105,,1,0,4096,2,34,3,55,16,{},{ bonus bAtkEle,4; bonus2 bAddEff,Eff_Sleep,500; },, +1260,Sharpened_Legbone_of_Ghoul,Sharpened Legbone of Ghoul,4,52500,0,1700,150,,1,0,4096,2,34,3,65,16,{},{ bonus bAtkEle,9; },,,, +1261,Infiltrator,Infiltrator,4,57000,0,1500,140,,1,0,4096,2,34,4,75,16,{},{ bonus2 bAddRace,7,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; } +// Axes +1301,Axe,Axe,4,500,0,800,38,,1,3,8803555,2,2,1,3,6,{},{},,,,, +1302,Axe_,Axe,4,500,0,800,38,,1,4,8803555,2,2,1,3,6,{},{},,,,, +1303,Axe__,Axe,4,500,0,800,38,,1,0,8803555,2,2,1,3,6,{},{},,,,, +1304,Orcish_Axe,Orcish Axe,4,20,0,1500,75,,1,0,8803555,2,2,3,3,6,{},{},,,,, +1305,Cleaver,Cleaver,4,20,0,1200,140,,1,0,279714,2,2,4,44,6,{},{ bonus2 bAddRace,7,5; bonus3 bAddMonsterDropItem,517,2,3000; } +1306,War_Axe,War Axe,4,20,0,4200,145,,1,1,263168,2,2,3,76,6,{},{ bonus bDex,2; bonus bLuk,2; },,, +1351,Battle_Axe,Battle Axe,4,5400,0,1500,80,,1,3,279714,2,34,1,3,7,{},{},,,,, +1352,Battle_Axe_,Battle Axe,4,5400,0,1500,80,,1,4,279714,2,34,1,3,7,{},{},,,,, +1353,Battle_Axe__,Battle Axe,4,5400,0,1500,80,,1,0,279714,2,34,1,3,7,{},{},,,,, +1354,Hammer,Hammer,4,15500,0,2000,120,,1,2,279714,2,34,2,16,7,{},{},,,, +1355,Hammer_,Hammer,4,15500,0,2000,120,,1,3,279714,2,34,2,16,7,{},{},,,, +1356,Hammer__,Hammer,4,15500,0,2200,120,,1,0,279714,2,34,2,16,7,{},{},,,, +1357,Buster,Buster,4,34000,0,2200,155,,1,1,279714,2,34,3,30,7,{},{},,,, +1358,Buster_,Buster,4,34000,0,2200,155,,1,2,279714,2,34,3,30,7,{},{},,,, +1359,Buster__,Buster,4,34000,0,2200,155,,1,0,279714,2,34,3,30,7,{},{},,,, +1360,Two_handed_Axe,Two-handed Axe,4,55000,0,2500,185,,1,1,279714,2,34,3,30,7,{},{},,,, +1361,Two_handed_Axe_,Two-handed Axe,4,55000,0,2500,185,,1,2,279714,2,34,3,30,7,{},{},,,, +1362,Two_handed_Axe__,Two-handed Axe,4,55000,0,2500,185,,1,0,279714,2,34,3,30,7,{},{},,,, +1363,Blood_Axe,Bloody Axe,4,20,0,400,170,,1,0,279714,2,34,4,44,7,{},{ bonus bStr,10; bonus bSpeedRate,25; },, +1364,Great_Axe,Great Axe,4,20,0,1800,187,,1,0,279714,2,34,4,44,7,{},{ bonus2 bAddEff,Eff_Stan,1500; },, +1365,Sabbath,Sabbath,4,20,0,2300,120,,1,0,279714,2,34,4,44,7,{},{ bonus2 bWeaponComaRace,6,50; bonus bAtkEle,7; }, +1366,Light_Epsilon,Light Epsilon,4,20,0,2300,180,,1,0,279714,2,34,4,44,7,{},{ bonus bAtkEle,6; skill 28,3; bonus2 bAddRace,6,3; } +1367,Slaughter,Slaughter,4,20,0,2500,120,,1,0,279714,2,34,4,44,7,{},{ bonus bIgnoreDefRace,2; bonus2 bWeaponComaRace,2,50; }, +1368,Tomahawk,Tomahawk,4,20,0,2500,165,,1,0,279714,2,34,4,44,7,{},{ bonus bAtkEle,4; },,, +1369,Guillotine,Guillotine,4,20,0,3000,215,,1,0,279714,2,34,4,44,7,{},{ bonus2 bWeaponComaRace,7,30; bonus2 bSPDrainRate,5,2; },, +// Spears +1401,Javelin,Javelin,4,150,0,700,28,,3,3,16514,2,2,1,4,4,{},{},,, +1402,Javelin_,Javelin,4,150,0,700,28,,3,4,16514,2,2,1,4,4,{},{},,, +1403,Javelin__,Javelin,4,150,0,700,28,,3,0,16514,2,2,1,4,4,{},{},,, +1404,Spear,Spear,4,1700,0,850,44,,3,3,16514,2,2,1,4,4,{},{},,, +1405,Spear_,Spear,4,1700,0,850,44,,3,4,16514,2,2,1,4,4,{},{},,, +1406,Spear__,Spear,4,1700,0,850,44,,3,0,16514,2,2,1,4,4,{},{},,, +1407,Pike,Pike,4,3450,0,1000,60,,3,3,16514,2,2,1,4,4,{},{},,, +1408,Pike_,Pike,4,3450,0,1000,60,,3,4,16514,2,2,1,4,4,{},{},,, +1409,Pike__,Pike,4,3450,0,1000,60,,3,0,16514,2,2,1,4,4,{},{},,, +1410,Lance,Lance,4,60000,0,2500,185,,3,0,16514,2,34,3,33,5,{},{},,, +1411,Lance_,Lance,4,60000,0,2500,185,,3,0,16514,2,34,3,33,5,{},{},,, +1412,Lance__,Lance,4,60000,0,2500,185,,3,0,16514,2,34,3,33,5,{},{},,, +1413,Gungnir,Gungnir,4,20,0,500,120,,3,0,16514,2,2,4,4,4,{},{ bonus bPerfectHitRate,25; bonus bHit,30; } +1414,Gelerdria,Gelerdria,4,20,0,700,145,,3,0,16514,2,2,4,48,4,{},{ bonus bAtkEle,2; bonus bMaxHP,500; bonus bMaxSP,-50; } +1415,Skewer,Brocca,4,20,0,850,100,,3,0,16514,2,2,4,48,4,{},{ bonus bIgnoreDefRace,11; bonus2 bAddEle,0,25; } +1416,Tjungkuletti,Tjungkuletti,4,20,0,1000,95,,3,0,16514,2,2,4,48,4,{},{ bonus2 bSPDrainRate,100,1; bonus2 bSPDrainRate,1,5; },,, +1417,Pole_Axe,Pole Axe,4,20,0,3800,160,,3,1,16514,2,2,3,71,4,{},{ bonus bStr,1; bonus bInt,2; bonus bDex,1; } +1451,Guisarme,Guisarme,4,13000,0,1000,84,,3,2,16514,2,34,2,18,5,{},{},,, +1452,Guisarme_,Guisarme,4,13000,0,1000,84,,3,3,16514,2,34,2,18,5,{},{},,, +1453,Guisarme__,Guisarme,4,13000,0,1000,84,,3,0,16514,2,34,2,18,5,{},{},,, +1454,Glaive,Glaive,4,20000,0,1200,104,,3,2,16514,2,34,2,18,5,{},{},,, +1455,Glaive_,Glaive,4,20000,0,1200,104,,3,3,16514,2,34,2,18,5,{},{},,, +1456,Glaive__,Glaive,4,20000,0,1200,104,,3,0,16514,2,34,2,18,5,{},{},,, +1457,Partizan,Partizan,4,27000,0,2000,124,,3,1,16514,2,34,2,18,5,{},{},,, +1458,Partizan_,Partizan,4,27000,0,2000,124,,3,2,16514,2,34,2,18,5,{},{},,, +1459,Partizan__,Partizan,4,27000,0,2000,124,,3,0,16514,2,34,3,33,5,{},{},,, +1460,Trident,Trident,4,51000,0,1200,150,,3,2,16514,2,34,3,33,5,{},{},,, +1461,Trident_,Trident,4,51000,0,1200,150,,3,3,16514,2,34,3,33,5,{},{},,, +1462,Trident__,Trident,4,51000,0,1200,150,,3,0,16514,2,34,3,33,5,{},{},,, +1463,Halberd,Halberd,4,54000,0,2500,165,,3,1,16514,2,34,3,33,5,{},{},,, +1464,Halberd_,Halberd,4,54000,0,2500,165,,3,2,16514,2,34,3,33,5,{},{},,,,,,, +1465,Halberd__,Halberd,4,54000,0,2500,165,,3,0,16514,2,34,3,33,5,{},{},,,,,,, +1466,Crescent_Scythe,Crescent Scythe,4,20,0,2500,180,,3,0,16514,2,34,4,48,5,{},{ bonus bCritical,30; bonus bHit,10; },,,,, +1467,Bill_Guisarme,Bill Guisarme,4,20,0,1000,183,,3,0,16514,2,34,4,48,5,{},{ bonus2 bAddRace,2,10; bonus2 bAddRace,7,5; },,, +1468,Zephyrus,Zephyrus,4,20,0,2000,170,,3,0,16514,2,34,4,48,5,{},{ bonus bAtkEle,4; skill 21,3; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,21,3,25; } +1469,Longinus's_Spear,Longinus's Spear,4,20,0,2500,180,,3,0,16514,2,34,4,48,5,{},{ bonus bAtkEle,7; bonus2 bAddRace,7,10; bonus2 bAddRace,8,10; },, +1470,Brionac,Brionac,4,20,0,3000,190,,3,0,16514,2,34,4,48,5,{},{ bonus bAtkEle,6; skill 28,5; skill 13,3; bonus3 bAutoSpell,13,3,25; bonus2 bAddRace,10,5; }, +1471,Hellfire,Hellfire,4,20,0,3500,200,,3,0,16514,2,34,4,48,5,{},{ bonus bAtkEle,3; skill 17,3; bonus3 bAutoSpell,17,3,25; bonus bStr,3; },, +// 2 Handed Staffs +1472,Staff_of_Soul,Soul Staff,4,20,0,1400,25,,1,0,66052,2,34,3,73,10,{},{ bonus bInt,5; bonus bAgi,2; bonus bMatkRate,15; },,,, +1473,Wizardy_Staff,Wizardy Staff,4,20,0,2400,120,,1,0,66052,2,34,4,90,10,{},{ bonus bInt,6; bonus bDex,2; bonus bMatkRate,15; },,,, +// Clubs and Maces +1501,Club,Club,4,120,0,700,23,,1,3,8701363,2,2,1,2,8,{},{},,,,,,, +1502,Club_,Club,4,120,0,700,23,,1,4,8701363,2,2,1,2,8,{},{},,,,,,, +1503,Club__,Club,4,120,0,700,23,,1,0,8701363,2,2,1,2,8,{},{},,,,,,, +1504,Mace,Mace,4,1600,0,800,37,,1,3,8701363,2,2,1,2,8,{},{},,,,,,, +1505,Mace_,Mace,4,1600,0,800,37,,1,4,8701363,2,2,1,2,8,{},{},,,,,,, +1506,Mace__,Mace,4,1600,0,800,37,,1,0,8701363,2,2,1,2,8,{},{} +1507,Smasher,Smasher,4,9000,0,1000,54,,1,2,8701363,2,2,2,14,8,{},{} +1508,Smasher_,Smasher,4,9000,0,1000,54,,1,3,8701363,2,2,2,14,8,{},{} +1509,Smasher__,Smasher,4,9000,0,1000,54,,1,3,8701363,2,2,2,14,8,{},{} +1510,Flail,Flail,4,16000,0,900,69,,1,2,312754,2,2,2,14,8,{},{} +1511,Flail_,Flail,4,16000,0,900,69,,1,3,312754,2,2,2,14,8,{},{} +1512,Flail__,Flail,4,16000,0,900,69,,1,3,312754,2,2,2,14,8,{},{} +1513,Morning_Star,Morning Star,4,41000,0,1500,110,,1,1,312754,2,2,3,27,8,{},{} +1514,Morning_Star_,Morning Star,4,41000,0,1500,110,,1,2,312754,2,2,3,27,8,{},{} +1515,Morning_Star__,Morning Star,4,41000,0,1500,110,,1,2,312754,2,2,3,27,8,{},{} +1516,Sword_Mace,Sword Mace,4,50000,0,1200,130,,1,0,312754,2,2,3,27,8,{},{} +1517,Sword_Mace_,Sword Mace,4,50000,0,1200,130,,1,1,312754,2,2,3,27,8,{},{} +1518,Sword_Mace__,Sword Mace,4,50000,0,1200,130,,1,1,312754,2,2,3,27,8,{},{} +1519,Chain,Chain,4,23000,0,800,84,,1,2,312754,2,2,2,14,8,{},{} +1520,Chain_,Chain,4,23000,0,800,84,,1,3,312754,2,2,2,14,8,{},{} +1521,Chain__,Chain,4,23000,0,800,84,,1,3,312754,2,2,2,14,8,{},{} +1522,Stunner,Stunner,4,60000,0,2000,140,,1,0,256,2,2,3,27,8,{},{ bonus2 bAddEff,Eff_Stan,1000; },,,, +1523,Spike,Spike,4,20,0,700,85,,1,0,33040,2,2,4,40,8,{},{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },,, +1524,Golden_Mace,Golden Mace,4,20,0,800,110,,1,1,33040,2,2,4,40,8,{},{ bonus2 bAddRace,1,10; bonus bUnbreakable,100; },,,, +1525,Long_Mace,Long Mace,4,20,0,800,135,,3,0,33040,2,2,4,40,8,{},{ bonus bLongAtkDef,10; },,,,, +1526,Slash,Slash,4,20,0,1000,145,,1,0,33040,2,2,4,40,8,{},{ bonus2 bAddRace,1,15; bonus2 bWeaponComaRace,1,50; },, +1527,Quadrille,Quadrille,4,20,0,900,165,,1,0,33040,2,2,4,40,8,{},{ bonus2 bAddRace,1,10; bonus2 bAddRace,7,10; bonus2 bAddEle,2,10; } +1528,Grand_Cross,Grand Cross,4,20,0,1500,140,,1,0,33040,2,2,4,40,8,{},{ bonus bAtkEle,6; skill 77,3; bonus3 bAutoSpell,77,3,25; bonus2 bHPDrainRate,100,1; }, +1529,Iron_Driver,Iron Driver,4,20,0,3000,155,,1,0,33024,2,2,3,78,8,{},{},,,,,, +1530,Mjolnir,Mjolnir,4,20,0,6000,250,,1,0,8701363,2,2,4,98,8,{},{ bonus bAtkEle,4; bonus bDex,40; bonus bStr,15; bonus bAspdRate,30; },, +1531,Spanner,Spanner,4,20,0,2500,115,,1,0,33040,2,2,3,55,8,{},{ bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stan,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100; },,,,,, +// Books +1550,Book,Book,4,30000,0,600,85,,1,3,65792,2,2,2,14,15,{},{},,,,,, +1551,Bible,Bible,4,60000,0,1000,115,,1,2,65792,2,2,3,27,15,{},{ bonus bInt,2; },,,,, +1552,Tablet,Tablet,4,51000,0,800,125,,1,1,65792,2,2,3,27,15,{},{},,,,,, +1553,Book_of_Billows,Book of Billows,4,35000,0,750,90,,1,0,65792,2,2,3,27,15,{},{ bonus bAtkEle,1; },,,,, +1554,Book_of_Mother_Earth,Book of Mother Earth,4,35000,0,750,90,,1,0,65792,2,2,3,27,15,{},{ bonus bAtkEle,2; },,,,, +1555,Book_of_Blazing_Sun,Book of Blazing Sun,4,35000,0,750,90,,1,0,65792,2,2,3,27,15,{},{ bonus bAtkEle,3; },,,,,,,,,, +1556,Book_of_Gust_of_Wind,Book of Gust of Wind,4,35000,0,750,90,,1,0,65792,2,2,3,27,15,{},{ bonus bAtkEle,4; },,,,,,,,,, +1557,Book_of_the_Apocalypse,Book of the Apocalypse,4,35000,0,800,120,,1,0,65792,2,2,4,40,15,{},{ bonus bAtkEle,7; bonus2 bSubEle,6,-5; bonus2 bAddEle,1,7; bonus2 bAddEle,2,7; bonus2 bAddEle,3,7; bonus2 bAddEle,4,7; } +1558,Girl's_Diary,Girl's Diary,4,20,0,300,60,,1,1,65792,2,2,4,40,15,{},{ bonus2 bAddDamageClass,1188,150; },,,,,,,,, +1599,Angra_Manyu,Angra Manyu,4,120,0,10,1,,1,5,10477567,2,2,4,2,8,{},{},,,,,,,,,,, +// Rods and Staffs +1601,Rod,Rod,4,50,0,400,15,,1,3,8487701,2,2,1,1,10,{},{ bonus bMatkRate,15; },,,,,,,,,, +1602,Rod_,Rod,4,50,0,400,15,,1,4,8487701,2,2,1,1,10,{},{ bonus bMatkRate,15; },,,,,,,,,, +1603,Rod__,Rod,4,50,0,400,15,,1,0,8487701,2,2,1,1,10,{},{ bonus bMatkRate,15; },,,,,,,,,, +1604,Wand,Wand,4,2500,0,400,25,,1,2,8487701,2,2,2,12,10,{},{ bonus bInt,1; bonus bMatkRate,15; },,,,,,,,, +1605,Wand_,Wand,4,2500,0,400,25,,1,3,8487701,2,2,2,12,10,{},{ bonus bInt,1; bonus bMatkRate,15; },,,,,,,,, +1606,Wand__,Wand,4,2500,0,400,25,,1,0,8487701,2,2,2,12,10,{},{ bonus bInt,1; bonus bMatkRate,15; },,,,,,,,, +1607,Staff,Staff,4,9500,0,400,40,,1,2,99092,2,2,2,12,10,{},{ bonus bInt,2; bonus bMatkRate,15; },,,,,,,,, +1608,Staff_,Staff,4,9500,0,400,40,,1,3,99092,2,2,2,12,10,{},{ bonus bInt,2; bonus bMatkRate,15; },,,,,,,,, +1609,Staff__,Staff,4,9500,0,400,40,,1,0,99092,2,2,2,12,10,{},{ bonus bInt,2; bonus bMatkRate,15; },,,,,,,,, +1610,Arc_Wand,Arc Wand,4,45000,0,400,60,,1,1,99092,2,2,3,24,10,{},{ bonus bInt,3; bonus bMatkRate,15; }, +1611,Arc_Wand_,Arc Wand,4,45000,0,400,60,,1,2,99092,2,2,3,24,10,{},{ bonus bInt,3; bonus bMatkRate,15; }, +1612,Arc_Wand__,Arc Wand,4,45000,0,400,60,,1,0,99092,2,2,3,24,10,{},{ bonus bInt,3; bonus bMatkRate,15; }, +1613,Mighty_Staff,Mighty Staff,4,20,0,700,130,,1,0,99092,2,2,3,24,10,{},{ bonus bStr,10; bonus bMatkRate,15; bonus2 bSpDrainRate,100,-2; }, +1614,Blessed_Wand,Wand of Occult,4,20,0,700,75,,1,0,99092,2,2,3,24,10,{},{ bonus bInt,3; bonus bMatkRate,15; }, +1615,Bone_Wand,Bone Wand,4,20,0,700,40,,1,0,99092,2,2,3,24,10,{},{ bonus bInt,4; bonus bAtkEle,9; bonus bMatkRate,15; } +// Bows +1701,Bow,Bow,4,1000,0,500,15,,5,3,1706056,2,34,1,4,11,{},{},,, +1702,Bow_,Bow,4,1000,0,500,15,,5,4,1706056,2,34,1,4,11,{},{},,, +1703,Bow__,Bow,4,1000,0,500,15,,5,0,1706056,2,34,1,4,11,{},{},,, +1704,Composite_Bow,Composite Bow,4,2500,0,600,29,,5,3,1706056,2,34,1,4,11,{},{},,, +1705,Composite_Bow_,Composite Bow,4,2500,0,600,29,,5,4,1706056,2,34,1,4,11,{},{},,, +1706,Composite_Bow__,Composite Bow,4,2500,0,600,29,,5,0,1706056,2,34,1,4,11,{},{},,, +1707,Great_Bow,Great Bow,4,10000,0,1000,50,,5,2,1706056,2,34,2,18,11,{},{},,, +1708,Great_Bow_,Great Bow,4,10000,0,1000,50,,5,3,1706056,2,34,2,18,11,{},{},,, +1709,Great_Bow__,Great Bow,4,10000,0,1000,50,,5,0,1706056,2,34,2,18,11,{},{},,, +1710,CrossBow,Cross Bow,4,17000,0,900,65,,5,2,1706056,2,34,2,18,11,{},{},,,,,,,,,,,,,, +1711,CrossBow_,Cross Bow,4,17000,0,900,65,,5,3,1706056,2,34,2,18,11,{},{},,,,,,,,,,,,,, +1712,CrossBow__,Cross Bow,4,17000,0,900,65,,5,0,1706056,2,34,2,18,11,{},{},,,,,,,,,,,,,, +1713,Arbalest,Arbalest,4,48000,0,1000,90,,5,1,1706056,2,34,3,33,11,{},{ bonus bDex,2; },,,,,,,,,,,,, +1714,Gakkung,Gakkung,4,42000,0,1100,100,,5,1,1706056,2,34,3,33,11,{},{},,,,,,,,,,,,,, +1715,Arbalest_,Arbalest,4,48000,0,1000,90,,5,2,1706056,2,34,3,33,11,{},{ bonus bDex,2; },,,,,,,,,,,,, +1716,Gakkung_,Gakkung,4,42000,0,1100,100,,5,2,1706056,2,34,3,33,11,{},{},,,,,,,,,,,,,, +1718,Hunter_Bow,Hunter Bow,4,64000,0,1500,125,,5,0,2048,2,34,3,33,11,{},{},,,,,,,,,,,,,, +1719,Bow_of_Roguemaster,Roguemaster's Bow,4,20,0,500,75,,11,0,131136,2,34,4,48,11,{},{ bonus2 bAddStealRate,100,0; },,,,,,,,,,,,,, +1720,Bow_of_Rudra,Rudra's Bow,4,20,0,1200,150,,5,0,1705992,2,34,4,48,11,{},{ bonus bAtkEle,6; bonus bInt,5; skill 35,1; skill 28,1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; } +1721,Repeating_Crossbow,Repeating Crossbow,4,89000,0,2000,95,,9,1,133184,2,34,3,65,11,{},{},,,,,,,,,,,,,, +1722,Ballista,Ballista,4,20,0,3500,145,,5,0,1574912,2,34,4,77,11,{},{},,,,,,,,,,,,,, +// Arrows +1750,Arrow,Arrow,10,1,0,1,25,,,,1706056,2,32768,,1,,{},{},,,,,,,,,,,,,, +1751,Silver_Arrow,Silver Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,6; },,,,,,,,,,,,, +1752,Fire_Arrow,Fire Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,3; },, +1753,Steel_Arrow,Steel Arrow,10,3,0,2,40,,,,1706056,2,32768,,1,,{},{},,, +1754,Crystal_Arrow,Crystal Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,1; },, +1755,Arrow_of_Wind,Arrow of Wind,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,4; },, +1756,Stone_Arrow,Stone Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,2; },, +1757,Immaterial_Arrow,Immaterial Arrow,10,3,0,1,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,8; },, +1758,Stun_Arrow,Stun Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Stan,500; }, +1759,Freezing_Arrow,Freeze Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,1; bonus2 bAddEff,Eff_Freeze,500; } +1760,Flash_Arrow,Flash Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Blind,500; }, +1761,Curse_Arrow,Curse Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Curse,500; }, +1762,Rusty_Arrow,Rusted Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,5; },, +1763,Poison_Arrow,Poison Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,5; bonus2 bAddEff,Eff_Poison,500; } +1764,Incisive_Arrow,Sharp Arrow,10,3,0,3,10,,,,1706056,2,32768,,1,,{},{ bonus bCritical,10; },, +1765,Oridecon_Arrow,Oridecon Arrow,10,3,0,3,50,,,,1706056,2,32768,,1,,{},{},,, +1766,Arrow_of_Counter_Evil,Arrow of Counter Evil,10,40,0,3,50,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,6; },, +1767,Arrow_of_Shadow,Shadow Arrow,10,3,0,2,30,,,,1706056,2,32768,,1,,{},{ bonus bAtkEle,7; },, +1768,Sleep_Arrow,Sleep Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Sleep,500; } +1769,Silence_Arrow,Mute Arrow,10,3,0,3,1,,,,1706056,2,32768,,1,,{},{ bonus2 bAddEff,Eff_Silence,500; } +1770,Iron_Arrow,Iron Arrow,10,2,0,1,30,,,,1706056,2,32768,,1,,{},{},, +// Knuckles +1801,Waghnakh,Waghnakh,4,8000,0,400,30,,1,3,33024,2,2,1,1,12,{},{},, +1802,Waghnakh_,Waghnakh,4,8000,0,400,30,,1,4,33024,2,2,1,1,12,{},{},, +1803,Knuckle_Duster,Knuckle Duster,4,25000,0,450,50,,1,2,33024,2,2,2,12,12,{},{},, +1804,Knuckle_Duster_,Knuckle Duster,4,25000,0,450,50,,1,3,33024,2,2,2,12,12,{},{},, +1805,Hora,Hora,4,32000,0,450,65,,1,2,33024,2,2,2,12,12,{},{},, +1806,Hora_,Hora,4,32000,0,450,65,,1,3,33024,2,2,2,12,12,{},{},, +1807,Fist,Fist,4,53000,0,650,115,,1,0,33024,2,2,3,24,12,{},{},, +1808,Fist_,Fist,4,53000,0,650,115,,1,1,33024,2,2,3,24,12,{},{},, +1809,Claw,Claw,4,55000,0,500,86,,1,1,33024,2,2,3,24,12,{},{ bonus bStr,2; }, +1810,Claw_,Claw,4,55000,0,500,86,,1,2,33024,2,2,3,24,12,{},{ bonus bStr,2; }, +1811,Finger,Finger,4,58000,0,500,97,,1,1,33024,2,2,3,24,12,{},{},, +1812,Finger_,Finger,4,58000,0,500,97,,1,2,33024,2,2,3,24,12,{},{},, +1813,Kaiser_Knuckle,Kaiser Knuckle,4,20,0,450,110,,1,0,33024,2,2,4,36,12,{},{ bonus bAtkEle,4; bonus2 bAddRace,1,5; bonus2 bAddEle,1,10; bonus2 bAddEle,2,10; bonus2 bAddEle,3,10; bonus2 bAddEle,4,10; } +1814,Berserk,Berserk,4,20,0,500,120,,1,0,33024,2,2,4,36,12,{},{ bonus bAspdRate,12; },,,,,,,,,, +// Instruments +1901,Violin,Violin,4,4000,0,700,50,,1,3,524288,2,2,1,2,13,{},{},,,,,,,,,,, +1902,Violin_,Violin,4,4000,0,700,50,,1,4,524288,2,2,1,2,13,{},{},,,,,,,,,,, +1903,Mandolin,Mandolin,4,18000,0,400,90,,1,2,524288,2,2,2,14,13,{},{},,,,,,,,,,, +1904,Mandolin_,Mandolin,4,18000,0,400,90,,1,3,524288,2,2,2,14,13,{},{},,,,,,,,,,, +1905,Lute,Lute,4,24500,0,500,105,,1,2,524288,2,2,2,14,13,{},{},,,,,,,,,,, +1906,Lute_,Lute,4,24500,0,500,105,,1,3,524288,2,2,2,14,13,{},{},,,,,,,,,,, +1907,Guitar,Guitar,4,47000,0,900,142,,1,0,524288,2,2,3,27,13,{},{},,,,,,,,,,, +1908,Guitar_,Guitar,4,47000,0,900,142,,1,1,524288,2,2,3,27,13,{},{},,,,,,,,,,, +1909,Harp,Harp,4,62000,0,900,114,,1,1,524288,2,2,3,27,13,{},{ bonus bInt,2; },,,,,,,,,, +1910,Harp_,Harp,4,62000,0,900,114,,1,2,524288,2,2,3,27,13,{},{ bonus bInt,2; },,,,,,,,,, +1911,Guh_Moon_Goh,Guhmoongoh,4,54000,0,1300,126,,1,1,524288,2,2,3,27,13,{},{},,,,,,,,,,, +1912,Guh_Moon_Goh_,Guhmoongoh,4,54000,0,1300,126,,1,2,524288,2,2,3,27,13,{},{},,,,,,,,,,, +1913,Electric_Guitar,Electric Guitar,4,20,0,1800,110,,1,0,524288,2,2,4,70,13,{},{ bonus3 bAutoSpell,84,1,25; bonus bAtkEle,4; bonus bInt,2; bonus bAgi,1; } +// Whips +1950,Rope,Rope,4,2500,0,400,45,,2,3,1048576,2,2,1,3,14,{},{},,, +1951,Rope_,Rope,4,2500,0,400,45,,2,4,1048576,2,2,1,3,14,{},{},,, +1952,Line,Line,4,12000,0,300,80,,2,2,1048576,2,2,2,16,14,{},{},,, +1953,Line_,Line,4,12000,0,300,80,,2,3,1048576,2,2,2,16,14,{},{},,, +1954,Wire,Wire,4,17500,0,1000,95,,2,2,1048576,2,2,2,16,14,{},{},,, +1955,Wire_,Wire,4,17500,0,1000,95,,2,3,1048576,2,2,2,16,14,{},{},,, +1956,Rante_Whip,Rante Whip,4,32000,0,900,135,,2,0,1048576,2,2,3,30,14,{},{},,, +1957,Rante_Whip_,Rante Whip,4,32000,0,900,135,,2,1,1048576,2,2,3,30,14,{},{},,, +1958,Tail,Tail,4,41000,0,700,105,,2,1,1048576,2,2,3,30,14,{},{ bonus bLuk,3; },, +1959,Tail_,Tail,4,41000,0,700,105,,2,2,1048576,2,2,3,30,14,{},{ bonus bLuk,3; },, +1960,Whip,Whip,4,38000,0,700,120,,2,1,1048576,2,2,3,30,14,{},{},,, +1961,Whip_,Whip,4,38000,0,700,120,,2,2,1048576,2,2,3,30,14,{},{},,, +1962,Lariat,Lariat,4,20,0,400,100,,2,0,1048576,2,2,4,44,14,{},{ bonus bDex,5; bonus bAgi,1; }, +1963,Rapture_Rose,Rapture Rose,4,20,0,300,115,,2,0,1048576,2,2,4,44,14,{},{ bonus bAtkEle,5; bonus2 bAddEff,Eff_Poison,5000; } +1964,Chemeti,Chemeti,4,20,0,700,135,,2,0,1048576,2,2,4,44,14,{},{ bonus bCritical,5; bonus bFlee,10; bonus bFlee2,2; } + +1998,Jeramiah's_Jur,Jeramiah's Jur,3,20,0,10,,,,,,,,,,,{},{} +1999,Zed's_Staff,Zed's Staff,3,20,0,10,,,,,,,,,,,{},{} + +// Shields +//=================================================================== +2101,Guard,Guard,5,500,0,300,,3,,0,10477567,2,32,,0,1,{},{},,, +2102,Guard_,Guard,5,500,0,300,,3,,1,10477567,2,32,,0,1,{},{},,, +2103,Buckler,Buckler,5,14000,0,600,,4,,0,2020850,2,32,,0,2,{},{},,, +2104,Buckler_,Buckler,5,14000,0,600,,4,,1,2020850,2,32,,0,2,{},{},,, +2105,Shield,Shield,5,56000,0,1300,,6,,0,16514,2,32,,0,3,{},{},,, +2106,Shield_,Shield,5,56000,0,1300,,6,,1,16514,2,32,,0,3,{},{},,, +2107,Mirror_Shield,Mirror Shield,5,60000,0,1000,,4,,0,16514,2,32,,0,4,{},{ bonus bMdef,5; },, +2108,Mirror_Shield_,Mirror Shield,5,60000,0,1000,,4,,1,16514,2,32,,0,4,{},{ bonus bMdef,5; },, +2109,Memorize_Book,Book of Summoning,5,20,0,1000,,3,,0,66052,2,32,,0,,{},{ bonus bInt,1; bonus bMdef,2; }, +2110,Holy_Guard,Holy Guard,5,20,0,1400,,5,,0,16384,2,32,,68,3,{},{ bonus bVit,2; bonus bMdef,2; }, +2111,Evangelist,Evangelist,5,20,0,1400,,5,,0,16384,2,32,,83,3,{},{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakable,100; } +2112,Novice_Guard,Novice Guard,5,20,0,1,,3,,0,8388609,2,32,,0,1,{},{},,, +2199,Ahura_Mazda,Ahura Mazda,5,20,0,100,,,,0,10477567,2,32,,,,{},{ bonus bMdef,1; bonus bDef,1; bonus bFlee2,1; bonus2 bSubEle,0,1; } + +// Headgear items +//=================================================================== +2201,Sunglasses,Sunglasses,5,5000,0,100,,0,,0,10477567,2,512,,0,12,{},{ bonus2 bResEff,Eff_Blind,500; }, +2202,Sunglasses_,Sunglasses,5,5000,0,100,,0,,1,10477567,2,512,,0,12,{},{ bonus2 bResEff,Eff_Blind,500; } +2203,Glasses,Glasses,5,4000,0,100,,0,,0,10477567,2,512,,0,3,{},{},, +2204,Glasses_,Glasses,5,4000,0,100,,0,,1,10477567,2,512,,0,3,{},{},, +2205,Diver's_Goggles,Diver Goggles,5,3500,0,100,,0,,0,10477567,2,512,,0,10,{},{},, +2206,Wedding_Veil,Wedding Veil,5,23000,0,100,,0,,0,10477567,0,256,,0,44,{},{ bonus bMdef,5; }, +2207,Fancy_Flower,Fancy Flower,5,20,0,100,,0,,0,10477567,2,256,,0,4,{},{ bonus2 bSubRace,3,10; } +2208,Ribbon,Ribbon,5,800,0,100,,1,,0,10477567,2,256,,0,17,{},{ bonus bMdef,3; }, +2209,Ribbon_,Ribbon,5,800,0,100,,1,,1,10477567,2,256,,0,17,{},{ bonus bMdef,3; }, +2210,Hair_Band,Hair Band,5,500,0,100,,1,,0,10477567,2,256,,0,9,{},{},, +2211,Bandana,Bandana,5,400,0,100,,1,,0,10477567,2,256,,0,6,{},{},, +2212,Eye_Bandage,Eye Patch,5,1000,0,100,,0,,0,10477567,2,512,,0,13,{},{},, +2213,Kitty_Band,Kitty Band,5,20,0,100,,2,,0,10477567,2,256,,0,2,{},{},, +2214,Bunny_Band,Bunny Band,5,20,0,100,,2,,0,10477567,2,256,,0,15,{},{ bonus bLuk,2; }, +2215,Flower_Hairband,Flower Band,5,20,0,100,,2,,0,10477567,2,256,,0,5,{},{},, +2216,Biretta,Biretta,5,9000,0,100,,4,,0,33040,2,256,,0,11,{},{},, +2217,Biretta_,Biretta,5,9000,0,100,,4,,1,33040,2,256,,0,11,{},{},, +2218,Flu_Mask,Flu Mask,5,300,0,100,,0,,0,10477567,2,1,,0,8,{},{ bonus2 bResEff,Eff_Silence,1000; } +2219,Flu_Mask_,Flu Mask,5,300,0,100,,0,,1,10477567,2,1,,0,8,{},{ bonus2 bResEff,Eff_Silence,1000; } +2220,Hat,Hat,5,1000,0,200,,2,,0,10477567,2,256,,0,16,{},{},, +2221,Hat_,Hat,5,1000,0,200,,2,,1,10477567,2,256,,0,16,{},{},, +2222,Turban,Turban,5,4500,0,300,,3,,0,2088958,2,256,,0,7,{},{},, +2223,Turban_,Turban,5,4500,0,300,,3,,1,2088958,2,256,,0,7,{},{},, +2224,Goggles,Goggles,5,10000,0,300,,5,,0,1989866,2,768,,0,1,{},{},, +2225,Goggles_,Goggles,5,10000,0,300,,5,,1,1989866,2,768,,0,1,{},{},, +2226,Cap,Cap,5,12000,0,400,,4,,0,1989866,2,256,,0,14,{},{},, +2227,Cap_,Cap,5,12000,0,400,,4,,1,1989866,2,256,,0,14,{},{},, +2228,Helm,Helm,5,44000,0,600,,6,,0,16514,2,256,,0,40,{},{},, +2229,Helm_,Helm,5,44000,0,600,,6,,1,16514,2,256,,0,40,{},{},, +2230,Gemmed_Sallet,Gemmed Sallet,5,50000,0,500,,4,,0,414946,2,256,,0,0,{},{ bonus bMdef,3; }, +2231,Gemmed_Sallet_,Gemmed Sallet,5,50000,0,500,,4,,1,414946,2,256,,0,0,{},{ bonus bMdef,3; }, +2232,Circlet,Circlet,5,7500,0,300,,3,,0,99092,2,256,,0,18,{},{ bonus bMdef,3; }, +2233,Circlet_,Circlet,5,7500,0,300,,3,,1,99092,2,256,,0,18,{},{ bonus bMdef,3; }, +2234,Tiara,Tiara,5,20,0,400,,4,,0,2088958,0,256,,45,19,{},{ bonus bInt,2; }, +2235,Crown,Crown,5,20,0,400,,4,,0,2088958,1,256,,45,45,{},{ bonus bInt,2; }, +2236,Santa's_Hat,Santa's Hat,5,20,0,100,,1,,0,10477567,2,256,,0,20,{},{ bonus bMdef,1; bonus bLuk,1; } +2237,Bandit_Beard,Bandit Beard,5,2,0,100,,0,,0,10477567,2,1,,0,21,{},{},, +2238,Moustache,Moustache,5,2,0,100,,0,,0,10477567,2,1,,0,22,{},{},, +2239,Single_Glass,Single Glass,5,10000,0,100,,0,,0,10477567,2,512,,0,23,{},{},, +2240,Beard,Beard,5,2,0,100,,0,,0,10477567,2,1,,0,24,{},{},, +2241,Granpa_Beard,Granpa Beard,5,5000,0,100,,0,,0,10477567,2,1,,0,25,{},{},, +2242,Purple_Sunglasses,Purple Glasses,5,24000,0,100,,1,,0,10477567,2,512,,0,26,{},{ bonus2 bResEff,Eff_Blind,1000; } +2243,Geek_Glasses,Geek Glasses,5,20000,0,100,,1,,0,10477567,2,512,,0,27,{},{ bonus2 bResEff,Eff_Blind,1500; } +2244,Big_Ribbon,Big Ribbon,5,15000,0,200,,2,,0,2088958,2,256,,0,28,{},{ bonus bMdef,3; }, +2245,Sweet_Gent,Sweet Gent,5,15000,0,400,,3,,0,2088958,2,256,,0,29,{},{},, +2246,Golden_Gear,Golden Gear,5,20,0,900,,5,,0,2088958,2,256,,40,30,{},{ bonus2 bSubEle,0,10; },, +2247,Romantic_Gent,Romantic Gent,5,15000,0,400,,3,,0,2088958,2,256,,0,31,{},{},, +2248,Western_Grace,Western Grace,5,15000,0,400,,3,,0,2088958,2,256,,0,32,{},{},, +2249,Coronet,Coronet,5,20,0,300,,3,,0,2088958,2,256,,0,33,{},{ bonus bInt,1; }, +2250,Fillet,Cute Ribbon,5,500,0,100,,1,,0,2088958,2,256,,0,34,{},{ bonus bMaxSP,20; },,,, +2251,Holy_Bonnet,Monk Hat,5,30000,0,100,,5,,0,33040,2,256,,0,35,{},{ bonus bMdef,3; },,,, +2252,Wizard_Hat,Wizard Hat,5,20,0,300,,4,,0,66052,2,256,,0,36,{},{ bonus bMaxSP,100; },,,, +2253,Sunflower,Sunflower,5,20,0,100,,1,,0,10477567,2,256,,0,37,{},{ bonus2 bSubRace,4,10; },,, +2254,Angel_Wing,Angel Wing,5,20,0,100,,2,,0,2088958,2,256,,0,38,{},{ bonus bMdef,3; bonus bAgi,1; bonus bLuk,1; bonus2 bSubRace,6,3; } +2255,Evil_Wing,Evil Wing,5,20,0,100,,3,,0,2088958,2,256,,0,39,{},{ bonus bMdef,2; bonus bStr,1; bonus2 bSubRace,8,3; }, +2256,Majestic_Goat,Majestic Goat,5,20,0,800,,5,,0,279714,2,256,,0,41,{},{ bonus bStr,1; },,,, +2257,Snow_Horn,Snow Horn,5,20,0,100,,2,,0,10477567,2,256,,0,42,{},{},,,,, +2258,Spiky_Band,Spiky Band,5,20,0,1000,,6,,0,447986,2,256,,50,43,{},{},,,,, +2259,Mini_Propeller,Mini Propeller,5,20,0,100,,1,,0,10477567,2,256,,0,46,{},{},,,,, +2260,Mini_Glasses,Mini Glasses,5,28000,0,100,,1,,0,2088958,2,512,,0,47,{},{},,,,, +2261,Army_Cap,Army Cap,5,20,0,400,,4,,0,414946,2,256,,0,48,{},{},,,,, +2262,Pierrot_Nose,Pierrot Nose,5,20,0,100,,0,,0,10477567,2,1,,0,49,{},{},,,,, +2263,Zorro_Masque,Zorro Masque,5,20,0,100,,0,,0,2088958,2,512,,0,50,{},{},,,,, +2264,Munak_Hat,Munak Hat,5,20,0,300,,5,,0,10477567,2,769,,0,51,{},{ bonus2 bSubRace,1,10; },,, +2265,Gangster_Mask,Gangster Mask,5,20,0,100,,0,,0,10477567,2,1,,0,52,{},{ bonus2 bResEff,Eff_Silence,1500; },,, +2266,Iron_Cain,Iron Cain,5,20,0,300,,1,,0,16514,2,1,,50,53,{},{},,, +2267,Cigar,Cigar,5,20,0,100,,0,,0,2088958,2,1,,0,54,{},{ bonus2 bSubRace,4,3; }, +2268,Pipe,Pipe,5,20,0,100,,0,,0,2088958,2,1,,0,55,{},{ bonus2 bSubRace,4,3; }, +2269,Centimental_Flower,Romantic Flower,5,20,0,100,,0,,0,2088958,2,1,,0,56,{},{ bonus2 bSubRace,3,3; }, +2270,Centimental_Leaf,Romantic Leaf,5,20,0,100,,0,,0,2088958,2,1,,0,57,{},{ bonus2 bSubRace,3,3; }, +2271,Jack_a_Dandy,Jack a Dandy,5,45000,0,100,,1,,0,2088958,2,256,,0,58,{},{},,, +2272,Stop_Post,Stop Post,5,20,0,400,,1,,0,10477567,2,256,,0,59,{},{},,, +2273,Doctor_Cap,Doctor Band,5,20,0,100,,1,,0,2088958,2,256,,0,60,{},{ bonus bInt,1; },, +2274,Ghost_Bandana,Ghost Bandana,5,20,0,100,,0,,0,2088958,2,256,,0,61,{},{ bonus bAgi,2; bonus2 bSubEle,8,10; } +2275,Red_Bandana,Red Bandana,5,20,0,100,,2,,0,10477567,2,256,,0,62,{},{},,, +2276,Eagle_Eyes,Eagle Eyes,5,20,0,100,,1,,0,10477567,2,512,,0,63,{},{},,, +2277,Nurse_Cap,Nurse Cap,5,20,0,100,,1,,0,33040,2,256,,0,64,{},{ bonus bInt,1; bonus bLuk,1; }, +2278,Mr_Smile,Mr. Smile,5,60,0,100,,1,,0,10477567,2,513,,0,65,{},{},,, +2279,Bomb_Wick,Bomb Wick,5,20,0,100,,1,,0,10477567,2,256,,0,66,{},{},,, +2280,Sakkat,Sakkat,5,20,0,300,,3,,0,10477567,2,256,,0,67,{},{ bonus bAgi,1; },, +2281,Opera_Masque,Opera Masque,5,8000,0,200,,2,,0,2088958,2,513,,0,68,{},{},,, +2282,Heaven_Ring,Heaven Ring,5,20,0,100,,0,,0,10477567,2,256,,0,69,{},{ bonus2 bSubEle,6,10; } +2283,Ear_Mufs,Ear Mufs,5,20,0,200,,3,,0,10477567,2,256,,0,70,{},{ bonus2 bResEff,Eff_Curse,1000; } +2284,Antler,Antler,5,20,0,500,,4,,0,2088958,2,256,,0,71,{},{},, +2285,Apple_o'_Archer,Apple o' Archer,5,20,0,200,,0,,0,2088958,2,256,,30,72,{},{ bonus bDex,3; }, +2286,Elven_Ears,Elven Ears,5,20,0,100,,0,,0,2088958,2,512,,70,73,{},{},, +2287,Pirate_Bandana,Pirate Bandana,5,20,0,100,,3,,0,2088958,2,256,,0,74,{},{ bonus bStr,1; }, +2288,Mr_Scream,Mr. Scream,5,20,0,100,,1,,0,2088958,2,513,,0,75,{},{},, +2289,Poo_Poo_Hat,Poo Poo Hat,5,20,0,700,,0,,0,10477567,2,256,,0,76,{},{ bonus2 bSubRace,7,10; } +2290,Funeral_Hat,Funeral Hat,5,3000,0,100,,1,,0,10477567,2,256,,0,77,{},{},, +2291,Masquerade,Masquerade,5,20,0,100,,0,,0,2088958,2,512,,0,78,{},{ bonus2 bAddRace,7,3; } +2292,Welding_Mask,Welding Mask,5,20,0,300,,2,,0,263200,2,513,,50,79,{},{ bonus2 bSubEle,3,10; } +2293,Pretend_Murdered,Pretend Murdered,5,20,0,100,,1,,0,10477567,2,256,,0,80,{},{},, +2294,Stellar,Stellar,5,20,0,100,,1,,0,10477567,2,256,,0,81,{},{},, +2295,Blinker,Blinker,5,1500,0,100,,0,,0,2088958,2,512,,0,82,{},{ bonus2 bResEff,Eff_Blind,10000; } +2296,Binoculars,Binoculars,5,20,0,100,,1,,0,1574920,2,512,,50,83,{},{ bonus bDex,1; }, +2297,Goblini_Mask,Goblini Mask,5,20,0,100,,1,,0,2088958,2,513,,0,84,{},{},, +2298,Green_Feeler,Green Feeler,5,20,0,100,,2,,0,10477567,2,256,,0,85,{},{} +2299,Viking_Helm,Viking Helm,5,20,0,500,,5,,0,414946,2,256,,0,86,{},{} + +// Armor +//=================================================================== +2301,Cotton_Shirt,Cotton Shirt,5,10,0,100,,1,,0,10477567,2,16,,0,0,{},{} +2302,Cotton_Shirt_,Cotton Shirt,5,10,0,100,,1,,1,10477567,2,16,,0,0,{},{} +2303,Leather_Jacket,Leather Jacket,5,200,0,200,,2,,0,10477567,2,16,,0,0,{},{} +2304,Leather_Jacket_,Leather Jacket,5,200,0,200,,2,,1,10477567,2,16,,0,0,{},{} +2305,Adventure_Suit,Adventurer's Suit,5,1000,0,300,,3,,0,10477567,2,16,,0,0,{},{} +2306,Adventure_Suit_,Adventurer's Suit,5,1000,0,300,,3,,1,10477567,2,16,,0,0,{},{} +2307,Mantle,Mantle,5,10000,0,600,,4,,0,2088958,2,16,,0,0,{},{} +2308,Mantle_,Mantle,5,10000,0,600,,4,,1,2088958,2,16,,0,0,{},{} +2309,Coat,Coat,5,22000,0,1200,,5,,0,2088958,2,16,,0,0,{},{} +2310,Coat_,Coat,5,22000,0,1200,,5,,1,2088958,2,16,,0,0,{},{} +2311,Mink_Coat,Mink Coat,5,50000,0,2300,,6,,1,2088958,2,16,,30,0,{},{} +2312,Padded_Armor,Padded Armor,5,48000,0,2800,,7,,0,414946,2,16,,0,0,{},{} +2313,Padded_Armor_,Padded Armor,5,48000,0,2800,,7,,1,414946,2,16,,0,0,{},{} +2314,Chain_Mail,Chain Mail,5,65000,0,3300,,8,,0,414946,2,16,,0,0,{},{},,,,, +2315,Chain_Mail_,Chain Mail,5,65000,0,3300,,8,,1,414946,2,16,,0,0,{},{},,,,, +2316,Full_Plate,Full Plate,5,80000,0,4500,,10,,0,16514,2,16,,40,0,{},{},,,,, +2317,Full_Plate_,Full Plate,5,80000,0,4500,,10,,1,16514,2,16,,40,0,{},{},,,,, +2318,Clothes_of_the_Lord,Lord's Clothes,5,20,0,2500,,8,,1,263200,2,16,,70,0,{},{ bonus bMdef,5; bonus bInt,1; },,, +2319,Glittering_Clothes,Glittering Jacket,5,20,0,2500,,7,,1,2088958,2,16,,60,0,{},{ bonus bMdef,5; bonus2 bAddEffect,Eff_Blind,500; },,,, +2320,Formal_Suit,Formal Suit,5,20,0,300,,5,,1,2088958,2,16,,0,0,{},{},,,,, +2321,Silk_Robe,Silk Robe,5,8000,0,400,,3,,0,378806,2,16,,0,0,{},{ bonus bMdef,10; },,,, +2322,Silk_Robe_,Silk Robe,5,8000,0,400,,3,,1,378806,2,16,,0,0,{},{ bonus bMdef,10; },,,, +2323,Scapulare,Scapulare,5,6500,0,400,,4,,0,33040,2,16,,0,0,{},{},,,,, +2324,Scapulare_,Scapulare,5,6500,0,400,,4,,1,33040,2,16,,0,0,{},{},,,,, +2325,Saint_Robe,Saint's Robe,5,54000,0,600,,6,,0,296240,2,16,,0,0,{},{ bonus bMdef,5; },,,, +2326,Saint_Robe_,Saint's Robe,5,54000,0,600,,6,,1,296240,2,16,,0,0,{},{ bonus bMdef,5; },,,, +2327,Holy_Robe,Holy Robe,5,20,0,1700,,7,,0,33040,2,16,,60,0,{},{ bonus bMdef,5; bonus2 bSubRace,6,15; bonus2 bSubEle,7,10; } +2328,Wooden_Mail,Wooden Mail,5,5500,0,1000,,4,,0,279714,2,16,,0,0,{},{},,,,, +2329,Wooden_Mail_,Wooden Mail,5,5500,0,1000,,4,,1,279714,2,16,,0,0,{},{},,,,, +2330,Tights,Tights,5,71000,0,500,,6,,0,1574920,2,16,,45,0,{},{ bonus bDex,1; }, +2331,Tights_,Tights,5,71000,0,500,,6,,1,1574920,2,16,,45,0,{},{ bonus bDex,1; }, +2332,Silver_Robe,Silver Robe,5,7000,0,700,,4,,0,66052,2,16,,0,0,{},{},, +2333,Silver_Robe_,Silver Robe,5,7000,0,700,,4,,1,66052,2,16,,0,0,{},{},, +2334,Mage_Coat,Mage Coat,5,20,0,600,,5,,0,66052,2,16,,50,0,{},{ bonus bMdef,5; bonus bInt,1; } +2335,Thief_Clothes,Thief Clothes,5,74000,0,100,,6,,0,135232,2,16,,0,0,{},{ bonus bAgi,1; }, +2336,Thief_Clothes_,Thief Clothes,5,74000,0,100,,6,,1,135232,2,16,,0,0,{},{ bonus bAgi,1; }, +2337,Ninja_Suit,Ninja Suit,5,20,0,1500,,7,,0,135232,2,16,,50,0,{},{ bonus bAgi,1; bonus bMdef,3; } +2338,Wedding_Dress,Wedding Dress,5,43000,0,500,,0,,0,10477566,0,16,,0,0,{},{ bonus bMdef,15; changebase 22; }, +2339,Pantie,Pantie,5,1000,0,100,,4,,0,10477567,2,16,,0,0,{},{},, +2340,Novice_Breastplate,Novice Breastplate,5,89000,0,500,,4,,1,8388609,2,16,,10,0,{},{},, +2341,Legion_Plate_Armor,Legion Plate Armor,5,94000,0,5500,,11,,0,16384,2,16,,70,0,{},{},, +2342,Legion_Plate_Armor_,Legion Plate Armor,5,94000,0,5500,,11,,1,16384,2,16,,70,0,{},{},, +2343,Robe_of_Casting,Casting Robe,5,20,0,1100,,5,,0,66048,2,16,,75,0,{},{ bonus bCastrate,-3; }, +2344,Armor_of_Fire,Lucias's Volcano Armor,5,20,0,2200,,4,,0,279714,2,16,,45,0,{},{ bonus bDefEle,3; }, +2345,Armor_of_Fire_,Lucias's Volcano Armor,5,20,0,2200,,4,,1,279714,2,16,,45,0,{},{ bonus bDefEle,3; }, +2346,Armor_of_Water,Sapien's Ocean Armor,5,20,0,2200,,4,,0,279714,2,16,,45,0,{},{ bonus bDefEle,1; }, +2347,Armor_of_Water_,Sapien's Ocean Armor,5,20,0,2200,,4,,1,279714,2,16,,45,0,{},{ bonus bDefEle,1; }, +2348,Armor_of_Wind,Ebeshi's Typhoon Armor,5,20,0,2200,,4,,0,279714,2,16,,45,0,{},{ bonus bDefEle,4; }, +2349,Armor_of_Wind_,Ebeshi's Typhoon Armor,5,20,0,2200,,4,,1,279714,2,16,,45,0,{},{ bonus bDefEle,4; }, +2350,Armor_of_Land,Kreitos's Earth Armor,5,20,0,2200,,4,,0,279714,2,16,,45,0,{},{ bonus bDefEle,2; }, +2351,Armor_of_Land_,Kreitos's Earth Armor,5,20,0,2200,,4,,1,279714,2,16,,45,0,{},{ bonus bDefEle,2; }, +2352,Armor_For_Novice,Novice Ninja Suit,5,20,0,1,,4,,0,8388609,2,16,,0,0,{},{},, + +// Foot gear +//=================================================================== +2401,Sandals,Sandals,5,400,0,200,,1,,0,10477567,2,64,,0,0,{},{} +2402,Sandals_,Sandals,5,400,0,200,,1,,1,10477567,2,64,,0,0,{},{} +2403,Shoes,Shoes,5,3500,0,400,,2,,0,2088958,2,64,,0,0,{},{} +2404,Shoes_,Shoes,5,3500,0,400,,2,,1,2088958,2,64,,0,0,{},{} +2405,Boots,Boots,5,18000,0,600,,4,,0,1989866,2,64,,0,0,{},{} +2406,Boots_,Boots,5,18000,0,600,,4,,1,1989866,2,64,,0,0,{},{} +2407,Crystal_Pumps,Crystal Pumps,5,20,0,100,,0,,0,2088958,0,64,,0,0,{},{ bonus bMdef,10; bonus bLuk,5; } +2408,Cuffs,Cuffs,5,5000,0,3000,,3,,0,10477567,2,64,,0,0,{},{} +2409,Spiky_Heel,Spiky Heel,5,8500,0,600,,2,,0,2088958,2,64,,0,0,{},{ bonus bMdef,5; } +2410,Sleipnir,Sleipnir,5,20,0,3500,,0,,0,10477567,2,64,,95,0,{},{ bonus bMdef,10; bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bSPrecovRate,15; bonus bSpeedRate,25; } +2411,Greaves,Greaves,5,48000,0,750,,5,,0,16512,2,64,,65,0,{},{},,,, +2412,Greaves_,Greaves,5,48000,0,750,,5,,1,16512,2,64,,65,0,{},{},,,, +2413,Safety_Shoes,Safety Shoes,5,20,0,350,,6,,0,16514,2,64,,30,0,{},{},,,, +2414,Sandal_For_Novice,Novice Sandals,5,20,0,1,,2,,0,8388609,2,64,,0,0,{},{},,,, +2415,Bunny_Slippers,Bunny Slippers,5,20,0,300,,,,,2088958,0,64,,,0,{},{ bonus bLuk,3; } + +// Garments +//=================================================================== +2501,Hood,Hood,5,1000,0,200,,1,,0,10477567,2,4,,0,0,{},{},,,, +2502,Hood_,Hood,5,1000,0,200,,1,,1,10477567,2,4,,0,0,{},{},,,, +2503,Muffler,Muffler,5,5000,0,400,,2,,0,2088958,2,4,,0,0,{},{},,,, +2504,Muffler_,Muffler,5,5000,0,400,,2,,1,2088958,2,4,,0,0,{},{},,,, +2505,Manteau,Manteau,5,32000,0,600,,4,,0,414946,2,4,,0,0,{},{},,,, +2506,Manteau_,Manteau,5,32000,0,600,,4,,1,414946,2,4,,0,0,{},{},,,, +2507,Cape_Of_Ancient_Lord,Cape of Old Marquess,5,20,0,600,,2,,0,2088958,2,4,,40,0,{},{ bonus bAgi,1; },,, +2508,Ragamuffin_Cape,Ragamuffin Manteau,5,20,0,500,,1,,0,2088958,2,4,,0,0,{},{ bonus bMdef,10; bonus bUnbreakable,100; },,, +2509,Manteau_of_Survival,Manteau of Life,5,20,0,550,,0,,0,66052,2,4,,75,0,{},{ bonus bVit,10; },,, +2510,Hood_For_Novice,Novice Hood,5,20,0,1,,2,,0,8388609,2,4,,0,0,{},{},, + +// Accessories +//=================================================================== +2601,Ring,Ring,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bStr,2; }, +2602,Earring,Earring,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bInt,2; }, +2603,Necklace,Necklace,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bVit,2; }, +2604,Glove,Glove,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bDex,2; }, +2605,Brooch,Brooch,5,30000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bAgi,2; }, +2607,Clip,Clip,5,30000,0,100,,0,,1,10477567,2,136,,0,0,{},{ bonus bMaxSP,10; }, +2608,Rosary,Rosary,5,15000,0,100,,0,,0,2088958,2,136,,20,0,{},{ bonus bMdef,5; bonus bLuk,2; } +2609,Skull_Ring,Skull Ring,5,10000,0,100,,0,,0,10477567,2,136,,0,0,{},{},, +2610,Gold_Ring,Gold Ring,5,30000,0,100,,0,,0,10477567,2,136,,0,0,{},{},, +2611,Silver_Ring,Silver Ring,5,20000,0,100,,0,,0,10477567,2,136,,0,0,{},{},, +2612,Flower_Ring,Flower Ring,5,1500,0,100,,0,,0,10477567,2,136,,0,0,{},{},, +2613,Diamond_Ring,Diamond Ring,5,45000,0,100,,0,,0,10477567,2,136,,0,0,{},{},, +2614,Eye_of_Dullahan,Eye of Dullahan,5,90000,0,100,,0,,0,2088958,2,136,,50,0,{},{ bonus2 bResEff,Eff_Poison,1000; bonus2 bResEff,Eff_Curse,1000; bonus2 bResEff,Eff_Silence,1000; bonus2 bResEff,Eff_Confusion,1000; bonus2 bResEff,Eff_Blind,1000; },, +2615,Safety_Ring,Safety Ring,5,75000,0,100,,3,,0,2088958,2,136,,40,0,{},{ bonus bMdef,3; },,,, +2616,Critical_Ring,Critical Ring,5,75000,0,100,,0,,0,2088958,2,136,,40,0,{},{ bonus bCritical,5; },,,, +2617,Celebrant's_Mitten,Celebrant's Mitten,5,20,0,100,,1,,0,2088958,2,136,,35,0,{},{ bonus bInt,1; },,,, +2618,Matyr's_Leash,Matyr's Leash,5,20,0,100,,1,,0,2088958,2,136,,35,0,{},{ bonus bAgi,1; },,,, +2619,Thimble_Of_Archer,Bow Thimble,5,30000,0,100,,0,,0,1574920,2,136,,65,0,{},{},,,,, +2620,Ring_Of_Rogue,Rogue's Treasure,5,30000,0,100,,0,,0,135232,2,136,,70,0,{},{ bonus bAddStealRate,100; },,,,, +2621,Ring_,Ancient Ring,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bStr,1; },,,, +2622,Earring_,Ancient Earring,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bInt,1; },,,, +2623,Necklace_,Ancient Necklace,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bVit,1; },,,, +2624,Glove_,Ancient Glove,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bDex,1; },,,, +2625,Brooch_,Ancient Brooch,5,30000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bAgi,1; },,,, +2626,Rosary_,Ancient Rosary,5,15000,0,200,,0,,1,2088958,2,136,,90,0,{},{ bonus bMdef,3; bonus bLuk,1; },,, +2627,Belt,Ancient Belt,5,20000,0,1200,,0,,1,10477567,2,136,,25,0,{},{},,,,, +2628,Novice_Armlet,Novice Armlet,5,400,0,200,,0,,1,8388609,2,136,,0,0,{},{ bonus bStr,1; bonus bInt,1; bonus bLuk,1; },, +2629,Megingjard,Megingjard,5,20,0,8000,,2,,0,10477567,2,136,,90,0,{},{ bonus bStr,40; bonus bMdef,7; },,, +2630,Brisingamen,Brisingamen,5,20,0,1500,,1,,0,10477567,2,136,,95,0,{},{ bonus bStr,3; bonus bAgi,3; bonus bVit,3; bonus bInt,3; bonus bMdef,5; } +2631,Celebration_Ring,Celebration Ring,5,20,0,10,,0,,0,10477567,2,136,,0,0,{},{ bonus bStr,2; bonus bAgi,2; bonus bVit,2; bonus bInt,2; bonus bDex,2; bonus bLuk,2; } +2634,Wedding_Ring_M,Wedding Ring,4,20,0,0,,,,0,10477567,1,2,,0,,{},{ skill 334,1; skill 336,1; } +2635,Wedding_Ring_F,Wedding Ring,4,20,0,0,,,,0,10477567,0,2,,0,,{},{ skill 335,1; skill 336,1; } +2636,Gold_Christmas_Ring,Gold Xmas Ring,5,20,0,0,,0,,0,10477567,2,136,,0,,{},{} +2637,Silver_Christmas_Ring,Silver Xmas Ring,5,20,0,0,,0,,0,10477567,2,136,,0,,{},{} +2638,Exorcize_Sachet,Exorcize Sachet,5,20,0,100,,0,,,10477567,2,136,,0,,{},{ bonus bStr,1; bonus bLuk,1; },,, +2639,Purification_Sachet,Purification Sachet,5,20,0,100,,0,,,10477567,2,136,,0,,{},{ bonus bAgi,1; bonus bInt,1; },,, +2640,Kafra_Ring,Kafra Ring,5,20,0,10,,,,,2088958,2,136,,,,{},{ bonus bStr,1; bonus bAgi,1; bonus bInt,1; bonus bLuk,1; } + +// Cards +//=================================================================== +4001,Poring_Card,Poring Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bLuk,2; bonus bFlee2,1; } +4002,Fabre_Card,Fabre Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bVit,1; bonus bMaxHP,100; } +4003,Pupa_Card,Pupa Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bMaxHP,700; } +4004,Drops_Card,Drops Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bDex,1; bonus bHit,3; } +4005,Poring__Card,Poring Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,7,20; } +4006,Lunatic_Card,Lunatic Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bLuk,1; bonus bCritical,1; bonus bFlee2,1; } +4007,Pecopeco_Egg_Card,Pecopeco Egg Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,0,20; } +4008,Picky_Card,Picky Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bStr,1; bonus bBaseAtk,10; } +4009,Chonchon_Card,Chonchon Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bAgi,1; bonus bFlee,2; } +4010,Wilow_Card,Wilow Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bMaxSP,80; } +4011,Picky__Card,Picky Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bVit,1; bonus bMaxHP,100; } +4012,Thief_Bug_Egg_Card,Thief Bug Egg Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMaxHP,400; } +4013,Andre_Egg_Card,Andre Egg Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMaxHPrate,5; } +4014,Roda_Frog_Card,Roda Frog Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bMaxHP,400; bonus bMaxSP,50; } +4015,Condor_Card,Condor Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bFlee,10; } +4016,Thief_Bug_Card,Thief Bug Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bAgi,1; } +4017,Savage_Babe_Card,Savage Babe Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Stan,500; } +4018,Andre_Larva_Card,Andre Larva Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bInt,1; bonus bMaxSP,10; } +4019,Hornet_Card,Hornet Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bStr,1; bonus bBaseAtk,3; } +4020,Farmiliar_Card,Farmiliar Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Blind,500; bonus bBaseAtk,5; } +4021,Rocker_Card,Rocker Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDex,1; } +4022,Spore_Card,Spore Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bVit,2; } +4023,Desert_Wolf_Babe_Card,Desert Wolf Babe Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bInt,1; } +4024,Plankton_Card,Plankton Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Sleep,500; bonus bBaseAtk,5; } +4025,Skeleton_Card,Skeleton Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bBaseAtk,10; bonus2 bAddEff,Eff_Stan,200; } +4026,Thief_bug_Female_Card,Thief bug Female Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAgi,1; bonus bFlee,1; } +4027,Kukre_Card,Kukre Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bAgi,2; } +4028,Tarou_Card,Tarou Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bStr,2; } +4029,Wolf_Card,Wolf Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bBaseAtk,15; bonus bCritical,1; } +4030,Mandragora_Card,Mandragora Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,4,20; } +4031,Pecopeco_Card,Pecopeco Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bMaxHPrate,10; } +4032,Ambernite_Card,Ambernite Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bDef,2; } +4033,Poporing_Card,Poporing Card,6,20,0,10,,,,,,,136,,,,{},{ skill 53,1; } +4034,Worm_Tail_Card,Worm Tail Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bDex,2; } +4035,Hydra_Card,Hydra Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,7,20; } +4036,Muka_Card,Muka Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bHPrecovRate,10; } +4037,Snake_Card,Snake Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Poison,500; bonus bBaseAtk,5; } +4038,Zombie_Card,Zombie Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bHPrecovRate,20; } +4039,Stainer_Card,Stainer Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Silence,2000; bonus bDef,1; } +4040,Creamy_Card,Creamy Card,6,20,0,10,,,,,,,136,,,,{},{ skill 26,1; } +4041,Coco_Card,Coco Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Sleep,2000; bonus bDef,1; } +4042,Steel_Chonchon_Card,Steel Chonchon Card,6,20,0,10,,,,,,,16,,,,{},{ bonus2 bSubEle,4,10; bonus bDef,2; } +4043,Andre_Card,Andre Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bBaseAtk,20; } +4044,Smokie_Card,Smokie Card,6,20,0,10,,,,,,,136,,,,{},{ skill 51,1; } +4045,horn_Card,horn Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bLongAtkDef,35; } +4046,Martin_Card,Martin Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Blind,2000; bonus bDef,1; } +4047,Ghostring_Card,Ghostring Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,8; bonus bHPrecovRate,-25; } +4048,Poison_Spore_Card,Poison Spore Card,6,20,0,10,,,,,,,136,,,,{},{ skill 52,3; } +4049,Vadon_Card,Vadon Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,3,20; } +4050,Thief_bug_Male_Card,Thief bug Male Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bAgi,2; } +4051,Yoyo_Card,Yoyo Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bFlee2,5; bonus bAgi,1; } +4052,Elder_Wilow_Card,Elder Wilow Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bInt,2; } +4053,Vitata_Card,Vitata Card,6,20,0,10,,,,,,,136,,,,{},{ skill 28,1; bonus bUseSPrate,25; } +4054,Angeling_Card,Angeling Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,6; } +4055,Marina_Card,Marina Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Freeze,500; bonus bBaseAtk,5; } +4056,Dustiness_Card,Dustiness Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,4,30; bonus bFlee,5; } +4057,Metaller_Card,Metaller Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Silence,500; bonus bBaseAtk,5; } +4058,Thara_Frog_Card,Thara Frog Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,7,30; } +4059,Soldier_Andre_Card,Soldier Andre Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,3,30; } +4060,Goblin_Card,Goblin Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,2,20; } +4061,Cornutus_Card,Cornutus Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDef,1; } +4062,Anacondaq_Card,Anacondaq Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,5,20; } +4063,Caramel_Card,Caramel Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,4,20; } +4064,Zerom_Card,Zerom Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bDex,3; } +4065,Kaho_Card,Kaho Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,2,20; } +4066,Orc_Warrior_Card,Orc Warrior Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,2,30; } +4067,Megalodon_Card,Megalodon Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bResEff,Eff_Freeze,2000; bonus bDef,1; } +4068,Scorpion_Card,Scorpion Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,3,20; } +4069,Drainliar_Card,Drainliar Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,1,20; } +4070,Eggyra_Card,Eggyra Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bSPrecovRate,15; } +4071,Orc_Zombie_Card,Orc Zombie Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,9,30; bonus bFlee,5; } +4072,Golem_Card,Golem Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bBaseAtk,5; } +4073,Pirate_Skel_Card,Pirate Skel Card,6,20,0,10,,,,,,,136,,,,{},{ skill 37,5; } +4074,BigFoot_Card,BigFoot Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,4,30; } +4075,Argos_Card,Argos Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bResEff,Eff_Stone,2000; bonus bDef,1; } +4076,Magnolia_Card,Magnolia Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Curse,500; bonus bBaseAtk,5; } +4077,Phen_Card,Phen Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bNoCastCancel,0; bonus bCastrate,25; } +4078,Savage_Card,Savage Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bVit,3; } +4079,Mantis_Card,Mantis Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bStr,3; } +4080,Flora_Card,Flora Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,5,20; } +4081,Hode_Card,Hode Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,2,30; bonus bFlee,5; } +4082,Desert_Wolf_Card,Desert Wolf Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddSize,0,15; bonus bBaseAtk,5; } +4083,Rafflesia_Card,Rafflesia Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,5,30; } +4084,Marine_Sphere_Card,Marine Sphere Card,6,20,0,10,,,,,,,136,,,,{},{ skill 7,3; } +4085,Orc_Skeleton_Card,Orc Skeleton Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,6,20; } +4086,Soldier_Skeleton_Card,Soldier Skeleton Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bCritical,9; } +4087,Giearth_Card,Giearth Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Confusion,10000; bonus2 bSubEle,2,15; } +4088,Frilldora_Card,Frilldora Card,6,20,0,10,,,,,,,4,,,,{},{ skill 135,1; } +4089,Sword_Fish_Card,Sword Fish Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,1; bonus bDef,1; } +4090,Munak_Card,Munak Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bResEff,Eff_Stone,1500; bonus2 bSubEle,2,5; bonus bDef,1; } +4091,Kobold_Card,Kobold Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bStr,1; bonus bCritical,4; } +4092,Skel_Worker_Card,Skel Worker Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddSize,1,15; bonus bBaseAtk,5; } +4093,Obeaune_Card,Obeaune Card,6,20,0,10,,,,,,,136,,,,{},{ skill 35,1; } +4094,Archer_Skeleton_Card,Archer Skeleton Card,6,20,0,10,,,,,,,2,,,,{},{} +4095,Marse_Card,Marse Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,1,30; } +4096,Zenorc_Card,Zenorc Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Poison,400; bonus bBaseAtk,10; } +4097,Matyr_Card,Matyr Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bMaxHPrate,10; bonus bAgi,1; } +4098,Dokebi_Card,Dokebi Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,4; bonus bDef,1; } +4099,Pasana_Card,Pasana Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,3; bonus bDef,1; } +4100,Sohee_Card,Sohee Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bMaxSPrate,15; bonus bSPrecovRate,3; } +4101,Sand_Man_Card,Sand Man Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,2; bonus bDef,1; } +4102,Whisper_Card,Whisper Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bFlee,20; bonus2 bSubEle,8,-50; } +4103,Horong_Card,Horong Card,6,20,0,10,,,,,,,136,,,,{},{ skill 10,1; } +4104,Requiem_Card,Requiem Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Confusion,500; } +4105,Marc_Card,Marc Card,6,20,0,10,,,,,,,16,,,,{},{ bonus2 bSubEle,1,5; bonus2 bResEff,Eff_Freeze,10000; } +4106,Mummy_Card,Mummy Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,20; } +4107,Verit_Card,Verit Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bMaxHPrate,8; bonus bMaxSPrate,8; } +4108,Myst_Card,Myst Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,5,30; bonus bFlee,5; } +4109,Jakk_Card,Jakk Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,3,30; bonus bFlee,5; } +4110,Ghoul_Card,Ghoul Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Poison,2000; bonus bDef,1; } +4111,Strouf_Card,Strouf Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,6,20; } +4112,Marduk_Card,Marduk Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Silence,10000; } +4113,Marionette_Card,Marionette Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,8,30; bonus bFlee,5; } +4114,Argiope_Card,Argiope Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,5; bonus bDef,1; } +4115,Hunter_Fly_Card,Hunter Fly Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bHpDrainRate,3,15; } +4116,Isis_Card,Isis Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,7,30; bonus bFlee,5; } +4117,Side_Winder_Card,Side Winder Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bDoubleRate,5; } +4118,Petit_Card,Petit Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,9,20; } +4119,Bathory_Card,Bathory Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,7; } +4120,Petit__Card,Petit Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,9,30; } +4121,Phreeoni_Card,Phreeoni Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,100; } +4122,Deviruchi_Card,Deviruchi Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bStr,1; bonus2 bResEff,Eff_Blind,10000; } +4123,Eddga_Card,Eddga Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bInfiniteEndure,0; bonus bMaxHPrate,-25; } +4124,Medusa_Card,Medusa Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,6,15; bonus2 bResEff,Eff_Stone,10000; } +4125,Deviace_Card,Deviace Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,7,7; bonus2 bAddRace,2,7; bonus2 bAddRace,3,7; bonus2 bAddRace,4,7; } +4126,Minorous_Card,Minorous Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddSize,2,15; bonus bBaseAtk,5; } +4127,Nightmare_Card,Nightmare Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Sleep,10000; bonus bAgi,1; } +4128,Golden_Bug_Card,Golden Bug Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bNoMagicDamage,0; bonus bUseSPrate,100; } +4129,Baphomet__Card,Baphomet Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bHit,-10; bonus bSplashRange,1; } +4130,Scorpion_King_Card,Scorpion King Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEle,9,20; } +4131,Moonlight_Flower_Card,Moonlight Flower Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bSpeedRate,25; } +4132,Mistress_Card,Mistress Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bNoGemStone,0; bonus bUseSPrate,25; } +4133,Daydric_Card,Daydric Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,0,20; } +4134,Dracula_Card,Dracula Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bSpDrainRate,1,5; } +4135,Orc_Lord_Card,Orc Lord Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bShortWeaponDamageReturn,30; } +4136,Khalitzburg_Card,Khalitzburg Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,6,30; } +4137,Drake_Card,Drake Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bNoSizeFix,0; } +4138,Anubis_Card,Anubis Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,8,30; } +4139,Joker_Card,Joker Card,6,20,0,10,,,,,,,136,,,,{},{ skill 50,1; } +4140,Knight_Of_Abyss_Card,Knight Of Abyss Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,10,25; } +4141,Evil_Druid_Card,Evil Druid Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,9; bonus bInt,1; bonus bDef,1; } +4142,Doppelganger_Card,Doppelganger Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAspdRate,15; } +4143,Orc_Hero_Card,Orc Hero Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bVit,3; bonus2 bResEff,Eff_Stan,10000; } +4144,Osiris_Card,Osiris Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bRestartFullRecover,0; } +4145,Berzebub_Card,Berzebub Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bCastrate,-30; bonus bMaxSPrate,-15; bonus bMaxHPrate,-5; } +4146,Maya_Card,Maya Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMagicDamageReturn,30; } +4147,Baphomet_Card,Baphomet Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,-10; bonus bSplashRange,1; } +4148,Pharaoh_Card,Pharaoh Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bUseSPrate,-30; } +4149,Bon_Gun_Card,Bon Gun Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bInt,2; } +4150,Orc_Archer_Card,Orc Archer Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bRange,1; } +4151,Mimic_Card,Mimic Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bAgi,1; bonus bDex,2; bonus bLuk,3; } +4152,Wraith_Card,Wraith Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bMatk,8; } +4153,Alarm_Card,Alarm Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bCastrate,-10; } +4154,Arclouse_Card,Arclouse Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bStr,2; } +4155,Rideword_Card,Rideword Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bDex,4; } +4156,Skeleton_Prisoner_Card,Skel Prisoner Card,6,20,0,10,,,,,,,136,,,,{},{ skill 45,3; } +4157,Zombie_Prisoner_Card,Zombie Prisoner Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bMaxHPrate,10; } +4158,Dark_Priest_Card,Dark Priest Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-15; } +4159,Punk_Card,Punk Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-5; } +4160,Zherlthsh_Card,Zherlthsh Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-10; } +4161,Mysteltainn_Card,Mysteltainn Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bAtk,30; bonus bMaxHPrate,-22; bonus bCastrate,-10; } +4162,Tirfing_Card,Tirfing Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAgi,3; bonus bFlee,10; } +4163,Executioner_Card,Executioner Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bRandomAttackIncrease,300, 4; } +4164,Anolian_Card,Anolian Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bStr,2; } +4165,Sting_Card,Sting Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bDex,4; } +4166,Wander_Man_Card,Wander Man Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,25; bonus bCritical,5; } +4167,Cramp_Card,Cramp Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bAgi,3; } +4168,Filamentous_Card,Filamentous Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Stone,100; bonus2 bResEff,Eff_Freeze,100; bonus2 bResEff,Eff_Stan,100; bonus2 bResEff,Eff_Sleep,100; bonus2 bResEff,Eff_Poison,100; bonus2 bResEff,Eff_Curse,100; bonus2 bResEff,Eff_Silence,100; bonus2 bResEff,Eff_Confusion,100; bonus2 bResEff,Eff_Blind,100; } +4169,Brilight_Card,Brilight Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bAgi,2; bonus bLuk,3; } +4170,Iron_Fist_Card,Iron Fist Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bVit,2; } +4171,High_Orc_Card,High Orc Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bStr,2; } +4172,Choco_Card,Choco Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bStr,1; bonus bAgi,1; bonus bVit,1; bonus bInt,1; bonus bDex,1; bonus bLuk,1; bonus bAtk,10; bonus bDef,1; } +4173,Stem_Worm_Card,Stem Worm Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bDex,2; } +4174,Penonema_Card,Penomena Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMaxHPrate, 15; } +4175,Marin_Card,Marin Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,1,20; } +4176,Sasquatch_Card,Sasquatch Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bAddSize,1,20; bonus bAtk,-10; } +4177,Antonio_Card,Antonio Card,6,20,0,10,,,,,,,136,,,,{},{ skill 50,5; skill 210,5; } +4178,Cruiser_Card,Cruiser Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bDex,3; } +4179,Mystcase_Card,Mystcase Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bCastrate,-10; bonus bAtk,10; } +4180,Chepet_Card,Chepet Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bLuk,5; } +4181,Knight_of_Windstorm_Card,Knight Of Windstorm Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bAddEff,Eff_Freeze,500; bonus bAtk,25; } +4182,Garm_Card,Garm Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bAddSize,2,20; bonus bAtk,-10; } +4183,Gargoyle_Card,Gargoyle Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bRange,5; } +4184,Raggler_Card,Raggler Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Sleep,500; } +4185,Neraid_Card,Neraid Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bAgi,2; } +4186,Pest_Card,Pest Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,0,20; } +4187,Injustice_Card,Injustice Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,9,20; } +4188,Goblin_Archer_Card,Goblin Archer Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,2,20; } +4189,Gryphon_Card,Gryphon Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Silence,500; bonus bAtk,25; } +4190,Dark_Frame_Card,Dark Frame Card,6,20,0,10,,,,,,,769,,,,{},{ skill 32,2; } +4191,Wind_Ghost_Card,Wind Ghost Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,4; } +4192,Merman_Card,Merman Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,1; } +4193,Cookie_Card,Cookie Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,7; } +4194,Aster_Card,Aster Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,3,20; } +4195,Carat_Card,Carat Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,6,20; } +4196,Bloody_Knight_Card,Bloody Knight Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Blind,500; bonus bAtk,25; bonus bMaxHPrate,-10; } +4197,Clock_Card,Clock Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bLuk,10; } +4198,Clock_Tower_Manager_Card,C Tower Manager Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Curse,500; } +4199,Alligator_Card,Alligator Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Poison,500; } +4200,Dark_Lord_Card,Dark Lord Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,9; } +4201,Orc_Lady_Card,Orc Lady Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,4,20; } +4202,Megalith_Card,Megalith Card,6,20,0,10,,,,,,,4,,,,{},{ skill 9,1; } +4203,Alice_Card,Alice Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,6; } +4204,Raydric_Archer_Card,Raydric Archer Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,3; } +4205,Greatest_General_Card,Greatest General Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,5,20; } +4206,Stalatic_Golem_Card,Stalactic Golem Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMaxHP,500; bonus bDex,-3; } +4207,Tri_Joint_Card,Tri Joint Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,7,20; } +4208,Steamrider_Goblin_Card,Steam Goblin Card,6,20,0,10,,,,,,,64,,,,{},{ bonus2 bSubEle,8,20; } +4209,Sage_Worm_Card,Sage Worm Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAtkEle,8; } +4210,Kobold_Archer_Card,Kobold archer Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,15; bonus bAtk,15; } +4211,Chimera_Card,Chimera Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Stan,500; bonus bAtk,25; } + +// Extra Headgears +//=================================================================== +5001,Headset,Headset,5,20,0,200,,3,,0,2088958,2,256,,0,87,{},{ bonus2 bResEff,Eff_Curse,1000; }, +5002,Jewel_Crown,Jewel Crown,5,20,0,600,,4,,0,414946,2,256,,60,88,{},{ bonus bMdef,3; bonus bInt,2; bonus bLuk,1; } +5003,Joker_Jester,Joker Jester,5,20,0,100,,1,,0,2088958,2,256,,0,89,{},{ bonus bMdef,5; bonus bLuk,2; }, +5004,Oxygen_Mask,Oxygen Mask,5,20,0,200,,0,,0,2088958,2,1,,0,90,{},{ bonus2 bResEff,Eff_Poison,2000; },,,, +5005,Gas_Mask,Gas Mask,5,20,0,100,,1,,0,2088958,2,513,,0,91,{},{ bonus2 bResEff,Eff_Poison,3000; },,,, +5006,Machoman_Glasses,Machoman's Glasses,5,36000,0,100,,1,,0,2088958,2,512,,0,92,{},{},,,,,, +5007,Grand_Circlet,Grand Circlet,5,20,0,200,,3,,0,2088958,2,256,,55,93,{},{ bonus bMdef,4; bonus bStr,1; bonus bInt,1; bonus bLuk,1; },, +5008,Puppy_Love,Puppy Love,5,20,0,100,,1,,0,2088958,2,256,,0,94,{},{},,,,,, +5009,Safety_Helmet,Safety Helmet,5,20,0,500,,3,,0,2088958,2,256,,0,95,{},{ bonus bMdef,3; bonus bUnbreakable,100; },,,,, +5010,Indian_Hair_Piece,Indian Fillet,5,20,0,100,,3,,0,10477567,2,256,,0,96,{},{},,,,,, +5011,Aerial,Aerial,5,20,0,100,,3,,0,10477567,2,256,,0,97,{},{},,,,,, +5012,Ph.D_Hat,Ph.D Hat,5,20,0,200,,3,,0,2088958,2,256,,0,98,{},{ bonus bMdef,3; },,,,, +5013,Horn_Of_Lord_Kaho,Lord Kaho's Horn,5,20,0,100,,5,,0,10477567,2,256,,0,99,{},{ bonus bMdef,10; bonus bStr,5; bonus bAgi,10; bonus bVit,10; bonus bInt,5; bonus bLuk,20; } +5014,Fin_Helm,Fin Helm,5,20,0,300,,2,,0,16514,2,512,,65,100,{},{},,,,,, +5015,Egg_Shell,Egg Shell,5,20,0,200,,3,,0,10477567,2,256,,0,101,{},{},,,,,, +5016,Boy's_Cap,Boy's Cap,5,20,0,100,,2,,0,2088958,2,256,,0,102,{},{},,,,,, +5017,Bone_Helm,Bone Helm,5,20,0,800,,7,,0,279714,2,256,,70,103,{},{ bonus2 bSubEle,7,-15; },,,, +5018,Feather_Bonnet,Feather Bonnet,5,20,0,300,,4,,0,1574920,2,256,,0,104,{},{ bonus bAgi,1; },,,,, +5019,Corsair,Corsair,5,20,0,500,,5,,0,2088958,2,256,,0,105,{},{ bonus bVit,1; },,,,, +5020,Kafra_Band,Kafra's Band,5,20,0,500,,3,,0,10477567,2,256,,0,106,{},{ bonus bMdef,3; },, +5021,Bankruptcy_of_Heart,Money Loser's Grief,5,20,0,1200,,4,,0,263200,2,256,,38,107,{},{ bonus bInt,1; bonus bDex,1; }, +5022,Solar_God_Helm,Solar God Helm,5,20,0,2400,,4,,0,2088832,2,768,,0,138,{},{ bonus bStr,3; bonus bInt,2; }, +5023,Parcel_Hat,Parcel Hat,5,20,0,1000,,0,,0,263200,2,256,,0,108,{},{},,, +5024,Cake_Hat,Cake Hat,5,20,0,1500,,1,,0,10477567,2,256,,0,109,{},{},,, +5025,Angel_Helm,Angel Helm,5,20,0,1600,,5,,0,2088832,2,256,,74,110,{},{ bonus bAgi,1; bonus bLuk,1; bonus bMdef,3; } +5026,Chef_Hat,Chef's Hat,5,20,0,300,,1,,0,2088958,2,256,,50,111,{},{ bonus bDex,1; },, +5027,Mage_Hat,Mage Hat,5,20,0,300,,1,,0,66052,2,256,,0,112,{},{ bonus bInt,2; bonus bMaxSP,150; }, +5028,Candle,Candle,5,20,0,150,,5,,0,10477567,2,256,,0,113,{},{},,, +5029,Spore_Hat,Spore Hat,5,20,0,900,,3,,0,2088958,2,256,,20,114,{},{},,, +5030,Panda_Hat,Panda Hat,5,20,0,800,,3,,0,2088958,2,256,,40,115,{},{},,, +5031,Miner's_Helmet,Miner's Helmet,5,20,0,1500,,4,,0,447986,2,256,,55,116,{},{ bonus bDex,2; },, +5032,Sunday_Hat,Sunday Hat,5,20,0,800,,1,,0,2088958,2,256,,0,117,{},{},,, +5033,Smokie_Hat,Smokie Hat,5,20,0,900,,3,,0,2088958,2,256,,50,118,{},{},,, +5034,Lightbulb_Hairband,Lightbulb Hairband,5,20,0,500,,0,,0,2088958,2,256,,0,119,{},{},,, +5035,Poring_Hat,Poring Hat,5,20,0,700,,2,,0,2088958,2,256,,38,120,{},{},,, +5036,Cross_Hairband,Cross Hairband,5,20,0,250,,1,,0,2088958,2,256,,10,121,{},{},,, +5037,Fruit_Shell,Apple Hat,5,20,0,150,,4,,0,10477567,2,256,,5,122,{},{},,, +5038,Deviruchi_Hat,Deviruchi Hat,5,20,0,800,,2,,0,2088958,2,256,,64,123,{},{ bonus bStr,1; bonus bInt,1; }, +5039,Rainbow_Eggshell,Rainbow Eggshell,5,20,0,400,,4,,0,10477567,2,256,,19,124,{},{},,, +5040,Blush,Blush,5,20,0,100,,0,,0,10477567,2,512,,0,125,{},{},,, +5041,Heart_Hairpin,Heart Hairpin,5,20,0,100,,0,,0,10477567,2,256,,0,126,{},{},,, +5042,Hair_Protector,Dumpling Decoration,5,20,0,150,,0,,0,2088958,2,256,,14,127,{},{},,, +5043,Opera_Ghost_Mask,Opera Ghost Mask,5,20,0,200,,1,,0,2088958,2,512,,20,128,{},{},,, +5044,Wing_Of_Demon,Wings of Demon,5,20,0,350,,2,,0,10477567,2,256,,45,129,{},{},,, +5045,Magician_Hat,Magic Hat,5,20,0,500,,3,,0,554319315732,2,256,,50,130,{},{ bonus bDex,1; bonus bAgi,1; bonus bMaxSP,50; } +5046,Bongun_Hat,Bongun Hat,5,20,0,300,,5,,0,10477567,2,769,,0,139,{},{},,, +5047,Fashion_Sunglasses,Fashion Sunglasses,5,20,0,100,,0,,0,2088958,2,256,,0,131,{},{},,, +5048,Cresent_Hairpin,Cresent Hairpin,5,20,0,100,,0,,0,10477567,2,256,,0,132,{},{},,, +5049,Striped_Bandana,Striped Bandana,5,20,0,150,,1,,0,10477567,2,256,,0,133,{},{},,, +5050,Mysterious_Fruit_Shell,Mysterious Fruit Shell,5,20,0,300,,5,,0,10477567,2,256,,30,134,{},{},,, +5051,Bell_of_Pussycat,Bell of Pussycat,5,20,0,100,,5,,0,10477567,2,1,,0,135,{},{},,, +5052,Blue_Bandana,Blue Bandana,5,20,0,150,,1,,0,10477567,2,256,,0,136,{},{},,, +5053,Sphinx_Hat,Sphinx Hat,5,20,0,3000,,5,,0,16514,2,256,,65,137,{},{ bonus bStr,2; },, +5054,Assassin_Mask,Assassin Mask,5,20,0,100,,0,,0,4096,2,1,,70,180,{},{},,, +5055,Novice_Eggshell,Novice Eggshell,5,20,0,10,,3,,0,8388609,2,256,,0,101,{},{},,, +5056,Seed_Of_Love,Seed Of Love,5,20,0,200,,0,,0,2088958,2,256,,0,140,{},{} +5057,Black_Cat_Ears,Black Cat Ears,5,20,0,200,,2,,0,10477567,2,256,,45,141,{},{} +5058,Resting_Cat,Resting Cat,5,20,0,500,,1,,0,2088958,2,256,,0,142,{},{ bonus2 bResEff,Eff_Curse,3000; bonus bMdef,15; } +5059,Bear_Hat,Bear Hat,5,20,0,800,,3,,0,10477567,2,256,,50,143,{},{} +5060,Pointy_Cap,Pointy Cap,5,20,0,300,,3,,0,10477567,2,256,,0,144,{},{ bonus bLuk,1; } +5061,Flower_Hairpin,Flower Hairpin,5,20,0,100,,1,,0,10477567,2,256,,0,145,{},{} +5062,Straw_Hat,Straw Hat,5,20,0,200,,3,,0,10477567,2,256,,50,146,{},{ bonus bAgi,1; } +5063,Bandaid,Bandaid,5,20,0,100,,1,,0,2088958,2,256,,0,147,{},{} +5064,Transformation_Leaf,Transformation Leaf,5,20,0,100,,1,,0,10477567,2,256,,0,148,{},{} +5065,Fresh_Blueish_Fish,Fresh Blueish Fish,5,20,0,500,,2,,0,10477567,2,256,,50,149,{},{ bonus2 bAddRace,5,10; } +5066,Horns_Of_Succubus,Horns of Succubus,5,20,0,800,,4,,0,2088958,2,256,,70,150,{},{ bonus bInt,1; bonus bMdef,10; } +5067,Sombrero,Sombrero,5,20,0,350,,4,,0,2088958,2,256,,0,151,{},{ bonus bAgi,1; } +5068,Ears_of_Demon,Ears Of Demon,5,20,0,100,,1,,0,10477567,2,512,,70,152,{},{ bonus bStr,1; } +5069,Fox_Mask,Fox Mask,5,20,0,300,,1,,0,2088958,2,256,,0,153,{},{ bonus bAgi,1; bonus bLuk,1; } +5070,Bandage,Bandage,5,20,0,100,,1,,0,2088958,2,256,,0,154,{},{ bonus bStr,2; } +5071,Indian_Headband,Indian Headband,5,20,0,200,,1,,0,2088958,2,256,,0,155,{},{ bonus bDex,1; } +5072,Horns_Of_Incubus,Horns Of Incubus,5,20,0,800,,4,,0,2088958,2,256,,70,156,{},{ bonus bAgi,1; bonus bMdef,10; } +5073,Campus_Hat,Campus Hat,5,20,0,700,,2,,0,2088958,2,256,,0,157,{},{ bonus bDex,2; } +5074,Ears_of_Angel,Ears of Angel,5,20,0,100,,1,,0,10477567,2,512,,70,158,{},{ bonus bStr,1; } +5075,Cowboy_Hat,Cowboy Hat,5,20,0,500,,4,,0,10477567,2,256,,0,159,{},{} +5076,Furry_Hat,Furry Hat,5,20,0,350,,2,,0,10477567,2,256,,0,160,{},{ bonus bLuk,1; } +5077,Tulip_Hairpin,Tulip Hairpin,5,20,0,100,,1,,0,10477567,2,256,,0,161,{},{} +5078,Sea_Otter_Hat,Sea Otter Hat,5,20,0,800,,3,,0,10477567,2,256,,50,162,{},{ bonus bVit,1; } +5079,X_Hairpin,X Hairpin,5,20,0,100,,1,,0,10477567,2,256,,0,163,{},{} +5080,Crown_of_the_Ancient_Queen,Crown of The Ancient Queen,5,20,0,400,,4,,0,10477567,2,256,,45,164,{},{} +5081,Crown_of_Mistress,Crown of Mistress,5,20,0,100,,1,,0,2088958,0,256,,75,165,{},{ bonus bInt,2; bonus bMaxSP,100; } +5082,Mushroom_Hairband,Mushroom Hairband,5,20,0,100,,2,,0,10477567,2,256,,0,166,{},{} +5083,Back_Ribbon,Back Ribbon,5,20,0,200,,1,,0,10477567,0,256,,45,167,{},{ bonus bMdef,10; } +5084,Lazy_Raccoon_Hat,Lazy Racoon Hat,5,20,0,500,,1,,0,2088958,2,256,,0,168,{},{ bonus2 bResEff,Eff_Sleep,2000; } +5085,Small_Twin_Ribbons,Small Twin Ribbons,5,20,0,100,,1,,0,10477567,0,512,,45,169,{},{} +5086,Sad_Mask,Sad Mask,5,20,0,100,,2,,0,10477567,2,513,,0,170,{},{ bonus2 bResEff,Eff_Blind,5000; } +5087,Expressionless_Mask,Expressionless Mask,5,20,0,100,,1,,0,10477567,2,513,,0,171,{},{} +5088,Surprised_Mask,Surprised Mask,5,20,0,100,,1,,0,10477567,2,513,,0,172,{},{} +5089,Annoyed_Mask,Annoyed Mask,5,20,0,100,,1,,0,10477567,2,513,,0,173,{},{} +5090,Mask_of_the_Goblin_Leader,Mask of The Goblin Leader,5,20,0,100,,2,,0,10477567,2,513,,0,174,{},{} +5091,Big_Golden_Bell,Big Golden Bell,5,20,0,200,,2,,0,2088958,2,768,,35,175,{},{} +5092,Nun_Hat,Nun Hat,5,20,0,300,,5,,0,33024,0,768,,65,176,{},{} +5093,Nun_Hat_,Nun Hat,5,20,0,300,,5,,0,33024,0,768,,65,177,{},{ bonus bMaxSP,100; } +5094,Orc_Hero_Helm,Orc Hero Helm,5,20,0,900,,5,,0,2088958,2,768,,55,178,{},{ bonus bStr,2; bonus bVit,1; } +5096,Assassin_Mask_,Assassin Mask,5,20,0,100,,0,,0,4096,2,1,,70,180,{},{},,, +5097,Annual_Commemoration_Hat,Annual Commemoration Hat,5,20,0,30,,3,,0,10477567,2,256,,0,166,{},{ bonus bAllStats,3; } +5098,Tiger_Mask,Tiger Mask,5,20,0,400,,2,,,10477567,2,768,,,181,{},{ bonus bStr,3; bonus bMaxHP,100; } + +// Misc items +//=================================================================== +7001,Mold_Powder,Mould Powder,3,680,0,10,,,,,,,,,,,{},{} +7002,Ogre_Tooth,Ogre Tooth,3,658,0,10,,,,,,,,,,,{},{} +7003,Anolian_Skin,Anolian Skin,3,928,0,10,,,,,,,,,,,{},{} +7004,Mud_Lump,Mud Lump,3,876,0,10,,,,,,,,,,,{},{} +7005,Skull,Skull,3,1044,0,10,,,,,,,,,,,{},{} +7006,Wing_of_Red_Bat,Wing of Red Bat,3,168,0,10,,,,,,,,,,,{},{} +7007,Claw_of_Rat,Claw of Rat,3,748,0,10,,,,,,,,,,,{},{} +7008,Stiff_Horn,Stiff Horn,3,636,0,10,,,,,,,,,,,{},{} +7009,Glitter_Shell,Glitter Shell,3,528,0,10,,,,,,,,,,,{},{} +7010,Tail_of_Steel_Scorpion,Tail of Steel Scorpion,3,548,0,10,,,,,,,,,,,{},{} +7011,Claw_of_Monkey,Claw of Monkey,3,466,0,10,,,,,,,,,,,{},{} +7012,Tough_Scalelike_Stem,Tough Scalelike Stem,3,412,0,10,,,,,,,,,,,{},{} +7013,Coral_Reef,Coral Reef,3,772,0,10,,,,,,,,,,,{},{} +7014,Old_Portrait,Old Portrait,3,1500,0,100,,,,,,,,,,,{},{} +7015,Bookclip_in_Memory,Bookclip in Memory,3,3000,0,20,,,,,,,,,,,{},{} +7016,Spoon_Stub,Spoon Stub,3,2500,0,20,,,,,,,,,,,{},{} +7017,Executioner's_Mitten,Executioner's Mitten,3,4500,0,30,,,,,,,,,,,{},{} +7018,Young_Twig,Young Twig,3,50,0,10,,,,,,,,,,,{},{} +7019,Loki's_Whispers,Loki's Whispers,3,20,0,10,,,,,,,,,,,{},{} +7020,Mother's_Nightmare,Mother's Nightmare,3,20,0,10,,,,,,,,,,,{},{} +7021,Foolishness_of_the_Blind,Foolishness of the Blind,3,20,0,10,,,,,,,,,,,{},{} +7022,Old_Hilt,Old Hilt,3,150,0,30,,,,,,,,,,,{},{} +7023,Blade_Lost_in_Darkness,Blade Lost in Darkness,3,12000,0,40,,,,,,,,,,,{},{} +7024,Bloody_Edge,Bloody Edge,3,10000,0,40,,,,,,,,,,,{},{} +7025,Lucifer's_Lament,Lucifer's Lament,3,30000,0,50,,,,,,,,,,,{},{} +7026,Key_of_Clock_Tower,Key of Clock Tower,3,2,0,30,,,,,,,,,,,{},{} +7027,Key_of_Underground,Key of Underground,3,2,0,30,,,,,,,,,,,{},{} +7028,Invite_for_Duel,Invite for Duel,3,0,0,10,,,,,,,,,,,{},{} +7029,Admission_for_Duel,Admission for Duel,3,20,0,10,,,,,,,,,,,{},{} +7030,Claw_of_Desert_Wolf,Claw of Desert Wolf,3,208,0,10,,,,,,,,,,,{},{} +7031,Old_Frying_Pan,Old Frying Pan,3,196,0,10,,,,,,,,,,,{},{} +7032,Piece_of_Egg_Shell,Piece of Egg Shell,3,168,0,10,,,,,,,,,,,{},{} +7033,Poison_Spore,Poison Spore,3,114,0,10,,,,,,,,,,,{},{} +7034,Red_Socks_with_Holes,Red Socks with Holes,3,100,0,10,,,,,,,,,,,{},{} +7035,Matchstick,Matchstick,3,100,0,10,,,,,,,,,,,{},{} +7036,Fang_of_Garm,Fang of Garm,3,100,0,10,,,,,,,,,,,{},{} +7037,Coupon,Coupon,3,2000,0,10,,,,,,,,,,,{},{} +7038,Yarn,Yarn,3,20,0,10,,,,,,,,,,,{},{} +7039,Novice_Nametag,Novice Nametag,3,20,0,10,,,,,,,,,,,{},{} +7040,Megaphone,Megaphone,3,20,0,10,,,,,,,,,,,{},{} +7041,Fine_Grit,Fine Grit,3,20,0,10,,,,,,,,,,,{},{} +7042,Leather_Bag_of_Infinity,Leather Bag of Infinity,3,20,0,10,,,,,,,,,,,{},{} +7043,Fine_Sand,Fine Sand,3,100,0,10,,,,,,,,,,,{},{} +7044,Vigorgra,Vigorgra,3,20,0,10,,,,,,,,,,,{},{} +7045,Magic_Paint,Magic Paint,3,20,0,10,,,,,,,,,,,{},{} +7046,Cart_Parts,Cart Parts,3,20,0,10,,,,,,,,,,,{},{} +7047,Alice's_Apron,Alice's Apron,3,2424,0,10,,,,,,,,,,,{},{} +7048,Talon_of_Griffon,Talon of Griffon,3,100,0,10,,,,,,,,,,,{},{} +7049,Stone,Stone,3,0,0,30,,,,,,,,,,,{},{} +7050,Cotton_Mat,Cotton Mat,3,20,0,10,,,,,,,,,,,{},{} +7051,Silk_Mat,Silk Mat,3,20,0,10,,,,,,,,,,,{},{} +7052,Wasted_Magazine,Wasted Magazine,3,20,0,10,,,,,,,,,,,{},{} +7053,Cyfar,Cyfar,3,772,0,10,,,,,,,,,,,{},{} +7054,Brigan,Brigan,3,746,0,10,,,,,,,,,,,{},{} +7055,Animal_Poop,Animal Poop,3,20,0,50,,,,,,,,,,,{},{} +7056,Payment_Statement_for_Kafra_Employee,Payment Statement for Ka,3,20,0,50,,,,,,,,,,,{},{} +7057,Gjallar,Gjallar,3,20,0,500,,,,,,,,,,,{},{} +7058,Gleipnir,Gleipnir,3,20,0,500,,,,,,,,,,,{},{} +7059,Free_Ticket_for_Kafra_Storage,Free Ticket for Kafra St,3,20,0,10,,,,,,,,,,,{},{} +7060,Free_Ticket_for_Kafra_Transportation,Free Ticket for Kafra Tr,3,20,0,10,,,,,,,,,,,{},{} +7061,Free_Ticket_for_the_Cart_Service,Free Ticket for the Cart,3,20,0,10,,,,,,,,,,,{},{} +7062,Broken_Turtle_Shell,Broken Turtle Shell,3,20,0,10,,,,,,,,,,,{},{} +7063,Soft_Feather,Soft Feather,3,280,0,10,,,,,,,,,,,{},{} +7064,Wing_of_Dragonfly,Wing of Dragonfly,3,520,0,10,,,,,,,,,,,{},{} +7065,Sea-otter_Fur,Sea Otter Fur,3,820,0,10,,,,,,,,,,,{},{} +7066,Ice_Cubic,Ice Cubic,3,660,0,10,,,,,,,,,,,{},{} +7067,Stone_Fragment,Stone Fragment,3,640,0,10,,,,,,,,,,,{},{} +7068,Burnt_Tree,Burnt Tree,3,722,0,10,,,,,,,,,,,{},{} +7069,Destroyed_Armor,Destroyed Armor,3,1042,0,10,,,,,,,,,,,{},{} +7070,Broken_Shell,Broken Shell,3,900,0,10,,,,,,,,,,,{},{} +7071,Tattered_Clothes,Tattered Clothes,3,640,0,10,,,,,,,,,,,{},{} +7072,Old_Shuriken,Old Shuriken,3,1780,0,10,,,,,,,,,,,{},{} +7073,Freya's_Jewel,Freya's Jewel,3,20,0,500,,,,,,,,,,,{},{} +7074,Thor's_Gauntlet,Thor's Gauntlet,3,20,0,500,,,,,,,,,,,{},{} +7075,Iron_Maiden,Iron Maiden,3,20,0,500,,,,,,,,,,,{},{} +7076,Wheel_of_the_Unknown,Wheel of the Unknown,3,20,0,500,,,,,,,,,,,{},{} +7077,Silver_Ornament,Silver Ornament,3,20,0,500,,,,,,,,,,,{},{} +7078,Wrath_of_Valkyrie,Wrath of Valkyrie,3,20,0,500,,,,,,,,,,,{},{} +7079,Feather_of_Angel_Wing,Feather of Angel Wing,3,20,0,500,,,,,,,,,,,{},{} +7080,Cat_Tread,Footprints of Cat,3,20,0,500,,,,,,,,,,,{},{} +7081,Woman's_Moustache,Woman's Moustache,3,20,0,500,,,,,,,,,,,{},{} +7082,Root_of_Stone,Root of Stone,3,20,0,500,,,,,,,,,,,{},{} +7083,Spirit_of_Fish,Spirit of Fish,3,20,0,500,,,,,,,,,,,{},{} +7084,Sputum_of_Bird,Sputum of Bird,3,20,0,500,,,,,,,,,,,{},{} +7085,Sinew_of_Bear,Sinew of Bear,3,20,0,500,,,,,,,,,,,{},{} +7086,Emblem_of_the_Sun_God,Emblem of the Sun God,3,20,0,500,,,,,,,,,,,{},{} +7087,Breath_of_Spirit,Breath of Soul,3,20,0,500,,,,,,,,,,,{},{} +7088,Snow_Crystal,Snow Crystal,3,20,0,500,,,,,,,,,,,{},{} +7089,Omen_of_Tempest,Omen of Tempest,3,20,0,500,,,,,,,,,,,{},{} +7090,Ripple,Ripple,3,20,0,500,,,,,,,,,,,{},{} +7091,Billow,Billow,3,20,0,500,,,,,,,,,,,{},{} +7092,Drifting_Air,Drifting Air,3,20,0,500,,,,,,,,,,,{},{} +7093,Cogwheel,Metal Wheel,3,20,0,10,,,,,,,,,,,{},{} +7094,Fragment,Cabinet Chip,3,20,0,10,,,,,,,,,,,{},{} +7095,Metal_Fragment,Tooth Fragment,3,20,0,10,,,,,,,,,,,{},{} +7096,Lava,Hardened Lava,3,1108,0,10,,,,,,,,,,,{},{} +7097,Burning_Heart,Burning Heart,3,924,0,10,,,,,,,,,,,{},{} +7098,Live_Coal,Fire Seed,3,638,0,10,,,,,,,,,,,{},{} +7099,Worn-out_Magic_Scroll,Old Magical Circle,3,20,0,10,,,,,,,,,,,{},{} +7100,Sharp_Leaf,Sharpened Leaf,3,20,0,10,,,,,,,,,,,{},{} +7101,PecoPeco_Feather,Peco Feather,3,454,0,10,,,,,,,,,,,{},{} +7102,Nightmare,Nightmare,3,20,0,10,,,,,,,,,,,{},{} +7103,Unknown_Liquid_Bottle,Yellow Liquid Bottle,3,20,0,10,,,,,,,,,,,{},{} +7104,Fake_Angel's_Wing,Fake Angel's Wing,3,756,0,10,,,,,,,,,,,{},{} +7105,Fake_Heaven_Ring,Imitation Soul's Band,3,924,0,10,,,,,,,,,,,{},{} +7106,Antelope_Horn,Antelope Horn,3,672,0,10,,,,,,,,,,,{},{} +7107,Antelope_Skin,Antelope Skin,3,756,0,10,,,,,,,,,,,{},{} +7108,Piece_of_Shield,Broken Shield,3,20,0,10,,,,,,,,,,,{},{} +7109,Shining_Spear_Blade,Shiny Spear Tip,3,20,0,10,,,,,,,,,,,{},{} +7110,Broken_Sword,Broken Sword,3,588,0,10,,,,,,,,,,,{},{} +7111,Slick_Paper,String Paper,3,706,0,10,,,,,,,,,,,{},{} +7112,Sharp_Paper,Transparent Paper,3,906,0,10,,,,,,,,,,,{},{} +7113,Broken_Symbol_of_Pharaoh,Broken Symbol of Pharaoh,3,20,0,10,,,,,,,,,,,{},{} +7114,Masque_of_Tutankhamen,Sphinx Mask,3,20,0,10,,,,,,,,,,,{},{} +7115,Harpy_Feather,Blood Feather,3,1142,0,10,,,,,,,,,,,{},{} +7116,Harpy_Talon,Tooth of Lowblood,3,1210,0,10,,,,,,,,,,,{},{} +7117,Torn_Magic_Book,Torn Spell Book,3,20,0,10,,,,,,,,,,,{},{} +7118,Torn_Scroll,Torn Scroll,3,20,0,10,,,,,,,,,,,{},{} +7119,Bacillus,Hypha Body,3,1024,0,10,,,,,,,,,,,{},{} +7120,Burning_Horseshoe,Burning Horseshoe,3,822,0,10,,,,,,,,,,,{},{} +7121,Honey_Pot,Honey Jar,3,622,0,10,,,,,,,,,,,{},{} +7122,Burning_Hair,Hot Feather,3,974,0,10,,,,,,,,,,,{},{} +7123,Dragon_Skin,Dragon Skin,3,1024,0,10,,,,,,,,,,,{},{} +7124,Sand_Clump,Sand Lump,3,706,0,10,,,,,,,,,,,{},{} +7125,Scorpion_Claw,Crab Shot,3,706,0,10,,,,,,,,,,,{},{} +7126,Large_Jellopy,Large Jellopy,3,840,0,10,,,,,,,,,,,{},{} +7127,Alcohol_Creation_Book,Alcohol Creation Book,3,100000,0,10,,,,,,,,,,,{},{} +7128,Bottle_Grenade_Creation_Book,Fire Bottle Creation Book,3,100000,0,10,,,,,,,,,,,{},{} +7129,Acid_Bottle_Creation_Book,Acid Bottle Creation Book,3,100000,0,10,,,,,,,,,,,{},{} +7130,Plant_Bottle_Creation_Book,Plant Bottle Creation Book,3,100000,0,10,,,,,,,,,,,{},{} +7131,Mine_Bottle_Creation_Book,Mine Bottle Creation Book,3,100000,0,10,,,,,,,,,,,{},{} +7132,Glistening_Coat_Creation_Book,Glistening Coat Creation Book,3,100000,0,10,,,,,,,,,,,{},{} +7133,Condensed_Potion_Creation_Book,Condensed Potion Creation Book,3,240000,0,10,,,,,,,,,,,{},{} +7134,Medicine_Bowl,Medicine Bowl,3,8,0,10,,,,,,,,,,,{},{} +7135,Bottle_Grenade,Fire Bottle,3,20,0,10,,,,,,,,,,,{},{} +7136,Acid_Bottle,Hydrobolic Acid Bottle,3,20,0,10,,,,,,,,,,,{},{} +7137,Plant_Bottle,Water Bottle,3,20,0,10,,,,,,,,,,,{},{} +7138,Marine_Sphere_Bottle,Mine Bottle,3,20,0,10,,,,,,,,,,,{},{} +7139,Glistening_Coat,Coating Wax,3,20,0,10,,,,,,,,,,,{},{} +7140,Seed_of_Life,Seed of Life,3,20,0,10,,,,,,,,,,,{},{} +7141,Morning_Dew_of_Yggdrasil,Water Flow,3,20,0,10,,,,,,,,,,,{},{} +7142,Ancient_Life,Embryo,3,20,0,10,,,,,,,,,,,{},{} +7143,Glass_Tube,Seperation Tubes,2,50000,,1000,,,,,262144,2,,,,,{ bpet; },{} +7144,Potion_Creation_Gude,Potion Making Book,3,100000,0,10,,,,,,,,,,,{},{} +7145,Ragnarok_T-shirt,Ragnarok T-Shirt,3,20,0,10,,,,,,,,,,,{},{} +7146,Vacation_Ticket,Vacation Ticket,3,20,0,10,,,,,,,,,,,{},{} +7147,Jasmine,Jasmine,3,20,0,10,,,,,,,,,,,{},{} +7148,Mother's_Letter,Mother's Letter,3,20,0,10,,,,,,,,,,,{},{} +7149,Yellow_Plate,Yellow Plate,3,220,0,10,,,,,,,,,,,{},{} +7150,A_piece_of_Bamboo,Bamboo Trunk,3,310,0,10,,,,,,,,,,,{},{} +7151,Oil_Paper,Oiled Paper,3,310,0,10,,,,,,,,,,,{},{} +7152,Glossy_Hair,Glossy Hair,3,340,0,10,,,,,,,,,,,{},{} +7153,Worn-out_Kimono,Old Kimono,3,590,0,10,,,,,,,,,,,{},{} +7154,Poisonous_Powder,Poison Powder,3,160,0,10,,,,,,,,,,,{},{} +7155,Skin_of_Poisonous_Toad,Poisonous Toad Skin,3,280,0,10,,,,,,,,,,,{},{} +7156,Broken_Shuriken,Broken Shuriken,3,470,0,10,,,,,,,,,,,{},{} +7157,Black_Mask,Black Mask,3,20,0,10,,,,,,,,,,,{},{} +7158,Broken_Liquor_Bottle,Broken Liquor Bottle,3,160,0,10,,,,,,,,,,,{},{} +7159,Demon's_Nose,Demon's Nose,3,400,0,10,,,,,,,,,,,{},{} +7160,Passport_From_King,Passport From King,3,20,0,10,,,,,,,,,,,{},{} +7161,Skin_of_the_Black_Bear,Skin of the Black Bear,3,384,0,10,,,,,,,,,,,{},{} +7162,Piece_of_Cloud,Piece of Cloud,3,390,0,10,,,,,,,,,,,{},{} +7163,Hard_Antennae,Hard Antennae,3,570,0,10,,,,,,,,,,,{},{} +7164,Very_Hard_Peach,Very Hard Peach,3,400,0,10,,,,,,,,,,,{},{} +7165,Etherial_Winged_Clothing,Etherial Winged Clothing,3,650,0,10,,,,,,,,,,,{},{} +7166,Soft_Silk_Fabric,Soft Silk Fabric,3,1200,0,10,,,,,,,,,,,{},{} +7167,Strange_Piece_of_Iron,Strange Piece of Iron,3,430,0,10,,,,,,,,,,,{},{} +7168,Big_Wing_of_Butterfly,Big Wing of Butterfly,3,614,0,10,,,,,,,,,,,{},{} +7169,Tae_Guk_Tablet,Tae Guk Tablet,3,20,0,10,,,,,,,,,,,{},{} +7170,Tuxedo,Tuxedo,5,43000,0,10,,0,,0,10477566,1,16,,0,0,{},{ changebase 22; } +7171,Skin_of_Panther,Skin of Panther,3,282,0,10,,,,,,,,,,,{},{} +7172,Claw_of_Panther,Claw of Panther,3,290,0,10,,,,,,,,,,,{},{} +7173,Bun_Buster_Bag,Bun Buster Bag,3,20,0,10,,,,,,,,,,,{},{} +7174,Wrapping_Thread,Wrapping Thread,3,20,0,10,,,,,,,,,,,{},{} +7175,Wrapper,Wrapper,3,20,0,10,,,,,,,,,,,{},{} +7176,King's_Proof_Document,King's Proof Document,3,20,0,10,,,,,,,,,,,{},{} +7177,Piece_of_Starlight's_Sorrow,Piece of Starlight's Sorrow,3,20,0,10,,,,,,,,,,,{},{} +7178,Starlight's_Sorrow,Starlight's Sorrow,3,20,0,10,,,,,,,,,,,{},{} +7179,Donation_Ticket,Donation Ticket,3,20,0,10,,,,,,,,,,,{},{} +7180,Letter_of_Introduction,Letter of Introduction,3,20,0,10,,,,,,,,,,,{},{} +7181,Commodity_Receipt,Commodity Receipt,3,20,0,10,,,,,,,,,,,{},{} +7182,Cacao,Cacao,3,200,0,20,,,,,,,,,,,{},{} +7183,Letter_of_Younger_Sister,Letter of Younger Sister,3,20,0,10,,,,,,,,,,,{},{} +7184,Piano_Key,Piano Key,3,20,0,10,,,,,,,,,,,{},{} +7185,Quiz_Participation_Ticket,Quiz Participation Ticket,3,20,0,10,,,,,,,,,,,{},{} +7186,Thin_Trunk,Thin Trunk,3,20,0,10,,,,,,,,,,,{},{} +7187,Festival_Mask,Festival Mask,3,20,0,10,,,,,,,,,,,{},{} +7188,Brown_Root,Brown_Root,3,20,0,10,,,,,,,,,,,{},{} +7189,Wooden_Heart,Wooden Heart,3,20,0,10,,,,,,,,,,,{},{} +7190,Hard_Back_Shell,Hard Back Shell,3,20,0,10,,,,,,,,,,,{},{} +7191,Paper_Lantern,Paper Lantern,3,20,0,10,,,,,,,,,,,{},{} +7192,Pin_Wheel,Pin Wheel,3,20,0,10,,,,,,,,,,,{},{} +7193,Sprout,Sprout,3,20,0,10,,,,,,,,,,,{},{} +7194,Soft_Grass_Leaf,Soft Grass Leaf,3,20,0,10,,,,,,,,,,,{},{} +7195,Slingshot,Slingshot,3,20,0,10,,,,,,,,,,,{},{} +7196,Shoulder_Guard,Shoulder Guard,3,20,0,10,,,,,,,,,,,{},{} +7197,Durable_Vine,Durable Vine,3,20,0,10,,,,,,,,,,,{},{} +7198,Huge_Leaf,Huge Leaf,3,20,0,10,,,,,,,,,,,{},{} +7199,Hieroglyphic,Hieroglyphic,3,20,0,10,,,,,,,,,,,{},{} +7200,Elastic_Band,Elastic Band,3,20,0,10,,,,,,,,,,,{},{} +7201,Log,Log,3,20,0,10,,,,,,,,,,,{},{} +7202,Insect_Pinchers,Insect Pinchers,3,20,0,10,,,,,,,,,,,{},{} +7203,Healthy_Branch,Healthy Branch,3,20,0,10,,,,,,,,,,,{},{} +7204,Gun_Powder,Gun Powder,3,20,0,10,,,,,,,,,,,{},{} +7205,Black_Piece_of_Cloth,Black Piece of Cloth,3,20,0,10,,,,,,,,,,,{},{} +7206,Cat_Doll,Black Cat Doll,3,20,0,10,,,,,,,,,,,{},{} +7207,Old_Mantle,Old Mantle,3,20,0,10,,,,,,,,,,,{},{} +7208,Rusted_Knife,Rusted Knife,3,20,0,10,,,,,,,,,,,{},{} +7209,Dullahan's_Helm,Dullahan's Helm,3,20,0,10,,,,,,,,,,,{},{} +7210,Piece_of_Dullahan's_Armor,Dullahan's Armor Piece,3,20,0,10,,,,,,,,,,,{},{} +7211,Rosetta_Stone_Fragment,Rosetta Stone Fragment,3,20,0,10,,,,,,,,,,,{},{} +7212,Hanging_Doll,Hanging Doll,3,20,0,10,,,,,,,,,,,{},{} +7213,Pin_Cusion,Pin Cusion,3,20,0,10,,,,,,,,,,,{},{} +7214,Bat_Cage,Bat Cage,3,20,0,10,,,,,,,,,,,{},{} +7215,Broken_Needle,Broken Needle,3,20,0,10,,,,,,,,,,,{},{} +7216,Red_Scarf,Red Scarf,3,20,0,10,,,,,,,,,,,{},{} +7217,Spool_of_Thread,Spool of Thread,3,20,0,10,,,,,,,,,,,{},{} +7218,Rotted_Rope,Rotted Rope,3,20,0,10,,,,,,,,,,,{},{} +7219,Striped_Socks,Striped Socks,3,20,0,10,,,,,,,,,,,{},{} +7220,Ectoplasm,Ectoplasm,3,20,0,10,,,,,,,,,,,{},{} +7221,Chains,Chains,3,20,0,10,,,,,,,,,,,{},{} +7222,Old_Tree_Branch,Old Tree Branch,3,20,0,10,,,,,,,,,,,{},{} +7223,Ruined_Self_Portrait,Ruined Self Portrait,3,20,0,10,,,,,,,,,,,{},{} +7224,Philosophers_Stone,Philosopher's Stone,3,20,0,10,,,,,,,,,,,{},{} +7225,Silk_Lantern,Silk Lantern,3,20,0,10,,,,,,,,,,,{},{} +7226,Hallucination_Pill,Hallucination Pill,3,20,0,10,,,,,,,,,,,{},{} +7227,TCG_Card,TCG Card,3,20,0,10,,,,,,,,,,,{},{} +7228,Gold_Nugget,Gold Nugget,3,20,0,300,,,,,,,,,,,{},{} +7229,Iron_Nugget,Iron Nugget,3,20,0,300,,,,,,,,,,,{},{} +7230,Silver_Nugget,Silver Nugget,3,20,0,30,,,,,,,,,,,{},{} +7231,Gold_Ore,Gold Ore,3,20,0,150,,,,,,,,,,,{},{} +7232,Silver_Ore,Silver Ore,3,20,0,150,,,,,,,,,,,{},{} +7233,Mysterious_Ore,Mysterious Ore,3,20,0,150,,,,,,,,,,,{},{} + +// RWC Reward items +7234,Spirit_of_Guild,Spirit of Guild,3,20,0,10,,,,,,,,,,,{},{} +7235,Spirit_of_Assault,Spirit of Assault,3,20,0,10,,,,,,,,,,,{},{} +7236,Spirit_of_Defense,Spirit of Defense,3,20,0,10,,,,,,,,,,,{},{} +7237,Spirit_of_Cooperation,Spirit of Cooperation,3,20,0,10,,,,,,,,,,,{},{} +7238,Spirit_of_Harmony,Spirit of Harmony,3,20,0,10,,,,,,,,,,,{},{} +7239,Spirit_of_Advancement,Spirit of Advancement,3,20,0,10,,,,,,,,,,,{},{} +7240,Spirit_of_Trust,Spirit of Trust,3,20,0,10,,,,,,,,,,,{},{} +7241,Spirit_of_Concentration,Spirit of Concentration,3,20,0,10,,,,,,,,,,,{},{} +7242,Spirit_of_Unity,Spirit of Unity,3,20,0,10,,,,,,,,,,,{},{} +7243,Spirit_of_Integrity,Spirit of Integrity,3,20,0,10,,,,,,,,,,,{},{} +7244,Spirit_of_Communion,Spirit of Communion,3,20,0,10,,,,,,,,,,,{},{} +7245,Spirit_of_Friendship,Spirit of Friendship,3,20,0,10,,,,,,,,,,,{},{} +7246,Spirit_of_Peace,Spirit of Peace,3,20,0,10,,,,,,,,,,,{},{} +7247,Spirit_of_Nature,Spirit of Nature,3,20,0,10,,,,,,,,,,,{},{} +7248,Spirit_of_Fame,Spirit of Fame,3,20,0,10,,,,,,,,,,,{},{} +7249,Spirit_of_Contribution,Spirit of Contribution,3,20,0,10,,,,,,,,,,,{},{} +7250,Spirit_of_Glory,Spirit of Glory,3,20,0,10,,,,,,,,,,,{},{} +7251,Spirit_of_Victory,Spirit of Victory,3,20,0,10,,,,,,,,,,,{},{} + +//Gonryun Items +7252,Chinese_Medicine,Chinese Medicine,3,20,0,10,,,,,,,,,,,{},{} +7253,Golden_Flag,Golden Flag,3,20,0,10,,,,,,,,,,,{},{} +7254,Digitally_Printed_Ticket,Digitally Printed Ticket,3,20,0,10,,,,,,,,,,,{},{} +7262,Paper_Fan,Paper Fan,3,233,0,,,,,,,,,,,,{},{} +7263,Cat's_Eye,Cat's-Eye,3,20,477,10,,,,,,,,,,,{},{} +7264,Dried_Sand,Dried Sand,3,20,161,10,,,,,,,,,,,{},{} +7265,Dragon_Horn,Dragon Horn,3,20,0,10,,,,,,,,,,,{},{} +7266,Dragon_Teeth,Dragon Teeth,3,218,0,,,,,,,,,,,,{},{} +7267,Tigerskin_Underwear,Tigerskin Underwear,3,20,107,10,,,,,,,,,,,{},{} +7268,Ghost_Doll,Ghost Doll,3,20,605,10,,,,,,,,,,,{},{} +7269,Baby_Bib,Baby Bib,3,20,0,10,,,,,,,,,,,{},{} +7270,Baby_Bottle,Baby Bottle,3,20,0,,,,,,,,,,,,{},{} +7271,Novice_Statue,Novice Statue,3,20,0,10,,,,,,,,,,,{},{} +7272,Dumpling_Doll,Dumpling Doll,3,20,0,10,,,,,,,,,,,{},{} +7273,RWC_Necklace,RWC_Necklace,3,20,0,10,,,,,,,,,,,{},{} +7274,Ancient_Language_Book,Ancient_Language_Book,3,20,0,10,,,,,,,,,,,{},{} +7275,Ancient_Language_Document,Ancient_Language_Document,3,20,0,10,,,,,,,,,,,{},{} +7276,Picture_Letter,Picture Letter,3,20,0,10,,,,,,,,,,,{},{} +7277,Munak_Doll,Munak Doll,3,20,0,10,,,,,,,,,,,{},{} +7278,Welfare_Letter,Welfare Letter,3,20,0,10,,,,,,,,,,,{},{} +7279,Vita_500_Bottlecap,Vita 500 Bottlecap,3,20,0,10,,,,,,,,,,,{},{} +7280,Quiz_Participation_Certificate_1,QP Certificate 1,3,20,0,10,,,,,,,,,,,{},{} +7281,Quiz_Participation_Certificate_2,QP Certificate 2,3,20,0,10,,,,,,,,,,,{},{} +7282,Quiz_Participation_Certificate_3,QP Certificate 3,3,20,0,10,,,,,,,,,,,{},{} +7283,Quiz_Participation_Certificate_4,QP Certificate 4,3,20,0,10,,,,,,,,,,,{},{} +7284,Quiz_Participation_Certificate_5,QP Certificate 5,3,20,0,10,,,,,,,,,,,{},{} + +// 11/09(Ayothana) Items +7285,Sacred_Wool_Charm,Sacred_Wool_Charm,3,20,10,0,,,,,,,,,,,{},{},, +7286,Red_Chili,Red_Chili,3,20,10,0,,,,,,,,,,,{},{},, +7287,Sacred_Wool_Charm_2,Sacred_Wool_Charm_2,3,20,10,0,,,,,,,,,,,{},{},, +7288,Engagement_Ring,Engagement_Ring,3,20,10,0,,,,,,,,,,,{},{},, +7289,Olivite,Olivite,3,20,100,0,,,,,,,,,,,{},{},, +7290,Gold_Mica,Gold_Mica,3,20,100,0,,,,,,,,,,,{},{},, +7291,Agate,Agate,3,20,100,0,,,,,,,,,,,{},{},, +7292,White_Mica,White_Mica,3,20,100,0,,,,,,,,,,,{},{},, +7293,Rose_Quartz,Rose_Quartz,3,20,100,0,,,,,,,,,,,{},{},, +7294,Turquoise,Turquoise,3,20,100,0,,,,,,,,,,,{},{},, +7295,Citrine,Citrine,3,20,100,0,,,,,,,,,,,{},{} +7296,Augite,Augite,3,20,100,0,,,,,,,,,,,{},{},, +7297,Black_Mica,Black_Mica,3,20,100,0,,,,,,,,,,,{},{},, +7298,Leaf_Cloth,Leaf_Cloth,3,20,10,0,,,,,,,,,,,{},{},, +7299,Bamboo_Basket,Bamboo_Basket,3,20,10,0,,,,,,,,,,,{},{},, +7300,Jeweled_Ore,Jeweled_Ore,3,20,10,0,,,,,,,,,,,{},{} +7301,Knife_Decoration,Knife_Decoration,3,20,10,0,,,,,,,,,,,{},{},, +7302,Krathong,Krathong,3,20,10,0,,,,,,,,,,,{},{},, + +7500,THG_Membership,THG Membership,3,20,0,10,,,,,,,,,,,{},{} +7501,Token_Bag,Token Bag,3,20,0,10,,,,,,,,,,,{},{} + +// Pet Eggs +//=================================================================== +9001,Poring_Egg,Poring Egg,7,20,0,0,,,,,,,,,,,{},{} +9002,Drops_Egg,Drops Egg,7,20,0,0,,,,,,,,,,,{},{} +9003,Poporing_Egg,Poporing Egg,7,20,0,0,,,,,,,,,,,{},{} +9004,Lunatic_Egg,Lunatic Egg,7,20,0,0,,,,,,,,,,,{},{} +9005,Picky_Egg,Picky Egg,7,20,0,0,,,,,,,,,,,{},{} +9006,Chonchon_Egg,Chonchon Egg,7,20,0,0,,,,,,,,,,,{},{} +9007,Steel_Chonchon_Egg,Steel Chonchon Egg,7,20,0,0,,,,,,,,,,,{},{} +9008,Hunter_Fly_Egg,Hunter Fly Egg,7,20,0,0,,,,,,,,,,,{},{} +9009,Savage_Babe_Egg,Savage Babe Egg,7,20,0,0,,,,,,,,,,,{},{} +9010,Baby_Desert_Wolf_Egg,Baby Desert Wolf Egg,7,20,0,0,,,,,,,,,,,{},{} +9011,Rocker_Egg,Rocker Egg,7,20,0,0,,,,,,,,,,,{},{} +9012,Spore_Egg,Spore Egg,7,20,0,0,,,,,,,,,,,{},{} +9013,Poison_Spore_Egg,Poison Spore Egg,7,20,0,0,,,,,,,,,,,{},{} +9014,PecoPeco_Egg,PecoPeco Egg,7,20,0,0,,,,,,,,,,,{},{} +9015,Smokie_Egg,Smokie Egg,7,20,0,0,,,,,,,,,,,{},{} +9016,Yoyo_Egg,Yoyo Egg,7,20,0,0,,,,,,,,,,,{},{} +9017,Orc_Warrior_Egg,Orc Warrior Egg,7,20,0,0,,,,,,,,,,,{},{} +9018,Munak_Egg,Munak Egg,7,20,0,0,,,,,,,,,,,{},{} +9019,Dokkaebi_Egg,Dokkaebi Egg,7,20,0,0,,,,,,,,,,,{},{} +9020,Sohee_Egg,Sohee Egg,7,20,0,0,,,,,,,,,,,{},{} +9021,Isis_Egg,Isis Egg,7,20,0,0,,,,,,,,,,,{},{} +9022,Green_Petite_Egg,Green Petite Egg,7,20,0,0,,,,,,,,,,,{},{} +9023,Deviruchi_Egg,Deviruchi Egg,7,20,0,0,,,,,,,,,,,{},{} +9024,Bapho_Jr._Egg,Bapho Jr. Egg,7,20,0,0,,,,,,,,,,,{},{} +9025,Bongun_Egg,Bongun Egg,7,20,0,0,,,,,,,,,,,{},{} +9026,Alice_Egg,Alice Egg,7,20,0,0,,,,,,,,,,,{},{} +9027,Zherlthsh_Egg,Zherlthsh Egg,7,20,0,0,,,,,,,,,,,{},{} +9028,test_Egg,Test Egg,7,20,0,0,,,,,,,,,,,{},{} +9029,test_Egg_,Test Egg,7,20,0,0,,,,,,,,,,,{},{} + +// Pet Accessories +//=================================================================== +10001,Skull_Helm,Skull Helm,8,20,0,0,,,,,,,,,,,{},{} +10002,Monster_Oxygen_Mask,Monster Oxygen Mask,8,20,0,0,,,,,,,,,,,{},{} +10003,Transparent_Head_Protector,Transparent Headgear,8,20,0,0,,,,,,,,,,,{},{} +10004,Pacifier,Pacifier,8,20,0,0,,,,,,,,,,,{},{} +10005,Wig,Wig,8,20,0,0,,,,,,,,,,,{},{} +10006,Queen's_Hair_Ornament,Queen's Hair Ornament,8,20,0,0,,,,,,,,,,,{},{} +10007,Silk_Ribbon,Silk Ribbon,8,20,0,0,,,,,,,,,,,{},{} +10008,Punisher,Punisher,8,20,0,0,,,,,,,,,,,{},{} +10009,Wild_Flower,Wild Flower,8,20,0,0,,,,,,,,,,,{},{} +10010,Battered_Pot,Battered Pot,8,20,0,0,,,,,,,,,,,{},{} +10011,Stellar_Hairpin,Stellar Hairpin,8,20,0,0,,,,,,,,,,,{},{} +10012,Tiny_Egg_Shell,Tiny Egg Shell,8,20,0,0,,,,,,,,,,,{},{} +10013,Backpack,Backpack,8,1500,0,0,,,,,,,,,,,{},{} +10014,Rocker_Glasses,Rocker Glasses,8,2000,0,0,,,,,,,,,,,{},{} +10015,Green_Lace,Green Lace,8,20,0,0,,,,,,,,,,,{},{} +10016,Golden_Bell,Golden Bell,8,20,0,0,,,,,,,,,,,{},{} +10017,Bark_Shorts,Bark Shorts,8,20,0,0,,,,,,,,,,,{},{} +10018,Monkey_Circlet,Monkey Circlet,8,20,0,0,,,,,,,,,,,{},{} +10019,Red_Muffler,Red Muffler,8,20,0,0,,,,,,,,,,,{},{} +10020,Sword_of_Chinese_Exorcist,Sword of Chinese Exorcist,8,20,0,0,,,,,,,,,,,{},{} + +// History books +//=================================================================== +11000,Prontera_History_Book,Prontera History Book,3,20,0,0,,,,,,,,,,,{},{} +11001,Izlude_History_Book,Izlude History Book,3,20,0,0,,,,,,,,,,,{},{} +11002,Yuno_History_Book,Yuno History Book,3,20,0,0,,,,,,,,,,,{},{} +11003,Geffen_History_Book,Geffen History Book,3,20,0,0,,,,,,,,,,,{},{} +11004,Aldebaran_History_Book,Aldebaran History Book,3,20,0,0,,,,,,,,,,,{},{} +11005,Alberta_History_Book,Alberta History Book,3,20,0,0,,,,,,,,,,,{},{} +11006,Payon_History_Book,Payon History Book,3,20,0,0,,,,,,,,,,,{},{} +11007,History_Book,Unknown Item,3,20,0,0,,,,,,,,,,,{},{} +11009,History_Book,Unknown Item,3,20,0,0,,,,,,,,,,,{},{} +11010,Archer_Village_History_Book,Unknown Item,3,20,0,0,,,,,,,,,,,{},{} +11011,Lutie_History_Book,Luite History Book,3,20,0,0,,,,,,,,,,,{},{} +11012,Jawaii_History_Book,Jawaii History Book,3,20,0,0,,,,,,,,,,,{},{} +11013,Gonryun_History_Book,Gonryun History Book,3,20,0,0,,,,,,,,,,,{},{} +11014,Mjolnir_History_Book,Mjolnir History Book,3,20,0,0,,,,,,,,,,,{},{} +11015,Amatsu_History_Book,Amatsu History Book,3,20,0,0,,,,,,,,,,,{},{} +11016,Umbala_History_Book,Umbala History Book,3,20,0,0,,,,,,,,,,,{},{} +11017,Nifleheim_History_Book,Nifflheim History Book,3,20,0,0,,,,,,,,,,,{},{} +11018,Morroc_History_Book,Morroc History Book,3,20,0,0,,,,,,,,,,,{},{} +11019,Comodo_History_Book,Comodo History Book,3,20,0,0,,,,,,,,,,,{},{} +11020,Louyang_History_Book,Louyang History Book,3,20,0,0,,,,,,,,,,,{},{} diff --git a/db/skill_nocast_db.txt b/db/skill_nocast_db.txt index 5159396a8..e27ae3ab7 100644 --- a/db/skill_nocast_db.txt +++ b/db/skill_nocast_db.txt @@ -1,17 +1,17 @@ -// -// -// Mode: -// 1 - Cannot be used in normal maps -// 2 - Cannot be used in PvP maps -// 4 - Cannot be used in GvG maps -// 8 - Cannot be used when WoE is on -// 16 - Cannot be used in PK Mode maps -// Example: 8,6 = Endure cannot be used in PvP and GvG maps (2+4) -8,12 -26,12 -27,12 -87,12 -150,12 -361,12 -362,12 +// +// +// Mode: +// 1 - Cannot be used in normal maps +// 2 - Cannot be used in PvP maps +// 4 - Cannot be used in GvG maps +// 8 - Cannot be used when WoE is on +// 16 - Cannot be used in PK Mode maps +// Example: 8,6 = Endure cannot be used in PvP and GvG maps (2+4) +8,12 +26,12 +27,12 +87,12 +150,12 +361,12 +362,12 389,12 \ No newline at end of file diff --git a/doc/effect_list.txt b/doc/effect_list.txt index d8ec0cafb..715a94a39 100644 --- a/doc/effect_list.txt +++ b/doc/effect_list.txt @@ -1,360 +1,360 @@ -Effect list - #'s I found while testing, lots of possible advanced class effects we missed -(mixed old effect list of valaris and spira's new list...) - -0-5. Attack Display -6. Being Warped -7. Being Healed -8. Yellow Ripple Effect -9. Different Type of Heal? -10. Mammomite -11. Endure -12. Yellow cast aura -13. Blue Box -14. Blue heal? Blue pot? -15. Soul Strike -16. Hide animation -17. Magnum Break -18. Steal -19. Invalid -20. Envenom/Poison -21. Slow Poison? (Envenom In Blue) -22. Sight -23. Stone Curse -24. FireBall -25. FireWall -26. Nothing? -27. Frost Driver Cast -28. Frost Driver Hitting -29. Lightning Bolt -30. ThunderStorm -31. Bubbles Appearing From The Character? -32. Explosion -33. Ruwach -34. Warp out aura (blue) -35. Casting Warp portal (blue) -36. Warp portal (blue) -37. Agi up -38. Agi down -39. Something being made -40. Cross thing (paladin skill?) -41. Angelus bell -42. Blessing angels -43. Dex + Agi up -44. Little fog smoke. -45. Faint little ball things. -46. Sand? -47. Torch -48. Circle of blue flat things -49. Firebolt/wall hits -50. Spinning fire thing -51. Icebolt hit -52. JT Hit -53. Puff of purpulish smoke? -54-59. Cast animations -60. Cast target circle -61. Warp portal (for maps) -62. Sight rasher -63. Fire sphere from some skill -64. Weird purple/red light -65. some sort of mob hit??? -66. potion effect? -67. Provoke -68. MVP -69. Skid trap sign -70. Blue purple aura thing -71. Spiral Yellow balls -72. Bigger Spiral Yellow balls -73. Blue/yellow ripple -74. Icewall sicle -75. Acolyte skill (3 singing girls) -76. Big angel that spreads wings (some aco skill) -77. Resurrection angel -78. Status recovery -79. Heaven drive spike? Earth spike? -80. Spear boomerange -81. Skill hit -82. Detect hidden -83. Another aco skill i don't know (angel comes out of green light) -84. Yet another stupid angel. -85. Lex Divinia -86. Holy water? -87. Lex aeterna -88. Another damn priest/aco skill -89. SG -90. LoV -91. Aco priest skill -92. Meteor Storm -93. JT ball -94. JT hit -95. Quagmire -96. Some sort of cool looking fire hit? -97. Firepillar hit -98. -99. Big blue light -100. Yellow ball fountain -101. Forge? -102. Hammerfall -103. Powerthrust? -104. Weapon perfection? -105. Nothing? -106. Fire explosion. -107. Fire explosion (from trap?) -108. blue smoke with noise -109. blue bubbles -110. yellow smoke (trap?) -111. some bs skill or something -117. Waterball -120. Sound effect -132. Single Grimtooth -138. Fire pillar -139. Fireworks -154. refine success -155. refine fail -156. Jobchange.str (crashes client) -157. Levelup.str (crashes client) -158. joblvup -159. Pvp circle -160. Woe circle? -161. Rain -162. Snow -163. Sakura leaves -164. nothing (npc/mob?) -165. Weird ball thing -166. turns sprite blue -167. Taming Success (crashes client) -168. Taming failed (crashes client) -169. blue light -170. explosion -171. venom dust -172. black aura -173. red aura -174. blue aura -175. yellow aura -176. purple aura -177. red aura -178. white aura -179. purple aura -180. darkness attack hit? -181. water attack hit? -182. wind attack hit -183. self destruction -184. nothing (npc/mob?) -185. nothing (npc/mob?) -186. yellow effect -187. yellow effect -188. yellow effect -189. yellow effect -190. yellow effect -191. target (piercing attack or something) -192. purple cloud hit -193. mute or something (npc skill) -194. stun attack? -195. stone curse -196. curse -197. sleep -198. nothing (npc/mob?) -199. some weird bubble -200-203. Parts of the level 99 Aura -204-211. Healing Items Effect -212. Damage Effect (9999) -213. Shield Appears (Guard?) -214. 3 Weird Things Appear Around You (They All Look The Same) -215. Hide/Unhide? -216. 2 Red Balls shoot out -217. 2 Blue Balls shoot out -218. Concentration Potion Effect -219. Other Speed Potion -220. Berserk Potion -221. White Alien Abduction Beam -222. Defender Skill Effect (Black Circle) -223. Invalid Effect -224. White Wisp Revolving around you -225. Volcano Effect -226. Grand Cross Effect -227-230. Blank -231. Yuno Effect (Takes Alittle While) -232. Blank -233. Fog -234. Unknown To Me -235. Unknown To Me -236. Deluge Effect -237. Wind Gale Effect -238. Land Protect Effect -239. Volcano Effect 2 -240. Deluge Effect 2 -241. Wind Gale Effect 2 -242. Land Protect Effect 2 -243. Invalid Effect -244. Unknown To Me. -245. Holy Cross Effect -246. Shield Charge Effect -247. Yuno Effect 2 (Larger) -248. Status Recovery? (Shows An Angel On Top Of Your Head) -249. Shield Boomerang -250. Spear Quicken -251. Devotion -252. Reflect Shield (Yellow Circle) -259. Green Abduction Beam -260. Orange Abduction Beam -261. red aura thing -262. yellow things that shoot out -263. Yellow ground effect. -264. nothing (npc/mob?) -265. laser beam ?! -266. bunch of white shit flies out -267. gun shot! -268. money bag -269. sword thing -270. shield thing -271. armor thing -272. cape thing? -273. Outter spinning white balls. -274. flying gold -275. spit -276. stuff that flies out somewhat like crits -277. white stuff that comes out around sprite -295. frost joke -296. scream -298. fire bottle throwing -300. Chemical Protection -301. Blank -302. Demonstration Fire Effect -303. Weird Effect you turn yellow and see six lines (3 sets of 2) going slanted -304. After being warped -305. Pharmacy Success -306. Pharmacy Failed -307. Sunlight through the roof effect in Geffenia -308. Blank -309. Unknown to me -310. Unknown to me -311. Shout/Yell/Loud (Merchant Skill) Effect -312-313. Heal Effect? -314. Another Part of Warp/ Yuno Effect? -315. Newer Safety Wall (Pink Portal) -316. Another Part of Warp (The Ripple Floor Part) -317. Full Warp Effect -322. daylight -323. daylight -324. daylight -328. asura strike word -329. tripple strike -333. Orange Leaves Falling -334. blind (can stack it) -335. poison (can stack it) -336. defender shield? -337. joblvup -338. supernovice angel -341. pink warp portal -342. pink aura -343. pink heart thing (cool) -344. teleport in -346. big blue ball -347. wedding effect -349. waterfall (horizonatal) -350. waterfall (vertical) -351. sm waterfall (horizonatal) -352. sm waterfall (vertical) -353. drk waterfall (horizonatal) -354. drk waterfall (vertical) -355. drk sm waterfall (horizonatal) -356. drk sm waterfall (vertical) -358. niflheim ghost -359. niflheim bat slow -360. niflheim bat fast -361. shoots purple wave out -362. nothing? -363. valentine's day heart (wings) -364. valentine's day heart -365. falling cross -368. make you red (berserk?) -369. 2h quicken? -371. lvup -372. death -373. smoke -375. white outline around sprite -376. makes red and shoots out stuff -377. shoots out yellow shit -380. shakes screen turns you all different colors -387. spins you around shakes screen flashes white -394. big red ball around you - -403 = mind breaker -404 = spider web -405 = nothing -406 = explosion effect on the head -407 = effect that starts big and fades in to your characters head - -408. Orange Bubble Grows Around -409. Weird Poision Like Effect -410. Rainbow -411. (Usable, Just add in folder effect file called peong1.tga).errors/detoxify like. -413. nothing? -417. flash -418. red critical explosion? -419. Pulsating grey aura -420. gradual shrink char (possible minimize effect?) -421. instant minimize -422. grow back, but not all the way (baby height) -423. mega size -424. makes sprite bright -425. 4 brownish replicas of sprite fly off? -426. shakes sprites (works on player sprites!) -427. nothing? (maybe for npc/mobs) -428. yellow sparks -429. blue sparks -430. blue sparks in different direction -431. another blue spark variant -432. can't find effect\elec1.tga -433. nothing? (npc/mob?) -434. white sparks -435. can't find effect\storm2.tga (sometimes works and shows little tornado thing! -436. white shield (for one of the defense skills?) -437. blue aura (kinda like a comet!) -438. another defense aura? blue ripples. blue pulsating shield -439. can't fine effect\line3.tga -440. high priest skill angel? Angelus type effect but with a cross -441. another cast aura -442. nothing? (npc/mob?) -443. nothing? (npc/mob?) -444. white lines that fire out -445. your sprite flies up and disappears sometime sprite errors -446. your sprite falls down -447. nothing? (npc/mob?) -448. nothing? (npc/mob?) -449. turns you bright blue real quick -450. darkcross effect (black grand cross) -451. red soul strike?! (high wiz skill?) -452. A jupital thunder type of effect, electricity pulsates around your char -453. Smoke (electricity type) surrounds char, can move and effect is still their. -454. black cast aura -455. red electric that covers body -456. looks like wind rushes up (reminds me of agi up but slower, bigger, and grey) -457. forces attack animation. makes a dash like stance -458. causes sprite to jiggle. char pulsates and distorts (like 426) -459. effect\storm2.tga error, causes player sprite to spin around and you see a faint tornado aura -460. same as 459. -461. faint tornado aura -462. same as 459. -463. same as 459. -464. same as 459. -465. same as 459. -466. nothing (npc/mob?) -467. sprite error (effect\hanmoon1.tga?) -468. sprite error (effect\hanmoon2.tga?) -469. sprite error (effect\hanmoon3.tga?) -470. sprite error (effect\hanmoon4.tga?) -471. sprite error (effect\hanmoon5.tga?) -472. sprite error (effect\hanmoon6.tga?) -473. sprite error (effect\hanmoon7.tga?) -474. nothing (npc/mob?) - -475-484 = slow fade to blind, each one continues to make it smaller and smaller -485 = white critical explosion thing -486 = blue critical explosion thing -487 = black portal ground effect -488 = orange spikey aura that stretches up to fire type points -489 = yellow/gold of 488 -489 = blue version -491 = a small expoision above the head -492 = creates 1 small venom poison type of point on the ground -493+ = invalid effects +Effect list - #'s I found while testing, lots of possible advanced class effects we missed +(mixed old effect list of valaris and spira's new list...) + +0-5. Attack Display +6. Being Warped +7. Being Healed +8. Yellow Ripple Effect +9. Different Type of Heal? +10. Mammomite +11. Endure +12. Yellow cast aura +13. Blue Box +14. Blue heal? Blue pot? +15. Soul Strike +16. Hide animation +17. Magnum Break +18. Steal +19. Invalid +20. Envenom/Poison +21. Slow Poison? (Envenom In Blue) +22. Sight +23. Stone Curse +24. FireBall +25. FireWall +26. Nothing? +27. Frost Driver Cast +28. Frost Driver Hitting +29. Lightning Bolt +30. ThunderStorm +31. Bubbles Appearing From The Character? +32. Explosion +33. Ruwach +34. Warp out aura (blue) +35. Casting Warp portal (blue) +36. Warp portal (blue) +37. Agi up +38. Agi down +39. Something being made +40. Cross thing (paladin skill?) +41. Angelus bell +42. Blessing angels +43. Dex + Agi up +44. Little fog smoke. +45. Faint little ball things. +46. Sand? +47. Torch +48. Circle of blue flat things +49. Firebolt/wall hits +50. Spinning fire thing +51. Icebolt hit +52. JT Hit +53. Puff of purpulish smoke? +54-59. Cast animations +60. Cast target circle +61. Warp portal (for maps) +62. Sight rasher +63. Fire sphere from some skill +64. Weird purple/red light +65. some sort of mob hit??? +66. potion effect? +67. Provoke +68. MVP +69. Skid trap sign +70. Blue purple aura thing +71. Spiral Yellow balls +72. Bigger Spiral Yellow balls +73. Blue/yellow ripple +74. Icewall sicle +75. Acolyte skill (3 singing girls) +76. Big angel that spreads wings (some aco skill) +77. Resurrection angel +78. Status recovery +79. Heaven drive spike? Earth spike? +80. Spear boomerange +81. Skill hit +82. Detect hidden +83. Another aco skill i don't know (angel comes out of green light) +84. Yet another stupid angel. +85. Lex Divinia +86. Holy water? +87. Lex aeterna +88. Another damn priest/aco skill +89. SG +90. LoV +91. Aco priest skill +92. Meteor Storm +93. JT ball +94. JT hit +95. Quagmire +96. Some sort of cool looking fire hit? +97. Firepillar hit +98. +99. Big blue light +100. Yellow ball fountain +101. Forge? +102. Hammerfall +103. Powerthrust? +104. Weapon perfection? +105. Nothing? +106. Fire explosion. +107. Fire explosion (from trap?) +108. blue smoke with noise +109. blue bubbles +110. yellow smoke (trap?) +111. some bs skill or something +117. Waterball +120. Sound effect +132. Single Grimtooth +138. Fire pillar +139. Fireworks +154. refine success +155. refine fail +156. Jobchange.str (crashes client) +157. Levelup.str (crashes client) +158. joblvup +159. Pvp circle +160. Woe circle? +161. Rain +162. Snow +163. Sakura leaves +164. nothing (npc/mob?) +165. Weird ball thing +166. turns sprite blue +167. Taming Success (crashes client) +168. Taming failed (crashes client) +169. blue light +170. explosion +171. venom dust +172. black aura +173. red aura +174. blue aura +175. yellow aura +176. purple aura +177. red aura +178. white aura +179. purple aura +180. darkness attack hit? +181. water attack hit? +182. wind attack hit +183. self destruction +184. nothing (npc/mob?) +185. nothing (npc/mob?) +186. yellow effect +187. yellow effect +188. yellow effect +189. yellow effect +190. yellow effect +191. target (piercing attack or something) +192. purple cloud hit +193. mute or something (npc skill) +194. stun attack? +195. stone curse +196. curse +197. sleep +198. nothing (npc/mob?) +199. some weird bubble +200-203. Parts of the level 99 Aura +204-211. Healing Items Effect +212. Damage Effect (9999) +213. Shield Appears (Guard?) +214. 3 Weird Things Appear Around You (They All Look The Same) +215. Hide/Unhide? +216. 2 Red Balls shoot out +217. 2 Blue Balls shoot out +218. Concentration Potion Effect +219. Other Speed Potion +220. Berserk Potion +221. White Alien Abduction Beam +222. Defender Skill Effect (Black Circle) +223. Invalid Effect +224. White Wisp Revolving around you +225. Volcano Effect +226. Grand Cross Effect +227-230. Blank +231. Yuno Effect (Takes Alittle While) +232. Blank +233. Fog +234. Unknown To Me +235. Unknown To Me +236. Deluge Effect +237. Wind Gale Effect +238. Land Protect Effect +239. Volcano Effect 2 +240. Deluge Effect 2 +241. Wind Gale Effect 2 +242. Land Protect Effect 2 +243. Invalid Effect +244. Unknown To Me. +245. Holy Cross Effect +246. Shield Charge Effect +247. Yuno Effect 2 (Larger) +248. Status Recovery? (Shows An Angel On Top Of Your Head) +249. Shield Boomerang +250. Spear Quicken +251. Devotion +252. Reflect Shield (Yellow Circle) +259. Green Abduction Beam +260. Orange Abduction Beam +261. red aura thing +262. yellow things that shoot out +263. Yellow ground effect. +264. nothing (npc/mob?) +265. laser beam ?! +266. bunch of white shit flies out +267. gun shot! +268. money bag +269. sword thing +270. shield thing +271. armor thing +272. cape thing? +273. Outter spinning white balls. +274. flying gold +275. spit +276. stuff that flies out somewhat like crits +277. white stuff that comes out around sprite +295. frost joke +296. scream +298. fire bottle throwing +300. Chemical Protection +301. Blank +302. Demonstration Fire Effect +303. Weird Effect you turn yellow and see six lines (3 sets of 2) going slanted +304. After being warped +305. Pharmacy Success +306. Pharmacy Failed +307. Sunlight through the roof effect in Geffenia +308. Blank +309. Unknown to me +310. Unknown to me +311. Shout/Yell/Loud (Merchant Skill) Effect +312-313. Heal Effect? +314. Another Part of Warp/ Yuno Effect? +315. Newer Safety Wall (Pink Portal) +316. Another Part of Warp (The Ripple Floor Part) +317. Full Warp Effect +322. daylight +323. daylight +324. daylight +328. asura strike word +329. tripple strike +333. Orange Leaves Falling +334. blind (can stack it) +335. poison (can stack it) +336. defender shield? +337. joblvup +338. supernovice angel +341. pink warp portal +342. pink aura +343. pink heart thing (cool) +344. teleport in +346. big blue ball +347. wedding effect +349. waterfall (horizonatal) +350. waterfall (vertical) +351. sm waterfall (horizonatal) +352. sm waterfall (vertical) +353. drk waterfall (horizonatal) +354. drk waterfall (vertical) +355. drk sm waterfall (horizonatal) +356. drk sm waterfall (vertical) +358. niflheim ghost +359. niflheim bat slow +360. niflheim bat fast +361. shoots purple wave out +362. nothing? +363. valentine's day heart (wings) +364. valentine's day heart +365. falling cross +368. make you red (berserk?) +369. 2h quicken? +371. lvup +372. death +373. smoke +375. white outline around sprite +376. makes red and shoots out stuff +377. shoots out yellow shit +380. shakes screen turns you all different colors +387. spins you around shakes screen flashes white +394. big red ball around you + +403 = mind breaker +404 = spider web +405 = nothing +406 = explosion effect on the head +407 = effect that starts big and fades in to your characters head + +408. Orange Bubble Grows Around +409. Weird Poision Like Effect +410. Rainbow +411. (Usable, Just add in folder effect file called peong1.tga).errors/detoxify like. +413. nothing? +417. flash +418. red critical explosion? +419. Pulsating grey aura +420. gradual shrink char (possible minimize effect?) +421. instant minimize +422. grow back, but not all the way (baby height) +423. mega size +424. makes sprite bright +425. 4 brownish replicas of sprite fly off? +426. shakes sprites (works on player sprites!) +427. nothing? (maybe for npc/mobs) +428. yellow sparks +429. blue sparks +430. blue sparks in different direction +431. another blue spark variant +432. can't find effect\elec1.tga +433. nothing? (npc/mob?) +434. white sparks +435. can't find effect\storm2.tga (sometimes works and shows little tornado thing! +436. white shield (for one of the defense skills?) +437. blue aura (kinda like a comet!) +438. another defense aura? blue ripples. blue pulsating shield +439. can't fine effect\line3.tga +440. high priest skill angel? Angelus type effect but with a cross +441. another cast aura +442. nothing? (npc/mob?) +443. nothing? (npc/mob?) +444. white lines that fire out +445. your sprite flies up and disappears sometime sprite errors +446. your sprite falls down +447. nothing? (npc/mob?) +448. nothing? (npc/mob?) +449. turns you bright blue real quick +450. darkcross effect (black grand cross) +451. red soul strike?! (high wiz skill?) +452. A jupital thunder type of effect, electricity pulsates around your char +453. Smoke (electricity type) surrounds char, can move and effect is still their. +454. black cast aura +455. red electric that covers body +456. looks like wind rushes up (reminds me of agi up but slower, bigger, and grey) +457. forces attack animation. makes a dash like stance +458. causes sprite to jiggle. char pulsates and distorts (like 426) +459. effect\storm2.tga error, causes player sprite to spin around and you see a faint tornado aura +460. same as 459. +461. faint tornado aura +462. same as 459. +463. same as 459. +464. same as 459. +465. same as 459. +466. nothing (npc/mob?) +467. sprite error (effect\hanmoon1.tga?) +468. sprite error (effect\hanmoon2.tga?) +469. sprite error (effect\hanmoon3.tga?) +470. sprite error (effect\hanmoon4.tga?) +471. sprite error (effect\hanmoon5.tga?) +472. sprite error (effect\hanmoon6.tga?) +473. sprite error (effect\hanmoon7.tga?) +474. nothing (npc/mob?) + +475-484 = slow fade to blind, each one continues to make it smaller and smaller +485 = white critical explosion thing +486 = blue critical explosion thing +487 = black portal ground effect +488 = orange spikey aura that stretches up to fire type points +489 = yellow/gold of 488 +489 = blue version +491 = a small expoision above the head +492 = creates 1 small venom poison type of point on the ground +493+ = invalid effects diff --git a/doc/miscnotes.txt b/doc/miscnotes.txt index 4850b77f3..b74a8fba6 100644 --- a/doc/miscnotes.txt +++ b/doc/miscnotes.txt @@ -1,552 +1,552 @@ -// **************************************************** -// * Miscellaneous Notes (Added by MC Cameri) * -// **************************************************** - -// ***************************************************************** -// * Emotions that will be shown if 'int type' is one of the case. * -// ***************************************************************** -void clif_emotion(struct block_list *bl,int type); -case for 'int type': -0 = ! 10 = KO (Scissor) 20 = Hmmm 30 = Kiss 1 (R) 40 = Tsk tsk tsk (No) -1 = ? 11 = Fist (Stone) 21 = Number 1! 31 = Kiss 2 (L) 41 = Petting -2 = Music 12 = Hand (Paper) 22 = No (??) 32 = Smoking 42 = SP! (Timer) -3 = Heart 1 13 = Korean Flag 23 = OMG!! 33 = Okay 43 = Obsessed 2 (Dumb face, eyes popping) -4 = Sweat 14 = Heart 2 24 = O 34 = ... (Bugged) 44 = Come (Moving finger) -5 = Light bulb 15 = Thanks 25 = X 35 = ??? Flag 45 = Yawn (Sleepy) -6 = Annoyed 16 = Wah (Crying) 26 = Help! 36 = Evil 2 46 = Congratulations -7 = Smoke cloud 17 = Sorry 27 = Go! 37 = Obsessed 1 47 = HP! (Timer) -8 = $ 18 = Heh (Laughing) 28 = Sobbing 38 = Two Hearts -9 = ... 19 = Sweating 29 = Evil 1 39 = Tongue - -// ******************************** -// * Elemental Defense Resistance * -// ******************************** -sd->subele[0] - Neutral Property -sd->subele[1] - Water Property -sd->subele[2] - Earth Property -sd->subele[3] - Fire Property -sd->subele[4] - Wind Property -sd->subele[5] - Poison Property -sd->subele[6] - Holy Property -sd->subele[7] - Shadow Property -sd->subele[8] - Ghost Property -sd->subele[9] - Undead Property - -// *************************************** -// * Elemental Monster Attack Resistance * -// *************************************** - -sd->subrace[0] - Neutral Type -sd->subrace[1] - Undead Type -sd->subrace[2] - Brute Type -sd->subrace[3] - Plant Type -sd->subrace[4] - Insect Type -sd->subrace[5] - Fish Type -sd->subrace[6] - Demon Type -sd->subrace[7] - Demi-Human Type -sd->subrace[8] - Angel Type -sd->subrace[9] - Dragon Type -sd->subrace[10] - Boss Type #1? -sd->subrace[11] - Boss Type #2? - -// ************** -// * Misc stuff * -// ************** - -WFIFOL(fd,2)=1; - Sever Closed - -// ******************* -// * Skills List * -// ******************* -// * ID = Skill Name * -// ******************* -ID Skill Name -1 = NV_BASIC -2 = SM_SWORD -3 = SM_TWOHAND -4 = SM_RECOVERY -5 = SM_BASH -6 = SM_PROVOKE -7 = SM_MAGNUM -8 = SM_ENDURE -9 = MG_SRECOVERY -10 = MG_SIGHT -11 = MG_NAPALMBEAT -12 = MG_SAFETYWALL -13 = MG_SOULSTRIKE -14 = MG_COLDBOLT -15 = MG_FROSTDIVER -16 = MG_STONECURSE -17 = MG_FIREBALL -18 = MG_FIREWALL -19 = MG_FIREBOLT -20 = MG_LIGHTNINGBOLT -21 = MG_THUNDERSTORM -22 = AL_DP -23 = AL_DEMONBANE -24 = AL_RUWACH -25 = AL_PNEUMA -26 = AL_TELEPORT -27 = AL_WARP -28 = AL_HEAL -29 = AL_INCAGI -30 = AL_DECAGI -31 = AL_HOLYWATER -32 = AL_CRUCIS -33 = AL_ANGELUS -34 = AL_BLESSING -35 = AL_CURE -36 = MC_INCCARRY -37 = MC_DISCOUNT -38 = MC_OVERCHARGE -39 = MC_PUSHCART -40 = MC_IDENTIFY -41 = MC_VENDING -42 = MC_MAMMONITE -43 = AC_OWL -44 = AC_VULTURE -45 = AC_CONCENTRATION -46 = AC_DOUBLE -47 = AC_SHOWER -48 = TF_DOUBLE -49 = TF_MISS -50 = TF_STEAL -51 = TF_HIDING -52 = TF_POISON -53 = TF_DETOXIFY -54 = ALL_RESURRECTION -55 = KN_SPEARMASTERY -56 = KN_PIERCE -57 = KN_BRANDISHSPEAR -58 = KN_SPEARSTAB -59 = KN_SPEARBOOMERANG -60 = KN_TWOHANDQUICKEN -61 = KN_AUTOCOUNTER -62 = KN_BOWLINGBASH -63 = KN_RIDING -64 = KN_CAVALIERMASTERY -65 = PR_MACEMASTERY -66 = PR_IMPOSITIO -67 = PR_SUFFRAGIUM -68 = PR_ASPERSIO -69 = PR_BENEDICTIO -70 = PR_SANCTUARY -71 = PR_SLOWPOISON -72 = PR_STRECOVERY -73 = PR_KYRIE -74 = PR_MAGNIFICAT -75 = PR_GLORIA -76 = PR_LEXDIVINA -77 = PR_TURNUNDEAD -78 = PR_LEXAETERNA -79 = PR_MAGNUS -80 = WZ_FIREPILLAR -81 = WZ_SIGHTRASHER -83 = WZ_METEOR -84 = WZ_JUPITEL -85 = WZ_VERMILION -86 = WZ_WATERBALL -87 = WZ_ICEWALL -88 = WZ_FROSTNOVA -89 = WZ_STORMGUST -90 = WZ_EARTHSPIKE -91 = WZ_HEAVENDRIVE -92 = WZ_QUAGMIRE -93 = WZ_ESTIMATION -94 = BS_IRON -95 = BS_STEEL -96 = BS_ENCHANTEDSTONE -97 = BS_ORIDEOCON -98 = BS_DAGGER -99 = BS_SWORD -100 = BS_TWOHANDSWORD -101 = BS_AXE -102 = BS_MACE -103 = BS_KNUCKLE -104 = BS_SPEAR -105 = BS_HILTBINDING -106 = BS_FINDINGORE -107 = BS_WEAPONRESEARCH -108 = BS_REPAIRWEAPON -109 = BS_SKINTEMPER -110 = BS_HAMMERFALL -111 = BS_ADRENALINE -112 = BS_WEAPONPERFECT -113 = BS_OVERTHRUST -114 = BS_MAXIMIZE -115 = HT_SKIDTRAP -116 = HT_LANDMINE -117 = HT_ANKLESNARE -118 = HT_SHOCKWAVE -119 = HT_SANDMAN -120 = HT_FLASHER -121 = HT_FREEZINGTRAP -122 = HT_BLASTMINE -123 = HT_CLAYMORETRAP -124 = HT_REMOVETRAP -125 = HT_TALKIEBOX -126 = HT_BEASTBANE -127 = HT_FALCON -128 = HT_STEELCROW -129 = HT_BLITZBEAT -130 = HT_DETECTING -131 = HT_SPRINGTRAP -132 = AS_RIGHT -133 = AS_LEFT -134 = AS_KATAR -135 = AS_CLOAKING -136 = AS_SONICBLOW -137 = AS_GRIMTOOTH -138 = AS_ENCHANTPOISON -139 = AS_POISONREACT -140 = AS_VENOMDUST -141 = AS_SPLASHER -142 = NV_FIRSTAID -143 = NV_TRICKDEAD -144 = SM_MOVINGRECOVERY -145 = SM_FATALBLOW -146 = SM_AUTOBERSERK -147 = AC_MAKINGARROW -148 = AC_CHARGEARROW -149 = TF_SPRINKLESAND -150 = TF_BACKSLIDING -151 = TF_PICKSTONE -152 = TF_THROWSTONE -153 = MC_CARTREVOLUTION -154 = MC_CHANGECART -155 = MC_LOUD -156 = AL_HOLYLIGHT -157 = MG_ENERGYCOAT -158 = NPC_PIERCINGATT -159 = NPC_MENTALBREAKER -160 = NPC_RANGEATTACK -161 = NPC_ATTRICHANGE -162 = NPC_CHANGEWATER -163 = NPC_CHANGEGROUND -164 = NPC_CHANGEFIRE -165 = NPC_CHANGEWIND -166 = NPC_CHANGEPOISON -167 = NPC_CHANGEHOLY -168 = NPC_CHANGEDARLNESS -169 = NPC_CHANGETELEKINESIS -170 = NPC_CRITICALSLASH -171 = NPC_COMBOATTACK -172 = NPC_GUIDEATTACK -173 = NPC_SELFDESTRUCTION -174 = NPC_SPLASHATTACK -175 = NPC_SUICIDE -176 = NPC_POISON -177 = NPC_BLINDATTACK -178 = NPC_SILENCEATTACK -179 = NPC_STUNATTACK -180 = NPC_PETRIFYATTACK -181 = NPC_CURSEATTACK -182 = NPC_SLEEPATTACK -183 = NPC_RANDOMATTACK -184 = NPC_WATERATTACK -185 = NPC_GROUNDATTACK -186 = NPC_FIREATTACK -187 = NPC_WINDATTACK -188 = NPC_POISONATTACK -189 = NPC_HOLYATTACK -190 = NPC_DARKNESSATTACK -191 = NPC_TELEKINESISATTACK -192 = NPC_MAGICALATTACK -193 = NPC_METAMORPHOSIS -194 = NPC_PROVOCATION -195 = NPC_SMOKING -196 = NPC_SUMMONSLAVE -197 = NPC_EMOTION -198 = NPC_TRANSFORMATION -199 = NPC_BLOODDRAIN -200 = NPC_ENERGYDRAIN -201 = NPC_KEEPING -202 = NPC_DARKBREATH -203 = NPC_DARKBLESSING -204 = NPC_BARRIER -205 = NPC_DEFENDER -206 = NPC_LICK -207 = NPC_HALLUCINATION -208 = NPC_REBIRTH -209 = NPC_SUMMONMONSTER -210 = RG_SNATCHER -211 = RG_STEALCOIN -212 = RG_BACKSTAP -213 = RG_TUNNELDRIVE -214 = RG_RAID -215 = RG_STRIPWEAPON -216 = RG_STRIPSHIELD -217 = RG_STRIPARMOR -218 = RG_STRIPHELM -219 = RG_INTIMIDATE -220 = RG_GRAFFITI -221 = RG_FLAGGRAFFITI -222 = RG_CLEANER -223 = RG_GANGSTER -224 = RG_COMPULSION -225 = RG_PLAGIARISM -226 = AM_AXEMASTERY -227 = AM_LEARNINGPOTION -228 = AM_PHARMACY -229 = AM_DEMONSTRATION -230 = AM_ACIDTERROR -231 = AM_POTIONPITCHER -232 = AM_CANNIBALIZE -233 = AM_SPHEREMINE -234 = AM_CP_WEAPON -235 = AM_CP_SHIELD -236 = AM_CP_ARMOR -237 = AM_CP_HELM -248 = CR_TRUST -249 = CR_AUTOGUARD -250 = CR_SHIELDCHARGE -251 = CR_SHIELDBOOMERANG -252 = CR_REFLECTSHIELD -253 = CR_HOLYCROSS -254 = CR_GRANDCROSS -255 = CR_DEVOTION -256 = CR_PROVIDENCE -257 = CR_DEFENDER -258 = CR_SPEARQUICKEN -259 = MO_IRONHAND -260 = MO_SPIRITSRECOVERY -261 = MO_CALLSPIRITS -262 = MO_ABSORBSPIRITS -263 = MO_TRIPLEATTACK -264 = MO_BODYRELOCATION -265 = MO_DODGE -266 = MO_INVESTIGATE -267 = MO_FINGEROFFENSIVE -268 = MO_STEELBODY -269 = MO_BLADESTOP -270 = MO_EXPLOSIONSPIRITS -271 = MO_EXTREMITYFIST -272 = MO_CHAINCOMBO -273 = MO_COMBOFINISH -274 = SA_ADVANCEDBOOK -275 = SA_CASTCANCEL -276 = SA_MAGICROD -277 = SA_SPELLBREAKER -278 = SA_FREECAST -279 = SA_AUTOSPELL -280 = SA_FLAMELAUNCHER -281 = SA_FROSTWEAPON -282 = SA_LIGHTNINGLOADER -283 = SA_SEISMICWEAPON -284 = SA_DRAGONOLOGY -285 = SA_VOLCANO -286 = SA_DELUGE -287 = SA_VIOLENTGALE -288 = SA_LANDPROTECTOR -289 = SA_DISPELL -290 = SA_ABRACADABRA -291 = SA_MONOCELL -292 = SA_CLASSCHANGE -293 = SA_SUMMONMONSTER -294 = SA_REVERSEORCISH -295 = SA_DEATH -296 = SA_FORTUNE -297 = SA_TAMINGMONSTER -298 = SA_QUESTION -299 = SA_GRAVITY -300 = SA_LEVELUP -301 = SA_INSTANTDEATH -302 = SA_FULLRECOVERY -303 = SA_COMA -304 = BD_ADAPTATION -305 = BD_ENCORE -306 = BD_LULLABY -307 = BD_RICHMANKIM -308 = BD_ETERNALCHAOS -309 = BD_DRUMBATTLEFIELD -310 = BD_RINGNIBELUNGEN -311 = BD_ROKISWEIL -312 = BD_INTOABYSS -313 = BD_SIEGFRIED -315 = BA_MUSICALLESSON -316 = BA_MUSICALSTRIKE -317 = BA_DISSONANCE -318 = BA_FROSTJOKE -319 = BA_WHISTLE -320 = BA_ASSASSINCROSS -321 = BA_POEMBRAGI -322 = BA_APPLEIDUN -323 = DC_DANCINGLESSON -324 = DC_THROWARROW -325 = DC_UGLYDANCE -326 = DC_SCREAM -327 = DC_HUMMING -328 = DC_DONTFORGETME -329 = DC_FORTUNEKISS -330 = DC_SERVICEFORYOU -334 = WE_MALE -335 = WE_FEMALE -336 = WE_CALLPARTNER -355 = LK_AURABLADE -356 = LK_PARRYING -357 = LK_CONCENTRATION -358 = LK_TENSIONRELAX -359 = LK_BERSERK -361 = HP_ASSUMPTIO -362 = HP_BASILICA -363 = HP_MEDITATIO -364 = HW_SOULDRAIN -365 = HW_MAGICCRASHER -366 = HW_MAGICPOWER -367 = PA_PRESSURE -368 = PA_SACRIFICE -369 = PA_GOSPEL -370 = CH_PALMSTRIKE -371 = CH_TIGERFIST -372 = CH_CHAINCRUSH -373 = PF_HPCONVERSION -374 = PF_SOULCHANGE -375 = PF_SOULBURN -376 = ASC_KATAR -377 = ASC_HALLUCINATION -378 = ASC_EDP -379 = ASC_BREAKER -380 = SN_SIGHT -381 = SN_FALCONASSAULT -382 = SN_SHARPSHOOTING -383 = SN_WINDWALK -384 = WS_MELTDOWN -385 = WS_CREATECOIN -386 = WS_CREATENUGGET -387 = WS_CARTBOOST -388 = WS_SYSTEMCREATE -389 = ST_CHASEWALK -390 = ST_REJECTSWORD -392 = CR_ALCHEMY -393 = CR_SYNTHESISPOTION -394 = CG_ARROWVULCAN -395 = CG_MOONLIT -396 = CG_MARIONETTE -397 = LK_SPIRALPIERCE -398 = LK_HEADCRUSH -399 = LK_JOINTBEAT -400 = HW_NAPALMVULCAN -401 = CH_SOULCOLLECT -402 = PF_MINDBREAKER -403 = PF_MEMORIZE -404 = PF_FOGWALL -405 = PF_SPIDERWEB -406 = ASC_METEORASSAULT -407 = ASC_CDP -408 = WE_BABY -409 = WE_CALLPARENT -410 = WE_CALLBABY -411 = TK_RUN -412 = TK_READYSTORM -413 = TK_STORMKICK -414 = TK_READYDOWN -415 = TK_DOWNKICK -416 = TK_READYTURN -417 = TK_TURNKICK -418 = TK_READYCOUNTER -419 = TK_COUNTER -420 = TK_DODGE -421 = TK_JUMPKICK -422 = TK_HPTIME -423 = TK_SPTIME -424 = TK_POWER -425 = TK_SEVENWIND -426 = TK_HIGHJUMP -427 = SG_FEEL -428 = SG_SUN_WARM -429 = SG_MOON_WARM -430 = SG_STAR_WARM -431 = SG_SUN_COMFORT -432 = SG_MOON_COMFORT -433 = SG_STAR_COMFORT -434 = SG_HATE -435 = SG_SUN_ANGER -436 = SG_MOON_ANGER -437 = SG_STAR_ANGER -438 = SG_SUN_BLESS -439 = SG_MOON_BLESS -440 = SG_STAR_BLESS -441 = SG_DEVIL -442 = SG_FRIEND -443 = SG_KNOWLEDGE -444 = SG_FUSION -445 = SL_ALCHEMIST -446 = AM_BERSERKPITCHER -447 = SL_MONK -448 = SL_STAR -449 = SL_SAGE -450 = SL_CRUSADER -451 = SL_SUPERNOVICE -452 = SL_KNIGHT -453 = SL_WIZARD -454 = SL_PRIEST -455 = SL_BARDDANCER -456 = SL_ROGUE -457 = SL_ASSASIN -458 = SL_BLACKSMITH -459 = BS_ADRENALINE2 -460 = SL_HUNTER -461 = SL_SOULLINKER -462 = SL_KAIZEL -463 = SL_KAAHI -464 = SL_KAUPE -465 = SL_KAITE -466 = SL_KAINA -467 = SL_STIN -468 = SL_STUN -469 = SL_SMA -470 = SL_SWOO -471 = SL_SKE -472 = SL_SKA -10000 = GD_APPROVAL -10001 = GD_KAFRACONTRACT -10002 = GD_GUARDRESEARCH -10003 = GD_CHARISMA -10004 = GD_EXTENSION - -// ************************ -// * Item DB - Use Script * -// ************************ -itemskill: - -Format: itemskill skill_id,skill_lvl,"name"; - -Example: itemskill 28,3,"Heal"; //Healing skill - -itemheal: - -Format: itemheal hp,sp; - -Example: itemheal 30,0; //+30 HP, +0 SP. - -sc_start: - -Format: sc_start SC_CONSTANT,duration,value; - -Example: sc_start SC_POISON,1800,; //Starts Poison Status for 30 seconds - -sc_end: - -Format: sc_end SC_CONSTANT; - -Example: sc_end SC_BLIND; //Ends Blind Status - -warp: - -Format: warp "map",x,y; - -Example: warp "Random",0,0; //Fly wing - -Example: warp "SavePoint",0,0; //Butterfly wing - -getitem: - -Format: getitem item_id,count; - -Example: getitem 512,2; //Gives you two Apples - -produce: - -Format: produce produce_type; - -Example: produce 16; //Mini-furnace - -pet: - -Format: pet pet_id; - -Example: pet 1002; //Taming item for Poring - -monster: - -Example: monster "this",0,0,"--ja--",-1,1,""; //Dead branch - -percentheal: - -Format: percentheal percent_hp,percent_sp; - -Example: percentheal 100,100; //Heals you 100% of both HP and SP - -// ************************** -// * Item DB - Equip Script * +// **************************************************** +// * Miscellaneous Notes (Added by MC Cameri) * +// **************************************************** + +// ***************************************************************** +// * Emotions that will be shown if 'int type' is one of the case. * +// ***************************************************************** +void clif_emotion(struct block_list *bl,int type); +case for 'int type': +0 = ! 10 = KO (Scissor) 20 = Hmmm 30 = Kiss 1 (R) 40 = Tsk tsk tsk (No) +1 = ? 11 = Fist (Stone) 21 = Number 1! 31 = Kiss 2 (L) 41 = Petting +2 = Music 12 = Hand (Paper) 22 = No (??) 32 = Smoking 42 = SP! (Timer) +3 = Heart 1 13 = Korean Flag 23 = OMG!! 33 = Okay 43 = Obsessed 2 (Dumb face, eyes popping) +4 = Sweat 14 = Heart 2 24 = O 34 = ... (Bugged) 44 = Come (Moving finger) +5 = Light bulb 15 = Thanks 25 = X 35 = ??? Flag 45 = Yawn (Sleepy) +6 = Annoyed 16 = Wah (Crying) 26 = Help! 36 = Evil 2 46 = Congratulations +7 = Smoke cloud 17 = Sorry 27 = Go! 37 = Obsessed 1 47 = HP! (Timer) +8 = $ 18 = Heh (Laughing) 28 = Sobbing 38 = Two Hearts +9 = ... 19 = Sweating 29 = Evil 1 39 = Tongue + +// ******************************** +// * Elemental Defense Resistance * +// ******************************** +sd->subele[0] - Neutral Property +sd->subele[1] - Water Property +sd->subele[2] - Earth Property +sd->subele[3] - Fire Property +sd->subele[4] - Wind Property +sd->subele[5] - Poison Property +sd->subele[6] - Holy Property +sd->subele[7] - Shadow Property +sd->subele[8] - Ghost Property +sd->subele[9] - Undead Property + +// *************************************** +// * Elemental Monster Attack Resistance * +// *************************************** + +sd->subrace[0] - Neutral Type +sd->subrace[1] - Undead Type +sd->subrace[2] - Brute Type +sd->subrace[3] - Plant Type +sd->subrace[4] - Insect Type +sd->subrace[5] - Fish Type +sd->subrace[6] - Demon Type +sd->subrace[7] - Demi-Human Type +sd->subrace[8] - Angel Type +sd->subrace[9] - Dragon Type +sd->subrace[10] - Boss Type #1? +sd->subrace[11] - Boss Type #2? + +// ************** +// * Misc stuff * +// ************** + +WFIFOL(fd,2)=1; - Sever Closed + +// ******************* +// * Skills List * +// ******************* +// * ID = Skill Name * +// ******************* +ID Skill Name +1 = NV_BASIC +2 = SM_SWORD +3 = SM_TWOHAND +4 = SM_RECOVERY +5 = SM_BASH +6 = SM_PROVOKE +7 = SM_MAGNUM +8 = SM_ENDURE +9 = MG_SRECOVERY +10 = MG_SIGHT +11 = MG_NAPALMBEAT +12 = MG_SAFETYWALL +13 = MG_SOULSTRIKE +14 = MG_COLDBOLT +15 = MG_FROSTDIVER +16 = MG_STONECURSE +17 = MG_FIREBALL +18 = MG_FIREWALL +19 = MG_FIREBOLT +20 = MG_LIGHTNINGBOLT +21 = MG_THUNDERSTORM +22 = AL_DP +23 = AL_DEMONBANE +24 = AL_RUWACH +25 = AL_PNEUMA +26 = AL_TELEPORT +27 = AL_WARP +28 = AL_HEAL +29 = AL_INCAGI +30 = AL_DECAGI +31 = AL_HOLYWATER +32 = AL_CRUCIS +33 = AL_ANGELUS +34 = AL_BLESSING +35 = AL_CURE +36 = MC_INCCARRY +37 = MC_DISCOUNT +38 = MC_OVERCHARGE +39 = MC_PUSHCART +40 = MC_IDENTIFY +41 = MC_VENDING +42 = MC_MAMMONITE +43 = AC_OWL +44 = AC_VULTURE +45 = AC_CONCENTRATION +46 = AC_DOUBLE +47 = AC_SHOWER +48 = TF_DOUBLE +49 = TF_MISS +50 = TF_STEAL +51 = TF_HIDING +52 = TF_POISON +53 = TF_DETOXIFY +54 = ALL_RESURRECTION +55 = KN_SPEARMASTERY +56 = KN_PIERCE +57 = KN_BRANDISHSPEAR +58 = KN_SPEARSTAB +59 = KN_SPEARBOOMERANG +60 = KN_TWOHANDQUICKEN +61 = KN_AUTOCOUNTER +62 = KN_BOWLINGBASH +63 = KN_RIDING +64 = KN_CAVALIERMASTERY +65 = PR_MACEMASTERY +66 = PR_IMPOSITIO +67 = PR_SUFFRAGIUM +68 = PR_ASPERSIO +69 = PR_BENEDICTIO +70 = PR_SANCTUARY +71 = PR_SLOWPOISON +72 = PR_STRECOVERY +73 = PR_KYRIE +74 = PR_MAGNIFICAT +75 = PR_GLORIA +76 = PR_LEXDIVINA +77 = PR_TURNUNDEAD +78 = PR_LEXAETERNA +79 = PR_MAGNUS +80 = WZ_FIREPILLAR +81 = WZ_SIGHTRASHER +83 = WZ_METEOR +84 = WZ_JUPITEL +85 = WZ_VERMILION +86 = WZ_WATERBALL +87 = WZ_ICEWALL +88 = WZ_FROSTNOVA +89 = WZ_STORMGUST +90 = WZ_EARTHSPIKE +91 = WZ_HEAVENDRIVE +92 = WZ_QUAGMIRE +93 = WZ_ESTIMATION +94 = BS_IRON +95 = BS_STEEL +96 = BS_ENCHANTEDSTONE +97 = BS_ORIDEOCON +98 = BS_DAGGER +99 = BS_SWORD +100 = BS_TWOHANDSWORD +101 = BS_AXE +102 = BS_MACE +103 = BS_KNUCKLE +104 = BS_SPEAR +105 = BS_HILTBINDING +106 = BS_FINDINGORE +107 = BS_WEAPONRESEARCH +108 = BS_REPAIRWEAPON +109 = BS_SKINTEMPER +110 = BS_HAMMERFALL +111 = BS_ADRENALINE +112 = BS_WEAPONPERFECT +113 = BS_OVERTHRUST +114 = BS_MAXIMIZE +115 = HT_SKIDTRAP +116 = HT_LANDMINE +117 = HT_ANKLESNARE +118 = HT_SHOCKWAVE +119 = HT_SANDMAN +120 = HT_FLASHER +121 = HT_FREEZINGTRAP +122 = HT_BLASTMINE +123 = HT_CLAYMORETRAP +124 = HT_REMOVETRAP +125 = HT_TALKIEBOX +126 = HT_BEASTBANE +127 = HT_FALCON +128 = HT_STEELCROW +129 = HT_BLITZBEAT +130 = HT_DETECTING +131 = HT_SPRINGTRAP +132 = AS_RIGHT +133 = AS_LEFT +134 = AS_KATAR +135 = AS_CLOAKING +136 = AS_SONICBLOW +137 = AS_GRIMTOOTH +138 = AS_ENCHANTPOISON +139 = AS_POISONREACT +140 = AS_VENOMDUST +141 = AS_SPLASHER +142 = NV_FIRSTAID +143 = NV_TRICKDEAD +144 = SM_MOVINGRECOVERY +145 = SM_FATALBLOW +146 = SM_AUTOBERSERK +147 = AC_MAKINGARROW +148 = AC_CHARGEARROW +149 = TF_SPRINKLESAND +150 = TF_BACKSLIDING +151 = TF_PICKSTONE +152 = TF_THROWSTONE +153 = MC_CARTREVOLUTION +154 = MC_CHANGECART +155 = MC_LOUD +156 = AL_HOLYLIGHT +157 = MG_ENERGYCOAT +158 = NPC_PIERCINGATT +159 = NPC_MENTALBREAKER +160 = NPC_RANGEATTACK +161 = NPC_ATTRICHANGE +162 = NPC_CHANGEWATER +163 = NPC_CHANGEGROUND +164 = NPC_CHANGEFIRE +165 = NPC_CHANGEWIND +166 = NPC_CHANGEPOISON +167 = NPC_CHANGEHOLY +168 = NPC_CHANGEDARLNESS +169 = NPC_CHANGETELEKINESIS +170 = NPC_CRITICALSLASH +171 = NPC_COMBOATTACK +172 = NPC_GUIDEATTACK +173 = NPC_SELFDESTRUCTION +174 = NPC_SPLASHATTACK +175 = NPC_SUICIDE +176 = NPC_POISON +177 = NPC_BLINDATTACK +178 = NPC_SILENCEATTACK +179 = NPC_STUNATTACK +180 = NPC_PETRIFYATTACK +181 = NPC_CURSEATTACK +182 = NPC_SLEEPATTACK +183 = NPC_RANDOMATTACK +184 = NPC_WATERATTACK +185 = NPC_GROUNDATTACK +186 = NPC_FIREATTACK +187 = NPC_WINDATTACK +188 = NPC_POISONATTACK +189 = NPC_HOLYATTACK +190 = NPC_DARKNESSATTACK +191 = NPC_TELEKINESISATTACK +192 = NPC_MAGICALATTACK +193 = NPC_METAMORPHOSIS +194 = NPC_PROVOCATION +195 = NPC_SMOKING +196 = NPC_SUMMONSLAVE +197 = NPC_EMOTION +198 = NPC_TRANSFORMATION +199 = NPC_BLOODDRAIN +200 = NPC_ENERGYDRAIN +201 = NPC_KEEPING +202 = NPC_DARKBREATH +203 = NPC_DARKBLESSING +204 = NPC_BARRIER +205 = NPC_DEFENDER +206 = NPC_LICK +207 = NPC_HALLUCINATION +208 = NPC_REBIRTH +209 = NPC_SUMMONMONSTER +210 = RG_SNATCHER +211 = RG_STEALCOIN +212 = RG_BACKSTAP +213 = RG_TUNNELDRIVE +214 = RG_RAID +215 = RG_STRIPWEAPON +216 = RG_STRIPSHIELD +217 = RG_STRIPARMOR +218 = RG_STRIPHELM +219 = RG_INTIMIDATE +220 = RG_GRAFFITI +221 = RG_FLAGGRAFFITI +222 = RG_CLEANER +223 = RG_GANGSTER +224 = RG_COMPULSION +225 = RG_PLAGIARISM +226 = AM_AXEMASTERY +227 = AM_LEARNINGPOTION +228 = AM_PHARMACY +229 = AM_DEMONSTRATION +230 = AM_ACIDTERROR +231 = AM_POTIONPITCHER +232 = AM_CANNIBALIZE +233 = AM_SPHEREMINE +234 = AM_CP_WEAPON +235 = AM_CP_SHIELD +236 = AM_CP_ARMOR +237 = AM_CP_HELM +248 = CR_TRUST +249 = CR_AUTOGUARD +250 = CR_SHIELDCHARGE +251 = CR_SHIELDBOOMERANG +252 = CR_REFLECTSHIELD +253 = CR_HOLYCROSS +254 = CR_GRANDCROSS +255 = CR_DEVOTION +256 = CR_PROVIDENCE +257 = CR_DEFENDER +258 = CR_SPEARQUICKEN +259 = MO_IRONHAND +260 = MO_SPIRITSRECOVERY +261 = MO_CALLSPIRITS +262 = MO_ABSORBSPIRITS +263 = MO_TRIPLEATTACK +264 = MO_BODYRELOCATION +265 = MO_DODGE +266 = MO_INVESTIGATE +267 = MO_FINGEROFFENSIVE +268 = MO_STEELBODY +269 = MO_BLADESTOP +270 = MO_EXPLOSIONSPIRITS +271 = MO_EXTREMITYFIST +272 = MO_CHAINCOMBO +273 = MO_COMBOFINISH +274 = SA_ADVANCEDBOOK +275 = SA_CASTCANCEL +276 = SA_MAGICROD +277 = SA_SPELLBREAKER +278 = SA_FREECAST +279 = SA_AUTOSPELL +280 = SA_FLAMELAUNCHER +281 = SA_FROSTWEAPON +282 = SA_LIGHTNINGLOADER +283 = SA_SEISMICWEAPON +284 = SA_DRAGONOLOGY +285 = SA_VOLCANO +286 = SA_DELUGE +287 = SA_VIOLENTGALE +288 = SA_LANDPROTECTOR +289 = SA_DISPELL +290 = SA_ABRACADABRA +291 = SA_MONOCELL +292 = SA_CLASSCHANGE +293 = SA_SUMMONMONSTER +294 = SA_REVERSEORCISH +295 = SA_DEATH +296 = SA_FORTUNE +297 = SA_TAMINGMONSTER +298 = SA_QUESTION +299 = SA_GRAVITY +300 = SA_LEVELUP +301 = SA_INSTANTDEATH +302 = SA_FULLRECOVERY +303 = SA_COMA +304 = BD_ADAPTATION +305 = BD_ENCORE +306 = BD_LULLABY +307 = BD_RICHMANKIM +308 = BD_ETERNALCHAOS +309 = BD_DRUMBATTLEFIELD +310 = BD_RINGNIBELUNGEN +311 = BD_ROKISWEIL +312 = BD_INTOABYSS +313 = BD_SIEGFRIED +315 = BA_MUSICALLESSON +316 = BA_MUSICALSTRIKE +317 = BA_DISSONANCE +318 = BA_FROSTJOKE +319 = BA_WHISTLE +320 = BA_ASSASSINCROSS +321 = BA_POEMBRAGI +322 = BA_APPLEIDUN +323 = DC_DANCINGLESSON +324 = DC_THROWARROW +325 = DC_UGLYDANCE +326 = DC_SCREAM +327 = DC_HUMMING +328 = DC_DONTFORGETME +329 = DC_FORTUNEKISS +330 = DC_SERVICEFORYOU +334 = WE_MALE +335 = WE_FEMALE +336 = WE_CALLPARTNER +355 = LK_AURABLADE +356 = LK_PARRYING +357 = LK_CONCENTRATION +358 = LK_TENSIONRELAX +359 = LK_BERSERK +361 = HP_ASSUMPTIO +362 = HP_BASILICA +363 = HP_MEDITATIO +364 = HW_SOULDRAIN +365 = HW_MAGICCRASHER +366 = HW_MAGICPOWER +367 = PA_PRESSURE +368 = PA_SACRIFICE +369 = PA_GOSPEL +370 = CH_PALMSTRIKE +371 = CH_TIGERFIST +372 = CH_CHAINCRUSH +373 = PF_HPCONVERSION +374 = PF_SOULCHANGE +375 = PF_SOULBURN +376 = ASC_KATAR +377 = ASC_HALLUCINATION +378 = ASC_EDP +379 = ASC_BREAKER +380 = SN_SIGHT +381 = SN_FALCONASSAULT +382 = SN_SHARPSHOOTING +383 = SN_WINDWALK +384 = WS_MELTDOWN +385 = WS_CREATECOIN +386 = WS_CREATENUGGET +387 = WS_CARTBOOST +388 = WS_SYSTEMCREATE +389 = ST_CHASEWALK +390 = ST_REJECTSWORD +392 = CR_ALCHEMY +393 = CR_SYNTHESISPOTION +394 = CG_ARROWVULCAN +395 = CG_MOONLIT +396 = CG_MARIONETTE +397 = LK_SPIRALPIERCE +398 = LK_HEADCRUSH +399 = LK_JOINTBEAT +400 = HW_NAPALMVULCAN +401 = CH_SOULCOLLECT +402 = PF_MINDBREAKER +403 = PF_MEMORIZE +404 = PF_FOGWALL +405 = PF_SPIDERWEB +406 = ASC_METEORASSAULT +407 = ASC_CDP +408 = WE_BABY +409 = WE_CALLPARENT +410 = WE_CALLBABY +411 = TK_RUN +412 = TK_READYSTORM +413 = TK_STORMKICK +414 = TK_READYDOWN +415 = TK_DOWNKICK +416 = TK_READYTURN +417 = TK_TURNKICK +418 = TK_READYCOUNTER +419 = TK_COUNTER +420 = TK_DODGE +421 = TK_JUMPKICK +422 = TK_HPTIME +423 = TK_SPTIME +424 = TK_POWER +425 = TK_SEVENWIND +426 = TK_HIGHJUMP +427 = SG_FEEL +428 = SG_SUN_WARM +429 = SG_MOON_WARM +430 = SG_STAR_WARM +431 = SG_SUN_COMFORT +432 = SG_MOON_COMFORT +433 = SG_STAR_COMFORT +434 = SG_HATE +435 = SG_SUN_ANGER +436 = SG_MOON_ANGER +437 = SG_STAR_ANGER +438 = SG_SUN_BLESS +439 = SG_MOON_BLESS +440 = SG_STAR_BLESS +441 = SG_DEVIL +442 = SG_FRIEND +443 = SG_KNOWLEDGE +444 = SG_FUSION +445 = SL_ALCHEMIST +446 = AM_BERSERKPITCHER +447 = SL_MONK +448 = SL_STAR +449 = SL_SAGE +450 = SL_CRUSADER +451 = SL_SUPERNOVICE +452 = SL_KNIGHT +453 = SL_WIZARD +454 = SL_PRIEST +455 = SL_BARDDANCER +456 = SL_ROGUE +457 = SL_ASSASIN +458 = SL_BLACKSMITH +459 = BS_ADRENALINE2 +460 = SL_HUNTER +461 = SL_SOULLINKER +462 = SL_KAIZEL +463 = SL_KAAHI +464 = SL_KAUPE +465 = SL_KAITE +466 = SL_KAINA +467 = SL_STIN +468 = SL_STUN +469 = SL_SMA +470 = SL_SWOO +471 = SL_SKE +472 = SL_SKA +10000 = GD_APPROVAL +10001 = GD_KAFRACONTRACT +10002 = GD_GUARDRESEARCH +10003 = GD_CHARISMA +10004 = GD_EXTENSION + +// ************************ +// * Item DB - Use Script * +// ************************ +itemskill: + -Format: itemskill skill_id,skill_lvl,"name"; + -Example: itemskill 28,3,"Heal"; //Healing skill + +itemheal: + -Format: itemheal hp,sp; + -Example: itemheal 30,0; //+30 HP, +0 SP. + +sc_start: + -Format: sc_start SC_CONSTANT,duration,value; + -Example: sc_start SC_POISON,1800,; //Starts Poison Status for 30 seconds + +sc_end: + -Format: sc_end SC_CONSTANT; + -Example: sc_end SC_BLIND; //Ends Blind Status + +warp: + -Format: warp "map",x,y; + -Example: warp "Random",0,0; //Fly wing + -Example: warp "SavePoint",0,0; //Butterfly wing + +getitem: + -Format: getitem item_id,count; + -Example: getitem 512,2; //Gives you two Apples + +produce: + -Format: produce produce_type; + -Example: produce 16; //Mini-furnace + +pet: + -Format: pet pet_id; + -Example: pet 1002; //Taming item for Poring + +monster: + -Example: monster "this",0,0,"--ja--",-1,1,""; //Dead branch + +percentheal: + -Format: percentheal percent_hp,percent_sp; + -Example: percentheal 100,100; //Heals you 100% of both HP and SP + +// ************************** +// * Item DB - Equip Script * // ************************** \ No newline at end of file diff --git a/npc/cities/louyang.txt b/npc/cities/louyang.txt index 14b7fffcb..ddeef2908 100644 --- a/npc/cities/louyang.txt +++ b/npc/cities/louyang.txt @@ -1,65 +1,65 @@ -//===== eAthena Script ======================================= -//= Lou Yang City NPC's -//===== By: ================================================== -//= Vidar (1.0) -//= Mass Zero (1.1) -//===== Current Version: ===================================== -//= 1.0 -//===== Compatible With: ===================================== -//= Any eAthena Version -//===== Description: ========================================= -//= Unofficial NPC's for Lou Yang city. -//===== Additional Comments: ================================= -//= Originally made for Vidar -//============================================================ - -louyang.gat,260,96,2 script Chun Hua 770,{ -mes "[^000080Chun Hua^000000]"; -mes "Welcome traveler, you must be hungry and thirsty."; -mes "Please come inside, there is much to eat."; -next; -mes "[^000080Chun Hua^000000]"; -mes "Do not be afraid about how much you ask for, there is much to go around."; -close; -} - -lou_fild01.gat,188,102,1 script Extraordinary Sailor 100,{ -mes "[Extraordinary Sailor]"; -mes "We run a line to Alberta, we could take you there if you like."; -next; -menu "Let me travel to Alberta",L_Menu1,"No, thanks",L_Menu2; -close; -L_Menu1: -warp "alberta.gat",247,44; -L_Menu2: -mes "[Extraordinary Sailor]"; -mes "Suit yourself."; -close; -} - -alberta.gat,247,42,4 script Expert Sailor 100,{ -mes "[Expert Sailor]"; -mes "Have you ever been over seas?"; -next; -menu "Yes",YES,"No",NO; -YES: -mes "Same here! I'm about to head back out that way again."; -mes "Would you like to come with me?"; -next; -menu "Sure",L_Menu1,"No, thanks",L_Menu3; -close; -L_Menu1: -warp "lou_fild01.gat",192,105; -NO: -mes "What a shame, it is truley a sight to behold. I'm about to head back out that way again."; -mes "Would you like to come with me?"; -next; -menu "Sure",L_Menu2,"No, thanks",L_Menu3; -close; -L_Menu2: -warp "lou_fild01.gat",192,105; -L_Menu3: -mes "[Expert Sailor]"; -mes "Suit yourself."; -close; +//===== eAthena Script ======================================= +//= Lou Yang City NPC's +//===== By: ================================================== +//= Vidar (1.0) +//= Mass Zero (1.1) +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= Any eAthena Version +//===== Description: ========================================= +//= Unofficial NPC's for Lou Yang city. +//===== Additional Comments: ================================= +//= Originally made for Vidar +//============================================================ + +louyang.gat,260,96,2 script Chun Hua 770,{ +mes "[^000080Chun Hua^000000]"; +mes "Welcome traveler, you must be hungry and thirsty."; +mes "Please come inside, there is much to eat."; +next; +mes "[^000080Chun Hua^000000]"; +mes "Do not be afraid about how much you ask for, there is much to go around."; +close; +} + +lou_fild01.gat,188,102,1 script Extraordinary Sailor 100,{ +mes "[Extraordinary Sailor]"; +mes "We run a line to Alberta, we could take you there if you like."; +next; +menu "Let me travel to Alberta",L_Menu1,"No, thanks",L_Menu2; +close; +L_Menu1: +warp "alberta.gat",247,44; +L_Menu2: +mes "[Extraordinary Sailor]"; +mes "Suit yourself."; +close; +} + +alberta.gat,247,42,4 script Expert Sailor 100,{ +mes "[Expert Sailor]"; +mes "Have you ever been over seas?"; +next; +menu "Yes",YES,"No",NO; +YES: +mes "Same here! I'm about to head back out that way again."; +mes "Would you like to come with me?"; +next; +menu "Sure",L_Menu1,"No, thanks",L_Menu3; +close; +L_Menu1: +warp "lou_fild01.gat",192,105; +NO: +mes "What a shame, it is truley a sight to behold. I'm about to head back out that way again."; +mes "Would you like to come with me?"; +next; +menu "Sure",L_Menu2,"No, thanks",L_Menu3; +close; +L_Menu2: +warp "lou_fild01.gat",192,105; +L_Menu3: +mes "[Expert Sailor]"; +mes "Suit yourself."; +close; } \ No newline at end of file diff --git a/src/map/charcommand.c b/src/map/charcommand.c index 27dbd260f..de05e20ae 100644 --- a/src/map/charcommand.c +++ b/src/map/charcommand.c @@ -1,703 +1,703 @@ -#include -#include -#include -#include -#include - -#include "../common/socket.h" -#include "../common/timer.h" -#include "../common/nullpo.h" - -#include "log.h" -#include "clif.h" -#include "chrif.h" -#include "intif.h" -#include "itemdb.h" -#include "map.h" -#include "pc.h" -#include "skill.h" -#include "mob.h" -#include "pet.h" -#include "battle.h" -#include "party.h" -#include "guild.h" -#include "charcommand.h" -#include "atcommand.h" -#include "script.h" -#include "npc.h" -#include "trade.h" -#include "core.h" - -static char command_symbol = '#'; - -static char msg_table[1000][1024]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others) - -#define CCMD_FUNC(x) int charcommand_ ## x (const int fd, struct map_session_data* sd, const char* command, const char* message) - -CCMD_FUNC(jobchange); -CCMD_FUNC(petrename); -CCMD_FUNC(petfriendly); -CCMD_FUNC(stats); -CCMD_FUNC(option); -CCMD_FUNC(save); -CCMD_FUNC(stats_all); -CCMD_FUNC(reset); - -#ifdef TXT_ONLY -/* TXT_ONLY */ - -/* TXT_ONLY */ -#else -/* SQL-only */ - -/* SQL Only */ -#endif - -/*========================================== - *CharCommandInfo charcommand_info[]構造体の定義 - *------------------------------------------ - */ - -// First char of commands is configured in charcommand_athena.conf. Leave @ in this list for default value. -// to set default level, read charcommand_athena.conf first please. -static CharCommandInfo charcommand_info[] = { - { CharCommandJobChange, "#job", 60, charcommand_jobchange }, - { CharCommandJobChange, "#jobchange", 60, charcommand_jobchange }, - { CharCommandPetRename, "#petrename", 50, charcommand_petrename }, - { CharCommandPetFriendly, "#petfriendly", 50, charcommand_petfriendly }, - { CharCommandStats, "#stats", 40, charcommand_stats }, - { CharCommandOption, "#option", 60, charcommand_option }, - { CharCommandReset, "#reset", 60, charcommand_reset }, - { CharCommandSave, "#save", 60, charcommand_save }, - { CharCommandStatsAll, "#statsall", 40, charcommand_stats_all }, - -#ifdef TXT_ONLY -/* TXT_ONLY */ - -/* TXT_ONLY */ -#else -/* SQL-only */ - -/* SQL Only */ -#endif - -// add new commands before this line - { CharCommand_Unknown, NULL, 1, NULL } -}; - - -int get_charcommand_level(const CharCommandType type) { - int i; - - for (i = 0; charcommand_info[i].type != CharCommand_None; i++) - if (charcommand_info[i].type == type) - return charcommand_info[i].level; - - return 100; // 100: command can not be used -} - -/*========================================== - *is_charcommand @コマンドに存在するかどうか確認する - *------------------------------------------ - */ -CharCommandType -is_charcommand(const int fd, struct map_session_data* sd, const char* message, int gmlvl) { - const char* str = message; - int s_flag = 0; - CharCommandInfo info; - CharCommandType type; - - nullpo_retr(CharCommand_None, sd); - - if (!message || !*message) - return CharCommand_None; - - memset(&info, 0, sizeof(info)); - str += strlen(sd->status.name); - while (*str && (isspace(*str) || (s_flag == 0 && *str == ':'))) { - if (*str == ':') - s_flag = 1; - str++; - } - if (!*str) - return CharCommand_None; - - type = charcommand(gmlvl > 0 ? gmlvl : pc_isGM(sd), str, &info); - if (type != CharCommand_None) { - char command[100]; - char output[200]; - const char* p = str; - memset(command, '\0', sizeof(command)); - memset(output, '\0', sizeof(output)); - while (*p && !isspace(*p)) - p++; - if (p - str >= sizeof(command)) // too long - return CharCommand_Unknown; - strncpy(command, str, p - str); - while (isspace(*p)) - p++; - - if (type == CharCommand_Unknown || info.proc == NULL) { - snprintf(output, sizeof(output),msg_txt(153), command); // %s is Unknown Command. - clif_displaymessage(fd, output); - } else { - if (info.proc(fd, sd, command, p) != 0) { - // Command can not be executed - snprintf(output, sizeof(output), msg_txt(154), command); // %s failed. - clif_displaymessage(fd, output); - } - } - - return info.type; - } - - return CharCommand_None; -} - -/*========================================== - * - *------------------------------------------ - */ -CharCommandType charcommand(const int level, const char* message, struct CharCommandInfo* info) { - char* p = (char *)message; - - if (!info) - return CharCommand_None; - if (battle_config.atc_gmonly != 0 && !level) // level = pc_isGM(sd) - return CharCommand_None; - if (!p || !*p) { - fprintf(stderr, "char command message is empty\n"); - return CharCommand_None; - } - - if (*p == command_symbol) { // check first char. - char command[101]; - int i = 0; - memset(info, 0, sizeof(CharCommandInfo)); - sscanf(p, "%100s", command); - command[sizeof(command)-1] = '\0'; - - while (charcommand_info[i].type != CharCommand_Unknown) { - if (strcmpi(command+1, charcommand_info[i].command+1) == 0 && level >= charcommand_info[i].level) { - p[0] = charcommand_info[i].command[0]; // set correct first symbol for after. - break; - } - i++; - } - - if (charcommand_info[i].type == CharCommand_Unknown) { - // doesn't return Unknown if player is normal player (display the text, not display: unknown command) - if (level == 0) - return CharCommand_None; - else - return CharCommand_Unknown; - } - memcpy(info, &charcommand_info[i], sizeof charcommand_info[i]); - } else { - return CharCommand_None; - } - - return info->type; -} - - -/*========================================== - * - *------------------------------------------ - */ -static CharCommandInfo* get_charcommandinfo_byname(const char* name) { - int i; - - for (i = 0; charcommand_info[i].type != CharCommand_Unknown; i++) - if (strcmpi(charcommand_info[i].command + 1, name) == 0) - return &charcommand_info[i]; - - return NULL; -} - -/*========================================== - * - *------------------------------------------ - */ -int charcommand_config_read(const char *cfgName) { - char line[1024], w1[1024], w2[1024]; - CharCommandInfo* p; - FILE* fp; - - if ((fp = fopen(cfgName, "r")) == NULL) { - printf("CharCommands configuration file not found: %s\n", cfgName); - return 1; - } - - while (fgets(line, sizeof(line)-1, fp)) { - if (line[0] == '/' && line[1] == '/') - continue; - - if (sscanf(line, "%1023[^:]:%1023s", w1, w2) != 2) - continue; - p = get_charcommandinfo_byname(w1); - if (p != NULL) { - p->level = atoi(w2); - if (p->level > 100) - p->level = 100; - else if (p->level < 0) - p->level = 0; - } - - if (strcmpi(w1, "import") == 0) - charcommand_config_read(w2); - else if (strcmpi(w1, "command_symbol") == 0 && w2[0] > 31 && - w2[0] != '/' && // symbol of standard ragnarok GM commands - w2[0] != '%' && // symbol of party chat speaking - w2[0] != '@') // symbol for @commands - command_symbol = w2[0]; - } - fclose(fp); - - return 0; -} - -/*========================================== - * 対象キャラクターを転職させる upper指定で転生や養子も可能 - *------------------------------------------ - */ -int charcommand_jobchange( - const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - char character[100]; - struct map_session_data* pl_sd; - int job = 0, upper = -1; - - memset(character, '\0', sizeof(character)); - - if (!message || !*message) { - clif_displaymessage(fd, "Please, enter a job and a player name (usage: #job/#jobchange )."); - return -1; - } - - if (sscanf(message, "%d %d %99[^\n]", &job, &upper, character) < 3) { //upper指定してある - upper = -1; - if (sscanf(message, "%d %99[^\n]", &job, character) < 2) { //upper指定してない上に何か足りない - clif_displaymessage(fd, "Please, enter a job and a player name (usage: #job/#jobchange )."); - return -1; - } - } - - if ((pl_sd = map_nick2sd(character)) != NULL) { - if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change job only to lower or same level - if ((job >= 0 && job < MAX_PC_CLASS)) { - - // fix pecopeco display - if ((job != 13 && job != 21 && job != 4014 && job != 4022)) { - if (pc_isriding(sd)) { - if (pl_sd->status.class == 13) - pl_sd->status.class = pl_sd->view_class = 7; - if (pl_sd->status.class == 21) - pl_sd->status.class = pl_sd->view_class = 14; - if (pl_sd->status.class == 4014) - pl_sd->status.class = pl_sd->view_class = 4008; - if (pl_sd->status.class == 4022) - pl_sd->status.class = pl_sd->view_class = 4015; - pl_sd->status.option &= ~0x0020; - clif_changeoption(&pl_sd->bl); - pc_calcstatus(pl_sd, 0); - } - } else { - if (!pc_isriding(sd)) { - if (job == 13) - job = 7; - if (job == 21) - job = 14; - if (job == 4014) - job = 4008; - if (job == 4022) - job = 4015; - } - } - - if (pc_jobchange(pl_sd, job, upper) == 0) - clif_displaymessage(fd, msg_table[48]); // Character's job changed. - else { - clif_displaymessage(fd, msg_table[192]); // Impossible to change the character's job. - return -1; - } - } else { - clif_displaymessage(fd, msg_table[49]); // Invalid job ID. - return -1; - } - } else { - clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. - return -1; - } - } else { - clif_displaymessage(fd, msg_table[3]); // Character not found. - return -1; - } - - return 0; -} - -/*========================================== - * - *------------------------------------------ - */ -int charcommand_petrename( - const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - char character[100]; - struct map_session_data *pl_sd; - - memset(character, '\0', sizeof(character)); - - if (!message || !*message || sscanf(message, "%99[^\n]", character) < 1) { - clif_displaymessage(fd, "Please, enter a player name (usage: #petrename )."); - return -1; - } - - if ((pl_sd = map_nick2sd(character)) != NULL) { - if (pl_sd->status.pet_id > 0 && pl_sd->pd) { - if (pl_sd->pet.rename_flag != 0) { - pl_sd->pet.rename_flag = 0; - intif_save_petdata(pl_sd->status.account_id, &pl_sd->pet); - clif_send_petstatus(pl_sd); - clif_displaymessage(fd, msg_table[189]); // This player can now rename his/her pet. - } else { - clif_displaymessage(fd, msg_table[190]); // This player can already rename his/her pet. - return -1; - } - } else { - clif_displaymessage(fd, msg_table[191]); // Sorry, but this player has no pet. - return -1; - } - } else { - clif_displaymessage(fd, msg_txt(3)); // Character not found. - return -1; - } - - return 0; -} - - -/*========================================== - * - *------------------------------------------ - */ -int charcommand_petfriendly( - const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - int friendly = 0; - int t = 0; - char character[100]; - struct map_session_data *pl_sd; - - memset(character, '\0', sizeof(character)); - if (!message || !*message || sscanf(message,"%d %s",&friendly,character) < 2) { - clif_displaymessage(fd, "Please, enter a valid value (usage: " - "#petfriendly <0-1000> )."); - return -1; - } - - if (((pl_sd = map_nick2sd(character)) != NULL) && pc_isGM(sd)>pc_isGM(pl_sd)) { - if (pl_sd->status.pet_id > 0 && pl_sd->pd) { - if (friendly >= 0 && friendly <= 1000) { - if (friendly != pl_sd->pet.intimate) { - t = pl_sd->pet.intimate; - pl_sd->pet.intimate = friendly; - clif_send_petstatus(pl_sd); - clif_pet_emotion(pl_sd->pd,0); - if (battle_config.pet_status_support) { - if ((pl_sd->pet.intimate > 0 && t <= 0) || - (pl_sd->pet.intimate <= 0 && t > 0)) { - if (pl_sd->bl.prev != NULL) - pc_calcstatus(pl_sd, 0); - else - pc_calcstatus(pl_sd, 2); - } - } - clif_displaymessage(pl_sd->fd, msg_table[182]); // Pet friendly value changed! - clif_displaymessage(sd->fd, msg_table[182]); // Pet friendly value changed! - } else { - clif_displaymessage(fd, msg_table[183]); // Pet friendly is already the good value. - return -1; - } - } else { - clif_displaymessage(fd, msg_table[37]); // An invalid number was specified. - return -1; - } - } else { - return -1; - } - } else { - clif_displaymessage(fd, msg_txt(3)); // Character not found. - return -1; - } - - return 0; -} - -/*========================================== - * - *------------------------------------------ - */ -int charcommand_stats( - const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - char character[100]; - char job_jobname[100]; - char output[200]; - struct map_session_data *pl_sd; - int i; - - memset(character, '\0', sizeof(character)); - memset(job_jobname, '\0', sizeof(job_jobname)); - memset(output, '\0', sizeof(output)); - - if (!message || !*message || sscanf(message, "%99[^\n]", character) < 1) { - clif_displaymessage(fd, "Please, enter a player name (usage: #stats )."); - return -1; - } - - if ((pl_sd = map_nick2sd(character)) != NULL) { - struct { - const char* format; - int value; - } output_table[] = { - { "Base Level - %d", pl_sd->status.base_level }, - { job_jobname, pl_sd->status.job_level }, - { "Hp - %d", pl_sd->status.hp }, - { "MaxHp - %d", pl_sd->status.max_hp }, - { "Sp - %d", pl_sd->status.sp }, - { "MaxSp - %d", pl_sd->status.max_sp }, - { "Str - %3d", pl_sd->status.str }, - { "Agi - %3d", pl_sd->status.agi }, - { "Vit - %3d", pl_sd->status.vit }, - { "Int - %3d", pl_sd->status.int_ }, - { "Dex - %3d", pl_sd->status.dex }, - { "Luk - %3d", pl_sd->status.luk }, - { "Zeny - %d", pl_sd->status.zeny }, - { NULL, 0 } - }; - sprintf(job_jobname, "Job - %s %s", job_name(pl_sd->status.class), "(level %d)"); - sprintf(output, msg_table[53], pl_sd->status.name); // '%s' stats: - clif_displaymessage(fd, output); - for (i = 0; output_table[i].format != NULL; i++) { - sprintf(output, output_table[i].format, output_table[i].value); - clif_displaymessage(fd, output); - } - } else { - clif_displaymessage(fd, msg_table[3]); // Character not found. - return -1; - } - - return 0; -} - -/*========================================== - * Character Reset - *------------------------------------------ - */ -int charcommand_reset( - const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - char character[100]; - char output[200]; - struct map_session_data *pl_sd; - - memset(character, '\0', sizeof(character)); - memset(output, '\0', sizeof(output)); - - if (!message || !*message || sscanf(message, "%99[^\n]", character) < 1) { - clif_displaymessage(fd, "Please, enter a player name (usage: #reset )."); - return -1; - } - - if ((pl_sd = map_nick2sd(character)) != NULL) { - if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can reset a character only for lower or same GM level - pc_resetstate(pl_sd); - pc_resetskill(pl_sd); - sprintf(output, msg_table[208], character); // '%s' skill and stats points reseted! - clif_displaymessage(fd, output); - } else { - clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. - return -1; - } - } else { - clif_displaymessage(fd, msg_table[3]); // Character not found. - return -1; - } - - return 0; -} - -/*========================================== - * - *------------------------------------------ - */ -int charcommand_option( - const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - char character[100]; - int opt1 = 0, opt2 = 0, opt3 = 0; - struct map_session_data* pl_sd; - - memset(character, '\0', sizeof(character)); - - if (!message || !*message || - sscanf(message, "%d %d %d %99[^\n]", &opt1, &opt2, &opt3, character) < 4 || - opt1 < 0 || opt2 < 0 || opt3 < 0) { - clif_displaymessage(fd, "Please, enter valid options and a player name (usage: #option )."); - return -1; - } - - if ((pl_sd = map_nick2sd(character)) != NULL) { - if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change option only to lower or same level - pl_sd->opt1 = opt1; - pl_sd->opt2 = opt2; - pl_sd->status.option = opt3; - // fix pecopeco display - if (pl_sd->status.class == 13 || pl_sd->status.class == 21 || pl_sd->status.class == 4014 || pl_sd->status.class == 4022) { - if (!pc_isriding(pl_sd)) { // pl_sd have the new value... - if (pl_sd->status.class == 13) - pl_sd->status.class = pl_sd->view_class = 7; - else if (pl_sd->status.class == 21) - pl_sd->status.class = pl_sd->view_class = 14; - else if (pl_sd->status.class == 4014) - pl_sd->status.class = pl_sd->view_class = 4008; - else if (pl_sd->status.class == 4022) - pl_sd->status.class = pl_sd->view_class = 4015; - } - } else { - if (pc_isriding(pl_sd)) { // pl_sd have the new value... - if (pl_sd->disguise > 0) { // temporary prevention of crash caused by peco + disguise, will look into a better solution [Valaris] (code added by [Yor]) - pl_sd->status.option &= ~0x0020; - } else { - if (pl_sd->status.class == 7) - pl_sd->status.class = pl_sd->view_class = 13; - else if (pl_sd->status.class == 14) - pl_sd->status.class = pl_sd->view_class = 21; - else if (pl_sd->status.class == 4008) - pl_sd->status.class = pl_sd->view_class = 4014; - else if (pl_sd->status.class == 4015) - pl_sd->status.class = pl_sd->view_class = 4022; - else - pl_sd->status.option &= ~0x0020; - } - } - } - clif_changeoption(&pl_sd->bl); - pc_calcstatus(pl_sd, 0); - clif_displaymessage(fd, msg_table[58]); // Character's options changed. - } else { - clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. - return -1; - } - } else { - clif_displaymessage(fd, msg_table[3]); // Character not found. - return -1; - } - - return 0; -} - -/*========================================== - * - *------------------------------------------ - */ -int charcommand_save( - const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - char map_name[100]; - char character[100]; - struct map_session_data* pl_sd; - int x = 0, y = 0; - int m; - - memset(map_name, '\0', sizeof(map_name)); - memset(character, '\0', sizeof(character)); - - if (!message || !*message || sscanf(message, "%99s %d %d %99[^\n]", map_name, &x, &y, character) < 4 || x < 0 || y < 0) { - clif_displaymessage(fd, "Please, enter a valid save point and a player name (usage: #save )."); - return -1; - } - - if (strstr(map_name, ".gat") == NULL && strstr(map_name, ".afm") == NULL && strlen(map_name) < 13) // 16 - 4 (.gat) - strcat(map_name, ".gat"); - - if ((pl_sd = map_nick2sd(character)) != NULL) { - if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change save point only to lower or same gm level - m = map_mapname2mapid(map_name); - if (m < 0) { - clif_displaymessage(fd, msg_table[1]); // Map not found. - return -1; - } else { - if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) { - clif_displaymessage(fd, "You are not authorised to set this map as a save map."); - return -1; - } - pc_setsavepoint(pl_sd, map_name, x, y); - clif_displaymessage(fd, msg_table[57]); // Character's respawn point changed. - } - } else { - clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. - return -1; - } - } else { - clif_displaymessage(fd, msg_table[3]); // Character not found. - return -1; - } - - return 0; -} - -/*========================================== - * - *------------------------------------------ - */ -//** Character Stats All by fritz -int charcommand_stats_all(const int fd, struct map_session_data* sd, const char* command, const char* message) -{ - char output[1024], gmlevel[1024]; - int i; - int count; - struct map_session_data *pl_sd; - - memset(output, '\0', sizeof(output)); - memset(gmlevel, '\0', sizeof(gmlevel)); - - count = 0; - for(i = 0; i < fd_max; i++) { - if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth) { - - if (pc_isGM(pl_sd) > 0) - sprintf(gmlevel, "| GM Lvl: %d", pc_isGM(pl_sd)); - else - sprintf(gmlevel, " "); - - sprintf(output, "Name: %s | BLvl: %d | Job: %s (Lvl: %d) | HP: %d/%d | SP: %d/%d", pl_sd->status.name, pl_sd->status.base_level, job_name(pl_sd->status.class), pl_sd->status.job_level, pl_sd->status.hp, pl_sd->status.max_hp, pl_sd->status.sp, pl_sd->status.max_sp); - clif_displaymessage(fd, output); - sprintf(output, "STR: %d | AGI: %d | VIT: %d | INT: %d | DEX: %d | LUK: %d | Zeny: %d %s", pl_sd->status.str, pl_sd->status.agi, pl_sd->status.vit, pl_sd->status.int_, pl_sd->status.dex, pl_sd->status.luk, pl_sd->status.zeny, gmlevel); - clif_displaymessage(fd, output); - clif_displaymessage(fd, "--------"); - count++; - } - } - - if (count == 0) - clif_displaymessage(fd, msg_table[28]); // No player found. - else if (count == 1) - clif_displaymessage(fd, msg_table[29]); // 1 player found. - else { - sprintf(output, msg_table[30], count); // %d players found. - clif_displaymessage(fd, output); - } - - return 0; -} - +#include +#include +#include +#include +#include + +#include "../common/socket.h" +#include "../common/timer.h" +#include "../common/nullpo.h" + +#include "log.h" +#include "clif.h" +#include "chrif.h" +#include "intif.h" +#include "itemdb.h" +#include "map.h" +#include "pc.h" +#include "skill.h" +#include "mob.h" +#include "pet.h" +#include "battle.h" +#include "party.h" +#include "guild.h" +#include "charcommand.h" +#include "atcommand.h" +#include "script.h" +#include "npc.h" +#include "trade.h" +#include "core.h" + +static char command_symbol = '#'; + +static char msg_table[1000][1024]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others) + +#define CCMD_FUNC(x) int charcommand_ ## x (const int fd, struct map_session_data* sd, const char* command, const char* message) + +CCMD_FUNC(jobchange); +CCMD_FUNC(petrename); +CCMD_FUNC(petfriendly); +CCMD_FUNC(stats); +CCMD_FUNC(option); +CCMD_FUNC(save); +CCMD_FUNC(stats_all); +CCMD_FUNC(reset); + +#ifdef TXT_ONLY +/* TXT_ONLY */ + +/* TXT_ONLY */ +#else +/* SQL-only */ + +/* SQL Only */ +#endif + +/*========================================== + *CharCommandInfo charcommand_info[]構造体の定義 + *------------------------------------------ + */ + +// First char of commands is configured in charcommand_athena.conf. Leave @ in this list for default value. +// to set default level, read charcommand_athena.conf first please. +static CharCommandInfo charcommand_info[] = { + { CharCommandJobChange, "#job", 60, charcommand_jobchange }, + { CharCommandJobChange, "#jobchange", 60, charcommand_jobchange }, + { CharCommandPetRename, "#petrename", 50, charcommand_petrename }, + { CharCommandPetFriendly, "#petfriendly", 50, charcommand_petfriendly }, + { CharCommandStats, "#stats", 40, charcommand_stats }, + { CharCommandOption, "#option", 60, charcommand_option }, + { CharCommandReset, "#reset", 60, charcommand_reset }, + { CharCommandSave, "#save", 60, charcommand_save }, + { CharCommandStatsAll, "#statsall", 40, charcommand_stats_all }, + +#ifdef TXT_ONLY +/* TXT_ONLY */ + +/* TXT_ONLY */ +#else +/* SQL-only */ + +/* SQL Only */ +#endif + +// add new commands before this line + { CharCommand_Unknown, NULL, 1, NULL } +}; + + +int get_charcommand_level(const CharCommandType type) { + int i; + + for (i = 0; charcommand_info[i].type != CharCommand_None; i++) + if (charcommand_info[i].type == type) + return charcommand_info[i].level; + + return 100; // 100: command can not be used +} + +/*========================================== + *is_charcommand @コマンドに存在するかどうか確認する + *------------------------------------------ + */ +CharCommandType +is_charcommand(const int fd, struct map_session_data* sd, const char* message, int gmlvl) { + const char* str = message; + int s_flag = 0; + CharCommandInfo info; + CharCommandType type; + + nullpo_retr(CharCommand_None, sd); + + if (!message || !*message) + return CharCommand_None; + + memset(&info, 0, sizeof(info)); + str += strlen(sd->status.name); + while (*str && (isspace(*str) || (s_flag == 0 && *str == ':'))) { + if (*str == ':') + s_flag = 1; + str++; + } + if (!*str) + return CharCommand_None; + + type = charcommand(gmlvl > 0 ? gmlvl : pc_isGM(sd), str, &info); + if (type != CharCommand_None) { + char command[100]; + char output[200]; + const char* p = str; + memset(command, '\0', sizeof(command)); + memset(output, '\0', sizeof(output)); + while (*p && !isspace(*p)) + p++; + if (p - str >= sizeof(command)) // too long + return CharCommand_Unknown; + strncpy(command, str, p - str); + while (isspace(*p)) + p++; + + if (type == CharCommand_Unknown || info.proc == NULL) { + snprintf(output, sizeof(output),msg_txt(153), command); // %s is Unknown Command. + clif_displaymessage(fd, output); + } else { + if (info.proc(fd, sd, command, p) != 0) { + // Command can not be executed + snprintf(output, sizeof(output), msg_txt(154), command); // %s failed. + clif_displaymessage(fd, output); + } + } + + return info.type; + } + + return CharCommand_None; +} + +/*========================================== + * + *------------------------------------------ + */ +CharCommandType charcommand(const int level, const char* message, struct CharCommandInfo* info) { + char* p = (char *)message; + + if (!info) + return CharCommand_None; + if (battle_config.atc_gmonly != 0 && !level) // level = pc_isGM(sd) + return CharCommand_None; + if (!p || !*p) { + fprintf(stderr, "char command message is empty\n"); + return CharCommand_None; + } + + if (*p == command_symbol) { // check first char. + char command[101]; + int i = 0; + memset(info, 0, sizeof(CharCommandInfo)); + sscanf(p, "%100s", command); + command[sizeof(command)-1] = '\0'; + + while (charcommand_info[i].type != CharCommand_Unknown) { + if (strcmpi(command+1, charcommand_info[i].command+1) == 0 && level >= charcommand_info[i].level) { + p[0] = charcommand_info[i].command[0]; // set correct first symbol for after. + break; + } + i++; + } + + if (charcommand_info[i].type == CharCommand_Unknown) { + // doesn't return Unknown if player is normal player (display the text, not display: unknown command) + if (level == 0) + return CharCommand_None; + else + return CharCommand_Unknown; + } + memcpy(info, &charcommand_info[i], sizeof charcommand_info[i]); + } else { + return CharCommand_None; + } + + return info->type; +} + + +/*========================================== + * + *------------------------------------------ + */ +static CharCommandInfo* get_charcommandinfo_byname(const char* name) { + int i; + + for (i = 0; charcommand_info[i].type != CharCommand_Unknown; i++) + if (strcmpi(charcommand_info[i].command + 1, name) == 0) + return &charcommand_info[i]; + + return NULL; +} + +/*========================================== + * + *------------------------------------------ + */ +int charcommand_config_read(const char *cfgName) { + char line[1024], w1[1024], w2[1024]; + CharCommandInfo* p; + FILE* fp; + + if ((fp = fopen(cfgName, "r")) == NULL) { + printf("CharCommands configuration file not found: %s\n", cfgName); + return 1; + } + + while (fgets(line, sizeof(line)-1, fp)) { + if (line[0] == '/' && line[1] == '/') + continue; + + if (sscanf(line, "%1023[^:]:%1023s", w1, w2) != 2) + continue; + p = get_charcommandinfo_byname(w1); + if (p != NULL) { + p->level = atoi(w2); + if (p->level > 100) + p->level = 100; + else if (p->level < 0) + p->level = 0; + } + + if (strcmpi(w1, "import") == 0) + charcommand_config_read(w2); + else if (strcmpi(w1, "command_symbol") == 0 && w2[0] > 31 && + w2[0] != '/' && // symbol of standard ragnarok GM commands + w2[0] != '%' && // symbol of party chat speaking + w2[0] != '@') // symbol for @commands + command_symbol = w2[0]; + } + fclose(fp); + + return 0; +} + +/*========================================== + * 対象キャラクターを転職させる upper指定で転生や養子も可能 + *------------------------------------------ + */ +int charcommand_jobchange( + const int fd, struct map_session_data* sd, + const char* command, const char* message) +{ + char character[100]; + struct map_session_data* pl_sd; + int job = 0, upper = -1; + + memset(character, '\0', sizeof(character)); + + if (!message || !*message) { + clif_displaymessage(fd, "Please, enter a job and a player name (usage: #job/#jobchange )."); + return -1; + } + + if (sscanf(message, "%d %d %99[^\n]", &job, &upper, character) < 3) { //upper指定してある + upper = -1; + if (sscanf(message, "%d %99[^\n]", &job, character) < 2) { //upper指定してない上に何か足りない + clif_displaymessage(fd, "Please, enter a job and a player name (usage: #job/#jobchange )."); + return -1; + } + } + + if ((pl_sd = map_nick2sd(character)) != NULL) { + if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change job only to lower or same level + if ((job >= 0 && job < MAX_PC_CLASS)) { + + // fix pecopeco display + if ((job != 13 && job != 21 && job != 4014 && job != 4022)) { + if (pc_isriding(sd)) { + if (pl_sd->status.class == 13) + pl_sd->status.class = pl_sd->view_class = 7; + if (pl_sd->status.class == 21) + pl_sd->status.class = pl_sd->view_class = 14; + if (pl_sd->status.class == 4014) + pl_sd->status.class = pl_sd->view_class = 4008; + if (pl_sd->status.class == 4022) + pl_sd->status.class = pl_sd->view_class = 4015; + pl_sd->status.option &= ~0x0020; + clif_changeoption(&pl_sd->bl); + pc_calcstatus(pl_sd, 0); + } + } else { + if (!pc_isriding(sd)) { + if (job == 13) + job = 7; + if (job == 21) + job = 14; + if (job == 4014) + job = 4008; + if (job == 4022) + job = 4015; + } + } + + if (pc_jobchange(pl_sd, job, upper) == 0) + clif_displaymessage(fd, msg_table[48]); // Character's job changed. + else { + clif_displaymessage(fd, msg_table[192]); // Impossible to change the character's job. + return -1; + } + } else { + clif_displaymessage(fd, msg_table[49]); // Invalid job ID. + return -1; + } + } else { + clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. + return -1; + } + } else { + clif_displaymessage(fd, msg_table[3]); // Character not found. + return -1; + } + + return 0; +} + +/*========================================== + * + *------------------------------------------ + */ +int charcommand_petrename( + const int fd, struct map_session_data* sd, + const char* command, const char* message) +{ + char character[100]; + struct map_session_data *pl_sd; + + memset(character, '\0', sizeof(character)); + + if (!message || !*message || sscanf(message, "%99[^\n]", character) < 1) { + clif_displaymessage(fd, "Please, enter a player name (usage: #petrename )."); + return -1; + } + + if ((pl_sd = map_nick2sd(character)) != NULL) { + if (pl_sd->status.pet_id > 0 && pl_sd->pd) { + if (pl_sd->pet.rename_flag != 0) { + pl_sd->pet.rename_flag = 0; + intif_save_petdata(pl_sd->status.account_id, &pl_sd->pet); + clif_send_petstatus(pl_sd); + clif_displaymessage(fd, msg_table[189]); // This player can now rename his/her pet. + } else { + clif_displaymessage(fd, msg_table[190]); // This player can already rename his/her pet. + return -1; + } + } else { + clif_displaymessage(fd, msg_table[191]); // Sorry, but this player has no pet. + return -1; + } + } else { + clif_displaymessage(fd, msg_txt(3)); // Character not found. + return -1; + } + + return 0; +} + + +/*========================================== + * + *------------------------------------------ + */ +int charcommand_petfriendly( + const int fd, struct map_session_data* sd, + const char* command, const char* message) +{ + int friendly = 0; + int t = 0; + char character[100]; + struct map_session_data *pl_sd; + + memset(character, '\0', sizeof(character)); + if (!message || !*message || sscanf(message,"%d %s",&friendly,character) < 2) { + clif_displaymessage(fd, "Please, enter a valid value (usage: " + "#petfriendly <0-1000> )."); + return -1; + } + + if (((pl_sd = map_nick2sd(character)) != NULL) && pc_isGM(sd)>pc_isGM(pl_sd)) { + if (pl_sd->status.pet_id > 0 && pl_sd->pd) { + if (friendly >= 0 && friendly <= 1000) { + if (friendly != pl_sd->pet.intimate) { + t = pl_sd->pet.intimate; + pl_sd->pet.intimate = friendly; + clif_send_petstatus(pl_sd); + clif_pet_emotion(pl_sd->pd,0); + if (battle_config.pet_status_support) { + if ((pl_sd->pet.intimate > 0 && t <= 0) || + (pl_sd->pet.intimate <= 0 && t > 0)) { + if (pl_sd->bl.prev != NULL) + pc_calcstatus(pl_sd, 0); + else + pc_calcstatus(pl_sd, 2); + } + } + clif_displaymessage(pl_sd->fd, msg_table[182]); // Pet friendly value changed! + clif_displaymessage(sd->fd, msg_table[182]); // Pet friendly value changed! + } else { + clif_displaymessage(fd, msg_table[183]); // Pet friendly is already the good value. + return -1; + } + } else { + clif_displaymessage(fd, msg_table[37]); // An invalid number was specified. + return -1; + } + } else { + return -1; + } + } else { + clif_displaymessage(fd, msg_txt(3)); // Character not found. + return -1; + } + + return 0; +} + +/*========================================== + * + *------------------------------------------ + */ +int charcommand_stats( + const int fd, struct map_session_data* sd, + const char* command, const char* message) +{ + char character[100]; + char job_jobname[100]; + char output[200]; + struct map_session_data *pl_sd; + int i; + + memset(character, '\0', sizeof(character)); + memset(job_jobname, '\0', sizeof(job_jobname)); + memset(output, '\0', sizeof(output)); + + if (!message || !*message || sscanf(message, "%99[^\n]", character) < 1) { + clif_displaymessage(fd, "Please, enter a player name (usage: #stats )."); + return -1; + } + + if ((pl_sd = map_nick2sd(character)) != NULL) { + struct { + const char* format; + int value; + } output_table[] = { + { "Base Level - %d", pl_sd->status.base_level }, + { job_jobname, pl_sd->status.job_level }, + { "Hp - %d", pl_sd->status.hp }, + { "MaxHp - %d", pl_sd->status.max_hp }, + { "Sp - %d", pl_sd->status.sp }, + { "MaxSp - %d", pl_sd->status.max_sp }, + { "Str - %3d", pl_sd->status.str }, + { "Agi - %3d", pl_sd->status.agi }, + { "Vit - %3d", pl_sd->status.vit }, + { "Int - %3d", pl_sd->status.int_ }, + { "Dex - %3d", pl_sd->status.dex }, + { "Luk - %3d", pl_sd->status.luk }, + { "Zeny - %d", pl_sd->status.zeny }, + { NULL, 0 } + }; + sprintf(job_jobname, "Job - %s %s", job_name(pl_sd->status.class), "(level %d)"); + sprintf(output, msg_table[53], pl_sd->status.name); // '%s' stats: + clif_displaymessage(fd, output); + for (i = 0; output_table[i].format != NULL; i++) { + sprintf(output, output_table[i].format, output_table[i].value); + clif_displaymessage(fd, output); + } + } else { + clif_displaymessage(fd, msg_table[3]); // Character not found. + return -1; + } + + return 0; +} + +/*========================================== + * Character Reset + *------------------------------------------ + */ +int charcommand_reset( + const int fd, struct map_session_data* sd, + const char* command, const char* message) +{ + char character[100]; + char output[200]; + struct map_session_data *pl_sd; + + memset(character, '\0', sizeof(character)); + memset(output, '\0', sizeof(output)); + + if (!message || !*message || sscanf(message, "%99[^\n]", character) < 1) { + clif_displaymessage(fd, "Please, enter a player name (usage: #reset )."); + return -1; + } + + if ((pl_sd = map_nick2sd(character)) != NULL) { + if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can reset a character only for lower or same GM level + pc_resetstate(pl_sd); + pc_resetskill(pl_sd); + sprintf(output, msg_table[208], character); // '%s' skill and stats points reseted! + clif_displaymessage(fd, output); + } else { + clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. + return -1; + } + } else { + clif_displaymessage(fd, msg_table[3]); // Character not found. + return -1; + } + + return 0; +} + +/*========================================== + * + *------------------------------------------ + */ +int charcommand_option( + const int fd, struct map_session_data* sd, + const char* command, const char* message) +{ + char character[100]; + int opt1 = 0, opt2 = 0, opt3 = 0; + struct map_session_data* pl_sd; + + memset(character, '\0', sizeof(character)); + + if (!message || !*message || + sscanf(message, "%d %d %d %99[^\n]", &opt1, &opt2, &opt3, character) < 4 || + opt1 < 0 || opt2 < 0 || opt3 < 0) { + clif_displaymessage(fd, "Please, enter valid options and a player name (usage: #option )."); + return -1; + } + + if ((pl_sd = map_nick2sd(character)) != NULL) { + if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change option only to lower or same level + pl_sd->opt1 = opt1; + pl_sd->opt2 = opt2; + pl_sd->status.option = opt3; + // fix pecopeco display + if (pl_sd->status.class == 13 || pl_sd->status.class == 21 || pl_sd->status.class == 4014 || pl_sd->status.class == 4022) { + if (!pc_isriding(pl_sd)) { // pl_sd have the new value... + if (pl_sd->status.class == 13) + pl_sd->status.class = pl_sd->view_class = 7; + else if (pl_sd->status.class == 21) + pl_sd->status.class = pl_sd->view_class = 14; + else if (pl_sd->status.class == 4014) + pl_sd->status.class = pl_sd->view_class = 4008; + else if (pl_sd->status.class == 4022) + pl_sd->status.class = pl_sd->view_class = 4015; + } + } else { + if (pc_isriding(pl_sd)) { // pl_sd have the new value... + if (pl_sd->disguise > 0) { // temporary prevention of crash caused by peco + disguise, will look into a better solution [Valaris] (code added by [Yor]) + pl_sd->status.option &= ~0x0020; + } else { + if (pl_sd->status.class == 7) + pl_sd->status.class = pl_sd->view_class = 13; + else if (pl_sd->status.class == 14) + pl_sd->status.class = pl_sd->view_class = 21; + else if (pl_sd->status.class == 4008) + pl_sd->status.class = pl_sd->view_class = 4014; + else if (pl_sd->status.class == 4015) + pl_sd->status.class = pl_sd->view_class = 4022; + else + pl_sd->status.option &= ~0x0020; + } + } + } + clif_changeoption(&pl_sd->bl); + pc_calcstatus(pl_sd, 0); + clif_displaymessage(fd, msg_table[58]); // Character's options changed. + } else { + clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. + return -1; + } + } else { + clif_displaymessage(fd, msg_table[3]); // Character not found. + return -1; + } + + return 0; +} + +/*========================================== + * + *------------------------------------------ + */ +int charcommand_save( + const int fd, struct map_session_data* sd, + const char* command, const char* message) +{ + char map_name[100]; + char character[100]; + struct map_session_data* pl_sd; + int x = 0, y = 0; + int m; + + memset(map_name, '\0', sizeof(map_name)); + memset(character, '\0', sizeof(character)); + + if (!message || !*message || sscanf(message, "%99s %d %d %99[^\n]", map_name, &x, &y, character) < 4 || x < 0 || y < 0) { + clif_displaymessage(fd, "Please, enter a valid save point and a player name (usage: #save )."); + return -1; + } + + if (strstr(map_name, ".gat") == NULL && strstr(map_name, ".afm") == NULL && strlen(map_name) < 13) // 16 - 4 (.gat) + strcat(map_name, ".gat"); + + if ((pl_sd = map_nick2sd(character)) != NULL) { + if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change save point only to lower or same gm level + m = map_mapname2mapid(map_name); + if (m < 0) { + clif_displaymessage(fd, msg_table[1]); // Map not found. + return -1; + } else { + if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) { + clif_displaymessage(fd, "You are not authorised to set this map as a save map."); + return -1; + } + pc_setsavepoint(pl_sd, map_name, x, y); + clif_displaymessage(fd, msg_table[57]); // Character's respawn point changed. + } + } else { + clif_displaymessage(fd, msg_table[81]); // Your GM level don't authorise you to do this action on this player. + return -1; + } + } else { + clif_displaymessage(fd, msg_table[3]); // Character not found. + return -1; + } + + return 0; +} + +/*========================================== + * + *------------------------------------------ + */ +//** Character Stats All by fritz +int charcommand_stats_all(const int fd, struct map_session_data* sd, const char* command, const char* message) +{ + char output[1024], gmlevel[1024]; + int i; + int count; + struct map_session_data *pl_sd; + + memset(output, '\0', sizeof(output)); + memset(gmlevel, '\0', sizeof(gmlevel)); + + count = 0; + for(i = 0; i < fd_max; i++) { + if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth) { + + if (pc_isGM(pl_sd) > 0) + sprintf(gmlevel, "| GM Lvl: %d", pc_isGM(pl_sd)); + else + sprintf(gmlevel, " "); + + sprintf(output, "Name: %s | BLvl: %d | Job: %s (Lvl: %d) | HP: %d/%d | SP: %d/%d", pl_sd->status.name, pl_sd->status.base_level, job_name(pl_sd->status.class), pl_sd->status.job_level, pl_sd->status.hp, pl_sd->status.max_hp, pl_sd->status.sp, pl_sd->status.max_sp); + clif_displaymessage(fd, output); + sprintf(output, "STR: %d | AGI: %d | VIT: %d | INT: %d | DEX: %d | LUK: %d | Zeny: %d %s", pl_sd->status.str, pl_sd->status.agi, pl_sd->status.vit, pl_sd->status.int_, pl_sd->status.dex, pl_sd->status.luk, pl_sd->status.zeny, gmlevel); + clif_displaymessage(fd, output); + clif_displaymessage(fd, "--------"); + count++; + } + } + + if (count == 0) + clif_displaymessage(fd, msg_table[28]); // No player found. + else if (count == 1) + clif_displaymessage(fd, msg_table[29]); // 1 player found. + else { + sprintf(output, msg_table[30], count); // %d players found. + clif_displaymessage(fd, output); + } + + return 0; +} + diff --git a/src/map/charcommand.h b/src/map/charcommand.h index 8fb17fb64..11babb816 100644 --- a/src/map/charcommand.h +++ b/src/map/charcommand.h @@ -1,50 +1,50 @@ -#ifndef _CHARCOMMAND_H_ -#define _CHARCOMMAND_H_ - -enum CharCommandType { - CharCommand_None = -1, - CharCommandJobChange, - CharCommandPetRename, - CharCommandPetFriendly, - CharCommandReset, - CharCommandStats, - CharCommandOption, - CharCommandSave, - CharCommandStatsAll, - -#ifdef TXT_ONLY -/* TXT_ONLY */ - -/* TXT_ONLY */ -#else -/* SQL-only */ - -/* SQL Only */ -#endif - - // End. No more commans after this line. - CharCommand_Unknown, - CharCommand_MAX -}; - -typedef enum CharCommandType CharCommandType; - -typedef struct CharCommandInfo { - CharCommandType type; - const char* command; - int level; - int (*proc)(const int, struct map_session_data*, - const char* command, const char* message); -} CharCommandInfo; - -CharCommandType -is_charcommand(const int fd, struct map_session_data* sd, const char* message, int gmlvl); - -CharCommandType charcommand( - const int level, const char* message, CharCommandInfo* info); -int get_charcommand_level(const CharCommandType type); - -int charcommand_config_read(const char *cfgName); - -#endif - +#ifndef _CHARCOMMAND_H_ +#define _CHARCOMMAND_H_ + +enum CharCommandType { + CharCommand_None = -1, + CharCommandJobChange, + CharCommandPetRename, + CharCommandPetFriendly, + CharCommandReset, + CharCommandStats, + CharCommandOption, + CharCommandSave, + CharCommandStatsAll, + +#ifdef TXT_ONLY +/* TXT_ONLY */ + +/* TXT_ONLY */ +#else +/* SQL-only */ + +/* SQL Only */ +#endif + + // End. No more commans after this line. + CharCommand_Unknown, + CharCommand_MAX +}; + +typedef enum CharCommandType CharCommandType; + +typedef struct CharCommandInfo { + CharCommandType type; + const char* command; + int level; + int (*proc)(const int, struct map_session_data*, + const char* command, const char* message); +} CharCommandInfo; + +CharCommandType +is_charcommand(const int fd, struct map_session_data* sd, const char* message, int gmlvl); + +CharCommandType charcommand( + const int level, const char* message, CharCommandInfo* info); +int get_charcommand_level(const CharCommandType type); + +int charcommand_config_read(const char *cfgName); + +#endif + -- cgit v1.2.3-70-g09d2 From 9deed641d8c485b858360e8f91b2fcb83368ec14 Mon Sep 17 00:00:00 2001 From: celest Date: Sun, 28 Nov 2004 20:34:22 +0000 Subject: Resubmitting changes from /trunk to /branches/stable =p git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@405 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 7 +++++++ Dev/bugs.txt | 5 +++++ src/map/battle.c | 21 ++++++++++++--------- src/map/pc.c | 20 +++++++++++++++----- src/map/skill.c | 32 +++++++++++++++++--------------- 5 files changed, 56 insertions(+), 29 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 689cd90eb..36d461626 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -6,6 +6,13 @@ Date Added * Changed Suilds Extention Skill to +6 people per level. [Lupus] (tested it for 2 weeks! or a big server) * Added a fix for gettimeofday() for WIN32 [Codemaster] + * skill Updates: + - Updated Slow Poison, modified checks for skill_unit_onplace abit. [celest] + - Updated Finger Offensive, thanks to orn [celest] + * Updated packet_ver_flag's default value, thanks to iscandium [celest] + * Added warning if motd.txt was not found [celest] + (Turn on error_log in battle_athena.conf to enable it) + 11/27 * Fixed a few map crashes when char-server crashes [Wizputer] * Added fix of 0x2aff and 0x2af8 flooding [Wizputer - thanks Toster] diff --git a/Dev/bugs.txt b/Dev/bugs.txt index 944e98837..81e707d07 100644 --- a/Dev/bugs.txt +++ b/Dev/bugs.txt @@ -83,3 +83,8 @@ http://eathena.deltaanime.net/forum/viewtopic.php?p=79951#79951) Problem: @disguise has no death sprite so the client crashes when you die, a solution would be that upon death before the sprites change you're undisguised. Assigned: N/a Progess: 0% + +Problem: Changing email and Broadcast both use the same packets / Packet 0x3000 assigned to changing email instead of broadcasting? +Notes: Refer to char.c line 2272 and line 2416, intif.c line 107, chrif.c line 377 +Assigned: N/A +Progress: 0% diff --git a/src/map/battle.c b/src/map/battle.c index 24547762d..00ca5a9e0 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2057,8 +2057,9 @@ static struct Damage battle_calc_pet_weapon_attack( damage2 = damage2*(100+ 40*skill_lv)/100; break; case MO_FINGEROFFENSIVE: //指弾 - damage = damage * (100 + 50 * skill_lv) / 100; + damage = damage * (125 + 25 * skill_lv) / 100; div_ = 1; + flag=(flag&~BF_RANGEMASK)|BF_LONG; //orn break; case MO_INVESTIGATE: // 発 勁 if(def1 < 1000000) @@ -2549,8 +2550,9 @@ static struct Damage battle_calc_mob_weapon_attack( damage2 = damage2*(100+ 40*skill_lv)/100; break; case MO_FINGEROFFENSIVE: //指弾 - damage = damage * (100 + 50 * skill_lv) / 100; + damage = damage * (125 + 25 * skill_lv) / 100; div_ = 1; + flag=(flag&~BF_RANGEMASK)|BF_LONG; //orn break; case MO_INVESTIGATE: // 発 勁 if(def1 < 1000000) @@ -3329,15 +3331,16 @@ static struct Damage battle_calc_pc_weapon_attack( break; case MO_FINGEROFFENSIVE: //指弾 if(battle_config.finger_offensive_type == 0) { - damage = damage * (100 + 50 * skill_lv) / 100 * sd->spiritball_old; - damage2 = damage2 * (100 + 50 * skill_lv) / 100 * sd->spiritball_old; + damage = damage * (125 + 25 * skill_lv) / 100 * sd->spiritball_old; + damage2 = damage2 * (125 + 25 * skill_lv) / 100 * sd->spiritball_old; div_ = sd->spiritball_old; } else { - damage = damage * (100 + 50 * skill_lv) / 100; - damage2 = damage2 * (100 + 50 * skill_lv) / 100; + damage = damage * (125 + 25 * skill_lv) / 100; + damage2 = damage2 * (125 + 25 * skill_lv) / 100; div_ = 1; } + flag=(flag&~BF_RANGEMASK)|BF_LONG; //orn break; case MO_INVESTIGATE: // 発 勁 if(def1 < 1000000) { @@ -5418,7 +5421,7 @@ void battle_set_defaults() { battle_config.ban_spoof_namer = 5; // added by [Yor] (default: 5 minutes) battle_config.hack_info_GM_level = 60; // added by [Yor] (default: 60, GM level) battle_config.any_warp_GM_min_level = 20; // added by [Yor] - battle_config.packet_ver_flag = 63; // added by [Yor] + battle_config.packet_ver_flag = 511; // added by [Yor] battle_config.min_hair_style = 0; battle_config.max_hair_style = 20; battle_config.min_hair_color = 0; @@ -5548,8 +5551,8 @@ void battle_validate_conf() { battle_config.any_warp_GM_min_level = 100; // at least 1 client must be accepted - if ((battle_config.packet_ver_flag & 63) == 0) // added by [Yor] - battle_config.packet_ver_flag = 63; // accept all clients + if ((battle_config.packet_ver_flag & 511) == 0) // added by [Yor] + battle_config.packet_ver_flag = 511; // accept all clients if (battle_config.night_darkness_level > 10) // Celest battle_config.night_darkness_level = 10; diff --git a/src/map/pc.c b/src/map/pc.c index 5ec5b8a1b..bbf40eae6 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -31,6 +31,7 @@ #include "nullpo.h" #include "atcommand.h" #include "log.h" +#include "showmsg.h" #ifndef TXT_ONLY // mail system [Valaris] #include "mail.h" @@ -841,6 +842,10 @@ int pc_authok(int id, int login_id2, time_t connect_until_time, struct mmo_chars } fclose(fp); } + else if(battle_config.error_log) { + sprintf(buf, "%s not found\n", motd_txt); + ShowWarning (buf); + } } #ifndef TXT_ONLY @@ -5947,10 +5952,15 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) return 1; // check if we are changing from 1st to 2nd job - if (s_class.job > 0 && s_class.job < 7 && job >= 7 && job <= 21) - sd->change_level = sd->status.job_level; - else - sd->change_level = 0; + if (job >= 7 && job <= 21) { + if (s_class.job > 0 && s_class.job < 7) + sd->change_level = sd->status.job_level; + else + sd->change_level = 40; + } + else + sd->change_level = 0; + pc_setglobalreg (sd, "jobchange_level", sd->change_level); sd->status.class = sd->view_class = b_class; @@ -7341,7 +7351,7 @@ static int pc_natural_heal_sub(struct map_session_data *sd,va_list ap) { if ((battle_config.natural_heal_weight_rate > 100 || sd->weight*100/sd->max_weight < battle_config.natural_heal_weight_rate) && !pc_isdead(sd) && !pc_ishiding(sd) && - sd->sc_data[SC_POISON].timer == -1 && + !(sd->sc_data[SC_POISON].timer != -1 && sd->sc_data[SC_SLOWPOISON].timer == -1) && sd->sc_data[SC_BERSERK].timer == -1 ) { pc_natural_heal_hp(sd); if( sd->sc_data && sd->sc_data[SC_EXTREMITYFIST].timer == -1 && //阿修羅?態ではSPが回復しない diff --git a/src/map/skill.c b/src/map/skill.c index ed0521aec..dc708c906 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2384,16 +2384,16 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s { struct status_change *sc_data = battle_get_sc_data(src); - if(!battle_config.finger_offensive_type) - skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); - else { - skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); - if(sd) { - for(i=1;ispiritball_old;i++) - skill_addtimerskill(src,tick+i*200,bl->id,0,0,skillid,skilllv,BF_WEAPON,flag); - sd->canmove_tick = tick + (sd->spiritball_old-1)*200; + if(!battle_config.finger_offensive_type) + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + else { + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + if(sd) { + for(i=1;ispiritball_old;i++) + skill_addtimerskill(src,tick+i*200,bl->id,0,0,skillid,skilllv,BF_WEAPON,flag); + sd->canmove_tick = tick + (sd->spiritball_old-1)*200; + } } - } if(sc_data && sc_data[SC_BLADESTOP].timer != -1) skill_status_change_end(src,SC_BLADESTOP,-1); } @@ -5965,14 +5965,16 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int int type=SkillStatusChangeTable[sg->skill_id]; if(sg->src_id == bl->id) break; - if(sc_data && sc_data[type].timer==-1) - skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2, - (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); - else if( (unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){ - if( unit2->group && DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + if(sc_data) { + if (sc_data[type].timer==-1) skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2, (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); - ts->tick-=sg->interval; + else if( (unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){ + if( unit2->group && DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2, + (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); + ts->tick-=sg->interval; + } } } break; -- cgit v1.2.3-70-g09d2 From 887f544e1df3f6c91c68890b0c2564e635191a2d Mon Sep 17 00:00:00 2001 From: Lupus Date: Sun, 28 Nov 2004 21:56:13 +0000 Subject: Fixed damage formula of Cart revolution: 150% +1% per 80ea Removed 2x Chance of Equipment Breaking during CRITICAL attacks git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@406 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 4 +++- src/map/battle.c | 36 +++++++++++------------------------- 2 files changed, 14 insertions(+), 26 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 36d461626..1830bfd33 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,9 +1,11 @@ Date Added 11/28 + * Fixed damage formula of Cart revolution: 150% +1% per 80ea [Lupus] + * Removed 2x Chance of Equipment Breaking during CRITICAL attacks [Lupus] * Fix some file props [MouseJstr] * Added map_versionscreen(), displayed when --version flag is passed on command-line. [MC Cameri] * Finished map_helpscreen(), displayed when --help flag passed on command-line. [MC Cameri] - * Changed Suilds Extention Skill to +6 people per level. [Lupus] + * Changed Guilds Extention Skill to +6 people per level. [Lupus] (tested it for 2 weeks! or a big server) * Added a fix for gettimeofday() for WIN32 [Codemaster] * skill Updates: diff --git a/src/map/battle.c b/src/map/battle.c index 00ca5a9e0..7aabcc39a 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1698,7 +1698,7 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int weapon = sd->weapontype2; switch(weapon) { - case 0x01: // 短剣 (Updated By AppleGirl) + case 0x01: // 短剣 Knife case 0x02: // 1HS { // 剣修練(+4 〜 +40) 片手剣 短剣含む @@ -1716,16 +1716,6 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int break; } case 0x04: // 1HL - { - // 槍修練(+4 〜 +40,+5 〜 +50) 槍 - if((skill = pc_checkskill(sd,KN_SPEARMASTERY)) > 0) { - if(!pc_isriding(sd)) - damage += (skill * 4); // ペコに乗ってない - else - damage += (skill * 5); // ペコに乗ってる - } - break; - } case 0x05: // 2HL { // 槍修練(+4 〜 +40,+5 〜 +50) 槍 @@ -1737,13 +1727,7 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int } break; } - case 0x06: // 片手斧 - { - if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0) { - damage += (skill * 3); - } - break; - } + case 0x06: // 片手斧 case 0x07: // Axe by Tato { if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0) { @@ -1765,7 +1749,7 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int break; case 0x0b: // 弓 break; - case 0x00: // 素手 + case 0x00: // 素手 Bare Hands case 0x0c: // Knuckles { // 鉄拳(+3 〜 +30) 素手,ナックル @@ -3241,8 +3225,10 @@ static struct Damage battle_calc_pc_weapon_attack( break; case MC_CARTREVOLUTION: // カートレボリューション if(sd->cart_max_weight > 0 && sd->cart_weight > 0) { - damage = (damage*(150 + pc_checkskill(sd,BS_WEAPONRESEARCH) + (sd->cart_weight*100/sd->cart_max_weight) ) )/100; - damage2 = (damage2*(150 + pc_checkskill(sd,BS_WEAPONRESEARCH) + (sd->cart_weight*100/sd->cart_max_weight) ) )/100; + damage = ( damage*(150 + sd->cart_weight/80) )/100; //fixed CARTREV damage [Lupus] + damage2 = ( damage2*(150 + sd->cart_weight/80) )/100; + //damage = (damage*(150 + pc_checkskill(sd,BS_WEAPONRESEARCH) + (sd->cart_weight*100/sd->cart_max_weight) ) )/100; + //damage2 = (damage2*(150 + pc_checkskill(sd,BS_WEAPONRESEARCH) + (sd->cart_weight*100/sd->cart_max_weight) ) )/100; } else { damage = (damage*150)/100; @@ -3982,8 +3968,8 @@ struct Damage battle_calc_weapon_attack( } if(sd->sc_data[SC_OVERTHRUST].timer!=-1) breakrate+=20*sd->sc_data[SC_OVERTHRUST].val1; - if(wd.type==0x0a) - breakrate*=2; + //if(wd.type==0x0a) //removed! because CRITS don't affect on breaking chance [Lupus] + // breakrate*=2; if(rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) { if(pc_breakweapon(sd)==1) wd = battle_calc_pc_weapon_attack(src,target,skill_num,skill_lv,wflag); @@ -3994,8 +3980,8 @@ struct Damage battle_calc_weapon_attack( if (battle_config.equipment_breaking && target->type == BL_PC && (wd.damage > 0 || wd.damage2 > 0)) { int breakrate=1; if(src->type==BL_PC && ((struct map_session_data *)src)->sc_data[SC_MELTDOWN].timer!=-1) breakrate+=70*((struct map_session_data *)src)->sc_data[SC_MELTDOWN].val1; - if (wd.type==0x0a) - breakrate*=2; + //if (wd.type==0x0a) removed! because CRITS don't affect on breaking chance [Lupus] + // breakrate*=2; if (rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) { pc_breakarmor((struct map_session_data *)target); } -- cgit v1.2.3-70-g09d2 From 64222fdc35acf719398aee8581b5009439ac32d6 Mon Sep 17 00:00:00 2001 From: mc_cameri Date: Mon, 29 Nov 2004 04:23:53 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@409 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ Dev/bugs.txt | 6 +----- src/common/showmsg.c | 21 +++++++++++---------- src/map/map.c | 10 +++++++--- 4 files changed, 21 insertions(+), 18 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 8ea2d9b9a..69d0e7548 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 11/28 + * Changed MSG_INFO color to bright white, since bright blue want so bright... [MC Cameri] + * Made Map Removed: %d string be displayed only if there were maps removed. [MC Cameri] * Fixed online system for char not sending players left "online" to login when restarting [Wizputer] * Fixed damage formula of Cart revolution: 150% +1% per 80ea [Lupus] * Removed 2x Chance of Equipment Breaking during CRITICAL attacks [Lupus] diff --git a/Dev/bugs.txt b/Dev/bugs.txt index 81e707d07..9597f8f08 100644 --- a/Dev/bugs.txt +++ b/Dev/bugs.txt @@ -39,10 +39,6 @@ Problem: With 1025 client, some NPC sprites look different (i.e. Black Jack's NP Assigned: N/A Progess: 0% -Problem: Thiefs can steal ZENY / items from TREASURE chests!!baaaah!! and Guardians! -Assigned: N/A -Progess: 0% - Problem: Joker card 4139 lets anyone to steal money / zeny. Just like he's a thief. It shoul;d be revised - success rates lowered and "steal item" disabled Assigned: N/A Progess: 0% @@ -65,7 +61,7 @@ Progess: ~100% (Notes: Maybe there's a less messy way? xP) Problem: Char server and Map server crash when you recall some one. Assigned: N/A -Progess: 0% +Progess: 0% Problem: Monk's Skill ROOT instantly reboots server Assigned: Celest diff --git a/src/common/showmsg.c b/src/common/showmsg.c index b65181f3a..f60fb88b4 100644 --- a/src/common/showmsg.c +++ b/src/common/showmsg.c @@ -19,38 +19,39 @@ int _ShowMessage(const char *string, enum msg_type flag){ // by MC Cameri } switch (flag) { case MSG_STATUS: //Bright Green (To inform about good things) - strcpy(prefix,"\033[1;32m[Status]\033[0;0m: "); + strcpy(prefix,"\033[1;32m[Status]\033[0;0m:"); break; /* //Do we really need this now? [MC Cameri] case MSG_SQL: //Bright Violet (For dumping out anything related with SQL) - strcpy(prefix,"\033[1;35m[SQL]\033[0;0m: "); + strcpy(prefix,"\033[1;35m[SQL]\033[0;0m:"); break; */ - case MSG_INFORMATION: //Bright Blue (Variable information) - strcpy(prefix,"\033[1;34m[Info]\033[0;0m: "); + case MSG_INFORMATION: //Bright White (Variable information) + strcpy(prefix,"\033[1;29m[Info]\033[0;0m:"); break; case MSG_NOTICE: //Bright White (Less than a warning) - strcpy(prefix,"\033[1;29m[Notice]\033[0;0m: "); + strcpy(prefix,"\033[1;29m[Notice]\033[0;0m:"); break; case MSG_WARNING: //Bright Yellow - strcpy(prefix,"\033[1;33m[Warning]\033[0;0m: "); + strcpy(prefix,"\033[1;33m[Warning]\033[0;0m:"); break; case MSG_ERROR: //Bright Red (Regular errors) - strcpy(prefix,"\033[1;31m[Error]\033[0;0m: "); + strcpy(prefix,"\033[1;31m[Error]\033[0;0m:"); break; case MSG_FATALERROR: //Bright Red (Fatal errors, abort(); if possible) - strcpy(prefix,"\033[1;31m[Fatal Error]\033[0;0m: "); + strcpy(prefix,"\033[1;31m[Fatal Error]\033[0;0m:"); break; default: ShowError("In function _ShowMessage() -> Invalid flag passed.\n"); return 1; } - output = (char*)malloc(sizeof(char)*(strlen(prefix)+strlen(string))+1); + output = (char*)malloc(sizeof(char)*(strlen(prefix)+strlen(string)+2)); // +2: space and a \0 if (output == NULL) { return 1; -// abort(); // Kill server? +// abort(); // Kill server? Deadly } strcpy(output,prefix); + strcpy(output," "); strcat(output,string); printf(output); fflush(stdout); diff --git a/src/map/map.c b/src/map/map.c index 56e489639..4addd1a26 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -1656,9 +1656,13 @@ int map_readallmap(void) { } free(waterlist); - printf("\rMaps Loaded: %d %60s\n",map_num,""); - printf("\rMaps Removed: %d \n",maps_removed); - + printf("\r"); + snprintf(tmp_output,sizeof(tmp_output),"Maps Loaded: \033[1;29m%d\033[0;0m %50s\n",map_num,""); + ShowInfo(tmp_output); + if (maps_removed) { + snprintf(tmp_output,sizeof(tmp_output),"Maps Removed: %d\n",maps_removed); + ShowNotice(tmp_output); + } return 0; } -- cgit v1.2.3-70-g09d2 From 02720aae3af5cc563a8b6dd374b5aebd5a0da074 Mon Sep 17 00:00:00 2001 From: amber Date: Mon, 29 Nov 2004 05:19:01 +0000 Subject: A few bug fixes git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@412 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 8 + Dev/bugs.txt | 4 + conf-tmpl/atcommand_athena.conf.orig | 569 ----------------------------------- src/char_sql/char.c | 18 +- src/common/socket.c | 13 +- src/common/socket.h | 2 + src/login_sql/login.c | 2 +- src/map/map.c | 6 +- 8 files changed, 43 insertions(+), 579 deletions(-) delete mode 100644 conf-tmpl/atcommand_athena.conf.orig (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 98fe98ac4..b7caeb230 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,13 @@ Date Added 11/28 + * Fixed a crash in login_sql/login.c [MouseJstr] + * made common/socket.c more crash resistant [MouseJstr] + * Added flush_fifos to socket.c so that we can make sure everything + has been sent before we shut the process down [MouseJstr] + * Modified src/char_sql/char.c to flush fifos on exit [MouseJstr] + * Fixed a crash in src/map/map.c shutdown where it would + use the char_fd session after it was alrady cleaned up [MouseJstr] + * removed conf-templ/atcommand_athena.conf.orig [MouseJstr] * removed a USE from sql-files/main.sql that should not be there [MouseJstr] * Changed MSG_INFO color to bright white, since bright blue want so bright... [MC Cameri] * Made Map Removed: %d string be displayed only if there were maps removed. [MC Cameri] diff --git a/Dev/bugs.txt b/Dev/bugs.txt index 9597f8f08..c58c6de26 100644 --- a/Dev/bugs.txt +++ b/Dev/bugs.txt @@ -84,3 +84,7 @@ Problem: Changing email and Broadcast both use the same packets / Packet Notes: Refer to char.c line 2272 and line 2416, intif.c line 107, chrif.c line 377 Assigned: N/A Progress: 0% + +Problem: Sanctuary heal emp during WoE? +Assigned: N/A +Progress: 0% diff --git a/conf-tmpl/atcommand_athena.conf.orig b/conf-tmpl/atcommand_athena.conf.orig deleted file mode 100644 index 3a3e359ae..000000000 --- a/conf-tmpl/atcommand_athena.conf.orig +++ /dev/null @@ -1,569 +0,0 @@ -// Athena atcommand Configuration file. -// Translated by Peter Kieser - -// Set here the symbol that you want to use for your commands -// Only 1 character is get (default is '@'). You can set any character, -// except control-character (0x00-0x1f), '%' (party chat speaking) and '/' (standard ragnarok GM commands) -// With default character, all commands begin by a '@': @revive -command_symbol: @ - - -// Sets the level of the users that can use the GM commands. -// : level -// When battle_athena.conf has atcommand_gm_only set to no, -// normal players (gm level 0) can use GM commands if you set 0 to the command level. -// Max GM level is 99. If you want forbid a command to all people, set it with level 100. - -// Default values are set to define different GM levels like follow: -// 0: normal player -// -> no special advantage (only @time to know time and if at_command_gm_only is disabled) -// 1: Super player -// -> some (very) little advantages: storage, petrename, etc... -// 10: Super player+ -// -> same of Super player with !go (very super player) -// 20: Mediator -// -> it's a GM that only need to know people, and move to their to speak with them (they can access to any command about wisps) -// 40: Sub-GM -// -> This GM can help a GM, and can not create item or zeny or modify a character (can have some information commands) -// 50: Sub-GM+ -// -> This GM can change some non-important things on a character -// 60: GM -// -> can do almost anything (excep administration, and mass commands) -// GM is the first level where we can modify a character with important value, create items or create zenys -// 80: GM Chief -// -> can do anything, except administration commands -// 99: Administrator -// -> can do anything! - - -//-------------------------- -// 0: normal player commands - -// Give server time. (6 same commands) -time: 0 -date: 0 -server_date: 0 -serverdate: 0 -server_time: 0 -servertime: 0 - -// Display your ignore list (people from which you ignore wisps) -ignorelist: 0 - -// To change your (own) email (characters protection) -// note: this command doesn't check email itself, but check structure of the email (xxx@xxx) -// if you want be sure of each e-mail disable this option (value: 100) -email: 0 - -// To become GM (need password; password is set in login_athena.conf). -// special!: only a non-GM (player with gm level 0) need to have this command. -// if you change the value, be sure of what you do! -// To be able to create a gm with @gm, you must: -// - give a level to level_new_gm (parameter of login_athena.conf) (not 0) -// - enable to level 0 the @gm command (atcommand_athena.conf) (default 100) - Only level 0 can give access to this command -// - enable gm commands to normal player (battle_athena.conf, atcommand_gm_only parameter) -// - and normal player must give correct password when he use the @gm command (gm_pass paramter in login_athena.conf) -gm: 100 - - -//------------------------- -// 1: Super player commands - -// Suicide your character. -die: 1 - -// Enables you to rename your pet. -petrename: 1 - -party: 1 - -// Brings up your personal storage wherever you are. -storage: 1 - -// Locate someone on a map, returns your coordinates if the person isn't on. -where: 1 - - -//--------------------------- -// 10: Super player+ commands - -// Spawns you to set points in major cities. -go: 10 - - -//---------------------- -// 20: Mediator commands - -// Displays helpfile in Athena base directory (2 same commands). -help: 20 -h: 20 - -// Warp yourself to a person (3 same commands + /shift). -jumpto: 20 -goto: 20 -warpto: 20 - -// follow a player (including warping to them) -follow: 20 - -// Disconnects a user from the server (1 command + right click menu for GM "(name) force to quit"). -kick: 20 - -// Changes your apperance. -model: 20 - -// To get a peco to (un)ride -mountpeco: 20 - -// Returns list of logged in characters with their position (2 same commands). -who: 20 -whois: 20 - -// Returns list of logged in characters with their job. -who2: 20 - -// Returns list of logged in characters with their party/guild. -who3: 20 - -// Returns list of logged in characters with their position in a specifical map. -whomap: 20 - -// Returns list of logged in characters with their job in a specifical map. -whomap2: 20 - -// Returns list of logged in characters with their party/guild in a specifical map. -whomap3: 20 - -// Like @who+@who2+who3, but only for GM. -whogm: 20 - -// Change your appearence to other players to a mob. -disguise: 20 - -//Restore your normal appearance. -undisguise: 20 - -// Display ignore list of a player (people from which the player ignore wisps) -charignorelist: 20 - -// Enable all wispers for a player -inall: 20 - -// Disable all wispers for a player -exall: 20 - - -//-------------------- -// 40: Sub-GM commands - -// Broadcast to the whole server. Using (1 command + /nb, /b). -broadcast: 40 - -// Broadcast to the map you are on (1 command + /lb, /nlb). -local_broadcast: 40 - -// Broadcast (with or without name). -kami: 40 -kamib: 40 - -// Enables you to go to a certain map, at (x,y) coordinates. (@mapmove + /mm or /mapmove) -mapmove: 40 - -// Enables you to view other characters stats. -charstats: 40 - -// Shows Stats Of All Characters Online -charstatsall: 40 - -// Enables GVG on a map (2 same commands). -gvgon: 40 -gpvpon: 40 - -// Turns GVG (Guild v. Guild) off on a map (2 same commands). -gvgoff: 40 -gpvpoff: 40 - -// Heals a person to full HP/SP. -heal: 40 - -// GM Hide (enables you to be invisible to characters, and most monsters) (1 command + /hide). -hide: 40 - -// Changes your job to one you specify (2 same commands). -job: 40 -jobchange: 40 - -// Enables you to to jump randomly on a map (that you are already on). -jump: 40 - -// Warps you to your last save point (2 same commands). -return: 40 -load: 40 - -// Enables lost skills. -lostskill: 40 - -// Saves a warp point. -memo: 40 - -// Set your character display options. (Visual effects of your character) -option: 40 - -//Makes an egg -makeegg: 40 - -//Hatches an egg -hatch: 40 - -// Sets the level of intemecy of your pet. -petfriendly: 40 - -// Sets hunger level of your pet. -pethungry: 40 - -// Turns PVP (Person v. Person) off on a map. -pvpoff: 40 - -// Enables PVP on a map. -pvpon: 40 - -// Enables platinum skills. -questskill: 40 - -// Sets the speed you can walk/attack at. Default is 150. -speed: 40 - -// Enables spirit sphere balls. -spiritball: 40 - -// Warp yourself to a certain map, at (x,y) coordinates (2 same commands). -rura: 40 -warp: 40 - -// Changes GM clothes color (2 same commands) -dye: 40 -ccolor: 40 - -// Changes GM hair style (2 same commands) -hairstyle: 40 -hstyle: 40 - -// Changes GM hair color (2 same commands) -haircolor: 40 -hcolor: 40 - -// Deletes all your items. -itemreset: 40 - -// Kill all monsters in map (without drops) -killmonster2: 40 - -// Sets your spawn point (aka save point). -save: 40 - -// Do some visual effect on your character -effect: 40 - -// Display all items of a player -charitemlist: 40 - -// Display all items of a player's storage -charstoragelist: 40 - -// Display all items of a player's cart -charcartlist: 40 - - -//--------------------- -// 50: Sub-GM+ commands - -// Changes character's model -charmodel: 50 - -guild: 50 - -// Brings up your guild storage wherever you are. -gstorage: 50 - -// Spawns a monster, and a certain amount (3 same commands + /monster). -spawn: 50 -monster: 50 -summon: 50 - -// Spawns a monster with parameters not in same order of @spawn. -monster2: 50 - -// To get a peco to (un)ride for another player. -charmountpeco: 50 - -// Enables to give possibility to a player to rename his/her pet. -charpetrename: 50 - - -//---------------- -// 60: GM commands - -// Starts Guild Wars -agitstart: 60 - -// Ends Guild Wars -agitend: 60 - -// Resurects yourself. -alive: 60 - -// Levels your character to specified level (adds to your level) (3 same commands). -lvup: 60 -baselvlup: 60 -blevel: 60 - -// Raises your job level (3 same commands). -joblvup: 60 -joblvlup: 60 -jlevel: 60 - -// Sets another persons base level. -charbaselvl: 60 - -// Changes the sex of an online player (all characters on the account) -charchangesex: 60 - -// Remove items from a character -chardelitem: 60 - -// Sets another persons job level. -charjlvl: 60 - -// Sets the job of another character (2 same commands). -charjob: 60 -charjobchange: 60 - -// Set options on another character. -charoption: 60 - -// Gives another character status points -charstpoint: 60 - -// Gives another character skill points -charskpoint: 60 - -// Resets another character's stats -charreset: 60 - -// Resets another character's status, skills -charstreset: 60 -charskreset: 60 - -// Saves the respawn point of another character. -charsave: 60 - -// Changes another character's zenny -charzeny: 60 - -// Levels your guild to specified level (2 same commands). -guildlvup: 60 -guildlvlup: 60 - -idsearch: 60 - -// Creates an item of your choosing, either Item ID or Name (1 command + /item). -item: 60 - -// Creates a complet item (card, etc...) of your choosing, either Item ID or Name. -item2: 60 - -// ?? -itemcheck: 60 - -// Kill another character without hitting them. -kill: 60 - -// Kill all monsters in map (with drops) -killmonster: 60 - -// Creates yourself a pet egg, have to use Pet ID. -makeegg: 60 - -// Instantly kills player whose name is entered and deals insane damage to everything around. -nuke: 60 - -// Enable hitting a player even when not in pvp -killer: 60 - -// Creates weapon of desired element. -produce: 60 - -// Warps a character to you (1 command + /recall). -recall: 60 - -// Refines all weapons in your items list. -refine: 60 - -// Will repair all broken items in inventory. -repairall: 60 - -// Revives a character, and heals them. -revive: 60 - -// Warp another person to a certain map, at (x,y) coordinates (2 same commands). -rura+: 60 -charwarp: 60 - -// Change Status of your character -str: 60 -agi: 60 -vit: 60 -int: 60 -dex: 60 -luk: 60 - -// Gets all skills (4 same commands) -allskill: 60 -allskills: 60 -skillall: 60 -skillsall: 60 - -// sets GM stats to maximum (4 same commands) -statall: 60 -statsall: 60 -allstats: 60 -allstat: 60 - -// Gives you job points. -stpoint: 60 - -// Gives you skill points of desired amount. -skpoint: 60 - -// Warps all online character of a guild to you. (at least one member of that guild must be on.) -guildrecall: 60 - -// Warps all online character of a party to you. (at least one party member must be online.) -partyrecall: 60 - -// Allows you to spy on any Guilds Guild chat. (at least one member of that guild must be on.) -guildspy: 60 - -//Allows you to spy on any party's party chat. (at least one party member must be online.) -partyspy: 60 - -// Gives you money (zeny) of desired amount. -zeny: 60 - -// To block definitively a player (only administrator can unblock the account) (2 same commands) -block: 60 -charblock: 60 - -// To unblock a player (2 same commands) -unblock: 60 -charunblock: 60 - -// To ban a player for a limited time (only administrator can unban the account) (4 same commands) -ban: 60 -banish: 60 -charban: 60 -charbanish: 60 - -// To unban a player (4 same commands) -unban: 60 -unbanish: 60 -charunban: 60 -charunbanish: 60 - -// To send specified character in jails -jail: 60 - -// To discharge a prisoner (2 same commands) -unjail: 60 -discharge: 60 - -// To change disguise of another player/GM -chardisguise: 60 -charundisguise: 60 - -// Enables platinum skills of another player. -charquestskill: 60 - -// Enables lost skills of another player. -charlostskill: 60 - -// turn on and off skills on a map -skillon: 60 -skilloff: 60 - -// Create a static warp portal that lasts until the next reboot -addwarp: 60 - - -//---------------------- -// 80: GM Chief commands - -// Set the map you are on to day. -day: 80 - -// Kills everyone on the server. -doom: 80 - -// Kills everyone on the map you are on. -doommap: 80 - -// Set the map you are currently on to night. -night: 80 - -// Recalls Everyone To Your Coordinates -recallall: 80 - -// Revives all players on the map. -raisemap: 80 - -// Revives all players on the server. -raise: 80 - -// Enables a NPC. -enablenpc: 80 - -// Disables a NPC. -disablenpc: 80 - -// Move a NPC -npcmove: 80 - - -//--------------------------- -// 99: Administrator commands - -// Disconnect all users from the server -kickall: 99 - -// Closes Map-Server -mapexit: 99 - -// Give information about terrain/area (debug function) -gat: 99 - -// Enables debugging -packet: 99 - -// Shows information about the map -mapinfo: 99 - -// Re-load item database (admin command) -reloaditemdb: 99 - -// Re-load monsters database (admin command) -reloadmobdb: 99 - -// Re-load skills database (admin command) -reloadskilldb: 99 - -// Re-load scripts (admin command) -reloadscript: 99 - -// Re-load GM level (admin command) -reloadgmdb: 99 - - -//--------------------- -// OTHER: not a command - -//import: conf/import/atcommand_conf.txt diff --git a/src/char_sql/char.c b/src/char_sql/char.c index 25141e08f..9505b2819 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -2755,21 +2755,25 @@ void do_final(void) { do_final_itemdb(); //check SQL save progress. //wait until save char complete - printf("waiting until char saving complete...\n"); - do { - sleep (0); - }while (save_flag != 0); set_all_offline(); + flush_fifos_for_final(); + sprintf(tmp_sql,"DELETE FROM `ragsrvinfo"); - if (mysql_query(&mysql_handle, tmp_sql)) { + if (mysql_query(&mysql_handle, tmp_sql)) printf("DB server Error (insert `char`)- %s\n", mysql_error(&mysql_handle)); + + if(gm_account) { + free(gm_account); + gm_account = 0; } - if(gm_account) free(gm_account); + if(char_dat) { + free(char_dat); + char_dat = 0; + } - if(char_dat) free(char_dat); delete_session(login_fd); delete_session(char_fd); diff --git a/src/common/socket.c b/src/common/socket.c index 4afcf50d4..703361627 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -121,8 +121,10 @@ static int send_from_fifo(int fd) int len; //printf("send_from_fifo : %d\n",fd); - if(session[fd]->eof) + if(session[fd]->eof || session[fd]->wdata == 0) return -1; + if (session[fd]->wdata_size == 0) + return 0; #ifdef _WIN32 len=send(fd, session[fd]->wdata,session[fd]->wdata_size, 0); @@ -148,6 +150,15 @@ static int send_from_fifo(int fd) return 0; } +void flush_fifos_for_final() +{ + int i; + for(i=0;ifunc_send == send_from_fifo) + send_from_fifo(i); +} + static int null_parse(int fd) { printf("null_parse : %d\n",fd); diff --git a/src/common/socket.h b/src/common/socket.h index e3ad0826a..94ca1b93f 100644 --- a/src/common/socket.h +++ b/src/common/socket.h @@ -90,6 +90,8 @@ int do_sendrecv(int next); int do_parsepacket(void); void do_socket(void); +extern void flush_fifos_for_final(); + int start_console(void); void set_defaultparse(int (*defaultparse)(int)); diff --git a/src/login_sql/login.c b/src/login_sql/login.c index ba03848e8..1863913fc 100644 --- a/src/login_sql/login.c +++ b/src/login_sql/login.c @@ -163,7 +163,7 @@ void add_online_user(int account_id) { printf("add_online_user: memory allocation failure (malloc)!\n"); exit(0); } - p = &account_id; + *p = account_id; numdb_insert(online_db, account_id, p); } diff --git a/src/map/map.c b/src/map/map.c index 4addd1a26..0674cd65b 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2159,6 +2159,10 @@ void do_final(void) { map_foreachinarea(cleanup_sub, map_id, 0, 0, map[map_id].xs, map[map_id].ys, 0, 0); } +#ifndef TXT_ONLY + chrif_char_reset_offline(); +#endif + for (i = 0; i < fd_max; i++) delete_session(i); @@ -2181,8 +2185,8 @@ void do_final(void) { do_final_itemdb(); do_final_storage(); do_final_guild(); + #ifndef TXT_ONLY - chrif_char_reset_offline(); map_sql_close(); #endif /* not TXT_ONLY */ } -- cgit v1.2.3-70-g09d2 From a677451b2d90cc07af227e6868c67d27670b2f55 Mon Sep 17 00:00:00 2001 From: celest Date: Mon, 29 Nov 2004 10:42:01 +0000 Subject: Added more sc_data checks git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@413 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 3 ++ src/map/pc.c | 89 ++++++++++++++++++++----------------- src/map/skill.c | 135 ++++++++++++++++++++++++++++++-------------------------- 3 files changed, 125 insertions(+), 102 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index b7caeb230..22d450b73 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,7 @@ Date Added +11/29 + * Added more sc_data checks in skill.c and pc.c [celest] + 11/28 * Fixed a crash in login_sql/login.c [MouseJstr] * made common/socket.c more crash resistant [MouseJstr] diff --git a/src/map/pc.c b/src/map/pc.c index bbf40eae6..72fa48646 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -597,7 +597,7 @@ int pc_breakweapon(struct map_session_data *sd) return -1; if(sd->unbreakable>=rand()%100) return 0; - if(sd->sc_data && sd->sc_data[SC_CP_WEAPON].timer != -1) + if(sd->sc_count && sd->sc_data[SC_CP_WEAPON].timer != -1) return 0; for(i=0;iunbreakable>=rand()%100) return 0; - if(sd->sc_data && sd->sc_data[SC_CP_ARMOR].timer != -1) + if(sd->sc_count && sd->sc_data[SC_CP_ARMOR].timer != -1) return 0; for(i=0;ibl,GD_HAWKEYES,1,sd->bl.x,sd->bl.y,0); } } - else { + else if (sd->sc_count) { if (sd->sc_data[SC_LEADERSHIP].timer != -1) sd->paramb[0] += 2; if (sd->sc_data[SC_GLORYWOUNDS].timer != -1) @@ -1682,7 +1682,7 @@ int pc_calcstatus(struct map_session_data* sd,int first) if(sd->hprate!=100) sd->status.max_hp = sd->status.max_hp*sd->hprate/100; - if(sd->sc_data && sd->sc_data[SC_BERSERK].timer!=-1){ // バ?サ?ク + if(sd->sc_count && sd->sc_data[SC_BERSERK].timer!=-1){ // バ?サ?ク sd->status.max_hp = sd->status.max_hp * 3; // sd->status.hp = sd->status.hp * 3; if(sd->status.max_hp > battle_config.max_hp) // removed negative max hp bug by Valaris @@ -3599,9 +3599,11 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl) int i,skill,rate,itemid,flag, count; struct mob_data *md; md=(struct mob_data *)bl; - if(!md->state.steal_flag && mob_db[md->class].mexp <= 0 && !(mob_db[md->class].mode&0x20) && md->sc_data[SC_STONE].timer == -1 && md->sc_data[SC_FREEZE].timer == -1 && + if(!md->state.steal_flag && mob_db[md->class].mexp <= 0 && !(mob_db[md->class].mode&0x20) && (!(md->class>1324 && md->class<1364))) // prevent stealing from treasure boxes [Valaris] { + if (md->sc_data && (md->sc_data[SC_STONE].timer != -1 || md->sc_data[SC_FREEZE].timer != -1)) + return 0; skill = battle_config.skill_steal_type == 1 ? (sd->paramc[4] - mob_db[md->class].dex)/2 + pc_checkskill(sd,TF_STEAL)*6 + 10 : sd->paramc[4] - mob_db[md->class].dex + pc_checkskill(sd,TF_STEAL)*3 + 10; @@ -3659,7 +3661,9 @@ int pc_steal_coin(struct map_session_data *sd,struct block_list *bl) if(sd != NULL && bl != NULL && bl->type == BL_MOB) { int rate,skill; struct mob_data *md=(struct mob_data *)bl; - if(md && !md->state.steal_coin_flag && md->sc_data && md->sc_data[SC_STONE].timer == -1 && md->sc_data[SC_FREEZE].timer == -1) { + if(md && !md->state.steal_coin_flag) { + if (md->sc_data && (md->sc_data[SC_STONE].timer != -1 || md->sc_data[SC_FREEZE].timer != -1)) + return 0; skill = pc_checkskill(sd,RG_STEALCOIN)*10; rate = skill + (sd->status.base_level - mob_db[md->class].lv)*3 + sd->paramc[4]*2 + sd->paramc[5]*2; if(rand()%1000 < rate) { @@ -3711,18 +3715,21 @@ int pc_setpos(struct map_session_data *sd,char *mapname_org,int x,int y,int clrt skill_gangsterparadise(sd,0); } - if(sd->sc_data[SC_TRICKDEAD].timer != -1) - skill_status_change_end(&sd->bl, SC_TRICKDEAD, -1); + if (sd->sc_count) { + if(sd->sc_data[SC_TRICKDEAD].timer != -1) + skill_status_change_end(&sd->bl, SC_TRICKDEAD, -1); + if(sd->sc_data[SC_BLADESTOP].timer!=-1) + skill_status_change_end(&sd->bl,SC_BLADESTOP,-1); + if(sd->sc_data[SC_DANCING].timer!=-1) // clear dance effect when warping [Valaris] + skill_stop_dancing(&sd->bl,0); + } + if(sd->status.option&2) skill_status_change_end(&sd->bl, SC_HIDING, -1); if(sd->status.option&4) skill_status_change_end(&sd->bl, SC_CLOAKING, -1); if(sd->status.option&16386) skill_status_change_end(&sd->bl, SC_CHASEWALK, -1); - if(sd->sc_data[SC_BLADESTOP].timer!=-1) - skill_status_change_end(&sd->bl,SC_BLADESTOP,-1); - if(sd->sc_data[SC_DANCING].timer!=-1) // clear dance effect when warping [Valaris] - skill_stop_dancing(&sd->bl,0); if(sd->status.pet_id > 0 && sd->pd && sd->pet.intimate > 0) { pet_stopattack(sd->pd); @@ -4281,9 +4288,7 @@ int pc_checkskill(struct map_session_data *sd,int skill_id) int pc_checkallowskill(struct map_session_data *sd) { nullpo_retr(0, sd); - - if( sd->sc_data == NULL ) - return 0; + nullpo_retr(0, sd->sc_data); if(!(skill_get_weapontype(KN_TWOHANDQUICKEN)&(1<status.weapon)) && sd->sc_data[SC_TWOHANDQUICKEN].timer!=-1) { // 2HQ skill_status_change_end(&sd->bl,SC_TWOHANDQUICKEN,-1); // 2HQを解除 @@ -4452,10 +4457,12 @@ int pc_attack_timer(int tid,unsigned int tick,int id,int data) if( sd->opt1>0 || sd->status.option&2 || sd->status.option&16384) // 異常などで攻?できない return 0; - if(sd->sc_data[SC_AUTOCOUNTER].timer != -1) - return 0; - if(sd->sc_data[SC_BLADESTOP].timer != -1) - return 0; + if (sd->sc_count) { + if(sd->sc_data[SC_AUTOCOUNTER].timer != -1) + return 0; + if(sd->sc_data[SC_BLADESTOP].timer != -1) + return 0; + } //if((opt = battle_get_option(bl)) != NULL && *opt&0x46) if((opt = battle_get_option(bl)) != NULL && *opt&0x42) @@ -5749,7 +5756,7 @@ int pc_heal(struct map_session_data *sd,int hp,int sp) sp = 0; } - if(sd->sc_data && sd->sc_data[SC_BERSERK].timer!=-1) //バ?サ?ク中は回復させないらしい + if(sd->sc_count && sd->sc_data[SC_BERSERK].timer!=-1) //バ?サ?ク中は回復させないらしい return 0; if(hp+sd->status.hp>sd->status.max_hp) @@ -5790,7 +5797,7 @@ int pc_itemheal(struct map_session_data *sd,int hp,int sp) nullpo_retr(0, sd); - if(sd->sc_data && sd->sc_data[SC_GOSPEL].timer!=-1) //バ?サ?ク中は回復させないらしい + if(sd->sc_count && sd->sc_data[SC_GOSPEL].timer!=-1) //バ?サ?ク中は回復させないらしい return 0; if(sd->state.potionpitcher_flag) { @@ -6579,7 +6586,7 @@ int pc_equipitem(struct map_session_data *sd,int n,int pos) // -- moonsoul (if player is berserk then cannot equip) // - if(sd->sc_data[SC_BERSERK].timer!=-1){ + if(sd->sc_count && sd->sc_data[SC_BERSERK].timer!=-1){ clif_equipitemack(sd,n,0,0); // fail return 0; } @@ -6691,14 +6698,16 @@ int pc_equipitem(struct map_session_data *sd,int n,int pos) skill_status_change_start(&sd->bl,SC_ENDURE,10,1,0,0,0,0); } else { - if(sd->sc_data[SC_ENDURE].timer != -1 && sd->sc_data[SC_ENDURE].val2) + if(sd->sc_count && sd->sc_data[SC_ENDURE].timer != -1 && sd->sc_data[SC_ENDURE].val2) skill_status_change_end(&sd->bl,SC_ENDURE,-1); } - if(sd->sc_data[SC_SIGNUMCRUCIS].timer != -1 && !battle_check_undead(7,sd->def_ele)) - skill_status_change_end(&sd->bl,SC_SIGNUMCRUCIS,-1); - if(sd->sc_data[SC_DANCING].timer!=-1 && (sd->status.weapon != 13 && sd->status.weapon !=14)) - skill_stop_dancing(&sd->bl,0); + if(sd->sc_count) { + if (sd->sc_data[SC_SIGNUMCRUCIS].timer != -1 && !battle_check_undead(7,sd->def_ele)) + skill_status_change_end(&sd->bl,SC_SIGNUMCRUCIS,-1); + if(sd->sc_data[SC_DANCING].timer!=-1 && (sd->status.weapon != 13 && sd->status.weapon !=14)) + skill_stop_dancing(&sd->bl,0); + } return 0; } @@ -6713,7 +6722,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int type, int flag) // -- moonsoul (if player is berserk then cannot unequip) // - if(!flag && sd->sc_data[SC_BERSERK].timer!=-1){ + if(!flag && sd->sc_count && sd->sc_data[SC_BERSERK].timer!=-1){ clif_unequipitemack(sd,n,0,0); return 0; } @@ -6752,8 +6761,8 @@ int pc_unequipitem(struct map_session_data *sd,int n,int type, int flag) if(sd->status.inventory[n].equip & 0x0040) clif_changelook(&sd->bl,LOOK_SHOES,0); - if(sd->sc_data[SC_BROKNWEAPON].timer != -1 && sd->status.inventory[n].equip & 0x0002 && - sd->status.inventory[i].attribute==1) + if(sd->sc_count && sd->sc_data[SC_BROKNWEAPON].timer != -1 && sd->status.inventory[n].equip & 0x0002 && + sd->status.inventory[i].attribute==1) skill_status_change_end(&sd->bl,SC_BROKNWEAPON,-1); clif_unequipitemack(sd,n,sd->status.inventory[n].equip,1); @@ -6767,7 +6776,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int type, int flag) } if(!type) { pc_calcstatus(sd,0); - if(sd->sc_data[SC_SIGNUMCRUCIS].timer != -1 && !battle_check_undead(7,sd->def_ele)) + if(sd->sc_count && sd->sc_data[SC_SIGNUMCRUCIS].timer != -1 && !battle_check_undead(7,sd->def_ele)) skill_status_change_end(&sd->bl,SC_SIGNUMCRUCIS,-1); } @@ -7098,7 +7107,7 @@ static int pc_natural_heal_hp(struct map_session_data *sd) nullpo_retr(0, sd); - if (sd->sc_data[SC_TRICKDEAD].timer != -1) // Modified by RoVeRT + if (sd->sc_count && sd->sc_data[SC_TRICKDEAD].timer != -1) // Modified by RoVeRT return 0; if(pc_checkoverhp(sd)) { @@ -7111,11 +7120,11 @@ static int pc_natural_heal_hp(struct map_session_data *sd) if(sd->walktimer == -1) { inc_num = pc_hpheal(sd); - if( sd->sc_data[SC_TENSIONRELAX].timer!=-1 ){ // テンションリラックス + if(sd->sc_data[SC_TENSIONRELAX].timer!=-1 ){ // テンションリラックス sd->hp_sub += 2*inc_num; sd->inchealhptick += 3*natural_heal_diff_tick; - }else{ - sd->hp_sub += inc_num; + } else { + sd->hp_sub += inc_num; sd->inchealhptick += natural_heal_diff_tick; } } @@ -7168,7 +7177,7 @@ static int pc_natural_heal_hp(struct map_session_data *sd) return 0; - if(sd->sc_data[SC_APPLEIDUN].timer!=-1) { // Apple of Idun + if(sd->sc_count && sd->sc_data[SC_APPLEIDUN].timer!=-1) { // Apple of Idun if(sd->inchealhptick >= 6000 && sd->status.hp < sd->status.max_hp) { bonus = skill*20; while(sd->inchealhptick >= 6000) { @@ -7196,8 +7205,8 @@ static int pc_natural_heal_sp(struct map_session_data *sd) nullpo_retr(0, sd); - if (sd->sc_data[SC_TRICKDEAD].timer != -1 || // Modified by RoVeRT - sd->sc_data[SC_BERSERK].timer != -1) + if (sd->sc_count && (sd->sc_data[SC_TRICKDEAD].timer != -1 || // Modified by RoVeRT + sd->sc_data[SC_BERSERK].timer != -1)) return 0; if(pc_checkoversp(sd)) { @@ -7208,7 +7217,7 @@ static int pc_natural_heal_sp(struct map_session_data *sd) bsp=sd->status.sp; inc_num = pc_spheal(sd); - if(sd->sc_data[SC_EXPLOSIONSPIRITS].timer == -1) + if(sd->sc_count && sd->sc_data[SC_EXPLOSIONSPIRITS].timer == -1) sd->sp_sub += inc_num; if(sd->walktimer == -1) sd->inchealsptick += natural_heal_diff_tick; @@ -7562,7 +7571,7 @@ int map_night_timer(int tid, unsigned int tick, int id, int data) { // by [yor] void pc_setstand(struct map_session_data *sd){ nullpo_retv(sd); - if(sd->sc_data && sd->sc_data[SC_TENSIONRELAX].timer!=-1) + if(sd->sc_count && sd->sc_data[SC_TENSIONRELAX].timer!=-1) skill_status_change_end(&sd->bl,SC_TENSIONRELAX,-1); sd->state.dead_sit = 0; diff --git a/src/map/skill.c b/src/map/skill.c index dc708c906..30b17f3e3 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1142,7 +1142,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s struct status_change *sc_data = battle_get_sc_data(bl); if(sc_data) { sc_data[SC_FREEZE].val3++; - if(sc_data[SC_FREEZE].val3 >= 3) + if(sc_data[SC_FREEZE].val3 >= 3 && rand()%100 < skilllv*sc_def_mdef/100) skill_status_change_start(bl,SC_FREEZE,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); } } @@ -2331,7 +2331,7 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s { struct status_change *sc_data = battle_get_sc_data(src); skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); - if(sc_data[SC_BLADESTOP].timer != -1) + if(sc_data && sc_data[SC_BLADESTOP].timer != -1) skill_status_change_end(src,SC_BLADESTOP,-1); } break; @@ -4988,7 +4988,7 @@ int skill_castend_map( struct map_session_data *sd,int skill_num, const char *ma if( sd->opt1>0 || sd->status.option&2 ) return 0; //スキルが使えない?態異常中 - if(sd->sc_data){ + if(sd->sc_count){ if( sd->sc_data[SC_DIVINA].timer!=-1 || sd->sc_data[SC_ROKISWEIL].timer!=-1 || sd->sc_data[SC_AUTOCOUNTER].timer != -1 || @@ -5773,12 +5773,14 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int struct skill_unit *unit2; struct status_change *sc_data=battle_get_sc_data(bl); int type=SC_PNEUMA; - if(sc_data && sc_data[type].timer==-1) - skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,0,0); - else if((unit2=(struct skill_unit *)sc_data[type].val2) && unit2 != src ){ - if(DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + if(sc_data) { + if (sc_data[type].timer==-1) skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,0,0); - ts->tick-=sg->interval; + else if((unit2=(struct skill_unit *)sc_data[type].val2) && unit2 != src ){ + if(DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,0,0); + ts->tick-=sg->interval; + } } } break; @@ -5787,12 +5789,14 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int struct skill_unit *unit2; struct status_change *sc_data=battle_get_sc_data(bl); int type=SC_SAFETYWALL; - if(sc_data && sc_data[type].timer==-1) - skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,0,0); - else if((unit2=(struct skill_unit *)sc_data[type].val2) && unit2 != src ){ - if(sg->val1 < unit2->group->val1 ) + if(sc_data) { + if (sc_data[type].timer==-1) skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,0,0); - ts->tick-=sg->interval; + else if((unit2=(struct skill_unit *)sc_data[type].val2) && unit2 != src ){ + if(sg->val1 < unit2->group->val1 ) + skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,0,0); + ts->tick-=sg->interval; + } } } break; @@ -5909,10 +5913,11 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int case 0x8e: /* クァグマイア */ { - int type=SkillStatusChangeTable[sg->skill_id]; + struct status_change *sc_data=battle_get_sc_data(bl); + int type=SkillStatusChangeTable[sg->skill_id]; if( bl->type==BL_PC && ((struct map_session_data *)bl)->special_state.no_magic_damage ) break; - if( battle_get_sc_data(bl)[type].timer==-1 ) + if(sc_data && sc_data[type].timer==-1) skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,skill_get_time2(sg->skill_id,sg->skill_lv),0); } break; @@ -5920,7 +5925,7 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int { struct status_change *sc_data=battle_get_sc_data(bl); int type=SkillStatusChangeTable[sg->skill_id]; - if( sc_data && sc_data[type].timer==-1 ) + if(sc_data && sc_data[type].timer==-1 ) skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,skill_get_time2(sg->skill_id,sg->skill_lv),0); } break; @@ -5931,12 +5936,14 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int struct skill_unit *unit2; struct status_change *sc_data=battle_get_sc_data(bl); int type=SkillStatusChangeTable[sg->skill_id]; - if(sc_data && sc_data[type].timer==-1) - skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,skill_get_time2(sg->skill_id,sg->skill_lv),0); - else if((unit2=(struct skill_unit *)sc_data[type].val2) && unit2 != src ){ - if( DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + if(sc_data) { + if (sc_data[type].timer==-1) skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,skill_get_time2(sg->skill_id,sg->skill_lv),0); - ts->tick-=sg->interval; + else if((unit2=(struct skill_unit *)sc_data[type].val2) && unit2 != src ){ + if( DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,skill_get_time2(sg->skill_id,sg->skill_lv),0); + ts->tick-=sg->interval; + } } } break; @@ -5985,14 +5992,16 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int int type=SkillStatusChangeTable[sg->skill_id]; if(sg->src_id == bl->id) break; - if( sc_data && sc_data[type].timer==-1) - skill_status_change_start(bl,type,sg->skill_lv,(sg->val1)>>16,(sg->val1)&0xffff, - (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); - else if((unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){ - if( DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + if(sc_data) { + if (sc_data[type].timer==-1) skill_status_change_start(bl,type,sg->skill_lv,(sg->val1)>>16,(sg->val1)&0xffff, (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); - ts->tick-=sg->interval; + else if((unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){ + if( DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + skill_status_change_start(bl,type,sg->skill_lv,(sg->val1)>>16,(sg->val1)&0xffff, + (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); + ts->tick-=sg->interval; + } } } break; @@ -6769,7 +6778,7 @@ int skill_check_condition(struct map_session_data *sd,int type) clif_skill_fail(sd,sd->skillid,0,0); return 0; } - if(sd->sc_data){ + if(sd->sc_count){ if( sd->sc_data[SC_DIVINA].timer!=-1 || sd->sc_data[SC_ROKISWEIL].timer!=-1 || (sd->sc_data[SC_AUTOCOUNTER].timer != -1 && sd->skillid != KN_AUTOCOUNTER) || @@ -7154,14 +7163,16 @@ int skill_castfix( struct block_list *bl, int time ) } /* サフラギウム */ - if(sc_data && sc_data[SC_SUFFRAGIUM].timer!=-1 ){ - time=time*(100-sc_data[SC_SUFFRAGIUM].val1*15)/100; - skill_status_change_end( bl, SC_SUFFRAGIUM, -1); + if(sc_data) { + if ( sc_data[SC_SUFFRAGIUM].timer!=-1 ){ + time=time*(100-sc_data[SC_SUFFRAGIUM].val1*15)/100; + skill_status_change_end( bl, SC_SUFFRAGIUM, -1); + } + /* ブラギの詩 */ + if( sc_data[SC_POEMBRAGI].timer!=-1 ) + time=time*(100-(sc_data[SC_POEMBRAGI].val1*3+sc_data[SC_POEMBRAGI].val2 + +(sc_data[SC_POEMBRAGI].val3>>16)))/100; } - /* ブラギの詩 */ - if(sc_data && sc_data[SC_POEMBRAGI].timer!=-1 ) - time=time*(100-(sc_data[SC_POEMBRAGI].val1*3+sc_data[SC_POEMBRAGI].val2 - +(sc_data[SC_POEMBRAGI].val3>>16)))/100; return (time>0)?time:0; } @@ -7226,7 +7237,7 @@ int skill_use_id( struct map_session_data *sd, int target_id, /* 沈?や異常(ただし、グリムなどの判定をする) */ if( sd->opt1>0 ) return 0; - if(sd->sc_data){ + if(sc_data){ if(sc_data[SC_CHASEWALK].timer != -1) return 0; if(sc_data[SC_VOLCANO].timer != -1){ if(skill_num==WZ_ICEWALL) return 0; @@ -7234,12 +7245,12 @@ int skill_use_id( struct map_session_data *sd, int target_id, if(sc_data[SC_ROKISWEIL].timer!=-1){ if(skill_num==BD_ADAPTATION) return 0; } - if( sd->sc_data[SC_DIVINA].timer!=-1 || - sd->sc_data[SC_ROKISWEIL].timer!=-1 || - (sd->sc_data[SC_AUTOCOUNTER].timer != -1 && sd->skillid != KN_AUTOCOUNTER) || - sd->sc_data[SC_STEELBODY].timer != -1 || - sd->sc_data[SC_BERSERK].timer != -1 || - (sd->sc_data[SC_MARIONETTE].timer != -1 && sd->skillid != CG_MARIONETTE)){ + if(sc_data[SC_DIVINA].timer!=-1 || + sc_data[SC_ROKISWEIL].timer!=-1 || + (sc_data[SC_AUTOCOUNTER].timer != -1 && sd->skillid != KN_AUTOCOUNTER) || + sc_data[SC_STEELBODY].timer != -1 || + sc_data[SC_BERSERK].timer != -1 || + (sc_data[SC_MARIONETTE].timer != -1 && sd->skillid != CG_MARIONETTE)){ return 0; /* ?態異常や沈?など */ } @@ -7253,8 +7264,8 @@ int skill_use_id( struct map_session_data *sd, int target_id, if(lv==5 && skill_num!=MO_FINGEROFFENSIVE && skill_num!=MO_INVESTIGATE && skill_num!=MO_CHAINCOMBO && skill_num!=MO_EXTREMITYFIST) return 0; } - if (sd->sc_data[SC_BLOCKSKILL].timer!=-1) - if (skill_num == sd->sc_data[SC_BLOCKSKILL].val3) + if (sc_data[SC_BLOCKSKILL].timer!=-1) + if (skill_num == sc_data[SC_BLOCKSKILL].val3) return 0; if (sc_data[SC_BASILICA].timer != -1) { // Disallow all other skills in Basilica [celest] @@ -7270,7 +7281,17 @@ int skill_use_id( struct map_session_data *sd, int target_id, else return 0; } - } + } + /* 演奏/ダンス中 */ + if(sc_data[SC_DANCING].timer!=-1 ){ + // if(battle_config.pc_skill_log) + // printf("dancing! %d\n",skill_num); + if( sc_data[SC_DANCING].val4 && skill_num!=BD_ADAPTATION ) //合奏中はアドリブ以外不可 + return 0; + if(skill_num!=BD_ADAPTATION && skill_num!=BA_MUSICALSTRIKE && skill_num!=DC_THROWARROW){ + return 0; + } + } } if(sd->status.option&4 && skill_num==TF_HIDING) @@ -7291,18 +7312,7 @@ int skill_use_id( struct map_session_data *sd, int target_id, case ST_CHASEWALK: return 0; } - }*/ - - /* 演奏/ダンス中 */ - if( sc_data && sc_data[SC_DANCING].timer!=-1 ){ -// if(battle_config.pc_skill_log) -// printf("dancing! %d\n",skill_num); - if( sc_data[SC_DANCING].val4 && skill_num!=BD_ADAPTATION ) //合奏中はアドリブ以外不可 - return 0; - if(skill_num!=BD_ADAPTATION && skill_num!=BA_MUSICALSTRIKE && skill_num!=DC_THROWARROW){ - return 0; - } - } + }*/ if(skill_get_inf2(skill_num)&0x200 && sd->bl.id == target_id) return 0; @@ -7573,10 +7583,10 @@ int skill_use_pos( struct map_session_data *sd, sc_data[SC_STEELBODY].timer != -1 || sc_data[SC_DANCING].timer!=-1 || sc_data[SC_BERSERK].timer != -1 || - sd->sc_data[SC_MARIONETTE].timer != -1) + sc_data[SC_MARIONETTE].timer != -1) return 0; /* ?態異常や沈?など */ - if (sd->sc_data[SC_BLOCKSKILL].timer!=-1) + if (sc_data[SC_BLOCKSKILL].timer!=-1) if (skill_num == sd->sc_data[SC_BLOCKSKILL].val3) return 0; @@ -8333,7 +8343,8 @@ int skill_status_change_timer_sub(struct block_list *bl, va_list ap ) skill_status_change_end( bl, SC_CLOAKING, -1); if(battle_check_target( src,bl, BCT_ENEMY ) > 0) { struct status_change *sc_data = battle_get_sc_data(bl); - skill_attack(BF_MAGIC,src,src,bl,AL_RUWACH,sc_data[type].val1,tick,0); + if (sc_data) + skill_attack(BF_MAGIC,src,src,bl,AL_RUWACH,sc_data[type].val1,tick,0); } } break; @@ -10071,9 +10082,9 @@ void skill_stop_dancing(struct block_list *src, int flag) struct skill_unit_group* group; nullpo_retv(src); + nullpo_retv(sc_data = battle_get_sc_data(src)); - sc_data=battle_get_sc_data(src); - if(sc_data && sc_data[SC_DANCING].timer != -1) { + if(sc_data[SC_DANCING].timer != -1) { group=(struct skill_unit_group *)sc_data[SC_DANCING].val2; //ダンスのスキルユニットIDはval2に入ってる if(group && src->type==BL_PC && sc_data && sc_data[SC_DANCING].val4){ //合奏中? struct map_session_data* dsd=map_id2sd(sc_data[SC_DANCING].val4); //相方のsd取得 -- cgit v1.2.3-70-g09d2 From 241ebe1c9cac17f0b583b10d7227f7d3c87638bd Mon Sep 17 00:00:00 2001 From: celest Date: Mon, 29 Nov 2004 17:39:44 +0000 Subject: Updated Quagmire, Enchant Deadly Poison, Fog Wall git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@416 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 1 + db/Changelog.txt | 2 ++ db/skill_db.txt | 4 ++-- src/map/battle.c | 16 ++++++++-------- src/map/pc.c | 10 ++++++---- src/map/skill.c | 28 +++++++++++++++++++++++++--- 6 files changed, 44 insertions(+), 17 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 22d450b73..3c7d28b8d 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,6 +1,7 @@ Date Added 11/29 * Added more sc_data checks in skill.c and pc.c [celest] + * Updated Quagmire, Enchant Deadly Poison, Fog Wall [celest] 11/28 * Fixed a crash in login_sql/login.c [MouseJstr] diff --git a/db/Changelog.txt b/db/Changelog.txt index 796e15e29..2c7525006 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -5,6 +5,8 @@ Ayathoya items == Added but no effect ( all are "ect" itens) Skill databases == celest working on them i believe. +11/29 * Updated skill_db for Quagmire, Fog Wall [celest] + 11/28 * Fixed Wedding rings placement 2->136 [Lupus] * Fixed mob Amon Ra stats/drops [shadow] diff --git a/db/skill_db.txt b/db/skill_db.txt index 7d6745196..5e24078a6 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -91,7 +91,7 @@ 89,8,6,2,1,1,10,1,yes,0,0,0,magic,2 //WZ_STORMGUST#スト??ガスト# 90,8,8,1,2,0,5,1:2:3:4:5,yes,0,0,0,magic,0 //WZ_EARTHSPIKE#ア?ススパイク# 91,8,8,2,2,0,5,1:2:3:4:5,yes,0,0,0,magic,0 //WZ_HEAVENDRIVE#ヘヴンズドライブ# -92,8,6,2,2,1,5,1,yes,0,0,3,magic,0 //WZ_QUAGMIRE#ク?グ?イア# +92,8,6,2,2,1,5,1,yes,0,128,3,magic,0 //WZ_QUAGMIRE#ク?グ?イア# 93,8,6,1,0,1,1,1,yes,0,0,0,magic,0 //WZ_ESTIMATION#モンス??情報# 94,0,0,0,0,0,5,0,no,0,0,0,weapon,0 //BS_IRON#鉄製造# 95,0,0,0,0,0,5,0,no,0,0,0,weapon,0 //BS_STEEL#?鉄製造# @@ -438,7 +438,7 @@ 401,0,6,4,0,1,1,1,yes,0,0,0,weapon,0 //CH_SOULCOLLECT#狂気功# 402,8,6,1,0,1,10,1,no,0,0,0,none,0 //PF_MINDBREAKER#?インドブレ?カ?# 403,0,0,4,0,1,1,1,yes,0,0,0,magic,0 //PF_MEMORIZE#メモライズ# -404,3,6,2,2,1,5,1,yes,0,128,1,magic,0 //PF_FOGWALL#フォグウォ?ル# +404,3,6,2,2,1,5,1,yes,0,256,1,magic,0 //PF_FOGWALL#フォグウォ?ル# 405,3,6,2,0,1,5,1,no,0,128,2,misc,0 //PF_SPIDERWEB#スパイ??ウェッブ# 406,-1,6,1,0,2,10,1,no,33,0,0,weapon,0 //ASC_METEORASSAULT#メテオアサルト# 407,0,6,4,0,1,10,0,no,0,0,0,none,0 //ASC_CDP#デッドリ??イズン製造# diff --git a/src/map/battle.c b/src/map/battle.c index 7aabcc39a..0c1fe65d2 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -257,8 +257,9 @@ int battle_get_agi(struct block_list *bl) if(sc_data[SC_QUAGMIRE].timer!=-1 ) { // クァグマイア //agi >>= 1; - int agib = agi*(sc_data[SC_QUAGMIRE].val1*10)/100; - agi -= agib > 50 ? 50 : agib; + //int agib = agi*(sc_data[SC_QUAGMIRE].val1*10)/100; + //agi -= agib > 50 ? 50 : agib; + agi -= (bl->type == BL_PC) ? sc_data[SC_QUAGMIRE].val1*5 : sc_data[SC_QUAGMIRE].val1*10; } if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト agi += 5; @@ -367,8 +368,9 @@ int battle_get_dex(struct block_list *bl) if(sc_data[SC_QUAGMIRE].timer!=-1 ) { // クァグマイア // dex >>= 1; - int dexb = dex*(sc_data[SC_QUAGMIRE].val1*10)/100; - dex -= dexb > 50 ? 50 : dexb; + //int dexb = dex*(sc_data[SC_QUAGMIRE].val1*10)/100; + //dex -= dexb > 50 ? 50 : dexb; + dex -= (bl->type == BL_PC) ? sc_data[SC_QUAGMIRE].val1*5 : sc_data[SC_QUAGMIRE].val1*10; } if(sc_data[SC_TRUESIGHT].timer!=-1 && bl->type != BL_PC) // トゥルーサイト dex += 5; @@ -556,9 +558,7 @@ int battle_get_baseatk(struct block_list *bl) if(sc_data[SC_CURSE].timer!=-1 ) //呪われていたら batk -= batk*25/100; //base_atkが25%減少 if(sc_data[SC_CONCENTRATION].timer!=-1 && bl->type != BL_PC) //コンセントレーション - batk += batk*(5*sc_data[SC_CONCENTRATION].val1)/100; - if(sc_data[SC_EDP].timer != -1) // [Celest] - batk += batk*(50+50*sc_data[SC_EDP].val1)/100; + batk += batk*(5*sc_data[SC_CONCENTRATION].val1)/100; } if(batk < 1) batk = 1; //base_atkは最低でも1 return batk; @@ -3553,7 +3553,7 @@ static struct Damage battle_calc_pc_weapon_attack( // 状態異常中のダメージ追加でクリティカルにも有効なスキル if (sc_data) { // エンチャントデッドリーポイズン - if(sc_data[SC_EDP].timer != -1) { + if(sc_data[SC_EDP].timer != -1 && skill_num != ASC_BREAKER && skill_num != ASC_METEORASSAULT) { damage += damage * (150 + sc_data[SC_EDP].val1 * 50) / 100; damage2 += damage2 * (150 + sc_data[SC_EDP].val1 * 50) / 100; no_cardfix = 1; diff --git a/src/map/pc.c b/src/map/pc.c index 72fa48646..c9083ce03 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1517,10 +1517,12 @@ int pc_calcstatus(struct map_session_data* sd,int first) if(sd->sc_data[SC_LOUD].timer!=-1 && sd->sc_data[SC_QUAGMIRE].timer == -1) // ラウドボイス sd->paramb[0]+= 4; if(sd->sc_data[SC_QUAGMIRE].timer!=-1){ // クァグマイア - int agib = (sd->status.agi+sd->paramb[1]+sd->parame[1])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100; - int dexb = (sd->status.dex+sd->paramb[4]+sd->parame[4])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100; - sd->paramb[1]-= agib > 50 ? 50 : agib; - sd->paramb[4]-= dexb > 50 ? 50 : dexb; + //int agib = (sd->status.agi+sd->paramb[1]+sd->parame[1])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100; + //int dexb = (sd->status.dex+sd->paramb[4]+sd->parame[4])*(sd->sc_data[SC_QUAGMIRE].val1*10)/100; + //sd->paramb[1]-= agib > 50 ? 50 : agib; + //sd->paramb[4]-= dexb > 50 ? 50 : dexb; + sd->paramb[1]-= sd->sc_data[SC_QUAGMIRE].val1*5; + sd->paramb[4]-= sd->sc_data[SC_QUAGMIRE].val1*5; sd->speed = sd->speed*3/2; } if(sd->sc_data[SC_TRUESIGHT].timer!=-1){ // トゥル?サイト diff --git a/src/map/skill.c b/src/map/skill.c index 30b17f3e3..6cc9e7a8a 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1270,7 +1270,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s skill_status_change_start(bl,SC_AUTOCOUNTER,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); break; case PF_FOGWALL: /* ホ?リ?クロス */ - if( rand()%100 < 3*skilllv*sc_def_int/100 ) + if(src!=bl && rand()%100 < 3*skilllv*sc_def_int/100 ) skill_status_change_start(bl,SC_BLIND,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); break; case LK_HEADCRUSH: /* ヘッドクラッシュ */ @@ -5965,7 +5965,7 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int case 0xae: /* 幸運のキス */ case 0xaf: /* サ?ビスフォ?ユ? */ case 0xb4: - case 0xb6: /* フォグウォ?ル */ +// case 0xb6: /* フォグウォ?ル */ { struct skill_unit *unit2; struct status_change *sc_data=battle_get_sc_data(bl); @@ -6005,6 +6005,28 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int } } break; + case 0xb6: /* フォグウォ?ル */ + { + struct skill_unit *unit2; + struct status_change *sc_data=battle_get_sc_data(bl); + int type=SkillStatusChangeTable[sg->skill_id]; + if(sc_data) { + if (sc_data[type].timer==-1) { + skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2, + (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); + skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MISC,tick); + } + else if( (unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){ + if( unit2->group && DIFF_TICK(sg->tick,unit2->group->tick)>0 ) { + skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2, + (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); + skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MISC,tick); + } +// ts->tick-=sg->interval; + } + } + } break; + case 0xb1: /* デモンストレ?ション */ skill_attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); if(bl->type == BL_PC && rand()%100 < sg->skill_lv && battle_config.equipment_breaking) @@ -6168,7 +6190,7 @@ int skill_unit_onout(struct skill_unit *src,struct block_list *bl,unsigned int t sc_data[SC_BLIND].timer = add_timer( gettick() + 30000, skill_status_change_timer, bl->id, 0); } - sg->limit=DIFF_TICK(tick,sg->tick)+1000; + //sg->limit=DIFF_TICK(tick,sg->tick)+1000; } break; case 0x9a: /* ボルケ?ノ */ -- cgit v1.2.3-70-g09d2 From e038fbc943a6b2ae4f6890c02b497b51329962e3 Mon Sep 17 00:00:00 2001 From: mc_cameri Date: Mon, 29 Nov 2004 22:32:36 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@417 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 9 +++++++++ mapbug.txt | 1 + src/common/showmsg.c | 2 +- src/map/map.c | 35 +++++++++++++++++++++++------------ 4 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 mapbug.txt (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 3c7d28b8d..d9d927469 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,14 @@ Date Added 11/29 + * Added mapbug.txt which is displayed in map-server, displays + the last bug or w/e fixed for the map-server [MC Cameri] + -You may change it whenever you want + -It will only show if mapbug.txt exists + -This file must not be included in releases + * Made some changes in map_versionscreen() to make it easier to + read/change in the source [MC Cameri] + * Fixed a typo in _ShowMessage() removing the message caption. [MC Cameri] + * Fixed typo in map_helpscreen() showing -h instead of --?. [MC Cameri] * Added more sc_data checks in skill.c and pc.c [celest] * Updated Quagmire, Enchant Deadly Poison, Fog Wall [celest] diff --git a/mapbug.txt b/mapbug.txt new file mode 100644 index 000000000..462bfc3f4 --- /dev/null +++ b/mapbug.txt @@ -0,0 +1 @@ +Last Fix: Added more sc_data checks in skill.c and pc.c [celest] diff --git a/src/common/showmsg.c b/src/common/showmsg.c index f60fb88b4..e96f97e22 100644 --- a/src/common/showmsg.c +++ b/src/common/showmsg.c @@ -51,7 +51,7 @@ int _ShowMessage(const char *string, enum msg_type flag){ // by MC Cameri // abort(); // Kill server? Deadly } strcpy(output,prefix); - strcpy(output," "); + strcat(output," "); strcat(output,string); printf(output); fflush(stdout); diff --git a/src/map/map.c b/src/map/map.c index 0674cd65b..274c9559e 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2191,10 +2191,10 @@ void do_final(void) { #endif /* not TXT_ONLY */ } -void map_helpscreen() { +void map_helpscreen(int flag) { puts("Usage: map-server [options]"); puts("Options:"); - puts(" --help, --h, -h, /? Displays this help screen"); + puts(" --help, --h, --?, /? Displays this help screen"); puts(" --map-config Load map-server configuration from "); puts(" --battle-config Load battle configuration from "); puts(" --atcommand-config Load atcommand configuration from "); @@ -2208,19 +2208,30 @@ void map_helpscreen() { puts(" (SQL Only)"); puts(" --version, --v, -v, /v Displays the server's version"); puts("\n"); - exit(1); + if (flag) exit(1); } -void map_versionscreen() { - printf("\033[1;29meAthena version %d.%02d.%02d, Athena Mod version %d\033[0;0m\n", +void map_versionscreen(int flag) { + printf("\033[1;29m" "eAthena version %d.%02d.%02d, Athena Mod version %d" "\033[0;0m\n", ATHENA_MAJOR_VERSION, ATHENA_MINOR_VERSION, ATHENA_REVISION, ATHENA_MOD_VERSION); - puts("\033[1;32mWebsite/Forum:\033[0;0m http://eathena.deltaanime.net/"); - puts("\033[1;32mDownload URL:\033[0;0m http://eathena.systeminplace.net/"); - puts("\033[1;32mIRC Channel:\033[0;0m irc://irc.deltaanime.net/#athena"); + puts("\033[1;32m" "Website/Forum:" "\033[0;0m" "\thttp://eathena.deltaanime.net/"); + puts("\033[1;32m" "Download URL:" "\033[0;0m" "\thttp://eathena.systeminplace.net/"); + puts("\033[1;32m" "IRC Channel:" "\033[0;0m" "\tirc://irc.deltaanime.net/#athena"); puts("\nOpen \033[1;29mreadme.html\033[0;0m for more information."); if (ATHENA_RELEASE_FLAG) ShowNotice("This version is not for release.\n"); - exit(1); + if (flag) exit(1); +} + +void map_displaybug(int flag) { + FILE *fp; + char line[1024]; + if ((fp=fopen("mapbug.txt","r"))!=NULL) { + while(fgets(line,1023,fp)) printf(line); + fclose(fp); + } //don't show anything if file doesnt exist + // this is only here when develing + if (flag) exit(1); } /*====================================================== @@ -2243,15 +2254,15 @@ int do_init(int argc, char *argv[]) { unsigned char *SCRIPT_CONF_NAME = "conf/script_athena.conf"; unsigned char *MSG_CONF_NAME = "conf/msg_athena.conf"; unsigned char *GRF_PATH_FILENAME = "conf/grf-files.txt"; - + map_displaybug(0); srand(gettick()); for (i = 1; i < argc ; i++) { if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "--h") == 0 || strcmp(argv[i], "--?") == 0 || strcmp(argv[i], "/?") == 0) - map_helpscreen(); + map_helpscreen(1); if (strcmp(argv[i], "--version") == 0 || strcmp(argv[i], "--v") == 0 || strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "/v") == 0) - map_versionscreen(); + map_versionscreen(1); else if (strcmp(argv[i], "--map_config") == 0 || strcmp(argv[i], "--map-config") == 0) MAP_CONF_NAME=argv[i+1]; else if (strcmp(argv[i],"--battle_config") == 0 || strcmp(argv[i],"--battle-config") == 0) -- cgit v1.2.3-70-g09d2 From 042a8d652e4a828d01948937568373f1b1e0aeee Mon Sep 17 00:00:00 2001 From: celest Date: Tue, 30 Nov 2004 11:35:02 +0000 Subject: * Fixed client crash when disguised characters die * Fixed and finished Guild Skills (~90%) * Fixed Meltdown and Overthrust used together breaking your own weapon * Updated Weapon Repair * Fixed sp recovery problem, thanks to OutSider for pointing it out * Corrected bUnbreakable value in const.txt * Updated skill_cast_db for Meltdown git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@421 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 9 ++++++++ Dev/bugs.txt | 18 ++++++---------- db/Changelog.txt | 3 +++ db/const.txt | 4 ++-- db/skill_cast_db.txt | 2 +- src/map/battle.c | 51 ++++++++++++++++++++++++--------------------- src/map/map.h | 2 +- src/map/pc.c | 28 +++++++++++++++++-------- src/map/skill.c | 58 +++++++++++++++++++++++++++++++++++++++++----------- 9 files changed, 116 insertions(+), 59 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 5f3e76ac4..91e5af76f 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,13 @@ Date Added +11/30 + * Fixed client crash when disguised characters die [celest] + * Skill Updates [celest] + - Fixed and finished Guild Skills (~90%) + - Fixed Meltdown and Overthrust used together breaking your own weapon + - Updated Weapon Repair :- uses different materials depending on repaired item + (Iron Ore/Iron/Steel/Rough Oridecon) + - Fixed sp recovery problem, thanks to OutSider for pointing it out + 11/29 * Fixed crash in src/char_sql/char.c when setting chars offline [MouseJstr] * Added mapbug.txt which is displayed in map-server, displays diff --git a/Dev/bugs.txt b/Dev/bugs.txt index 836c3412a..4accdbd2a 100644 --- a/Dev/bugs.txt +++ b/Dev/bugs.txt @@ -1,6 +1,7 @@ Problem: Adding the new guild skills causes it to crash? -Assigned: N/A -Progess: 0% +Assigned: Celest +Progess: 90% +Note: The skills should be almost working now. Problem: 2-2-1 classes are regarded as Novicies by the game server. NPCs aren't taking them as thier jobs but if you the the NPC to do something for a novice class it works with the 2-2-1 like renters. Also if some one becomes high novice, if they use jobra they can become first jobs like a swordsman. Assigned: N/A @@ -55,25 +56,17 @@ Problem: When athena is run in linux it creates core files which takes 300 megs. Assigned: N/A Progess: 0% -Problem: The skill tree's max skill lvl is not read/used. -Assigned: Celest -Progess: ~100% (Notes: Maybe there's a less messy way? xP) - Problem: Char server and Map server crash when you recall some one. Assigned: N/A Progess: 0% -Problem: Monk's Skill ROOT instantly reboots server -Assigned: Celest -Progess: 100%? (Notes: Typo... my bad, sorry ^^; ) - Problem: Sage's Area Skills (Delu.,Vulcano, etc) if casted on the same area (or overlap each other) instantly reboots server. use @gvgon when test. Don't test it towns Assigned: N/A Progess: 0% Problem: @disguise has no death sprite so the client crashes when you die, a solution would be that upon death before the sprites change you're undisguised. -Assigned: N/a -Progess: 0% +Assigned: Celest +Progess: 100% Note 1: Please state which sprite makes the client crash, I tried many spriters and I never crashed. [MC Cameri] Problem: Changing email and Broadcast both use the same packets / Packet 0x3000 assigned to changing email instead of broadcasting? @@ -84,6 +77,7 @@ Progress: 0% Problem: Sanctuary heal emp during WoE? Assigned: N/A Progress: 0% +Note: Isn't sanctuary supposed to be able to heal the emperium? [celest] Problem: AFM Maps not loading coords correctly, players appearing outside boundaries of the maps. Assigned: N/A diff --git a/db/Changelog.txt b/db/Changelog.txt index 2c7525006..8fee7e40c 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -5,6 +5,9 @@ Ayathoya items == Added but no effect ( all are "ect" itens) Skill databases == celest working on them i believe. +11/30 * Corrected bUnbreakable value in const.txt [celest] + * updated skill_cast_db for Meltdown [celest] + 11/29 * Updated skill_db for Quagmire, Fog Wall [celest] 11/28 * Fixed Wedding rings placement 2->136 [Lupus] diff --git a/db/const.txt b/db/const.txt index 6de6ad330..b382bc75f 100644 --- a/db/const.txt +++ b/db/const.txt @@ -131,8 +131,8 @@ bFlee 50 bFlee2 51 bCritical 52 bAspd 53 -bFame 57 -bUnbreakable 58 +bFame 59 +bUnbreakable 60 bAtkRange 1000 bAtkEle 1001 diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index cc4218f52..72d7cb4b5 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -246,7 +246,7 @@ 381,1000,1200,0,0,0 //SN_FALCONASSAULT 382,2000,0,0,0 //SN_SHARPSHOOTING 383,2000:2400:2800:3200:3600:4000:4400:4800:5200:5600,0,65000:80000:95000:110000:125000:140000:155000:170000:185000:200000,0 //SN_WINDWALK#ウインドウォーク# -384,5000:5000:6000:6000:7000:7000:8000:8000:9000:10000,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,0 //WS_MELTDOWN#メルトダウン# +384,5000:5000:6000:6000:7000:7000:8000:8000:9000:10000,0,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000,5000 //WS_MELTDOWN#メルトダウン# 387,0,0,60000,0 //WS_CARTBOOST#カートブースト# 389,0,0,10000,0 //ST_CHASEWALK diff --git a/src/map/battle.c b/src/map/battle.c index 0c1fe65d2..8309bce78 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -640,7 +640,7 @@ int battle_get_atk2(struct block_list *bl) if(sc_data[SC_NIBELUNGEN].timer!=-1 && (battle_get_element(bl)/10) >= 8 ) atk2 += sc_data[SC_NIBELUNGEN].val2; if(sc_data[SC_STRIPWEAPON].timer!=-1) - atk2 = atk2*90/100; + atk2 = atk2*sc_data[SC_STRIPWEAPON].val2/100; if(sc_data[SC_CONCENTRATION].timer!=-1) //コンセントレーション atk2 += atk2*(5*sc_data[SC_CONCENTRATION].val1)/100; } @@ -767,7 +767,7 @@ int battle_get_def(struct block_list *bl) def = def*75/100; //ストリップシールド時は減算 if(sc_data[SC_STRIPSHIELD].timer!=-1 && bl->type != BL_PC) - def = def*85/100; + def = def*sc_data[SC_STRIPSHIELD].val2/100; //シグナムクルシス時は減算 if(sc_data[SC_SIGNUMCRUCIS].timer!=-1 && bl->type != BL_PC) def = def * (100 - sc_data[SC_SIGNUMCRUCIS].val2)/100; @@ -3959,33 +3959,38 @@ struct Damage battle_calc_weapon_attack( if(battle_config.equipment_breaking && src->type==BL_PC && (wd.damage > 0 || wd.damage2 > 0)) { struct map_session_data *sd=(struct map_session_data *)src; - int breakrate=1; - if(sd->status.weapon && sd->status.weapon!=11) { - if(target->type == BL_PC && sd->sc_data[SC_MELTDOWN].timer!=-1){ - breakrate+=100*sd->sc_data[SC_MELTDOWN].val1; - if(rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) - pc_breakweapon((struct map_session_data *)target); + int breakrate = 0; + + if(sd->status.weapon && sd->status.weapon != 11) { + if(sd->sc_data[SC_MELTDOWN].timer!=-1) { +// breakrate += 100*sd->sc_data[SC_MELTDOWN].val1; // since we don't know if there are any other factors for breaking yet, [celest] + breakrate += 100*sd->sc_data[SC_MELTDOWN].val1; + if(rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) { + if (target->type == BL_PC) + pc_breakweapon((struct map_session_data *)target); + else + skill_status_change_start(target,SC_STRIPWEAPON,1,75,0,0,skill_get_time2(WS_MELTDOWN,1),0 ); + } + + breakrate = 70*sd->sc_data[SC_MELTDOWN].val1; + if (rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) { + if (target->type == BL_PC) + pc_breakarmor((struct map_session_data *)target); + else + skill_status_change_start(target,SC_STRIPSHIELD,1,75,0,0,skill_get_time2(WS_MELTDOWN,1),0 ); + } } - if(sd->sc_data[SC_OVERTHRUST].timer!=-1) - breakrate+=20*sd->sc_data[SC_OVERTHRUST].val1; + if(sd->sc_data[SC_OVERTHRUST].timer!=-1) { + breakrate = 20*sd->sc_data[SC_OVERTHRUST].val1; //if(wd.type==0x0a) //removed! because CRITS don't affect on breaking chance [Lupus] // breakrate*=2; - if(rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) { - if(pc_breakweapon(sd)==1) - wd = battle_calc_pc_weapon_attack(src,target,skill_num,skill_lv,wflag); + if(rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) { + if(pc_breakweapon(sd)==1) + wd = battle_calc_pc_weapon_attack(src,target,skill_num,skill_lv,wflag); + } } } } - - if (battle_config.equipment_breaking && target->type == BL_PC && (wd.damage > 0 || wd.damage2 > 0)) { - int breakrate=1; - if(src->type==BL_PC && ((struct map_session_data *)src)->sc_data[SC_MELTDOWN].timer!=-1) breakrate+=70*((struct map_session_data *)src)->sc_data[SC_MELTDOWN].val1; - //if (wd.type==0x0a) removed! because CRITS don't affect on breaking chance [Lupus] - // breakrate*=2; - if (rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) { - pc_breakarmor((struct map_session_data *)target); - } - } return wd; } diff --git a/src/map/map.h b/src/map/map.h index bf443bf46..870682156 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -556,7 +556,7 @@ enum { SP_USTR,SP_UAGI,SP_UVIT,SP_UINT,SP_UDEX,SP_ULUK,SP_26,SP_27, // 32-39 SP_28,SP_ATK1,SP_ATK2,SP_MATK1,SP_MATK2,SP_DEF1,SP_DEF2,SP_MDEF1, // 40-47 SP_MDEF2,SP_HIT,SP_FLEE1,SP_FLEE2,SP_CRITICAL,SP_ASPD,SP_36,SP_JOBLEVEL, // 48-55 - SP_UPPER,SP_PARTNER,SP_CART,SP_FAME,SP_UNBREAKABLE, //56-58 + SP_UPPER,SP_PARTNER,SP_CART,SP_FAME,SP_UNBREAKABLE, //56-60 SP_CARTINFO=99, // 99 SP_BASEJOB=119, // 100+19 - celest diff --git a/src/map/pc.c b/src/map/pc.c index c9083ce03..13d1914c8 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1,4 +1,4 @@ -// $Id: pc.c 101 2004-11-26 5:47:29 PM Celestia $ +// $Id: pc.c 101 2004-11-30 8:27:10 PM Celestia $ #include #include #include @@ -3462,18 +3462,29 @@ int pc_item_identify(struct map_session_data *sd,int idx) */ int pc_item_repair(struct map_session_data *sd,int idx) { - int flag=1; + int flag=1, material; + int materials[5] = { 0, 1002, 998, 999, 756 }; nullpo_retr(0, sd); + struct item *item = &sd->status.inventory[idx]; if(idx >= 0 && idx < MAX_INVENTORY) { - if(sd->status.inventory[idx].nameid > 0 && sd->status.inventory[idx].attribute == 1 ) { + if(item->nameid > 0 && item->attribute == 1 ) { + if (itemdb_type(item->nameid)==4) + material = materials [itemdb_wlv (item->nameid)]; + else + material = materials [3]; + + if (pc_search_inventory(sd, material) < 0 ) { //fixed by Lupus (item pos can be = 0!) + clif_skill_fail(sd,sd->skillid,0,0); + return 0; + } flag=0; - sd->status.inventory[idx].attribute=0; + item->attribute=0; //Temporary Weapon Repair code [DracoRPG] - pc_delitem(sd, pc_search_inventory(sd, 999), 1, 0); + pc_delitem(sd, pc_search_inventory(sd, material), 1, 0); clif_equiplist(sd); - clif_produceeffect(sd, 0, sd->status.inventory[idx].nameid); + clif_produceeffect(sd, 0, item->nameid); clif_misceffect(&sd->bl, 3); clif_displaymessage(sd->fd,"Item has been repaired."); } @@ -5353,7 +5364,7 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage) return 0; } sd->status.hp = 0; - pc_setdead(sd); + //pc_setdead(sd); if(sd->vender_id) vending_closevending(sd); @@ -5369,6 +5380,7 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage) pc_stop_walking(sd,0); skill_castcancel(&sd->bl,0); // 詠唱の中止 clif_clearchar_area(&sd->bl,1); + pc_setdead(sd); skill_unit_out_all(&sd->bl,gettick(),1); if(sd->sc_data[SC_BLADESTOP].timer!=-1)//白刃は事前に解除 skill_status_change_end(&sd->bl,SC_BLADESTOP,-1); @@ -7219,7 +7231,7 @@ static int pc_natural_heal_sp(struct map_session_data *sd) bsp=sd->status.sp; inc_num = pc_spheal(sd); - if(sd->sc_count && sd->sc_data[SC_EXPLOSIONSPIRITS].timer == -1) + if(sd->sc_data[SC_EXPLOSIONSPIRITS].timer == -1) sd->sp_sub += inc_num; if(sd->walktimer == -1) sd->inchealsptick += natural_heal_diff_tick; diff --git a/src/map/skill.c b/src/map/skill.c index 6cc9e7a8a..7676a1380 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1,4 +1,4 @@ -// $Id: skill.c,v 1.8 2004/11/26 7:12:23 PM Celestia Exp $ +// $Id: skill.c,v 1.8 2004/11/30 8:26:49 PM Celestia Exp $ /* スキル?係 */ #include @@ -24,6 +24,7 @@ #include "log.h" #include "chrif.h" #include "guild.h" +#include "showmsg.h" #ifdef MEMWATCH #include "memwatch.h" @@ -398,6 +399,10 @@ const struct skill_name_db skill_names[] = { { DC_SERVICEFORYOU, "SERVICEFORYOU", "Prostitute" } , { DC_THROWARROW, "THROWARROW", "Throw_Arrow" } , { DC_UGLYDANCE, "UGLYDANCE", "Ugly_Dance" } , + { GD_BATTLEORDER, "BATTLEORDER", "Battle_Orders" } , + { GD_REGENERATION, "REGENERATION", "Regeneration" } , + { GD_RESTORE, "RESTORE", "Restore" } , + { GD_EMERGENCYCALL, "EMERGENCYCALL", "Emergency_Call" } , { HP_ASSUMPTIO, "ASSUMPTIO", "Assumptio" } , { HP_BASILICA, "BASILICA", "Basilica" } , { HP_MEDITATIO, "MEDITATIO", "Meditation" } , @@ -832,6 +837,10 @@ int skill_get_castnodex( int id ,int lv ){ if (id >= 10000 && id < 10015) id-= 9500; return (lv <= 0) ? 0:skill_db[id].castnodex[lv-1]; } +int skill_get_nocast ( int id ){ + if (id >= 10000 && id < 10015) id-= 9500; + return skill_db[id].nocast; +} int skill_tree_get_max(int id, int b_class){ struct pc_base_job s_class = pc_calc_base_job(b_class); int i, skillid; @@ -861,15 +870,15 @@ int skillnotok(int skillid, struct map_session_data *sd) { return 0; // gm's can do anything damn thing they want // Check skill restrictions [Celest] - if(!map[sd->bl.m].flag.pvp && !map[sd->bl.m].flag.gvg && skill_db[skillid].nocast & 1) + if(!map[sd->bl.m].flag.pvp && !map[sd->bl.m].flag.gvg && skill_get_nocast (skillid) & 1) return 1; - if(map[sd->bl.m].flag.pvp && skill_db[skillid].nocast & 2) + if(map[sd->bl.m].flag.pvp && skill_get_nocast (skillid) & 2) return 1; - if(map[sd->bl.m].flag.gvg && skill_db[skillid].nocast & 4) + if(map[sd->bl.m].flag.gvg && skill_get_nocast (skillid) & 4) return 1; - if (agit_flag && skill_db[skillid].nocast & 8) + if (agit_flag && skill_get_nocast (skillid) & 8) return 1; - if (battle_config.pk_mode && !map[sd->bl.m].flag.nopvp && skill_db[skillid].nocast & 16) + if (battle_config.pk_mode && !map[sd->bl.m].flag.nopvp && skill_get_nocast (skillid) & 16) return 1; switch (skillid) { @@ -3727,11 +3736,11 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int case BS_REPAIRWEAPON: /* 武器修理 */ if(sd) { //動作しないのでとりあえずコメントアウト - if (pc_search_inventory(sd, 999) < 0 ) { //fixed by Lupus (item pos can be = 0!) + /*if (pc_search_inventory(sd, 999) < 0 ) { //fixed by Lupus (item pos can be = 0!) clif_skill_fail(sd,sd->skillid,0,0); map_freeblock_unlock(); return 1; - } + }*/ clif_item_repair_list(sd); } break; @@ -5422,9 +5431,14 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid, case GD_SOULCOLD: case GD_HAWKEYES: range=2; - target=BCT_NOENEMY; - limit=600000; + target=BCT_ALL; + limit=60000; break; + + default: + if(battle_config.error_log) + printf ("skill_unitsetting: Unknown skill id = %d\n",skillid); + return 0; } nullpo_retr(NULL, group=skill_initunitgroup(src,count,skillid,skilllv,skill_get_unit_id(skillid,flag&1))); @@ -9380,8 +9394,12 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val val2=10+val1*3; break; case SC_STRIPWEAPON: + if (val2==0) val2=90; + break; case SC_STRIPSHIELD: - case SC_STRIPARMOR: + if (val2==0) val2=85; + break; + case SC_STRIPARMOR: case SC_STRIPHELM: case SC_CP_WEAPON: case SC_CP_SHIELD: @@ -10549,7 +10567,21 @@ int skill_unit_timer_sub( struct block_list *bl, va_list ap ) map_addflooritem(&item_tmp,1,bl->m,bl->x,bl->y,NULL,NULL,NULL,0); // ?返還 } } + skill_delunit(unit); } + break; + + case 0xc1: + case 0xc2: + case 0xc3: + case 0xc4: + { + struct block_list *src=map_id2bl(group->src_id); + if (src) + group->tick = tick; + } + break; + default: skill_delunit(unit); } @@ -11605,7 +11637,9 @@ int skill_readdb(void) if(split[0]==NULL) continue; i=atoi(split[0]); - if(i < 0 || i > MAX_SKILL_DB) + if (i>=10000 && i<10015) // for guild skills [Celest] + i -= 9500; + else if(i<0 || i>MAX_SKILL_DB) continue; skill_db[i].nocast=atoi(split[1]); k++; -- cgit v1.2.3-70-g09d2 From 5e005fa9321149912ceb8568c8a1a7bab047e533 Mon Sep 17 00:00:00 2001 From: celest Date: Tue, 30 Nov 2004 12:03:52 +0000 Subject: Added missing Tiger Knuckle Fist stun time git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@423 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 1 + src/map/skill.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 91e5af76f..e6bc82398 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -7,6 +7,7 @@ Date Added - Updated Weapon Repair :- uses different materials depending on repaired item (Iron Ore/Iron/Steel/Rough Oridecon) - Fixed sp recovery problem, thanks to OutSider for pointing it out + - Updated Tiger Knuckle Fist stun time 11/29 * Fixed crash in src/char_sql/char.c when setting chars offline [MouseJstr] diff --git a/src/map/skill.c b/src/map/skill.c index 7676a1380..933a1a40a 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1266,8 +1266,10 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s // -- moonsoul (stun ability of new champion skill tigerfist) // case CH_TIGERFIST: - if( rand()%100 < (10 + skilllv*10)*sc_def_vit/100 ) - skill_status_change_start(bl,SC_STAN,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); + if( rand()%100 < (10 + skilllv*10)*sc_def_vit/100 ) { + int sec = skill_get_time2 (skillid,skilllv) - (double)battle_get_agi(bl)*0.1; + skill_status_change_start(bl,SC_STAN,skilllv,0,0,0,sec,0); + } break; case LK_SPIRALPIERCE: -- cgit v1.2.3-70-g09d2 From 463858e6ec5dc19949a023bd9fb0fa69c1815a92 Mon Sep 17 00:00:00 2001 From: celest Date: Tue, 30 Nov 2004 14:56:27 +0000 Subject: - Added cooldown time for Emergency Recall - Fixed some typos git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@425 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ npc/Changelog.txt | 1 + npc/merchants/refine.txt | 20 ++++++++++---------- npc/other/wedding.txt | 6 +++--- src/map/skill.c | 3 ++- 5 files changed, 18 insertions(+), 14 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index e6bc82398..6fc6b2463 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -8,6 +8,8 @@ Date Added (Iron Ore/Iron/Steel/Rough Oridecon) - Fixed sp recovery problem, thanks to OutSider for pointing it out - Updated Tiger Knuckle Fist stun time + - Added cooldown time for Emergency Recall + - Fixed typo in skill.c, thanks to Toster 11/29 * Fixed crash in src/char_sql/char.c when setting chars offline [MouseJstr] diff --git a/npc/Changelog.txt b/npc/Changelog.txt index 73e54adff..97ff8537f 100644 --- a/npc/Changelog.txt +++ b/npc/Changelog.txt @@ -31,6 +31,7 @@ Other Ppl Date Added ====== 11/30 * Added Lutie shops + * Corrected some typos, thanks to leinsirk10 11/28 * Added missing Niflheim monsters [shadow] diff --git a/npc/merchants/refine.txt b/npc/merchants/refine.txt index b3e354e68..8900c0fec 100644 --- a/npc/merchants/refine.txt +++ b/npc/merchants/refine.txt @@ -746,7 +746,7 @@ function script repairmain { REPAIR1: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -758,7 +758,7 @@ function script repairmain { REPAIR2: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -770,7 +770,7 @@ function script repairmain { REPAIR3: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -782,7 +782,7 @@ function script repairmain { REPAIR4: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -794,7 +794,7 @@ function script repairmain { REPAIR5: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -806,7 +806,7 @@ function script repairmain { REPAIR6: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -818,7 +818,7 @@ function script repairmain { REPAIR7: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -830,7 +830,7 @@ function script repairmain { REPAIR8: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -842,7 +842,7 @@ function script repairmain { REPAIR9: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; @@ -854,7 +854,7 @@ function script repairmain { REPAIR10: mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(@broken1) + "."; - mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "To repair this, I need ^ff9999One Steel^000000, and " + @repairprice + " Zeny."; mes "Continue?"; next; menu "Yes",-,"No",L_CANCEL_2; diff --git a/npc/other/wedding.txt b/npc/other/wedding.txt index f5eea044b..78bbbc1d8 100644 --- a/npc/other/wedding.txt +++ b/npc/other/wedding.txt @@ -363,8 +363,8 @@ L_WeddingSystem: L_Marry: mes "[Marry Happy]"; mes "If you wish to get married you must first register."; - mes "Male is ^FF00FF@costgroomA^000000 zeny and female is ^FF00FF@costbrideA^000000 zeny"; - if((countitem(2338) > 0) || (countitem(7170) > 0) || (@outfit == 1)) mes "But only ^FF00FF@costgroomB^000000 zeny for male and ^FF00FF@costbrideB^000000 zeny for female if you already have registered before"; + mes "Male is ^FF00FF" + @costgroomA + "^000000 zeny and female is ^FF00FF" + @costbrideA + "^000000 zeny"; + if((countitem(2338) > 0) || (countitem(7170) > 0) || (@outfit == 1)) mes "But only ^FF00FF" + @costgroomB + "^000000 zeny for male and ^FF00FF" + @costbrideB + "^000000 zeny for female if you already have registered before"; mes "Both male and female must have registered,"; mes "and both must have paid fees, have Diamond Rings and be on same party!"; mes "The Bride will get a Wedding Dress, while the Groom will get a Chinese Tuxedo"; @@ -383,7 +383,7 @@ L_Marry: mes "[Marry Happy]"; if(sex == 1) mes "No problem sir, please fill out your name here."; if(sex == 0) mes "No problem miss, please fill out your name here."; - mes "And I'll need to collect a @costgroomA zeny fee for your wedding fees and outfit."; + mes "And I'll need to collect a " + @costgroomA + " zeny fee for your wedding fees and outfit."; next; mes "[Marry Happy]"; mes "Now You Must Insert The Your Bride's Name"; diff --git a/src/map/skill.c b/src/map/skill.c index 933a1a40a..80a7170b5 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -819,7 +819,7 @@ int skill_get_inf2( int id ){ } int skill_get_castcancel( int id ){ if (id >= 10000 && id < 10015) id-= 9500; - return skill_db[id].maxcount; + return skill_db[id].castcancel; } int skill_get_maxcount( int id ){ if (id >= 10000 && id < 10015) id-= 9500; @@ -4613,6 +4613,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int pc_setpos(dstsd, sd->mapname, sd->bl.x+dx[j], sd->bl.y+dy[j], 2); } } + skill_status_change_start(src,SC_BLOCKSKILL,skilllv,0,skillid,0,300000,0 ); } } break; -- cgit v1.2.3-70-g09d2 From 0387e6baf09969e126fc977f26285986966592da Mon Sep 17 00:00:00 2001 From: Nasedo Date: Tue, 30 Nov 2004 16:05:48 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@426 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/pet.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/map') diff --git a/src/map/pet.h b/src/map/pet.h index 365a4490f..b811735b1 100644 --- a/src/map/pet.h +++ b/src/map/pet.h @@ -2,7 +2,7 @@ #ifndef _PET_H_ #define _PET_H_ -#define MAX_PET_DB 100 +#define MAX_PET_DB 300 #define PETLOOT_SIZE 20 // [Valaris] struct pet_db { -- cgit v1.2.3-70-g09d2 From 207277be0ac9c73626adc9cf8a6841a3dffe67ef Mon Sep 17 00:00:00 2001 From: celest Date: Wed, 1 Dec 2004 16:00:51 +0000 Subject: - Updated Poison React - Added Soul Change, Soul Burn - Added a somewhat crude timer for Venom splasher - Added a fix for Guild Skills causing crashes git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@431 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 5 +++ db/Changelog.txt | 2 ++ db/skill_cast_db.txt | 2 +- db/skill_db.txt | 6 ++-- db/skill_require_db.txt | 2 +- src/map/battle.c | 20 +++++++++--- src/map/map.c | 3 +- src/map/map.h | 1 + src/map/skill.c | 87 ++++++++++++++++++++++++++++++++++++++++++------- 9 files changed, 107 insertions(+), 21 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index eb19d499e..f49e7ab99 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,6 +1,11 @@ Date Added 12/1 - Changed #define MAX_PET_DB to 300, it's easier for people adding new pets like this. [Nas] + * Skill Updates [celest] + - Updated Poison React + - Added Soul Change, Soul Burn + - Added a somewhat crude timer for Venom splasher + - Added a fix for Guild Skills causing crashes by Sara, thanks! 11/30 * Fixed client crash when disguised characters die [celest] diff --git a/db/Changelog.txt b/db/Changelog.txt index 9cd5667f4..189351646 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -5,6 +5,8 @@ Ayathoya items == Added but no effect ( all are "ect" itens) Skill databases == celest working on them i believe. +12/1 * Updated Poison React, Soul Change, Soul Burn [celest] + 11/30 * Corrected bUnbreakable value in const.txt [celest] * updated skill_cast_db for Meltdown and Tiger Knuckle Fist [celest] diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index aec25dcb4..ff8b69227 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -239,7 +239,7 @@ 372,0,800:800:800:800:800:1000:1000:1000:1000:1000,0,0 //CH_CHAINCRUSH#連柱崩撃# 373,0,2000:2500:3000:3500:4000,0,0 //PF_HPCONVERSION#ライフ置き換え# 374,3000,5000,0,0 //PF_SOULCHANGE#ソウルチェンジ# -375,0,10000:10000:10000:10000:15000,0,0 //PF_SOULBURN#ソウルバーン# +//375,0,10000:10000:10000:10000:15000,0,0 //PF_SOULBURN#ソウルバーン# 378,0,2000,20000:30000:40000:50000:60000,20000:30000:40000:50000:60000 //ASC_EDP#エンチャントデッドリーポイズン# 379,0,1000:1200:1400:1600:1800:2000:2200:2400:2600:2800,0,0 //ASC_BREAKER diff --git a/db/skill_db.txt b/db/skill_db.txt index 5e24078a6..2913874c0 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -138,7 +138,7 @@ 136,-1,8,1,0,0,10,8,no,0,0,0,weapon,0 //AS_SONICBLOW#?ニックブロ?# 137,3:4:5:6:7,6,1,0,0,5,1,no,0,0,0,weapon,0 //AS_GRIMTOOTH#グリ?トゥ?ス# 138,8,6,16,5,1,10,1,no,0,1024,0,weapon,0 //AS_ENCHANTPOISON#エン?ャント?イズン# -139,0,6,16,5,1,10,1,no,0,0,0,weapon,0 //AS_POISONREACT#?イズンリアクト# +139,0,6,4,5,1,10,1,no,0,0,0,weapon,0 //AS_POISONREACT#?イズンリアクト# 140,2,6,2,5,1,10,1,no,0,0,0,weapon,0 //AS_VENOMDUST#ベナ??スト# 141,2,6,1,0,1,10,1,yes,0,0,0,weapon,0 //AS_SPLASHER#ベナ?スプラッシャ?# 142,0,6,4,0,1,1,1,no,0,1,0,none,0 //NV_FIRSTAID#応?手当# @@ -408,8 +408,8 @@ 371,-2,8,4,0,0,5,1,no,0,0,0,weapon,0 //CH_TIGERFIST#伏虎拳# 372,-2,8,4,0,0,10,1:1:2:2:3:3:4:4:5:5,no,0,0,0,weapon,0 //CH_CHAINCRUSH#連柱崩撃# 373,0,6,4,0,1,5,1,no,0,0,0,magic,0 //PF_HPCONVERSION#ライフ置き換え# -374,0,0,4,0,1,1,1,yes,0,0,0,magic,0 //PF_SOULCHANGE#?ウル?ェンジ# -375,0,0,4,0,1,1,1,yes,0,0,0,magic,0 //PF_SOULBURN#?ウルバ?ン# +374,4,6,16,0,1,1,1,yes,0,0,0,magic,0 //PF_SOULCHANGE#?ウル?ェンジ# +375,4,6,1,0,0,5,1,yes,0,0,0,magic,0 //PF_SOULBURN#?ウルバ?ン# 376,0,0,0,0,1,5,1,no,0,0,0,weapon,0 //ASC_KATAR#アドバンスドカ??ル研究# 377,0,0,4,0,1,10,1,no,0,0,0,misc,0 //ASC_HALLUCINATION#ハルシネ?ションウォ?ク# 378,0,6,4,5,1,10,1,no,0,1024,0,weapon,0 //ASC_EDP#エン?ャントデッドリ??イズン# diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index 5b95010cb..49eb15602 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -260,7 +260,7 @@ 372,0,0,12:14:16:18:20:22:24:26:28:30,0,0,0,99,none,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //CH_CHAINCRUSH#連柱崩?# 373,0,0,1:2:3:4:5,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PF_HPCONVERSION#???????# 374,0,0,5,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PF_SOULCHANGE#ソウルチェンジ# -375,0,0,80:90:100:110:120,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PF_HPCONVERSION#ライフ置き換え# +375,0,0,80:90:100:110:120,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //PF_SOULBURN#?ウルバ?ン# 378,0,0,60:70:80:90:100,0,0,0,99,none,0,678,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //ASC_EDP#エンチャントデッドリ?ポイズン# 379,0,0,20:20:20:20:20:30:30:30:30:30,0,0,0,99,weapon,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //ASC_BREAKER#ソウルブレ?カ?# diff --git a/src/map/battle.c b/src/map/battle.c index 8309bce78..6ff2697b4 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4008,6 +4008,7 @@ struct Damage battle_calc_magic_attack( struct Damage md; int aflag; int normalmagic_flag=1; + int matk_flag = 1; int ele=0,race=7,t_ele=0,t_race=7,t_mode = 0,cardfix,t_class,i; struct map_session_data *sd=NULL,*tsd=NULL; struct mob_data *tmd = NULL; @@ -4165,15 +4166,26 @@ struct Damage battle_calc_magic_attack( printf("battle_calc_magic_attack(): napalmvulcan enemy count=0 !\n"); } break; + case PF_SOULBURN: // Celest + if (target->type != BL_PC || skill_lv < 5) { + memset(&md,0,sizeof(md)); + return md; + } else if (target->type == BL_PC) { + damage = ((struct map_session_data *)target)->status.sp * 2; + matk_flag = 0; // don't consider matk and matk2 + } + break; } } if(normalmagic_flag){ // 一般魔法ダメージ計算 int imdef_flag=0; - if(matk1>matk2) - damage= matk2+rand()%(matk1-matk2+1); - else - damage= matk2; + if (matk_flag) { + if(matk1>matk2) + damage= matk2+rand()%(matk1-matk2+1); + else + damage= matk2; + } if(sd) { if(sd->ignore_mdef_ele & (1<ignore_mdef_race & (1<status.hp = 100; skill_status_change_clear(&sd->bl,1); // ステータス異常を解除する - skill_clear_unitgroup(&sd->bl); // スキルユニットグループの削除 +// skill_clear_unitgroup(&sd->bl); // スキルユニットグループの削除 skill_cleartimerskill(&sd->bl); pc_stop_walking(sd,0); pc_stopattack(sd); @@ -995,6 +995,7 @@ int map_quit(struct map_session_data *sd) { skill_gangsterparadise(sd,0); pc_calcstatus(sd,4); + skill_clear_unitgroup(&sd->bl); // [Sara-chan] clif_clearchar_area(&sd->bl,2); diff --git a/src/map/map.h b/src/map/map.h index 870682156..60f4ce9d6 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -398,6 +398,7 @@ struct mob_data { unsigned change_walk_target : 1; unsigned walk_easy : 1; unsigned special_mob_ai : 3; + unsigned soul_change_flag : 1; // Celest } state; int timer; short to_x,to_y; diff --git a/src/map/skill.c b/src/map/skill.c index 80a7170b5..4830ba6c7 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1,4 +1,4 @@ -// $Id: skill.c,v 1.8 2004/11/30 8:26:49 PM Celestia Exp $ +// $Id: skill.c,v 1.8 2004/12/1 11:59:43 PM Celestia Exp $ /* スキル?係 */ #include @@ -1151,7 +1151,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s struct status_change *sc_data = battle_get_sc_data(bl); if(sc_data) { sc_data[SC_FREEZE].val3++; - if(sc_data[SC_FREEZE].val3 >= 3 && rand()%100 < skilllv*sc_def_mdef/100) + if(sc_data[SC_FREEZE].val3 >= 3 && rand()%1000 < skilllv*sc_def_mdef/100) skill_status_change_start(bl,SC_FREEZE,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); } } @@ -2485,6 +2485,11 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s } skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick, 0x0500|dist ); + if (bl->type == BL_MOB && skillid == AS_GRIMTOOTH) { + struct status_change *sc_data = battle_get_sc_data(bl); + if (sc_data && sc_data[SC_SLOWDOWN].timer == -1) + skill_status_change_start(bl,SC_SLOWDOWN,0,0,0,0,1000,0); + } } }else{ int ar=1; @@ -2499,9 +2504,8 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s else if(skillid==NPC_SPLASHATTACK) /* スプラッシュアタックは範?7*7 */ ar=3; - // meteor assault cast effect (not sure how else to properly add it =p) [Celest] if (skillid == ASC_METEORASSAULT) - clif_specialeffect(&sd->bl,409, 1); + clif_skill_nodamage(src,bl,skillid,skilllv,1); skill_area_temp[1]=bl->id; skill_area_temp[2]=x; @@ -2516,11 +2520,6 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s if (skillid == SM_MAGNUM) // fire element for 10 seconds skill_status_change_start(src,SC_FLAMELAUNCHER,0,0,0,0,10000,0); } - if (bl->type == BL_MOB && skillid == AS_GRIMTOOTH) { - struct status_change *sc_data = battle_get_sc_data(bl); - if (sc_data && sc_data[SC_SLOWDOWN].timer == -1) - skill_status_change_start(bl,SC_SLOWDOWN,0,0,0,0,1000,0); - } break; case KN_BOWLINGBASH: /* ボウリングバッシュ */ @@ -2721,6 +2720,27 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s skill_attack(BF_MISC,src,src,bl,skillid,skilllv,tick,0 ); break; + // Celest + case PF_SOULBURN: + { + int per = skilllv < 5 ? 20+ skilllv*10 : 60; + if (rand()%100 < per) { + clif_skill_nodamage(src,bl,skillid,skilllv,1); + if (skilllv == 5) + skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,0 ); + if (bl->type == BL_PC) + ((struct map_session_data *)bl)->status.sp = 0; + } else { + clif_skill_nodamage(src,src,skillid,skilllv,1); + if (skilllv == 5) + skill_attack(BF_MAGIC,src,src,src,skillid,skilllv,tick,0 ); + sd->status.sp = 0; + clif_updatestatus(sd,SP_SP); + } + skill_status_change_start(src,SC_BLOCKSKILL,skilllv,0,skillid,0, (skilllv < 5 ? 10000: 15000),0 ); + } + break; + case NPC_SELFDESTRUCTION: /* 自爆 */ case NPC_SELFDESTRUCTION2: /* 自爆2 */ if(flag&1){ @@ -2783,6 +2803,7 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s break; default: + printf("Unknown skill used:%d\n",skillid); map_freeblock_unlock(); return 1; } @@ -3538,7 +3559,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int { struct status_change *tsc_data = battle_get_sc_data(bl); int sc=SkillStatusChangeTable[skillid]; - clif_skill_nodamage(src,bl,skillid,-1,1); + clif_skill_nodamage(src,bl,skillid,skilllv,1); if( tsc_data ){ if( tsc_data[sc].timer==-1 ) /* 付加する */ @@ -4421,7 +4442,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int if((double)battle_get_max_hp(bl)*2/3 < battle_get_hp(bl)) //HPが2/3以上?っていたら失敗 return 1; clif_skill_nodamage(src,bl,skillid,skilllv,1); - skill_status_change_start(bl,SkillStatusChangeTable[skillid],skilllv,skillid,src->id,0,skill_get_time(skillid,skilllv),0 ); + skill_status_change_start(bl,SkillStatusChangeTable[skillid],skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000,0 ); break; case PF_MINDBREAKER: /* プロボック */ @@ -4462,6 +4483,35 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int } break; + case PF_SOULCHANGE: + { + int sp1 = 0, sp2 = 0; + if (sd) { + if (dstsd) { + sp1 = sd->status.sp > dstsd->status.max_sp ? dstsd->status.max_sp : sd->status.sp; + sp2 = dstsd->status.sp > sd->status.max_sp ? sd->status.max_sp : dstsd->status.sp; + sd->status.sp = sp2; + dstsd->status.sp = sp1; + clif_heal(sd->fd,SP_SP,sp2); + clif_heal(dstsd->fd,SP_SP,sp1); + } else if (dstmd) { + if (dstmd->state.soul_change_flag) { + clif_skill_fail(sd,skillid,0,0); + map_freeblock_unlock(); + return 0; + } + sp2 = sd->status.max_sp * 3 /100; + if (sd->status.sp + sp2 > sd->status.max_sp) + sp2 = sd->status.max_sp - sd->status.sp; + sd->status.sp += sp2; + clif_heal(sd->fd,SP_SP,sp2); + dstmd->state.soul_change_flag = 1; + } + } + clif_skill_nodamage(src,bl,skillid,skilllv,1); + } + break; + // Weapon Refining [Celest] case WS_WEAPONREFINE: if(sd) @@ -4617,6 +4667,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int } } break; + default: printf("Unknown skill used:%d\n",skillid); map_freeblock_unlock(); @@ -9072,6 +9123,20 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data) return 0; } break; + + case SC_SPLASHER: + if (sc_data[type].val4 % 1000 == 0) { + char timer[2]; + sprintf (timer, "%d", sc_data[type].val4/1000); + clif_message(bl, timer); + } + if((sc_data[type].val4 -= 500) > 0) { + sc_data[type].timer = add_timer( + 500 + tick, skill_status_change_timer, + bl->id, data); + return 0; + } + break; case SC_LEADERSHIP: case SC_GLORYWOUNDS: case SC_SOULCOLD: -- cgit v1.2.3-70-g09d2 From 0073a0c0267b57250645bf3e0ed5a7ac4aa7463b Mon Sep 17 00:00:00 2001 From: amber Date: Wed, 1 Dec 2004 21:40:11 +0000 Subject: Fix some build issues git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@432 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 1 + src/map/atcommand.c | 18 +++++++++++------- src/map/guild.c | 3 ++- src/map/party.c | 4 ++++ src/map/pc.c | 7 +++++-- 5 files changed, 23 insertions(+), 10 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index f49e7ab99..1238c466f 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,6 @@ Date Added 12/1 + - Make it build against gcc 2.95 [MouseJstr] - Changed #define MAX_PET_DB to 300, it's easier for people adding new pets like this. [Nas] * Skill Updates [celest] - Updated Poison React diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 34bf0150d..dfedea102 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -2762,12 +2762,8 @@ int atcommand_go( char output[200]; int m; - if(map[sd->bl.m].flag.nogo) { - clif_displaymessage(sd->fd,"You can not use @go on this map."); - return 0; - } - struct { char map[16]; int x, y; } data[] = { + const struct { char map[16]; int x, y; } data[] = { { "prontera.gat", 156, 191 }, // 0=Prontera { "morocc.gat", 156, 93 }, // 1=Morroc { "geffen.gat", 119, 59 }, // 2=Geffen @@ -2787,6 +2783,11 @@ int atcommand_go( { "sec_pri.gat", 23, 61 }, // 16=Prison }; + if(map[sd->bl.m].flag.nogo) { + clif_displaymessage(sd->fd,"You can not use @go on this map."); + return 0; + } + memset(map_name, '\0', sizeof(map_name)); memset(output, '\0', sizeof(output)); @@ -7198,6 +7199,7 @@ atcommand_skilltree(const int fd, struct map_session_data* sd, struct pc_base_job s_class; char target[255], *tbl; char output[255]; + struct skill_tree_entry *ent; if (!message || !*message) return -1; @@ -7235,7 +7237,7 @@ atcommand_skilltree(const int fd, struct map_session_data* sd, return 0; } - struct skill_tree_entry *ent = &skill_tree[s][c][skillidx]; + ent = &skill_tree[s][c][skillidx]; for(j=0;j<5;j++) if( ent->need[j].id && @@ -7690,8 +7692,10 @@ atcommand_identify( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i,num; + + nullpo_retr(-1, sd); + for(i=num=0;istatus.inventory[i].nameid > 0 && sd->status.inventory[i].identify!=1){ num++; diff --git a/src/map/guild.c b/src/map/guild.c index a48bb3020..0943b4b6d 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -870,9 +870,10 @@ int guild_notice_changed(int guild_id,const char *mes1,const char *mes2) // ギルドエンブレム変更 int guild_change_emblem(struct map_session_data *sd,int len,const char *data) { - nullpo_retr(0, sd); struct guild *g = NULL; + nullpo_retr(0, sd); + if ((g = guild_search(sd->status.guild_id)) && guild_checkskill(g, GD_GLORYGUILD)>0) return intif_guild_emblem(sd->status.guild_id,len,data); diff --git a/src/map/party.c b/src/map/party.c index 82b77cf6b..d2f169565 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -590,7 +590,11 @@ int party_exp_share(struct party *p,int map,int base_exp,int job_exp,int zeny) return 0; for(i=0;imember[i].sd)!=NULL && sd->bl.m==map) { +#ifdef TWILIGHT + pc_gainexp(sd,base_exp,job_exp); +#else pc_gainexp(sd,base_exp/c+1,job_exp/c+1); +#endif if(battle_config.zeny_from_mobs) // zeny from mobs [Valaris] pc_getzeny(sd,zeny/c+1); } diff --git a/src/map/pc.c b/src/map/pc.c index 13d1914c8..118104b9d 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3464,9 +3464,11 @@ int pc_item_repair(struct map_session_data *sd,int idx) { int flag=1, material; int materials[5] = { 0, 1002, 998, 999, 756 }; + struct item *item; nullpo_retr(0, sd); - struct item *item = &sd->status.inventory[idx]; + + item = &sd->status.inventory[idx]; if(idx >= 0 && idx < MAX_INVENTORY) { if(item->nameid > 0 && item->attribute == 1 ) { @@ -3501,9 +3503,10 @@ int pc_item_refine(struct map_session_data *sd,int idx) { int flag = 1, i = 0, count = 0, ep = 0, per, refine; int material[5] = { 0, 1010, 1011, 984, 984 }; + struct item *item; nullpo_retr(0, sd); - struct item *item = &sd->status.inventory[idx]; + item = &sd->status.inventory[idx]; if(idx >= 0 && idx < MAX_INVENTORY) { if(item->nameid > 0 && itemdb_type(item->nameid)==4) { -- cgit v1.2.3-70-g09d2 From 6d695639b4e40a5739f5d8fa45b48a54a8523431 Mon Sep 17 00:00:00 2001 From: celest Date: Thu, 2 Dec 2004 17:06:40 +0000 Subject: - Modified Weapon Refine - should only +1 every time. - Updated Berserk, Chase Walk, Slim Pitcher - Added skill_range_leniency * Added check for clif.c in case the server didn't realise we've died git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@433 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 7 +++++++ conf-tmpl/battle_athena.conf | 5 +++++ db/Changelog.txt | 3 +++ db/skill_cast_db.txt | 2 +- db/skill_nocast_db.txt | 4 ++-- db/skill_tree.txt | 10 ++++----- src/map/battle.c | 11 +++++++++- src/map/battle.h | 1 + src/map/clif.c | 3 +++ src/map/pc.c | 48 +++++++++++++++----------------------------- src/map/skill.c | 18 +++++++++++------ 11 files changed, 65 insertions(+), 47 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 1238c466f..542a31cfc 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,11 @@ Date Added +12/2 + * Skill Updates [celest] + - Modified Weapon Refine - should only +1 every time. + - Updated Berserk, Chase Walk, Slim Pitcher + - Added skill_range_leniency + * Added check for clif.c in case the server didn't realise we've died [celest] + 12/1 - Make it build against gcc 2.95 [MouseJstr] - Changed #define MAX_PET_DB to 300, it's easier for people adding new pets like this. [Nas] diff --git a/conf-tmpl/battle_athena.conf b/conf-tmpl/battle_athena.conf index d9b39dfc1..2fde5cfeb 100644 --- a/conf-tmpl/battle_athena.conf +++ b/conf-tmpl/battle_athena.conf @@ -746,5 +746,10 @@ mobs_level_up: no // Use kRO new steal formula? skill_steal_type: yes +// In some cases when moving to cast a skill the exe will a send a UseSkill packet +// before the server has moved us to the correct position, causing it to fail. +// Setting this at 1 would be enough. +skill_range_leniency: 1 + import: conf/import/battle_conf.txt diff --git a/db/Changelog.txt b/db/Changelog.txt index 189351646..9357a5078 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -5,6 +5,9 @@ Ayathoya items == Added but no effect ( all are "ect" itens) Skill databases == celest working on them i believe. + +12/2 * Updated skill tree prerequisites for the new kRO skills [celest] + 12/1 * Updated Poison React, Soul Change, Soul Burn [celest] 11/30 * Corrected bUnbreakable value in const.txt [celest] diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index ff8b69227..3ba21845f 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -271,7 +271,7 @@ 475,0,0,300000,0 //ST_PRESERVE## 476,1000,1000,75000:90000:105000:120000:135000,0 //ST_FULLSTRIP## -479,2000,0,60000:120000:180000:240000:300000,0 //CR_FULLPROTECTION## +479,2000,0,120000:240000:360000:480000:600000,0 //CR_FULLPROTECTION## 10010,100,60000,0 //GD_BATTLEORDER## 10011,100,60000,0 //GD_REGENERATION## diff --git a/db/skill_nocast_db.txt b/db/skill_nocast_db.txt index e27ae3ab7..158cfbe3b 100644 --- a/db/skill_nocast_db.txt +++ b/db/skill_nocast_db.txt @@ -12,6 +12,6 @@ 27,12 87,12 150,12 +214,12 361,12 -362,12 -389,12 \ No newline at end of file +362,12 \ No newline at end of file diff --git a/db/skill_tree.txt b/db/skill_tree.txt index 64ac742bd..118b43a4f 100644 --- a/db/skill_tree.txt +++ b/db/skill_tree.txt @@ -837,7 +837,7 @@ 4011,386,3,97,3,106,1,107,5,0,0,0,0//WS_CREATENUGGET #基本スキル# 4011,387,1,39,5,153,1,154,1,105,1,0,0//WS_CARTBOOST #基本スキル# 4011,388,1,107,10,112,3,0,0,0,0,0,0//WS_SYSTEMCREATE #基本スキル# -4011,477,10,109,5,94,5,96,3,97,2,0,0//WS_WEAPONREFINE +4011,477,10,107,10,0,0,0,0,0,0,0,0//WS_WEAPONREFINE //Sniper 4012,1,9,0,0,0,0,0,0,0,0,0,0//NV_BASIC #基本スキル# 4012,142,1,0,0,0,0,0,0,0,0,0,0//NV_FIRSTAID #応急手当# @@ -1081,8 +1081,8 @@ 4018,389,5,51,5,213,3,0,0,0,0,0,0//ST_CHASEWALK 4018,390,5,215,1,0,0,0,0,0,0,0,0//ST_REJECTSWORD 4018,391,5,215,1,0,0,0,0,0,0,0,0//ST_STEALBACKPACK -4018,475,1,219,5,225,1,0,0,0,0,0,0//ST_PRESERVE -4018,476,5,215,1,216,1,217,1,218,1,0,0//ST_FULLSTRIP +4018,475,1,225,10,0,0,0,0,0,0,0,0//ST_PRESERVE +4018,476,5,215,5,216,5,217,5,218,5,0,0//ST_FULLSTRIP //Creator 4019,1,9,0,0,0,0,0,0,0,0,0,0//NV_BASIC #基本スキル# 4019,142,1,0,0,0,0,0,0,0,0,0,0//NV_FIRSTAID #応急手当# @@ -1109,8 +1109,8 @@ 4019,235,5,237,3,0,0,0,0,0,0,0,0//AM_CP_SHIELD #ケミカルシールドチャージ# 4019,236,5,235,3,0,0,0,0,0,0,0,0//AM_CP_ARMOR #ケミカルアーマーチャージ# 4019,237,5,228,2,0,0,0,0,0,0,0,0//AM_CP_HELM #ケミカルヘルムチャージ# -4019,478,10,228,3,0,0,0,0,0,0,0,0//CR_SLIMPITCHER -4019,479,5,234,1,235,1,236,1,237,1,0,0//CR_FULLPROTECTION +4019,478,10,231,5,0,0,0,0,0,0,0,0//CR_SLIMPITCHER +4019,479,5,234,5,235,5,236,5,237,5,0,0//CR_FULLPROTECTION // 韓国でも未実装なので以下のツリーコメントアウト //4019,238,1,0,0,0,0,0,0,0,0,0,0//AM_BIOETHICS #生命倫理# diff --git a/src/map/battle.c b/src/map/battle.c index 6ff2697b4..9a11ab892 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4955,8 +4955,12 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) if(src->m != bl->m) // 違うマップ return 0; - if( range>0 && range < arange ) // 遠すぎる + if( range>0 && range < arange ) {// 遠すぎる +// be lenient if the skill was cast before we have moved to the correct position [Celest] + if (src->type == BL_PC && ((struct map_session_data *)bl)->walktimer != -1 && + !((arange-=battle_config.skill_range_leniency)<=range)) return 0; + } if( arange<2 ) // 同じマスか隣接 return 1; @@ -5208,6 +5212,7 @@ static const struct { { "skill_steal_type", &battle_config.skill_steal_type}, // [celest] { "skill_steal_rate", &battle_config.skill_steal_rate}, // [celest] { "night_darkness_level", &battle_config.night_darkness_level}, // [celest] + { "skill_range_leniency", &battle_config.skill_range_leniency}, // [celest] //SQL-only options start #ifndef TXT_ONLY @@ -5437,6 +5442,7 @@ void battle_set_defaults() { battle_config.skill_steal_type = 1; battle_config.skill_steal_rate = 100; battle_config.night_darkness_level = 9; + battle_config.skill_range_leniency = 1; battle_config.castrate_dex_scale = 150; @@ -5560,6 +5566,9 @@ void battle_validate_conf() { if (battle_config.night_darkness_level > 10) // Celest battle_config.night_darkness_level = 10; + if (battle_config.skill_range_leniency <= 0) // Celest + battle_config.skill_range_leniency = 0; + if (battle_config.vending_max_value > 10000000 || battle_config.vending_max_value<=0) // Lupus & Kobra_k88 battle_config.vending_max_value = 10000000; diff --git a/src/map/battle.h b/src/map/battle.h index f6f0345ca..b0f6c523d 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -340,6 +340,7 @@ extern struct Battle_Config { int skill_steal_type; // [celest] int skill_steal_rate; // [celest] int night_darkness_level; // [celest] + int skill_range_leniency; // [celest] #ifndef TXT_ONLY /* SQL-only options */ int mail_system; // [Valaris] diff --git a/src/map/clif.c b/src/map/clif.c index 50de1e108..34ee7aaea 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7947,6 +7947,9 @@ void clif_parse_Restart(int fd, struct map_session_data *sd) { pc_setrestartvalue(sd, 3); pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, 2); } + // in case the player's status somehow wasn't updated yet [Celest] + else if (sd->status.hp <= 0) + pc_setdead(sd); break; case 0x01: if(!pc_isdead(sd) && (sd->opt1 || (sd->opt2 && !(night_flag == 1 && sd->opt2 == STATE_BLIND)))) diff --git a/src/map/pc.c b/src/map/pc.c index 118104b9d..c047b5745 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1,4 +1,4 @@ -// $Id: pc.c 101 2004-11-30 8:27:10 PM Celestia $ +// $Id: pc.c 101 2004-12-2 12:58:29 AM Celestia $ #include #include #include @@ -1501,12 +1501,12 @@ int pc_calcstatus(struct map_session_data* sd,int first) if(sd->sc_data[SC_CLOAKING].timer!=-1) { sd->critical_rate += 100; // critical increases sd->speed = sd->speed * (sd->sc_data[SC_CLOAKING].val3-sd->sc_data[SC_CLOAKING].val1*3) /100; - // Ours is accurate enough - refer skill_check_cloaking. ^^ - //sd->speed = (sd->speed*(76+(sd->sc_data[SC_CLOAKING].val1*3)))/100; // Fixed by MiKa & Asa [Lupus] } - //sd->speed = (sd->speed*(76+(sd->sc_data[SC_INCREASEAGI].val1*3)))/100; - if(sd->sc_data[SC_CHASEWALK].timer!=-1) + if(sd->sc_data[SC_CHASEWALK].timer!=-1) { sd->speed = sd->speed * sd->sc_data[SC_CHASEWALK].val3 /100; // slow down by chasewalk + if(sd->sc_data[SC_CHASEWALK].val4) + sd->paramb[0] += (1<<(sd->sc_data[SC_CHASEWALK].val1-1)); // increases strength after 10 seconds + } if(sd->sc_data[SC_BLESSING].timer!=-1){ // ブレッシング sd->paramb[0]+= sd->sc_data[SC_BLESSING].val1; sd->paramb[3]+= sd->sc_data[SC_BLESSING].val1; @@ -3501,7 +3501,7 @@ int pc_item_repair(struct map_session_data *sd,int idx) */ int pc_item_refine(struct map_session_data *sd,int idx) { - int flag = 1, i = 0, count = 0, ep = 0, per, refine; + int flag = 1, i = 0, ep = 0, per; int material[5] = { 0, 1010, 1011, 984, 984 }; struct item *item; @@ -3511,38 +3511,23 @@ int pc_item_refine(struct map_session_data *sd,int idx) if(idx >= 0 && idx < MAX_INVENTORY) { if(item->nameid > 0 && itemdb_type(item->nameid)==4) { // if it's no longer refineable - if (item->refine == 10) { + if (item->refine >= sd->skilllv || item->refine == 10) { clif_skill_fail(sd,sd->skillid,0,0); return 0; } - refine = item->refine + sd->skilllv > 10 - ? 10 - item->refine : sd->skilllv; - for (i=0; i < MAX_INVENTORY; i++) - if(sd->status.inventory[i].nameid == material [itemdb_wlv (item->nameid)]) - count += sd->status.inventory[i].amount; - if (count < refine ) { + if ((i=pc_search_inventory(sd, material [itemdb_wlv (item->nameid)])) < 0 ) { //fixed by Lupus (item pos can be = 0!) clif_skill_fail(sd,sd->skillid,0,0); return 0; } - per = percentrefinery [itemdb_wlv (item->nameid)][item->refine + refine - 1]; + + per = percentrefinery [itemdb_wlv (item->nameid)][(int)item->refine]; //per += pc_checkskill(sd,BS_WEAPONRESEARCH); per *= (75 + sd->status.job_level/2)/100; if (per > rand() % 100) { flag = 0; - item->refine += refine; - - for (i=0; i < MAX_INVENTORY; i++) - if(sd->status.inventory[i].nameid == material [itemdb_wlv (item->nameid)]) { - if (sd->status.inventory[i].amount >= refine) { - pc_delitem(sd,i,refine,0); - break; - } else { - refine -= sd->status.inventory[i].amount; - pc_delitem(sd,i,sd->status.inventory[i].amount,0); - } - } - + item->refine++; + pc_delitem(sd, i, 1, 0); if(item->equip) { ep = item->equip; pc_unequipitem(sd,idx,0, BF_NORMAL); @@ -3555,7 +3540,7 @@ int pc_item_refine(struct map_session_data *sd,int idx) clif_misceffect(&sd->bl,3); } else { - clif_delitem(sd,i,refine); + pc_delitem(sd, i, 1, 0); item->refine = 0; if(item->equip) pc_unequipitem(sd,idx,0, BF_NORMAL); @@ -4006,9 +3991,7 @@ static int pc_walk(int tid,unsigned int tick,int id,int data) int moveblock; int x,y,dx,dy; - sd=map_id2sd(id); - if(sd==NULL) - return 0; + nullpo_retr(0, (sd=map_id2sd(id))); if(sd->walktimer != tid){ if(battle_config.error_log) @@ -4026,6 +4009,7 @@ static int pc_walk(int tid,unsigned int tick,int id,int data) sd->walkpath.path_half ^= 1; if(sd->walkpath.path_half==0){ // マス目中心へ到着 sd->walkpath.path_pos++; + if(sd->state.change_walk_target){ pc_walktoxy_sub(sd); return 0; @@ -7194,7 +7178,7 @@ static int pc_natural_heal_hp(struct map_session_data *sd) return 0; - if(sd->sc_count && sd->sc_data[SC_APPLEIDUN].timer!=-1) { // Apple of Idun + if(sd->sc_count && sd->sc_data[SC_APPLEIDUN].timer!=-1 && sd->sc_data[SC_BERSERK].timer==-1) { // Apple of Idun if(sd->inchealhptick >= 6000 && sd->status.hp < sd->status.max_hp) { bonus = skill*20; while(sd->inchealhptick >= 6000) { diff --git a/src/map/skill.c b/src/map/skill.c index 4830ba6c7..5be308425 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1,4 +1,4 @@ -// $Id: skill.c,v 1.8 2004/12/1 11:59:43 PM Celestia Exp $ +// $Id: skill.c,v 1.8 2004/12/2 12:58:19 AM Celestia Exp $ /* スキル?係 */ #include @@ -4522,7 +4522,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int case CR_SLIMPITCHER: { if (sd && flag&1) { - int hp = sd->potion_hp * (100 + pc_checkskill(sd,CR_SLIMPITCHER)*5 + pc_checkskill(sd,AM_POTIONPITCHER)*10 + pc_checkskill(sd,AM_LEARNINGPOTION)*5)/100; + int hp = sd->potion_hp * (100 + pc_checkskill(sd,CR_SLIMPITCHER)*10 + pc_checkskill(sd,AM_POTIONPITCHER)*10 + pc_checkskill(sd,AM_LEARNINGPOTION)*5)/100; hp = hp * (100 + (battle_get_vit(bl)<<1))/100; if (dstsd) hp = hp * (100 + pc_checkskill(dstsd,SM_RECOVERY)*10)/100; @@ -7816,7 +7816,7 @@ int skill_castcancel(struct block_list *bl,int type) } sd->skilltimer=-1; clif_skillcastcancel(bl); - } + } return 0; }else if(bl->type==BL_MOB){ @@ -8775,11 +8775,17 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data) case SC_CHASEWALK: if(sd){ - if( sd->status.sp > 19+sc_data[SC_CHASEWALK].val1*3){ - sd->status.sp-=(19+(sc_data[SC_CHASEWALK].val1*3)); // update sp cost [Celest] + int sp = 10+sc_data[SC_CHASEWALK].val1*2; + if (map[sd->bl.m].flag.gvg) sp *= 5; + if( sd->status.sp > sp){ + sd->status.sp -= sp; // update sp cost [Celest] clif_updatestatus(sd,SP_SP); sc_data[type].timer=add_timer( /* タイマ?再設定 */ - sc_data[type].val2+tick, skill_status_change_timer, bl->id, data); + sc_data[type].val2+tick, skill_status_change_timer, bl->id, data); + sc_data[SC_CHASEWALK].val4++; + if (sc_data[SC_CHASEWALK].val4 > 3) + sc_data[SC_CHASEWALK].val4 = 0; + pc_calcstatus (sd, 0); return 0; } } -- cgit v1.2.3-70-g09d2 From 493fb3cce76b9b659010b8aeee07916de85cdd5b Mon Sep 17 00:00:00 2001 From: celest Date: Thu, 2 Dec 2004 17:26:25 +0000 Subject: Fixed @npcmove git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@435 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 1 + src/map/atcommand.c | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 542a31cfc..9462fd0a9 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -5,6 +5,7 @@ Date Added - Updated Berserk, Chase Walk, Slim Pitcher - Added skill_range_leniency * Added check for clif.c in case the server didn't realise we've died [celest] + * Added a fix for @npcmove by JohnC and Fredzilla 12/1 - Make it build against gcc 2.95 [MouseJstr] diff --git a/src/map/atcommand.c b/src/map/atcommand.c index dfedea102..ce2ffaf08 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -6896,27 +6896,26 @@ atcommand_npcmove(const int fd, struct map_session_data* sd, int x = 0, y = 0; struct npc_data *nd = 0; - if( sd == NULL ) - return -1; + nullpo_retr(-1, sd); if (!message || !*message) return -1; memset(character, '\0', sizeof character); - if (sscanf(message, "%d %d %99[^\n]", &x, &y, character) < 4) + if (sscanf(message, "%d %d %99[^\n]", &x, &y, character) < 3) { + clif_displaymessage(fd, "Usage: @npcmove "); return -1; + } - nd=npc_name2id(character); - if (nd==NULL) - return -1; + nullpo_retr(-1, (nd = npc_name2id(character))); - npc_enable(character, 0); - nd->bl.x = x; - nd->bl.y = y; - npc_enable(character, 1); + npc_enable(character, 0); + nd->bl.x = x; + nd->bl.y = y; + npc_enable(character, 1); - return 0; + return 0; } /*========================================== -- cgit v1.2.3-70-g09d2 From 665680682b57d01415afb478b67d0c7c61d21119 Mon Sep 17 00:00:00 2001 From: celest Date: Thu, 2 Dec 2004 17:50:15 +0000 Subject: * Added motd_type * Edited atcommand.c to fix compile warnings git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@436 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ conf-tmpl/battle_athena.conf | 3 +++ src/map/atcommand.c | 4 ++-- src/map/battle.c | 9 ++++++++- src/map/battle.h | 1 + src/map/pc.c | 5 ++++- 6 files changed, 20 insertions(+), 4 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 9462fd0a9..7adfcb4a2 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -6,6 +6,8 @@ Date Added - Added skill_range_leniency * Added check for clif.c in case the server didn't realise we've died [celest] * Added a fix for @npcmove by JohnC and Fredzilla + * Added motd_type [celest] + * Edited atcommand.c to fix compile warnings [celest] 12/1 - Make it build against gcc 2.95 [MouseJstr] diff --git a/conf-tmpl/battle_athena.conf b/conf-tmpl/battle_athena.conf index 2fde5cfeb..4a338b256 100644 --- a/conf-tmpl/battle_athena.conf +++ b/conf-tmpl/battle_athena.conf @@ -751,5 +751,8 @@ skill_steal_type: yes // Setting this at 1 would be enough. skill_range_leniency: 1 +// Set this to 1 if your clients have langtype problems and can't display motd properly +motd_type: 0 + import: conf/import/battle_conf.txt diff --git a/src/map/atcommand.c b/src/map/atcommand.c index ce2ffaf08..7accfa639 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -2884,7 +2884,7 @@ int atcommand_go( return -1; } } else if (town >= 0 && town < (int)(sizeof(data) / sizeof(data[0]))) { - m = map_mapname2mapid(data[town].map); + m = map_mapname2mapid((char *)data[town].map); if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) { clif_displaymessage(fd, "You are not authorised to warp you to this destination map."); return -1; @@ -2893,7 +2893,7 @@ int atcommand_go( clif_displaymessage(fd, "You are not authorised to warp you from your actual map."); return -1; } - if (pc_setpos(sd, data[town].map, data[town].x, data[town].y, 3) == 0) { + if (pc_setpos(sd, (char *)data[town].map, data[town].x, data[town].y, 3) == 0) { clif_displaymessage(fd, msg_table[0]); // Warped. } else { clif_displaymessage(fd, msg_table[1]); // Map not found. diff --git a/src/map/battle.c b/src/map/battle.c index 9a11ab892..e90eebbad 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -5213,6 +5213,7 @@ static const struct { { "skill_steal_rate", &battle_config.skill_steal_rate}, // [celest] { "night_darkness_level", &battle_config.night_darkness_level}, // [celest] { "skill_range_leniency", &battle_config.skill_range_leniency}, // [celest] + { "motd_type", &battle_config.motd_type}, // [celest] //SQL-only options start #ifndef TXT_ONLY @@ -5443,6 +5444,7 @@ void battle_set_defaults() { battle_config.skill_steal_rate = 100; battle_config.night_darkness_level = 9; battle_config.skill_range_leniency = 1; + battle_config.motd_type = 0; battle_config.castrate_dex_scale = 150; @@ -5566,8 +5568,13 @@ void battle_validate_conf() { if (battle_config.night_darkness_level > 10) // Celest battle_config.night_darkness_level = 10; - if (battle_config.skill_range_leniency <= 0) // Celest + if (battle_config.skill_range_leniency < 0) // Celest battle_config.skill_range_leniency = 0; + + if (battle_config.motd_type < 0) + battle_config.motd_type = 0; + else if (battle_config.motd_type > 1) + battle_config.motd_type = 1; if (battle_config.vending_max_value > 10000000 || battle_config.vending_max_value<=0) // Lupus & Kobra_k88 battle_config.vending_max_value = 10000000; diff --git a/src/map/battle.h b/src/map/battle.h index b0f6c523d..32dabb53e 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -341,6 +341,7 @@ extern struct Battle_Config { int skill_steal_rate; // [celest] int night_darkness_level; // [celest] int skill_range_leniency; // [celest] + int motd_type; // [celest] #ifndef TXT_ONLY /* SQL-only options */ int mail_system; // [Valaris] diff --git a/src/map/pc.c b/src/map/pc.c index c047b5745..94ee62fbb 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -838,7 +838,10 @@ int pc_authok(int id, int login_id2, time_t connect_until_time, struct mmo_chars break; } } - clif_displaymessage(sd->fd, buf); + if (battle_config.motd_type) + clif_disp_onlyself(sd,buf,strlen(buf)); + else + clif_displaymessage(sd->fd, buf); } fclose(fp); } -- cgit v1.2.3-70-g09d2 From 571fb052a6712e5cd387fe1705fae778f5af7cf3 Mon Sep 17 00:00:00 2001 From: Lupus Date: Thu, 2 Dec 2004 18:24:27 +0000 Subject: speedup of SQL logs git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@437 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ src/char_sql/char.c | 8 ++++---- src/char_sql/int_party.c | 2 +- src/char_sql/inter.c | 2 +- src/login_sql/login.c | 12 ++++++------ src/map/log.c | 20 ++++++++++---------- src/map/mail.c | 4 ++-- 7 files changed, 26 insertions(+), 24 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 7adfcb4a2..34fdd401f 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 12/2 + * Changed all LOGS inserts to INSERT DELAYED (MySQL has this feature and cache unimportant queries, then + executes them at once together = 10x faster) [Lupus] * Skill Updates [celest] - Modified Weapon Refine - should only +1 every time. - Updated Berserk, Chase Walk, Slim Pitcher diff --git a/src/char_sql/char.c b/src/char_sql/char.c index c23c45bdb..d018390cb 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -1011,7 +1011,7 @@ int make_new_char_sql(int fd, unsigned char *dat) { } // char.log to charlog - sprintf(tmp_sql,"INSERT INTO `%s` (`time`, `char_msg`,`account_id`,`char_num`,`name`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hair`,`hair_color`)" + sprintf(tmp_sql,"INSERT DELAYED INTO `%s` (`time`, `char_msg`,`account_id`,`char_num`,`name`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hair`,`hair_color`)" "VALUES (NOW(), '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')", charlog_db,"make new char error", sd->account_id, dat[30], dat, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[33], dat[31]); //query @@ -1024,7 +1024,7 @@ int make_new_char_sql(int fd, unsigned char *dat) { } // char.log to charlog - sprintf(tmp_sql,"INSERT INTO `%s`(`time`, `char_msg`,`account_id`,`char_num`,`name`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hair`,`hair_color`)" + sprintf(tmp_sql,"INSERT DELAYED INTO `%s`(`time`, `char_msg`,`account_id`,`char_num`,`name`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hair`,`hair_color`)" "VALUES (NOW(), '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')", charlog_db,"make new char", sd->account_id, dat[30], dat, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[33], dat[31]); //query @@ -1939,7 +1939,7 @@ int parse_frommap(int fd) { case 0x2b16: if (RFIFOREST(fd) < 6 || RFIFOREST(fd) < RFIFOW(fd,8)) return 0; - sprintf(tmp_sql, "INSERT INTO `ragsrvinfo` SET `index`='%d',`name`='%s',`exp`='%d',`jexp`='%d',`drop`='%d',`motd`='%s'", + sprintf(tmp_sql, "INSERT DELAYED INTO `ragsrvinfo` SET `index`='%d',`name`='%s',`exp`='%d',`jexp`='%d',`drop`='%d',`motd`='%s'", fd, server_name, RFIFOW(fd,2), RFIFOW(fd,4), RFIFOW(fd,6), RFIFOP(fd,10)); if (mysql_query(&mysql_handle, tmp_sql)) { printf("DB server Error - %s\n", mysql_error(&mysql_handle)); @@ -2185,7 +2185,7 @@ int parse_char(int fd) { break; } - sprintf(tmp_sql,"INSERT INTO `%s`(`time`, `account_id`,`char_num`,`name`) VALUES (NOW(), '%d', '%d', '%s')", + sprintf(tmp_sql,"INSERT DELAYED INTO `%s`(`time`, `account_id`,`char_num`,`name`) VALUES (NOW(), '%d', '%d', '%s')", charlog_db, sd->account_id, RFIFOB(fd, 2), char_dat[0].name); //query if(mysql_query(&mysql_handle, tmp_sql)) { diff --git a/src/char_sql/int_party.c b/src/char_sql/int_party.c index b5950d3a1..297481453 100644 --- a/src/char_sql/int_party.c +++ b/src/char_sql/int_party.c @@ -120,7 +120,7 @@ int inter_party_tosql(int party_id,struct party *p) int i = 0; while (imember[i].account_id>0&&p->member[i].leader==0)||(p->member[i].account_id<0))) i++; if (imember[i].account_id; - sprintf(tmp_sql,"INSERT INTO `%s` (`party_id`, `name`, `exp`, `item`, `leader_id`) VALUES ('%d', '%s', '%d', '%d', '%d')", + sprintf(tmp_sql,"INSERT DELAYED INTO `%s` (`party_id`, `name`, `exp`, `item`, `leader_id`) VALUES ('%d', '%s', '%d', '%d', '%d')", party_db, party_id, t_name, p->exp, p->item,leader_id); if(mysql_query(&mysql_handle, tmp_sql) ) { printf("DB server Error (inset/update `party`)- %s\n", mysql_error(&mysql_handle) ); diff --git a/src/char_sql/inter.c b/src/char_sql/inter.c index 9c10cf6c5..52d688dce 100644 --- a/src/char_sql/inter.c +++ b/src/char_sql/inter.c @@ -241,7 +241,7 @@ int inter_log(char *fmt,...) va_start(ap,fmt); vsprintf(str,fmt,ap); - sprintf(tmp_sql,"INSERT INTO `%s` (`time`, `log`) VALUES (NOW(), '%s')",interlog_db, jstrescapecpy(temp_str,str)); + sprintf(tmp_sql,"INSERT DELAYED INTO `%s` (`time`, `log`) VALUES (NOW(), '%s')",interlog_db, jstrescapecpy(temp_str,str)); if(mysql_query(&mysql_handle, tmp_sql) ) { printf("DB server Error (insert `interlog`)- %s\n", mysql_error(&mysql_handle) ); } diff --git a/src/login_sql/login.c b/src/login_sql/login.c index 1863913fc..6e967ec72 100644 --- a/src/login_sql/login.c +++ b/src/login_sql/login.c @@ -294,7 +294,7 @@ int mmo_auth_sqldb_init(void) { printf("connect success!\n"); } - sprintf(tmpsql, "INSERT INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '', 'lserver', '100','login server started')", loginlog_db); + sprintf(tmpsql, "INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '', 'lserver', '100','login server started')", loginlog_db); //query if (mysql_query(&mysql_handle, tmpsql)) { @@ -319,7 +319,7 @@ void mmo_db_close(void) { int i, fd; //set log. - sprintf(tmpsql,"INSERT INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '', 'lserver','100', 'login server shutdown')", loginlog_db); + sprintf(tmpsql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '', 'lserver','100', 'login server shutdown')", loginlog_db); //query if (mysql_query(&mysql_handle, tmpsql)) { @@ -1119,7 +1119,7 @@ int parse_login(int fd) { if (atoi(sql_row[0]) >0) { // ip ban ok. printf ("packet from banned ip : %d.%d.%d.%d" RETCODE, p[0], p[1], p[2], p[3]); - sprintf(tmpsql,"INSERT INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%d.%d.%d.%d', 'unknown','-3', 'ip banned')", loginlog_db, p[0], p[1], p[2], p[3]); + sprintf(tmpsql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%d.%d.%d.%d', 'unknown','-3', 'ip banned')", loginlog_db, p[0], p[1], p[2], p[3]); // query if(mysql_query(&mysql_handle, tmpsql)) { @@ -1186,7 +1186,7 @@ int parse_login(int fd) { WFIFOSET(fd,3); } else { if (p[0] != 127) { - sprintf(tmpsql,"INSERT INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%d.%d.%d.%d', '%s','100', 'login ok')", loginlog_db, p[0], p[1], p[2], p[3], t_uid); + sprintf(tmpsql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%d.%d.%d.%d', '%s','100', 'login ok')", loginlog_db, p[0], p[1], p[2], p[3], t_uid); //query if(mysql_query(&mysql_handle, tmpsql)) { printf("DB server Error - %s\n", mysql_error(&mysql_handle)); @@ -1241,7 +1241,7 @@ int parse_login(int fd) { } else { char tmp_sql[512]; char error[64]; - sprintf(tmp_sql,"INSERT INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%d.%d.%d.%d', '%s', '%d','login failed : %%s')", loginlog_db, p[0], p[1], p[2], p[3], t_uid, result); + sprintf(tmp_sql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%d.%d.%d.%d', '%s', '%d','login failed : %%s')", loginlog_db, p[0], p[1], p[2], p[3], t_uid, result); switch((result + 1)) { case -2: //-3 = Account Banned sprintf(tmpsql,tmp_sql,"Account banned."); @@ -1374,7 +1374,7 @@ int parse_login(int fd) { return 0; { unsigned char* server_name; - sprintf(tmpsql,"INSERT INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%d.%d.%d.%d', '%s@%s','100', 'charserver - %s@%d.%d.%d.%d:%d')", loginlog_db, p[0], p[1], p[2], p[3], RFIFOP(fd, 2),RFIFOP(fd, 60),RFIFOP(fd, 60), RFIFOB(fd, 54), RFIFOB(fd, 55), RFIFOB(fd, 56), RFIFOB(fd, 57), RFIFOW(fd, 58)); + sprintf(tmpsql,"INSERT DELAYED INTO `%s`(`time`,`ip`,`user`,`rcode`,`log`) VALUES (NOW(), '%d.%d.%d.%d', '%s@%s','100', 'charserver - %s@%d.%d.%d.%d:%d')", loginlog_db, p[0], p[1], p[2], p[3], RFIFOP(fd, 2),RFIFOP(fd, 60),RFIFOP(fd, 60), RFIFOB(fd, 54), RFIFOB(fd, 55), RFIFOB(fd, 56), RFIFOB(fd, 57), RFIFOW(fd, 58)); //query if(mysql_query(&mysql_handle, tmpsql)) { diff --git a/src/map/log.c b/src/map/log.c index 86c5a41a2..e6274b6f7 100644 --- a/src/map/log.c +++ b/src/map/log.c @@ -19,7 +19,7 @@ int log_branch(struct map_session_data *sd) #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`branch_date`, `account_id`, `char_id`, `char_name`, `map`) VALUES (NOW(), '%d', '%d', '%s', '%s')", log_config.log_branch_db, sd->status.account_id, sd->status.char_id, sd->status.name, sd->mapname); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`branch_date`, `account_id`, `char_id`, `char_name`, `map`) VALUES (NOW(), '%d', '%d', '%s', '%s')", log_config.log_branch_db, sd->status.account_id, sd->status.char_id, sd->status.name, sd->mapname); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -48,7 +48,7 @@ int log_drop(struct map_session_data *sd, int monster_id, int *log_drop) #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`drop_date`, `kill_char_id`, `monster_id`, `item1`, `item2`, `item3`, `item4`, `item5`, `item6`, `item7`, `item8`, `map`) VALUES (NOW(), '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s') ", log_config.log_drop_db, sd->status.char_id, monster_id, log_drop[0], log_drop[1], log_drop[2], log_drop[3], log_drop[4], log_drop[5], log_drop[6], log_drop[7], sd->mapname); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`drop_date`, `kill_char_id`, `monster_id`, `item1`, `item2`, `item3`, `item4`, `item5`, `item6`, `item7`, `item8`, `map`) VALUES (NOW(), '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s') ", log_config.log_drop_db, sd->status.char_id, monster_id, log_drop[0], log_drop[1], log_drop[2], log_drop[3], log_drop[4], log_drop[5], log_drop[6], log_drop[7], sd->mapname); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -78,7 +78,7 @@ int log_mvpdrop(struct map_session_data *sd, int monster_id, int *log_mvp) #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`mvp_date`, `kill_char_id`, `monster_id`, `prize`, `mvpexp`, `map`) VALUES (NOW(), '%d', '%d', '%d', '%d', '%s') ", log_config.log_mvpdrop_db, sd->status.char_id, monster_id, log_mvp[0], log_mvp[1], sd->mapname); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`mvp_date`, `kill_char_id`, `monster_id`, `prize`, `mvpexp`, `map`) VALUES (NOW(), '%d', '%d', '%d', '%d', '%s') ", log_config.log_mvpdrop_db, sd->status.char_id, monster_id, log_mvp[0], log_mvp[1], sd->mapname); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -106,7 +106,7 @@ int log_present(struct map_session_data *sd, int source_type, int nameid) #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`present_date`, `src_id`, `account_id`, `char_id`, `char_name`, `nameid`, `map`) VALUES (NOW(), '%d', '%d', '%d', '%s', '%d', '%s') ", log_config.log_present_db, source_type, sd->status.account_id, sd->status.char_id, sd->status.name, nameid, sd->mapname); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`present_date`, `src_id`, `account_id`, `char_id`, `char_name`, `nameid`, `map`) VALUES (NOW(), '%d', '%d', '%d', '%s', '%d', '%s') ", log_config.log_present_db, source_type, sd->status.account_id, sd->status.char_id, sd->status.name, nameid, sd->mapname); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -134,7 +134,7 @@ int log_produce(struct map_session_data *sd, int nameid, int slot1, int slot2, i #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`produce_date`, `account_id`, `char_id`, `char_name`, `nameid`, `slot1`, `slot2`, `slot3`, `map`, `success`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%s', '%d') ", log_config.log_produce_db, sd->status.account_id, sd->status.char_id, sd->status.name, nameid, slot1, slot2, slot3, sd->mapname, success); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`produce_date`, `account_id`, `char_id`, `char_name`, `nameid`, `slot1`, `slot2`, `slot3`, `map`, `success`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%s', '%d') ", log_config.log_produce_db, sd->status.account_id, sd->status.char_id, sd->status.name, nameid, slot1, slot2, slot3, sd->mapname, success); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -176,7 +176,7 @@ int log_refine(struct map_session_data *sd, int n, int success) #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`refine_date`, `account_id`, `char_id`, `char_name`, `nameid`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`, `success`, `item_level`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%d', '%d')", log_config.log_refine_db, sd->status.account_id, sd->status.char_id, sd->status.name, sd->status.inventory[n].nameid, sd->status.inventory[n].refine, log_card[0], log_card[1], log_card[2], log_card[3], sd->mapname, success, item_level); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`refine_date`, `account_id`, `char_id`, `char_name`, `nameid`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`, `success`, `item_level`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%d', '%d')", log_config.log_refine_db, sd->status.account_id, sd->status.char_id, sd->status.name, sd->status.inventory[n].nameid, sd->status.inventory[n].refine, log_card[0], log_card[1], log_card[2], log_card[3], sd->mapname, success, item_level); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -222,7 +222,7 @@ int log_trade(struct map_session_data *sd, struct map_session_data *target_sd, i #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`trade_date`, `src_account_id`, `src_char_id`, `src_char_name`, `des_account_id`, `des_char_id`, `des_char_name`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s')", log_config.log_trade_db, sd->status.account_id, sd->status.char_id, sd->status.name, target_sd->status.account_id, target_sd->status.char_id, target_sd->status.name, log_nameid, log_amount, log_refine, log_card[0], log_card[1], log_card[2], log_card[3], sd->mapname); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`trade_date`, `src_account_id`, `src_char_id`, `src_char_name`, `des_account_id`, `des_char_id`, `des_char_name`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s')", log_config.log_trade_db, sd->status.account_id, sd->status.char_id, sd->status.name, target_sd->status.account_id, target_sd->status.char_id, target_sd->status.name, log_nameid, log_amount, log_refine, log_card[0], log_card[1], log_card[2], log_card[3], sd->mapname); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -265,7 +265,7 @@ int log_vend(struct map_session_data *sd,struct map_session_data *vsd,int n,int #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`vend_date`, `vend_account_id`, `vend_char_id`, `vend_char_name`, `buy_account_id`, `buy_char_id`, `buy_char_name`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`, `zeny`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%d')", log_config.log_vend_db, sd->status.account_id, sd->status.char_id, sd->status.name, vsd->status.account_id, vsd->status.char_id, vsd->status.name, log_nameid, log_amount, log_refine, log_card[0], log_card[1], log_card[2], log_card[3], sd->mapname, zeny); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`vend_date`, `vend_account_id`, `vend_char_id`, `vend_char_name`, `buy_account_id`, `buy_char_id`, `buy_char_name`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`, `zeny`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%d')", log_config.log_vend_db, sd->status.account_id, sd->status.char_id, sd->status.name, vsd->status.account_id, vsd->status.char_id, vsd->status.name, log_nameid, log_amount, log_refine, log_card[0], log_card[1], log_card[2], log_card[3], sd->mapname, zeny); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -293,7 +293,7 @@ int log_zeny(struct map_session_data *sd, struct map_session_data *target_sd,int #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql,"INSERT INTO `%s` (`trade_date`, `src_account_id`, `src_char_id`, `src_char_name`, `des_account_id`, `des_char_id`, `des_char_name`, `map`, `zeny`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%s', '%s', '%d')", log_config.log_trade_db, sd->status.account_id, sd->status.char_id, sd->status.name, target_sd->status.account_id, target_sd->status.char_id, target_sd->status.name, sd->mapname, sd->deal_zeny); + sprintf(tmp_sql,"INSERT DELAYED INTO `%s` (`trade_date`, `src_account_id`, `src_char_id`, `src_char_name`, `des_account_id`, `des_char_id`, `des_char_name`, `map`, `zeny`) VALUES (NOW(), '%d', '%d', '%s', '%d', '%d', '%s', '%s', '%d')", log_config.log_trade_db, sd->status.account_id, sd->status.char_id, sd->status.name, target_sd->status.account_id, target_sd->status.char_id, target_sd->status.name, sd->mapname, sd->deal_zeny); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { @@ -321,7 +321,7 @@ int log_atcommand(struct map_session_data *sd, const char *message) #ifndef TXT_ONLY if(log_config.sql_logs > 0) { - sprintf(tmp_sql, "INSERT INTO `%s` (`atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command`) VALUES(NOW(), '%d', '%d', '%s', '%s', '%s') ", log_config.log_gm_db, sd->status.account_id, sd->status.char_id, sd->status.name, sd->mapname, message); + sprintf(tmp_sql, "INSERT DELAYED INTO `%s` (`atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command`) VALUES(NOW(), '%d', '%d', '%s', '%s', '%s') ", log_config.log_gm_db, sd->status.account_id, sd->status.char_id, sd->status.name, sd->mapname, message); if(mysql_query(&mmysql_handle, tmp_sql)) printf("DB server Error - %s\n",mysql_error(&mmysql_handle)); } else { diff --git a/src/map/mail.c b/src/map/mail.c index 019f6303d..5e102755d 100644 --- a/src/map/mail.c +++ b/src/map/mail.c @@ -244,11 +244,11 @@ int mail_send(struct map_session_data *sd, char *name, char *message, int flag) while ((mail_row = mysql_fetch_row(mail_res))) { if(strcmp(name,"*")==0) { - sprintf(tmp_msql, "INSERT INTO `%s` (`to_account_id`,`from_account_id`,`from_char_name`,`message`,`priority`)" + sprintf(tmp_msql, "INSERT DELAYED INTO `%s` (`to_account_id`,`from_account_id`,`from_char_name`,`message`,`priority`)" " VALUES ('%d', '%d', '%s', '%s', '%d')",mail_db, atoi(mail_row[0]), sd->status.account_id, sd->status.name, message, flag); } else { - sprintf(tmp_msql, "INSERT INTO `%s` (`to_account_id`,`to_char_name`,`from_account_id`,`from_char_name`,`message`,`priority`)" + sprintf(tmp_msql, "INSERT DELAYED INTO `%s` (`to_account_id`,`to_char_name`,`from_account_id`,`from_char_name`,`message`,`priority`)" " VALUES ('%d', '%s', '%d', '%s', '%s', '%d')",mail_db, atoi(mail_row[0]), mail_row[1], sd->status.account_id, sd->status.name, message, flag); if(pc_isGM(sd) < 80) sd->mail_counter=5; -- cgit v1.2.3-70-g09d2 From fedbdb48e0fd0fc340884b15c3ba31f6168c85e8 Mon Sep 17 00:00:00 2001 From: celest Date: Fri, 3 Dec 2004 05:57:20 +0000 Subject: Fixed a bug that was causing monsters not to move towards the target git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@441 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 8 ++++++-- src/map/battle.c | 7 ++++--- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 4b7126c96..6b31e8514 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -6,10 +6,14 @@ Date Added * Skill Updates [celest] - Modified Weapon Refine - should only +1 every time. - Updated Berserk, Chase Walk, Slim Pitcher - - Added skill_range_leniency + - Added skill_range_leniency : In some cases when moving to cast a skill the + exe will a send a UseSkill packet before the server has moved us to the + correct position, causing it to fail. Leaving this at 1 should be enough. + - Fixed a bug that was causing monsters not to move towards the target * Added check for clif.c in case the server didn't realise we've died [celest] * Added a fix for @npcmove by JohnC and Fredzilla - * Added motd_type [celest] + * Added motd_type : Set this to 1 if your clients have langtype problems and + can't display the motd properly[celest] * Edited atcommand.c to fix compile warnings [celest] 12/1 diff --git a/src/map/battle.c b/src/map/battle.c index e90eebbad..95ac787a9 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4957,9 +4957,10 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) if( range>0 && range < arange ) {// 遠すぎる // be lenient if the skill was cast before we have moved to the correct position [Celest] - if (src->type == BL_PC && ((struct map_session_data *)bl)->walktimer != -1 && - !((arange-=battle_config.skill_range_leniency)<=range)) - return 0; + if (src->type != BL_PC || + (src->type == BL_PC && ((struct map_session_data *)bl)->walktimer != -1 && + !((arange-=battle_config.skill_range_leniency)<=range))) + return 0; } if( arange<2 ) // 同じマスか隣接 -- cgit v1.2.3-70-g09d2 From 10f272a1bfbb0ef56e84d7bdb5bd84282eccf735 Mon Sep 17 00:00:00 2001 From: celest Date: Fri, 3 Dec 2004 11:57:50 +0000 Subject: * Updated Stone Curse, Soul Drain, Auto Berserk * Fixed MVP exp being multiplied twice git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@442 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 4 ++++ db/Changelog.txt | 2 ++ db/skill_db.txt | 4 ++-- db/skill_require_db.txt | 1 + db/skill_tree.txt | 4 ++-- src/map/mob.c | 4 ++-- src/map/pc.c | 6 ++++-- src/map/skill.c | 32 ++++++++++++++++++++++++++++++-- src/map/skill.h | 23 ++++++++++++----------- 9 files changed, 59 insertions(+), 21 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 6b31e8514..86013a941 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,8 @@ Date Added +12/3 + * Updated Stone Curse, Soul Drain, Auto Berserk [celest] + * Added a fix for MVP exp being multiplied twice by Gengar + 12/2 * Fixed double login feature, resets online users when map connects to char [Wizputer] * Changed all LOGS inserts to INSERT DELAYED (MySQL has this feature and cache unimportant queries, then diff --git a/db/Changelog.txt b/db/Changelog.txt index 9357a5078..1fcb3c265 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -5,6 +5,8 @@ Ayathoya items == Added but no effect ( all are "ect" itens) Skill databases == celest working on them i believe. +12/3 * corrected Spider Web's maximum level [celest] + * Removed Soul Drain from Professor's skill tree [celest] 12/2 * Updated skill tree prerequisites for the new kRO skills [celest] diff --git a/db/skill_db.txt b/db/skill_db.txt index 2913874c0..42a9d6ee5 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -145,7 +145,7 @@ 143,0,6,4,0,1,1,1,no,0,1,0,none,0 //NV_TRICKDEAD#?んだふり# 144,0,0,0,0,0,1,0,no,0,1,0,none,0 //SM_MOVINGRECOVERY#移動時HP回復# 145,0,0,0,0,0,1,0,no,0,1,0,weapon,0 //SM_FATALBLOW#?所攻撃# -146,0,0,0,0,0,1,0,no,0,1,0,weapon,0 //SM_AUTOBERSERK#オ?トバ?サ?ク# +146,0,6,4,0,1,1,1,no,0,1,0,weapon,0 //SM_AUTOBERSERK#オ?トバ?サ?ク# 147,0,0,4,0,1,1,0,no,0,1,0,weapon,0 //AC_MAKINGARROW#矢作成# 148,-3,6,1,0,2,1,1,no,0,1,0,weapon,6 //AC_CHARGEARROW#?ャ?ジアロ?# 149,8,6,1,2,0,1,1,no,0,1,0,weapon,0 //TF_SPRINKLESAND#砂まき# @@ -439,7 +439,7 @@ 402,8,6,1,0,1,10,1,no,0,0,0,none,0 //PF_MINDBREAKER#?インドブレ?カ?# 403,0,0,4,0,1,1,1,yes,0,0,0,magic,0 //PF_MEMORIZE#メモライズ# 404,3,6,2,2,1,5,1,yes,0,256,1,magic,0 //PF_FOGWALL#フォグウォ?ル# -405,3,6,2,0,1,5,1,no,0,128,2,misc,0 //PF_SPIDERWEB#スパイ??ウェッブ# +405,3,6,2,0,1,1,1,no,0,128,2,misc,0 //PF_SPIDERWEB#スパイ??ウェッブ# 406,-1,6,1,0,2,10,1,no,33,0,0,weapon,0 //ASC_METEORASSAULT#メテオアサルト# 407,0,6,4,0,1,10,0,no,0,0,0,none,0 //ASC_CDP#デッドリ??イズン製造# 408,0,0,4,0,1,1,1,yes,0,0,0,magic,0 //WE_BABY## diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index 49eb15602..92b9ba12c 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -116,6 +116,7 @@ 142,0,0,3,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#?急手?# 143,0,0,5,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NV_TRICKDEAD#死んだふり# +146,0,0,5,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SM_AUTOBERSERK#オ?トバ?サ?ク# 147,0,0,10,0,0,0,99,recover_weight_rate,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AC_MAKINGARROW#矢作成# 148,0,0,15,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AC_CHARGEARROW#チャ?ジアロ?# 149,0,0,9,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //TF_SPRINKLESAND#砂まき# diff --git a/db/skill_tree.txt b/db/skill_tree.txt index 118b43a4f..e5787b038 100644 --- a/db/skill_tree.txt +++ b/db/skill_tree.txt @@ -1037,14 +1037,14 @@ 4017,288,5,285,3,286,3,287,3,0,0,0,0//SA_LANDPROTECTOR #ランドプロテクター# 4017,289,5,277,3,0,0,0,0,0,0,0,0//SA_DISPELL #ディスペル# 4017,290,10,279,5,288,1,289,1,0,0,0,0//SA_ABRACADABRA #アブラカタブラ# -4017,364,10,9,5,13,7,0,0,0,0,0,0//HW_SOULDRAIN #ソウルドレイン# +//4017,364,10,9,5,13,7,0,0,0,0,0,0//HW_SOULDRAIN #ソウルドレイン# 4017,373,5,9,1,276,1,0,0,0,0,0,0//PF_HPCONVERSION #ライフ置き換え# 4017,374,1,276,3,277,2,0,0,0,0,0,0//PF_SOULCHANGE #ソウルチェンジ# 4017,375,5,275,5,276,3,277,3,0,0,0,0//PF_SOULBURN #ソウルバーン# 4017,402,1,9,3,289,2,0,0,0,0,0,0//PF_MINDBREAKER #マインドブレーカー# 4017,403,1,274,5,278,5,279,1,0,0,0,0//PF_MEMORIZE #メモライズ# 4017,404,1,286,2,287,2,0,0,0,0,0,0//PF_FOGWALL #フォグウォール# -4017,405,5,284,4,0,0,0,0,0,0,0,0//PF_SPIDERWEB #スパイダーウェッブ# +4017,405,1,284,4,0,0,0,0,0,0,0,0//PF_SPIDERWEB #スパイダーウェッブ# //Stalker 4018,1,9,0,0,0,0,0,0,0,0,0,0//NV_BASIC #基本スキル# 4018,142,1,0,0,0,0,0,0,0,0,0,0//NV_FIRSTAID #応急手当# diff --git a/src/map/mob.c b/src/map/mob.c index ef67341f8..2f7d748a8 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2295,7 +2295,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) mob_unlocktarget((struct mob_data *)src,tick); /* ソウルドレイン */ - if(sd && (skill=pc_checkskill(sd,HW_SOULDRAIN))>0){ + if(sd && sd->state.attack_type == BF_MAGIC && (skill=pc_checkskill(sd,HW_SOULDRAIN))>0){ clif_skill_nodamage(src,&md->bl,HW_SOULDRAIN,skill,1); sp = (battle_get_lv(&md->bl))*(65+15*skill)/100; if(sd->status.sp + sp > sd->status.max_sp) @@ -2529,7 +2529,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) int log_mvp[2] = {0}; int j; int mexp; - temp = ((double)mob_db[md->class].mexp * (double)battle_config.mvp_exp_rate * (9.+(double)count)/1000.); + temp = ((double)mob_db[md->class].mexp * (9.+(double)count)/10.); //[Gengar] mexp = (temp > 2147483647.)? 0x7fffffff:(int)temp; if(mexp < 1) mexp = 1; clif_mvp_effect(mvp_sd); // エフェクト diff --git a/src/map/pc.c b/src/map/pc.c index 94ee62fbb..f0e2a719f 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2098,7 +2098,8 @@ int pc_calcstatus(struct map_session_data* sd,int first) before.cart_weight != before.cart_weight || before.cart_max_weight != before.cart_max_weight ) clif_updatestatus(sd,SP_CARTINFO);*/ - if(sd->status.hpstatus.max_hp>>2 && pc_checkskill(sd,SM_AUTOBERSERK)>0 && + //if(sd->status.hpstatus.max_hp>>2 && pc_checkskill(sd,SM_AUTOBERSERK)>0 && + if(sd->status.hpstatus.max_hp>>2 && sd->sc_data[SC_AUTOBERSERK].timer != -1 && (sd->sc_data[SC_PROVOKE].timer==-1 || sd->sc_data[SC_PROVOKE].val2==0 ) && !pc_isdead(sd)) // オ?トバ?サ?ク?動 skill_status_change_start(&sd->bl,SC_PROVOKE,10,1,0,0,0,0); @@ -5339,7 +5340,8 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage) // まだ生きているならHP更新 clif_updatestatus(sd,SP_HP); - if(sd->status.hpstatus.max_hp>>2 && pc_checkskill(sd,SM_AUTOBERSERK)>0 && + //if(sd->status.hpstatus.max_hp>>2 && pc_checkskill(sd,SM_AUTOBERSERK)>0 && + if(sd->status.hpstatus.max_hp>>2 && sd->sc_data[SC_AUTOBERSERK].timer != -1 && (sd->sc_data[SC_PROVOKE].timer==-1 || sd->sc_data[SC_PROVOKE].val2==0 )) // オ?トバ?サ?ク?動 skill_status_change_start(&sd->bl,SC_PROVOKE,10,1,0,0,0,0); diff --git a/src/map/skill.c b/src/map/skill.c index 5be308425..4442ac81c 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1,4 +1,4 @@ -// $Id: skill.c,v 1.8 2004/12/2 12:58:19 AM Celestia Exp $ +// $Id: skill.c,v 1.8 2004/12/3 7:53:42 PM Celestia Exp $ /* スキル?係 */ #include @@ -114,7 +114,7 @@ int SkillStatusChangeTable[]={ /* skill.h SC_SPLASHER, /* ベナムスプラッシャ? */ -1, SC_TRICKDEAD, /* 死んだふり */ - -1,-1,-1,-1,-1,-1, + -1,-1,SC_AUTOBERSERK,-1,-1,-1, /* 150- */ -1,-1,-1,-1,-1, SC_LOUD, /* ラウドボイス */ @@ -3218,6 +3218,19 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int skill_status_change_start(src,SC_BLOCKSKILL,skilllv,0,skillid,0,10000,0 ); break; + case SM_AUTOBERSERK: // Celest + { + struct status_change *tsc_data = battle_get_sc_data(bl); + int sc=SkillStatusChangeTable[skillid]; + clif_skill_nodamage(src,bl,skillid,skilllv,1); + if( tsc_data ){ + if( tsc_data[sc].timer==-1 ) + skill_status_change_start(bl,sc,skilllv,0,0,0,0,0); + else + skill_status_change_end(bl, sc, -1); + } + } + break; case AS_ENCHANTPOISON: // Prevent spamming [Valaris] if(bl->type==BL_PC) { @@ -3693,6 +3706,8 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int skill_status_change_start(bl,SC_STONE,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0); else if(sd) clif_skill_fail(sd,skillid,0,0); + if (dstmd) + mob_target(dstmd,src,skill_get_range(skillid,skilllv)); break; case NV_FIRSTAID: /* ?急手? */ @@ -8542,6 +8557,10 @@ int skill_status_change_end(struct block_list* bl, int type, int tid) case SC_REGENERATION: calc_flag = 1; break; + case SC_AUTOBERSERK: + if (sc_data[SC_PROVOKE].timer != -1) + skill_status_change_end(bl,SC_PROVOKE,-1); + break; case SC_BERSERK: /* バ?サ?ク */ calc_flag = 1; clif_status_change(bl,SC_INCREASEAGI,0); /* アイコン消去 */ @@ -8870,6 +8889,7 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data) break; case SC_ENDURE: /* インデュア */ + case SC_AUTOBERSERK: // Celest if(sd && sd->special_state.infinite_endure) { sc_data[type].timer=add_timer( 1000*60+tick,skill_status_change_timer, bl->id, data ); //sc_data[type].val2=1; @@ -9305,6 +9325,14 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val calc_flag = 1; // for updating mdef val2 = 7; // [Celest] break; + case SC_AUTOBERSERK: + { + tick = 60*1000; + if (bl->type == BL_PC && sd->status.hpstatus.max_hp>>2 && + (sc_data[SC_PROVOKE].timer==-1 || sc_data[SC_PROVOKE].val2==0)) + skill_status_change_start(bl,SC_PROVOKE,10,1,0,0,0,0); + } + break; case SC_CONCENTRATE: /* 集中力向上 */ calc_flag = 1; break; diff --git a/src/map/skill.h b/src/map/skill.h index a8bf30e3c..ebca40b34 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -1,4 +1,4 @@ -// $Id: skill.h,v 1.5 2004/11/26 5:47:12 PM Celestia Exp $ +// $Id: skill.h,v 1.5 2004/12/3 7:53:26 PM Celestia $ #ifndef _SKILL_H_ #define _SKILL_H_ @@ -326,6 +326,7 @@ enum { // struct map_session_data SC_BROKNARMOR =32, SC_BROKNWEAPON =33, SC_SLOWDOWN =45, // for skill slowdown + SC_AUTOBERSERK =46, SC_SIGHTTRASHER =73, // SC_BASILICA =125, // 125 is the same id as joint break SC_BASILICA =102, // temporarily use this before an actual id is found [celest] @@ -343,18 +344,18 @@ enum { // struct map_session_data SC_SPELLBREAKER =192, SC_DPOISON =193, /* 猛毒 */ SC_BLOCKSKILL =194, // for disallowing the use of a skill for a time period + SC_LEADERSHIP =196, + SC_GLORYWOUNDS =197, + SC_SOULCOLD =198, + SC_HAWKEYES =199, + SC_BATTLEORDERS =200, + SC_REGENERATION =201, + SC_PRESERVE =202, // [Celest] - SC_BLEEDING = 124, // Temporarily same id as headcrush - SC_MOONLIT = 195, - SC_LEADERSHIP = 196, - SC_GLORYWOUNDS = 197, - SC_SOULCOLD = 198, - SC_HAWKEYES = 199, - SC_BATTLEORDERS = 200, - SC_REGENERATION = 201, - SC_PRESERVE = 202, - + SC_BLEEDING = 124, // Temporarily same id as headcrush + SC_MOONLIT =195, + // -- testing various SC effects // SC_AURABLADE =81, // SC_CONCENTRATION =83, -- cgit v1.2.3-70-g09d2 From bdb423140e5779fae596257d24665762e33f1bdd Mon Sep 17 00:00:00 2001 From: amber Date: Sat, 4 Dec 2004 02:52:38 +0000 Subject: Bug fixes git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@444 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ src/map/battle.c | 7 ++++++- src/map/mob.c | 5 +++++ src/map/skill.c | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 86013a941..7ad7d87ab 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 12/3 + * hacked the frozen mob issue [MouseJstr] + * Fixed a battle_range crash [MouseJstr] * Updated Stone Curse, Soul Drain, Auto Berserk [celest] * Added a fix for MVP exp being multiplied twice by Gengar diff --git a/src/map/battle.c b/src/map/battle.c index 95ac787a9..be22723d3 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4394,8 +4394,13 @@ struct Damage battle_calc_misc_attack( } break; case SN_FALCONASSAULT: /* ファルコンアサルト */ +#ifdef TWILIGHT + skill = pc_checkskill(sd,HT_BLITZBEAT); + damage=(100+50*skill_lv+(dex/10+int_/2+skill*3+40)*2) * 2; +#else skill = pc_checkskill(sd,HT_STEELCROW); // Celest damage=((150+50*skill_lv)*(dex/10+int_/2+skill*3+40)*2)/100; +#endif break; } @@ -4958,7 +4963,7 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) if( range>0 && range < arange ) {// 遠すぎる // be lenient if the skill was cast before we have moved to the correct position [Celest] if (src->type != BL_PC || - (src->type == BL_PC && ((struct map_session_data *)bl)->walktimer != -1 && + (bl->type == BL_PC && ((struct map_session_data *)bl)->walktimer != -1 && !((arange-=battle_config.skill_range_leniency)<=range))) return 0; } diff --git a/src/map/mob.c b/src/map/mob.c index 2f7d748a8..f56b5e4bf 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -765,6 +765,11 @@ static int mob_timer(int tid,unsigned int tick,int id,int data) break; } map_freeblock_unlock(); + if (md->timer == -1) { + mob_changestate(md,MS_WALK,0); + if (md->timer == -1) + printf("mob_timer : mob %x STILL has no timer\n", md); + } return 0; } diff --git a/src/map/skill.c b/src/map/skill.c index 4442ac81c..8f711fd57 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8891,7 +8891,11 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data) case SC_ENDURE: /* インデュア */ case SC_AUTOBERSERK: // Celest if(sd && sd->special_state.infinite_endure) { +#ifdef TWILIGHT + sc_data[type].timer=add_timer( 1000*600+tick,skill_status_change_timer, bl->id, data ); +#else sc_data[type].timer=add_timer( 1000*60+tick,skill_status_change_timer, bl->id, data ); +#endif //sc_data[type].val2=1; return 0; } -- cgit v1.2.3-70-g09d2 From b63504c6445eed61f637f9f9e3dee769ac7dcc7c Mon Sep 17 00:00:00 2001 From: celest Date: Sat, 4 Dec 2004 04:17:27 +0000 Subject: Modified battle_range to check if sd is null first git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@445 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 1 + src/map/battle.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 7ad7d87ab..9c7e10008 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -4,6 +4,7 @@ Date Added * Fixed a battle_range crash [MouseJstr] * Updated Stone Curse, Soul Drain, Auto Berserk [celest] * Added a fix for MVP exp being multiplied twice by Gengar + * Modified battle_range to check for sd first [celest] 12/2 * Fixed double login feature, resets online users when map connects to char [Wizputer] diff --git a/src/map/battle.c b/src/map/battle.c index be22723d3..6b1d68625 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4949,7 +4949,7 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) int dx,dy; struct walkpath_data wpd; int arange; - + nullpo_retr(0, src); nullpo_retr(0, bl); @@ -4962,10 +4962,14 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) if( range>0 && range < arange ) {// 遠すぎる // be lenient if the skill was cast before we have moved to the correct position [Celest] - if (src->type != BL_PC || - (bl->type == BL_PC && ((struct map_session_data *)bl)->walktimer != -1 && - !((arange-=battle_config.skill_range_leniency)<=range))) + if (src->type != BL_PC) return 0; + else if (src->type == BL_PC) { + struct map_session_data *sd; + nullpo_retr(0, (sd=(struct map_session_data *)bl)); + if (sd->walktimer != -1 && !((arange-=battle_config.skill_range_leniency)<=range)) + return 0; + } } if( arange<2 ) // 同じマスか隣接 -- cgit v1.2.3-70-g09d2 From b26ca6871acc0ef2062668cfc9a0fcf7016e3ac1 Mon Sep 17 00:00:00 2001 From: amber Date: Sat, 4 Dec 2004 05:02:56 +0000 Subject: clean warning git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@446 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/mob.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/map') diff --git a/src/map/mob.c b/src/map/mob.c index f56b5e4bf..7f209cd26 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -765,11 +765,8 @@ static int mob_timer(int tid,unsigned int tick,int id,int data) break; } map_freeblock_unlock(); - if (md->timer == -1) { + if (md->timer == -1) mob_changestate(md,MS_WALK,0); - if (md->timer == -1) - printf("mob_timer : mob %x STILL has no timer\n", md); - } return 0; } -- cgit v1.2.3-70-g09d2 From 2cd926a568df59089d202fd4bbf80a4100a8f891 Mon Sep 17 00:00:00 2001 From: amber Date: Sun, 5 Dec 2004 03:46:19 +0000 Subject: More updates git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@447 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 6 ++++++ src/map/battle.c | 2 +- src/map/chrif.c | 11 +++++++++++ src/map/chrif.h | 1 + src/map/clif.c | 6 ++++++ src/map/pc.c | 10 ++++++++-- src/map/skill.c | 13 +++++++------ 7 files changed, 40 insertions(+), 9 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 9c7e10008..1919f715e 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,10 @@ Date Added +12/4 + * Fixed a change associated with NPC_BARRIER [MouseJstr] + * Renamed flush_fifos_at_exit to flush_fifos [MouseJstr] + * call check_connect_char_server() on char_server disconnect [MouseJstr] + * stale skill groups were crashing server [MouseJstr] + * Fixed crash in SC_LULLABY [MouseJstr] 12/3 * hacked the frozen mob issue [MouseJstr] * Fixed a battle_range crash [MouseJstr] diff --git a/src/map/battle.c b/src/map/battle.c index 6b1d68625..b6ef4146d 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4964,7 +4964,7 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) // be lenient if the skill was cast before we have moved to the correct position [Celest] if (src->type != BL_PC) return 0; - else if (src->type == BL_PC) { + else if (bl->type == BL_PC) { struct map_session_data *sd; nullpo_retr(0, (sd=(struct map_session_data *)bl)); if (sd->walktimer != -1 && !((arange-=battle_config.skill_range_leniency)<=range)) diff --git a/src/map/chrif.c b/src/map/chrif.c index 479b328f5..d11604bc3 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -980,6 +980,17 @@ int chrif_parse(int fd) if (fd == char_fd) { printf("Map-server can't connect to char-server (connection #%d).\n", fd); char_fd = -1; + check_connect_char_server(0, 0, 0, 0); + while (char_fd <= 0 || session[char_fd] == NULL) { + struct map_session_data *sd; + int idx; + for (idx = 0; idx session_data) && sd && sd->state.auth) + clif_displaymessage(idx, "Map server is paused waiting for char server to return.."); + flush_fifos(); + sleep(10); + check_connect_char_server(0, 0, 0, 0); + } } close(fd); delete_session(fd); diff --git a/src/map/chrif.h b/src/map/chrif.h index ab4f9580b..5f43120cc 100644 --- a/src/map/chrif.h +++ b/src/map/chrif.h @@ -27,6 +27,7 @@ int chrif_char_reset_offline(void); int chrif_char_online(struct map_session_data *sd); int chrif_changesex(int id, int sex); int chrif_chardisconnect(struct map_session_data *sd); +int check_connect_char_server(int tid, unsigned int tick, int id, int data); int do_init_chrif(void); diff --git a/src/map/clif.c b/src/map/clif.c index 34ee7aaea..79ca0e227 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -4845,6 +4845,8 @@ int clif_refine(int fd,struct map_session_data *sd,int fail,int index,int val) */ int clif_wis_message(int fd, char *nick, char *mes, int mes_len) // R 0097 .w .24B .?B { +// printf("clif_wis_message(%d, %s, %s)\n", fd, nick, mes); + WFIFOW(fd,0) = 0x97; WFIFOW(fd,2) = mes_len + 24 + 4; memcpy(WFIFOP(fd,4), nick, 24); @@ -5535,6 +5537,8 @@ int clif_party_created(struct map_session_data *sd,int flag) { int fd; + // printf("clif_party_message(%s, %d, %s)\n", p->name, account_id, mes); + nullpo_retr(0, sd); fd=sd->fd; @@ -6247,6 +6251,8 @@ int clif_guild_memberlogin_notice(struct guild *g,int idx,int flag) nullpo_retr(0, g); + // printf("clif_guild_message(%s, %d, %s)\n", g->name, account_id, mes); + WBUFW(buf, 0)=0x16d; WBUFL(buf, 2)=g->member[idx].account_id; WBUFL(buf, 6)=g->member[idx].char_id; diff --git a/src/map/pc.c b/src/map/pc.c index f0e2a719f..0c8c32b9a 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -981,7 +981,9 @@ int pc_calc_skilltree_normalize_job(int c, struct map_session_data *sd) { else if ((sd->status.skill_point >= sd->status.job_level && skill_point < sd->change_level+8) && (c > 6 && c < 23)) { switch(c) { case 7: + case 13: case 14: + case 21: c = 1; break; case 8: @@ -1005,8 +1007,10 @@ int pc_calc_skilltree_normalize_job(int c, struct map_session_data *sd) { case 17: c = 6; break; - /*case 4008: + case 4008: + case 4014: case 4015: + case 4022: c = 4002; break; case 4009: @@ -1031,7 +1035,9 @@ int pc_calc_skilltree_normalize_job(int c, struct map_session_data *sd) { c = 4007; break; case 4030: + case 4036: case 4037: + case 4044: c = 4024; break; case 4031: @@ -1054,7 +1060,7 @@ int pc_calc_skilltree_normalize_job(int c, struct map_session_data *sd) { case 4035: case 4043: c = 4029; - break;*/ + break; } } } diff --git a/src/map/skill.c b/src/map/skill.c index 8f711fd57..19e84d791 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -4264,9 +4264,9 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int int skill_time = skill_get_time(skillid,skilllv); clif_skill_nodamage(src,bl,skillid,skilllv,1); skill_status_change_start(bl,SkillStatusChangeTable[skillid],skilllv,0,0,0,skill_time,0 ); - if (bl->type == BL_MOB) + if (src->type == BL_MOB) mob_changestate((struct mob_data *)src,MS_DELAY,skill_time); - else if (bl->type == BL_PC) + else if (src->type == BL_PC) sd->attackabletime = sd->canmove_tick = tick + skill_time; } break; @@ -6023,7 +6023,7 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int if (sc_data[type].timer==-1) skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,skill_get_time2(sg->skill_id,sg->skill_lv),0); else if((unit2=(struct skill_unit *)sc_data[type].val2) && unit2 != src ){ - if( DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + if( unit2->group != 0 && DIFF_TICK(sg->tick,unit2->group->tick)>0 ) skill_status_change_start(bl,type,sg->skill_lv,(int)src,0,0,skill_get_time2(sg->skill_id,sg->skill_lv),0); ts->tick-=sg->interval; } @@ -6080,7 +6080,7 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int skill_status_change_start(bl,type,sg->skill_lv,(sg->val1)>>16,(sg->val1)&0xffff, (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); else if((unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){ - if( DIFF_TICK(sg->tick,unit2->group->tick)>0 ) + if( unit2->group != 0 && DIFF_TICK(sg->tick,unit2->group->tick)>0 ) skill_status_change_start(bl,type,sg->skill_lv,(sg->val1)>>16,(sg->val1)&0xffff, (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0); ts->tick-=sg->interval; @@ -8926,8 +8926,9 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data) if(!unit || !unit->group || unit->group->src_id==bl->id) break; skill_additional_effect(bl,bl,unit->group->skill_id,sc_data[type].val1,BF_LONG|BF_SKILL|BF_MISC,tick); - sc_data[type].timer=add_timer(skill_get_time(unit->group->skill_id,unit->group->skill_lv)/10+tick, - skill_status_change_timer, bl->id, data ); + if (unit->group != 0) + sc_data[type].timer=add_timer(skill_get_time(unit->group->skill_id,unit->group->skill_lv)/10+tick, + skill_status_change_timer, bl->id, data ); return 0; } break; -- cgit v1.2.3-70-g09d2 From 1e6f493eab41de9a948314c3e1ba4f2e9d9df4d2 Mon Sep 17 00:00:00 2001 From: amber Date: Sun, 5 Dec 2004 04:50:41 +0000 Subject: updates git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@452 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ src/map/clif.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index c5786f39f..2d72fc81b 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 12/4 + * Fixed a crash in clif_send when player disconnects but player + object is not fully removed from map [MouseJstr] * Fixed a crash associated with NPC_BARRIER [MouseJstr] * Renamed flush_fifos_at_exit to flush_fifos [MouseJstr] * call check_connect_char_server() on char_server disconnect [MouseJstr] diff --git a/src/map/clif.c b/src/map/clif.c index 79ca0e227..bcccadfab 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -256,7 +256,7 @@ int clif_send_sub(struct block_list *bl, va_list ap) break; } - if (sd) { + if ((sd != NULL) && (session[sd->fd] != NULL)) { if (WFIFOP(sd->fd,0) == buf) { printf("WARNING: Invalid use of clif_send function\n"); printf(" Packet x%4x use a WFIFO of a player instead of to use a buffer.\n", WBUFW(buf,0)); -- cgit v1.2.3-70-g09d2 From 9ee58cbba214b49a0399f564478e22790080fa72 Mon Sep 17 00:00:00 2001 From: celest Date: Sun, 5 Dec 2004 06:13:50 +0000 Subject: Corrected typo in battle_range : bl -> src git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@453 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 3 +++ src/map/battle.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 2d72fc81b..18ae6d6ae 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,7 @@ Date Added +12/5 + * Corrected typo in battle_range [celest] + 12/4 * Fixed a crash in clif_send when player disconnects but player object is not fully removed from map [MouseJstr] diff --git a/src/map/battle.c b/src/map/battle.c index b6ef4146d..6b1d68625 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4964,7 +4964,7 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) // be lenient if the skill was cast before we have moved to the correct position [Celest] if (src->type != BL_PC) return 0; - else if (bl->type == BL_PC) { + else if (src->type == BL_PC) { struct map_session_data *sd; nullpo_retr(0, (sd=(struct map_session_data *)bl)); if (sd->walktimer != -1 && !((arange-=battle_config.skill_range_leniency)<=range)) -- cgit v1.2.3-70-g09d2 From e96413206e743d6d4d20955e41740104164997c7 Mon Sep 17 00:00:00 2001 From: amber Date: Sun, 5 Dec 2004 05:23:42 +0000 Subject: update git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@454 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ src/map/clif.c | 2 ++ 2 files changed, 4 insertions(+) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 18ae6d6ae..d355302f0 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,6 +1,8 @@ Date Added 12/5 * Corrected typo in battle_range [celest] + * Fixed a crash where party chats can be sent to a + partially disconnected player [MouseJstr] 12/4 * Fixed a crash in clif_send when player disconnects but player diff --git a/src/map/clif.c b/src/map/clif.c index bcccadfab..fb01d10fd 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -362,6 +362,8 @@ int clif_send(unsigned char *buf, int len, struct block_list *bl, int type) { if (p) { for(i=0;imember[i].sd) != NULL) { + if ((session[sd->fd] == NULL) || (session[sd->fd]->session_data == NULL)) + continue; if (sd->bl.id == bl->id && (type == PARTY_WOS || type == PARTY_SAMEMAP_WOS || type == PARTY_AREA_WOS)) continue; -- cgit v1.2.3-70-g09d2 From ad9f039b3071a3ee648f425f69f7132db7208f2e Mon Sep 17 00:00:00 2001 From: amber Date: Sun, 5 Dec 2004 06:30:50 +0000 Subject: fix crash git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@455 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/chrif.c | 2 +- src/map/map.c | 34 +++++++++++++++++----------------- src/map/map.h | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) (limited to 'src/map') diff --git a/src/map/chrif.c b/src/map/chrif.c index d11604bc3..bc5392b22 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -140,7 +140,7 @@ int chrif_sendmap(int fd) WFIFOW(fd,0) = 0x2afa; for(i = 0; i < map_num; i++) - if (map[i].alias[0] != '\0') // [MouseJstr] map aliasing + if (map[i].alias != '\0') // [MouseJstr] map aliasing memcpy(WFIFOP(fd,4+i*16), map[i].alias, 16); else memcpy(WFIFOP(fd,4+i*16), map[i].name, 16); diff --git a/src/map/map.c b/src/map/map.c index ebdc2a8c5..fe949013c 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -1582,7 +1582,8 @@ static int map_readmap(int m,char *fn, char *alias) { map[m].npc_num=0; map[m].users=0; memset(&map[m].flag,0,sizeof(map[m].flag)); - if(battle_config.pk_mode) map[m].flag.pvp = 1; // make all maps pvp for pk_mode [Valaris] + if(battle_config.pk_mode) + map[m].flag.pvp = 1; // make all maps pvp for pk_mode [Valaris] wh=map_waterheight(map[m].name); for(y=0;y"); // [MouseJstr] + char *p = strstr(map[i].name, "<"); // [MouseJstr] if (p != NULL) { - char alias[64]; - *p = '\0'; - strcpy(alias, map[i].name); - strcpy(map[i].name, p + 1); - sprintf(fn,"data\\%s",map[i].name); - if(map_readmap(i,fn, alias) == -1) { - map_delmap(map[i].name); - maps_removed++; - } - } else { - sprintf(fn,"data\\%s",map[i].name); - if(map_readmap(i,fn, NULL) == -1) { - map_delmap(map[i].name); - maps_removed++; - } + char buf[64]; + *p++ = '\0'; + sprintf(buf,"data\\%s", p); + map[i].alias = strdup(buf); + } else + map[i].alias = NULL; + + sprintf(fn,"data\\%s",map[i].name); + if(map_readmap(i,fn, p) == -1) { + map_delmap(map[i].name); + maps_removed++; } } } diff --git a/src/map/map.h b/src/map/map.h index 60f4ce9d6..6684250e5 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -482,7 +482,7 @@ enum { ATK_LUCKY=1,ATK_FLEE,ATK_DEF}; // struct map_data { char name[24]; - char alias[24]; // [MouseJstr] + char *alias; // [MouseJstr] unsigned char *gat; // NULLなら下のmap_data_other_serverとして扱う struct block_list **block; struct block_list **block_mob; -- cgit v1.2.3-70-g09d2 From ecbe6aa5b86c57909ee1a7369ceda6b9348fdb1a Mon Sep 17 00:00:00 2001 From: celest Date: Sun, 5 Dec 2004 11:06:48 +0000 Subject: * Added allow_atcommand_when_mute * Temporarily leaving the changing guild emblems requiring Glory of Guild feature only for TXT until the SQL char-server supports guild skills fully * Modified battle_range again to check if src's type is a player first * Modified skill_nocast_db git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@459 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 5 +++++ conf-tmpl/battle_athena.conf | 3 +++ db/Changelog.txt | 3 +++ db/skill_nocast_db.txt | 16 ++++++++-------- src/map/atcommand.c | 5 +++++ src/map/battle.c | 8 +++++--- src/map/battle.h | 3 ++- src/map/guild.c | 16 +++++++++++----- 8 files changed, 42 insertions(+), 17 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index d355302f0..f26946cd1 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,10 @@ Date Added 12/5 + * Added allow_atcommand_when_mute - Change this to set whether muted players + can use gm commands [celest] + * Temporarily leaving the changing guild emblems requiring Glory of Guild + feature only for TXT until the SQL char-server supports guild skills fully[celest] + * Modified battle_range again to check if src's type is a player first [celest] * Corrected typo in battle_range [celest] * Fixed a crash where party chats can be sent to a partially disconnected player [MouseJstr] diff --git a/conf-tmpl/battle_athena.conf b/conf-tmpl/battle_athena.conf index 4a338b256..a950720d3 100644 --- a/conf-tmpl/battle_athena.conf +++ b/conf-tmpl/battle_athena.conf @@ -723,6 +723,9 @@ packet_ver_flag: 511 // Allow GMs to mute players or not? muting_players: no +// Allow GM commands to be used when muted? +allow_atcommand_when_mute: yes + // Mail system - Only function in sql version mail_system: no diff --git a/db/Changelog.txt b/db/Changelog.txt index 46945588a..dc6e134f3 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -5,6 +5,9 @@ Ayathoya items == Added but no effect ( all are "ect" itens) Skill databases == celest working on them i believe. +12/5 * Edited skill_nocast_db - the skills should be useable outside GvG maps even + if woe is on [celest] + 12/3 * corrected Spider Web's maximum level [celest] * Removed Soul Drain from Professor's skill tree [celest] * Updated Stunner's job - Acolytes and monks should be able to use it too! [celest] diff --git a/db/skill_nocast_db.txt b/db/skill_nocast_db.txt index 158cfbe3b..5669d9235 100644 --- a/db/skill_nocast_db.txt +++ b/db/skill_nocast_db.txt @@ -7,11 +7,11 @@ // 8 - Cannot be used when WoE is on // 16 - Cannot be used in PK Mode maps // Example: 8,6 = Endure cannot be used in PvP and GvG maps (2+4) -8,12 -26,12 -27,12 -87,12 -150,12 -214,12 -361,12 -362,12 \ No newline at end of file +8,4 //SM_ENDURE +26,4 //AL_TELEPORT +27,4 //AL_WARP +87,4 //WZ_ICEWALL +150,4 //TF_BACKSLIDING +214,4 //RG_RAID +361,4 //HP_ASSUMPTIO +362,4 //HP_BASILICA \ No newline at end of file diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 7accfa639..da3faa97f 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -670,6 +670,11 @@ is_atcommand(const int fd, struct map_session_data* sd, const char* message, int nullpo_retr(AtCommand_None, sd); + if (!battle_config.allow_atcommand_when_mute && + sd->sc_count && sd->sc_data[SC_NOCHAT].timer != -1) { + return AtCommand_Unknown; + } + if (!message || !*message) return AtCommand_None; diff --git a/src/map/battle.c b/src/map/battle.c index 6b1d68625..df8b583cf 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4962,14 +4962,13 @@ int battle_check_range(struct block_list *src,struct block_list *bl,int range) if( range>0 && range < arange ) {// 遠すぎる // be lenient if the skill was cast before we have moved to the correct position [Celest] - if (src->type != BL_PC) - return 0; - else if (src->type == BL_PC) { + if (src->type == BL_PC) { struct map_session_data *sd; nullpo_retr(0, (sd=(struct map_session_data *)bl)); if (sd->walktimer != -1 && !((arange-=battle_config.skill_range_leniency)<=range)) return 0; } + else return 0; } if( arange<2 ) // 同じマスか隣接 @@ -5224,6 +5223,7 @@ static const struct { { "night_darkness_level", &battle_config.night_darkness_level}, // [celest] { "skill_range_leniency", &battle_config.skill_range_leniency}, // [celest] { "motd_type", &battle_config.motd_type}, // [celest] + { "allow_atcommand_when_mute", &battle_config.allow_atcommand_when_mute}, // [celest] //SQL-only options start #ifndef TXT_ONLY @@ -5455,6 +5455,8 @@ void battle_set_defaults() { battle_config.night_darkness_level = 9; battle_config.skill_range_leniency = 1; battle_config.motd_type = 0; + battle_config.allow_atcommand_when_mute = 0; + battle_config.castrate_dex_scale = 150; diff --git a/src/map/battle.h b/src/map/battle.h index 32dabb53e..2b901410f 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -323,7 +323,7 @@ extern struct Battle_Config { int any_warp_GM_min_level; // added by [Yor] int packet_ver_flag; // added by [Yor] int muting_players; // added by [Apple] - + int min_hair_style; // added by [MouseJstr] int max_hair_style; // added by [MouseJstr] int min_hair_color; // added by [MouseJstr] @@ -342,6 +342,7 @@ extern struct Battle_Config { int night_darkness_level; // [celest] int skill_range_leniency; // [celest] int motd_type; // [celest] + int allow_atcommand_when_mute; // [celest] #ifndef TXT_ONLY /* SQL-only options */ int mail_system; // [Valaris] diff --git a/src/map/guild.c b/src/map/guild.c index 0943b4b6d..32aa2434c 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -874,11 +874,17 @@ int guild_change_emblem(struct map_session_data *sd,int len,const char *data) nullpo_retr(0, sd); - if ((g = guild_search(sd->status.guild_id)) && guild_checkskill(g, GD_GLORYGUILD)>0) - return intif_guild_emblem(sd->status.guild_id,len,data); - - clif_skill_fail(sd,GD_GLORYGUILD,0,0); - return 0; + /* Temporarily only for TXT until there's proper char server support [Celest] */ + #ifdef TXT_ONLY + if ((g = guild_search(sd->status.guild_id)) && guild_checkskill(g, GD_GLORYGUILD)>0) + return intif_guild_emblem(sd->status.guild_id,len,data); + + clif_skill_fail(sd,GD_GLORYGUILD,0,0); + #else + if ((g = guild_search(sd->status.guild_id))) + return intif_guild_emblem(sd->status.guild_id,len,data); + #endif + return 0; } // ギルドエンブレム変更通知 int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data) -- cgit v1.2.3-70-g09d2 From 0c3f5d7681285fa74d8947b2f25c65ae25d5f117 Mon Sep 17 00:00:00 2001 From: mc_cameri Date: Sun, 5 Dec 2004 12:20:33 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@462 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 4 + Dev/bugs.txt | 9 +- log/char.log | 34 +++++++ log/login.log | 287 ++++++++++++++++++++++++++++++++++++++++++++++++++++ mapbug.txt | 1 - src/map/atcommand.c | 183 ++++++++++++++++++++++++++++++++- src/map/map.c | 12 --- 7 files changed, 507 insertions(+), 23 deletions(-) delete mode 100644 mapbug.txt (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index f26946cd1..de597e245 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,9 @@ Date Added 12/5 + * Added nullpo's to all atcommand's functions, phew... [MC Cameri] + Note: I point out that MouseJstr has added some @commands that start with char which + havent been finished, they are just there but don't do anything. + * Removed mapbug.txt and corresponding function in map.c (realized it's pointless) [MC Cameri] * Added allow_atcommand_when_mute - Change this to set whether muted players can use gm commands [celest] * Temporarily leaving the changing guild emblems requiring Glory of Guild diff --git a/Dev/bugs.txt b/Dev/bugs.txt index cdd63f4d2..f1f65aa6f 100644 --- a/Dev/bugs.txt +++ b/Dev/bugs.txt @@ -52,11 +52,6 @@ Problem: Sage's Area Skills (Delu.,Vulcano, etc) if casted on the same area (or Assigned: N/A Progess: 0% -Problem: @disguise has no death sprite so the client crashes when you die, a solution would be that upon death before the sprites change you're undisguised. -Assigned: Celest -Progess: 100% -Note 1: Please state which sprite makes the client crash, I tried many spriters and I never crashed. [MC Cameri] - Problem: Changing email and Broadcast both use the same packets / Packet 0x3000 assigned to changing email instead of broadcasting? Notes: Refer to char.c line 2272 and line 2416, intif.c line 107, chrif.c line 377 Assigned: N/A @@ -75,6 +70,10 @@ Problem: Wierd login-server bug on sql, it displays that the server is full when Assigned: N/A Progress: 0% +Problem: Login-Server is now crashing when you close it using ^C, Ctrl+C(on windows), it only does that if login was connected with char-server. +Assigned: N/A +Progress: 0 + Problem: Storm Gust doesn't freeze mobs / players Assigned: N/A Progress: 0% diff --git a/log/char.log b/log/char.log index faf9009e4..afaa18c6c 100644 --- a/log/char.log +++ b/log/char.log @@ -596,3 +596,37 @@ 28-11-2004 11:56:34.469: Character Selected, Account ID: 2000003, Character Slot: 0, Character Name: MC Cameri. 28-11-2004 12:05:55.156: Character Selected, Account ID: 2000004, Character Slot: 0, Character Name: genosonic. 28-11-2004 12:58:29.282: Character Selected, Account ID: 2000004, Character Slot: 0, Character Name: genosonic. + +29-11-2004 16:55:36.160: The char-server starting... +29-11-2004 16:55:38.765: mmo_char_init: 4 characters read in save/athena.txt. +29-11-2004 16:55:38.765: Id for the next created character: 150004. +29-11-2004 16:55:38.846: The char-server is ready (Server is listening on the port 6121). +29-11-2004 16:55:39.867: From login-server: receiving of 5 GM accounts information. +29-11-2004 16:57:12.319: Map-Server 0 connected: 420 maps, from IP 127.0.0.1 port 5121. Map-server 0 loading complete. +29-11-2004 17:02:30.822: Character Selected, Account ID: 2000002, Character Slot: 0, Character Name: cameri. +29-11-2004 17:05:36.499: ----End of char-server (normal end with closing of all files). + +04-12-2004 22:27:14.390: The char-server starting... +04-12-2004 22:27:14.699: mmo_char_init: 4 characters read in save/athena.txt. +04-12-2004 22:27:14.699: Id for the next created character: 150004. +04-12-2004 22:27:14.980: The char-server is ready (Server is listening on the port 6121). +04-12-2004 22:27:17.098: From login-server: receiving of 5 GM accounts information. +04-12-2004 22:27:24.043: Map-Server 0 connected: 420 maps, from IP 127.0.0.1 port 5121. Map-server 0 loading complete. +04-12-2004 22:27:40.369: Character Selected, Account ID: 2000002, Character Slot: 0, Character Name: cameri. +04-12-2004 22:28:54.432: ----End of char-server (normal end with closing of all files). + +04-12-2004 22:29:19.937: The char-server starting... +04-12-2004 22:29:19.974: mmo_char_init: 4 characters read in save/athena.txt. +04-12-2004 22:29:19.975: Id for the next created character: 150004. +04-12-2004 22:29:19.978: The char-server is ready (Server is listening on the port 6121). +04-12-2004 22:29:20.986: From login-server: receiving of 5 GM accounts information. +04-12-2004 22:29:24.047: Map-Server 0 connected: 420 maps, from IP 127.0.0.1 port 5121. Map-server 0 loading complete. +04-12-2004 22:29:40.986: From login-server: receiving of 5 GM accounts information. +04-12-2004 22:29:46.469: ----End of char-server (normal end with closing of all files). + +04-12-2004 22:32:26.734: The char-server starting... +04-12-2004 22:32:26.773: mmo_char_init: 4 characters read in save/athena.txt. +04-12-2004 22:32:26.773: Id for the next created character: 150004. +04-12-2004 22:32:26.778: The char-server is ready (Server is listening on the port 6121). +04-12-2004 22:32:27.787: From login-server: receiving of 5 GM accounts information. +04-12-2004 22:32:31.147: ----End of char-server (normal end with closing of all files). diff --git a/log/login.log b/log/login.log index d108619a5..60fd756be 100644 --- a/log/login.log +++ b/log/login.log @@ -3119,3 +3119,290 @@ 2004-11-28 14:15:13.227: Request for connection (non encryption mode) of genosonic (ip: 127.0.0.1). 2004-11-28 14:15:13.227: Authentification accepted (account: genosonic (id: 2000004), ip: 127.0.0.1) 2004-11-28 14:15:14.248: Char-server 'eAthena': authentification of the account 2000004 accepted (ip: 127.0.0.1). + +2004-11-29 16:55:36.156: The login-server starting... +2004-11-29 16:55:36.343: The configuration of the server is set: +2004-11-29 16:55:36.343: - with a remote administration with the DEFAULT password. +2004-11-29 16:55:36.343: - to accept any IP for remote administration +2004-11-29 16:55:36.343: - with the DEFAULT 'To GM become' password (gm_pass). +2004-11-29 16:55:36.343: - to create GM with level '60' when @gm is used. +2004-11-29 16:55:36.343: - to ALLOW new users (with _F/_M). +2004-11-29 16:55:36.344: - with port: 6900. +2004-11-29 16:55:36.344: - with the accounts file name: 'save/account.txt'. +2004-11-29 16:55:36.344: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-11-29 16:55:36.344: - to check GM accounts file modifications every 15 seconds. +2004-11-29 16:55:36.344: - to save password in plain text. +2004-11-29 16:55:36.344: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-11-29 16:55:36.344: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-11-29 16:55:36.344: - to NOT display normal parse packets on console. +2004-11-29 16:55:36.344: - to NOT display administration parse packets on console. +2004-11-29 16:55:36.344: - to NOT display char-server parse packets on console. +2004-11-29 16:55:36.344: - with no minimum level for connection. +2004-11-29 16:55:36.345: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-11-29 16:55:36.345: - to create new accounts with an unlimited time. +2004-11-29 16:55:36.345: - with control of players IP between login-server and char-server. +2004-11-29 16:55:36.345: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-11-29 16:55:36.383: The LAN configuration of the server is set: +2004-11-29 16:55:36.383: - with LAN IP of char-server: 127.0.0.1. +2004-11-29 16:55:36.383: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-11-29 16:55:36.426: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-11-29 16:55:36.427: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-11-29 16:55:36.428: The login-server is ready (Server is listening on the port 6900). +2004-11-29 16:55:39.863: Connection request of the char-server 'eAthena' @ 127.0.0.1:6121 (ip: 127.0.0.1) +2004-11-29 16:55:39.863: Authentification accepted (account: s1 (id: 0), ip: 127.0.0.1) +2004-11-29 16:55:39.864: Connection of the char-server 'eAthena' accepted (account: s1, pass: p1, ip: 127.0.0.1) +2004-11-29 17:02:22.947: Request for connection (non encryption mode) of cameri (ip: 127.0.0.1). +2004-11-29 17:02:22.947: Authentification accepted (account: cameri (id: 2000002), ip: 127.0.0.1) +2004-11-29 17:02:28.635: Char-server 'eAthena': authentification of the account 2000002 accepted (ip: 127.0.0.1). +2004-11-29 17:05:36.670: Char-server 'eAthena' has disconnected (ip: 127.0.0.1). +2004-11-29 17:05:37.048: ----End of login-server (normal end with closing of all files). + +2004-12-04 12:14:45.701: The login-server starting... +2004-12-04 12:14:45.809: The configuration of the server is set: +2004-12-04 12:14:45.809: - with a remote administration with the DEFAULT password. +2004-12-04 12:14:45.809: - to accept any IP for remote administration +2004-12-04 12:14:45.809: - with the DEFAULT 'To GM become' password (gm_pass). +2004-12-04 12:14:45.809: - to create GM with level '60' when @gm is used. +2004-12-04 12:14:45.809: - to ALLOW new users (with _F/_M). +2004-12-04 12:14:45.810: - with port: 6900. +2004-12-04 12:14:45.810: - with the accounts file name: 'save/account.txt'. +2004-12-04 12:14:45.810: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-12-04 12:14:45.810: - to check GM accounts file modifications every 15 seconds. +2004-12-04 12:14:45.810: - to save password in plain text. +2004-12-04 12:14:45.810: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-12-04 12:14:45.810: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-12-04 12:14:45.810: - to NOT display normal parse packets on console. +2004-12-04 12:14:45.810: - to NOT display administration parse packets on console. +2004-12-04 12:14:45.810: - to NOT display char-server parse packets on console. +2004-12-04 12:14:45.810: - with no minimum level for connection. +2004-12-04 12:14:45.810: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-12-04 12:14:45.811: - to create new accounts with an unlimited time. +2004-12-04 12:14:45.811: - with control of players IP between login-server and char-server. +2004-12-04 12:14:45.811: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-12-04 12:14:45.820: The LAN configuration of the server is set: +2004-12-04 12:14:45.821: - with LAN IP of char-server: 127.0.0.1. +2004-12-04 12:14:45.821: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-12-04 12:14:45.861: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-12-04 12:14:45.863: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-12-04 12:14:45.864: The login-server is ready (Server is listening on the port 6900). +2004-12-04 12:16:50.673: ----End of login-server (normal end with closing of all files). + +2004-12-04 12:30:11.405: The login-server starting... +2004-12-04 12:30:11.405: The configuration of the server is set: +2004-12-04 12:30:11.405: - with a remote administration with the DEFAULT password. +2004-12-04 12:30:11.405: - to accept any IP for remote administration +2004-12-04 12:30:11.406: - with the DEFAULT 'To GM become' password (gm_pass). +2004-12-04 12:30:11.406: - to create GM with level '60' when @gm is used. +2004-12-04 12:30:11.406: - to ALLOW new users (with _F/_M). +2004-12-04 12:30:11.406: - with port: 6900. +2004-12-04 12:30:11.406: - with the accounts file name: 'save/account.txt'. +2004-12-04 12:30:11.406: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-12-04 12:30:11.406: - to check GM accounts file modifications every 15 seconds. +2004-12-04 12:30:11.406: - to save password in plain text. +2004-12-04 12:30:11.406: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-12-04 12:30:11.406: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-12-04 12:30:11.406: - to NOT display normal parse packets on console. +2004-12-04 12:30:11.406: - to NOT display administration parse packets on console. +2004-12-04 12:30:11.407: - to NOT display char-server parse packets on console. +2004-12-04 12:30:11.407: - with no minimum level for connection. +2004-12-04 12:30:11.407: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-12-04 12:30:11.407: - to create new accounts with an unlimited time. +2004-12-04 12:30:11.407: - with control of players IP between login-server and char-server. +2004-12-04 12:30:11.407: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-12-04 12:30:11.408: The LAN configuration of the server is set: +2004-12-04 12:30:11.408: - with LAN IP of char-server: 127.0.0.1. +2004-12-04 12:30:11.408: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-12-04 12:30:11.410: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-12-04 12:30:11.411: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-12-04 12:30:11.412: The login-server is ready (Server is listening on the port 6900). + +2004-12-04 22:27:16.546: The login-server starting... +2004-12-04 22:27:16.546: The configuration of the server is set: +2004-12-04 22:27:16.546: - with a remote administration with the DEFAULT password. +2004-12-04 22:27:16.546: - to accept any IP for remote administration +2004-12-04 22:27:16.546: - with the DEFAULT 'To GM become' password (gm_pass). +2004-12-04 22:27:16.546: - to create GM with level '60' when @gm is used. +2004-12-04 22:27:16.546: - to ALLOW new users (with _F/_M). +2004-12-04 22:27:16.546: - with port: 6900. +2004-12-04 22:27:16.546: - with the accounts file name: 'save/account.txt'. +2004-12-04 22:27:16.546: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-12-04 22:27:16.546: - to check GM accounts file modifications every 15 seconds. +2004-12-04 22:27:16.546: - to save password in plain text. +2004-12-04 22:27:16.546: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-12-04 22:27:16.546: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-12-04 22:27:16.547: - to NOT display normal parse packets on console. +2004-12-04 22:27:16.547: - to NOT display administration parse packets on console. +2004-12-04 22:27:16.547: - to NOT display char-server parse packets on console. +2004-12-04 22:27:16.547: - with no minimum level for connection. +2004-12-04 22:27:16.547: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-12-04 22:27:16.547: - to create new accounts with an unlimited time. +2004-12-04 22:27:16.547: - with control of players IP between login-server and char-server. +2004-12-04 22:27:16.547: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-12-04 22:27:16.556: The LAN configuration of the server is set: +2004-12-04 22:27:16.556: - with LAN IP of char-server: 127.0.0.1. +2004-12-04 22:27:16.556: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-12-04 22:27:16.569: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-12-04 22:27:16.570: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-12-04 22:27:16.571: The login-server is ready (Server is listening on the port 6900). +2004-12-04 22:27:17.003: Connection request of the char-server 'eAthena' @ 127.0.0.1:6121 (ip: 127.0.0.1) +2004-12-04 22:27:17.003: Authentification accepted (account: s1 (id: 0), ip: 127.0.0.1) +2004-12-04 22:27:17.011: Connection of the char-server 'eAthena' accepted (account: s1, pass: p1, ip: 127.0.0.1) +2004-12-04 22:27:37.996: Request for connection (non encryption mode) of cameri (ip: 127.0.0.1). +2004-12-04 22:27:37.997: Authentification accepted (account: cameri (id: 2000002), ip: 127.0.0.1) +2004-12-04 22:27:38.574: Char-server 'eAthena': authentification of the account 2000002 accepted (ip: 127.0.0.1). + +2004-12-04 22:29:13.406: The login-server starting... +2004-12-04 22:29:13.406: The configuration of the server is set: +2004-12-04 22:29:13.406: - with a remote administration with the DEFAULT password. +2004-12-04 22:29:13.406: - to accept any IP for remote administration +2004-12-04 22:29:13.406: - with the DEFAULT 'To GM become' password (gm_pass). +2004-12-04 22:29:13.406: - to create GM with level '60' when @gm is used. +2004-12-04 22:29:13.406: - to ALLOW new users (with _F/_M). +2004-12-04 22:29:13.406: - with port: 6900. +2004-12-04 22:29:13.406: - with the accounts file name: 'save/account.txt'. +2004-12-04 22:29:13.406: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-12-04 22:29:13.406: - to check GM accounts file modifications every 15 seconds. +2004-12-04 22:29:13.406: - to save password in plain text. +2004-12-04 22:29:13.406: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-12-04 22:29:13.406: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-12-04 22:29:13.406: - to NOT display normal parse packets on console. +2004-12-04 22:29:13.407: - to NOT display administration parse packets on console. +2004-12-04 22:29:13.407: - to NOT display char-server parse packets on console. +2004-12-04 22:29:13.407: - with no minimum level for connection. +2004-12-04 22:29:13.407: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-12-04 22:29:13.407: - to create new accounts with an unlimited time. +2004-12-04 22:29:13.407: - with control of players IP between login-server and char-server. +2004-12-04 22:29:13.407: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-12-04 22:29:13.408: The LAN configuration of the server is set: +2004-12-04 22:29:13.408: - with LAN IP of char-server: 127.0.0.1. +2004-12-04 22:29:13.408: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-12-04 22:29:13.411: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-12-04 22:29:13.411: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-12-04 22:29:13.412: The login-server is ready (Server is listening on the port 6900). +2004-12-04 22:29:14.146: ----End of login-server (normal end with closing of all files). + +2004-12-04 22:29:15.953: The login-server starting... +2004-12-04 22:29:15.953: The configuration of the server is set: +2004-12-04 22:29:15.953: - with a remote administration with the DEFAULT password. +2004-12-04 22:29:15.953: - to accept any IP for remote administration +2004-12-04 22:29:15.953: - with the DEFAULT 'To GM become' password (gm_pass). +2004-12-04 22:29:15.953: - to create GM with level '60' when @gm is used. +2004-12-04 22:29:15.953: - to ALLOW new users (with _F/_M). +2004-12-04 22:29:15.953: - with port: 6900. +2004-12-04 22:29:15.953: - with the accounts file name: 'save/account.txt'. +2004-12-04 22:29:15.953: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-12-04 22:29:15.953: - to check GM accounts file modifications every 15 seconds. +2004-12-04 22:29:15.954: - to save password in plain text. +2004-12-04 22:29:15.954: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-12-04 22:29:15.954: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-12-04 22:29:15.954: - to NOT display normal parse packets on console. +2004-12-04 22:29:15.954: - to NOT display administration parse packets on console. +2004-12-04 22:29:15.954: - to NOT display char-server parse packets on console. +2004-12-04 22:29:15.954: - with no minimum level for connection. +2004-12-04 22:29:15.954: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-12-04 22:29:15.954: - to create new accounts with an unlimited time. +2004-12-04 22:29:15.954: - with control of players IP between login-server and char-server. +2004-12-04 22:29:15.955: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-12-04 22:29:15.958: The LAN configuration of the server is set: +2004-12-04 22:29:15.958: - with LAN IP of char-server: 127.0.0.1. +2004-12-04 22:29:15.958: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-12-04 22:29:15.961: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-12-04 22:29:15.961: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-12-04 22:29:15.962: The login-server is ready (Server is listening on the port 6900). +2004-12-04 22:29:20.986: Connection request of the char-server 'eAthena' @ 127.0.0.1:6121 (ip: 127.0.0.1) +2004-12-04 22:29:20.986: Authentification accepted (account: s1 (id: 0), ip: 127.0.0.1) +2004-12-04 22:29:20.988: Connection of the char-server 'eAthena' accepted (account: s1, pass: p1, ip: 127.0.0.1) + +2004-12-04 22:29:34.843: The login-server starting... +2004-12-04 22:29:34.843: The configuration of the server is set: +2004-12-04 22:29:34.843: - with a remote administration with the DEFAULT password. +2004-12-04 22:29:34.843: - to accept any IP for remote administration +2004-12-04 22:29:34.843: - with the DEFAULT 'To GM become' password (gm_pass). +2004-12-04 22:29:34.843: - to create GM with level '60' when @gm is used. +2004-12-04 22:29:34.843: - to ALLOW new users (with _F/_M). +2004-12-04 22:29:34.843: - with port: 6900. +2004-12-04 22:29:34.844: - with the accounts file name: 'save/account.txt'. +2004-12-04 22:29:34.844: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-12-04 22:29:34.844: - to check GM accounts file modifications every 15 seconds. +2004-12-04 22:29:34.844: - to save password in plain text. +2004-12-04 22:29:34.844: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-12-04 22:29:34.844: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-12-04 22:29:34.844: - to NOT display normal parse packets on console. +2004-12-04 22:29:34.844: - to NOT display administration parse packets on console. +2004-12-04 22:29:34.844: - to NOT display char-server parse packets on console. +2004-12-04 22:29:34.844: - with no minimum level for connection. +2004-12-04 22:29:34.844: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-12-04 22:29:34.845: - to create new accounts with an unlimited time. +2004-12-04 22:29:34.845: - with control of players IP between login-server and char-server. +2004-12-04 22:29:34.845: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-12-04 22:29:34.846: The LAN configuration of the server is set: +2004-12-04 22:29:34.846: - with LAN IP of char-server: 127.0.0.1. +2004-12-04 22:29:34.846: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-12-04 22:29:34.848: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-12-04 22:29:34.849: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-12-04 22:29:34.849: The login-server is ready (Server is listening on the port 6900). +2004-12-04 22:29:40.980: Connection request of the char-server 'eAthena' @ 127.0.0.1:6121 (ip: 127.0.0.1) +2004-12-04 22:29:40.980: Authentification accepted (account: s1 (id: 0), ip: 127.0.0.1) +2004-12-04 22:29:40.983: Connection of the char-server 'eAthena' accepted (account: s1, pass: p1, ip: 127.0.0.1) + +2004-12-04 22:31:44.796: The login-server starting... +2004-12-04 22:31:44.796: The configuration of the server is set: +2004-12-04 22:31:44.796: - with a remote administration with the DEFAULT password. +2004-12-04 22:31:44.796: - to accept any IP for remote administration +2004-12-04 22:31:44.796: - with the DEFAULT 'To GM become' password (gm_pass). +2004-12-04 22:31:44.796: - to create GM with level '60' when @gm is used. +2004-12-04 22:31:44.796: - to ALLOW new users (with _F/_M). +2004-12-04 22:31:44.796: - with port: 6900. +2004-12-04 22:31:44.797: - with the accounts file name: 'save/account.txt'. +2004-12-04 22:31:44.797: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-12-04 22:31:44.797: - to check GM accounts file modifications every 15 seconds. +2004-12-04 22:31:44.797: - to save password in plain text. +2004-12-04 22:31:44.797: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-12-04 22:31:44.797: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-12-04 22:31:44.797: - to NOT display normal parse packets on console. +2004-12-04 22:31:44.797: - to NOT display administration parse packets on console. +2004-12-04 22:31:44.797: - to NOT display char-server parse packets on console. +2004-12-04 22:31:44.797: - with no minimum level for connection. +2004-12-04 22:31:44.797: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-12-04 22:31:44.797: - to create new accounts with an unlimited time. +2004-12-04 22:31:44.798: - with control of players IP between login-server and char-server. +2004-12-04 22:31:44.798: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-12-04 22:31:44.799: The LAN configuration of the server is set: +2004-12-04 22:31:44.799: - with LAN IP of char-server: 127.0.0.1. +2004-12-04 22:31:44.799: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-12-04 22:31:44.805: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-12-04 22:31:44.806: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-12-04 22:31:44.806: The login-server is ready (Server is listening on the port 6900). +2004-12-04 22:32:11.169: ----End of login-server (normal end with closing of all files). + +2004-12-04 22:32:23.937: The login-server starting... +2004-12-04 22:32:23.937: The configuration of the server is set: +2004-12-04 22:32:23.937: - with a remote administration with the DEFAULT password. +2004-12-04 22:32:23.937: - to accept any IP for remote administration +2004-12-04 22:32:23.937: - with the DEFAULT 'To GM become' password (gm_pass). +2004-12-04 22:32:23.937: - to create GM with level '60' when @gm is used. +2004-12-04 22:32:23.937: - to ALLOW new users (with _F/_M). +2004-12-04 22:32:23.937: - with port: 6900. +2004-12-04 22:32:23.937: - with the accounts file name: 'save/account.txt'. +2004-12-04 22:32:23.937: - with the GM accounts file name: 'conf/GM_account.txt'. +2004-12-04 22:32:23.937: - to check GM accounts file modifications every 15 seconds. +2004-12-04 22:32:23.937: - to save password in plain text. +2004-12-04 22:32:23.937: - with the unknown packets file name: 'log/login_unknown_packets.log'. +2004-12-04 22:32:23.937: - to SAVE only unkown packets sending by a char-server or a remote administration. +2004-12-04 22:32:23.938: - to NOT display normal parse packets on console. +2004-12-04 22:32:23.938: - to NOT display administration parse packets on console. +2004-12-04 22:32:23.938: - to NOT display char-server parse packets on console. +2004-12-04 22:32:23.938: - with no minimum level for connection. +2004-12-04 22:32:23.938: - to refuse adjustment (with timeadd ladmin) on an unlimited account. You must use timeset (ladmin command) before. +2004-12-04 22:32:23.938: - to create new accounts with an unlimited time. +2004-12-04 22:32:23.938: - with control of players IP between login-server and char-server. +2004-12-04 22:32:23.938: - with the IP security order: 'deny,allow' (allow if not deny). You refuse no IP. +2004-12-04 22:32:23.939: The LAN configuration of the server is set: +2004-12-04 22:32:23.940: - with LAN IP of char-server: 127.0.0.1. +2004-12-04 22:32:23.940: - with the sub-network of the char-server: 127.0.0.1/255.255.255.255. +2004-12-04 22:32:23.945: 10 accounts read in save/account.txt, of which is no GM account and 5 server accounts ('S'). +2004-12-04 22:32:23.945: read_gm_account: file 'conf/GM_account.txt' read (5 GM accounts found). +2004-12-04 22:32:23.946: The login-server is ready (Server is listening on the port 6900). +2004-12-04 22:32:27.779: Connection request of the char-server 'eAthena' @ 127.0.0.1:6121 (ip: 127.0.0.1) +2004-12-04 22:32:27.779: Authentification accepted (account: s1 (id: 0), ip: 127.0.0.1) +2004-12-04 22:32:27.781: Connection of the char-server 'eAthena' accepted (account: s1, pass: p1, ip: 127.0.0.1) diff --git a/mapbug.txt b/mapbug.txt deleted file mode 100644 index 462bfc3f4..000000000 --- a/mapbug.txt +++ /dev/null @@ -1 +0,0 @@ -Last Fix: Added more sc_data checks in skill.c and pc.c [celest] diff --git a/src/map/atcommand.c b/src/map/atcommand.c index da3faa97f..5edbd488d 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -951,6 +951,8 @@ int atcommand_rurap( const int fd, struct map_session_data* sd, const char* command, const char* message) { + + nullpo_retr(-1, sd); char map_name[100]; char character[100]; int x = 0, y = 0; @@ -1016,6 +1018,7 @@ int atcommand_rura( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char map_name[100]; int x = 0, y = 0; int m; @@ -1067,6 +1070,7 @@ int atcommand_where( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd = NULL; @@ -1102,6 +1106,7 @@ int atcommand_jumpto( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd = NULL; @@ -1147,6 +1152,7 @@ int atcommand_jump( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; int x = 0, y = 0; @@ -1186,6 +1192,7 @@ int atcommand_who( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; struct map_session_data *pl_sd; int i, j, count; @@ -1243,6 +1250,7 @@ int atcommand_who2( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; struct map_session_data *pl_sd; int i, j, count; @@ -1300,6 +1308,7 @@ int atcommand_who3( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char temp0[100]; char temp1[100]; char output[200]; @@ -1431,6 +1440,7 @@ int atcommand_whomap2( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; struct map_session_data *pl_sd; int i, count; @@ -1489,6 +1499,7 @@ int atcommand_whomap3( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char temp0[100]; char temp1[100]; char output[200]; @@ -1563,6 +1574,7 @@ int atcommand_whogm( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char temp0[100]; char temp1[100]; char output[200]; @@ -1635,6 +1647,7 @@ int atcommand_whozeny( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; struct map_session_data *pl_sd; int i, j, count,c; @@ -1702,7 +1715,7 @@ int atcommand_happyhappyjoyjoy( const int fd, struct map_session_data* sd, const char* command, const char* message) { - + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i,e; @@ -1726,6 +1739,7 @@ int atcommand_save( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); pc_setsavepoint(sd, sd->mapname, sd->bl.x, sd->bl.y); if (sd->status.pet_id > 0 && sd->pd) intif_save_petdata(sd->status.account_id, &sd->pet); @@ -1745,6 +1759,7 @@ int atcommand_load( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int m; m = map_mapname2mapid(sd->status.save_point.map); @@ -1771,6 +1786,7 @@ int atcommand_speed( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; int speed; @@ -1806,6 +1822,7 @@ int atcommand_storage( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); storage_storageopen(sd); return 0; @@ -1819,6 +1836,7 @@ int atcommand_guildstorage( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (sd->status.guild_id > 0) storage_guild_storageopen(sd); @@ -1833,6 +1851,7 @@ int atcommand_option( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int param1 = 0, param2 = 0, param3 = 0; if (!message || !*message || sscanf(message, "%d %d %d", ¶m1, ¶m2, ¶m3) < 1 || param1 < 0 || param2 < 0 || param3 < 0) { @@ -1894,6 +1913,7 @@ int atcommand_hide( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (sd->status.option & OPTION_HIDE) { sd->status.option &= ~OPTION_HIDE; clif_displaymessage(fd, msg_table[10]); // Invisible: Off @@ -1914,6 +1934,7 @@ int atcommand_jobchange( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int job = 0, upper = -1; if (!message || !*message || sscanf(message, "%d %d", &job, &upper) < 1) { @@ -1976,6 +1997,7 @@ int atcommand_die( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); clif_specialeffect(&sd->bl,450,1); pc_damage(NULL, sd, sd->status.hp + 1); clif_displaymessage(fd, msg_table[13]); // A pity! You've died. @@ -1991,6 +2013,7 @@ int atcommand_kill( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; @@ -2025,6 +2048,7 @@ int atcommand_alive( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (pc_isdead(sd)) { sd->status.hp = sd->status.max_hp; sd->status.sp = sd->status.max_sp; @@ -2050,6 +2074,7 @@ int atcommand_kami( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; memset(output, '\0', sizeof(output)); @@ -2073,6 +2098,7 @@ int atcommand_heal( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int hp = 0, sp = 0; // [Valaris] thanks to fov sscanf(message, "%d %d", &hp, &sp); @@ -2120,6 +2146,7 @@ int atcommand_item( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char item_name[100]; int number = 0, item_id, flag; struct item item_tmp; @@ -2183,6 +2210,7 @@ int atcommand_item2( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct item item_tmp; struct item_data *item_data; char item_name[100]; @@ -2257,6 +2285,7 @@ int atcommand_itemreset( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i; for (i = 0; i < MAX_INVENTORY; i++) { @@ -2276,6 +2305,7 @@ int atcommand_itemcheck( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); pc_checkitem(sd); return 0; @@ -2289,6 +2319,7 @@ int atcommand_baselevelup( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int level, i; if (!message || !*message || (level = atoi(message)) == 0) { @@ -2345,6 +2376,7 @@ int atcommand_joblevelup( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int up_level = 50, level; if (!message || !*message || (level = atoi(message)) == 0) { @@ -2403,6 +2435,7 @@ int atcommand_help( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char buf[2048], w1[2048], w2[2048]; int i, gm_level; FILE* fp; @@ -2443,6 +2476,7 @@ int atcommand_gm( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char password[100]; memset(password, '\0', sizeof(password)); @@ -2469,6 +2503,7 @@ int atcommand_pvpoff( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; @@ -2508,6 +2543,7 @@ int atcommand_pvpon( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; @@ -2547,6 +2583,7 @@ int atcommand_gvgoff( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (map[sd->bl.m].flag.gvg) { map[sd->bl.m].flag.gvg = 0; clif_send0199(sd->bl.m, 0); @@ -2567,6 +2604,7 @@ int atcommand_gvgon( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (!map[sd->bl.m].flag.gvg) { map[sd->bl.m].flag.gvg = 1; clif_send0199(sd->bl.m, 3); @@ -2587,6 +2625,7 @@ int atcommand_model( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int hair_style = 0, hair_color = 0, cloth_color = 0; char output[200]; @@ -2627,6 +2666,7 @@ int atcommand_model( */ int atcommand_dye(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int cloth_color = 0; char output[200]; @@ -2662,6 +2702,7 @@ int atcommand_chardye(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); return 0; } @@ -2671,6 +2712,7 @@ atcommand_chardye(const int fd, struct map_session_data* sd, */ int atcommand_hair_style(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int hair_style = 0; char output[200]; @@ -2706,7 +2748,8 @@ int atcommand_charhairstyle(const int fd, struct map_session_data* sd, const char* command, const char* message) { - return 0; + nullpo_retr(-1, sd); + return 0; } /*========================================== @@ -2715,6 +2758,7 @@ atcommand_charhairstyle(const int fd, struct map_session_data* sd, */ int atcommand_hair_color(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int hair_color = 0; char output[200]; @@ -2750,7 +2794,8 @@ int atcommand_charhaircolor(const int fd, struct map_session_data* sd, const char* command, const char* message) { - return 0; + nullpo_retr(-1, sd); + return 0; } /*========================================== @@ -2761,6 +2806,7 @@ int atcommand_go( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i; int town; char map_name[100]; @@ -2921,6 +2967,7 @@ int atcommand_monster( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char name[100]; char monster[100]; char output[200]; @@ -3011,6 +3058,7 @@ int atcommand_monster( int atcommand_spawn( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char name[100]; char monster[100]; char output[200]; @@ -3098,6 +3146,7 @@ int atcommand_spawn( int atcommand_monstersmall( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char name[100] = ""; char monster[100] = ""; int mob_id = 0; @@ -3175,6 +3224,7 @@ int atcommand_monstersmall( int atcommand_monsterbig( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char name[100] = ""; char monster[100] = ""; int mob_id = 0; @@ -3257,6 +3307,7 @@ void atcommand_killmonster_sub( const int fd, struct map_session_data* sd, const char* message, const int drop) { + if (!sd) return; int map_id; char map_name[100]; @@ -3286,6 +3337,7 @@ int atcommand_killmonster( const int fd, struct map_session_data* sd, const char* command, const char* message) { + if (!sd) return 0; atcommand_killmonster_sub(fd, sd, message, 1); return 0; @@ -3299,6 +3351,7 @@ int atcommand_killmonster2( const int fd, struct map_session_data* sd, const char* command, const char* message) { + if (!sd) return 0; atcommand_killmonster_sub(fd, sd, message, 0); return 0; @@ -3312,6 +3365,7 @@ int atcommand_refine( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i, position = 0, refine = 0, current_position, final_refine; int count; char output[200]; @@ -3374,6 +3428,7 @@ int atcommand_produce( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char item_name[100]; int item_id, attribute = 0, star = 0; int flag = 0; @@ -3433,6 +3488,7 @@ int atcommand_produce( *------------------------------------------ */ void atcommand_memo_sub(struct map_session_data* sd) { + if (!sd) return; int i; char output[200]; @@ -3458,6 +3514,7 @@ int atcommand_memo( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int position = 0; char output[200]; @@ -3501,6 +3558,7 @@ int atcommand_gat( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; int y; @@ -3528,6 +3586,7 @@ int atcommand_packet( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int x = 0, y = 0; if (!message || !*message || sscanf(message, "%d %d", &x, &y) < 2) { @@ -3548,6 +3607,7 @@ int atcommand_statuspoint( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int point, new_status_point; if (!message || !*message || (point = atoi(message)) == 0) { @@ -3584,6 +3644,7 @@ int atcommand_skillpoint( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int point, new_skill_point; if (!message || !*message || (point = atoi(message)) == 0) { @@ -3620,6 +3681,7 @@ int atcommand_zeny( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int zeny, new_zeny; if (!message || !*message || (zeny = atoi(message)) == 0) { @@ -3656,6 +3718,7 @@ int atcommand_param( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i, index, value = 0, new_value; const char* param[] = { "@str", "@agi", "@vit", "@int", "@dex", "@luk", NULL }; short* status[] = { @@ -3717,6 +3780,7 @@ int atcommand_stat_all( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int index, count, value = 0, new_value; short* status[] = { &sd->status.str, &sd->status.agi, &sd->status.vit, @@ -3765,6 +3829,7 @@ int atcommand_guildlevelup( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int level = 0; short added_level; struct guild *guild_info; @@ -3808,6 +3873,7 @@ int atcommand_makeegg( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct item_data *item_data; int id, pet_id; @@ -3847,6 +3913,7 @@ int atcommand_hatch( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (sd->status.pet_id <= 0) clif_sendegg(sd); else { @@ -3865,6 +3932,7 @@ int atcommand_petfriendly( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int friendly; int t; @@ -3913,6 +3981,7 @@ int atcommand_pethungry( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int hungry; if (!message || !*message || (hungry = atoi(message)) < 0) { @@ -3950,6 +4019,7 @@ int atcommand_petrename( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (sd->status.pet_id > 0 && sd->pd) { if (sd->pet.rename_flag != 0) { sd->pet.rename_flag = 0; @@ -3977,6 +4047,7 @@ atcommand_recall( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd = NULL; @@ -4027,6 +4098,7 @@ int atcommand_revive( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; @@ -4067,6 +4139,7 @@ int atcommand_char_change_sex( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; memset(character, '\0', sizeof(character)); @@ -4100,6 +4173,7 @@ int atcommand_char_block( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; memset(character, '\0', sizeof(character)); @@ -4144,6 +4218,7 @@ int atcommand_char_ban( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char modif[100], character[100]; char * modif_p; int year, month, day, hour, minute, second, value; @@ -4221,6 +4296,7 @@ int atcommand_char_unblock( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; memset(character, '\0', sizeof(character)); @@ -4254,6 +4330,7 @@ int atcommand_char_unban( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; memset(character, '\0', sizeof(character)); @@ -4287,6 +4364,7 @@ int atcommand_night( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; @@ -4322,6 +4400,7 @@ int atcommand_day( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; @@ -4350,6 +4429,7 @@ int atcommand_doom( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; clif_specialeffect(&sd->bl,450,2); @@ -4373,6 +4453,7 @@ int atcommand_doommap( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; clif_specialeffect(&sd->bl,450,3); @@ -4417,6 +4498,7 @@ int atcommand_raise( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i; for (i = 0; i < fd_max; i++) { @@ -4436,6 +4518,7 @@ int atcommand_raisemap( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; @@ -4456,6 +4539,7 @@ int atcommand_character_baselevel( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int level = 0, i; @@ -4527,6 +4611,7 @@ int atcommand_character_joblevel( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int max_level = 50, level = 0; @@ -4603,6 +4688,7 @@ int atcommand_kick( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; @@ -4636,6 +4722,7 @@ int atcommand_kickall( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; @@ -4660,6 +4747,7 @@ int atcommand_allskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); pc_allskillup(sd); // all skills sd->status.skill_point = 0; // 0 skill points clif_updatestatus(sd, SP_SKILLPOINT); // update @@ -4676,6 +4764,7 @@ int atcommand_questskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int skill_id; if (!message || !*message || (skill_id = atoi(message)) < 0) { @@ -4712,6 +4801,7 @@ int atcommand_charquestskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; int skill_id = 0; @@ -4757,6 +4847,7 @@ int atcommand_lostskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int skill_id; if (!message || !*message || (skill_id = atoi(message)) < 0) { @@ -4795,6 +4886,7 @@ int atcommand_charlostskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; int skill_id = 0; @@ -4842,6 +4934,7 @@ int atcommand_spiritball( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int number; if (!message || !*message || (number = atoi(message)) < 0) { @@ -4882,6 +4975,7 @@ int atcommand_party( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char party[100]; memset(party, '\0', sizeof(party)); @@ -4904,6 +4998,7 @@ int atcommand_guild( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char guild[100]; int prev; @@ -4930,6 +5025,7 @@ int atcommand_agitstart( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (agit_flag == 1) { clif_displaymessage(fd, msg_table[73]); // Already it has started siege warfare. return -1; @@ -4950,6 +5046,7 @@ int atcommand_agitend( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (agit_flag == 0) { clif_displaymessage(fd, msg_table[75]); // Siege warfare hasn't started yet. return -1; @@ -4970,6 +5067,7 @@ int atcommand_mapexit( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; @@ -4994,6 +5092,7 @@ int atcommand_idsearch( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char item_name[100]; char output[200]; int i, match; @@ -5031,6 +5130,7 @@ int atcommand_charskreset( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd; @@ -5068,6 +5168,7 @@ int atcommand_charstreset( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd; @@ -5105,6 +5206,7 @@ int atcommand_charmodel( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int hair_style = 0, hair_color = 0, cloth_color = 0; struct map_session_data *pl_sd; char character[100]; @@ -5156,6 +5258,7 @@ int atcommand_charskpoint( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int new_skill_point; @@ -5201,6 +5304,7 @@ int atcommand_charstpoint( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int new_status_point; @@ -5246,6 +5350,7 @@ int atcommand_charzeny( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int zeny = 0, new_zeny; @@ -5290,6 +5395,7 @@ int atcommand_recallall( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; int count; @@ -5330,6 +5436,7 @@ int atcommand_guildrecall( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; char guild_name[100]; @@ -5385,6 +5492,7 @@ int atcommand_partyrecall( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i; struct map_session_data *pl_sd; char party_name[100]; @@ -5440,6 +5548,7 @@ int atcommand_reloaditemdb( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); itemdb_reload(); clif_displaymessage(fd, msg_table[97]); // Item database reloaded. @@ -5454,6 +5563,7 @@ int atcommand_reloadmobdb( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); mob_reload(); clif_displaymessage(fd, msg_table[98]); // Monster database reloaded. @@ -5468,6 +5578,7 @@ int atcommand_reloadskilldb( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); skill_reload(); clif_displaymessage(fd, msg_table[99]); // Skill database reloaded. @@ -5486,6 +5597,7 @@ int atcommand_reloadscript( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); #ifndef TXT_ONLY atcommand_broadcast( fd, sd, "@broadcast", "eAthena SQL Server is Rehashing..." ); atcommand_broadcast( fd, sd, "@broadcast", "You will feel a bit of lag at this point !" ); @@ -5512,6 +5624,7 @@ int atcommand_reloadgmdb( // by [Yor] const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); chrif_reloadGMdb(); clif_displaymessage(fd, msg_table[101]); // Login-server asked to reload GM accounts and their level. @@ -5532,6 +5645,7 @@ int atcommand_mapinfo( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; struct npc_data *nd = NULL; struct chat_data *cd = NULL; @@ -5669,6 +5783,7 @@ int atcommand_mount_peco( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (sd->disguise > 0) { // temporary prevention of crash caused by peco + disguise, will look into a better solution [Valaris] clif_displaymessage(fd, msg_table[212]); // Cannot mount a Peco while in disguise. return -1; @@ -5714,6 +5829,7 @@ int atcommand_char_mount_peco( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; @@ -5774,6 +5890,7 @@ int atcommand_guildspy( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char guild_name[100]; char output[200]; struct guild *g; @@ -5813,6 +5930,7 @@ int atcommand_partyspy( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char party_name[100]; char output[200]; struct party *p; @@ -5852,6 +5970,7 @@ int atcommand_repairall( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int count, i; count = 0; @@ -5880,6 +5999,7 @@ int atcommand_nuke( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; @@ -5914,6 +6034,7 @@ int atcommand_nuke( int atcommand_enablenpc(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char NPCname[100]; memset(NPCname, '\0', sizeof(NPCname)); @@ -5941,6 +6062,7 @@ int atcommand_enablenpc(const int fd, struct map_session_data* sd, int atcommand_disablenpc(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char NPCname[100]; memset(NPCname, '\0', sizeof(NPCname)); @@ -6011,6 +6133,7 @@ char * txt_time(unsigned int duration) { int atcommand_servertime(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct TimerData * timer_data; struct TimerData * timer_data2; time_t time_server; // variable for number of seconds (used with time() function) @@ -6087,6 +6210,7 @@ int atcommand_servertime(const int fd, struct map_session_data* sd, int atcommand_chardelitem(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; char item_name[100]; @@ -6155,6 +6279,7 @@ int atcommand_jail( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; int x, y; @@ -6207,6 +6332,7 @@ int atcommand_unjail( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; @@ -6250,6 +6376,7 @@ int atcommand_disguise( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int mob_id = 0; if (!message || !*message) { @@ -6288,6 +6415,7 @@ int atcommand_undisguise( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if (sd->disguise) { clif_clearchar(&sd->bl, 9); sd->disguise = 0; @@ -6309,6 +6437,7 @@ int atcommand_broadcast( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; memset(output, '\0', sizeof(output)); @@ -6332,6 +6461,7 @@ int atcommand_localbroadcast( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; memset(output, '\0', sizeof(output)); @@ -6356,6 +6486,7 @@ int atcommand_chardisguise( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int mob_id; char character[100]; char mob_name[100]; @@ -6410,6 +6541,7 @@ int atcommand_charundisguise( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; struct map_session_data* pl_sd; @@ -6451,6 +6583,7 @@ int atcommand_email( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char actual_email[100]; char new_email[100]; @@ -6490,6 +6623,7 @@ int atcommand_effect( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; int type = 0, flag = 0, i; @@ -6522,6 +6656,7 @@ atcommand_character_item_list( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; struct item_data *item_data, *item_temp; int i, j, equip, count, counter, counter2; @@ -6635,6 +6770,7 @@ atcommand_character_storage_list( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct storage *stor; struct map_session_data *pl_sd; struct item_data *item_data, *item_temp; @@ -6719,6 +6855,7 @@ atcommand_character_cart_list( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd; struct item_data *item_data, *item_temp; int i, j, count, counter, counter2; @@ -6798,6 +6935,7 @@ atcommand_killer( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); sd->special_state.killer = !sd->special_state.killer; if(sd->special_state.killer) @@ -6818,6 +6956,7 @@ atcommand_killable( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); sd->special_state.killable = !sd->special_state.killable; if(sd->special_state.killable) @@ -6838,6 +6977,7 @@ atcommand_charkillable( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; if (!message || !*message) @@ -6867,6 +7007,7 @@ atcommand_skillon( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); map[sd->bl.m].flag.noskill = 0; clif_displaymessage(fd, msg_table[244]); return 0; @@ -6882,6 +7023,7 @@ atcommand_skilloff( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); map[sd->bl.m].flag.noskill = 1; clif_displaymessage(fd, msg_table[243]); return 0; @@ -6897,6 +7039,7 @@ int atcommand_npcmove(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char character[100]; int x = 0, y = 0; struct npc_data *nd = 0; @@ -6933,6 +7076,7 @@ int atcommand_addwarp(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char w1[64], w3[64], w4[64]; char map[30], output[200]; int x,y,ret; @@ -6966,6 +7110,7 @@ int atcommand_follow(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; if (!message || !*message) @@ -6988,6 +7133,7 @@ int atcommand_chareffect(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; char target[255]; int type = 0; @@ -7015,6 +7161,7 @@ int atcommand_dropall(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i; for (i = 0; i < MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount) { @@ -7036,6 +7183,7 @@ int atcommand_chardropall(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i; struct map_session_data *pl_sd = NULL; @@ -7068,6 +7216,7 @@ int atcommand_storeall(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i; if (storage_storageopen(sd) == 1) { clif_displaymessage(fd, "run this command again.."); @@ -7095,6 +7244,7 @@ int atcommand_charstoreall(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i; struct map_session_data *pl_sd = NULL; @@ -7135,6 +7285,7 @@ int atcommand_skillid(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int skillen = 0, idx = 0; if (!message || !*message) return -1; @@ -7161,6 +7312,7 @@ int atcommand_useskill(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; int skillnum; int skilllv; @@ -7197,6 +7349,7 @@ int atcommand_skilltree(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; int skillnum, skillidx = -1; int meets = 1, j, c=0, s=0; @@ -7278,6 +7431,7 @@ atcommand_rain( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int effno = 0; effno = 161; nullpo_retr(-1, sd); @@ -7297,6 +7451,7 @@ atcommand_snow( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int effno = 0; effno = 162; nullpo_retr(-1, sd); @@ -7317,6 +7472,7 @@ atcommand_sakura( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int effno = 0; effno = 163; nullpo_retr(-1, sd); @@ -7337,6 +7493,7 @@ atcommand_fog( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int effno = 0; effno = 233; nullpo_retr(-1, sd); @@ -7358,6 +7515,7 @@ atcommand_leaves( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int effno = 0; effno = 333; nullpo_retr(-1, sd); @@ -7377,6 +7535,7 @@ atcommand_summon( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char name[100]; int mob_id = 0; int x = 0; @@ -7428,6 +7587,7 @@ atcommand_adjcmdlvl( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int i, newlev; char cmd[100]; @@ -7461,6 +7621,7 @@ atcommand_adjgmlvl( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int newlev; char user[100]; struct map_session_data *pl_sd; @@ -7493,6 +7654,7 @@ atcommand_trade( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; if (!message || !*message) @@ -7514,6 +7676,7 @@ atcommand_setbattleflag( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char flag[128], value[128]; if (!message || !*message || sscanf(message, "%s %s", flag, value) != 2) { @@ -7538,6 +7701,7 @@ int atcommand_unmute( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; if (!message || !*message) return -1; @@ -7564,6 +7728,7 @@ atcommand_uptime( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char output[200]; long seconds = 0, day = 24*60*60, hour = 60*60, minute = 60, days = 0, hours = 0, minutes = 0; @@ -7592,6 +7757,7 @@ atcommand_changesex( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); chrif_changesex(sd->status.account_id, ((sd->status.sex+1)%2)); return 0; } @@ -7604,6 +7770,7 @@ int atcommand_mute( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; char character[100]; int manner; @@ -7634,7 +7801,7 @@ int atcommand_refresh( const int fd, struct map_session_data* sd, const char* command, const char* message) { - + nullpo_retr(-1, sd); nullpo_retr(-1, sd); pc_setpos(sd, sd->mapname, sd->bl.x, sd->bl.y, 3); return 0; @@ -7649,6 +7816,7 @@ int atcommand_petid(const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char searchtext[100]; char temp0[100]; char temp1[100]; @@ -7723,6 +7891,7 @@ atcommand_gmotd( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char buf[256]; FILE *fp; if( (fp = fopen(motd_txt, "r"))!=NULL){ @@ -7745,6 +7914,7 @@ int atcommand_misceffect( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); int effect = 0; nullpo_retr(-1, sd); if (!message || !*message) @@ -7765,7 +7935,8 @@ int atcommand_misceffect( int atcommand_listmail( const int fd, struct map_session_data* sd, const char* command, const char* message) -{ +{ + nullpo_retr(-1, sd); if(!battle_config.mail_system) return 0; @@ -7784,6 +7955,7 @@ int atcommand_readmail( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); if(!battle_config.mail_system) return 0; @@ -7806,6 +7978,7 @@ int atcommand_sendmail( const int fd, struct map_session_data* sd, const char* command, const char* message) { + nullpo_retr(-1, sd); char name[24],text[80]; if(!battle_config.mail_system) diff --git a/src/map/map.c b/src/map/map.c index fe949013c..9f0ac1dde 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2224,17 +2224,6 @@ void map_versionscreen(int flag) { if (flag) exit(1); } -void map_displaybug(int flag) { - FILE *fp; - char line[1024]; - if ((fp=fopen("mapbug.txt","r"))!=NULL) { - while(fgets(line,1023,fp)) printf(line); - fclose(fp); - } //don't show anything if file doesnt exist - // this is only here when develing - if (flag) exit(1); -} - /*====================================================== * Map-Server Init and Command-line Arguments [Valaris] *------------------------------------------------------ @@ -2255,7 +2244,6 @@ int do_init(int argc, char *argv[]) { unsigned char *SCRIPT_CONF_NAME = "conf/script_athena.conf"; unsigned char *MSG_CONF_NAME = "conf/msg_athena.conf"; unsigned char *GRF_PATH_FILENAME = "conf/grf-files.txt"; - map_displaybug(0); srand(gettick()); for (i = 1; i < argc ; i++) { -- cgit v1.2.3-70-g09d2 From e4e674473518ab7e513639f19963174b7697dade Mon Sep 17 00:00:00 2001 From: amber Date: Sun, 5 Dec 2004 16:57:37 +0000 Subject: Updates git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@468 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 + Makefile | 2 +- src/login_sql/login.c | 4 +- src/map/atcommand.c | 322 ++++++++++++++++++++++---------------------------- src/map/atcommand.h | 3 - 5 files changed, 149 insertions(+), 184 deletions(-) (limited to 'src/map') diff --git a/Changelog.txt b/Changelog.txt index 4d5283f39..b05aa2edd 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 12/5 + * removed stubbed out unfinished atcommands as per Cameri [MouseJstr] + * Fixed nullpo's for gcc 2.95 [MouseJstr] * Fixed bug in which login-txt was crashing in do_final() due to some free's [MC Cameri] * Added nullpo's to all atcommand's functions, phew... [MC Cameri] Note: I point out that MouseJstr has added some @commands that start with char which diff --git a/Makefile b/Makefile index 9317bdcf8..dc27eed45 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ OS_TYPE = -DCYGWIN CFLAGS = $(OPT) -Wall -DFD_SETSIZE=4096 -I../common $(PACKETDEF) $(OS_TYPE) else OS_TYPE = -CFLAGS = $(OPT) -Wall -I../common $(PACKETDEF) $(OS_TYPE) +CFLAGS = -DTWILIGHT $(OPT) -Wall -I../common $(PACKETDEF) $(OS_TYPE) endif MYSQLFLAG_INCLUDE_DEFAULT = /usr/local/include/mysql diff --git a/src/login_sql/login.c b/src/login_sql/login.c index 6e967ec72..3a261bdf0 100644 --- a/src/login_sql/login.c +++ b/src/login_sql/login.c @@ -576,7 +576,9 @@ int mmo_auth( struct mmo_account* account , int fd){ if ( is_user_online(atol(sql_row[0])) ) { printf("User [%s] is already online - Rejected.\n",sql_row[1]); - return 3; // Rejected +#ifndef TWILIGHT + return 3; // Rejected +#endif } account->account_id = atoi(sql_row[0]); diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 5edbd488d..7c54336f2 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -188,9 +188,6 @@ ATCOMMAND_FUNC(npcmove); // by MouseJstr ATCOMMAND_FUNC(killable); // by MouseJstr ATCOMMAND_FUNC(charkillable); // by MouseJstr ATCOMMAND_FUNC(chareffect); // by MouseJstr -ATCOMMAND_FUNC(chardye); // by MouseJstr -ATCOMMAND_FUNC(charhairstyle); // by MouseJstr -ATCOMMAND_FUNC(charhaircolor); // by MouseJstr ATCOMMAND_FUNC(dropall); // by MouseJstr ATCOMMAND_FUNC(chardropall); // by MouseJstr ATCOMMAND_FUNC(storeall); // by MouseJstr @@ -431,11 +428,6 @@ static AtCommandInfo atcommand_info[] = { { AtCommand_Killable, "@killable", 40, atcommand_killable }, // by MouseJstr { AtCommand_CharKillable, "@charkillable", 40, atcommand_charkillable }, // by MouseJstr { AtCommand_Chareffect, "@chareffect", 40, atcommand_chareffect }, // MouseJstr -/* - { AtCommand_Chardye, "@chardye", 40, atcommand_chardye }, // MouseJstr - { AtCommand_Charhairstyle, "@charhairstyle", 40, atcommand_charhairstyle }, // MouseJstr - { AtCommand_Charhaircolor, "@charhaircolor", 40, atcommand_charhaircolor }, // MouseJstr -*/ { AtCommand_Dropall, "@dropall", 40, atcommand_dropall }, // MouseJstr { AtCommand_Chardropall, "@chardropall", 40, atcommand_chardropall }, // MouseJstr { AtCommand_Storeall, "@storeall", 40, atcommand_storeall }, // MouseJstr @@ -951,14 +943,14 @@ int atcommand_rurap( const int fd, struct map_session_data* sd, const char* command, const char* message) { - - nullpo_retr(-1, sd); char map_name[100]; char character[100]; int x = 0, y = 0; struct map_session_data *pl_sd; int m; + nullpo_retr(-1, sd); + memset(map_name, '\0', sizeof(map_name)); memset(character, '\0', sizeof(character)); @@ -1018,11 +1010,12 @@ int atcommand_rura( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char map_name[100]; int x = 0, y = 0; int m; + nullpo_retr(-1, sd); + memset(map_name, '\0', sizeof(map_name)); if (!message || !*message || sscanf(message, "%99s %d %d", map_name, &x, &y) < 1) { @@ -1070,7 +1063,6 @@ int atcommand_where( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd = NULL; @@ -1106,7 +1098,6 @@ int atcommand_jumpto( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd = NULL; @@ -1152,10 +1143,11 @@ int atcommand_jump( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; int x = 0, y = 0; + nullpo_retr(-1, sd); + memset(output, '\0', sizeof(output)); sscanf(message, "%d %d", &x, &y); @@ -1192,7 +1184,6 @@ int atcommand_who( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; struct map_session_data *pl_sd; int i, j, count; @@ -1200,6 +1191,8 @@ int atcommand_who( char match_text[100]; char player_name[24]; + nullpo_retr(-1, sd); + memset(output, '\0', sizeof(output)); memset(match_text, '\0', sizeof(match_text)); memset(player_name, '\0', sizeof(player_name)); @@ -1250,7 +1243,6 @@ int atcommand_who2( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; struct map_session_data *pl_sd; int i, j, count; @@ -1258,6 +1250,8 @@ int atcommand_who2( char match_text[100]; char player_name[24]; + nullpo_retr(-1, sd); + memset(output, '\0', sizeof(output)); memset(match_text, '\0', sizeof(match_text)); memset(player_name, '\0', sizeof(player_name)); @@ -1308,7 +1302,6 @@ int atcommand_who3( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char temp0[100]; char temp1[100]; char output[200]; @@ -1320,6 +1313,8 @@ int atcommand_who3( struct guild *g; struct party *p; + nullpo_retr(-1, sd); + memset(temp0, '\0', sizeof(temp0)); memset(temp1, '\0', sizeof(temp1)); memset(output, '\0', sizeof(output)); @@ -1440,7 +1435,6 @@ int atcommand_whomap2( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; struct map_session_data *pl_sd; int i, count; @@ -1448,6 +1442,8 @@ int atcommand_whomap2( int map_id = 0; char map_name[100]; + nullpo_retr(-1, sd); + memset(output, '\0', sizeof(output)); memset(map_name, '\0', sizeof(map_name)); @@ -1499,7 +1495,6 @@ int atcommand_whomap3( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char temp0[100]; char temp1[100]; char output[200]; @@ -1511,6 +1506,8 @@ int atcommand_whomap3( struct guild *g; struct party *p; + nullpo_retr(-1, sd); + memset(temp0, '\0', sizeof(temp0)); memset(temp1, '\0', sizeof(temp1)); memset(output, '\0', sizeof(output)); @@ -1574,7 +1571,6 @@ int atcommand_whogm( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char temp0[100]; char temp1[100]; char output[200]; @@ -1586,6 +1582,8 @@ int atcommand_whogm( struct guild *g; struct party *p; + nullpo_retr(-1, sd); + memset(temp0, '\0', sizeof(temp0)); memset(temp1, '\0', sizeof(temp1)); memset(output, '\0', sizeof(output)); @@ -1647,7 +1645,6 @@ int atcommand_whozeny( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; struct map_session_data *pl_sd; int i, j, count,c; @@ -1656,6 +1653,8 @@ int atcommand_whozeny( int zeny[clif_countusers()]; int counted[clif_countusers()]; + nullpo_retr(-1, sd); + memset(output, '\0', sizeof(output)); memset(match_text, '\0', sizeof(match_text)); memset(player_name, '\0', sizeof(player_name)); @@ -1715,10 +1714,11 @@ int atcommand_happyhappyjoyjoy( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i,e; + nullpo_retr(-1, sd); + for (i = 0; i < fd_max; i++) { if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth) { e=rand()%40; @@ -1740,6 +1740,7 @@ int atcommand_save( const char* command, const char* message) { nullpo_retr(-1, sd); + pc_setsavepoint(sd, sd->mapname, sd->bl.x, sd->bl.y); if (sd->status.pet_id > 0 && sd->pd) intif_save_petdata(sd->status.account_id, &sd->pet); @@ -1759,9 +1760,10 @@ int atcommand_load( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int m; + nullpo_retr(-1, sd); + m = map_mapname2mapid(sd->status.save_point.map); if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) { clif_displaymessage(fd, "You are not authorised to warp you to your save map."); @@ -1786,10 +1788,11 @@ int atcommand_speed( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; int speed; + nullpo_retr(-1, sd); + memset(output, '\0', sizeof(output)); if (!message || !*message) { @@ -1851,8 +1854,8 @@ int atcommand_option( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int param1 = 0, param2 = 0, param3 = 0; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %d %d", ¶m1, ¶m2, ¶m3) < 1 || param1 < 0 || param2 < 0 || param3 < 0) { clif_displaymessage(fd, "Please, enter at least a option (usage: @option )."); @@ -1934,8 +1937,8 @@ int atcommand_jobchange( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int job = 0, upper = -1; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %d", &job, &upper) < 1) { clif_displaymessage(fd, "Please, enter job ID (usage: @job/@jobchange )."); @@ -2013,9 +2016,9 @@ int atcommand_kill( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -2074,8 +2077,8 @@ int atcommand_kami( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -2098,8 +2101,8 @@ int atcommand_heal( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int hp = 0, sp = 0; // [Valaris] thanks to fov + nullpo_retr(-1, sd); sscanf(message, "%d %d", &hp, &sp); @@ -2146,12 +2149,12 @@ int atcommand_item( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char item_name[100]; int number = 0, item_id, flag; struct item item_tmp; struct item_data *item_data; int get_count, i, pet_id; + nullpo_retr(-1, sd); memset(item_name, '\0', sizeof(item_name)); @@ -2210,7 +2213,6 @@ int atcommand_item2( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct item item_tmp; struct item_data *item_data; char item_name[100]; @@ -2219,6 +2221,7 @@ int atcommand_item2( int c1 = 0, c2 = 0, c3 = 0, c4 = 0; int flag; int loop, get_count, i; + nullpo_retr(-1, sd); memset(item_name, '\0', sizeof(item_name)); @@ -2285,8 +2288,8 @@ int atcommand_itemreset( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i; + nullpo_retr(-1, sd); for (i = 0; i < MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount && sd->status.inventory[i].equip == 0) @@ -2319,8 +2322,8 @@ int atcommand_baselevelup( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int level, i; + nullpo_retr(-1, sd); if (!message || !*message || (level = atoi(message)) == 0) { clif_displaymessage(fd, "Please, enter a level adjustement (usage: @lvup/@blevel/@baselvlup )."); @@ -2376,8 +2379,8 @@ int atcommand_joblevelup( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int up_level = 50, level; + nullpo_retr(-1, sd); if (!message || !*message || (level = atoi(message)) == 0) { clif_displaymessage(fd, "Please, enter a level adjustement (usage: @joblvup/@jlevel/@joblvlup )."); @@ -2435,10 +2438,10 @@ int atcommand_help( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char buf[2048], w1[2048], w2[2048]; int i, gm_level; FILE* fp; + nullpo_retr(-1, sd); memset(buf, '\0', sizeof(buf)); @@ -2476,8 +2479,8 @@ int atcommand_gm( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char password[100]; + nullpo_retr(-1, sd); memset(password, '\0', sizeof(password)); @@ -2503,9 +2506,9 @@ int atcommand_pvpoff( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); if (battle_config.pk_mode) { //disable command if server is in PK mode [Valaris] clif_displaymessage(fd, msg_table[52]); // This option cannot be used in PK Mode. @@ -2543,9 +2546,9 @@ int atcommand_pvpon( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); if (battle_config.pk_mode) { //disable command if server is in PK mode [Valaris] clif_displaymessage(fd, msg_table[52]); // This option cannot be used in PK Mode. @@ -2625,9 +2628,9 @@ int atcommand_model( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int hair_style = 0, hair_color = 0, cloth_color = 0; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -2666,9 +2669,9 @@ int atcommand_model( */ int atcommand_dye(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int cloth_color = 0; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -2694,27 +2697,15 @@ int atcommand_dye(const int fd, struct map_session_data* sd, const char* command return 0; } -/*========================================== - * @chardye by [MouseJstr] - *------------------------------------------ - */ -int -atcommand_chardye(const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - nullpo_retr(-1, sd); - return 0; -} - /*========================================== * @hairstyle && @hstyle *------------------------------------------ */ int atcommand_hair_style(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int hair_style = 0; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -2758,9 +2749,9 @@ atcommand_charhairstyle(const int fd, struct map_session_data* sd, */ int atcommand_hair_color(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int hair_color = 0; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -2786,18 +2777,6 @@ int atcommand_hair_color(const int fd, struct map_session_data* sd, const char* return 0; } -/*========================================== - * @charhaircolor by [MouseJstr] - *------------------------------------------ - */ -int -atcommand_charhaircolor(const int fd, struct map_session_data* sd, - const char* command, const char* message) -{ - nullpo_retr(-1, sd); - return 0; -} - /*========================================== * @go [city_number/city_name]: improved by [yor] to add city names and help *------------------------------------------ @@ -2806,14 +2785,12 @@ int atcommand_go( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i; int town; char map_name[100]; char output[200]; int m; - const struct { char map[16]; int x, y; } data[] = { { "prontera.gat", 156, 191 }, // 0=Prontera { "morocc.gat", 156, 93 }, // 1=Morroc @@ -2834,6 +2811,8 @@ int atcommand_go( { "sec_pri.gat", 23, 61 }, // 16=Prison }; + nullpo_retr(-1, sd); + if(map[sd->bl.m].flag.nogo) { clif_displaymessage(sd->fd,"You can not use @go on this map."); return 0; @@ -2967,7 +2946,6 @@ int atcommand_monster( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char name[100]; char monster[100]; char output[200]; @@ -2977,6 +2955,7 @@ int atcommand_monster( int count; int i, j, k; int mx, my, range; + nullpo_retr(-1, sd); memset(name, '\0', sizeof(name)); memset(monster, '\0', sizeof(monster)); @@ -3058,7 +3037,6 @@ int atcommand_monster( int atcommand_spawn( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char name[100]; char monster[100]; char output[200]; @@ -3069,6 +3047,7 @@ int atcommand_spawn( int i, j, k; int mx, my, range; + nullpo_retr(-1, sd); memset(name, '\0', sizeof(name)); memset(monster, '\0', sizeof(monster)); memset(output, '\0', sizeof(output)); @@ -3146,7 +3125,6 @@ int atcommand_spawn( int atcommand_monstersmall( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char name[100] = ""; char monster[100] = ""; int mob_id = 0; @@ -3224,7 +3202,6 @@ int atcommand_monstersmall( int atcommand_monsterbig( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char name[100] = ""; char monster[100] = ""; int mob_id = 0; @@ -3307,10 +3284,11 @@ void atcommand_killmonster_sub( const int fd, struct map_session_data* sd, const char* message, const int drop) { - if (!sd) return; int map_id; char map_name[100]; + if (!sd) return; + memset(map_name, '\0', sizeof(map_name)); if (!message || !*message || sscanf(message, "%99s", map_name) < 1) @@ -3365,10 +3343,10 @@ int atcommand_refine( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i, position = 0, refine = 0, current_position, final_refine; int count; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -3428,13 +3406,13 @@ int atcommand_produce( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char item_name[100]; int item_id, attribute = 0, star = 0; int flag = 0; struct item_data *item_data; struct item tmp_item; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); memset(item_name, '\0', sizeof(item_name)); @@ -3488,10 +3466,11 @@ int atcommand_produce( *------------------------------------------ */ void atcommand_memo_sub(struct map_session_data* sd) { - if (!sd) return; int i; char output[200]; + if (!sd) return; + memset(output, '\0', sizeof(output)); clif_displaymessage(sd->fd, "Your actual memo positions are (except respawn point):"); @@ -3514,9 +3493,9 @@ int atcommand_memo( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int position = 0; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -3558,9 +3537,9 @@ int atcommand_gat( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; int y; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -3586,8 +3565,8 @@ int atcommand_packet( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int x = 0, y = 0; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %d", &x, &y) < 2) { clif_displaymessage(fd, "Please, enter a status type/flag (usage: @packet )."); @@ -3607,7 +3586,6 @@ int atcommand_statuspoint( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int point, new_status_point; if (!message || !*message || (point = atoi(message)) == 0) { @@ -3644,8 +3622,8 @@ int atcommand_skillpoint( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int point, new_skill_point; + nullpo_retr(-1, sd); if (!message || !*message || (point = atoi(message)) == 0) { clif_displaymessage(fd, "Please, enter a number (usage: @skpoint )."); @@ -3681,8 +3659,8 @@ int atcommand_zeny( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int zeny, new_zeny; + nullpo_retr(-1, sd); if (!message || !*message || (zeny = atoi(message)) == 0) { clif_displaymessage(fd, "Please, enter an amount (usage: @zeny )."); @@ -3718,7 +3696,6 @@ int atcommand_param( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i, index, value = 0, new_value; const char* param[] = { "@str", "@agi", "@vit", "@int", "@dex", "@luk", NULL }; short* status[] = { @@ -3726,6 +3703,7 @@ int atcommand_param( &sd->status.int_, &sd->status.dex, &sd->status.luk }; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -3780,12 +3758,12 @@ int atcommand_stat_all( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int index, count, value = 0, new_value; short* status[] = { &sd->status.str, &sd->status.agi, &sd->status.vit, &sd->status.int_, &sd->status.dex, &sd->status.luk }; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) value = battle_config.max_parameter; @@ -3829,10 +3807,10 @@ int atcommand_guildlevelup( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int level = 0; short added_level; struct guild *guild_info; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d", &level) < 1 || level == 0) { clif_displaymessage(fd, "Please, enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>)."); @@ -3873,9 +3851,9 @@ int atcommand_makeegg( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct item_data *item_data; int id, pet_id; + nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Please, enter a monter/egg name/id (usage: @makeegg )."); @@ -3932,9 +3910,9 @@ int atcommand_petfriendly( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int friendly; int t; + nullpo_retr(-1, sd); if (!message || !*message || (friendly = atoi(message)) < 0) { clif_displaymessage(fd, "Please, enter a valid value (usage: @petfriendly <0-1000>)."); @@ -3981,8 +3959,8 @@ int atcommand_pethungry( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int hungry; + nullpo_retr(-1, sd); if (!message || !*message || (hungry = atoi(message)) < 0) { clif_displaymessage(fd, "Please, enter a valid number (usage: @pethungry <0-100>)."); @@ -4047,7 +4025,6 @@ atcommand_recall( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd = NULL; @@ -4098,9 +4075,9 @@ int atcommand_revive( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4139,8 +4116,8 @@ int atcommand_char_change_sex( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4173,8 +4150,8 @@ int atcommand_char_block( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4218,10 +4195,10 @@ int atcommand_char_ban( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char modif[100], character[100]; char * modif_p; int year, month, day, hour, minute, second, value; + nullpo_retr(-1, sd); memset(modif, '\0', sizeof(modif)); memset(character, '\0', sizeof(character)); @@ -4296,8 +4273,8 @@ int atcommand_char_unblock( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4330,8 +4307,8 @@ int atcommand_char_unban( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4364,9 +4341,9 @@ int atcommand_night( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); if (night_flag != 1) { night_flag = 1; // 0=day, 1=night [Yor] @@ -4400,9 +4377,9 @@ int atcommand_day( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); if (night_flag != 0) { night_flag = 0; // 0=day, 1=night [Yor] @@ -4429,9 +4406,9 @@ int atcommand_doom( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); clif_specialeffect(&sd->bl,450,2); for(i = 0; i < fd_max; i++) { if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth && i != fd && @@ -4453,9 +4430,9 @@ int atcommand_doommap( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); clif_specialeffect(&sd->bl,450,3); for (i = 0; i < fd_max; i++) { if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth && i != fd && sd->bl.m == pl_sd->bl.m && @@ -4498,8 +4475,8 @@ int atcommand_raise( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i; + nullpo_retr(-1, sd); for (i = 0; i < fd_max; i++) { if (session[i]) @@ -4518,10 +4495,11 @@ int atcommand_raisemap( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); + for (i = 0; i < fd_max; i++) { if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth && sd->bl.m == pl_sd->bl.m) atcommand_raise_sub(pl_sd); @@ -4539,10 +4517,10 @@ int atcommand_character_baselevel( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int level = 0, i; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4611,12 +4589,12 @@ int atcommand_character_joblevel( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int max_level = 50, level = 0; //転生や養子の場合の元の職業を算出する struct pc_base_job pl_s_class; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4688,9 +4666,9 @@ int atcommand_kick( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4722,9 +4700,9 @@ int atcommand_kickall( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); for (i = 0; i < fd_max; i++) { if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth && @@ -4764,8 +4742,8 @@ int atcommand_questskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int skill_id; + nullpo_retr(-1, sd); if (!message || !*message || (skill_id = atoi(message)) < 0) { clif_displaymessage(fd, "Please, enter a quest skill number (usage: @questskill <#:0+>)."); @@ -4801,10 +4779,10 @@ int atcommand_charquestskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; int skill_id = 0; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4847,8 +4825,8 @@ int atcommand_lostskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int skill_id; + nullpo_retr(-1, sd); if (!message || !*message || (skill_id = atoi(message)) < 0) { clif_displaymessage(fd, "Please, enter a quest skill number (usage: @lostskill <#:0+>)."); @@ -4886,10 +4864,10 @@ int atcommand_charlostskill( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; int skill_id = 0; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -4934,8 +4912,8 @@ int atcommand_spiritball( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int number; + nullpo_retr(-1, sd); if (!message || !*message || (number = atoi(message)) < 0) { clif_displaymessage(fd, "Please, enter a spirit ball number (usage: @spiritball )."); @@ -4975,8 +4953,8 @@ int atcommand_party( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char party[100]; + nullpo_retr(-1, sd); memset(party, '\0', sizeof(party)); @@ -4998,9 +4976,9 @@ int atcommand_guild( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char guild[100]; int prev; + nullpo_retr(-1, sd); memset(guild, '\0', sizeof(guild)); @@ -5067,9 +5045,9 @@ int atcommand_mapexit( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; + nullpo_retr(-1, sd); for (i = 0; i < fd_max; i++) { if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth) { @@ -5092,11 +5070,11 @@ int atcommand_idsearch( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char item_name[100]; char output[200]; int i, match; struct item_data *item; + nullpo_retr(-1, sd); memset(item_name, '\0', sizeof(item_name)); memset(output, '\0', sizeof(output)); @@ -5130,10 +5108,10 @@ int atcommand_charskreset( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); memset(output, '\0', sizeof(output)); @@ -5168,10 +5146,10 @@ int atcommand_charstreset( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; char output[200]; struct map_session_data *pl_sd; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); memset(output, '\0', sizeof(output)); @@ -5206,11 +5184,11 @@ int atcommand_charmodel( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int hair_style = 0, hair_color = 0, cloth_color = 0; struct map_session_data *pl_sd; char character[100]; char output[200]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); memset(output, '\0', sizeof(output)); @@ -5258,11 +5236,11 @@ int atcommand_charskpoint( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int new_skill_point; int point = 0; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -5304,11 +5282,11 @@ int atcommand_charstpoint( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int new_status_point; int point = 0; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -5350,10 +5328,10 @@ int atcommand_charzeny( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; int zeny = 0, new_zeny; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -5395,11 +5373,11 @@ int atcommand_recallall( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; int count; char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -5436,13 +5414,13 @@ int atcommand_guildrecall( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int i; char guild_name[100]; char output[200]; struct guild *g; int count; + nullpo_retr(-1, sd); memset(guild_name, '\0', sizeof(guild_name)); memset(output, '\0', sizeof(output)); @@ -5492,13 +5470,13 @@ int atcommand_partyrecall( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i; struct map_session_data *pl_sd; char party_name[100]; char output[200]; struct party *p; int count; + nullpo_retr(-1, sd); memset(party_name, '\0', sizeof(party_name)); memset(output, '\0', sizeof(output)); @@ -5645,13 +5623,13 @@ int atcommand_mapinfo( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; struct npc_data *nd = NULL; struct chat_data *cd = NULL; char output[200], map_name[100]; char direction[12]; int m_id, i, chat_num, list = 0; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); memset(map_name, '\0', sizeof(map_name)); @@ -5829,9 +5807,9 @@ int atcommand_char_mount_peco( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -5890,10 +5868,10 @@ int atcommand_guildspy( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char guild_name[100]; char output[200]; struct guild *g; + nullpo_retr(-1, sd); memset(guild_name, '\0', sizeof(guild_name)); memset(output, '\0', sizeof(output)); @@ -5930,10 +5908,10 @@ int atcommand_partyspy( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char party_name[100]; char output[200]; struct party *p; + nullpo_retr(-1, sd); memset(party_name, '\0', sizeof(party_name)); memset(output, '\0', sizeof(output)); @@ -5970,8 +5948,8 @@ int atcommand_repairall( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int count, i; + nullpo_retr(-1, sd); count = 0; for (i = 0; i < MAX_INVENTORY; i++) { @@ -5999,9 +5977,9 @@ int atcommand_nuke( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -6034,8 +6012,8 @@ int atcommand_nuke( int atcommand_enablenpc(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char NPCname[100]; + nullpo_retr(-1, sd); memset(NPCname, '\0', sizeof(NPCname)); @@ -6062,8 +6040,8 @@ int atcommand_enablenpc(const int fd, struct map_session_data* sd, int atcommand_disablenpc(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char NPCname[100]; + nullpo_retr(-1, sd); memset(NPCname, '\0', sizeof(NPCname)); @@ -6133,12 +6111,12 @@ char * txt_time(unsigned int duration) { int atcommand_servertime(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct TimerData * timer_data; struct TimerData * timer_data2; time_t time_server; // variable for number of seconds (used with time() function) struct tm *datetime; // variable for time in structure ->tm_mday, ->tm_sec, ... char temp[256]; + nullpo_retr(-1, sd); memset(temp, '\0', sizeof(temp)); @@ -6210,13 +6188,13 @@ int atcommand_servertime(const int fd, struct map_session_data* sd, int atcommand_chardelitem(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; char character[100]; char item_name[100]; int i, number = 0, item_id, item_position, count; char output[200]; struct item_data *item_data; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); memset(item_name, '\0', sizeof(item_name)); @@ -6279,10 +6257,10 @@ int atcommand_jail( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; int x, y; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -6332,7 +6310,6 @@ int atcommand_unjail( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data *pl_sd; @@ -6376,8 +6353,8 @@ int atcommand_disguise( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int mob_id = 0; + nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Please, enter a Monster/NPC name/id (usage: @disguise )."); @@ -6437,8 +6414,8 @@ int atcommand_broadcast( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -6461,8 +6438,8 @@ int atcommand_localbroadcast( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; + nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); @@ -6486,11 +6463,11 @@ int atcommand_chardisguise( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int mob_id; char character[100]; char mob_name[100]; struct map_session_data* pl_sd; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); memset(mob_name, '\0', sizeof(mob_name)); @@ -6541,9 +6518,9 @@ int atcommand_charundisguise( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; struct map_session_data* pl_sd; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); @@ -6583,9 +6560,9 @@ int atcommand_email( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char actual_email[100]; char new_email[100]; + nullpo_retr(-1, sd); memset(actual_email, '\0', sizeof(actual_email)); memset(new_email, '\0', sizeof(new_email)); @@ -6623,9 +6600,9 @@ int atcommand_effect( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; int type = 0, flag = 0, i; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %d", &type,&flag) < 2) { clif_displaymessage(fd, "Please, enter at least a option (usage: @effect )."); @@ -6656,11 +6633,11 @@ atcommand_character_item_list( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; struct item_data *item_data, *item_temp; int i, j, equip, count, counter, counter2; char character[100], output[200], equipstr[100], outputtmp[200]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); memset(output, '\0', sizeof(output)); @@ -6770,12 +6747,12 @@ atcommand_character_storage_list( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct storage *stor; struct map_session_data *pl_sd; struct item_data *item_data, *item_temp; int i, j, count, counter, counter2; char character[100], output[200], outputtmp[200]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); memset(output, '\0', sizeof(output)); @@ -6855,11 +6832,11 @@ atcommand_character_cart_list( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd; struct item_data *item_data, *item_temp; int i, j, count, counter, counter2; char character[100], output[200], outputtmp[200]; + nullpo_retr(-1, sd); memset(character, '\0', sizeof(character)); memset(output, '\0', sizeof(output)); @@ -6977,8 +6954,8 @@ atcommand_charkillable( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7039,12 +7016,11 @@ int atcommand_npcmove(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char character[100]; int x = 0, y = 0; struct npc_data *nd = 0; + nullpo_retr(-1, sd); - nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7076,10 +7052,10 @@ int atcommand_addwarp(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char w1[64], w3[64], w4[64]; char map[30], output[200]; int x,y,ret; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7110,8 +7086,8 @@ int atcommand_follow(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7133,10 +7109,10 @@ int atcommand_chareffect(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; char target[255]; int type = 0; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %s", &type, target) != 2) { clif_displaymessage(fd, "usage: @chareffect ."); @@ -7161,8 +7137,8 @@ int atcommand_dropall(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i; + nullpo_retr(-1, sd); for (i = 0; i < MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount) { if(sd->status.inventory[i].equip != 0) @@ -7183,9 +7159,9 @@ int atcommand_chardropall(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i; struct map_session_data *pl_sd = NULL; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7216,8 +7192,8 @@ int atcommand_storeall(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i; + nullpo_retr(-1, sd); if (storage_storageopen(sd) == 1) { clif_displaymessage(fd, "run this command again.."); return 0; @@ -7244,9 +7220,9 @@ int atcommand_charstoreall(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i; struct map_session_data *pl_sd = NULL; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7285,8 +7261,8 @@ int atcommand_skillid(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int skillen = 0, idx = 0; + nullpo_retr(-1, sd); if (!message || !*message) return -1; skillen = strlen(message); @@ -7312,12 +7288,12 @@ int atcommand_useskill(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; int skillnum; int skilllv; int inf; char target[255]; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7349,7 +7325,6 @@ int atcommand_skilltree(const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; int skillnum, skillidx = -1; int meets = 1, j, c=0, s=0; @@ -7357,6 +7332,7 @@ atcommand_skilltree(const int fd, struct map_session_data* sd, char target[255], *tbl; char output[255]; struct skill_tree_entry *ent; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7431,10 +7407,9 @@ atcommand_rain( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int effno = 0; - effno = 161; nullpo_retr(-1, sd); + effno = 161; if (effno < 0 || map[sd->bl.m].flag.rain) return -1; @@ -7451,7 +7426,6 @@ atcommand_snow( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int effno = 0; effno = 162; nullpo_retr(-1, sd); @@ -7472,7 +7446,6 @@ atcommand_sakura( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int effno = 0; effno = 163; nullpo_retr(-1, sd); @@ -7493,7 +7466,6 @@ atcommand_fog( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int effno = 0; effno = 233; nullpo_retr(-1, sd); @@ -7515,7 +7487,6 @@ atcommand_leaves( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int effno = 0; effno = 333; nullpo_retr(-1, sd); @@ -7535,7 +7506,6 @@ atcommand_summon( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char name[100]; int mob_id = 0; int x = 0; @@ -7587,9 +7557,9 @@ atcommand_adjcmdlvl( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int i, newlev; char cmd[100]; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %s", &newlev, cmd) != 2) { clif_displaymessage(fd, "usage: @adjcmdlvl ."); @@ -7621,10 +7591,10 @@ atcommand_adjgmlvl( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); int newlev; char user[100]; struct map_session_data *pl_sd; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %[^\r\n]", &newlev, user) != 2) { clif_displaymessage(fd, "usage: @adjgmlvl ."); @@ -7654,8 +7624,8 @@ atcommand_trade( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7676,8 +7646,8 @@ atcommand_setbattleflag( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char flag[128], value[128]; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%s %s", flag, value) != 2) { clif_displaymessage(fd, "usage: @setbattleflag ."); @@ -7701,8 +7671,8 @@ int atcommand_unmute( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; + nullpo_retr(-1, sd); if (!message || !*message) return -1; @@ -7728,10 +7698,10 @@ atcommand_uptime( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); char output[200]; long seconds = 0, day = 24*60*60, hour = 60*60, minute = 60, days = 0, hours = 0, minutes = 0; + nullpo_retr(-1, sd); seconds = (gettick()-ticks)/CLOCKS_PER_SEC; days = seconds/day; @@ -7770,10 +7740,10 @@ int atcommand_mute( const int fd, struct map_session_data* sd, const char* command, const char* message) { - nullpo_retr(-1, sd); struct map_session_data *pl_sd = NULL; char character[100]; int manner; + nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d %99[^\n]", &manner, character) < 1) { clif_displaymessage(fd, "usage: @mute