diff options
author | Susu <bruant.bastien@gmail.com> | 2013-06-07 20:03:32 +0200 |
---|---|---|
committer | Susu <bruant.bastien@gmail.com> | 2013-06-07 20:03:32 +0200 |
commit | d73783f22b2bb881aab74524d153d89a5932a199 (patch) | |
tree | feea3cd428cee18be3da9bf0bee6d4570d9cad02 /src | |
parent | dc7f14c7dc9829061f8902354367bdc8467eb841 (diff) | |
download | hercules-d73783f22b2bb881aab74524d153d89a5932a199.tar.gz hercules-d73783f22b2bb881aab74524d153d89a5932a199.tar.bz2 hercules-d73783f22b2bb881aab74524d153d89a5932a199.tar.xz hercules-d73783f22b2bb881aab74524d153d89a5932a199.zip |
Hercules Renewal Phase One : pc, party, map, timer
Added iPc, iParty, iMap, iTimer to HPM exported interfaces
Diffstat (limited to 'src')
57 files changed, 5225 insertions, 4786 deletions
diff --git a/src/char/char.c b/src/char/char.c index 97ad493b1..3083876ab 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -188,7 +188,7 @@ static DBData create_online_char_data(DBKey key, va_list args) character->pincode_enable = -1; character->fd = -1; character->waiting_disconnect = INVALID_TIMER; - return DB->ptr2data(character); + return iDB->ptr2data(character); } void set_char_charselect(int account_id) @@ -207,7 +207,7 @@ void set_char_charselect(int account_id) character->pincode_enable = *pincode->charselect + *pincode->enabled; if(character->waiting_disconnect != INVALID_TIMER) { - delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); + iTimer->delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); character->waiting_disconnect = INVALID_TIMER; } @@ -248,7 +248,7 @@ void set_char_online(int map_id, int char_id, int account_id) //Get rid of disconnect timer if(character->waiting_disconnect != INVALID_TIMER) { - delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); + iTimer->delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); character->waiting_disconnect = INVALID_TIMER; } @@ -293,7 +293,7 @@ void set_char_offline(int char_id, int account_id) server[character->server].users--; if(character->waiting_disconnect != INVALID_TIMER){ - delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); + iTimer->delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); character->waiting_disconnect = INVALID_TIMER; } @@ -322,13 +322,13 @@ void set_char_offline(int char_id, int account_id) */ static int char_db_setoffline(DBKey key, DBData *data, va_list ap) { - struct online_char_data* character = (struct online_char_data*)DB->data2ptr(data); + struct online_char_data* character = (struct online_char_data*)iDB->data2ptr(data); int server = va_arg(ap, int); if (server == -1) { character->char_id = -1; character->server = -1; if(character->waiting_disconnect != INVALID_TIMER){ - delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); + iTimer->delete_timer(character->waiting_disconnect, chardb_waiting_disconnect); character->waiting_disconnect = INVALID_TIMER; } } else if (character->server == server) @@ -341,7 +341,7 @@ static int char_db_setoffline(DBKey key, DBData *data, va_list ap) */ static int char_db_kickoffline(DBKey key, DBData *data, va_list ap) { - struct online_char_data* character = (struct online_char_data*)DB->data2ptr(data); + struct online_char_data* character = (struct online_char_data*)iDB->data2ptr(data); int server_id = va_arg(ap, int); if (server_id > -1 && character->server != server_id) @@ -393,7 +393,7 @@ static DBData create_charstatus(DBKey key, va_list args) struct mmo_charstatus *cp; cp = (struct mmo_charstatus *) aCalloc(1,sizeof(struct mmo_charstatus)); cp->char_id = key.i; - return DB->ptr2data(cp); + return iDB->ptr2data(cp); } int inventory_to_sql(const struct item items[], int max, int id); @@ -2025,7 +2025,7 @@ static void char_auth_ok(int fd, struct char_session_data *sd) { //Character already online. KICK KICK KICK mapif_disconnectplayer(server[character->server].fd, character->account_id, character->char_id, 2); if (character->waiting_disconnect == INVALID_TIMER) - character->waiting_disconnect = add_timer(gettick()+20000, chardb_waiting_disconnect, character->account_id, 0); + character->waiting_disconnect = iTimer->add_timer(iTimer->gettick()+20000, chardb_waiting_disconnect, character->account_id, 0); WFIFOHEAD(fd,3); WFIFOW(fd,0) = 0x81; WFIFOB(fd,2) = 8; @@ -2102,7 +2102,7 @@ void loginif_on_ready(void) loginif_check_shutdown(); //Send online accounts to login server. - send_accounts_tologin(INVALID_TIMER, gettick(), 0, 0); + send_accounts_tologin(INVALID_TIMER, iTimer->gettick(), 0, 0); // if no map-server already connected, display a message... ARR_FIND( 0, ARRAYLENGTH(server), i, server[i].fd > 0 && server[i].map[0] ); @@ -2383,7 +2383,7 @@ int parse_fromlogin(int fd) { { //Kick it from the map server it is on. mapif_disconnectplayer(server[character->server].fd, character->account_id, character->char_id, 2); if (character->waiting_disconnect == INVALID_TIMER) - character->waiting_disconnect = add_timer(gettick()+AUTH_TIMEOUT, chardb_waiting_disconnect, character->account_id, 0); + character->waiting_disconnect = iTimer->add_timer(iTimer->gettick()+AUTH_TIMEOUT, chardb_waiting_disconnect, character->account_id, 0); } else {// Manual kick from char server. @@ -2452,12 +2452,12 @@ int send_accounts_tologin(int tid, unsigned int tick, int id, intptr_t data); void do_init_loginif(void) { // establish char-login connection if not present - add_timer_func_list(check_connect_login_server, "check_connect_login_server"); - add_timer_interval(gettick() + 1000, check_connect_login_server, 0, 0, 10 * 1000); + iTimer->add_timer_func_list(check_connect_login_server, "check_connect_login_server"); + iTimer->add_timer_interval(iTimer->gettick() + 1000, check_connect_login_server, 0, 0, 10 * 1000); // send a list of all online account IDs to login server - add_timer_func_list(send_accounts_tologin, "send_accounts_tologin"); - add_timer_interval(gettick() + 1000, send_accounts_tologin, 0, 0, 3600 * 1000); //Sync online accounts every hour + iTimer->add_timer_func_list(send_accounts_tologin, "send_accounts_tologin"); + iTimer->add_timer_interval(iTimer->gettick() + 1000, send_accounts_tologin, 0, 0, 3600 * 1000); //Sync online accounts every hour } void do_final_loginif(void) @@ -4457,7 +4457,7 @@ int broadcast_user_count(int tid, unsigned int tick, int id, intptr_t data) */ static int send_accounts_tologin_sub(DBKey key, DBData *data, va_list ap) { - struct online_char_data* character = DB->data2ptr(data); + struct online_char_data* character = iDB->data2ptr(data); int* i = va_arg(ap, int*); if(character->server > -1) @@ -4539,7 +4539,7 @@ static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, intptr_ */ static int online_data_cleanup_sub(DBKey key, DBData *data, va_list ap) { - struct online_char_data *character= DB->data2ptr(data); + struct online_char_data *character= iDB->data2ptr(data); if (character->fd != -1) return 0; //Character still connected if (character->server == -2) //Unknown server.. set them offline @@ -4985,15 +4985,15 @@ int do_init(int argc, char **argv) { do_init_mapif(); // periodically update the overall user count on all mapservers + login server - add_timer_func_list(broadcast_user_count, "broadcast_user_count"); - add_timer_interval(gettick() + 1000, broadcast_user_count, 0, 0, 5 * 1000); + iTimer->add_timer_func_list(broadcast_user_count, "broadcast_user_count"); + iTimer->add_timer_interval(iTimer->gettick() + 1000, broadcast_user_count, 0, 0, 5 * 1000); // Timer to clear (online_char_db) - add_timer_func_list(chardb_waiting_disconnect, "chardb_waiting_disconnect"); + iTimer->add_timer_func_list(chardb_waiting_disconnect, "chardb_waiting_disconnect"); // Online Data timers (checking if char still connected) - add_timer_func_list(online_data_cleanup, "online_data_cleanup"); - add_timer_interval(gettick() + 1000, online_data_cleanup, 0, 0, 600 * 1000); + iTimer->add_timer_func_list(online_data_cleanup, "online_data_cleanup"); + iTimer->add_timer_interval(iTimer->gettick() + 1000, online_data_cleanup, 0, 0, 600 * 1000); //Cleaning the tables for NULL entrys @ startup [Sirius] //Chardb clean diff --git a/src/char/int_auction.c b/src/char/int_auction.c index 977638aad..c9195a380 100644 --- a/src/char/int_auction.c +++ b/src/char/int_auction.c @@ -115,7 +115,7 @@ unsigned int auction_create(struct auction_data *auction) auction->item.expire_time = 0; auction->auction_id = (unsigned int)SqlStmt_LastInsertId(stmt); - auction->auction_end_timer = add_timer( gettick() + tick , auction_end_timer, auction->auction_id, 0); + auction->auction_end_timer = iTimer->add_timer( iTimer->gettick() + tick , auction_end_timer, auction->auction_id, 0); ShowInfo("New Auction %u | time left %u ms | By %s.\n", auction->auction_id, tick, auction->seller_name); CREATE(auction_, struct auction_data, 1); @@ -170,7 +170,7 @@ void auction_delete(struct auction_data *auction) Sql_ShowDebug(sql_handle); if( auction->auction_end_timer != INVALID_TIMER ) - delete_timer(auction->auction_end_timer, auction_end_timer); + iTimer->delete_timer(auction->auction_end_timer, auction_end_timer); idb_remove(auction_db_, auction_id); } @@ -182,7 +182,7 @@ void inter_auctions_fromsql(void) struct item *item; char *data; StringBuf buf; - unsigned int tick = gettick(), endtick; + unsigned int tick = iTimer->gettick(), endtick; time_t now = time(NULL); StrBuf->Init(&buf); @@ -234,7 +234,7 @@ void inter_auctions_fromsql(void) else endtick = tick + 10000; // 10 Second's to process ended auctions - auction->auction_end_timer = add_timer(endtick, auction_end_timer, auction->auction_id, 0); + auction->auction_end_timer = iTimer->add_timer(endtick, auction_end_timer, auction->auction_id, 0); idb_put(auction_db_, auction->auction_id, auction); } diff --git a/src/char/int_guild.c b/src/char/int_guild.c index e1e012725..55f29953f 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -57,7 +57,7 @@ static int guild_save_timer(int tid, unsigned int tick, int id, intptr_t data) if( last_id == 0 ) //Save the first guild in the list. state = 1; - for( g = DB->data2ptr(iter->first(iter, &key)); dbi_exists(iter); g = DB->data2ptr(iter->next(iter, &key)) ) + for( g = iDB->data2ptr(iter->first(iter, &key)); dbi_exists(iter); g = iDB->data2ptr(iter->next(iter, &key)) ) { if( state == 0 && g->guild_id == last_id ) state++; //Save next guild in the list. @@ -86,7 +86,7 @@ static int guild_save_timer(int tid, unsigned int tick, int id, intptr_t data) state = guild_db_->size(guild_db_); if( state < 1 ) state = 1; //Calculate the time slot for the next save. - add_timer(tick + autosave_interval/state, guild_save_timer, 0, 0); + iTimer->add_timer(tick + autosave_interval/state, guild_save_timer, 0, 0); return 0; } @@ -729,8 +729,8 @@ int inter_guild_sql_init(void) //Read exp file sv->readdb("db", DBPATH"exp_guild.txt", ',', 1, 1, 100, exp_guild_parse_row); - add_timer_func_list(guild_save_timer, "guild_save_timer"); - add_timer(gettick() + 10000, guild_save_timer, 0, 0); + iTimer->add_timer_func_list(guild_save_timer, "guild_save_timer"); + iTimer->add_timer(iTimer->gettick() + 10000, guild_save_timer, 0, 0); return 0; } @@ -739,7 +739,7 @@ int inter_guild_sql_init(void) */ static int guild_db_final(DBKey key, DBData *data, va_list ap) { - struct guild *g = DB->data2ptr(data); + struct guild *g = iDB->data2ptr(data); if (g->save_flag&GS_MASK) { inter_guild_tosql(g, g->save_flag&GS_MASK); return 1; diff --git a/src/char/inter.c b/src/char/inter.c index a1b075a14..a9e9dece4 100644 --- a/src/char/inter.c +++ b/src/char/inter.c @@ -935,7 +935,7 @@ int mapif_disconnectplayer(int fd, int account_id, int char_id, int reason) int check_ttl_wisdata_sub(DBKey key, DBData *data, va_list ap) { unsigned long tick; - struct WisData *wd = DB->data2ptr(data); + struct WisData *wd = iDB->data2ptr(data); tick = va_arg(ap, unsigned long); if (DIFF_TICK(tick, wd->tick) > WISDATA_TTL && wis_delnum < WISDELLIST_MAX) @@ -946,7 +946,7 @@ int check_ttl_wisdata_sub(DBKey key, DBData *data, va_list ap) int check_ttl_wisdata(void) { - unsigned long tick = gettick(); + unsigned long tick = iTimer->gettick(); int i; do { @@ -1039,7 +1039,7 @@ int mapif_parse_WisRequest(int fd) memcpy(wd->src, RFIFOP(fd, 4), NAME_LENGTH); memcpy(wd->dst, RFIFOP(fd,28), NAME_LENGTH); memcpy(wd->msg, RFIFOP(fd,52), wd->len); - wd->tick = gettick(); + wd->tick = iTimer->gettick(); idb_put(wis_db, wd->id, wd); mapif_wis_message(wd); } diff --git a/src/common/HPM.c b/src/common/HPM.c index 28ea8f413..ed6151c95 100644 --- a/src/common/HPM.c +++ b/src/common/HPM.c @@ -264,8 +264,8 @@ void hplugins_share_defaults(void) { HPM->share(&SERVER_TYPE,"SERVER_TYPE"); HPM->share((void*)get_svn_revision,"get_svn_revision"); HPM->share((void*)get_git_hash,"get_git_hash"); - HPM->share(DB, "DB"); - HPM->share(malloclib, "malloclib"); + HPM->share(iDB, "iDB"); + HPM->share(iMalloc, "iMalloc"); /* socket */ HPM->share(RFIFOSKIP,"RFIFOSKIP"); HPM->share(WFIFOSET,"WFIFOSET"); @@ -281,12 +281,8 @@ void hplugins_share_defaults(void) { /* sql */ HPM->share(SQL,"SQL"); /* timer */ - HPM->share(gettick,"gettick"); - HPM->share(add_timer,"add_timer"); - HPM->share(add_timer_interval,"add_timer_interval"); - HPM->share(add_timer_func_list,"add_timer_func_list"); - HPM->share(delete_timer,"delete_timer"); - HPM->share(get_uptime,"get_uptime"); + HPM->share(iTimer,"iTimer"); + } CPCMD(plugins) { if( HPM->plugin_count == 0 ) { diff --git a/src/common/console.c b/src/common/console.c index 33d485497..08daec04e 100644 --- a/src/common/console.c +++ b/src/common/console.c @@ -101,7 +101,7 @@ CPCMD(help) { } /* [Ind/Hercules] */ CPCMD(malloc_usage) { - unsigned int val = (unsigned int)malloclib->usage(); + unsigned int val = (unsigned int)iMalloc->usage(); ShowInfo("malloc_usage: %.2f MB\n",(double)(val)/1024); } #define CP_DEF_C(x) { #x , NULL , NULL, NULL } @@ -369,8 +369,8 @@ void console_parse_init(void) { exit(EXIT_FAILURE); } - add_timer_func_list(console->parse_timer, "console_parse_timer"); - add_timer_interval(gettick() + 1000, console->parse_timer, 0, 0, 500);/* start listening in 1s; re-try every 0.5s */ + iTimer->add_timer_func_list(console->parse_timer, "console_parse_timer"); + iTimer->add_timer_interval(iTimer->gettick() + 1000, console->parse_timer, 0, 0, 500);/* start listening in 1s; re-try every 0.5s */ } #endif /* CONSOLE_INPUT */ diff --git a/src/common/core.c b/src/common/core.c index 0959e6fc9..d6cfff662 100644 --- a/src/common/core.c +++ b/src/common/core.c @@ -307,7 +307,7 @@ int main (int argc, char **argv) { } core_defaults(); - malloclib->init();// needed for Show* in display_title() [FlavioJS] + iMalloc->init();// needed for Show* in display_title() [FlavioJS] console->display_title(); @@ -322,14 +322,14 @@ int main (int argc, char **argv) { Sql_Init(); rathread_init(); mempool_init(); - DB->init(); + iDB->init(); signals_init(); #ifdef _WIN32 cevents_init(); #endif - timer_init(); + iTimer->init(); console->init(); @@ -343,7 +343,7 @@ int main (int argc, char **argv) { {// Main runtime cycle int next; while (runflag != CORE_ST_STOP) { - next = do_timer(gettick_nocache()); + next = iTimer->do_timer(iTimer->gettick_nocache()); do_sockets(next); } } @@ -354,14 +354,14 @@ int main (int argc, char **argv) { #ifndef MINICORE HPM->final(); #endif - timer_final(); + iTimer->final(); socket_final(); - DB->final(); + iDB->final(); mempool_final(); rathread_final(); #endif - malloclib->final(); + iMalloc->final(); return 0; } diff --git a/src/common/db.c b/src/common/db.c index 561371787..b1fe22a4a 100644 --- a/src/common/db.c +++ b/src/common/db.c @@ -2349,7 +2349,7 @@ DBHasher db_default_hash(DBType type) DBReleaser db_default_release(DBType type, DBOptions options) { DB_COUNTSTAT(db_default_release); - options = DB->fix_options(type, options); + options = iDB->fix_options(type, options); if (options&DB_OPT_RELEASE_DATA) { // Release data, what about the key? if (options&(DB_OPT_DUP_KEY|DB_OPT_RELEASE_KEY)) return &db_release_both; // Release both key and data @@ -2416,7 +2416,7 @@ DBMap* db_alloc(const char *file, const char *func, int line, DBType type, DBOpt #endif /* DB_ENABLE_STATS */ db = ers_alloc(db_alloc_ers, struct DBMap_impl); - options = DB->fix_options(type, options); + options = iDB->fix_options(type, options); /* Interface of the database */ db->vtable.iterator = db_obj_iterator; db->vtable.exists = db_obj_exists; @@ -2447,9 +2447,9 @@ DBMap* db_alloc(const char *file, const char *func, int line, DBType type, DBOpt /* Other */ snprintf(ers_name, 50, "db_alloc:nodes:%s:%s:%d",func,file,line); db->nodes = ers_new(sizeof(struct dbn),ers_name,ERS_OPT_WAIT|ERS_OPT_FREE_NAME); - db->cmp = DB->default_cmp(type); - db->hash = DB->default_hash(type); - db->release = DB->default_release(type, options); + db->cmp = iDB->default_cmp(type); + db->hash = iDB->default_hash(type); + db->release = iDB->default_release(type, options); for (i = 0; i < HASH_SIZE; i++) db->ht[i] = NULL; db->cache = NULL; @@ -2830,22 +2830,22 @@ void linkdb_final( struct linkdb_node** head ) *head = NULL; } void db_defaults(void) { - DB = &DB_s; - DB->alloc = db_alloc; - DB->custom_release = db_custom_release; - DB->data2i = db_data2i; - DB->data2ptr = db_data2ptr; - DB->data2ui = db_data2ui; - DB->default_cmp = db_default_cmp; - DB->default_hash = db_default_hash; - DB->default_release = db_default_release; - DB->final = db_final; - DB->fix_options = db_fix_options; - DB->i2data = db_i2data; - DB->i2key = db_i2key; - DB->init = db_init; - DB->ptr2data = db_ptr2data; - DB->str2key = db_str2key; - DB->ui2data = db_ui2data; - DB->ui2key = db_ui2key; + iDB = &iDB_s; + iDB->alloc = db_alloc; + iDB->custom_release = db_custom_release; + iDB->data2i = db_data2i; + iDB->data2ptr = db_data2ptr; + iDB->data2ui = db_data2ui; + iDB->default_cmp = db_default_cmp; + iDB->default_hash = db_default_hash; + iDB->default_release = db_default_release; + iDB->final = db_final; + iDB->fix_options = db_fix_options; + iDB->i2data = db_i2data; + iDB->i2key = db_i2key; + iDB->init = db_init; + iDB->ptr2data = db_ptr2data; + iDB->str2key = db_str2key; + iDB->ui2data = db_ui2data; + iDB->ui2key = db_ui2key; } diff --git a/src/common/db.h b/src/common/db.h index 5a555b2fa..8ad033cce 100644 --- a/src/common/db.h +++ b/src/common/db.h @@ -599,73 +599,73 @@ struct DBMap { // For easy access to the common functions. #define db_exists(db,k) ( (db)->exists((db),(k)) ) -#define idb_exists(db,k) ( (db)->exists((db),DB->i2key(k)) ) -#define uidb_exists(db,k) ( (db)->exists((db),DB->ui2key(k)) ) -#define strdb_exists(db,k) ( (db)->exists((db),DB->str2key(k)) ) +#define idb_exists(db,k) ( (db)->exists((db),iDB->i2key(k)) ) +#define uidb_exists(db,k) ( (db)->exists((db),iDB->ui2key(k)) ) +#define strdb_exists(db,k) ( (db)->exists((db),iDB->str2key(k)) ) // Get pointer-type data from DBMaps of various key types -#define db_get(db,k) ( DB->data2ptr((db)->get((db),(k))) ) -#define idb_get(db,k) ( DB->data2ptr((db)->get((db),DB->i2key(k))) ) -#define uidb_get(db,k) ( DB->data2ptr((db)->get((db),DB->ui2key(k))) ) -#define strdb_get(db,k) ( DB->data2ptr((db)->get((db),DB->str2key(k))) ) +#define db_get(db,k) ( iDB->data2ptr((db)->get((db),(k))) ) +#define idb_get(db,k) ( iDB->data2ptr((db)->get((db),iDB->i2key(k))) ) +#define uidb_get(db,k) ( iDB->data2ptr((db)->get((db),iDB->ui2key(k))) ) +#define strdb_get(db,k) ( iDB->data2ptr((db)->get((db),iDB->str2key(k))) ) // Get int-type data from DBMaps of various key types -#define db_iget(db,k) ( DB->data2i((db)->get((db),(k))) ) -#define idb_iget(db,k) ( DB->data2i((db)->get((db),DB->i2key(k))) ) -#define uidb_iget(db,k) ( DB->data2i((db)->get((db),DB->ui2key(k))) ) -#define strdb_iget(db,k) ( DB->data2i((db)->get((db),DB->str2key(k))) ) +#define db_iget(db,k) ( iDB->data2i((db)->get((db),(k))) ) +#define idb_iget(db,k) ( iDB->data2i((db)->get((db),iDB->i2key(k))) ) +#define uidb_iget(db,k) ( iDB->data2i((db)->get((db),iDB->ui2key(k))) ) +#define strdb_iget(db,k) ( iDB->data2i((db)->get((db),iDB->str2key(k))) ) // Get uint-type data from DBMaps of various key types -#define db_uiget(db,k) ( DB->data2ui((db)->get((db),(k))) ) -#define idb_uiget(db,k) ( DB->data2ui((db)->get((db),DB->i2key(k))) ) -#define uidb_uiget(db,k) ( DB->data2ui((db)->get((db),DB->ui2key(k))) ) -#define strdb_uiget(db,k) ( DB->data2ui((db)->get((db),DB->str2key(k))) ) +#define db_uiget(db,k) ( iDB->data2ui((db)->get((db),(k))) ) +#define idb_uiget(db,k) ( iDB->data2ui((db)->get((db),iDB->i2key(k))) ) +#define uidb_uiget(db,k) ( iDB->data2ui((db)->get((db),iDB->ui2key(k))) ) +#define strdb_uiget(db,k) ( iDB->data2ui((db)->get((db),iDB->str2key(k))) ) // Put pointer-type data into DBMaps of various key types -#define db_put(db,k,d) ( (db)->put((db),(k),DB->ptr2data(d),NULL) ) -#define idb_put(db,k,d) ( (db)->put((db),DB->i2key(k),DB->ptr2data(d),NULL) ) -#define uidb_put(db,k,d) ( (db)->put((db),DB->ui2key(k),DB->ptr2data(d),NULL) ) -#define strdb_put(db,k,d) ( (db)->put((db),DB->str2key(k),DB->ptr2data(d),NULL) ) +#define db_put(db,k,d) ( (db)->put((db),(k),iDB->ptr2data(d),NULL) ) +#define idb_put(db,k,d) ( (db)->put((db),iDB->i2key(k),iDB->ptr2data(d),NULL) ) +#define uidb_put(db,k,d) ( (db)->put((db),iDB->ui2key(k),iDB->ptr2data(d),NULL) ) +#define strdb_put(db,k,d) ( (db)->put((db),iDB->str2key(k),iDB->ptr2data(d),NULL) ) // Put int-type data into DBMaps of various key types -#define db_iput(db,k,d) ( (db)->put((db),(k),DB->i2data(d),NULL) ) -#define idb_iput(db,k,d) ( (db)->put((db),DB->i2key(k),DB->i2data(d),NULL) ) -#define uidb_iput(db,k,d) ( (db)->put((db),DB->ui2key(k),DB->i2data(d),NULL) ) -#define strdb_iput(db,k,d) ( (db)->put((db),DB->str2key(k),DB->i2data(d),NULL) ) +#define db_iput(db,k,d) ( (db)->put((db),(k),iDB->i2data(d),NULL) ) +#define idb_iput(db,k,d) ( (db)->put((db),iDB->i2key(k),iDB->i2data(d),NULL) ) +#define uidb_iput(db,k,d) ( (db)->put((db),iDB->ui2key(k),iDB->i2data(d),NULL) ) +#define strdb_iput(db,k,d) ( (db)->put((db),iDB->str2key(k),iDB->i2data(d),NULL) ) // Put uint-type data into DBMaps of various key types -#define db_uiput(db,k,d) ( (db)->put((db),(k),DB->ui2data(d),NULL) ) -#define idb_uiput(db,k,d) ( (db)->put((db),DB->i2key(k),DB->ui2data(d),NULL) ) -#define uidb_uiput(db,k,d) ( (db)->put((db),DB->ui2key(k),DB->ui2data(d),NULL) ) -#define strdb_uiput(db,k,d) ( (db)->put((db),DB->str2key(k),DB->ui2data(d),NULL) ) +#define db_uiput(db,k,d) ( (db)->put((db),(k),iDB->ui2data(d),NULL) ) +#define idb_uiput(db,k,d) ( (db)->put((db),iDB->i2key(k),iDB->ui2data(d),NULL) ) +#define uidb_uiput(db,k,d) ( (db)->put((db),iDB->ui2key(k),iDB->ui2data(d),NULL) ) +#define strdb_uiput(db,k,d) ( (db)->put((db),iDB->str2key(k),iDB->ui2data(d),NULL) ) // Remove entry from DBMaps of various key types #define db_remove(db,k) ( (db)->remove((db),(k),NULL) ) -#define idb_remove(db,k) ( (db)->remove((db),DB->i2key(k),NULL) ) -#define uidb_remove(db,k) ( (db)->remove((db),DB->ui2key(k),NULL) ) -#define strdb_remove(db,k) ( (db)->remove((db),DB->str2key(k),NULL) ) +#define idb_remove(db,k) ( (db)->remove((db),iDB->i2key(k),NULL) ) +#define uidb_remove(db,k) ( (db)->remove((db),iDB->ui2key(k),NULL) ) +#define strdb_remove(db,k) ( (db)->remove((db),iDB->str2key(k),NULL) ) //These are discarding the possible vargs you could send to the function, so those //that require vargs must not use these defines. -#define db_ensure(db,k,f) ( DB->data2ptr((db)->ensure((db),(k),(f))) ) -#define idb_ensure(db,k,f) ( DB->data2ptr((db)->ensure((db),DB->i2key(k),(f))) ) -#define uidb_ensure(db,k,f) ( DB->data2ptr((db)->ensure((db),DB->ui2key(k),(f))) ) -#define strdb_ensure(db,k,f) ( DB->data2ptr((db)->ensure((db),DB->str2key(k),(f))) ) +#define db_ensure(db,k,f) ( iDB->data2ptr((db)->ensure((db),(k),(f))) ) +#define idb_ensure(db,k,f) ( iDB->data2ptr((db)->ensure((db),iDB->i2key(k),(f))) ) +#define uidb_ensure(db,k,f) ( iDB->data2ptr((db)->ensure((db),iDB->ui2key(k),(f))) ) +#define strdb_ensure(db,k,f) ( iDB->data2ptr((db)->ensure((db),iDB->str2key(k),(f))) ) // Database creation and destruction macros -#define idb_alloc(opt) DB->alloc(__FILE__,__func__,__LINE__,DB_INT,(opt),sizeof(int)) -#define uidb_alloc(opt) DB->alloc(__FILE__,__func__,__LINE__,DB_UINT,(opt),sizeof(unsigned int)) -#define strdb_alloc(opt,maxlen) DB->alloc(__FILE__,__func__,__LINE__,DB_STRING,(opt),(maxlen)) -#define stridb_alloc(opt,maxlen) DB->alloc(__FILE__,__func__,__LINE__,DB_ISTRING,(opt),(maxlen)) +#define idb_alloc(opt) iDB->alloc(__FILE__,__func__,__LINE__,DB_INT,(opt),sizeof(int)) +#define uidb_alloc(opt) iDB->alloc(__FILE__,__func__,__LINE__,DB_UINT,(opt),sizeof(unsigned int)) +#define strdb_alloc(opt,maxlen) iDB->alloc(__FILE__,__func__,__LINE__,DB_STRING,(opt),(maxlen)) +#define stridb_alloc(opt,maxlen) iDB->alloc(__FILE__,__func__,__LINE__,DB_ISTRING,(opt),(maxlen)) #define db_destroy(db) ( (db)->destroy((db),NULL) ) // Other macros #define db_clear(db) ( (db)->clear(db,NULL) ) #define db_size(db) ( (db)->size(db) ) #define db_iterator(db) ( (db)->iterator(db) ) -#define dbi_first(dbi) ( DB->data2ptr((dbi)->first(dbi,NULL)) ) -#define dbi_last(dbi) ( DB->data2ptr((dbi)->last(dbi,NULL)) ) -#define dbi_next(dbi) ( DB->data2ptr((dbi)->next(dbi,NULL)) ) -#define dbi_prev(dbi) ( DB->data2ptr((dbi)->prev(dbi,NULL)) ) +#define dbi_first(dbi) ( iDB->data2ptr((dbi)->first(dbi,NULL)) ) +#define dbi_last(dbi) ( iDB->data2ptr((dbi)->last(dbi,NULL)) ) +#define dbi_next(dbi) ( iDB->data2ptr((dbi)->next(dbi,NULL)) ) +#define dbi_prev(dbi) ( iDB->data2ptr((dbi)->prev(dbi,NULL)) ) #define dbi_remove(dbi) ( (dbi)->remove(dbi,NULL) ) #define dbi_exists(dbi) ( (dbi)->exists(dbi) ) #define dbi_destroy(dbi) ( (dbi)->destroy(dbi) ) @@ -867,9 +867,9 @@ void (*init) (void); * @see #db_init(void) */ void (*final) (void); -} DB_s; +} iDB_s; -struct db_interface *DB; +struct db_interface *iDB; void db_defaults(void); // Link DB System - From jAthena diff --git a/src/common/malloc.c b/src/common/malloc.c index 372991fbe..d629aa63f 100644 --- a/src/common/malloc.c +++ b/src/common/malloc.c @@ -335,7 +335,7 @@ void* _mmalloc(size_t size, const char *file, int line, const char *func ) void* _mcalloc(size_t num, size_t size, const char *file, int line, const char *func ) { - void *p = malloclib->malloc(num * size,file,line,func); + void *p = iMalloc->malloc(num * size,file,line,func); memset(p,0,num * size); return p; } @@ -344,7 +344,7 @@ void* _mrealloc(void *memblock, size_t size, const char *file, int line, const c { size_t old_size; if(memblock == NULL) { - return malloclib->malloc(size,file,line,func); + return iMalloc->malloc(size,file,line,func); } old_size = ((struct unit_head *)((char *)memblock - sizeof(struct unit_head) + sizeof(long)))->size; @@ -356,11 +356,11 @@ void* _mrealloc(void *memblock, size_t size, const char *file, int line, const c return memblock; } else { // Size Large - void *p = malloclib->malloc(size,file,line,func); + void *p = iMalloc->malloc(size,file,line,func); if(p != NULL) { memcpy(p,memblock,old_size); } - malloclib->free(memblock,file,line,func); + iMalloc->free(memblock,file,line,func); return p; } } @@ -371,7 +371,7 @@ char* _mstrdup(const char *p, const char *file, int line, const char *func ) return NULL; } else { size_t len = strlen(p); - char *string = (char *)malloclib->malloc(len + 1,file,line,func); + char *string = (char *)iMalloc->malloc(len + 1,file,line,func); memcpy(string,p,len+1); return string; } @@ -626,7 +626,7 @@ static void memmgr_final (void) memmgr_log (buf); #endif /* LOG_MEMMGR */ // get block pointer and free it [celest] - malloclib->free(ptr, ALC_MARK); + iMalloc->free(ptr, ALC_MARK); } } } @@ -804,25 +804,25 @@ void malloc_init (void) { } void malloc_defaults(void) { - malloclib = &malloclib_s; - malloclib->init = malloc_init; - malloclib->final = malloc_final; - malloclib->memory_check = malloc_memory_check; - malloclib->usage = malloc_usage; - malloclib->verify_ptr = malloc_verify_ptr; + iMalloc = &iMalloc_s; + iMalloc->init = malloc_init; + iMalloc->final = malloc_final; + iMalloc->memory_check = malloc_memory_check; + iMalloc->usage = malloc_usage; + iMalloc->verify_ptr = malloc_verify_ptr; // Athena's built-in Memory Manager #ifdef USE_MEMMGR - malloclib->malloc = _mmalloc; - malloclib->calloc = _mcalloc; - malloclib->realloc = _mrealloc; - malloclib->astrdup = _mstrdup; - malloclib->free = _mfree; + iMalloc->malloc = _mmalloc; + iMalloc->calloc = _mcalloc; + iMalloc->realloc = _mrealloc; + iMalloc->astrdup = _mstrdup; + iMalloc->free = _mfree; #else - malloclib->malloc = aMalloc_; - malloclib->calloc = aCalloc_; - malloclib->realloc = aRealloc_; - malloclib->astrdup = aStrdup_; - malloclib->free = aFree_; + iMalloc->malloc = aMalloc_; + iMalloc->calloc = aCalloc_; + iMalloc->realloc = aRealloc_; + iMalloc->astrdup = aStrdup_; + iMalloc->free = aFree_; #endif } diff --git a/src/common/malloc.h b/src/common/malloc.h index 1b8e82bd9..834781905 100644 --- a/src/common/malloc.h +++ b/src/common/malloc.h @@ -30,11 +30,11 @@ #undef LOG_MEMMGR #endif -# define aMalloc(n) malloclib->malloc (n,ALC_MARK) -# define aCalloc(m,n) malloclib->calloc (m,n,ALC_MARK) -# define aRealloc(p,n) malloclib->realloc (p,n,ALC_MARK) -# define aStrdup(p) malloclib->astrdup (p,ALC_MARK) -# define aFree(p) malloclib->free (p,ALC_MARK) +# define aMalloc(n) iMalloc->malloc (n,ALC_MARK) +# define aCalloc(m,n) iMalloc->calloc (m,n,ALC_MARK) +# define aRealloc(p,n) iMalloc->realloc (p,n,ALC_MARK) +# define aStrdup(p) iMalloc->astrdup (p,ALC_MARK) +# define aFree(p) iMalloc->free (p,ALC_MARK) /////////////// Buffer Creation ///////////////// // Full credit for this goes to Shinomori [Ajarn] @@ -78,9 +78,9 @@ struct malloc_interface { size_t (*usage) (void); void (*init) (void); void (*final) (void); -} malloclib_s; +} iMalloc_s; void memmgr_report (int extra); -struct malloc_interface *malloclib; +struct malloc_interface *iMalloc; #endif /* _MALLOC_H_ */ diff --git a/src/common/mutex.c b/src/common/mutex.c index 6b4f55119..6bb1efdab 100644 --- a/src/common/mutex.c +++ b/src/common/mutex.c @@ -201,7 +201,7 @@ void racond_wait( racond c, ramutex m, sysint timeout_ticks){ pthread_cond_wait( &c->hCond, &m->hMutex ); }else{ struct timespec wtime; - int64 exact_timeout = gettick() + timeout_ticks; + int64 exact_timeout = iTimer->gettick() + timeout_ticks; wtime.tv_sec = exact_timeout/1000; wtime.tv_nsec = (exact_timeout%1000)*1000000; diff --git a/src/common/random.c b/src/common/random.c index 5c048c7eb..a7d432e34 100644 --- a/src/common/random.c +++ b/src/common/random.c @@ -17,7 +17,7 @@ /// Initializes the random number generator with an appropriate seed. void rnd_init(void) { - uint32 seed = gettick(); + uint32 seed = iTimer->gettick(); seed += (uint32)time(NULL); #if defined(WIN32) seed += GetCurrentProcessId(); diff --git a/src/common/socket.c b/src/common/socket.c index 0459004cc..15b20b16f 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -947,9 +947,9 @@ static int connect_check_(uint32 ip) if( hist->ddos ) {// flagged as DDoS return (connect_ok == 2 ? 1 : 0); - } else if( DIFF_TICK(gettick(),hist->tick) < ddos_interval ) + } else if( DIFF_TICK(iTimer->gettick(),hist->tick) < ddos_interval ) {// connection within ddos_interval - hist->tick = gettick(); + hist->tick = iTimer->gettick(); if( hist->count++ >= ddos_count ) {// DDoS attack detected hist->ddos = 1; @@ -959,7 +959,7 @@ static int connect_check_(uint32 ip) return connect_ok; } else {// not within ddos_interval, clear data - hist->tick = gettick(); + hist->tick = iTimer->gettick(); hist->count = 0; return connect_ok; } @@ -970,7 +970,7 @@ static int connect_check_(uint32 ip) CREATE(hist, ConnectHistory, 1); memset(hist, 0, sizeof(ConnectHistory)); hist->ip = ip; - hist->tick = gettick(); + hist->tick = iTimer->gettick(); hist->next = connect_history[ip&0xFFFF]; connect_history[ip&0xFFFF] = hist; return connect_ok; @@ -1331,8 +1331,8 @@ void socket_init(void) #ifndef MINICORE // Delete old connection history every 5 minutes memset(connect_history, 0, sizeof(connect_history)); - add_timer_func_list(connect_check_clear, "connect_check_clear"); - add_timer_interval(gettick()+1000, connect_check_clear, 0, 0, 5*60*1000); + iTimer->add_timer_func_list(connect_check_clear, "connect_check_clear"); + iTimer->add_timer_interval(iTimer->gettick()+1000, connect_check_clear, 0, 0, 5*60*1000); #endif ShowInfo("Server supports up to '"CL_WHITE"%u"CL_RESET"' concurrent connections.\n", rlim_cur); diff --git a/src/common/sql.c b/src/common/sql.c index 391211183..d4bea7c12 100644 --- a/src/common/sql.c +++ b/src/common/sql.c @@ -210,7 +210,7 @@ static int Sql_P_Keepalive(Sql* self) // establish keepalive ping_interval = timeout - 30; // 30-second reserve //add_timer_func_list(Sql_P_KeepaliveTimer, "Sql_P_KeepaliveTimer"); - return add_timer_interval(gettick() + ping_interval*1000, Sql_P_KeepaliveTimer, 0, (intptr_t)self, ping_interval*1000); + return iTimer->add_timer_interval(iTimer->gettick() + ping_interval*1000, Sql_P_KeepaliveTimer, 0, (intptr_t)self, ping_interval*1000); } @@ -404,7 +404,7 @@ void Sql_Free(Sql* self) { SQL->FreeResult(self); StrBuf->Destroy(&self->buf); - if( self->keepalive != INVALID_TIMER ) delete_timer(self->keepalive, Sql_P_KeepaliveTimer); + if( self->keepalive != INVALID_TIMER ) iTimer->delete_timer(self->keepalive, Sql_P_KeepaliveTimer); aFree(self); } } diff --git a/src/common/timer.c b/src/common/timer.c index edb46bd71..955a971c8 100644 --- a/src/common/timer.c +++ b/src/common/timer.c @@ -257,7 +257,7 @@ int timer_add_interval(unsigned int tick, TimerFunc func, int id, intptr_t data, int tid; if( interval < 1 ) { - ShowError("timer_add_interval: invalid interval (tick=%u %p[%s] id=%d data=%d diff_tick=%d)\n", tick, func, search_timer_func_list(func), id, data, DIFF_TICK(tick, gettick())); + ShowError("timer_add_interval: invalid interval (tick=%u %p[%s] id=%d data=%d diff_tick=%d)\n", tick, func, search_timer_func_list(func), id, data, DIFF_TICK(tick, iTimer->gettick())); return INVALID_TIMER; } @@ -300,7 +300,7 @@ int timer_do_delete(int tid, TimerFunc func) { /// Adjusts a timer's expiration time. /// Returns the new tick value, or -1 if it fails. int timer_addtick(int tid, unsigned int tick) { - return settick_timer(tid, timer_data[tid].tick+tick); + return iTimer->settick_timer(tid, timer_data[tid].tick+tick); } /// Modifies a timer's expiration time (an alternative to deleting a timer and starting a new one). @@ -409,15 +409,26 @@ void timer_final(void) { BHEAP_CLEAR(timer_heap); if (free_timer_list) aFree(free_timer_list); } -void timer_defaults(void) { - gettick = timer_gettick; - gettick_nocache = timer_gettick_nocache; - add_timer = timer_add; - add_timer_interval = timer_add_interval; - add_timer_func_list = timer_add_func_list; - get_timer = timer_get; - delete_timer = timer_do_delete; - addtick_timer = timer_addtick; - settick_timer = timer_settick; - get_uptime = timer_get_uptime; +/*===================================== +* Default Functions : timer.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +void timer_defaults(void) { + iTimer = &iTimer_s; + + /* funcs */ + iTimer->gettick = timer_gettick; + iTimer->gettick_nocache = timer_gettick_nocache; + iTimer->add_timer = timer_add; + iTimer->add_timer_interval = timer_add_interval; + iTimer->add_timer_func_list = timer_add_func_list; + iTimer->get_timer = timer_get; + iTimer->delete_timer = timer_do_delete; + iTimer->addtick_timer = timer_addtick; + iTimer->settick_timer = timer_settick; + iTimer->get_uptime = timer_get_uptime; + iTimer->do_timer = do_timer; + iTimer->init = timer_init; + iTimer->final = timer_final; } diff --git a/src/common/timer.h b/src/common/timer.h index 902679f51..d68b5ed0f 100644 --- a/src/common/timer.h +++ b/src/common/timer.h @@ -34,27 +34,36 @@ struct TimerData { intptr_t data; }; -// Function prototype declaration +/* Hercules Renewal Phase One */ +/*===================================== +* Interface : timer.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +struct timer_interface { -int do_timer(unsigned int tick); -void timer_init(void); -void timer_final(void); + /* funcs */ + unsigned int (*gettick) (void); + unsigned int (*gettick_nocache) (void); -/* Hercules Renewal Phase One */ -unsigned int (*gettick) (void); -unsigned int (*gettick_nocache) (void); + int (*add_timer) (unsigned int tick, TimerFunc func, int id, intptr_t data); + int (*add_timer_interval) (unsigned int tick, TimerFunc func, int id, intptr_t data, int interval); + const struct TimerData *(*get_timer) (int tid); + int (*delete_timer) (int tid, TimerFunc func); + + int (*addtick_timer) (int tid, unsigned int tick); + int (*settick_timer) (int tid, unsigned int tick); -int (*add_timer) (unsigned int tick, TimerFunc func, int id, intptr_t data); -int (*add_timer_interval) (unsigned int tick, TimerFunc func, int id, intptr_t data, int interval); -const struct TimerData *(*get_timer) (int tid); -int (*delete_timer) (int tid, TimerFunc func); + int (*add_timer_func_list) (TimerFunc func, char* name); -int (*addtick_timer) (int tid, unsigned int tick); -int (*settick_timer) (int tid, unsigned int tick); + unsigned long (*get_uptime) (void); -int (*add_timer_func_list) (TimerFunc func, char* name); + int (*do_timer) (unsigned int tick); + void (*init) (void); + void (*final) (void); +} iTimer_s; -unsigned long (*get_uptime) (void); +struct timer_interface *iTimer; void timer_defaults(void); diff --git a/src/login/ipban_sql.c b/src/login/ipban_sql.c index 701d3bc1d..fd9f1a4a1 100644 --- a/src/login/ipban_sql.c +++ b/src/login/ipban_sql.c @@ -86,8 +86,8 @@ void ipban_init(void) if( login_config.ipban_cleanup_interval > 0 ) { // set up periodic cleanup of connection history and active bans - add_timer_func_list(ipban_cleanup, "ipban_cleanup"); - cleanup_timer_id = add_timer_interval(gettick()+10, ipban_cleanup, 0, 0, login_config.ipban_cleanup_interval*1000); + iTimer->add_timer_func_list(ipban_cleanup, "ipban_cleanup"); + cleanup_timer_id = iTimer->add_timer_interval(iTimer->gettick()+10, ipban_cleanup, 0, 0, login_config.ipban_cleanup_interval*1000); } else // make sure it gets cleaned up on login-server start regardless of interval-based cleanups ipban_cleanup(0,0,0,0); } @@ -100,7 +100,7 @@ void ipban_final(void) if( login_config.ipban_cleanup_interval > 0 ) // release data - delete_timer(cleanup_timer_id, ipban_cleanup); + iTimer->delete_timer(cleanup_timer_id, ipban_cleanup); ipban_cleanup(0,0,0,0); // always clean up on login-server stop diff --git a/src/login/login.c b/src/login/login.c index 2bfb9c730..159d99fee 100644 --- a/src/login/login.c +++ b/src/login/login.c @@ -109,7 +109,7 @@ static DBData create_online_user(DBKey key, va_list args) p->account_id = key.i; p->char_server = -1; p->waiting_disconnect = INVALID_TIMER; - return DB->ptr2data(p); + return iDB->ptr2data(p); } struct online_login_data* add_online_user(int char_server, int account_id) @@ -119,7 +119,7 @@ struct online_login_data* add_online_user(int char_server, int account_id) p->char_server = char_server; if( p->waiting_disconnect != INVALID_TIMER ) { - delete_timer(p->waiting_disconnect, waiting_disconnect_timer); + iTimer->delete_timer(p->waiting_disconnect, waiting_disconnect_timer); p->waiting_disconnect = INVALID_TIMER; } return p; @@ -132,7 +132,7 @@ void remove_online_user(int account_id) if( p == NULL ) return; if( p->waiting_disconnect != INVALID_TIMER ) - delete_timer(p->waiting_disconnect, waiting_disconnect_timer); + iTimer->delete_timer(p->waiting_disconnect, waiting_disconnect_timer); idb_remove(online_db, account_id); } @@ -154,14 +154,14 @@ static int waiting_disconnect_timer(int tid, unsigned int tick, int id, intptr_t */ static int online_db_setoffline(DBKey key, DBData *data, va_list ap) { - struct online_login_data* p = DB->data2ptr(data); + struct online_login_data* p = iDB->data2ptr(data); int server = va_arg(ap, int); if( server == -1 ) { p->char_server = -1; if( p->waiting_disconnect != INVALID_TIMER ) { - delete_timer(p->waiting_disconnect, waiting_disconnect_timer); + iTimer->delete_timer(p->waiting_disconnect, waiting_disconnect_timer); p->waiting_disconnect = INVALID_TIMER; } } @@ -175,7 +175,7 @@ static int online_db_setoffline(DBKey key, DBData *data, va_list ap) */ static int online_data_cleanup_sub(DBKey key, DBData *data, va_list ap) { - struct online_login_data *character= DB->data2ptr(data); + struct online_login_data *character= iDB->data2ptr(data); if (character->char_server == -2) //Unknown server.. set them offline remove_online_user(character->account_id); return 0; @@ -804,7 +804,7 @@ int parse_fromchar(int fd) p->char_server = id; if (p->waiting_disconnect != INVALID_TIMER) { - delete_timer(p->waiting_disconnect, waiting_disconnect_timer); + iTimer->delete_timer(p->waiting_disconnect, waiting_disconnect_timer); p->waiting_disconnect = INVALID_TIMER; } } @@ -913,12 +913,12 @@ int parse_fromchar(int fd) int mmo_auth_new(const char* userid, const char* pass, const char sex, const char* last_ip) { static int num_regs = 0; // registration counter static unsigned int new_reg_tick = 0; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); struct mmo_account acc; //Account Registration Flood Protection by [Kevin] if( new_reg_tick == 0 ) - new_reg_tick = gettick(); + new_reg_tick = iTimer->gettick(); if( DIFF_TICK(tick, new_reg_tick) < 0 && num_regs >= allowed_regs ) { ShowNotice("Account registration denied (registration limit exceeded)\n"); return 3; @@ -1162,7 +1162,7 @@ void login_auth_ok(struct login_session_data* sd) WBUFL(buf,2) = sd->account_id; charif_sendallwos(-1, buf, 6); if( data->waiting_disconnect == INVALID_TIMER ) - data->waiting_disconnect = add_timer(gettick()+AUTH_TIMEOUT, waiting_disconnect_timer, sd->account_id, 0); + data->waiting_disconnect = iTimer->add_timer(iTimer->gettick()+AUTH_TIMEOUT, waiting_disconnect_timer, sd->account_id, 0); WFIFOHEAD(fd,3); WFIFOW(fd,0) = 0x81; @@ -1229,7 +1229,7 @@ void login_auth_ok(struct login_session_data* sd) data = add_online_user(-1, sd->account_id); // schedule deletion of this node - data->waiting_disconnect = add_timer(gettick()+AUTH_TIMEOUT, waiting_disconnect_timer, sd->account_id, 0); + data->waiting_disconnect = iTimer->add_timer(iTimer->gettick()+AUTH_TIMEOUT, waiting_disconnect_timer, sd->account_id, 0); } } @@ -1836,7 +1836,7 @@ int do_init(int argc, char** argv) // Online user database init online_db = idb_alloc(DB_OPT_RELEASE_DATA); - add_timer_func_list(waiting_disconnect_timer, "waiting_disconnect_timer"); + iTimer->add_timer_func_list(waiting_disconnect_timer, "waiting_disconnect_timer"); // Interserver auth init auth_db = idb_alloc(DB_OPT_RELEASE_DATA); @@ -1845,13 +1845,13 @@ int do_init(int argc, char** argv) set_defaultparse(parse_login); // every 10 minutes cleanup online account db. - add_timer_func_list(online_data_cleanup, "online_data_cleanup"); - add_timer_interval(gettick() + 600*1000, online_data_cleanup, 0, 0, 600*1000); + iTimer->add_timer_func_list(online_data_cleanup, "online_data_cleanup"); + iTimer->add_timer_interval(iTimer->gettick() + 600*1000, online_data_cleanup, 0, 0, 600*1000); // add timer to detect ip address change and perform update if (login_config.ip_sync_interval) { - add_timer_func_list(sync_ip_addresses, "sync_ip_addresses"); - add_timer_interval(gettick() + login_config.ip_sync_interval, sync_ip_addresses, 0, 0, login_config.ip_sync_interval); + iTimer->add_timer_func_list(sync_ip_addresses, "sync_ip_addresses"); + iTimer->add_timer_interval(iTimer->gettick() + login_config.ip_sync_interval, sync_ip_addresses, 0, 0, login_config.ip_sync_interval); } // Account database init diff --git a/src/map/atcommand.c b/src/map/atcommand.c index e578fee85..f0e5e34d3 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -403,17 +403,17 @@ ACMD(mapmove) mapindex = mapindex_name2id(map_name); if (mapindex) - m = map_mapindex2mapid(mapindex); + m = iMap->mapindex2mapid(mapindex); if (!mapindex) { // m < 0 means on different server! [Kevin] clif->message(fd, msg_txt(1)); // Map not found. return false; } - if ((x || y) && map_getcell(m, x, y, CELL_CHKNOPASS) && pc_get_group_level(sd) < battle_config.gm_ignore_warpable_area) - { //This is to prevent the pc_setpos call from printing an error. + if ((x || y) && iMap->getcell(m, x, y, CELL_CHKNOPASS) && iPc->get_group_level(sd) < battle_config.gm_ignore_warpable_area) + { //This is to prevent the iPc->setpos call from printing an error. clif->message(fd, msg_txt(2)); - if (!map_search_freecell(NULL, m, &x, &y, 10, 10, 1)) + if (!iMap->search_freecell(NULL, m, &x, &y, 10, 10, 1)) x = y = 0; //Invalid cell, use random spot. } if (map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { @@ -424,7 +424,7 @@ ACMD(mapmove) clif->message(fd, msg_txt(248)); return false; } - if (pc_setpos(sd, mapindex, x, y, CLR_TELEPORT) != 0) { + if (iPc->setpos(sd, mapindex, x, y, CLR_TELEPORT) != 0) { clif->message(fd, msg_txt(1)); // Map not found. return false; } @@ -448,10 +448,10 @@ ACMD(where) return false; } - pl_sd = map_nick2sd(atcmd_player_name); + pl_sd = iMap->nick2sd(atcmd_player_name); if (pl_sd == NULL || strncmp(pl_sd->status.name, atcmd_player_name, NAME_LENGTH) != 0 || - (pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) && pc_get_group_level(pl_sd) > pc_get_group_level(sd) && !pc_has_permission(sd, PC_PERM_WHO_DISPLAY_AID)) + (pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) && iPc->get_group_level(pl_sd) > iPc->get_group_level(sd) && !pc_has_permission(sd, PC_PERM_WHO_DISPLAY_AID)) ) { clif->message(fd, msg_txt(3)); // Character not found. return false; @@ -477,7 +477,7 @@ ACMD(jumpto) return false; } - if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL) + if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. return false; @@ -501,7 +501,7 @@ ACMD(jumpto) return false; } - pc_setpos(sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT); + iPc->setpos(sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT); sprintf(atcmd_output, msg_txt(4), pl_sd->status.name); // Jumped to %s clif->message(fd, atcmd_output); @@ -532,14 +532,14 @@ ACMD(jump) return false; } - if ((x || y) && map_getcell(sd->bl.m, x, y, CELL_CHKNOPASS)) - { //This is to prevent the pc_setpos call from printing an error. + if ((x || y) && iMap->getcell(sd->bl.m, x, y, CELL_CHKNOPASS)) + { //This is to prevent the iPc->setpos call from printing an error. clif->message(fd, msg_txt(2)); - if (!map_search_freecell(NULL, sd->bl.m, &x, &y, 10, 10, 1)) + if (!iMap->search_freecell(NULL, sd->bl.m, &x, &y, 10, 10, 1)) x = y = 0; //Invalid cell, use random spot. } - pc_setpos(sd, sd->mapindex, x, y, CLR_TELEPORT); + iPc->setpos(sd, sd->mapindex, x, y, CLR_TELEPORT); sprintf(atcmd_output, msg_txt(5), sd->bl.x, sd->bl.y); // Jumped to %d %d clif->message(fd, atcmd_output); return true; @@ -569,7 +569,7 @@ ACMD(who) nullpo_retr(-1, sd); if (strstr(command, "map") != NULL) { - if (sscanf(message, "%15s %23s", map_name, player_name) < 1 || (map_id = map_mapname2mapid(map_name)) < 0) + if (sscanf(message, "%15s %23s", map_name, player_name) < 1 || (map_id = iMap->mapname2mapid(map_name)) < 0) map_id = sd->bl.m; } else { sscanf(message, "%23s", player_name); @@ -580,12 +580,12 @@ ACMD(who) else if (strstr(command, "3") != NULL) display_type = 3; - level = pc_get_group_level(sd); + level = iPc->get_group_level(sd); StrBuf->Init(&buf); iter = mapit_getallusers(); for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter)) { - if (!((pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) || (pl_sd->sc.option & OPTION_INVISIBLE)) && pc_get_group_level(pl_sd) > level)) { // you can look only lower or same level + if (!((pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) || (pl_sd->sc.option & OPTION_INVISIBLE)) && iPc->get_group_level(pl_sd) > level)) { // you can look only lower or same level if (stristr(pl_sd->status.name, player_name) == NULL // search with no case sensitive || (map_id >= 0 && pl_sd->bl.m != map_id)) continue; @@ -595,7 +595,7 @@ ACMD(who) if (pc_get_group_id(pl_sd) > 0) // Player title, if exists StrBuf->Printf(&buf, msg_txt(344), pc_group_id2name(pc_get_group_id(pl_sd))); // "(%s) " StrBuf->Printf(&buf, msg_txt(347), pl_sd->status.base_level, pl_sd->status.job_level, - job_name(pl_sd->status.class_)); // "| Lv:%d/%d | Job: %s" + iPc->job_name(pl_sd->status.class_)); // "| Lv:%d/%d | Job: %s" break; } case 3: { @@ -608,7 +608,7 @@ ACMD(who) break; } default: { - struct party_data *p = party_search(pl_sd->status.party_id); + struct party_data *p = iParty->search(pl_sd->status.party_id); struct guild *g = pl_sd->guild; StrBuf->Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s " @@ -674,12 +674,12 @@ ACMD(whogm) match_text[j] = TOLOWER(match_text[j]); count = 0; - level = pc_get_group_level(sd); + level = iPc->get_group_level(sd); iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { - pl_level = pc_get_group_level(pl_sd); + pl_level = iPc->get_group_level(pl_sd); if (!pl_level) continue; @@ -708,10 +708,10 @@ ACMD(whogm) sprintf(atcmd_output, msg_txt(915), // BLvl: %d | Job: %s (Lvl: %d) pl_sd->status.base_level, - job_name(pl_sd->status.class_), pl_sd->status.job_level); + iPc->job_name(pl_sd->status.class_), pl_sd->status.job_level); clif->message(fd, atcmd_output); - p = party_search(pl_sd->status.party_id); + p = iParty->search(pl_sd->status.party_id); g = pl_sd->guild; sprintf(atcmd_output,msg_txt(916), // Party: '%s' | Guild: '%s' @@ -741,7 +741,7 @@ ACMD(save) { nullpo_retr(-1, sd); - pc_setsavepoint(sd, sd->mapindex, sd->bl.x, sd->bl.y); + iPc->setsavepoint(sd, sd->mapindex, sd->bl.x, sd->bl.y); if (sd->status.pet_id > 0 && sd->pd) intif_save_petdata(sd->status.account_id, &sd->pd->pet); @@ -761,7 +761,7 @@ ACMD(load) nullpo_retr(-1, sd); - m = map_mapindex2mapid(sd->status.save_point.map); + m = iMap->mapindex2mapid(sd->status.save_point.map); if (m >= 0 && map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(249)); // You are not authorized to warp to your save map. return false; @@ -771,7 +771,7 @@ ACMD(load) return false; } - pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_OUTSIGHT); + iPc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_OUTSIGHT); clif->message(fd, msg_txt(7)); // Warping to save point.. return true; @@ -885,7 +885,7 @@ ACMD(option) sd->sc.opt1 = param1; sd->sc.opt2 = param2; - pc_setoption(sd, param3); + iPc->setoption(sd, param3); clif->message(fd, msg_txt(9)); // Options changed. @@ -911,10 +911,10 @@ ACMD(hide) if( map[sd->bl.m].flag.pvp && !map[sd->bl.m].flag.pvp_nocalcrank ) {// register the player for ranking calculations - sd->pvp_timer = add_timer( gettick() + 200, pc_calc_pvprank_timer, sd->bl.id, 0 ); + sd->pvp_timer = iTimer->add_timer( iTimer->gettick() + 200, iPc->calc_pvprank_timer, sd->bl.id, 0 ); } //bugreport:2266 - map_foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl); + iMap->foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl); } else { sd->sc.option |= OPTION_INVISIBLE; sd->vd.class_ = INVISIBLE_CLASS; @@ -925,7 +925,7 @@ ACMD(hide) if( map[sd->bl.m].flag.pvp && !map[sd->bl.m].flag.pvp_nocalcrank && sd->pvp_timer != INVALID_TIMER ) {// unregister the player for ranking - delete_timer( sd->pvp_timer, pc_calc_pvprank_timer ); + iTimer->delete_timer( sd->pvp_timer, iPc->calc_pvprank_timer ); sd->pvp_timer = INVALID_TIMER; } } @@ -951,7 +951,7 @@ ACMD(jobchange) // Normal Jobs for( i = JOB_NOVICE; i < JOB_MAX_BASIC && !found; i++ ){ - if (strncmpi(message, job_name(i), 16) == 0) { + if (strncmpi(message, iPc->job_name(i), 16) == 0) { job = i; found = true; } @@ -959,7 +959,7 @@ ACMD(jobchange) // High Jobs, Babys and Third for( i = JOB_NOVICE_HIGH; i < JOB_MAX && !found; i++ ){ - if (strncmpi(message, job_name(i), 16) == 0) { + if (strncmpi(message, iPc->job_name(i), 16) == 0) { job = i; found = true; } @@ -982,7 +982,7 @@ ACMD(jobchange) if (pcdb_checkid(job)) { - if (pc_jobchange(sd, job, upper) == 0) + if (iPc->jobchange(sd, job, upper) == 0) clif->message(fd, msg_txt(12)); // Your job has been changed. else { clif->message(fd, msg_txt(155)); // You are unable to change your job. @@ -1095,7 +1095,7 @@ ACMD(heal) if ( hp < 0 && sp <= 0 ) { status_damage(NULL, &sd->bl, -hp, -sp, 0, 0); - clif->damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, 4, 0); + clif->damage(&sd->bl,&sd->bl, iTimer->gettick(), 0, 0, -hp, 0, 4, 0); clif->message(fd, msg_txt(156)); // HP or/and SP modified. return true; } @@ -1106,7 +1106,7 @@ ACMD(heal) status_heal(&sd->bl, hp, 0, 0); else { status_damage(NULL, &sd->bl, -hp, 0, 0, 0); - clif->damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, 4, 0); + clif->damage(&sd->bl,&sd->bl, iTimer->gettick(), 0, 0, -hp, 0, 4, 0); } } @@ -1166,7 +1166,7 @@ ACMD(item) item_tmp.nameid = item_id; item_tmp.identify = 1; - if ((flag = pc_additem(sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) + if ((flag = iPc->additem(sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) clif->additem(sd, 0, 0, flag); } } @@ -1239,7 +1239,7 @@ ACMD(item2) item_tmp.card[1] = c2; item_tmp.card[2] = c3; item_tmp.card[3] = c4; - if ((flag = pc_additem(sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) + if ((flag = iPc->additem(sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) clif->additem(sd, 0, 0, flag); } @@ -1263,7 +1263,7 @@ ACMD(itemreset) for (i = 0; i < MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount && sd->status.inventory[i].equip == 0) { - pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_COMMAND); + iPc->delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_COMMAND); } } clif->message(fd, msg_txt(20)); // All of your items have been removed. @@ -1286,14 +1286,14 @@ ACMD(baselevelup) } if (level > 0) { - if (sd->status.base_level >= pc_maxbaselv(sd)) { // check for max level by Valaris + if (sd->status.base_level >= iPc->maxbaselv(sd)) { // check for max level by Valaris clif->message(fd, msg_txt(47)); // Base level can't go any higher. return false; } // End Addition - if ((unsigned int)level > pc_maxbaselv(sd) || (unsigned int)level > pc_maxbaselv(sd) - sd->status.base_level) // fix positiv overflow - level = pc_maxbaselv(sd) - sd->status.base_level; + if ((unsigned int)level > iPc->maxbaselv(sd) || (unsigned int)level > iPc->maxbaselv(sd) - sd->status.base_level) // fix positiv overflow + level = iPc->maxbaselv(sd) - sd->status.base_level; for (i = 0; i < level; i++) - status_point += pc_gets_status_point(sd->status.base_level + i); + status_point += iPc->gets_status_point(sd->status.base_level + i); sd->status.status_point += status_point; sd->status.base_level += (unsigned int)level; @@ -1309,9 +1309,9 @@ ACMD(baselevelup) if ((unsigned int)level >= sd->status.base_level) level = sd->status.base_level-1; for (i = 0; i > -level; i--) - status_point += pc_gets_status_point(sd->status.base_level + i - 1); + status_point += iPc->gets_status_point(sd->status.base_level + i - 1); if (sd->status.status_point < status_point) - pc_resetstate(sd); + iPc->resetstate(sd); if (sd->status.status_point < status_point) sd->status.status_point = 0; else @@ -1325,9 +1325,9 @@ ACMD(baselevelup) clif->updatestatus(sd, SP_BASEEXP); clif->updatestatus(sd, SP_NEXTBASEEXP); status_calc_pc(sd, 0); - pc_baselevelchanged(sd); + iPc->baselevelchanged(sd); if(sd->status.party_id) - party_send_levelup(sd); + iParty->send_levelup(sd); return true; } @@ -1346,12 +1346,12 @@ ACMD(joblevelup) return false; } if (level > 0) { - if (sd->status.job_level >= pc_maxjoblv(sd)) { + if (sd->status.job_level >= iPc->maxjoblv(sd)) { clif->message(fd, msg_txt(23)); // Job level can't go any higher. return false; } - if ((unsigned int)level > pc_maxjoblv(sd) || (unsigned int)level > pc_maxjoblv(sd) - sd->status.job_level) // fix positiv overflow - level = pc_maxjoblv(sd) - sd->status.job_level; + if ((unsigned int)level > iPc->maxjoblv(sd) || (unsigned int)level > iPc->maxjoblv(sd) - sd->status.job_level) // fix positiv overflow + level = iPc->maxjoblv(sd) - sd->status.job_level; sd->status.job_level += (unsigned int)level; sd->status.skill_point += level; clif->misceffect(&sd->bl, 1); @@ -1366,7 +1366,7 @@ ACMD(joblevelup) level = sd->status.job_level-1; sd->status.job_level -= (unsigned int)level; if (sd->status.skill_point < level) - pc_resetskill(sd,0); //Reset skills since we need to substract more points. + iPc->resetskill(sd,0); //Reset skills since we need to substract more points. if (sd->status.skill_point < level) sd->status.skill_point = 0; else @@ -1469,7 +1469,7 @@ static int atcommand_pvpoff_sub(struct block_list *bl,va_list ap) TBL_PC* sd = (TBL_PC*)bl; clif->pvpset(sd, 0, 0, 2); if (sd->pvp_timer != INVALID_TIMER) { - delete_timer(sd->pvp_timer, pc_calc_pvprank_timer); + iTimer->delete_timer(sd->pvp_timer, iPc->calc_pvprank_timer); sd->pvp_timer = INVALID_TIMER; } return 0; @@ -1484,15 +1484,15 @@ ACMD(pvpoff) return false; } - map_zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); + iMap->zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); map[sd->bl.m].flag.pvp = 0; if (!battle_config.pk_mode) { clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); } - map_foreachinmap(atcommand_pvpoff_sub,sd->bl.m, BL_PC); - map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0); + iMap->foreachinmap(atcommand_pvpoff_sub,sd->bl.m, BL_PC); + iMap->foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0); clif->message(fd, msg_txt(31)); // PvP: Off. return true; } @@ -1504,7 +1504,7 @@ static int atcommand_pvpon_sub(struct block_list *bl,va_list ap) { TBL_PC* sd = (TBL_PC*)bl; if (sd->pvp_timer == INVALID_TIMER) { - sd->pvp_timer = add_timer(gettick() + 200, pc_calc_pvprank_timer, sd->bl.id, 0); + sd->pvp_timer = iTimer->add_timer(iTimer->gettick() + 200, iPc->calc_pvprank_timer, sd->bl.id, 0); sd->pvp_rank = 0; sd->pvp_lastusers = 0; sd->pvp_point = 5; @@ -1523,13 +1523,13 @@ ACMD(pvpon) return false; } - map_zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME)); + iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME)); map[sd->bl.m].flag.pvp = 1; if (!battle_config.pk_mode) {// display pvp circle and rank clif->map_property_mapall(sd->bl.m, MAPPROPERTY_FREEPVPZONE); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); - map_foreachinmap(atcommand_pvpon_sub,sd->bl.m, BL_PC); + iMap->foreachinmap(atcommand_pvpon_sub,sd->bl.m, BL_PC); } clif->message(fd, msg_txt(32)); // PvP: On. @@ -1549,11 +1549,11 @@ ACMD(gvgoff) return false; } - map_zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); + iMap->zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); map[sd->bl.m].flag.gvg = 0; clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); - map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0); + iMap->foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0); clif->message(fd, msg_txt(33)); // GvG: Off. return true; @@ -1571,7 +1571,7 @@ ACMD(gvgon) return false; } - map_zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME)); + iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME)); map[sd->bl.m].flag.gvg = 1; clif->map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE); clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP); @@ -1600,9 +1600,9 @@ ACMD(model) if (hair_style >= MIN_HAIR_STYLE && hair_style <= MAX_HAIR_STYLE && hair_color >= MIN_HAIR_COLOR && hair_color <= MAX_HAIR_COLOR && cloth_color >= MIN_CLOTH_COLOR && cloth_color <= MAX_CLOTH_COLOR) { - pc_changelook(sd, LOOK_HAIR, hair_style); - pc_changelook(sd, LOOK_HAIR_COLOR, hair_color); - pc_changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); + iPc->changelook(sd, LOOK_HAIR, hair_style); + iPc->changelook(sd, LOOK_HAIR_COLOR, hair_color); + iPc->changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); clif->message(fd, msg_txt(36)); // Appearence changed. } else { clif->message(fd, msg_txt(37)); // An invalid number was specified. @@ -1629,7 +1629,7 @@ ACMD(dye) } if (cloth_color >= MIN_CLOTH_COLOR && cloth_color <= MAX_CLOTH_COLOR) { - pc_changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); + iPc->changelook(sd, LOOK_CLOTHES_COLOR, cloth_color); clif->message(fd, msg_txt(36)); // Appearence changed. } else { clif->message(fd, msg_txt(37)); // An invalid number was specified. @@ -1656,7 +1656,7 @@ ACMD(hair_style) } if (hair_style >= MIN_HAIR_STYLE && hair_style <= MAX_HAIR_STYLE) { - pc_changelook(sd, LOOK_HAIR, hair_style); + iPc->changelook(sd, LOOK_HAIR, hair_style); clif->message(fd, msg_txt(36)); // Appearence changed. } else { clif->message(fd, msg_txt(37)); // An invalid number was specified. @@ -1683,7 +1683,7 @@ ACMD(hair_color) } if (hair_color >= MIN_HAIR_COLOR && hair_color <= MAX_HAIR_COLOR) { - pc_changelook(sd, LOOK_HAIR_COLOR, hair_color); + iPc->changelook(sd, LOOK_HAIR_COLOR, hair_color); clif->message(fd, msg_txt(36)); // Appearence changed. } else { clif->message(fd, msg_txt(37)); // An invalid number was specified. @@ -1864,7 +1864,7 @@ ACMD(go) if (town >= 0 && town < ARRAYLENGTH(data)) { - m = map_mapname2mapid(data[town].map); + m = iMap->mapname2mapid(data[town].map); if (m >= 0 && map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif->message(fd, msg_txt(247)); return false; @@ -1873,7 +1873,7 @@ ACMD(go) clif->message(fd, msg_txt(248)); return false; } - if (pc_setpos(sd, mapindex_name2id(data[town].map), data[town].x, data[town].y, CLR_TELEPORT) == 0) { + if (iPc->setpos(sd, mapindex_name2id(data[town].map), data[town].x, data[town].y, CLR_TELEPORT) == 0) { clif->message(fd, msg_txt(0)); // Warped. } else { clif->message(fd, msg_txt(1)); // Map not found. @@ -1964,7 +1964,7 @@ ACMD(monster) count = 0; range = (int)sqrt((float)number) +2; // calculation of an odd number (+ 4 area around) for (i = 0; i < number; i++) { - map_search_freecell(&sd->bl, 0, &mx, &my, range, range, 0); + iMap->search_freecell(&sd->bl, 0, &mx, &my, range, range, 0); k = mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, eventname, size, AI_NONE); count += (k != 0) ? 1 : 0; } @@ -2016,13 +2016,13 @@ ACMD(killmonster) if (!message || !*message || sscanf(message, "%15s", map_name) < 1) map_id = sd->bl.m; else { - if ((map_id = map_mapname2mapid(map_name)) < 0) + if ((map_id = iMap->mapname2mapid(map_name)) < 0) map_id = sd->bl.m; } drop_flag = strcmp(command+1, "killmonster2"); - map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, -drop_flag); + iMap->foreachinmap(atkillmonster_sub, map_id, BL_MOB, -drop_flag); clif->message(fd, msg_txt(165)); // All monsters killed! @@ -2085,11 +2085,11 @@ ACMD(refine) if (sd->status.inventory[i].refine != final_refine) { sd->status.inventory[i].refine = final_refine; current_position = sd->status.inventory[i].equip; - pc_unequipitem(sd, i, 3); + iPc->unequipitem(sd, i, 3); clif->refine(fd, 0, i, sd->status.inventory[i].refine); clif->delitem(sd, i, 1, 3); clif->additem(sd, i, 1, 0); - pc_equipitem(sd, i, current_position); + iPc->equipitem(sd, i, current_position); clif->misceffect(&sd->bl, 3); count++; } @@ -2155,7 +2155,7 @@ ACMD(produce) clif->produce_effect(sd, 0, item_id); clif->misceffect(&sd->bl, 3); - if ((flag = pc_additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND))) + if ((flag = iPc->additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND))) clif->additem(sd, 0, 0, flag); } else { sprintf(atcmd_output, msg_txt(169), item_id, item_data->name); // The item (%d: '%s') is not equipable. @@ -2198,7 +2198,7 @@ ACMD(memo) return false; } - pc_memo(sd, position); + iPc->memo(sd, position); return true; } @@ -2215,11 +2215,11 @@ ACMD(gat) for (y = 2; y >= -2; y--) { sprintf(atcmd_output, "%s (x= %d, y= %d) %02X %02X %02X %02X %02X", map[sd->bl.m].name, sd->bl.x - 2, sd->bl.y + y, - map_getcell(sd->bl.m, sd->bl.x - 2, sd->bl.y + y, CELL_GETTYPE), - map_getcell(sd->bl.m, sd->bl.x - 1, sd->bl.y + y, CELL_GETTYPE), - map_getcell(sd->bl.m, sd->bl.x, sd->bl.y + y, CELL_GETTYPE), - map_getcell(sd->bl.m, sd->bl.x + 1, sd->bl.y + y, CELL_GETTYPE), - map_getcell(sd->bl.m, sd->bl.x + 2, sd->bl.y + y, CELL_GETTYPE)); + iMap->getcell(sd->bl.m, sd->bl.x - 2, sd->bl.y + y, CELL_GETTYPE), + iMap->getcell(sd->bl.m, sd->bl.x - 1, sd->bl.y + y, CELL_GETTYPE), + iMap->getcell(sd->bl.m, sd->bl.x, sd->bl.y + y, CELL_GETTYPE), + iMap->getcell(sd->bl.m, sd->bl.x + 1, sd->bl.y + y, CELL_GETTYPE), + iMap->getcell(sd->bl.m, sd->bl.x + 2, sd->bl.y + y, CELL_GETTYPE)); clif->message(fd, atcmd_output); } @@ -2361,12 +2361,12 @@ ACMD(zeny) } if(zeny > 0){ - if((ret=pc_getzeny(sd,zeny,LOG_TYPE_COMMAND,NULL)) == 1) + if((ret=iPc->getzeny(sd,zeny,LOG_TYPE_COMMAND,NULL)) == 1) clif->message(fd, msg_txt(149)); // Unable to increase the number/value. } else { if( sd->status.zeny < -zeny ) zeny = -sd->status.zeny; - if((ret=pc_payzeny(sd,-zeny,LOG_TYPE_COMMAND,NULL)) == 1) + if((ret=iPc->payzeny(sd,-zeny,LOG_TYPE_COMMAND,NULL)) == 1) clif->message(fd, msg_txt(41)); // Unable to decrease the number/value. } if(!ret) clif->message(fd, msg_txt(176)); //ret=0 mean cmd success @@ -2701,13 +2701,13 @@ ACMD(recall) { return false; } - if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL) + if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. return false; } - if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) + if ( iPc->get_group_level(sd) < iPc->get_group_level(pl_sd) ) { clif->message(fd, msg_txt(81)); // Your GM level doesn't authorize you to preform this action on the specified player. return false; @@ -2724,7 +2724,7 @@ ACMD(recall) { if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) { return false; } - pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); + iPc->setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); sprintf(atcmd_output, msg_txt(46), pl_sd->status.name); // %s recalled! clif->message(fd, atcmd_output); @@ -2838,7 +2838,7 @@ ACMD(char_ban) tmtime->tm_min = tmtime->tm_min + minute; tmtime->tm_sec = tmtime->tm_sec + second; timestamp = mktime(tmtime); - if( timestamp <= time(NULL) && !pc_can_use_command(sd, "@unban") ) { + if( timestamp <= time(NULL) && !iPc->can_use_command(sd, "@unban") ) { clif->message(fd,msg_txt(1023)); // You are not allowed to reduce the length of a ban. return false; } @@ -2898,8 +2898,8 @@ ACMD(night) { nullpo_retr(-1, sd); - if (night_flag != 1) { - map_night_timer(night_timer_tid, 0, 0, 1); + if (iMap->night_flag != 1) { + iPc->map_night_timer(iPc->night_timer_tid, 0, 0, 1); } else { clif->message(fd, msg_txt(89)); // Night mode is already enabled. return false; @@ -2915,8 +2915,8 @@ ACMD(day) { nullpo_retr(-1, sd); - if (night_flag != 0) { - map_day_timer(day_timer_tid, 0, 0, 1); + if (iMap->night_flag != 0) { + iPc->map_day_timer(iPc->day_timer_tid, 0, 0, 1); } else { clif->message(fd, msg_txt(90)); // Day mode is already enabled. return false; @@ -2938,7 +2938,7 @@ ACMD(doom) iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { - if (pl_sd->fd != fd && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) + if (pl_sd->fd != fd && iPc->get_group_level(sd) >= iPc->get_group_level(pl_sd)) { status_kill(&pl_sd->bl); clif->specialeffect(&pl_sd->bl,450,AREA); @@ -2965,7 +2965,7 @@ ACMD(doommap) iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { - if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) + if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && iPc->get_group_level(sd) >= iPc->get_group_level(pl_sd)) { status_kill(&pl_sd->bl); clif->specialeffect(&pl_sd->bl,450,AREA); @@ -3047,13 +3047,13 @@ ACMD(kick) return false; } - if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL) + if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. return false; } - if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) + if ( iPc->get_group_level(sd) < iPc->get_group_level(pl_sd) ) { clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player. return false; @@ -3076,7 +3076,7 @@ ACMD(kickall) iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { - if (pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { // you can kick only lower or same gm level + if (iPc->get_group_level(sd) >= iPc->get_group_level(pl_sd)) { // you can kick only lower or same gm level if (sd->status.account_id != pl_sd->status.account_id) clif->GM_kick(NULL, pl_sd); } @@ -3094,7 +3094,7 @@ ACMD(kickall) ACMD(allskill) { nullpo_retr(-1, sd); - pc_allskillup(sd); // all skills + iPc->allskillup(sd); // all skills sd->status.skill_point = 0; // 0 skill points clif->updatestatus(sd, SP_SKILLPOINT); // update clif->message(fd, msg_txt(76)); // All skills have been added to your skill tree. @@ -3134,12 +3134,12 @@ ACMD(questskill) clif->message(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill. return false; } - if (pc_checkskill2(sd, index) > 0) { + if (iPc->checkskill2(sd, index) > 0) { clif->message(fd, msg_txt(196)); // You already have this quest skill. return false; } - pc_skill(sd, skill_id, 1, 0); + iPc->skill(sd, skill_id, 1, 0); clif->message(fd, msg_txt(70)); // You have learned the skill. return true; @@ -3177,7 +3177,7 @@ ACMD(lostskill) clif->message(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill. return false; } - if (pc_checkskill2(sd, index) == 0) { + if (iPc->checkskill2(sd, index) == 0) { clif->message(fd, msg_txt(201)); // You don't have this quest skill. return false; } @@ -3210,7 +3210,7 @@ ACMD(spiritball) } if( sd->spiritball > 0 ) - pc_delspiritball(sd, sd->spiritball, 1); + iPc->delspiritball(sd, sd->spiritball, 1); sd->spiritball = number; clif->spiritball(&sd->bl); // no message, player can look the difference @@ -3233,7 +3233,7 @@ ACMD(party) return false; } - party_create(sd, party, 0, 0); + iParty->create(sd, party, 0, 0); return true; } @@ -3299,12 +3299,12 @@ ACMD(breakguild) ACMD(agitstart) { nullpo_retr(-1, sd); - if (agit_flag == 1) { + if (iMap->agit_flag == 1) { clif->message(fd, msg_txt(73)); // War of Emperium is currently in progress. return false; } - agit_flag = 1; + iMap->agit_flag = 1; guild->agit_start(); clif->message(fd, msg_txt(72)); // War of Emperium has been initiated. @@ -3317,12 +3317,12 @@ ACMD(agitstart) ACMD(agitstart2) { nullpo_retr(-1, sd); - if (agit2_flag == 1) { + if (iMap->agit2_flag == 1) { clif->message(fd, msg_txt(404)); // "War of Emperium SE is currently in progress." return false; } - agit2_flag = 1; + iMap->agit2_flag = 1; guild->agit2_start(); clif->message(fd, msg_txt(403)); // "War of Emperium SE has been initiated." @@ -3335,12 +3335,12 @@ ACMD(agitstart2) ACMD(agitend) { nullpo_retr(-1, sd); - if (agit_flag == 0) { + if (iMap->agit_flag == 0) { clif->message(fd, msg_txt(75)); // War of Emperium is currently not in progress. return false; } - agit_flag = 0; + iMap->agit_flag = 0; guild->agit_end(); clif->message(fd, msg_txt(74)); // War of Emperium has been ended. @@ -3353,12 +3353,12 @@ ACMD(agitend) ACMD(agitend2) { nullpo_retr(-1, sd); - if (agit2_flag == 0) { + if (iMap->agit2_flag == 0) { clif->message(fd, msg_txt(406)); // "War of Emperium SE is currently not in progress." return false; } - agit2_flag = 0; + iMap->agit2_flag = 0; guild->agit2_end(); clif->message(fd, msg_txt(405)); // "War of Emperium SE has been ended." @@ -3372,7 +3372,7 @@ ACMD(mapexit) { nullpo_retr(-1, sd); - do_shutdown(); + iMap->do_shutdown(); return true; } @@ -3433,7 +3433,7 @@ ACMD(recallall) iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { - if (sd->status.account_id != pl_sd->status.account_id && pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) + if (sd->status.account_id != pl_sd->status.account_id && iPc->get_group_level(sd) >= iPc->get_group_level(pl_sd)) { if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) continue; // Don't waste time warping the character to the same place. @@ -3441,10 +3441,10 @@ ACMD(recallall) count++; else { if (pc_isdead(pl_sd)) { //Wake them up - pc_setstand(pl_sd); - pc_setrestartvalue(pl_sd,1); + iPc->setstand(pl_sd); + iPc->setrestartvalue(pl_sd,1); } - pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); + iPc->setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); } } } @@ -3498,12 +3498,12 @@ ACMD(guildrecall) { if (sd->status.account_id != pl_sd->status.account_id && pl_sd->status.guild_id == g->guild_id) { - if (pc_get_group_level(pl_sd) > pc_get_group_level(sd) || (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y)) + if (iPc->get_group_level(pl_sd) > iPc->get_group_level(sd) || (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y)) continue; // Skip GMs greater than you... or chars already on the cell if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) count++; else - pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); + iPc->setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); } } mapit->free(iter); @@ -3543,8 +3543,8 @@ ACMD(partyrecall) return false; } - if ((p = party_searchname(party_name)) == NULL && // name first to avoid error when name begin with a number - (p = party_search(atoi(message))) == NULL) + if ((p = iParty->searchname(party_name)) == NULL && // name first to avoid error when name begin with a number + (p = iParty->search(atoi(message))) == NULL) { clif->message(fd, msg_txt(96)); // Incorrect name or ID, or no one from the party is online. return false; @@ -3557,12 +3557,12 @@ ACMD(partyrecall) { if (sd->status.account_id != pl_sd->status.account_id && pl_sd->status.party_id == p->party.party_id) { - if (pc_get_group_level(pl_sd) > pc_get_group_level(sd) || (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y)) + if (iPc->get_group_level(pl_sd) > iPc->get_group_level(sd) || (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y)) continue; // Skip GMs greater than you... or chars already on the cell if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) count++; else - pc_setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); + iPc->setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN); } } mapit->free(iter); @@ -3634,7 +3634,7 @@ ACMD(reloadatcommand) { config_destroy(&run_test); - if (conf_read_file(&run_test, ATCOMMAND_CONF_FILENAME)) { + if (conf_read_file(&run_test, iMap->ATCOMMAND_CONF_FILENAME)) { clif->message(fd, msg_txt(1037)); // Error reading atcommand.conf, reload failed. return false; } @@ -3654,7 +3654,7 @@ ACMD(reloadbattleconf) struct Battle_Config prev_config; memcpy(&prev_config, &battle_config, sizeof(prev_config)); - battle->config_read(BATTLE_CONF_FILENAME); + battle->config_read(iMap->BATTLE_CONF_FILENAME); if( prev_config.item_rate_mvp != battle_config.item_rate_mvp || prev_config.item_rate_common != battle_config.item_rate_common @@ -3708,7 +3708,7 @@ ACMD(reloadstatusdb) *------------------------------------------*/ ACMD(reloadpcdb) { - pc_readdb(); + iPc->readdb(); clif->message(fd, msg_txt(257)); return true; } @@ -3723,7 +3723,7 @@ ACMD(reloadscript) //atcommand_broadcast( fd, sd, "@broadcast", "You will feel a bit of lag at this point !" ); flush_fifos(); - map_reloadnpc(true); // reload config files seeking for npcs + iMap->reloadnpc(true); // reload config files seeking for npcs script_reload(); npc_reload(); @@ -3766,9 +3766,9 @@ ACMD(mapinfo) { if (mapname[0] == '\0') { safestrncpy(mapname, mapindex_id2name(sd->mapindex), MAP_NAME_LENGTH); - m_id = map_mapindex2mapid(sd->mapindex); + m_id = iMap->mapindex2mapid(sd->mapindex); } else { - m_id = map_mapname2mapid(mapname); + m_id = iMap->mapname2mapid(mapname); } if (m_id < 0) { @@ -3786,7 +3786,7 @@ ACMD(mapinfo) { if( pl_sd->mapindex == m_index ) { if( pl_sd->state.vending ) vend_num++; - else if( (cd = (struct chat_data*)map_id2bl(pl_sd->chatID)) != NULL && cd->usersd[0] == pl_sd ) + else if( (cd = (struct chat_data*)iMap->id2bl(pl_sd->chatID)) != NULL && cd->usersd[0] == pl_sd ) chat_num++; } } @@ -3966,7 +3966,7 @@ ACMD(mapinfo) { iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { - if ((cd = (struct chat_data*)map_id2bl(pl_sd->chatID)) != NULL && + if ((cd = (struct chat_data*)iMap->id2bl(pl_sd->chatID)) != NULL && pl_sd->mapindex == m_index && cd->usersd[0] == pl_sd) { @@ -4001,47 +4001,47 @@ ACMD(mount_peco) return false; } - if( (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT && pc_checkskill(sd,RK_DRAGONTRAINING) > 0 ) { + if( (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT && iPc->checkskill(sd,RK_DRAGONTRAINING) > 0 ) { if( !(sd->sc.option&OPTION_DRAGON1) ) { clif->message(sd->fd,msg_txt(1119)); // You have mounted your Dragon. - pc_setoption(sd, sd->sc.option|OPTION_DRAGON1); + iPc->setoption(sd, sd->sc.option|OPTION_DRAGON1); } else { clif->message(sd->fd,msg_txt(1120)); // You have released your Dragon. - pc_setoption(sd, sd->sc.option&~OPTION_DRAGON1); + iPc->setoption(sd, sd->sc.option&~OPTION_DRAGON1); } return true; } - if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER && pc_checkskill(sd,RA_WUGRIDER) > 0 ) { + if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER && iPc->checkskill(sd,RA_WUGRIDER) > 0 ) { if( !pc_isridingwug(sd) ) { clif->message(sd->fd,msg_txt(1121)); // You have mounted your Warg. - pc_setoption(sd, sd->sc.option|OPTION_WUGRIDER); + iPc->setoption(sd, sd->sc.option|OPTION_WUGRIDER); } else { clif->message(sd->fd,msg_txt(1122)); // You have released your Warg. - pc_setoption(sd, sd->sc.option&~OPTION_WUGRIDER); + iPc->setoption(sd, sd->sc.option&~OPTION_WUGRIDER); } return true; } if( (sd->class_&MAPID_THIRDMASK) == MAPID_MECHANIC ) { if( !pc_ismadogear(sd) ) { clif->message(sd->fd,msg_txt(1123)); // You have mounted your Mado Gear. - pc_setoption(sd, sd->sc.option|OPTION_MADOGEAR); + iPc->setoption(sd, sd->sc.option|OPTION_MADOGEAR); } else { clif->message(sd->fd,msg_txt(1124)); // You have released your Mado Gear. - pc_setoption(sd, sd->sc.option&~OPTION_MADOGEAR); + iPc->setoption(sd, sd->sc.option&~OPTION_MADOGEAR); } return true; } if (!pc_isriding(sd)) { // if actually no peco - if (!pc_checkskill(sd, KN_RIDING)) { + if (!iPc->checkskill(sd, KN_RIDING)) { clif->message(fd, msg_txt(213)); // You can not mount a Peco Peco with your current job. return false; } - pc_setoption(sd, sd->sc.option | OPTION_RIDING); + iPc->setoption(sd, sd->sc.option | OPTION_RIDING); clif->message(fd, msg_txt(102)); // You have mounted a Peco Peco. } else {//Dismount - pc_setoption(sd, sd->sc.option & ~OPTION_RIDING); + iPc->setoption(sd, sd->sc.option & ~OPTION_RIDING); clif->message(fd, msg_txt(214)); // You have released your Peco Peco. } @@ -4060,7 +4060,7 @@ ACMD(guildspy) memset(guild_name, '\0', sizeof(guild_name)); memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!enable_spy) + if (!iMap->enable_spy) { clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled. return false; @@ -4101,7 +4101,7 @@ ACMD(partyspy) memset(party_name, '\0', sizeof(party_name)); memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!enable_spy) + if (!iMap->enable_spy) { clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled. return false; @@ -4112,8 +4112,8 @@ ACMD(partyspy) return false; } - if ((p = party_searchname(party_name)) != NULL || // name first to avoid error when name begin with a number - (p = party_search(atoi(message))) != NULL) { + if ((p = iParty->searchname(party_name)) != NULL || // name first to avoid error when name begin with a number + (p = iParty->search(atoi(message))) != NULL) { if (sd->partyspy == p->party.party_id) { sd->partyspy = 0; sprintf(atcmd_output, msg_txt(105), p->party.name); // No longer spying on the %s party. @@ -4175,9 +4175,9 @@ ACMD(nuke) return false; } - if ((pl_sd = map_nick2sd(atcmd_player_name)) != NULL) { - if (pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { // you can kill only lower or same GM level - skill->castend_nodamage_id(&pl_sd->bl, &pl_sd->bl, NPC_SELFDESTRUCTION, 99, gettick(), 0); + if ((pl_sd = iMap->nick2sd(atcmd_player_name)) != NULL) { + if (iPc->get_group_level(sd) >= iPc->get_group_level(pl_sd)) { // you can kill only lower or same GM level + skill->castend_nodamage_id(&pl_sd->bl, &pl_sd->bl, NPC_SELFDESTRUCTION, 99, iTimer->gettick(), 0); clif->message(fd, msg_txt(109)); // Player has been nuked! } else { clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player. @@ -4209,7 +4209,7 @@ ACMD(tonpc) } if ((nd = npc_name2id(npcname)) != NULL) { - if (pc_setpos(sd, map_id2index(nd->bl.m), nd->bl.x, nd->bl.y, CLR_TELEPORT) == 0) + if (iPc->setpos(sd, map_id2index(nd->bl.m), nd->bl.x, nd->bl.y, CLR_TELEPORT) == 0) clif->message(fd, msg_txt(0)); // Warped. else return false; @@ -4384,31 +4384,31 @@ ACMD(servertime) clif->message(fd, temp); if (battle_config.night_duration == 0 && battle_config.day_duration == 0) { - if (night_flag == 0) + if (iMap->night_flag == 0) clif->message(fd, msg_txt(231)); // Game time: The game is in permanent daylight. else clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night. } else if (battle_config.night_duration == 0) - if (night_flag == 1) { // we start with night - timer_data = get_timer(day_timer_tid); - sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,gettick())/1000)); // Game time: The game is actualy in night for %s. + if (iMap->night_flag == 1) { // we start with night + timer_data = iTimer->get_timer(iPc->day_timer_tid); + sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,iTimer->gettick())/1000)); // Game time: The game is actualy in night for %s. clif->message(fd, temp); clif->message(fd, msg_txt(234)); // Game time: After, the game will be in permanent daylight. } else clif->message(fd, msg_txt(231)); // Game time: The game is in permanent daylight. else if (battle_config.day_duration == 0) - if (night_flag == 0) { // we start with day - timer_data = get_timer(night_timer_tid); - sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,gettick())/1000)); // Game time: The game is actualy in daylight for %s. + if (iMap->night_flag == 0) { // we start with day + timer_data = iTimer->get_timer(iPc->night_timer_tid); + sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,iTimer->gettick())/1000)); // Game time: The game is actualy in daylight for %s. clif->message(fd, temp); clif->message(fd, msg_txt(236)); // Game time: After, the game will be in permanent night. } else clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night. else { - if (night_flag == 0) { - timer_data = get_timer(night_timer_tid); - timer_data2 = get_timer(day_timer_tid); - sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,gettick())/1000)); // Game time: The game is actualy in daylight for %s. + if (iMap->night_flag == 0) { + timer_data = iTimer->get_timer(iPc->night_timer_tid); + timer_data2 = iTimer->get_timer(iPc->day_timer_tid); + sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,iTimer->gettick())/1000)); // Game time: The game is actualy in daylight for %s. clif->message(fd, temp); if (DIFF_TICK(timer_data->tick, timer_data2->tick) > 0) sprintf(temp, msg_txt(237), txt_time(DIFF_TICK(timer_data->interval,DIFF_TICK(timer_data->tick,timer_data2->tick)) / 1000)); // Game time: After, the game will be in night for %s. @@ -4418,9 +4418,9 @@ ACMD(servertime) sprintf(temp, msg_txt(238), txt_time(timer_data->interval / 1000)); // Game time: A day cycle has a normal duration of %s. clif->message(fd, temp); } else { - timer_data = get_timer(day_timer_tid); - timer_data2 = get_timer(night_timer_tid); - sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,gettick()) / 1000)); // Game time: The game is actualy in night for %s. + timer_data = iTimer->get_timer(iPc->day_timer_tid); + timer_data2 = iTimer->get_timer(iPc->night_timer_tid); + sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,iTimer->gettick()) / 1000)); // Game time: The game is actualy in night for %s. clif->message(fd, temp); if (DIFF_TICK(timer_data->tick,timer_data2->tick) > 0) sprintf(temp, msg_txt(239), txt_time((timer_data->interval - DIFF_TICK(timer_data->tick, timer_data2->tick)) / 1000)); // Game time: After, the game will be in daylight for %s. @@ -4481,12 +4481,12 @@ ACMD(jail) return false; } - if ((pl_sd = map_nick2sd(atcmd_player_name)) == NULL) { + if ((pl_sd = iMap->nick2sd(atcmd_player_name)) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. return false; } - if (pc_get_group_level(sd) < pc_get_group_level(pl_sd)) + if (iPc->get_group_level(sd) < iPc->get_group_level(pl_sd)) { // you can jail only lower or same GM clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player. return false; @@ -4533,12 +4533,12 @@ ACMD(unjail) return false; } - if ((pl_sd = map_nick2sd(atcmd_player_name)) == NULL) { + if ((pl_sd = iMap->nick2sd(atcmd_player_name)) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. return false; } - if (pc_get_group_level(sd) < pc_get_group_level(pl_sd)) { // you can jail only lower or same GM + if (iPc->get_group_level(sd) < iPc->get_group_level(pl_sd)) { // you can jail only lower or same GM clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player. return false; @@ -4613,12 +4613,12 @@ ACMD(jailfor) return false; } - if ((pl_sd = map_nick2sd(atcmd_player_name)) == NULL) { + if ((pl_sd = iMap->nick2sd(atcmd_player_name)) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. return false; } - if (pc_get_group_level(pl_sd) > pc_get_group_level(sd)) { + if (iPc->get_group_level(pl_sd) > iPc->get_group_level(sd)) { clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player. return false; } @@ -4738,7 +4738,7 @@ ACMD(disguise) return false; } - pc_disguise(sd, id); + iPc->disguise(sd, id); clif->message(fd, msg_txt(122)); // Disguise applied. return true; @@ -4769,7 +4769,7 @@ ACMD(disguiseall) iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) - pc_disguise(pl_sd, mob_id); + iPc->disguise(pl_sd, mob_id); mapit->free(iter); clif->message(fd, msg_txt(122)); // Disguise applied. @@ -4817,7 +4817,7 @@ ACMD(disguiseguild) for( i = 0; i < g->max_member; i++ ) if( (pl_sd = g->member[i].sd) && !pc_isriding(pl_sd) ) - pc_disguise(pl_sd, id); + iPc->disguise(pl_sd, id); clif->message(fd, msg_txt(122)); // Disguise applied. return true; @@ -4831,7 +4831,7 @@ ACMD(undisguise) { nullpo_retr(-1, sd); if (sd->disguise != -1) { - pc_disguise(sd, -1); + iPc->disguise(sd, -1); clif->message(fd, msg_txt(124)); // Undisguise applied. } else { clif->message(fd, msg_txt(125)); // You're not disguised. @@ -4852,7 +4852,7 @@ ACMD(undisguiseall) { iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) if( pl_sd->disguise != -1 ) - pc_disguise(pl_sd, -1); + iPc->disguise(pl_sd, -1); mapit->free(iter); clif->message(fd, msg_txt(124)); // Undisguise applied. @@ -4885,7 +4885,7 @@ ACMD(undisguiseguild) for(i = 0; i < g->max_member; i++) if( (pl_sd = g->member[i].sd) && pl_sd->disguise != -1 ) - pc_disguise(pl_sd, -1); + iPc->disguise(pl_sd, -1); clif->message(fd, msg_txt(124)); // Undisguise applied. @@ -4902,11 +4902,11 @@ ACMD(exp) nullpo_retr(-1, sd); memset(output, '\0', sizeof(output)); - nextb = pc_nextbaseexp(sd); + nextb = iPc->nextbaseexp(sd); if (nextb) nextb = sd->status.base_exp*100.0/nextb; - nextj = pc_nextjobexp(sd); + nextj = iPc->nextjobexp(sd); if (nextj) nextj = sd->status.job_exp*100.0/nextj; @@ -5042,7 +5042,7 @@ ACMD(killable) clif->message(fd, msg_txt(242)); else { clif->message(fd, msg_txt(288)); - map_foreachinrange(atcommand_stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id); + iMap->foreachinrange(atcommand_stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id); } return true; } @@ -5101,9 +5101,9 @@ ACMD(npcmove) x = cap_value(x, 0, map[m].xs-1); y = cap_value(y, 0, map[m].ys-1); - map_foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); - map_moveblock(&nd->bl, x, y, gettick()); - map_foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); + iMap->foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); + iMap->moveblock(&nd->bl, x, y, iTimer->gettick()); + iMap->foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); clif->message(fd, msg_txt(1155)); // NPC moved. return true; @@ -5158,22 +5158,22 @@ ACMD(follow) if (sd->followtarget == -1) return false; - pc_stop_following (sd); + iPc->stop_following (sd); clif->message(fd, msg_txt(1159)); // Follow mode OFF. return true; } - if ( (pl_sd = map_nick2sd((char *)message)) == NULL ) + if ( (pl_sd = iMap->nick2sd((char *)message)) == NULL ) { clif->message(fd, msg_txt(3)); // Character not found. return false; } if (sd->followtarget == pl_sd->bl.id) { - pc_stop_following (sd); + iPc->stop_following (sd); clif->message(fd, msg_txt(1159)); // Follow mode OFF. } else { - pc_follow(sd, pl_sd->bl.id); + iPc->follow(sd, pl_sd->bl.id); clif->message(fd, msg_txt(1160)); // Follow mode ON. } @@ -5192,8 +5192,8 @@ ACMD(dropall) for (i = 0; i < MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount) { if(sd->status.inventory[i].equip != 0) - pc_unequipitem(sd, i, 3); - pc_dropitem(sd, i, sd->status.inventory[i].amount); + iPc->unequipitem(sd, i, 3); + iPc->dropitem(sd, i, sd->status.inventory[i].amount); } } return true; @@ -5219,7 +5219,7 @@ ACMD(storeall) for (i = 0; i < MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount) { if(sd->status.inventory[i].equip != 0) - pc_unequipitem(sd, i, 3); + iPc->unequipitem(sd, i, 3); storage_storageadd(sd, i, sd->status.inventory[i].amount); } } @@ -5306,7 +5306,7 @@ ACMD(clearcart) for( i = 0; i < MAX_CART; i++ ) if(sd->status.cart[i].nameid > 0) - pc_cart_delitem(sd, i, sd->status.cart[i].amount, 1, LOG_TYPE_OTHER); + iPc->cart_delitem(sd, i, sd->status.cart[i].amount, 1, LOG_TYPE_OTHER); clif->clearcart(fd); clif->updatestatus(sd,SP_CARTINFO); @@ -5340,12 +5340,12 @@ ACMD(skillid) { iter = db_iterator(skilldb_name2id); for( data = iter->first(iter,&key); iter->exists(iter); data = iter->next(iter,&key) ) { - idx = skill->get_index(DB->data2i(data)); + idx = skill->get_index(iDB->data2i(data)); if (strnicmp(key.str, message, skillen) == 0 || strnicmp(skill_db[idx].desc, message, skillen) == 0) { - sprintf(atcmd_output, msg_txt(1164), DB->data2i(data), skill_db[idx].desc, key.str); // skill %d: %s (%s) + sprintf(atcmd_output, msg_txt(1164), iDB->data2i(data), skill_db[idx].desc, key.str); // skill %d: %s (%s) clif->message(fd, atcmd_output); } else if ( found < MAX_SKILLID_PARTIAL_RESULTS && ( stristr(key.str,message) || stristr(skill_db[idx].desc,message) ) ) { - snprintf(partials[found++], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_txt(1164), DB->data2i(data), skill_db[idx].desc, key.str); + snprintf(partials[found++], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_txt(1164), iDB->data2i(data), skill_db[idx].desc, key.str); } } @@ -5382,12 +5382,12 @@ ACMD(useskill) } if(!strcmp(target,"self")) pl_sd = sd; //quick keyword - else if ( (pl_sd = map_nick2sd(target)) == NULL ){ + else if ( (pl_sd = iMap->nick2sd(target)) == NULL ){ clif->message(fd, msg_txt(3)); // Character not found. return false; } - if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) + if ( iPc->get_group_level(sd) < iPc->get_group_level(pl_sd) ) { clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player. return false; @@ -5426,7 +5426,7 @@ ACMD(displayskill) return false; } status = status_get_status_data(&sd->bl); - tick = gettick(); + tick = iTimer->gettick(); clif->skill_damage(&sd->bl,&sd->bl, tick, status->amotion, status->dmotion, 1, 1, skill_id, skill_lv, 5); clif->skill_nodamage(&sd->bl, &sd->bl, skill_id, skill_lv, 1); clif->skill_poseffect(&sd->bl, skill_id, skill_lv, sd->bl.x, sd->bl.y, tick); @@ -5451,16 +5451,16 @@ ACMD(skilltree) return false; } - if ( (pl_sd = map_nick2sd(target)) == NULL ) + if ( (pl_sd = iMap->nick2sd(target)) == NULL ) { clif->message(fd, msg_txt(3)); // Character not found. return false; } - c = pc_calc_skilltree_normalize_job(pl_sd); - c = pc_mapid2jobid(c, pl_sd->status.sex); + c = iPc->calc_skilltree_normalize_job(pl_sd); + c = iPc->mapid2jobid(c, pl_sd->status.sex); - sprintf(atcmd_output, msg_txt(1168), job_name(c), pc_checkskill(pl_sd, NV_BASIC)); // Player is using %s skill tree (%d basic points). + sprintf(atcmd_output, msg_txt(1168), iPc->job_name(c), iPc->checkskill(pl_sd, NV_BASIC)); // Player is using %s skill tree (%d basic points). clif->message(fd, atcmd_output); ARR_FIND( 0, MAX_SKILL_TREE, j, skill_tree[c][j].id == 0 || skill_tree[c][j].id == skill_id ); @@ -5475,7 +5475,7 @@ ACMD(skilltree) meets = 1; for(j=0;j<MAX_PC_SKILL_REQUIRE;j++) { - if( ent->need[j].id && pc_checkskill(sd,ent->need[j].id) < ent->need[j].lv) + if( ent->need[j].id && iPc->checkskill(sd,ent->need[j].id) < ent->need[j].lv) { sprintf(atcmd_output, msg_txt(1170), ent->need[j].lv, skill_db[ent->need[j].id].desc); // Player requires level %d of skill %s. clif->message(fd, atcmd_output); @@ -5503,9 +5503,9 @@ void getring (struct map_session_data* sd) item_tmp.card[2] = sd->status.partner_id; item_tmp.card[3] = sd->status.partner_id >> 16; - if((flag = pc_additem(sd,&item_tmp,1,LOG_TYPE_COMMAND))) { + if((flag = iPc->additem(sd,&item_tmp,1,LOG_TYPE_COMMAND))) { clif->additem(sd,0,0,flag); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } @@ -5525,12 +5525,12 @@ ACMD(marry) return false; } - if ((pl_sd = map_nick2sd(player_name)) == NULL) { + if ((pl_sd = iMap->nick2sd(player_name)) == NULL) { clif->message(fd, msg_txt(3)); return false; } - if (pc_marriage(sd, pl_sd) == 0) { + if (iPc->marriage(sd, pl_sd) == 0) { clif->message(fd, msg_txt(1173)); // They are married... wish them well. clif->wedding_effect(&pl_sd->bl); //wedding effect and music [Lupus] getring(sd); // Auto-give named rings (Aru) @@ -5550,7 +5550,7 @@ ACMD(divorce) { nullpo_retr(-1, sd); - if (pc_divorce(sd) != 0) { + if (iPc->divorce(sd) != 0) { sprintf(atcmd_output, msg_txt(1175), sd->status.name); // '%s' is not married. clif->message(fd, atcmd_output); return false; @@ -5647,7 +5647,7 @@ ACMD(changegm) return false; } - if((pl_sd=map_nick2sd((char *) message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) { + if((pl_sd=iMap->nick2sd((char *) message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) { clif->message(fd, msg_txt(1184)); // Target character must be online and be a guild member. return false; } @@ -5670,7 +5670,7 @@ ACMD(changeleader) return false; } - if (party_changeleader(sd, map_nick2sd((char *) message))) + if (iParty->changeleader(sd, iMap->nick2sd((char *) message))) return true; return false; } @@ -5686,7 +5686,7 @@ ACMD(partyoption) char w1[16], w2[16]; nullpo_retr(-1, sd); - if (sd->status.party_id == 0 || (p = party_search(sd->status.party_id)) == NULL) + if (sd->status.party_id == 0 || (p = iParty->search(sd->status.party_id)) == NULL) { clif->message(fd, msg_txt(282)); return false; @@ -5712,7 +5712,7 @@ ACMD(partyoption) //Change item share type. if (option != p->party.item) - party_changeoption(sd, p->party.exp, option); + iParty->changeoption(sd, p->party.exp, option); else clif->message(fd, msg_txt(286)); @@ -6106,14 +6106,14 @@ ACMD(mobsearch) static int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) { nullpo_ret(bl); - map_clearflooritem(bl); + iMap->clearflooritem(bl); return 0; } ACMD(cleanmap) { - map_foreachinmap(atcommand_cleanfloor_sub, sd->bl.m, BL_ITEM); + iMap->foreachinmap(atcommand_cleanfloor_sub, sd->bl.m, BL_ITEM); clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up. return true; } @@ -6123,13 +6123,13 @@ ACMD(cleanarea) int x0 = 0, y0 = 0, x1 = 0, y1 = 0; if (!message || !*message || sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) < 1) { - map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, sd->bl.x - (AREA_SIZE * 2), sd->bl.y - (AREA_SIZE * 2), sd->bl.x + (AREA_SIZE * 2), sd->bl.y + (AREA_SIZE * 2), BL_ITEM); + iMap->foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, sd->bl.x - (AREA_SIZE * 2), sd->bl.y - (AREA_SIZE * 2), sd->bl.x + (AREA_SIZE * 2), sd->bl.y + (AREA_SIZE * 2), BL_ITEM); } else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 1) { - map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, sd->bl.x - x0, sd->bl.y - x0, sd->bl.x + x0, sd->bl.y + x0, BL_ITEM); + iMap->foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, sd->bl.x - x0, sd->bl.y - x0, sd->bl.x + x0, sd->bl.y + x0, BL_ITEM); } else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 4) { - map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM); + iMap->foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM); } clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up. @@ -6187,9 +6187,9 @@ ACMD(pettalk) nullpo_retr(-1, sd); if ( battle_config.min_chat_delay ) { - if( DIFF_TICK(sd->cantalk_tick, gettick()) > 0 ) + if( DIFF_TICK(sd->cantalk_tick, iTimer->gettick()) > 0 ) return true; - sd->cantalk_tick = gettick() + battle_config.min_chat_delay; + sd->cantalk_tick = iTimer->gettick() + battle_config.min_chat_delay; } if(!sd->status.pet_id || !(pd=sd->pd)) @@ -6294,8 +6294,8 @@ ACMD(users) *------------------------------------------*/ ACMD(reset) { - pc_resetstate(sd); - pc_resetskill(sd,1); + iPc->resetstate(sd); + iPc->resetskill(sd,1); sprintf(atcmd_output, msg_txt(208), sd->status.name); // '%s' skill and stats points reseted! clif->message(fd, atcmd_output); return true; @@ -6310,7 +6310,7 @@ ACMD(summon) int mob_id = 0; int duration = 0; struct mob_data *md; - unsigned int tick=gettick(); + unsigned int tick=iTimer->gettick(); nullpo_retr(-1, sd); @@ -6340,7 +6340,7 @@ ACMD(summon) md->master_id=sd->bl.id; md->special_state.ai=1; - md->deletetimer=add_timer(tick+(duration*60000),mob_timer_delete,md->bl.id,0); + md->deletetimer=iTimer->add_timer(tick+(duration*60000),mob_timer_delete,md->bl.id,0); clif->specialeffect(&md->bl,344,AREA); mob_spawn(md); sc_start4(&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000); @@ -6391,7 +6391,7 @@ ACMD(trade) return false; } - if ( (pl_sd = map_nick2sd((char *)message)) == NULL ) + if ( (pl_sd = iMap->nick2sd((char *)message)) == NULL ) { clif->message(fd, msg_txt(3)); // Character not found. return false; @@ -6438,7 +6438,7 @@ ACMD(unmute) return false; } - if ( (pl_sd = map_nick2sd((char *)message)) == NULL ) + if ( (pl_sd = iMap->nick2sd((char *)message)) == NULL ) { clif->message(fd, msg_txt(3)); // Character not found. return false; @@ -6465,7 +6465,7 @@ ACMD(uptime) minute = 60, days = 0, hours = 0, minutes = 0; nullpo_retr(-1, sd); - seconds = get_uptime(); + seconds = iTimer->get_uptime(); days = seconds/day; seconds -= (seconds/day>0)?(seconds/day)*day:0; hours = seconds/hour; @@ -6487,10 +6487,10 @@ ACMD(changesex) { int i; nullpo_retr(-1, sd); - pc_resetskill(sd,4); + iPc->resetskill(sd,4); // to avoid any problem with equipment and invalid sex, equipment is unequiped. for( i=0; i<EQI_MAX; i++ ) - if( sd->equip_index[i] >= 0 ) pc_unequipitem(sd, sd->equip_index[i], 3); + if( sd->equip_index[i] >= 0 ) iPc->unequipitem(sd, sd->equip_index[i], 3); chrif_changesex(sd); return true; } @@ -6509,13 +6509,13 @@ ACMD(mute) return false; } - if ( (pl_sd = map_nick2sd(atcmd_player_name)) == NULL ) + if ( (pl_sd = iMap->nick2sd(atcmd_player_name)) == NULL ) { clif->message(fd, msg_txt(3)); // Character not found. return false; } - if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) + if ( iPc->get_group_level(sd) < iPc->get_group_level(pl_sd) ) { clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player. return false; @@ -6953,9 +6953,9 @@ ACMD(homtalk) nullpo_retr(-1, sd); if ( battle_config.min_chat_delay ) { - if( DIFF_TICK(sd->cantalk_tick, gettick()) > 0 ) + if( DIFF_TICK(sd->cantalk_tick, iTimer->gettick()) > 0 ) return true; - sd->cantalk_tick = gettick() + battle_config.min_chat_delay; + sd->cantalk_tick = iTimer->gettick() + battle_config.min_chat_delay; } if (sd->sc.count && //no "chatting" while muted. @@ -7234,7 +7234,7 @@ ACMD(whereis) for (i = 0; i < ARRAYLENGTH(mob->spawn) && mob->spawn[i].qty; i++) { - j = map_mapindex2mapid(mob->spawn[i].mapindex); + j = iMap->mapindex2mapid(mob->spawn[i].mapindex); if (j < 0) continue; snprintf(atcmd_output, sizeof atcmd_output, "%s (%d)", map[j].name, mob->spawn[i].qty); clif->message(fd, atcmd_output); @@ -7276,7 +7276,7 @@ static int atcommand_mutearea_sub(struct block_list *bl,va_list ap) id = va_arg(ap, int); time = va_arg(ap, int); - if (id != bl->id && !pc_get_group_level(pl_sd)) { + if (id != bl->id && !iPc->get_group_level(pl_sd)) { pl_sd->status.manner -= time; if (pl_sd->status.manner < 0) sc_start(&pl_sd->bl,SC_NOCHAT,100,0,0); @@ -7298,7 +7298,7 @@ ACMD(mutearea) time = atoi(message); - map_foreachinarea(atcommand_mutearea_sub,sd->bl.m, + iMap->foreachinarea(atcommand_mutearea_sub,sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd->bl.id, time); @@ -7371,7 +7371,7 @@ ACMD(size) if(sd->state.size) { sd->state.size = SZ_SMALL; - pc_setpos(sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_TELEPORT); + iPc->setpos(sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_TELEPORT); } sd->state.size = size; @@ -7398,7 +7398,7 @@ ACMD(sizeall) if( pl_sd->state.size != size ) { if( pl_sd->state.size ) { pl_sd->state.size = SZ_SMALL; - pc_setpos(pl_sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT); + iPc->setpos(pl_sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT); } pl_sd->state.size = size; @@ -7440,7 +7440,7 @@ ACMD(sizeguild) if( (pl_sd = g->member[i].sd) && pl_sd->state.size != size ) { if( pl_sd->state.size ) { pl_sd->state.size = SZ_SMALL; - pc_setpos(pl_sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT); + iPc->setpos(pl_sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT); } pl_sd->state.size = size; @@ -7549,19 +7549,19 @@ return true;\ if ( strcmp( flag_name , "gvg" ) == 0 ) { if( flag && !map[sd->bl.m].flag.gvg ) - map_zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME)); + iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME)); else if ( !flag && map[sd->bl.m].flag.gvg ) - map_zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); + iMap->zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); } else if ( strcmp( flag_name , "pvp" ) == 0 ) { if( flag && !map[sd->bl.m].flag.pvp ) - map_zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME)); + iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME)); else if ( !flag && map[sd->bl.m].flag.pvp ) - map_zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); + iMap->zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); } else if ( strcmp( flag_name , "battleground" ) == 0 ) { if( flag && !map[sd->bl.m].flag.battleground ) - map_zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_BG_NAME)); + iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_BG_NAME)); else if ( !flag && map[sd->bl.m].flag.battleground ) - map_zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); + iMap->zone_change2(sd->bl.m,map[sd->bl.m].prev_zone); } setflag(autotrade); setflag(allowks); setflag(nomemo); setflag(noteleport); @@ -7649,7 +7649,7 @@ ACMD(showdelay) ACMD(invite) { unsigned int did = sd->duel_group; - struct map_session_data *target_sd = map_nick2sd((char *)message); + struct map_session_data *target_sd = iMap->nick2sd((char *)message); if(did == 0) { // "Duel: @invite without @duel." @@ -7722,7 +7722,7 @@ ACMD(duel) duel_create(sd, maxpl); } else { struct map_session_data *target_sd; - target_sd = map_nick2sd((char *)message); + target_sd = iMap->nick2sd((char *)message); if(target_sd != NULL) { unsigned int newduel; if((newduel = duel_create(sd, 2)) != -1) { @@ -7820,13 +7820,13 @@ ACMD(cash) if( !strcmpi(command+1,"cash") ) { if( value > 0 ) { - if( (ret=pc_getcash(sd, value, 0)) >= 0){ + if( (ret=iPc->getcash(sd, value, 0)) >= 0){ sprintf(output, msg_txt(505), ret, sd->cashPoints); clif->disp_onlyself(sd, output, strlen(output)); } else clif->message(fd, msg_txt(149)); // Unable to decrease the number/value. } else { - if( (ret=pc_paycash(sd, -value, 0)) >= 0){ + if( (ret=iPc->paycash(sd, -value, 0)) >= 0){ sprintf(output, msg_txt(410), ret, sd->cashPoints); clif->disp_onlyself(sd, output, strlen(output)); } @@ -7836,13 +7836,13 @@ ACMD(cash) else { // @points if( value > 0 ) { - if( (ret=pc_getcash(sd, 0, value)) >= 0){ + if( (ret=iPc->getcash(sd, 0, value)) >= 0){ sprintf(output, msg_txt(506), ret, sd->kafraPoints); clif->disp_onlyself(sd, output, strlen(output)); } else clif->message(fd, msg_txt(149)); // Unable to decrease the number/value. } else { - if( (ret=pc_paycash(sd, -value, -value)) >= 0){ + if( (ret=iPc->paycash(sd, -value, -value)) >= 0){ sprintf(output, msg_txt(411), ret, sd->kafraPoints); clif->disp_onlyself(sd, output, strlen(output)); } @@ -7864,12 +7864,12 @@ ACMD(clone) return true; } - if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL) { + if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_txt(3)); // Character not found. return true; } - if(pc_get_group_level(pl_sd) > pc_get_group_level(sd)) { + if(iPc->get_group_level(pl_sd) > iPc->get_group_level(sd)) { clif->message(fd, msg_txt(126)); // Cannot clone a player of higher GM level than yourself. return true; } @@ -7893,7 +7893,7 @@ ACMD(clone) do { x = sd->bl.x + (rnd() % 10 - 5); y = sd->bl.y + (rnd() % 10 - 5); - } while (map_getcell(sd->bl.m,x,y,CELL_CHKNOPASS) && i++ < 10); + } while (iMap->getcell(sd->bl.m,x,y,CELL_CHKNOPASS) && i++ < 10); if (i >= 10) { x = sd->bl.x; @@ -7948,7 +7948,7 @@ ACMD(request) *------------------------------------------*/ ACMD(feelreset) { - pc_resetfeel(sd); + iPc->resetfeel(sd); clif->message(fd, msg_txt(1324)); // Reset 'Feeling' maps. return true; @@ -8020,7 +8020,7 @@ ACMD(resetstat) { nullpo_retr(-1, sd); - pc_resetstate(sd); + iPc->resetstate(sd); sprintf(atcmd_output, msg_txt(207), sd->status.name); clif->message(fd, atcmd_output); return true; @@ -8030,7 +8030,7 @@ ACMD(resetskill) { nullpo_retr(-1,sd); - pc_resetskill(sd,1); + iPc->resetskill(sd,1); sprintf(atcmd_output, msg_txt(206), sd->status.name); clif->message(fd, atcmd_output); return true; @@ -8252,7 +8252,7 @@ ACMD(stats) output_table[14].value = sd->change_level_2nd; output_table[15].value = sd->change_level_3rd; - sprintf(job_jobname, "Job - %s %s", job_name(sd->status.class_), "(level %d)"); + sprintf(job_jobname, "Job - %s %s", iPc->job_name(sd->status.class_), "(level %d)"); sprintf(output, msg_txt(53), sd->status.name); // '%s' stats: clif->message(fd, output); @@ -8292,7 +8292,7 @@ ACMD(delitem) total = amount; // delete items - while( amount && ( idx = pc_search_inventory(sd, nameid) ) != -1 ) + while( amount && ( idx = iPc->search_inventory(sd, nameid) ) != -1 ) { int delamount = ( amount < sd->status.inventory[idx].amount ) ? amount : sd->status.inventory[idx].amount; @@ -8300,7 +8300,7 @@ ACMD(delitem) {// delete pet intif_delete_petdata(MakeDWord(sd->status.inventory[idx].card[1], sd->status.inventory[idx].card[2])); } - pc_delitem(sd, idx, delamount, 0, 0, LOG_TYPE_COMMAND); + iPc->delitem(sd, idx, delamount, 0, 0, LOG_TYPE_COMMAND); amount-= delamount; } @@ -8466,7 +8466,7 @@ ACMD(accinfo) { //remove const type safestrncpy(query, message, NAME_LENGTH); - intif_request_accinfo( sd->fd, sd->bl.id, pc_get_group_level(sd), query ); + intif_request_accinfo( sd->fd, sd->bl.id, iPc->get_group_level(sd), query ); return true; } @@ -8519,7 +8519,7 @@ ACMD(set) { switch( reg[0] ) { case '@': - data->u.str = pc_readregstr(sd, add_str(reg)); + data->u.str = iPc->readregstr(sd, add_str(reg)); break; case '$': data->u.str = mapreg_readregstr(add_str(reg)); @@ -8548,7 +8548,7 @@ ACMD(set) { data->type = C_INT; switch( reg[0] ) { case '@': - data->u.num = pc_readreg(sd, add_str(reg)); + data->u.num = iPc->readreg(sd, add_str(reg)); break; case '$': data->u.num = mapreg_readreg(add_str(reg)); @@ -8674,7 +8674,7 @@ sd->status.skill[idx].lv = x?1:0; \ sd->status.skill[idx].flag = x?1:0; int val = atoi(message); - bool need_skill = pc_checkskill(sd, MC_PUSHCART) ? false : true; + bool need_skill = iPc->checkskill(sd, MC_PUSHCART) ? false : true; unsigned int index = skill->get_index(MC_PUSHCART); if( !message || !*message || val < 0 || val > MAX_CARTS ) { @@ -8692,7 +8692,7 @@ sd->status.skill[idx].flag = x?1:0; MC_CART_MDFY(1,index); } - if( pc_setcart(sd, val) ) { + if( iPc->setcart(sd, val) ) { if( need_skill ) { MC_CART_MDFY(0,index); } @@ -9017,7 +9017,7 @@ ACMD(channel) { return false; } - if( sub2[0] == '\0' || ( pl_sd = map_nick2sd(sub2) ) == NULL ) { + if( sub2[0] == '\0' || ( pl_sd = iMap->nick2sd(sub2) ) == NULL ) { sprintf(atcmd_output, msg_txt(1434), sub2);// Player '%s' was not found clif->message(fd, atcmd_output); return false; @@ -9073,7 +9073,7 @@ ACMD(channel) { return false; } - if( sub2[0] == '\0' || ( pl_sd = map_nick2sd(sub2) ) == NULL ) { + if( sub2[0] == '\0' || ( pl_sd = iMap->nick2sd(sub2) ) == NULL ) { sprintf(atcmd_output, msg_txt(1434), sub2);// Player '%s' was not found clif->message(fd, atcmd_output); return false; @@ -9156,7 +9156,7 @@ ACMD(channel) { iter = db_iterator(channel->banned); for( data = iter->first(iter,&key); iter->exists(iter); data = iter->next(iter,&key) ) { - struct hChSysBanEntry * entry = DB->data2ptr(data); + struct hChSysBanEntry * entry = iDB->data2ptr(data); if( !isA ) sprintf(atcmd_output, msg_txt(1444), entry->name);// - %s %s @@ -9808,7 +9808,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message // 1 = player invoked if ( type == 1) { //Commands are disabled on maps flagged as 'nocommand' - if ( map[sd->bl.m].nocommand && pc_get_group_level(sd) < map[sd->bl.m].nocommand ) { + if ( map[sd->bl.m].nocommand && iPc->get_group_level(sd) < map[sd->bl.m].nocommand ) { clif->message(fd, msg_txt(143)); return false; } @@ -9843,7 +9843,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message break; } - if( !pc_get_group_level(sd) ) { + if( !iPc->get_group_level(sd) ) { if( x >= 1 || y >= 1 ) { /* we have command */ info = get_atcommandinfo_byname(atcommand_checkalias(command + 1)); if( !info || info->char_groups[sd->group_pos] == 0 ) /* if we can't use or doesn't exist: don't even display the command failed message */ @@ -9881,15 +9881,15 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message // Check if the binding isn't NULL and there is a NPC event, level of usage met, et cetera if( binding != NULL && binding->npc_event[0] && - ((*atcmd_msg == atcommand->at_symbol && pc_get_group_level(sd) >= binding->group_lv) || - (*atcmd_msg == atcommand->char_symbol && pc_get_group_level(sd) >= binding->group_lv_char))) + ((*atcmd_msg == atcommand->at_symbol && iPc->get_group_level(sd) >= binding->group_lv) || + (*atcmd_msg == atcommand->char_symbol && iPc->get_group_level(sd) >= binding->group_lv_char))) { // Check if self or character invoking; if self == character invoked, then self invoke. bool invokeFlag = ((*atcmd_msg == atcommand->at_symbol) ? 1 : 0); // Check if the command initiated is a character command if (*message == atcommand->char_symbol && - (ssd = map_nick2sd(charname)) == NULL && (ssd = map_nick2sd(charname2)) == NULL ) { + (ssd = iMap->nick2sd(charname)) == NULL && (ssd = iMap->nick2sd(charname2)) == NULL ) { sprintf(output, msg_txt(1389), command); // %s failed. Player not found. clif->message(fd, output); return true; @@ -9906,7 +9906,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message //Grab the command information and check for the proper GM level required to use it or if the command exists info = get_atcommandinfo_byname(atcommand_checkalias(command + 1)); if (info == NULL) { - if( pc_get_group_level(sd) ) { // TODO: remove or replace with proper permission + if( iPc->get_group_level(sd) ) { // TODO: remove or replace with proper permission sprintf(output, msg_txt(153), command); // "%s is Unknown Command." clif->message(fd, output); atcommand_get_suggestions(sd, command + 1, *message == atcommand->at_symbol); @@ -9939,7 +9939,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message // Check if target is valid only if confirmed that player can use command. if (*message == atcommand->char_symbol && - (ssd = map_nick2sd(charname)) == NULL && (ssd = map_nick2sd(charname2)) == NULL ) { + (ssd = iMap->nick2sd(charname)) == NULL && (ssd = iMap->nick2sd(charname2)) == NULL ) { sprintf(output, msg_txt(1389), command); // %s failed. Player not found. clif->message(fd, output); return true; @@ -10184,7 +10184,7 @@ void atcommand_doload(void) { atcommand->db = stridb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, ATCOMMAND_LENGTH); atcommand->alias_db = stridb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, ATCOMMAND_LENGTH); atcommand_basecommands(); //fills initial atcommand_db with known commands - atcommand_config_read(ATCOMMAND_CONF_FILENAME); + atcommand_config_read(iMap->ATCOMMAND_CONF_FILENAME); } void do_init_atcommand(void) { diff --git a/src/map/battle.c b/src/map/battle.c index 575c8ca59..9348c62cd 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -90,7 +90,7 @@ struct block_list* battle_gettargeted(struct block_list *target) { nullpo_retr(NULL, target); memset(bl_list, 0, sizeof(bl_list)); - map_foreachinrange(battle->get_targeted_sub, target, AREA_SIZE, BL_CHAR, bl_list, &c, target->id); + iMap->foreachinrange(battle->get_targeted_sub, target, AREA_SIZE, BL_CHAR, bl_list, &c, target->id); if ( c == 0 ) return NULL; if( c > 24 ) @@ -146,7 +146,7 @@ struct block_list* battle_getenemy(struct block_list *target, int type, int rang int c = 0; memset(bl_list, 0, sizeof(bl_list)); - map_foreachinrange(battle->get_enemy_sub, target, range, type, bl_list, &c, target); + iMap->foreachinrange(battle->get_enemy_sub, target, range, type, bl_list, &c, target); if ( c == 0 ) return NULL; @@ -188,7 +188,7 @@ struct block_list* battle_getenemyarea(struct block_list *src, int x, int y, int int c = 0; memset(bl_list, 0, sizeof(bl_list)); - map_foreachinarea(battle->get_enemy_area_sub, src->m, x - range, y - range, x + range, y + range, type, bl_list, &c, src, ignore_id); + iMap->foreachinarea(battle->get_enemy_area_sub, src->m, x - range, y - range, x + range, y + range, type, bl_list, &c, src, ignore_id); if( c == 0 ) return NULL; @@ -217,33 +217,33 @@ int battle_delay_damage_sub(int tid, unsigned int tick, int id, intptr_t data) { if ( dat ) { struct block_list* src; - struct block_list* target = map_id2bl(dat->target_id); + struct block_list* target = iMap->id2bl(dat->target_id); if( !target || status_isdead(target) ) {/* nothing we can do */ ers_free(delay_damage_ers, dat); return 0; } - src = map_id2bl(dat->src_id); + src = iMap->id2bl(dat->src_id); if( src && target->m == src->m && (target->type != BL_PC || ((TBL_PC*)target)->invincible_timer == INVALID_TIMER) && check_distance_bl(src, target, dat->distance) ) //Check to see if you haven't teleported. [Skotlex] { - map_freeblock_lock(); + iMap->freeblock_lock(); status_fix_damage(src, target, dat->damage, dat->delay); if( dat->attack_type && !status_isdead(target) && dat->additional_effects ) skill->additional_effect(src,target,dat->skill_id,dat->skill_lv,dat->attack_type,dat->dmg_lv,tick); if( dat->dmg_lv > ATK_BLOCK && dat->attack_type ) skill->counter_additional_effect(src,target,dat->skill_id,dat->skill_lv,dat->attack_type,tick); - map_freeblock_unlock(); + iMap->freeblock_unlock(); } else if( !src && dat->skill_id == CR_REFLECTSHIELD ) { /** * it was monster reflected damage, and the monster died, we pass the damage to the character as expected **/ - map_freeblock_lock(); + iMap->freeblock_lock(); status_fix_damage(target, target, dat->damage, dat->delay); - map_freeblock_unlock(); + iMap->freeblock_unlock(); } } ers_free(delay_damage_ers, dat); @@ -263,13 +263,13 @@ int battle_delay_damage (unsigned int tick, int amotion, struct block_list *src, damage = 0; if ( !battle_config.delay_battle_damage || amotion <= 1 ) { - map_freeblock_lock(); + iMap->freeblock_lock(); status_fix_damage(src, target, damage, ddelay); // We have to seperate here between reflect damage and others [icescope] if( attack_type && !status_isdead(target) && additional_effects ) - skill->additional_effect(src, target, skill_id, skill_lv, attack_type, dmg_lv, gettick()); + skill->additional_effect(src, target, skill_id, skill_lv, attack_type, dmg_lv, iTimer->gettick()); if( dmg_lv > ATK_BLOCK && attack_type ) - skill->counter_additional_effect(src, target, skill_id, skill_lv, attack_type, gettick()); - map_freeblock_unlock(); + skill->counter_additional_effect(src, target, skill_id, skill_lv, attack_type, iTimer->gettick()); + iMap->freeblock_unlock(); return 0; } dat = ers_alloc(delay_damage_ers, struct delay_damage); @@ -286,7 +286,7 @@ int battle_delay_damage (unsigned int tick, int amotion, struct block_list *src, if (src->type != BL_PC && amotion > 1000) amotion = 1000; //Aegis places a damage-delay cap of 1 sec to non player attacks. [Skotlex] - add_timer(tick+amotion, battle->delay_damage_sub, 0, (intptr_t)dat); + iTimer->add_timer(tick+amotion, battle->delay_damage_sub, 0, (intptr_t)dat); return 0; } @@ -340,7 +340,7 @@ int battle_attr_fix(struct block_list *src, struct block_list *target, int damag struct block_list *src; if( !su || !su->alive || (sg = su->group) == NULL || !sg || sg->val3 == -1 || - (src = map_id2bl(sg->src_id)) == NULL || status_isdead(src) ) + (src = iMap->id2bl(sg->src_id)) == NULL || status_isdead(src) ) return 0; if( sg->unit_id != UNT_FIREWALL ) { @@ -349,7 +349,7 @@ int battle_attr_fix(struct block_list *src, struct block_list *target, int damag y = sg->val3 & 0xffff; skill->unitsetting(src,su->group->skill_id,su->group->skill_lv,x,y,1); sg->val3 = -1; - sg->limit = DIFF_TICK(gettick(),sg->tick)+300; + sg->limit = DIFF_TICK(iTimer->gettick(),sg->tick)+300; } } } @@ -848,7 +848,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag delay = 200; else delay = 100; - unit_set_walkdelay(bl, gettick(), delay, 1); + unit_set_walkdelay(bl, iTimer->gettick(), delay, 1); if(sc->data[SC_SHRINK] && rnd()%100<5*sce->val1) skill->blown(bl,src,skill->get_blewcount(CR_SHRINK,1),-1,0); @@ -882,7 +882,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag if(sc->data[SC_DODGE] && ( !sc->opt1 || sc->opt1 == OPT1_BURNING ) && (flag&BF_LONG || sc->data[SC_SPURT]) && rnd()%100 < 20) { - if (sd && pc_issit(sd)) pc_setstand(sd); //Stand it to dodge. + if (sd && pc_issit(sd)) iPc->setstand(sd); //Stand it to dodge. clif->skill_nodamage(bl,bl,TK_DODGE,1,1); if (!sc->data[SC_COMBO]) sc_start4(bl, SC_COMBO, 100, TK_JUMPKICK, src->id, 1, 0, 2000); @@ -918,9 +918,9 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag if (((sce=sc->data[SC_UTSUSEMI]) || sc->data[SC_BUNSINJYUTSU]) && flag&BF_WEAPON && !(skill->get_nk(skill_id)&NK_NO_CARDFIX_ATK)) { - skill->additional_effect (src, bl, skill_id, skill_lv, flag, ATK_BLOCK, gettick() ); + skill->additional_effect (src, bl, skill_id, skill_lv, flag, ATK_BLOCK, iTimer->gettick() ); if( !status_isdead(src) ) - skill->counter_additional_effect( src, bl, skill_id, skill_lv, flag, gettick() ); + skill->counter_additional_effect( src, bl, skill_id, skill_lv, flag, iTimer->gettick() ); if (sce) { clif->specialeffect(bl, 462, AREA); skill->blown(src,bl,sce->val3,-1,0); @@ -1057,7 +1057,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag damage -= damage * sc->data[SC_PAIN_KILLER]->val3 / 100; } if((sce=sc->data[SC_MAGMA_FLOW]) && (rnd()%100 <= sce->val2) ){ - skill->castend_damage_id(bl,src,MH_MAGMA_FLOW,sce->val1,gettick(),0); + skill->castend_damage_id(bl,src,MH_MAGMA_FLOW,sce->val1,iTimer->gettick(),0); } if( (sce = sc->data[SC_STONEHARDSKIN]) && flag&BF_WEAPON && damage > 0 ) { @@ -1114,7 +1114,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag if( (sce = sc->data[SC_LIGHTNINGWALK]) && flag&BF_LONG && rnd()%100 < sce->val1 ) { int dx[8]={0,-1,-1,-1,0,1,1,1}; int dy[8]={1,1,0,-1,-1,-1,0,1}; - uint8 dir = map_calc_dir(bl, src->x, src->y); + uint8 dir = iMap->calc_dir(bl, src->x, src->y); if( unit_movepos(bl, src->x-dx[dir], src->y-dy[dir], 1, 1) ) { clif->slide(bl,src->x-dx[dir],src->y-dy[dir]); unit_setdir(bl, dir); @@ -1131,7 +1131,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag status_heal(src, damage*sce->val4/100, 0, 3); if( sd && (sce = sc->data[SC_FORCEOFVANGUARD]) && flag&BF_WEAPON && rnd()%100 < sce->val2 ) - pc_addspiritball(sd,skill->get_time(LG_FORCEOFVANGUARD,sce->val1),sce->val3); + iPc->addspiritball(sd,skill->get_time(LG_FORCEOFVANGUARD,sce->val1),sce->val3); if (sc->data[SC_STYLE_CHANGE] && rnd()%2) { TBL_HOM *hd = BL_CAST(BL_HOM,bl); if (hd) homun->addspiritball(hd, 10); //add a sphere @@ -1141,7 +1141,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag status_change_spread(bl, src); // Deadly infect attacked side if( sc && sc->data[SC__SHADOWFORM] ) { - struct block_list *s_bl = map_id2bl(sc->data[SC__SHADOWFORM]->val2); + struct block_list *s_bl = iMap->id2bl(sc->data[SC__SHADOWFORM]->val2); if( !s_bl || s_bl->m != bl->m ) { // If the shadow form target is not present remove the sc. status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER); } else if( status_isdead(s_bl) || !battle->check_target(src,s_bl,BCT_ENEMY)) { // If the shadow form target is dead or not your enemy remove the sc in both. @@ -1154,7 +1154,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag if( s_bl->type == BL_PC ) ((TBL_PC*)s_bl)->shadowform_id = 0; } else { - status_damage(bl, s_bl, damage, 0, clif->damage(s_bl, s_bl, gettick(), 500, 500, damage, -1, 0, 0), 0); + status_damage(bl, s_bl, damage, 0, clif->damage(s_bl, s_bl, iTimer->gettick(), 500, 500, damage, -1, 0, 0), 0); return ATK_NONE; } } @@ -1236,9 +1236,9 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag if( bl->type == BL_MOB && !status_isdead(bl) && src != bl) { if (damage > 0 ) - mobskill_event((TBL_MOB*)bl,src,gettick(),flag); + mobskill_event((TBL_MOB*)bl,src,iTimer->gettick(),flag); if (skill_id) - mobskill_event((TBL_MOB*)bl,src,gettick(),MSC_SKILLUSED|(skill_id<<16)); + mobskill_event((TBL_MOB*)bl,src,iTimer->gettick(),MSC_SKILLUSED|(skill_id<<16)); } if( sd ) { if( pc_ismadogear(sd) && rnd()%100 < 50 ) { @@ -1256,7 +1256,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag else if( element == -3 ) //Use random element element = rnd()%ELE_MAX; if( element == ELE_FIRE || element == ELE_WATER ) - pc_overheat(sd,element == ELE_FIRE ? 1 : -1); + iPc->overheat(sd,element == ELE_FIRE ? 1 : -1); } } @@ -1363,19 +1363,19 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int nullpo_ret(sd); - if((skill = pc_checkskill(sd,AL_DEMONBANE)) > 0 && + if((skill = iPc->checkskill(sd,AL_DEMONBANE)) > 0 && target->type == BL_MOB && //This bonus doesnt work against players. (battle->check_undead(status->race,status->def_ele) || status->race==RC_DEMON) ) damage += (skill*(int)(3+(sd->status.base_level+1)*0.05)); // submitted by orn //damage += (skill * 3); - if( (skill = pc_checkskill(sd, RA_RANGERMAIN)) > 0 && (status->race == RC_BRUTE || status->race == RC_PLANT || status->race == RC_FISH) ) + if( (skill = iPc->checkskill(sd, RA_RANGERMAIN)) > 0 && (status->race == RC_BRUTE || status->race == RC_PLANT || status->race == RC_FISH) ) damage += (skill * 5); - if( (skill = pc_checkskill(sd,NC_RESEARCHFE)) > 0 && (status->def_ele == ELE_FIRE || status->def_ele == ELE_EARTH) ) + if( (skill = iPc->checkskill(sd,NC_RESEARCHFE)) > 0 && (status->def_ele == ELE_FIRE || status->def_ele == ELE_EARTH) ) damage += (skill * 10); if( pc_ismadogear(sd) ) - damage += 20 + 20 * pc_checkskill(sd, NC_MADOLICENCE); + damage += 20 + 20 * iPc->checkskill(sd, NC_MADOLICENCE); - if((skill = pc_checkskill(sd,HT_BEASTBANE)) > 0 && (status->race==RC_BRUTE || status->race==RC_INSECT) ) { + if((skill = iPc->checkskill(sd,HT_BEASTBANE)) > 0 && (status->race==RC_BRUTE || status->race==RC_INSECT) ) { damage += (skill * 4); if (sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_HUNTER) damage += sd->status.str; @@ -1389,26 +1389,26 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int { case W_1HSWORD: #ifdef RENEWAL - if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0) + if((skill = iPc->checkskill(sd,AM_AXEMASTERY)) > 0) damage += (skill * 3); #endif case W_DAGGER: - if((skill = pc_checkskill(sd,SM_SWORD)) > 0) + if((skill = iPc->checkskill(sd,SM_SWORD)) > 0) damage += (skill * 4); - if((skill = pc_checkskill(sd,GN_TRAINING_SWORD)) > 0) + if((skill = iPc->checkskill(sd,GN_TRAINING_SWORD)) > 0) damage += skill * 10; break; case W_2HSWORD: #ifdef RENEWAL - if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0) + if((skill = iPc->checkskill(sd,AM_AXEMASTERY)) > 0) damage += (skill * 3); #endif - if((skill = pc_checkskill(sd,SM_TWOHAND)) > 0) + if((skill = iPc->checkskill(sd,SM_TWOHAND)) > 0) damage += (skill * 4); break; case W_1HSPEAR: case W_2HSPEAR: - if((skill = pc_checkskill(sd,KN_SPEARMASTERY)) > 0) { + if((skill = iPc->checkskill(sd,KN_SPEARMASTERY)) > 0) { if(!pc_isriding(sd)) damage += (skill * 4); else @@ -1417,40 +1417,40 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int break; case W_1HAXE: case W_2HAXE: - if((skill = pc_checkskill(sd,AM_AXEMASTERY)) > 0) + if((skill = iPc->checkskill(sd,AM_AXEMASTERY)) > 0) damage += (skill * 3); - if((skill = pc_checkskill(sd,NC_TRAININGAXE)) > 0) + if((skill = iPc->checkskill(sd,NC_TRAININGAXE)) > 0) damage += (skill * 5); break; case W_MACE: case W_2HMACE: - if((skill = pc_checkskill(sd,PR_MACEMASTERY)) > 0) + if((skill = iPc->checkskill(sd,PR_MACEMASTERY)) > 0) damage += (skill * 3); - if((skill = pc_checkskill(sd,NC_TRAININGAXE)) > 0) + if((skill = iPc->checkskill(sd,NC_TRAININGAXE)) > 0) damage += (skill * 5); break; case W_FIST: - if((skill = pc_checkskill(sd,TK_RUN)) > 0) + if((skill = iPc->checkskill(sd,TK_RUN)) > 0) damage += (skill * 10); // No break, fallthrough to Knuckles case W_KNUCKLE: - if((skill = pc_checkskill(sd,MO_IRONHAND)) > 0) + if((skill = iPc->checkskill(sd,MO_IRONHAND)) > 0) damage += (skill * 3); break; case W_MUSICAL: - if((skill = pc_checkskill(sd,BA_MUSICALLESSON)) > 0) + if((skill = iPc->checkskill(sd,BA_MUSICALLESSON)) > 0) damage += (skill * 3); break; case W_WHIP: - if((skill = pc_checkskill(sd,DC_DANCINGLESSON)) > 0) + if((skill = iPc->checkskill(sd,DC_DANCINGLESSON)) > 0) damage += (skill * 3); break; case W_BOOK: - if((skill = pc_checkskill(sd,SA_ADVANCEDBOOK)) > 0) + if((skill = iPc->checkskill(sd,SA_ADVANCEDBOOK)) > 0) damage += (skill * 3); break; case W_KATAR: - if((skill = pc_checkskill(sd,AS_KATAR)) > 0) + if((skill = iPc->checkskill(sd,AS_KATAR)) > 0) damage += (skill * 3); break; } @@ -1567,7 +1567,7 @@ void battle_consume_ammo(TBL_PC*sd, int skill_id, int lv) { } if(sd->equip_index[EQI_AMMO]>=0) //Qty check should have been done in skill_check_condition - pc_delitem(sd,sd->equip_index[EQI_AMMO],qty,0,1,LOG_TYPE_CONSUME); + iPc->delitem(sd,sd->equip_index[EQI_AMMO],qty,0,1,LOG_TYPE_CONSUME); sd->state.arrow_atk = 0; } @@ -1817,7 +1817,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list } if( sd && !skill_id ) { //Check for double attack. - if( ( ( skill_lv = pc_checkskill(sd,TF_DOUBLE) ) > 0 && sd->weapontype1 == W_DAGGER ) + if( ( ( skill_lv = iPc->checkskill(sd,TF_DOUBLE) ) > 0 && sd->weapontype1 == W_DAGGER ) || ( sd->bonus.double_rate > 0 && sd->weapontype1 != W_FIST ) //Will fail bare-handed || ( sc && sc->data[SC_KAGEMUSYA] && sd->weapontype1 != W_FIST )) // Need confirmation { //Success chance is not added, the higher one is used [Skotlex] @@ -1827,7 +1827,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list wd.type = 0x08; } } - else if( sd->weapontype1 == W_REVOLVER && (skill_lv = pc_checkskill(sd,GS_CHAINACTION)) > 0 && rnd()%100 < 5*skill_lv ) + else if( sd->weapontype1 == W_REVOLVER && (skill_lv = iPc->checkskill(sd,GS_CHAINACTION)) > 0 && rnd()%100 < 5*skill_lv ) { wd.div_ = skill->get_num(GS_CHAINACTION,skill_lv); wd.type = 0x08; @@ -1970,7 +1970,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list hitrate += sd->bonus.arrow_hit; #ifdef RENEWAL if( sd ) //in Renewal hit bonus from Vultures Eye is not anymore shown in status window - hitrate += pc_checkskill(sd,AC_VULTURE); + hitrate += iPc->checkskill(sd,AC_VULTURE); #endif if(skill_id) switch(skill_id) @@ -2003,14 +2003,14 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list hitrate += hitrate * 5 * skill_lv / 100; break; case AS_SONICBLOW: - if(sd && pc_checkskill(sd,AS_SONICACCEL)>0) + if(sd && iPc->checkskill(sd,AS_SONICACCEL)>0) hitrate += hitrate * 50 / 100; break; case MC_CARTREVOLUTION: case GN_CART_TORNADO: case GN_CARTCANNON: - if( sd && pc_checkskill(sd, GN_REMODELING_CART) ) - hitrate += pc_checkskill(sd, GN_REMODELING_CART) * 4; + if( sd && iPc->checkskill(sd, GN_REMODELING_CART) ) + hitrate += iPc->checkskill(sd, GN_REMODELING_CART) * 4; break; case GC_VENOMPRESSURE: hitrate += 10 + 4 * skill_lv; @@ -2019,11 +2019,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if( sd ) { // Weaponry Research hidden bonus - if ((temp = pc_checkskill(sd,BS_WEAPONRESEARCH)) > 0) + if ((temp = iPc->checkskill(sd,BS_WEAPONRESEARCH)) > 0) hitrate += hitrate * ( 2 * temp ) / 100; if( (sd->status.weapon == W_1HSWORD || sd->status.weapon == W_DAGGER) && - (temp = pc_checkskill(sd, GN_TRAINING_SWORD))>0 ) + (temp = iPc->checkskill(sd, GN_TRAINING_SWORD))>0 ) hitrate += 3 * temp; } @@ -2147,8 +2147,8 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if(flag.cri && sd->bonus.crit_atk_rate) ATK_ADDRATE(sd->bonus.crit_atk_rate); - if(sd->status.party_id && (temp=pc_checkskill(sd,TK_POWER)) > 0){ - if( (i = party_foreachsamemap(party_sub_count, sd, 0)) > 1 ) // exclude the player himself [Inkfish] + if(sd->status.party_id && (temp=iPc->checkskill(sd,TK_POWER)) > 0){ + if( (i = party_foreachsamemap(iParty->sub_count, sd, 0)) > 1 ) // exclude the player himself [Inkfish] ATK_ADDRATE(2*temp*i); } } @@ -2393,7 +2393,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list case AS_SPLASHER: skillratio += 400+50*skill_lv; if(sd) - skillratio += 20 * pc_checkskill(sd,AS_POISONREACT); + skillratio += 20 * iPc->checkskill(sd,AS_POISONREACT); break; case ASC_BREAKER: skillratio += 100*skill_lv-100; @@ -2524,7 +2524,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON ) skillratio += max(10000 - sd->inventory_data[index]->weight, 0) / 10; - skillratio += 50 * pc_checkskill(sd,LK_SPIRALPIERCE); + skillratio += 50 * iPc->checkskill(sd,LK_SPIRALPIERCE); } // (1 + [(Casters Base Level - 100) / 200]) skillratio = skillratio * (100 + (status_get_lv(src)-100) / 2) / 100; break; @@ -2554,10 +2554,10 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list } break; case RK_STORMBLAST: - skillratio = 100 * (sd ? pc_checkskill(sd,RK_RUNEMASTERY) : 1) + 100 * (sstatus->int_ / 4); + skillratio = 100 * (sd ? iPc->checkskill(sd,RK_RUNEMASTERY) : 1) + 100 * (sstatus->int_ / 4); break; case RK_PHANTOMTHRUST: - skillratio = 50 * skill_lv + 10 * ( sd ? pc_checkskill(sd,KN_SPEARMASTERY) : 10); + skillratio = 50 * skill_lv + 10 * ( sd ? iPc->checkskill(sd,KN_SPEARMASTERY) : 10); //if( s_level > 100 ) skillratio += skillratio * s_level / 150; // Base level bonus. This is official, but is disabled until I can confirm something with was changed or not. [Rytech] //if( s_level > 100 ) skillratio += skillratio * (s_level - 100) / 200; // Base level bonus. break; @@ -2682,7 +2682,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list RE_LVL_DMOD(100); break; case LG_BANISHINGPOINT: - skillratio += -100 + ((50 * skill_lv) + (30 * ((sd)?pc_checkskill(sd,SM_BASH):1))); + skillratio += -100 + ((50 * skill_lv) + (30 * ((sd)?iPc->checkskill(sd,SM_BASH):1))); RE_LVL_DMOD(100); break; case LG_SHIELDPRESS: @@ -2710,11 +2710,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list skillratio += 2400; //2500% break; case LG_MOONSLASHER: - skillratio += -100 + (120 * skill_lv + ((sd) ? pc_checkskill(sd,LG_OVERBRAND) : 5) * 80); + skillratio += -100 + (120 * skill_lv + ((sd) ? iPc->checkskill(sd,LG_OVERBRAND) : 5) * 80); RE_LVL_DMOD(100); break; case LG_OVERBRAND: - skillratio = 400 * skill_lv + (pc_checkskill(sd,CR_SPEARQUICKEN) * 30); + skillratio = 400 * skill_lv + (iPc->checkskill(sd,CR_SPEARQUICKEN) * 30); RE_LVL_DMOD(100); break; case LG_OVERBRAND_BRANDISH: @@ -2818,7 +2818,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list break; case WM_REVERBERATION_MELEE: // ATK [{(Skill Level x 100) + 300} x Caster Base Level / 100] - skillratio += 200 + 100 * pc_checkskill(sd, WM_REVERBERATION); + skillratio += 200 + 100 * iPc->checkskill(sd, WM_REVERBERATION); RE_LVL_DMOD(100); break; case WM_SEVERE_RAINSTORM_MELEE: @@ -2841,12 +2841,12 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list // ATK [( Skill Level x 50 ) + ( Cart Weight / ( 150 - Caster Base STR ))] + ( Cart Remodeling Skill Level x 50 )] % skillratio = 50 * skill_lv; if( sd && sd->cart_weight) - skillratio += sd->cart_weight/10 / max(150-sstatus->str,1) + pc_checkskill(sd, GN_REMODELING_CART) * 50; + skillratio += sd->cart_weight/10 / max(150-sstatus->str,1) + iPc->checkskill(sd, GN_REMODELING_CART) * 50; break; case GN_CARTCANNON: // ATK [{( Cart Remodeling Skill Level x 50 ) x ( INT / 40 )} + ( Cart Cannon Skill Level x 60 )] % skillratio = 60 * skill_lv; - if( sd ) skillratio += pc_checkskill(sd, GN_REMODELING_CART) * 50 * (sstatus->int_ / 40); + if( sd ) skillratio += iPc->checkskill(sd, GN_REMODELING_CART) * 50 * (sstatus->int_ / 40); break; case GN_SPORE_EXPLOSION: skillratio += 200 + 100 * skill_lv; @@ -2874,7 +2874,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list skillratio += 300; // Bombs break; case SO_VARETYR_SPEAR://ATK [{( Striking Level x 50 ) + ( Varetyr Spear Skill Level x 50 )} x Caster Base Level / 100 ] % - skillratio = 50 * skill_lv + ( sd ? pc_checkskill(sd, SO_STRIKING) * 50 : 0 ); + skillratio = 50 * skill_lv + ( sd ? iPc->checkskill(sd, SO_STRIKING) * 50 : 0 ); if( sc && sc->data[SC_BLAST_OPTION] ) skillratio += sd ? sd->status.job_level * 5 : 0; break; @@ -2917,7 +2917,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list skillratio += 100 * (skill_lv-1); break; case KO_BAKURETSU: - skillratio = 50 * skill_lv * (sd?pc_checkskill(sd,NJ_TOBIDOUGU):10); + skillratio = 50 * skill_lv * (sd?iPc->checkskill(sd,NJ_TOBIDOUGU):10); break; case MH_NEEDLE_OF_PARALYZE: skillratio += 600 + 100 * skill_lv; @@ -2951,7 +2951,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list case TK_JUMPKICK: //TK_RUN kick damage bonus. if(sd && sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST) - ATK_ADD(10*pc_checkskill(sd, TK_RUN)); + ATK_ADD(10*iPc->checkskill(sd, TK_RUN)); break; case GS_MAGICALBULLET: if(sstatus->matk_max>sstatus->matk_min) { @@ -2976,7 +2976,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list #endif case HT_FREEZINGTRAP: if(sd) - ATK_ADD( 40 * pc_checkskill(sd, RA_RESEARCHTRAP) ); + ATK_ADD( 40 * iPc->checkskill(sd, RA_RESEARCHTRAP) ); break; case RA_WUGDASH ://(Caster Current Weight x 10 / 8) if( sd && sd->weight ) @@ -2984,7 +2984,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list case RA_WUGSTRIKE: case RA_WUGBITE: if(sd) - ATK_ADD(30*pc_checkskill(sd, RA_TOOTHOFWUG)); + ATK_ADD(30*iPc->checkskill(sd, RA_TOOTHOFWUG)); break; case SR_GATEOFHELL: ATK_ADD (sstatus->max_hp - status_get_hp(src)); @@ -3020,7 +3020,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if( i < 5 ){ s_ele = i; ATK_ADDRATE(100 * sd->talisman[i]);// +100% custom value. - pc_del_talisman(sd, sd->talisman[i], i); + iPc->del_talisman(sd, sd->talisman[i], i); } } break; @@ -3072,7 +3072,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list sc->data[SC_SPIRIT]->val2 == SL_ASSASIN) ATK_ADDRATE(map_flag_gvg(src->m)?25:100); //+25% dmg on woe/+100% dmg on nonwoe - if(sd && pc_checkskill(sd,AS_SONICACCEL)>0) + if(sd && iPc->checkskill(sd,AS_SONICACCEL)>0) ATK_ADDRATE(10); break; case CR_SHIELDBOOMERANG: @@ -3090,7 +3090,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list ATK_RATE(i); if( sd ) { - if (skill_id && (i = pc_skillatk_bonus(sd, skill_id))) + if (skill_id && (i = iPc->skillatk_bonus(sd, skill_id))) ATK_ADDRATE(i); if( skill_id != PA_SACRIFICE && skill_id != MO_INVESTIGATE && skill_id != CR_GRANDCROSS && skill_id != NPC_GRANDDARKNESS && skill_id != PA_SHIELDCHAIN && !flag.cri ) @@ -3199,9 +3199,9 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list vit_def = def2; #endif if((battle->check_undead(sstatus->race,sstatus->def_ele) || sstatus->race==RC_DEMON) && //This bonus already doesnt work vs players - src->type == BL_MOB && (temp=pc_checkskill(tsd,AL_DP)) > 0) + src->type == BL_MOB && (temp=iPc->checkskill(tsd,AL_DP)) > 0) vit_def += temp*(int)(3 +(tsd->status.base_level+1)*0.04); // submitted by orn - if( src->type == BL_MOB && (temp=pc_checkskill(tsd,RA_RANGERMAIN))>0 && + if( src->type == BL_MOB && (temp=iPc->checkskill(tsd,RA_RANGERMAIN))>0 && (sstatus->race == RC_BRUTE || sstatus->race == RC_FISH || sstatus->race == RC_PLANT) ) vit_def += temp*5; #ifdef RENEWAL @@ -3278,7 +3278,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if(sc->data[SC_GT_CHANGE] && sc->data[SC_GT_CHANGE]->val2){ struct block_list *bl; // ATK increase: ATK [{(Caster DEX / 4) + (Caster STR / 2)} x Skill Level / 5] - if( (bl = map_id2bl(sc->data[SC_GT_CHANGE]->val2)) ) + if( (bl = iMap->id2bl(sc->data[SC_GT_CHANGE]->val2)) ) ATK_ADD( ( status_get_dex(bl)/4 + status_get_str(bl)/2 ) * sc->data[SC_GT_CHANGE]->val1 / 5 ); } @@ -3307,7 +3307,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list skill_id != CR_GRANDCROSS) { //Add mastery damage if(skill_id != ASC_BREAKER && sd->status.weapon == W_KATAR && - (temp=pc_checkskill(sd,ASC_KATAR)) > 0) + (temp=iPc->checkskill(sd,ASC_KATAR)) > 0) { //Adv Katar Mastery is does not applies to ASC_BREAKER, // but other masteries DO apply >_> ATK_ADDRATE(10+ 2*temp); @@ -3320,14 +3320,14 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if (sc && sc->data[SC_MIRACLE]) i = 2; //Star anger else ARR_FIND(0, MAX_PC_FEELHATE, i, t_class == sd->hate_mob[i]); - if (i < MAX_PC_FEELHATE && (temp=pc_checkskill(sd,sg_info[i].anger_id))) { + if (i < MAX_PC_FEELHATE && (temp=iPc->checkskill(sd,sg_info[i].anger_id))) { skillratio = sd->status.base_level + sstatus->dex + sstatus->luk; if (i == 2) skillratio += sstatus->str; //Star Anger if (temp<4) skillratio /= 12-3*temp; ATK_ADDRATE(skillratio); } - if (skill_id == NJ_SYURIKEN && (temp = pc_checkskill(sd,NJ_TOBIDOUGU)) > 0) { + if (skill_id == NJ_SYURIKEN && (temp = iPc->checkskill(sd,NJ_TOBIDOUGU)) > 0) { ATK_ADD(3*temp); } else if (skill_id == NJ_KUNAI) ATK_ADD(60); @@ -3336,7 +3336,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list else if(wd.div_ < 0) //Since the attack missed... wd.div_ *= -1; - if(sd && (temp=pc_checkskill(sd,BS_WEAPONRESEARCH)) > 0) + if(sd && (temp=iPc->checkskill(sd,BS_WEAPONRESEARCH)) > 0) ATK_ADD(temp*2); if(skill_id==TF_POISON) @@ -3454,21 +3454,21 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list flag.lh=0; } else if(flag.rh && flag.lh) { //Dual-wield if (wd.damage) { - if( (temp = pc_checkskill(sd,AS_RIGHT)) ) + if( (temp = iPc->checkskill(sd,AS_RIGHT)) ) ATK_RATER(50 + (temp * 10)) - else if( (temp = pc_checkskill(sd,KO_RIGHT)) ) + else if( (temp = iPc->checkskill(sd,KO_RIGHT)) ) ATK_RATER(70 + (temp * 10)) if(wd.damage < 1) wd.damage = 1; } if (wd.damage2) { - if( (temp = pc_checkskill(sd,AS_LEFT)) ) + if( (temp = iPc->checkskill(sd,AS_LEFT)) ) ATK_RATEL(30 + (temp * 10)) - else if( (temp = pc_checkskill(sd,KO_LEFT)) ) + else if( (temp = iPc->checkskill(sd,KO_LEFT)) ) ATK_RATEL(50 + (temp * 10)) if(wd.damage2 < 1) wd.damage2 = 1; } } else if(sd->status.weapon == W_KATAR && !skill_id) { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2) - temp = pc_checkskill(sd,TF_DOUBLE); + temp = iPc->checkskill(sd,TF_DOUBLE); wd.damage2 = wd.damage * (1 + (temp * 2))/100; if(wd.damage && !wd.damage2) wd.damage2 = 1; @@ -3523,7 +3523,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list rnd()%100 < tsc->data[SC_REJECTSWORD]->val2 ) { ATK_RATER(50) - status_fix_damage(target,src,wd.damage,clif->damage(target,src,gettick(),0,0,wd.damage,0,0,0)); + status_fix_damage(target,src,wd.damage,clif->damage(target,src,iTimer->gettick(),0,0,wd.damage,0,0,0)); clif->skill_nodamage(target,target,ST_REJECTSWORD,tsc->data[SC_REJECTSWORD]->val1,1); if( --(tsc->data[SC_REJECTSWORD]->val3) <= 0 ) status_change_end(target, SC_REJECTSWORD, INVALID_TIMER); @@ -3962,7 +3962,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list skillratio += 1900; //2000% break; case WM_METALICSOUND: - skillratio += 120 * skill_lv + 60 * ( sd? pc_checkskill(sd, WM_LESSON) : 10 ) - 100; + skillratio += 120 * skill_lv + 60 * ( sd? iPc->checkskill(sd, WM_LESSON) : 10 ) - 100; break; /*case WM_SEVERE_RAINSTORM: skillratio += 50 * skill_lv; @@ -3973,7 +3973,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list */ case WM_REVERBERATION_MAGIC: // MATK [{(Skill Level x 100) + 100} x Casters Base Level / 100] % - skillratio += 100 * (sd ? pc_checkskill(sd, WM_REVERBERATION) : 1); + skillratio += 100 * (sd ? iPc->checkskill(sd, WM_REVERBERATION) : 1); RE_LVL_DMOD(100); break; case SO_FIREWALK: @@ -3989,13 +3989,13 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list skillratio += sd ? sd->status.job_level / 2 : 0; break; case SO_EARTHGRAVE: - skillratio = ( 200 * ( sd ? pc_checkskill(sd, SA_SEISMICWEAPON) : 10 ) + sstatus->int_ * skill_lv ); + skillratio = ( 200 * ( sd ? iPc->checkskill(sd, SA_SEISMICWEAPON) : 10 ) + sstatus->int_ * skill_lv ); RE_LVL_DMOD(100); if( sc && sc->data[SC_CURSED_SOIL_OPTION] ) skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2; break; case SO_DIAMONDDUST: - skillratio = ( 200 * ( sd ? pc_checkskill(sd, SA_FROSTWEAPON) : 10 ) + sstatus->int_ * skill_lv ); + skillratio = ( 200 * ( sd ? iPc->checkskill(sd, SA_FROSTWEAPON) : 10 ) + sstatus->int_ * skill_lv ); RE_LVL_DMOD(100); if( sc && sc->data[SC_COOLER_OPTION] ) skillratio += sc->data[SC_COOLER_OPTION]->val3; @@ -4020,7 +4020,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list } break; case SO_VARETYR_SPEAR: //MATK [{( Endow Tornado skill level x 50 ) + ( Caster INT x Varetyr Spear Skill level )} x Caster Base Level / 100 ] % - skillratio = status_get_int(src) * skill_lv + ( sd ? pc_checkskill(sd, SA_LIGHTNINGLOADER) * 50 : 0 ); + skillratio = status_get_int(src) * skill_lv + ( sd ? iPc->checkskill(sd, SA_LIGHTNINGLOADER) * 50 : 0 ); RE_LVL_DMOD(100); if( sc && sc->data[SC_BLAST_OPTION] ) skillratio += sd ? sd->status.job_level * 5 : 0; @@ -4109,7 +4109,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list #endif if(sd) { //Damage bonuses - if ((i = pc_skillatk_bonus(sd, skill_id))) + if ((i = iPc->skillatk_bonus(sd, skill_id))) ad.damage += ad.damage*i/100; if( (i = battle->adjust_skill_damage(src->m,skill_id)) ) @@ -4285,7 +4285,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * case HT_CLAYMORETRAP: md.damage = skill_lv * sstatus->dex * (3+status_get_lv(src)/100) * (1+sstatus->int_/35); md.damage += md.damage * (rnd()%20-10) / 100; - md.damage += 40 * (sd?pc_checkskill(sd,RA_RESEARCHTRAP):0); + md.damage += 40 * (sd?iPc->checkskill(sd,RA_RESEARCHTRAP):0); break; #else case HT_LANDMINE: @@ -4302,7 +4302,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * case HT_BLITZBEAT: case SN_FALCONASSAULT: //Blitz-beat Damage. - if(!sd || (temp = pc_checkskill(sd,HT_STEELCROW)) <= 0) + if(!sd || (temp = iPc->checkskill(sd,HT_STEELCROW)) <= 0) temp=0; md.damage=(sstatus->dex/10+sstatus->int_/2+temp*3+40)*2; if(mflag > 1) //Autocasted Blitz. @@ -4323,7 +4323,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * case BA_DISSONANCE: md.damage=30+skill_lv*10; if (sd) - md.damage+= 3*pc_checkskill(sd,BA_MUSICALLESSON); + md.damage+= 3*iPc->checkskill(sd,BA_MUSICALLESSON); break; case NPC_SELFDESTRUCTION: md.damage = sstatus->hp; @@ -4382,7 +4382,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * case RK_DRAGONBREATH: md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv; RE_LVL_MDMOD(150); - if (sd) md.damage = md.damage * (100 + 5 * (pc_checkskill(sd,RK_DRAGONTRAINING) - 1)) / 100; + if (sd) md.damage = md.damage * (100 + 5 * (iPc->checkskill(sd,RK_DRAGONTRAINING) - 1)) / 100; md.flag |= BF_LONG|BF_WEAPON; break; /** @@ -4395,7 +4395,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * RE_LVL_TMDMOD(); if(sd) { - int researchskill_lv = pc_checkskill(sd,RA_RESEARCHTRAP); + int researchskill_lv = iPc->checkskill(sd,RA_RESEARCHTRAP); if(researchskill_lv) md.damage = md.damage * 20 * researchskill_lv / (skill_id == RA_CLUSTERBOMB?50:100); else @@ -4410,7 +4410,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * case NC_SELFDESTRUCTION: { short totaldef = tstatus->def2 + (short)status_get_def(target); - md.damage = ( (sd?pc_checkskill(sd,NC_MAINFRAME):10) + 8 ) * ( skill_lv + 1 ) * ( status_get_sp(src) + sstatus->vit ); + md.damage = ( (sd?iPc->checkskill(sd,NC_MAINFRAME):10) + 8 ) * ( skill_lv + 1 ) * ( status_get_sp(src) + sstatus->vit ); RE_LVL_MDMOD(100); md.damage += status_get_hp(src) - totaldef; } @@ -4420,7 +4420,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * break; case GN_HELLS_PLANT_ATK: //[{( Hell Plant Skill Level x Casters Base Level ) x 10 } + {( Casters INT x 7 ) / 2 } x { 18 + ( Casters Job Level / 4 )] x ( 5 / ( 10 - Summon Flora Skill Level )) - md.damage = ( skill_lv * status_get_lv(src) * 10 ) + ( sstatus->int_ * 7 / 2 ) * ( 18 + (sd?sd->status.job_level:0) / 4 ) * ( 5 / (10 - (sd?pc_checkskill(sd,AM_CANNIBALIZE):0)) ); + md.damage = ( skill_lv * status_get_lv(src) * 10 ) + ( sstatus->int_ * 7 / 2 ) * ( 18 + (sd?sd->status.job_level:0) / 4 ) * ( 5 / (10 - (sd?iPc->checkskill(sd,AM_CANNIBALIZE):0)) ); break; case KO_HAPPOKUNAI: { @@ -4475,7 +4475,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * hitrate+= sstatus->hit - flee; #ifdef RENEWAL if( sd ) //in Renewal hit bonus from Vultures Eye is not anymore shown in status window - hitrate += pc_checkskill(sd,AC_VULTURE); + hitrate += iPc->checkskill(sd,AC_VULTURE); #endif hitrate = cap_value(hitrate, battle_config.min_hitrate, battle_config.max_hitrate); @@ -4508,7 +4508,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * #endif md.damage = battle->calc_cardfix(BF_MISC, src, target, nk, s_ele, 0, md.damage, 0, md.flag); - if (sd && (i = pc_skillatk_bonus(sd, skill_id))) + if (sd && (i = iPc->skillatk_bonus(sd, skill_id))) md.damage += md.damage*i/100; if( (i = battle->adjust_skill_damage(src->m,skill_id)) ) @@ -4559,7 +4559,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * if( sd ) { if ( md.damage > sd->status.zeny ) md.damage = sd->status.zeny; - pc_payzeny(sd, md.damage,LOG_TYPE_STEAL,NULL); + iPc->payzeny(sd, md.damage,LOG_TYPE_STEAL,NULL); } break; } @@ -4632,9 +4632,9 @@ int battle_calc_return_damage(struct block_list* bl, struct block_list *src, int if (ratio > 5000) ratio = 5000; // Maximum of 5000% ATK rdamage = rdamage * ratio / 100 + (*dmg) * (10 + sc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10; skill->blown(bl, src, skill->get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, sc->data[SC_CRESCENTELBOW]->val1), unit_getdir(src), 0); - clif->skill_damage(bl, src, gettick(), status_get_amotion(src), 0, rdamage, + clif->skill_damage(bl, src, iTimer->gettick(), status_get_amotion(src), 0, rdamage, 1, SR_CRESCENTELBOW_AUTOSPELL, sc->data[SC_CRESCENTELBOW]->val1, 6); // This is how official does - clif->damage(src, bl, gettick(), status_get_amotion(src)+1000, 0, rdamage/10, 1, 0, 0); + clif->damage(src, bl, iTimer->gettick(), status_get_amotion(src)+1000, 0, rdamage/10, 1, 0, 0); status_damage(src, bl, status_damage(bl, src, rdamage, 0, 0, 1)/10, 0, 0, 1); status_change_end(bl, SC_CRESCENTELBOW, INVALID_TIMER); return 0; // Just put here to minimize redundancy @@ -4649,14 +4649,14 @@ int battle_calc_return_damage(struct block_list* bl, struct block_list *src, int if (rdamage < 1) rdamage = 1; } if(sc->data[SC_DEATHBOUND] && skill_id != WS_CARTTERMINATION && !(src->type == BL_MOB && is_boss(src)) ) { - uint8 dir = map_calc_dir(bl,src->x,src->y), + uint8 dir = iMap->calc_dir(bl,src->x,src->y), t_dir = unit_getdir(bl); - if( distance_bl(src,bl) <= 0 || !map_check_dir(dir,t_dir) ) { + if( distance_bl(src,bl) <= 0 || !iMap->check_dir(dir,t_dir) ) { int rd1 = 0; rd1 = min(damage,status_get_max_hp(bl)) * sc->data[SC_DEATHBOUND]->val2 / 100; // Amplify damage. *dmg = rd1 * 30 / 100; // Received damage = 30% of amplifly damage. - clif->skill_damage(src,bl,gettick(), status_get_amotion(src), 0, -30000, 1, RK_DEATHBOUND, sc->data[SC_DEATHBOUND]->val1,6); + clif->skill_damage(src,bl,iTimer->gettick(), status_get_amotion(src), 0, -30000, 1, RK_DEATHBOUND, sc->data[SC_DEATHBOUND]->val1,6); status_change_end(bl,SC_DEATHBOUND,INVALID_TIMER); rdamage += rd1; if (rdamage < 1) rdamage = 1; @@ -4742,7 +4742,7 @@ int battle_damage_area( struct block_list *bl, va_list ap) { if( bl->type == BL_MOB && ((TBL_MOB*)bl)->class_ == MOBID_EMPERIUM ) return 0; if( bl != src && battle->check_target(src,bl,BCT_ENEMY) > 0 ) { - map_freeblock_lock(); + iMap->freeblock_lock(); if( src->type == BL_PC ) battle->drain((TBL_PC*)src, bl, damage, damage, status_get_race(bl), is_boss(bl)); if( amotion ) @@ -4752,7 +4752,7 @@ int battle_damage_area( struct block_list *bl, va_list ap) { clif->damage(bl,bl,tick,amotion,dmotion,damage,1,ATK_BLOCK,0); if( !(src && src->type == BL_PC && ((TBL_PC*)src)->state.autocast) ) skill->additional_effect(src, bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick); - map_freeblock_unlock(); + iMap->freeblock_unlock(); } return 0; @@ -4833,10 +4833,10 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t } if( tsc && tsc->data[SC_AUTOCOUNTER] && status_check_skilluse(target, src, KN_AUTOCOUNTER, 1) ) { - uint8 dir = map_calc_dir(target,src->x,src->y); + uint8 dir = iMap->calc_dir(target,src->x,src->y); int t_dir = unit_getdir(target); int dist = distance_bl(src, target); - if(dist <= 0 || (!map_check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1)) + if(dist <= 0 || (!iMap->check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1)) { uint16 skill_lv = tsc->data[SC_AUTOCOUNTER]->val1; clif->skillcastcancel(target); //Remove the casting bar. [Skotlex] @@ -4852,7 +4852,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t uint16 skill_lv = tsc->data[SC_BLADESTOP_WAIT]->val1; int duration = skill->get_time2(MO_BLADESTOP,skill_lv); status_change_end(target, SC_BLADESTOP_WAIT, INVALID_TIMER); - if(sc_start4(src, SC_BLADESTOP, 100, sd?pc_checkskill(sd, MO_BLADESTOP):5, 0, 0, target->id, duration)) + if(sc_start4(src, SC_BLADESTOP, 100, sd?iPc->checkskill(sd, MO_BLADESTOP):5, 0, 0, target->id, duration)) { //Target locked. clif->damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS. clif->bladestop(target, src->id, 1); @@ -4861,7 +4861,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t } } - if(sd && (skillv = pc_checkskill(sd,MO_TRIPLEATTACK)) > 0) { + if(sd && (skillv = iPc->checkskill(sd,MO_TRIPLEATTACK)) > 0) { int triple_rate= 30 - skillv; //Base Rate if (sc && sc->data[SC_SKILLRATE_UP] && sc->data[SC_SKILLRATE_UP]->val1 == MO_TRIPLEATTACK) { triple_rate+= triple_rate*(sc->data[SC_SKILLRATE_UP]->val2)/100; @@ -4900,13 +4900,13 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t } if( sc->data[SC_GT_ENERGYGAIN] ) { if( sd && rnd()%100 < 10 + 5 * sc->data[SC_GT_ENERGYGAIN]->val1) - pc_addspiritball(sd, + iPc->addspiritball(sd, skill->get_time(MO_CALLSPIRITS, sc->data[SC_GT_ENERGYGAIN]->val1), sc->data[SC_GT_ENERGYGAIN]->val1); } if( tsc && tsc->data[SC_GT_ENERGYGAIN] ) { if( tsd && rnd()%100 < 10 + 5 * tsc->data[SC_GT_ENERGYGAIN]->val1) - pc_addspiritball(tsd, + iPc->addspiritball(tsd, skill->get_time(MO_CALLSPIRITS, tsc->data[SC_GT_ENERGYGAIN]->val1), tsc->data[SC_GT_ENERGYGAIN]->val1); } @@ -4920,7 +4920,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t } if(tsc && tsc->data[SC_KAAHI] && tsc->data[SC_KAAHI]->val4 == INVALID_TIMER && tstatus->hp < tstatus->max_hp) - tsc->data[SC_KAAHI]->val4 = add_timer(tick + skill->get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1), kaahi_heal_timer, target->id, SC_KAAHI); //Activate heal. + tsc->data[SC_KAAHI]->val4 = iTimer->add_timer(tick + skill->get_time2(SL_KAAHI,tsc->data[SC_KAAHI]->val1), kaahi_heal_timer, target->id, SC_KAAHI); //Activate heal. wd = battle->calc_attack(BF_WEAPON, src, target, 0, 0, flag); @@ -4940,7 +4940,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t wd.damage *= 3; // Triple Damage if( sd && sc->data[SC_FEARBREEZE] && sc->data[SC_FEARBREEZE]->val4 > 0 && sd->status.inventory[sd->equip_index[EQI_AMMO]].amount >= sc->data[SC_FEARBREEZE]->val4 && battle_config.arrow_decrement){ - pc_delitem(sd,sd->equip_index[EQI_AMMO],sc->data[SC_FEARBREEZE]->val4,0,1,LOG_TYPE_CONSUME); + iPc->delitem(sd,sd->equip_index[EQI_AMMO],sc->data[SC_FEARBREEZE]->val4,0,1,LOG_TYPE_CONSUME); sc->data[SC_FEARBREEZE]->val4 = 0; } } @@ -4963,7 +4963,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if( rdamage > 0 ) { if( tsc && tsc->data[SC_REFLECTDAMAGE] ) { if( src != target ) {// Don't reflect your own damage (Grand Cross) - map_foreachinshootrange(battle->damage_area,target,skill->get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd.amotion,wd.dmotion,rdamage,tstatus->race); + iMap->foreachinshootrange(battle->damage_area,target,skill->get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd.amotion,wd.dmotion,rdamage,tstatus->race); } } else { rdelay = clif->damage(src, src, tick, wd.amotion, sstatus->dmotion, rdamage, 1, 4, 0); @@ -4982,20 +4982,20 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if( su->group && su->group->skill_id == HT_BLASTMINE) skill->blown(src, target, 3, -1, 0); } - map_freeblock_lock(); + iMap->freeblock_lock(); battle->delay_damage(tick, wd.amotion, src, target, wd.flag, 0, 0, damage, wd.dmg_lv, wd.dmotion, true); if( tsc ) { if( tsc->data[SC_DEVOTION] ) { struct status_change_entry *sce = tsc->data[SC_DEVOTION]; - struct block_list *d_bl = map_id2bl(sce->val1); + struct block_list *d_bl = iMap->id2bl(sce->val1); if( d_bl && ( (d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == target->id) || (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == target->id) ) && check_distance_bl(target, d_bl, sce->val3) ) { - clif->damage(d_bl, d_bl, gettick(), 0, 0, damage, 0, 0, 0); + clif->damage(d_bl, d_bl, iTimer->gettick(), 0, 0, damage, 0, 0, 0); status_fix_damage(NULL, d_bl, damage, 0); } else @@ -5007,13 +5007,13 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t skill->attack(BF_MAGIC,&ed->bl,&ed->bl,src,EL_CIRCLE_OF_FIRE,tsc->data[SC_CIRCLE_OF_FIRE_OPTION]->val1,tick,wd.flag); } } else if( tsc->data[SC_WATER_SCREEN_OPTION] && tsc->data[SC_WATER_SCREEN_OPTION]->val1 ) { - struct block_list *e_bl = map_id2bl(tsc->data[SC_WATER_SCREEN_OPTION]->val1); + struct block_list *e_bl = iMap->id2bl(tsc->data[SC_WATER_SCREEN_OPTION]->val1); if( e_bl && !status_isdead(e_bl) ) { clif->damage(e_bl,e_bl,tick,wd.amotion,wd.dmotion,damage,wd.div_,wd.type,wd.damage2); status_damage(target,e_bl,damage,0,0,0); // Just show damage in target. clif->damage(src, target, tick, wd.amotion, wd.dmotion, damage, wd.div_, wd.type, wd.damage2 ); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return ATK_NONE; } } @@ -5078,7 +5078,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if( type != CAST_GROUND ){ clif->skill_fail(sd,r_skill,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return wd.dmg_lv; } } @@ -5135,7 +5135,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t status_change_end(target, SC_POISONREACT, INVALID_TIMER); } } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return wd.dmg_lv; } @@ -5169,7 +5169,7 @@ struct block_list* battle_get_master(struct block_list *src) break; case BL_MOB: if (((TBL_MOB*)src)->master_id) - src = map_id2bl(((TBL_MOB*)src)->master_id); + src = iMap->id2bl(((TBL_MOB*)src)->master_id); break; case BL_HOM: if (((TBL_HOM*)src)->master) @@ -5185,7 +5185,7 @@ struct block_list* battle_get_master(struct block_list *src) break; case BL_SKILL: if (((TBL_SKILL*)src)->group && ((TBL_SKILL*)src)->group->src_id) - src = map_id2bl(((TBL_SKILL*)src)->group->src_id); + src = iMap->id2bl(((TBL_SKILL*)src)->group->src_id); break; } } while (src && src != prev); @@ -5348,7 +5348,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f { struct mob_data *md = BL_CAST(BL_MOB, t_bl); - if( !((agit_flag || agit2_flag) && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id ) + if( !((iMap->agit_flag || iMap->agit2_flag) && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id ) return 0; // Disable guardians/emperiums owned by Guilds on non-woe times. break; } @@ -5411,7 +5411,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f case BL_MOB: { struct mob_data *md = BL_CAST(BL_MOB, s_bl); - if( !((agit_flag || agit2_flag) && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id ) + if( !((iMap->agit_flag || iMap->agit2_flag) && map[m].flag.gvg_castle) && md->guardian_data && md->guardian_data->guild_id ) return 0; // Disable guardians/emperium owned by Guilds on non-woe times. if( !md->special_state.ai ) @@ -6026,7 +6026,7 @@ void Hercules_report(char* date, char *time_c) { #endif /* non-define part */ - if( db_use_sqldbs ) + if( iMap->db_use_sqldbs ) config |= C_SQL_DBS; if( logs->config.sql_logs ) @@ -6061,7 +6061,7 @@ void Hercules_report(char* date, char *time_c) { safestrncpy((char*)WBUFP(buf,6 + 12 + 9), timestring, 24); safestrncpy((char*)WBUFP(buf,6 + 12 + 9 + 24), git[0] != HERC_UNKNOWN_VER ? git : svn[0] != HERC_UNKNOWN_VER ? svn : "Unknown", 41); - WBUFL(buf,6 + 12 + 9 + 24 + 41) = map_getusers(); + WBUFL(buf,6 + 12 + 9 + 24 + 41) = iMap->getusers(); WBUFL(buf,6 + 12 + 9 + 24 + 41 + 4) = config; WBUFL(buf,6 + 12 + 9 + 24 + 41 + 4 + 4) = bd_size; @@ -6205,11 +6205,11 @@ int battle_config_read(const char* cfgName) void do_init_battle(void) { delay_damage_ers = ers_new(sizeof(struct delay_damage),"battle.c::delay_damage_ers",ERS_OPT_CLEAR); - add_timer_func_list(battle_delay_damage_sub, "battle_delay_damage_sub"); + iTimer->add_timer_func_list(battle_delay_damage_sub, "battle_delay_damage_sub"); #ifndef STATS_OPT_OUT - add_timer_func_list(Hercules_report_timer, "Hercules_report_timer"); - add_timer_interval(gettick()+30000, Hercules_report_timer, 0, 0, 60000 * 30); + iTimer->add_timer_func_list(Hercules_report_timer, "Hercules_report_timer"); + iTimer->add_timer_interval(iTimer->gettick()+30000, Hercules_report_timer, 0, 0, 60000 * 30); #endif } diff --git a/src/map/battleground.c b/src/map/battleground.c index bfcd56d8e..47fef4376 100644 --- a/src/map/battleground.c +++ b/src/map/battleground.c @@ -65,7 +65,7 @@ int bg_team_warp(int bg_id, unsigned short mapindex, short x, short y) struct battleground_data *bg = bg_team_search(bg_id); if( bg == NULL ) return 0; for( i = 0; i < MAX_BG_MEMBERS; i++ ) - if( bg->members[i].sd != NULL ) pc_setpos(bg->members[i].sd, mapindex, x, y, CLR_TELEPORT); + if( bg->members[i].sd != NULL ) iPc->setpos(bg->members[i].sd, mapindex, x, y, CLR_TELEPORT); return 1; } @@ -145,7 +145,7 @@ int bg_member_respawn(struct map_session_data *sd) return 0; if( bg->mapindex == 0 ) return 0; // Respawn not handled by Core - pc_setpos(sd, bg->mapindex, bg->x, bg->y, CLR_OUTSIGHT); + iPc->setpos(sd, bg->mapindex, bg->x, bg->y, CLR_OUTSIGHT); status_revive(&sd->bl, 1, 100); return 1; // Warped @@ -185,7 +185,7 @@ int bg_team_get_id(struct block_list *bl) { struct map_session_data *msd; struct mob_data *md = (TBL_MOB*)bl; - if( md->special_state.ai && (msd = map_id2sd(md->master_id)) != NULL ) + if( md->special_state.ai && (msd = iMap->id2sd(md->master_id)) != NULL ) return msd->bg_id; return md->bg_id; } @@ -220,7 +220,7 @@ int bg_send_message(struct map_session_data *sd, const char *mes, int len) */ int bg_send_xy_timer_sub(DBKey key, DBData *data, va_list ap) { - struct battleground_data *bg = DB->data2ptr(data); + struct battleground_data *bg = iDB->data2ptr(data); struct map_session_data *sd; int i; nullpo_ret(bg); @@ -439,7 +439,7 @@ void bg_match_over(struct bg_arena *arena, bool canceled) { for( i = 0; i < queue->items; i++ ) { struct map_session_data * sd = NULL; - if( ( sd = map_id2sd(queue->item[i]) ) ) { + if( ( sd = iMap->id2sd(queue->item[i]) ) ) { bg->queue_pc_cleanup(sd); clif->colormes(sd->fd,COLOR_RED,"BG Match Cancelled: not enough players"); } @@ -456,7 +456,7 @@ void bg_begin(struct bg_arena *arena) { for( i = 0; i < queue->items; i++ ) { struct map_session_data * sd = NULL; - if( ( sd = map_id2sd(queue->item[i]) ) ) { + if( ( sd = iMap->id2sd(queue->item[i]) ) ) { if( sd->bg_queue.ready == 1 ) count++; else @@ -485,11 +485,11 @@ void bg_queue_pregame(struct bg_arena *arena) { for( i = 0; i < queue->items; i++ ) { struct map_session_data * sd = NULL; - if( ( sd = map_id2sd(queue->item[i]) ) ) { + if( ( sd = iMap->id2sd(queue->item[i]) ) ) { clif->bgqueue_battlebegins(sd,arena->id,SELF); } } - arena->begin_timer = add_timer( gettick() + (arena->pregame_duration*1000), bg->begin_timer, arena->id, 0 ); + arena->begin_timer = iTimer->add_timer( iTimer->gettick() + (arena->pregame_duration*1000), bg->begin_timer, arena->id, 0 ); } int bg_fillup_timer(int tid, unsigned int tick, int id, intptr_t data) { bg->queue_pregame(bg->arena[id]); @@ -501,12 +501,12 @@ void bg_queue_check(struct bg_arena *arena) { if( count == arena->max_players ) { if( arena->fillup_timer != INVALID_TIMER ) { - delete_timer(arena->fillup_timer,bg_fillup_timer); + iTimer->delete_timer(arena->fillup_timer,bg_fillup_timer); arena->fillup_timer = INVALID_TIMER; } bg->queue_pregame(arena); } else if( count >= arena->min_players && arena->fillup_timer == INVALID_TIMER ) { - arena->fillup_timer = add_timer( gettick() + (arena->fillup_duration*1000), bg->fillup_timer, arena->id, 0 ); + arena->fillup_timer = iTimer->add_timer( iTimer->gettick() + (arena->fillup_duration*1000), bg->fillup_timer, arena->id, 0 ); } } void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_queue_types type) { @@ -526,7 +526,7 @@ void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_q switch( type ) { /* guild/party already validated in can_queue */ case BGQT_PARTY: { - struct party_data *p = party_search(sd->status.party_id); + struct party_data *p = iParty->search(sd->status.party_id); for( i = 0; i < MAX_PARTY; i++ ) { if( !p->data[i].sd || p->data[i].sd->bg_queue.arena != NULL ) continue; count++; @@ -560,7 +560,7 @@ void bg_queue_add(struct map_session_data *sd, struct bg_arena *arena, enum bg_q clif->bgqueue_update_info(sd,arena->id,script->hq[arena->queue_id].items); break; case BGQT_PARTY: { - struct party_data *p = party_search(sd->status.party_id); + struct party_data *p = iParty->search(sd->status.party_id); for( i = 0; i < MAX_PARTY; i++ ) { if( !p->data[i].sd || p->data[i].sd->bg_queue.arena != NULL ) continue; p->data[i].sd->bg_queue.type = type; @@ -650,7 +650,7 @@ enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_ return BGQA_NOT_PARTY_GUILD_LEADER; else { struct party_data *p; - if( (p = party_search(sd->status.party_id) ) ) { + if( (p = iParty->search(sd->status.party_id) ) ) { int i, count = 0; bool is_leader = false; @@ -691,8 +691,8 @@ enum BATTLEGROUNDS_QUEUE_ACK bg_canqueue(struct map_session_data *sd, struct bg_ } void do_init_battleground(void) { bg_team_db = idb_alloc(DB_OPT_RELEASE_DATA); - add_timer_func_list(bg_send_xy_timer, "bg_send_xy_timer"); - add_timer_interval(gettick() + battle_config.bg_update_interval, bg_send_xy_timer, 0, 0, battle_config.bg_update_interval); + iTimer->add_timer_func_list(bg_send_xy_timer, "bg_send_xy_timer"); + iTimer->add_timer_interval(iTimer->gettick() + battle_config.bg_update_interval, bg_send_xy_timer, 0, 0, battle_config.bg_update_interval); } void do_final_battleground(void) { diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c index 0b59e8f1e..0fed57d37 100644 --- a/src/map/buyingstore.c +++ b/src/map/buyingstore.c @@ -64,7 +64,7 @@ bool buyingstore_setup(struct map_session_data* sd, unsigned char slots) return false; } - if( map_getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) + if( iMap->getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) {// custom: no vending cells clif->message(sd->fd, msg_txt(204)); // "You can't open a shop on this cell." return false; @@ -100,7 +100,7 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha return; } - if( !pc_can_give_items(sd) ) + if( !iPc->can_give_items(sd) ) {// custom: GM is not allowed to buy (give zeny) sd->buyingstore.slots = 0; clif->message(sd->fd, msg_txt(246)); @@ -119,7 +119,7 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha return; } - if( map_getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) + if( iMap->getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) {// custom: no vending cells clif->message(sd->fd, msg_txt(204)); // "You can't open a shop on this cell." return; @@ -147,7 +147,7 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha break; } - if( !id->flag.buyingstore || !itemdb_cantrade_sub(id, pc_get_group_level(sd), pc_get_group_level(sd)) || ( idx = pc_search_inventory(sd, nameid) ) == -1 ) + if( !id->flag.buyingstore || !itemdb_cantrade_sub(id, iPc->get_group_level(sd), iPc->get_group_level(sd)) || ( idx = iPc->search_inventory(sd, nameid) ) == -1 ) {// restrictions: allowed, no character-bound items and at least one must be owned break; } @@ -221,13 +221,13 @@ void buyingstore_open(struct map_session_data* sd, int account_id) return; } - if( !pc_can_give_items(sd) ) + if( !iPc->can_give_items(sd) ) {// custom: GM is not allowed to sell clif->message(sd->fd, msg_txt(246)); return; } - if( ( pl_sd = map_id2sd(account_id) ) == NULL || !pl_sd->state.buyingstore ) + if( ( pl_sd = iMap->id2sd(account_id) ) == NULL || !pl_sd->state.buyingstore ) {// not online or not buying return; } @@ -259,14 +259,14 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int return; } - if( !pc_can_give_items(sd) ) + if( !iPc->can_give_items(sd) ) {// custom: GM is not allowed to sell clif->message(sd->fd, msg_txt(246)); clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, 0); return; } - if( ( pl_sd = map_id2sd(account_id) ) == NULL || !pl_sd->state.buyingstore || pl_sd->buyer_id != buyer_id ) + if( ( pl_sd = iMap->id2sd(account_id) ) == NULL || !pl_sd->state.buyingstore || pl_sd->buyer_id != buyer_id ) {// not online, not buying or not same store clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, 0); return; @@ -314,7 +314,7 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int return; } - if( sd->status.inventory[index].expire_time || !itemdb_cantrade(&sd->status.inventory[index], pc_get_group_level(sd), pc_get_group_level(pl_sd)) || memcmp(sd->status.inventory[index].card, buyingstore_blankslots, sizeof(buyingstore_blankslots)) ) + if( sd->status.inventory[index].expire_time || !itemdb_cantrade(&sd->status.inventory[index], iPc->get_group_level(sd), iPc->get_group_level(pl_sd)) || memcmp(sd->status.inventory[index].card, buyingstore_blankslots, sizeof(buyingstore_blankslots)) ) {// non-tradable item clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, nameid); return; @@ -333,7 +333,7 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int return; } - if( pc_checkadditem(pl_sd, nameid, amount) == ADDITEM_OVERAMOUNT ) + if( iPc->checkadditem(pl_sd, nameid, amount) == ADDITEM_OVERAMOUNT ) {// buyer does not have enough space for this item clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, nameid); return; @@ -369,13 +369,13 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int zeny = amount*pl_sd->buyingstore.items[listidx].price; // move item - pc_additem(pl_sd, &sd->status.inventory[index], amount, LOG_TYPE_BUYING_STORE); - pc_delitem(sd, index, amount, 1, 0, LOG_TYPE_BUYING_STORE); + iPc->additem(pl_sd, &sd->status.inventory[index], amount, LOG_TYPE_BUYING_STORE); + iPc->delitem(sd, index, amount, 1, 0, LOG_TYPE_BUYING_STORE); pl_sd->buyingstore.items[listidx].amount-= amount; // pay up - pc_payzeny(pl_sd, zeny, LOG_TYPE_BUYING_STORE, sd); - pc_getzeny(sd, zeny, LOG_TYPE_BUYING_STORE, pl_sd); + iPc->payzeny(pl_sd, zeny, LOG_TYPE_BUYING_STORE, sd); + iPc->getzeny(sd, zeny, LOG_TYPE_BUYING_STORE, pl_sd); pl_sd->buyingstore.zenylimit-= zeny; // notify clients @@ -383,7 +383,7 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int clif->buyingstore_update_item(pl_sd, nameid, amount); } - if( save_settings&128 ) { + if( iMap->save_settings&128 ) { chrif_save(sd, 0); chrif_save(pl_sd, 0); } @@ -409,7 +409,7 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int // remove auto-trader if( pl_sd->state.autotrade ) { - map_quit(pl_sd); + iMap->quit(pl_sd); } } diff --git a/src/map/chat.c b/src/map/chat.c index a18e87eef..c0452f2c5 100644 --- a/src/map/chat.c +++ b/src/map/chat.c @@ -44,7 +44,7 @@ static struct chat_data* chat_createchat(struct block_list* bl, const char* titl cd->owner = bl; safestrncpy(cd->npc_event, ev, sizeof(cd->npc_event)); - cd->bl.id = map_get_new_object_id(); + cd->bl.id = iMap->get_new_object_id(); cd->bl.m = bl->m; cd->bl.x = bl->x; cd->bl.y = bl->y; @@ -57,7 +57,7 @@ static struct chat_data* chat_createchat(struct block_list* bl, const char* titl cd = NULL; } - map_addiddb(&cd->bl); + iMap->addiddb(&cd->bl); if( bl->type != BL_NPC ) cd->kick_list = idb_alloc(DB_OPT_BASE); @@ -87,7 +87,7 @@ int chat_createpcchat(struct map_session_data* sd, const char* title, const char return 0; //Can't create chatrooms on this map. } - if( map_getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOCHAT) ) + if( iMap->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOCHAT) ) { clif->message (sd->fd, msg_txt(665)); return 0; @@ -117,7 +117,7 @@ int chat_joinchat(struct map_session_data* sd, int chatid, const char* pass) struct chat_data* cd; nullpo_ret(sd); - cd = (struct chat_data*)map_id2bl(chatid); + cd = (struct chat_data*)iMap->id2bl(chatid); if( cd == NULL || cd->bl.type != BL_CHAT || cd->bl.m != sd->bl.m || sd->state.vending || sd->state.buyingstore || sd->chatID || ((cd->owner->type == BL_NPC) ? cd->users+1 : cd->users) >= cd->limit ) { @@ -177,7 +177,7 @@ int chat_leavechat(struct map_session_data* sd, bool kicked) nullpo_retr(1, sd); - cd = (struct chat_data*)map_id2bl(sd->chatID); + cd = (struct chat_data*)iMap->id2bl(sd->chatID); if( cd == NULL ) { pc_setchatid(sd, 0); @@ -207,11 +207,11 @@ int chat_leavechat(struct map_session_data* sd, bool kicked) clif->clearchat(cd, 0); db_destroy(cd->kick_list); - map_deliddb(&cd->bl); - map_delblock(&cd->bl); - map_freeblock(&cd->bl); + iMap->deliddb(&cd->bl); + iMap->delblock(&cd->bl); + iMap->freeblock(&cd->bl); - unit = map_find_skill_unit_oncell(&sd->bl, sd->bl.x, sd->bl.y, AL_WARP, NULL, 0); + unit = iMap->find_skill_unit_oncell(&sd->bl, sd->bl.x, sd->bl.y, AL_WARP, NULL, 0); group = (unit != NULL) ? unit->group : NULL; if (group != NULL) skill->unit_onplace(unit, &sd->bl, group->tick); @@ -226,10 +226,10 @@ int chat_leavechat(struct map_session_data* sd, bool kicked) clif->clearchat(cd, 0); //Adjust Chat location after owner has been changed. - map_delblock( &cd->bl ); + iMap->delblock( &cd->bl ); cd->bl.x=cd->usersd[0]->bl.x; cd->bl.y=cd->usersd[0]->bl.y; - map_addblock( &cd->bl ); + iMap->addblock( &cd->bl ); clif->dispchat(cd,0); } @@ -250,7 +250,7 @@ int chat_changechatowner(struct map_session_data* sd, const char* nextownername) nullpo_retr(1, sd); - cd = (struct chat_data*)map_id2bl(sd->chatID); + cd = (struct chat_data*)iMap->id2bl(sd->chatID); if( cd == NULL || (struct block_list*) sd != cd->owner ) return 1; @@ -271,10 +271,10 @@ int chat_changechatowner(struct map_session_data* sd, const char* nextownername) cd->usersd[0] = tmpsd; // set the new chatroom position - map_delblock( &cd->bl ); + iMap->delblock( &cd->bl ); cd->bl.x = cd->owner->x; cd->bl.y = cd->owner->y; - map_addblock( &cd->bl ); + iMap->addblock( &cd->bl ); // and display again clif->dispchat(cd,0); @@ -291,7 +291,7 @@ int chat_changechatstatus(struct map_session_data* sd, const char* title, const nullpo_retr(1, sd); - cd = (struct chat_data*)map_id2bl(sd->chatID); + cd = (struct chat_data*)iMap->id2bl(sd->chatID); if( cd==NULL || (struct block_list *)sd != cd->owner ) return 1; @@ -316,7 +316,7 @@ int chat_kickchat(struct map_session_data* sd, const char* kickusername) nullpo_retr(1, sd); - cd = (struct chat_data *)map_id2bl(sd->chatID); + cd = (struct chat_data *)iMap->id2bl(sd->chatID); if( cd==NULL || (struct block_list *)sd != cd->owner ) return -1; @@ -366,15 +366,15 @@ int chat_deletenpcchat(struct npc_data* nd) struct chat_data *cd; nullpo_ret(nd); - cd = (struct chat_data*)map_id2bl(nd->chat_id); + cd = (struct chat_data*)iMap->id2bl(nd->chat_id); if( cd == NULL ) return 0; chat_npckickall(cd); clif->clearchat(cd, 0); - map_deliddb(&cd->bl); - map_delblock(&cd->bl); - map_freeblock(&cd->bl); + iMap->deliddb(&cd->bl); + iMap->delblock(&cd->bl); + iMap->freeblock(&cd->bl); nd->chat_id = 0; return 0; diff --git a/src/map/chrif.c b/src/map/chrif.c index ee2e252c1..8a70b4931 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -53,11 +53,11 @@ static const int packet_len_table[0x3d] = { // U - used, F - free //2af9: Incoming, chrif_connectack -> 'answer of the 2af8 login(ok / fail)' //2afa: Outgoing, chrif_sendmap -> 'sending our maps' //2afb: Incoming, chrif_sendmapack -> 'Maps received successfully / or not ..' -//2afc: Outgoing, chrif_scdata_request -> request sc_data for pc_authok'ed char. <- new command reuses previous one. +//2afc: Outgoing, chrif_scdata_request -> request sc_data for iPc->authok'ed char. <- new command reuses previous one. //2afd: Incoming, chrif_authok -> 'client authentication ok' //2afe: Outgoing, send_usercount_tochar -> 'sends player count of this map server to charserver' //2aff: Outgoing, send_users_tochar -> 'sends all actual connected character ids to charserver' -//2b00: Incoming, map_setusers -> 'set the actual usercount? PACKET.2B COUNT.L.. ?' (not sure) +//2b00: Incoming, iMap->setusers -> 'set the actual usercount? PACKET.2B COUNT.L.. ?' (not sure) //2b01: Outgoing, chrif_save -> 'charsave of char XY account XY (complete struct)' //2b02: Outgoing, chrif_charselectreq -> 'player returns from ingame to charserver to select another char.., this packets includes sessid etc' ? (not 100% sure) //2b03: Incoming, clif_charselectok -> '' (i think its the packet after enterworld?) (not sure) @@ -185,7 +185,7 @@ static bool chrif_sd_to_auth(TBL_PC* sd, enum sd_state state) { node->sex = sd->status.sex; node->fd = sd->fd; node->sd = sd; //Data from logged on char. - node->node_created = gettick(); //timestamp for node timeouts + node->node_created = iTimer->gettick(); //timestamp for node timeouts node->state = state; sd->state.active = 0; @@ -272,7 +272,7 @@ int chrif_isconnected(void) { int chrif_save(struct map_session_data *sd, int flag) { nullpo_retr(-1, sd); - pc_makesavestatus(sd); + iPc->makesavestatus(sd); if (flag && sd->state.active) { //Store player data which is quitting //FIXME: SC are lost if there's no connection at save-time because of the way its related data is cleared immediately after this function. [Skotlex] @@ -361,7 +361,7 @@ int chrif_recvmap(int fd) { uint16 port = ntohs(RFIFOW(fd,8)); for(i = 10, j = 0; i < RFIFOW(fd,2); i += 4, j++) { - map_setipport(RFIFOW(fd,i), ip, port); + iMap->setipport(RFIFOW(fd,i), ip, port); } if (battle_config.etc_log) @@ -379,7 +379,7 @@ int chrif_removemap(int fd) { uint16 port = RFIFOW(fd,8); for(i = 10, j = 0; i < RFIFOW(fd, 2); i += 4, j++) - map_eraseipport(RFIFOW(fd, i), ip, port); + iMap->eraseipport(RFIFOW(fd, i), ip, port); other_mapserver_count--; @@ -479,12 +479,12 @@ int chrif_connectack(int fd) { * @see DBApply */ static int chrif_reconnect(DBKey key, DBData *data, va_list ap) { - struct auth_node *node = DB->data2ptr(data); + struct auth_node *node = iDB->data2ptr(data); switch (node->state) { case ST_LOGIN: if ( node->sd && node->char_dat == NULL ) {//Since there is no way to request the char auth, make it fail. - pc_authfail(node->sd); + iPc->authfail(node->sd); chrif_char_offline(node->sd); chrif_auth_delete(node->account_id, node->char_id, ST_LOGIN); } @@ -498,7 +498,7 @@ static int chrif_reconnect(DBKey key, DBData *data, va_list ap) { uint32 ip; uint16 port; - if( map_mapname2ipport(sd->mapindex,&ip,&port) == 0 ) + if( iMap->mapname2ipport(sd->mapindex,&ip,&port) == 0 ) chrif_changemapserver(sd, ip, port); else //too much lag/timeout is the closest explanation for this error. clif->authfail_fd(sd->fd, 3); @@ -543,7 +543,7 @@ int chrif_sendmapack(int fd) { exit(EXIT_FAILURE); } - memcpy(wisp_server_name, RFIFOP(fd,3), NAME_LENGTH); + memcpy(iMap->wisp_server_name, RFIFOP(fd,3), NAME_LENGTH); chrif_on_ready(); @@ -619,7 +619,7 @@ void chrif_authok(int fd) { //Check if we don't already have player data in our server //Causes problems if the currently connected player tries to quit or this data belongs to an already connected player which is trying to re-auth. - if ( ( sd = map_id2sd(account_id) ) != NULL ) + if ( ( sd = iMap->id2sd(account_id) ) != NULL ) return; if ( ( node = chrif_search(account_id) ) == NULL ) @@ -645,10 +645,10 @@ void chrif_authok(int fd) { node->char_id == char_id && node->login_id1 == login_id1 ) { //Auth Ok - if (pc_authok(sd, login_id2, expiration_time, group_id, status, changing_mapservers)) + if (iPc->authok(sd, login_id2, expiration_time, group_id, status, changing_mapservers)) return; } else { //Auth Failed - pc_authfail(sd); + iPc->authfail(sd); } chrif_char_offline(sd); //Set him offline, the char server likely has it set as online already. @@ -687,14 +687,14 @@ void chrif_authfail(int fd) {/* HELLO WORLD. ip in RFIFOL 15 is not being used ( * @see DBApply */ int auth_db_cleanup_sub(DBKey key, DBData *data, va_list ap) { - struct auth_node *node = DB->data2ptr(data); + struct auth_node *node = iDB->data2ptr(data); const char* states[] = { "Login", "Logout", "Map change" }; - if(DIFF_TICK(gettick(),node->node_created)>60000) { + if(DIFF_TICK(iTimer->gettick(),node->node_created)>60000) { switch (node->state) { case ST_LOGOUT: //Re-save attempt (->sd should never be null here). - node->node_created = gettick(); //Refresh tick (avoid char-server load if connection is really bad) + node->node_created = iTimer->gettick(); //Refresh tick (avoid char-server load if connection is really bad) chrif_save(node->sd, 1); break; default: @@ -819,7 +819,7 @@ int chrif_changesex(struct map_session_data *sd) { if (sd->fd) clif->authfail_fd(sd->fd, 15); else - map_quit(sd); + iMap->quit(sd); return 0; } @@ -839,7 +839,7 @@ static void chrif_char_ask_name_answer(int acc, const char* player_name, uint16 char action[25]; char output[256]; - sd = map_id2sd(acc); + sd = iMap->id2sd(acc); if( acc < 0 || sd == NULL ) { ShowError("chrif_char_ask_name_answer failed - player not online.\n"); @@ -875,7 +875,7 @@ int chrif_changedsex(int fd) { if ( battle_config.etc_log ) ShowNotice("chrif_changedsex %d.\n", acc); - sd = map_id2sd(acc); + sd = iMap->id2sd(acc); if ( sd ) { //Normally there should not be a char logged on right now! if ( sd->status.sex == sex ) return 0; //Do nothing? Likely safe. @@ -915,7 +915,7 @@ int chrif_changedsex(int fd) { // do same modify in login-server for the account, but no in char-server (it ask again login_id1 to login, and don't remember it) clif->message(sd->fd, msg_txt(409)); //"Your sex has been changed (need disconnection by the server)..." set_eof(sd->fd); // forced to disconnect for the change - map_quit(sd); // Remove leftovers (e.g. autotrading) [Paradox924X] + iMap->quit(sd); // Remove leftovers (e.g. autotrading) [Paradox924X] } return 0; } @@ -945,18 +945,18 @@ int chrif_divorceack(int char_id, int partner_id) { if( !char_id || !partner_id ) return 0; - if( ( sd = map_charid2sd(char_id) ) != NULL && sd->status.partner_id == partner_id ) { + if( ( sd = iMap->charid2sd(char_id) ) != NULL && sd->status.partner_id == partner_id ) { sd->status.partner_id = 0; for(i = 0; i < MAX_INVENTORY; i++) if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F) - pc_delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER); + iPc->delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER); } - if( ( sd = map_charid2sd(partner_id) ) != NULL && sd->status.partner_id == char_id ) { + if( ( sd = iMap->charid2sd(partner_id) ) != NULL && sd->status.partner_id == char_id ) { sd->status.partner_id = 0; for(i = 0; i < MAX_INVENTORY; i++) if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F) - pc_delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER); + iPc->delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER); } return 0; @@ -968,7 +968,7 @@ int chrif_deadopt(int father_id, int mother_id, int child_id) { struct map_session_data* sd; int idx = skill->get_index(WE_CALLBABY); - if( father_id && ( sd = map_charid2sd(father_id) ) != NULL && sd->status.child == child_id ) { + if( father_id && ( sd = iMap->charid2sd(father_id) ) != NULL && sd->status.child == child_id ) { sd->status.child = 0; sd->status.skill[idx].id = 0; sd->status.skill[idx].lv = 0; @@ -976,7 +976,7 @@ int chrif_deadopt(int father_id, int mother_id, int child_id) { clif->deleteskill(sd,WE_CALLBABY); } - if( mother_id && ( sd = map_charid2sd(mother_id) ) != NULL && sd->status.child == child_id ) { + if( mother_id && ( sd = iMap->charid2sd(mother_id) ) != NULL && sd->status.child == child_id ) { sd->status.child = 0; sd->status.skill[idx].id = 0; sd->status.skill[idx].lv = 0; @@ -999,7 +999,7 @@ int chrif_accountban(int fd) { if ( battle_config.etc_log ) ShowNotice("chrif_accountban %d.\n", acc); - sd = map_id2sd(acc); + sd = iMap->id2sd(acc); if ( acc < 0 || sd == NULL ) { ShowError("chrif_accountban failed - player not online.\n"); @@ -1025,7 +1025,7 @@ int chrif_accountban(int fd) { } set_eof(sd->fd); // forced to disconnect for the change - map_quit(sd); // Remove leftovers (e.g. autotrading) [Paradox924X] + iMap->quit(sd); // Remove leftovers (e.g. autotrading) [Paradox924X] return 0; } @@ -1035,7 +1035,7 @@ int chrif_disconnectplayer(int fd) { struct map_session_data* sd; int account_id = RFIFOL(fd, 2); - sd = map_id2sd(account_id); + sd = iMap->id2sd(account_id); if( sd == NULL ) { struct auth_node* auth = chrif_search(account_id); @@ -1047,7 +1047,7 @@ int chrif_disconnectplayer(int fd) { if (!sd->fd) { //No connection if (sd->state.autotrade) - map_quit(sd); //Remove it. + iMap->quit(sd); //Remove it. //Else we don't remove it because the char should have a timer to remove the player because it force-quit before, //and we don't want them kicking their previous instance before the 10 secs penalty time passes. [Skotlex] return 0; @@ -1172,7 +1172,7 @@ int chrif_save_scdata(struct map_session_data *sd) { //parses the sc_data of the const struct TimerData *timer; chrif_check(-1); - tick = gettick(); + tick = iTimer->gettick(); WFIFOHEAD(char_fd, 14 + SC_MAX*sizeof(struct status_change_data)); WFIFOW(char_fd,0) = 0x2b1c; @@ -1183,7 +1183,7 @@ int chrif_save_scdata(struct map_session_data *sd) { //parses the sc_data of the if (!sc->data[i]) continue; if (sc->data[i]->timer != INVALID_TIMER) { - timer = get_timer(sc->data[i]->timer); + timer = iTimer->get_timer(sc->data[i]->timer); if (timer == NULL || timer->func != status_change_timer || DIFF_TICK(timer->tick,tick) < 0) continue; data.tick = DIFF_TICK(timer->tick,tick); //Duration that is left before ending. @@ -1221,7 +1221,7 @@ int chrif_load_scdata(int fd) { aid = RFIFOL(fd,4); //Player Account ID cid = RFIFOL(fd,8); //Player Char ID - sd = map_id2sd(aid); + sd = iMap->id2sd(aid); if ( !sd ) { ShowError("chrif_load_scdata: Player of AID %d not found!\n", aid); @@ -1338,10 +1338,10 @@ void chrif_on_disconnect(void) { chrif_connected = 0; other_mapserver_count = 0; //Reset counter. We receive ALL maps from all map-servers on reconnect. - map_eraseallipport(); + iMap->eraseallipport(); //Attempt to reconnect in a second. [Skotlex] - add_timer(gettick() + 1000, check_connect_char_server, 0, 0); + iTimer->add_timer(iTimer->gettick() + 1000, check_connect_char_server, 0, 0); } @@ -1448,11 +1448,11 @@ int chrif_parse(int fd) { case 0x2af9: chrif_connectack(fd); break; case 0x2afb: chrif_sendmapack(fd); break; case 0x2afd: chrif_authok(fd); break; - case 0x2b00: map_setusers(RFIFOL(fd,2)); chrif_keepalive(fd); break; + case 0x2b00: iMap->setusers(RFIFOL(fd,2)); chrif_keepalive(fd); break; case 0x2b03: clif->charselectok(RFIFOL(fd,2), RFIFOB(fd,6)); break; case 0x2b04: chrif_recvmap(fd); break; case 0x2b06: chrif_changemapserverack(RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14), RFIFOW(fd,18), RFIFOW(fd,20), RFIFOW(fd,22), RFIFOL(fd,24), RFIFOW(fd,28)); break; - case 0x2b09: map_addnickdb(RFIFOL(fd,2), (char*)RFIFOP(fd,6)); break; + case 0x2b09: iMap->addnickdb(RFIFOL(fd,2), (char*)RFIFOP(fd,6)); break; case 0x2b0a: socket_datasync(fd, false); break; case 0x2b0d: chrif_changedsex(fd); break; case 0x2b0f: chrif_char_ask_name_answer(RFIFOL(fd,2), (char*)RFIFOP(fd,6), RFIFOW(fd,30), RFIFOW(fd,32)); break; @@ -1486,7 +1486,7 @@ int send_usercount_tochar(int tid, unsigned int tick, int id, intptr_t data) { WFIFOHEAD(char_fd,4); WFIFOW(char_fd,0) = 0x2afe; - WFIFOW(char_fd,2) = map_usercount(); + WFIFOW(char_fd,2) = iMap->usercount(); WFIFOSET(char_fd,4); return 0; } @@ -1502,7 +1502,7 @@ int send_users_tochar(void) { chrif_check(-1); - users = map_usercount(); + users = iMap->usercount(); WFIFOHEAD(char_fd, 6+8*users); WFIFOW(char_fd,0) = 0x2aff; @@ -1595,7 +1595,7 @@ void chrif_send_report(char* buf, int len) { * @see DBApply */ int auth_db_final(DBKey key, DBData *data, va_list ap) { - struct auth_node *node = DB->data2ptr(data); + struct auth_node *node = iDB->data2ptr(data); if (node->char_dat) aFree(node->char_dat); @@ -1633,17 +1633,17 @@ int do_init_chrif(void) { auth_db = idb_alloc(DB_OPT_BASE); auth_db_ers = ers_new(sizeof(struct auth_node),"chrif.c::auth_db_ers",ERS_OPT_NONE); - add_timer_func_list(check_connect_char_server, "check_connect_char_server"); - add_timer_func_list(auth_db_cleanup, "auth_db_cleanup"); + iTimer->add_timer_func_list(check_connect_char_server, "check_connect_char_server"); + iTimer->add_timer_func_list(auth_db_cleanup, "auth_db_cleanup"); // establish map-char connection if not present - add_timer_interval(gettick() + 1000, check_connect_char_server, 0, 0, 10 * 1000); + iTimer->add_timer_interval(iTimer->gettick() + 1000, check_connect_char_server, 0, 0, 10 * 1000); // wipe stale data for timed-out client connection requests - add_timer_interval(gettick() + 1000, auth_db_cleanup, 0, 0, 30 * 1000); + iTimer->add_timer_interval(iTimer->gettick() + 1000, auth_db_cleanup, 0, 0, 30 * 1000); // send the user count every 10 seconds, to hide the charserver's online counting problem - add_timer_interval(gettick() + 1000, send_usercount_tochar, 0, 0, UPDATE_INTERVAL); + iTimer->add_timer_interval(iTimer->gettick() + 1000, send_usercount_tochar, 0, 0, UPDATE_INTERVAL); return 0; } diff --git a/src/map/clif.c b/src/map/clif.c index 42043c004..39ffdd23d 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -361,11 +361,11 @@ int clif_send(const void* buf, int len, struct block_list* bl, enum send_target clif->send (buf, len, bl, SELF); case AREA_WOC: case AREA_WOS: - map_foreachinarea(clif->send_sub, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE, + iMap->foreachinarea(clif->send_sub, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE, BL_PC, buf, len, bl, type); break; case AREA_CHAT_WOC: - map_foreachinarea(clif->send_sub, bl->m, bl->x-(AREA_SIZE-5), bl->y-(AREA_SIZE-5), + iMap->foreachinarea(clif->send_sub, bl->m, bl->x-(AREA_SIZE-5), bl->y-(AREA_SIZE-5), bl->x+(AREA_SIZE-5), bl->y+(AREA_SIZE-5), BL_PC, buf, len, bl, AREA_WOC); break; @@ -374,7 +374,7 @@ int clif_send(const void* buf, int len, struct block_list* bl, enum send_target { struct chat_data *cd; if (sd) { - cd = (struct chat_data*)map_id2bl(sd->chatID); + cd = (struct chat_data*)iMap->id2bl(sd->chatID); } else if (bl->type == BL_CHAT) { cd = (struct chat_data*)bl; } else break; @@ -403,7 +403,7 @@ int clif_send(const void* buf, int len, struct block_list* bl, enum send_target case PARTY_SAMEMAP: case PARTY_SAMEMAP_WOS: if (sd && sd->status.party_id) - p = party_search(sd->status.party_id); + p = iParty->search(sd->status.party_id); if (p) { for(i=0;i<MAX_PARTY;i++){ @@ -426,7 +426,7 @@ int clif_send(const void* buf, int len, struct block_list* bl, enum send_target memcpy(WFIFOP(fd,0), buf, len); WFIFOSET(fd,len); } - if (!enable_spy) //Skip unnecessary parsing. [Skotlex] + if (!iMap->enable_spy) //Skip unnecessary parsing. [Skotlex] break; iter = mapit_getallusers(); @@ -503,7 +503,7 @@ int clif_send(const void* buf, int len, struct block_list* bl, enum send_target WFIFOSET(fd,len); } } - if (!enable_spy) //Skip unnecessary parsing. [Skotlex] + if (!iMap->enable_spy) //Skip unnecessary parsing. [Skotlex] break; iter = mapit_getallusers(); @@ -561,7 +561,7 @@ void clif_authok(struct map_session_data *sd) struct packet_authok p; p.PacketType = authokType; - p.startTime = gettick(); + p.startTime = iTimer->gettick(); WBUFPOS(&p.PosDir[0],0,sd->bl.x,sd->bl.y,sd->ud.dir); /* do the stupid client math */ p.xSize = p.ySize = 5; /* not-used */ @@ -645,7 +645,7 @@ void clif_charselectok(int id, uint8 ok) struct map_session_data* sd; int fd; - if ((sd = map_id2sd(id)) == NULL || !sd->fd) + if ((sd = iMap->id2sd(id)) == NULL || !sd->fd) return; fd = sd->fd; @@ -763,7 +763,7 @@ void clif_clearunit_delayed(struct block_list* bl, clr_type type, unsigned int t { struct block_list *tbl = ers_alloc(clif->delay_clearunit_ers, struct block_list); memcpy (tbl, bl, sizeof (struct block_list)); - add_timer(tick, clif->clearunit_delayed_sub, (int)type, (intptr_t)tbl); + iTimer->add_timer(tick, clif->clearunit_delayed_sub, (int)type, (intptr_t)tbl); } void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand) @@ -1176,7 +1176,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd, p.head = vd->hair_style; p.weapon = vd->weapon; p.accessory = vd->head_bottom; - p.moveStartTime = gettick(); + p.moveStartTime = iTimer->gettick(); #if PACKETVER < 7 p.shield = vd->shield; #endif @@ -1554,7 +1554,7 @@ void clif_walkok(struct map_session_data *sd) WFIFOHEAD(fd, packet_len(0x87)); WFIFOW(fd,0)=0x87; - WFIFOL(fd,2)=gettick(); + WFIFOL(fd,2)=iTimer->gettick(); WFIFOPOS2(fd,6,sd->bl.x,sd->bl.y,sd->ud.to_x,sd->ud.to_y,8,8); WFIFOSET(fd,packet_len(0x87)); } @@ -1625,7 +1625,7 @@ void clif_move(struct unit_data *ud) WBUFW(buf,0)=0x86; WBUFL(buf,2)=bl->id; WBUFPOS2(buf,6,bl->x,bl->y,ud->to_x,ud->to_y,8,8); - WBUFL(buf,12)=gettick(); + WBUFL(buf,12)=iTimer->gettick(); clif->send(buf, packet_len(0x86), bl, AREA_WOS); if (disguised(bl)) { WBUFL(buf,2)=-bl->id; @@ -1635,14 +1635,14 @@ void clif_move(struct unit_data *ud) /*========================================== - * Delays the map_quit of a player after they are disconnected. [Skotlex] + * Delays the iMap->quit of a player after they are disconnected. [Skotlex] *------------------------------------------*/ int clif_delayquit(int tid, unsigned int tick, int id, intptr_t data) { struct map_session_data *sd = NULL; //Remove player from map server - if ((sd = map_id2sd(id)) != NULL && sd->fd == 0) //Should be a disconnected player. - map_quit(sd); + if ((sd = iMap->id2sd(id)) != NULL && sd->fd == 0) //Should be a disconnected player. + iMap->quit(sd); return 0; } @@ -1651,14 +1651,14 @@ int clif_delayquit(int tid, unsigned int tick, int id, intptr_t data) { *------------------------------------------*/ void clif_quitsave(int fd,struct map_session_data *sd) { if (!battle_config.prevent_logout || - DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) - map_quit(sd); + DIFF_TICK(iTimer->gettick(), sd->canlog_tick) > battle_config.prevent_logout) + iMap->quit(sd); else if (sd->fd) { //Disassociate session from player (session is deleted after this function was called) //And set a timer to make him quit later. session[sd->fd]->session_data = NULL; sd->fd = 0; - add_timer(gettick() + 10000, clif->delayquit, sd->bl.id, 0); + iTimer->add_timer(iTimer->gettick() + 10000, clif->delayquit, sd->bl.id, 0); } } @@ -1763,7 +1763,7 @@ void clif_buylist(struct map_session_data *sd, struct npc_data *nd) if( id == NULL ) continue; WFIFOL(fd, 4+c*11) = val; - WFIFOL(fd, 8+c*11) = pc_modifybuyvalue(sd,val); + WFIFOL(fd, 8+c*11) = iPc->modifybuyvalue(sd,val); WFIFOB(fd,12+c*11) = itemtype(id->type); WFIFOW(fd,13+c*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid; c++; @@ -1806,7 +1806,7 @@ void clif_selllist(struct map_session_data *sd) { if( sd->status.inventory[i].nameid > 0 && sd->inventory_data[i] ) { - if( !itemdb_cansell(&sd->status.inventory[i], pc_get_group_level(sd)) ) + if( !itemdb_cansell(&sd->status.inventory[i], iPc->get_group_level(sd)) ) continue; if( sd->status.inventory[i].expire_time ) @@ -1817,7 +1817,7 @@ void clif_selllist(struct map_session_data *sd) continue; WFIFOW(fd,4+c*10)=i+2; WFIFOL(fd,6+c*10)=val; - WFIFOL(fd,10+c*10)=pc_modifysellvalue(sd,val); + WFIFOL(fd,10+c*10)=iPc->modifysellvalue(sd,val); c++; } } @@ -1952,7 +1952,7 @@ void clif_scriptmenu(struct map_session_data* sd, int npcid, const char* mes) int slen = strlen(mes) + 9; struct block_list *bl = NULL; - if (!sd->state.using_fake_npc && (npcid == fake_nd->bl.id || ((bl = map_id2bl(npcid)) && (bl->m!=sd->bl.m || + if (!sd->state.using_fake_npc && (npcid == fake_nd->bl.id || ((bl = iMap->id2bl(npcid)) && (bl->m!=sd->bl.m || bl->x<sd->bl.x-AREA_SIZE-1 || bl->x>sd->bl.x+AREA_SIZE+1 || bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1)))) clif->sendfakenpc(sd, npcid); @@ -1984,7 +1984,7 @@ void clif_scriptinput(struct map_session_data *sd, int npcid) nullpo_retv(sd); - if (!sd->state.using_fake_npc && (npcid == fake_nd->bl.id || ((bl = map_id2bl(npcid)) && (bl->m!=sd->bl.m || + if (!sd->state.using_fake_npc && (npcid == fake_nd->bl.id || ((bl = iMap->id2bl(npcid)) && (bl->m!=sd->bl.m || bl->x<sd->bl.x-AREA_SIZE-1 || bl->x>sd->bl.x+AREA_SIZE+1 || bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1)))) clif->sendfakenpc(sd, npcid); @@ -2015,7 +2015,7 @@ void clif_scriptinputstr(struct map_session_data *sd, int npcid) nullpo_retv(sd); - if (!sd->state.using_fake_npc && (npcid == fake_nd->bl.id || ((bl = map_id2bl(npcid)) && (bl->m!=sd->bl.m || + if (!sd->state.using_fake_npc && (npcid == fake_nd->bl.id || ((bl = iMap->id2bl(npcid)) && (bl->m!=sd->bl.m || bl->x<sd->bl.x-AREA_SIZE-1 || bl->x>sd->bl.x+AREA_SIZE+1 || bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1)))) clif->sendfakenpc(sd, npcid); @@ -2233,7 +2233,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail) { p.IsDamaged = sd->status.inventory[n].attribute; p.refiningLevel =sd->status.inventory[n].refine; clif->addcards2(&p.slot.card[0], &sd->status.inventory[n]); - p.location = pc_equippoint(sd,n); + p.location = iPc->equippoint(sd,n); p.type = itemtype(sd->inventory_data[n]->type); #if PACKETVER >= 20061218 p.HireExpireDate = sd->status.inventory[n].expire_time; @@ -2353,7 +2353,7 @@ void clif_inventorylist(struct map_session_data *sd) { if( !itemdb_isstackable2(sd->inventory_data[i]) ) { //Non-stackable (Equippable) WBUFW(bufe,ne*se+4)=i+2; - clif->item_sub(bufe, ne*se+6, &sd->status.inventory[i], sd->inventory_data[i], pc_equippoint(sd,i)); + clif->item_sub(bufe, ne*se+6, &sd->status.inventory[i], sd->inventory_data[i], iPc->equippoint(sd,i)); clif->addcards(WBUFP(bufe, ne*se+16), &sd->status.inventory[i]); #if PACKETVER >= 20071002 WBUFL(bufe,ne*se+24)=sd->status.inventory[i].expire_time; @@ -2443,7 +2443,7 @@ void clif_equiplist(struct map_session_data *sd) continue; //Equippable WBUFW(buf,n*cmd+4)=i+2; - clif->item_sub(buf, n*cmd+6, &sd->status.inventory[i], sd->inventory_data[i], pc_equippoint(sd,i)); + clif->item_sub(buf, n*cmd+6, &sd->status.inventory[i], sd->inventory_data[i], iPc->equippoint(sd,i)); clif->addcards(WBUFP(buf, n*cmd+16), &sd->status.inventory[i]); #if PACKETVER >= 20071002 WBUFL(buf,n*cmd+24)=sd->status.inventory[i].expire_time; @@ -2950,7 +2950,7 @@ int clif_hpmeter_sub(struct block_list *bl, va_list ap) { *------------------------------------------*/ int clif_hpmeter(struct map_session_data *sd) { nullpo_ret(sd); - map_foreachinarea(clif->hpmeter_sub, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd); + iMap->foreachinarea(clif->hpmeter_sub, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd); return 0; } @@ -2980,9 +2980,9 @@ void clif_updatestatus(struct map_session_data *sd,int type) switch(type){ // 00b0 case SP_WEIGHT: - pc_updateweightstatus(sd); + iPc->updateweightstatus(sd); WFIFOHEAD(fd,14); - WFIFOW(fd,0)=0xb0; //Need to re-set as pc_updateweightstatus can alter the buffer. [Skotlex] + WFIFOW(fd,0)=0xb0; //Need to re-set as iPc->updateweightstatus can alter the buffer. [Skotlex] WFIFOW(fd,2)=type; WFIFOL(fd,4)=sd->weight; break; @@ -3092,11 +3092,11 @@ void clif_updatestatus(struct map_session_data *sd,int type) break; case SP_NEXTBASEEXP: WFIFOW(fd,0)=0xb1; - WFIFOL(fd,4)=pc_nextbaseexp(sd); + WFIFOL(fd,4)=iPc->nextbaseexp(sd); break; case SP_NEXTJOBEXP: WFIFOW(fd,0)=0xb1; - WFIFOL(fd,4)=pc_nextjobexp(sd); + WFIFOL(fd,4)=iPc->nextjobexp(sd); break; /** @@ -3109,7 +3109,7 @@ void clif_updatestatus(struct map_session_data *sd,int type) case SP_UDEX: case SP_ULUK: WFIFOW(fd,0)=0xbe; - WFIFOB(fd,4)=pc_need_status_point(sd,type-SP_USTR+SP_STR,1); + WFIFOB(fd,4)=iPc->need_status_point(sd,type-SP_USTR+SP_STR,1); len=5; break; @@ -3406,17 +3406,17 @@ void clif_initialstatus(struct map_session_data *sd) { WBUFW(buf,0)=0xbd; WBUFW(buf,2)=min(sd->status.status_point, INT16_MAX); WBUFB(buf,4)=min(sd->status.str, UINT8_MAX); - WBUFB(buf,5)=pc_need_status_point(sd,SP_STR,1); + WBUFB(buf,5)=iPc->need_status_point(sd,SP_STR,1); WBUFB(buf,6)=min(sd->status.agi, UINT8_MAX); - WBUFB(buf,7)=pc_need_status_point(sd,SP_AGI,1); + WBUFB(buf,7)=iPc->need_status_point(sd,SP_AGI,1); WBUFB(buf,8)=min(sd->status.vit, UINT8_MAX); - WBUFB(buf,9)=pc_need_status_point(sd,SP_VIT,1); + WBUFB(buf,9)=iPc->need_status_point(sd,SP_VIT,1); WBUFB(buf,10)=min(sd->status.int_, UINT8_MAX); - WBUFB(buf,11)=pc_need_status_point(sd,SP_INT,1); + WBUFB(buf,11)=iPc->need_status_point(sd,SP_INT,1); WBUFB(buf,12)=min(sd->status.dex, UINT8_MAX); - WBUFB(buf,13)=pc_need_status_point(sd,SP_DEX,1); + WBUFB(buf,13)=iPc->need_status_point(sd,SP_DEX,1); WBUFB(buf,14)=min(sd->status.luk, UINT8_MAX); - WBUFB(buf,15)=pc_need_status_point(sd,SP_LUK,1); + WBUFB(buf,15)=iPc->need_status_point(sd,SP_LUK,1); WBUFW(buf,16) = pc_leftside_atk(sd); WBUFW(buf,18) = pc_rightside_atk(sd); @@ -3508,7 +3508,7 @@ void clif_arrow_create_list(struct map_session_data *sd) for (i = 0, c = 0; i < MAX_SKILL_ARROW_DB; i++) { if (skill_arrow_db[i].nameid > 0 && - (j = pc_search_inventory(sd, skill_arrow_db[i].nameid)) >= 0 && + (j = iPc->search_inventory(sd, skill_arrow_db[i].nameid)) >= 0 && !sd->status.inventory[j].equip && sd->status.inventory[j].identify) { if ((j = itemdb_viewid(skill_arrow_db[i].nameid)) > 0) @@ -3748,7 +3748,7 @@ void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok) } void clif_hercules_chsys_send(struct hChSysCh *channel, struct map_session_data *sd, char *msg) { - if( channel->msg_delay != 0 && DIFF_TICK(sd->hchsysch_tick + ( channel->msg_delay * 1000 ), gettick()) > 0 && !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ) { + if( channel->msg_delay != 0 && DIFF_TICK(sd->hchsysch_tick + ( channel->msg_delay * 1000 ), iTimer->gettick()) > 0 && !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ) { clif->colormes(sd->fd,COLOR_RED,msg_txt(1455)); return; } else { @@ -3758,7 +3758,7 @@ void clif_hercules_chsys_send(struct hChSysCh *channel, struct map_session_data if( channel->type == hChSys_IRC ) ircbot->relay(sd->status.name,msg); if( channel->msg_delay != 0 ) - sd->hchsysch_tick = gettick(); + sd->hchsysch_tick = iTimer->gettick(); } } @@ -4011,7 +4011,7 @@ void clif_traderequest(struct map_session_data* sd, const char* name) safestrncpy((char*)WFIFOP(fd,2), name, NAME_LENGTH); WFIFOSET(fd,packet_len(0xe5)); #else - struct map_session_data* tsd = map_id2sd(sd->trade_partner); + struct map_session_data* tsd = iMap->id2sd(sd->trade_partner); if( !tsd ) return; WFIFOHEAD(fd,packet_len(0x1f4)); @@ -4037,7 +4037,7 @@ void clif_traderequest(struct map_session_data* sd, const char* name) void clif_tradestart(struct map_session_data* sd, uint8 type) { int fd = sd->fd; - struct map_session_data* tsd = map_id2sd(sd->trade_partner); + struct map_session_data* tsd = iMap->id2sd(sd->trade_partner); if( PACKETVER < 6 || !tsd ) { WFIFOHEAD(fd,packet_len(0xe7)); WFIFOW(fd,0) = 0xe7; @@ -4299,7 +4299,7 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds if( dstsd->chatID ) { struct chat_data *cd = NULL; - if( (cd = (struct chat_data*)map_id2bl(dstsd->chatID)) && cd->usersd[0]==dstsd) + if( (cd = (struct chat_data*)iMap->id2bl(dstsd->chatID)) && cd->usersd[0]==dstsd) clif->dispchat(cd,sd->fd); } else if( dstsd->state.vending ) clif->showvendingboard(&dstsd->bl,dstsd->message,sd->fd); @@ -4328,7 +4328,7 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds ARR_FIND( 0, 5, i, dstsd->devotion[i] > 0 ); if( i < 5 ) clif->devotion(&dstsd->bl, sd); // display link (dstsd - crusader) to sd - if( dstsd->sc.data[SC_DEVOTION] && (d_bl = map_id2bl(dstsd->sc.data[SC_DEVOTION]->val1)) != NULL ) + if( dstsd->sc.data[SC_DEVOTION] && (d_bl = iMap->id2bl(dstsd->sc.data[SC_DEVOTION]->val1)) != NULL ) clif->devotion(d_bl, sd); } @@ -4376,7 +4376,7 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) { { TBL_NPC* nd = (TBL_NPC*)bl; if( nd->chat_id ) - clif->dispchat((struct chat_data*)map_id2bl(nd->chat_id),sd->fd); + clif->dispchat((struct chat_data*)iMap->id2bl(nd->chat_id),sd->fd); if( nd->size == SZ_BIG ) clif->specialeffect_single(bl,423,sd->fd); else if( nd->size == SZ_MEDIUM ) @@ -4779,7 +4779,7 @@ int clif_outsight(struct block_list *bl,va_list ap) clif->clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd); if(sd->chatID){ struct chat_data *cd; - cd=(struct chat_data*)map_id2bl(sd->chatID); + cd=(struct chat_data*)iMap->id2bl(sd->chatID); if(cd->usersd[0]==sd) clif->dispchat(cd,tsd->fd); } @@ -5932,7 +5932,7 @@ void clif_wis_message(int fd, const char* nick, const char* mes, int mes_len) WFIFOW(fd,2) = mes_len + NAME_LENGTH + 8; safestrncpy((char*)WFIFOP(fd,4), nick, NAME_LENGTH); WFIFOL(fd,28) = 0; // isAdmin; if nonzero, also displays text above char - // TODO: WFIFOL(fd,28) = pc_get_group_level(ssd); + // TODO: WFIFOL(fd,28) = iPc->get_group_level(ssd); safestrncpy((char*)WFIFOP(fd,32), mes, mes_len); WFIFOSET(fd,WFIFOW(fd,2)); #endif @@ -6167,14 +6167,14 @@ void clif_item_refine_list(struct map_session_data *sd) nullpo_retv(sd); - skill_lv = pc_checkskill(sd,WS_WEAPONREFINE); + skill_lv = iPc->checkskill(sd,WS_WEAPONREFINE); fd=sd->fd; refine_item[0] = -1; - refine_item[1] = pc_search_inventory(sd,1010); - refine_item[2] = pc_search_inventory(sd,1011); - refine_item[3] = refine_item[4] = pc_search_inventory(sd,984); + refine_item[1] = iPc->search_inventory(sd,1010); + refine_item[2] = iPc->search_inventory(sd,1011); + refine_item[3] = refine_item[4] = iPc->search_inventory(sd,984); WFIFOHEAD(fd, MAX_INVENTORY * 13 + 4); WFIFOW(fd,0)=0x221; @@ -6366,7 +6366,7 @@ void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_ven nullpo_retv(sd); nullpo_retv(vending); - nullpo_retv(vsd=map_id2sd(id)); + nullpo_retv(vsd=iMap->id2sd(id)); fd = sd->fd; count = vsd->vend_num; @@ -6610,7 +6610,7 @@ void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd) fd=tsd->fd; - if( (p=party_search(sd->status.party_id))==NULL ) + if( (p=iParty->search(sd->status.party_id))==NULL ) return; WFIFOHEAD(fd,packet_len(cmd)); @@ -7086,31 +7086,31 @@ void clif_autospell(struct map_session_data *sd,uint16 skill_lv) WFIFOHEAD(fd,packet_len(0x1cd)); WFIFOW(fd, 0)=0x1cd; - if(skill_lv>0 && pc_checkskill(sd,MG_NAPALMBEAT)>0) + if(skill_lv>0 && iPc->checkskill(sd,MG_NAPALMBEAT)>0) WFIFOL(fd,2)= MG_NAPALMBEAT; else WFIFOL(fd,2)= 0x00000000; - if(skill_lv>1 && pc_checkskill(sd,MG_COLDBOLT)>0) + if(skill_lv>1 && iPc->checkskill(sd,MG_COLDBOLT)>0) WFIFOL(fd,6)= MG_COLDBOLT; else WFIFOL(fd,6)= 0x00000000; - if(skill_lv>1 && pc_checkskill(sd,MG_FIREBOLT)>0) + if(skill_lv>1 && iPc->checkskill(sd,MG_FIREBOLT)>0) WFIFOL(fd,10)= MG_FIREBOLT; else WFIFOL(fd,10)= 0x00000000; - if(skill_lv>1 && pc_checkskill(sd,MG_LIGHTNINGBOLT)>0) + if(skill_lv>1 && iPc->checkskill(sd,MG_LIGHTNINGBOLT)>0) WFIFOL(fd,14)= MG_LIGHTNINGBOLT; else WFIFOL(fd,14)= 0x00000000; - if(skill_lv>4 && pc_checkskill(sd,MG_SOULSTRIKE)>0) + if(skill_lv>4 && iPc->checkskill(sd,MG_SOULSTRIKE)>0) WFIFOL(fd,18)= MG_SOULSTRIKE; else WFIFOL(fd,18)= 0x00000000; - if(skill_lv>7 && pc_checkskill(sd,MG_FIREBALL)>0) + if(skill_lv>7 && iPc->checkskill(sd,MG_FIREBALL)>0) WFIFOL(fd,22)= MG_FIREBALL; else WFIFOL(fd,22)= 0x00000000; - if(skill_lv>9 && pc_checkskill(sd,MG_FROSTDIVER)>0) + if(skill_lv>9 && iPc->checkskill(sd,MG_FROSTDIVER)>0) WFIFOL(fd,26)= MG_FROSTDIVER; else WFIFOL(fd,26)= 0x00000000; @@ -7149,7 +7149,7 @@ void clif_devotion(struct block_list *src, struct map_session_data *tsd) for( i = 0; i < 5; i++ ) WBUFL(buf,6+4*i) = sd->devotion[i]; - WBUFW(buf,26) = skill->get_range2(src, CR_DEVOTION, pc_checkskill(sd, CR_DEVOTION)); + WBUFW(buf,26) = skill->get_range2(src, CR_DEVOTION, iPc->checkskill(sd, CR_DEVOTION)); } if( tsd ) @@ -8083,7 +8083,7 @@ void clif_callpartner(struct map_session_data *sd) if( sd->status.partner_id ) { const char *p; - if( ( p = map_charid2nick(sd->status.partner_id) ) != NULL ) + if( ( p = iMap->charid2nick(sd->status.partner_id) ) != NULL ) { memcpy(WBUFP(buf,2), p, NAME_LENGTH); } @@ -8206,7 +8206,7 @@ void clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd) if( fd > 0 ) clif->authfail_fd(fd, 15); else - map_quit(tsd); + iMap->quit(tsd); if( sd ) clif->GM_kickack(sd,tsd->status.account_id); @@ -8511,7 +8511,7 @@ void clif_refresh(struct map_session_data *sd) } if( sd->ed ) clif->elemental_info(sd); - map_foreachinrange(clif->getareachar,&sd->bl,AREA_SIZE,BL_ALL,sd); + iMap->foreachinrange(clif->getareachar,&sd->bl,AREA_SIZE,BL_ALL,sd); clif->weather_check(sd); if( sd->chatID ) chat_leavechat(sd,0); @@ -8531,8 +8531,8 @@ void clif_refresh(struct map_session_data *sd) if( disguised(&sd->bl) ) {/* refresh-da */ short disguise = sd->disguise; - pc_disguise(sd, -1); - pc_disguise(sd, disguise); + iPc->disguise(sd, -1); + iPc->disguise(sd, disguise); } } @@ -8571,7 +8571,7 @@ void clif_charnameack (int fd, struct block_list *bl) memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH); if( ssd->status.party_id ) { - p = party_search(ssd->status.party_id); + p = iParty->search(ssd->status.party_id); } if( ssd->status.guild_id ) { if( ( g = ssd->guild ) != NULL ) { @@ -8695,10 +8695,10 @@ void clif_charnameupdate (struct map_session_data *ssd) if (!battle_config.display_party_name) { if (ssd->status.party_id > 0 && ssd->status.guild_id > 0 && (g = ssd->guild) != NULL) - p = party_search(ssd->status.party_id); + p = iParty->search(ssd->status.party_id); }else{ if (ssd->status.party_id > 0) - p = party_search(ssd->status.party_id); + p = iParty->search(ssd->status.party_id); } if( ssd->status.guild_id > 0 && (g = ssd->guild) != NULL ) @@ -8884,7 +8884,7 @@ void clif_feel_info(struct map_session_data* sd, unsigned char feel_level, unsig void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int class_, unsigned char type) { if( pcdb_checkid(class_) ) { - clif->starskill(sd, job_name(class_), class_, hate_level, type ? 10 : 11); + clif->starskill(sd, iPc->job_name(class_), class_, hate_level, type ? 10 : 11); } else if( mobdb_checkid(class_) ) { clif->starskill(sd, mob_db(class_)->jname, class_, hate_level, type ? 10 : 11); } else { @@ -8999,7 +8999,7 @@ void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* ts // Inventory position WBUFW(buf, n*s+43) = i + 2; // Add refine, identify flag, element, etc. - clif->item_sub(WBUFP(buf,0), n*s+45, &tsd->status.inventory[i], tsd->inventory_data[i], pc_equippoint(tsd, i)); + clif->item_sub(WBUFP(buf,0), n*s+45, &tsd->status.inventory[i], tsd->inventory_data[i], iPc->equippoint(tsd, i)); // Add cards clif->addcards(WBUFP(buf, n*s+55), &tsd->status.inventory[i]); // Expiration date stuff, if all of those are set to 0 then the client doesn't show anything related (6 bytes) @@ -9248,7 +9248,7 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd) { } //Check for double login. - bl = map_id2bl(account_id); + bl = iMap->id2bl(account_id); if(bl && bl->type != BL_PC) { ShowError("clif_parse_WantToConnection: a non-player object already has id %d, please increase the starting account number\n", account_id); WFIFOHEAD(fd,packet_len(0x6a)); @@ -9271,7 +9271,7 @@ void clif_parse_WantToConnection(int fd, struct map_session_data* sd) { sd->fd = fd; session[fd]->session_data = sd; - pc_setnewpc(sd, account_id, char_id, login_id1, client_tick, sex, fd); + iPc->setnewpc(sd, account_id, char_id, login_id1, client_tick, sex, fd); #if PACKETVER < 20070521 WFIFOHEAD(fd,4); @@ -9317,7 +9317,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) return; if (!sd->state.active) { //Character loading is not complete yet! - //Let pc_reg_received reinvoke this when ready. + //Let iPc->reg_received reinvoke this when ready. sd->state.connect_new = 0; return; } @@ -9342,8 +9342,8 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if(sd->vd.cloth_color) clif->refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF); // item - clif->inventorylist(sd); // inventory list first, otherwise deleted items in pc_checkitem show up as 'unknown item' - pc_checkitem(sd); + clif->inventorylist(sd); // inventory list first, otherwise deleted items in iPc->checkitem show up as 'unknown item' + iPc->checkitem(sd); // cart if(pc_iscarton(sd)) { @@ -9361,11 +9361,11 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) guild->send_memberinfoshort(sd,1); if(battle_config.pc_invincible_time > 0) { - pc_setinvincibletimer(sd,battle_config.pc_invincible_time); + iPc->setinvincibletimer(sd,battle_config.pc_invincible_time); } if( map[sd->bl.m].users++ == 0 && battle_config.dynamic_mobs ) - map_spawnmobs(sd->bl.m); + iMap->spawnmobs(sd->bl.m); if( !(sd->sc.option&OPTION_INVISIBLE) ) { // increment the number of pvp players on the map map[sd->bl.m].users_pvp++; } @@ -9378,13 +9378,13 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) // reset the callshop flag if the player changes map sd->state.callshop = 0; - map_addblock(&sd->bl); + iMap->addblock(&sd->bl); clif->spawn(&sd->bl); // Party // (needs to go after clif_spawn() to show hp bars correctly) if(sd->status.party_id) { - party_send_movemap(sd); + iParty->send_movemap(sd); clif->party_hp(sd); // Show hp after displacement [LuzZza] } @@ -9393,7 +9393,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if(map[sd->bl.m].flag.pvp && !(sd->sc.option&OPTION_INVISIBLE)) { if(!battle_config.pk_mode) { // remove pvp stuff for pk_mode [Valaris] if (!map[sd->bl.m].flag.pvp_nocalcrank) - sd->pvp_timer = add_timer(gettick()+200, pc_calc_pvprank_timer, sd->bl.id, 0); + sd->pvp_timer = iTimer->add_timer(iTimer->gettick()+200, iPc->calc_pvprank_timer, sd->bl.id, 0); sd->pvp_rank = 0; sd->pvp_lastusers = 0; sd->pvp_point = 5; @@ -9413,7 +9413,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) clif->map_property(sd, MAPPROPERTY_AGITZONE); // info about nearby objects // must use foreachinarea (CIRCULAR_AREA interferes with foreachinrange) - map_foreachinarea(clif->getareachar, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_ALL, sd); + iMap->foreachinarea(clif->getareachar, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_ALL, sd); // pet if( sd->pd ) { @@ -9421,7 +9421,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) clif->message(sd->fd, msg_txt(666)); pet_menu(sd, 3); //Option 3 is return to egg. } else { - map_addblock(&sd->pd->bl); + iMap->addblock(&sd->pd->bl); clif->spawn(&sd->pd->bl); clif->send_petdata(sd,sd->pd,0,0); clif->send_petstatus(sd); @@ -9431,7 +9431,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) //homunculus [blackhole89] if( homun_alive(sd->hd) ) { - map_addblock(&sd->hd->bl); + iMap->addblock(&sd->hd->bl); clif->spawn(&sd->hd->bl); clif->send_homdata(sd,SP_ACK,0); clif->hominfo(sd,sd->hd,1); @@ -9440,11 +9440,11 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if( battle_config.hom_setting&0x8 ) status_calc_bl(&sd->hd->bl, SCB_SPEED); //Homunc mimic their master's speed on each map change if( !(battle_config.hom_setting&0x2) ) - skill->unit_move(&sd->hd->bl,gettick(),1); // apply land skills immediately + skill->unit_move(&sd->hd->bl,iTimer->gettick(),1); // apply land skills immediately } if( sd->md ) { - map_addblock(&sd->md->bl); + iMap->addblock(&sd->md->bl); clif->spawn(&sd->md->bl); clif->mercenary_info(sd); clif->mercenary_skillblock(sd); @@ -9452,7 +9452,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) } if( sd->ed ) { - map_addblock(&sd->ed->bl); + iMap->addblock(&sd->ed->bl); clif->spawn(&sd->ed->bl); clif->elemental_info(sd); clif->elemental_updatestatus(sd,SP_HP); @@ -9484,7 +9484,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) sc_start(&sd->bl,SC_NOCHAT,100,0,0); //Auron reported that This skill only triggers when you logon on the map o.O [Skotlex] - if ((lv = pc_checkskill(sd,SG_KNOWLEDGE)) > 0) { + if ((lv = iPc->checkskill(sd,SG_KNOWLEDGE)) > 0) { if(sd->bl.m == sd->feel_map[0].m || sd->bl.m == sd->feel_map[1].m || sd->bl.m == sd->feel_map[2].m) @@ -9497,13 +9497,13 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if(homun_alive(sd->hd)) homun->init_timers(sd->hd); - if (night_flag && map[sd->bl.m].flag.nightenabled) { + if (iMap->night_flag && map[sd->bl.m].flag.nightenabled) { sd->state.night = 1; clif->status_change(&sd->bl, SI_NIGHT, 1, 0, 0, 0, 0); } // Notify everyone that this char logged in [Skotlex]. - map_foreachpc(clif->friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 1); + iMap->map_foreachpc(clif->friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 1); //Login Event npc_script_event(sd, NPCE_LOGIN); @@ -9534,7 +9534,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) (map_flag_gvg(sd->state.pmap) || map_flag_gvg(sd->bl.m) || map[sd->state.pmap].flag.battleground || map[sd->bl.m].flag.battleground) ) status_calc_bl(&sd->bl, SCB_FLEE); //Refresh flee penalty - if( night_flag && map[sd->bl.m].flag.nightenabled ) { //Display night. + if( iMap->night_flag && map[sd->bl.m].flag.nightenabled ) { //Display night. if( !sd->state.night ) { sd->state.night = 1; clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_NIGHT); @@ -9556,7 +9556,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) clif->broadcast(&sd->bl, output, strlen(output) + 1, 0x10, SELF); } - map_iwall_get(sd); // Updates Walls Info on this Map to Client + iMap->iwall_get(sd); // Updates Walls Info on this Map to Client status_calc_pc(sd, false);/* some conditions are map-dependent so we must recalculate */ sd->state.changemap = false; @@ -9585,7 +9585,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if(map[sd->bl.m].flag.loadevent) // Lance npc_script_event(sd, NPCE_LOADMAP); - if (pc_checkskill(sd, SG_DEVIL) && !pc_nextjobexp(sd)) //blindness [Komurka] + if (iPc->checkskill(sd, SG_DEVIL) && !iPc->nextjobexp(sd)) //blindness [Komurka] clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_DEVIL); if (sd->sc.opt2) //Client loses these on warp. @@ -9594,7 +9594,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) clif->weather_check(sd); // For automatic triggering of NPCs after map loading (so you don't need to walk 1 step first) - if (map_getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNPC)) + if (iMap->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNPC)) npc_touch_areanpc(sd,sd->bl.m,sd->bl.x,sd->bl.y); else sd->areanpc_id = 0; @@ -9613,7 +9613,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) // Trigger skill effects if you appear standing on them if(!battle_config.pc_invincible_time) - skill->unit_move(&sd->bl,gettick(),1); + skill->unit_move(&sd->bl,iTimer->gettick(),1); } @@ -9637,7 +9637,7 @@ void clif_parse_TickSend(int fd, struct map_session_data *sd) { sd->client_tick = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); - clif->notify_time(sd, gettick()); + clif->notify_time(sd, iTimer->gettick()); } @@ -9717,7 +9717,7 @@ void clif_parse_progressbar(int fd, struct map_session_data * sd) { int npc_id = sd->progressbar.npc_id; - if( gettick() < sd->progressbar.timeout && sd->st ) + if( iTimer->gettick() < sd->progressbar.timeout && sd->st ) sd->st->state = END; sd->progressbar.npc_id = sd->progressbar.timeout = 0; @@ -9748,7 +9748,7 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd) if(sd->sc.data[SC_RUN] || sd->sc.data[SC_WUGDASH]) return; - pc_delinvincibletimer(sd); + iPc->delinvincibletimer(sd); RFIFOPOS(fd, packet_db[RFIFOW(fd,0)].pos[0], &x, &y, NULL); @@ -9784,7 +9784,7 @@ void clif_parse_QuitGame(int fd, struct map_session_data *sd) { /* Rovert's prevent logout option fixed [Valaris] */ if( !sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] && - (!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) ) + (!battle_config.prevent_logout || DIFF_TICK(iTimer->gettick(), sd->canlog_tick) > battle_config.prevent_logout) ) { set_eof(fd); clif->disconnect_ack(sd, 0); @@ -9807,7 +9807,7 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) if( id < 0 && -id == sd->bl.id ) // for disguises [Valaris] id = sd->bl.id; - bl = map_id2bl(id); + bl = iMap->id2bl(id); if( bl == NULL ) return; // Lagged clients could request names of already gone mobs/players. [Skotlex] @@ -9819,13 +9819,13 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) sc = status_get_sc(bl); if (sc && sc->option&OPTION_INVISIBLE && !disguised(bl) && bl->type != BL_NPC && //Skip hidden NPCs which can be seen using Maya Purple - pc_get_group_level(sd) < battle_config.hack_info_GM_level + iPc->get_group_level(sd) < battle_config.hack_info_GM_level ) { char gm_msg[256]; sprintf(gm_msg, "Hack on NameRequest: character '%s' (account: %d) requested the name of an invisible target (id: %d).\n", sd->status.name, sd->status.account_id, id); ShowWarning(gm_msg); // information is sent to all online GMs - intif_wis_message_to_gm(wisp_server_name, battle_config.hack_info_GM_level, gm_msg); + intif_wis_message_to_gm(iMap->wisp_server_name, battle_config.hack_info_GM_level, gm_msg); return; } */ @@ -9834,10 +9834,10 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd) } int clif_undisguise_timer(int tid, unsigned int tick, int id, intptr_t data) { struct map_session_data * sd; - if( (sd = map_id2sd(id)) ) { + if( (sd = iMap->id2sd(id)) ) { sd->fontcolor_tid = INVALID_TIMER; if( sd->fontcolor && sd->disguise == sd->status.class_ ) - pc_disguise(sd,-1); + iPc->disguise(sd,-1); } return 0; } @@ -9866,9 +9866,9 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data* sd) return; if( battle_config.min_chat_delay ) { //[Skotlex] - if (DIFF_TICK(sd->cantalk_tick, gettick()) > 0) + if (DIFF_TICK(sd->cantalk_tick, iTimer->gettick()) > 0) return; - sd->cantalk_tick = gettick() + battle_config.min_chat_delay; + sd->cantalk_tick = iTimer->gettick() + battle_config.min_chat_delay; } if( sd->gcbind ) { @@ -9879,16 +9879,16 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data* sd) unsigned char mylen = 1; if( sd->disguise == -1 ) { - sd->fontcolor_tid = add_timer(gettick()+5000, clif->undisguise_timer, sd->bl.id, 0); - pc_disguise(sd,sd->status.class_); + sd->fontcolor_tid = iTimer->add_timer(iTimer->gettick()+5000, clif->undisguise_timer, sd->bl.id, 0); + iPc->disguise(sd,sd->status.class_); if( pc_isdead(sd) ) clif_clearunit_single(-sd->bl.id, CLR_DEAD, sd->fd); if( unit_is_walking(&sd->bl) ) clif->move(&sd->ud); } else if ( sd->disguise == sd->status.class_ && sd->fontcolor_tid != INVALID_TIMER ) { const struct TimerData *timer; - if( (timer = get_timer(sd->fontcolor_tid)) ) { - settick_timer(sd->fontcolor_tid, timer->tick+5000); + if( (timer = iTimer->get_timer(sd->fontcolor_tid)) ) { + iTimer->settick_timer(sd->fontcolor_tid, timer->tick+5000); } } @@ -9938,7 +9938,7 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data* sd) WFIFOSET(fd, WFIFOW(fd,2)); #ifdef PCRE_SUPPORT // trigger listening npcs - map_foreachinrange(npc_chat_sub, &sd->bl, AREA_SIZE, BL_NPC, text, textlen, &sd->bl); + iMap->foreachinrange(npc_chat_sub, &sd->bl, AREA_SIZE, BL_NPC, text, textlen, &sd->bl); #endif // Chat logging type 'O' / Global Chat @@ -10019,7 +10019,7 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd) { int emoticon = RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[0]); - if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2) { + if (battle_config.basic_skill_check == 0 || iPc->checkskill(sd, NV_BASIC) >= 2) { if (emoticon == E_MUTE) {// prevent use of the mute emote [Valaris] clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1); return; @@ -10059,7 +10059,7 @@ void clif_user_count(struct map_session_data* sd, int count) { /// 00c1 void clif_parse_HowManyConnections(int fd, struct map_session_data *sd) { - clif->user_count(sd, map_getusers()); + clif->user_count(sd, iMap->getusers()); } @@ -10098,19 +10098,19 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, if( sd->sc.data[SC_BASILICA] || sd->sc.data[SC__SHADOWFORM] ) return; - if (!battle_config.sdelay_attack_enable && pc_checkskill(sd, SA_FREECAST) <= 0) { + if (!battle_config.sdelay_attack_enable && iPc->checkskill(sd, SA_FREECAST) <= 0) { if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) { clif->skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0); return; } } - pc_delinvincibletimer(sd); + iPc->delinvincibletimer(sd); sd->idletime = last_tick; unit_attack(&sd->bl, target_id, action_type != 0); break; case 0x02: // sitdown - if (battle_config.basic_skill_check && pc_checkskill(sd, NV_BASIC) < 3) { + if (battle_config.basic_skill_check && iPc->checkskill(sd, NV_BASIC) < 3) { clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2); break; } @@ -10140,7 +10140,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, clif->standing(&sd->bl); return; } - pc_setstand(sd); + iPc->setstand(sd); skill->sit(sd,0); clif->standing(&sd->bl); break; @@ -10275,7 +10275,7 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd) clif->pActionRequest_sub(sd, RFIFOB(fd,packet_db[RFIFOW(fd,0)].pos[1]), RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]), - gettick() + iTimer->gettick() ); } @@ -10288,12 +10288,12 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd) void clif_parse_Restart(int fd, struct map_session_data *sd) { switch(RFIFOB(fd,2)) { case 0x00: - pc_respawn(sd,CLR_RESPAWN); + iPc->respawn(sd,CLR_RESPAWN); break; case 0x01: /* Rovert's Prevent logout option - Fixed [Valaris] */ if( !sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] && - (!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) ) + (!battle_config.prevent_logout || DIFF_TICK(iTimer->gettick(), sd->canlog_tick) > battle_config.prevent_logout) ) { //Send to char-server for character selection. chrif_charselectreq(sd, session[fd]->client_addr); } else { @@ -10325,10 +10325,10 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd) return; if (battle_config.min_chat_delay) { //[Skotlex] - if (DIFF_TICK(sd->cantalk_tick, gettick()) > 0) { + if (DIFF_TICK(sd->cantalk_tick, iTimer->gettick()) > 0) { return; } - sd->cantalk_tick = gettick() + battle_config.min_chat_delay; + sd->cantalk_tick = iTimer->gettick() + battle_config.min_chat_delay; } // Chat logging type 'W' / Whisper @@ -10417,7 +10417,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd) } // searching destination character - dstsd = map_nick2sd(target); + dstsd = iMap->nick2sd(target); if (dstsd == NULL || strcmp(dstsd->status.name, target) != 0) { // player is not on this map-server @@ -10431,7 +10431,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd) // if player ignores everyone if (dstsd->state.ignoreAll) { - if (dstsd->sc.option & OPTION_INVISIBLE && pc_get_group_level(sd) < pc_get_group_level(dstsd)) + if (dstsd->sc.option & OPTION_INVISIBLE && iPc->get_group_level(sd) < iPc->get_group_level(dstsd)) clif->wis_end(fd, 1); // 1: target character is not loged in else clif->wis_end(fd, 3); // 3: everyone ignored by target @@ -10442,7 +10442,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd) if( dstsd->state.autotrade == 1 ) { char output[256]; sprintf(output, "%s is in autotrade mode and cannot receive whispered messages.", dstsd->status.name); - clif->wis_message(fd, wisp_server_name, output, strlen(output) + 1); + clif->wis_message(fd, iMap->wisp_server_name, output, strlen(output) + 1); return; } @@ -10488,7 +10488,7 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd) map_object_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); - fitem = (struct flooritem_data*)map_id2bl(map_object_id); + fitem = (struct flooritem_data*)iMap->id2bl(map_object_id); do { if (pc_isdead(sd)) { @@ -10512,7 +10512,7 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd) if (pc_cant_act(sd)) break; - if (!pc_takeitem(sd, fitem)) + if (!iPc->takeitem(sd, fitem)) break; return; @@ -10545,7 +10545,7 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd) )) break; - if (!pc_dropitem(sd, item_index, item_amount)) + if (!iPc->dropitem(sd, item_index, item_amount)) break; return; @@ -10578,7 +10578,7 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd) if(n <0 || n >= MAX_INVENTORY) return; - if (!pc_useitem(sd,n)) + if (!iPc->useitem(sd,n)) clif->useitemack(sd,n,0,false); //Send an empty ack packet or the client gets stuck. } @@ -10620,9 +10620,9 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd) //Client doesn't send the position for ammo. if(sd->inventory_data[index]->type == IT_AMMO) - pc_equipitem(sd,index,EQP_AMMO); + iPc->equipitem(sd,index,EQP_AMMO); else - pc_equipitem(sd,index,RFIFOW(fd,4)); + iPc->equipitem(sd,index,RFIFOW(fd,4)); } void clif_hercules_chsys_delete(struct hChSysCh *channel) { @@ -10735,7 +10735,7 @@ void clif_parse_UnequipItem(int fd,struct map_session_data *sd) index = RFIFOW(fd,2)-2; - pc_unequipitem(sd,index,1); + iPc->unequipitem(sd,index,1); } @@ -10755,12 +10755,12 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd) if ( pc_cant_act2(sd) ) return; - bl = map_id2bl(RFIFOL(fd,2)); + bl = iMap->id2bl(RFIFOL(fd,2)); if (!bl) return; switch (bl->type) { case BL_MOB: case BL_PC: - clif->pActionRequest_sub(sd, 0x07, bl->id, gettick()); + clif->pActionRequest_sub(sd, 0x07, bl->id, iTimer->gettick()); break; case BL_NPC: if( bl->m != -1 )// the user can't click floating npcs directly (hack attempt) @@ -10872,7 +10872,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd) if (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM) return; - if(battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 4) { + if(battle_config.basic_skill_check && iPc->checkskill(sd,NV_BASIC) < 4) { clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,3); return; } @@ -10979,7 +10979,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) { struct map_session_data *t_sd; - t_sd = map_id2sd(RFIFOL(fd,2)); + t_sd = iMap->id2sd(RFIFOL(fd,2)); if(!sd->chatID && pc_cant_act(sd)) return; //You can trade while in a chatroom. @@ -10990,7 +10990,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) return; } - if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 1) { + if( battle_config.basic_skill_check && iPc->checkskill(sd,NV_BASIC) < 1) { clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,0); return; } @@ -11064,7 +11064,7 @@ void clif_parse_PutItemToCart(int fd,struct map_session_data *sd) return; if (!pc_iscarton(sd)) return; - pc_putitemtocart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4)); + iPc->putitemtocart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4)); } @@ -11074,7 +11074,7 @@ void clif_parse_GetItemFromCart(int fd,struct map_session_data *sd) { if (!pc_iscarton(sd)) return; - pc_getitemfromcart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4)); + iPc->getitemfromcart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4)); } @@ -11086,11 +11086,11 @@ void clif_parse_RemoveOption(int fd,struct map_session_data *sd) * Attempts to remove these options when this function is called (will remove all available) **/ #ifdef NEW_CARTS - pc_setoption(sd,sd->sc.option&~(OPTION_RIDING|OPTION_FALCON|OPTION_DRAGON|OPTION_MADOGEAR)); + iPc->setoption(sd,sd->sc.option&~(OPTION_RIDING|OPTION_FALCON|OPTION_DRAGON|OPTION_MADOGEAR)); if( sd->sc.data[SC_PUSH_CART] ) - pc_setcart(sd,0); + iPc->setcart(sd,0); #else - pc_setoption(sd,sd->sc.option&~(OPTION_CART|OPTION_RIDING|OPTION_FALCON|OPTION_DRAGON|OPTION_MADOGEAR)); + iPc->setoption(sd,sd->sc.option&~(OPTION_CART|OPTION_RIDING|OPTION_FALCON|OPTION_DRAGON|OPTION_MADOGEAR)); #endif } @@ -11101,7 +11101,7 @@ void clif_parse_ChangeCart(int fd,struct map_session_data *sd) {// TODO: State tracking? int type; - if( sd && pc_checkskill(sd, MC_CHANGECART) < 1 ) + if( sd && iPc->checkskill(sd, MC_CHANGECART) < 1 ) return; type = (int)RFIFOW(fd,2); @@ -11122,7 +11122,7 @@ void clif_parse_ChangeCart(int fd,struct map_session_data *sd) (type == 2 && sd->status.base_level > 40) || (type == 1)) #endif - pc_setcart(sd,type); + iPc->setcart(sd,type); } @@ -11135,7 +11135,7 @@ void clif_parse_ChangeCart(int fd,struct map_session_data *sd) /// the like void clif_parse_StatusUp(int fd,struct map_session_data *sd) { - pc_statusup(sd,RFIFOW(fd,2)); + iPc->statusup(sd,RFIFOW(fd,2)); } @@ -11143,7 +11143,7 @@ void clif_parse_StatusUp(int fd,struct map_session_data *sd) /// 0112 <skill id>.W void clif_parse_SkillUp(int fd,struct map_session_data *sd) { - pc_skillup(sd,RFIFOW(fd,2)); + iPc->skillup(sd,RFIFOW(fd,2)); } void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, int target_id) @@ -11243,7 +11243,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) { uint16 skill_id, skill_lv; int tmp, target_id; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); skill_lv = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]); skill_id = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[1]); @@ -11314,7 +11314,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) if( skill_lv != sd->skillitemlv ) skill_lv = sd->skillitemlv; if( !(tmp&INF_SELF_SKILL) ) - pc_delinvincibletimer(sd); // Target skills thru items cancel invincibility. [Inkfish] + iPc->delinvincibletimer(sd); // Target skills thru items cancel invincibility. [Inkfish] unit_skilluse_id(&sd->bl, target_id, skill_id, skill_lv); return; } @@ -11327,12 +11327,12 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) else skill_lv = 0; } else { - tmp = pc_checkskill(sd, skill_id); + tmp = iPc->checkskill(sd, skill_id); if( skill_lv > tmp ) skill_lv = tmp; } - pc_delinvincibletimer(sd); + iPc->delinvincibletimer(sd); if( skill_lv ) unit_skilluse_id(&sd->bl, target_id, skill_id, skill_lv); @@ -11343,7 +11343,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) *------------------------------------------*/ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo) { - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); if( !(skill->get_inf(skill_id)&INF_GROUND_SKILL) ) return; //Using a target skill on the ground? WRONG. @@ -11395,7 +11395,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski return; //Can't use skills while a menu is open. } - pc_delinvincibletimer(sd); + iPc->delinvincibletimer(sd); if( sd->skillitem == skill_id ) { if( skill_lv != sd->skillitemlv ) @@ -11404,7 +11404,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 ski } else { int lv; sd->skillitem = sd->skillitemlv = 0; - if( (lv = pc_checkskill(sd, skill_id)) > 0 ) { + if( (lv = iPc->checkskill(sd, skill_id)) > 0 ) { if( skill_lv > lv ) skill_lv = lv; unit_skilluse_pos(&sd->bl, x, y, skill_id,skill_lv); @@ -11471,7 +11471,7 @@ void clif_parse_UseSkillMap(int fd, struct map_session_data* sd) return; } - pc_delinvincibletimer(sd); + iPc->delinvincibletimer(sd); skill->castend_map(sd,skill_id,map_name); } @@ -11481,7 +11481,7 @@ void clif_parse_UseSkillMap(int fd, struct map_session_data* sd) void clif_parse_RequestMemo(int fd,struct map_session_data *sd) { if (!pc_isdead(sd)) - pc_memo(sd,-1); + iPc->memo(sd,-1); } @@ -11591,7 +11591,7 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd) #ifdef SECURE_NPCTIMEOUT if( sd->npc_idle_timer != INVALID_TIMER ) { #endif - TBL_NPC* nd = map_id2nd(npc_id); + TBL_NPC* nd = iMap->id2nd(npc_id); ShowWarning("Invalid menu selection on npc %d:'%s' - got %d, valid range is [%d..%d] (player AID:%d, CID:%d, name:'%s')!\n", npc_id, (nd)?nd->name:"invalid npc id", select, 1, sd->npc_menu, sd->bl.id, sd->status.char_id, sd->status.name); clif->GM_kick(NULL,sd); #ifdef SECURE_NPCTIMEOUT @@ -11729,7 +11729,7 @@ void clif_parse_InsertCard(int fd,struct map_session_data *sd) { if (sd->state.trading != 0) return; - pc_insert_card(sd,RFIFOW(fd,2)-2,RFIFOW(fd,4)-2); + iPc->insert_card(sd,RFIFOW(fd,2)-2,RFIFOW(fd,4)-2); } @@ -11742,7 +11742,7 @@ void clif_parse_SolveCharName(int fd, struct map_session_data *sd) int charid; charid = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); - map_reqnickdb(sd, charid); + iMap->reqnickdb(sd, charid); } @@ -11933,12 +11933,12 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd) clif->message(fd, msg_txt(227)); return; } - if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 ) { + if( battle_config.basic_skill_check && iPc->checkskill(sd,NV_BASIC) < 7 ) { clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4); return; } - party_create(sd,name,0,0); + iParty->create(sd,name,0,0); } void clif_parse_CreateParty2(int fd, struct map_session_data *sd) @@ -11952,12 +11952,12 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd) clif->message(fd, msg_txt(227)); return; } - if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 ) { + if( battle_config.basic_skill_check && iPc->checkskill(sd,NV_BASIC) < 7 ) { clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4); return; } - party_create(sd,name,item1,item2); + iParty->create(sd,name,item1,item2); } @@ -11973,14 +11973,14 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) return; } - t_sd = map_id2sd(RFIFOL(fd,2)); + t_sd = iMap->id2sd(RFIFOL(fd,2)); if(t_sd && t_sd->state.noask) {// @noask [LuzZza] clif->noask_sub(sd, t_sd, 1); return; } - party_invite(sd, t_sd); + iParty->invite(sd, t_sd); } void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) @@ -11994,14 +11994,14 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) return; } - t_sd = map_nick2sd(name); + t_sd = iMap->nick2sd(name); if(t_sd && t_sd->state.noask) { // @noask [LuzZza] clif->noask_sub(sd, t_sd, 1); return; } - party_invite(sd, t_sd); + iParty->invite(sd, t_sd); } @@ -12013,12 +12013,12 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) /// 1 = accept void clif_parse_ReplyPartyInvite(int fd,struct map_session_data *sd) { - party_reply_invite(sd,RFIFOL(fd,2),RFIFOL(fd,6)); + iParty->reply_invite(sd,RFIFOL(fd,2),RFIFOL(fd,6)); } void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd) { - party_reply_invite(sd,RFIFOL(fd,2),RFIFOB(fd,6)); + iParty->reply_invite(sd,RFIFOL(fd,2),RFIFOB(fd,6)); } @@ -12030,7 +12030,7 @@ void clif_parse_LeaveParty(int fd, struct map_session_data *sd) clif->message(fd, msg_txt(227)); return; } - party_leave(sd); + iParty->leave(sd); } @@ -12042,7 +12042,7 @@ void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) clif->message(fd, msg_txt(227)); return; } - party_removemember(sd,RFIFOL(fd,2),(char*)RFIFOP(fd,6)); + iParty->removemember(sd,RFIFOL(fd,2),(char*)RFIFOP(fd,6)); } @@ -12057,7 +12057,7 @@ void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) if( !sd->status.party_id ) return; - p = party_search(sd->status.party_id); + p = iParty->search(sd->status.party_id); if( p == NULL ) return; @@ -12070,9 +12070,9 @@ void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) #if PACKETVER < 20090603 //Client can't change the item-field - party_changeoption(sd, RFIFOL(fd,2), p->party.item); + iParty->changeoption(sd, RFIFOL(fd,2), p->party.item); #else - party_changeoption(sd, RFIFOL(fd,2), ((RFIFOB(fd,6)?1:0)|(RFIFOB(fd,7)?2:0))); + iParty->changeoption(sd, RFIFOL(fd,2), ((RFIFOB(fd,6)?1:0)|(RFIFOB(fd,7)?2:0))); #endif } @@ -12099,12 +12099,12 @@ void clif_parse_PartyMessage(int fd, struct map_session_data* sd) if( battle_config.min_chat_delay ) { //[Skotlex] - if (DIFF_TICK(sd->cantalk_tick, gettick()) > 0) + if (DIFF_TICK(sd->cantalk_tick, iTimer->gettick()) > 0) return; - sd->cantalk_tick = gettick() + battle_config.min_chat_delay; + sd->cantalk_tick = iTimer->gettick() + battle_config.min_chat_delay; } - party_send_message(sd, text, textlen); + iParty->send_message(sd, text, textlen); } @@ -12112,7 +12112,7 @@ void clif_parse_PartyMessage(int fd, struct map_session_data* sd) /// 07da <account id>.L void clif_parse_PartyChangeLeader(int fd, struct map_session_data* sd) { - party_changeleader(sd, map_id2sd(RFIFOL(fd,2))); + iParty->changeleader(sd, iMap->id2sd(RFIFOL(fd,2))); } @@ -12131,7 +12131,7 @@ void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data* sd) for(i=0; i<PARTY_BOOKING_JOBS; i++) job[i] = RFIFOB(fd,6+i*2); - party_booking_register(sd, level, mapid, job); + iParty->booking_register(sd, level, mapid, job); } @@ -12162,7 +12162,7 @@ void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data* sd) unsigned long lastindex = RFIFOL(fd,8); short resultcount = RFIFOW(fd,12); - party_booking_search(sd, level, mapid, job, lastindex, resultcount); + iParty->booking_search(sd, level, mapid, job, lastindex, resultcount); } @@ -12199,7 +12199,7 @@ void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info** results, /// 0806 void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data* sd) { - if(party_booking_delete(sd)) + if(iParty->booking_delete(sd)) clif->PartyBookingDeleteAck(sd, 0); } @@ -12232,7 +12232,7 @@ void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data* sd) for(i=0; i<PARTY_BOOKING_JOBS; i++) job[i] = RFIFOW(fd,2+i*2); - party_booking_update(sd, job); + iParty->booking_update(sd, job); } @@ -12360,7 +12360,7 @@ void clif_parse_OpenVending(int fd, struct map_session_data* sd) clif->message (sd->fd, msg_txt(276)); // "You can't open a shop on this map" return; } - if( map_getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOVENDING) ) { + if( iMap->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOVENDING) ) { clif->message (sd->fd, msg_txt(204)); // "You can't open a shop on this cell." return; } @@ -12558,7 +12558,7 @@ clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_session_da /// 0168 <account id>.L <inviter account id>.L <inviter char id>.L void clif_parse_GuildInvite(int fd,struct map_session_data *sd) { - struct map_session_data *t_sd = map_id2sd(RFIFOL(fd,2)); + struct map_session_data *t_sd = iMap->id2sd(RFIFOL(fd,2)); if (clif_sub_guild_invite(fd, sd, t_sd)) return; @@ -12568,7 +12568,7 @@ void clif_parse_GuildInvite(int fd,struct map_session_data *sd) /// 0916 <char name>.24B void clif_parse_GuildInvite2(int fd, struct map_session_data *sd) { - struct map_session_data *t_sd = map_nick2sd((char *)RFIFOP(fd, 2)); + struct map_session_data *t_sd = iMap->nick2sd((char *)RFIFOP(fd, 2)); if (clif_sub_guild_invite(fd, sd, t_sd)) return; @@ -12636,9 +12636,9 @@ void clif_parse_GuildMessage(int fd, struct map_session_data* sd) if( battle_config.min_chat_delay ) { //[Skotlex] - if (DIFF_TICK(sd->cantalk_tick, gettick()) > 0) + if (DIFF_TICK(sd->cantalk_tick, iTimer->gettick()) > 0) return; - sd->cantalk_tick = gettick() + battle_config.min_chat_delay; + sd->cantalk_tick = iTimer->gettick() + battle_config.min_chat_delay; } if( sd->bg_id ) @@ -12662,7 +12662,7 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) return; } - t_sd = map_id2sd(RFIFOL(fd,2)); + t_sd = iMap->id2sd(RFIFOL(fd,2)); // @noask [LuzZza] if(t_sd && t_sd->state.noask) { @@ -12717,7 +12717,7 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) return; } - t_sd = map_id2sd(RFIFOL(fd,2)); + t_sd = iMap->id2sd(RFIFOL(fd,2)); // @noask [LuzZza] if(t_sd && t_sd->state.noask) { @@ -12832,7 +12832,7 @@ void clif_parse_GMKick(int fd, struct map_session_data *sd) int tid; tid = RFIFOL(fd,2); - target = map_id2bl(tid); + target = iMap->id2bl(tid); if (!target) { clif->GM_kickack(sd, 0); return; @@ -12853,7 +12853,7 @@ void clif_parse_GMKick(int fd, struct map_session_data *sd) case BL_MOB: { char command[100]; - if( !pc_can_use_command(sd, "@killmonster")) { + if( !iPc->can_use_command(sd, "@killmonster")) { clif->GM_kickack(sd, 0); return; } @@ -12916,7 +12916,7 @@ void clif_parse_GMRemove2(int fd, struct map_session_data* sd) struct map_session_data* pl_sd; account_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); - if( (pl_sd = map_id2sd(account_id)) != NULL ) { + if( (pl_sd = iMap->id2sd(account_id)) != NULL ) { char command[NAME_LENGTH+8]; sprintf(command, "%cjumpto %s", atcommand->at_symbol, pl_sd->status.name); atcommand->parse(fd, sd, command, 1); @@ -12953,7 +12953,7 @@ void clif_parse_GMRecall2(int fd, struct map_session_data* sd) struct map_session_data* pl_sd; account_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); - if( (pl_sd = map_id2sd(account_id)) != NULL ) { + if( (pl_sd = iMap->id2sd(account_id)) != NULL ) { char command[NAME_LENGTH+8]; sprintf(command, "%crecall %s", atcommand->at_symbol, pl_sd->status.name); atcommand->parse(fd, sd, command, 1); @@ -13024,10 +13024,10 @@ void clif_parse_GMReqNoChat(int fd,struct map_session_data *sd) //If type is 2 and the ids don't match, this is a crafted hacked packet! //Disabled because clients keep self-muting when you give players public @ commands... [Skotlex] - if (type == 2 /* && (pc_get_group_level(sd) > 0 || sd->bl.id != id)*/) + if (type == 2 /* && (iPc->get_group_level(sd) > 0 || sd->bl.id != id)*/) return; - dstsd = map_id2sd(id); + dstsd = iMap->id2sd(id); if( dstsd == NULL ) return; @@ -13091,7 +13091,7 @@ void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd) y = RFIFOW(fd,4); type = RFIFOW(fd,6); - map_setgatcell(sd->bl.m,x,y,type); + iMap->setgatcell(sd->bl.m,x,y,type); clif->changemapcell(0,sd->bl.m,x,y,type,ALL_SAMEMAP); //FIXME: once players leave the map, the client 'forgets' this information. } @@ -13114,7 +13114,7 @@ void clif_parse_PMIgnore(int fd, struct map_session_data* sd) type = RFIFOB(fd,26); if( type == 0 ) { // Add name to ignore list (block) - if (strcmp(wisp_server_name, nick) == 0) { + if (strcmp(iMap->wisp_server_name, nick) == 0) { clif->wisexin(sd, type, 1); // fail return; } @@ -13241,8 +13241,8 @@ void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd) void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) { if( ( sd->class_&MAPID_UPPERMASK ) == MAPID_SUPER_NOVICE ) { - unsigned int next = pc_nextbaseexp(sd); - if( next == 0 ) next = pc_thisbaseexp(sd); + unsigned int next = iPc->nextbaseexp(sd); + if( next == 0 ) next = iPc->thisbaseexp(sd); if( next ) { int percent = (int)( ( (float)sd->status.base_exp/(float)next )*1000. ); @@ -13315,7 +13315,7 @@ void clif_friendslist_send(struct map_session_data *sd) } for (n = 0; n < i; n++) { //Sending the online players - if (map_charid2sd(sd->status.friends[n].char_id)) + if (iMap->charid2sd(sd->status.friends[n].char_id)) clif->friendslist_toggle(sd, sd->status.friends[n].account_id, sd->status.friends[n].char_id, 1); } } @@ -13367,7 +13367,7 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) struct map_session_data *f_sd; int i; - f_sd = map_nick2sd((char*)RFIFOP(fd,2)); + f_sd = iMap->nick2sd((char*)RFIFOP(fd,2)); // ensure that the request player's friend list is not full ARR_FIND(0, MAX_FRIENDS, i, sd->status.friends[i].char_id == 0); @@ -13432,7 +13432,7 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd) return; } - f_sd = map_id2sd(account_id); //The account id is the same as the bl.id of players. + f_sd = iMap->id2sd(account_id); //The account id is the same as the bl.id of players. if (f_sd == NULL) return; @@ -13497,7 +13497,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd) } //remove from friend's list first - if( (f_sd = map_id2sd(account_id)) && f_sd->status.char_id == char_id) { + if( (f_sd = iMap->id2sd(account_id)) && f_sd->status.char_id == char_id) { for (i = 0; i < MAX_FRIENDS && (f_sd->status.friends[i].char_id != sd->status.char_id || f_sd->status.friends[i].account_id != sd->status.account_id); i++); @@ -13578,7 +13578,7 @@ void clif_blacksmith(struct map_session_data* sd) for (i = 0; i < 10 && i < MAX_FAME_LIST; i++) { if (smith_fame_list[i].id > 0) { if (strcmp(smith_fame_list[i].name, "-") == 0 && - (name = map_charid2nick(smith_fame_list[i].id)) != NULL) + (name = iMap->charid2nick(smith_fame_list[i].id)) != NULL) { strncpy((char *)(WFIFOP(fd, 2 + 24 * i)), name, NAME_LENGTH); } else @@ -13630,7 +13630,7 @@ void clif_alchemist(struct map_session_data* sd) { for (i = 0; i < 10 && i < MAX_FAME_LIST; i++) { if (chemist_fame_list[i].id > 0) { if (strcmp(chemist_fame_list[i].name, "-") == 0 && - (name = map_charid2nick(chemist_fame_list[i].id)) != NULL) + (name = iMap->charid2nick(chemist_fame_list[i].id)) != NULL) { memcpy(WFIFOP(fd, 2 + 24 * i), name, NAME_LENGTH); } else @@ -13682,7 +13682,7 @@ void clif_taekwon(struct map_session_data* sd) { for (i = 0; i < 10 && i < MAX_FAME_LIST; i++) { if (taekwon_fame_list[i].id > 0) { if (strcmp(taekwon_fame_list[i].name, "-") == 0 && - (name = map_charid2nick(taekwon_fame_list[i].id)) != NULL) + (name = iMap->charid2nick(taekwon_fame_list[i].id)) != NULL) { memcpy(WFIFOP(fd, 2 + 24 * i), name, NAME_LENGTH); } else @@ -13882,7 +13882,7 @@ void clif_parse_HomMenu(int fd, struct map_session_data *sd) { //[orn] /// 0292 void clif_parse_AutoRevive(int fd, struct map_session_data *sd) { - int item_position = pc_search_inventory(sd, ITEMID_TOKEN_OF_SIEGFRIED); + int item_position = iPc->search_inventory(sd, ITEMID_TOKEN_OF_SIEGFRIED); if (item_position < 0) return; @@ -13894,7 +13894,7 @@ void clif_parse_AutoRevive(int fd, struct map_session_data *sd) return; clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1); - pc_delitem(sd, item_position, 1, 0, 1, LOG_TYPE_CONSUME); + iPc->delitem(sd, item_position, 1, 0, 1, LOG_TYPE_CONSUME); } @@ -13909,17 +13909,17 @@ void clif_check(int fd, struct map_session_data* pl_sd) { WFIFOHEAD(fd,packet_len(0x214)); WFIFOW(fd, 0) = 0x214; WFIFOB(fd, 2) = min(pl_sd->status.str, UINT8_MAX); - WFIFOB(fd, 3) = pc_need_status_point(pl_sd, SP_STR, 1); + WFIFOB(fd, 3) = iPc->need_status_point(pl_sd, SP_STR, 1); WFIFOB(fd, 4) = min(pl_sd->status.agi, UINT8_MAX); - WFIFOB(fd, 5) = pc_need_status_point(pl_sd, SP_AGI, 1); + WFIFOB(fd, 5) = iPc->need_status_point(pl_sd, SP_AGI, 1); WFIFOB(fd, 6) = min(pl_sd->status.vit, UINT8_MAX); - WFIFOB(fd, 7) = pc_need_status_point(pl_sd, SP_VIT, 1); + WFIFOB(fd, 7) = iPc->need_status_point(pl_sd, SP_VIT, 1); WFIFOB(fd, 8) = min(pl_sd->status.int_, UINT8_MAX); - WFIFOB(fd, 9) = pc_need_status_point(pl_sd, SP_INT, 1); + WFIFOB(fd, 9) = iPc->need_status_point(pl_sd, SP_INT, 1); WFIFOB(fd,10) = min(pl_sd->status.dex, UINT8_MAX); - WFIFOB(fd,11) = pc_need_status_point(pl_sd, SP_DEX, 1); + WFIFOB(fd,11) = iPc->need_status_point(pl_sd, SP_DEX, 1); WFIFOB(fd,12) = min(pl_sd->status.luk, UINT8_MAX); - WFIFOB(fd,13) = pc_need_status_point(pl_sd, SP_LUK, 1); + WFIFOB(fd,13) = iPc->need_status_point(pl_sd, SP_LUK, 1); WFIFOW(fd,14) = pl_sd->battle_status.batk+pl_sd->battle_status.rhw.atk+pl_sd->battle_status.lhw.atk; WFIFOW(fd,16) = pl_sd->battle_status.rhw.atk2+pl_sd->battle_status.lhw.atk2; WFIFOW(fd,18) = pl_sd->battle_status.matk_max; @@ -13951,7 +13951,7 @@ void clif_parse_Check(int fd, struct map_session_data *sd) safestrncpy(charname, (const char*)RFIFOP(fd,packet_db[RFIFOW(fd,0)].pos[0]), sizeof(charname)); - if( ( pl_sd = map_nick2sd(charname) ) == NULL || pc_get_group_level(sd) < pc_get_group_level(pl_sd) ) { + if( ( pl_sd = iMap->nick2sd(charname) ) == NULL || iPc->get_group_level(sd) < iPc->get_group_level(pl_sd) ) { return; } @@ -14233,9 +14233,9 @@ void clif_parse_Mail_getattach(int fd, struct map_session_data *sd) if ((data = itemdb_exists(sd->mail.inbox.msg[i].item.nameid)) == NULL) return; - switch( pc_checkadditem(sd, data->nameid, sd->mail.inbox.msg[i].item.amount) ) { + switch( iPc->checkadditem(sd, data->nameid, sd->mail.inbox.msg[i].item.amount) ) { case ADDITEM_NEW: - fail = ( pc_inventoryblank(sd) == 0 ); + fail = ( iPc->inventoryblank(sd) == 0 ); break; case ADDITEM_OVERAMOUNT: fail = true; @@ -14361,7 +14361,7 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd) return; } - if( DIFF_TICK(sd->cansendmail_tick, gettick()) > 0 ) { + if( DIFF_TICK(sd->cansendmail_tick, iTimer->gettick()) > 0 ) { clif->message(sd->fd,msg_txt(675)); //"Cannot send mails too fast!!." clif->mail_send(fd, true); // fail return; @@ -14399,7 +14399,7 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd) if( !intif_Mail_send(sd->status.account_id, &msg) ) mail_deliveryfail(sd, &msg); - sd->cansendmail_tick = gettick() + 1000; // 1 Second flood Protection + sd->cansendmail_tick = iTimer->gettick() + 1000; // 1 Second flood Protection } @@ -14527,9 +14527,9 @@ void clif_parse_Auction_setitem(int fd, struct map_session_data *sd) return; } - if( !pc_can_give_items(sd) || sd->status.inventory[idx].expire_time || + if( !iPc->can_give_items(sd) || sd->status.inventory[idx].expire_time || !sd->status.inventory[idx].identify || - !itemdb_canauction(&sd->status.inventory[idx],pc_get_group_level(sd)) ) { // Quest Item or something else + !itemdb_canauction(&sd->status.inventory[idx],iPc->get_group_level(sd)) ) { // Quest Item or something else clif->auction_setitem(sd->fd, idx, true); return; } @@ -14646,10 +14646,10 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd) { int zeny = auction.hours*battle_config.auction_feeperhour; - pc_delitem(sd, sd->auction.index, sd->auction.amount, 1, 6, LOG_TYPE_AUCTION); + iPc->delitem(sd, sd->auction.index, sd->auction.amount, 1, 6, LOG_TYPE_AUCTION); sd->auction.amount = 0; - pc_payzeny(sd, zeny, LOG_TYPE_AUCTION, NULL); + iPc->payzeny(sd, zeny, LOG_TYPE_AUCTION, NULL); } } @@ -14681,7 +14681,7 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd) unsigned int auction_id = RFIFOL(fd,2); int bid = RFIFOL(fd,6); - if( !pc_can_give_items(sd) ) { //They aren't supposed to give zeny [Inkfish] + if( !iPc->can_give_items(sd) ) { //They aren't supposed to give zeny [Inkfish] clif->message(sd->fd, msg_txt(246)); return; } @@ -14693,7 +14693,7 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd) else if ( CheckForCharServer() ) // char server is down (bugreport:1138) clif->auction_message(fd, 0); // You have failed to bid into the auction else { - pc_payzeny(sd, bid, LOG_TYPE_AUCTION, NULL); + iPc->payzeny(sd, bid, LOG_TYPE_AUCTION, NULL); intif_Auction_bid(sd->status.char_id, sd->status.name, auction_id, bid); } } @@ -14878,9 +14878,9 @@ void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *sr /// 01f9 <account id>.L void clif_parse_Adopt_request(int fd, struct map_session_data *sd) { - struct map_session_data *tsd = map_id2sd(RFIFOL(fd,2)), *p_sd = map_charid2sd(sd->status.partner_id); + struct map_session_data *tsd = iMap->id2sd(RFIFOL(fd,2)), *p_sd = iMap->charid2sd(sd->status.partner_id); - if( pc_can_Adopt(sd, p_sd, tsd) ) { + if( iPc->can_Adopt(sd, p_sd, tsd) ) { tsd->adopt_invite = sd->status.account_id; clif->adopt_request(tsd, sd, p_sd->status.account_id); } @@ -14897,8 +14897,8 @@ void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) int p1_id = RFIFOL(fd,2); int p2_id = RFIFOL(fd,6); int result = RFIFOL(fd,10); - struct map_session_data* p1_sd = map_id2sd(p1_id); - struct map_session_data* p2_sd = map_id2sd(p2_id); + struct map_session_data* p1_sd = iMap->id2sd(p1_id); + struct map_session_data* p2_sd = iMap->id2sd(p2_id); int pid = sd->adopt_invite; sd->adopt_invite = 0; @@ -14912,7 +14912,7 @@ void clif_parse_Adopt_reply(int fd, struct map_session_data *sd) if( result == 0 ) return; // Rejected - pc_adoption(p1_sd, p2_sd, sd); + iPc->adoption(p1_sd, p2_sd, sd); } @@ -14938,11 +14938,11 @@ void clif_bossmapinfo(int fd, struct mob_data *md, short flag) } else WFIFOB(fd,2) = 2; // First Time } else if (md->spawn_timer != INVALID_TIMER) { // Boss is Dead - const struct TimerData * timer_data = get_timer(md->spawn_timer); + const struct TimerData * timer_data = iTimer->get_timer(md->spawn_timer); unsigned int seconds; int hours, minutes; - seconds = DIFF_TICK(timer_data->tick, gettick()) / 1000 + 60; + seconds = DIFF_TICK(timer_data->tick, iTimer->gettick()) / 1000 + 60; hours = seconds / (60 * 60); seconds = seconds - (60 * 60 * hours); minutes = seconds / 60; @@ -14963,7 +14963,7 @@ void clif_bossmapinfo(int fd, struct mob_data *md, short flag) void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) { int charid = RFIFOL(fd, 2); - struct map_session_data* tsd = map_id2sd(charid); + struct map_session_data* tsd = iMap->id2sd(charid); if (!tsd) return; @@ -15488,9 +15488,9 @@ void clif_parse_BattleChat(int fd, struct map_session_data* sd) return; if( battle_config.min_chat_delay ) { - if( DIFF_TICK(sd->cantalk_tick, gettick()) > 0 ) + if( DIFF_TICK(sd->cantalk_tick, iTimer->gettick()) > 0 ) return; - sd->cantalk_tick = gettick() + battle_config.min_chat_delay; + sd->cantalk_tick = iTimer->gettick() + battle_config.min_chat_delay; } bg_send_message(sd, text, textlen); @@ -15586,11 +15586,11 @@ int clif_instance(int instance_id, int type, int flag) { break; case IOT_PARTY: /* default is already PARTY */ - sd = party_getavailablesd(party_search(instances[instance_id].owner_id)); + sd = iParty->getavailablesd(iParty->search(instances[instance_id].owner_id)); break; case IOT_CHAR: target = SELF; - sd = map_id2sd(instances[instance_id].owner_id); + sd = iMap->id2sd(instances[instance_id].owner_id); break; } @@ -16836,14 +16836,14 @@ void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) { if (!itemdb_isstackable2(data)) get_count = 1; - pc_paycash(sd, clif->cs.data[tab][j]->price * qty, kafra_pay);// [Ryuuzaki] + iPc->paycash(sd, clif->cs.data[tab][j]->price * qty, kafra_pay);// [Ryuuzaki] for (k = 0; k < qty; k += get_count) { if (!pet_create_egg(sd, data->nameid)) { memset(&item_tmp, 0, sizeof(item_tmp)); item_tmp.nameid = data->nameid; item_tmp.identify = 1; - switch (pc_additem(sd, &item_tmp, get_count, LOG_TYPE_NPC)) { + switch (iPc->additem(sd, &item_tmp, get_count, LOG_TYPE_NPC)) { case 0: result = CSBR_SUCCESS; break; @@ -16865,7 +16865,7 @@ void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) { } if( result != CSBR_SUCCESS ) - pc_getcash(sd, clif->cs.data[tab][j]->price * get_count,0); + iPc->getcash(sd, clif->cs.data[tab][j]->price * get_count,0); } } } @@ -17118,7 +17118,7 @@ int clif_parse(int fd) { } else { //Unusual logout (during log on/off/map-changer procedure) ShowInfo("Player AID:%d/CID:%d logged off.\n", sd->status.account_id, sd->status.char_id); - map_quit(sd); + iMap->quit(sd); } } else { ShowInfo("Closed connection from '"CL_WHITE"%s"CL_RESET"'.\n", ip2str(session[fd]->client_addr, NULL)); @@ -17280,8 +17280,8 @@ int do_init_clif(void) { exit(EXIT_FAILURE); } - add_timer_func_list(clif->clearunit_delayed_sub, "clif_clearunit_delayed_sub"); - add_timer_func_list(clif->delayquit, "clif_delayquit"); + iTimer->add_timer_func_list(clif->clearunit_delayed_sub, "clif_clearunit_delayed_sub"); + iTimer->add_timer_func_list(clif->delayquit, "clif_delayquit"); clif->delay_clearunit_ers = ers_new(sizeof(struct block_list),"clif.c::delay_clearunit_ers",ERS_OPT_CLEAR); diff --git a/src/map/duel.c b/src/map/duel.c index 7af427304..9a8b6d12b 100644 --- a/src/map/duel.c +++ b/src/map/duel.c @@ -75,7 +75,7 @@ void duel_showinfo(const unsigned int did, struct map_session_data* sd) duel_list[did].members_count + duel_list[did].invites_count); clif->disp_onlyself(sd, output, strlen(output)); - map_foreachpc(duel_showinfo_sub, sd, &p); + iMap->map_foreachpc(duel_showinfo_sub, sd, &p); } int duel_create(struct map_session_data* sd, const unsigned int maxpl) @@ -135,7 +135,7 @@ void duel_leave(const unsigned int did, struct map_session_data* sd) duel_list[did].members_count--; if(duel_list[did].members_count == 0) { - map_foreachpc(duel_leave_sub, did); + iMap->map_foreachpc(duel_leave_sub, did); duel_count--; } diff --git a/src/map/elemental.c b/src/map/elemental.c index dfe1a0c5b..17c6fe16d 100644 --- a/src/map/elemental.c +++ b/src/map/elemental.c @@ -77,27 +77,27 @@ int elemental_create(struct map_session_data *sd, int class_, unsigned int lifet ele.mode = EL_MODE_PASSIVE; // Initial mode i = db->status.size+1; // summon level - //[(Caster’s Max HP/ 3 ) + (Caster’s INT x 10 )+ (Caster’s Job Level x 20 )] x [(Elemental Summon Level + 2) / 3] + //[(Caster�s Max HP/ 3 ) + (Caster�s INT x 10 )+ (Caster�s Job Level x 20 )] x [(Elemental Summon Level + 2) / 3] ele.hp = ele.max_hp = (sd->battle_status.max_hp/3 + sd->battle_status.int_*10 + sd->status.job_level) * ((i + 2) / 3); - //Caster’s Max SP /4 + //Caster�s Max SP /4 ele.sp = ele.max_sp = sd->battle_status.max_sp/4; - //Caster’s [ Max SP / (18 / Elemental Summon Skill Level) 1- 100 ] + //Caster�s [ Max SP / (18 / Elemental Summon Skill Level) 1- 100 ] ele.atk = (sd->battle_status.max_sp / (18 / i) * 1 - 100); - //Caster’s [ Max SP / (18 / Elemental Summon Skill Level) ] + //Caster�s [ Max SP / (18 / Elemental Summon Skill Level) ] ele.atk2 = sd->battle_status.max_sp / 18; - //Caster’s HIT + (Caster’s Base Level ) + //Caster�s HIT + (Caster�s Base Level ) ele.hit = sd->battle_status.hit + sd->status.base_level; - //[Elemental Summon Skill Level x (Caster’s INT / 2 + Caster’s DEX / 4)] + //[Elemental Summon Skill Level x (Caster�s INT / 2 + Caster�s DEX / 4)] ele.matk = i * (sd->battle_status.int_ / 2 + sd->battle_status.dex / 4); - //150 + [Caster’s DEX / 10] + [Elemental Summon Skill Level x 3 ] + //150 + [Caster�s DEX / 10] + [Elemental Summon Skill Level x 3 ] ele.amotion = 150 + sd->battle_status.dex / 10 + i * 3; - //Caster’s DEF + (Caster’s Base Level / (5 – Elemental Summon Skill Level) + //Caster�s DEF + (Caster�s Base Level / (5 � Elemental Summon Skill Level) ele.def = sd->battle_status.def + sd->status.base_level / (5-i); - //Caster’s MDEF + (Caster’s INT / (5 - Elemental Summon Skill Level) + //Caster�s MDEF + (Caster�s INT / (5 - Elemental Summon Skill Level) ele.mdef = sd->battle_status.mdef + sd->battle_status.int_ / (5-i); - //Caster’s FLEE + (Caster’s Base Level / (5 – Elemental Summon Skill Level) + //Caster�s FLEE + (Caster�s Base Level / (5 � Elemental Summon Skill Level) ele.flee = sd->status.base_level / (5-i); - //Caster’s HIT + (Caster’s Base Level ) + //Caster�s HIT + (Caster�s Base Level ) ele.hit = sd->battle_status.hit + sd->status.base_level; //per individual bonuses @@ -126,7 +126,7 @@ int elemental_create(struct map_session_data *sd, int class_, unsigned int lifet break; } - if( (i=pc_checkskill(sd,SO_EL_SYMPATHY)) > 0 ){ + if( (i=iPc->checkskill(sd,SO_EL_SYMPATHY)) > 0 ){ ele.hp = ele.max_hp = ele.max_hp * 5 * i / 100; ele.sp = ele.max_sp = ele.max_sp * 5 * i / 100; ele.atk += 25 * i; @@ -147,8 +147,8 @@ int elemental_get_lifetime(struct elemental_data *ed) { if( ed == NULL || ed->summon_timer == INVALID_TIMER ) return 0; - td = get_timer(ed->summon_timer); - return (td != NULL) ? DIFF_TICK(td->tick, gettick()) : 0; + td = iTimer->get_timer(ed->summon_timer); + return (td != NULL) ? DIFF_TICK(td->tick, iTimer->gettick()) : 0; } int elemental_save(struct elemental_data *ed) { @@ -173,7 +173,7 @@ static int elemental_summon_end(int tid, unsigned int tick, int id, intptr_t dat struct map_session_data *sd; struct elemental_data *ed; - if( (sd = map_id2sd(id)) == NULL ) + if( (sd = iMap->id2sd(id)) == NULL ) return 1; if( (ed = sd->ed) == NULL ) return 1; @@ -192,13 +192,12 @@ static int elemental_summon_end(int tid, unsigned int tick, int id, intptr_t dat void elemental_summon_stop(struct elemental_data *ed) { nullpo_retv(ed); if( ed->summon_timer != INVALID_TIMER ) - delete_timer(ed->summon_timer, elemental_summon_end); + iTimer->delete_timer(ed->summon_timer, elemental_summon_end); ed->summon_timer = INVALID_TIMER; } int elemental_delete(struct elemental_data *ed, int reply) { struct map_session_data *sd; - nullpo_ret(ed); sd = ed->master; @@ -218,7 +217,7 @@ int elemental_delete(struct elemental_data *ed, int reply) { void elemental_summon_init(struct elemental_data *ed) { if( ed->summon_timer == INVALID_TIMER ) - ed->summon_timer = add_timer(gettick() + ed->elemental.life_time, elemental_summon_end, ed->master->bl.id, 0); + ed->summon_timer = iTimer->add_timer(iTimer->gettick() + ed->elemental.life_time, elemental_summon_end, ed->master->bl.id, 0); ed->regen.state.block = 0; } @@ -229,7 +228,7 @@ int elemental_data_received(struct s_elemental *ele, bool flag) { struct s_elemental_db *db; int i = elemental_search_index(ele->class_); - if( (sd = map_charid2sd(ele->char_id)) == NULL ) + if( (sd = iMap->charid2sd(ele->char_id)) == NULL ) return 0; if( !flag || i < 0 ) { // Not created - loaded - DB info @@ -258,9 +257,9 @@ int elemental_data_received(struct s_elemental *ele, bool flag) { ed->bl.x = ed->ud.to_x; ed->bl.y = ed->ud.to_y; - map_addiddb(&ed->bl); + iMap->addiddb(&ed->bl); status_calc_elemental(ed,1); - ed->last_spdrain_time = ed->last_thinktime = gettick(); + ed->last_spdrain_time = ed->last_thinktime = iTimer->gettick(); ed->summon_timer = INVALID_TIMER; elemental_summon_init(ed); } else { @@ -271,7 +270,7 @@ int elemental_data_received(struct s_elemental *ele, bool flag) { sd->status.ele_id = ele->elemental_id; if( ed->bl.prev == NULL && sd->bl.prev != NULL ) { - map_addblock(&ed->bl); + iMap->addblock(&ed->bl); clif->spawn(&ed->bl); clif->elemental_info(sd); clif->elemental_updatestatus(sd,SP_HP); @@ -433,9 +432,9 @@ int elemental_action(struct elemental_data *ed, struct block_list *bl, unsigned ed->ud.skill_lv = skill_lv; if( skill->get_inf(skill_id) & INF_GROUND_SKILL ) - ed->ud.skilltimer = add_timer( tick+status_get_speed(&ed->bl)*walk_dist, skill->castend_pos, ed->bl.id, 0 ); + ed->ud.skilltimer = iTimer->add_timer( tick+status_get_speed(&ed->bl)*walk_dist, skill->castend_pos, ed->bl.id, 0 ); else - ed->ud.skilltimer = add_timer( tick+status_get_speed(&ed->bl)*walk_dist, skill->castend_id, ed->bl.id, 0 ); + ed->ud.skilltimer = iTimer->add_timer( tick+status_get_speed(&ed->bl)*walk_dist, skill->castend_id, ed->bl.id, 0 ); } return 1; @@ -493,11 +492,11 @@ int elemental_change_mode_ack(struct elemental_data *ed, int mode) { if( ed->ud.skilltimer != INVALID_TIMER ) return 0; - else if( DIFF_TICK(gettick(), ed->ud.canact_tick) < 0 ) + else if( DIFF_TICK(iTimer->gettick(), ed->ud.canact_tick) < 0 ) return 0; ed->target_id = bl->id; // Set new target - ed->last_thinktime = gettick(); + ed->last_thinktime = iTimer->gettick(); if( skill->get_inf(skill_id) & INF_GROUND_SKILL ) unit_skilluse_pos(&ed->bl, bl->x, bl->y, skill_id, skill_lv); @@ -707,16 +706,16 @@ static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_ return 0; //Already walking to him if( DIFF_TICK(tick, ed->ud.canmove_tick) < 0 ) return 0; //Can't move yet. - if( map_search_freecell(&ed->bl, sd->bl.m, &x, &y, MIN_ELEDISTANCE, MIN_ELEDISTANCE, 1) + if( iMap->search_freecell(&ed->bl, sd->bl.m, &x, &y, MIN_ELEDISTANCE, MIN_ELEDISTANCE, 1) && unit_walktoxy(&ed->bl, x, y, 0) ) return 0; } if( mode == EL_MODE_AGGRESSIVE ) { - target = map_id2bl(ed->ud.target); + target = iMap->id2bl(ed->ud.target); if( !target ) - map_foreachinrange(elemental_ai_sub_timer_activesearch, &ed->bl, view_range, BL_CHAR, ed, &target, status_get_mode(&ed->bl)); + iMap->foreachinrange(elemental_ai_sub_timer_activesearch, &ed->bl, view_range, BL_CHAR, ed, &target, status_get_mode(&ed->bl)); if( !target ) { //No targets available. elemental_unlocktarget(ed); @@ -755,7 +754,7 @@ static int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list a } static int elemental_ai_timer(int tid, unsigned int tick, int id, intptr_t data) { - map_foreachpc(elemental_ai_sub_foreachclient,tick); + iMap->map_foreachpc(elemental_ai_sub_foreachclient,tick); return 0; } @@ -767,7 +766,7 @@ int read_elementaldb(void) { struct s_elemental_db *db; struct status_data *status; - sprintf(line, "%s/%s", db_path, "elemental_db.txt"); + sprintf(line, "%s/%s", iMap->db_path, "elemental_db.txt"); memset(elemental_db,0,sizeof(elemental_db)); fp = fopen(line, "r"); @@ -858,7 +857,7 @@ int read_elemental_skilldb(void) { uint16 skill_id, skill_lv; int skillmode; - sprintf(line, "%s/%s", db_path, "elemental_skill_db.txt"); + sprintf(line, "%s/%s", iMap->db_path, "elemental_skill_db.txt"); fp = fopen(line, "r"); if( !fp ) { ShowError("read_elemental_skilldb : can't read elemental_skill_db.txt\n"); @@ -934,8 +933,8 @@ int do_init_elemental(void) { read_elementaldb(); read_elemental_skilldb(); - add_timer_func_list(elemental_ai_timer,"elemental_ai_timer"); - add_timer_interval(gettick()+MIN_ELETHINKTIME,elemental_ai_timer,0,0,MIN_ELETHINKTIME); + iTimer->add_timer_func_list(elemental_ai_timer,"elemental_ai_timer"); + iTimer->add_timer_interval(iTimer->gettick()+MIN_ELETHINKTIME,elemental_ai_timer,0,0,MIN_ELETHINKTIME); return 0; } diff --git a/src/map/guild.c b/src/map/guild.c index a6c873861..fe801462f 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -76,7 +76,7 @@ unsigned short guild_flags_count; *------------------------------------------*/ static TBL_PC* guild_sd_check(int guild_id, int account_id, int char_id) { - TBL_PC* sd = map_id2sd(account_id); + TBL_PC* sd = iMap->id2sd(account_id); if (!(sd && sd->status.char_id == char_id)) return NULL; @@ -167,7 +167,7 @@ static bool guild_read_castledb(char* str[], int columns, int current) struct guild_castle *gc; int mapindex = mapindex_name2id(str[1]); - if (map_mapindex2mapid(mapindex) < 0) // Map not found or on another map-server + if (iMap->mapindex2mapid(mapindex) < 0) // Map not found or on another map-server return false; CREATE(gc, struct guild_castle, 1); @@ -297,7 +297,7 @@ int guild_payexp_timer_sub(DBKey key, DBData *data, va_list ap) { struct guild_expcache *c; struct guild *g; - c = DB->data2ptr(data); + c = iDB->data2ptr(data); if ( (g = guild->search(c->guild_id)) == NULL || @@ -332,7 +332,7 @@ int guild_payexp_timer(int tid, unsigned int tick, int id, intptr_t data) */ int guild_send_xy_timer_sub(DBKey key, DBData *data, va_list ap) { - struct guild *g = DB->data2ptr(data); + struct guild *g = iDB->data2ptr(data); int i; nullpo_ret(g); @@ -386,7 +386,7 @@ int guild_create(struct map_session_data *sd, const char *name) clif->guild_created(sd,1); return 0; } - if( battle_config.guild_emperium_check && pc_search_inventory(sd,714) == -1 ) + if( battle_config.guild_emperium_check && iPc->search_inventory(sd,714) == -1 ) {// item required clif->guild_created(sd,3); return 0; @@ -400,7 +400,7 @@ int guild_create(struct map_session_data *sd, const char *name) //Whether or not to create guild int guild_created(int account_id,int guild_id) { - struct map_session_data *sd=map_id2sd(account_id); + struct map_session_data *sd=iMap->id2sd(account_id); if(sd==NULL) return 0; @@ -412,7 +412,7 @@ int guild_created(int account_id,int guild_id) { sd->status.guild_id=guild_id; clif->guild_created(sd,0); if(battle_config.guild_emperium_check) - pc_delitem(sd,pc_search_inventory(sd,ITEMID_EMPERIUM),1,0,0,LOG_TYPE_CONSUME); //emperium consumption + iPc->delitem(sd,iPc->search_inventory(sd,ITEMID_EMPERIUM),1,0,0,LOG_TYPE_CONSUME); //emperium consumption return 0; } @@ -440,8 +440,8 @@ int guild_npc_request_info(int guild_id,const char *event) ev=(struct eventlist *)aCalloc(sizeof(struct eventlist),1); memcpy(ev->name,event,strlen(event)); //The one in the db (if present) becomes the next event from this. - if (guild_infoevent_db->put(guild_infoevent_db, DB->i2key(guild_id), DB->ptr2data(ev), &prev)) - ev->next = DB->data2ptr(&prev); + if (guild_infoevent_db->put(guild_infoevent_db, iDB->i2key(guild_id), iDB->ptr2data(ev), &prev)) + ev->next = iDB->data2ptr(&prev); } return guild->request_info(guild_id); @@ -555,7 +555,7 @@ int guild_recv_info(struct guild *sg) { before=*sg; //Perform the check on the user because the first load guild_check_member(sg); - if ((sd = map_nick2sd(sg->master)) != NULL) { + if ((sd = iMap->nick2sd(sg->master)) != NULL) { //If the guild master is online the first time the guild_info is received, //that means he was the first to join, so apply guild skill blocking here. if( battle_config.guild_skill_relog_delay ) @@ -618,8 +618,8 @@ int guild_recv_info(struct guild *sg) { } //Occurrence of an event - if (guild_infoevent_db->remove(guild_infoevent_db, DB->i2key(sg->guild_id), &data)) { - struct eventlist *ev = DB->data2ptr(&data), *ev2; + if (guild_infoevent_db->remove(guild_infoevent_db, iDB->i2key(sg->guild_id), &data)) { + struct eventlist *ev = iDB->data2ptr(&data), *ev2; while(ev) { npc_event_do(ev->name); ev2=ev->next; @@ -662,7 +662,7 @@ int guild_invite(struct map_session_data *sd, struct map_session_data *tsd) { if(tsd->status.guild_id>0 || tsd->guild_invite>0 || - ((agit_flag || agit2_flag) && map[tsd->bl.m].flag.gvg_castle)) + ((iMap->agit_flag || iMap->agit2_flag) && map[tsd->bl.m].flag.gvg_castle)) { //Can't invite people inside castles. [Skotlex] clif->guild_inviteack(sd,0); return 0; @@ -696,7 +696,7 @@ int guild_reply_invite(struct map_session_data* sd, int guild_id, int flag) // look up the person who sent the invite //NOTE: this can be NULL because the person might have logged off in the meantime - tsd = map_id2sd(sd->guild_invite_account); + tsd = iMap->id2sd(sd->guild_invite_account); if ( sd->status.guild_id > 0 ) // [Paradox924X] { // Already in another guild. @@ -788,7 +788,7 @@ void guild_member_joined(struct map_session_data *sd) *----------------------------------------*/ int guild_member_added(int guild_id,int account_id,int char_id,int flag) { - struct map_session_data *sd= map_id2sd(account_id),*sd2; + struct map_session_data *sd= iMap->id2sd(account_id),*sd2; struct guild *g; if( (g=guild->search(guild_id))==NULL ) @@ -802,7 +802,7 @@ int guild_member_added(int guild_id,int account_id,int char_id,int flag) } return 0; } - sd2 = map_id2sd(sd->guild_invite_account); + sd2 = iMap->id2sd(sd->guild_invite_account); sd->guild_invite = 0; sd->guild_invite_account = 0; @@ -847,7 +847,7 @@ int guild_leave(struct map_session_data* sd, int guild_id, int account_id, int c if(sd->status.account_id!=account_id || sd->status.char_id!=char_id || sd->status.guild_id!=guild_id || - ((agit_flag || agit2_flag) && map[sd->bl.m].flag.gvg_castle)) + ((iMap->agit_flag || iMap->agit2_flag) && map[sd->bl.m].flag.gvg_castle)) return 0; intif_guild_leave(sd->status.guild_id, sd->status.account_id, sd->status.char_id,0,mes); @@ -877,9 +877,9 @@ int guild_expulsion(struct map_session_data* sd, int guild_id, int account_id, i return 0; //Expulsion permission //Can't leave inside guild castles. - if ((tsd = map_id2sd(account_id)) && + if ((tsd = iMap->id2sd(account_id)) && tsd->status.char_id == char_id && - ((agit_flag || agit2_flag) && map[tsd->bl.m].flag.gvg_castle)) + ((iMap->agit_flag || iMap->agit2_flag) && map[tsd->bl.m].flag.gvg_castle)) return 0; // find the member and perform expulsion @@ -894,7 +894,7 @@ int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, c { int i; struct guild* g = guild->search(guild_id); - struct map_session_data* sd = map_charid2sd(char_id); + struct map_session_data* sd = iMap->charid2sd(char_id); struct map_session_data* online_member_sd; if(g == NULL) @@ -997,7 +997,7 @@ int guild_recv_memberinfoshort(int guild_id,int account_id,int char_id,int onlin if(idx == -1 || c == 0) { //Treat char_id who doesn't match guild_id (not found as member) - struct map_session_data *sd = map_id2sd(account_id); + struct map_session_data *sd = iMap->id2sd(account_id); if(sd && sd->status.char_id == char_id) { sd->status.guild_id=0; sd->guild_emblem_id=0; @@ -1206,7 +1206,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data) // update permanent guardians for( i = 0; i < ARRAYLENGTH(gc->guardian); ++i ) { - TBL_MOB* md = (gc->guardian[i].id ? map_id2md(gc->guardian[i].id) : NULL); + TBL_MOB* md = (gc->guardian[i].id ? iMap->id2md(gc->guardian[i].id) : NULL); if( md == NULL || md->guardian_data == NULL ) continue; md->guardian_data->emblem_id = emblem_id; @@ -1215,7 +1215,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data) // update temporary guardians for( i = 0; i < gc->temp_guardians_max; ++i ) { - TBL_MOB* md = (gc->temp_guardians[i] ? map_id2md(gc->temp_guardians[i]) : NULL); + TBL_MOB* md = (gc->temp_guardians[i] ? iMap->id2md(gc->temp_guardians[i]) : NULL); if( md == NULL || md->guardian_data == NULL ) continue; md->guardian_data->emblem_id = emblem_id; @@ -1247,7 +1247,7 @@ static DBData create_expcache(DBKey key, va_list args) c->account_id = sd->status.account_id; c->char_id = sd->status.char_id; c->exp = 0; - return DB->ptr2data(c); + return iDB->ptr2data(c); } /*==================================================== @@ -1273,7 +1273,7 @@ unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp) { exp = exp * per / 100; //Otherwise tax everything. - c = DB->data2ptr(guild_expcache_db->ensure(guild_expcache_db, DB->i2key(sd->status.char_id), create_expcache, sd)); + c = iDB->data2ptr(guild_expcache_db->ensure(guild_expcache_db, iDB->i2key(sd->status.char_id), create_expcache, sd)); if (c->exp > UINT64_MAX - exp) c->exp = UINT64_MAX; @@ -1296,7 +1296,7 @@ int guild_getexp(struct map_session_data *sd,int exp) if (sd->status.guild_id == 0 || sd->guild == NULL) return 0; - c = DB->data2ptr(guild_expcache_db->ensure(guild_expcache_db, DB->i2key(sd->status.char_id), create_expcache, sd)); + c = iDB->data2ptr(guild_expcache_db->ensure(guild_expcache_db, iDB->i2key(sd->status.char_id), create_expcache, sd)); if (c->exp > UINT64_MAX - exp) c->exp = UINT64_MAX; else @@ -1333,7 +1333,7 @@ int guild_skillup(TBL_PC* sd, uint16 skill_id) *---------------------------------------------------*/ int guild_skillupack(int guild_id,uint16 skill_id,int account_id) { - struct map_session_data *sd=map_id2sd(account_id); + struct map_session_data *sd=iMap->id2sd(account_id); struct guild *g=guild->search(guild_id); int i; if(g==NULL) @@ -1363,7 +1363,7 @@ int guild_skillupack(int guild_id,uint16 skill_id,int account_id) void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) { struct skill_unit_group* group = NULL; int type = status_skill2sc(skill_id); - if( !(battle_config.guild_aura&((agit_flag || agit2_flag)?2:1)) && + if( !(battle_config.guild_aura&((iMap->agit_flag || iMap->agit2_flag)?2:1)) && !(battle_config.guild_aura&(map_flag_gvg2(sd->bl.m)?8:4)) ) return; if( !skill_lv ) @@ -1436,7 +1436,7 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd) struct guild *g[2]; int i; - if(agit_flag || agit2_flag) { // Disable alliance creation during woe [Valaris] + if(iMap->agit_flag || iMap->agit2_flag) { // Disable alliance creation during woe [Valaris] clif->message(sd->fd,msg_txt(676)); //"Alliances cannot be made during Guild Wars!" return 0; } // end addition [Valaris] @@ -1494,7 +1494,7 @@ int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag) struct map_session_data *tsd; nullpo_ret(sd); - tsd= map_id2sd( account_id ); + tsd= iMap->id2sd( account_id ); if (!tsd) { //Character left? Cancel alliance. clif->guild_allianceack(sd,3); return 0; @@ -1554,7 +1554,7 @@ int guild_delalliance(struct map_session_data *sd,int guild_id,int flag) { nullpo_ret(sd); - if(agit_flag || agit2_flag) { // Disable alliance breaking during woe [Valaris] + if(iMap->agit_flag || iMap->agit2_flag) { // Disable alliance breaking during woe [Valaris] clif->message(sd->fd,msg_txt(677)); //"Alliances cannot be broken during Guild Wars!" return 0; } // end addition [Valaris] @@ -1592,7 +1592,7 @@ int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd) clif->guild_oppositionack(sd,2); return 0; } - if(agit_flag || agit2_flag) // Prevent the changing of alliances to oppositions during WoE. + if(iMap->agit_flag || iMap->agit2_flag) // Prevent the changing of alliances to oppositions during WoE. return 0; //Change alliance to opposition. intif_guild_alliance( sd->status.guild_id,tsd->status.guild_id, @@ -1621,8 +1621,8 @@ int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id guild_id[1] = guild_id2; guild_name[0] = name1; guild_name[1] = name2; - sd[0] = map_id2sd(account_id1); - sd[1] = map_id2sd(account_id2); + sd[0] = iMap->id2sd(account_id1); + sd[1] = iMap->id2sd(account_id2); g[0]=guild->search(guild_id1); g[1]=guild->search(guild_id2); @@ -1696,7 +1696,7 @@ int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id */ int guild_broken_sub(DBKey key, DBData *data, va_list ap) { - struct guild *g = DB->data2ptr(data); + struct guild *g = iDB->data2ptr(data); int guild_id=va_arg(ap,int); int i,j; struct map_session_data *sd=NULL; @@ -1721,7 +1721,7 @@ int guild_broken_sub(DBKey key, DBData *data, va_list ap) */ int castle_guild_broken_sub(DBKey key, DBData *data, va_list ap) { - struct guild_castle *gc = DB->data2ptr(data); + struct guild_castle *gc = iDB->data2ptr(data); int guild_id = va_arg(ap, int); nullpo_ret(gc); @@ -1926,7 +1926,7 @@ int guild_castledatasave(int castle_id, int index, int value) struct mob_data *gd; gc->guild_id = value; for (i = 0; i < MAX_GUARDIANS; i++) - if (gc->guardian[i].visible && (gd = map_id2md(gc->guardian[i].id)) != NULL) + if (gc->guardian[i].visible && (gd = iMap->id2md(gc->guardian[i].id)) != NULL) mob_guardian_guildchange(gd); break; } @@ -1938,7 +1938,7 @@ int guild_castledatasave(int castle_id, int index, int value) struct mob_data *gd; gc->defense = value; for (i = 0; i < MAX_GUARDIANS; i++) - if (gc->guardian[i].visible && (gd = map_id2md(gc->guardian[i].id)) != NULL) + if (gc->guardian[i].visible && (gd = iMap->id2md(gc->guardian[i].id)) != NULL) status_calc_mob(gd, 0); break; } @@ -2149,7 +2149,7 @@ void guild_flag_remove(struct npc_data *nd) { */ static int eventlist_db_final(DBKey key, DBData *data, va_list ap) { struct eventlist *next = NULL; - struct eventlist *current = DB->data2ptr(data); + struct eventlist *current = iDB->data2ptr(data); while (current != NULL) { next = current->next; aFree(current); @@ -2162,7 +2162,7 @@ static int eventlist_db_final(DBKey key, DBData *data, va_list ap) { * @see DBApply */ static int guild_expcache_db_final(DBKey key, DBData *data, va_list ap) { - ers_free(expcache_ers, DB->data2ptr(data)); + ers_free(expcache_ers, iDB->data2ptr(data)); return 0; } @@ -2170,7 +2170,7 @@ static int guild_expcache_db_final(DBKey key, DBData *data, va_list ap) { * @see DBApply */ static int guild_castle_db_final(DBKey key, DBData *data, va_list ap) { - struct guild_castle* gc = DB->data2ptr(data); + struct guild_castle* gc = iDB->data2ptr(data); if( gc->temp_guardians ) aFree(gc->temp_guardians); aFree(gc); @@ -2197,15 +2197,15 @@ void do_init_guild(void) { guild_flags_count = 0; - sv->readdb(db_path, "castle_db.txt", ',', 4, 5, -1, &guild_read_castledb); + sv->readdb(iMap->db_path, "castle_db.txt", ',', 4, 5, -1, &guild_read_castledb); memset(guild_skill_tree,0,sizeof(guild_skill_tree)); - sv->readdb(db_path, "guild_skill_tree.txt", ',', 2+MAX_GUILD_SKILL_REQUIRE*2, 2+MAX_GUILD_SKILL_REQUIRE*2, -1, &guild_read_guildskill_tree_db); //guild skill tree [Komurka] + sv->readdb(iMap->db_path, "guild_skill_tree.txt", ',', 2+MAX_GUILD_SKILL_REQUIRE*2, 2+MAX_GUILD_SKILL_REQUIRE*2, -1, &guild_read_guildskill_tree_db); //guild skill tree [Komurka] - add_timer_func_list(guild_payexp_timer,"guild_payexp_timer"); - add_timer_func_list(guild_send_xy_timer, "guild_send_xy_timer"); - add_timer_interval(gettick()+GUILD_PAYEXP_INVERVAL,guild_payexp_timer,0,0,GUILD_PAYEXP_INVERVAL); - add_timer_interval(gettick()+GUILD_SEND_XY_INVERVAL,guild_send_xy_timer,0,0,GUILD_SEND_XY_INVERVAL); + iTimer->add_timer_func_list(guild_payexp_timer,"guild_payexp_timer"); + iTimer->add_timer_func_list(guild_send_xy_timer, "guild_send_xy_timer"); + iTimer->add_timer_interval(iTimer->gettick()+GUILD_PAYEXP_INVERVAL,guild_payexp_timer,0,0,GUILD_PAYEXP_INVERVAL); + iTimer->add_timer_interval(iTimer->gettick()+GUILD_SEND_XY_INVERVAL,guild_send_xy_timer,0,0,GUILD_SEND_XY_INVERVAL); } void do_final_guild(void) { diff --git a/src/map/homunculus.c b/src/map/homunculus.c index e306e7f60..9c18b9811 100644 --- a/src/map/homunculus.c +++ b/src/map/homunculus.c @@ -402,7 +402,7 @@ bool homunculus_evolve(struct homun_data *hd) { hom->intimacy = 500; unit_remove_map(&hd->bl, CLR_OUTSIGHT); - map_addblock(&hd->bl); + iMap->addblock(&hd->bl); clif->spawn(&hd->bl); clif->emotion(&sd->bl, E_NO1); @@ -414,7 +414,7 @@ bool homunculus_evolve(struct homun_data *hd) { status_calc_homunculus(hd,1); if (!(battle_config.hom_setting&0x2)) - skill->unit_move(&sd->hd->bl,gettick(),1); // apply land skills immediately + skill->unit_move(&sd->hd->bl,iTimer->gettick(),1); // apply land skills immediately return true; } @@ -446,7 +446,7 @@ bool homunculus_mutate(struct homun_data *hd, int homun_id) { } unit_remove_map(&hd->bl, CLR_OUTSIGHT); - map_addblock(&hd->bl); + iMap->addblock(&hd->bl); clif->spawn(&hd->bl); clif->emotion(&sd->bl, E_NO1); @@ -461,7 +461,7 @@ bool homunculus_mutate(struct homun_data *hd, int homun_id) { status_calc_homunculus(hd,1); if (!(battle_config.hom_setting&0x2)) - skill->unit_move(&sd->hd->bl,gettick(),1); // apply land skills immediately + skill->unit_move(&sd->hd->bl,iTimer->gettick(),1); // apply land skills immediately return true; } @@ -573,12 +573,12 @@ bool homunculus_feed(struct map_session_data *sd, struct homun_data *hd) { return false; foodID = hd->homunculusDB->foodID; - i = pc_search_inventory(sd,foodID); + i = iPc->search_inventory(sd,foodID); if(i < 0) { clif->hom_food(sd,foodID,0); return false; } - pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); + iPc->delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); if ( hd->homunculus.hunger >= 91 ) { homun->consume_intimacy(hd, 50); @@ -617,7 +617,7 @@ int homunculus_hunger_timer(int tid, unsigned int tick, int id, intptr_t data) { struct map_session_data *sd; struct homun_data *hd; - if(!(sd=map_id2sd(id)) || !sd->status.hom_id || !(hd=sd->hd)) + if(!(sd=iMap->id2sd(id)) || !sd->status.hom_id || !(hd=sd->hd)) return 1; if(hd->hungry_timer != tid){ @@ -645,14 +645,14 @@ int homunculus_hunger_timer(int tid, unsigned int tick, int id, intptr_t data) { } clif->send_homdata(sd,SP_HUNGRY,hd->homunculus.hunger); - hd->hungry_timer = add_timer(tick+hd->homunculusDB->hungryDelay,homun->hunger_timer,sd->bl.id,0); //simple Fix albator + hd->hungry_timer = iTimer->add_timer(tick+hd->homunculusDB->hungryDelay,homun->hunger_timer,sd->bl.id,0); //simple Fix albator return 0; } void homunculus_hunger_timer_delete(struct homun_data *hd) { nullpo_retv(hd); if(hd->hungry_timer != INVALID_TIMER) { - delete_timer(hd->hungry_timer,homun->hunger_timer); + iTimer->delete_timer(hd->hungry_timer,homun->hunger_timer); hd->hungry_timer = INVALID_TIMER; } } @@ -754,7 +754,7 @@ bool homunculus_create(struct map_session_data *sd, struct s_homunculus *hom) { hd->bl.x = hd->ud.to_x; hd->bl.y = hd->ud.to_y; - map_addiddb(&hd->bl); + iMap->addiddb(&hd->bl); status_calc_homunculus(hd,1); hd->hungry_timer = INVALID_TIMER; @@ -763,7 +763,7 @@ bool homunculus_create(struct map_session_data *sd, struct s_homunculus *hom) { void homunculus_init_timers(struct homun_data * hd) { if (hd->hungry_timer == INVALID_TIMER) - hd->hungry_timer = add_timer(gettick()+hd->homunculusDB->hungryDelay,homun->hunger_timer,hd->master->bl.id,0); + hd->hungry_timer = iTimer->add_timer(iTimer->gettick()+hd->homunculusDB->hungryDelay,homun->hunger_timer,hd->master->bl.id,0); hd->regen.state.block = 0; //Restore HP/SP block. } @@ -788,7 +788,7 @@ bool homunculus_call(struct map_session_data *sd) { hd->bl.x = sd->bl.x; hd->bl.y = sd->bl.y; hd->bl.m = sd->bl.m; - map_addblock(&hd->bl); + iMap->addblock(&hd->bl); clif->spawn(&hd->bl); clif->send_homdata(sd,SP_ACK,0); clif->hominfo(sd,hd,1); @@ -808,7 +808,7 @@ bool homunculus_recv_data(int account_id, struct s_homunculus *sh, int flag) { struct map_session_data *sd; struct homun_data *hd; - sd = map_id2sd(account_id); + sd = iMap->id2sd(account_id); if(!sd) return false; if (sd->status.char_id != sh->char_id) { @@ -834,7 +834,7 @@ bool homunculus_recv_data(int account_id, struct s_homunculus *sh, int flag) { if(hd && hd->homunculus.hp && !hd->homunculus.vaporize && hd->bl.prev == NULL && sd->bl.prev != NULL) { enum homun_type htype = homun->class2type(hd->homunculus.class_); - map_addblock(&hd->bl); + iMap->addblock(&hd->bl); clif->spawn(&hd->bl); clif->send_homdata(sd,SP_ACK,0); clif->hominfo(sd,hd,1); @@ -919,7 +919,7 @@ bool homunculus_ressurect(struct map_session_data* sd, unsigned char per, short hd->bl.m = sd->bl.m; hd->bl.x = x; hd->bl.y = y; - map_addblock(&hd->bl); + iMap->addblock(&hd->bl); clif->spawn(&hd->bl); } status_revive(&hd->bl, per, 0); @@ -1127,14 +1127,14 @@ void homunculus_read_db(void) { if( i > 0 ) { char path[256]; - sprintf(path, "%s/%s", db_path, filename[i]); + sprintf(path, "%s/%s", iMap->db_path, filename[i]); if( !exists(path) ) { continue; } } - sv->readdb(db_path, filename[i], ',', 50, 50, MAX_HOMUNCULUS_CLASS, homun->read_db_sub); + sv->readdb(iMap->db_path, filename[i], ',', 50, 50, MAX_HOMUNCULUS_CLASS, homun->read_db_sub); } } @@ -1180,7 +1180,7 @@ bool homunculus_read_skill_db_sub(char* split[], int columns, int current) { void homunculus_skill_db_read(void) { memset(homun->skill_tree,0,sizeof(homun->skill_tree)); - sv->readdb(db_path, "homun_skill_tree.txt", ',', 13, 15, -1, homun->read_skill_db_sub); + sv->readdb(iMap->db_path, "homun_skill_tree.txt", ',', 13, 15, -1, homun->read_skill_db_sub); } @@ -1194,7 +1194,7 @@ void homunculus_exp_db_read(void) { memset(homun->exptable,0,sizeof(homun->exptable)); for(i = 0; i < 2; i++) { - sprintf(line, "%s/%s", db_path, filename[i]); + sprintf(line, "%s/%s", iMap->db_path, filename[i]); if( (fp=fopen(line,"r")) == NULL) { if(i != 0) continue; @@ -1233,7 +1233,7 @@ void do_init_homunculus(void) { homun->exp_db_read(); homun->skill_db_read(); // Add homunc timer function to timer func list [Toms] - add_timer_func_list(homun->hunger_timer, "homunculus_hunger_timer"); + iTimer->add_timer_func_list(homun->hunger_timer, "homunculus_hunger_timer"); //Stock view data for homuncs memset(&homun->viewdb, 0, sizeof(homun->viewdb)); diff --git a/src/map/instance.c b/src/map/instance.c index 637e768c9..def0a43a8 100644 --- a/src/map/instance.c +++ b/src/map/instance.c @@ -56,7 +56,7 @@ int instance_create(int owner_id, const char *name, enum instance_owner_type typ case IOT_NONE: break; case IOT_CHAR: - if( ( sd = map_id2sd(owner_id) ) == NULL ) { + if( ( sd = iMap->id2sd(owner_id) ) == NULL ) { ShowError("instance_create: character %d not found for instance '%s'.\n", owner_id, name); return -2; } @@ -64,7 +64,7 @@ int instance_create(int owner_id, const char *name, enum instance_owner_type typ icptr = &sd->instances; break; case IOT_PARTY: - if( ( p = party_search(owner_id) ) == NULL ) { + if( ( p = iParty->search(owner_id) ) == NULL ) { ShowError("instance_create: party %d not found for instance '%s'.\n", owner_id, name); return -2; } @@ -140,7 +140,7 @@ int instance_create(int owner_id, const char *name, enum instance_owner_type typ * Add a map to the instance using src map "name" *--------------------------------------*/ int instance_add_map(const char *name, int instance_id, bool usebasename, const char *map_name) { - int16 m = map_mapname2mapid(name); + int16 m = iMap->mapname2mapid(name); int i, im = -1; size_t num_cell, size; @@ -162,17 +162,17 @@ int instance_add_map(const char *name, int instance_id, bool usebasename, const return -4; } - ARR_FIND( instance->start_id, map_num, i, !map[i].name[0] ); // Searching for a Free Map + ARR_FIND( instance->start_id, iMap->map_num, i, !map[i].name[0] ); // Searching for a Free Map - if( i < map_num ) + if( i < iMap->map_num ) im = i; // Unused map found (old instance) else { - im = map_num; // Using next map index - RECREATE(map,struct map_data,++map_num); + im = iMap->map_num; // Using next map index + RECREATE(map,struct map_data,++iMap->map_num); } if( map[m].cell == (struct mapcell *)0xdeadbeaf ) - map_cellfromcache(&map[m]); + iMap->cellfromcache(&map[m]); memcpy( &map[im], &map[m], sizeof(struct map_data) ); // Copy source map if( map_name != NULL ) { @@ -213,7 +213,7 @@ int instance_add_map(const char *name, int instance_id, bool usebasename, const RECREATE(instances[instance_id].map, unsigned short, ++instances[instance_id].num_map); instances[instance_id].map[instances[instance_id].num_map - 1] = im; // Attach to actual instance - map_addmap2db(&map[im]); + iMap->addmap2db(&map[im]); return im; } @@ -280,7 +280,7 @@ void instance_init(int instance_id) { return; // nothing to do for( i = 0; i < instances[instance_id].num_map; i++ ) - map_foreachinmap(instance_map_npcsub, map[instances[instance_id].map[i]].instance_src_map, BL_NPC, instances[instance_id].map[i]); + iMap->foreachinmap(instance_map_npcsub, map[instances[instance_id].map[i]].instance_src_map, BL_NPC, instances[instance_id].map[i]); instances[instance_id].state = INSTANCE_BUSY; } @@ -295,7 +295,7 @@ int instance_del_load(struct map_session_data* sd, va_list args) { if( !sd || sd->bl.m != m ) return 0; - pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_OUTSIGHT); + iPc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_OUTSIGHT); return 1; } @@ -305,7 +305,7 @@ int instance_cleanup_sub(struct block_list *bl, va_list ap) { switch(bl->type) { case BL_PC: - map_quit((struct map_session_data *) bl); + iMap->quit((struct map_session_data *) bl); break; case BL_NPC: npc_unload((struct npc_data *)bl,true); @@ -317,7 +317,7 @@ int instance_cleanup_sub(struct block_list *bl, va_list ap) { //There is no need for this, the pet is removed together with the player. [Skotlex] break; case BL_ITEM: - map_clearflooritem(bl); + iMap->clearflooritem(bl); break; case BL_SKILL: skill->delunit((struct skill_unit *) bl); @@ -338,11 +338,11 @@ void instance_del_map(int16 m) { return; } - map_foreachpc(instance_del_load, m); - map_foreachinmap(instance_cleanup_sub, m, BL_ALL); + iMap->map_foreachpc(instance_del_load, m); + iMap->foreachinmap(instance_cleanup_sub, m, BL_ALL); if( map[m].mob_delete_timer != INVALID_TIMER ) - delete_timer(map[m].mob_delete_timer, map_removemobs_timer); + iTimer->delete_timer(map[m].mob_delete_timer, iMap->removemobs_timer); mapindex_removemap( map[m].index ); @@ -368,7 +368,7 @@ void instance_del_map(int16 m) { if( map[m].channel ) clif->chsys_delete(map[m].channel); - map_removemapdb(&map[m]); + iMap->removemapdb(&map[m]); memset(&map[m], 0x00, sizeof(map[0])); map[m].instance_id = -1; map[m].mob_delete_timer = INVALID_TIMER; @@ -409,14 +409,14 @@ void instance_destroy(int instance_id) { case IOT_NONE: break; case IOT_CHAR: - if( ( sd = map_id2sd(instances[instance_id].owner_id) ) == NULL ) { + if( ( sd = iMap->id2sd(instances[instance_id].owner_id) ) == NULL ) { break; } iptr = sd->instance; icptr = &sd->instances; break; case IOT_PARTY: - if( ( p = party_search(instances[instance_id].owner_id) ) == NULL ) { + if( ( p = iParty->search(instances[instance_id].owner_id) ) == NULL ) { break; } iptr = p->instance; @@ -449,9 +449,9 @@ void instance_destroy(int instance_id) { db_destroy(instances[instance_id].vars); if( instances[instance_id].progress_timer != INVALID_TIMER ) - delete_timer( instances[instance_id].progress_timer, instance_destroy_timer); + iTimer->delete_timer( instances[instance_id].progress_timer, instance_destroy_timer); if( instances[instance_id].idle_timer != INVALID_TIMER ) - delete_timer( instances[instance_id].idle_timer, instance_destroy_timer); + iTimer->delete_timer( instances[instance_id].idle_timer, instance_destroy_timer); instances[instance_id].vars = NULL; @@ -475,13 +475,13 @@ void instance_check_idle(int instance_id) { idle = false; if( instances[instance_id].idle_timer != INVALID_TIMER && !idle ) { - delete_timer(instances[instance_id].idle_timer, instance_destroy_timer); + iTimer->delete_timer(instances[instance_id].idle_timer, instance_destroy_timer); instances[instance_id].idle_timer = INVALID_TIMER; instances[instance_id].idle_timeout = 0; clif->instance(instance_id, 3, 0); // Notify instance users normal instance expiration } else if( instances[instance_id].idle_timer == INVALID_TIMER && idle ) { instances[instance_id].idle_timeout = now + instances[instance_id].idle_timeoutval; - instances[instance_id].idle_timer = add_timer( gettick() + instances[instance_id].idle_timeoutval * 1000, instance_destroy_timer, instance_id, 0); + instances[instance_id].idle_timer = iTimer->add_timer( iTimer->gettick() + instances[instance_id].idle_timeoutval * 1000, instance_destroy_timer, instance_id, 0); clif->instance(instance_id, 4, 0); // Notify instance users it will be destroyed of no user join it again in "X" time } } @@ -497,13 +497,13 @@ void instance_set_timeout(int instance_id, unsigned int progress_timeout, unsign return; if( instances[instance_id].progress_timer != INVALID_TIMER ) - delete_timer( instances[instance_id].progress_timer, instance_destroy_timer); + iTimer->delete_timer( instances[instance_id].progress_timer, instance_destroy_timer); if( instances[instance_id].idle_timer != INVALID_TIMER ) - delete_timer( instances[instance_id].idle_timer, instance_destroy_timer); + iTimer->delete_timer( instances[instance_id].idle_timer, instance_destroy_timer); if( progress_timeout ) { instances[instance_id].progress_timeout = now + progress_timeout; - instances[instance_id].progress_timer = add_timer( gettick() + progress_timeout * 1000, instance_destroy_timer, instance_id, 0); + instances[instance_id].progress_timer = iTimer->add_timer( iTimer->gettick() + progress_timeout * 1000, instance_destroy_timer, instance_id, 0); } else { instances[instance_id].progress_timeout = 0; instances[instance_id].progress_timer = INVALID_TIMER; @@ -532,9 +532,9 @@ void instance_check_kick(struct map_session_data *sd) { clif->instance_leave(sd->fd); if( map[m].instance_id >= 0 ) { // User was on the instance map if( map[m].save.map ) - pc_setpos(sd, map[m].save.map, map[m].save.x, map[m].save.y, CLR_TELEPORT); + iPc->setpos(sd, map[m].save.map, map[m].save.x, map[m].save.y, CLR_TELEPORT); else - pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT); + iPc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT); } } @@ -549,7 +549,7 @@ void do_final_instance(void) { } void do_init_instance(void) { - add_timer_func_list(instance_destroy_timer, "instance_destroy_timer"); + iTimer->add_timer_func_list(instance_destroy_timer, "instance_destroy_timer"); } void instance_defaults(void) { diff --git a/src/map/intif.c b/src/map/intif.c index 9e6403f10..607300e57 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -467,7 +467,7 @@ int intif_party_changemap(struct map_session_data *sd,int online) if(!sd) return 0; - if( (m=map_mapindex2mapid(sd->mapindex)) >= 0 && map[m].instance_id >= 0 ) + if( (m=iMap->mapindex2mapid(sd->mapindex)) >= 0 && map[m].instance_id >= 0 ) mapindex = map[map[m].instance_src_map].index; else mapindex = sd->mapindex; @@ -862,7 +862,7 @@ int intif_parse_WisMessage(int fd) id=RFIFOL(fd,4); safestrncpy(name, (char*)RFIFOP(fd,32), NAME_LENGTH); - sd = map_nick2sd(name); + sd = iMap->nick2sd(name); if(sd == NULL || strcmp(sd->status.name, name) != 0) { //Not found intif_wis_replay(id,1); @@ -896,7 +896,7 @@ int intif_parse_WisEnd(int fd) if (battle_config.etc_log) ShowInfo("intif_parse_wisend: player: %s, flag: %d\n", RFIFOP(fd,2), RFIFOB(fd,26)); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target - sd = (struct map_session_data *)map_nick2sd((char *) RFIFOP(fd,2)); + sd = (struct map_session_data *)iMap->nick2sd((char *) RFIFOP(fd,2)); if (sd != NULL) clif->wis_end(sd->fd, RFIFOB(fd,26)); @@ -935,7 +935,7 @@ int mapif_parse_WisToGM(int fd) safestrncpy(Wisp_name, (char*)RFIFOP(fd,4), NAME_LENGTH); safestrncpy(message, (char*)RFIFOP(fd,32), mes_len); // information is sent to all online GM - map_foreachpc(mapif_parse_WisToGM_sub, permission, Wisp_name, message, mes_len); + iMap->map_foreachpc(mapif_parse_WisToGM_sub, permission, Wisp_name, message, mes_len); if (message != mbuf) aFree(message); @@ -954,7 +954,7 @@ int intif_parse_Registers(int fd) if (node) sd = node->sd; else { //Normally registries should arrive for in log-in chars. - sd = map_id2sd(account_id); + sd = iMap->id2sd(account_id); if (sd && RFIFOB(fd,12) == 3 && sd->status.char_id != char_id) sd = NULL; //Character registry from another character. } @@ -993,7 +993,7 @@ int intif_parse_Registers(int fd) *qty = j; if (flag && sd->save_reg.global_num > -1 && sd->save_reg.account_num > -1 && sd->save_reg.account2_num > -1) - pc_reg_received(sd); //Received all registry values, execute init scripts and what-not. [Skotlex] + iPc->reg_received(sd); //Received all registry values, execute init scripts and what-not. [Skotlex] return 1; } @@ -1006,7 +1006,7 @@ int intif_parse_LoadGuildStorage(int fd) guild_id = RFIFOL(fd,8); if(guild_id <= 0) return 1; - sd=map_id2sd( RFIFOL(fd,4) ); + sd=iMap->id2sd( RFIFOL(fd,4) ); if(sd==NULL){ ShowError("intif_parse_LoadGuildStorage: user not found %d\n",RFIFOL(fd,4)); return 1; @@ -1047,7 +1047,7 @@ int intif_parse_PartyCreated(int fd) { if(battle_config.etc_log) ShowInfo("intif: party created by account %d\n\n", RFIFOL(fd,2)); - party_created(RFIFOL(fd,2), RFIFOL(fd,6),RFIFOB(fd,10),RFIFOL(fd,11), (char *)RFIFOP(fd,15)); + iParty->created(RFIFOL(fd,2), RFIFOL(fd,6),RFIFOB(fd,10),RFIFOL(fd,11), (char *)RFIFOP(fd,15)); return 0; } @@ -1056,13 +1056,13 @@ int intif_parse_PartyInfo(int fd) { if( RFIFOW(fd,2) == 12 ){ ShowWarning("intif: party noinfo (char_id=%d party_id=%d)\n", RFIFOL(fd,4), RFIFOL(fd,8)); - party_recv_noinfo(RFIFOL(fd,8), RFIFOL(fd,4)); + iParty->recv_noinfo(RFIFOL(fd,8), RFIFOL(fd,4)); return 0; } if( RFIFOW(fd,2) != 8+sizeof(struct party) ) ShowError("intif: party info : data size error (char_id=%d party_id=%d packet_len=%d expected_len=%d)\n", RFIFOL(fd,4), RFIFOL(fd,8), RFIFOW(fd,2), 8+sizeof(struct party)); - party_recv_info((struct party *)RFIFOP(fd,8), RFIFOL(fd,4)); + iParty->recv_info((struct party *)RFIFOP(fd,8), RFIFOL(fd,4)); return 0; } @@ -1071,14 +1071,14 @@ int intif_parse_PartyMemberAdded(int fd) { if(battle_config.etc_log) ShowInfo("intif: party member added Party (%d), Account(%d), Char(%d)\n",RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10)); - party_member_added(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10), RFIFOB(fd, 14)); + iParty->member_added(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10), RFIFOB(fd, 14)); return 0; } // ACK changing party option int intif_parse_PartyOptionChanged(int fd) { - party_optionchanged(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOW(fd,10),RFIFOW(fd,12),RFIFOB(fd,14)); + iParty->optionchanged(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOW(fd,10),RFIFOW(fd,12),RFIFOB(fd,14)); return 0; } @@ -1087,28 +1087,28 @@ int intif_parse_PartyMemberWithdraw(int fd) { if(battle_config.etc_log) ShowInfo("intif: party member withdraw: Party(%d), Account(%d), Char(%d)\n",RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10)); - party_member_withdraw(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10)); + iParty->member_withdraw(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10)); return 0; } // ACK party break int intif_parse_PartyBroken(int fd) { - party_broken(RFIFOL(fd,2)); + iParty->broken(RFIFOL(fd,2)); return 0; } // ACK party on new map int intif_parse_PartyMove(int fd) { - party_recv_movemap(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOW(fd,14),RFIFOB(fd,16),RFIFOW(fd,17)); + iParty->recv_movemap(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOW(fd,14),RFIFOB(fd,16),RFIFOW(fd,17)); return 0; } // ACK party messages int intif_parse_PartyMessage(int fd) { - party_recv_message(RFIFOL(fd,4),RFIFOL(fd,8),(char *) RFIFOP(fd,12),RFIFOW(fd,2)-12); + iParty->recv_message(RFIFOL(fd,4),RFIFOL(fd,8),(char *) RFIFOP(fd,12),RFIFOW(fd,2)-12); return 0; } @@ -1322,7 +1322,7 @@ int intif_parse_DeletePetOk(int fd) int intif_parse_ChangeNameOk(int fd) { struct map_session_data *sd = NULL; - if((sd=map_id2sd(RFIFOL(fd,2)))==NULL || + if((sd=iMap->id2sd(RFIFOL(fd,2)))==NULL || sd->status.char_id != RFIFOL(fd,6)) return 0; @@ -1405,7 +1405,7 @@ int intif_parse_questlog(int fd) { int char_id = RFIFOL(fd, 4); int i; - TBL_PC * sd = map_charid2sd(char_id); + TBL_PC * sd = iMap->charid2sd(char_id); //User not online anymore if(!sd) @@ -1442,7 +1442,7 @@ int intif_parse_questlog(int fd) int intif_parse_questsave(int fd) { int cid = RFIFOL(fd, 2); - TBL_PC *sd = map_id2sd(cid); + TBL_PC *sd = iMap->id2sd(cid); if( !RFIFOB(fd, 6) ) ShowError("intif_parse_questsave: Failed to save quest(s) for character %d!\n", cid); @@ -1500,7 +1500,7 @@ int intif_parse_Mail_inboxreceived(int fd) struct map_session_data *sd; unsigned char flag = RFIFOB(fd,8); - sd = map_charid2sd(RFIFOL(fd,4)); + sd = iMap->charid2sd(RFIFOL(fd,4)); if (sd == NULL) { @@ -1566,7 +1566,7 @@ int intif_parse_Mail_getattach(int fd) struct item item; int zeny = RFIFOL(fd,8); - sd = map_charid2sd( RFIFOL(fd,4) ); + sd = iMap->charid2sd( RFIFOL(fd,4) ); if (sd == NULL) { @@ -1608,7 +1608,7 @@ int intif_parse_Mail_delete(int fd) int mail_id = RFIFOL(fd,6); bool failed = RFIFOB(fd,10); - struct map_session_data *sd = map_charid2sd(char_id); + struct map_session_data *sd = iMap->charid2sd(char_id); if (sd == NULL) { ShowError("intif_parse_Mail_delete: char not found %d\n", char_id); @@ -1651,7 +1651,7 @@ int intif_Mail_return(int char_id, int mail_id) int intif_parse_Mail_return(int fd) { - struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2)); + struct map_session_data *sd = iMap->charid2sd(RFIFOL(fd,2)); int mail_id = RFIFOL(fd,6); short fail = RFIFOB(fd,10); @@ -1714,7 +1714,7 @@ static void intif_parse_Mail_send(int fd) fail = (msg.id == 0); // notify sender - sd = map_charid2sd(msg.send_id); + sd = iMap->charid2sd(msg.send_id); if( sd != NULL ) { if( fail ) @@ -1722,7 +1722,7 @@ static void intif_parse_Mail_send(int fd) else { clif->mail_send(sd->fd, false); - if( save_settings&16 ) + if( iMap->save_settings&16 ) chrif_save(sd, 0); } } @@ -1730,7 +1730,7 @@ static void intif_parse_Mail_send(int fd) static void intif_parse_Mail_new(int fd) { - struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2)); + struct map_session_data *sd = iMap->charid2sd(RFIFOL(fd,2)); int mail_id = RFIFOL(fd,6); const char* sender_name = (char*)RFIFOP(fd,10); const char* title = (char*)RFIFOP(fd,34); @@ -1768,7 +1768,7 @@ int intif_Auction_requestlist(int char_id, short type, int price, const char* se static void intif_parse_Auction_results(int fd) { - struct map_session_data *sd = map_charid2sd(RFIFOL(fd,4)); + struct map_session_data *sd = iMap->charid2sd(RFIFOL(fd,4)); short count = RFIFOW(fd,8); short pages = RFIFOW(fd,10); uint8* data = RFIFOP(fd,12); @@ -1807,13 +1807,13 @@ static void intif_parse_Auction_register(int fd) } memcpy(&auction, RFIFOP(fd,4), sizeof(struct auction_data)); - if( (sd = map_charid2sd(auction.seller_id)) == NULL ) + if( (sd = iMap->charid2sd(auction.seller_id)) == NULL ) return; if( auction.auction_id > 0 ) { clif->auction_message(sd->fd, 1); // Confirmation Packet ?? - if( save_settings&32 ) + if( iMap->save_settings&32 ) chrif_save(sd,0); } else @@ -1821,9 +1821,9 @@ static void intif_parse_Auction_register(int fd) int zeny = auction.hours*battle_config.auction_feeperhour; clif->auction_message(sd->fd, 4); - pc_additem(sd, &auction.item, auction.item.amount, LOG_TYPE_AUCTION); + iPc->additem(sd, &auction.item, auction.item.amount, LOG_TYPE_AUCTION); - pc_getzeny(sd, zeny, LOG_TYPE_AUCTION, NULL); + iPc->getzeny(sd, zeny, LOG_TYPE_AUCTION, NULL); } } @@ -1843,7 +1843,7 @@ int intif_Auction_cancel(int char_id, unsigned int auction_id) static void intif_parse_Auction_cancel(int fd) { - struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2)); + struct map_session_data *sd = iMap->charid2sd(RFIFOL(fd,2)); int result = RFIFOB(fd,6); if( sd == NULL ) @@ -1874,7 +1874,7 @@ int intif_Auction_close(int char_id, unsigned int auction_id) static void intif_parse_Auction_close(int fd) { - struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2)); + struct map_session_data *sd = iMap->charid2sd(RFIFOL(fd,2)); unsigned char result = RFIFOB(fd,6); if( sd == NULL ) @@ -1910,7 +1910,7 @@ int intif_Auction_bid(int char_id, const char* name, unsigned int auction_id, in static void intif_parse_Auction_bid(int fd) { - struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2)); + struct map_session_data *sd = iMap->charid2sd(RFIFOL(fd,2)); int bid = RFIFOL(fd,6); unsigned char result = RFIFOB(fd,10); @@ -1919,7 +1919,7 @@ static void intif_parse_Auction_bid(int fd) clif->auction_message(sd->fd, result); if( bid > 0 ) { - pc_getzeny(sd, bid, LOG_TYPE_AUCTION,NULL); + iPc->getzeny(sd, bid, LOG_TYPE_AUCTION,NULL); } if( result == 1 ) { // To update the list, display your buy list clif->pAuction_cancelreg(fd, sd); @@ -1930,7 +1930,7 @@ static void intif_parse_Auction_bid(int fd) // Used to send 'You have won the auction' and 'You failed to won the auction' messages static void intif_parse_Auction_message(int fd) { - struct map_session_data *sd = map_charid2sd(RFIFOL(fd,2)); + struct map_session_data *sd = iMap->charid2sd(RFIFOL(fd,2)); unsigned char result = RFIFOB(fd,6); if( sd == NULL ) diff --git a/src/map/irc-bot.c b/src/map/irc-bot.c index fea5f523a..7f03ed8d4 100644 --- a/src/map/irc-bot.c +++ b/src/map/irc-bot.c @@ -29,12 +29,12 @@ int irc_connect_timer(int tid, unsigned int tick, int id, intptr_t data) { opt.silent = 1; opt.setTimeo = 0; - ircbot->last_try = gettick(); + ircbot->last_try = iTimer->gettick(); if( ( ircbot->fd = make_connection(ircbot->ip,hChSys.irc_server_port,&opt) ) > 0 ){ session[ircbot->fd]->func_parse = ircbot->parse; session[ircbot->fd]->flag.server = 1; - add_timer(gettick() + 3000, ircbot->identify_timer, 0, 0); + iTimer->add_timer(iTimer->gettick() + 3000, ircbot->identify_timer, 0, 0); ircbot->isOn = true; } return 0; @@ -49,7 +49,7 @@ int irc_identify_timer(int tid, unsigned int tick, int id, intptr_t data) { sprintf(send_string, "NICK %s", hChSys.irc_nick); ircbot->send(send_string); - add_timer(gettick() + 3000, ircbot->join_timer, 0, 0); + iTimer->add_timer(iTimer->gettick() + 3000, ircbot->join_timer, 0, 0); return 0; } @@ -90,7 +90,7 @@ int irc_parse(int fd) { ircbot->isIn = false; ircbot->fails = 0; ircbot->ip = host2ip(hChSys.irc_server); - add_timer(gettick() + 120000, ircbot->connect_timer, 0, 0); + iTimer->add_timer(iTimer->gettick() + 120000, ircbot->connect_timer, 0, 0); return 0; } @@ -245,8 +245,8 @@ void irc_bot_init(void) { ircbot->isIn = false; ircbot->isOn = false; - add_timer_func_list(ircbot->connect_timer, "irc_connect_timer"); - add_timer(gettick() + 7000, ircbot->connect_timer, 0, 0); + iTimer->add_timer_func_list(ircbot->connect_timer, "irc_connect_timer"); + iTimer->add_timer(iTimer->gettick() + 7000, ircbot->connect_timer, 0, 0); } void irc_bot_final(void) { diff --git a/src/map/itemdb.c b/src/map/itemdb.c index 2a5fa48de..e0cb642fb 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -30,7 +30,7 @@ struct item_data dummy_item; //This is the default dummy item used for non-exist */ static int itemdb_searchname_sub(DBKey key, DBData *data, va_list ap) { - struct item_data *item = DB->data2ptr(data), **dst, **dst2; + struct item_data *item = iDB->data2ptr(data), **dst, **dst2; char *str; str=va_arg(ap,char *); dst=va_arg(ap,struct item_data **); @@ -83,7 +83,7 @@ struct item_data* itemdb_searchname(const char *str) */ static int itemdb_searchname_array_sub(DBKey key, DBData data, va_list ap) { - struct item_data *item = DB->data2ptr(&data); + struct item_data *item = iDB->data2ptr(&data); char *str; str=va_arg(ap,char *); if (item == &dummy_item) @@ -127,7 +127,7 @@ int itemdb_searchname_array(struct item_data** data, int size, const char *str) size -= count; db_count = itemdb_other->getall(itemdb_other, (DBData**)&db_data, size, itemdb_searchname_array_sub, str); for (i = 0; i < db_count; i++) - data[count++] = DB->data2ptr(db_data[i]); + data[count++] = iDB->data2ptr(db_data[i]); count += db_count; } return count; @@ -590,7 +590,7 @@ static void itemdb_read_itemgroup(void) { char path[256]; unsigned int count; - snprintf(path, 255, "%s/"DBPATH"item_group_db.txt", db_path); + snprintf(path, 255, "%s/"DBPATH"item_group_db.txt", iMap->db_path); memset(&itemgroup_db, 0, sizeof(itemgroup_db)); count = itemdb_read_itemgroup_sub(path); ShowStatus("Done reading '"CL_WHITE"%lu"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, "item_group_db.txt"); @@ -785,7 +785,7 @@ void itemdb_read_combos() { char path[256]; FILE* fp; - sprintf(path, "%s/%s", db_path, DBPATH"item_combo_db.txt"); + sprintf(path, "%s/%s", iMap->db_path, DBPATH"item_combo_db.txt"); if ((fp = fopen(path, "r")) == NULL) { ShowError("itemdb_read_combos: File not found \"%s\".\n", path); @@ -1110,7 +1110,7 @@ static int itemdb_readdb(void) char path[256]; FILE* fp; - sprintf(path, "%s/%s", db_path, filename[fi]); + sprintf(path, "%s/%s", iMap->db_path, filename[fi]); fp = fopen(path, "r"); if( fp == NULL ) { ShowWarning("itemdb_readdb: File not found \"%s\", skipping.\n", path); @@ -1226,11 +1226,11 @@ static int itemdb_read_sqldb(void) { const char* item_db_name[] = { #ifdef RENEWAL - item_db_re_db, + iMap->item_db_re_db, #else - item_db_db, + iMap->item_db_db, #endif - item_db2_db }; + iMap->item_db2_db }; int fi; for( fi = 0; fi < ARRAYLENGTH(item_db_name); ++fi ) { @@ -1318,19 +1318,19 @@ int itemdb_uid_load(){ *------------------------------------*/ static void itemdb_read(void) { - if (db_use_sqldbs) + if (iMap->db_use_sqldbs) itemdb_read_sqldb(); else itemdb_readdb(); itemdb_read_combos(); itemdb_read_itemgroup(); - sv->readdb(db_path, "item_avail.txt", ',', 2, 2, -1, &itemdb_read_itemavail); - sv->readdb(db_path, DBPATH"item_trade.txt", ',', 3, 3, -1, &itemdb_read_itemtrade); - sv->readdb(db_path, "item_delay.txt", ',', 2, 2, -1, &itemdb_read_itemdelay); - sv->readdb(db_path, "item_stack.txt", ',', 3, 3, -1, &itemdb_read_stack); - sv->readdb(db_path, DBPATH"item_buyingstore.txt", ',', 1, 1, -1, &itemdb_read_buyingstore); - sv->readdb(db_path, "item_nouse.txt", ',', 3, 3, -1, &itemdb_read_nouse); + sv->readdb(iMap->db_path, "item_avail.txt", ',', 2, 2, -1, &itemdb_read_itemavail); + sv->readdb(iMap->db_path, DBPATH"item_trade.txt", ',', 3, 3, -1, &itemdb_read_itemtrade); + sv->readdb(iMap->db_path, "item_delay.txt", ',', 2, 2, -1, &itemdb_read_itemdelay); + sv->readdb(iMap->db_path, "item_stack.txt", ',', 3, 3, -1, &itemdb_read_stack); + sv->readdb(iMap->db_path, DBPATH"item_buyingstore.txt", ',', 1, 1, -1, &itemdb_read_buyingstore); + sv->readdb(iMap->db_path, "item_nouse.txt", ',', 3, 3, -1, &itemdb_read_nouse); itemdb_uid_load(); } @@ -1376,7 +1376,7 @@ static void destroy_item_data(struct item_data* self, int free_self) */ static int itemdb_final_sub(DBKey key, DBData *data, va_list ap) { - struct item_data *id = DB->data2ptr(data); + struct item_data *id = iDB->data2ptr(data); if( id != &dummy_item ) destroy_item_data(id, 1); @@ -1435,7 +1435,7 @@ void itemdb_reload(void) iter = mapit_geteachpc(); for( sd = (struct map_session_data*)mapit->first(iter); mapit->exists(iter); sd = (struct map_session_data*)mapit->next(iter) ) { memset(sd->item_delay, 0, sizeof(sd->item_delay)); // reset item delays - pc_setinventorydata(sd); + iPc->setinventorydata(sd); /* clear combo bonuses */ if( sd->combos.count ) { aFree(sd->combos.bonus); @@ -1443,7 +1443,7 @@ void itemdb_reload(void) sd->combos.bonus = NULL; sd->combos.id = NULL; sd->combos.count = 0; - if( pc_load_combo(sd) > 0 ) + if( iPc->load_combo(sd) > 0 ) status_calc_pc(sd,0); } diff --git a/src/map/log.c b/src/map/log.c index f57b91a2a..8823a9a66 100644 --- a/src/map/log.c +++ b/src/map/log.c @@ -369,7 +369,7 @@ void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, return; } - if( logs->config.log_chat_woe_disable && ( agit_flag || agit2_flag ) ) + if( logs->config.log_chat_woe_disable && ( iMap->agit_flag || iMap->agit2_flag ) ) {// no chat logging during woe return; } diff --git a/src/map/mail.c b/src/map/mail.c index fa842b70f..ab3d78ed2 100644 --- a/src/map/mail.c +++ b/src/map/mail.c @@ -31,7 +31,7 @@ int mail_removeitem(struct map_session_data *sd, short flag) if( sd->mail.amount ) { if (flag) // Item send - pc_delitem(sd, sd->mail.index, sd->mail.amount, 1, 0, LOG_TYPE_MAIL); + iPc->delitem(sd, sd->mail.index, sd->mail.amount, 1, 0, LOG_TYPE_MAIL); else clif->additem(sd, sd->mail.index, sd->mail.amount, 0); } @@ -48,7 +48,7 @@ int mail_removezeny(struct map_session_data *sd, short flag) if (flag && sd->mail.zeny > 0) { //Zeny send - pc_payzeny(sd,sd->mail.zeny,LOG_TYPE_MAIL, NULL); + iPc->payzeny(sd,sd->mail.zeny,LOG_TYPE_MAIL, NULL); } sd->mail.zeny = 0; @@ -61,7 +61,7 @@ unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount) { return 1; if( idx == 0 ) { // Zeny Transfer - if( amount < 0 || !pc_can_give_items(sd) ) + if( amount < 0 || !iPc->can_give_items(sd) ) return 1; if( amount > sd->status.zeny ) @@ -78,8 +78,8 @@ unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount) { return 1; if( amount < 0 || amount > sd->status.inventory[idx].amount ) return 1; - if( !pc_can_give_items(sd) || sd->status.inventory[idx].expire_time || - !itemdb_canmail(&sd->status.inventory[idx],pc_get_group_level(sd)) ) + if( !iPc->can_give_items(sd) || sd->status.inventory[idx].expire_time || + !itemdb_canmail(&sd->status.inventory[idx],iPc->get_group_level(sd)) ) return 1; sd->mail.index = idx; @@ -131,13 +131,13 @@ void mail_getattachment(struct map_session_data* sd, int zeny, struct item* item { if( item->nameid > 0 && item->amount > 0 ) { - pc_additem(sd, item, item->amount, LOG_TYPE_MAIL); + iPc->additem(sd, item, item->amount, LOG_TYPE_MAIL); clif->mail_getattachment(sd->fd, 0); } if( zeny > 0 ) { //Zeny receive - pc_getzeny(sd, zeny,LOG_TYPE_MAIL, NULL); + iPc->getzeny(sd, zeny,LOG_TYPE_MAIL, NULL); } } @@ -161,12 +161,12 @@ void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg) if( msg->item.amount > 0 ) { // Item receive (due to failure) - pc_additem(sd, &msg->item, msg->item.amount, LOG_TYPE_MAIL); + iPc->additem(sd, &msg->item, msg->item.amount, LOG_TYPE_MAIL); } if( msg->zeny > 0 ) { - pc_getzeny(sd,msg->zeny,LOG_TYPE_MAIL, NULL); //Zeny receive (due to failure) + iPc->getzeny(sd,msg->zeny,LOG_TYPE_MAIL, NULL); //Zeny receive (due to failure) } clif->mail_send(sd->fd, true); @@ -175,7 +175,7 @@ void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg) // This function only check if the mail operations are valid bool mail_invalid_operation(struct map_session_data *sd) { - if( !map[sd->bl.m].flag.town && !pc_can_use_command(sd, "@mail") ) + if( !map[sd->bl.m].flag.town && !iPc->can_use_command(sd, "@mail") ) { ShowWarning("clif->parse_Mail: char '%s' trying to do invalid mail operations.\n", sd->status.name); return true; diff --git a/src/map/map.c b/src/map/map.c index 00f7a2976..496802d28 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -70,14 +70,7 @@ char map_server_pw[32] = "ragnarok"; char map_server_db[32] = "ragnarok"; Sql* mmysql_handle; -int db_use_sqldbs = 0; -char item_db_db[32] = "item_db"; -char item_db2_db[32] = "item_db2"; -char item_db_re_db[32] = "item_db_re"; -char mob_db_db[32] = "mob_db"; -char mob_db2_db[32] = "mob_db2"; -char mob_skill_db_db[32] = "mob_skill_db"; -char mob_skill_db2_db[32] = "mob_skill_db2"; +int map_port=0; // log database char log_db_ip[32] = "127.0.0.1"; @@ -87,15 +80,6 @@ char log_db_pw[32] = "ragnarok"; char log_db_db[32] = "log"; Sql* logmysql_handle; -char *INTER_CONF_NAME; -char *LOG_CONF_NAME; -char *MAP_CONF_NAME; -char *BATTLE_CONF_FILENAME; -char *ATCOMMAND_CONF_FILENAME; -char *SCRIPT_CONF_NAME; -char *MSG_CONF_NAME; -char *GRF_PATH_FILENAME; - // DBMap declaartion static DBMap* id_db=NULL; // int id -> struct block_list* static DBMap* pc_db=NULL; // int id -> struct map_session_data* @@ -117,16 +101,6 @@ static int block_free_count = 0, block_free_lock = 0; static struct block_list *bl_list[BL_LIST_MAX]; static int bl_list_count = 0; -int map_num = 0; -int map_port=0; - -int autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; -int minsave_interval = 100; -int save_settings = 0xFFFF; -int agit_flag = 0; -int agit2_flag = 0; -int night_flag = 0; // 0=day, 1=night [Yor] - struct charid_request { struct charid_request* next; int charid;// who want to be notified of the nick @@ -152,14 +126,6 @@ struct map_cache_map_info { int16 index2mapid[MAX_MAPINDEX]; -char db_path[256] = "db"; -char help_txt[256] = "conf/help.txt"; -char help2_txt[256] = "conf/help2.txt"; -char charhelp_txt[256] = "conf/charhelp.txt"; - -char wisp_server_name[NAME_LENGTH] = "Server"; // can be modified in char-server configuration file - -int enable_spy = 0; //To enable/disable @spy commands, which consume too much cpu time when sending packets. [Skotlex] int enable_grf = 0; //To enable/disable reading maps from GRF files, bypassing mapcache [blackhole89] /* [Ind/Hercules] */ @@ -167,8 +133,8 @@ struct eri *map_iterator_ers; char *map_cache_buffer = NULL; // Has the uncompressed gat data of all maps, so just one allocation has to be made /*========================================== - * server player count (of all mapservers) - *------------------------------------------*/ +* server player count (of all mapservers) +*------------------------------------------*/ void map_setusers(int users) { map_users = users; @@ -180,8 +146,8 @@ int map_getusers(void) } /*========================================== - * server player count (this mapserver only) - *------------------------------------------*/ +* server player count (this mapserver only) +*------------------------------------------*/ int map_usercount(void) { return pc_db->size(pc_db); @@ -189,8 +155,8 @@ int map_usercount(void) /*========================================== - * Attempt to free a map blocklist - *------------------------------------------*/ +* Attempt to free a map blocklist +*------------------------------------------*/ int map_freeblock (struct block_list *bl) { nullpo_retr(block_free_lock, bl); @@ -206,16 +172,16 @@ int map_freeblock (struct block_list *bl) return block_free_lock; } /*========================================== - * Lock blocklist, (prevent map_freeblock usage) - *------------------------------------------*/ +* Lock blocklist, (prevent iMap->freeblock usage) +*------------------------------------------*/ int map_freeblock_lock (void) { return ++block_free_lock; } /*========================================== - * Remove the lock on map_bl - *------------------------------------------*/ +* Remove the lock on map_bl +*------------------------------------------*/ int map_freeblock_unlock (void) { if ((--block_free_lock) == 0) { @@ -241,7 +207,7 @@ int map_freeblock_timer(int tid, unsigned int tick, int id, intptr_t data) if (block_free_lock > 0) { ShowError("map_freeblock_timer: block_free_lock(%d) is invalid.\n", block_free_lock); block_free_lock = 1; - map_freeblock_unlock(); + iMap->freeblock_unlock(); } return 0; @@ -251,16 +217,16 @@ int map_freeblock_timer(int tid, unsigned int tick, int id, intptr_t data) // blocklist // /*========================================== - * Handling of map_bl[] - * The adresse of bl_heal is set in bl->prev - *------------------------------------------*/ +* Handling of map_bl[] +* The adresse of bl_heal is set in bl->prev +*------------------------------------------*/ static struct block_list bl_head; #ifdef CELL_NOSTACK /*========================================== - * These pair of functions update the counter of how many objects - * lie on a tile. - *------------------------------------------*/ +* These pair of functions update the counter of how many objects +* lie on a tile. +*------------------------------------------*/ static void map_addblcell(struct block_list *bl) { if( bl->m<0 || bl->x<0 || bl->x>=map[bl->m].xs || bl->y<0 || bl->y>=map[bl->m].ys || !(bl->type&BL_CHAR) ) @@ -278,9 +244,9 @@ static void map_delblcell(struct block_list *bl) #endif /*========================================== - * Adds a block to the map. - * Returns 0 on success, 1 on failure (illegal coordinates). - *------------------------------------------*/ +* Adds a block to the map. +* Returns 0 on success, 1 on failure (illegal coordinates). +*------------------------------------------*/ int map_addblock(struct block_list* bl) { int16 m, x, y; @@ -296,9 +262,9 @@ int map_addblock(struct block_list* bl) m = bl->m; x = bl->x; y = bl->y; - if( m < 0 || m >= map_num ) + if( m < 0 || m >= iMap->map_num ) { - ShowError("map_addblock: invalid map id (%d), only %d are loaded.\n", m, map_num); + ShowError("map_addblock: invalid map id (%d), only %d are loaded.\n", m, iMap->map_num); return 1; } if( x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) @@ -329,14 +295,14 @@ int map_addblock(struct block_list* bl) } /*========================================== - * Removes a block from the map. - *------------------------------------------*/ +* Removes a block from the map. +*------------------------------------------*/ int map_delblock(struct block_list* bl) { int pos; nullpo_ret(bl); - // blocklist (2ways chainlist) + // blocklist (2ways chainlist) if (bl->prev == NULL) { if (bl->next != NULL) { // can't delete block (already at the begining of the chain) @@ -354,7 +320,7 @@ int map_delblock(struct block_list* bl) if (bl->next) bl->next->prev = bl->prev; if (bl->prev == &bl_head) { - //Since the head of the list, update the block_list map of [] + //Since the head of the list, update the block_list map of [] if (bl->type == BL_MOB) { map[bl->m].block_mob[pos] = bl->next; } else { @@ -370,10 +336,10 @@ int map_delblock(struct block_list* bl) } /*========================================== - * Moves a block a x/y target position. [Skotlex] - * Pass flag as 1 to prevent doing skill->unit_move checks - * (which are executed by default on BL_CHAR types) - *------------------------------------------*/ +* Moves a block a x/y target position. [Skotlex] +* Pass flag as 1 to prevent doing skill->unit_move checks +* (which are executed by default on BL_CHAR types) +*------------------------------------------*/ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick) { int x0 = bl->x, y0 = bl->y; @@ -394,7 +360,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick) skill->unit_move(bl,tick,2); status_change_end(bl, SC_CLOSECONFINE, INVALID_TIMER); status_change_end(bl, SC_CLOSECONFINE2, INVALID_TIMER); -// status_change_end(bl, SC_BLADESTOP, INVALID_TIMER); //Won't stop when you are knocked away, go figure... + // status_change_end(bl, SC_BLADESTOP, INVALID_TIMER); //Won't stop when you are knocked away, go figure... status_change_end(bl, SC_TATAMIGAESHI, INVALID_TIMER); status_change_end(bl, SC_MAGICROD, INVALID_TIMER); if (sc->data[SC_PROPERTYWALK] && @@ -403,13 +369,13 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick) } else if (bl->type == BL_NPC) npc_unsetcells((TBL_NPC*)bl); - if (moveblock) map_delblock(bl); + if (moveblock) iMap->delblock(bl); #ifdef CELL_NOSTACK else map_delblcell(bl); #endif bl->x = x1; bl->y = y1; - if (moveblock) map_addblock(bl); + if (moveblock) iMap->addblock(bl); #ifdef CELL_NOSTACK else map_addblcell(bl); #endif @@ -420,7 +386,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick) if( bl->type == BL_PC && ((TBL_PC*)bl)->shadowform_id ) {//Shadow Form Target Moving struct block_list *d_bl; - if( (d_bl = map_id2bl(((TBL_PC*)bl)->shadowform_id)) == NULL || !check_distance_bl(bl,d_bl,10) ) { + if( (d_bl = iMap->id2bl(((TBL_PC*)bl)->shadowform_id)) == NULL || !check_distance_bl(bl,d_bl,10) ) { if( d_bl ) status_change_end(d_bl,SC__SHADOWFORM,INVALID_TIMER); ((TBL_PC*)bl)->shadowform_id = 0; @@ -445,14 +411,14 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick) if( sc->data[SC__SHADOWFORM] ) {//Shadow Form Caster Moving struct block_list *d_bl; - if( (d_bl = map_id2bl(sc->data[SC__SHADOWFORM]->val2)) == NULL || !check_distance_bl(bl,d_bl,10) ) + if( (d_bl = iMap->id2bl(sc->data[SC__SHADOWFORM]->val2)) == NULL || !check_distance_bl(bl,d_bl,10) ) status_change_end(bl,SC__SHADOWFORM,INVALID_TIMER); } if (sc->data[SC_PROPERTYWALK] - && sc->data[SC_PROPERTYWALK]->val3 < skill->get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) - && map_find_skill_unit_oncell(bl,bl->x,bl->y,SO_ELECTRICWALK,NULL,0) == NULL - && map_find_skill_unit_oncell(bl,bl->x,bl->y,SO_FIREWALK,NULL,0) == NULL + && sc->data[SC_PROPERTYWALK]->val3 < skill->get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) + && iMap->find_skill_unit_oncell(bl,bl->x,bl->y,SO_ELECTRICWALK,NULL,0) == NULL + && iMap->find_skill_unit_oncell(bl,bl->x,bl->y,SO_FIREWALK,NULL,0) == NULL && skill->unitsetting(bl,sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2,x0, y0,0)) { sc->data[SC_PROPERTYWALK]->val3++; } @@ -478,8 +444,8 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick) } /*========================================== - * Counts specified number of objects on given cell. - *------------------------------------------*/ +* Counts specified number of objects on given cell. +*------------------------------------------*/ int map_count_oncell(int16 m, int16 x, int16 y, int type) { int bx,by; @@ -505,9 +471,9 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type) return count; } /* - * Looks for a skill unit on a given cell - * flag&1: runs battle_check_target check based on unit->group->target_flag - */ +* Looks for a skill unit on a given cell +* flag&1: runs battle_check_target check based on unit->group->target_flag +*/ struct skill_unit* map_find_skill_unit_oncell(struct block_list* target,int16 x,int16 y,uint16 skill_id,struct skill_unit* out_unit, int flag) { int16 m,bx,by; struct block_list *bl; @@ -535,8 +501,8 @@ struct skill_unit* map_find_skill_unit_oncell(struct block_list* target,int16 x, } /*========================================== - * Adapted from foreachinarea for an easier invocation. [Skotlex] - *------------------------------------------*/ +* Adapted from foreachinarea for an easier invocation. [Skotlex] +*------------------------------------------*/ int map_foreachinrange(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int type, ...) { int bx, by, m; @@ -561,47 +527,47 @@ int map_foreachinrange(int (*func)(struct block_list*,va_list), struct block_lis #ifdef CIRCULAR_AREA && check_distance_bl(center, bl, range) #endif - && bl_list_count < BL_LIST_MAX ) + && bl_list_count < BL_LIST_MAX ) bl_list[ bl_list_count++ ] = bl; } } } - if( type&BL_MOB ) - for( by = y0 / BLOCK_SIZE; by <= y1 / BLOCK_SIZE; by++ ) { - for(bx=x0/BLOCK_SIZE;bx<=x1/BLOCK_SIZE;bx++) { - for( bl = map[ m ].block_mob[ bx + by * map[ m ].bxs ]; bl != NULL; bl = bl->next ) { - if( bl->x >= x0 && bl->x <= x1 && bl->y >= y0 && bl->y <= y1 + if( type&BL_MOB ) + for( by = y0 / BLOCK_SIZE; by <= y1 / BLOCK_SIZE; by++ ) { + for(bx=x0/BLOCK_SIZE;bx<=x1/BLOCK_SIZE;bx++) { + for( bl = map[ m ].block_mob[ bx + by * map[ m ].bxs ]; bl != NULL; bl = bl->next ) { + if( bl->x >= x0 && bl->x <= x1 && bl->y >= y0 && bl->y <= y1 #ifdef CIRCULAR_AREA - && check_distance_bl(center, bl, range) + && check_distance_bl(center, bl, range) #endif - && bl_list_count < BL_LIST_MAX ) - bl_list[ bl_list_count++ ] = bl; + && bl_list_count < BL_LIST_MAX ) + bl_list[ bl_list_count++ ] = bl; + } } } - } - if( bl_list_count >= BL_LIST_MAX ) - ShowWarning("map_foreachinrange: block count too many!\n"); + if( bl_list_count >= BL_LIST_MAX ) + ShowWarning("iMap->foreachinrange: block count too many!\n"); - map_freeblock_lock(); + iMap->freeblock_lock(); - for( i = blockcount; i < bl_list_count; i++ ) - if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. - va_start(ap, type); - returnCount += func(bl_list[ i ], ap); - va_end(ap); - } + for( i = blockcount; i < bl_list_count; i++ ) + if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. + va_start(ap, type); + returnCount += func(bl_list[ i ], ap); + va_end(ap); + } - map_freeblock_unlock(); + iMap->freeblock_unlock(); - bl_list_count = blockcount; - return returnCount; //[Skotlex] + bl_list_count = blockcount; + return returnCount; //[Skotlex] } /*========================================== - * Same as foreachinrange, but there must be a shoot-able range between center and target to be counted in. [Skotlex] - *------------------------------------------*/ +* Same as foreachinrange, but there must be a shoot-able range between center and target to be counted in. [Skotlex] +*------------------------------------------*/ int map_foreachinshootrange(int (*func)(struct block_list*,va_list),struct block_list* center, int16 range, int type,...) { int bx, by, m; @@ -630,49 +596,49 @@ int map_foreachinshootrange(int (*func)(struct block_list*,va_list),struct block && check_distance_bl(center, bl, range) #endif && path_search_long(NULL, center->m, center->x, center->y, bl->x, bl->y, CELL_CHKWALL) - && bl_list_count < BL_LIST_MAX ) + && bl_list_count < BL_LIST_MAX ) bl_list[ bl_list_count++ ] = bl; } } } - if( type&BL_MOB ) - for( by = y0 / BLOCK_SIZE; by <= y1 / BLOCK_SIZE; by++ ) { - for( bx=x0 / BLOCK_SIZE; bx <= x1 / BLOCK_SIZE; bx++ ) { - for( bl = map[ m ].block_mob[ bx + by * map[ m ].bxs ]; bl != NULL; bl = bl->next ) { - if( bl->x >= x0 && bl->x <= x1 && bl->y >= y0 && bl->y <= y1 + if( type&BL_MOB ) + for( by = y0 / BLOCK_SIZE; by <= y1 / BLOCK_SIZE; by++ ) { + for( bx=x0 / BLOCK_SIZE; bx <= x1 / BLOCK_SIZE; bx++ ) { + for( bl = map[ m ].block_mob[ bx + by * map[ m ].bxs ]; bl != NULL; bl = bl->next ) { + if( bl->x >= x0 && bl->x <= x1 && bl->y >= y0 && bl->y <= y1 #ifdef CIRCULAR_AREA - && check_distance_bl(center, bl, range) + && check_distance_bl(center, bl, range) #endif - && path_search_long(NULL, center->m, center->x, center->y, bl->x, bl->y, CELL_CHKWALL) - && bl_list_count < BL_LIST_MAX ) - bl_list[ bl_list_count++ ] = bl; + && path_search_long(NULL, center->m, center->x, center->y, bl->x, bl->y, CELL_CHKWALL) + && bl_list_count < BL_LIST_MAX ) + bl_list[ bl_list_count++ ] = bl; + } } } - } - if( bl_list_count >= BL_LIST_MAX ) - ShowWarning("map_foreachinrange: block count too many!\n"); + if( bl_list_count >= BL_LIST_MAX ) + ShowWarning("iMap->foreachinrange: block count too many!\n"); - map_freeblock_lock(); + iMap->freeblock_lock(); - for( i = blockcount; i < bl_list_count; i++ ) - if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. - va_start(ap, type); - returnCount += func(bl_list[ i ], ap); - va_end(ap); - } + for( i = blockcount; i < bl_list_count; i++ ) + if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. + va_start(ap, type); + returnCount += func(bl_list[ i ], ap); + va_end(ap); + } - map_freeblock_unlock(); + iMap->freeblock_unlock(); - bl_list_count = blockcount; - return returnCount; //[Skotlex] + bl_list_count = blockcount; + return returnCount; //[Skotlex] } /*========================================== - * range = map m (x0,y0)-(x1,y1) - * Apply *func with ... arguments for the range. - * @type = BL_PC/BL_MOB etc.. - *------------------------------------------*/ +* range = map m (x0,y0)-(x1,y1) +* Apply *func with ... arguments for the range. +* @type = BL_PC/BL_MOB etc.. +*------------------------------------------*/ int map_foreachinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, ...) { int bx, by; @@ -710,7 +676,7 @@ int map_foreachinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0 if( bl_list_count >= BL_LIST_MAX ) ShowWarning("map_foreachinarea: block count too many!\n"); - map_freeblock_lock(); + iMap->freeblock_lock(); for( i = blockcount; i < bl_list_count; i++ ) if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. @@ -719,14 +685,14 @@ int map_foreachinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0 va_end(ap); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); - bl_list_count = blockcount; - return returnCount; //[Skotlex] + bl_list_count = blockcount; + return returnCount; //[Skotlex] } /*========================================== - * Adapted from forcountinarea for an easier invocation. [pakpil] - *------------------------------------------*/ +* Adapted from forcountinarea for an easier invocation. [pakpil] +*------------------------------------------*/ int map_forcountinrange(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int count, int type, ...) { int bx, by, m; @@ -751,43 +717,43 @@ int map_forcountinrange(int (*func)(struct block_list*,va_list), struct block_li #ifdef CIRCULAR_AREA && check_distance_bl(center, bl, range) #endif - && bl_list_count < BL_LIST_MAX ) + && bl_list_count < BL_LIST_MAX ) bl_list[ bl_list_count++ ] = bl; } } } - if( type&BL_MOB ) - for( by = y0 / BLOCK_SIZE; by <= y1 / BLOCK_SIZE; by++ ) { - for( bx = x0 / BLOCK_SIZE; bx <= x1 / BLOCK_SIZE; bx++ ){ - for( bl = map[ m ].block_mob[ bx + by * map[ m ].bxs ]; bl != NULL; bl = bl->next ) { - if( bl->x >= x0 && bl->x <= x1 && bl->y >= y0 && bl->y <= y1 + if( type&BL_MOB ) + for( by = y0 / BLOCK_SIZE; by <= y1 / BLOCK_SIZE; by++ ) { + for( bx = x0 / BLOCK_SIZE; bx <= x1 / BLOCK_SIZE; bx++ ){ + for( bl = map[ m ].block_mob[ bx + by * map[ m ].bxs ]; bl != NULL; bl = bl->next ) { + if( bl->x >= x0 && bl->x <= x1 && bl->y >= y0 && bl->y <= y1 #ifdef CIRCULAR_AREA - && check_distance_bl(center, bl, range) + && check_distance_bl(center, bl, range) #endif - && bl_list_count < BL_LIST_MAX ) - bl_list[ bl_list_count++ ] = bl; + && bl_list_count < BL_LIST_MAX ) + bl_list[ bl_list_count++ ] = bl; + } } } - } - if( bl_list_count >= BL_LIST_MAX ) - ShowWarning("map_forcountinrange: block count too many!\n"); + if( bl_list_count >= BL_LIST_MAX ) + ShowWarning("map_forcountinrange: block count too many!\n"); - map_freeblock_lock(); + iMap->freeblock_lock(); - for( i = blockcount; i < bl_list_count; i++ ) - if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. - va_start(ap, type); - returnCount += func(bl_list[ i ], ap); - va_end(ap); - if( count && returnCount >= count ) - break; - } + for( i = blockcount; i < bl_list_count; i++ ) + if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. + va_start(ap, type); + returnCount += func(bl_list[ i ], ap); + va_end(ap); + if( count && returnCount >= count ) + break; + } - map_freeblock_unlock(); + iMap->freeblock_unlock(); - bl_list_count = blockcount; - return returnCount; //[Skotlex] + bl_list_count = blockcount; + return returnCount; //[Skotlex] } int map_forcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, ...) { @@ -827,7 +793,7 @@ int map_forcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x if( bl_list_count >= BL_LIST_MAX ) ShowWarning("map_foreachinarea: block count too many!\n"); - map_freeblock_lock(); + iMap->freeblock_lock(); for( i = blockcount; i < bl_list_count; i++ ) if(bl_list[ i ]->prev) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. @@ -838,17 +804,17 @@ int map_forcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x break; } - map_freeblock_unlock(); + iMap->freeblock_unlock(); - bl_list_count = blockcount; - return returnCount; //[Skotlex] + bl_list_count = blockcount; + return returnCount; //[Skotlex] } /*========================================== - * For what I get - * Move bl and do func* with va_list while moving. - * Mouvement is set by dx dy wich are distance in x and y - *------------------------------------------*/ +* For what I get +* Move bl and do func* with va_list while moving. +* Mouvement is set by dx dy wich are distance in x and y +*------------------------------------------*/ int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int16 dx, int16 dy, int type, ...) { int bx, by, m; @@ -928,11 +894,11 @@ int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_ bl->x >= x0 && bl->x <= x1 && bl->y >= y0 && bl->y <= y1 && bl_list_count < BL_LIST_MAX ) - if( ( dx > 0 && bl->x < x0 + dx) || - ( dx < 0 && bl->x > x1 + dx) || - ( dy > 0 && bl->y < y0 + dy) || - ( dy < 0 && bl->y > y1 + dy) ) - bl_list[ bl_list_count++ ] = bl; + if( ( dx > 0 && bl->x < x0 + dx) || + ( dx < 0 && bl->x > x1 + dx) || + ( dy > 0 && bl->y < y0 + dy) || + ( dy < 0 && bl->y > y1 + dy) ) + bl_list[ bl_list_count++ ] = bl; } } if ( type&BL_MOB ) { @@ -940,11 +906,11 @@ int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_ if( bl->x >= x0 && bl->x <= x1 && bl->y >= y0 && bl->y <= y1 && bl_list_count < BL_LIST_MAX) - if( ( dx > 0 && bl->x < x0 + dx) || - ( dx < 0 && bl->x > x1 + dx) || - ( dy > 0 && bl->y < y0 + dy) || - ( dy < 0 && bl->y > y1 + dy) ) - bl_list[ bl_list_count++ ] = bl; + if( ( dx > 0 && bl->x < x0 + dx) || + ( dx < 0 && bl->x > x1 + dx) || + ( dy > 0 && bl->y < y0 + dy) || + ( dy < 0 && bl->y > y1 + dy) ) + bl_list[ bl_list_count++ ] = bl; } } } @@ -955,7 +921,7 @@ int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_ if( bl_list_count >= BL_LIST_MAX ) ShowWarning("map_foreachinmovearea: block count too many!\n"); - map_freeblock_lock(); // Prohibit the release from memory + iMap->freeblock_lock(); // Prohibit the release from memory for( i = blockcount; i < bl_list_count; i++ ) if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. @@ -964,10 +930,10 @@ int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_ va_end(ap); } - map_freeblock_unlock(); // Allow Free + iMap->freeblock_unlock(); // Allow Free - bl_list_count = blockcount; - return returnCount; + bl_list_count = blockcount; + return returnCount; } // -- moonsoul (added map_foreachincell which is a rework of map_foreachinarea but @@ -999,7 +965,7 @@ int map_foreachincell(int (*func)(struct block_list*,va_list), int16 m, int16 x, if( bl_list_count >= BL_LIST_MAX ) ShowWarning("map_foreachincell: block count too many!\n"); - map_freeblock_lock(); + iMap->freeblock_lock(); for( i = blockcount; i < bl_list_count; i++ ) if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. @@ -1008,10 +974,10 @@ int map_foreachincell(int (*func)(struct block_list*,va_list), int16 m, int16 x, va_end(ap); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); - bl_list_count = blockcount; - return returnCount; + bl_list_count = blockcount; + return returnCount; } /*============================================================ @@ -1020,38 +986,38 @@ int map_foreachincell(int (*func)(struct block_list*,va_list), int16 m, int16 x, int map_foreachinpath(int (*func)(struct block_list*,va_list),int16 m,int16 x0,int16 y0,int16 x1,int16 y1,int16 range,int length, int type,...) { int returnCount = 0; //total sum of returned values of func() [Skotlex] -////////////////////////////////////////////////////////////// -// -// sharp shooting 3 [Skotlex] -// -////////////////////////////////////////////////////////////// -// problem: -// Same as Sharp Shooting 1. Hits all targets within range of -// the line. -// (t1,t2 t3 and t4 get hit) -// -// target 1 -// x t4 -// t2 -// t3 x -// x -// S -////////////////////////////////////////////////////////////// -// Methodology: -// My trigonometrics and math are a little rusty... so the approach I am writing -// here is basicly do a double for to check for all targets in the square that -// contains the initial and final positions (area range increased to match the -// radius given), then for each object to test, calculate the distance to the -// path and include it if the range fits and the target is in the line (0<k<1, -// as they call it). -// The implementation I took as reference is found at -// http://astronomy.swin.edu.au/~pbourke/geometry/pointline/ -// (they have a link to a C implementation, too) -// This approach is a lot like #2 commented on this function, which I have no -// idea why it was commented. I won't use doubles/floats, but pure int math for -// speed purposes. The range considered is always the same no matter how -// close/far the target is because that's how SharpShooting works currently in -// kRO. + ////////////////////////////////////////////////////////////// + // + // sharp shooting 3 [Skotlex] + // + ////////////////////////////////////////////////////////////// + // problem: + // Same as Sharp Shooting 1. Hits all targets within range of + // the line. + // (t1,t2 t3 and t4 get hit) + // + // target 1 + // x t4 + // t2 + // t3 x + // x + // S + ////////////////////////////////////////////////////////////// + // Methodology: + // My trigonometrics and math are a little rusty... so the approach I am writing + // here is basicly do a double for to check for all targets in the square that + // contains the initial and final positions (area range increased to match the + // radius given), then for each object to test, calculate the distance to the + // path and include it if the range fits and the target is in the line (0<k<1, + // as they call it). + // The implementation I took as reference is found at + // http://astronomy.swin.edu.au/~pbourke/geometry/pointline/ + // (they have a link to a C implementation, too) + // This approach is a lot like #2 commented on this function, which I have no + // idea why it was commented. I won't use doubles/floats, but pure int math for + // speed purposes. The range considered is always the same no matter how + // close/far the target is because that's how SharpShooting works currently in + // kRO. //Generic map_foreach* variables. int i, blockcount = bl_list_count; @@ -1064,7 +1030,7 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int16 m,int16 x0,i va_list ap; //Avoid needless calculations by not getting the sqrt right away. - #define MAGNITUDE2(x0, y0, x1, y1) ( ( ( x1 ) - ( x0 ) ) * ( ( x1 ) - ( x0 ) ) + ( ( y1 ) - ( y0 ) ) * ( ( y1 ) - ( y0 ) ) ) +#define MAGNITUDE2(x0, y0, x1, y1) ( ( ( x1 ) - ( x0 ) ) * ( ( x1 ) - ( x0 ) ) + ( ( y1 ) - ( y0 ) ) * ( ( y1 ) - ( y0 ) ) ) if ( m < 0 ) return 0; @@ -1143,54 +1109,54 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int16 m,int16 x0,i } } } - if( type&BL_MOB ) - for( by = my0 / BLOCK_SIZE; by <= my1 / BLOCK_SIZE; by++ ) { - for( bx = mx0 / BLOCK_SIZE; bx <= mx1 / BLOCK_SIZE; bx++ ) { - for( bl = map[ m ].block_mob[ bx + by * map[ m ].bxs ]; bl != NULL; bl = bl->next ) { - if( bl->prev && bl_list_count < BL_LIST_MAX ) { - xi = bl->x; - yi = bl->y; - k = ( xi - x0 ) * ( x1 - x0 ) + ( yi - y0 ) * ( y1 - y0 ); + if( type&BL_MOB ) + for( by = my0 / BLOCK_SIZE; by <= my1 / BLOCK_SIZE; by++ ) { + for( bx = mx0 / BLOCK_SIZE; bx <= mx1 / BLOCK_SIZE; bx++ ) { + for( bl = map[ m ].block_mob[ bx + by * map[ m ].bxs ]; bl != NULL; bl = bl->next ) { + if( bl->prev && bl_list_count < BL_LIST_MAX ) { + xi = bl->x; + yi = bl->y; + k = ( xi - x0 ) * ( x1 - x0 ) + ( yi - y0 ) * ( y1 - y0 ); - if ( k < 0 || k > len_limit ) - continue; + if ( k < 0 || k > len_limit ) + continue; - if ( k > magnitude2 && !path_search_long(NULL, m, x0, y0, xi, yi, CELL_CHKWALL) ) - continue; //Targets beyond the initial ending point need the wall check. + if ( k > magnitude2 && !path_search_long(NULL, m, x0, y0, xi, yi, CELL_CHKWALL) ) + continue; //Targets beyond the initial ending point need the wall check. - k = ( k << 4 ) / magnitude2; //k will be between 1~16 instead of 0~1 - xi <<= 4; - yi <<= 4; - xu = ( x0 << 4 ) + k * ( x1 - x0 ); - yu = ( y0 << 4 ) + k * ( y1 - y0 ); - k = MAGNITUDE2(xi, yi, xu, yu); + k = ( k << 4 ) / magnitude2; //k will be between 1~16 instead of 0~1 + xi <<= 4; + yi <<= 4; + xu = ( x0 << 4 ) + k * ( x1 - x0 ); + yu = ( y0 << 4 ) + k * ( y1 - y0 ); + k = MAGNITUDE2(xi, yi, xu, yu); - //If all dot coordinates were <<4 the square of the magnitude is <<8 - if ( k > range ) - continue; + //If all dot coordinates were <<4 the square of the magnitude is <<8 + if ( k > range ) + continue; - bl_list[ bl_list_count++ ] = bl; + bl_list[ bl_list_count++ ] = bl; + } } } } - } - if( bl_list_count >= BL_LIST_MAX ) - ShowWarning("map_foreachinpath: block count too many!\n"); + if( bl_list_count >= BL_LIST_MAX ) + ShowWarning("map_foreachinpath: block count too many!\n"); - map_freeblock_lock(); + iMap->freeblock_lock(); - for( i = blockcount; i < bl_list_count; i++ ) - if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. - va_start(ap, type); - returnCount += func(bl_list[ i ], ap); - va_end(ap); - } + for( i = blockcount; i < bl_list_count; i++ ) + if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. + va_start(ap, type); + returnCount += func(bl_list[ i ], ap); + va_end(ap); + } - map_freeblock_unlock(); + iMap->freeblock_unlock(); - bl_list_count = blockcount; - return returnCount; //[Skotlex] + bl_list_count = blockcount; + return returnCount; //[Skotlex] } @@ -1219,7 +1185,7 @@ int map_foreachinmap(int (*func)(struct block_list*,va_list), int16 m, int type, if( bl_list_count >= BL_LIST_MAX ) ShowWarning("map_foreachinmap: block count too many!\n"); - map_freeblock_lock(); + iMap->freeblock_lock(); for( i = blockcount; i < bl_list_count ; i++ ) if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. @@ -1228,10 +1194,10 @@ int map_foreachinmap(int (*func)(struct block_list*,va_list), int16 m, int type, va_end(ap); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); - bl_list_count = blockcount; - return returnCount; + bl_list_count = blockcount; + return returnCount; } // Copy of map_foreachinmap, but applied to all maps in a instance id. [Ind/Hercules] int map_foreachininstance(int (*func)(struct block_list*,va_list), int16 instance_id, int type,...) { @@ -1241,41 +1207,41 @@ int map_foreachininstance(int (*func)(struct block_list*,va_list), int16 instanc int blockcount = bl_list_count, i, j; int16 m; va_list ap; - + for( j = 0; j < instances[instance_id].num_map; j++ ) { m = instances[instance_id].map[j]; - + bsize = map[ m ].bxs * map[ m ].bys; - + if( type&~BL_MOB ) for( b = 0; b < bsize; b++ ) for( bl = map[ m ].block[ b ]; bl != NULL; bl = bl->next ) if( bl->type&type && bl_list_count < BL_LIST_MAX ) bl_list[ bl_list_count++ ] = bl; - + if( type&BL_MOB ) for( b = 0; b < bsize; b++ ) for( bl = map[ m ].block_mob[ b ]; bl != NULL; bl = bl->next ) if( bl_list_count < BL_LIST_MAX ) bl_list[ bl_list_count++ ] = bl; - + if( bl_list_count >= BL_LIST_MAX ) ShowWarning("map_foreachininstance: block count too many!\n"); - - map_freeblock_lock(); - + + iMap->freeblock_lock(); + for( i = blockcount; i < bl_list_count ; i++ ) if( bl_list[ i ]->prev ) { //func() may delete this bl_list[] slot, checking for prev ensures it wasnt queued for deletion. va_start(ap, type); returnCount += func(bl_list[ i ], ap); va_end(ap); } - - map_freeblock_unlock(); - + + iMap->freeblock_unlock(); + } - + bl_list_count = blockcount; return returnCount; } @@ -1313,9 +1279,9 @@ int map_get_new_object_id(void) } /*========================================== - * Timered function to clear the floor (remove remaining item) - * Called each flooritem_lifetime ms - *------------------------------------------*/ +* Timered function to clear the floor (remove remaining item) +* Called each flooritem_lifetime ms +*------------------------------------------*/ int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr_t data) { struct flooritem_data* fitem = (struct flooritem_data*)idb_get(id_db, id); @@ -1330,32 +1296,32 @@ int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr_t data) intif_delete_petdata(MakeDWord(fitem->item_data.card[1], fitem->item_data.card[2])); clif->clearflooritem(fitem, 0); - map_deliddb(&fitem->bl); - map_delblock(&fitem->bl); - map_freeblock(&fitem->bl); + iMap->deliddb(&fitem->bl); + iMap->delblock(&fitem->bl); + iMap->freeblock(&fitem->bl); return 0; } /* - * clears a single bl item out of the bazooonga. - */ +* clears a single bl item out of the bazooonga. +*/ void map_clearflooritem(struct block_list *bl) { struct flooritem_data* fitem = (struct flooritem_data*)bl; if( fitem->cleartimer ) - delete_timer(fitem->cleartimer,map_clearflooritem_timer); + iTimer->delete_timer(fitem->cleartimer,iMap->clearflooritem_timer); clif->clearflooritem(fitem, 0); - map_deliddb(&fitem->bl); - map_delblock(&fitem->bl); - map_freeblock(&fitem->bl); + iMap->deliddb(&fitem->bl); + iMap->delblock(&fitem->bl); + iMap->freeblock(&fitem->bl); } /*========================================== - * (m,x,y) locates a random available free cell around the given coordinates - * to place an BL_ITEM object. Scan area is 9x9, returns 1 on success. - * x and y are modified with the target cell when successful. - *------------------------------------------*/ +* (m,x,y) locates a random available free cell around the given coordinates +* to place an BL_ITEM object. Scan area is 9x9, returns 1 on success. +* x and y are modified with the target cell when successful. +*------------------------------------------*/ int map_searchrandfreecell(int16 m,int16 *x,int16 *y,int stack) { int free_cell,i,j; int free_cells[9][2]; @@ -1366,10 +1332,10 @@ int map_searchrandfreecell(int16 m,int16 *x,int16 *y,int stack) { for(j=-1;j<=1;j++){ if(j+*x<0 || j+*x>=map[m].xs) continue; - if(map_getcell(m,j+*x,i+*y,CELL_CHKNOPASS) && !map_getcell(m,j+*x,i+*y,CELL_CHKICEWALL)) + if(iMap->getcell(m,j+*x,i+*y,CELL_CHKNOPASS) && !iMap->getcell(m,j+*x,i+*y,CELL_CHKICEWALL)) continue; //Avoid item stacking to prevent against exploits. [Skotlex] - if(stack && map_count_oncell(m,j+*x,i+*y, BL_ITEM) > stack) + if(stack && iMap->count_oncell(m,j+*x,i+*y, BL_ITEM) > stack) continue; free_cells[free_cell][0] = j+*x; free_cells[free_cell++][1] = i+*y; @@ -1390,17 +1356,17 @@ static int map_count_sub(struct block_list *bl,va_list ap) } /*========================================== - * Locates a random spare cell around the object given, using range as max - * distance from that spot. Used for warping functions. Use range < 0 for - * whole map range. - * Returns 1 on success. when it fails and src is available, x/y are set to src's - * src can be null as long as flag&1 - * when ~flag&1, m is not needed. - * Flag values: - * &1 = random cell must be around given m,x,y, not around src - * &2 = the target should be able to walk to the target tile. - * &4 = there shouldn't be any players around the target tile (use the no_spawn_on_player setting) - *------------------------------------------*/ +* Locates a random spare cell around the object given, using range as max +* distance from that spot. Used for warping functions. Use range < 0 for +* whole map range. +* Returns 1 on success. when it fails and src is available, x/y are set to src's +* src can be null as long as flag&1 +* when ~flag&1, m is not needed. +* Flag values: +* &1 = random cell must be around given m,x,y, not around src +* &2 = the target should be able to walk to the target tile. +* &4 = there shouldn't be any players around the target tile (use the no_spawn_on_player setting) +*------------------------------------------*/ int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int16 rx, int16 ry, int flag) { int tries, spawn=0; @@ -1426,7 +1392,7 @@ int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int1 //No range? Return the target cell then.... *x = bx; *y = by; - return map_getcell(m,*x,*y,CELL_CHKREACH); + return iMap->getcell(m,*x,*y,CELL_CHKREACH); } if (rx >= 0 && ry >= 0) { @@ -1444,7 +1410,7 @@ int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int1 if (*x == bx && *y == by) continue; //Avoid picking the same target tile. - if (map_getcell(m,*x,*y,CELL_CHKREACH)) + if (iMap->getcell(m,*x,*y,CELL_CHKREACH)) { if(flag&2 && !unit_can_reach_pos(src, *x, *y, 1)) continue; @@ -1452,10 +1418,10 @@ int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int1 if (spawn >= 100) return 0; //Limit of retries reached. if (spawn++ < battle_config.no_spawn_on_player && map_foreachinarea(map_count_sub, m, - *x-AREA_SIZE, *y-AREA_SIZE, - *x+AREA_SIZE, *y+AREA_SIZE, BL_PC) - ) - continue; + *x-AREA_SIZE, *y-AREA_SIZE, + *x+AREA_SIZE, *y+AREA_SIZE, BL_PC) + ) + continue; } return 1; } @@ -1466,14 +1432,14 @@ int map_search_freecell(struct block_list *src, int16 m, int16 *x,int16 *y, int1 } /*========================================== - * Add an item to location (m,x,y) - * Parameters - * @item_data item attributes - * @amount quantity - * @m, @x, @y mapid,x,y - * @first_charid, @second_charid, @third_charid, looting priority - * @flag: &1 MVP item. &2 do stacking check. - *------------------------------------------*/ +* Add an item to location (m,x,y) +* Parameters +* @item_data item attributes +* @amount quantity +* @m, @x, @y mapid,x,y +* @first_charid, @second_charid, @third_charid, looting priority +* @flag: &1 MVP item. &2 do stacking check. +*------------------------------------------*/ int map_addflooritem(struct item *item_data,int amount,int16 m,int16 x,int16 y,int first_charid,int second_charid,int third_charid,int flags) { int r; @@ -1491,14 +1457,14 @@ int map_addflooritem(struct item *item_data,int amount,int16 m,int16 x,int16 y,i fitem->bl.m=m; fitem->bl.x=x; fitem->bl.y=y; - fitem->bl.id = map_get_new_object_id(); + fitem->bl.id = iMap->get_new_object_id(); if(fitem->bl.id==0){ aFree(fitem); return 0; } fitem->first_get_charid = first_charid; - fitem->first_get_tick = gettick() + (flags&1 ? battle_config.mvp_item_first_get_time : battle_config.item_first_get_time); + fitem->first_get_tick = iTimer->gettick() + (flags&1 ? battle_config.mvp_item_first_get_time : battle_config.item_first_get_time); fitem->second_get_charid = second_charid; fitem->second_get_tick = fitem->first_get_tick + (flags&1 ? battle_config.mvp_item_second_get_time : battle_config.item_second_get_time); fitem->third_get_charid = third_charid; @@ -1508,23 +1474,23 @@ int map_addflooritem(struct item *item_data,int amount,int16 m,int16 x,int16 y,i fitem->item_data.amount=amount; fitem->subx=(r&3)*3+3; fitem->suby=((r>>2)&3)*3+3; - fitem->cleartimer=add_timer(gettick()+battle_config.flooritem_lifetime,map_clearflooritem_timer,fitem->bl.id,0); + fitem->cleartimer=iTimer->add_timer(iTimer->gettick()+battle_config.flooritem_lifetime,iMap->clearflooritem_timer,fitem->bl.id,0); - map_addiddb(&fitem->bl); - map_addblock(&fitem->bl); + iMap->addiddb(&fitem->bl); + iMap->addblock(&fitem->bl); clif->dropflooritem(fitem); return fitem->bl.id; } /** - * @see DBCreateData - */ +* @see DBCreateData +*/ static DBData create_charid2nick(DBKey key, va_list args) { struct charid2nick *p; CREATE(p, struct charid2nick, 1); - return DB->ptr2data(p); + return iDB->ptr2data(p); } /// Adds(or replaces) the nick of charid to nick_db and fullfils pending requests. @@ -1535,7 +1501,7 @@ void map_addnickdb(int charid, const char* nick) struct charid_request* req; struct map_session_data* sd; - if( map_charid2sd(charid) ) + if( iMap->charid2sd(charid) ) return;// already online p = idb_ensure(nick_db, charid, create_charid2nick); @@ -1544,7 +1510,7 @@ void map_addnickdb(int charid, const char* nick) while( p->requests ) { req = p->requests; p->requests = req->next; - sd = map_charid2sd(req->charid); + sd = iMap->charid2sd(req->charid); if( sd ) clif->solved_charname(sd->fd, charid, p->nick); aFree(req); @@ -1560,13 +1526,13 @@ void map_delnickdb(int charid, const char* name) struct map_session_data* sd; DBData data; - if (!nick_db->remove(nick_db, DB->i2key(charid), &data) || (p = DB->data2ptr(&data)) == NULL) + if (!nick_db->remove(nick_db, iDB->i2key(charid), &data) || (p = iDB->data2ptr(&data)) == NULL) return; while( p->requests ) { req = p->requests; p->requests = req->next; - sd = map_charid2sd(req->charid); + sd = iMap->charid2sd(req->charid); if( sd ) clif->solved_charname(sd->fd, charid, name); aFree(req); @@ -1585,7 +1551,7 @@ void map_reqnickdb(struct map_session_data * sd, int charid) nullpo_retv(sd); - tsd = map_charid2sd(charid); + tsd = iMap->charid2sd(charid); if( tsd ) { clif->solved_charname(sd->fd, charid, tsd->status.name); return; @@ -1604,8 +1570,8 @@ void map_reqnickdb(struct map_session_data * sd, int charid) } /*========================================== - * add bl to id_db - *------------------------------------------*/ +* add bl to id_db +*------------------------------------------*/ void map_addiddb(struct block_list *bl) { nullpo_retv(bl); @@ -1632,8 +1598,8 @@ void map_addiddb(struct block_list *bl) } /*========================================== - * remove bl from id_db - *------------------------------------------*/ +* remove bl from id_db +*------------------------------------------*/ void map_deliddb(struct block_list *bl) { nullpo_retv(bl); @@ -1657,8 +1623,8 @@ void map_deliddb(struct block_list *bl) } /*========================================== - * Standard call when a player connection is closed. - *------------------------------------------*/ +* Standard call when a player connection is closed. +*------------------------------------------*/ int map_quit(struct map_session_data *sd) { int i; @@ -1681,7 +1647,7 @@ int map_quit(struct map_session_data *sd) { if( sd->bg_id ) bg_team_leave(sd,1); - pc_itemcd_do(sd,false); + iPc->itemcd_do(sd,false); for( i = 0; i < sd->queues_count; i++ ) { struct hQueue *queue; @@ -1693,12 +1659,12 @@ int map_quit(struct map_session_data *sd) { for( i = 0; i < sd->queues_count; i++ ) { script->queue_remove(sd->queues[i],sd->status.account_id); } - + npc_script_event(sd, NPCE_LOGOUT); - + //Unit_free handles clearing the player related data, - //map_quit handles extra specific data which is related to quitting normally - //(changing map-servers invokes unit_free but bypasses map_quit) + //iMap->quit handles extra specific data which is related to quitting normally + //(changing map-servers invokes unit_free but bypasses iMap->quit) if( sd->sc.count ) { //Status that are not saved... status_change_end(&sd->bl, SC_BOSSMAPINFO, INVALID_TIMER); @@ -1715,7 +1681,7 @@ int map_quit(struct map_session_data *sd) { status_change_end(&sd->bl, SC_ENDURE, INVALID_TIMER); //No need to save infinite endure. status_change_end(&sd->bl, SC_WEIGHT50, INVALID_TIMER); status_change_end(&sd->bl, SC_WEIGHT90, INVALID_TIMER); - status_change_end(&sd->bl, SC_SATURDAYNIGHTFEVER, INVALID_TIMER); + status_change_end(&sd->bl, SC_SATURDAYNIGHTFEVER, INVALID_TIMER); status_change_end(&sd->bl, SC_KYOUGAKU, INVALID_TIMER); if (battle_config.debuff_on_logout&1) { status_change_end(&sd->bl, SC_ORCISH, INVALID_TIMER); @@ -1745,8 +1711,8 @@ int map_quit(struct map_session_data *sd) { for( i = 0; i < EQI_MAX; i++ ) { if( sd->equip_index[ i ] >= 0 ) - if( !pc_isequip( sd , sd->equip_index[ i ] ) ) - pc_unequipitem( sd , sd->equip_index[ i ] , 2 ); + if( !iPc->isequip( sd , sd->equip_index[ i ] ) ) + iPc->unequipitem( sd , sd->equip_index[ i ] , 2 ); } // Return loot to owner @@ -1764,9 +1730,9 @@ int map_quit(struct map_session_data *sd) { if( hChSys.local && map[sd->bl.m].channel && idb_exists(map[sd->bl.m].channel->users, sd->status.char_id) ) { clif->chsys_left(map[sd->bl.m].channel,sd); } - + clif->chsys_quit(sd); - + unit_remove_map_pc(sd,CLR_TELEPORT); if( map[sd->bl.m].instance_id >= 0 ) { // Avoid map conflicts and warnings on next login @@ -1777,7 +1743,7 @@ int map_quit(struct map_session_data *sd) { else pt = &sd->status.save_point; - if( (m=map_mapindex2mapid(pt->map)) >= 0 ) { + if( (m=iMap->mapindex2mapid(pt->map)) >= 0 ) { sd->bl.m = m; sd->bl.x = pt->x; sd->bl.y = pt->y; @@ -1785,17 +1751,17 @@ int map_quit(struct map_session_data *sd) { } } - party_booking_delete(sd); // Party Booking [Spiria] - pc_makesavestatus(sd); - pc_clean_skilltree(sd); + iParty->booking_delete(sd); // Party Booking [Spiria] + iPc->makesavestatus(sd); + iPc->clean_skilltree(sd); chrif_save(sd,1); unit_free_pc(sd); return 0; } /*========================================== - * Lookup, id to session (player,mob,npc,homon,merc..) - *------------------------------------------*/ +* Lookup, id to session (player,mob,npc,homon,merc..) +*------------------------------------------*/ struct map_session_data * map_id2sd(int id) { if (id <= 0) return NULL; @@ -1810,28 +1776,28 @@ struct mob_data * map_id2md(int id) struct npc_data * map_id2nd(int id) {// just a id2bl lookup because there's no npc_db - struct block_list* bl = map_id2bl(id); + struct block_list* bl = iMap->id2bl(id); return BL_CAST(BL_NPC, bl); } struct homun_data* map_id2hd(int id) { - struct block_list* bl = map_id2bl(id); + struct block_list* bl = iMap->id2bl(id); return BL_CAST(BL_HOM, bl); } struct mercenary_data* map_id2mc(int id) { - struct block_list* bl = map_id2bl(id); + struct block_list* bl = iMap->id2bl(id); return BL_CAST(BL_MER, bl); } struct chat_data* map_id2cd(int id) { - struct block_list* bl = map_id2bl(id); + struct block_list* bl = iMap->id2bl(id); return BL_CAST(BL_CHAT, bl); } @@ -1842,7 +1808,7 @@ const char* map_charid2nick(int charid) struct charid2nick *p; struct map_session_data* sd; - sd = map_charid2sd(charid); + sd = iMap->charid2sd(charid); if( sd ) return sd->status.name;// character is online, return it's name @@ -1861,10 +1827,10 @@ struct map_session_data* map_charid2sd(int charid) } /*========================================== - * Search session data from a nick name - * (without sensitive case if necessary) - * return map_session_data pointer or NULL - *------------------------------------------*/ +* Search session data from a nick name +* (without sensitive case if necessary) +* return map_session_data pointer or NULL +*------------------------------------------*/ struct map_session_data * map_nick2sd(const char *nick) { struct map_session_data* sd; @@ -1912,22 +1878,22 @@ struct map_session_data * map_nick2sd(const char *nick) } /*========================================== - * Looksup id_db DBMap and returns BL pointer of 'id' or NULL if not found - *------------------------------------------*/ +* Looksup id_db DBMap and returns BL pointer of 'id' or NULL if not found +*------------------------------------------*/ struct block_list * map_id2bl(int id) { return (struct block_list*)idb_get(id_db,id); } /** - * Same as map_id2bl except it only checks for its existence - **/ +* Same as iMap->id2bl except it only checks for its existence +**/ bool map_blid_exists( int id ) { return (idb_exists(id_db,id)); } /*========================================== - * Convext Mirror - *------------------------------------------*/ +* Convext Mirror +*------------------------------------------*/ struct mob_data * map_getmob_boss(int16 m) { DBIterator* iter; @@ -2083,7 +2049,7 @@ struct s_mapiterator /// @return true if it matches #define MAPIT_MATCHES(_mapit_,_bl_) \ ( \ - ( (_bl_)->type & (_mapit_)->types /* type matches */ ) \ + ( (_bl_)->type & (_mapit_)->types /* type matches */ ) \ ) /// Allocates a new iterator. @@ -2214,12 +2180,12 @@ bool mapit_exists(struct s_mapiterator* mapit) } /*========================================== - * Add npc-bl to id_db, basically register npc to map - *------------------------------------------*/ +* Add npc-bl to id_db, basically register npc to map +*------------------------------------------*/ bool map_addnpc(int16 m,struct npc_data *nd) { nullpo_ret(nd); - if( m < 0 || m >= map_num ) + if( m < 0 || m >= iMap->map_num ) return false; if( map[m].npc_num == MAX_NPC_PER_MAP ) @@ -2235,8 +2201,8 @@ bool map_addnpc(int16 m,struct npc_data *nd) { } /*========================================= - * Dynamic Mobs [Wizputer] - *-----------------------------------------*/ +* Dynamic Mobs [Wizputer] +*-----------------------------------------*/ // Stores the spawn data entry in the mob list. // Returns the index of successful, or -1 if the list was full. int map_addmobtolist(unsigned short m, struct spawn_data *spawn) @@ -2255,7 +2221,7 @@ void map_spawnmobs(int16 m) int i, k=0; if (map[m].mob_delete_timer != INVALID_TIMER) { //Mobs have not been removed yet [Skotlex] - delete_timer(map[m].mob_delete_timer, map_removemobs_timer); + iTimer->delete_timer(map[m].mob_delete_timer, iMap->removemobs_timer); map[m].mob_delete_timer = INVALID_TIMER; return; } @@ -2266,10 +2232,10 @@ void map_spawnmobs(int16 m) npc_parse_mob2(map[m].moblist[i]); } - if (battle_config.etc_log && k > 0) - { - ShowStatus("Map %s: Spawned '"CL_WHITE"%d"CL_RESET"' mobs.\n",map[m].name, k); - } + if (battle_config.etc_log && k > 0) + { + ShowStatus("Map %s: Spawned '"CL_WHITE"%d"CL_RESET"' mobs.\n",map[m].name, k); + } } int map_removemobs_sub(struct block_list *bl, va_list ap) @@ -2304,7 +2270,7 @@ int map_removemobs_timer(int tid, unsigned int tick, int id, intptr_t data) int count; const int16 m = id; - if (m < 0 || m >= map_num) { //Incorrect map id! + if (m < 0 || m >= iMap->map_num) { //Incorrect map id! ShowError("map_removemobs_timer error: timer %d points to invalid map %d\n",tid, m); return 0; } @@ -2329,23 +2295,23 @@ void map_removemobs(int16 m) if (map[m].mob_delete_timer != INVALID_TIMER) // should never happen return; //Mobs are already scheduled for removal - map[m].mob_delete_timer = add_timer(gettick()+battle_config.mob_remove_delay, map_removemobs_timer, m, 0); + map[m].mob_delete_timer = iTimer->add_timer(iTimer->gettick()+battle_config.mob_remove_delay, iMap->removemobs_timer, m, 0); } /*========================================== - * Hookup, get map_id from map_name - *------------------------------------------*/ +* Hookup, get map_id from map_name +*------------------------------------------*/ int16 map_mapname2mapid(const char* name) { unsigned short map_index; map_index = mapindex_name2id(name); if (!map_index) return -1; - return map_mapindex2mapid(map_index); + return iMap->mapindex2mapid(map_index); } /*========================================== - * Returns the map of the given mapindex. [Skotlex] - *------------------------------------------*/ +* Returns the map of the given mapindex. [Skotlex] +*------------------------------------------*/ int16 map_mapindex2mapid(unsigned short mapindex) { if (!mapindex || mapindex > MAX_MAPINDEX) @@ -2355,8 +2321,8 @@ int16 map_mapindex2mapid(unsigned short mapindex) { } /*========================================== - * Switching Ip, port ? (like changing map_server) get ip/port from map_name - *------------------------------------------*/ +* Switching Ip, port ? (like changing map_server) get ip/port from map_name +*------------------------------------------*/ int map_mapname2ipport(unsigned short name, uint32* ip, uint16* port) { struct map_data_other_server *mdos; @@ -2369,28 +2335,28 @@ int map_mapname2ipport(unsigned short name, uint32* ip, uint16* port) { } /*========================================== - * Checks if both dirs point in the same direction. - *------------------------------------------*/ +* Checks if both dirs point in the same direction. +*------------------------------------------*/ int map_check_dir(int s_dir,int t_dir) { if(s_dir == t_dir) return 0; switch(s_dir) { - case 0: if(t_dir == 7 || t_dir == 1 || t_dir == 0) return 0; break; - case 1: if(t_dir == 0 || t_dir == 2 || t_dir == 1) return 0; break; - case 2: if(t_dir == 1 || t_dir == 3 || t_dir == 2) return 0; break; - case 3: if(t_dir == 2 || t_dir == 4 || t_dir == 3) return 0; break; - case 4: if(t_dir == 3 || t_dir == 5 || t_dir == 4) return 0; break; - case 5: if(t_dir == 4 || t_dir == 6 || t_dir == 5) return 0; break; - case 6: if(t_dir == 5 || t_dir == 7 || t_dir == 6) return 0; break; - case 7: if(t_dir == 6 || t_dir == 0 || t_dir == 7) return 0; break; + case 0: if(t_dir == 7 || t_dir == 1 || t_dir == 0) return 0; break; + case 1: if(t_dir == 0 || t_dir == 2 || t_dir == 1) return 0; break; + case 2: if(t_dir == 1 || t_dir == 3 || t_dir == 2) return 0; break; + case 3: if(t_dir == 2 || t_dir == 4 || t_dir == 3) return 0; break; + case 4: if(t_dir == 3 || t_dir == 5 || t_dir == 4) return 0; break; + case 5: if(t_dir == 4 || t_dir == 6 || t_dir == 5) return 0; break; + case 6: if(t_dir == 5 || t_dir == 7 || t_dir == 6) return 0; break; + case 7: if(t_dir == 6 || t_dir == 0 || t_dir == 7) return 0; break; } return 1; } /*========================================== - * Returns the direction of the given cell, relative to 'src' - *------------------------------------------*/ +* Returns the direction of the given cell, relative to 'src' +*------------------------------------------*/ uint8 map_calc_dir(struct block_list* src, int16 x, int16 y) { uint8 dir = 0; @@ -2434,9 +2400,9 @@ uint8 map_calc_dir(struct block_list* src, int16 x, int16 y) } /*========================================== - * Randomizes target cell x,y to a random walkable cell that - * has the same distance from object as given coordinates do. [Skotlex] - *------------------------------------------*/ +* Randomizes target cell x,y to a random walkable cell that +* has the same distance from object as given coordinates do. [Skotlex] +*------------------------------------------*/ int map_random_dir(struct block_list *bl, int16 *x, int16 *y) { short xi = *x-bl->x; @@ -2455,7 +2421,7 @@ int map_random_dir(struct block_list *bl, int16 *x, int16 *y) segment = (short)sqrt((float)(dist2 - segment*segment)); //The complement of the previously picked segment yi = bl->y + segment*diry[j]; } while ( - (map_getcell(bl->m,xi,yi,CELL_CHKNOPASS) || !path_search(NULL,bl->m,bl->x,bl->y,xi,yi,1,CELL_CHKNOREACH)) + (iMap->getcell(bl->m,xi,yi,CELL_CHKNOPASS) || !path_search(NULL,bl->m,bl->x,bl->y,xi,yi,1,CELL_CHKNOREACH)) && (++i)<100 ); if (i < 100) { @@ -2473,16 +2439,16 @@ inline static struct mapcell map_gat2cell(int gat) { memset(&cell,0,sizeof(struct mapcell)); switch( gat ) { - case 0: cell.walkable = 1; cell.shootable = 1; cell.water = 0; break; // walkable ground - case 1: cell.walkable = 0; cell.shootable = 0; cell.water = 0; break; // non-walkable ground - case 2: cell.walkable = 1; cell.shootable = 1; cell.water = 0; break; // ??? - case 3: cell.walkable = 1; cell.shootable = 1; cell.water = 1; break; // walkable water - case 4: cell.walkable = 1; cell.shootable = 1; cell.water = 0; break; // ??? - case 5: cell.walkable = 0; cell.shootable = 1; cell.water = 0; break; // gap (snipable) - case 6: cell.walkable = 1; cell.shootable = 1; cell.water = 0; break; // ??? - default: - ShowWarning("map_gat2cell: unrecognized gat type '%d'\n", gat); - break; + case 0: cell.walkable = 1; cell.shootable = 1; cell.water = 0; break; // walkable ground + case 1: cell.walkable = 0; cell.shootable = 0; cell.water = 0; break; // non-walkable ground + case 2: cell.walkable = 1; cell.shootable = 1; cell.water = 0; break; // ??? + case 3: cell.walkable = 1; cell.shootable = 1; cell.water = 1; break; // walkable water + case 4: cell.walkable = 1; cell.shootable = 1; cell.water = 0; break; // ??? + case 5: cell.walkable = 0; cell.shootable = 1; cell.water = 0; break; // gap (snipable) + case 6: cell.walkable = 1; cell.shootable = 1; cell.water = 0; break; // ??? + default: + ShowWarning("map_gat2cell: unrecognized gat type '%d'\n", gat); + break; } return cell; @@ -2502,23 +2468,23 @@ void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag); void map_cellfromcache(struct map_data *m) { char decode_buffer[MAX_MAP_SIZE]; struct map_cache_map_info *info = NULL; - + if( (info = (struct map_cache_map_info *)m->cellPos) ) { unsigned long size, xy; int i; - + size = (unsigned long)info->xs*(unsigned long)info->ys; - + // TO-DO: Maybe handle the scenario, if the decoded buffer isn't the same size as expected? [Shinryo] decode_zip(decode_buffer, &size, m->cellPos+sizeof(struct map_cache_map_info), info->len); CREATE(m->cell, struct mapcell, size); - + for( xy = 0; xy < size; ++xy ) m->cell[xy] = map_gat2cell(decode_buffer[xy]); - + m->getcellp = map_getcellp; m->setcell = map_setcell; - + for(i = 0; i < m->npc_num; i++) { npc_setcells(m->npc[i]); } @@ -2526,10 +2492,10 @@ void map_cellfromcache(struct map_data *m) { } /*========================================== - * Confirm if celltype in (m,x,y) match the one given in cellchk - *------------------------------------------*/ +* Confirm if celltype in (m,x,y) match the one given in cellchk +*------------------------------------------*/ int map_getcell(int16 m,int16 x,int16 y,cell_chk cellchk) { - return (m < 0 || m >= map_num) ? 0 : map[m].getcellp(&map[m],x,y,cellchk); + return (m < 0 || m >= iMap->map_num) ? 0 : map[m].getcellp(&map[m],x,y,cellchk); } int map_getcellp(struct map_data* m,int16 x,int16 y,cell_chk cellchk) { @@ -2545,106 +2511,106 @@ int map_getcellp(struct map_data* m,int16 x,int16 y,cell_chk cellchk) { switch(cellchk) { // gat type retrieval - case CELL_GETTYPE: - return map_cell2gat(cell); + case CELL_GETTYPE: + return map_cell2gat(cell); // base gat type checks - case CELL_CHKWALL: - return (!cell.walkable && !cell.shootable); + case CELL_CHKWALL: + return (!cell.walkable && !cell.shootable); - case CELL_CHKWATER: - return (cell.water); + case CELL_CHKWATER: + return (cell.water); - case CELL_CHKCLIFF: - return (!cell.walkable && cell.shootable); + case CELL_CHKCLIFF: + return (!cell.walkable && cell.shootable); // base cell type checks - case CELL_CHKNPC: - return (cell.npc); - case CELL_CHKBASILICA: - return (cell.basilica); - case CELL_CHKLANDPROTECTOR: - return (cell.landprotector); - case CELL_CHKNOVENDING: - return (cell.novending); - case CELL_CHKNOCHAT: - return (cell.nochat); - case CELL_CHKMAELSTROM: - return (cell.maelstrom); - case CELL_CHKICEWALL: - return (cell.icewall); + case CELL_CHKNPC: + return (cell.npc); + case CELL_CHKBASILICA: + return (cell.basilica); + case CELL_CHKLANDPROTECTOR: + return (cell.landprotector); + case CELL_CHKNOVENDING: + return (cell.novending); + case CELL_CHKNOCHAT: + return (cell.nochat); + case CELL_CHKMAELSTROM: + return (cell.maelstrom); + case CELL_CHKICEWALL: + return (cell.icewall); // special checks - case CELL_CHKPASS: + case CELL_CHKPASS: #ifdef CELL_NOSTACK - if (cell.cell_bl >= battle_config.cell_stack_limit) return 0; + if (cell.cell_bl >= battle_config.cell_stack_limit) return 0; #endif - case CELL_CHKREACH: - return (cell.walkable); + case CELL_CHKREACH: + return (cell.walkable); - case CELL_CHKNOPASS: + case CELL_CHKNOPASS: #ifdef CELL_NOSTACK - if (cell.cell_bl >= battle_config.cell_stack_limit) return 1; + if (cell.cell_bl >= battle_config.cell_stack_limit) return 1; #endif - case CELL_CHKNOREACH: - return (!cell.walkable); + case CELL_CHKNOREACH: + return (!cell.walkable); - case CELL_CHKSTACK: + case CELL_CHKSTACK: #ifdef CELL_NOSTACK - return (cell.cell_bl >= battle_config.cell_stack_limit); + return (cell.cell_bl >= battle_config.cell_stack_limit); #else - return 0; + return 0; #endif - default: - return 0; + default: + return 0; } } /* [Ind/Hercules] */ int map_sub_getcellp(struct map_data* m,int16 x,int16 y,cell_chk cellchk) { - map_cellfromcache(m); + iMap->cellfromcache(m); m->getcellp = map_getcellp; m->setcell = map_setcell; return m->getcellp(m,x,y,cellchk); } /*========================================== - * Change the type/flags of a map cell - * 'cell' - which flag to modify - * 'flag' - true = on, false = off - *------------------------------------------*/ +* Change the type/flags of a map cell +* 'cell' - which flag to modify +* 'flag' - true = on, false = off +*------------------------------------------*/ void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) { int j; - if( m < 0 || m >= map_num || x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) + if( m < 0 || m >= iMap->map_num || x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) return; j = x + y*map[m].xs; switch( cell ) { - case CELL_WALKABLE: map[m].cell[j].walkable = flag; break; - case CELL_SHOOTABLE: map[m].cell[j].shootable = flag; break; - case CELL_WATER: map[m].cell[j].water = flag; break; - - case CELL_NPC: map[m].cell[j].npc = flag; break; - case CELL_BASILICA: map[m].cell[j].basilica = flag; break; - case CELL_LANDPROTECTOR: map[m].cell[j].landprotector = flag; break; - case CELL_NOVENDING: map[m].cell[j].novending = flag; break; - case CELL_NOCHAT: map[m].cell[j].nochat = flag; break; - case CELL_MAELSTROM: map[m].cell[j].maelstrom = flag; break; - case CELL_ICEWALL: map[m].cell[j].icewall = flag; break; - default: - ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell); - break; + case CELL_WALKABLE: map[m].cell[j].walkable = flag; break; + case CELL_SHOOTABLE: map[m].cell[j].shootable = flag; break; + case CELL_WATER: map[m].cell[j].water = flag; break; + + case CELL_NPC: map[m].cell[j].npc = flag; break; + case CELL_BASILICA: map[m].cell[j].basilica = flag; break; + case CELL_LANDPROTECTOR: map[m].cell[j].landprotector = flag; break; + case CELL_NOVENDING: map[m].cell[j].novending = flag; break; + case CELL_NOCHAT: map[m].cell[j].nochat = flag; break; + case CELL_MAELSTROM: map[m].cell[j].maelstrom = flag; break; + case CELL_ICEWALL: map[m].cell[j].icewall = flag; break; + default: + ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell); + break; } } void map_sub_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) { - - if( m < 0 || m >= map_num || x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) + + if( m < 0 || m >= iMap->map_num || x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) return; - - map_cellfromcache(&map[m]); + + iMap->cellfromcache(&map[m]); map[m].setcell = map_setcell; map[m].getcellp = map_getcellp; map[m].setcell(m,x,y,cell,flag); @@ -2654,7 +2620,7 @@ void map_setgatcell(int16 m, int16 x, int16 y, int gat) int j; struct mapcell cell; - if( m < 0 || m >= map_num || x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) + if( m < 0 || m >= iMap->map_num || x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) return; j = x + y*map[m].xs; @@ -2666,8 +2632,8 @@ void map_setgatcell(int16 m, int16 x, int16 y, int gat) } /*========================================== - * Invisible Walls - *------------------------------------------*/ +* Invisible Walls +*------------------------------------------*/ static DBMap* iwall_db; void map_iwall_nextxy(int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1) @@ -2699,7 +2665,7 @@ bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable if( (iwall = (struct iwall_data *)strdb_get(iwall_db, wall_name)) != NULL ) return false; // Already Exists - if( map_getcell(m, x, y, CELL_CHKNOREACH) ) + if( iMap->getcell(m, x, y, CELL_CHKNOREACH) ) return false; // Starting cell problem CREATE(iwall, struct iwall_data, 1); @@ -2715,13 +2681,13 @@ bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable { map_iwall_nextxy(x, y, dir, i, &x1, &y1); - if( map_getcell(m, x1, y1, CELL_CHKNOREACH) ) + if( iMap->getcell(m, x1, y1, CELL_CHKNOREACH) ) break; // Collision map[m].setcell(m, x1, y1, CELL_WALKABLE, false); map[m].setcell(m, x1, y1, CELL_SHOOTABLE, shootable); - clif->changemapcell(0, m, x1, y1, map_getcell(m, x1, y1, CELL_GETTYPE), ALL_SAMEMAP); + clif->changemapcell(0, m, x1, y1, iMap->getcell(m, x1, y1, CELL_GETTYPE), ALL_SAMEMAP); } iwall->size = i; @@ -2748,7 +2714,7 @@ void map_iwall_get(struct map_session_data *sd) { for( i = 0; i < iwall->size; i++ ) { map_iwall_nextxy(iwall->x, iwall->y, iwall->dir, i, &x1, &y1); - clif->changemapcell(sd->fd, iwall->m, x1, y1, map_getcell(iwall->m, x1, y1, CELL_GETTYPE), SELF); + clif->changemapcell(sd->fd, iwall->m, x1, y1, iMap->getcell(iwall->m, x1, y1, CELL_GETTYPE), SELF); } } dbi_destroy(iter); @@ -2768,7 +2734,7 @@ void map_iwall_remove(const char *wall_name) map[iwall->m].setcell(iwall->m, x1, y1, CELL_SHOOTABLE, true); map[iwall->m].setcell(iwall->m, x1, y1, CELL_WALKABLE, true); - clif->changemapcell(0, iwall->m, x1, y1, map_getcell(iwall->m, x1, y1, CELL_GETTYPE), ALL_SAMEMAP); + clif->changemapcell(0, iwall->m, x1, y1, iMap->getcell(iwall->m, x1, y1, CELL_GETTYPE), ALL_SAMEMAP); } map[iwall->m].iwall_num--; @@ -2776,8 +2742,8 @@ void map_iwall_remove(const char *wall_name) } /** - * @see DBCreateData - */ +* @see DBCreateData +*/ static DBData create_map_data_other_server(DBKey key, va_list args) { struct map_data_other_server *mdos; @@ -2785,12 +2751,12 @@ static DBData create_map_data_other_server(DBKey key, va_list args) mdos=(struct map_data_other_server *)aCalloc(1,sizeof(struct map_data_other_server)); mdos->index = mapindex; memcpy(mdos->name, mapindex_id2name(mapindex), MAP_NAME_LENGTH); - return DB->ptr2data(mdos); + return iDB->ptr2data(mdos); } /*========================================== - * Add mapindex to db of another map server - *------------------------------------------*/ +* Add mapindex to db of another map server +*------------------------------------------*/ int map_setipport(unsigned short mapindex, uint32 ip, uint16 port) { struct map_data_other_server *mdos; @@ -2810,12 +2776,12 @@ int map_setipport(unsigned short mapindex, uint32 ip, uint16 port) } /** - * Delete all the other maps server management - * @see DBApply - */ +* Delete all the other maps server management +* @see DBApply +*/ int map_eraseallipport_sub(DBKey key, DBData *data, va_list va) { - struct map_data_other_server *mdos = DB->data2ptr(data); + struct map_data_other_server *mdos = iDB->data2ptr(data); if(mdos->cell == NULL) { db_remove(map_db,key); aFree(mdos); @@ -2829,8 +2795,8 @@ int map_eraseallipport(void) { } /*========================================== - * Delete mapindex from db of another map server - *------------------------------------------*/ +* Delete mapindex from db of another map server +*------------------------------------------*/ int map_eraseipport(unsigned short mapindex, uint32 ip, uint16 port) { struct map_data_other_server *mdos; @@ -2847,8 +2813,8 @@ int map_eraseipport(unsigned short mapindex, uint32 ip, uint16 port) { } /*========================================== - * [Shinryo]: Init the mapcache - *------------------------------------------*/ +* [Shinryo]: Init the mapcache +*------------------------------------------*/ static char *map_init_mapcache(FILE *fp) { size_t size = 0; @@ -2878,15 +2844,15 @@ static char *map_init_mapcache(FILE *fp) } /*========================================== - * Map cache reading - * [Shinryo]: Optimized some behaviour to speed this up - *==========================================*/ +* Map cache reading +* [Shinryo]: Optimized some behaviour to speed this up +*==========================================*/ int map_readfromcache(struct map_data *m, char *buffer) { int i; struct map_cache_main_header *header = (struct map_cache_main_header *)buffer; struct map_cache_map_info *info = NULL; char *p = buffer + sizeof(struct map_cache_main_header); - + for(i = 0; i < header->map_count; i++) { info = (struct map_cache_map_info *)p; @@ -2899,7 +2865,7 @@ int map_readfromcache(struct map_data *m, char *buffer) { if( info && i < header->map_count ) { unsigned long size; - + if( info->xs <= 0 || info->ys <= 0 ) return 0;// Invalid @@ -2911,10 +2877,10 @@ int map_readfromcache(struct map_data *m, char *buffer) { ShowWarning("map_readfromcache: %s exceeded MAX_MAP_SIZE of %d\n", info->name, MAX_MAP_SIZE); return 0; // Say not found to remove it from list.. [Shinryo] } - + m->cellPos = p; m->cell = (struct mapcell *)0xdeadbeaf; - + return 1; } @@ -2923,15 +2889,15 @@ int map_readfromcache(struct map_data *m, char *buffer) { int map_addmap(char* mapname) { - map[map_num].instance_id = -1; - mapindex_getmapname(mapname, map[map_num++].name); + map[iMap->map_num].instance_id = -1; + mapindex_getmapname(mapname, map[iMap->map_num++].name); return 0; } static void map_delmapid(int id) { ShowNotice("Removing map [ %s ] from maplist"CL_CLL"\n",map[id].name); - memmove(map+id, map+id+1, sizeof(map[0])*(map_num-id-1)); - map_num--; + memmove(map+id, map+id+1, sizeof(map[0])*(iMap->map_num-id-1)); + iMap->map_num--; } int map_delmap(char* mapname) { @@ -2939,12 +2905,12 @@ int map_delmap(char* mapname) { char map_name[MAP_NAME_LENGTH]; if (strcmpi(mapname, "all") == 0) { - map_num = 0; + iMap->map_num = 0; return 0; } mapindex_getmapname(mapname, map_name); - for(i = 0; i < map_num; i++) { + for(i = 0; i < iMap->map_num; i++) { if (strcmp(map[i].name, map_name) == 0) { map_delmapid(i); return 1; @@ -2955,7 +2921,7 @@ int map_delmap(char* mapname) { void map_zone_db_clear(void) { struct map_zone_data *zone; int i; - + DBIterator *iter = db_iterator(zone_db); for(zone = dbi_first(iter); dbi_exists(iter); zone = dbi_next(iter)) { for(i = 0; i < zone->disabled_skills_count; i++) { @@ -2977,9 +2943,9 @@ void map_zone_db_clear(void) { aFree(zone->capped_skills); } dbi_destroy(iter); - + db_destroy(zone_db);/* will aFree(zone) */ - + /* clear the pk zone stuff */ for(i = 0; i < map_zone_pk.disabled_skills_count; i++) { aFree(map_zone_pk.disabled_skills[i]); @@ -3022,15 +2988,15 @@ void map_clean(int i) { if(map[i].cell && map[i].cell != (struct mapcell *)0xdeadbeaf) aFree(map[i].cell); if(map[i].block) aFree(map[i].block); if(map[i].block_mob) aFree(map[i].block_mob); - + if(battle_config.dynamic_mobs) { //Dynamic mobs flag by [random] int j; if(map[i].mob_delete_timer != INVALID_TIMER) - delete_timer(map[i].mob_delete_timer, map_removemobs_timer); + iTimer->delete_timer(map[i].mob_delete_timer, iMap->removemobs_timer); for (j=0; j<MAX_MOB_LIST_PER_MAP; j++) if (map[i].moblist[j]) aFree(map[i].moblist[j]); } - + if( map[i].unit_count ) { for(v = 0; v < map[i].unit_count; v++) { aFree(map[i].units[v]); @@ -3041,7 +3007,7 @@ void map_clean(int i) { } map[i].unit_count = 0; } - + if( map[i].skill_count ) { for(v = 0; v < map[i].skill_count; v++) { aFree(map[i].skills[v]); @@ -3052,7 +3018,7 @@ void map_clean(int i) { } map[i].skill_count = 0; } - + if( map[i].zone_mf_count ) { for(v = 0; v < map[i].zone_mf_count; v++) { aFree(map[i].zone_mf[v]); @@ -3063,23 +3029,23 @@ void map_clean(int i) { } map[i].zone_mf_count = 0; } - + if( map[i].channel ) clif->chsys_delete(map[i].channel); } void do_final_maps(void) { int i, v = 0; - for( i = 0; i < map_num; i++ ) { - + for( i = 0; i < iMap->map_num; i++ ) { + if(map[i].cell && map[i].cell != (struct mapcell *)0xdeadbeaf ) aFree(map[i].cell); if(map[i].block) aFree(map[i].block); if(map[i].block_mob) aFree(map[i].block_mob); - + if(battle_config.dynamic_mobs) { //Dynamic mobs flag by [random] int j; if(map[i].mob_delete_timer != INVALID_TIMER) - delete_timer(map[i].mob_delete_timer, map_removemobs_timer); + iTimer->delete_timer(map[i].mob_delete_timer, iMap->removemobs_timer); for (j=0; j<MAX_MOB_LIST_PER_MAP; j++) if (map[i].moblist[j]) aFree(map[i].moblist[j]); } @@ -3094,7 +3060,7 @@ void do_final_maps(void) { } map[i].unit_count = 0; } - + if( map[i].skill_count ) { for(v = 0; v < map[i].skill_count; v++) { aFree(map[i].skills[v]); @@ -3105,7 +3071,7 @@ void do_final_maps(void) { } map[i].skill_count = 0; } - + if( map[i].zone_mf_count ) { for(v = 0; v < map[i].zone_mf_count; v++) { aFree(map[i].zone_mf[v]); @@ -3116,25 +3082,25 @@ void do_final_maps(void) { } map[i].zone_mf_count = 0; } - + if( map[i].drop_list_count ) { map[i].drop_list_count = 0; } if( map[i].drop_list != NULL ) aFree(map[i].drop_list); - + if( map[i].channel ) clif->chsys_delete(map[i].channel); } - + map_zone_db_clear(); - + } /// Initializes map flags and adjusts them depending on configuration. void map_flags_init(void) { int i, v = 0; - for( i = 0; i < map_num; i++ ) { + for( i = 0; i < iMap->map_num; i++ ) { // mapflags memset(&map[i].flag, 0, sizeof(map[i].flag)); @@ -3155,7 +3121,7 @@ void map_flags_init(void) { } map[i].units = NULL; map[i].unit_count = 0; - + if( map[i].skill_count ) { for(v = 0; v < map[i].skill_count; v++) { aFree(map[i].skills[v]); @@ -3164,27 +3130,27 @@ void map_flags_init(void) { } map[i].skills = NULL; map[i].skill_count = 0; - + // adjustments if( battle_config.pk_mode ) { map[i].flag.pvp = 1; // make all maps pvp for pk_mode [Valaris] map[i].zone = &map_zone_pk; } else /* align with 'All' zone */ map[i].zone = &map_zone_all; - + if( map[i].zone_mf_count ) { for(v = 0; v < map[i].zone_mf_count; v++) { aFree(map[i].zone_mf[v]); } aFree(map[i].zone_mf); } - + map[i].zone_mf = NULL; map[i].zone_mf_count = 0; map[i].prev_zone = map[i].zone; - + map[i].invincible_time_inc = 0; - + map[i].weapon_damage_rate = 100; map[i].magic_damage_rate = 100; map[i].misc_damage_rate = 100; @@ -3196,15 +3162,15 @@ void map_flags_init(void) { #define NO_WATER 1000000 /* - * Reads from the .rsw for each map - * Returns water height (or NO_WATER if file doesn't exist) or other error is encountered. - * Assumed path for file is data/mapname.rsw - * Credits to LittleWolf - */ +* Reads from the .rsw for each map +* Returns water height (or NO_WATER if file doesn't exist) or other error is encountered. +* Assumed path for file is data/mapname.rsw +* Credits to LittleWolf +*/ int map_waterheight(char* mapname) { char fn[256]; - char *rsw, *found; + char *rsw, *found; //Look up for the rsw sprintf(fn, "data\\%s.rsw", mapname); @@ -3225,8 +3191,8 @@ int map_waterheight(char* mapname) } /*================================== - * .GAT format - *----------------------------------*/ +* .GAT format +*----------------------------------*/ int map_readgat (struct map_data* m) { char filename[256]; @@ -3268,8 +3234,8 @@ int map_readgat (struct map_data* m) } /*====================================== - * Add/Remove map to the map_db - *--------------------------------------*/ +* Add/Remove map to the map_db +*--------------------------------------*/ void map_addmap2db(struct map_data *m) { index2mapid[m->index] = m->m; } @@ -3279,18 +3245,18 @@ void map_removemapdb(struct map_data *m) { } /*====================================== - * Initiate maps loading stage - *--------------------------------------*/ +* Initiate maps loading stage +*--------------------------------------*/ int map_readallmaps (void) { int i; FILE* fp=NULL; int maps_removed = 0; - + if( enable_grf ) ShowStatus("Loading maps (using GRF files)...\n"); else { char mapcachefilepath[254]; - sprintf(mapcachefilepath,"%s/%s%s",db_path,DBPATH,"map_cache.dat"); + sprintf(mapcachefilepath,"%s/%s%s",iMap->db_path,DBPATH,"map_cache.dat"); ShowStatus("Loading maps (using %s as map cache)...\n", mapcachefilepath); if( (fp = fopen(mapcachefilepath, "rb")) == NULL ) { ShowFatalError("Unable to open map cache file "CL_WHITE"%s"CL_RESET"\n", mapcachefilepath); @@ -3305,23 +3271,23 @@ int map_readallmaps (void) { } } - for(i = 0; i < map_num; i++) { + for(i = 0; i < iMap->map_num; i++) { size_t size; // show progress if(enable_grf) - ShowStatus("Loading maps [%i/%i]: %s"CL_CLL"\r", i, map_num, map[i].name); + ShowStatus("Loading maps [%i/%i]: %s"CL_CLL"\r", i, iMap->map_num, map[i].name); // try to load the map if( ! (enable_grf? - map_readgat(&map[i]) - :map_readfromcache(&map[i], map_cache_buffer)) + map_readgat(&map[i]) + :map_readfromcache(&map[i], map_cache_buffer)) ) { - map_delmapid(i); - maps_removed++; - i--; - continue; + map_delmapid(i); + maps_removed++; + i--; + continue; } map[i].index = mapindex_name2id(map[i].name); @@ -3337,9 +3303,9 @@ int map_readallmaps (void) { i--; continue; } - + map[i].m = i; - map_addmap2db(&map[i]); + iMap->addmap2db(&map[i]); memset(map[i].moblist, 0, sizeof(map[i].moblist)); //Initialize moblist [Skotlex] map[i].mob_delete_timer = INVALID_TIMER; //Initialize timer [Skotlex] @@ -3350,21 +3316,21 @@ int map_readallmaps (void) { size = map[i].bxs * map[i].bys * sizeof(struct block_list*); map[i].block = (struct block_list**)aCalloc(size, 1); map[i].block_mob = (struct block_list**)aCalloc(size, 1); - + map[i].getcellp = map_sub_getcellp; map[i].setcell = map_sub_setcell; } // intialization and configuration-dependent adjustments of mapflags - map_flags_init(); + iMap->flags_init(); if( !enable_grf ) { fclose(fp); } // finished map loading - ShowInfo("Successfully loaded '"CL_WHITE"%d"CL_RESET"' maps."CL_CLL"\n",map_num); - instance->start_id = map_num; // Next Map Index will be instances + ShowInfo("Successfully loaded '"CL_WHITE"%d"CL_RESET"' maps."CL_CLL"\n",iMap->map_num); + instance->start_id = iMap->map_num; // Next Map Index will be instances if (maps_removed) ShowNotice("Maps removed: '"CL_WHITE"%d"CL_RESET"'\n",maps_removed); @@ -3377,8 +3343,8 @@ static int map_ip_set = 0; static int char_ip_set = 0; /*========================================== - * Read map server configuration files (conf/map_server.conf...) - *------------------------------------------*/ +* Read map server configuration files (conf/map_server.conf...) +*------------------------------------------*/ int map_config_read(char *cfgName) { char line[1024], w1[1024], w2[1024]; FILE *fp; @@ -3429,35 +3395,35 @@ int map_config_read(char *cfgName) { clif->setport(atoi(w2)); map_port = (atoi(w2)); } else if (strcmpi(w1, "map") == 0) - map_num++; + iMap->map_num++; else if (strcmpi(w1, "delmap") == 0) - map_num--; + iMap->map_num--; else if (strcmpi(w1, "npc") == 0) npc_addsrcfile(w2); else if (strcmpi(w1, "delnpc") == 0) npc_delsrcfile(w2); else if (strcmpi(w1, "autosave_time") == 0) { - autosave_interval = atoi(w2); - if (autosave_interval < 1) //Revert to default saving. - autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; + iMap->autosave_interval = atoi(w2); + if (iMap->autosave_interval < 1) //Revert to default saving. + iMap->autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; else - autosave_interval *= 1000; //Pass from sec to ms + iMap->autosave_interval *= 1000; //Pass from sec to ms } else if (strcmpi(w1, "minsave_time") == 0) { - minsave_interval= atoi(w2); - if (minsave_interval < 1) - minsave_interval = 1; + iMap->minsave_interval= atoi(w2); + if (iMap->minsave_interval < 1) + iMap->minsave_interval = 1; } else if (strcmpi(w1, "save_settings") == 0) - save_settings = atoi(w2); + iMap->save_settings = atoi(w2); else if (strcmpi(w1, "help_txt") == 0) - strcpy(help_txt, w2); + strcpy(iMap->help_txt, w2); else if (strcmpi(w1, "help2_txt") == 0) - strcpy(help2_txt, w2); + strcpy(iMap->help2_txt, w2); else if (strcmpi(w1, "charhelp_txt") == 0) - strcpy(charhelp_txt, w2); + strcpy(iMap->charhelp_txt, w2); else if(strcmpi(w1,"db_path") == 0) - safestrncpy(db_path,w2,255); + safestrncpy(iMap->db_path,w2,255); else if (strcmpi(w1, "enable_spy") == 0) - enable_spy = config_switch(w2); + iMap->enable_spy = config_switch(w2); else if (strcmpi(w1, "use_grf") == 0) enable_grf = config_switch(w2); else if (strcmpi(w1, "console_msg_log") == 0) @@ -3474,37 +3440,37 @@ int map_config_read(char *cfgName) { int map_config_read_sub(char *cfgName) { char line[1024], w1[1024], w2[1024]; FILE *fp; - + fp = fopen(cfgName,"r"); if( fp == NULL ) { ShowError("Map configuration file not found at: %s\n", cfgName); return 1; } - + while( fgets(line, sizeof(line), fp) ) { char* ptr; - + if( line[0] == '/' && line[1] == '/' ) continue; if( (ptr = strstr(line, "//")) != NULL ) *ptr = '\n'; //Strip comments if( sscanf(line, "%[^:]: %[^\t\r\n]", w1, w2) < 2 ) continue; - + //Strip trailing spaces ptr = w2 + strlen(w2); while (--ptr >= w2 && *ptr == ' '); ptr++; *ptr = '\0'; - + if (strcmpi(w1, "map") == 0) map_addmap(w2); else if (strcmpi(w1, "delmap") == 0) - map_delmap(w2); + iMap->delmap(w2); else if (strcmpi(w1, "import") == 0) map_config_read_sub(w2); } - + fclose(fp); return 0; } @@ -3578,64 +3544,64 @@ int inter_config_read(char *cfgName) continue; if(strcmpi(w1,"item_db_db")==0) - strcpy(item_db_db,w2); - else - if(strcmpi(w1,"mob_db_db")==0) - strcpy(mob_db_db,w2); - else - if(strcmpi(w1,"item_db2_db")==0) - strcpy(item_db2_db,w2); - else - if(strcmpi(w1,"item_db_re_db")==0) - strcpy(item_db_re_db,w2); - else - if(strcmpi(w1,"mob_db2_db")==0) - strcpy(mob_db2_db,w2); - else - //Map Server SQL DB - if(strcmpi(w1,"map_server_ip")==0) - strcpy(map_server_ip, w2); - else - if(strcmpi(w1,"map_server_port")==0) - map_server_port=atoi(w2); - else - if(strcmpi(w1,"map_server_id")==0) - strcpy(map_server_id, w2); - else - if(strcmpi(w1,"map_server_pw")==0) - strcpy(map_server_pw, w2); - else - if(strcmpi(w1,"map_server_db")==0) - strcpy(map_server_db, w2); - else - if(strcmpi(w1,"default_codepage")==0) - strcpy(default_codepage, w2); - else - if(strcmpi(w1,"use_sql_db")==0) { - db_use_sqldbs = config_switch(w2); - ShowStatus ("Using SQL dbs: %s\n",w2); - } else - if(strcmpi(w1,"log_db_ip")==0) - strcpy(log_db_ip, w2); + strcpy(iMap->item_db_db,w2); else - if(strcmpi(w1,"log_db_id")==0) - strcpy(log_db_id, w2); - else - if(strcmpi(w1,"log_db_pw")==0) - strcpy(log_db_pw, w2); - else - if(strcmpi(w1,"log_db_port")==0) - log_db_port = atoi(w2); - else - if(strcmpi(w1,"log_db_db")==0) - strcpy(log_db_db, w2); - else - if( mapreg_config_read(w1,w2) ) - continue; - //support the import command, just like any other config - else - if(strcmpi(w1,"import")==0) - inter_config_read(w2); + if(strcmpi(w1,"mob_db_db")==0) + strcpy(iMap->mob_db_db,w2); + else + if(strcmpi(w1,"item_db2_db")==0) + strcpy(iMap->item_db2_db,w2); + else + if(strcmpi(w1,"item_db_re_db")==0) + strcpy(iMap->item_db_re_db,w2); + else + if(strcmpi(w1,"mob_db2_db")==0) + strcpy(iMap->mob_db2_db,w2); + else + //Map Server SQL DB + if(strcmpi(w1,"map_server_ip")==0) + strcpy(map_server_ip, w2); + else + if(strcmpi(w1,"map_server_port")==0) + map_server_port=atoi(w2); + else + if(strcmpi(w1,"map_server_id")==0) + strcpy(map_server_id, w2); + else + if(strcmpi(w1,"map_server_pw")==0) + strcpy(map_server_pw, w2); + else + if(strcmpi(w1,"map_server_db")==0) + strcpy(map_server_db, w2); + else + if(strcmpi(w1,"default_codepage")==0) + strcpy(default_codepage, w2); + else + if(strcmpi(w1,"use_sql_db")==0) { + iMap->db_use_sqldbs = config_switch(w2); + ShowStatus ("Using SQL dbs: %s\n",w2); + } else + if(strcmpi(w1,"log_db_ip")==0) + strcpy(log_db_ip, w2); + else + if(strcmpi(w1,"log_db_id")==0) + strcpy(log_db_id, w2); + else + if(strcmpi(w1,"log_db_pw")==0) + strcpy(log_db_pw, w2); + else + if(strcmpi(w1,"log_db_port")==0) + log_db_port = atoi(w2); + else + if(strcmpi(w1,"log_db_db")==0) + strcpy(log_db_db, w2); + else + if( mapreg_config_read(w1,w2) ) + continue; + //support the import command, just like any other config + else + if(strcmpi(w1,"import")==0) + inter_config_read(w2); } fclose(fp); @@ -3643,8 +3609,8 @@ int inter_config_read(char *cfgName) } /*======================================= - * MySQL Init - *---------------------------------------*/ +* MySQL Init +*---------------------------------------*/ int map_sql_init(void) { // main db connection @@ -3692,21 +3658,21 @@ int log_sql_init(void) } void map_zone_change2(int m, struct map_zone_data *zone) { char empty[1] = "\0"; - + map[m].prev_zone = map[m].zone; if( map[m].zone_mf_count ) - map_zone_remove(m); - - map_zone_apply(m,zone,empty,empty,empty); + iMap->zone_remove(m); + + iMap->zone_apply(m,zone,empty,empty,empty); } /* when changing from a mapflag to another during runtime */ void map_zone_change(int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath) { map[m].prev_zone = map[m].zone; - + if( map[m].zone_mf_count ) - map_zone_remove(m); - map_zone_apply(m,zone,start,buffer,filepath); + iMap->zone_remove(m); + iMap->zone_apply(m,zone,start,buffer,filepath); } /* removes previous mapflags from this map */ void map_zone_remove(int m) { @@ -3724,12 +3690,12 @@ void map_zone_remove(int m) { break; } } - + npc_parse_mapflag(map[m].name,empty,flag,params,empty,empty,empty); aFree(map[m].zone_mf[k]); map[m].zone_mf[k] = NULL; } - + aFree(map[m].zone_mf); map[m].zone_mf = NULL; map[m].zone_mf_count = 0; @@ -3744,31 +3710,31 @@ static inline void map_zone_mf_cache_add(int m, char *rflag) { bool map_zone_mf_cache(int m, char *flag, char *params) { char rflag[MAP_ZONE_MAPFLAG_LENGTH]; int state = 1; - + if (params[0] != '\0' && !strcmpi(params, "off")) state = 0; - + if (!strcmpi(flag, "nosave")) { ;/* not yet supported to be reversed */ /* char savemap[32]; int savex, savey; if (state == 0) { - if( map[m].flag.nosave ) { - sprintf(rflag, "nosave SavePoint"); - map_zone_mf_cache_add(m,nosave); - } + if( map[m].flag.nosave ) { + sprintf(rflag, "nosave SavePoint"); + map_zone_mf_cache_add(m,nosave); + } } else if (!strcmpi(params, "SavePoint")) { - if( map[m].save.map ) { - sprintf(rflag, "nosave %s,%d,%d",mapindex_id2name(map[m].save.map),map[m].save.x,map[m].save.y); - } else - sprintf(rflag, "nosave %s,%d,%d",mapindex_id2name(map[m].save.map),map[m].save.x,map[m].save.y); - map_zone_mf_cache_add(m,nosave); + if( map[m].save.map ) { + sprintf(rflag, "nosave %s,%d,%d",mapindex_id2name(map[m].save.map),map[m].save.x,map[m].save.y); + } else + sprintf(rflag, "nosave %s,%d,%d",mapindex_id2name(map[m].save.map),map[m].save.x,map[m].save.y); + map_zone_mf_cache_add(m,nosave); } else if (sscanf(params, "%31[^,],%d,%d", savemap, &savex, &savey) == 3) { - if( map[m].save.map ) { - sprintf(rflag, "nosave %s,%d,%d",mapindex_id2name(map[m].save.map),map[m].save.x,map[m].save.y); - map_zone_mf_cache_add(m,nosave); - } + if( map[m].save.map ) { + sprintf(rflag, "nosave %s,%d,%d",mapindex_id2name(map[m].save.map),map[m].save.x,map[m].save.y); + map_zone_mf_cache_add(m,nosave); + } }*/ } else if (!strcmpi(flag,"autotrade")) { if( state && map[m].flag.autotrade ) @@ -3910,33 +3876,33 @@ bool map_zone_mf_cache(int m, char *flag, char *params) { /*char drop_arg1[16], drop_arg2[16]; int drop_per = 0; if (sscanf(w4, "%[^,],%[^,],%d", drop_arg1, drop_arg2, &drop_per) == 3) { - int drop_id = 0, drop_type = 0; - if (!strcmpi(drop_arg1, "random")) - drop_id = -1; - else if (itemdb_exists((drop_id = atoi(drop_arg1))) == NULL) - drop_id = 0; - if (!strcmpi(drop_arg2, "inventory")) - drop_type = 1; - else if (!strcmpi(drop_arg2,"equip")) - drop_type = 2; - else if (!strcmpi(drop_arg2,"all")) - drop_type = 3; - - if (drop_id != 0){ - int i; - for (i = 0; i < MAX_DROP_PER_MAP; i++) { - if (map[m].drop_list[i].drop_id == 0){ - map[m].drop_list[i].drop_id = drop_id; - map[m].drop_list[i].drop_type = drop_type; - map[m].drop_list[i].drop_per = drop_per; - break; - } - } - map[m].flag.pvp_nightmaredrop = 1; - } + int drop_id = 0, drop_type = 0; + if (!strcmpi(drop_arg1, "random")) + drop_id = -1; + else if (itemdb_exists((drop_id = atoi(drop_arg1))) == NULL) + drop_id = 0; + if (!strcmpi(drop_arg2, "inventory")) + drop_type = 1; + else if (!strcmpi(drop_arg2,"equip")) + drop_type = 2; + else if (!strcmpi(drop_arg2,"all")) + drop_type = 3; + + if (drop_id != 0){ + int i; + for (i = 0; i < MAX_DROP_PER_MAP; i++) { + if (map[m].drop_list[i].drop_id == 0){ + map[m].drop_list[i].drop_id = drop_id; + map[m].drop_list[i].drop_type = drop_type; + map[m].drop_list[i].drop_per = drop_per; + break; + } + } + map[m].flag.pvp_nightmaredrop = 1; + } } else if (!state) //Disable - map[m].flag.pvp_nightmaredrop = 0; - */ + map[m].flag.pvp_nightmaredrop = 0; + */ } else if (!strcmpi(flag,"pvp_nocalcrank")) { if( state && map[m].flag.pvp_nocalcrank ) ;/* nothing to do */ @@ -4267,10 +4233,10 @@ bool map_zone_mf_cache(int m, char *flag, char *params) { int skill_id, k; char skill_name[MAP_ZONE_MAPFLAG_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH]; int len = strlen(params); - + modifier[0] = '\0'; memcpy(skill_name, params, MAP_ZONE_MAPFLAG_LENGTH); - + for(k = 0; k < len; k++) { if( skill_name[k] == '\t' ) { memcpy(modifier, &skill_name[k+1], len - k); @@ -4278,15 +4244,15 @@ bool map_zone_mf_cache(int m, char *flag, char *params) { break; } } - + if( modifier[0] == '\0' || !( skill_id = skill->name2id(skill_name) ) || !skill->get_unit_id( skill->name2id(skill_name), 0) || atoi(modifier) < 1 || atoi(modifier) > USHRT_MAX ) { ;/* we dont mind it, the server will take care of it next. */ } else { int idx = map[m].unit_count; - + k = 0; ARR_FIND(0, idx, k, map[m].units[k]->skill_id == skill_id); - + if( k < idx ) { if( atoi(modifier) != map[m].units[k]->modifier ) { sprintf(rflag,"adjust_unit_duration %s %d",skill_name,map[m].units[k]->modifier); @@ -4301,10 +4267,10 @@ bool map_zone_mf_cache(int m, char *flag, char *params) { int skill_id, k; char skill_name[MAP_ZONE_MAPFLAG_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH]; int len = strlen(params); - + modifier[0] = '\0'; memcpy(skill_name, params, MAP_ZONE_MAPFLAG_LENGTH); - + for(k = 0; k < len; k++) { if( skill_name[k] == '\t' ) { memcpy(modifier, &skill_name[k+1], len - k); @@ -4312,15 +4278,15 @@ bool map_zone_mf_cache(int m, char *flag, char *params) { break; } } - + if( modifier[0] == '\0' || !( skill_id = skill->name2id(skill_name) ) || atoi(modifier) < 1 || atoi(modifier) > USHRT_MAX ) { ;/* we dont mind it, the server will take care of it next. */ } else { int idx = map[m].skill_count; - + k = 0; ARR_FIND(0, idx, k, map[m].skills[k]->skill_id == skill_id); - + if( k < idx ) { if( atoi(modifier) != map[m].skills[k]->modifier ) { sprintf(rflag,"adjust_skill_damage %s %d",skill_name,map[m].skills[k]->modifier); @@ -4330,7 +4296,7 @@ bool map_zone_mf_cache(int m, char *flag, char *params) { sprintf(rflag,"adjust_skill_damage %s 100",skill_name); map_zone_mf_cache_add(m,rflag); } - + } } else if (!strcmpi(flag,"zone")) { ShowWarning("You can't add a zone through a zone! ERROR, skipping for '%s'...\n",map[m].name); @@ -4445,10 +4411,10 @@ void map_zone_apply(int m, struct map_zone_data *zone, const char* start, const break; } } - + if( map_zone_mf_cache(m,flag,params) ) continue; - + npc_parse_mapflag(map[m].name,empty,flag,params,start,buffer,filepath); } } @@ -4458,9 +4424,9 @@ void map_zone_init(void) { struct map_zone_data *zone; char empty[1] = "\0"; int i,k,j; - + zone = &map_zone_all; - + for(i = 0; i < zone->mapflags_count; i++) { int len = strlen(zone->mapflags[i]); params[0] = '\0'; @@ -4472,8 +4438,8 @@ void map_zone_init(void) { break; } } - - for(j = 0; j < map_num; j++) { + + for(j = 0; j < iMap->map_num; j++) { if( map[j].zone == zone ) { if( map_zone_mf_cache(j,flag,params) ) break; @@ -4481,7 +4447,7 @@ void map_zone_init(void) { } } } - + if( battle_config.pk_mode ) { zone = &map_zone_pk; for(i = 0; i < zone->mapflags_count; i++) { @@ -4495,7 +4461,7 @@ void map_zone_init(void) { break; } } - for(j = 0; j < map_num; j++) { + for(j = 0; j < iMap->map_num; j++) { if( map[j].zone == zone ) { if( map_zone_mf_cache(j,flag,params) ) break; @@ -4504,11 +4470,11 @@ void map_zone_init(void) { } } } - + } unsigned short map_zone_str2itemid(const char *name) { struct item_data *data; - + if( !name ) return 0; if( name[0] == 'I' && name[1] == 'D' && strlen(name) <= 7 ) { @@ -4524,10 +4490,10 @@ unsigned short map_zone_str2itemid(const char *name) { } unsigned short map_zone_str2skillid(const char *name) { unsigned short nameid = 0; - + if( !name ) return 0; - + if( name[0] == 'I' && name[1] == 'D' && strlen(name) <= 7 ) { if( !skill->get_index((nameid = atoi(name+2))) ) return 0; @@ -4545,11 +4511,11 @@ enum bl_type map_zone_bl_type(const char *entry, enum map_zone_skill_subtype *su if( !entry ) return BL_NUL; - + safestrncpy(temp, entry, 200); - + parse = strtok(temp,"|"); - + while (parse != NULL) { normalize_name(parse," "); if( strcmpi(parse,"player") == 0 ) @@ -4594,9 +4560,9 @@ void read_map_zone_db(void) { #endif if (conf_read_file(&map_zone_db, config_filename)) return; - + zones = config_lookup(&map_zone_db, "zones"); - + if (zones != NULL) { struct map_zone_data *zone; config_setting_t *zone_e; @@ -4611,22 +4577,22 @@ void read_map_zone_db(void) { int zone_count = 0, disabled_skills_count = 0, disabled_items_count = 0, mapflags_count = 0, disabled_commands_count = 0, capped_skills_count = 0; enum map_zone_skill_subtype subtype; - + zone_count = config_setting_length(zones); for (i = 0; i < zone_count; ++i) { bool is_all = false; - + zone_e = config_setting_get_elem(zones, i); - + if (!config_setting_lookup_string(zone_e, "name", &zonename)) { ShowError("map_zone_db: missing zone name, skipping... (%s:%d)\n", - config_setting_source_file(zone_e), config_setting_source_line(zone_e)); + config_setting_source_file(zone_e), config_setting_source_line(zone_e)); config_setting_remove_elem(zones,i);/* remove from the tree */ --zone_count; --i; continue; } - + if( strdb_exists(zone_db, zonename) ) { ShowError("map_zone_db: duplicate zone name '%s', skipping...\n",zonename); config_setting_remove_elem(zones,i);/* remove from the tree */ @@ -4634,7 +4600,7 @@ void read_map_zone_db(void) { --i; continue; } - + /* is this the global template? */ if( strncmpi(zonename,MAP_ZONE_NORMAL_NAME,MAP_ZONE_NAME_LENGTH) == 0 ) { zone = &map_zone_all; @@ -4648,7 +4614,7 @@ void read_map_zone_db(void) { zone->disabled_items_count = 0; } safestrncpy(zone->name, zonename, MAP_ZONE_NAME_LENGTH); - + if( (skills = config_setting_get_member(zone_e, "disabled_skills")) != NULL ) { disabled_skills_count = config_setting_length(skills); /* validate */ @@ -4672,21 +4638,21 @@ void read_map_zone_db(void) { struct map_zone_disabled_skill_entry * entry; enum bl_type type; name = config_setting_name(skill); - + if( (type = map_zone_bl_type(config_setting_get_string_elem(skills,h),&subtype)) ) { /* only add if enabled */ CREATE( entry, struct map_zone_disabled_skill_entry, 1 ); - + entry->nameid = map_zone_str2skillid(name); entry->type = type; entry->subtype = subtype; - + zone->disabled_skills[v++] = entry; } - + } zone->disabled_skills_count = disabled_skills_count; } - + if( (items = config_setting_get_member(zone_e, "disabled_items")) != NULL ) { disabled_items_count = config_setting_length(items); /* validate */ @@ -4707,31 +4673,31 @@ void read_map_zone_db(void) { CREATE( zone->disabled_items, int, disabled_items_count ); for(h = 0, v = 0; h < config_setting_length(items); h++) { config_setting_t *item = config_setting_get_elem(items, h); - + if( config_setting_get_bool(item) ) { /* only add if enabled */ name = config_setting_name(item); zone->disabled_items[v++] = map_zone_str2itemid(name); } - + } zone->disabled_items_count = disabled_items_count; } - + if( (mapflags = config_setting_get_member(zone_e, "mapflags")) != NULL ) { mapflags_count = config_setting_length(mapflags); /* mapflags are not validated here, so we save all anyway */ CREATE( zone->mapflags, char *, mapflags_count ); for(h = 0; h < mapflags_count; h++) { CREATE( zone->mapflags[h], char, MAP_ZONE_MAPFLAG_LENGTH ); - + name = config_setting_get_string_elem(mapflags, h); - + safestrncpy(zone->mapflags[h], name, MAP_ZONE_MAPFLAG_LENGTH); - + } zone->mapflags_count = mapflags_count; } - + if( (commands = config_setting_get_member(zone_e, "disabled_commands")) != NULL ) { disabled_commands_count = config_setting_length(commands); /* validate */ @@ -4755,19 +4721,19 @@ void read_map_zone_db(void) { struct map_zone_disabled_command_entry * entry; int group_lv; name = config_setting_name(command); - + if( (group_lv = config_setting_get_int(command)) ) { /* only add if enabled */ CREATE( entry, struct map_zone_disabled_command_entry, 1 ); - + entry->cmd = atcommand->exists(name)->func; entry->group_lv = group_lv; - + zone->disabled_commands[v++] = entry; } } zone->disabled_commands_count = disabled_commands_count; } - + if( (caps = config_setting_get_member(zone_e, "skill_damage_cap")) != NULL ) { capped_skills_count = config_setting_length(caps); /* validate */ @@ -4791,10 +4757,10 @@ void read_map_zone_db(void) { struct map_zone_skill_damage_cap_entry * entry; enum bl_type type; name = config_setting_name(cap); - + if( (type = map_zone_bl_type(config_setting_get_string_elem(cap,1),&subtype)) ) { /* only add if enabled */ CREATE( entry, struct map_zone_skill_damage_cap_entry, 1 ); - + entry->nameid = map_zone_str2skillid(name); entry->cap = config_setting_get_int_elem(cap,0); entry->type = type; @@ -4804,25 +4770,25 @@ void read_map_zone_db(void) { } zone->capped_skills_count = capped_skills_count; } - + if( !is_all ) /* global template doesn't go into db -- since it isn't a alloc'd piece of data */ strdb_put(zone_db, zonename, zone); - + } - + /* process inheritance, aka loop through the whole thing again :P */ for (i = 0; i < zone_count; ++i) { config_setting_t *inherit_tree = NULL; config_setting_t *new_entry = NULL; int inherit_count; - + zone_e = config_setting_get_elem(zones, i); config_setting_lookup_string(zone_e, "name", &zonename); if( strncmpi(zonename,MAP_ZONE_ALL_NAME,MAP_ZONE_NAME_LENGTH) == 0 ) { continue;/* all zone doesn't inherit anything (if it did, everything would link to each other and boom endless loop) */ } - + if( (inherit_tree = config_setting_get_member(zone_e, "inherit")) != NULL ) { /* append global zone to this */ new_entry = config_setting_add(inherit_tree,MAP_ZONE_ALL_NAME,CONFIG_TYPE_STRING); @@ -4842,7 +4808,7 @@ void read_map_zone_db(void) { int disabled_commands_count_i = 0; /* commands count from inherit zone */ int capped_skills_count_i = 0; /* skill capped count from inherit zone */ int j; - + name = config_setting_get_string_elem(inherit_tree, h); config_setting_lookup_string(zone_e, "name", &zonename);/* will succeed for we validated it earlier */ @@ -4850,20 +4816,20 @@ void read_map_zone_db(void) { ShowError("map_zone_db: Unknown zone '%s' being inherit by zone '%s', skipping...\n",name,zonename); continue; } - + if( strncmpi(zonename,MAP_ZONE_NORMAL_NAME,MAP_ZONE_NAME_LENGTH) == 0 ) { zone = &map_zone_all; } else if( strncmpi(zonename,MAP_ZONE_PK_NAME,MAP_ZONE_NAME_LENGTH) == 0 ) { zone = &map_zone_pk; } else zone = strdb_get(zone_db, zonename);/* will succeed for we just put it in here */ - + disabled_skills_count_i = izone->disabled_skills_count; disabled_items_count_i = izone->disabled_items_count; mapflags_count_i = izone->mapflags_count; disabled_commands_count_i = izone->disabled_commands_count; capped_skills_count_i = izone->capped_skills_count; - + /* process everything to override, paying attention to config_setting_get_bool */ if( disabled_skills_count_i ) { if( (skills = config_setting_get_member(zone_e, "disabled_skills")) == NULL ) @@ -4887,7 +4853,7 @@ void read_map_zone_db(void) { } } } - + if( disabled_items_count_i ) { if( (items = config_setting_get_member(zone_e, "disabled_items")) == NULL ) items = config_setting_add(zone_e, "disabled_items",CONFIG_TYPE_GROUP); @@ -4896,9 +4862,9 @@ void read_map_zone_db(void) { int k; for(k = 0; k < disabled_items_count; k++) { config_setting_t *item = config_setting_get_elem(items, k); - + name = config_setting_name(item); - + if( map_zone_str2itemid(name) == izone->disabled_items[j] ) { if( config_setting_get_bool(item) ) continue; @@ -4911,7 +4877,7 @@ void read_map_zone_db(void) { } } } - + if( mapflags_count_i ) { if( (mapflags = config_setting_get_member(zone_e, "mapflags")) == NULL ) mapflags = config_setting_add(zone_e, "mapflags",CONFIG_TYPE_ARRAY); @@ -4920,7 +4886,7 @@ void read_map_zone_db(void) { int k; for(k = 0; k < mapflags_count; k++) { name = config_setting_get_string_elem(mapflags, k); - + if( strcmpi(name,izone->mapflags[j]) == 0 ) { break; } @@ -4932,7 +4898,7 @@ void read_map_zone_db(void) { } } } - + if( disabled_commands_count_i ) { if( (commands = config_setting_get_member(zone_e, "disabled_commands")) == NULL ) commands = config_setting_add(zone_e, "disabled_commands",CONFIG_TYPE_GROUP); @@ -4956,11 +4922,11 @@ void read_map_zone_db(void) { } } } - + if( capped_skills_count_i ) { if( (caps = config_setting_get_member(zone_e, "skill_damage_cap")) == NULL ) caps = config_setting_add(zone_e, "skill_damage_cap",CONFIG_TYPE_GROUP); - + capped_skills_count = config_setting_length(caps); for(j = 0; j < capped_skills_count_i; j++) { int k; @@ -4984,7 +4950,7 @@ void read_map_zone_db(void) { } } - + ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' zones in '"CL_WHITE"%s"CL_RESET"'.\n", zone_count, config_filename); /* not supposed to go in here but in skill_final whatever */ config_destroy(&map_zone_db); @@ -4992,23 +4958,23 @@ void read_map_zone_db(void) { } /** - * @see DBApply - */ +* @see DBApply +*/ int map_db_final(DBKey key, DBData *data, va_list ap) { - struct map_data_other_server *mdos = DB->data2ptr(data); + struct map_data_other_server *mdos = iDB->data2ptr(data); - if(mdos && malloclib->verify_ptr(mdos) && mdos->cell == NULL) + if(mdos && iMalloc->verify_ptr(mdos) && mdos->cell == NULL) aFree(mdos); - + return 0; } /** - * @see DBApply - */ +* @see DBApply +*/ int nick_db_final(DBKey key, DBData *data, va_list args) { - struct charid2nick* p = DB->data2ptr(data); + struct charid2nick* p = iDB->data2ptr(data); struct charid_request* req; if( p == NULL ) @@ -5027,40 +4993,40 @@ int cleanup_sub(struct block_list *bl, va_list ap) { nullpo_ret(bl); switch(bl->type) { - case BL_PC: - map_quit((struct map_session_data *) bl); - break; - case BL_NPC: - npc_unload((struct npc_data *)bl,false); - break; - case BL_MOB: - unit_free(bl,CLR_OUTSIGHT); - break; - case BL_PET: + case BL_PC: + iMap->quit((struct map_session_data *) bl); + break; + case BL_NPC: + npc_unload((struct npc_data *)bl,false); + break; + case BL_MOB: + unit_free(bl,CLR_OUTSIGHT); + break; + case BL_PET: //There is no need for this, the pet is removed together with the player. [Skotlex] - break; - case BL_ITEM: - map_clearflooritem(bl); - break; - case BL_SKILL: - skill->delunit((struct skill_unit *) bl); - break; + break; + case BL_ITEM: + iMap->clearflooritem(bl); + break; + case BL_SKILL: + skill->delunit((struct skill_unit *) bl); + break; } return 1; } /** - * @see DBApply - */ +* @see DBApply +*/ static int cleanup_db_sub(DBKey key, DBData *data, va_list va) { - return cleanup_sub(DB->data2ptr(data), va); + return iMap->cleanup_sub(iDB->data2ptr(data), va); } /*========================================== - * map destructor - *------------------------------------------*/ +* map destructor +*------------------------------------------*/ void do_final(void) { int i; @@ -5074,26 +5040,26 @@ void do_final(void) //Ladies and babies first. iter = mapit_getallusers(); for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) - map_quit(sd); + iMap->quit(sd); mapit->free(iter); instance->final(); - + /* prepares npcs for a faster shutdown process */ do_clear_npc(); // remove all objects on maps - for (i = 0; i < map_num; i++) { - ShowStatus("Cleaning up maps [%d/%d]: %s..."CL_CLL"\r", i+1, map_num, map[i].name); + for (i = 0; i < iMap->map_num; i++) { + ShowStatus("Cleaning up maps [%d/%d]: %s..."CL_CLL"\r", i+1, iMap->map_num, map[i].name); if (map[i].m >= 0) - map_foreachinmap(cleanup_sub, i, BL_ALL); + map_foreachinmap(iMap->cleanup_sub, i, BL_ALL); } - ShowStatus("Cleaned up %d maps."CL_CLL"\n", map_num); + ShowStatus("Cleaned up %d maps."CL_CLL"\n", iMap->map_num); id_db->foreach(id_db,cleanup_db_sub); chrif_char_reset_offline(); chrif_flush_fifo(); - + atcommand->final(); battle->final(); do_final_chrif(); @@ -5104,8 +5070,8 @@ void do_final(void) do_final_itemdb(); do_final_storage(); guild->final(); - do_final_party(); - do_final_pc(); + iParty->do_final_party(); + iPc->do_final_pc(); do_final_pet(); do_final_mob(); homun->final(); @@ -5118,9 +5084,9 @@ void do_final(void) do_final_elemental(); do_final_maps(); vending->final(); - + map_db->destroy(map_db, map_db_final); - + mapindex_final(); if(enable_grf) grfio_final(); @@ -5134,9 +5100,9 @@ void do_final(void) iwall_db->destroy(iwall_db, NULL); regen_db->destroy(regen_db, NULL); - map_sql_close(); + map_sql_close(); ers_destroy(map_iterator_ers); - + aFree(map); if( !enable_grf ) @@ -5172,13 +5138,13 @@ void do_abort(void) return; } ShowError("Server received crash signal! Attempting to save all online characters!\n"); - map_foreachpc(map_abort_sub); + iMap->map_foreachpc(map_abort_sub); chrif_flush_fifo(); } /*====================================================== - * Map-Server Version Screen [MC Cameri] - *------------------------------------------------------*/ +* Map-Server Version Screen [MC Cameri] +*------------------------------------------------------*/ static void map_helpscreen(bool do_exit) { ShowInfo("Usage: %s [options]\n", SERVER_NAME); @@ -5200,8 +5166,8 @@ static void map_helpscreen(bool do_exit) } /*====================================================== - * Map-Server Version Screen [MC Cameri] - *------------------------------------------------------*/ +* Map-Server Version Screen [MC Cameri] +*------------------------------------------------------*/ static void map_versionscreen(bool do_exit) { const char *svn = get_svn_revision(); const char *git = get_git_hash(); @@ -5256,23 +5222,23 @@ CPCMD(gm_position) { return; } - if ( (m = map_mapname2mapid(map_name) <= 0 ) ) { + if ( (m = iMap->mapname2mapid(map_name) <= 0 ) ) { ShowError("gm:info '"CL_WHITE"%s"CL_RESET"' is not a known map\n",map_name); return; } - + if( x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) { ShowError("gm:info '"CL_WHITE"%d %d"CL_RESET"' is out of '"CL_WHITE"%s"CL_RESET"' map bounds!\n",x,y,map_name); return; } - + ShowInfo("HCP: updated console's game position to '"CL_WHITE"%d %d %s"CL_RESET"'\n",x,y,map_name); cpsd.bl.x = x; cpsd.bl.y = y; cpsd.bl.m = m; } CPCMD(gm_use) { - + if( line == NULL ) { ShowError("gm:use invalid syntax. use '"CL_WHITE"gm:use @command <optional params>"CL_RESET"'\n"); return; @@ -5283,7 +5249,7 @@ CPCMD(gm_use) { else ShowInfo("HCP: '"CL_WHITE"%s"CL_RESET"' was used\n",line); cpsd.fd = 0; - + } /* Hercules Console Parser */ void map_cp_defaults(void) { @@ -5292,7 +5258,7 @@ void map_cp_defaults(void) { strcpy(cpsd.status.name, "Hercules Console"); cpsd.bl.x = 150; cpsd.bl.y = 150; - cpsd.bl.m = map_mapname2mapid("prontera"); + cpsd.bl.m = iMap->mapname2mapid("prontera"); console->addCommand("gm:info",CPCMD_A(gm_position)); console->addCommand("gm:use",CPCMD_A(gm_use)); @@ -5310,13 +5276,11 @@ void map_hp_symbols(void) { HPM->share(searchstore,"searchstore"); HPM->share(skill,"skill"); HPM->share(vending,"vending"); + HPM->share(iPc,"iPc"); + HPM->share(iParty,"iParty"); + HPM->share(iMap,"iMap"); /* partial */ HPM->share(mapit,"mapit"); - HPM->share(map_foreachpc,"map_foreachpc"); - HPM->share(map_foreachmob,"map_foreachmob"); - HPM->share(map_foreachnpc,"map_foreachnpc"); - HPM->share(map_foreachregen,"map_foreachregen"); - HPM->share(map_foreachiddb,"map_foreachiddb"); /* sql link */ HPM->share(mmysql_handle,"sql_handle"); /* specific */ @@ -5325,24 +5289,7 @@ void map_hp_symbols(void) { /* vars */ HPM->share(map,"map"); } -/* temporary until the map.c "Hercules Renewal Phase One" design is complete. */ -void map_defaults(void) { - mapit = &mapit_s; - - mapit->alloc = mapit_alloc; - mapit->free = mapit_free; - mapit->first = mapit_first; - mapit->last = mapit_last; - mapit->next = mapit_next; - mapit->prev = mapit_prev; - mapit->exists = mapit_exists; - map_foreachpc = map_map_foreachpc; - map_foreachmob = map_map_foreachmob; - map_foreachnpc = map_map_foreachnpc; - map_foreachregen = map_map_foreachregen; - map_foreachiddb = map_map_foreachiddb; -} void load_defaults(void) { atcommand_defaults(); battle_defaults(); @@ -5354,12 +5301,13 @@ void load_defaults(void) { instance_defaults(); ircbot_defaults(); log_defaults(); - map_defaults(); npc_defaults(); script_defaults(); searchstore_defaults(); skill_defaults(); vending_defaults(); + pc_defaults(); + party_defaults(); } int do_init(int argc, char *argv[]) { @@ -5369,15 +5317,43 @@ int do_init(int argc, char *argv[]) GC_enable_incremental(); #endif - INTER_CONF_NAME="conf/inter-server.conf"; - LOG_CONF_NAME="conf/logs.conf"; - MAP_CONF_NAME = "conf/map-server.conf"; - BATTLE_CONF_FILENAME = "conf/battle.conf"; - ATCOMMAND_CONF_FILENAME = "conf/atcommand.conf"; - SCRIPT_CONF_NAME = "conf/script.conf"; - MSG_CONF_NAME = "conf/messages.conf"; - GRF_PATH_FILENAME = "conf/grf-files.txt"; + map_defaults(); + iMap->map_num = 0; + + sprintf(iMap->db_path ,"db"); + sprintf(iMap->help_txt ,"conf/help.txt"); + sprintf(iMap->help2_txt ,"conf/help2.txt"); + sprintf(iMap->charhelp_txt ,"conf/charhelp.txt"); + + sprintf(iMap->wisp_server_name ,"Server"); // can be modified in char-server configuration file + + iMap->autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; + iMap->minsave_interval = 100; + iMap->save_settings = 0xFFFF; + iMap->agit_flag = 0; + iMap->agit2_flag = 0; + iMap->night_flag = 0; // 0=day, 1=night [Yor] + iMap->enable_spy = 0; //To enable/disable @spy commands, which consume too much cpu time when sending packets. [Skotlex] + + iMap->db_use_sqldbs = 0; + + sprintf(iMap->item_db_db, "item_db"); + sprintf(iMap->item_db2_db, "item_db2"); + sprintf(iMap->item_db_re_db, "item_db_re"); + sprintf(iMap->mob_db_db, "mob_db"); + sprintf(iMap->mob_db2_db, "mob_db2"); + sprintf(iMap->mob_skill_db_db, "mob_skill_db"); + sprintf(iMap->mob_skill_db2_db, "mob_skill_db2"); + + iMap->INTER_CONF_NAME="conf/inter-server.conf"; + iMap->LOG_CONF_NAME="conf/logs.conf"; + iMap->MAP_CONF_NAME = "conf/map-server.conf"; + iMap->BATTLE_CONF_FILENAME = "conf/battle.conf"; + iMap->ATCOMMAND_CONF_FILENAME = "conf/atcommand.conf"; + iMap->SCRIPT_CONF_NAME = "conf/script.conf"; + iMap->MSG_CONF_NAME = "conf/messages.conf"; + iMap->GRF_PATH_FILENAME = "conf/grf-files.txt"; rnd_init(); for( i = 1; i < argc ; i++ ) { @@ -5395,28 +5371,28 @@ int do_init(int argc, char *argv[]) map_versionscreen(true); } else if( strcmp(arg, "map-config") == 0 ) { if( map_arg_next_value(arg, i, argc) ) - MAP_CONF_NAME = argv[++i]; + iMap->MAP_CONF_NAME = argv[++i]; } else if( strcmp(arg, "battle-config") == 0 ) { if( map_arg_next_value(arg, i, argc) ) - BATTLE_CONF_FILENAME = argv[++i]; + iMap->BATTLE_CONF_FILENAME = argv[++i]; } else if( strcmp(arg, "atcommand-config") == 0 ) { if( map_arg_next_value(arg, i, argc) ) - ATCOMMAND_CONF_FILENAME = argv[++i]; + iMap->ATCOMMAND_CONF_FILENAME = argv[++i]; } else if( strcmp(arg, "script-config") == 0 ) { if( map_arg_next_value(arg, i, argc) ) - SCRIPT_CONF_NAME = argv[++i]; + iMap->SCRIPT_CONF_NAME = argv[++i]; } else if( strcmp(arg, "msg-config") == 0 ) { if( map_arg_next_value(arg, i, argc) ) - MSG_CONF_NAME = argv[++i]; + iMap->MSG_CONF_NAME = argv[++i]; } else if( strcmp(arg, "grf-path-file") == 0 ) { if( map_arg_next_value(arg, i, argc) ) - GRF_PATH_FILENAME = argv[++i]; + iMap->GRF_PATH_FILENAME = argv[++i]; } else if( strcmp(arg, "inter-config") == 0 ) { if( map_arg_next_value(arg, i, argc) ) - INTER_CONF_NAME = argv[++i]; + iMap->INTER_CONF_NAME = argv[++i]; } else if( strcmp(arg, "log-config") == 0 ) { if( map_arg_next_value(arg, i, argc) ) - LOG_CONF_NAME = argv[++i]; + iMap->LOG_CONF_NAME = argv[++i]; } else if( strcmp(arg, "run-once") == 0 ) { // close the map-server as soon as its done.. for testing [Celest] runflag = CORE_ST_STOP; } else { @@ -5424,30 +5400,30 @@ int do_init(int argc, char *argv[]) exit(EXIT_FAILURE); } } else switch( arg[0] ) {// short option - case '?': - case 'h': - map_helpscreen(true); - break; - case 'v': - map_versionscreen(true); - break; - default: - ShowError("Unknown option '%s'.\n", argv[i]); - exit(EXIT_FAILURE); + case '?': + case 'h': + map_helpscreen(true); + break; + case 'v': + map_versionscreen(true); + break; + default: + ShowError("Unknown option '%s'.\n", argv[i]); + exit(EXIT_FAILURE); } } memset(&index2mapid, -1, sizeof(index2mapid)); load_defaults(); - map_config_read(MAP_CONF_NAME); - CREATE(map,struct map_data,map_num); - map_num = 0; - map_config_read_sub(MAP_CONF_NAME); + map_config_read(iMap->MAP_CONF_NAME); + CREATE(map,struct map_data,iMap->map_num); + iMap->map_num = 0; + map_config_read_sub(iMap->MAP_CONF_NAME); // loads npcs - map_reloadnpc(false); + iMap->reloadnpc(false); chrif_checkdefaultlogin(); - + if (!map_ip_set || !char_ip_set) { char ip_str[16]; ip2str(addr_[0], ip_str); @@ -5466,15 +5442,15 @@ int do_init(int argc, char *argv[]) if (!char_ip_set) chrif_setip(ip_str); } - - battle->config_read(BATTLE_CONF_FILENAME); - atcommand->msg_read(MSG_CONF_NAME); - script_config_read(SCRIPT_CONF_NAME); - inter_config_read(INTER_CONF_NAME); - logs->config_read(LOG_CONF_NAME); + + battle->config_read(iMap->BATTLE_CONF_FILENAME); + atcommand->msg_read(iMap->MSG_CONF_NAME); + script_config_read(iMap->SCRIPT_CONF_NAME); + inter_config_read(iMap->INTER_CONF_NAME); + logs->config_read(iMap->LOG_CONF_NAME); id_db = idb_alloc(DB_OPT_BASE); - pc_db = idb_alloc(DB_OPT_BASE); //Added for reliable map_id2sd() use. [Skotlex] + pc_db = idb_alloc(DB_OPT_BASE); //Added for reliable iMap->id2sd() use. [Skotlex] mobid_db = idb_alloc(DB_OPT_BASE); //Added to lower the load of the lazy mob ai. [Skotlex] bossid_db = idb_alloc(DB_OPT_BASE); // Used for Convex Mirror quick MVP search map_db = uidb_alloc(DB_OPT_BASE); @@ -5486,26 +5462,26 @@ int do_init(int argc, char *argv[]) zone_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, MAP_ZONE_NAME_LENGTH); map_iterator_ers = ers_new(sizeof(struct s_mapiterator),"map.c::map_iterator_ers",ERS_OPT_NONE); - + map_sql_init(); if (logs->config.sql_logs) log_sql_init(); mapindex_init(); if(enable_grf) - grfio_init(GRF_PATH_FILENAME); - + grfio_init(iMap->GRF_PATH_FILENAME); + map_readallmaps(); - add_timer_func_list(map_freeblock_timer, "map_freeblock_timer"); - add_timer_func_list(map_clearflooritem_timer, "map_clearflooritem_timer"); - add_timer_func_list(map_removemobs_timer, "map_removemobs_timer"); - add_timer_interval(gettick()+1000, map_freeblock_timer, 0, 0, 60*1000); - + iTimer->add_timer_func_list(map_freeblock_timer, "map_freeblock_timer"); + iTimer->add_timer_func_list(map_clearflooritem_timer, "map_clearflooritem_timer"); + iTimer->add_timer_func_list(map_removemobs_timer, "map_removemobs_timer"); + iTimer->add_timer_interval(iTimer->gettick()+1000, map_freeblock_timer, 0, 0, 60*1000); + HPM->symbol_defaults_sub = map_hp_symbols; HPM->config_read(); HPM->event(HPET_INIT); - + atcommand->init(); battle->init(); instance->init(); @@ -5517,9 +5493,9 @@ int do_init(int argc, char *argv[]) skill->init(); read_map_zone_db();/* read after item and skill initalization */ do_init_mob(); - do_init_pc(); + iPc->do_init_pc(); do_init_status(); - do_init_party(); + iParty->do_init_party(); guild->init(); do_init_storage(); do_init_pet(); @@ -5539,17 +5515,144 @@ int do_init(int argc, char *argv[]) ShowNotice("Server is running on '"CL_WHITE"PK Mode"CL_RESET"'.\n"); Sql_HerculesUpdateCheck(mmysql_handle); - + ShowStatus("Server is '"CL_GREEN"ready"CL_RESET"' and listening on port '"CL_WHITE"%d"CL_RESET"'.\n\n", map_port); - + if( runflag != CORE_ST_STOP ) { - shutdown_callback = do_shutdown; + shutdown_callback = iMap->do_shutdown; runflag = MAPSERVER_ST_RUNNING; } - + map_cp_defaults(); - + HPM->event(HPET_READY); - + return 0; } + +/*===================================== +* Default Functions : map.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +void map_defaults(void) { + iMap = &iMap_s; + + /* funcs */ + iMap->zone_init = map_zone_init; + iMap->zone_remove = map_zone_remove; + iMap->zone_apply = map_zone_apply; + iMap->zone_change = map_zone_change; + iMap->zone_change2 = map_zone_change2; + + iMap->getcell = map_getcell; + iMap->setgatcell = map_setgatcell; + + iMap->cellfromcache = map_cellfromcache; + // users + iMap->setusers = map_setusers; + iMap->getusers = map_getusers; + iMap->usercount = map_usercount; + // blocklist lock + iMap->freeblock = map_freeblock; + iMap->freeblock_lock = map_freeblock_lock; + iMap->freeblock_unlock = map_freeblock_unlock; + // blocklist manipulation + iMap->addblock = map_addblock; + iMap->delblock = map_delblock; + iMap->moveblock = map_moveblock; + //blocklist nb in one cell + iMap->count_oncell = map_count_oncell; + iMap->find_skill_unit_oncell = map_find_skill_unit_oncell; + // search and creation + iMap->get_new_object_id = map_get_new_object_id; + iMap->search_freecell = map_search_freecell; + // + iMap->quit = map_quit; + // npc + iMap->addnpc = map_addnpc; + // map item + iMap->clearflooritem_timer = map_clearflooritem_timer; + iMap->removemobs_timer = map_removemobs_timer; + iMap->clearflooritem = map_clearflooritem; + iMap->addflooritem = map_addflooritem; + // player to map session + iMap->addnickdb = map_addnickdb; + iMap->delnickdb = map_delnickdb; + iMap->reqnickdb = map_reqnickdb; + iMap->charid2nick = map_charid2nick; + iMap->charid2sd = map_charid2sd; + + iMap->id2sd = map_id2sd; + iMap->id2md = map_id2md; + iMap->id2nd = map_id2nd; + iMap->id2hd = map_id2hd; + iMap->id2mc = map_id2mc; + iMap->id2cd = map_id2cd; + iMap->id2bl = map_id2bl; + iMap->blid_exists = map_blid_exists; + iMap->mapindex2mapid = map_mapindex2mapid; + iMap->mapname2mapid = map_mapname2mapid; + iMap->mapname2ipport = map_mapname2ipport; + iMap->setipport = map_setipport; + iMap->eraseipport = map_eraseipport; + iMap->eraseallipport = map_eraseallipport; + iMap->addiddb = map_addiddb; + iMap->deliddb = map_deliddb; + /* */ + iMap->nick2sd = map_nick2sd; + iMap->getmob_boss = map_getmob_boss; + iMap->id2boss = map_id2boss; + // reload config file looking only for npcs + iMap->reloadnpc = map_reloadnpc; + + iMap->check_dir = map_check_dir; + iMap->calc_dir = map_calc_dir; + iMap->random_dir = map_random_dir; // [Skotlex] + + iMap->cleanup_sub = cleanup_sub; + + iMap->delmap = map_delmap; + iMap->flags_init = map_flags_init; + + iMap->iwall_set = map_iwall_set; + iMap->iwall_get = map_iwall_get; + iMap->iwall_remove = map_iwall_remove; + + iMap->addmobtolist = map_addmobtolist; // [Wizputer] + iMap->spawnmobs = map_spawnmobs; // [Wizputer] + iMap->removemobs = map_removemobs; // [Wizputer] + iMap->addmap2db = map_addmap2db; + iMap->removemapdb = map_removemapdb; + iMap->clean = map_clean; + + iMap->do_shutdown = do_shutdown; + + iMap->map_foreachpc = map_map_foreachpc; + iMap->map_foreachmob = map_map_foreachmob; + iMap->map_foreachnpc = map_map_foreachnpc; + iMap->map_foreachregen = map_map_foreachregen; + iMap->map_foreachiddb = map_map_foreachiddb; + + iMap->foreachinrange = iMap->foreachinrange; + iMap->foreachinshootrange = map_foreachinshootrange; + iMap->foreachinarea=map_foreachinarea; + iMap->forcountinrange=map_forcountinrange; + iMap->forcountinarea=map_forcountinarea; + iMap->foreachinmovearea = map_foreachinmovearea; + iMap->foreachincell=map_foreachincell; + iMap->foreachinpath=map_foreachinpath; + iMap->foreachinmap=map_foreachinmap; + iMap->foreachininstance=map_foreachininstance; + + /* temporary until the map.c "Hercules Renewal Phase One" design is complete. [Ind] */ + mapit = &mapit_s; + + mapit->alloc = mapit_alloc; + mapit->free = mapit_free; + mapit->first = mapit_first; + mapit->last = mapit_last; + mapit->next = mapit_next; + mapit->prev = mapit_prev; + mapit->exists = mapit_exists; +} diff --git a/src/map/map.h b/src/map/map.h index c8c1aae12..9126f39a7 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -1,32 +1,24 @@ // Copyright (c) Hercules Dev Team, licensed under GNU GPL. // See the LICENSE file // Portions Copyright (c) Athena Dev Teams - #ifndef _MAP_H_ #define _MAP_H_ - #include "../common/cbasetypes.h" #include "../common/core.h" // CORE_ST_LAST #include "../common/mmo.h" #include "../common/mapindex.h" #include "../common/db.h" - #include "../config/core.h" - #include "atcommand.h" - #include <stdarg.h> - struct npc_data; struct item_data; struct hChSysCh; - enum E_MAPSERVER_ST { MAPSERVER_ST_RUNNING = CORE_ST_LAST, MAPSERVER_ST_SHUTDOWN, MAPSERVER_ST_LAST }; - #define MAX_NPC_PER_MAP 512 #define AREA_SIZE battle_config.area_size #define DAMAGELOG_SIZE 30 @@ -42,37 +34,32 @@ enum E_MAPSERVER_ST { #define MAX_IGNORE_LIST 20 // official is 14 #define MAX_VENDING 12 #define MAX_MAP_SIZE 512*512 // Wasn't there something like this already? Can't find it.. [Shinryo] - // Added definitions for WoESE objects. [L0ne_W0lf] enum MOBID { - MOBID_EMPERIUM = 1288, - MOBID_TREAS01 = 1324, - MOBID_TREAS40 = 1363, - MOBID_BARRICADE1 = 1905, - MOBID_BARRICADE2, - MOBID_GUARIDAN_STONE1, - MOBID_GUARIDAN_STONE2, - MOBID_FOOD_STOR, - MOBID_BLUE_CRYST = 1914, - MOBID_PINK_CRYST, - MOBID_TREAS41 = 1938, - MOBID_TREAS49 = 1946, - MOBID_SILVERSNIPER = 2042, - MOBID_MAGICDECOY_WIND = 2046, + MOBID_EMPERIUM = 1288, + MOBID_TREAS01 = 1324, + MOBID_TREAS40 = 1363, + MOBID_BARRICADE1 = 1905, + MOBID_BARRICADE2, + MOBID_GUARIDAN_STONE1, + MOBID_GUARIDAN_STONE2, + MOBID_FOOD_STOR, + MOBID_BLUE_CRYST = 1914, + MOBID_PINK_CRYST, + MOBID_TREAS41 = 1938, + MOBID_TREAS49 = 1946, + MOBID_SILVERSNIPER = 2042, + MOBID_MAGICDECOY_WIND = 2046, }; - // The following system marks a different job ID system used by the map server, // which makes a lot more sense than the normal one. [Skotlex] -// // These marks the "level" of the job. #define JOBL_2_1 0x100 //256 #define JOBL_2_2 0x200 //512 #define JOBL_2 0x300 - #define JOBL_UPPER 0x1000 //4096 #define JOBL_BABY 0x2000 //8192 #define JOBL_THIRD 0x4000 //16384 - // For filtering and quick checking. #define MAPID_BASEMASK 0x00ff #define MAPID_UPPERMASK 0x0fff @@ -81,7 +68,7 @@ enum MOBID { //Note the oddity of the novice: //Super Novices are considered the 2-1 version of the novice! Novices are considered a first class type. enum { -//Novice And 1-1 Jobs + //Novice And 1-1 Jobs MAPID_NOVICE = 0x0, MAPID_SWORDMAN, MAPID_MAGE, @@ -96,7 +83,7 @@ enum { MAPID_XMAS, MAPID_SUMMER, MAPID_GANGSI, -//2-1 Jobs + //2-1 Jobs MAPID_SUPER_NOVICE = JOBL_2_1|0x0, MAPID_KNIGHT, MAPID_WIZARD, @@ -107,7 +94,7 @@ enum { MAPID_STAR_GLADIATOR, MAPID_KAGEROUOBORO = JOBL_2_1|0x0A, MAPID_DEATH_KNIGHT = JOBL_2_1|0x0E, -//2-2 Jobs + //2-2 Jobs MAPID_CRUSADER = JOBL_2_2|0x1, MAPID_SAGE, MAPID_BARDDANCER, @@ -116,7 +103,7 @@ enum { MAPID_ROGUE, MAPID_SOUL_LINKER, MAPID_DARK_COLLECTOR = JOBL_2_2|0x0D, -//Trans Novice And Trans 1-1 Jobs + //Trans Novice And Trans 1-1 Jobs MAPID_NOVICE_HIGH = JOBL_UPPER|0x0, MAPID_SWORDMAN_HIGH, MAPID_MAGE_HIGH, @@ -124,21 +111,21 @@ enum { MAPID_ACOLYTE_HIGH, MAPID_MERCHANT_HIGH, MAPID_THIEF_HIGH, -//Trans 2-1 Jobs + //Trans 2-1 Jobs MAPID_LORD_KNIGHT = JOBL_UPPER|JOBL_2_1|0x1, MAPID_HIGH_WIZARD, MAPID_SNIPER, MAPID_HIGH_PRIEST, MAPID_WHITESMITH, MAPID_ASSASSIN_CROSS, -//Trans 2-2 Jobs + //Trans 2-2 Jobs MAPID_PALADIN = JOBL_UPPER|JOBL_2_2|0x1, MAPID_PROFESSOR, MAPID_CLOWNGYPSY, MAPID_CHAMPION, MAPID_CREATOR, MAPID_STALKER, -//Baby Novice And Baby 1-1 Jobs + //Baby Novice And Baby 1-1 Jobs MAPID_BABY = JOBL_BABY|0x0, MAPID_BABY_SWORDMAN, MAPID_BABY_MAGE, @@ -146,7 +133,7 @@ enum { MAPID_BABY_ACOLYTE, MAPID_BABY_MERCHANT, MAPID_BABY_THIEF, -//Baby 2-1 Jobs + //Baby 2-1 Jobs MAPID_SUPER_BABY = JOBL_BABY|JOBL_2_1|0x0, MAPID_BABY_KNIGHT, MAPID_BABY_WIZARD, @@ -154,14 +141,14 @@ enum { MAPID_BABY_PRIEST, MAPID_BABY_BLACKSMITH, MAPID_BABY_ASSASSIN, -//Baby 2-2 Jobs + //Baby 2-2 Jobs MAPID_BABY_CRUSADER = JOBL_BABY|JOBL_2_2|0x1, MAPID_BABY_SAGE, MAPID_BABY_BARDDANCER, MAPID_BABY_MONK, MAPID_BABY_ALCHEMIST, MAPID_BABY_ROGUE, -//3-1 Jobs + //3-1 Jobs MAPID_SUPER_NOVICE_E = JOBL_THIRD|JOBL_2_1|0x0, MAPID_RUNE_KNIGHT, MAPID_WARLOCK, @@ -169,28 +156,28 @@ enum { MAPID_ARCH_BISHOP, MAPID_MECHANIC, MAPID_GUILLOTINE_CROSS, -//3-2 Jobs + //3-2 Jobs MAPID_ROYAL_GUARD = JOBL_THIRD|JOBL_2_2|0x1, MAPID_SORCERER, MAPID_MINSTRELWANDERER, MAPID_SURA, MAPID_GENETIC, MAPID_SHADOW_CHASER, -//Trans 3-1 Jobs + //Trans 3-1 Jobs MAPID_RUNE_KNIGHT_T = JOBL_THIRD|JOBL_UPPER|JOBL_2_1|0x1, MAPID_WARLOCK_T, MAPID_RANGER_T, MAPID_ARCH_BISHOP_T, MAPID_MECHANIC_T, MAPID_GUILLOTINE_CROSS_T, -//Trans 3-2 Jobs + //Trans 3-2 Jobs MAPID_ROYAL_GUARD_T = JOBL_THIRD|JOBL_UPPER|JOBL_2_2|0x1, MAPID_SORCERER_T, MAPID_MINSTRELWANDERER_T, MAPID_SURA_T, MAPID_GENETIC_T, MAPID_SHADOW_CHASER_T, -//Baby 3-1 Jobs + //Baby 3-1 Jobs MAPID_SUPER_BABY_E = JOBL_THIRD|JOBL_BABY|JOBL_2_1|0x0, MAPID_BABY_RUNE, MAPID_BABY_WARLOCK, @@ -198,7 +185,7 @@ enum { MAPID_BABY_BISHOP, MAPID_BABY_MECHANIC, MAPID_BABY_CROSS, -//Baby 3-2 Jobs + //Baby 3-2 Jobs MAPID_BABY_GUARD = JOBL_THIRD|JOBL_BABY|JOBL_2_2|0x1, MAPID_BABY_SORCERER, MAPID_BABY_MINSTRELWANDERER, @@ -206,7 +193,6 @@ enum { MAPID_BABY_GENETIC, MAPID_BABY_CHASER, }; - // Max size for inputs to Graffiti, Talkie Box and Vending text prompts #define MESSAGE_SIZE (79 + 1) // String length you can write in the 'talking box' @@ -218,14 +204,12 @@ enum { #define CHAT_SIZE_MAX (255 + 1) // 24 for npc name + 24 for label + 2 for a "::" and 1 for EOS #define EVENT_NAME_LENGTH ( NAME_LENGTH * 2 + 3 ) - #define DEFAULT_AUTOSAVE_INTERVAL 5*60*1000 - // Specifies maps where players may hit each other -#define map_flag_vs(m) (map[m].flag.pvp || map[m].flag.gvg_dungeon || map[m].flag.gvg || ((agit_flag || agit2_flag) && map[m].flag.gvg_castle) || map[m].flag.battleground) +#define map_flag_vs(m) (map[m].flag.pvp || map[m].flag.gvg_dungeon || map[m].flag.gvg || ((iMap->agit_flag || iMap->agit2_flag) && map[m].flag.gvg_castle) || map[m].flag.battleground) // Specifies maps that have special GvG/WoE restrictions -#define map_flag_gvg(m) (map[m].flag.gvg || ((agit_flag || agit2_flag) && map[m].flag.gvg_castle)) -// Specifies if the map is tagged as GvG/WoE (regardless of agit_flag status) +#define map_flag_gvg(m) (map[m].flag.gvg || ((iMap->agit_flag || iMap->agit2_flag) && map[m].flag.gvg_castle)) +// Specifies if the map is tagged as GvG/WoE (regardless of iMap->agit_flag status) #define map_flag_gvg2(m) (map[m].flag.gvg || map[m].flag.gvg_castle) // No Kill Steal Protection #define map_flag_ks(m) (map[m].flag.town || map[m].flag.pvp || map[m].flag.gvg || map[m].flag.battleground) @@ -326,8 +310,8 @@ struct spawn_data { struct { unsigned int size : 2; //Holds if mob has to be tiny/large unsigned int ai : 4; //Special ai for summoned monsters. - //0: Normal mob | 1: Standard summon, attacks mobs - //2: Alchemist Marine Sphere | 3: Alchemist Summon Flora | 4: Summon Zanzou + //0: Normal mob | 1: Standard summon, attacks mobs + //2: Alchemist Marine Sphere | 3: Alchemist Summon Flora | 4: Summon Zanzou unsigned int dynamic : 1; //Whether this data is indexed by a map's dynamic mob list unsigned int boss : 1; //0: Non-boss monster | 1: Boss monster } state; @@ -441,7 +425,7 @@ typedef enum { } cell_t; -// used by map_getcell() +// used by iMap->getcell() typedef enum { CELL_GETTYPE, // retrieves a cell's 'gat' type @@ -469,19 +453,19 @@ struct mapcell { // terrain flags unsigned char - walkable : 1, - shootable : 1, - water : 1; +walkable : 1, +shootable : 1, +water : 1; // dynamic flags unsigned char - npc : 1, - basilica : 1, - landprotector : 1, - novending : 1, - nochat : 1, - maelstrom : 1, - icewall : 1; +npc : 1, +basilica : 1, +landprotector : 1, +novending : 1, +nochat : 1, +maelstrom : 1, +icewall : 1; #ifdef CELL_NOSTACK unsigned char cell_bl; //Holds amount of bls in this cell. @@ -504,7 +488,7 @@ enum map_zone_skill_subtype { MZS_NONE = 0x0, MZS_CLONE = 0x01, MZS_BOSS = 0x02, - + MZS_ALL = 0xFFF, }; @@ -547,11 +531,6 @@ struct map_zone_data { struct map_zone_skill_damage_cap_entry **capped_skills; int capped_skills_count; }; -void map_zone_init(void); -void map_zone_remove(int m); -void map_zone_apply(int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath); -void map_zone_change(int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath); -void map_zone_change2(int m, struct map_zone_data *zone); struct map_zone_data map_zone_all;/* used as a base on all maps */ struct map_zone_data map_zone_pk;/* used for (pk_mode) */ @@ -638,35 +617,35 @@ struct map_data { int bexp; // map experience multiplicator int nocommand; //Blocks @/# commands for non-gms. [Skotlex] /** - * Ice wall reference counter for bugreport:3574 - * - since there are a thounsand mobs out there in a lot of maps checking on, - * - every targetting for icewall on attack path would just be a waste, so, - * - this counter allows icewall checking be only run when there is a actual ice wall on the map - **/ + * Ice wall reference counter for bugreport:3574 + * - since there are a thounsand mobs out there in a lot of maps checking on, + * - every targetting for icewall on attack path would just be a waste, so, + * - this counter allows icewall checking be only run when there is a actual ice wall on the map + **/ int icewall_num; // Instance Variables int instance_id; int instance_src_map; - + /* adjust_unit_duration mapflag */ struct mapflag_skill_adjust **units; unsigned short unit_count; /* adjust_skill_damage mapflag */ struct mapflag_skill_adjust **skills; unsigned short skill_count; - + /* Hercules nocast db overhaul */ struct map_zone_data *zone; char **zone_mf;/* used to store this map's zone mapflags that should be re-applied once zone is removed */ unsigned short zone_mf_count; struct map_zone_data *prev_zone; - + /* Hercules Local Chat */ struct hChSysCh *channel; - + /* invincible_time_inc mapflag */ unsigned int invincible_time_inc; - + /* weapon_damage_rate mapflag */ unsigned short weapon_damage_rate; /* magic_damage_rate mapflag */ @@ -677,10 +656,10 @@ struct map_data { unsigned short short_damage_rate; /* long_damage_rate mapflag */ unsigned short long_damage_rate; - + /* instance unique name */ char *cName; - + /* */ int (*getcellp)(struct map_data* m,int16 x,int16 y,cell_chk cellchk); void (*setcell) (int16 m, int16 x, int16 y, cell_t cell, bool flag); @@ -697,112 +676,35 @@ struct map_data_other_server { uint16 port; }; -int map_getcell(int16 m,int16 x,int16 y,cell_chk cellchk); -void map_setgatcell(int16 m, int16 x, int16 y, int gat); struct map_data *map; -extern int map_num; - -extern int autosave_interval; -extern int minsave_interval; -extern int save_settings; -extern int agit_flag; -extern int agit2_flag; -extern int night_flag; // 0=day, 1=night [Yor] -extern int enable_spy; //Determines if @spy commands are active. -extern char db_path[256]; - -extern char help_txt[]; -extern char help2_txt[]; -extern char charhelp_txt[]; - -extern char wisp_server_name[]; - -void map_cellfromcache(struct map_data *m); - -// users -void map_setusers(int); -int map_getusers(void); -int map_usercount(void); - -// blocklist lock -int map_freeblock(struct block_list *bl); -int map_freeblock_lock(void); -int map_freeblock_unlock(void); -// blocklist manipulation -int map_addblock(struct block_list* bl); -int map_delblock(struct block_list* bl); -int map_moveblock(struct block_list *, int, int, unsigned int); -int map_foreachinrange(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int type, ...); -int map_foreachinshootrange(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int type, ...); -int map_foreachinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, ...); -int map_forcountinrange(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int count, int type, ...); -int map_forcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, ...); -int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int16 dx, int16 dy, int type, ...); -int map_foreachincell(int (*func)(struct block_list*,va_list), int16 m, int16 x, int16 y, int type, ...); -int map_foreachinpath(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, ...); -int map_foreachinmap(int (*func)(struct block_list*,va_list), int16 m, int type, ...); -int map_foreachininstance(int (*func)(struct block_list*,va_list), int16 instance_id, int type,...); -//blocklist nb in one cell -int map_count_oncell(int16 m,int16 x,int16 y,int type); -struct skill_unit *map_find_skill_unit_oncell(struct block_list *,int16 x,int16 y,uint16 skill_id,struct skill_unit *, int flag); -// search and creation -int map_get_new_object_id(void); -int map_search_freecell(struct block_list *src, int16 m, int16 *x, int16 *y, int16 rx, int16 ry, int flag); + + + + + + +//int map_foreachinrange(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int type, ...); +//int map_foreachinshootrange(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int type, ...); +//int map_foreachinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, ...); +//int map_forcountinrange(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int count, int type, ...); +//int map_forcountinarea(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, ...); +//int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int16 dx, int16 dy, int type, ...); +//int map_foreachincell(int (*func)(struct block_list*,va_list), int16 m, int16 x, int16 y, int type, ...); +//int map_foreachinpath(int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, ...); +//int map_foreachinmap(int (*func)(struct block_list*,va_list), int16 m, int type, ...); +//int map_foreachininstance(int (*func)(struct block_list*,va_list), int16 instance_id, int type,...); // -int map_quit(struct map_session_data *); -// npc -bool map_addnpc(int16 m,struct npc_data *); - -// map item -int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr_t data); -int map_removemobs_timer(int tid, unsigned int tick, int id, intptr_t data); -void map_clearflooritem(struct block_list* bl); -int map_addflooritem(struct item *item_data,int amount,int16 m,int16 x,int16 y,int first_charid,int second_charid,int third_charid,int flags); - -// player to map session -void map_addnickdb(int charid, const char* nick); -void map_delnickdb(int charid, const char* nick); -void map_reqnickdb(struct map_session_data* sd,int charid); -const char* map_charid2nick(int charid); -struct map_session_data* map_charid2sd(int charid); - -struct map_session_data * map_id2sd(int id); -struct mob_data * map_id2md(int id); -struct npc_data * map_id2nd(int id); -struct homun_data* map_id2hd(int id); -struct mercenary_data* map_id2mc(int id); -struct chat_data* map_id2cd(int id); -struct block_list * map_id2bl(int id); -bool map_blid_exists( int id ); + + + #define map_id2index(id) map[(id)].index -int16 map_mapindex2mapid(unsigned short mapindex); -int16 map_mapname2mapid(const char* name); -int map_mapname2ipport(unsigned short name, uint32* ip, uint16* port); -int map_setipport(unsigned short map, uint32 ip, uint16 port); -int map_eraseipport(unsigned short map, uint32 ip, uint16 port); -int map_eraseallipport(void); -void map_addiddb(struct block_list *); -void map_deliddb(struct block_list *bl); -/* temporary until the map.c "Hercules Renewal Phase One" design is complete. */ -void (*map_foreachpc) (int (*func)(struct map_session_data* sd, va_list args), ...); -void (*map_foreachmob) (int (*func)(struct mob_data* md, va_list args), ...); -void (*map_foreachnpc) (int (*func)(struct npc_data* nd, va_list args), ...); -void (*map_foreachregen) (int (*func)(struct block_list* bl, va_list args), ...); -void (*map_foreachiddb) (int (*func)(struct block_list* bl, va_list args), ...); -/* */ -struct map_session_data * map_nick2sd(const char*); -struct mob_data * map_getmob_boss(int16 m); -struct mob_data * map_id2boss(int id); - -// reload config file looking only for npcs -void map_reloadnpc(bool clear); /// Bitfield of flags for the iterator. enum e_mapitflags { MAPIT_NORMAL = 0, -// MAPIT_PCISPLAYING = 1,// Unneeded as pc_db/id_db will only hold auth'ed, active players. + // MAPIT_PCISPLAYING = 1,// Unneeded as pc_db/id_db will only hold auth'ed, active players. }; struct s_mapiterator; /* temporary until the map.c "Hercules Renewal Phase One" design is complete. */ @@ -822,35 +724,11 @@ struct mapit_interface *mapit; #define mapit_geteachnpc() mapit->alloc(MAPIT_NORMAL,BL_NPC) #define mapit_geteachiddb() mapit->alloc(MAPIT_NORMAL,BL_ALL) -int map_check_dir(int s_dir,int t_dir); -uint8 map_calc_dir( struct block_list *src,int16 x,int16 y); -int map_random_dir(struct block_list *bl, short *x, short *y); // [Skotlex] -int cleanup_sub(struct block_list *bl, va_list ap); -int map_delmap(char* mapname); -void map_flags_init(void); -bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char* wall_name); -void map_iwall_get(struct map_session_data *sd); -void map_iwall_remove(const char *wall_name); -int map_addmobtolist(unsigned short m, struct spawn_data *spawn); // [Wizputer] -void map_spawnmobs(int16 m); // [Wizputer] -void map_removemobs(int16 m); // [Wizputer] -void do_reconnect_map(void); //Invoked on map-char reconnection [Skotlex] -void map_addmap2db(struct map_data *m); -void map_removemapdb(struct map_data *m); -void map_clean(int i); -extern char *INTER_CONF_NAME; -extern char *LOG_CONF_NAME; -extern char *MAP_CONF_NAME; -extern char *BATTLE_CONF_FILENAME; -extern char *ATCOMMAND_CONF_FILENAME; -extern char *SCRIPT_CONF_NAME; -extern char *MSG_CONF_NAME; -extern char *GRF_PATH_FILENAME; //Useful typedefs from jA [Skotlex] typedef struct map_session_data TBL_PC; @@ -869,19 +747,167 @@ typedef struct elemental_data TBL_ELEM; #include "../common/sql.h" -extern int db_use_sqldbs; extern Sql* mmysql_handle; extern Sql* logmysql_handle; -extern char item_db_db[32]; -extern char item_db2_db[32]; -extern char item_db_re_db[32]; -extern char mob_db_db[32]; -extern char mob_db2_db[32]; -extern char mob_skill_db_db[32]; -extern char mob_skill_db2_db[32]; -void do_shutdown(void); + +/*===================================== +* Interface : map.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +struct map_interface { + + /* vars */ + int map_num; + + int autosave_interval; + int minsave_interval; + int save_settings; + int agit_flag; + int agit2_flag; + int night_flag; // 0=day, 1=night [Yor] + int enable_spy; //Determines if @spy commands are active. + char db_path[256]; + + char help_txt[256]; + char help2_txt[256]; + char charhelp_txt[256]; + + char wisp_server_name[NAME_LENGTH]; + + char *INTER_CONF_NAME; + char *LOG_CONF_NAME; + char *MAP_CONF_NAME; + char *BATTLE_CONF_FILENAME; + char *ATCOMMAND_CONF_FILENAME; + char *SCRIPT_CONF_NAME; + char *MSG_CONF_NAME; + char *GRF_PATH_FILENAME; + + int db_use_sqldbs; + + char item_db_db[32]; + char item_db2_db[32]; + char item_db_re_db[32]; + char mob_db_db[32]; + char mob_db2_db[32]; + char mob_skill_db_db[32]; + char mob_skill_db2_db[32]; + + /* funcs */ + void (*zone_init) (void); + void (*zone_remove) (int m); + void (*zone_apply) (int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath); + void (*zone_change) (int m, struct map_zone_data *zone, const char* start, const char* buffer, const char* filepath); + void (*zone_change2) (int m, struct map_zone_data *zone); + + int (*getcell) (int16 m,int16 x,int16 y,cell_chk cellchk); + void (*setgatcell) (int16 m, int16 x, int16 y, int gat); + + void (*cellfromcache) (struct map_data *m); + // users + void (*setusers) (int); + int (*getusers) (void); + int (*usercount) (void); + // blocklist lock + int (*freeblock) (struct block_list *bl); + int (*freeblock_lock) (void); + int (*freeblock_unlock) (void); + // blocklist manipulation + int (*addblock) (struct block_list* bl); + int (*delblock) (struct block_list* bl); + int (*moveblock) (struct block_list *, int, int, unsigned int); + //blocklist nb in one cell + int (*count_oncell) (int16 m,int16 x,int16 y,int type); + struct skill_unit * (*find_skill_unit_oncell) (struct block_list *,int16 x,int16 y,uint16 skill_id,struct skill_unit *, int flag); + // search and creation + int (*get_new_object_id) (void); + int (*search_freecell) (struct block_list *src, int16 m, int16 *x, int16 *y, int16 rx, int16 ry, int flag); + // + int (*quit) (struct map_session_data *); + // npc + bool (*addnpc) (int16 m,struct npc_data *); + // map item + int (*clearflooritem_timer) (int tid, unsigned int tick, int id, intptr_t data); + int (*removemobs_timer) (int tid, unsigned int tick, int id, intptr_t data); + void (*clearflooritem) (struct block_list* bl); + int (*addflooritem) (struct item *item_data,int amount,int16 m,int16 x,int16 y,int first_charid,int second_charid,int third_charid,int flags); + // player to map session + void (*addnickdb) (int charid, const char* nick); + void (*delnickdb) (int charid, const char* nick); + void (*reqnickdb) (struct map_session_data* sd,int charid); + const char* (*charid2nick) (int charid); + struct map_session_data* (*charid2sd) (int charid); + + void (*map_foreachpc) (int (*func)(struct map_session_data* sd, va_list args), ...); + void (*map_foreachmob) (int (*func)(struct mob_data* md, va_list args), ...); + void (*map_foreachnpc) (int (*func)(struct npc_data* nd, va_list args), ...); + void (*map_foreachregen) (int (*func)(struct block_list* bl, va_list args), ...); + void (*map_foreachiddb) (int (*func)(struct block_list* bl, va_list args), ...); + + int (*foreachinrange) (int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int type, ...); + int (*foreachinshootrange) (int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int type, ...); + int (*foreachinarea) (int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int type, ...); + int (*forcountinrange) (int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int count, int type, ...); + int (*forcountinarea) (int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int count, int type, ...); + int (*foreachinmovearea) (int (*func)(struct block_list*,va_list), struct block_list* center, int16 range, int16 dx, int16 dy, int type, ...); + int (*foreachincell) (int (*func)(struct block_list*,va_list), int16 m, int16 x, int16 y, int type, ...); + int (*foreachinpath) (int (*func)(struct block_list*,va_list), int16 m, int16 x0, int16 y0, int16 x1, int16 y1, int16 range, int length, int type, ...); + int (*foreachinmap) (int (*func)(struct block_list*,va_list), int16 m, int type, ...); + int (*foreachininstance)(int (*func)(struct block_list*,va_list), int16 instance_id, int type,...); + + struct map_session_data * (*id2sd) (int id); + struct mob_data * (*id2md) (int id); + struct npc_data * (*id2nd) (int id); + struct homun_data* (*id2hd) (int id); + struct mercenary_data* (*id2mc) (int id); + struct chat_data* (*id2cd) (int id); + struct block_list * (*id2bl) (int id); + bool (*blid_exists) (int id); + int16 (*mapindex2mapid) (unsigned short mapindex); + int16 (*mapname2mapid) (const char* name); + int (*mapname2ipport) (unsigned short name, uint32* ip, uint16* port); + int (*setipport) (unsigned short map, uint32 ip, uint16 port); + int (*eraseipport) (unsigned short map, uint32 ip, uint16 port); + int (*eraseallipport) (void); + void (*addiddb) (struct block_list *); + void (*deliddb) (struct block_list *bl); + /* */ + struct map_session_data * (*nick2sd) (const char*); + struct mob_data * (*getmob_boss) (int16 m); + struct mob_data * (*id2boss) (int id); + // reload config file looking only for npcs + void (*reloadnpc) (bool clear); + + int (*check_dir) (int s_dir,int t_dir); + uint8 (*calc_dir) (struct block_list *src,int16 x,int16 y); + int (*random_dir) (struct block_list *bl, short *x, short *y); // [Skotlex] + + int (*cleanup_sub) (struct block_list *bl, va_list ap); + + int (*delmap) (char* mapname); + void (*flags_init) (void); + + bool (*iwall_set) (int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char* wall_name); + void (*iwall_get) (struct map_session_data *sd); + void (*iwall_remove) (const char *wall_name); + + int (*addmobtolist) (unsigned short m, struct spawn_data *spawn); // [Wizputer] + void (*spawnmobs) (int16 m); // [Wizputer] + void (*removemobs) (int16 m); // [Wizputer] + void (*do_reconnect_map) (void); //Invoked on map-char reconnection [Skotlex] Note used but still keeping it, just in case + void (*addmap2db) (struct map_data *m); + void (*removemapdb) (struct map_data *m); + void (*clean) (int i); + + void (*do_shutdown) (void); +} iMap_s; + +struct map_interface *iMap; + +void map_defaults(void); #endif /* _MAP_H_ */ diff --git a/src/map/mapreg_sql.c b/src/map/mapreg_sql.c index 484da5641..a42ec04f2 100644 --- a/src/map/mapreg_sql.c +++ b/src/map/mapreg_sql.c @@ -302,8 +302,8 @@ void mapreg_init(void) { script_load_mapreg(); - add_timer_func_list(script_autosave_mapreg, "script_autosave_mapreg"); - add_timer_interval(gettick() + MAPREG_AUTOSAVE_INTERVAL, script_autosave_mapreg, 0, 0, MAPREG_AUTOSAVE_INTERVAL); + iTimer->add_timer_func_list(script_autosave_mapreg, "script_autosave_mapreg"); + iTimer->add_timer_interval(iTimer->gettick() + MAPREG_AUTOSAVE_INTERVAL, script_autosave_mapreg, 0, 0, MAPREG_AUTOSAVE_INTERVAL); } bool mapreg_config_read(const char* w1, const char* w2) { diff --git a/src/map/mercenary.c b/src/map/mercenary.c index 02fcea891..91d685a49 100644 --- a/src/map/mercenary.c +++ b/src/map/mercenary.c @@ -93,8 +93,8 @@ int mercenary_get_lifetime(struct mercenary_data *md) if( md == NULL || md->contract_timer == INVALID_TIMER ) return 0; - td = get_timer(md->contract_timer); - return (td != NULL) ? DIFF_TICK(td->tick, gettick()) : 0; + td = iTimer->get_timer(md->contract_timer); + return (td != NULL) ? DIFF_TICK(td->tick, iTimer->gettick()) : 0; } int mercenary_get_guild(struct mercenary_data *md) @@ -222,7 +222,7 @@ static int merc_contract_end(int tid, unsigned int tick, int id, intptr_t data) struct map_session_data *sd; struct mercenary_data *md; - if( (sd = map_id2sd(id)) == NULL ) + if( (sd = iMap->id2sd(id)) == NULL ) return 1; if( (md = sd->md) == NULL ) return 1; @@ -269,14 +269,14 @@ void merc_contract_stop(struct mercenary_data *md) { nullpo_retv(md); if( md->contract_timer != INVALID_TIMER ) - delete_timer(md->contract_timer, merc_contract_end); + iTimer->delete_timer(md->contract_timer, merc_contract_end); md->contract_timer = INVALID_TIMER; } void merc_contract_init(struct mercenary_data *md) { if( md->contract_timer == INVALID_TIMER ) - md->contract_timer = add_timer(gettick() + md->mercenary.life_time, merc_contract_end, md->master->bl.id, 0); + md->contract_timer = iTimer->add_timer(iTimer->gettick() + md->mercenary.life_time, merc_contract_end, md->master->bl.id, 0); md->regen.state.block = 0; } @@ -288,7 +288,7 @@ int merc_data_received(struct s_mercenary *merc, bool flag) struct s_mercenary_db *db; int i = merc_search_index(merc->class_); - if( (sd = map_charid2sd(merc->char_id)) == NULL ) + if( (sd = iMap->charid2sd(merc->char_id)) == NULL ) return 0; if( !flag || i < 0 ) { // Not created - loaded - DB info @@ -319,7 +319,7 @@ int merc_data_received(struct s_mercenary *merc, bool flag) md->bl.x = md->ud.to_x; md->bl.y = md->ud.to_y; - map_addiddb(&md->bl); + iMap->addiddb(&md->bl); status_calc_mercenary(md,1); md->contract_timer = INVALID_TIMER; merc_contract_init(md); @@ -336,7 +336,7 @@ int merc_data_received(struct s_mercenary *merc, bool flag) if( md && md->bl.prev == NULL && sd->bl.prev != NULL ) { - map_addblock(&md->bl); + iMap->addblock(&md->bl); clif->spawn(&md->bl); clif->mercenary_info(sd); clif->mercenary_skillblock(sd); @@ -456,7 +456,7 @@ static bool read_mercenarydb_sub(char* str[], int columns, int current) int read_mercenarydb(void) { memset(mercenary_db,0,sizeof(mercenary_db)); - sv->readdb(db_path, "mercenary_db.txt", ',', 26, 26, MAX_MERCENARY_CLASS, &read_mercenarydb_sub); + sv->readdb(iMap->db_path, "mercenary_db.txt", ',', 26, 26, MAX_MERCENARY_CLASS, &read_mercenarydb_sub); return 0; } @@ -494,7 +494,7 @@ static bool read_mercenary_skilldb_sub(char* str[], int columns, int current) int read_mercenary_skilldb(void) { - sv->readdb(db_path, "mercenary_skill_db.txt", ',', 3, 3, -1, &read_mercenary_skilldb_sub); + sv->readdb(iMap->db_path, "mercenary_skill_db.txt", ',', 3, 3, -1, &read_mercenary_skilldb_sub); return 0; } diff --git a/src/map/mob.c b/src/map/mob.c index 173636df8..629a79e7f 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -157,8 +157,8 @@ void mvptomb_create(struct mob_data *md, char *killer, time_t time) else nd->u.tomb.killer_name[0] = '\0'; - map_addnpc(nd->bl.m, nd); - map_addblock(&nd->bl); + iMap->addnpc(nd->bl.m, nd); + iMap->addblock(&nd->bl); status_set_viewdata(&nd->bl, nd->class_); clif->spawn(&nd->bl); @@ -167,14 +167,14 @@ void mvptomb_create(struct mob_data *md, char *killer, time_t time) void mvptomb_destroy(struct mob_data *md) { struct npc_data *nd; - if ( (nd = map_id2nd(md->tomb_nid)) ) { + if ( (nd = iMap->id2nd(md->tomb_nid)) ) { int16 m, i; m = nd->bl.m; clif->clearunit_area(&nd->bl,CLR_OUTSIGHT); - map_delblock(&nd->bl); + iMap->delblock(&nd->bl); ARR_FIND( 0, map[m].npc_num, i, map[m].npc[i] == nd ); if( !(i == map[m].npc_num) ) { @@ -183,7 +183,7 @@ void mvptomb_destroy(struct mob_data *md) { map[m].npc[map[m].npc_num] = NULL; } - map_deliddb(&nd->bl); + iMap->deliddb(&nd->bl); aFree(nd); } @@ -288,7 +288,7 @@ struct mob_data* mob_spawn_dataset(struct spawn_data *data) { status_change_init(&md->bl); unit_dataset(&md->bl); - map_addiddb(&md->bl); + iMap->addiddb(&md->bl); return md; } @@ -344,7 +344,7 @@ bool mob_ksprotected (struct block_list *src, struct block_list *target) *t_sd; // Mob Target struct status_change_entry *sce; struct mob_data *md; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); char output[128]; if( !battle_config.ksprotection ) @@ -359,7 +359,7 @@ bool mob_ksprotected (struct block_list *src, struct block_list *target) if( !(sd = BL_CAST(BL_PC,s_bl)) ) return false; // Master is not PC - t_bl = map_id2bl(md->target_id); + t_bl = iMap->id2bl(md->target_id); if( !t_bl || (s_bl = battle->get_master(t_bl)) == NULL ) s_bl = t_bl; @@ -386,7 +386,7 @@ bool mob_ksprotected (struct block_list *src, struct block_list *target) (sce->val2 == 3 && sce->val4 && sce->val4 != t_sd->status.guild_id)) ) break; - if( (pl_sd = map_id2sd(sce->val1)) == NULL || pl_sd->bl.m != md->bl.m ) + if( (pl_sd = iMap->id2sd(sce->val1)) == NULL || pl_sd->bl.m != md->bl.m ) break; if( !pl_sd->state.noks ) @@ -442,11 +442,11 @@ struct mob_data *mob_once_spawn_sub(struct block_list *bl, int16 m, int16 x, int // Locate spot next to player. if (bl && (x < 0 || y < 0)) - map_search_freecell(bl, m, &x, &y, 1, 1, 0); + iMap->search_freecell(bl, m, &x, &y, 1, 1, 0); // if none found, pick random position on map - if (x <= 0 || y <= 0 || map_getcell(m,x,y,CELL_CHKNOREACH)) - map_search_freecell(NULL, m, &x, &y, -1, -1, 1); + if (x <= 0 || y <= 0 || iMap->getcell(m,x,y,CELL_CHKNOREACH)) + iMap->search_freecell(NULL, m, &x, &y, -1, -1, 1); data.x = x; data.y = y; @@ -494,7 +494,7 @@ int mob_once_spawn(struct map_session_data* sd, int16 m, int16 x, int16 y, const memcpy(md->guardian_data->guild_name, g->name, NAME_LENGTH); } else if (gc->guild_id) //Guild not yet available, retry in 5. - add_timer(gettick()+5000,mob_spawn_guardian_sub,md->bl.id,md->guardian_data->guild_id); + iTimer->add_timer(iTimer->gettick()+5000,mob_spawn_guardian_sub,md->bl.id,md->guardian_data->guild_id); } } // end addition [Valaris] @@ -542,7 +542,7 @@ int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0 x = rnd()%(x1-x0+1)+x0; y = rnd()%(y1-y0+1)+y0; j++; - } while (map_getcell(m,x,y,CELL_CHKNOPASS) && j < max); + } while (iMap->getcell(m,x,y,CELL_CHKNOPASS) && j < max); if (j == max) {// attempt to find an available cell failed @@ -568,7 +568,7 @@ int mob_once_spawn_area(struct map_session_data* sd, int16 m, int16 x0, int16 y0 *------------------------------------------*/ static int mob_spawn_guardian_sub(int tid, unsigned int tick, int id, intptr_t data) { //Needed because the guild_data may not be available at guardian spawn time. - struct block_list* bl = map_id2bl(id); + struct block_list* bl = iMap->id2bl(id); struct mob_data* md; struct guild* g; int guardup_lv; @@ -626,7 +626,7 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam memset(&data, 0, sizeof(struct spawn_data)); data.num = 1; - m=map_mapname2mapid(mapname); + m=iMap->mapname2mapid(mapname); if(m<0) { @@ -652,7 +652,7 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam return 0; } - if((x<=0 || y<=0) && !map_search_freecell(NULL, m, &x, &y, -1,-1, 1)) + if((x<=0 || y<=0) && !iMap->search_freecell(NULL, m, &x, &y, -1,-1, 1)) { ShowWarning("mob_spawn_guardian: Couldn't locate a spawn cell for guardian class %d (index %d) at castle map %s\n",class_, guardian, map[m].name); return 0; @@ -677,7 +677,7 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam if( has_index && gc->guardian[guardian].id ) { //Check if guardian already exists, refuse to spawn if so. - struct mob_data *md2 = (TBL_MOB*)map_id2bl(gc->guardian[guardian].id); + struct mob_data *md2 = (TBL_MOB*)iMap->id2bl(gc->guardian[guardian].id); if (md2 && md2->bl.type == BL_MOB && md2->guardian_data && md2->guardian_data->number == guardian) { @@ -712,7 +712,7 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam memcpy (md->guardian_data->guild_name, g->name, NAME_LENGTH); md->guardian_data->guardup_lv = guild->checkskill(g,GD_GUARDUP); } else if (md->guardian_data->guild_id) - add_timer(gettick()+5000,mob_spawn_guardian_sub,md->bl.id,md->guardian_data->guild_id); + iTimer->add_timer(iTimer->gettick()+5000,mob_spawn_guardian_sub,md->bl.id,md->guardian_data->guild_id); mob_spawn(md); return md->bl.id; @@ -727,7 +727,7 @@ int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int struct spawn_data data; int16 m; - if( (m = map_mapname2mapid(mapname)) < 0 ) + if( (m = iMap->mapname2mapid(mapname)) < 0 ) { ShowWarning("mob_spawn_bg: Map [%s] not found.\n", mapname); return 0; @@ -743,7 +743,7 @@ int mob_spawn_bg(const char* mapname, short x, short y, const char* mobname, int } data.class_ = class_; - if( (x <= 0 || y <= 0) && !map_search_freecell(NULL, m, &x, &y, -1,-1, 1) ) + if( (x <= 0 || y <= 0) && !iMap->search_freecell(NULL, m, &x, &y, -1,-1, 1) ) { ShowWarning("mob_spawn_bg: Couldn't locate a spawn cell for guardian class %d (bg_id %d) at map %s\n",class_, bg_id, map[m].name); return 0; @@ -824,7 +824,7 @@ int mob_linksearch(struct block_list *bl,va_list ap) *------------------------------------------*/ int mob_delayspawn(int tid, unsigned int tick, int id, intptr_t data) { - struct block_list* bl = map_id2bl(id); + struct block_list* bl = iMap->id2bl(id); struct mob_data* md = BL_CAST(BL_MOB, bl); if( md ) @@ -876,8 +876,8 @@ int mob_setdelayspawn(struct mob_data *md) spawntime = 5000; if( md->spawn_timer != INVALID_TIMER ) - delete_timer(md->spawn_timer, mob_delayspawn); - md->spawn_timer = add_timer(gettick()+spawntime, mob_delayspawn, md->bl.id, 0); + iTimer->delete_timer(md->spawn_timer, mob_delayspawn); + md->spawn_timer = iTimer->add_timer(iTimer->gettick()+spawntime, mob_delayspawn, md->bl.id, 0); return 0; } @@ -898,7 +898,7 @@ int mob_count_sub(struct block_list *bl, va_list ap) { int mob_spawn (struct mob_data *md) { int i=0; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); int c =0; md->last_thinktime = tick; @@ -920,19 +920,19 @@ int mob_spawn (struct mob_data *md) if( (md->bl.x == 0 && md->bl.y == 0) || md->spawn->xs || md->spawn->ys ) { //Monster can be spawned on an area. - if( !map_search_freecell(&md->bl, -1, &md->bl.x, &md->bl.y, md->spawn->xs, md->spawn->ys, battle_config.no_spawn_on_player?4:0) ) + if( !iMap->search_freecell(&md->bl, -1, &md->bl.x, &md->bl.y, md->spawn->xs, md->spawn->ys, battle_config.no_spawn_on_player?4:0) ) { // retry again later if( md->spawn_timer != INVALID_TIMER ) - delete_timer(md->spawn_timer, mob_delayspawn); - md->spawn_timer = add_timer(tick+5000,mob_delayspawn,md->bl.id,0); + iTimer->delete_timer(md->spawn_timer, mob_delayspawn); + md->spawn_timer = iTimer->add_timer(tick+5000,mob_delayspawn,md->bl.id,0); return 1; } } - else if( battle_config.no_spawn_on_player > 99 && map_foreachinrange(mob_count_sub, &md->bl, AREA_SIZE, BL_PC) ) + else if( battle_config.no_spawn_on_player > 99 && iMap->foreachinrange(mob_count_sub, &md->bl, AREA_SIZE, BL_PC) ) { // retry again later (players on sight) if( md->spawn_timer != INVALID_TIMER ) - delete_timer(md->spawn_timer, mob_delayspawn); - md->spawn_timer = add_timer(tick+5000,mob_delayspawn,md->bl.id,0); + iTimer->delete_timer(md->spawn_timer, mob_delayspawn); + md->spawn_timer = iTimer->add_timer(tick+5000,mob_delayspawn,md->bl.id,0); return 1; } } @@ -946,7 +946,7 @@ int mob_spawn (struct mob_data *md) md->ud.target_to = 0; if( md->spawn_timer != INVALID_TIMER ) { - delete_timer(md->spawn_timer, mob_delayspawn); + iTimer->delete_timer(md->spawn_timer, mob_delayspawn); md->spawn_timer = INVALID_TIMER; } @@ -979,7 +979,7 @@ int mob_spawn (struct mob_data *md) if ( md->tomb_nid ) mvptomb_destroy(md); - map_addblock(&md->bl); + iMap->addblock(&md->bl); if( map[md->bl.m].users ) clif->spawn(&md->bl); skill->unit_move(&md->bl,tick,1); @@ -1206,7 +1206,7 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md,unsigned int tick) { struct block_list *bl; - bl=map_id2bl(md->master_id); + bl=iMap->id2bl(md->master_id); if (!bl || status_isdead(bl)) { status_kill(&md->bl); @@ -1242,7 +1242,7 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md,unsigned int tick) { short x = bl->x, y = bl->y; mob_stop_attack(md); - if(map_search_freecell(&md->bl, bl->m, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 1) + if(iMap->search_freecell(&md->bl, bl->m, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 1) && unit_walktoxy(&md->bl, x, y, 0)) return 1; } @@ -1261,9 +1261,9 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md,unsigned int tick) if (ud) { struct block_list *tbl=NULL; if (ud->target && ud->state.attack_continue) - tbl=map_id2bl(ud->target); + tbl=iMap->id2bl(ud->target); else if (ud->skilltarget) { - tbl = map_id2bl(ud->skilltarget); + tbl = iMap->id2bl(ud->skilltarget); //Required check as skilltarget is not always an enemy. [Skotlex] if (tbl && battle->check_target(&md->bl, tbl, BCT_ENEMY) <= 0) tbl = NULL; @@ -1348,7 +1348,7 @@ int mob_randomwalk(struct mob_data *md,unsigned int tick) x+=md->bl.x; y+=md->bl.y; - if((map_getcell(md->bl.m,x,y,CELL_CHKPASS)) && unit_walktoxy(&md->bl,x,y,1)){ + if((iMap->getcell(md->bl.m,x,y,CELL_CHKPASS)) && unit_walktoxy(&md->bl,x,y,1)){ break; } } @@ -1385,11 +1385,11 @@ int mob_warpchase(struct mob_data *md, struct block_list *target) return 0; //No need to do a warp chase. if (md->ud.walktimer != INVALID_TIMER && - map_getcell(md->bl.m,md->ud.to_x,md->ud.to_y,CELL_CHKNPC)) + iMap->getcell(md->bl.m,md->ud.to_x,md->ud.to_y,CELL_CHKNPC)) return 1; //Already walking to a warp. //Search for warps within mob's viewing range. - map_foreachinrange (mob_warpchase_sub, &md->bl, + iMap->foreachinrange (mob_warpchase_sub, &md->bl, md->db->range2, BL_NPC, target, &warp, &distance); if (warp && unit_walktobl(&md->bl, &warp->bl, 1, 1)) @@ -1437,7 +1437,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick) if (md->target_id) { //Check validity of current target. [Skotlex] - tbl = map_id2bl(md->target_id); + tbl = iMap->id2bl(md->target_id); if (!tbl || tbl->m != md->bl.m || (md->ud.attacktimer == INVALID_TIMER && !status_check_skilluse(&md->bl, tbl, 0, 0)) || (md->ud.walktimer != INVALID_TIMER && !(battle_config.mob_ai&0x1) && !check_distance_bl(&md->bl, tbl, md->min_chase)) || @@ -1474,7 +1474,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick) } } else - if( (abl = map_id2bl(md->attacked_id)) && (!tbl || mob_can_changetarget(md, abl, mode)) ) + if( (abl = iMap->id2bl(md->attacked_id)) && (!tbl || mob_can_changetarget(md, abl, mode)) ) { int dist; if( md->bl.m != abl->m || abl->prev == NULL @@ -1533,19 +1533,19 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick) if (!tbl && mode&MD_LOOTER && md->lootitem && DIFF_TICK(tick, md->ud.canact_tick) > 0 && (md->lootitem_count < LOOTITEM_SIZE || battle_config.monster_loot_type != 1)) { // Scan area for items to loot, avoid trying to loot if the mob is full and can't consume the items. - map_foreachinrange (mob_ai_sub_hard_lootsearch, &md->bl, view_range, BL_ITEM, md, &tbl); + iMap->foreachinrange (mob_ai_sub_hard_lootsearch, &md->bl, view_range, BL_ITEM, md, &tbl); } if ((!tbl && mode&MD_AGGRESSIVE) || md->state.skillstate == MSS_FOLLOW) { - map_foreachinrange (mob_ai_sub_hard_activesearch, &md->bl, view_range, DEFAULT_ENEMY_TYPE(md), md, &tbl, mode); + iMap->foreachinrange (mob_ai_sub_hard_activesearch, &md->bl, view_range, DEFAULT_ENEMY_TYPE(md), md, &tbl, mode); } else if (mode&MD_CHANGECHASE && (md->state.skillstate == MSS_RUSH || md->state.skillstate == MSS_FOLLOW)) { int search_size; search_size = view_range<md->status.rhw.range ? view_range:md->status.rhw.range; - map_foreachinrange (mob_ai_sub_hard_changechase, &md->bl, search_size, DEFAULT_ENEMY_TYPE(md), md, &tbl); + iMap->foreachinrange (mob_ai_sub_hard_changechase, &md->bl, search_size, DEFAULT_ENEMY_TYPE(md), md, &tbl); } if (!tbl) { //No targets available. @@ -1556,7 +1556,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick) if( md->bg_id && mode&MD_CANATTACK ) { if( md->ud.walktimer != INVALID_TIMER ) return true;/* we are already moving */ - map_foreachinrange (mob_ai_sub_hard_bg_ally, &md->bl, view_range, BL_PC, md, &tbl, mode); + iMap->foreachinrange (mob_ai_sub_hard_bg_ally, &md->bl, view_range, BL_PC, md, &tbl, mode); if( tbl ) { if( distance_blxy(&md->bl, tbl->x, tbl->y) <= 3 || unit_walktobl(&md->bl, tbl, 1, 1) ) return true;/* we're moving or close enough don't unlock the target. */ @@ -1616,7 +1616,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick) unit_set_walkdelay(&md->bl, tick, md->status.amotion, 1); } //Clear item. - map_clearflooritem (tbl); + iMap->clearflooritem (tbl); mob_unlocktarget (md,tick); return true; } @@ -1686,7 +1686,7 @@ static int mob_ai_sub_foreachclient(struct map_session_data *sd,va_list ap) { unsigned int tick; tick=va_arg(ap,unsigned int); - map_foreachinrange(mob_ai_sub_hard_timer,&sd->bl, AREA_SIZE+ACTIVE_AI_RANGE, BL_MOB,tick); + iMap->foreachinrange(mob_ai_sub_hard_timer,&sd->bl, AREA_SIZE+ACTIVE_AI_RANGE, BL_MOB,tick); return 0; } @@ -1765,7 +1765,7 @@ static int mob_ai_sub_lazy(struct mob_data *md, va_list args) *------------------------------------------*/ static int mob_ai_lazy(int tid, unsigned int tick, int id, intptr_t data) { - map_foreachmob(mob_ai_sub_lazy,tick); + iMap->map_foreachmob(mob_ai_sub_lazy,tick); return 0; } @@ -1776,9 +1776,9 @@ static int mob_ai_hard(int tid, unsigned int tick, int id, intptr_t data) { if (battle_config.mob_ai&0x20) - map_foreachmob(mob_ai_sub_lazy,tick); + iMap->map_foreachmob(mob_ai_sub_lazy,tick); else - map_foreachpc(mob_ai_sub_foreachclient,tick); + iMap->map_foreachpc(mob_ai_sub_foreachclient,tick); return 0; } @@ -1817,7 +1817,7 @@ static int mob_delay_item_drop(int tid, unsigned int tick, int id, intptr_t data list=(struct item_drop_list *)data; ditem = list->item; while (ditem) { - map_addflooritem(&ditem->item_data,ditem->item_data.amount, + iMap->addflooritem(&ditem->item_data,ditem->item_data.amount, list->m,list->x,list->y, list->first_charid,list->second_charid,list->third_charid,0); ditem_prev = ditem; @@ -1841,12 +1841,12 @@ static void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, str //Logs items, dropped by mobs [Lupus] logs->pick_mob(md, loot?LOG_TYPE_LOOT:LOG_TYPE_PICKDROP_MONSTER, -ditem->item_data.amount, &ditem->item_data, NULL); - sd = map_charid2sd(dlist->first_charid); - if( sd == NULL ) sd = map_charid2sd(dlist->second_charid); - if( sd == NULL ) sd = map_charid2sd(dlist->third_charid); + sd = iMap->charid2sd(dlist->first_charid); + if( sd == NULL ) sd = iMap->charid2sd(dlist->second_charid); + if( sd == NULL ) sd = iMap->charid2sd(dlist->third_charid); if( sd - && (drop_rate <= sd->state.autoloot || pc_isautolooting(sd, ditem->item_data.nameid)) + && (drop_rate <= sd->state.autoloot || iPc->isautolooting(sd, ditem->item_data.nameid)) && (battle_config.idle_no_autoloot == 0 || DIFF_TICK(last_tick, sd->idletime) < battle_config.idle_no_autoloot) && (battle_config.homunculus_autoloot?1:!flag) #ifdef AUTOLOOT_DISTANCE @@ -1854,7 +1854,7 @@ static void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, str && check_distance_blxy(&sd->bl, dlist->x, dlist->y, AUTOLOOT_DISTANCE) #endif ) { //Autoloot. - if (party_share_loot(party_search(sd->status.party_id), + if (iParty->share_loot(iParty->search(sd->status.party_id), sd, &ditem->item_data, sd->status.char_id) == 0 ) { ers_free(item_drop_ers, ditem); @@ -1867,7 +1867,7 @@ static void mob_item_drop(struct mob_data *md, struct item_drop_list *dlist, str int mob_timer_delete(int tid, unsigned int tick, int id, intptr_t data) { - struct block_list* bl = map_id2bl(id); + struct block_list* bl = iMap->id2bl(id); struct mob_data* md = BL_CAST(BL_MOB, bl); if( md ) @@ -1908,13 +1908,13 @@ int mob_deleteslave(struct mob_data *md) { nullpo_ret(md); - map_foreachinmap(mob_deleteslave_sub, md->bl.m, BL_MOB,md->bl.id); + iMap->foreachinmap(mob_deleteslave_sub, md->bl.m, BL_MOB,md->bl.id); return 0; } // Mob respawning through KAIZEL or NPC_REBIRTH [Skotlex] int mob_respawn(int tid, unsigned int tick, int id, intptr_t data) { - struct block_list *bl = map_id2bl(id); + struct block_list *bl = iMap->id2bl(id); if(!bl) return 0; status_revive(bl, (uint8)data, 0); @@ -1978,7 +1978,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage) struct mob_data* md2 = (TBL_MOB*)src; if( md2->special_state.ai && md2->master_id ) { - struct map_session_data* msd = map_id2sd(md2->master_id); + struct map_session_data* msd = iMap->id2sd(md2->master_id); if( msd ) char_id = msd->status.char_id; } @@ -2054,7 +2054,7 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) { //Log damage if (src) mob_log_damage(md, src, damage); - md->dmgtick = gettick(); + md->dmgtick = iTimer->gettick(); } if (battle_config.show_mob_info&3) @@ -2068,7 +2068,7 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) { int i; for(i = 0; i < DAMAGELOG_SIZE; i++){ // must show hp bar to all char who already hit the mob. if( md->dmglog[i].id ) { - struct map_session_data *sd = map_charid2sd(md->dmglog[i].id); + struct map_session_data *sd = iMap->charid2sd(md->dmglog[i].id); if( sd && check_distance_bl(&md->bl, &sd->bl, AREA_SIZE) ) // check if in range clif->monster_hp_bar(md,sd); } @@ -2078,7 +2078,7 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) { if( md->special_state.ai == 2 ) {//LOne WOlf explained that ANYONE can trigger the marine countdown skill. [Skotlex] md->state.alchemist = 1; - mobskill_use(md, gettick(), MSC_ALCHEMIST); + mobskill_use(md, iTimer->gettick(), MSC_ALCHEMIST); } } @@ -2099,7 +2099,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) } pt[DAMAGELOG_SIZE]; int i, temp, count, m = md->bl.m, pnum = 0; int dmgbltypes = 0; // bitfield of all bl types, that caused damage to the mob and are elligible for exp distribution - unsigned int mvp_damage, tick = gettick(); + unsigned int mvp_damage, tick = iTimer->gettick(); bool rebirth, homkillonly; status = &md->status; @@ -2119,7 +2119,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) mobskill_use(md,tick,-1); } - map_freeblock_lock(); + iMap->freeblock_lock(); memset(pt,0,sizeof(pt)); @@ -2130,7 +2130,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) memset(tmpsd,0,sizeof(tmpsd)); for(i = 0, count = 0, mvp_damage = 0; i < DAMAGELOG_SIZE && md->dmglog[i].id; i++) { - struct map_session_data* tsd = map_charid2sd(md->dmglog[i].id); + struct map_session_data* tsd = iMap->charid2sd(md->dmglog[i].id); if(tsd == NULL) continue; // skip empty entries @@ -2189,7 +2189,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) else ARR_FIND(0, MAX_PC_FEELHATE, i, temp == sd->hate_mob[i] && (battle_config.allow_skill_without_day || sg_info[i].day_func())); - if(i<MAX_PC_FEELHATE && (temp=pc_checkskill(sd,sg_info[i].bless_id))) + if(i<MAX_PC_FEELHATE && (temp=iPc->checkskill(sd,sg_info[i].bless_id))) bonus += (i==2?20:10)*temp; } if(battle_config.mobs_level_up && md->level > md->db->lv) // [Valaris] @@ -2255,7 +2255,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) for( j = 0; j < pnum && pt[j].id != temp; j++ ); //Locate party. if( j == pnum ){ //Possibly add party. - pt[pnum].p = party_search(temp); + pt[pnum].p = iParty->search(temp); if(pt[pnum].p && pt[pnum].p->party.exp) { pt[pnum].id = temp; pt[pnum].base_exp = base_exp; @@ -2285,20 +2285,20 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) if(base_exp || job_exp) { if( md->dmglog[i].flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) { #ifdef RENEWAL_EXP - int rate = pc_level_penalty_mod(tmpsd[i], md, 1); + int rate = iPc->level_penalty_mod(tmpsd[i], md, 1); base_exp = (unsigned int)cap_value(base_exp * rate / 100, 1, UINT_MAX); job_exp = (unsigned int)cap_value(job_exp * rate / 100, 1, UINT_MAX); #endif - pc_gainexp(tmpsd[i], &md->bl, base_exp, job_exp, false); + iPc->gainexp(tmpsd[i], &md->bl, base_exp, job_exp, false); } } if(zeny) // zeny from mobs [Valaris] - pc_getzeny(tmpsd[i], zeny, LOG_TYPE_PICKDROP_MONSTER, NULL); + iPc->getzeny(tmpsd[i], zeny, LOG_TYPE_PICKDROP_MONSTER, NULL); } } for( i = 0; i < pnum; i++ ) //Party share. - party_exp_share(pt[i].p, &md->bl, pt[i].base_exp,pt[i].job_exp,pt[i].zeny); + iParty->exp_share(pt[i].p, &md->bl, pt[i].base_exp,pt[i].job_exp,pt[i].zeny); } //End EXP giving. @@ -2313,9 +2313,9 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) struct item_data* it = NULL; int drop_rate; #ifdef RENEWAL_DROP - int drop_modifier = mvp_sd ? pc_level_penalty_mod(mvp_sd, md, 2) : - second_sd ? pc_level_penalty_mod(second_sd, md, 2): - third_sd ? pc_level_penalty_mod(third_sd, md, 2) : + int drop_modifier = mvp_sd ? iPc->level_penalty_mod(mvp_sd, md, 2) : + second_sd ? iPc->level_penalty_mod(second_sd, md, 2): + third_sd ? iPc->level_penalty_mod(third_sd, md, 2) : 100;/* no player was attached, we dont use any modifier (100 = rates are not touched) */ #endif dlist->m = md->bl.m; @@ -2394,7 +2394,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) } // Ore Discovery [Celest] - if (sd == mvp_sd && pc_checkskill(sd,BS_FINDINGORE)>0 && battle_config.finding_ore_rate/10 >= rnd()%10000) { + if (sd == mvp_sd && iPc->checkskill(sd,BS_FINDINGORE)>0 && battle_config.finding_ore_rate/10 >= rnd()%10000) { ditem = mob_setdropitem(itemdb_searchrandomid(IG_FINDINGORE), 1, NULL); mob_item_drop(md, dlist, ditem, 0, battle_config.finding_ore_rate/10, homkillonly); } @@ -2433,7 +2433,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) if( sd->bonus.get_zeny_num && rnd()%100 < sd->bonus.get_zeny_rate ) { i = sd->bonus.get_zeny_num > 0 ? sd->bonus.get_zeny_num : -md->level * sd->bonus.get_zeny_num; if (!i) i = 1; - pc_getzeny(sd, 1+rnd()%i, LOG_TYPE_PICKDROP_MONSTER, NULL); + iPc->getzeny(sd, 1+rnd()%i, LOG_TYPE_PICKDROP_MONSTER, NULL); } } @@ -2443,7 +2443,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) mob_item_drop(md, dlist, mob_setlootitem(&md->lootitem[i]), 1, 10000, homkillonly); } if (dlist->item) //There are drop items. - add_timer(tick + (!battle_config.delay_battle_damage?500:0), mob_delay_item_drop, 0, (intptr_t)dlist); + iTimer->add_timer(tick + (!battle_config.delay_battle_damage?500:0), mob_delay_item_drop, 0, (intptr_t)dlist); else //No drops ers_free(item_drop_list_ers, dlist); } else if (md->lootitem && md->lootitem_count) { //Loot MUST drop! @@ -2457,7 +2457,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) dlist->item = NULL; for(i = 0; i < md->lootitem_count; i++) mob_item_drop(md, dlist, mob_setlootitem(&md->lootitem[i]), 1, 10000, homkillonly); - add_timer(tick + (!battle_config.delay_battle_damage?500:0), mob_delay_item_drop, 0, (intptr_t)dlist); + iTimer->add_timer(tick + (!battle_config.delay_battle_damage?500:0), mob_delay_item_drop, 0, (intptr_t)dlist); } if(mvp_sd && md->db->mexp > 0 && !md->special_state.ai) { @@ -2479,7 +2479,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) clif->mvp_effect(mvp_sd); clif->mvp_exp(mvp_sd,mexp); - pc_gainexp(mvp_sd, &md->bl, mexp,0, false); + iPc->gainexp(mvp_sd, &md->bl, mexp,0, false); log_mvp[1] = mexp; if( !(map[m].flag.nomvploot || type&1) ) { @@ -2527,9 +2527,9 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) intif_broadcast(message,strlen(message)+1,0); } - if((temp = pc_additem(mvp_sd,&item,1,LOG_TYPE_PICKDROP_PLAYER)) != 0) { + if((temp = iPc->additem(mvp_sd,&item,1,LOG_TYPE_PICKDROP_PLAYER)) != 0) { clif->additem(mvp_sd,0,0,temp); - map_addflooritem(&item,1,mvp_sd->bl.m,mvp_sd->bl.x,mvp_sd->bl.y,mvp_sd->status.char_id,(second_sd?second_sd->status.char_id:0),(third_sd?third_sd->status.char_id:0),1); + iMap->addflooritem(&item,1,mvp_sd->bl.m,mvp_sd->bl.x,mvp_sd->bl.y,mvp_sd->status.char_id,(second_sd?second_sd->status.char_id:0),(third_sd?third_sd->status.char_id:0),1); } //Logs items, MVP prizes [Lupus] @@ -2560,7 +2560,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) if( sd ) { if( sd->mission_mobid == md->class_) { //TK_MISSION [Skotlex] if( ++sd->mission_count >= 100 && (temp = mob_get_random_id(0, 0xE, sd->status.base_level)) ) { - pc_addfame(sd, 1); + iPc->addfame(sd, 1); sd->mission_mobid = temp; pc_setglobalreg(sd,"TK_MISSION_ID", temp); sd->mission_count = 0; @@ -2570,7 +2570,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) } if( sd->status.party_id ) - map_foreachinrange(quest_update_objective_sub,&md->bl,AREA_SIZE,BL_PC,sd->status.party_id,md->class_); + iMap->foreachinrange(quest_update_objective_sub,&md->bl,AREA_SIZE,BL_PC,sd->status.party_id,md->class_); else if( sd->avail_quests ) quest_update_objective(sd, md->class_); @@ -2580,15 +2580,15 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) if( md->npc_event[0] && !md->state.npc_killmonster ) { if( sd && battle_config.mob_npc_event_type ) { - pc_setparam(sd, SP_KILLERRID, sd->bl.id); + iPc->setparam(sd, SP_KILLERRID, sd->bl.id); npc_event(sd,md->npc_event,0); } else if( mvp_sd ) { - pc_setparam(mvp_sd, SP_KILLERRID, sd?sd->bl.id:0); + iPc->setparam(mvp_sd, SP_KILLERRID, sd?sd->bl.id:0); npc_event(mvp_sd,md->npc_event,0); } else npc_event_do(md->npc_event); } else if( mvp_sd && !md->state.npc_killmonster ) { - pc_setparam(mvp_sd, SP_KILLEDRID, md->class_); + iPc->setparam(mvp_sd, SP_KILLEDRID, md->class_); npc_script_event(mvp_sd, NPCE_KILLNPC); // PCKillNPC [Lance] } @@ -2596,7 +2596,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) } if(md->deletetimer != INVALID_TIMER) { - delete_timer(md->deletetimer,mob_timer_delete); + iTimer->delete_timer(md->deletetimer,mob_timer_delete); md->deletetimer = INVALID_TIMER; } /** @@ -2605,7 +2605,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) if( md->can_summon ) mob_deleteslave(md); - map_freeblock_unlock(); + iMap->freeblock_unlock(); if( !rebirth ) { @@ -2638,7 +2638,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) void mob_revive(struct mob_data *md, unsigned int hp) { - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); md->state.skillstate = MSS_IDLE; md->last_thinktime = tick; md->next_walktime = tick+rnd()%50+5000; @@ -2647,7 +2647,7 @@ void mob_revive(struct mob_data *md, unsigned int hp) memset(md->dmglog, 0, sizeof(md->dmglog)); // Reset the damage done on the rebirthed monster, otherwise will grant full exp + damage done. [Valaris] md->tdmg = 0; if (!md->bl.prev) - map_addblock(&md->bl); + iMap->addblock(&md->bl); clif->spawn(&md->bl); skill->unit_move(&md->bl,tick,1); mobskill_use(md, tick, MSC_SPAWN); @@ -2723,7 +2723,7 @@ int mob_random_class (int *value, size_t count) *------------------------------------------*/ int mob_class_change (struct mob_data *md, int class_) { - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); int i, c, hp_rate; nullpo_ret(md); @@ -2809,7 +2809,7 @@ int mob_warpslave_sub(struct block_list *bl,va_list ap) if(md->master_id!=master->id) return 0; - map_search_freecell(master, 0, &x, &y, range, range, 0); + iMap->search_freecell(master, 0, &x, &y, range, range, 0); unit_warp(&md->bl, master->m, x, y,CLR_RESPAWN); return 1; } @@ -2824,7 +2824,7 @@ int mob_warpslave(struct block_list *bl, int range) if (range < 1) range = 1; //Min range needed to avoid crashes and stuff. [Skotlex] - return map_foreachinmap(mob_warpslave_sub, bl->m, BL_MOB, bl, range); + return iMap->foreachinmap(mob_warpslave_sub, bl->m, BL_MOB, bl, range); } /*========================================== @@ -2847,7 +2847,7 @@ int mob_countslave_sub(struct block_list *bl,va_list ap) *------------------------------------------*/ int mob_countslave(struct block_list *bl) { - return map_foreachinmap(mob_countslave_sub, bl->m, BL_MOB,bl->id); + return iMap->foreachinmap(mob_countslave_sub, bl->m, BL_MOB,bl->id); } /*========================================== @@ -2894,7 +2894,7 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id) if (mobdb_checkid(data.class_) == 0) continue; - if (map_search_freecell(&md2->bl, 0, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 0)) { + if (iMap->search_freecell(&md2->bl, 0, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 0)) { data.x = x; data.y = y; } else { @@ -3003,7 +3003,7 @@ static struct block_list *mob_getfriendhprate(struct mob_data *md,int min_rate,i if (md->special_state.ai) //Summoned creatures. [Skotlex] type = BL_PC; - map_foreachinrange(mob_getfriendhprate_sub, &md->bl, 8, type,md,min_rate,max_rate,&fr); + iMap->foreachinrange(mob_getfriendhprate_sub, &md->bl, 8, type,md,min_rate,max_rate,&fr); return fr; } /*========================================== @@ -3013,7 +3013,7 @@ struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md,int rate) { if( md && md->master_id > 0 ) { - struct block_list *bl = map_id2bl(md->master_id); + struct block_list *bl = iMap->id2bl(md->master_id); if( bl && get_percentage(status_get_hp(bl), status_get_max_hp(bl)) < rate ) return bl; } @@ -3060,7 +3060,7 @@ struct mob_data *mob_getfriendstatus(struct mob_data *md,int cond1,int cond2) struct mob_data* fr = NULL; nullpo_ret(md); - map_foreachinrange(mob_getfriendstatus_sub, &md->bl, 8,BL_MOB, md,cond1,cond2,&fr); + iMap->foreachinrange(mob_getfriendstatus_sub, &md->bl, 8,BL_MOB, md,cond1,cond2,&fr); return fr; } @@ -3162,7 +3162,7 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) case MSC_MASTERHPLTMAXRATE: flag = ((fbl = mob_getmasterhpltmaxrate(md, ms[i].cond2)) != NULL); break; case MSC_MASTERATTACKED: - flag = (md->master_id > 0 && (fbl=map_id2bl(md->master_id)) && unit_counttargeted(fbl) > 0); break; + flag = (md->master_id > 0 && (fbl=iMap->id2bl(md->master_id)) && unit_counttargeted(fbl) > 0); break; case MSC_ALCHEMIST: flag = (md->state.alchemist); break; @@ -3185,12 +3185,12 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) case MST_AROUND6: case MST_AROUND7: case MST_AROUND8: - bl = map_id2bl(md->target_id); + bl = iMap->id2bl(md->target_id); break; case MST_MASTER: bl = &md->bl; if (md->master_id) - bl = map_id2bl(md->master_id); + bl = iMap->id2bl(md->master_id); if (bl) //Otherwise, fall through. break; case MST_FRIEND: @@ -3209,14 +3209,14 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) j = ms[i].target >= MST_AROUND1? (ms[i].target-MST_AROUND1) +1: (ms[i].target-MST_AROUND5) +1; - map_search_freecell(&md->bl, md->bl.m, &x, &y, j, j, 3); + iMap->search_freecell(&md->bl, md->bl.m, &x, &y, j, j, 3); } md->skill_idx = i; - map_freeblock_lock(); + iMap->freeblock_lock(); if( !battle->check_range(&md->bl,bl,skill->get_range2(&md->bl, ms[i].skill_id,ms[i].skill_lv)) || !unit_skilluse_pos2(&md->bl, x, y,ms[i].skill_id, ms[i].skill_lv,ms[i].casttime, ms[i].cancel) ) { - map_freeblock_unlock(); + iMap->freeblock_unlock(); continue; } } else { @@ -3227,12 +3227,12 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) skill->get_range2(&md->bl, ms[i].skill_id, ms[i].skill_lv)); break; case MST_TARGET: - bl = map_id2bl(md->target_id); + bl = iMap->id2bl(md->target_id); break; case MST_MASTER: bl = &md->bl; if (md->master_id) - bl = map_id2bl(md->master_id); + bl = iMap->id2bl(md->master_id); if (bl) //Otherwise, fall through. break; case MST_FRIEND: @@ -3250,11 +3250,11 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) if (!bl) continue; md->skill_idx = i; - map_freeblock_lock(); + iMap->freeblock_lock(); if( !battle->check_range(&md->bl,bl,skill->get_range2(&md->bl, ms[i].skill_id,ms[i].skill_lv)) || !unit_skilluse_id2(&md->bl, bl->id,ms[i].skill_id, ms[i].skill_lv,ms[i].casttime, ms[i].cancel) ) { - map_freeblock_unlock(); + iMap->freeblock_unlock(); continue; } } @@ -3274,7 +3274,7 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) md->skilldelay[j]=tick; } else md->skilldelay[i]=tick; - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } //No skill was used. @@ -3384,8 +3384,8 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons //Go Backwards to give better priority to advanced skills. for (i=0,j = MAX_SKILL_TREE-1;j>=0 && i< MAX_MOBSKILL ;j--) { - int idx = skill_tree[pc_class2idx(sd->status.class_)][j].idx; - skill_id = skill_tree[pc_class2idx(sd->status.class_)][j].id; + int idx = skill_tree[iPc->class2idx(sd->status.class_)][j].idx; + skill_id = skill_tree[iPc->class2idx(sd->status.class_)][j].id; if (!skill_id || sd->status.skill[idx].lv < 1 || (skill_db[idx].inf2&(INF2_WEDDING_SKILL|INF2_GUILD_SKILL)) ) @@ -3522,8 +3522,8 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons if (duration) //Auto Delete after a while. { if( md->deletetimer != INVALID_TIMER ) - delete_timer(md->deletetimer, mob_timer_delete); - md->deletetimer = add_timer (gettick() + duration, mob_timer_delete, md->bl.id, 0); + iTimer->delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = iTimer->add_timer (iTimer->gettick() + duration, mob_timer_delete, md->bl.id, 0); } } @@ -3897,14 +3897,14 @@ static void mob_readdb(void) if(fi > 0) { char path[256]; - sprintf(path, "%s/%s", db_path, filename[fi]); + sprintf(path, "%s/%s", iMap->db_path, filename[fi]); if(!exists(path)) { continue; } } - sv->readdb(db_path, filename[fi], ',', 31+2*MAX_MVP_DROP+2*MAX_MOB_DROP, 31+2*MAX_MVP_DROP+2*MAX_MOB_DROP, -1, &mob_readdb_sub); + sv->readdb(iMap->db_path, filename[fi], ',', 31+2*MAX_MVP_DROP+2*MAX_MOB_DROP, 31+2*MAX_MVP_DROP+2*MAX_MOB_DROP, -1, &mob_readdb_sub); } } @@ -3913,7 +3913,7 @@ static void mob_readdb(void) *------------------------------------------*/ static int mob_read_sqldb(void) { - const char* mob_db_name[] = { mob_db_db, mob_db2_db }; + const char* mob_db_name[] = { iMap->mob_db_db, iMap->mob_db2_db }; int fi; for( fi = 0; fi < ARRAYLENGTH(mob_db_name); ++fi ) { @@ -4021,7 +4021,7 @@ static int mob_read_randommonster(void) for( i = 0; i < ARRAYLENGTH(mobfile) && i < MAX_RANDOMMONSTER; i++ ) { unsigned int count = 0; mob_db_data[0]->summonper[i] = 1002; // Default fallback value, in case the database does not provide one - sprintf(line, "%s/%s", db_path, mobfile[i]); + sprintf(line, "%s/%s", iMap->db_path, mobfile[i]); fp=fopen(line,"r"); if(fp==NULL){ ShowError("can't read %s\n",line); @@ -4135,7 +4135,7 @@ static void mob_readchatdb(void) char line[1024], path[256]; int i, tmp=0; FILE *fp; - sprintf(path, "%s/%s", db_path, arc); + sprintf(path, "%s/%s", iMap->db_path, arc); fp=fopen(path, "r"); if(fp == NULL) { @@ -4461,14 +4461,14 @@ static void mob_readskilldb(void) { if(fi > 0) { char path[256]; - sprintf(path, "%s/%s", db_path, filename[fi]); + sprintf(path, "%s/%s", iMap->db_path, filename[fi]); if(!exists(path)) { continue; } } - sv->readdb(db_path, filename[fi], ',', 19, 19, -1, &mob_parse_row_mobskilldb); + sv->readdb(iMap->db_path, filename[fi], ',', 19, 19, -1, &mob_parse_row_mobskilldb); } } @@ -4479,7 +4479,7 @@ static void mob_readskilldb(void) { */ static int mob_read_sqlskilldb(void) { - const char* mob_skill_db_name[] = { mob_skill_db_db, mob_skill_db2_db }; + const char* mob_skill_db_name[] = { iMap->mob_skill_db_db, iMap->mob_skill_db2_db }; int fi; if( battle_config.mob_skill_rate == 0 ) { @@ -4583,9 +4583,9 @@ static bool mob_readdb_itemratio(char* str[], int columns, int current) */ static void mob_load(void) { - sv->readdb(db_path, "mob_item_ratio.txt", ',', 2, 2+MAX_ITEMRATIO_MOBS, -1, &mob_readdb_itemratio); // must be read before mobdb + sv->readdb(iMap->db_path, "mob_item_ratio.txt", ',', 2, 2+MAX_ITEMRATIO_MOBS, -1, &mob_readdb_itemratio); // must be read before mobdb mob_readchatdb(); - if (db_use_sqldbs) + if (iMap->db_use_sqldbs) { mob_read_sqldb(); mob_read_sqlskilldb(); @@ -4595,9 +4595,9 @@ static void mob_load(void) mob_readdb(); mob_readskilldb(); } - sv->readdb(db_path, "mob_avail.txt", ',', 2, 12, -1, &mob_readdb_mobavail); + sv->readdb(iMap->db_path, "mob_avail.txt", ',', 2, 12, -1, &mob_readdb_mobavail); mob_read_randommonster(); - sv->readdb(db_path, DBPATH"mob_race2_db.txt", ',', 2, 20, -1, &mob_readdb_race2); + sv->readdb(iMap->db_path, DBPATH"mob_race2_db.txt", ',', 2, 20, -1, &mob_readdb_race2); } void mob_reload(void) { @@ -4642,15 +4642,15 @@ int do_init_mob(void) mob_load(); - add_timer_func_list(mob_delayspawn,"mob_delayspawn"); - add_timer_func_list(mob_delay_item_drop,"mob_delay_item_drop"); - add_timer_func_list(mob_ai_hard,"mob_ai_hard"); - add_timer_func_list(mob_ai_lazy,"mob_ai_lazy"); - add_timer_func_list(mob_timer_delete,"mob_timer_delete"); - add_timer_func_list(mob_spawn_guardian_sub,"mob_spawn_guardian_sub"); - add_timer_func_list(mob_respawn,"mob_respawn"); - add_timer_interval(gettick()+MIN_MOBTHINKTIME,mob_ai_hard,0,0,MIN_MOBTHINKTIME); - add_timer_interval(gettick()+MIN_MOBTHINKTIME*10,mob_ai_lazy,0,0,MIN_MOBTHINKTIME*10); + iTimer->add_timer_func_list(mob_delayspawn,"mob_delayspawn"); + iTimer->add_timer_func_list(mob_delay_item_drop,"mob_delay_item_drop"); + iTimer->add_timer_func_list(mob_ai_hard,"mob_ai_hard"); + iTimer->add_timer_func_list(mob_ai_lazy,"mob_ai_lazy"); + iTimer->add_timer_func_list(mob_timer_delete,"mob_timer_delete"); + iTimer->add_timer_func_list(mob_spawn_guardian_sub,"mob_spawn_guardian_sub"); + iTimer->add_timer_func_list(mob_respawn,"mob_respawn"); + iTimer->add_timer_interval(iTimer->gettick()+MIN_MOBTHINKTIME,mob_ai_hard,0,0,MIN_MOBTHINKTIME); + iTimer->add_timer_interval(iTimer->gettick()+MIN_MOBTHINKTIME*10,mob_ai_lazy,0,0,MIN_MOBTHINKTIME*10); return 0; } diff --git a/src/map/npc.c b/src/map/npc.c index 4e1e79808..7a6516d9a 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -57,14 +57,14 @@ static int npc_cache_mob=0; /// Returns a new npc id that isn't being used in id_db. /// Fatal error if nothing is available. int npc_get_new_npc_id(void) { - if( npc_id >= START_NPC_NUM && !map_blid_exists(npc_id) ) + if( npc_id >= START_NPC_NUM && !iMap->blid_exists(npc_id) ) return npc_id++;// available else {// find next id int base_id = npc_id; while( base_id != ++npc_id ) { if( npc_id < START_NPC_NUM ) npc_id = START_NPC_NUM; - if( !map_blid_exists(npc_id) ) + if( !iMap->blid_exists(npc_id) ) return npc_id++;// available } // full loop, nothing available @@ -131,7 +131,7 @@ static int npc_isnear_sub(struct block_list* bl, va_list args) { bool npc_isnear(struct block_list * bl) { if( battle_config.min_npc_vendchat_distance > 0 && - map_foreachinrange(npc_isnear_sub,bl, battle_config.min_npc_vendchat_distance, BL_NPC) ) + iMap->foreachinrange(npc_isnear_sub,bl, battle_config.min_npc_vendchat_distance, BL_NPC) ) return true; return false; @@ -223,7 +223,7 @@ int npc_enable(const char* name, int flag) clif->changeoption(&nd->bl); if( flag&3 && (nd->u.scr.xs >= 0 || nd->u.scr.ys >= 0) ) //check if player standing on a OnTouchArea - map_foreachinarea( npc_enable_sub, nd->bl.m, nd->bl.x-nd->u.scr.xs, nd->bl.y-nd->u.scr.ys, nd->bl.x+nd->u.scr.xs, nd->bl.y+nd->u.scr.ys, BL_PC, nd ); + iMap->foreachinarea( npc_enable_sub, nd->bl.m, nd->bl.x-nd->u.scr.xs, nd->bl.y-nd->u.scr.ys, nd->bl.x+nd->u.scr.xs, nd->bl.y+nd->u.scr.ys, BL_PC, nd ); return 0; } @@ -245,7 +245,7 @@ struct npc_data* npc_name2id(const char* name) int npc_rr_secure_timeout_timer(int tid, unsigned int tick, int id, intptr_t data) { struct map_session_data* sd = NULL; unsigned int timeout = NPC_SECURE_TIMEOUT_NEXT; - if( (sd = map_id2sd(id)) == NULL || !sd->npc_id ) { + if( (sd = iMap->id2sd(id)) == NULL || !sd->npc_id ) { if( sd ) sd->npc_idle_timer = INVALID_TIMER; return 0;//Not logged in anymore OR no longer attached to a npc } @@ -303,7 +303,7 @@ int npc_event_dequeue(struct map_session_data* sd) if (!sd->eventqueue[0][0]) return 0; //Nothing to dequeue - if (!pc_addeventtimer(sd,100,sd->eventqueue[0])) { //Failed to dequeue, couldn't set a timer. + if (!iPc->addeventtimer(sd,100,sd->eventqueue[0])) { //Failed to dequeue, couldn't set a timer. ShowWarning("npc_event_dequeue: event timer is full !\n"); return 0; } @@ -350,7 +350,7 @@ int npc_event_doall_sub(DBKey key, DBData *data, va_list ap) const char* name; int rid; - nullpo_ret(ev = DB->data2ptr(data)); + nullpo_ret(ev = iDB->data2ptr(data)); nullpo_ret(c = va_arg(ap, int *)); nullpo_ret(name = va_arg(ap, const char *)); rid = va_arg(ap, int); @@ -359,7 +359,7 @@ int npc_event_doall_sub(DBKey key, DBData *data, va_list ap) if( p && strcmpi(name, p) == 0 /* && !ev->nd->src_id */ ) // Do not run on duplicates. [Paradox924X] { if(rid) // a player may only have 1 script running at the same time - npc_event_sub(map_id2sd(rid),ev,key.str); + npc_event_sub(iMap->id2sd(rid),ev,key.str); else run_script(ev->nd->u.scr.script,ev->pos,rid,ev->nd->bl.id); (*c)++; @@ -378,7 +378,7 @@ static int npc_event_do_sub(DBKey key, DBData *data, va_list ap) int* c; const char* name; - nullpo_ret(ev = DB->data2ptr(data)); + nullpo_ret(ev = iDB->data2ptr(data)); nullpo_ret(c = va_arg(ap, int *)); nullpo_ret(name = va_arg(ap, const char *)); @@ -479,7 +479,7 @@ void npc_event_do_oninit(void) { ShowStatus("Event '"CL_WHITE"OnInit"CL_RESET"' executed with '"CL_WHITE"%d"CL_RESET"' NPCs."CL_CLL"\n", npc_event_doall("OnInit")); - add_timer_interval(gettick()+100,npc_event_do_clock,0,0,1000); + iTimer->add_timer_interval(iTimer->gettick()+100,npc_event_do_clock,0,0,1000); } /*========================================== @@ -526,7 +526,7 @@ int npc_timerevent(int tid, unsigned int tick, int id, intptr_t data) { int old_rid, old_timer; unsigned int old_tick; - struct npc_data* nd=(struct npc_data *)map_id2bl(id); + struct npc_data* nd=(struct npc_data *)iMap->id2bl(id); struct npc_timerevent_list *te; struct timer_event_data *ted = (struct timer_event_data*)data; struct map_session_data *sd=NULL; @@ -537,7 +537,7 @@ int npc_timerevent(int tid, unsigned int tick, int id, intptr_t data) return 0; } - if( ted->rid && !(sd = map_id2sd(ted->rid)) ) + if( ted->rid && !(sd = iMap->id2sd(ted->rid)) ) { ShowError("npc_timerevent: Attached player not found.\n"); ers_free(timer_event_ers, ted); @@ -565,9 +565,9 @@ int npc_timerevent(int tid, unsigned int tick, int id, intptr_t data) next = nd->u.scr.timer_event[ ted->next ].timer - nd->u.scr.timer_event[ ted->next - 1 ].timer; ted->time += next; if( sd ) - sd->npc_timer_id = add_timer(tick+next,npc_timerevent,id,(intptr_t)ted); + sd->npc_timer_id = iTimer->add_timer(tick+next,npc_timerevent,id,(intptr_t)ted); else - nd->u.scr.timerid = add_timer(tick+next,npc_timerevent,id,(intptr_t)ted); + nd->u.scr.timerid = iTimer->add_timer(tick+next,npc_timerevent,id,(intptr_t)ted); } else { @@ -597,7 +597,7 @@ int npc_timerevent(int tid, unsigned int tick, int id, intptr_t data) int npc_timerevent_start(struct npc_data* nd, int rid) { int j; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); struct map_session_data *sd = NULL; //Player to whom script is attached. nullpo_ret(nd); @@ -605,7 +605,7 @@ int npc_timerevent_start(struct npc_data* nd, int rid) // Check if there is an OnTimer Event ARR_FIND( 0, nd->u.scr.timeramount, j, nd->u.scr.timer_event[j].timer > nd->u.scr.timer ); - if( nd->u.scr.rid > 0 && !(sd = map_id2sd(nd->u.scr.rid)) ) + if( nd->u.scr.rid > 0 && !(sd = iMap->id2sd(nd->u.scr.rid)) ) { // Failed to attach timer to this player. ShowError("npc_timerevent_start: Attached player not found!\n"); return 1; @@ -632,13 +632,13 @@ int npc_timerevent_start(struct npc_data* nd, int rid) if( sd ) { ted->rid = sd->bl.id; // Attach only the player if attachplayerrid was used. - sd->npc_timer_id = add_timer(tick+next,npc_timerevent,nd->bl.id,(intptr_t)ted); + sd->npc_timer_id = iTimer->add_timer(tick+next,npc_timerevent,nd->bl.id,(intptr_t)ted); } else { ted->rid = 0; nd->u.scr.timertick = tick; // Set when timer is started - nd->u.scr.timerid = add_timer(tick+next,npc_timerevent,nd->bl.id,(intptr_t)ted); + nd->u.scr.timerid = iTimer->add_timer(tick+next,npc_timerevent,nd->bl.id,(intptr_t)ted); } } else if (!sd) @@ -659,7 +659,7 @@ int npc_timerevent_stop(struct npc_data* nd) nullpo_ret(nd); - if( nd->u.scr.rid && !(sd = map_id2sd(nd->u.scr.rid)) ) + if( nd->u.scr.rid && !(sd = iMap->id2sd(nd->u.scr.rid)) ) { ShowError("npc_timerevent_stop: Attached player not found!\n"); return 1; @@ -672,16 +672,16 @@ int npc_timerevent_stop(struct npc_data* nd) // Delete timer if ( *tid != INVALID_TIMER ) { - td = get_timer(*tid); + td = iTimer->get_timer(*tid); if( td && td->data ) ers_free(timer_event_ers, (void*)td->data); - delete_timer(*tid,npc_timerevent); + iTimer->delete_timer(*tid,npc_timerevent); *tid = INVALID_TIMER; } if( !sd && nd->u.scr.timertick ) { - nd->u.scr.timer += DIFF_TICK(gettick(),nd->u.scr.timertick); // Set 'timer' to the time that has passed since the beginning of the timers + nd->u.scr.timer += DIFF_TICK(iTimer->gettick(),nd->u.scr.timertick); // Set 'timer' to the time that has passed since the beginning of the timers nd->u.scr.timertick = 0; // Set 'tick' to zero so that we know it's off. } @@ -699,16 +699,16 @@ void npc_timerevent_quit(struct map_session_data* sd) // Check timer existance if( sd->npc_timer_id == INVALID_TIMER ) return; - if( !(td = get_timer(sd->npc_timer_id)) ) + if( !(td = iTimer->get_timer(sd->npc_timer_id)) ) { sd->npc_timer_id = INVALID_TIMER; return; } // Delete timer - nd = (struct npc_data *)map_id2bl(td->id); + nd = (struct npc_data *)iMap->id2bl(td->id); ted = (struct timer_event_data*)td->data; - delete_timer(sd->npc_timer_id, npc_timerevent); + iTimer->delete_timer(sd->npc_timer_id, npc_timerevent); sd->npc_timer_id = INVALID_TIMER; // Execute OnTimerQuit @@ -735,7 +735,7 @@ void npc_timerevent_quit(struct map_session_data* sd) old_timer = nd->u.scr.timer; nd->u.scr.rid = sd->bl.id; - nd->u.scr.timertick = gettick(); + nd->u.scr.timertick = iTimer->gettick(); nd->u.scr.timer = ted->time; //Execute label @@ -763,7 +763,7 @@ int npc_gettimerevent_tick(struct npc_data* nd) tick = nd->u.scr.timer; // The last time it's active(start, stop or event trigger) if( nd->u.scr.timertick ) // It's a running timer - tick += DIFF_TICK(gettick(), nd->u.scr.timertick); + tick += DIFF_TICK(iTimer->gettick(), nd->u.scr.timertick); return tick; } @@ -860,7 +860,7 @@ int npc_touch_areanpc_sub(struct block_list *bl, va_list ap) char *name; nullpo_ret(bl); - nullpo_ret((sd = map_id2sd(bl->id))); + nullpo_ret((sd = iMap->id2sd(bl->id))); pc_id = va_arg(ap,int); name = va_arg(ap,char*); @@ -883,7 +883,7 @@ int npc_touch_areanpc_sub(struct block_list *bl, va_list ap) *------------------------------------------*/ int npc_touchnext_areanpc(struct map_session_data* sd, bool leavemap) { - struct npc_data *nd = map_id2nd(sd->touching_id); + struct npc_data *nd = iMap->id2nd(sd->touching_id); short xs, ys; if( !nd || nd->touching_id != sd->bl.id ) @@ -901,7 +901,7 @@ int npc_touchnext_areanpc(struct map_session_data* sd, bool leavemap) nd->touching_id = sd->touching_id = 0; snprintf(name, ARRAYLENGTH(name), "%s::%s", nd->exname, script_config.ontouch_name); - map_forcountinarea(npc_touch_areanpc_sub,nd->bl.m,nd->bl.x - xs,nd->bl.y - ys,nd->bl.x + xs,nd->bl.y + ys,1,BL_PC,sd->bl.id,name); + iMap->forcountinarea(npc_touch_areanpc_sub,nd->bl.m,nd->bl.x - xs,nd->bl.y - ys,nd->bl.x + xs,nd->bl.y + ys,1,BL_PC,sd->bl.id,name); } return 0; } @@ -954,7 +954,7 @@ int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y) case WARP: if( pc_ishiding(sd) || (sd->sc.count && sd->sc.data[SC_CAMOUFLAGE]) ) break; // hidden chars cannot use warps - pc_setpos(sd,map[m].npc[i]->u.warp.mapindex,map[m].npc[i]->u.warp.x,map[m].npc[i]->u.warp.y,CLR_OUTSIGHT); + iPc->setpos(sd,map[m].npc[i]->u.warp.mapindex,map[m].npc[i]->u.warp.x,map[m].npc[i]->u.warp.y,CLR_OUTSIGHT); break; case SCRIPT: for (j = i; j < map[m].npc_num; j++) { @@ -966,7 +966,7 @@ int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y) (sd->bl.y >= (map[m].npc[j]->bl.y - map[m].npc[j]->u.warp.ys) && sd->bl.y <= (map[m].npc[j]->bl.y + map[m].npc[j]->u.warp.ys))) { if( pc_ishiding(sd) || (sd->sc.count && sd->sc.data[SC_CAMOUFLAGE]) ) break; // hidden chars cannot use warps - pc_setpos(sd,map[m].npc[j]->u.warp.mapindex,map[m].npc[j]->u.warp.x,map[m].npc[j]->u.warp.y,CLR_OUTSIGHT); + iPc->setpos(sd,map[m].npc[j]->u.warp.mapindex,map[m].npc[j]->u.warp.x,map[m].npc[j]->u.warp.y,CLR_OUTSIGHT); found_warp = 1; break; } @@ -1025,7 +1025,7 @@ int npc_touch_areanpc2(struct mob_data *md) switch( map[m].npc[i]->subtype ) { case WARP: - xs = map_mapindex2mapid(map[m].npc[i]->u.warp.mapindex); + xs = iMap->mapindex2mapid(map[m].npc[i]->u.warp.mapindex); if( m < 0 ) break; // Cannot Warp between map servers if( unit_warp(&md->bl, xs, map[m].npc[i]->u.warp.x, map[m].npc[i]->u.warp.y, CLR_OUTSIGHT) == 0 ) @@ -1040,7 +1040,7 @@ int npc_touch_areanpc2(struct mob_data *md) md->areanpc_id = map[m].npc[i]->bl.id; id = md->bl.id; // Stores Unique ID run_script(ev->nd->u.scr.script, ev->pos, md->bl.id, ev->nd->bl.id); - if( map_id2md(id) == NULL ) return 1; // Not Warped, but killed + if( iMap->id2md(id) == NULL ) return 1; // Not Warped, but killed break; } @@ -1071,7 +1071,7 @@ int npc_check_areanpc(int flag, int16 m, int16 x, int16 y, int16 range) i = 0; for (ys = y0; ys <= y1 && !i; ys++) { for(xs = x0; xs <= x1 && !i; xs++){ - if (map_getcell(m,xs,ys,CELL_CHKNPC)) + if (iMap->getcell(m,xs,ys,CELL_CHKNPC)) i = 1; } } @@ -1224,8 +1224,8 @@ int npc_scriptcont(struct map_session_data* sd, int id, bool closing) nullpo_retr(1, sd); if( id != sd->npc_id ){ - TBL_NPC* nd_sd=(TBL_NPC*)map_id2bl(sd->npc_id); - TBL_NPC* nd=(TBL_NPC*)map_id2bl(id); + TBL_NPC* nd_sd=(TBL_NPC*)iMap->id2bl(sd->npc_id); + TBL_NPC* nd=(TBL_NPC*)iMap->id2bl(id); ShowDebug("npc_scriptcont: %s (sd->npc_id=%d) is not %s (id=%d).\n", nd_sd?(char*)nd_sd->name:"'Unknown NPC'", (int)sd->npc_id, nd?(char*)nd->name:"'Unknown NPC'", (int)id); @@ -1233,7 +1233,7 @@ int npc_scriptcont(struct map_session_data* sd, int id, bool closing) } if(id != fake_nd->bl.id) { // Not item script - if ((npc_checknear(sd,map_id2bl(id))) == NULL){ + if ((npc_checknear(sd,iMap->id2bl(id))) == NULL){ ShowWarning("npc_scriptcont: failed npc_checknear test.\n"); return 1; } @@ -1251,7 +1251,7 @@ int npc_scriptcont(struct map_session_data* sd, int id, bool closing) /** * WPE can get to this point with a progressbar; we deny it. **/ - if( sd->progressbar.npc_id && DIFF_TICK(sd->progressbar.timeout,gettick()) > 0 ) + if( sd->progressbar.npc_id && DIFF_TICK(sd->progressbar.timeout,iTimer->gettick()) > 0 ) return 1; if( closing && sd->st->state == CLOSE ) @@ -1271,7 +1271,7 @@ int npc_buysellsel(struct map_session_data* sd, int id, int type) nullpo_retr(1, sd); - if ((nd = npc_checknear(sd,map_id2bl(id))) == NULL) + if ((nd = npc_checknear(sd,iMap->id2bl(id))) == NULL) return 1; if (nd->subtype!=SHOP) { @@ -1304,7 +1304,7 @@ int npc_buysellsel(struct map_session_data* sd, int id, int type) int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, unsigned short* item_list) { int i, j, nameid, amount, new_, w, vt; - struct npc_data *nd = (struct npc_data *)map_id2bl(sd->npc_shopid); + struct npc_data *nd = (struct npc_data *)iMap->id2bl(sd->npc_shopid); if( !nd || nd->subtype != CASHSHOP ) return 1; @@ -1335,7 +1335,7 @@ int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, uns amount = item_list[i*2+0] = 1; } - switch( pc_checkadditem(sd,nameid,amount) ) + switch( iPc->checkadditem(sd,nameid,amount) ) { case ADDITEM_NEW: new_++; @@ -1350,14 +1350,14 @@ int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, uns if( w + sd->weight > sd->max_weight ) return 3; - if( pc_inventoryblank(sd) < new_ ) + if( iPc->inventoryblank(sd) < new_ ) return 3; if( points > vt ) points = vt; // Payment Process ---------------------------------------------------- if( sd->kafraPoints < points || sd->cashPoints < (vt - points) ) return 6; - pc_paycash(sd,vt,points); + iPc->paycash(sd,vt,points); // Delivery Process ---------------------------------------------------- for( i = 0; i < count; i++ ) @@ -1373,7 +1373,7 @@ int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, uns { item_tmp.nameid = nameid; item_tmp.identify = 1; - pc_additem(sd,&item_tmp,amount,LOG_TYPE_NPC); + iPc->additem(sd,&item_tmp,amount,LOG_TYPE_NPC); } } @@ -1411,7 +1411,7 @@ static int npc_buylist_sub(struct map_session_data* sd, int n, unsigned short* i *------------------------------------------*/ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int points) { - struct npc_data *nd = (struct npc_data *)map_id2bl(sd->npc_shopid); + struct npc_data *nd = (struct npc_data *)iMap->id2bl(sd->npc_shopid); struct item_data *item; int i, price, w; @@ -1443,10 +1443,10 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po amount = 1; } - switch( pc_checkadditem(sd, nameid, amount) ) + switch( iPc->checkadditem(sd, nameid, amount) ) { case ADDITEM_NEW: - if( pc_inventoryblank(sd) == 0 ) + if( iPc->inventoryblank(sd) == 0 ) return 3; break; case ADDITEM_OVERAMOUNT: @@ -1472,7 +1472,7 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po if( (sd->kafraPoints < points) || (sd->cashPoints < price - points) ) return 6; - pc_paycash(sd, price, points); + iPc->paycash(sd, price, points); if( !pet_create_egg(sd, nameid) ) { @@ -1481,7 +1481,7 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po item_tmp.nameid = nameid; item_tmp.identify = 1; - pc_additem(sd,&item_tmp, amount, LOG_TYPE_NPC); + iPc->additem(sd,&item_tmp, amount, LOG_TYPE_NPC); } return 0; @@ -1500,7 +1500,7 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list) nullpo_retr(3, sd); nullpo_retr(3, item_list); - nd = npc_checknear(sd,map_id2bl(sd->npc_shopid)); + nd = npc_checknear(sd,iMap->id2bl(sd->npc_shopid)); if( nd == NULL ) return 3; if( nd->subtype != SHOP ) @@ -1541,7 +1541,7 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list) continue; } - switch( pc_checkadditem(sd,nameid,amount) ) { + switch( iPc->checkadditem(sd,nameid,amount) ) { case ADDITEM_EXIST: break; @@ -1553,7 +1553,7 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list) return 2; } - value = pc_modifybuyvalue(sd,value); + value = iPc->modifybuyvalue(sd,value); z += (double)value * amount; w += itemdb_weight(nameid) * amount; @@ -1566,10 +1566,10 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list) return 1; // Not enough Zeny if( w + sd->weight > sd->max_weight ) return 2; // Too heavy - if( pc_inventoryblank(sd) < new_ ) + if( iPc->inventoryblank(sd) < new_ ) return 3; // Not enough space to store items - pc_payzeny(sd,(int)z,LOG_TYPE_NPC, NULL); + iPc->payzeny(sd,(int)z,LOG_TYPE_NPC, NULL); for( i = 0; i < n; ++i ) { int nameid = item_list[i*2+1]; @@ -1583,12 +1583,12 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list) item_tmp.nameid = nameid; item_tmp.identify = 1; - pc_additem(sd,&item_tmp,amount,LOG_TYPE_NPC); + iPc->additem(sd,&item_tmp,amount,LOG_TYPE_NPC); } } // custom merchant shop exp bonus - if( battle_config.shop_exp > 0 && z > 0 && (skill_t = pc_checkskill2(sd,idx)) > 0 ) { + if( battle_config.shop_exp > 0 && z > 0 && (skill_t = iPc->checkskill2(sd,idx)) > 0 ) { if( sd->status.skill[idx].flag >= SKILL_FLAG_REPLACED_LV_0 ) skill_t = sd->status.skill[idx].flag - SKILL_FLAG_REPLACED_LV_0; @@ -1596,7 +1596,7 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list) z = z * (double)skill_t * (double)battle_config.shop_exp/10000.; if( z < 1 ) z = 1; - pc_gainexp(sd,NULL,0,(int)z, false); + iPc->gainexp(sd,NULL,0,(int)z, false); } } @@ -1673,7 +1673,7 @@ int npc_selllist(struct map_session_data* sd, int n, unsigned short* item_list) nullpo_retr(1, sd); nullpo_retr(1, item_list); - if( ( nd = npc_checknear(sd, map_id2bl(sd->npc_shopid)) ) == NULL || nd->subtype != SHOP ) { + if( ( nd = npc_checknear(sd, iMap->id2bl(sd->npc_shopid)) ) == NULL || nd->subtype != SHOP ) { return 1; } @@ -1700,7 +1700,7 @@ int npc_selllist(struct map_session_data* sd, int n, unsigned short* item_list) continue; } - value = pc_modifysellvalue(sd, sd->inventory_data[idx]->value_sell); + value = iPc->modifysellvalue(sd, sd->inventory_data[idx]->value_sell); z+= (double)value*amount; } @@ -1722,16 +1722,16 @@ int npc_selllist(struct map_session_data* sd, int n, unsigned short* item_list) } } - pc_delitem(sd, idx, amount, 0, 6, LOG_TYPE_NPC); + iPc->delitem(sd, idx, amount, 0, 6, LOG_TYPE_NPC); } if( z > MAX_ZENY ) z = MAX_ZENY; - pc_getzeny(sd, (int)z, LOG_TYPE_NPC, NULL); + iPc->getzeny(sd, (int)z, LOG_TYPE_NPC, NULL); // custom merchant shop exp bonus - if( battle_config.shop_exp > 0 && z > 0 && ( skill_t = pc_checkskill2(sd,idx) ) > 0) { + if( battle_config.shop_exp > 0 && z > 0 && ( skill_t = iPc->checkskill2(sd,idx) ) > 0) { if( sd->status.skill[idx].flag >= SKILL_FLAG_REPLACED_LV_0 ) skill_t = sd->status.skill[idx].flag - SKILL_FLAG_REPLACED_LV_0; @@ -1739,7 +1739,7 @@ int npc_selllist(struct map_session_data* sd, int n, unsigned short* item_list) z = z * (double)skill_t * (double)battle_config.shop_exp/10000.; if( z < 1 ) z = 1; - pc_gainexp(sd, NULL, 0, (int)z, false); + iPc->gainexp(sd, NULL, 0, (int)z, false); } } @@ -1757,7 +1757,7 @@ int npc_remove_map(struct npc_data* nd) { m = nd->bl.m; clif->clearunit_area(&nd->bl,CLR_RESPAWN); npc_unsetcells(nd); - map_delblock(&nd->bl); + iMap->delblock(&nd->bl); //Remove npc from map[].npc list. [Skotlex] ARR_FIND( 0, map[m].npc_num, i, map[m].npc[i] == nd ); if( i == map[m].npc_num ) return 2; //failed to find it? @@ -1773,7 +1773,7 @@ int npc_remove_map(struct npc_data* nd) { */ static int npc_unload_ev(DBKey key, DBData *data, va_list ap) { - struct event_data* ev = DB->data2ptr(data); + struct event_data* ev = iDB->data2ptr(data); char* npcname = va_arg(ap, char *); if(strcmp(ev->nd->exname,npcname)==0){ @@ -1798,7 +1798,7 @@ static int npc_unload_dup_sub(struct npc_data* nd, va_list args) //Removes all npcs that are duplicates of the passed one. [Skotlex] void npc_unload_duplicates(struct npc_data* nd) { - map_foreachnpc(npc_unload_dup_sub,nd->bl.id); + iMap->map_foreachnpc(npc_unload_dup_sub,nd->bl.id); } //Removes an npc from map and db. @@ -1807,7 +1807,7 @@ int npc_unload(struct npc_data* nd, bool single) { nullpo_ret(nd); npc_remove_map(nd); - map_deliddb(&nd->bl); + iMap->deliddb(&nd->bl); if( single ) strdb_remove(npcname_db, nd->exname); @@ -1843,14 +1843,14 @@ int npc_unload(struct npc_data* nd, bool single) { for( bl = (struct block_list*)mapit->first(iter); mapit->exists(iter); bl = (struct block_list*)mapit->next(iter) ) { struct map_session_data *sd = ((TBL_PC*)bl); if( sd && sd->npc_timer_id != INVALID_TIMER ) { - const struct TimerData *td = get_timer(sd->npc_timer_id); + const struct TimerData *td = iTimer->get_timer(sd->npc_timer_id); if( td && td->id != nd->bl.id ) continue; if( td && td->data ) ers_free(timer_event_ers, (void*)td->data); - delete_timer(sd->npc_timer_id, npc_timerevent); + iTimer->delete_timer(sd->npc_timer_id, npc_timerevent); sd->npc_timer_id = INVALID_TIMER; } } @@ -1858,10 +1858,10 @@ int npc_unload(struct npc_data* nd, bool single) { if (nd->u.scr.timerid != INVALID_TIMER) { const struct TimerData *td; - td = get_timer(nd->u.scr.timerid); + td = iTimer->get_timer(nd->u.scr.timerid); if (td && td->data) ers_free(timer_event_ers, (void*)td->data); - delete_timer(nd->u.scr.timerid, npc_timerevent); + iTimer->delete_timer(nd->u.scr.timerid, npc_timerevent); } if (nd->u.scr.timer_event) aFree(nd->u.scr.timer_event); @@ -2059,7 +2059,7 @@ struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short CREATE(nd, struct npc_data, 1); nd->bl.id = npc_get_new_npc_id(); - map_addnpc(from_mapid, nd); + iMap->addnpc(from_mapid, nd); nd->bl.prev = nd->bl.next = NULL; nd->bl.m = from_mapid; nd->bl.x = from_x; @@ -2090,7 +2090,7 @@ struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short nd->bl.type = BL_NPC; nd->subtype = WARP; npc_setcells(nd); - map_addblock(&nd->bl); + iMap->addblock(&nd->bl); status_set_viewdata(&nd->bl, nd->class_); nd->ud = &npc_base_ud; if( map[nd->bl.m].users ) @@ -2117,7 +2117,7 @@ static const char* npc_parse_warp(char* w1, char* w2, char* w3, char* w4, const return strchr(start,'\n');// skip and continue } - m = map_mapname2mapid(mapname); + m = iMap->mapname2mapid(mapname); i = mapindex_name2id(to_mapname); if( i == 0 ) { @@ -2133,7 +2133,7 @@ static const char* npc_parse_warp(char* w1, char* w2, char* w3, char* w4, const CREATE(nd, struct npc_data, 1); nd->bl.id = npc_get_new_npc_id(); - map_addnpc(m, nd); + iMap->addnpc(m, nd); nd->bl.prev = nd->bl.next = NULL; nd->bl.m = m; nd->bl.x = x; @@ -2155,7 +2155,7 @@ static const char* npc_parse_warp(char* w1, char* w2, char* w3, char* w4, const nd->bl.type = BL_NPC; nd->subtype = WARP; npc_setcells(nd); - map_addblock(&nd->bl); + iMap->addblock(&nd->bl); status_set_viewdata(&nd->bl, nd->class_); nd->ud = &npc_base_ud; if( map[nd->bl.m].users ) @@ -2188,7 +2188,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const return strchr(start,'\n');// skip and continue } - m = map_mapname2mapid(mapname); + m = iMap->mapname2mapid(mapname); } if( m != -1 && ( x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) ) { @@ -2266,15 +2266,15 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const nd->bl.type = BL_NPC; nd->subtype = type; if( m >= 0 ) {// normal shop npc - map_addnpc(m,nd); - map_addblock(&nd->bl); + iMap->addnpc(m,nd); + iMap->addblock(&nd->bl); status_set_viewdata(&nd->bl, nd->class_); nd->ud = &npc_base_ud; nd->dir = dir; if( map[nd->bl.m].users ) clif->spawn(&nd->bl); } else {// 'floating' shop? - map_addiddb(&nd->bl); + iMap->addiddb(&nd->bl); } strdb_put(npcname_db, nd->exname, nd); @@ -2289,7 +2289,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const int npc_convertlabel_db(DBKey key, DBData *data, va_list ap) { const char* lname = (const char*)key.str; - int lpos = DB->data2i(data); + int lpos = iDB->data2i(data); struct npc_label_list** label_list; int* label_list_num; const char* filepath; @@ -2416,7 +2416,7 @@ static const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, cons ShowError("npc_parse_script: Invalid placement format for a script in file '%s', line '%d'. Skipping the rest of file...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4); return NULL;// unknown format, don't continue } - m = map_mapname2mapid(mapname); + m = iMap->mapname2mapid(mapname); } script_start = strstr(start,",{"); @@ -2473,19 +2473,19 @@ static const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, cons nd->subtype = SCRIPT; if( m >= 0 ) { - map_addnpc(m, nd); + iMap->addnpc(m, nd); nd->ud = &npc_base_ud; nd->dir = dir; npc_setcells(nd); - map_addblock(&nd->bl); + iMap->addblock(&nd->bl); if( class_ >= 0 ) { status_set_viewdata(&nd->bl, nd->class_); if( map[nd->bl.m].users ) clif->spawn(&nd->bl); } } else { - // we skip map_addnpc, but still add it to the list of ID's - map_addiddb(&nd->bl); + // we skip iMap->addnpc, but still add it to the list of ID's + iMap->addiddb(&nd->bl); } strdb_put(npcname_db, nd->exname, nd); @@ -2567,7 +2567,7 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch ShowError("npc_parse_duplicate: Invalid placement format for duplicate in file '%s', line '%d'. Skipping line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4); return end;// next line, try to continue } - m = map_mapname2mapid(mapname); + m = iMap->mapname2mapid(mapname); } if( m != -1 && ( x < 0 || x >= map[m].xs || y < 0 || y >= map[m].ys ) ) { @@ -2629,19 +2629,19 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch //Add the npc to its location if( m >= 0 ) { - map_addnpc(m, nd); + iMap->addnpc(m, nd); nd->ud = &npc_base_ud; nd->dir = dir; npc_setcells(nd); - map_addblock(&nd->bl); + iMap->addblock(&nd->bl); if( class_ >= 0 ) { status_set_viewdata(&nd->bl, nd->class_); if( map[nd->bl.m].users ) clif->spawn(&nd->bl); } } else { - // we skip map_addnpc, but still add it to the list of ID's - map_addiddb(&nd->bl); + // we skip iMap->addnpc, but still add it to the list of ID's + iMap->addiddb(&nd->bl); } strdb_put(npcname_db, nd->exname, nd); @@ -2677,7 +2677,7 @@ int npc_duplicate4instance(struct npc_data *snd, int16 m) { if( snd->subtype == WARP ) { // Adjust destination, if instanced struct npc_data *wnd = NULL; // New NPC - int dm = map_mapindex2mapid(snd->u.warp.mapindex), im; + int dm = iMap->mapindex2mapid(snd->u.warp.mapindex), im; if( dm < 0 ) return 1; if( ( im = instance->mapid2imapid(dm, map[m].instance_id) ) == -1 ) { @@ -2687,7 +2687,7 @@ int npc_duplicate4instance(struct npc_data *snd, int16 m) { CREATE(wnd, struct npc_data, 1); wnd->bl.id = npc_get_new_npc_id(); - map_addnpc(m, wnd); + iMap->addnpc(m, wnd); wnd->bl.prev = wnd->bl.next = NULL; wnd->bl.m = m; wnd->bl.x = snd->bl.x; @@ -2704,7 +2704,7 @@ int npc_duplicate4instance(struct npc_data *snd, int16 m) { wnd->bl.type = BL_NPC; wnd->subtype = WARP; npc_setcells(wnd); - map_addblock(&wnd->bl); + iMap->addblock(&wnd->bl); status_set_viewdata(&wnd->bl, wnd->class_); wnd->ud = &npc_base_ud; if( map[wnd->bl.m].users ) @@ -2752,7 +2752,7 @@ void npc_setcells(struct npc_data* nd) { for (i = y-ys; i <= y+ys; i++) { for (j = x-xs; j <= x+xs; j++) { - if (map_getcell(m, j, i, CELL_CHKNOPASS)) + if (iMap->getcell(m, j, i, CELL_CHKNOPASS)) continue; map[m].setcell(m, j, i, CELL_NPC, true); } @@ -2784,10 +2784,10 @@ void npc_unsetcells(struct npc_data* nd) { //Locate max range on which we can locate npc cells //FIXME: does this really do what it's supposed to do? [ultramage] - for(x0 = x-xs; x0 > 0 && map_getcell(m, x0, y, CELL_CHKNPC); x0--); - for(x1 = x+xs; x1 < map[m].xs-1 && map_getcell(m, x1, y, CELL_CHKNPC); x1++); - for(y0 = y-ys; y0 > 0 && map_getcell(m, x, y0, CELL_CHKNPC); y0--); - for(y1 = y+ys; y1 < map[m].ys-1 && map_getcell(m, x, y1, CELL_CHKNPC); y1++); + for(x0 = x-xs; x0 > 0 && iMap->getcell(m, x0, y, CELL_CHKNPC); x0--); + for(x1 = x+xs; x1 < map[m].xs-1 && iMap->getcell(m, x1, y, CELL_CHKNPC); x1++); + for(y0 = y-ys; y0 > 0 && iMap->getcell(m, x, y0, CELL_CHKNPC); y0--); + for(y1 = y+ys; y1 < map[m].ys-1 && iMap->getcell(m, x, y1, CELL_CHKNPC); y1++); //Erase this npc's cells for (i = y-ys; i <= y+ys; i++) @@ -2795,7 +2795,7 @@ void npc_unsetcells(struct npc_data* nd) { map[m].setcell(m, j, i, CELL_NPC, false); //Re-deploy NPC cells for other nearby npcs. - map_foreachinarea( npc_unsetcells_sub, m, x0, y0, x1, y1, BL_NPC, nd->bl.id ); + iMap->foreachinarea( npc_unsetcells_sub, m, x0, y0, x1, y1, BL_NPC, nd->bl.id ); } void npc_movenpc(struct npc_data* nd, int16 x, int16 y) @@ -2806,9 +2806,9 @@ void npc_movenpc(struct npc_data* nd, int16 x, int16 y) x = cap_value(x, 0, map[m].xs-1); y = cap_value(y, 0, map[m].ys-1); - map_foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); - map_moveblock(&nd->bl, x, y, gettick()); - map_foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); + iMap->foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); + iMap->moveblock(&nd->bl, x, y, iTimer->gettick()); + iMap->foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl); } /// Changes the display name of the npc. @@ -2933,9 +2933,9 @@ static const char* npc_parse_function(char* w1, char* w2, char* w3, char* w4, co return end; func_db = script_get_userfunc_db(); - if (func_db->put(func_db, DB->str2key(w3), DB->ptr2data(script), &old_data)) + if (func_db->put(func_db, iDB->str2key(w3), iDB->ptr2data(script), &old_data)) { - struct script_code *oldscript = (struct script_code*)DB->data2ptr(&old_data); + struct script_code *oldscript = (struct script_code*)iDB->data2ptr(&old_data); ShowInfo("npc_parse_function: Overwriting user function [%s] (%s:%d)\n", w3, filepath, strline(buffer,start-buffer)); script_free_vars(oldscript->script_vars); aFree(oldscript->script_buf); @@ -2990,7 +2990,7 @@ static const char* npc_parse_mob(char* w1, char* w2, char* w3, char* w4, const c ShowError("npc_parse_mob: Unknown map '%s' in file '%s', line '%d'.\n", mapname, filepath, strline(buffer,start-buffer)); return strchr(start,'\n');// skip and continue } - m = map_mapname2mapid(mapname); + m = iMap->mapname2mapid(mapname); if( m < 0 )//Not loaded on this map-server instance. return strchr(start,'\n');// skip and continue mob.m = (unsigned short)m; @@ -3110,7 +3110,7 @@ static const char* npc_parse_mob(char* w1, char* w2, char* w3, char* w4, const c memcpy(data, &mob, sizeof(struct spawn_data)); // spawn / cache the new mobs - if( battle_config.dynamic_mobs && map_addmobtolist(data->m, data) >= 0 ) { + if( battle_config.dynamic_mobs && iMap->addmobtolist(data->m, data) >= 0 ) { data->state.dynamic = true; npc_cache_mob += data->num; @@ -3146,7 +3146,7 @@ const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, const char ShowError("npc_parse_mapflag: Invalid mapflag definition in file '%s', line '%d'.\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4); return strchr(start,'\n');// skip and continue } - m = map_mapname2mapid(mapname); + m = iMap->mapname2mapid(mapname); if( m < 0 ) { ShowWarning("npc_parse_mapflag: Unknown map in file '%s', line '%d' : %s\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", mapname, filepath, strline(buffer,start-buffer), w1, w2, w3, w4); @@ -3215,7 +3215,7 @@ const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, const char ShowWarning("npc_parse_mapflag: You can't set PvP and BattleGround flags for the same map! Removing BattleGround flag from %s (file '%s', line '%d').\n", map[m].name, filepath, strline(buffer,start-buffer)); } if( state && (zone = strdb_get(zone_db, MAP_ZONE_PVP_NAME)) && map[m].zone != zone ) { - map_zone_change(m,zone,start,buffer,filepath); + iMap->zone_change(m,zone,start,buffer,filepath); } else if ( !state ) { map[m].zone = &map_zone_pk; } @@ -3265,7 +3265,7 @@ const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, const char ShowWarning("npc_parse_mapflag: You can't set GvG and BattleGround flags for the same map! Removing BattleGround flag from %s (file '%s', line '%d').\n", map[m].name, filepath, strline(buffer,start-buffer)); } if( state && (zone = strdb_get(zone_db, MAP_ZONE_GVG_NAME)) && map[m].zone != zone ) { - map_zone_change(m,zone,start,buffer,filepath); + iMap->zone_change(m,zone,start,buffer,filepath); } } else if (!strcmpi(w3,"gvg_noparty")) @@ -3300,7 +3300,7 @@ const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, const char } if( state && (zone = strdb_get(zone_db, MAP_ZONE_BG_NAME)) && map[m].zone != zone ) { - map_zone_change(m,zone,start,buffer,filepath); + iMap->zone_change(m,zone,start,buffer,filepath); } } else if (!strcmpi(w3,"noexppenalty")) @@ -3493,7 +3493,7 @@ const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, const char if( !(zone = strdb_get(zone_db, w4)) ) { ShowWarning("npc_parse_mapflag: Invalid zone '%s'! removing flag from %s (file '%s', line '%d').\n", w4, map[m].name, filepath, strline(buffer,start-buffer)); } else if( map[m].zone != zone ) { - map_zone_change(m,zone,start,buffer,filepath); + iMap->zone_change(m,zone,start,buffer,filepath); } } else if ( !strcmpi(w3,"nomapchannelautojoin") ) { map[m].flag.chsysnolocalaj = state; @@ -3619,7 +3619,7 @@ void npc_parsesrcfile(const char* filepath, bool runOnInit) p = strchr(p,'\n');// next line continue; } - m = map_mapname2mapid(mapname); + m = iMap->mapname2mapid(mapname); if( m < 0 ) {// "mapname" is not assigned to this server, we must skip the script info... if( strcasecmp(w2,"script") == 0 && count > 3 ) @@ -3729,7 +3729,7 @@ void npc_read_event_script(void) for( data = iter->first(iter,&key); iter->exists(iter); data = iter->next(iter,&key) ) { const char* p = key.str; - struct event_data* ed = DB->data2ptr(data); + struct event_data* ed = iDB->data2ptr(data); unsigned char count = script_event[i].event_count; if( count >= ARRAYLENGTH(script_event[i].event) ) @@ -3804,7 +3804,7 @@ int npc_reload(void) { if(battle_config.dynamic_mobs) {// dynamic check by [random] - for (m = 0; m < map_num; m++) { + for (m = 0; m < iMap->map_num; m++) { for (i = 0; i < MAX_MOB_LIST_PER_MAP; i++) { if (map[m].moblist[i] != NULL) { aFree(map[m].moblist[i]); @@ -3812,7 +3812,7 @@ int npc_reload(void) { } if( map[m].mob_delete_timer != INVALID_TIMER ) { // Mobs were removed anyway,so delete the timer [Inkfish] - delete_timer(map[m].mob_delete_timer, map_removemobs_timer); + iTimer->delete_timer(map[m].mob_delete_timer, iMap->removemobs_timer); map[m].mob_delete_timer = INVALID_TIMER; } } @@ -3828,7 +3828,7 @@ int npc_reload(void) { npc_mob = npc_cache_mob = npc_delay_mob = 0; // reset mapflags - map_flags_init(); + iMap->flags_init(); //TODO: the following code is copy-pasted from do_init_npc(); clean it up // Reloading npcs now @@ -3847,7 +3847,7 @@ int npc_reload(void) { instance->final(); - map_zone_init(); + iMap->zone_init(); npc->motd = npc_name2id("HerculesMOTD"); /* [Ind/Hercules] */ @@ -3916,18 +3916,18 @@ static void npc_debug_warps_sub(struct npc_data* nd) if (nd->bl.type != BL_NPC || nd->subtype != WARP || nd->bl.m < 0) return; - m = map_mapindex2mapid(nd->u.warp.mapindex); + m = iMap->mapindex2mapid(nd->u.warp.mapindex); if (m < 0) return; //Warps to another map, nothing to do about it. if (nd->u.warp.x == 0 && nd->u.warp.y == 0) return; // random warp - if (map_getcell(m, nd->u.warp.x, nd->u.warp.y, CELL_CHKNPC)) { + if (iMap->getcell(m, nd->u.warp.x, nd->u.warp.y, CELL_CHKNPC)) { ShowWarning("Warp %s at %s(%d,%d) warps directly on top of an area npc at %s(%d,%d)\n", nd->name, map[nd->bl.m].name, nd->bl.x, nd->bl.y, map[m].name, nd->u.warp.x, nd->u.warp.y ); } - if (map_getcell(m, nd->u.warp.x, nd->u.warp.y, CELL_CHKNOPASS)) { + if (iMap->getcell(m, nd->u.warp.x, nd->u.warp.y, CELL_CHKNOPASS)) { ShowWarning("Warp %s at %s(%d,%d) warps to a non-walkable tile at %s(%d,%d)\n", nd->name, map[nd->bl.m].name, nd->bl.x, nd->bl.y, @@ -3939,7 +3939,7 @@ static void npc_debug_warps_sub(struct npc_data* nd) static void npc_debug_warps(void) { int16 m, i; - for (m = 0; m < map_num; m++) + for (m = 0; m < iMap->map_num; m++) for (i = 0; i < map[m].npc_num; i++) npc_debug_warps_sub(map[m].npc[i]); } @@ -3959,7 +3959,7 @@ int do_init_npc(void) npc_base_ud.attacktimer = INVALID_TIMER; npc_base_ud.attackabletime = npc_base_ud.canact_tick = - npc_base_ud.canmove_tick = gettick(); + npc_base_ud.canmove_tick = iTimer->gettick(); //Stock view data for normal npcs. memset(&npc_viewdb, 0, sizeof(npc_viewdb)); @@ -3991,7 +3991,7 @@ int do_init_npc(void) "\t-'"CL_WHITE"%d"CL_RESET"' Mobs Not Cached\n", npc_id - START_NPC_NUM, npc_warp, npc_shop, npc_script, npc_mob, npc_cache_mob, npc_delay_mob); - map_zone_init(); + iMap->zone_init(); npc->motd = npc_name2id("HerculesMOTD"); /* [Ind/Hercules] */ @@ -4003,8 +4003,8 @@ int do_init_npc(void) if (battle_config.warp_point_debug) npc_debug_warps(); - add_timer_func_list(npc_event_do_clock,"npc_event_do_clock"); - add_timer_func_list(npc_timerevent,"npc_timerevent"); + iTimer->add_timer_func_list(npc_event_do_clock,"npc_event_do_clock"); + iTimer->add_timer_func_list(npc_timerevent,"npc_timerevent"); // Init dummy NPC fake_nd = (struct npc_data *)aCalloc(1,sizeof(struct npc_data)); @@ -4021,7 +4021,7 @@ int do_init_npc(void) strdb_put(npcname_db, fake_nd->exname, fake_nd); fake_nd->u.scr.timerid = INVALID_TIMER; - map_addiddb(&fake_nd->bl); + iMap->addiddb(&fake_nd->bl); // End of initialization return 0; diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c index 81373bbb6..c7faa2df6 100644 --- a/src/map/npc_chat.c +++ b/src/map/npc_chat.c @@ -411,7 +411,7 @@ int buildin_defpattern(struct script_state* st) int setid = script->conv_num(st,& (st->stack->stack_data[st->start+2])); const char* pattern = script->conv_str(st,& (st->stack->stack_data[st->start+3])); const char* label = script->conv_str(st,& (st->stack->stack_data[st->start+4])); - struct npc_data* nd = (struct npc_data *)map_id2bl(st->oid); + struct npc_data* nd = (struct npc_data *)iMap->id2bl(st->oid); npc_chat_def_pattern(nd, setid, pattern, label); @@ -421,7 +421,7 @@ int buildin_defpattern(struct script_state* st) int buildin_activatepset(struct script_state* st) { int setid = script->conv_num(st,& (st->stack->stack_data[st->start+2])); - struct npc_data* nd = (struct npc_data *)map_id2bl(st->oid); + struct npc_data* nd = (struct npc_data *)iMap->id2bl(st->oid); activate_pcreset(nd, setid); @@ -431,7 +431,7 @@ int buildin_activatepset(struct script_state* st) int buildin_deactivatepset(struct script_state* st) { int setid = script->conv_num(st,& (st->stack->stack_data[st->start+2])); - struct npc_data* nd = (struct npc_data *)map_id2bl(st->oid); + struct npc_data* nd = (struct npc_data *)iMap->id2bl(st->oid); deactivate_pcreset(nd, setid); @@ -441,7 +441,7 @@ int buildin_deactivatepset(struct script_state* st) int buildin_deletepset(struct script_state* st) { int setid = script->conv_num(st,& (st->stack->stack_data[st->start+2])); - struct npc_data* nd = (struct npc_data *)map_id2bl(st->oid); + struct npc_data* nd = (struct npc_data *)iMap->id2bl(st->oid); delete_pcreset(nd, setid); diff --git a/src/map/party.c b/src/map/party.c index 4462d4f07..a7a002404 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -84,7 +84,7 @@ struct map_session_data* party_getavailablesd(struct party_data *p) static TBL_PC* party_sd_check(int party_id, int account_id, int char_id) { - TBL_PC* sd = map_id2sd(account_id); + TBL_PC* sd = iMap->id2sd(account_id); if (!(sd && sd->status.char_id == char_id)) return NULL; @@ -102,7 +102,7 @@ static TBL_PC* party_sd_check(int party_id, int account_id, int char_id) int party_db_final(DBKey key, DBData *data, va_list ap) { struct party_data *p; - if( ( p = DB->data2ptr(data) ) && p->instance ) + if( ( p = iDB->data2ptr(data) ) && p->instance ) aFree(p->instance); return 0; @@ -121,8 +121,8 @@ void do_init_party(void) { party_db = idb_alloc(DB_OPT_RELEASE_DATA); party_booking_db = idb_alloc(DB_OPT_RELEASE_DATA); // Party Booking [Spiria] - add_timer_func_list(party_send_xy_timer, "party_send_xy_timer"); - add_timer_interval(gettick()+battle_config.party_update_interval, party_send_xy_timer, 0, 0, battle_config.party_update_interval); + iTimer->add_timer_func_list(party_send_xy_timer, "party_send_xy_timer"); + iTimer->add_timer_interval(iTimer->gettick()+battle_config.party_update_interval, party_send_xy_timer, 0, 0, battle_config.party_update_interval); } /// Party data lookup using party id. @@ -180,7 +180,7 @@ int party_create(struct map_session_data *sd,char *name,int item,int item2) void party_created(int account_id,int char_id,int fail,int party_id,char *name) { struct map_session_data *sd; - sd=map_id2sd(account_id); + sd=iMap->id2sd(account_id); if (!sd || sd->status.char_id != char_id || !sd->party_creating ) { //Character logged off before creation ack? @@ -209,11 +209,11 @@ int party_request_info(int party_id, int char_id) /// Invoked (from char-server) when the party info is not found. int party_recv_noinfo(int party_id, int char_id) { - party_broken(party_id); + iParty->broken(party_id); if( char_id != 0 )// requester { struct map_session_data* sd; - sd = map_charid2sd(char_id); + sd = iMap->charid2sd(char_id); if( sd && sd->status.party_id == party_id ) sd->status.party_id = 0; } @@ -297,7 +297,7 @@ int party_recv_info(struct party* sp, int char_id) sd = p->data[member_id].sd; if( sd == NULL ) continue;// not online - party_member_withdraw(sp->party_id, sd->status.account_id, sd->status.char_id); + iParty->member_withdraw(sp->party_id, sd->status.account_id, sd->status.char_id); } memcpy(&p->party, sp, sizeof(struct party)); memset(&p->state, 0, sizeof(p->state)); @@ -327,8 +327,8 @@ int party_recv_info(struct party* sp, int char_id) } if( char_id != 0 )// requester { - sd = map_charid2sd(char_id); - if( sd && sd->status.party_id == sp->party_id && party_getmemberid(p,sd) == -1 ) + sd = iMap->charid2sd(char_id); + if( sd && sd->status.party_id == sp->party_id && iParty->getmemberid(p,sd) == -1 ) sd->status.party_id = 0;// was not in the party } return 0; @@ -341,7 +341,7 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd) nullpo_ret(sd); - if( ( p = party_search(sd->status.party_id) ) == NULL ) + if( ( p = iParty->search(sd->status.party_id) ) == NULL ) return 0; // confirm if this player is a party leader @@ -407,7 +407,7 @@ void party_reply_invite(struct map_session_data *sd,int party_id,int flag) sd->party_invite_account = 0; return; } - tsd = map_id2sd(sd->party_invite_account); + tsd = iMap->id2sd(sd->party_invite_account); if( flag == 1 && !sd->party_creating && !sd->party_joining ) {// accepted and allowed @@ -430,10 +430,10 @@ void party_reply_invite(struct map_session_data *sd,int party_id,int flag) //- Player must be authed/active and belong to a party before calling this method void party_member_joined(struct map_session_data *sd) { - struct party_data* p = party_search(sd->status.party_id); + struct party_data* p = iParty->search(sd->status.party_id); int i; if (!p) { - party_request_info(sd->status.party_id, sd->status.char_id); + iParty->request_info(sd->status.party_id, sd->status.char_id); return; } ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == sd->status.account_id && p->party.member[i].char_id == sd->status.char_id ); @@ -454,8 +454,8 @@ void party_member_joined(struct map_session_data *sd) /// flag: 0-success, 1-failure int party_member_added(int party_id,int account_id,int char_id, int flag) { - struct map_session_data *sd = map_id2sd(account_id),*sd2; - struct party_data *p = party_search(party_id); + struct map_session_data *sd = iMap->id2sd(account_id),*sd2; + struct party_data *p = iParty->search(party_id); int i, j; if(sd == NULL || sd->status.char_id != char_id || !sd->party_joining ) { @@ -464,7 +464,7 @@ int party_member_added(int party_id,int account_id,int char_id, int flag) return 0; } - sd2 = map_id2sd(sd->party_invite_account); + sd2 = iMap->id2sd(sd->party_invite_account); sd->party_joining = false; sd->party_invite = 0; @@ -517,7 +517,7 @@ int party_removemember(struct map_session_data* sd, int account_id, char* name) struct party_data *p; int i; - p = party_search(sd->status.party_id); + p = iParty->search(sd->status.party_id); if( p == NULL ) return 0; @@ -542,7 +542,7 @@ int party_leave(struct map_session_data *sd) struct party_data *p; int i; - p = party_search(sd->status.party_id); + p = iParty->search(sd->status.party_id); if( p == NULL ) return 0; @@ -557,8 +557,8 @@ int party_leave(struct map_session_data *sd) /// Invoked (from char-server) when a party member leaves the party. int party_member_withdraw(int party_id, int account_id, int char_id) { - struct map_session_data* sd = map_id2sd(account_id); - struct party_data* p = party_search(party_id); + struct map_session_data* sd = iMap->id2sd(account_id); + struct party_data* p = iParty->search(party_id); if( p ) { int i; @@ -589,7 +589,7 @@ int party_broken(int party_id) struct party_data* p; int i, j; - p = party_search(party_id); + p = iParty->search(party_id); if( p == NULL ) return 0; @@ -622,8 +622,8 @@ int party_changeoption(struct map_session_data *sd,int exp,int item) int party_optionchanged(int party_id,int account_id,int exp,int item,int flag) { struct party_data *p; - struct map_session_data *sd=map_id2sd(account_id); - if( (p=party_search(party_id))==NULL) + struct map_session_data *sd=iMap->id2sd(account_id); + if( (p=iParty->search(party_id))==NULL) return 0; //Flag&1: Exp change denied. Flag&2: Item change denied. @@ -656,7 +656,7 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts return false; } - if ((p = party_search(sd->status.party_id)) == NULL) + if ((p = iParty->search(sd->status.party_id)) == NULL) return false; ARR_FIND( 0, MAX_PARTY, mi, p->data[mi].sd == sd ); @@ -698,7 +698,7 @@ int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short m struct party_data* p; int i; - p = party_search(party_id); + p = iParty->search(party_id); if( p == NULL ) return 0; @@ -729,7 +729,7 @@ void party_send_movemap(struct map_session_data *sd) intif_party_changemap(sd,1); - p=party_search(sd->status.party_id); + p=iParty->search(sd->status.party_id); if (!p) return; if(sd->state.connect_new) { @@ -767,7 +767,7 @@ int party_send_logout(struct map_session_data *sd) return 0; intif_party_changemap(sd,0); - p=party_search(sd->status.party_id); + p=iParty->search(sd->status.party_id); if(!p) return 0; ARR_FIND( 0, MAX_PARTY, i, p->data[i].sd == sd ); @@ -784,7 +784,7 @@ int party_send_message(struct map_session_data *sd,const char *mes,int len) if(sd->status.party_id==0) return 0; intif_party_message(sd->status.party_id,sd->status.account_id,mes,len); - party_recv_message(sd->status.party_id,sd->status.account_id,mes,len); + iParty->recv_message(sd->status.party_id,sd->status.account_id,mes,len); // Chat logging type 'P' / Party Chat logs->chat(LOG_CHAT_PARTY, sd->status.party_id, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, mes); @@ -795,7 +795,7 @@ int party_send_message(struct map_session_data *sd,const char *mes,int len) int party_recv_message(int party_id,int account_id,const char *mes,int len) { struct party_data *p; - if( (p=party_search(party_id))==NULL) + if( (p=iParty->search(party_id))==NULL) return 0; clif->party_message(p,account_id,mes,len); return 0; @@ -807,7 +807,7 @@ int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id struct map_session_data *p_sd; int i; - if(!party_id || (p=party_search(party_id))==NULL) + if(!party_id || (p=iParty->search(party_id))==NULL) return 0; switch(skill_id) { case TK_COUNTER: //Increase Triple Attack rate of Monks. @@ -832,7 +832,7 @@ int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id switch(skill_id) { case TK_COUNTER: //Increase Triple Attack rate of Monks. if((p_sd->class_&MAPID_UPPERMASK) == MAPID_MONK - && pc_checkskill(p_sd,MO_TRIPLEATTACK)) { + && iPc->checkskill(p_sd,MO_TRIPLEATTACK)) { sc_start4(&p_sd->bl,SC_SKILLRATE_UP,100,MO_TRIPLEATTACK, 50+50*skill_lv, //+100/150/200% rate 0,0,skill->get_time(SG_FRIEND, 1)); @@ -841,9 +841,9 @@ int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id case MO_COMBOFINISH: //Increase Counter rate of Star Gladiators if((p_sd->class_&MAPID_UPPERMASK) == MAPID_STAR_GLADIATOR && sd->sc.data[SC_READYCOUNTER] - && pc_checkskill(p_sd,SG_FRIEND)) { + && iPc->checkskill(p_sd,SG_FRIEND)) { sc_start4(&p_sd->bl,SC_SKILLRATE_UP,100,TK_COUNTER, - 50+50*pc_checkskill(p_sd,SG_FRIEND), //+100/150/200% rate + 50+50*iPc->checkskill(p_sd,SG_FRIEND), //+100/150/200% rate 0,0,skill->get_time(SG_FRIEND, 1)); } break; @@ -948,15 +948,15 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b for (i = 0; i < c; i++) { #ifdef RENEWAL_EXP if( !(src && src->type == BL_MOB && ((TBL_MOB*)src)->db->mexp) ){ - int rate = pc_level_penalty_mod(sd[i], (TBL_MOB*)src, 1); + int rate = iPc->level_penalty_mod(sd[i], (TBL_MOB*)src, 1); base_exp = (unsigned int)cap_value(base_exp_bonus * rate / 100, 1, UINT_MAX); job_exp = (unsigned int)cap_value(job_exp_bonus * rate / 100, 1, UINT_MAX); } #endif - pc_gainexp(sd[i], src, base_exp, job_exp, false); + iPc->gainexp(sd[i], src, base_exp, job_exp, false); if (zeny) // zeny from mobs [Valaris] - pc_getzeny(sd[i],zeny,LOG_TYPE_PICKDROP_MONSTER,NULL); + iPc->getzeny(sd[i],zeny,LOG_TYPE_PICKDROP_MONSTER,NULL); } return 0; } @@ -981,7 +981,7 @@ int party_share_loot(struct party_data* p, struct map_session_data* sd, struct i if( (psd = p->data[i].sd) == NULL || sd->bl.m != psd->bl.m || pc_isdead(psd) || (battle_config.idle_no_share && pc_isidle(psd)) ) continue; - if (pc_additem(psd,item_data,item_data->amount,LOG_TYPE_PICKDROP_PLAYER)) + if (iPc->additem(psd,item_data,item_data->amount,LOG_TYPE_PICKDROP_PLAYER)) continue; //Chosen char can't pick up loot. //Successful pick. @@ -1003,7 +1003,7 @@ int party_share_loot(struct party_data* p, struct map_session_data* sd, struct i } while (count > 0) { //Pick a random member. i = rnd()%count; - if (pc_additem(psd[i],item_data,item_data->amount,LOG_TYPE_PICKDROP_PLAYER)) + if (iPc->additem(psd[i],item_data,item_data->amount,LOG_TYPE_PICKDROP_PLAYER)) { //Discard this receiver. psd[i] = psd[count-1]; count--; @@ -1017,7 +1017,7 @@ int party_share_loot(struct party_data* p, struct map_session_data* sd, struct i if (!target) { target = sd; //Give it to the char that picked it up - if ((i=pc_additem(sd,item_data,item_data->amount,LOG_TYPE_PICKDROP_PLAYER))) + if ((i=iPc->additem(sd,item_data,item_data->amount,LOG_TYPE_PICKDROP_PLAYER))) return i; } @@ -1036,7 +1036,7 @@ int party_send_dot_remove(struct map_session_data *sd) // To use for Taekwon's "Fighting Chant" // int c = 0; -// party_foreachsamemap(party_sub_count, sd, 0, &c); +// party_foreachsamemap(iParty->sub_count, sd, 0, &c); int party_sub_count(struct block_list *bl, va_list ap) { struct map_session_data *sd = (TBL_PC *)bl; @@ -1062,7 +1062,7 @@ int party_foreachsamemap(int (*func)(struct block_list*,va_list),struct map_sess nullpo_ret(sd); - if((p=party_search(sd->status.party_id))==NULL) + if((p=iParty->search(sd->status.party_id))==NULL) return 0; x0=sd->bl.x-range; @@ -1083,7 +1083,7 @@ int party_foreachsamemap(int (*func)(struct block_list*,va_list),struct map_sess list[blockcount++]=&psd->bl; } - map_freeblock_lock(); + iMap->freeblock_lock(); for(i=0;i<blockcount;i++) { @@ -1093,7 +1093,7 @@ int party_foreachsamemap(int (*func)(struct block_list*,va_list),struct map_sess va_end(ap); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return total; } @@ -1210,3 +1210,54 @@ bool party_booking_delete(struct map_session_data *sd) } return true; } + +/*===================================== +* Default Functions : party.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +void party_defaults(void) { + iParty = &iParty_s; + + /* funcs */ + + iParty->do_init_party = do_init_party; + iParty->do_final_party = do_final_party; + iParty->search = party_search; + iParty->searchname = party_searchname; + iParty->getmemberid = party_getmemberid; + iParty->getavailablesd = party_getavailablesd; + + iParty->create = party_create; + iParty->created = party_created; + iParty->request_info = party_request_info; + iParty->invite = party_invite; + iParty->member_joined = party_member_joined; + iParty->member_added = party_member_added; + iParty->leave = party_leave; + iParty->removemember = party_removemember; + iParty->member_withdraw = party_member_withdraw; + iParty->reply_invite = party_reply_invite; + iParty->recv_noinfo = party_recv_noinfo; + iParty->recv_info = party_recv_info; + iParty->recv_movemap = party_recv_movemap; + iParty->broken = party_broken; + iParty->optionchanged = party_optionchanged; + iParty->changeoption = party_changeoption; + iParty->changeleader = party_changeleader; + iParty->send_movemap = party_send_movemap; + iParty->send_levelup = party_send_levelup; + iParty->send_logout = party_send_logout; + iParty->send_message = party_send_message; + iParty->recv_message = party_recv_message; + iParty->skill_check = party_skill_check; + iParty->send_xy_clear = party_send_xy_clear; + iParty->exp_share = party_exp_share; + iParty->share_loot = party_share_loot; + iParty->send_dot_remove = party_send_dot_remove; + iParty->sub_count = party_sub_count; + iParty->booking_register = party_booking_register; + iParty->booking_update = party_booking_update; + iParty->booking_search = party_booking_search; + iParty->booking_delete = party_booking_delete; +} diff --git a/src/map/party.h b/src/map/party.h index 3978324e4..9956c5b33 100644 --- a/src/map/party.h +++ b/src/map/party.h @@ -1,9 +1,7 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder - #ifndef _PARTY_H_ #define _PARTY_H_ - #include "../common/mmo.h" // struct party struct block_list; struct map_session_data; @@ -48,49 +46,65 @@ struct party_booking_ad_info { struct party_booking_detail p_detail; }; -void do_init_party(void); -void do_final_party(void); -struct party_data* party_search(int party_id); -struct party_data* party_searchname(const char* str); -int party_getmemberid(struct party_data* p, struct map_session_data* sd); -struct map_session_data* party_getavailablesd(struct party_data *p); -int party_create(struct map_session_data *sd,char *name, int item, int item2); -void party_created(int account_id,int char_id,int fail,int party_id,char *name); -int party_request_info(int party_id, int char_id); -int party_invite(struct map_session_data *sd,struct map_session_data *tsd); -void party_member_joined(struct map_session_data *sd); -int party_member_added(int party_id,int account_id,int char_id,int flag); -int party_leave(struct map_session_data *sd); -int party_removemember(struct map_session_data *sd,int account_id,char *name); -int party_member_withdraw(int party_id,int account_id,int char_id); -void party_reply_invite(struct map_session_data *sd,int party_id,int flag); -int party_recv_noinfo(int party_id, int char_id); -int party_recv_info(struct party* sp, int char_id); -int party_recv_movemap(int party_id,int account_id,int char_id, unsigned short map,int online,int lv); -int party_broken(int party_id); -int party_optionchanged(int party_id,int account_id,int exp,int item,int flag); -int party_changeoption(struct map_session_data *sd,int exp,int item); -bool party_changeleader(struct map_session_data *sd, struct map_session_data *t_sd); -void party_send_movemap(struct map_session_data *sd); -void party_send_levelup(struct map_session_data *sd); -int party_send_logout(struct map_session_data *sd); -int party_send_message(struct map_session_data *sd,const char *mes,int len); -int party_recv_message(int party_id,int account_id,const char *mes,int len); -int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv); -int party_send_xy_clear(struct party_data *p); -int party_exp_share(struct party_data *p,struct block_list *src,unsigned int base_exp,unsigned int job_exp,int zeny); -int party_share_loot(struct party_data* p, struct map_session_data* sd, struct item* item_data, int first_charid); -int party_send_dot_remove(struct map_session_data *sd); -int party_sub_count(struct block_list *bl, va_list ap); int party_foreachsamemap(int (*func)(struct block_list *,va_list),struct map_session_data *sd,int range,...); /*========================================== * Party Booking in KRO [Spiria] *------------------------------------------*/ -void party_booking_register(struct map_session_data *sd, short level, short mapid, short* job); -void party_booking_update(struct map_session_data *sd, short* job); -void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount); -bool party_booking_delete(struct map_session_data *sd); + +/*===================================== +* Interface : party.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +struct party_interface { + + /* funcs */ + + void (*do_init_party) (void); + void (*do_final_party) (void); + struct party_data* (*search) (int party_id); + struct party_data* (*searchname) (const char* str); + int (*getmemberid) (struct party_data* p, struct map_session_data* sd); + struct map_session_data* (*getavailablesd) (struct party_data *p); + + int (*create) (struct map_session_data *sd,char *name, int item, int item2); + void (*created) (int account_id,int char_id,int fail,int party_id,char *name); + int (*request_info) (int party_id, int char_id); + int (*invite) (struct map_session_data *sd,struct map_session_data *tsd); + void (*member_joined) (struct map_session_data *sd); + int (*member_added) (int party_id,int account_id,int char_id,int flag); + int (*leave) (struct map_session_data *sd); + int (*removemember) (struct map_session_data *sd,int account_id,char *name); + int (*member_withdraw) (int party_id,int account_id,int char_id); + void (*reply_invite) (struct map_session_data *sd,int party_id,int flag); + int (*recv_noinfo) (int party_id, int char_id); + int (*recv_info) (struct party* sp, int char_id); + int (*recv_movemap) (int party_id,int account_id,int char_id, unsigned short map,int online,int lv); + int (*broken) (int party_id); + int (*optionchanged) (int party_id,int account_id,int exp,int item,int flag); + int (*changeoption) (struct map_session_data *sd,int exp,int item); + bool (*changeleader) (struct map_session_data *sd, struct map_session_data *t_sd); + void (*send_movemap) (struct map_session_data *sd); + void (*send_levelup) (struct map_session_data *sd); + int (*send_logout) (struct map_session_data *sd); + int (*send_message) (struct map_session_data *sd,const char *mes,int len); + int (*recv_message) (int party_id,int account_id,const char *mes,int len); + int (*skill_check) (struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv); + int (*send_xy_clear) (struct party_data *p); + int (*exp_share) (struct party_data *p,struct block_list *src,unsigned int base_exp,unsigned int job_exp,int zeny); + int (*share_loot) (struct party_data* p, struct map_session_data* sd, struct item* item_data, int first_charid); + int (*send_dot_remove) (struct map_session_data *sd); + int (*sub_count) (struct block_list *bl, va_list ap); + void (*booking_register) (struct map_session_data *sd, short level, short mapid, short* job); + void (*booking_update) (struct map_session_data *sd, short* job); + void (*booking_search) (struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount); + bool (*booking_delete) (struct map_session_data *sd); +} iParty_s; + +struct party_interface *iParty; + +void party_defaults(void); #endif /* _PARTY_H_ */ diff --git a/src/map/pc.c b/src/map/pc.c index 8d0194deb..ad12181ee 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -33,7 +33,7 @@ #include "elemental.h" #include "npc.h" // fake_nd #include "pet.h" // pet_unlocktarget() -#include "party.h" // party_search() +#include "party.h" // iParty->search() #include "guild.h" // guild->search(), guild_request_info() #include "script.h" // script_config #include "skill.h" @@ -104,7 +104,7 @@ static int pc_invincible_timer(int tid, unsigned int tick, int id, intptr_t data { struct map_session_data *sd; - if( (sd=(struct map_session_data *)map_id2sd(id)) == NULL || sd->bl.type!=BL_PC ) + if( (sd=(struct map_session_data *)iMap->id2sd(id)) == NULL || sd->bl.type!=BL_PC ) return 1; if(sd->invincible_timer != tid){ @@ -123,8 +123,8 @@ void pc_setinvincibletimer(struct map_session_data* sd, int val) { val += map[sd->bl.m].invincible_time_inc; if( sd->invincible_timer != INVALID_TIMER ) - delete_timer(sd->invincible_timer,pc_invincible_timer); - sd->invincible_timer = add_timer(gettick()+val,pc_invincible_timer,sd->bl.id,0); + iTimer->delete_timer(sd->invincible_timer,pc_invincible_timer); + sd->invincible_timer = iTimer->add_timer(iTimer->gettick()+val,pc_invincible_timer,sd->bl.id,0); } void pc_delinvincibletimer(struct map_session_data* sd) @@ -133,9 +133,9 @@ void pc_delinvincibletimer(struct map_session_data* sd) if( sd->invincible_timer != INVALID_TIMER ) { - delete_timer(sd->invincible_timer,pc_invincible_timer); + iTimer->delete_timer(sd->invincible_timer,pc_invincible_timer); sd->invincible_timer = INVALID_TIMER; - skill->unit_move(&sd->bl,gettick(),1); + skill->unit_move(&sd->bl,iTimer->gettick(),1); } } @@ -144,7 +144,7 @@ static int pc_spiritball_timer(int tid, unsigned int tick, int id, intptr_t data struct map_session_data *sd; int i; - if( (sd=(struct map_session_data *)map_id2sd(id)) == NULL || sd->bl.type!=BL_PC ) + if( (sd=(struct map_session_data *)iMap->id2sd(id)) == NULL || sd->bl.type!=BL_PC ) return 1; if( sd->spiritball <= 0 ) @@ -184,15 +184,15 @@ int pc_addspiritball(struct map_session_data *sd,int interval,int max) if( sd->spiritball && sd->spiritball >= max ) { if(sd->spirit_timer[0] != INVALID_TIMER) - delete_timer(sd->spirit_timer[0],pc_spiritball_timer); + iTimer->delete_timer(sd->spirit_timer[0],pc_spiritball_timer); sd->spiritball--; if( sd->spiritball != 0 ) memmove(sd->spirit_timer+0, sd->spirit_timer+1, (sd->spiritball)*sizeof(int)); sd->spirit_timer[sd->spiritball] = INVALID_TIMER; } - tid = add_timer(gettick()+interval, pc_spiritball_timer, sd->bl.id, 0); - ARR_FIND(0, sd->spiritball, i, sd->spirit_timer[i] == INVALID_TIMER || DIFF_TICK(get_timer(tid)->tick, get_timer(sd->spirit_timer[i])->tick) < 0); + tid = iTimer->add_timer(iTimer->gettick()+interval, pc_spiritball_timer, sd->bl.id, 0); + ARR_FIND(0, sd->spiritball, i, sd->spirit_timer[i] == INVALID_TIMER || DIFF_TICK(iTimer->get_timer(tid)->tick, iTimer->get_timer(sd->spirit_timer[i])->tick) < 0); if( i != sd->spiritball ) memmove(sd->spirit_timer+i+1, sd->spirit_timer+i, (sd->spiritball-i)*sizeof(int)); sd->spirit_timer[i] = tid; @@ -226,7 +226,7 @@ int pc_delspiritball(struct map_session_data *sd,int count,int type) for(i=0;i<count;i++) { if(sd->spirit_timer[i] != INVALID_TIMER) { - delete_timer(sd->spirit_timer[i],pc_spiritball_timer); + iTimer->delete_timer(sd->spirit_timer[i],pc_spiritball_timer); sd->spirit_timer[i] = INVALID_TIMER; } } @@ -302,7 +302,7 @@ int pc_banding(struct map_session_data *sd, uint16 skill_lv) { // Get total HP of all Royal Guards in party. for( j = 0; j < i; j++ ) { - bsd = map_id2sd(b_sd[j]); + bsd = iMap->id2sd(b_sd[j]); if( bsd != NULL ) hp += status_get_hp(&bsd->bl); } @@ -313,7 +313,7 @@ int pc_banding(struct map_session_data *sd, uint16 skill_lv) { // If a Royal Guard have full HP, give more HP to others that haven't full HP. for( j = 0; j < i; j++ ) { - bsd = map_id2sd(b_sd[j]); + bsd = iMap->id2sd(b_sd[j]); if( bsd != NULL && (tmp_hp = hp - status_get_max_hp(&bsd->bl)) > 0 ) { extra_hp += tmp_hp; @@ -326,7 +326,7 @@ int pc_banding(struct map_session_data *sd, uint16 skill_lv) { for( j = 0; j < i; j++ ) { - bsd = map_id2sd(b_sd[j]); + bsd = iMap->id2sd(b_sd[j]); if( bsd != NULL ) { status_set_hp(&bsd->bl,hp,0); // Set hp @@ -415,7 +415,7 @@ int pc_setrestartvalue(struct map_session_data *sd,int type) { *------------------------------------------*/ static int pc_inventory_rental_end(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd = map_id2sd(id); + struct map_session_data *sd = iMap->id2sd(id); if( sd == NULL ) return 0; if( tid != sd->rental_timer ) @@ -424,7 +424,7 @@ static int pc_inventory_rental_end(int tid, unsigned int tick, int id, intptr_t return 0; } - pc_inventory_rentals(sd); + iPc->inventory_rentals(sd); return 1; } @@ -432,7 +432,7 @@ int pc_inventory_rental_clear(struct map_session_data *sd) { if( sd->rental_timer != INVALID_TIMER ) { - delete_timer(sd->rental_timer, pc_inventory_rental_end); + iTimer->delete_timer(sd->rental_timer, pc_inventory_rental_end); sd->rental_timer = INVALID_TIMER; } @@ -457,7 +457,7 @@ void pc_inventory_rentals(struct map_session_data *sd) status_change_end(&sd->bl,SC_ALL_RIDING,INVALID_TIMER); } clif->rental_expired(sd->fd, i, sd->status.inventory[i].nameid); - pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_OTHER); + iPc->delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_OTHER); } else { expire_tick = (unsigned int)(sd->status.inventory[i].expire_time - time(NULL)) * 1000; clif->rental_time(sd->fd, sd->status.inventory[i].nameid, (int)(expire_tick / 1000)); @@ -467,7 +467,7 @@ void pc_inventory_rentals(struct map_session_data *sd) } if( c > 0 ) // min(next_tick,3600000) 1 hour each timer to keep announcing to the owner, and to avoid a but with rental time > 15 days - sd->rental_timer = add_timer(gettick() + min(next_tick,3600000), pc_inventory_rental_end, sd->bl.id, 0); + sd->rental_timer = iTimer->add_timer(iTimer->gettick() + min(next_tick,3600000), pc_inventory_rental_end, sd->bl.id, 0); else sd->rental_timer = INVALID_TIMER; } @@ -482,15 +482,15 @@ void pc_inventory_rental_add(struct map_session_data *sd, int seconds) if( sd->rental_timer != INVALID_TIMER ) { const struct TimerData * td; - td = get_timer(sd->rental_timer); - if( DIFF_TICK(td->tick, gettick()) > tick ) + td = iTimer->get_timer(sd->rental_timer); + if( DIFF_TICK(td->tick, iTimer->gettick()) > tick ) { // Update Timer as this one ends first than the current one - pc_inventory_rental_clear(sd); - sd->rental_timer = add_timer(gettick() + tick, pc_inventory_rental_end, sd->bl.id, 0); + iPc->inventory_rental_clear(sd); + sd->rental_timer = iTimer->add_timer(iTimer->gettick() + tick, pc_inventory_rental_end, sd->bl.id, 0); } } else - sd->rental_timer = add_timer(gettick() + min(tick,3600000), pc_inventory_rental_end, sd->bl.id, 0); + sd->rental_timer = iTimer->add_timer(iTimer->gettick() + min(tick,3600000), pc_inventory_rental_end, sd->bl.id, 0); } /** @@ -520,7 +520,7 @@ int pc_makesavestatus(struct map_session_data *sd) #endif if (sd->sc.data[SC_JAILED]) { //When Jailed, do not move last point. if(pc_isdead(sd)){ - pc_setrestartvalue(sd,0); + iPc->setrestartvalue(sd,0); } else { sd->status.hp = sd->battle_status.hp; sd->status.sp = sd->battle_status.sp; @@ -532,7 +532,7 @@ int pc_makesavestatus(struct map_session_data *sd) } if(pc_isdead(sd)){ - pc_setrestartvalue(sd,0); + iPc->setrestartvalue(sd,0); memcpy(&sd->status.last_point,&sd->status.save_point,sizeof(sd->status.last_point)); } else { sd->status.hp = sd->battle_status.hp; @@ -581,7 +581,7 @@ int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int lo sd->client_tick = client_tick; sd->state.active = 0; //to be set to 1 after player is fully authed and loaded. sd->bl.type = BL_PC; - sd->canlog_tick = gettick(); + sd->canlog_tick = iTimer->gettick(); //Required to prevent homunculus copuing a base speed of 0. sd->battle_status.speed = sd->base_status.speed = DEFAULT_WALK_SPEED; return 0; @@ -603,7 +603,7 @@ int pc_equippoint(struct map_session_data *sd,int n) if(sd->inventory_data[n]->look == W_DAGGER || sd->inventory_data[n]->look == W_1HSWORD || sd->inventory_data[n]->look == W_1HAXE) { - if(ep == EQP_HAND_R && (pc_checkskill(sd,AS_LEFT) > 0 || (sd->class_&MAPID_UPPERMASK) == MAPID_ASSASSIN || + if(ep == EQP_HAND_R && (iPc->checkskill(sd,AS_LEFT) > 0 || (sd->class_&MAPID_UPPERMASK) == MAPID_ASSASSIN || (sd->class_&MAPID_UPPERMASK) == MAPID_KAGEROUOBORO))//Kagerou and Oboro can dual wield daggers. [Rytech] return EQP_ARMS; } @@ -768,10 +768,10 @@ bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd return false; // Both parents need to be in the same party // Parents need to have their ring equipped - if( !pc_isequipped(p1_sd, WEDDING_RING_M) && !pc_isequipped(p1_sd, WEDDING_RING_F) ) + if( !iPc->isequipped(p1_sd, WEDDING_RING_M) && !iPc->isequipped(p1_sd, WEDDING_RING_F) ) return false; - if( !pc_isequipped(p2_sd, WEDDING_RING_M) && !pc_isequipped(p2_sd, WEDDING_RING_F) ) + if( !iPc->isequipped(p2_sd, WEDDING_RING_M) && !iPc->isequipped(p2_sd, WEDDING_RING_F) ) return false; // Already adopted a baby @@ -805,15 +805,15 @@ bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, int job, joblevel; unsigned int jobexp; - if( !pc_can_Adopt(p1_sd, p2_sd, b_sd) ) + if( !iPc->can_Adopt(p1_sd, p2_sd, b_sd) ) return false; // Preserve current job levels and progress joblevel = b_sd->status.job_level; jobexp = b_sd->status.job_exp; - job = pc_mapid2jobid(b_sd->class_|JOBL_BABY, b_sd->status.sex); - if( job != -1 && !pc_jobchange(b_sd, job, 0) ) + job = iPc->mapid2jobid(b_sd->class_|JOBL_BABY, b_sd->status.sex); + if( job != -1 && !iPc->jobchange(b_sd, job, 0) ) { // Success, proceed to configure parents and baby skills p1_sd->status.child = b_sd->status.char_id; p2_sd->status.child = b_sd->status.char_id; @@ -827,12 +827,12 @@ bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, clif->updatestatus(b_sd, SP_JOBEXP); // Baby Skills - pc_skill(b_sd, WE_BABY, 1, 0); - pc_skill(b_sd, WE_CALLPARENT, 1, 0); + iPc->skill(b_sd, WE_BABY, 1, 0); + iPc->skill(b_sd, WE_CALLPARENT, 1, 0); // Parents Skills - pc_skill(p1_sd, WE_CALLBABY, 1, 0); - pc_skill(p2_sd, WE_CALLBABY, 1, 0); + iPc->skill(p1_sd, WE_CALLBABY, 1, 0); + iPc->skill(p2_sd, WE_CALLBABY, 1, 0); return true; } @@ -918,7 +918,7 @@ int pc_isequip(struct map_session_data *sd,int n) *------------------------------------------*/ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, struct mmo_charstatus *st, bool changing_mapservers) { int i; - unsigned long tick = gettick(); + unsigned long tick = iTimer->gettick(); uint32 ip = session[sd->fd]->client_addr; sd->login_id2 = login_id2; @@ -935,7 +935,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim } //Set the map-server used job id. [Skotlex] - i = pc_jobid2mapid(sd->status.class_); + i = iPc->jobid2mapid(sd->status.class_); if (i == -1) { //Invalid class? ShowError("pc_authok: Invalid class %d for player %s (%d:%d). Class was changed to novice.\n", sd->status.class_, sd->status.name, sd->status.account_id, sd->status.char_id); sd->status.class_ = JOB_NOVICE; @@ -1005,10 +1005,10 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim if (!(battle_config.display_skill_fail&2)) sd->state.showdelay = 1; - pc_setinventorydata(sd); + iPc->setinventorydata(sd); pc_setequipindex(sd); - if( sd->status.option & OPTION_INVISIBLE && !pc_can_use_command(sd, "@hide") ) + if( sd->status.option & OPTION_INVISIBLE && !iPc->can_use_command(sd, "@hide") ) sd->status.option &=~ OPTION_INVISIBLE; status_change_init(&sd->bl); @@ -1047,11 +1047,11 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim sd->hate_mob[i] = -1; //warp player - if ((i=pc_setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, CLR_OUTSIGHT)) != 0) { + if ((i=iPc->setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, CLR_OUTSIGHT)) != 0) { ShowError ("Last_point_map %s - id %d not found (error code %d)\n", mapindex_id2name(sd->status.last_point.map), sd->status.last_point.map, i); // try warping to a default map instead (church graveyard) - if (pc_setpos(sd, mapindex_name2id(MAP_PRONTERA), 273, 354, CLR_OUTSIGHT) != 0) { + if (iPc->setpos(sd, mapindex_name2id(MAP_PRONTERA), 273, 354, CLR_OUTSIGHT) != 0) { // if we fail again clif->authfail_fd(sd->fd, 0); return false; @@ -1092,7 +1092,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim if (expiration_time != 0) { // don't display if it's unlimited or unknow value char tmpstr[1024]; strftime(tmpstr, sizeof(tmpstr) - 1, msg_txt(501), localtime(&expiration_time)); // "Your account time limit is: %d-%m-%Y %H:%M:%S." - clif->wis_message(sd->fd, wisp_server_name, tmpstr, strlen(tmpstr)+1); + clif->wis_message(sd->fd, iMap->wisp_server_name, tmpstr, strlen(tmpstr)+1); } /** @@ -1109,7 +1109,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim /** * Check if player have any item cooldowns on **/ - pc_itemcd_do(sd,true); + iPc->itemcd_do(sd,true); /* [Ind/Hercules] */ sd->sc_display = NULL; @@ -1183,7 +1183,7 @@ int pc_reg_received(struct map_session_data *sd) for(i=0;i<MAX_PC_FEELHATE;i++) { //for now - someone need to make reading from txt/sql if ((j = pc_readglobalreg(sd,sg_info[i].feel_var))!=0) { sd->feel_map[i].index = j; - sd->feel_map[i].m = map_mapindex2mapid(j); + sd->feel_map[i].m = iMap->mapindex2mapid(j); } else { sd->feel_map[i].index = 0; sd->feel_map[i].m = -1; @@ -1191,7 +1191,7 @@ int pc_reg_received(struct map_session_data *sd) sd->hate_mob[i] = pc_readglobalreg(sd,sg_info[i].hate_var)-1; } - if ((i = pc_checkskill(sd,RG_PLAGIARISM)) > 0) { + if ((i = iPc->checkskill(sd,RG_PLAGIARISM)) > 0) { sd->cloneskill_id = pc_readglobalreg(sd,"CLONE_SKILL"); if (sd->cloneskill_id > 0 && (idx = skill->get_index(sd->cloneskill_id))) { sd->status.skill[idx].id = sd->cloneskill_id; @@ -1201,7 +1201,7 @@ int pc_reg_received(struct map_session_data *sd) sd->status.skill[idx].flag = SKILL_FLAG_PLAGIARIZED; } } - if ((i = pc_checkskill(sd,SC_REPRODUCE)) > 0) { + if ((i = iPc->checkskill(sd,SC_REPRODUCE)) > 0) { sd->reproduceskill_id = pc_readglobalreg(sd,"REPRODUCE_SKILL"); if( sd->reproduceskill_id > 0 && (idx = skill->get_index(sd->reproduceskill_id))) { sd->status.skill[idx].id = sd->reproduceskill_id; @@ -1217,7 +1217,7 @@ int pc_reg_received(struct map_session_data *sd) sd->state.active = 1; if (sd->status.party_id) - party_member_joined(sd); + iParty->member_joined(sd); if (sd->status.guild_id) guild->member_joined(sd); @@ -1233,12 +1233,12 @@ int pc_reg_received(struct map_session_data *sd) if( sd->status.ele_id > 0 ) intif_elemental_request(sd->status.ele_id, sd->status.char_id); - map_addiddb(&sd->bl); - map_delnickdb(sd->status.char_id, sd->status.name); + iMap->addiddb(&sd->bl); + iMap->delnickdb(sd->status.char_id, sd->status.name); if (!chrif_auth_finished(sd)) ShowError("pc_reg_received: Failed to properly remove player %d:%d from logging db!\n", sd->status.account_id, sd->status.char_id); - pc_load_combo(sd); + iPc->load_combo(sd); status_calc_pc(sd,1); chrif_scdata_request(sd->status.account_id, sd->status.char_id); @@ -1251,7 +1251,7 @@ int pc_reg_received(struct map_session_data *sd) clif->pLoadEndAck(sd->fd, sd); } - pc_inventory_rentals(sd); + iPc->inventory_rentals(sd); if( sd->sc.option & OPTION_INVISIBLE ) { sd->vd.class_ = INVISIBLE_CLASS; @@ -1260,7 +1260,7 @@ int pc_reg_received(struct map_session_data *sd) map[sd->bl.m].users_pvp--; if( map[sd->bl.m].flag.pvp && !map[sd->bl.m].flag.pvp_nocalcrank && sd->pvp_timer != INVALID_TIMER ) {// unregister the player for ranking - delete_timer( sd->pvp_timer, pc_calc_pvprank_timer ); + iTimer->delete_timer( sd->pvp_timer, iPc->calc_pvprank_timer ); sd->pvp_timer = INVALID_TIMER; } clif->changeoption(&sd->bl); @@ -1279,7 +1279,7 @@ static int pc_calc_skillpoint(struct map_session_data* sd) nullpo_ret(sd); for(i=1;i<MAX_SKILL;i++){ - if( (skill_lv = pc_checkskill2(sd,i)) > 0) { + if( (skill_lv = iPc->checkskill2(sd,i)) > 0) { inf2 = skill_db[i].inf2; if((!(inf2&INF2_QUEST_SKILL) || battle_config.quest_skill_learn) && !(inf2&(INF2_WEDDING_SKILL|INF2_SPIRIT_SKILL)) //Do not count wedding/link skills. [Skotlex] @@ -1305,14 +1305,14 @@ int pc_calc_skilltree(struct map_session_data *sd) int c=0; nullpo_ret(sd); - i = pc_calc_skilltree_normalize_job(sd); - c = pc_mapid2jobid(i, sd->status.sex); + i = iPc->calc_skilltree_normalize_job(sd); + c = iPc->mapid2jobid(i, sd->status.sex); if( c == -1 ) { //Unable to normalize job?? ShowError("pc_calc_skilltree: Unable to normalize job %d for character %s (%d:%d)\n", i, sd->status.name, sd->status.account_id, sd->status.char_id); return 1; } - c = pc_class2idx(c); + c = iPc->class2idx(c); for( i = 0; i < MAX_SKILL; i++ ) { if( sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED ) //Don't touch these @@ -1410,7 +1410,7 @@ int pc_calc_skilltree(struct map_session_data *sd) else if (sd->status.skill[idx2].flag >= SKILL_FLAG_REPLACED_LV_0) //Real lerned level k = sd->status.skill[idx2].flag - SKILL_FLAG_REPLACED_LV_0; else - k = pc_checkskill2(sd,idx2); + k = iPc->checkskill2(sd,idx2); if (k < skill_tree[c][i].need[j].lv) { f = 0; break; @@ -1443,7 +1443,7 @@ int pc_calc_skilltree(struct map_session_data *sd) } while(flag); // - if( c > 0 && (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && sd->status.skill_point == 0 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) ) + if( c > 0 && (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && sd->status.skill_point == 0 && iPc->famerank(sd->status.char_id, MAPID_TAEKWON) ) { /* Taekwon Ranger Bonus Skill Tree ============================================ @@ -1479,13 +1479,13 @@ static void pc_check_skilltree(struct map_session_data *sd, int skill_id) if(battle_config.skillfree) return; //Function serves no purpose if this is set - i = pc_calc_skilltree_normalize_job(sd); - c = pc_mapid2jobid(i, sd->status.sex); + i = iPc->calc_skilltree_normalize_job(sd); + c = iPc->mapid2jobid(i, sd->status.sex); if (c == -1) { //Unable to normalize job?? ShowError("pc_check_skilltree: Unable to normalize job %d for character %s (%d:%d)\n", i, sd->status.name, sd->status.account_id, sd->status.char_id); return; } - c = pc_class2idx(c); + c = iPc->class2idx(c); do { flag = 0; for( i = 0; i < MAX_SKILL_TREE && (id=skill_tree[c][i].id)>0; i++ ) { @@ -1502,7 +1502,7 @@ static void pc_check_skilltree(struct map_session_data *sd, int skill_id) else if( sd->status.skill[idx2].flag >= SKILL_FLAG_REPLACED_LV_0) //Real lerned level k = sd->status.skill[idx2].flag - SKILL_FLAG_REPLACED_LV_0; else - k = pc_checkskill2(sd,idx2); + k = iPc->checkskill2(sd,idx2); if( k < skill_tree[c][i].need[j].lv ) { f = 0; break; @@ -1557,7 +1557,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd) skill_point = pc_calc_skillpoint(sd); - novice_skills = max_level[pc_class2idx(JOB_NOVICE)][1] - 1; + novice_skills = max_level[iPc->class2idx(JOB_NOVICE)][1] - 1; // limit 1st class and above to novice job levels if(skill_point < novice_skills) @@ -1574,7 +1574,7 @@ int pc_calc_skilltree_normalize_job(struct map_session_data *sd) { // if neither 2nd nor 3rd jobchange levels are known, we have to assume a default for 2nd if (!sd->change_level_3rd) - sd->change_level_2nd = max_level[pc_class2idx(pc_mapid2jobid(sd->class_&MAPID_UPPERMASK, sd->status.sex))][1]; + sd->change_level_2nd = max_level[iPc->class2idx(iPc->mapid2jobid(sd->class_&MAPID_UPPERMASK, sd->status.sex))][1]; else sd->change_level_2nd = 1 + skill_point + sd->status.skill_point - (sd->status.job_level - 1) @@ -1913,7 +1913,7 @@ int pc_delautobonus(struct map_session_data* sd, struct s_autobonus *autobonus,c } else { // Logout / Unequipped an item with an activated bonus - delete_timer(autobonus[i].active,pc_endautobonus); + iTimer->delete_timer(autobonus[i].active,iPc->endautobonus); autobonus[i].active = INVALID_TIMER; } } @@ -1941,7 +1941,7 @@ int pc_exeautobonus(struct map_session_data *sd,struct s_autobonus *autobonus) script_run_autobonus(autobonus->other_script,sd->bl.id,sd->equip_index[j]); } - autobonus->active = add_timer(gettick()+autobonus->duration, pc_endautobonus, sd->bl.id, (intptr_t)autobonus); + autobonus->active = iTimer->add_timer(iTimer->gettick()+autobonus->duration, iPc->endautobonus, sd->bl.id, (intptr_t)autobonus); sd->state.autobonus |= autobonus->pos; status_calc_pc(sd,0); @@ -1950,7 +1950,7 @@ int pc_exeautobonus(struct map_session_data *sd,struct s_autobonus *autobonus) int pc_endautobonus(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd = map_id2sd(id); + struct map_session_data *sd = iMap->id2sd(id); struct s_autobonus *autobonus = (struct s_autobonus *)data; nullpo_ret(sd); @@ -3556,7 +3556,7 @@ int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip) // remember the card id to insert nameid = sd->status.inventory[idx_card].nameid; - if( pc_delitem(sd,idx_card,1,1,0,LOG_TYPE_OTHER) == 1 ) + if( iPc->delitem(sd,idx_card,1,1,0,LOG_TYPE_OTHER) == 1 ) {// failed clif->insert_card(sd,idx_equip,idx_card,1); } @@ -3581,9 +3581,9 @@ int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip) int pc_modifybuyvalue(struct map_session_data *sd,int orig_value) { int skill,val = orig_value,rate1 = 0,rate2 = 0; - if((skill=pc_checkskill(sd,MC_DISCOUNT))>0) // merchant discount + if((skill=iPc->checkskill(sd,MC_DISCOUNT))>0) // merchant discount rate1 = 5+skill*2-((skill==10)? 1:0); - if((skill=pc_checkskill(sd,RG_COMPULSION))>0) // rogue discount + if((skill=iPc->checkskill(sd,RG_COMPULSION))>0) // rogue discount rate2 = 5+skill*4; if(rate1 < rate2) rate1 = rate2; if(rate1) @@ -3600,7 +3600,7 @@ int pc_modifybuyvalue(struct map_session_data *sd,int orig_value) int pc_modifysellvalue(struct map_session_data *sd,int orig_value) { int skill,val = orig_value,rate = 0; - if((skill=pc_checkskill(sd,MC_OVERCHARGE))>0) //OverCharge + if((skill=iPc->checkskill(sd,MC_OVERCHARGE))>0) //OverCharge rate = 5+skill*2-((skill==10)? 1:0); if(rate) val = (int)((double)orig_value*(double)(100+rate)/100.); @@ -3889,7 +3889,7 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l if( i >= MAX_INVENTORY ) { - i = pc_search_inventory(sd,0); + i = iPc->search_inventory(sd,0); if( i < 0 ) return 4; @@ -3912,17 +3912,17 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l clif->updatestatus(sd,SP_WEIGHT); //Auto-equip if(data->flag.autoequip) - pc_equipitem(sd, i, data->equip); + iPc->equipitem(sd, i, data->equip); /* rental item check */ if( item_data->expire_time ) { if( time(NULL) > item_data->expire_time ) { clif->rental_expired(sd->fd, i, sd->status.inventory[i].nameid); - pc_delitem(sd, i, sd->status.inventory[i].amount, 1, 0, LOG_TYPE_OTHER); + iPc->delitem(sd, i, sd->status.inventory[i].amount, 1, 0, LOG_TYPE_OTHER); } else { int seconds = (int)( item_data->expire_time - time(NULL) ); clif->rental_time(sd->fd, sd->status.inventory[i].nameid, seconds); - pc_inventory_rental_add(sd, seconds); + iPc->inventory_rental_add(sd, seconds); } } @@ -3952,7 +3952,7 @@ int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reas sd->weight -= sd->inventory_data[n]->weight*amount ; if( sd->status.inventory[n].amount <= 0 ){ if(sd->status.inventory[n].equip) - pc_unequipitem(sd,n,3); + iPc->unequipitem(sd,n,3); memset(&sd->status.inventory[n],0,sizeof(sd->status.inventory[0])); sd->inventory_data[n] = NULL; } @@ -3984,7 +3984,7 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount) sd->status.inventory[n].amount <= 0 || sd->status.inventory[n].amount < amount || sd->state.trading || sd->state.vending || - !sd->inventory_data[n] //pc_delitem would fail on this case. + !sd->inventory_data[n] //iPc->delitem would fail on this case. ) return 0; @@ -3994,16 +3994,16 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount) return 0; //Can't drop items in nodrop mapflag maps. } - if( !pc_candrop(sd,&sd->status.inventory[n]) ) + if( !iPc->candrop(sd,&sd->status.inventory[n]) ) { clif->message (sd->fd, msg_txt(263)); return 0; } - if (!map_addflooritem(&sd->status.inventory[n], amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 2)) + if (!iMap->addflooritem(&sd->status.inventory[n], amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 2)) return 0; - pc_delitem(sd, n, amount, 1, 0, LOG_TYPE_PICKDROP_PLAYER); + iPc->delitem(sd, n, amount, 1, 0, LOG_TYPE_PICKDROP_PLAYER); clif->dropitem(sd, n, amount); return 1; } @@ -4017,7 +4017,7 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount) int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem) { int flag=0; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); struct map_session_data *first_sd = NULL,*second_sd = NULL,*third_sd = NULL; struct party_data *p=NULL; @@ -4028,11 +4028,11 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem) return 0; // Distance is too far if (sd->status.party_id) - p = party_search(sd->status.party_id); + p = iParty->search(sd->status.party_id); if(fitem->first_get_charid > 0 && fitem->first_get_charid != sd->status.char_id) { - first_sd = map_charid2sd(fitem->first_get_charid); + first_sd = iMap->charid2sd(fitem->first_get_charid); if(DIFF_TICK(tick,fitem->first_get_tick) < 0) { if (!(p && p->party.item&1 && first_sd && first_sd->status.party_id == sd->status.party_id @@ -4042,7 +4042,7 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem) else if(fitem->second_get_charid > 0 && fitem->second_get_charid != sd->status.char_id) { - second_sd = map_charid2sd(fitem->second_get_charid); + second_sd = iMap->charid2sd(fitem->second_get_charid); if(DIFF_TICK(tick, fitem->second_get_tick) < 0) { if(!(p && p->party.item&1 && ((first_sd && first_sd->status.party_id == sd->status.party_id) || @@ -4053,7 +4053,7 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem) else if(fitem->third_get_charid > 0 && fitem->third_get_charid != sd->status.char_id) { - third_sd = map_charid2sd(fitem->third_get_charid); + third_sd = iMap->charid2sd(fitem->third_get_charid); if(DIFF_TICK(tick,fitem->third_get_tick) < 0) { if(!(p && p->party.item&1 && ((first_sd && first_sd->status.party_id == sd->status.party_id) || @@ -4067,7 +4067,7 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem) } //This function takes care of giving the item to whoever should have it, considering party-share options. - if ((flag = party_share_loot(p,sd,&fitem->item_data, fitem->first_get_charid))) { + if ((flag = iParty->share_loot(p,sd,&fitem->item_data, fitem->first_get_charid))) { clif->additem(sd,0,0,flag); return 1; } @@ -4075,7 +4075,7 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem) //Display pickup animation. pc_stop_attack(sd); clif->takeitem(&sd->bl,&fitem->bl); - map_clearflooritem(&fitem->bl); + iMap->clearflooritem(&fitem->bl); return 1; } @@ -4103,7 +4103,7 @@ int pc_isUseitem(struct map_session_data *sd,int n) if( !item->script ) //if it has no script, you can't really consume it! return 0; - if( (item->item_usage.flag&NOUSE_SITTING) && (pc_issit(sd) == 1) && (pc_get_group_level(sd) < item->item_usage.override) ) { + if( (item->item_usage.flag&NOUSE_SITTING) && (pc_issit(sd) == 1) && (iPc->get_group_level(sd) < item->item_usage.override) ) { clif->msgtable(sd->fd,664); //clif->colormes(sd->fd,COLOR_WHITE,msg_txt(1474)); return 0; // You cannot use this item while sitting. @@ -4248,7 +4248,7 @@ int pc_isUseitem(struct map_session_data *sd,int n) *------------------------------------------*/ int pc_useitem(struct map_session_data *sd,int n) { - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); int amount, nameid, i; struct script_code *script; @@ -4268,7 +4268,7 @@ int pc_useitem(struct map_session_data *sd,int n) if( !pc_isUseitem(sd,n) ) return 0; - // Store information for later use before it is lost (via pc_delitem) [Paradox924X] + // Store information for later use before it is lost (via iPc->delitem) [Paradox924X] nameid = sd->inventory_data[n]->nameid; if (nameid != ITEMID_NAUTHIZ && sd->sc.opt1 > 0 && sd->sc.opt1 != OPT1_STONEWAIT && sd->sc.opt1 != OPT1_BURNING) @@ -4348,7 +4348,7 @@ int pc_useitem(struct map_session_data *sd,int n) if( map[sd->bl.m].zone->disabled_items[i] == nameid ) { if( battle_config.item_restricted_consumption_type ) { clif->useitemack(sd,n,sd->status.inventory[n].amount-1,true); - pc_delitem(sd,n,1,1,0,LOG_TYPE_CONSUME); + iPc->delitem(sd,n,1,1,0,LOG_TYPE_CONSUME); } return 0; } @@ -4367,12 +4367,12 @@ int pc_useitem(struct map_session_data *sd,int n) else { if( sd->status.inventory[n].expire_time == 0 ) { clif->useitemack(sd,n,amount-1,true); - pc_delitem(sd,n,1,1,0,LOG_TYPE_CONSUME); // Rental Usable Items are not deleted until expiration + iPc->delitem(sd,n,1,1,0,LOG_TYPE_CONSUME); // Rental Usable Items are not deleted until expiration } else clif->useitemack(sd,n,0,false); } if(sd->status.inventory[n].card[0]==CARD0_CREATE && - pc_famerank(MakeDWord(sd->status.inventory[n].card[2],sd->status.inventory[n].card[3]), MAPID_ALCHEMIST)) + iPc->famerank(MakeDWord(sd->status.inventory[n].card[2],sd->status.inventory[n].card[3]), MAPID_ALCHEMIST)) { potion_flag = 2; // Famous player's potions have 50% more efficiency if (sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE) @@ -4412,7 +4412,7 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun return 1; } - if( !itemdb_cancartstore(item_data, pc_get_group_level(sd)) ) + if( !itemdb_cancartstore(item_data, iPc->get_group_level(sd)) ) { // Check item trade restrictions [Skotlex] clif->message (sd->fd, msg_txt(264)); return 1; @@ -4507,8 +4507,8 @@ int pc_putitemtocart(struct map_session_data *sd,int idx,int amount) if( item_data->nameid == 0 || amount < 1 || item_data->amount < amount || sd->state.vending ) return 1; - if( pc_cart_additem(sd,item_data,amount,LOG_TYPE_NONE) == 0 ) - return pc_delitem(sd,idx,amount,0,5,LOG_TYPE_NONE); + if( iPc->cart_additem(sd,item_data,amount,LOG_TYPE_NONE) == 0 ) + return iPc->delitem(sd,idx,amount,0,5,LOG_TYPE_NONE); return 1; } @@ -4535,7 +4535,7 @@ int pc_cartitem_amount(struct map_session_data* sd, int idx, int amount) /*========================================== * Retrieve an item at index idx from cart. * Return: - * 0 = player not found or (FIXME) succes (from pc_cart_delitem) + * 0 = player not found or (FIXME) succes (from iPc->cart_delitem) * 1 = failure *------------------------------------------*/ int pc_getitemfromcart(struct map_session_data *sd,int idx,int amount) @@ -4552,8 +4552,8 @@ int pc_getitemfromcart(struct map_session_data *sd,int idx,int amount) if(item_data->nameid==0 || amount < 1 || item_data->amount<amount || sd->state.vending ) return 1; - if((flag = pc_additem(sd,item_data,amount,LOG_TYPE_NONE)) == 0) - return pc_cart_delitem(sd,idx,amount,0,LOG_TYPE_NONE); + if((flag = iPc->additem(sd,item_data,amount,LOG_TYPE_NONE)) == 0) + return iPc->cart_delitem(sd,idx,amount,0,LOG_TYPE_NONE); clif->additem(sd,0,0,flag); return 1; @@ -4636,7 +4636,7 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil tmp_item.nameid = itemid; tmp_item.amount = 1; tmp_item.identify = itemdb_isidentified2(data); - flag = pc_additem(sd,&tmp_item,1,LOG_TYPE_PICKDROP_PLAYER); + flag = iPc->additem(sd,&tmp_item,1,LOG_TYPE_PICKDROP_PLAYER); //TODO: Should we disable stealing when the item you stole couldn't be added to your inventory? Perhaps players will figure out a way to exploit this behaviour otherwise? md->state.steal_flag = UCHAR_MAX; //you can't steal from this mob any more @@ -4683,13 +4683,13 @@ int pc_steal_coin(struct map_session_data *sd,struct block_list *target) return 0; // FIXME: This formula is either custom or outdated. - skill = pc_checkskill(sd,RG_STEALCOIN)*10; + skill = iPc->checkskill(sd,RG_STEALCOIN)*10; rate = skill + (sd->status.base_level - md->level)*3 + sd->battle_status.dex*2 + sd->battle_status.luk*2; if(rnd()%1000 < rate) { int amount = md->level*10 + rnd()%100; - pc_getzeny(sd, amount, LOG_TYPE_STEAL, NULL); + iPc->getzeny(sd, amount, LOG_TYPE_STEAL, NULL); md->state.steal_coin_flag = 1; return 1; } @@ -4714,10 +4714,10 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y } if( pc_isdead(sd) ) { //Revive dead people before warping them - pc_setstand(sd); - pc_setrestartvalue(sd,1); + iPc->setstand(sd); + iPc->setrestartvalue(sd,1); } - m = map_mapindex2mapid(mapindex); + m = iMap->mapindex2mapid(mapindex); if( map[m].flag.src4instance ) { struct party_data *p; @@ -4736,7 +4736,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y stop = true; } } - if ( !stop && sd->status.party_id && (p = party_search(sd->status.party_id)) && p->instances ) { + if ( !stop && sd->status.party_id && (p = iParty->search(sd->status.party_id)) && p->instances ) { for( i = 0; i < p->instances; i++ ) { ARR_FIND(0, instances[p->instance[i]].num_map, j, map[instances[p->instance[i]].map[j]].instance_src_map == m && !map[instances[p->instance[i]].map[j]].cName); if( j != instances[p->instance[i]].num_map ) @@ -4771,13 +4771,13 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y for( i = 0; i < sd->queues_count; i++ ) { struct hQueue *queue; if( (queue = script->queue(sd->queues[i])) && queue->onMapChange[0] != '\0' ) { - pc_setregstr(sd, add_str("QMapChangeTo"), map[m].name); + iPc->setregstr(sd, add_str("QMapChangeTo"), map[m].name); npc_event(sd, queue->onMapChange, 0); } } if( map[m].cell == (struct mapcell *)0xdeadbeaf ) - map_cellfromcache(&map[m]); + iMap->cellfromcache(&map[m]); if (sd->sc.count) { // Cancel some map related stuff. if (sd->sc.data[SC_JAILED]) return 1; //You may not get out! @@ -4790,8 +4790,8 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y if (sd->sc.data[SC_KNOWLEDGE]) { struct status_change_entry *sce = sd->sc.data[SC_KNOWLEDGE]; if (sce->timer != INVALID_TIMER) - delete_timer(sce->timer, status_change_timer); - sce->timer = add_timer(gettick() + skill->get_time(SG_KNOWLEDGE, sce->val1), status_change_timer, sd->bl.id, SC_KNOWLEDGE); + iTimer->delete_timer(sce->timer, status_change_timer); + sce->timer = iTimer->add_timer(iTimer->gettick() + skill->get_time(SG_KNOWLEDGE, sce->val1), status_change_timer, sd->bl.id, SC_KNOWLEDGE); } status_change_end(&sd->bl, SC_PROPERTYWALK, INVALID_TIMER); status_change_end(&sd->bl, SC_CLOAKING, INVALID_TIMER); @@ -4799,12 +4799,12 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y } for( i = 0; i < EQI_MAX; i++ ) { if( sd->equip_index[ i ] >= 0 ) - if( !pc_isequip( sd , sd->equip_index[ i ] ) ) - pc_unequipitem( sd , sd->equip_index[ i ] , 2 ); + if( !iPc->isequip( sd , sd->equip_index[ i ] ) ) + iPc->unequipitem( sd , sd->equip_index[ i ] , 2 ); } if (battle_config.clear_unit_onwarp&BL_PC) skill->clear_unitgroup(&sd->bl); - party_send_dot_remove(sd); //minimap dot fix [Kevin] + iParty->send_dot_remove(sd); //minimap dot fix [Kevin] guild->send_dot_remove(sd); bg_send_dot_remove(sd); if (sd->regen.state.gc) @@ -4825,7 +4825,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y uint32 ip; uint16 port; //if can't find any map-servers, just abort setting position. - if(!sd->mapindex || map_mapname2ipport(mapindex,&ip,&port)) + if(!sd->mapindex || iMap->mapname2ipport(mapindex,&ip,&port)) return 2; if (sd->npc_id) @@ -4836,7 +4836,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y sd->mapindex = mapindex; sd->bl.x=x; sd->bl.y=y; - pc_clean_skilltree(sd); + iPc->clean_skilltree(sd); chrif_save(sd,2); chrif_changemapserver(sd, ip, (short)port); @@ -4855,10 +4855,10 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y do { x=rnd()%(map[m].xs-2)+1; y=rnd()%(map[m].ys-2)+1; - } while(map_getcell(m,x,y,CELL_CHKNOPASS)); + } while(iMap->getcell(m,x,y,CELL_CHKNOPASS)); } - if (sd->state.vending && map_getcell(m,x,y,CELL_CHKNOVENDING)) { + if (sd->state.vending && iMap->getcell(m,x,y,CELL_CHKNOVENDING)) { clif->message (sd->fd, msg_txt(204)); // "You can't open a shop on this cell." vending->close(sd); } @@ -4909,7 +4909,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y * Warp player sd to random location on current map. * May fail if no walkable cell found (1000 attempts). * Return: - * 0 = fail or FIXME success (from pc_setpos) + * 0 = fail or FIXME success (from iPc->setpos) * x(1|2) = fail *------------------------------------------*/ int pc_randomwarp(struct map_session_data *sd, clr_type type) @@ -4927,10 +4927,10 @@ int pc_randomwarp(struct map_session_data *sd, clr_type type) do{ x=rnd()%(map[m].xs-2)+1; y=rnd()%(map[m].ys-2)+1; - }while(map_getcell(m,x,y,CELL_CHKNOPASS) && (i++)<1000 ); + }while(iMap->getcell(m,x,y,CELL_CHKNOPASS) && (i++)<1000 ); if (i < 1000) - return pc_setpos(sd,map[sd->bl.m].index,x,y,type); + return iPc->setpos(sd,map[sd->bl.m].index,x,y,type); return 0; } @@ -4956,7 +4956,7 @@ int pc_memo(struct map_session_data* sd, int pos) return 0; // invalid input // check required skill level - skill = pc_checkskill(sd, AL_WARP); + skill = iPc->checkskill(sd, AL_WARP); if( skill < 1 ) { clif->skill_memomessage(sd,2); // "You haven't learned Warp." return 0; @@ -5602,7 +5602,7 @@ int pc_follow_timer(int tid, unsigned int tick, int id, intptr_t data) struct map_session_data *sd; struct block_list *tbl; - sd = map_id2sd(id); + sd = iMap->id2sd(id); nullpo_ret(sd); if (sd->followtimer != tid){ @@ -5612,11 +5612,11 @@ int pc_follow_timer(int tid, unsigned int tick, int id, intptr_t data) } sd->followtimer = INVALID_TIMER; - tbl = map_id2bl(sd->followtarget); + tbl = iMap->id2bl(sd->followtarget); if (tbl == NULL || pc_isdead(sd) || status_isdead(tbl)) { - pc_stop_following(sd); + iPc->stop_following(sd); return 0; } @@ -5629,9 +5629,9 @@ int pc_follow_timer(int tid, unsigned int tick, int id, intptr_t data) if (!check_distance_bl(&sd->bl, tbl, 5)) unit_walktobl(&sd->bl, tbl, 5, 0); } else - pc_setpos(sd, map_id2index(tbl->m), tbl->x, tbl->y, CLR_TELEPORT); + iPc->setpos(sd, map_id2index(tbl->m), tbl->x, tbl->y, CLR_TELEPORT); } - sd->followtimer = add_timer( + sd->followtimer = iTimer->add_timer( tick + 1000, // increase time a bit to loosen up map's load pc_follow_timer, sd->bl.id, 0); return 0; @@ -5642,7 +5642,7 @@ int pc_stop_following (struct map_session_data *sd) nullpo_ret(sd); if (sd->followtimer != INVALID_TIMER) { - delete_timer(sd->followtimer,pc_follow_timer); + iTimer->delete_timer(sd->followtimer,pc_follow_timer); sd->followtimer = INVALID_TIMER; } sd->followtarget = -1; @@ -5655,20 +5655,20 @@ int pc_stop_following (struct map_session_data *sd) int pc_follow(struct map_session_data *sd,int target_id) { - struct block_list *bl = map_id2bl(target_id); + struct block_list *bl = iMap->id2bl(target_id); if (bl == NULL /*|| bl->type != BL_PC*/) return 1; if (sd->followtimer != INVALID_TIMER) - pc_stop_following(sd); + iPc->stop_following(sd); sd->followtarget = target_id; - pc_follow_timer(INVALID_TIMER, gettick(), sd->bl.id, 0); + pc_follow_timer(INVALID_TIMER, iTimer->gettick(), sd->bl.id, 0); return 0; } int pc_checkbaselevelup(struct map_session_data *sd) { - unsigned int next = pc_nextbaseexp(sd); + unsigned int next = iPc->nextbaseexp(sd); if (!next || sd->status.base_exp < next) return 0; @@ -5679,11 +5679,11 @@ int pc_checkbaselevelup(struct map_session_data *sd) { if(!battle_config.multi_level_up && sd->status.base_exp > next-1) sd->status.base_exp = next-1; - next = pc_gets_status_point(sd->status.base_level); + next = iPc->gets_status_point(sd->status.base_level); sd->status.base_level ++; sd->status.status_point += next; - } while ((next=pc_nextbaseexp(sd)) > 0 && sd->status.base_exp >= next); + } while ((next=iPc->nextbaseexp(sd)) > 0 && sd->status.base_exp >= next); if (battle_config.pet_lv_rate && sd->pd) //<Skotlex> update pet's level status_calc_pet(sd->pd,0); @@ -5711,9 +5711,9 @@ int pc_checkbaselevelup(struct map_session_data *sd) { npc_script_event(sd, NPCE_BASELVUP); //LORDALFA - LVLUPEVENT if(sd->status.party_id) - party_send_levelup(sd); + iParty->send_levelup(sd); - pc_baselevelchanged(sd); + iPc->baselevelchanged(sd); return 1; } @@ -5723,7 +5723,7 @@ void pc_baselevelchanged(struct map_session_data *sd) { for( i = 0; i < EQI_MAX; i++ ) { if( sd->equip_index[i] >= 0 ) { if( sd->inventory_data[ sd->equip_index[i] ]->elvmax && sd->status.base_level > (unsigned int)sd->inventory_data[ sd->equip_index[i] ]->elvmax ) - pc_unequipitem(sd, sd->equip_index[i], 3); + iPc->unequipitem(sd, sd->equip_index[i], 3); } } #endif @@ -5731,7 +5731,7 @@ void pc_baselevelchanged(struct map_session_data *sd) { } int pc_checkjoblevelup(struct map_session_data *sd) { - unsigned int next = pc_nextjobexp(sd); + unsigned int next = iPc->nextjobexp(sd); nullpo_ret(sd); if(!next || sd->status.job_exp < next) @@ -5746,7 +5746,7 @@ int pc_checkjoblevelup(struct map_session_data *sd) sd->status.job_level ++; sd->status.skill_point ++; - } while ((next=pc_nextjobexp(sd)) > 0 && sd->status.job_exp >= next); + } while ((next=iPc->nextjobexp(sd)) > 0 && sd->status.job_exp >= next); clif->updatestatus(sd,SP_JOBLEVEL); clif->updatestatus(sd,SP_JOBEXP); @@ -5754,7 +5754,7 @@ int pc_checkjoblevelup(struct map_session_data *sd) clif->updatestatus(sd,SP_SKILLPOINT); status_calc_pc(sd,0); clif->misceffect(&sd->bl,1); - if (pc_checkskill(sd, SG_DEVIL) && !pc_nextjobexp(sd)) + if (iPc->checkskill(sd, SG_DEVIL) && !iPc->nextjobexp(sd)) clif->status_change(&sd->bl,SI_DEVIL, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL. npc_script_event(sd, NPCE_JOBLVUP); @@ -5809,8 +5809,8 @@ int pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned int if(src) pc_calcexp(sd, &base_exp, &job_exp, src); - nextb = pc_nextbaseexp(sd); - nextj = pc_nextjobexp(sd); + nextb = iPc->nextbaseexp(sd); + nextj = iPc->nextjobexp(sd); if(sd->state.showexp || battle_config.max_exp_gain_rate){ if (nextb > 0) @@ -5836,22 +5836,22 @@ int pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned int //Cap exp to the level up requirement of the previous level when you are at max level, otherwise cap at UINT_MAX (this is required for some S. Novice bonuses). [Skotlex] if (base_exp) { - nextb = nextb?UINT_MAX:pc_thisbaseexp(sd); + nextb = nextb?UINT_MAX:iPc->thisbaseexp(sd); if(sd->status.base_exp > nextb - base_exp) sd->status.base_exp = nextb; else sd->status.base_exp += base_exp; - pc_checkbaselevelup(sd); + iPc->checkbaselevelup(sd); clif->updatestatus(sd,SP_BASEEXP); } if (job_exp) { - nextj = nextj?UINT_MAX:pc_thisjobexp(sd); + nextj = nextj?UINT_MAX:iPc->thisjobexp(sd); if(sd->status.job_exp > nextj - job_exp) sd->status.job_exp = nextj; else sd->status.job_exp += job_exp; - pc_checkjoblevelup(sd); + iPc->checkjoblevelup(sd); clif->updatestatus(sd,SP_JOBEXP); } @@ -5874,12 +5874,12 @@ int pc_gainexp(struct map_session_data *sd, struct block_list *src, unsigned int *------------------------------------------*/ unsigned int pc_maxbaselv(struct map_session_data *sd) { - return max_level[pc_class2idx(sd->status.class_)][0]; + return max_level[iPc->class2idx(sd->status.class_)][0]; } unsigned int pc_maxjoblv(struct map_session_data *sd) { - return max_level[pc_class2idx(sd->status.class_)][1]; + return max_level[iPc->class2idx(sd->status.class_)][1]; } /*========================================== @@ -5891,19 +5891,19 @@ unsigned int pc_nextbaseexp(struct map_session_data *sd) { nullpo_ret(sd); - if(sd->status.base_level>=pc_maxbaselv(sd) || sd->status.base_level<=0) + if(sd->status.base_level>=iPc->maxbaselv(sd) || sd->status.base_level<=0) return 0; - return exp_table[pc_class2idx(sd->status.class_)][0][sd->status.base_level-1]; + return exp_table[iPc->class2idx(sd->status.class_)][0][sd->status.base_level-1]; } //Base exp needed for this level. unsigned int pc_thisbaseexp(struct map_session_data *sd) { - if(sd->status.base_level>pc_maxbaselv(sd) || sd->status.base_level<=1) + if(sd->status.base_level>iPc->maxbaselv(sd) || sd->status.base_level<=1) return 0; - return exp_table[pc_class2idx(sd->status.class_)][0][sd->status.base_level-2]; + return exp_table[iPc->class2idx(sd->status.class_)][0][sd->status.base_level-2]; } @@ -5919,17 +5919,17 @@ unsigned int pc_nextjobexp(struct map_session_data *sd) { nullpo_ret(sd); - if(sd->status.job_level>=pc_maxjoblv(sd) || sd->status.job_level<=0) + if(sd->status.job_level>=iPc->maxjoblv(sd) || sd->status.job_level<=0) return 0; - return exp_table[pc_class2idx(sd->status.class_)][1][sd->status.job_level-1]; + return exp_table[iPc->class2idx(sd->status.class_)][1][sd->status.job_level-1]; } //Job exp needed for this level. unsigned int pc_thisjobexp(struct map_session_data *sd) { - if(sd->status.job_level>pc_maxjoblv(sd) || sd->status.job_level<=1) + if(sd->status.job_level>iPc->maxjoblv(sd) || sd->status.job_level<=1) return 0; - return exp_table[pc_class2idx(sd->status.class_)][1][sd->status.job_level-2]; + return exp_table[iPc->class2idx(sd->status.class_)][1][sd->status.job_level-2]; } /// Returns the value of the specified stat. @@ -6020,7 +6020,7 @@ int pc_statusup(struct map_session_data* sd, int type) nullpo_ret(sd); // check conditions - need = pc_need_status_point(sd,type,1); + need = iPc->need_status_point(sd,type,1); if( type < SP_STR || type > SP_LUK || need < 0 || need > sd->status.status_point ) { clif->statusupack(sd,type,0,0); @@ -6042,7 +6042,7 @@ int pc_statusup(struct map_session_data* sd, int type) status_calc_pc(sd,0); // update increase cost indicator - if( need != pc_need_status_point(sd,type,1) ) + if( need != iPc->need_status_point(sd,type,1) ) clif->updatestatus(sd, SP_USTR + type-SP_STR); // update statpoint count @@ -6073,7 +6073,7 @@ int pc_statusup2(struct map_session_data* sd, int type, int val) return 1; } - need = pc_need_status_point(sd,type,1); + need = iPc->need_status_point(sd,type,1); // set new value max = pc_maxparameter(sd); @@ -6082,7 +6082,7 @@ int pc_statusup2(struct map_session_data* sd, int type, int val) status_calc_pc(sd,0); // update increase cost indicator - if( need != pc_need_status_point(sd,type,1) ) + if( need != iPc->need_status_point(sd,type,1) ) clif->updatestatus(sd, SP_USTR + type-SP_STR); // update stat value @@ -6123,8 +6123,8 @@ int pc_skillup(struct map_session_data *sd,uint16 skill_id) { sd->status.skill_point--; if( !skill_db[index].inf ) status_calc_pc(sd,0); // Only recalculate for passive skills. - else if( sd->status.skill_point == 0 && (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) ) - pc_calc_skilltree(sd); // Required to grant all TK Ranger skills. + else if( sd->status.skill_point == 0 && (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && iPc->famerank(sd->status.char_id, MAPID_TAEKWON) ) + iPc->calc_skilltree(sd); // Required to grant all TK Ranger skills. else pc_check_skilltree(sd, skill_id); // Check if a new skill can Lvlup @@ -6173,8 +6173,8 @@ int pc_allskillup(struct map_session_data *sd) } } else { int inf2; - for(i=0;i < MAX_SKILL_TREE && (id=skill_tree[pc_class2idx(sd->status.class_)][i].id)>0;i++){ - int idx = skill_tree[pc_class2idx(sd->status.class_)][i].idx; + for(i=0;i < MAX_SKILL_TREE && (id=skill_tree[iPc->class2idx(sd->status.class_)][i].id)>0;i++){ + int idx = skill_tree[iPc->class2idx(sd->status.class_)][i].idx; inf2 = skill_db[idx].inf2; if ( (inf2&INF2_QUEST_SKILL && !battle_config.quest_skill_learn) || @@ -6204,7 +6204,7 @@ int pc_resetlvl(struct map_session_data* sd,int type) nullpo_ret(sd); if (type != 3) //Also reset skills - pc_resetskill(sd, 0); + iPc->resetskill(sd, 0); if(type == 1){ sd->status.skill_point=0; @@ -6224,8 +6224,8 @@ int pc_resetlvl(struct map_session_data* sd,int type) if(sd->status.class_ == JOB_NOVICE_HIGH) { sd->status.status_point=100; // not 88 [celest] // give platinum skills upon changing - pc_skill(sd,142,1,0); - pc_skill(sd,143,1,0); + iPc->skill(sd,142,1,0); + iPc->skill(sd,143,1,0); } } @@ -6270,12 +6270,12 @@ int pc_resetlvl(struct map_session_data* sd,int type) for(i=0;i<EQI_MAX;i++) { // unequip items that can't be equipped by base 1 [Valaris] if(sd->equip_index[i] >= 0) - if(!pc_isequip(sd,sd->equip_index[i])) - pc_unequipitem(sd,sd->equip_index[i],2); + if(!iPc->isequip(sd,sd->equip_index[i])) + iPc->unequipitem(sd,sd->equip_index[i],2); } if ((type == 1 || type == 2 || type == 3) && sd->status.party_id) - party_send_levelup(sd); + iParty->send_levelup(sd); status_calc_pc(sd,0); clif->skillinfoblock(sd); @@ -6303,12 +6303,12 @@ int pc_resetstate(struct map_session_data* sd) else { int add=0; - add += pc_need_status_point(sd, SP_STR, 1-pc_getstat(sd, SP_STR)); - add += pc_need_status_point(sd, SP_AGI, 1-pc_getstat(sd, SP_AGI)); - add += pc_need_status_point(sd, SP_VIT, 1-pc_getstat(sd, SP_VIT)); - add += pc_need_status_point(sd, SP_INT, 1-pc_getstat(sd, SP_INT)); - add += pc_need_status_point(sd, SP_DEX, 1-pc_getstat(sd, SP_DEX)); - add += pc_need_status_point(sd, SP_LUK, 1-pc_getstat(sd, SP_LUK)); + add += iPc->need_status_point(sd, SP_STR, 1-pc_getstat(sd, SP_STR)); + add += iPc->need_status_point(sd, SP_AGI, 1-pc_getstat(sd, SP_AGI)); + add += iPc->need_status_point(sd, SP_VIT, 1-pc_getstat(sd, SP_VIT)); + add += iPc->need_status_point(sd, SP_INT, 1-pc_getstat(sd, SP_INT)); + add += iPc->need_status_point(sd, SP_DEX, 1-pc_getstat(sd, SP_DEX)); + add += iPc->need_status_point(sd, SP_LUK, 1-pc_getstat(sd, SP_LUK)); sd->status.status_point+=add; } @@ -6366,35 +6366,35 @@ int pc_resetskill(struct map_session_data* sd, int flag) /** * It has been confirmed on official server that when you reset skills with a ranked tweakwon your skills are not reset (because you have all of them anyway) **/ - if( (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) ) + if( (sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && iPc->famerank(sd->status.char_id, MAPID_TAEKWON) ) return 0; - if( pc_checkskill(sd, SG_DEVIL) && !pc_nextjobexp(sd) ) //Remove perma blindness due to skill-reset. [Skotlex] + if( iPc->checkskill(sd, SG_DEVIL) && !iPc->nextjobexp(sd) ) //Remove perma blindness due to skill-reset. [Skotlex] clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_DEVIL); i = sd->sc.option; - if( i&OPTION_RIDING && (!pc_checkskill(sd, KN_RIDING) || (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT) ) + if( i&OPTION_RIDING && (!iPc->checkskill(sd, KN_RIDING) || (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT) ) i &= ~OPTION_RIDING; - if( i&OPTION_FALCON && pc_checkskill(sd, HT_FALCON) ) + if( i&OPTION_FALCON && iPc->checkskill(sd, HT_FALCON) ) i &= ~OPTION_FALCON; - if( i&OPTION_DRAGON && pc_checkskill(sd, RK_DRAGONTRAINING) ) + if( i&OPTION_DRAGON && iPc->checkskill(sd, RK_DRAGONTRAINING) ) i &= ~OPTION_DRAGON; - if( i&OPTION_WUG && pc_checkskill(sd, RA_WUGMASTERY) ) + if( i&OPTION_WUG && iPc->checkskill(sd, RA_WUGMASTERY) ) i &= ~OPTION_WUG; - if( i&OPTION_WUGRIDER && pc_checkskill(sd, RA_WUGRIDER) ) + if( i&OPTION_WUGRIDER && iPc->checkskill(sd, RA_WUGRIDER) ) i &= ~OPTION_WUGRIDER; if( i&OPTION_MADOGEAR && ( sd->class_&MAPID_THIRDMASK ) == MAPID_MECHANIC ) i &= ~OPTION_MADOGEAR; #ifndef NEW_CARTS - if( i&OPTION_CART && pc_checkskill(sd, MC_PUSHCART) ) + if( i&OPTION_CART && iPc->checkskill(sd, MC_PUSHCART) ) i &= ~OPTION_CART; #else if( sd->sc.data[SC_PUSH_CART] ) - pc_setcart(sd, 0); + iPc->setcart(sd, 0); #endif if( i != sd->sc.option ) - pc_setoption(sd, i); + iPc->setoption(sd, i); - if( homun_alive(sd->hd) && pc_checkskill(sd, AM_CALLHOMUN) ) + if( homun_alive(sd->hd) && iPc->checkskill(sd, AM_CALLHOMUN) ) homun->vaporize(sd, 0); } @@ -6544,19 +6544,19 @@ void pc_respawn(struct map_session_data* sd, clr_type clrtype) if( sd->bg_id && bg_member_respawn(sd) ) return; // member revived by battleground - pc_setstand(sd); - pc_setrestartvalue(sd,3); - if( pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, clrtype) ) + iPc->setstand(sd); + iPc->setrestartvalue(sd,3); + if( iPc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, clrtype) ) clif->resurrection(&sd->bl, 1); //If warping fails, send a normal stand up packet. } static int pc_respawn_timer(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd = map_id2sd(id); + struct map_session_data *sd = iMap->id2sd(id); if( sd != NULL ) { sd->pvp_point=0; - pc_respawn(sd,CLR_OUTSIGHT); + iPc->respawn(sd,CLR_OUTSIGHT); } return 0; @@ -6575,7 +6575,7 @@ void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int h return; if( pc_issit(sd) ) { - pc_setstand(sd); + iPc->setstand(sd); skill->sit(sd,0); } @@ -6588,7 +6588,7 @@ void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int h if( sd->status.ele_id > 0 ) elemental_set_target(sd,src); - sd->canlog_tick = gettick(); + sd->canlog_tick = iTimer->gettick(); } /*========================================== @@ -6596,11 +6596,11 @@ void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int h *------------------------------------------*/ int pc_dead(struct map_session_data *sd,struct block_list *src) { int i=0,j=0,k=0; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); for(k = 0; k < 5; k++) if (sd->devotion[k]){ - struct map_session_data *devsd = map_id2sd(sd->devotion[k]); + struct map_session_data *devsd = iMap->id2sd(sd->devotion[k]); if (devsd) status_change_end(&devsd->bl, SC_DEVOTION, INVALID_TIMER); sd->devotion[k] = 0; @@ -6641,7 +6641,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { npc_event_dequeue(sd); pc_setglobalreg(sd,"PC_DIE_COUNTER",sd->die_counter+1); - pc_setparam(sd, SP_KILLERRID, src?src->id:0); + iPc->setparam(sd, SP_KILLERRID, src?src->id:0); if( sd->bg_id ) {/* TODO: purge when bgqueue is deemed ok */ struct battleground_data *bg; @@ -6673,7 +6673,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { sd->st->state = END; } - /* e.g. not killed thru pc_damage */ + /* e.g. not killed thru iPc->damage */ if( pc_issit(sd) ) { clif->sc_end(&sd->bl,sd->bl.id,SELF,SI_SIT); } @@ -6688,10 +6688,10 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { sd->hp_loss.tick = sd->sp_loss.tick = sd->hp_regen.tick = sd->sp_regen.tick = 0; if ( sd && sd->spiritball ) - pc_delspiritball(sd,sd->spiritball,0); + iPc->delspiritball(sd,sd->spiritball,0); for(i = 1; i < 5; i++) - pc_del_talisman(sd, sd->talisman[i], i); + iPc->del_talisman(sd, sd->talisman[i], i); if (src) { switch (src->type) { @@ -6701,7 +6701,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { if(md->target_id==sd->bl.id) mob_unlocktarget(md,tick); if(battle_config.mobs_level_up && md->status.hp && - (unsigned int)md->level < pc_maxbaselv(sd) && + (unsigned int)md->level < iPc->maxbaselv(sd) && !md->guardian_data && !md->special_state.ai// Guardians/summons should not level. [Skotlex] ) { // monster level up [Valaris] clif->misceffect(&md->bl,0); @@ -6731,7 +6731,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { if (src && src->type == BL_PC) { struct map_session_data *ssd = (struct map_session_data *)src; - pc_setparam(ssd, SP_KILLEDRID, sd->bl.id); + iPc->setparam(ssd, SP_KILLEDRID, sd->bl.id); npc_script_event(ssd, NPCE_KILLPC); if (battle_config.pk_mode&2) { @@ -6775,24 +6775,24 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { item_tmp.card[1]=0; item_tmp.card[2]=GetWord(sd->status.char_id,0); // CharId item_tmp.card[3]=GetWord(sd->status.char_id,1); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } // activate Steel body if a super novice dies at 99+% exp [celest] if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) { - unsigned int next = pc_nextbaseexp(sd); - if( next == 0 ) next = pc_thisbaseexp(sd); + unsigned int next = iPc->nextbaseexp(sd); + if( next == 0 ) next = iPc->thisbaseexp(sd); if( get_percentage(sd->status.base_exp,next) >= 99 ) { sd->state.snovice_dead_flag = 1; - pc_setstand(sd); + iPc->setstand(sd); status_percent_heal(&sd->bl, 100, 100); clif->resurrection(&sd->bl, 1); if(battle_config.pc_invincible_time) - pc_setinvincibletimer(sd, battle_config.pc_invincible_time); + iPc->setinvincibletimer(sd, battle_config.pc_invincible_time); sc_start(&sd->bl,status_skill2sc(MO_STEELBODY),100,1,skill->get_time(MO_STEELBODY,1)); if(map_flag_gvg(sd->bl.m)) - pc_respawn_timer(INVALID_TIMER, gettick(), sd->bl.id, 0); + pc_respawn_timer(INVALID_TIMER, iTimer->gettick(), sd->bl.id, 0); return 0; } } @@ -6807,7 +6807,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { if (battle_config.death_penalty_base > 0) { switch (battle_config.death_penalty_type) { case 1: - base_penalty = (unsigned int) ((double)pc_nextbaseexp(sd) * (double)battle_config.death_penalty_base/10000); + base_penalty = (unsigned int) ((double)iPc->nextbaseexp(sd) * (double)battle_config.death_penalty_base/10000); break; case 2: base_penalty = (unsigned int) ((double)sd->status.base_exp * (double)battle_config.death_penalty_base/10000); @@ -6825,7 +6825,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { base_penalty = 0; switch (battle_config.death_penalty_type) { case 1: - base_penalty = (unsigned int) ((double)pc_nextjobexp(sd) * (double)battle_config.death_penalty_job/10000); + base_penalty = (unsigned int) ((double)iPc->nextjobexp(sd) * (double)battle_config.death_penalty_job/10000); break; case 2: base_penalty = (unsigned int) ((double)sd->status.job_exp * (double)battle_config.death_penalty_job/10000); @@ -6842,7 +6842,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { { base_penalty = (unsigned int)((double)sd->status.zeny * (double)battle_config.zeny_penalty / 10000.); if(base_penalty) - pc_payzeny(sd, base_penalty, LOG_TYPE_PICKDROP_PLAYER, NULL); + iPc->payzeny(sd, base_penalty, LOG_TYPE_PICKDROP_PLAYER, NULL); } } @@ -6874,8 +6874,8 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { int n = eq_n[rnd()%eq_num]; if(rnd()%10000 < per){ if(sd->status.inventory[n].equip) - pc_unequipitem(sd,n,3); - pc_dropitem(sd,n,1); + iPc->unequipitem(sd,n,3); + iPc->dropitem(sd,n,1); } } } @@ -6887,8 +6887,8 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { || (type == 2 && sd->status.inventory[i].equip) || type == 3) ){ if(sd->status.inventory[i].equip) - pc_unequipitem(sd,i,3); - pc_dropitem(sd,i,1); + iPc->unequipitem(sd,i,3); + iPc->dropitem(sd,i,1); break; } } @@ -6909,14 +6909,14 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { } if( sd->pvp_point < 0 ) { - add_timer(tick+1000, pc_respawn_timer,sd->bl.id,0); + iTimer->add_timer(tick+1000, pc_respawn_timer,sd->bl.id,0); return 1|8; } } //GvG if( map_flag_gvg(sd->bl.m) ) { - add_timer(tick+1000, pc_respawn_timer, sd->bl.id, 0); + iTimer->add_timer(tick+1000, pc_respawn_timer, sd->bl.id, 0); return 1|8; } else if( sd->bg_id ) @@ -6924,7 +6924,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { struct battleground_data *bg = bg_team_search(sd->bg_id); if( bg && bg->mapindex > 0 ) { // Respawn by BG - add_timer(tick+1000, pc_respawn_timer, sd->bl.id, 0); + iTimer->add_timer(tick+1000, pc_respawn_timer, sd->bl.id, 0); return 1|8; } } @@ -6932,7 +6932,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { //Reset "can log out" tick. if( battle_config.prevent_logout ) - sd->canlog_tick = gettick() - battle_config.prevent_logout; + sd->canlog_tick = iTimer->gettick() - battle_config.prevent_logout; return 1; } @@ -6940,9 +6940,9 @@ void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp) { if(hp) clif->updatestatus(sd,SP_HP); if(sp) clif->updatestatus(sd,SP_SP); - pc_setstand(sd); + iPc->setstand(sd); if(battle_config.pc_invincible_time > 0) - pc_setinvincibletimer(sd, battle_config.pc_invincible_time); + iPc->setinvincibletimer(sd, battle_config.pc_invincible_time); if( sd->state.gmaster_flag ) { guild->aura_refresh(sd,GD_LEADERSHIP,guild->checkskill(sd->state.gmaster_flag,GD_LEADERSHIP)); @@ -6969,16 +6969,16 @@ int pc_readparam(struct map_session_data* sd,int type) case SP_BASELEVEL: val = sd->status.base_level; break; case SP_JOBLEVEL: val = sd->status.job_level; break; case SP_CLASS: val = sd->status.class_; break; - case SP_BASEJOB: val = pc_mapid2jobid(sd->class_&MAPID_UPPERMASK, sd->status.sex); break; //Base job, extracting upper type. + case SP_BASEJOB: val = iPc->mapid2jobid(sd->class_&MAPID_UPPERMASK, sd->status.sex); break; //Base job, extracting upper type. case SP_UPPER: val = sd->class_&JOBL_UPPER?1:(sd->class_&JOBL_BABY?2:0); break; - case SP_BASECLASS: val = pc_mapid2jobid(sd->class_&MAPID_BASEMASK, sd->status.sex); break; //Extract base class tree. [Skotlex] + case SP_BASECLASS: val = iPc->mapid2jobid(sd->class_&MAPID_BASEMASK, sd->status.sex); break; //Extract base class tree. [Skotlex] case SP_SEX: val = sd->status.sex; break; case SP_WEIGHT: val = sd->weight; break; case SP_MAXWEIGHT: val = sd->max_weight; break; case SP_BASEEXP: val = sd->status.base_exp; break; case SP_JOBEXP: val = sd->status.job_exp; break; - case SP_NEXTBASEEXP: val = pc_nextbaseexp(sd); break; - case SP_NEXTJOBEXP: val = pc_nextjobexp(sd); break; + case SP_NEXTBASEEXP: val = iPc->nextbaseexp(sd); break; + case SP_NEXTJOBEXP: val = iPc->nextjobexp(sd); break; case SP_HP: val = sd->battle_status.hp; break; case SP_MAXHP: val = sd->battle_status.max_hp; break; case SP_SP: val = sd->battle_status.sp; break; @@ -7114,12 +7114,12 @@ int pc_setparam(struct map_session_data *sd,int type,int val) switch(type){ case SP_BASELEVEL: - if ((unsigned int)val > pc_maxbaselv(sd)) //Capping to max - val = pc_maxbaselv(sd); + if ((unsigned int)val > iPc->maxbaselv(sd)) //Capping to max + val = iPc->maxbaselv(sd); if ((unsigned int)val > sd->status.base_level) { int stat=0; for (i = 0; i < (int)((unsigned int)val - sd->status.base_level); i++) - stat += pc_gets_status_point(sd->status.base_level + i); + stat += iPc->gets_status_point(sd->status.base_level + i); sd->status.status_point += stat; } sd->status.base_level = (unsigned int)val; @@ -7131,12 +7131,12 @@ int pc_setparam(struct map_session_data *sd,int type,int val) status_calc_pc(sd, 0); if(sd->status.party_id) { - party_send_levelup(sd); + iParty->send_levelup(sd); } break; case SP_JOBLEVEL: if ((unsigned int)val >= sd->status.job_level) { - if ((unsigned int)val > pc_maxjoblv(sd)) val = pc_maxjoblv(sd); + if ((unsigned int)val > iPc->maxjoblv(sd)) val = iPc->maxjoblv(sd); sd->status.skill_point += val - sd->status.job_level; clif->updatestatus(sd, SP_SKILLPOINT); } @@ -7160,15 +7160,15 @@ int pc_setparam(struct map_session_data *sd,int type,int val) sd->status.zeny = cap_value(val, 0, MAX_ZENY); break; case SP_BASEEXP: - if(pc_nextbaseexp(sd) > 0) { + if(iPc->nextbaseexp(sd) > 0) { sd->status.base_exp = val; - pc_checkbaselevelup(sd); + iPc->checkbaselevelup(sd); } break; case SP_JOBEXP: - if(pc_nextjobexp(sd) > 0) { + if(iPc->nextjobexp(sd) > 0) { sd->status.job_exp = val; - pc_checkjoblevelup(sd); + iPc->checkjoblevelup(sd); } break; case SP_SEX: @@ -7283,8 +7283,8 @@ int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp) if(hp) { int i; bonus = 100 + (sd->battle_status.vit<<1) - + pc_checkskill(sd,SM_RECOVERY)*10 - + pc_checkskill(sd,AM_LEARNINGPOTION)*5; + + iPc->checkskill(sd,SM_RECOVERY)*10 + + iPc->checkskill(sd,AM_LEARNINGPOTION)*5; // A potion produced by an Alchemist in the Fame Top 10 gets +50% effect [DracoRPG] if (potion_flag > 1) bonus += bonus*(potion_flag-1)*50/100; @@ -7309,8 +7309,8 @@ int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp) } if(sp) { bonus = 100 + (sd->battle_status.int_<<1) - + pc_checkskill(sd,MG_SRECOVERY)*10 - + pc_checkskill(sd,AM_LEARNINGPOTION)*5; + + iPc->checkskill(sd,MG_SRECOVERY)*10 + + iPc->checkskill(sd,AM_LEARNINGPOTION)*5; if (potion_flag > 1) bonus += bonus*(potion_flag-1)*50/100; if(bonus != 100) @@ -7407,7 +7407,7 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) return 1; //Normalize job. - b_class = pc_jobid2mapid(job); + b_class = iPc->jobid2mapid(job); if (b_class == -1) return 1; switch (upper) { @@ -7420,7 +7420,7 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) } //This will automatically adjust bard/dancer classes to the correct gender //That is, if you try to jobchange into dancer, it will turn you to bard. - job = pc_mapid2jobid(b_class, sd->status.sex); + job = iPc->mapid2jobid(b_class, sd->status.sex); if (job == -1) return 1; @@ -7465,7 +7465,7 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) } if ( (b_class&MAPID_UPPERMASK) != (sd->class_&MAPID_UPPERMASK) ) { //Things to remove when changing class tree. - const int class_ = pc_class2idx(sd->status.class_); + const int class_ = iPc->class2idx(sd->status.class_); short id; for(i = 0; i < MAX_SKILL_TREE && (id = skill_tree[class_][i].id) > 0; i++) { //Remove status specific to your current tree skills. @@ -7477,19 +7477,19 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) if( (sd->class_&MAPID_UPPERMASK) == MAPID_STAR_GLADIATOR && (b_class&MAPID_UPPERMASK) != MAPID_STAR_GLADIATOR) { /* going off star glad lineage, reset feel to not store no-longer-used vars in the database */ - pc_resetfeel(sd); + iPc->resetfeel(sd); } sd->status.class_ = job; - fame_flag = pc_famerank(sd->status.char_id,sd->class_&MAPID_UPPERMASK); + fame_flag = iPc->famerank(sd->status.char_id,sd->class_&MAPID_UPPERMASK); sd->class_ = (unsigned short)b_class; sd->status.job_level=1; sd->status.job_exp=0; - if (sd->status.base_level > pc_maxbaselv(sd)) { - sd->status.base_level = pc_maxbaselv(sd); + if (sd->status.base_level > iPc->maxbaselv(sd)) { + sd->status.base_level = iPc->maxbaselv(sd); sd->status.base_exp=0; - pc_resetstate(sd); + iPc->resetstate(sd); clif->updatestatus(sd,SP_STATUSPOINT); clif->updatestatus(sd,SP_BASELEVEL); clif->updatestatus(sd,SP_BASEEXP); @@ -7502,14 +7502,14 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) for(i=0;i<EQI_MAX;i++) { if(sd->equip_index[i] >= 0) - if(!pc_isequip(sd,sd->equip_index[i])) - pc_unequipitem(sd,sd->equip_index[i],2); // unequip invalid item for class + if(!iPc->isequip(sd,sd->equip_index[i])) + iPc->unequipitem(sd,sd->equip_index[i],2); // unequip invalid item for class } //Change look, if disguised, you need to undisguise //to correctly calculate new job sprite without if (sd->disguise != -1) - pc_disguise(sd, -1); + iPc->disguise(sd, -1); status_set_viewdata(&sd->bl, job); clif->changelook(&sd->bl,LOOK_BASE,sd->vd.class_); // move sprite update to prevent client crashes with incompatible equipment [Valaris] @@ -7517,7 +7517,7 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) clif->changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color); //Update skill tree. - pc_calc_skilltree(sd); + iPc->calc_skilltree(sd); clif->skillinfoblock(sd); if (sd->ed) @@ -7525,41 +7525,41 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) if (sd->state.vending) vending->close(sd); - map_foreachinmap(jobchange_killclone, sd->bl.m, BL_MOB, sd->bl.id); + iMap->foreachinmap(jobchange_killclone, sd->bl.m, BL_MOB, sd->bl.id); //Remove peco/cart/falcon i = sd->sc.option; - if( i&OPTION_RIDING && !pc_checkskill(sd, KN_RIDING) ) + if( i&OPTION_RIDING && !iPc->checkskill(sd, KN_RIDING) ) i&=~OPTION_RIDING; - if( i&OPTION_FALCON && !pc_checkskill(sd, HT_FALCON) ) + if( i&OPTION_FALCON && !iPc->checkskill(sd, HT_FALCON) ) i&=~OPTION_FALCON; - if( i&OPTION_DRAGON && !pc_checkskill(sd,RK_DRAGONTRAINING) ) + if( i&OPTION_DRAGON && !iPc->checkskill(sd,RK_DRAGONTRAINING) ) i&=~OPTION_DRAGON; - if( i&OPTION_WUGRIDER && !pc_checkskill(sd,RA_WUGMASTERY) ) + if( i&OPTION_WUGRIDER && !iPc->checkskill(sd,RA_WUGMASTERY) ) i&=~OPTION_WUGRIDER; - if( i&OPTION_WUG && !pc_checkskill(sd,RA_WUGMASTERY) ) + if( i&OPTION_WUG && !iPc->checkskill(sd,RA_WUGMASTERY) ) i&=~OPTION_WUG; if( i&OPTION_MADOGEAR ) //You do not need a skill for this. i&=~OPTION_MADOGEAR; #ifndef NEW_CARTS - if( i&OPTION_CART && !pc_checkskill(sd, MC_PUSHCART) ) + if( i&OPTION_CART && !iPc->checkskill(sd, MC_PUSHCART) ) i&=~OPTION_CART; #else - if( sd->sc.data[SC_PUSH_CART] && !pc_checkskill(sd, MC_PUSHCART) ) - pc_setcart(sd, 0); + if( sd->sc.data[SC_PUSH_CART] && !iPc->checkskill(sd, MC_PUSHCART) ) + iPc->setcart(sd, 0); #endif if(i != sd->sc.option) - pc_setoption(sd, i); + iPc->setoption(sd, i); - if(homun_alive(sd->hd) && !pc_checkskill(sd, AM_CALLHOMUN)) + if(homun_alive(sd->hd) && !iPc->checkskill(sd, AM_CALLHOMUN)) homun->vaporize(sd, 0); if(sd->status.manner < 0) clif->changestatus(sd,SP_MANNER,sd->status.manner); status_calc_pc(sd,0); - pc_checkallowskill(sd); - pc_equiplookall(sd); + iPc->checkallowskill(sd); + iPc->equiplookall(sd); //if you were previously famous, not anymore. if (fame_flag) { @@ -7677,7 +7677,7 @@ int pc_setoption(struct map_session_data *sd,int type) sd->sc.option=type; clif->changeoption(&sd->bl); - if( (type&OPTION_RIDING && !(p_type&OPTION_RIDING)) || (type&OPTION_DRAGON && !(p_type&OPTION_DRAGON) && pc_checkskill(sd,RK_DRAGONTRAINING) > 0) ) { + if( (type&OPTION_RIDING && !(p_type&OPTION_RIDING)) || (type&OPTION_DRAGON && !(p_type&OPTION_DRAGON) && iPc->checkskill(sd,RK_DRAGONTRAINING) > 0) ) { // Mounting clif->sc_load(&sd->bl,sd->bl.id,AREA,SI_RIDING, 0, 0, 0); status_calc_pc(sd,0); @@ -7691,11 +7691,11 @@ int pc_setoption(struct map_session_data *sd,int type) if( type&OPTION_CART && !( p_type&OPTION_CART ) ) { //Cart On clif->cartlist(sd); clif->updatestatus(sd, SP_CARTINFO); - if(pc_checkskill(sd, MC_PUSHCART) < 10) + if(iPc->checkskill(sd, MC_PUSHCART) < 10) status_calc_pc(sd,0); //Apply speed penalty. } else if( !( type&OPTION_CART ) && p_type&OPTION_CART ){ //Cart Off clif->clearcart(sd->fd); - if(pc_checkskill(sd, MC_PUSHCART) < 10) + if(iPc->checkskill(sd, MC_PUSHCART) < 10) status_calc_pc(sd,0); //Remove speed penalty. } #endif @@ -7769,7 +7769,7 @@ int pc_setcart(struct map_session_data *sd,int type) { if( type < 0 || type > MAX_CARTS ) return 1;// Never trust the values sent by the client! [Skotlex] - if( pc_checkskill(sd,MC_PUSHCART) <= 0 && type != 0 ) + if( iPc->checkskill(sd,MC_PUSHCART) <= 0 && type != 0 ) return 1;// Push cart is required if( type == 0 && pc_iscarton(sd) ) @@ -7796,14 +7796,14 @@ int pc_setcart(struct map_session_data *sd,int type) { break; } - if(pc_checkskill(sd, MC_PUSHCART) < 10) + if(iPc->checkskill(sd, MC_PUSHCART) < 10) status_calc_pc(sd,0); //Recalc speed penalty. #else // Update option option = sd->sc.option; option &= ~OPTION_CART;// clear cart bits option |= cart[type]; // set cart - pc_setoption(sd, option); + iPc->setoption(sd, option); #endif return 0; @@ -7815,10 +7815,10 @@ int pc_setcart(struct map_session_data *sd,int type) { int pc_setfalcon(TBL_PC* sd, int flag) { if( flag ){ - if( pc_checkskill(sd,HT_FALCON)>0 ) // add falcon if he have the skill - pc_setoption(sd,sd->sc.option|OPTION_FALCON); + if( iPc->checkskill(sd,HT_FALCON)>0 ) // add falcon if he have the skill + iPc->setoption(sd,sd->sc.option|OPTION_FALCON); } else if( pc_isfalcon(sd) ){ - pc_setoption(sd,sd->sc.option&~OPTION_FALCON); // remove falcon + iPc->setoption(sd,sd->sc.option&~OPTION_FALCON); // remove falcon } return 0; @@ -7830,10 +7830,10 @@ int pc_setfalcon(TBL_PC* sd, int flag) int pc_setriding(TBL_PC* sd, int flag) { if( flag ){ - if( pc_checkskill(sd,KN_RIDING) > 0 ) // add peco - pc_setoption(sd, sd->sc.option|OPTION_RIDING); + if( iPc->checkskill(sd,KN_RIDING) > 0 ) // add peco + iPc->setoption(sd, sd->sc.option|OPTION_RIDING); } else if( pc_isriding(sd) ){ - pc_setoption(sd, sd->sc.option&~OPTION_RIDING); + iPc->setoption(sd, sd->sc.option&~OPTION_RIDING); } return 0; @@ -7845,10 +7845,10 @@ int pc_setriding(TBL_PC* sd, int flag) int pc_setmadogear(TBL_PC* sd, int flag) { if( flag ){ - if( pc_checkskill(sd,NC_MADOLICENCE) > 0 ) - pc_setoption(sd, sd->sc.option|OPTION_MADOGEAR); + if( iPc->checkskill(sd,NC_MADOLICENCE) > 0 ) + iPc->setoption(sd, sd->sc.option|OPTION_MADOGEAR); } else if( pc_ismadogear(sd) ){ - pc_setoption(sd, sd->sc.option&~OPTION_MADOGEAR); + iPc->setoption(sd, sd->sc.option&~OPTION_MADOGEAR); } return 0; @@ -7861,9 +7861,9 @@ int pc_candrop(struct map_session_data *sd, struct item *item) { if( item && item->expire_time ) return 0; - if( !pc_can_give_items(sd) ) //check if this GM level can drop items + if( !iPc->can_give_items(sd) ) //check if this GM level can drop items return 0; - return (itemdb_isdropable(item, pc_get_group_level(sd))); + return (itemdb_isdropable(item, iPc->get_group_level(sd))); } /*========================================== @@ -8207,7 +8207,7 @@ int pc_setregistry_str(struct map_session_data *sd,const char *reg,const char *v *------------------------------------------*/ static int pc_eventtimer(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd=map_id2sd(id); + struct map_session_data *sd=iMap->id2sd(id); char *p = (char *)data; int i; if(sd==NULL) @@ -8239,7 +8239,7 @@ int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name) if( i == MAX_EVENTTIMER ) return 0; - sd->eventtimer[i] = add_timer(gettick()+tick, pc_eventtimer, sd->bl.id, (intptr_t)aStrdup(name)); + sd->eventtimer[i] = iTimer->add_timer(iTimer->gettick()+tick, pc_eventtimer, sd->bl.id, (intptr_t)aStrdup(name)); sd->eventcount++; return 1; @@ -8261,13 +8261,13 @@ int pc_deleventtimer(struct map_session_data *sd,const char *name) // find the named event timer ARR_FIND( 0, MAX_EVENTTIMER, i, sd->eventtimer[i] != INVALID_TIMER && - (p = (char *)(get_timer(sd->eventtimer[i])->data)) != NULL && + (p = (char *)(iTimer->get_timer(sd->eventtimer[i])->data)) != NULL && strcmp(p, name) == 0 ); if( i == MAX_EVENTTIMER ) return 0; // not found - delete_timer(sd->eventtimer[i],pc_eventtimer); + iTimer->delete_timer(sd->eventtimer[i],pc_eventtimer); sd->eventtimer[i] = INVALID_TIMER; sd->eventcount--; aFree(p); @@ -8286,8 +8286,8 @@ int pc_addeventtimercount(struct map_session_data *sd,const char *name,int tick) for(i=0;i<MAX_EVENTTIMER;i++) if( sd->eventtimer[i] != INVALID_TIMER && strcmp( - (char *)(get_timer(sd->eventtimer[i])->data), name)==0 ){ - addtick_timer(sd->eventtimer[i],tick); + (char *)(iTimer->get_timer(sd->eventtimer[i])->data), name)==0 ){ + iTimer->addtick_timer(sd->eventtimer[i],tick); break; } @@ -8308,8 +8308,8 @@ int pc_cleareventtimer(struct map_session_data *sd) for(i=0;i<MAX_EVENTTIMER;i++) if( sd->eventtimer[i] != INVALID_TIMER ){ - char *p = (char *)(get_timer(sd->eventtimer[i])->data); - delete_timer(sd->eventtimer[i],pc_eventtimer); + char *p = (char *)(iTimer->get_timer(sd->eventtimer[i])->data); + iTimer->delete_timer(sd->eventtimer[i],pc_eventtimer); sd->eventtimer[i] = INVALID_TIMER; sd->eventcount--; if (p) aFree(p); @@ -8486,19 +8486,19 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) return 0; } - if( DIFF_TICK(sd->canequip_tick,gettick()) > 0 ) + if( DIFF_TICK(sd->canequip_tick,iTimer->gettick()) > 0 ) { clif->equipitemack(sd,n,0,0); return 0; } id = sd->inventory_data[n]; - pos = pc_equippoint(sd,n); //With a few exceptions, item should go in all specified slots. + pos = iPc->equippoint(sd,n); //With a few exceptions, item should go in all specified slots. if(battle_config.battle_log) ShowInfo("equip %d(%d) %x:%x\n",sd->status.inventory[n].nameid,n,id?id->equip:0,req_pos); - if(!pc_isequip(sd,n) || !(pos&req_pos) || sd->status.inventory[n].equip != 0 || sd->status.inventory[n].attribute==1 ) { // [Valaris] - // FIXME: pc_isequip: equip level failure uses 2 instead of 0 + if(!iPc->isequip(sd,n) || !(pos&req_pos) || sd->status.inventory[n].equip != 0 || sd->status.inventory[n].attribute==1 ) { // [Valaris] + // FIXME: iPc->isequip: equip level failure uses 2 instead of 0 clif->equipitemack(sd,n,0,0); // fail return 0; } @@ -8534,7 +8534,7 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) for(i=0;i<EQI_MAX;i++) { if(pos & equip_pos[i]) { if(sd->equip_index[i] >= 0) //Slot taken, remove item from there. - pc_unequipitem(sd,sd->equip_index[i],2); + iPc->unequipitem(sd,sd->equip_index[i],2); sd->equip_index[i] = n; } @@ -8576,21 +8576,21 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) } //Added check to prevent sending the same look on multiple slots -> //causes client to redraw item on top of itself. (suggested by Lupus) - if(pos & EQP_HEAD_LOW && pc_checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) { + if(pos & EQP_HEAD_LOW && iPc->checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1) { if(id && !(pos&(EQP_HEAD_TOP|EQP_HEAD_MID))) sd->status.head_bottom = id->look; else sd->status.head_bottom = 0; clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); } - if(pos & EQP_HEAD_TOP && pc_checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) { + if(pos & EQP_HEAD_TOP && iPc->checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1) { if(id) sd->status.head_top = id->look; else sd->status.head_top = 0; clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); } - if(pos & EQP_HEAD_MID && pc_checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) { + if(pos & EQP_HEAD_MID && iPc->checkequip(sd,EQP_COSTUME_HEAD_MID) == -1) { if(id && !(pos&EQP_HEAD_TOP)) sd->status.head_mid = id->look; else @@ -8621,7 +8621,7 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) if(pos & EQP_SHOES) clif->changelook(&sd->bl,LOOK_SHOES,0); - if( pos&EQP_GARMENT && pc_checkequip(sd,EQP_COSTUME_GARMENT) == -1 ) { + if( pos&EQP_GARMENT && iPc->checkequip(sd,EQP_COSTUME_GARMENT) == -1 ) { sd->status.robe = id ? id->look : 0; clif->changelook(&sd->bl, LOOK_ROBE, sd->status.robe); } @@ -8632,7 +8632,7 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) } - pc_checkallowskill(sd); //Check if status changes should be halted. + iPc->checkallowskill(sd); //Check if status changes should be halted. iflag = sd->npc_item_flag; /* check for combos (MUST be before status_calc_pc) */ @@ -8712,7 +8712,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag) { } if(battle_config.battle_log) - ShowInfo("unequip %d %x:%x\n",n,pc_equippoint(sd,n),sd->status.inventory[n].equip); + ShowInfo("unequip %d %x:%x\n",n,iPc->equippoint(sd,n),sd->status.inventory[n].equip); if(!sd->status.inventory[n].equip){ //Nothing to unequip clif->unequipitemack(sd,n,0,0); @@ -8736,44 +8736,44 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag) { pc_calcweapontype(sd); clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield); } - if(sd->status.inventory[n].equip & EQP_HEAD_LOW && pc_checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1 ) { + if(sd->status.inventory[n].equip & EQP_HEAD_LOW && iPc->checkequip(sd,EQP_COSTUME_HEAD_LOW) == -1 ) { sd->status.head_bottom = 0; clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); } - if(sd->status.inventory[n].equip & EQP_HEAD_TOP && pc_checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1 ) { + if(sd->status.inventory[n].equip & EQP_HEAD_TOP && iPc->checkequip(sd,EQP_COSTUME_HEAD_TOP) == -1 ) { sd->status.head_top = 0; clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); } - if(sd->status.inventory[n].equip & EQP_HEAD_MID && pc_checkequip(sd,EQP_COSTUME_HEAD_MID) == -1 ) { + if(sd->status.inventory[n].equip & EQP_HEAD_MID && iPc->checkequip(sd,EQP_COSTUME_HEAD_MID) == -1 ) { sd->status.head_mid = 0; clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid); } if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_TOP) { - sd->status.head_top = ( pc_checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_TOP)]->look : 0; + sd->status.head_top = ( iPc->checkequip(sd,EQP_HEAD_TOP) >= 0 ) ? sd->inventory_data[iPc->checkequip(sd,EQP_HEAD_TOP)]->look : 0; clif->changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); } if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_MID) { - sd->status.head_mid = ( pc_checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_MID)]->look : 0; + sd->status.head_mid = ( iPc->checkequip(sd,EQP_HEAD_MID) >= 0 ) ? sd->inventory_data[iPc->checkequip(sd,EQP_HEAD_MID)]->look : 0; clif->changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid); } if(sd->status.inventory[n].equip & EQP_COSTUME_HEAD_LOW) { - sd->status.head_bottom = ( pc_checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_HEAD_LOW)]->look : 0; + sd->status.head_bottom = ( iPc->checkequip(sd,EQP_HEAD_LOW) >= 0 ) ? sd->inventory_data[iPc->checkequip(sd,EQP_HEAD_LOW)]->look : 0; clif->changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); } if(sd->status.inventory[n].equip & EQP_SHOES) clif->changelook(&sd->bl,LOOK_SHOES,0); - if( sd->status.inventory[n].equip&EQP_GARMENT && pc_checkequip(sd,EQP_COSTUME_GARMENT) == -1 ) { + if( sd->status.inventory[n].equip&EQP_GARMENT && iPc->checkequip(sd,EQP_COSTUME_GARMENT) == -1 ) { sd->status.robe = 0; clif->changelook(&sd->bl, LOOK_ROBE, 0); } if(sd->status.inventory[n].equip & EQP_COSTUME_GARMENT) { - sd->status.robe = ( pc_checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[pc_checkequip(sd,EQP_GARMENT)]->look : 0; + sd->status.robe = ( iPc->checkequip(sd,EQP_GARMENT) >= 0 ) ? sd->inventory_data[iPc->checkequip(sd,EQP_GARMENT)]->look : 0; clif->changelook(&sd->bl,LOOK_ROBE,sd->status.robe); } @@ -8818,7 +8818,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag) { } if(flag&1 || status_cacl) { - pc_checkallowskill(sd); + iPc->checkallowskill(sd); status_calc_pc(sd,0); } @@ -8869,7 +8869,7 @@ int pc_checkitem(struct map_session_data *sd) if( id && !itemdb_available(id) ) { ShowWarning("Removed invalid/disabled item id %d from inventory (amount=%d, char_id=%d).\n", id, sd->status.inventory[i].amount, sd->status.char_id); - pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_OTHER); + iPc->delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_OTHER); } } @@ -8878,7 +8878,7 @@ int pc_checkitem(struct map_session_data *sd) if( id && !itemdb_available(id) ) { ShowWarning("Removed invalid/disabled item id %d from cart (amount=%d, char_id=%d).\n", id, sd->status.cart[i].amount, sd->status.char_id); - pc_cart_delitem(sd, i, sd->status.cart[i].amount, 0, LOG_TYPE_OTHER); + iPc->cart_delitem(sd, i, sd->status.cart[i].amount, 0, LOG_TYPE_OTHER); } } } @@ -8891,8 +8891,8 @@ int pc_checkitem(struct map_session_data *sd) if( !sd->status.inventory[i].equip ) continue; - if( sd->status.inventory[i].equip&~pc_equippoint(sd,i) ) { - pc_unequipitem(sd, i, 2); + if( sd->status.inventory[i].equip&~iPc->equippoint(sd,i) ) { + iPc->unequipitem(sd, i, 2); calc_flag = 1; continue; } @@ -8900,7 +8900,7 @@ int pc_checkitem(struct map_session_data *sd) } if( calc_flag && sd->state.active ) { - pc_checkallowskill(sd); + iPc->checkallowskill(sd); status_calc_pc(sd,0); } @@ -8927,7 +8927,7 @@ int pc_calc_pvprank_sub(struct block_list *bl,va_list ap) return 0; } /*========================================== - * Calculate new rank beetween all present players (map_foreachinarea) + * Calculate new rank beetween all present players (iMap->foreachinarea) * and display result *------------------------------------------*/ int pc_calc_pvprank(struct map_session_data *sd) @@ -8937,7 +8937,7 @@ int pc_calc_pvprank(struct map_session_data *sd) m=&map[sd->bl.m]; old=sd->pvp_rank; sd->pvp_rank=1; - map_foreachinmap(pc_calc_pvprank_sub,sd->bl.m,BL_PC,sd); + iMap->foreachinmap(pc_calc_pvprank_sub,sd->bl.m,BL_PC,sd); if(old!=sd->pvp_rank || sd->pvp_lastusers!=m->users_pvp) clif->pvpset(sd,sd->pvp_rank,sd->pvp_lastusers=m->users_pvp,0); return sd->pvp_rank; @@ -8949,7 +8949,7 @@ int pc_calc_pvprank_timer(int tid, unsigned int tick, int id, intptr_t data) { struct map_session_data *sd; - sd=map_id2sd(id); + sd=iMap->id2sd(id); if(sd==NULL) return 0; sd->pvp_timer = INVALID_TIMER; @@ -8959,8 +8959,8 @@ int pc_calc_pvprank_timer(int tid, unsigned int tick, int id, intptr_t data) return 0; } - if( pc_calc_pvprank(sd) > 0 ) - sd->pvp_timer = add_timer(gettick()+PVP_CALCRANK_INTERVAL,pc_calc_pvprank_timer,id,data); + if( iPc->calc_pvprank(sd) > 0 ) + sd->pvp_timer = iTimer->add_timer(iTimer->gettick()+PVP_CALCRANK_INTERVAL,iPc->calc_pvprank_timer,id,data); return 0; } @@ -9007,13 +9007,13 @@ int pc_divorce(struct map_session_data *sd) struct map_session_data *p_sd; int i; - if( sd == NULL || !pc_ismarried(sd) ) + if( sd == NULL || !iPc->ismarried(sd) ) return -1; if( !sd->status.partner_id ) return -1; // Char is not married - if( (p_sd = map_charid2sd(sd->status.partner_id)) == NULL ) + if( (p_sd = iMap->charid2sd(sd->status.partner_id)) == NULL ) { // Lets char server do the divorce if( chrif_divorce(sd->status.char_id, sd->status.partner_id) ) return -1; // No char server connected @@ -9027,9 +9027,9 @@ int pc_divorce(struct map_session_data *sd) for( i = 0; i < MAX_INVENTORY; i++ ) { if( sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F ) - pc_delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER); + iPc->delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER); if( p_sd->status.inventory[i].nameid == WEDDING_RING_M || p_sd->status.inventory[i].nameid == WEDDING_RING_F ) - pc_delitem(p_sd, i, 1, 0, 0, LOG_TYPE_OTHER); + iPc->delitem(p_sd, i, 1, 0, 0, LOG_TYPE_OTHER); } clif->divorced(sd, p_sd->status.name); @@ -9043,9 +9043,9 @@ int pc_divorce(struct map_session_data *sd) *------------------------------------------*/ struct map_session_data *pc_get_partner(struct map_session_data *sd) { - if (sd && pc_ismarried(sd)) + if (sd && iPc->ismarried(sd)) // charid2sd returns NULL if not found - return map_charid2sd(sd->status.partner_id); + return iMap->charid2sd(sd->status.partner_id); return NULL; } @@ -9057,7 +9057,7 @@ struct map_session_data *pc_get_father (struct map_session_data *sd) { if (sd && sd->class_&JOBL_BABY && sd->status.father > 0) // charid2sd returns NULL if not found - return map_charid2sd(sd->status.father); + return iMap->charid2sd(sd->status.father); return NULL; } @@ -9069,7 +9069,7 @@ struct map_session_data *pc_get_mother (struct map_session_data *sd) { if (sd && sd->class_&JOBL_BABY && sd->status.mother > 0) // charid2sd returns NULL if not found - return map_charid2sd(sd->status.mother); + return iMap->charid2sd(sd->status.mother); return NULL; } @@ -9079,9 +9079,9 @@ struct map_session_data *pc_get_mother (struct map_session_data *sd) *------------------------------------------*/ struct map_session_data *pc_get_child (struct map_session_data *sd) { - if (sd && pc_ismarried(sd) && sd->status.child > 0) + if (sd && iPc->ismarried(sd) && sd->status.child > 0) // charid2sd returns NULL if not found - return map_charid2sd(sd->status.child); + return iMap->charid2sd(sd->status.child); return NULL; } @@ -9198,19 +9198,19 @@ int pc_autosave(int tid, unsigned int tick, int id, intptr_t data) } mapit->free(iter); - interval = autosave_interval/(map_usercount()+1); - if(interval < minsave_interval) - interval = minsave_interval; - add_timer(gettick()+interval,pc_autosave,0,0); + interval = iMap->autosave_interval/(iMap->usercount()+1); + if(interval < iMap->minsave_interval) + interval = iMap->minsave_interval; + iTimer->add_timer(iTimer->gettick()+interval,pc_autosave,0,0); return 0; } static int pc_daynight_timer_sub(struct map_session_data *sd,va_list ap) { - if (sd->state.night != night_flag && map[sd->bl.m].flag.nightenabled) { //Night/day state does not match. - clif->status_change(&sd->bl, SI_NIGHT, night_flag, 0, 0, 0, 0); //New night effect by dynamix [Skotlex] - sd->state.night = night_flag; + if (sd->state.night != iMap->night_flag && map[sd->bl.m].flag.nightenabled) { //Night/day state does not match. + clif->status_change(&sd->bl, SI_NIGHT, iMap->night_flag, 0, 0, 0, 0); //New night effect by dynamix [Skotlex] + sd->state.night = iMap->night_flag; return 1; } return 0; @@ -9226,11 +9226,11 @@ int map_day_timer(int tid, unsigned int tick, int id, intptr_t data) if (data == 0 && battle_config.day_duration <= 0) // if we want a day return 0; - if (!night_flag) + if (!iMap->night_flag) return 0; //Already day. - night_flag = 0; // 0=day, 1=night [Yor] - map_foreachpc(pc_daynight_timer_sub); + iMap->night_flag = 0; // 0=day, 1=night [Yor] + iMap->map_foreachpc(pc_daynight_timer_sub); strcpy(tmp_soutput, (data == 0) ? msg_txt(502) : msg_txt(60)); // The day has arrived! intif_broadcast(tmp_soutput, strlen(tmp_soutput) + 1, 0); return 0; @@ -9247,11 +9247,11 @@ int map_night_timer(int tid, unsigned int tick, int id, intptr_t data) if (data == 0 && battle_config.night_duration <= 0) // if we want a night return 0; - if (night_flag) + if (iMap->night_flag) return 0; //Already nigth. - night_flag = 1; // 0=day, 1=night [Yor] - map_foreachpc(pc_daynight_timer_sub); + iMap->night_flag = 1; // 0=day, 1=night [Yor] + iMap->map_foreachpc(pc_daynight_timer_sub); strcpy(tmp_soutput, (data == 0) ? msg_txt(503) : msg_txt(59)); // The night has fallen... intif_broadcast(tmp_soutput, strlen(tmp_soutput) + 1, 0); return 0; @@ -9277,7 +9277,7 @@ void pc_overheat(struct map_session_data *sd, int val) { if( !pc_ismadogear(sd) || sd->sc.data[SC_OVERHEAT] ) return; // already burning - skill = cap_value(pc_checkskill(sd,NC_MAINFRAME),0,4); + skill = cap_value(iPc->checkskill(sd,NC_MAINFRAME),0,4); if( sd->sc.data[SC_OVERHEAT_LIMITPOINT] ) { heat += sd->sc.data[SC_OVERHEAT_LIMITPOINT]->val1; status_change_end(&sd->bl,SC_OVERHEAT_LIMITPOINT,INVALID_TIMER); @@ -9318,7 +9318,7 @@ static int pc_talisman_timer(int tid, unsigned int tick, int id, intptr_t data) struct map_session_data *sd; int i, type; - if( (sd=(struct map_session_data *)map_id2sd(id)) == NULL || sd->bl.type!=BL_PC ) + if( (sd=(struct map_session_data *)iMap->id2sd(id)) == NULL || sd->bl.type!=BL_PC ) return 1; ARR_FIND(1, 5, type, sd->talisman[type] > 0); @@ -9361,15 +9361,15 @@ int pc_add_talisman(struct map_session_data *sd,int interval,int max,int type) if( sd->talisman[type] && sd->talisman[type] >= max ) { if(sd->talisman_timer[type][0] != INVALID_TIMER) - delete_timer(sd->talisman_timer[type][0],pc_talisman_timer); + iTimer->delete_timer(sd->talisman_timer[type][0],pc_talisman_timer); sd->talisman[type]--; if( sd->talisman[type] != 0 ) memmove(sd->talisman_timer[type]+0, sd->talisman_timer[type]+1, (sd->talisman[type])*sizeof(int)); sd->talisman_timer[type][sd->talisman[type]] = INVALID_TIMER; } - tid = add_timer(gettick()+interval, pc_talisman_timer, sd->bl.id, 0); - ARR_FIND(0, sd->talisman[type], i, sd->talisman_timer[type][i] == INVALID_TIMER || DIFF_TICK(get_timer(tid)->tick, get_timer(sd->talisman_timer[type][i])->tick) < 0); + tid = iTimer->add_timer(iTimer->gettick()+interval, pc_talisman_timer, sd->bl.id, 0); + ARR_FIND(0, sd->talisman[type], i, sd->talisman_timer[type][i] == INVALID_TIMER || DIFF_TICK(iTimer->get_timer(tid)->tick,iTimer->get_timer(sd->talisman_timer[type][i])->tick) < 0); if( i != sd->talisman[type] ) memmove(sd->talisman_timer[type]+i+1, sd->talisman_timer[type]+i, (sd->talisman[type]-i)*sizeof(int)); sd->talisman_timer[type][i] = tid; @@ -9400,7 +9400,7 @@ int pc_del_talisman(struct map_session_data *sd,int count,int type) for(i = 0; i < count; i++) { if(sd->talisman_timer[type][i] != INVALID_TIMER) { - delete_timer(sd->talisman_timer[type][i],pc_talisman_timer); + iTimer->delete_timer(sd->talisman_timer[type][i],pc_talisman_timer); sd->talisman_timer[type][i] = INVALID_TIMER; } } @@ -9531,7 +9531,7 @@ static bool pc_readdb_skilltree(char* fields[], int columns, int current) ShowWarning("pc_readdb_skilltree: Invalid job class %d specified.\n", class_); return false; } - idx = pc_class2idx(class_); + idx = iPc->class2idx(class_); //This is to avoid adding two lines for the same skill. [Skotlex] ARR_FIND( 0, MAX_SKILL_TREE, skill_idx, skill_tree[idx][skill_idx].id == 0 || skill_tree[idx][skill_idx].id == skill_id ); @@ -9601,7 +9601,7 @@ int pc_readdb(void) memset(exp_table,0,sizeof(exp_table)); memset(max_level,0,sizeof(max_level)); - sprintf(line, "%s/"DBPATH"exp.txt", db_path); + sprintf(line, "%s/"DBPATH"exp.txt", iMap->db_path); fp=fopen(line, "r"); if(fp==NULL){ @@ -9638,7 +9638,7 @@ int pc_readdb(void) maxlv = MAX_LEVEL; } count++; - job = jobs[0] = pc_class2idx(job_id); + job = jobs[0] = iPc->class2idx(job_id); //We send one less and then one more because the last entry in the exp array should hold 0. max_level[job][type] = pc_split_atoui(split[3], exp_table[job][type],',',maxlv-1)+1; //Reverse check in case the array has a bunch of trailing zeros... [Skotlex] @@ -9663,7 +9663,7 @@ int pc_readdb(void) ShowError("pc_readdb: Invalid job ID %d.\n", job_id); continue; } - job = pc_class2idx(job_id); + job = iPc->class2idx(job_id); memcpy(exp_table[job][type], exp_table[jobs[0]][type], sizeof(exp_table[0][0])); max_level[job][type] = maxlv; // ShowDebug("%s - Class %d: %u\n", type?"Job":"Base", job_id, max_level[job][type]); @@ -9674,20 +9674,20 @@ int pc_readdb(void) if (!pcdb_checkid(i)) continue; if (i == JOB_WEDDING || i == JOB_XMAS || i == JOB_SUMMER) continue; //Classes that do not need exp tables. - j = pc_class2idx(i); + j = iPc->class2idx(i); if (!max_level[j][0]) - ShowWarning("Class %s (%d) does not has a base exp table.\n", job_name(i), i); + ShowWarning("Class %s (%d) does not has a base exp table.\n", iPc->job_name(i), i); if (!max_level[j][1]) - ShowWarning("Class %s (%d) does not has a job exp table.\n", job_name(i), i); + ShowWarning("Class %s (%d) does not has a job exp table.\n", iPc->job_name(i), i); } - ShowStatus("Done reading '"CL_WHITE"%lu"CL_RESET"' entries in '"CL_WHITE"%s/"DBPATH"%s"CL_RESET"'.\n",count,db_path,"exp.txt"); + ShowStatus("Done reading '"CL_WHITE"%lu"CL_RESET"' entries in '"CL_WHITE"%s/"DBPATH"%s"CL_RESET"'.\n",count,iMap->db_path,"exp.txt"); count = 0; // Reset and read skilltree memset(skill_tree,0,sizeof(skill_tree)); - sv->readdb(db_path, DBPATH"skill_tree.txt", ',', 3+MAX_PC_SKILL_REQUIRE*2, 4+MAX_PC_SKILL_REQUIRE*2, -1, &pc_readdb_skilltree); + sv->readdb(iMap->db_path, DBPATH"skill_tree.txt", ',', 3+MAX_PC_SKILL_REQUIRE*2, 4+MAX_PC_SKILL_REQUIRE*2, -1, &pc_readdb_skilltree); #if defined(RENEWAL_DROP) || defined(RENEWAL_EXP) - sv->readdb(db_path, "re/level_penalty.txt", ',', 4, 4, -1, &pc_readdb_levelpenalty); + sv->readdb(iMap->db_path, "re/level_penalty.txt", ',', 4, 4, -1, &pc_readdb_levelpenalty); for( k=1; k < 3; k++ ){ // fill in the blanks for( j = 0; j < RC_MAX; j++ ){ int tmp = 0; @@ -9709,7 +9709,7 @@ int pc_readdb(void) for(k=0;k<ELE_MAX;k++) attr_fix_table[i][j][k]=100; - sprintf(line, "%s/"DBPATH"attr_fix.txt", db_path); + sprintf(line, "%s/"DBPATH"attr_fix.txt", iMap->db_path); fp=fopen(line,"r"); if(fp==NULL){ @@ -9753,13 +9753,13 @@ int pc_readdb(void) } } fclose(fp); - ShowStatus("Done reading '"CL_WHITE"%lu"CL_RESET"' entries in '"CL_WHITE"%s/"DBPATH"%s"CL_RESET"'.\n",count,db_path,"attr_fix.txt"); + ShowStatus("Done reading '"CL_WHITE"%lu"CL_RESET"' entries in '"CL_WHITE"%s/"DBPATH"%s"CL_RESET"'.\n",count,iMap->db_path,"attr_fix.txt"); count = 0; // reset then read statspoint memset(statp,0,sizeof(statp)); i=1; - sprintf(line, "%s/"DBPATH"statpoint.txt", db_path); + sprintf(line, "%s/"DBPATH"statpoint.txt", iMap->db_path); fp=fopen(line,"r"); if(fp == NULL){ ShowWarning("Can't read '"CL_WHITE"%s"CL_RESET"'... Generating DB.\n",line); @@ -9780,14 +9780,14 @@ int pc_readdb(void) } fclose(fp); - ShowStatus("Done reading '"CL_WHITE"%lu"CL_RESET"' entries in '"CL_WHITE"%s/"DBPATH"%s"CL_RESET"'.\n",count,db_path,"statpoint.txt"); + ShowStatus("Done reading '"CL_WHITE"%lu"CL_RESET"' entries in '"CL_WHITE"%s/"DBPATH"%s"CL_RESET"'.\n",count,iMap->db_path,"statpoint.txt"); } // generate the remaining parts of the db if necessary k = battle_config.use_statpoint_table; //save setting - battle_config.use_statpoint_table = 0; //temporarily disable to force pc_gets_status_point use default values + battle_config.use_statpoint_table = 0; //temporarily disable to force iPc->gets_status_point use default values statp[0] = 45; // seed value for (; i <= MAX_LEVEL; i++) - statp[i] = statp[i-1] + pc_gets_status_point(i-1); + statp[i] = statp[i-1] + iPc->gets_status_point(i-1); battle_config.use_statpoint_table = k; //restore setting return 0; @@ -9803,7 +9803,7 @@ void pc_itemcd_do(struct map_session_data *sd, bool load) { return; } for(i = 0; i < MAX_ITEMDELAYS; i++) { - if( cd->nameid[i] && DIFF_TICK(gettick(),cd->tick[i]) < 0 ) { + if( cd->nameid[i] && DIFF_TICK(iTimer->gettick(),cd->tick[i]) < 0 ) { sd->item_delay[cursor].tick = cd->tick[i]; sd->item_delay[cursor].nameid = cd->nameid[i]; cursor++; @@ -9817,7 +9817,7 @@ void pc_itemcd_do(struct map_session_data *sd, bool load) { idb_put( itemcd_db, sd->status.char_id, cd ); } for(i = 0; i < MAX_ITEMDELAYS; i++) { - if( sd->item_delay[i].nameid && DIFF_TICK(gettick(),sd->item_delay[i].tick) < 0 ) { + if( sd->item_delay[i].nameid && DIFF_TICK(iTimer->gettick(),sd->item_delay[i].tick) < 0 ) { cd->tick[cursor] = sd->item_delay[i].tick; cd->nameid[cursor] = sd->item_delay[i].nameid; cursor++; @@ -9826,6 +9826,7 @@ void pc_itemcd_do(struct map_session_data *sd, bool load) { } return; } + /*========================================== * pc Init/Terminate *------------------------------------------*/ @@ -9843,32 +9844,32 @@ int do_init_pc(void) { itemcd_db = idb_alloc(DB_OPT_RELEASE_DATA); - pc_readdb(); + iPc->readdb(); - add_timer_func_list(pc_invincible_timer, "pc_invincible_timer"); - add_timer_func_list(pc_eventtimer, "pc_eventtimer"); - add_timer_func_list(pc_inventory_rental_end, "pc_inventory_rental_end"); - add_timer_func_list(pc_calc_pvprank_timer, "pc_calc_pvprank_timer"); - add_timer_func_list(pc_autosave, "pc_autosave"); - add_timer_func_list(pc_spiritball_timer, "pc_spiritball_timer"); - add_timer_func_list(pc_follow_timer, "pc_follow_timer"); - add_timer_func_list(pc_endautobonus, "pc_endautobonus"); - add_timer_func_list(pc_talisman_timer, "pc_talisman_timer"); + iTimer->add_timer_func_list(pc_invincible_timer, "pc_invincible_timer"); + iTimer->add_timer_func_list(pc_eventtimer, "pc_eventtimer"); + iTimer->add_timer_func_list(pc_inventory_rental_end, "pc_inventory_rental_end"); + iTimer->add_timer_func_list(iPc->calc_pvprank_timer, "iPc->calc_pvprank_timer"); + iTimer->add_timer_func_list(pc_autosave, "pc_autosave"); + iTimer->add_timer_func_list(pc_spiritball_timer, "pc_spiritball_timer"); + iTimer->add_timer_func_list(pc_follow_timer, "pc_follow_timer"); + iTimer->add_timer_func_list(iPc->endautobonus, "iPc->endautobonus"); + iTimer->add_timer_func_list(pc_talisman_timer, "pc_talisman_timer"); - add_timer(gettick() + autosave_interval, pc_autosave, 0, 0); + iTimer->add_timer(iTimer->gettick() + iMap->autosave_interval, pc_autosave, 0, 0); // 0=day, 1=night [Yor] - night_flag = battle_config.night_at_start ? 1 : 0; + iMap->night_flag = battle_config.night_at_start ? 1 : 0; if (battle_config.day_duration > 0 && battle_config.night_duration > 0) { int day_duration = battle_config.day_duration; int night_duration = battle_config.night_duration; // add night/day timer [Yor] - add_timer_func_list(map_day_timer, "map_day_timer"); - add_timer_func_list(map_night_timer, "map_night_timer"); + iTimer->add_timer_func_list(iPc->map_day_timer, "iPc->map_day_timer"); + iTimer->add_timer_func_list(iPc->map_night_timer, "iPc->map_night_timer"); - day_timer_tid = add_timer_interval(gettick() + (night_flag ? 0 : day_duration) + night_duration, map_day_timer, 0, 0, day_duration + night_duration); - night_timer_tid = add_timer_interval(gettick() + day_duration + (night_flag ? night_duration : 0), map_night_timer, 0, 0, day_duration + night_duration); + iPc->day_timer_tid = iTimer->add_timer_interval(iTimer->gettick() + (iMap->night_flag ? 0 : day_duration) + night_duration, iPc->map_day_timer, 0, 0, day_duration + night_duration); + iPc->night_timer_tid = iTimer->add_timer_interval(iTimer->gettick() + day_duration + (iMap->night_flag ? night_duration : 0), iPc->map_night_timer, 0, 0, day_duration + night_duration); } do_init_pc_groups(); @@ -9877,3 +9878,218 @@ int do_init_pc(void) { return 0; } + +/*===================================== +* Default Functions : pc.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +void pc_defaults(void) { + iPc = &iPc_s; + + /* vars */ + // timer for night.day + iPc->day_timer_tid = day_timer_tid; + iPc->night_timer_tid = night_timer_tid; + + /* funcs */ + + iPc->class2idx = pc_class2idx; + iPc->get_group_level = pc_get_group_level; + iPc->can_give_items = pc_can_give_items; + + iPc->can_use_command = pc_can_use_command; + + iPc->setrestartvalue = pc_setrestartvalue; + iPc->makesavestatus = pc_makesavestatus; + iPc->respawn = pc_respawn; + iPc->setnewpc = pc_setnewpc; + iPc->authok = pc_authok; + iPc->authfail = pc_authfail; + iPc->reg_received = pc_reg_received; + + iPc->isequip = pc_isequip; + iPc->equippoint = pc_equippoint; + iPc->setinventorydata = pc_setinventorydata; + + iPc->checkskill = pc_checkskill; + iPc->checkskill2 = pc_checkskill2; + iPc->checkallowskill = pc_checkallowskill; + iPc->checkequip = pc_checkequip; + + iPc->calc_skilltree = pc_calc_skilltree; + iPc->calc_skilltree_normalize_job = pc_calc_skilltree_normalize_job; + iPc->clean_skilltree = pc_clean_skilltree; + + iPc->setpos = pc_setpos; + iPc->setsavepoint = pc_setsavepoint; + iPc->randomwarp = pc_randomwarp; + iPc->memo = pc_memo; + + iPc->checkadditem = pc_checkadditem; + iPc->inventoryblank = pc_inventoryblank; + iPc->search_inventory = pc_search_inventory; + iPc->payzeny = pc_payzeny; + iPc->additem = pc_additem; + iPc->getzeny = pc_getzeny; + iPc->delitem = pc_delitem; + // Special Shop System + iPc->paycash = pc_paycash; + iPc->getcash = pc_getcash; + + iPc->cart_additem = pc_cart_additem; + iPc->cart_delitem = pc_cart_delitem; + iPc->putitemtocart = pc_putitemtocart; + iPc->getitemfromcart = pc_getitemfromcart; + iPc->cartitem_amount = pc_cartitem_amount; + + iPc->takeitem = pc_takeitem; + iPc->dropitem = pc_dropitem; + + iPc->isequipped = pc_isequipped; + iPc->can_Adopt = pc_can_Adopt; + iPc->adoption = pc_adoption; + + iPc->updateweightstatus = pc_updateweightstatus; + + iPc->addautobonus = pc_addautobonus; + iPc->exeautobonus = pc_exeautobonus; + iPc->endautobonus = pc_endautobonus; + iPc->delautobonus = pc_delautobonus; + + iPc->bonus = pc_bonus; + iPc->bonus2 = pc_bonus2; + iPc->bonus3 = pc_bonus3; + iPc->bonus4 = pc_bonus4; + iPc->bonus5 = pc_bonus5; + iPc->skill = pc_skill; + + iPc->insert_card = pc_insert_card; + + iPc->steal_item = pc_steal_item; + iPc->steal_coin = pc_steal_coin; + + iPc->modifybuyvalue = pc_modifybuyvalue; + iPc->modifysellvalue = pc_modifysellvalue; + + iPc->follow = pc_follow; // [MouseJstr] + iPc->stop_following = pc_stop_following; + + iPc->maxbaselv = pc_maxbaselv; + iPc->maxjoblv = pc_maxjoblv; + iPc->checkbaselevelup = pc_checkbaselevelup; + iPc->checkjoblevelup = pc_checkjoblevelup; + iPc->gainexp = pc_gainexp; + iPc->nextbaseexp = pc_nextbaseexp; + iPc->thisbaseexp = pc_thisbaseexp; + iPc->nextjobexp = pc_nextjobexp; + iPc->thisjobexp = pc_thisjobexp; + iPc->gets_status_point = pc_gets_status_point; + iPc->need_status_point = pc_need_status_point; + iPc->statusup = pc_statusup; + iPc->statusup2 = pc_statusup2; + iPc->skillup = pc_skillup; + iPc->allskillup = pc_allskillup; + iPc->resetlvl = pc_resetlvl; + iPc->resetstate = pc_resetstate; + iPc->resetskill = pc_resetskill; + iPc->resetfeel = pc_resetfeel; + iPc->resethate = pc_resethate; + iPc->equipitem = pc_equipitem; + iPc->unequipitem = pc_unequipitem; + iPc->checkitem = pc_checkitem; + iPc->useitem = pc_useitem; + + iPc->skillatk_bonus = pc_skillatk_bonus; + iPc->skillheal_bonus = pc_skillheal_bonus; + iPc->skillheal2_bonus = pc_skillheal2_bonus; + + iPc->damage = pc_damage; + iPc->dead = pc_dead; + iPc->revive = pc_revive; + iPc->heal = pc_heal; + iPc->itemheal = pc_itemheal; + iPc->percentheal = pc_percentheal; + iPc->jobchange = pc_jobchange; + iPc->setoption = pc_setoption; + iPc->setcart = pc_setcart; + iPc->setfalcon = pc_setfalcon; + iPc->setriding = pc_setriding; + iPc->setmadogear = pc_setmadogear; + iPc->changelook = pc_changelook; + iPc->equiplookall = pc_equiplookall; + + iPc->readparam = pc_readparam; + iPc->setparam = pc_setparam; + iPc->readreg = pc_readreg; + iPc->setreg = pc_setreg; + iPc->readregstr = pc_readregstr; + iPc->setregstr = pc_setregstr; + iPc->readregistry = pc_readregistry; + iPc->setregistry = pc_setregistry; + iPc->readregistry_str = pc_readregistry_str; + iPc->setregistry_str = pc_setregistry_str; + + iPc->addeventtimer = pc_addeventtimer; + iPc->deleventtimer = pc_deleventtimer; + iPc->cleareventtimer = pc_cleareventtimer; + iPc->addeventtimercount = pc_addeventtimercount; + + iPc->calc_pvprank = pc_calc_pvprank; + iPc->calc_pvprank_timer = pc_calc_pvprank_timer; + + iPc->ismarried = pc_ismarried; + iPc->marriage = pc_marriage; + iPc->divorce = pc_divorce; + iPc->get_partner = pc_get_partner; + iPc->get_father = pc_get_father; + iPc->get_mother = pc_get_mother; + iPc->get_child = pc_get_child; + + iPc->bleeding = pc_bleeding; + iPc->regen = pc_regen; + + iPc->setstand = pc_setstand; + iPc->candrop = pc_candrop; + + iPc->jobid2mapid = pc_jobid2mapid; // Skotlex + iPc->mapid2jobid = pc_mapid2jobid; // Skotlex + + iPc->job_name = job_name; + + iPc->setinvincibletimer = pc_setinvincibletimer; + iPc->delinvincibletimer = pc_delinvincibletimer; + + iPc->addspiritball = pc_addspiritball; + iPc->delspiritball = pc_delspiritball; + iPc->addfame = pc_addfame; + iPc->famerank = pc_famerank; + iPc->set_hate_mob = pc_set_hate_mob; + + iPc->readdb = pc_readdb; + iPc->do_init_pc = do_init_pc; + iPc->do_final_pc = do_final_pc; + iPc->map_day_timer = map_day_timer; // by [yor] + iPc->map_night_timer = map_night_timer; // by [yor] + // Rental System + iPc->inventory_rentals = pc_inventory_rentals; + iPc->inventory_rental_clear = pc_inventory_rental_clear; + iPc->inventory_rental_add = pc_inventory_rental_add; + + iPc->disguise = pc_disguise; + iPc->isautolooting = pc_isautolooting; + + iPc->overheat = pc_overheat; + + iPc->banding = pc_banding; + + iPc->itemcd_do = pc_itemcd_do; + + iPc->load_combo = pc_load_combo; + + iPc->add_talisman = pc_add_talisman; + iPc->del_talisman = pc_del_talisman; + + iPc->baselevelchanged = pc_baselevelchanged; + iPc->level_penalty_mod = pc_level_penalty_mod; +} diff --git a/src/map/pc.h b/src/map/pc.h index 5d7386575..91f7750b3 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -1,10 +1,8 @@ // Copyright (c) Hercules Dev Team, licensed under GNU GPL. // See the LICENSE file // Portions Copyright (c) Athena Dev Teams - #ifndef _PC_H_ #define _PC_H_ - #include "../common/mmo.h" // JOB_*, MAX_FAME_LIST, struct fame_list, struct mmo_charstatus #include "../common/ers.h" #include "../common/timer.h" // INVALID_TIMER @@ -22,11 +20,9 @@ #include "mob.h" #include "log.h" #include "pc_groups.h" - #define MAX_PC_BONUS 10 #define MAX_PC_SKILL_REQUIRE 5 #define MAX_PC_FEELHATE 3 - //Equip indexes constants. (eg: sd->equip_index[EQI_AMMO] returns the index //where the arrows are equipped) enum equip_index { @@ -47,7 +43,6 @@ enum equip_index { EQI_AMMO, EQI_MAX }; - struct weapon_data { int atkmods[3]; // all the variables except atkmods get zero'ed in each call of status_calc_pc @@ -63,46 +58,38 @@ struct weapon_data { int addrace[RC_MAX]; int addrace2[RC2_MAX]; int addsize[3]; - struct drain_data { short rate; short per; short value; unsigned type:1; } hp_drain[RC_MAX], sp_drain[RC_MAX]; - struct { short class_, rate; } add_dmg[MAX_PC_BONUS]; - struct { short flag, rate; unsigned char ele; } addele2[MAX_PC_BONUS]; }; - struct s_autospell { short id, lv, rate, card_id, flag; bool lock; // bAutoSpellOnSkill: blocks autospell from triggering again, while being executed }; - struct s_addeffect { enum sc_type id; short rate, arrow_rate; unsigned char flag; }; - struct s_addeffectonskill { enum sc_type id; short rate, skill; unsigned char target; }; - struct s_add_drop { short id, group; int race, rate; }; - struct s_autobonus { short rate,atk_type; unsigned int duration; @@ -110,13 +97,11 @@ struct s_autobonus { int active; unsigned short pos; }; - enum npc_timeout_type { NPCT_INPUT = 0, NPCT_MENU = 1, NPCT_WAIT = 2, }; - struct map_session_data { struct block_list bl; struct unit_data ud; @@ -196,7 +181,6 @@ struct map_session_data { struct mmo_charstatus status; struct registry save_reg; - struct item_data* inventory_data[MAX_INVENTORY]; // direct pointers to itemdb entries (faster than doing item_id lookups) short equip_index[EQI_MAX]; unsigned int weight,max_weight; @@ -214,21 +198,16 @@ struct map_session_data { int npc_timer_id; //For player attached npc timers. [Skotlex] unsigned int chatID; time_t idletime; - struct{ int npc_id; unsigned int timeout; } progressbar; //Progress Bar [Inkfish] - struct{ char name[NAME_LENGTH]; } ignore[MAX_IGNORE_LIST]; - int followtimer; // [MouseJstr] int followtarget; - time_t emotionlasttime; // to limit flood with emotion packets - short skillitem,skillitemlv; uint16 skill_id_old,skill_lv_old; uint16 skill_id_dance,skill_lv_dance; @@ -236,7 +215,6 @@ struct map_session_data { unsigned char blockskill[MAX_SKILL]; int cloneskill_id, reproduceskill_id; int menuskill_id, menuskill_val, menuskill_val2; - int invincible_timer; unsigned int canlog_tick; unsigned int canuseitem_tick; // [Skotlex] @@ -247,17 +225,13 @@ struct map_session_data { unsigned int cansendmail_tick; // [Mail System Flood Protection] unsigned int ks_floodprotect_tick; // [Kill Steal Protection] unsigned int bloodylust_tick; // bloodylust player timer [out/in re full-heal protection] - struct { short nameid; unsigned int tick; } item_delay[MAX_ITEMDELAYS]; // [Paradox924X] - short weapontype1,weapontype2; short disguise; // [Valaris] - struct weapon_data right_weapon, left_weapon; - // here start arrays to be globally zeroed at the beginning of status_calc_pc() int param_bonus[6],param_equip[6]; //Stores card/equipment bonuses. int subele[ELE_MAX]; @@ -289,7 +263,6 @@ struct map_session_data { struct s_autospell autospell[15], autospell2[15], autospell3[15]; struct s_addeffect addeff[MAX_PC_BONUS], addeff2[MAX_PC_BONUS]; struct s_addeffectonskill addeff3[MAX_PC_BONUS]; - struct { //skillatk raises bonus dmg% of skills, skillheal increases heal%, skillblown increases bonus blewcount for some skills. unsigned short id; short val; @@ -339,7 +312,6 @@ struct map_session_data { int itemhealrate2; // [Epoque] Increase heal rate of all healing items. int shieldmdef;//royal guard's unsigned int setitem_hash, setitem_hash2; //Split in 2 because shift operations only work on int ranges. [Skotlex] - short splash_range, splash_add_range; short add_steal_rate; short add_heal_rate, add_heal2_rate; @@ -354,24 +326,18 @@ struct map_session_data { int ematk; // matk bonus from equipment // int eatk; // atk bonus from equipment } bonus; - // zeroed vars end here. - int castrate,delayrate,hprate,sprate,dsprate; int hprecov_rate,sprecov_rate; int matk_rate; int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate; - int itemid; short itemindex; //Used item's index in sd->inventory [Skotlex] - short catch_target_class; // pet catching, stores a pet class to catch (short now) [zzo] - short spiritball, spiritball_old; int spirit_timer[MAX_SPIRITBALL]; short talisman[ELE_POISON+1]; // There are actually 5 talisman Fire, Ice, Wind, Earth & Poison maybe because its color violet. int talisman_timer[ELE_POISON+1][10]; - unsigned char potion_success_counter; //Potion successes in row counter unsigned char mission_count; //Stores the bounty kill count for TK_MISSION short mission_mobid; //Stores the target mob_id for TK_MISSION @@ -379,10 +345,8 @@ struct map_session_data { int devotion[5]; //Stores the account IDs of chars devoted to. int reg_num; //Number of registries (type numeric) int regstr_num; //Number of registries (type string) - struct script_reg *reg; struct script_regstr *regstr; - int trade_partner; struct { struct { @@ -390,7 +354,6 @@ struct map_session_data { } item[10]; int zeny, weight; } deal; - bool party_creating; // whether the char is requesting party creation bool party_joining; // whether the char is accepting party invitation int party_invite, party_invite_account; // for handling party invitation (holds party id and account id) @@ -401,16 +364,13 @@ struct map_session_data { short guild_x,guild_y; // For guildmate position display. [Skotlex] should be short [zzo] int guildspy; // [Syrus22] int partyspy; // [Syrus22] - unsigned int vended_id; unsigned int vender_id; int vend_num; char message[MESSAGE_SIZE]; struct s_vending vending[MAX_VENDING]; - unsigned int buyer_id; // uid of open buying store struct s_buyingstore buyingstore; - struct s_search_store_info searchstore; struct pet_data *pd; @@ -718,189 +678,54 @@ enum equip_pos { ) #endif -int pc_class2idx(int class_); -int pc_get_group_level(struct map_session_data *sd); #define pc_get_group_id(sd) ( (sd)->group_id ) -int pc_getrefinebonus(int lv,int type); -bool pc_can_give_items(struct map_session_data *sd); -bool pc_can_use_command(struct map_session_data *sd, const char *command); #define pc_has_permission(sd, permission) ( ((sd)->permissions&permission) != 0 ) #define pc_should_log_commands(sd) ( (sd)->group_log_command != false ) -int pc_setrestartvalue(struct map_session_data *sd,int type); -int pc_makesavestatus(struct map_session_data *); -void pc_respawn(struct map_session_data* sd, clr_type clrtype); -int pc_setnewpc(struct map_session_data*,int,int,int,unsigned int,int,int); -bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, struct mmo_charstatus *st, bool changing_mapservers); -void pc_authfail(struct map_session_data *); -int pc_reg_received(struct map_session_data *sd); -int pc_isequip(struct map_session_data *sd,int n); -int pc_equippoint(struct map_session_data *sd,int n); -int pc_setinventorydata(struct map_session_data *sd); -int pc_checkskill(struct map_session_data *sd,uint16 skill_id); -int pc_checkskill2(struct map_session_data *sd,uint16 index); -int pc_checkallowskill(struct map_session_data *sd); -int pc_checkequip(struct map_session_data *sd,int pos); -int pc_calc_skilltree(struct map_session_data *sd); -int pc_calc_skilltree_normalize_job(struct map_session_data *sd); -int pc_clean_skilltree(struct map_session_data *sd); #define pc_checkoverhp(sd) ((sd)->battle_status.hp == (sd)->battle_status.max_hp) #define pc_checkoversp(sd) ((sd)->battle_status.sp == (sd)->battle_status.max_sp) -int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y, clr_type clrtype); -int pc_setsavepoint(struct map_session_data*,short,int,int); -int pc_randomwarp(struct map_session_data *sd,clr_type type); -int pc_memo(struct map_session_data* sd, int pos); - -int pc_checkadditem(struct map_session_data*,int,int); -int pc_inventoryblank(struct map_session_data*); -int pc_search_inventory(struct map_session_data *sd,int item_id); -int pc_payzeny(struct map_session_data*,int, enum e_log_pick_type type, struct map_session_data*); -int pc_additem(struct map_session_data*,struct item*,int,e_log_pick_type); -int pc_getzeny(struct map_session_data*,int, enum e_log_pick_type, struct map_session_data*); -int pc_delitem(struct map_session_data*,int,int,int,short,e_log_pick_type); - -// Special Shop System -int pc_paycash(struct map_session_data *sd, int price, int points); -int pc_getcash(struct map_session_data *sd, int cash, int points); - -int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type); -int pc_cart_delitem(struct map_session_data *sd,int n,int amount,int type,e_log_pick_type log_type); -int pc_putitemtocart(struct map_session_data *sd,int idx,int amount); -int pc_getitemfromcart(struct map_session_data *sd,int idx,int amount); -int pc_cartitem_amount(struct map_session_data *sd,int idx,int amount); - -int pc_takeitem(struct map_session_data*,struct flooritem_data*); -int pc_dropitem(struct map_session_data*,int,int); - -bool pc_isequipped(struct map_session_data *sd, int nameid); -bool pc_can_Adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd ); -bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd); - -int pc_updateweightstatus(struct map_session_data *sd); - -int pc_addautobonus(struct s_autobonus *bonus,char max,const char *script,short rate,unsigned int dur,short atk_type,const char *o_script,unsigned short pos,bool onskill); -int pc_exeautobonus(struct map_session_data* sd,struct s_autobonus *bonus); -int pc_endautobonus(int tid, unsigned int tick, int id, intptr_t data); -int pc_delautobonus(struct map_session_data* sd,struct s_autobonus *bonus,char max,bool restore); - -int pc_bonus(struct map_session_data*,int,int); -int pc_bonus2(struct map_session_data *sd,int,int,int); -int pc_bonus3(struct map_session_data *sd,int,int,int,int); -int pc_bonus4(struct map_session_data *sd,int,int,int,int,int); -int pc_bonus5(struct map_session_data *sd,int,int,int,int,int,int); -int pc_skill(struct map_session_data* sd, int id, int level, int flag); - -int pc_insert_card(struct map_session_data *sd,int idx_card,int idx_equip); - -int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skill_lv); -int pc_steal_coin(struct map_session_data *sd,struct block_list *bl); - -int pc_modifybuyvalue(struct map_session_data*,int); -int pc_modifysellvalue(struct map_session_data*,int); - -int pc_follow(struct map_session_data*, int); // [MouseJstr] -int pc_stop_following(struct map_session_data*); - -unsigned int pc_maxbaselv(struct map_session_data *sd); -unsigned int pc_maxjoblv(struct map_session_data *sd); -int pc_checkbaselevelup(struct map_session_data *sd); -int pc_checkjoblevelup(struct map_session_data *sd); -int pc_gainexp(struct map_session_data*,struct block_list*,unsigned int,unsigned int, bool); -unsigned int pc_nextbaseexp(struct map_session_data *); -unsigned int pc_thisbaseexp(struct map_session_data *); -unsigned int pc_nextjobexp(struct map_session_data *); -unsigned int pc_thisjobexp(struct map_session_data *); -int pc_gets_status_point(int); -int pc_need_status_point(struct map_session_data *,int,int); -int pc_statusup(struct map_session_data*,int); -int pc_statusup2(struct map_session_data*,int,int); -int pc_skillup(struct map_session_data*,uint16 skill_id); -int pc_allskillup(struct map_session_data*); -int pc_resetlvl(struct map_session_data*,int type); -int pc_resetstate(struct map_session_data*); -int pc_resetskill(struct map_session_data*, int); -int pc_resetfeel(struct map_session_data*); -int pc_resethate(struct map_session_data*); -int pc_equipitem(struct map_session_data*,int,int); -int pc_unequipitem(struct map_session_data*,int,int); -int pc_checkitem(struct map_session_data*); -int pc_useitem(struct map_session_data*,int); - -int pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id); -int pc_skillheal_bonus(struct map_session_data *sd, uint16 skill_id); -int pc_skillheal2_bonus(struct map_session_data *sd, uint16 skill_id); - -void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int hp, unsigned int sp); -int pc_dead(struct map_session_data *sd,struct block_list *src); -void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp); -void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int type); -int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp); -int pc_percentheal(struct map_session_data *sd,int,int); -int pc_jobchange(struct map_session_data *,int, int); -int pc_setoption(struct map_session_data *,int); -int pc_setcart(struct map_session_data* sd, int type); -int pc_setfalcon(struct map_session_data* sd, int flag); -int pc_setriding(struct map_session_data* sd, int flag); -int pc_setmadogear(struct map_session_data* sd, int flag); -int pc_changelook(struct map_session_data *,int,int); -int pc_equiplookall(struct map_session_data *sd); - -int pc_readparam(struct map_session_data*,int); -int pc_setparam(struct map_session_data*,int,int); -int pc_readreg(struct map_session_data*,int); -int pc_setreg(struct map_session_data*,int,int); -char *pc_readregstr(struct map_session_data *sd,int reg); -int pc_setregstr(struct map_session_data *sd,int reg,const char *str); - -#define pc_readglobalreg(sd,reg) pc_readregistry(sd,reg,3) -#define pc_setglobalreg(sd,reg,val) pc_setregistry(sd,reg,val,3) -#define pc_readglobalreg_str(sd,reg) pc_readregistry_str(sd,reg,3) -#define pc_setglobalreg_str(sd,reg,val) pc_setregistry_str(sd,reg,val,3) -#define pc_readaccountreg(sd,reg) pc_readregistry(sd,reg,2) -#define pc_setaccountreg(sd,reg,val) pc_setregistry(sd,reg,val,2) -#define pc_readaccountregstr(sd,reg) pc_readregistry_str(sd,reg,2) -#define pc_setaccountregstr(sd,reg,val) pc_setregistry_str(sd,reg,val,2) -#define pc_readaccountreg2(sd,reg) pc_readregistry(sd,reg,1) -#define pc_setaccountreg2(sd,reg,val) pc_setregistry(sd,reg,val,1) -#define pc_readaccountreg2str(sd,reg) pc_readregistry_str(sd,reg,1) -#define pc_setaccountreg2str(sd,reg,val) pc_setregistry_str(sd,reg,val,1) -int pc_readregistry(struct map_session_data*,const char*,int); -int pc_setregistry(struct map_session_data*,const char*,int,int); -char *pc_readregistry_str(struct map_session_data*,const char*,int); -int pc_setregistry_str(struct map_session_data*,const char*,const char*,int); - -int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name); -int pc_deleventtimer(struct map_session_data *sd,const char *name); -int pc_cleareventtimer(struct map_session_data *sd); -int pc_addeventtimercount(struct map_session_data *sd,const char *name,int tick); - -int pc_calc_pvprank(struct map_session_data *sd); -int pc_calc_pvprank_timer(int tid, unsigned int tick, int id, intptr_t data); - -int pc_ismarried(struct map_session_data *sd); -int pc_marriage(struct map_session_data *sd,struct map_session_data *dstsd); -int pc_divorce(struct map_session_data *sd); -struct map_session_data *pc_get_partner(struct map_session_data *sd); -struct map_session_data *pc_get_father(struct map_session_data *sd); -struct map_session_data *pc_get_mother(struct map_session_data *sd); -struct map_session_data *pc_get_child(struct map_session_data *sd); - -void pc_bleeding (struct map_session_data *sd, unsigned int diff_tick); -void pc_regen (struct map_session_data *sd, unsigned int diff_tick); - -void pc_setstand(struct map_session_data *sd); -int pc_candrop(struct map_session_data *sd,struct item *item); - -int pc_jobid2mapid(unsigned short b_class); // Skotlex -int pc_mapid2jobid(unsigned short class_, int sex); // Skotlex - -const char * job_name(int class_); + + + + + + + + + + + + + + + + + +#define pc_readglobalreg(sd,reg) iPc->readregistry(sd,reg,3) +#define pc_setglobalreg(sd,reg,val) iPc->setregistry(sd,reg,val,3) +#define pc_readglobalreg_str(sd,reg) iPc->readregistry_str(sd,reg,3) +#define pc_setglobalreg_str(sd,reg,val) iPc->setregistry_str(sd,reg,val,3) +#define pc_readaccountreg(sd,reg) iPc->readregistry(sd,reg,2) +#define pc_setaccountreg(sd,reg,val) iPc->setregistry(sd,reg,val,2) +#define pc_readaccountregstr(sd,reg) iPc->readregistry_str(sd,reg,2) +#define pc_setaccountregstr(sd,reg,val) iPc->setregistry_str(sd,reg,val,2) +#define pc_readaccountreg2(sd,reg) iPc->readregistry(sd,reg,1) +#define pc_setaccountreg2(sd,reg,val) iPc->setregistry(sd,reg,val,1) +#define pc_readaccountreg2str(sd,reg) iPc->readregistry_str(sd,reg,1) +#define pc_setaccountreg2str(sd,reg,val) iPc->setregistry_str(sd,reg,val,1) + + + + + + + struct skill_tree_entry { short id; @@ -913,6 +738,7 @@ struct skill_tree_entry { unsigned char lv; } need[MAX_PC_SKILL_REQUIRE]; }; // Celest + extern struct skill_tree_entry skill_tree[CLASS_COUNT][MAX_SKILL_TREE]; struct sg_data { @@ -923,55 +749,243 @@ struct sg_data { char hate_var[NAME_LENGTH]; int (*day_func)(void); }; -extern const struct sg_data sg_info[MAX_PC_FEELHATE]; - -void pc_setinvincibletimer(struct map_session_data* sd, int val); -void pc_delinvincibletimer(struct map_session_data* sd); -int pc_addspiritball(struct map_session_data *sd,int,int); -int pc_delspiritball(struct map_session_data *sd,int,int); -void pc_addfame(struct map_session_data *sd,int count); -unsigned char pc_famerank(int char_id, int job); -int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl); +extern const struct sg_data sg_info[MAX_PC_FEELHATE]; extern struct fame_list smith_fame_list[MAX_FAME_LIST]; extern struct fame_list chemist_fame_list[MAX_FAME_LIST]; extern struct fame_list taekwon_fame_list[MAX_FAME_LIST]; -int pc_readdb(void); -int do_init_pc(void); -void do_final_pc(void); - enum {ADDITEM_EXIST,ADDITEM_NEW,ADDITEM_OVERAMOUNT}; -// timer for night.day -extern int day_timer_tid; -extern int night_timer_tid; -int map_day_timer(int tid, unsigned int tick, int id, intptr_t data); // by [yor] -int map_night_timer(int tid, unsigned int tick, int id, intptr_t data); // by [yor] -// Rental System -void pc_inventory_rentals(struct map_session_data *sd); -int pc_inventory_rental_clear(struct map_session_data *sd); -void pc_inventory_rental_add(struct map_session_data *sd, int seconds); -int pc_disguise(struct map_session_data *sd, int class_); -bool pc_isautolooting(struct map_session_data *sd, int nameid); -void pc_overheat(struct map_session_data *sd, int val); -int pc_banding(struct map_session_data *sd, uint16 skill_lv); -void pc_itemcd_do(struct map_session_data *sd, bool load); -int pc_load_combo(struct map_session_data *sd); -int pc_add_talisman(struct map_session_data *sd,int interval,int max,int type); -int pc_del_talisman(struct map_session_data *sd,int count,int type); -void pc_baselevelchanged(struct map_session_data *sd); #if defined(RENEWAL_DROP) || defined(RENEWAL_EXP) -int pc_level_penalty_mod(struct map_session_data *sd, struct mob_data * md, int type); #endif +/*===================================== +* Interface : pc.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +struct pc_interface { + + /* vars */ + // timer for night.day + int day_timer_tid; + int night_timer_tid; + + /* funcs */ + + int (*class2idx) (int class_); + int (*get_group_level) (struct map_session_data *sd); + int (*getrefinebonus) (int lv,int type); + bool (*can_give_items) (struct map_session_data *sd); + + bool (*can_use_command) (struct map_session_data *sd, const char *command); + + int (*setrestartvalue) (struct map_session_data *sd,int type); + int (*makesavestatus) (struct map_session_data *); + void (*respawn) (struct map_session_data* sd, clr_type clrtype); + int (*setnewpc) (struct map_session_data*,int,int,int,unsigned int,int,int); + bool (*authok) (struct map_session_data *sd, int login_id2, time_t expiration_time, int group_id, struct mmo_charstatus *st, bool changing_mapservers); + void (*authfail) (struct map_session_data *); + int (*reg_received) (struct map_session_data *sd); + + int (*isequip) (struct map_session_data *sd,int n); + int (*equippoint) (struct map_session_data *sd,int n); + int (*setinventorydata) (struct map_session_data *sd); + + int (*checkskill) (struct map_session_data *sd,uint16 skill_id); + int (*checkskill2) (struct map_session_data *sd,uint16 index); + int (*checkallowskill) (struct map_session_data *sd); + int (*checkequip) (struct map_session_data *sd,int pos); + + int (*calc_skilltree) (struct map_session_data *sd); + int (*calc_skilltree_normalize_job) (struct map_session_data *sd); + int (*clean_skilltree) (struct map_session_data *sd); + + int (*setpos) (struct map_session_data* sd, unsigned short mapindex, int x, int y, clr_type clrtype); + int (*setsavepoint) (struct map_session_data*,short,int,int); + int (*randomwarp) (struct map_session_data *sd,clr_type type); + int (*memo) (struct map_session_data* sd, int pos); + + int (*checkadditem) (struct map_session_data*,int,int); + int (*inventoryblank) (struct map_session_data*); + int (*search_inventory) (struct map_session_data *sd,int item_id); + int (*payzeny) (struct map_session_data*,int, enum e_log_pick_type type, struct map_session_data*); + int (*additem) (struct map_session_data*,struct item*,int,e_log_pick_type); + int (*getzeny) (struct map_session_data*,int, enum e_log_pick_type, struct map_session_data*); + int (*delitem) (struct map_session_data*,int,int,int,short,e_log_pick_type); + // Special Shop System + int (*paycash) (struct map_session_data *sd, int price, int points); + int (*getcash) (struct map_session_data *sd, int cash, int points); + + int (*cart_additem) (struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type); + int (*cart_delitem) (struct map_session_data *sd,int n,int amount,int type,e_log_pick_type log_type); + int (*putitemtocart) (struct map_session_data *sd,int idx,int amount); + int (*getitemfromcart) (struct map_session_data *sd,int idx,int amount); + int (*cartitem_amount) (struct map_session_data *sd,int idx,int amount); + + int (*takeitem) (struct map_session_data*,struct flooritem_data*); + int (*dropitem) (struct map_session_data*,int,int); + + bool (*isequipped) (struct map_session_data *sd, int nameid); + bool (*can_Adopt) (struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd); + bool (*adoption) (struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd); + + int (*updateweightstatus) (struct map_session_data *sd); + + int (*addautobonus) (struct s_autobonus *bonus,char max,const char *script,short rate,unsigned int dur,short atk_type,const char *o_script,unsigned short pos,bool onskill); + int (*exeautobonus) (struct map_session_data* sd,struct s_autobonus *bonus); + int (*endautobonus) (int tid, unsigned int tick, int id, intptr_t data); + int (*delautobonus) (struct map_session_data* sd,struct s_autobonus *bonus,char max,bool restore); + + int (*bonus) (struct map_session_data*,int,int); + int (*bonus2) (struct map_session_data *sd,int,int,int); + int (*bonus3) (struct map_session_data *sd,int,int,int,int); + int (*bonus4) (struct map_session_data *sd,int,int,int,int,int); + int (*bonus5) (struct map_session_data *sd,int,int,int,int,int,int); + int (*skill) (struct map_session_data* sd, int id, int level, int flag); + + int (*insert_card) (struct map_session_data *sd,int idx_card,int idx_equip); + + int (*steal_item) (struct map_session_data *sd,struct block_list *bl, uint16 skill_lv); + int (*steal_coin) (struct map_session_data *sd,struct block_list *bl); + + int (*modifybuyvalue) (struct map_session_data*,int); + int (*modifysellvalue) (struct map_session_data*,int); + + int (*follow) (struct map_session_data*, int); // [MouseJstr] + int (*stop_following) (struct map_session_data*); + + unsigned int (*maxbaselv) (struct map_session_data *sd); + unsigned int (*maxjoblv) (struct map_session_data *sd); + int (*checkbaselevelup) (struct map_session_data *sd); + int (*checkjoblevelup) (struct map_session_data *sd); + int (*gainexp) (struct map_session_data*,struct block_list*,unsigned int,unsigned int, bool); + unsigned int (*nextbaseexp) (struct map_session_data *); + unsigned int (*thisbaseexp) (struct map_session_data *); + unsigned int (*nextjobexp) (struct map_session_data *); + unsigned int (*thisjobexp) (struct map_session_data *); + int (*gets_status_point) (int); + int (*need_status_point) (struct map_session_data *,int,int); + int (*statusup) (struct map_session_data*,int); + int (*statusup2) (struct map_session_data*,int,int); + int (*skillup) (struct map_session_data*,uint16 skill_id); + int (*allskillup) (struct map_session_data*); + int (*resetlvl) (struct map_session_data*,int type); + int (*resetstate) (struct map_session_data*); + int (*resetskill) (struct map_session_data*, int); + int (*resetfeel) (struct map_session_data*); + int (*resethate) (struct map_session_data*); + int (*equipitem) (struct map_session_data*,int,int); + int (*unequipitem) (struct map_session_data*,int,int); + int (*checkitem) (struct map_session_data*); + int (*useitem) (struct map_session_data*,int); + + int (*skillatk_bonus) (struct map_session_data *sd, uint16 skill_id); + int (*skillheal_bonus) (struct map_session_data *sd, uint16 skill_id); + int (*skillheal2_bonus) (struct map_session_data *sd, uint16 skill_id); + + void (*damage) (struct map_session_data *sd,struct block_list *src,unsigned int hp, unsigned int sp); + int (*dead) (struct map_session_data *sd,struct block_list *src); + void (*revive) (struct map_session_data *sd,unsigned int hp, unsigned int sp); + void (*heal) (struct map_session_data *sd,unsigned int hp,unsigned int sp, int type); + int (*itemheal) (struct map_session_data *sd,int itemid, int hp,int sp); + int (*percentheal) (struct map_session_data *sd,int,int); + int (*jobchange) (struct map_session_data *,int, int); + int (*setoption) (struct map_session_data *,int); + int (*setcart) (struct map_session_data* sd, int type); + int (*setfalcon) (struct map_session_data* sd, int flag); + int (*setriding) (struct map_session_data* sd, int flag); + int (*setmadogear) (struct map_session_data* sd, int flag); + int (*changelook) (struct map_session_data *,int,int); + int (*equiplookall) (struct map_session_data *sd); + + int (*readparam) (struct map_session_data*,int); + int (*setparam) (struct map_session_data*,int,int); + int (*readreg) (struct map_session_data*,int); + int (*setreg) (struct map_session_data*,int,int); + char * (*readregstr) (struct map_session_data *sd,int reg); + int (*setregstr) (struct map_session_data *sd,int reg,const char *str); + int (*readregistry) (struct map_session_data*,const char*,int); + int (*setregistry) (struct map_session_data*,const char*,int,int); + char * (*readregistry_str) (struct map_session_data*,const char*,int); + int (*setregistry_str) (struct map_session_data*,const char*,const char*,int); + + int (*addeventtimer) (struct map_session_data *sd,int tick,const char *name); + int (*deleventtimer) (struct map_session_data *sd,const char *name); + int (*cleareventtimer) (struct map_session_data *sd); + int (*addeventtimercount) (struct map_session_data *sd,const char *name,int tick); + + int (*calc_pvprank) (struct map_session_data *sd); + int (*calc_pvprank_timer) (int tid, unsigned int tick, int id, intptr_t data); + + int (*ismarried) (struct map_session_data *sd); + int (*marriage) (struct map_session_data *sd,struct map_session_data *dstsd); + int (*divorce) (struct map_session_data *sd); + struct map_session_data * (*get_partner) (struct map_session_data *sd); + struct map_session_data * (*get_father) (struct map_session_data *sd); + struct map_session_data * (*get_mother) (struct map_session_data *sd); + struct map_session_data * (*get_child) (struct map_session_data *sd); + + void (*bleeding) (struct map_session_data *sd, unsigned int diff_tick); + void (*regen) (struct map_session_data *sd, unsigned int diff_tick); + + void (*setstand) (struct map_session_data *sd); + int (*candrop) (struct map_session_data *sd,struct item *item); + + int (*jobid2mapid) (unsigned short b_class); // Skotlex + int (*mapid2jobid) (unsigned short class_, int sex); // Skotlex + + const char * (*job_name) (int class_); + + void (*setinvincibletimer) (struct map_session_data* sd, int val); + void (*delinvincibletimer) (struct map_session_data* sd); + + int (*addspiritball) (struct map_session_data *sd,int,int); + int (*delspiritball) (struct map_session_data *sd,int,int); + void (*addfame) (struct map_session_data *sd,int count); + unsigned char (*famerank) (int char_id, int job); + int (*set_hate_mob) (struct map_session_data *sd, int pos, struct block_list *bl); + + int (*readdb) (void); + int (*do_init_pc) (void); + void (*do_final_pc) (void); + int (*map_day_timer) (int tid, unsigned int tick, int id, intptr_t data); // by [yor] + int (*map_night_timer) (int tid, unsigned int tick, int id, intptr_t data); // by [yor] + // Rental System + void (*inventory_rentals) (struct map_session_data *sd); + int (*inventory_rental_clear) (struct map_session_data *sd); + void (*inventory_rental_add) (struct map_session_data *sd, int seconds); + + int (*disguise) (struct map_session_data *sd, int class_); + bool (*isautolooting) (struct map_session_data *sd, int nameid); + + void (*overheat) (struct map_session_data *sd, int val); + + int (*banding) (struct map_session_data *sd, uint16 skill_lv); + + void (*itemcd_do) (struct map_session_data *sd, bool load); + + int (*load_combo) (struct map_session_data *sd); + + int (*add_talisman) (struct map_session_data *sd,int interval,int max,int type); + int (*del_talisman) (struct map_session_data *sd,int count,int type); + + void (*baselevelchanged) (struct map_session_data *sd); + int (*level_penalty_mod) (struct map_session_data *sd, struct mob_data * md, int type); +} iPc_s; + +struct pc_interface *iPc; + +void pc_defaults(void); + #endif /* _PC_H_ */ diff --git a/src/map/pet.c b/src/map/pet.c index c85092a01..fa5188e79 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -76,7 +76,7 @@ int pet_create_egg(struct map_session_data *sd, int item_id) { int pet_id = search_petDB_index(item_id, PET_EGG); if (pet_id < 0) return 0; //No pet egg here. - if (!pc_inventoryblank(sd)) return 0; // Inventory full + if (!iPc->inventoryblank(sd)) return 0; // Inventory full sd->catch_target_class = pet_db[pet_id].class_; intif_create_pet(sd->status.account_id, sd->status.char_id, (short)pet_db[pet_id].class_, @@ -106,7 +106,7 @@ int pet_attackskill(struct pet_data *pd, int target_id) (battle_config.pet_equip_required && !pd->pet.equip)) return 0; - if (DIFF_TICK(pd->ud.canact_tick, gettick()) > 0) + if (DIFF_TICK(pd->ud.canact_tick, iTimer->gettick()) > 0) return 0; if (rnd()%100 < (pd->a_skill->rate +pd->pet.intimate*pd->a_skill->bonusrate/1000)) @@ -114,7 +114,7 @@ int pet_attackskill(struct pet_data *pd, int target_id) int inf; struct block_list *bl; - bl=map_id2bl(target_id); + bl=iMap->id2bl(target_id); if(bl == NULL || pd->bl.m != bl->m || bl->prev == NULL || status_isdead(bl) || !check_distance_bl(&pd->bl, bl, pd->db->range3)) return 0; @@ -187,7 +187,7 @@ int pet_sc_check(struct map_session_data *sd, int type) || pd->recovery->type != type ) return 1; - pd->recovery->timer = add_timer(gettick()+pd->recovery->delay*1000,pet_recovery_timer,sd->bl.id,0); + pd->recovery->timer = iTimer->add_timer(iTimer->gettick()+pd->recovery->delay*1000,pet_recovery_timer,sd->bl.id,0); return 0; } @@ -198,7 +198,7 @@ static int pet_hungry(int tid, unsigned int tick, int id, intptr_t data) struct pet_data *pd; int interval; - sd=map_id2sd(id); + sd=iMap->id2sd(id); if(!sd) return 1; @@ -237,7 +237,7 @@ static int pet_hungry(int tid, unsigned int tick, int id, intptr_t data) interval = pd->petDB->hungry_delay; if(interval <= 0) interval = 1; - pd->pet_hungry_timer = add_timer(tick+interval,pet_hungry,sd->bl.id,0); + pd->pet_hungry_timer = iTimer->add_timer(tick+interval,pet_hungry,sd->bl.id,0); return 0; } @@ -267,7 +267,7 @@ int pet_hungry_timer_delete(struct pet_data *pd) { nullpo_ret(pd); if(pd->pet_hungry_timer != INVALID_TIMER) { - delete_timer(pd->pet_hungry_timer,pet_hungry); + iTimer->delete_timer(pd->pet_hungry_timer,pet_hungry); pd->pet_hungry_timer = INVALID_TIMER; } @@ -304,9 +304,9 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd) tmp_item.card[1] = GetWord(pd->pet.pet_id,0); tmp_item.card[2] = GetWord(pd->pet.pet_id,1); tmp_item.card[3] = pd->pet.rename_flag; - if((flag = pc_additem(sd,&tmp_item,1,LOG_TYPE_OTHER))) { + if((flag = iPc->additem(sd,&tmp_item,1,LOG_TYPE_OTHER))) { clif->additem(sd,0,0,flag); - map_addflooritem(&tmp_item,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&tmp_item,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } pd->pet.incuvate = 1; unit_free(&pd->bl,CLR_OUTSIGHT); @@ -366,10 +366,10 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *pet) pd->bl.x = pd->ud.to_x; pd->bl.y = pd->ud.to_y; - map_addiddb(&pd->bl); + iMap->addiddb(&pd->bl); status_calc_pet(pd,1); - pd->last_thinktime = gettick(); + pd->last_thinktime = iTimer->gettick(); pd->state.skillbonus = 0; if( battle_config.pet_status_support ) run_script(pet_db[i].pet_script,0,sd->bl.id,0); @@ -382,7 +382,7 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *pet) interval = pd->petDB->hungry_delay; if( interval <= 0 ) interval = 1; - pd->pet_hungry_timer = add_timer(gettick() + interval, pet_hungry, sd->bl.id, 0); + pd->pet_hungry_timer = iTimer->add_timer(iTimer->gettick() + interval, pet_hungry, sd->bl.id, 0); return 0; } @@ -407,11 +407,11 @@ int pet_birth_process(struct map_session_data *sd, struct s_pet *pet) } intif_save_petdata(sd->status.account_id,pet); - if (save_settings&8) + if (iMap->save_settings&8) chrif_save(sd,0); //is it REALLY Needed to save the char for hatching a pet? [Skotlex] if(sd->bl.prev != NULL) { - map_addblock(&sd->pd->bl); + iMap->addblock(&sd->pd->bl); clif->spawn(&sd->pd->bl); clif->send_petdata(sd,sd->pd, 0,0); clif->send_petdata(sd,sd->pd, 5,battle_config.pet_hair_style); @@ -427,7 +427,7 @@ int pet_recv_petdata(int account_id,struct s_pet *p,int flag) { struct map_session_data *sd; - sd = map_id2sd(account_id); + sd = iMap->id2sd(account_id); if(sd == NULL) return 1; if(flag == 1) { @@ -448,11 +448,11 @@ int pet_recv_petdata(int account_id,struct s_pet *p,int flag) return 1; } if (!pet_birth_process(sd,p)) //Pet hatched. Delete egg. - pc_delitem(sd,i,1,0,0,LOG_TYPE_OTHER); + iPc->delitem(sd,i,1,0,0,LOG_TYPE_OTHER); } else { pet_data_init(sd,p); if(sd->pd && sd->bl.prev != NULL) { - map_addblock(&sd->pd->bl); + iMap->addblock(&sd->pd->bl); clif->spawn(&sd->pd->bl); clif->send_petdata(sd,sd->pd,0,0); clif->send_petdata(sd,sd->pd,5,battle_config.pet_hair_style); @@ -496,7 +496,7 @@ int pet_catch_process2(struct map_session_data* sd, int target_id) nullpo_retr(1, sd); - md = (struct mob_data*)map_id2bl(target_id); + md = (struct mob_data*)iMap->id2bl(target_id); if(!md || md->bl.type != BL_MOB || md->bl.prev == NULL) { // Invalid inputs/state, abort capture. clif->pet_roulette(sd,0); @@ -550,7 +550,7 @@ int pet_get_egg(int account_id,int pet_id,int flag) if(flag) return 0; - sd = map_id2sd(account_id); + sd = iMap->id2sd(account_id); if(sd == NULL) return 0; @@ -569,9 +569,9 @@ int pet_get_egg(int account_id,int pet_id,int flag) tmp_item.card[1] = GetWord(pet_id,0); tmp_item.card[2] = GetWord(pet_id,1); tmp_item.card[3] = 0; //New pets are not named. - if((ret = pc_additem(sd,&tmp_item,1,LOG_TYPE_PICKDROP_PLAYER))) { + if((ret = iPc->additem(sd,&tmp_item,1,LOG_TYPE_PICKDROP_PLAYER))) { clif->additem(sd,0,0,ret); - map_addflooritem(&tmp_item,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&tmp_item,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } return 1; @@ -594,7 +594,7 @@ int pet_menu(struct map_session_data *sd,int menunum) egg_id = itemdb_exists(sd->pd->petDB->EggID); if (egg_id) { - if ((egg_id->flag.trade_restriction&0x01) && !pc_inventoryblank(sd)) { + if ((egg_id->flag.trade_restriction&0x01) && !iPc->inventoryblank(sd)) { clif->message(sd->fd, msg_txt(451)); // You can't return your pet because your inventory is full. return 1; } @@ -674,22 +674,22 @@ int pet_equipitem(struct map_session_data *sd,int index) return 1; } - pc_delitem(sd,index,1,0,0,LOG_TYPE_OTHER); + iPc->delitem(sd,index,1,0,0,LOG_TYPE_OTHER); pd->pet.equip = nameid; status_set_viewdata(&pd->bl, pd->pet.class_); //Updates view_data. clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom); if (battle_config.pet_equip_required) { //Skotlex: start support timers if need - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); if (pd->s_skill && pd->s_skill->timer == INVALID_TIMER) { if (pd->s_skill->id) - pd->s_skill->timer=add_timer(tick+pd->s_skill->delay*1000, pet_skill_support_timer, sd->bl.id, 0); + pd->s_skill->timer=iTimer->add_timer(tick+pd->s_skill->delay*1000, pet_skill_support_timer, sd->bl.id, 0); else - pd->s_skill->timer=add_timer(tick+pd->s_skill->delay*1000, pet_heal_timer, sd->bl.id, 0); + pd->s_skill->timer=iTimer->add_timer(tick+pd->s_skill->delay*1000, pet_heal_timer, sd->bl.id, 0); } if (pd->bonus && pd->bonus->timer == INVALID_TIMER) - pd->bonus->timer=add_timer(tick+pd->bonus->delay*1000, pet_skill_bonus_timer, sd->bl.id, 0); + pd->bonus->timer=iTimer->add_timer(tick+pd->bonus->delay*1000, pet_skill_bonus_timer, sd->bl.id, 0); } return 0; @@ -710,9 +710,9 @@ static int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) memset(&tmp_item,0,sizeof(tmp_item)); tmp_item.nameid = nameid; tmp_item.identify = 1; - if((flag = pc_additem(sd,&tmp_item,1,LOG_TYPE_OTHER))) { + if((flag = iPc->additem(sd,&tmp_item,1,LOG_TYPE_OTHER))) { clif->additem(sd,0,0,flag); - map_addflooritem(&tmp_item,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&tmp_item,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } if( battle_config.pet_equip_required ) { // Skotlex: halt support timers if needed @@ -724,14 +724,14 @@ static int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) if( pd->s_skill && pd->s_skill->timer != INVALID_TIMER ) { if( pd->s_skill->id ) - delete_timer(pd->s_skill->timer, pet_skill_support_timer); + iTimer->delete_timer(pd->s_skill->timer, pet_skill_support_timer); else - delete_timer(pd->s_skill->timer, pet_heal_timer); + iTimer->delete_timer(pd->s_skill->timer, pet_heal_timer); pd->s_skill->timer = INVALID_TIMER; } if( pd->bonus && pd->bonus->timer != INVALID_TIMER ) { - delete_timer(pd->bonus->timer, pet_skill_bonus_timer); + iTimer->delete_timer(pd->bonus->timer, pet_skill_bonus_timer); pd->bonus->timer = INVALID_TIMER; } } @@ -744,12 +744,12 @@ static int pet_food(struct map_session_data *sd, struct pet_data *pd) int i,k; k=pd->petDB->FoodID; - i=pc_search_inventory(sd,k); + i=iPc->search_inventory(sd,k); if(i < 0) { clif->pet_food(sd,k,0); return 1; } - pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); + iPc->delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); if( pd->pet.hungry > 90 ) pet_set_intimate(pd, pd->pet.intimate - pd->petDB->r_full); @@ -801,7 +801,7 @@ static int pet_randomwalk(struct pet_data *pd,unsigned int tick) int r=rnd(); x=pd->bl.x+r%(d*2+1)-d; y=pd->bl.y+r/(d*2+1)%(d*2+1)-d; - if(map_getcell(pd->bl.m,x,y,CELL_CHKPASS) && unit_walktoxy(&pd->bl,x,y,0)){ + if(iMap->getcell(pd->bl.m,x,y,CELL_CHKPASS) && unit_walktoxy(&pd->bl,x,y,0)){ pd->move_fail_count=0; break; } @@ -876,7 +876,7 @@ static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, uns } if (pd->target_id) { - target= map_id2bl(pd->target_id); + target= iMap->id2bl(pd->target_id); if (!target || pd->bl.m != target->m || status_isdead(target) || !check_distance_bl(&pd->bl, target, pd->db->range3)) { @@ -887,7 +887,7 @@ static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, uns if(!target && pd->loot && pd->msd && pc_has_permission(pd->msd, PC_PERM_TRADE) && pd->loot->count < pd->loot->max && DIFF_TICK(tick,pd->ud.canact_tick)>0) { //Use half the pet's range of sight. - map_foreachinrange(pet_ai_sub_hard_lootsearch,&pd->bl, + iMap->foreachinrange(pet_ai_sub_hard_lootsearch,&pd->bl, pd->db->range2/2, BL_ITEM,pd,&target); } @@ -931,7 +931,7 @@ static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, uns if(pd->loot->count < pd->loot->max){ memcpy(&pd->loot->item[pd->loot->count++],&fitem->item_data,sizeof(pd->loot->item[0])); pd->loot->weight += itemdb_weight(fitem->item_data.nameid)*fitem->item_data.amount; - map_clearflooritem(target); + iMap->clearflooritem(target); } //Target is unlocked regardless of whether it was picked or not. pet_unlocktarget(pd); @@ -951,7 +951,7 @@ static int pet_ai_sub_foreachclient(struct map_session_data *sd,va_list ap) static int pet_ai_hard(int tid, unsigned int tick, int id, intptr_t data) { - map_foreachpc(pet_ai_sub_foreachclient,tick); + iMap->map_foreachpc(pet_ai_sub_foreachclient,tick); return 0; } @@ -990,7 +990,7 @@ static int pet_delay_item_drop(int tid, unsigned int tick, int id, intptr_t data list=(struct item_drop_list *)data; ditem = list->item; while (ditem) { - map_addflooritem(&ditem->item_data,ditem->item_data.amount, + iMap->addflooritem(&ditem->item_data,ditem->item_data.amount, list->m,list->x,list->y, list->first_charid,list->second_charid,list->third_charid,0); ditem_prev = ditem; @@ -1021,7 +1021,7 @@ int pet_lootitem_drop(struct pet_data *pd,struct map_session_data *sd) for(i=0;i<pd->loot->count;i++) { it = &pd->loot->item[i]; if(sd){ - if((flag = pc_additem(sd,it,it->amount,LOG_TYPE_PICKDROP_PLAYER))){ + if((flag = iPc->additem(sd,it,it->amount,LOG_TYPE_PICKDROP_PLAYER))){ clif->additem(sd,0,0,flag); ditem = ers_alloc(item_drop_ers, struct item_drop); memcpy(&ditem->item_data, it, sizeof(struct item)); @@ -1040,10 +1040,10 @@ int pet_lootitem_drop(struct pet_data *pd,struct map_session_data *sd) memset(pd->loot->item,0,pd->loot->max * sizeof(struct item)); pd->loot->count = 0; pd->loot->weight = 0; - pd->ud.canact_tick = gettick()+10000; //prevent picked up during 10*1000ms + pd->ud.canact_tick = iTimer->gettick()+10000; //prevent picked up during 10*1000ms if (dlist->item) - add_timer(gettick()+540,pet_delay_item_drop,0,(intptr_t)dlist); + iTimer->add_timer(iTimer->gettick()+540,pet_delay_item_drop,0,(intptr_t)dlist); else ers_free(item_drop_list_ers, dlist); return 1; @@ -1054,7 +1054,7 @@ int pet_lootitem_drop(struct pet_data *pd,struct map_session_data *sd) *------------------------------------------*/ int pet_skill_bonus_timer(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd=map_id2sd(id); + struct map_session_data *sd=iMap->id2sd(id); struct pet_data *pd; int bonus; int timer = 0; @@ -1087,7 +1087,7 @@ int pet_skill_bonus_timer(int tid, unsigned int tick, int id, intptr_t data) status_calc_pc(sd, 0); } // wait for the next timer - pd->bonus->timer=add_timer(tick+timer,pet_skill_bonus_timer,sd->bl.id,0); + pd->bonus->timer=iTimer->add_timer(tick+timer,pet_skill_bonus_timer,sd->bl.id,0); return 0; } @@ -1096,7 +1096,7 @@ int pet_skill_bonus_timer(int tid, unsigned int tick, int id, intptr_t data) *------------------------------------------*/ int pet_recovery_timer(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd=map_id2sd(id); + struct map_session_data *sd=iMap->id2sd(id); struct pet_data *pd; if(sd==NULL || sd->pd == NULL || sd->pd->recovery == NULL) @@ -1124,7 +1124,7 @@ int pet_recovery_timer(int tid, unsigned int tick, int id, intptr_t data) int pet_heal_timer(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd=map_id2sd(id); + struct map_session_data *sd=iMap->id2sd(id); struct status_data *status; struct pet_data *pd; unsigned int rate = 100; @@ -1146,14 +1146,14 @@ int pet_heal_timer(int tid, unsigned int tick, int id, intptr_t data) (rate = get_percentage(status->hp, status->max_hp)) > pd->s_skill->hp || (rate = (pd->ud.skilltimer != INVALID_TIMER)) //Another skill is in effect ) { //Wait (how long? 1 sec for every 10% of remaining) - pd->s_skill->timer=add_timer(gettick()+(rate>10?rate:10)*100,pet_heal_timer,sd->bl.id,0); + pd->s_skill->timer=iTimer->add_timer(iTimer->gettick()+(rate>10?rate:10)*100,pet_heal_timer,sd->bl.id,0); return 0; } pet_stop_attack(pd); pet_stop_walking(pd,1); clif->skill_nodamage(&pd->bl,&sd->bl,AL_HEAL,pd->s_skill->lv,1); status_heal(&sd->bl, pd->s_skill->lv,0, 0); - pd->s_skill->timer=add_timer(tick+pd->s_skill->delay*1000,pet_heal_timer,sd->bl.id,0); + pd->s_skill->timer=iTimer->add_timer(tick+pd->s_skill->delay*1000,pet_heal_timer,sd->bl.id,0); return 0; } @@ -1162,7 +1162,7 @@ int pet_heal_timer(int tid, unsigned int tick, int id, intptr_t data) *------------------------------------------*/ int pet_skill_support_timer(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd=map_id2sd(id); + struct map_session_data *sd=iMap->id2sd(id); struct pet_data *pd; struct status_data *status; short rate = 100; @@ -1180,7 +1180,7 @@ int pet_skill_support_timer(int tid, unsigned int tick, int id, intptr_t data) if (DIFF_TICK(pd->ud.canact_tick, tick) > 0) { //Wait until the pet can act again. - pd->s_skill->timer=add_timer(pd->ud.canact_tick,pet_skill_support_timer,sd->bl.id,0); + pd->s_skill->timer=iTimer->add_timer(pd->ud.canact_tick,pet_skill_support_timer,sd->bl.id,0); return 0; } @@ -1189,13 +1189,13 @@ int pet_skill_support_timer(int tid, unsigned int tick, int id, intptr_t data) (rate = get_percentage(status->hp, status->max_hp)) > pd->s_skill->hp || (rate = (pd->ud.skilltimer != INVALID_TIMER)) //Another skill is in effect ) { //Wait (how long? 1 sec for every 10% of remaining) - pd->s_skill->timer=add_timer(tick+(rate>10?rate:10)*100,pet_skill_support_timer,sd->bl.id,0); + pd->s_skill->timer=iTimer->add_timer(tick+(rate>10?rate:10)*100,pet_skill_support_timer,sd->bl.id,0); return 0; } pet_stop_attack(pd); pet_stop_walking(pd,1); - pd->s_skill->timer=add_timer(tick+pd->s_skill->delay*1000,pet_skill_support_timer,sd->bl.id,0); + pd->s_skill->timer=iTimer->add_timer(tick+pd->s_skill->delay*1000,pet_skill_support_timer,sd->bl.id,0); if (skill->get_inf(pd->s_skill->id) & INF_GROUND_SKILL) unit_skilluse_pos(&pd->bl, sd->bl.x, sd->bl.y, pd->s_skill->id, pd->s_skill->lv); else @@ -1238,7 +1238,7 @@ int read_petdb() char line[1024]; int lines, entries; - sprintf(line, "%s/%s", db_path, filename[i]); + sprintf(line, "%s/%s", iMap->db_path, filename[i]); fp=fopen(line,"r"); if( fp == NULL ) { @@ -1363,14 +1363,14 @@ int do_init_pet(void) item_drop_ers = ers_new(sizeof(struct item_drop),"pet.c::item_drop_ers",ERS_OPT_NONE); item_drop_list_ers = ers_new(sizeof(struct item_drop_list),"pet.c::item_drop_list_ers",ERS_OPT_NONE); - add_timer_func_list(pet_hungry,"pet_hungry"); - add_timer_func_list(pet_ai_hard,"pet_ai_hard"); - add_timer_func_list(pet_skill_bonus_timer,"pet_skill_bonus_timer"); // [Valaris] - add_timer_func_list(pet_delay_item_drop,"pet_delay_item_drop"); - add_timer_func_list(pet_skill_support_timer, "pet_skill_support_timer"); // [Skotlex] - add_timer_func_list(pet_recovery_timer,"pet_recovery_timer"); // [Valaris] - add_timer_func_list(pet_heal_timer,"pet_heal_timer"); // [Valaris] - add_timer_interval(gettick()+MIN_PETTHINKTIME,pet_ai_hard,0,0,MIN_PETTHINKTIME); + iTimer->add_timer_func_list(pet_hungry,"pet_hungry"); + iTimer->add_timer_func_list(pet_ai_hard,"pet_ai_hard"); + iTimer->add_timer_func_list(pet_skill_bonus_timer,"pet_skill_bonus_timer"); // [Valaris] + iTimer->add_timer_func_list(pet_delay_item_drop,"pet_delay_item_drop"); + iTimer->add_timer_func_list(pet_skill_support_timer, "pet_skill_support_timer"); // [Skotlex] + iTimer->add_timer_func_list(pet_recovery_timer,"pet_recovery_timer"); // [Valaris] + iTimer->add_timer_func_list(pet_heal_timer,"pet_heal_timer"); // [Valaris] + iTimer->add_timer_interval(iTimer->gettick()+MIN_PETTHINKTIME,pet_ai_hard,0,0,MIN_PETTHINKTIME); return 0; } diff --git a/src/map/quest.c b/src/map/quest.c index 3ef162aaa..b56088886 100644 --- a/src/map/quest.c +++ b/src/map/quest.c @@ -99,7 +99,7 @@ int quest_add(TBL_PC * sd, int quest_id) clif->quest_add(sd, &sd->quest_log[i], sd->quest_index[i]); - if( save_settings&64 ) + if( iMap->save_settings&64 ) chrif_save(sd,0); return 0; @@ -147,7 +147,7 @@ int quest_change(TBL_PC * sd, int qid1, int qid2) clif->quest_delete(sd, qid1); clif->quest_add(sd, &sd->quest_log[i], sd->quest_index[i]); - if( save_settings&64 ) + if( iMap->save_settings&64 ) chrif_save(sd,0); return 0; @@ -178,7 +178,7 @@ int quest_delete(TBL_PC * sd, int quest_id) clif->quest_delete(sd, quest_id); - if( save_settings&64 ) + if( iMap->save_settings&64 ) chrif_save(sd,0); return 0; @@ -249,7 +249,7 @@ int quest_update_status(TBL_PC * sd, int quest_id, quest_state status) { clif->quest_delete(sd, quest_id); - if( save_settings&64 ) + if( iMap->save_settings&64 ) chrif_save(sd,0); return 0; @@ -293,7 +293,7 @@ int quest_read_db(void) { int i,j,k = 0; char *str[20],*p,*np; - sprintf(line, "%s/quest_db.txt", db_path); + sprintf(line, "%s/quest_db.txt", iMap->db_path); if( (fp=fopen(line,"r"))==NULL ){ ShowError("can't read %s\n", line); return -1; @@ -302,7 +302,7 @@ int quest_read_db(void) { while(fgets(line, sizeof(line), fp)) { if (k == MAX_QUEST_DB) { - ShowError("quest_read_db: Too many entries specified in %s/quest_db.txt!\n", db_path); + ShowError("quest_read_db: Too many entries specified in %s/quest_db.txt!\n", iMap->db_path); break; } diff --git a/src/map/script.c b/src/map/script.c index bd7d1a7b5..9569e526d 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -363,7 +363,7 @@ static void script_reportsrc(struct script_state *st) if( st->oid == 0 ) return; //Can't report source. - bl = map_id2bl(st->oid); + bl = iMap->id2bl(st->oid); if( bl == NULL ) return; @@ -2013,7 +2013,7 @@ static void read_constdb(void) char line[1024],name[1024],val[1024]; int type; - sprintf(line, "%s/const.txt", db_path); + sprintf(line, "%s/const.txt", iMap->db_path); fp=fopen(line, "r"); if(fp==NULL){ ShowError("can't read %s\n", line); @@ -2280,7 +2280,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o /// If there is no player attached, the script is terminated. TBL_PC *script_rid2sd(struct script_state *st) { TBL_PC *sd; - if( !( sd = map_id2sd(st->rid) ) ){ + if( !( sd = iMap->id2sd(st->rid) ) ){ ShowError("script_rid2sd: fatal error ! player not attached!\n"); script_reportfunc(st); script_reportsrc(st); @@ -2335,7 +2335,7 @@ void get_val(struct script_state* st, struct script_data* data) switch( prefix ) { case '@': - data->u.str = pc_readregstr(sd, data->u.num); + data->u.str = iPc->readregstr(sd, data->u.num); break; case '$': data->u.str = mapreg_readregstr(data->u.num); @@ -2394,13 +2394,13 @@ void get_val(struct script_state* st, struct script_data* data) } else if( reference_toparam(data) ) { - data->u.num = pc_readparam(sd, reference_getparamtype(data)); + data->u.num = iPc->readparam(sd, reference_getparamtype(data)); } else switch( prefix ) { case '@': - data->u.num = pc_readreg(sd, data->u.num); + data->u.num = iPc->readreg(sd, data->u.num); break; case '$': data->u.num = mapreg_readreg(data->u.num); @@ -2467,7 +2467,7 @@ static int set_reg(struct script_state* st, TBL_PC* sd, int num, const char* nam const char* str = (const char*)value; switch (prefix) { case '@': - return pc_setregstr(sd, num, str); + return iPc->setregstr(sd, num, str); case '$': return mapreg_setregstr(num, str); case '#': @@ -2499,7 +2499,7 @@ static int set_reg(struct script_state* st, TBL_PC* sd, int num, const char* nam int val = (int)__64BPTRSIZE(value); if(str_data[num&0x00ffffff].type == C_PARAM) { - if( pc_setparam(sd, str_data[num&0x00ffffff].val, val) == 0 ) + if( iPc->setparam(sd, str_data[num&0x00ffffff].val, val) == 0 ) { if( st != NULL ) { @@ -2514,7 +2514,7 @@ static int set_reg(struct script_state* st, TBL_PC* sd, int num, const char* nam switch (prefix) { case '@': - return pc_setreg(sd, num, val); + return iPc->setreg(sd, num, val); case '$': return mapreg_setreg(num, val); case '#': @@ -2831,7 +2831,7 @@ void script_free_state(struct script_state* st) ShowDebug("script_free_state: Previous script state lost (rid=%d, oid=%d, state=%d, bk_npcid=%d).\n", st->bk_st->rid, st->bk_st->oid, st->bk_st->state, st->bk_npcid); } if( st->sleep.timer != INVALID_TIMER ) - delete_timer(st->sleep.timer, run_script_timer); + iTimer->delete_timer(st->sleep.timer, run_script_timer); script_free_vars(st->stack->var_function); pop_stack(st, 0, st->stack->sp); aFree(st->stack->stack_data); @@ -3355,7 +3355,7 @@ int run_script_timer(int tid, unsigned int tick, int id, intptr_t data) { struct script_state *st = (struct script_state *)data; struct linkdb_node *node = (struct linkdb_node *)sleep_db; - TBL_PC *sd = map_id2sd(st->rid); + TBL_PC *sd = iMap->id2sd(st->rid); if((sd && sd->status.char_id != id) || (st->rid && !sd)) { //Character mismatch. Cancel execution. @@ -3384,7 +3384,7 @@ static void script_detach_state(struct script_state* st, bool dequeue_event) { struct map_session_data* sd; - if(st->rid && (sd = map_id2sd(st->rid))!=NULL) { + if(st->rid && (sd = iMap->id2sd(st->rid))!=NULL) { sd->st = st->bk_st; sd->npc_id = st->bk_npcid; sd->state.dialog = 0; @@ -3423,7 +3423,7 @@ static void script_attach_state(struct script_state* st) { struct map_session_data* sd; - if(st->rid && (sd = map_id2sd(st->rid))!=NULL) + if(st->rid && (sd = iMap->id2sd(st->rid))!=NULL) { if(st!=sd->st) { @@ -3461,7 +3461,7 @@ void run_script_main(struct script_state *st) script_attach_state(st); - nd = map_id2nd(st->oid); + nd = iMap->id2nd(st->oid); if( nd && nd->bl.m >= 0 ) st->instance_id = map[nd->bl.m].instance_id; else @@ -3566,9 +3566,9 @@ void run_script_main(struct script_state *st) //Restore previous script script_detach_state(st, false); //Delay execution - sd = map_id2sd(st->rid); // Get sd since script might have attached someone while running. [Inkfish] + sd = iMap->id2sd(st->rid); // Get sd since script might have attached someone while running. [Inkfish] st->sleep.charid = sd?sd->status.char_id:0; - st->sleep.timer = add_timer(gettick()+st->sleep.tick, + st->sleep.timer = iTimer->add_timer(iTimer->gettick()+st->sleep.tick, run_script_timer, st->sleep.charid, (intptr_t)st); linkdb_insert(&sleep_db, (void*)__64BPTRSIZE(st->oid), st); } @@ -3587,7 +3587,7 @@ void run_script_main(struct script_state *st) } } else { //Dispose of script. - if ((sd = map_id2sd(st->rid))!=NULL) { //Restore previous stack and save char. + if ((sd = iMap->id2sd(st->rid))!=NULL) { //Restore previous stack and save char. if(sd->state.using_fake_npc){ clif->clearunit_single(sd->npc_id, CLR_OUTSIGHT, sd->fd); sd->state.using_fake_npc = 0; @@ -3659,7 +3659,7 @@ int script_config_read(char *cfgName) */ static int db_script_free_code_sub(DBKey key, DBData *data, va_list ap) { - struct script_code *code = DB->data2ptr(data); + struct script_code *code = iDB->data2ptr(data); if (code) script_free_code(code); return 0; @@ -3706,14 +3706,14 @@ void script_cleararray_pc(struct map_session_data* sd, const char* varname, void { for( idx = 0; idx < SCRIPT_MAX_ARRAYSIZE; idx++ ) { - pc_setregstr(sd, reference_uid(key, idx), (const char*)value); + iPc->setregstr(sd, reference_uid(key, idx), (const char*)value); } } else { for( idx = 0; idx < SCRIPT_MAX_ARRAYSIZE; idx++ ) { - pc_setreg(sd, reference_uid(key, idx), (int)__64BPTRSIZE(value)); + iPc->setreg(sd, reference_uid(key, idx), (int)__64BPTRSIZE(value)); } } } @@ -3741,11 +3741,11 @@ void script_setarray_pc(struct map_session_data* sd, const char* varname, uint8 if( is_string_variable(varname) ) { - pc_setregstr(sd, reference_uid(key, idx), (const char*)value); + iPc->setregstr(sd, reference_uid(key, idx), (const char*)value); } else { - pc_setreg(sd, reference_uid(key, idx), (int)__64BPTRSIZE(value)); + iPc->setreg(sd, reference_uid(key, idx), (int)__64BPTRSIZE(value)); } if( refcache ) @@ -4103,7 +4103,7 @@ BUILDIN(menu) * menus beyond this length crash the client (see bugreport:6402) **/ if( StrBuf->Length(&buf) >= 2047 ) { - struct npc_data * nd = map_id2nd(st->oid); + struct npc_data * nd = iMap->id2nd(st->oid); char* menu; CREATE(menu, char, 2048); safestrncpy(menu, StrBuf->Value(&buf), 2047); @@ -4159,7 +4159,7 @@ BUILDIN(menu) st->state = END; return false; } - pc_setreg(sd, add_str("@menu"), menu); + iPc->setreg(sd, add_str("@menu"), menu); st->pos = script_getnum(st, i + 1); st->state = GOTO; } @@ -4208,7 +4208,7 @@ BUILDIN(select) * menus beyond this length crash the client (see bugreport:6402) **/ if( StrBuf->Length(&buf) >= 2047 ) { - struct npc_data * nd = map_id2nd(st->oid); + struct npc_data * nd = iMap->id2nd(st->oid); char* menu; CREATE(menu, char, 2048); safestrncpy(menu, StrBuf->Value(&buf), 2047); @@ -4236,7 +4236,7 @@ BUILDIN(select) if( sd->npc_menu <= 0 ) break;// entry found } - pc_setreg(sd, add_str("@menu"), menu); + iPc->setreg(sd, add_str("@menu"), menu); script_pushint(st, menu); st->state = RUN; } @@ -4287,7 +4287,7 @@ BUILDIN(prompt) * menus beyond this length crash the client (see bugreport:6402) **/ if( StrBuf->Length(&buf) >= 2047 ) { - struct npc_data * nd = map_id2nd(st->oid); + struct npc_data * nd = iMap->id2nd(st->oid); char* menu; CREATE(menu, char, 2048); safestrncpy(menu, StrBuf->Value(&buf), 2047); @@ -4307,7 +4307,7 @@ BUILDIN(prompt) else if( sd->npc_menu == 0xff ) {// Cancel was pressed sd->state.menu_or_input = 0; - pc_setreg(sd, add_str("@menu"), 0xff); + iPc->setreg(sd, add_str("@menu"), 0xff); script_pushint(st, 0xff); st->state = RUN; } @@ -4323,7 +4323,7 @@ BUILDIN(prompt) if( sd->npc_menu <= 0 ) break;// entry found } - pc_setreg(sd, add_str("@menu"), menu); + iPc->setreg(sd, add_str("@menu"), menu); script_pushint(st, menu); st->state = RUN; } @@ -4569,11 +4569,11 @@ BUILDIN(warp) y = script_getnum(st,4); if(strcmp(str,"Random")==0) - ret = pc_randomwarp(sd,CLR_TELEPORT); + ret = iPc->randomwarp(sd,CLR_TELEPORT); else if(strcmp(str,"SavePoint")==0 || strcmp(str,"Save")==0) - ret = pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); + ret = iPc->setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); else - ret = pc_setpos(sd,mapindex_name2id(str),x,y,CLR_OUTSIGHT); + ret = iPc->setpos(sd,mapindex_name2id(str),x,y,CLR_OUTSIGHT); if( ret ) { ShowError("buildin_warp: moving player '%s' to \"%s\",%d,%d failed.\n", sd->status.name, str, x, y); @@ -4597,7 +4597,7 @@ static int buildin_areawarp_sub(struct block_list *bl,va_list ap) y3 = va_arg(ap,int); if(index == 0) - pc_randomwarp((TBL_PC *)bl,CLR_TELEPORT); + iPc->randomwarp((TBL_PC *)bl,CLR_TELEPORT); else if(x3 && y3) { int max, tx, ty, j = 0; @@ -4610,12 +4610,12 @@ static int buildin_areawarp_sub(struct block_list *bl,va_list ap) tx = rnd()%(x3-x2+1)+x2; ty = rnd()%(y3-y2+1)+y2; j++; - } while( map_getcell(index,tx,ty,CELL_CHKNOPASS) && j < max ); + } while( iMap->getcell(index,tx,ty,CELL_CHKNOPASS) && j < max ); - pc_setpos((TBL_PC *)bl,index,tx,ty,CLR_OUTSIGHT); + iPc->setpos((TBL_PC *)bl,index,tx,ty,CLR_OUTSIGHT); } else - pc_setpos((TBL_PC *)bl,index,x2,y2,CLR_OUTSIGHT); + iPc->setpos((TBL_PC *)bl,index,x2,y2,CLR_OUTSIGHT); return 0; } BUILDIN(areawarp) @@ -4645,7 +4645,7 @@ BUILDIN(areawarp) } } - if( (m = map_mapname2mapid(mapname)) < 0 ) + if( (m = iMap->mapname2mapid(mapname)) < 0 ) return true; if( strcmp(str,"Random") == 0 ) @@ -4653,7 +4653,7 @@ BUILDIN(areawarp) else if( !(index=mapindex_name2id(str)) ) return true; - map_foreachinarea(buildin_areawarp_sub, m,x0,y0,x1,y1, BL_PC, index,x2,y2,x3,y3); + iMap->foreachinarea(buildin_areawarp_sub, m,x0,y0,x1,y1, BL_PC, index,x2,y2,x3,y3); return true; } @@ -4665,7 +4665,7 @@ static int buildin_areapercentheal_sub(struct block_list *bl,va_list ap) int hp, sp; hp = va_arg(ap, int); sp = va_arg(ap, int); - pc_percentheal((TBL_PC *)bl,hp,sp); + iPc->percentheal((TBL_PC *)bl,hp,sp); return 0; } BUILDIN(areapercentheal) @@ -4682,10 +4682,10 @@ BUILDIN(areapercentheal) hp=script_getnum(st,7); sp=script_getnum(st,8); - if( (m=map_mapname2mapid(mapname))< 0) + if( (m=iMap->mapname2mapid(mapname))< 0) return true; - map_foreachinarea(buildin_areapercentheal_sub,m,x0,y0,x1,y1,BL_PC,hp,sp); + iMap->foreachinarea(buildin_areapercentheal_sub,m,x0,y0,x1,y1,BL_PC,hp,sp); return true; } @@ -4706,17 +4706,17 @@ BUILDIN(warpchar) y=script_getnum(st,4); a=script_getnum(st,5); - sd = map_charid2sd(a); + sd = iMap->charid2sd(a); if( sd == NULL ) return true; if(strcmp(str, "Random") == 0) - pc_randomwarp(sd, CLR_TELEPORT); + iPc->randomwarp(sd, CLR_TELEPORT); else if(strcmp(str, "SavePoint") == 0) - pc_setpos(sd, sd->status.save_point.map,sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT); + iPc->setpos(sd, sd->status.save_point.map,sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT); else - pc_setpos(sd, mapindex_name2id(str), x, y, CLR_TELEPORT); + iPc->setpos(sd, mapindex_name2id(str), x, y, CLR_TELEPORT); return true; } @@ -4742,7 +4742,7 @@ BUILDIN(warpparty) if ( script_hasdata(st,6) ) str2 = script_getstr(st,6); - p = party_search(p_id); + p = iParty->search(p_id); if(!p) return true; @@ -4790,20 +4790,20 @@ BUILDIN(warpparty) { case 0: // Random if(!map[pl_sd->bl.m].flag.nowarp) - pc_randomwarp(pl_sd,CLR_TELEPORT); + iPc->randomwarp(pl_sd,CLR_TELEPORT); break; case 1: // SavePointAll if(!map[pl_sd->bl.m].flag.noreturn) - pc_setpos(pl_sd,pl_sd->status.save_point.map,pl_sd->status.save_point.x,pl_sd->status.save_point.y,CLR_TELEPORT); + iPc->setpos(pl_sd,pl_sd->status.save_point.map,pl_sd->status.save_point.x,pl_sd->status.save_point.y,CLR_TELEPORT); break; case 2: // SavePoint if(!map[pl_sd->bl.m].flag.noreturn) - pc_setpos(pl_sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); + iPc->setpos(pl_sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); break; case 3: // Leader case 4: // m,x,y if(!map[pl_sd->bl.m].flag.noreturn && !map[pl_sd->bl.m].flag.nowarp) - pc_setpos(pl_sd,mapindex,x,y,CLR_TELEPORT); + iPc->setpos(pl_sd,mapindex,x,y,CLR_TELEPORT); break; } } @@ -4851,19 +4851,19 @@ BUILDIN(warpguild) { case 0: // Random if(!map[pl_sd->bl.m].flag.nowarp) - pc_randomwarp(pl_sd,CLR_TELEPORT); + iPc->randomwarp(pl_sd,CLR_TELEPORT); break; case 1: // SavePointAll if(!map[pl_sd->bl.m].flag.noreturn) - pc_setpos(pl_sd,pl_sd->status.save_point.map,pl_sd->status.save_point.x,pl_sd->status.save_point.y,CLR_TELEPORT); + iPc->setpos(pl_sd,pl_sd->status.save_point.map,pl_sd->status.save_point.x,pl_sd->status.save_point.y,CLR_TELEPORT); break; case 2: // SavePoint if(!map[pl_sd->bl.m].flag.noreturn) - pc_setpos(pl_sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); + iPc->setpos(pl_sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); break; case 3: // m,x,y if(!map[pl_sd->bl.m].flag.noreturn && !map[pl_sd->bl.m].flag.nowarp) - pc_setpos(pl_sd,mapindex_name2id(str),x,y,CLR_TELEPORT); + iPc->setpos(pl_sd,mapindex_name2id(str),x,y,CLR_TELEPORT); break; } } @@ -4906,7 +4906,7 @@ BUILDIN(itemheal) sd = script_rid2sd(st); if (!sd) return true; - pc_itemheal(sd,sd->itemid,hp,sp); + iPc->itemheal(sd,sd->itemid,hp,sp); return true; } /*========================================== @@ -4933,7 +4933,7 @@ BUILDIN(percentheal) if( sd->sc.data[SC_EXTREMITYFIST2] ) sp = 0; #endif - pc_percentheal(sd,hp,sp); + iPc->percentheal(sd,hp,sp); return true; } @@ -4956,7 +4956,7 @@ BUILDIN(jobchange) if( sd == NULL ) return true; - pc_jobchange(sd, job, upper); + iPc->jobchange(sd, job, upper); } return true; @@ -4968,7 +4968,7 @@ BUILDIN(jobchange) BUILDIN(jobname) { int class_=script_getnum(st,2); - script_pushconststr(st, (char*)job_name(class_)); + script_pushconststr(st, (char*)iPc->job_name(class_)); return true; } @@ -5530,7 +5530,7 @@ BUILDIN(setlook) if( sd == NULL ) return true; - pc_changelook(sd,type,val); + iPc->changelook(sd,type,val); return true; } @@ -5719,7 +5719,7 @@ BUILDIN(checkweight) script_pushint(st,0); return false; } - slots = pc_inventoryblank(sd); //nb of empty slot + slots = iPc->inventoryblank(sd); //nb of empty slot for(i=2; i<nbargs; i=i+2){ data = script_getdata(st,i); @@ -5750,7 +5750,7 @@ BUILDIN(checkweight) return true; } - switch( pc_checkadditem(sd, nameid, amount) ) + switch( iPc->checkadditem(sd, nameid, amount) ) { case ADDITEM_EXIST: // item is already in inventory, but there is still space for the requested amount @@ -5833,7 +5833,7 @@ BUILDIN(checkweight2) fail = 1; } - slots = pc_inventoryblank(sd); + slots = iPc->inventoryblank(sd); for(i=0; i<nb_it; i++){ nameid = (int32)__64BPTRSIZE(get_val2(st,reference_uid(id_it,idx_it+i),reference_getref(data_it))); script_removetop(st, -1, 0); @@ -5856,7 +5856,7 @@ BUILDIN(checkweight2) fail = 1; continue; } - switch( pc_checkadditem(sd, nameid, amount) ) { + switch( iPc->checkadditem(sd, nameid, amount) ) { case ADDITEM_EXIST: // item is already in inventory, but there is still space for the requested amount break; @@ -5932,7 +5932,7 @@ BUILDIN(getitem) it.identify=itemdb_isidentified2(item_data); if( script_hasdata(st,4) ) - sd=map_id2sd(script_getnum(st,4)); // <Account ID> + sd=iMap->id2sd(script_getnum(st,4)); // <Account ID> else sd=script_rid2sd(st); // Attached player @@ -5950,11 +5950,11 @@ BUILDIN(getitem) // if not pet egg if (!pet_create_egg(sd, nameid)) { - if ((flag = pc_additem(sd, &it, get_count, LOG_TYPE_SCRIPT))) + if ((flag = iPc->additem(sd, &it, get_count, LOG_TYPE_SCRIPT))) { clif->additem(sd, 0, 0, flag); - if( pc_candrop(sd,&it) ) - map_addflooritem(&it,get_count,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + if( iPc->candrop(sd,&it) ) + iMap->addflooritem(&it,get_count,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } } @@ -5975,7 +5975,7 @@ BUILDIN(getitem2) struct script_data *data; if( script_hasdata(st,11) ) - sd=map_id2sd(script_getnum(st,11)); // <Account ID> + sd=iMap->id2sd(script_getnum(st,11)); // <Account ID> else sd=script_rid2sd(st); // Attached player @@ -6048,11 +6048,11 @@ BUILDIN(getitem2) // if not pet egg if (!pet_create_egg(sd, nameid)) { - if ((flag = pc_additem(sd, &item_tmp, get_count, LOG_TYPE_SCRIPT))) + if ((flag = iPc->additem(sd, &item_tmp, get_count, LOG_TYPE_SCRIPT))) { clif->additem(sd, 0, 0, flag); - if( pc_candrop(sd,&item_tmp) ) - map_addflooritem(&item_tmp,get_count,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + if( iPc->candrop(sd,&item_tmp) ) + iMap->addflooritem(&item_tmp,get_count,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } } @@ -6111,7 +6111,7 @@ BUILDIN(rentitem) it.identify = 1; it.expire_time = (unsigned int)(time(NULL) + seconds); - if( (flag = pc_additem(sd, &it, 1, LOG_TYPE_SCRIPT)) ) + if( (flag = iPc->additem(sd, &it, 1, LOG_TYPE_SCRIPT)) ) { clif->additem(sd, 0, 0, flag); return false; @@ -6163,9 +6163,9 @@ BUILDIN(getnameditem) data=script_getdata(st,3); get_val(st,data); if( data_isstring(data) ) //Char Name - tsd=map_nick2sd(script->conv_str(st,data)); + tsd=iMap->nick2sd(script->conv_str(st,data)); else //Char Id was given - tsd=map_charid2sd(script->conv_num(st,data)); + tsd=iMap->charid2sd(script->conv_num(st,data)); if( tsd == NULL ) { //Failed @@ -6180,7 +6180,7 @@ BUILDIN(getnameditem) item_tmp.card[0]=CARD0_CREATE; //we don't use 255! because for example SIGNED WEAPON shouldn't get TOP10 BS Fame bonus [Lupus] item_tmp.card[2]=tsd->status.char_id; item_tmp.card[3]=tsd->status.char_id >> 16; - if(pc_additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT)) { + if(iPc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT)) { script_pushint(st,0); return true; //Failed to add item, we will not drop if they don't fit } @@ -6241,7 +6241,7 @@ BUILDIN(makeitem) if (!sd) return true; //Failed... m=sd->bl.m; } else - m=map_mapname2mapid(mapname); + m=iMap->mapname2mapid(mapname); memset(&item_tmp,0,sizeof(item_tmp)); item_tmp.nameid=nameid; @@ -6250,7 +6250,7 @@ BUILDIN(makeitem) else item_tmp.identify=itemdb_isidentified2(item_data); - map_addflooritem(&item_tmp,amount,m,x,y,0,0,0,0); + iMap->addflooritem(&item_tmp,amount,m,x,y,0,0,0,0); return true; } @@ -6272,7 +6272,7 @@ static void buildin_delitem_delete(struct map_session_data* sd, int idx, int* am {// delete associated pet intif_delete_petdata(MakeDWord(inv->card[1], inv->card[2])); } - pc_delitem(sd, idx, delamount, 0, 0, LOG_TYPE_SCRIPT); + iPc->delitem(sd, idx, delamount, 0, 0, LOG_TYPE_SCRIPT); } amount[0]-= delamount; @@ -6411,7 +6411,7 @@ BUILDIN(delitem) if( script_hasdata(st,4) ) { int account_id = script_getnum(st,4); - sd = map_id2sd(account_id); // <account id> + sd = iMap->id2sd(account_id); // <account id> if( sd == NULL ) { ShowError("script:delitem: player not found (AID=%d).\n", account_id); @@ -6480,7 +6480,7 @@ BUILDIN(delitem2) if( script_hasdata(st,11) ) { int account_id = script_getnum(st,11); - sd = map_id2sd(account_id); // <account id> + sd = iMap->id2sd(account_id); // <account id> if( sd == NULL ) { ShowError("script:delitem2: player not found (AID=%d).\n", account_id); @@ -6566,7 +6566,7 @@ BUILDIN(disableitemuse) /*========================================== * return the basic stats of sd - * chk pc_readparam for available type + * chk iPc->readparam for available type *------------------------------------------*/ BUILDIN(readparam) { @@ -6575,7 +6575,7 @@ BUILDIN(readparam) type=script_getnum(st,2); if( script_hasdata(st,3) ) - sd=map_nick2sd(script_getstr(st,3)); + sd=iMap->nick2sd(script_getstr(st,3)); else sd=script_rid2sd(st); @@ -6584,7 +6584,7 @@ BUILDIN(readparam) return true; } - script_pushint(st,pc_readparam(sd,type)); + script_pushint(st,iPc->readparam(sd,type)); return true; } @@ -6605,7 +6605,7 @@ BUILDIN(getcharid) num = script_getnum(st,2); if( script_hasdata(st,3) ) - sd=map_nick2sd(script_getstr(st,3)); + sd=iMap->nick2sd(script_getstr(st,3)); else sd=script_rid2sd(st); @@ -6670,7 +6670,7 @@ BUILDIN(getpartyname) party_id = script_getnum(st,2); - if( ( p = party_search(party_id) ) != NULL ) + if( ( p = iParty->search(party_id) ) != NULL ) { script_pushstrcopy(st,p->party.name); } @@ -6694,7 +6694,7 @@ BUILDIN(getpartymember) struct party_data *p; int i,j=0,type=0; - p=party_search(script_getnum(st,2)); + p=iParty->search(script_getnum(st,2)); if( script_hasdata(st,3) ) type=script_getnum(st,3); @@ -6734,7 +6734,7 @@ BUILDIN(getpartyleader) if( script_hasdata(st,3) ) type=script_getnum(st,3); - p=party_search(party_id); + p=iParty->search(party_id); if (p) //Search leader for(i = 0; i < MAX_PARTY && !p->party.member[i].leader; i++); @@ -6847,7 +6847,7 @@ BUILDIN(strcharinfo) script_pushstrcopy(st,sd->status.name); break; case 1: - if( ( p = party_search(sd->status.party_id) ) != NULL ) { + if( ( p = iParty->search(sd->status.party_id) ) != NULL ) { script_pushstrcopy(st,p->party.name); } else { script_pushconststr(st,""); @@ -6887,7 +6887,7 @@ BUILDIN(strnpcinfo) int num; char *buf,*name=NULL; - nd = map_id2nd(st->oid); + nd = iMap->id2nd(st->oid); if (!nd) { script_pushconststr(st, ""); return true; @@ -6951,7 +6951,7 @@ BUILDIN(getequipid) } // get inventory position of item - i = pc_checkequip(sd,equip[num]); + i = iPc->checkequip(sd,equip[num]); if( i < 0 ) { script_pushint(st,-1); @@ -6989,7 +6989,7 @@ BUILDIN(getequipname) } // get inventory position of item - i = pc_checkequip(sd,equip[num]); + i = iPc->checkequip(sd,equip[num]); if( i < 0 ) { script_pushconststr(st,""); @@ -7108,7 +7108,7 @@ BUILDIN(getequipisequiped) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0) script_pushint(st,1); @@ -7135,7 +7135,7 @@ BUILDIN(getequipisenableref) return true; if( num > 0 && num <= ARRAYLENGTH(equip) ) - i = pc_checkequip(sd,equip[num-1]); + i = iPc->checkequip(sd,equip[num-1]); if( i >= 0 && sd->inventory_data[i] && !sd->inventory_data[i]->flag.no_refine && !sd->status.inventory[i].expire_time ) script_pushint(st,1); else @@ -7161,7 +7161,7 @@ BUILDIN(getequipisidentify) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0) script_pushint(st,sd->status.inventory[i].identify); else @@ -7187,7 +7187,7 @@ BUILDIN(getequiprefinerycnt) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0) script_pushint(st,sd->status.inventory[i].refine); else @@ -7214,7 +7214,7 @@ BUILDIN(getequipweaponlv) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0 && sd->inventory_data[i]) script_pushint(st,sd->inventory_data[i]->wlv); else @@ -7240,7 +7240,7 @@ BUILDIN(getequippercentrefinery) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0 && sd->status.inventory[i].nameid && sd->status.inventory[i].refine < MAX_REFINE) script_pushint(st,status_get_refine_chance(itemdb_wlv(sd->status.inventory[i].nameid), (int)sd->status.inventory[i].refine)); else @@ -7263,7 +7263,7 @@ BUILDIN(successrefitem) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0) { ep=sd->status.inventory[i].equip; @@ -7271,7 +7271,7 @@ BUILDIN(successrefitem) logs->pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->status.inventory[i],sd->inventory_data[i]); sd->status.inventory[i].refine++; - pc_unequipitem(sd,i,2); // status calc will happen in pc_equipitem() below + iPc->unequipitem(sd,i,2); // status calc will happen in iPc->equipitem() below clif->refine(sd->fd,0,i,sd->status.inventory[i].refine); clif->delitem(sd,i,1,3); @@ -7280,7 +7280,7 @@ BUILDIN(successrefitem) logs->pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[i],sd->inventory_data[i]); clif->additem(sd,i,1,0); - pc_equipitem(sd,i,ep); + iPc->equipitem(sd,i,ep); clif->misceffect(&sd->bl,3); if(sd->status.inventory[i].refine == 10 && sd->status.inventory[i].card[0] == CARD0_FORGE && @@ -7288,13 +7288,13 @@ BUILDIN(successrefitem) ){ // Fame point system [DracoRPG] switch (sd->inventory_data[i]->wlv){ case 1: - pc_addfame(sd,1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point + iPc->addfame(sd,1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point break; case 2: - pc_addfame(sd,25); // Success to refine to +10 a lv2 weapon you forged = +25 fame point + iPc->addfame(sd,25); // Success to refine to +10 a lv2 weapon you forged = +25 fame point break; case 3: - pc_addfame(sd,1000); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point + iPc->addfame(sd,1000); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point break; } } @@ -7317,13 +7317,13 @@ BUILDIN(failedrefitem) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0) { sd->status.inventory[i].refine = 0; - pc_unequipitem(sd,i,3); //recalculate bonus + iPc->unequipitem(sd,i,3); //recalculate bonus clif->refine(sd->fd,1,i,sd->status.inventory[i].refine); //notify client of failure - pc_delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); + iPc->delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); clif->misceffect(&sd->bl,2); // display failure effect } @@ -7345,7 +7345,7 @@ BUILDIN(downrefitem) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i = pc_checkequip(sd,equip[num-1]); + i = iPc->checkequip(sd,equip[num-1]); if(i >= 0) { ep = sd->status.inventory[i].equip; @@ -7353,7 +7353,7 @@ BUILDIN(downrefitem) logs->pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->status.inventory[i],sd->inventory_data[i]); sd->status.inventory[i].refine++; - pc_unequipitem(sd,i,2); // status calc will happen in pc_equipitem() below + iPc->unequipitem(sd,i,2); // status calc will happen in iPc->equipitem() below clif->refine(sd->fd,2,i,sd->status.inventory[i].refine = sd->status.inventory[i].refine - 2); clif->delitem(sd,i,1,3); @@ -7362,7 +7362,7 @@ BUILDIN(downrefitem) logs->pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[i],sd->inventory_data[i]); clif->additem(sd,i,1,0); - pc_equipitem(sd,i,ep); + iPc->equipitem(sd,i,ep); clif->misceffect(&sd->bl,2); } @@ -7383,10 +7383,10 @@ BUILDIN(delequip) return true; if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0) { - pc_unequipitem(sd,i,3); //recalculate bonus - pc_delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); + iPc->unequipitem(sd,i,3); //recalculate bonus + iPc->delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); } return true; @@ -7405,7 +7405,7 @@ BUILDIN(statusup) if( sd == NULL ) return true; - pc_statusup(sd,type); + iPc->statusup(sd,type); return true; } @@ -7423,7 +7423,7 @@ BUILDIN(statusup2) if( sd == NULL ) return true; - pc_statusup2(sd,type,val); + iPc->statusup2(sd,type,val); return true; } @@ -7477,16 +7477,16 @@ BUILDIN(bonus) switch( script_lastdata(st)-2 ) { case 1: - pc_bonus(sd, type, val1); + iPc->bonus(sd, type, val1); break; case 2: val2 = script_getnum(st,4); - pc_bonus2(sd, type, val1, val2); + iPc->bonus2(sd, type, val1, val2); break; case 3: val2 = script_getnum(st,4); val3 = script_getnum(st,5); - pc_bonus3(sd, type, val1, val2, val3); + iPc->bonus3(sd, type, val1, val2, val3); break; case 4: if( type == SP_AUTOSPELL_ONSKILL && script_isstring(st,4) ) @@ -7496,7 +7496,7 @@ BUILDIN(bonus) val3 = script_getnum(st,5); val4 = script_getnum(st,6); - pc_bonus4(sd, type, val1, val2, val3, val4); + iPc->bonus4(sd, type, val1, val2, val3, val4); break; case 5: if( type == SP_AUTOSPELL_ONSKILL && script_isstring(st,4) ) @@ -7507,7 +7507,7 @@ BUILDIN(bonus) val3 = script_getnum(st,5); val4 = script_getnum(st,6); val5 = script_getnum(st,7); - pc_bonus5(sd, type, val1, val2, val3, val4, val5); + iPc->bonus5(sd, type, val1, val2, val3, val4, val5); break; default: ShowDebug("buildin_bonus: unexpected number of arguments (%d)\n", (script_lastdata(st) - 1)); @@ -7543,7 +7543,7 @@ BUILDIN(autobonus) if( script_hasdata(st,6) ) other_script = script_getstr(st,6); - if( pc_addautobonus(sd->autobonus,ARRAYLENGTH(sd->autobonus), + if( iPc->addautobonus(sd->autobonus,ARRAYLENGTH(sd->autobonus), bonus_script,rate,dur,atk_type,other_script,sd->status.inventory[current_equip_item_index].equip,false) ) { script_add_autobonus(bonus_script); @@ -7580,7 +7580,7 @@ BUILDIN(autobonus2) if( script_hasdata(st,6) ) other_script = script_getstr(st,6); - if( pc_addautobonus(sd->autobonus2,ARRAYLENGTH(sd->autobonus2), + if( iPc->addautobonus(sd->autobonus2,ARRAYLENGTH(sd->autobonus2), bonus_script,rate,dur,atk_type,other_script,sd->status.inventory[current_equip_item_index].equip,false) ) { script_add_autobonus(bonus_script); @@ -7615,7 +7615,7 @@ BUILDIN(autobonus3) if( script_hasdata(st,6) ) other_script = script_getstr(st,6); - if( pc_addautobonus(sd->autobonus3,ARRAYLENGTH(sd->autobonus3), + if( iPc->addautobonus(sd->autobonus3,ARRAYLENGTH(sd->autobonus3), bonus_script,rate,dur,atk_type,other_script,sd->status.inventory[current_equip_item_index].equip,true) ) { script_add_autobonus(bonus_script); @@ -7651,7 +7651,7 @@ BUILDIN(skill) level = script_getnum(st,3); if( script_hasdata(st,4) ) flag = script_getnum(st,4); - pc_skill(sd, id, level, flag); + iPc->skill(sd, id, level, flag); return true; } @@ -7680,7 +7680,7 @@ BUILDIN(addtoskill) level = script_getnum(st,3); if( script_hasdata(st,4) ) flag = script_getnum(st,4); - pc_skill(sd, id, level, flag); + iPc->skill(sd, id, level, flag); return true; } @@ -7722,7 +7722,7 @@ BUILDIN(getskilllv) return true;// no player attached, report source id = ( script_isstring(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); - script_pushint(st, pc_checkskill(sd,id)); + script_pushint(st, iPc->checkskill(sd,id)); return true; } @@ -7770,7 +7770,7 @@ BUILDIN(getgmlevel) if( sd == NULL ) return true;// no player attached, report source - script_pushint(st, pc_get_group_level(sd)); + script_pushint(st, iPc->get_group_level(sd)); return true; } @@ -7891,9 +7891,9 @@ BUILDIN(setoption) if( flag ){// Add option if( option&OPTION_WEDDING && !battle_config.wedding_modifydisplay ) option &= ~OPTION_WEDDING;// Do not show the wedding sprites - pc_setoption(sd, sd->sc.option|option); + iPc->setoption(sd, sd->sc.option|option); } else// Remove option - pc_setoption(sd, sd->sc.option&~option); + iPc->setoption(sd, sd->sc.option&~option); return true; } @@ -7941,7 +7941,7 @@ BUILDIN(setcart) if( script_hasdata(st,2) ) type = script_getnum(st,2); - pc_setcart(sd, type); + iPc->setcart(sd, type); return true; } @@ -7984,7 +7984,7 @@ BUILDIN(setfalcon) if( script_hasdata(st,2) ) flag = script_getnum(st,2); - pc_setfalcon(sd, flag); + iPc->setfalcon(sd, flag); return true; } @@ -8026,7 +8026,7 @@ BUILDIN(setriding) if( script_hasdata(st,2) ) flag = script_getnum(st,2); - pc_setriding(sd, flag); + iPc->setriding(sd, flag); return true; } @@ -8087,7 +8087,7 @@ BUILDIN(setmadogear) if( script_hasdata(st,2) ) flag = script_getnum(st,2); - pc_setmadogear(sd, flag); + iPc->setmadogear(sd, flag); return true; } @@ -8113,7 +8113,7 @@ BUILDIN(savepoint) y = script_getnum(st,4); map = mapindex_name2id(str); if( map ) - pc_setsavepoint(sd, map, x, y); + iPc->setsavepoint(sd, map, x, y); return true; } @@ -8144,7 +8144,7 @@ BUILDIN(gettimetick) /* Asgard Version */ case 0: default: //type 0:(System Ticks) - script_pushint(st,gettick()); + script_pushint(st,iTimer->gettick()); break; } return true; @@ -8360,7 +8360,7 @@ BUILDIN(getexp) base = (int) cap_value(base * bonus, 0, INT_MAX); job = (int) cap_value(job * bonus, 0, INT_MAX); - pc_gainexp(sd, NULL, base, job, true); + iPc->gainexp(sd, NULL, base, job, true); return true; } @@ -8397,7 +8397,7 @@ BUILDIN(guildchangegm) guild_id = script_getnum(st,2); name = script_getstr(st,3); - sd=map_nick2sd(name); + sd=iMap->nick2sd(name); if (!sd) script_pushint(st,0); @@ -8463,12 +8463,12 @@ BUILDIN(monster) return false; } - sd = map_id2sd(st->rid); + sd = iMap->id2sd(st->rid); if (sd && strcmp(mapn, "this") == 0) m = sd->bl.m; else { - m = map_mapname2mapid(mapn); + m = iMap->mapname2mapid(mapn); if (map[m].flag.src4instance && st->instance_id >= 0) { // Try to redirect to the instance map, not the src map if ((m = instance->mapid2imapid(m, st->instance_id)) < 0) { ShowError("buildin_monster: Trying to spawn monster (%d) on instance map (%s) without instance attached.\n", class_, mapn); @@ -8558,12 +8558,12 @@ BUILDIN(areamonster) } } - sd = map_id2sd(st->rid); + sd = iMap->id2sd(st->rid); if (sd && strcmp(mapn, "this") == 0) m = sd->bl.m; else { - m = map_mapname2mapid(mapn); + m = iMap->mapname2mapid(mapn); if (map[m].flag.src4instance && st->instance_id >= 0) { // Try to redirect to the instance map, not the src map if ((m = instance->mapid2imapid(m, st->instance_id)) < 0) { ShowError("buildin_areamonster: Trying to spawn monster (%d) on instance map (%s) without instance attached.\n", class_, mapn); @@ -8624,7 +8624,7 @@ BUILDIN(killmonster) else check_event(st, event); - if( (m=map_mapname2mapid(mapname))<0 ) + if( (m=iMap->mapname2mapid(mapname))<0 ) return true; if( map[m].flag.src4instance && st->instance_id >= 0 && (m = instance->mapid2imapid(m, st->instance_id)) < 0 ) @@ -8632,14 +8632,14 @@ BUILDIN(killmonster) if( script_hasdata(st,4) ) { if ( script_getnum(st,4) == 1 ) { - map_foreachinmap(buildin_killmonster_sub, m, BL_MOB, event ,allflag); + iMap->foreachinmap(buildin_killmonster_sub, m, BL_MOB, event ,allflag); return true; } } - map_freeblock_lock(); - map_foreachinmap(buildin_killmonster_sub_strip, m, BL_MOB, event ,allflag); - map_freeblock_unlock(); + iMap->freeblock_lock(); + iMap->foreachinmap(buildin_killmonster_sub_strip, m, BL_MOB, event ,allflag); + iMap->freeblock_unlock(); return true; } @@ -8665,7 +8665,7 @@ BUILDIN(killmonsterall) int16 m; mapname=script_getstr(st,2); - if( (m = map_mapname2mapid(mapname))<0 ) + if( (m = iMap->mapname2mapid(mapname))<0 ) return true; if( map[m].flag.src4instance && st->instance_id >= 0 && (m = instance->mapid2imapid(m, st->instance_id)) < 0 ) @@ -8673,12 +8673,12 @@ BUILDIN(killmonsterall) if( script_hasdata(st,3) ) { if ( script_getnum(st,3) == 1 ) { - map_foreachinmap(buildin_killmonsterall_sub,m,BL_MOB); + iMap->foreachinmap(buildin_killmonsterall_sub,m,BL_MOB); return true; } } - map_foreachinmap(buildin_killmonsterall_sub_strip,m,BL_MOB); + iMap->foreachinmap(buildin_killmonsterall_sub_strip,m,BL_MOB); return true; } @@ -8713,13 +8713,13 @@ BUILDIN(clone) check_event(st, event); - m = map_mapname2mapid(map); + m = iMap->mapname2mapid(map); if (m < 0) return true; - sd = map_charid2sd(char_id); + sd = iMap->charid2sd(char_id); if (master_id) { - msd = map_charid2sd(master_id); + msd = iMap->charid2sd(master_id); if (msd) master_id = msd->bl.id; else @@ -8755,7 +8755,7 @@ BUILDIN(donpcevent) const char* event = script_getstr(st,2); check_event(st, event); if( !npc_event_do(event) ) { - struct npc_data * nd = map_id2nd(st->oid); + struct npc_data * nd = iMap->id2nd(st->oid); ShowDebug("NPCEvent '%s' not found! (source: %s)\n",event,nd?nd->name:"Unknown"); script_pushint(st, 0); } else @@ -8789,7 +8789,7 @@ BUILDIN(addtimer) if( sd == NULL ) return true; - pc_addeventtimer(sd,tick,event); + iPc->addeventtimer(sd,tick,event); return true; } /*========================================== @@ -8805,7 +8805,7 @@ BUILDIN(deltimer) return true; check_event(st, event); - pc_deleventtimer(sd,event); + iPc->deleventtimer(sd,event); return true; } /*========================================== @@ -8823,7 +8823,7 @@ BUILDIN(addtimercount) return true; check_event(st, event); - pc_addeventtimercount(sd,event,tick); + iPc->addeventtimercount(sd,event,tick); return true; } @@ -8848,7 +8848,7 @@ BUILDIN(initnpctimer) nd = npc_name2id(script->conv_str(st, data)); else if( data_isint(data) ) //Flag { - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); flag = script->conv_num(st,data); } else @@ -8858,7 +8858,7 @@ BUILDIN(initnpctimer) } } else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); if( !nd ) return true; @@ -8896,7 +8896,7 @@ BUILDIN(startnpctimer) nd = npc_name2id(script->conv_str(st, data)); else if( data_isint(data) ) //Flag { - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); flag = script->conv_num(st,data); } else @@ -8906,7 +8906,7 @@ BUILDIN(startnpctimer) } } else - nd=(struct npc_data *)map_id2bl(st->oid); + nd=(struct npc_data *)iMap->id2bl(st->oid); if( !nd ) return true; @@ -8942,7 +8942,7 @@ BUILDIN(stopnpctimer) nd = npc_name2id(script->conv_str(st, data)); else if( data_isint(data) ) //Flag { - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); flag = script->conv_num(st,data); } else @@ -8952,7 +8952,7 @@ BUILDIN(stopnpctimer) } } else - nd=(struct npc_data *)map_id2bl(st->oid); + nd=(struct npc_data *)iMap->id2bl(st->oid); if( !nd ) return true; @@ -8974,7 +8974,7 @@ BUILDIN(getnpctimer) if( script_hasdata(st,3) ) nd = npc_name2id(script_getstr(st,3)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); if( !nd || nd->bl.type != BL_NPC ) { @@ -8989,7 +8989,7 @@ BUILDIN(getnpctimer) case 1: if( nd->u.scr.rid ) { - sd = map_id2sd(nd->u.scr.rid); + sd = iMap->id2sd(nd->u.scr.rid); if( !sd ) { ShowError("buildin_getnpctimer: Attached player not found!\n"); @@ -9017,7 +9017,7 @@ BUILDIN(setnpctimer) if( script_hasdata(st,3) ) nd = npc_name2id(script_getstr(st,3)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); if( !nd || nd->bl.type != BL_NPC ) { @@ -9037,7 +9037,7 @@ BUILDIN(setnpctimer) BUILDIN(attachnpctimer) { TBL_PC *sd; - struct npc_data *nd = (struct npc_data *)map_id2bl(st->oid); + struct npc_data *nd = (struct npc_data *)iMap->id2bl(st->oid); if( !nd || nd->bl.type != BL_NPC ) { @@ -9047,7 +9047,7 @@ BUILDIN(attachnpctimer) } if( script_hasdata(st,2) ) - sd = map_nick2sd(script_getstr(st,2)); + sd = iMap->nick2sd(script_getstr(st,2)); else sd = script_rid2sd(st); @@ -9073,7 +9073,7 @@ BUILDIN(detachnpctimer) if( script_hasdata(st,2) ) nd = npc_name2id(script_getstr(st,2)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); if( !nd || nd->bl.type != BL_NPC ) { @@ -9094,7 +9094,7 @@ BUILDIN(detachnpctimer) *------------------------------------------*/ BUILDIN(playerattached) { - if(st->rid == 0 || map_id2sd(st->rid) == NULL) + if(st->rid == 0 || iMap->id2sd(st->rid) == NULL) script_pushint(st,0); else script_pushint(st,st->rid); @@ -9116,7 +9116,7 @@ BUILDIN(announce) if (flag&0x0f) // Broadcast source or broadcast region defined { send_target target; - struct block_list *bl = (flag&0x08) ? map_id2bl(st->oid) : (struct block_list *)script_rid2sd(st); // If bc_npc flag is set, use NPC as broadcast source + struct block_list *bl = (flag&0x08) ? iMap->id2bl(st->oid) : (struct block_list *)script_rid2sd(st); // If bc_npc flag is set, use NPC as broadcast source if (bl == NULL) return true; @@ -9167,7 +9167,7 @@ BUILDIN(itemeffect) { struct item_data *item_data; nullpo_retr( 1, ( sd = script_rid2sd( st ) ) ); - nullpo_retr( 1, ( nd = (TBL_NPC *)map_id2bl( sd->npc_id ) ) ); + nullpo_retr( 1, ( nd = (TBL_NPC *)iMap->id2bl( sd->npc_id ) ) ); data = script_getdata( st, 2 ); get_val( st, data ); @@ -9208,10 +9208,10 @@ BUILDIN(mapannounce) int fontY = script_hasdata(st,9) ? script_getnum(st,9) : 0; // default fontY int16 m; - if ((m = map_mapname2mapid(mapname)) < 0) + if ((m = iMap->mapname2mapid(mapname)) < 0) return true; - map_foreachinmap(buildin_announce_sub, m, BL_PC, + iMap->foreachinmap(buildin_announce_sub, m, BL_PC, mes, strlen(mes)+1, flag&0xf0, fontColor, fontType, fontSize, fontAlign, fontY); return true; } @@ -9233,10 +9233,10 @@ BUILDIN(areaannounce) int fontY = script_hasdata(st,13) ? script_getnum(st,13) : 0; // default fontY int16 m; - if ((m = map_mapname2mapid(mapname)) < 0) + if ((m = iMap->mapname2mapid(mapname)) < 0) return true; - map_foreachinarea(buildin_announce_sub, m, x0, y0, x1, y1, BL_PC, + iMap->foreachinarea(buildin_announce_sub, m, x0, y0, x1, y1, BL_PC, mes, strlen(mes)+1, flag&0xf0, fontColor, fontType, fontSize, fontAlign, fontY); return true; } @@ -9256,7 +9256,7 @@ BUILDIN(getusers) case 0: if(flag&0x8) {// npc - bl = map_id2bl(st->oid); + bl = iMap->id2bl(st->oid); } else if((sd = script_rid2sd(st))!=NULL) {// pc @@ -9269,7 +9269,7 @@ BUILDIN(getusers) } break; case 1: - val = map_getusers(); + val = iMap->getusers(); break; default: ShowWarning("buildin_getusers: Unknown type %d.\n", flag); @@ -9292,11 +9292,11 @@ BUILDIN(getusersname) sd = script_rid2sd(st); if (!sd) return true; - group_level = pc_get_group_level(sd); + group_level = iPc->get_group_level(sd); iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) ) { - if (pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) && pc_get_group_level(pl_sd) > group_level) + if (pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) && iPc->get_group_level(pl_sd) > group_level) continue; // skip hidden sessions /* Temporary fix for bugreport:1023. @@ -9321,7 +9321,7 @@ BUILDIN(getmapguildusers) struct guild *g = NULL; str=script_getstr(st,2); gid=script_getnum(st,3); - if ((m = map_mapname2mapid(str)) < 0) { // map id on this server (m == -1 if not in actual map-server) + if ((m = iMap->mapname2mapid(str)) < 0) { // map id on this server (m == -1 if not in actual map-server) script_pushint(st,-1); return true; } @@ -9345,7 +9345,7 @@ BUILDIN(getmapusers) const char *str; int16 m; str=script_getstr(st,2); - if( (m=map_mapname2mapid(str))< 0){ + if( (m=iMap->mapname2mapid(str))< 0){ script_pushint(st,-1); return true; } @@ -9369,11 +9369,11 @@ BUILDIN(getareausers) y0=script_getnum(st,4); x1=script_getnum(st,5); y1=script_getnum(st,6); - if( (m=map_mapname2mapid(str))< 0){ + if( (m=iMap->mapname2mapid(str))< 0){ script_pushint(st,-1); return true; } - map_foreachinarea(buildin_getareausers_sub, + iMap->foreachinarea(buildin_getareausers_sub, m,x0,y0,x1,y1,BL_PC,&users); script_pushint(st,users); return true; @@ -9416,11 +9416,11 @@ BUILDIN(getareadropitem) }else item=script->conv_num(st,data); - if( (m=map_mapname2mapid(str))< 0){ + if( (m=iMap->mapname2mapid(str))< 0){ script_pushint(st,-1); return true; } - map_foreachinarea(buildin_getareadropitem_sub, + iMap->foreachinarea(buildin_getareadropitem_sub, m,x0,y0,x1,y1,BL_ITEM,item,&amount); script_pushint(st,amount); return true; @@ -9478,9 +9478,9 @@ BUILDIN(sc_start) tick = script_getnum(st,3); val1 = script_getnum(st,4); if( script_hasdata(st,5) ) - bl = map_id2bl(script_getnum(st,5)); + bl = iMap->id2bl(script_getnum(st,5)); else - bl = map_id2bl(st->rid); + bl = iMap->id2bl(st->rid); if( tick == 0 && val1 > 0 && type > SC_NONE && type < SC_MAX && status_sc2skill(type) != 0 ) {// When there isn't a duration specified, try to get it from the skill_db @@ -9489,7 +9489,7 @@ BUILDIN(sc_start) if( potion_flag == 1 && potion_target ) { //skill.c set the flags before running the script, this must be a potion-pitched effect. - bl = map_id2bl(potion_target); + bl = iMap->id2bl(potion_target); tick /= 2;// Thrown potions only last half. val4 = 1;// Mark that this was a thrown sc_effect } @@ -9517,9 +9517,9 @@ BUILDIN(sc_start2) val1 = script_getnum(st,4); rate = script_getnum(st,5); if( script_hasdata(st,6) ) - bl = map_id2bl(script_getnum(st,6)); + bl = iMap->id2bl(script_getnum(st,6)); else - bl = map_id2bl(st->rid); + bl = iMap->id2bl(st->rid); if( tick == 0 && val1 > 0 && type > SC_NONE && type < SC_MAX && status_sc2skill(type) != 0 ) {// When there isn't a duration specified, try to get it from the skill_db @@ -9528,7 +9528,7 @@ BUILDIN(sc_start2) if( potion_flag == 1 && potion_target ) { //skill.c set the flags before running the script, this must be a potion-pitched effect. - bl = map_id2bl(potion_target); + bl = iMap->id2bl(potion_target); tick /= 2;// Thrown potions only last half. val4 = 1;// Mark that this was a thrown sc_effect } @@ -9559,9 +9559,9 @@ BUILDIN(sc_start4) val3 = script_getnum(st,6); val4 = script_getnum(st,7); if( script_hasdata(st,8) ) - bl = map_id2bl(script_getnum(st,8)); + bl = iMap->id2bl(script_getnum(st,8)); else - bl = map_id2bl(st->rid); + bl = iMap->id2bl(st->rid); if( tick == 0 && val1 > 0 && type > SC_NONE && type < SC_MAX && status_sc2skill(type) != 0 ) {// When there isn't a duration specified, try to get it from the skill_db @@ -9570,7 +9570,7 @@ BUILDIN(sc_start4) if( potion_flag == 1 && potion_target ) { //skill.c set the flags before running the script, this must be a potion-pitched effect. - bl = map_id2bl(potion_target); + bl = iMap->id2bl(potion_target); tick /= 2;// Thrown potions only last half. } @@ -9590,12 +9590,12 @@ BUILDIN(sc_end) type = script_getnum(st, 2); if (script_hasdata(st, 3)) - bl = map_id2bl(script_getnum(st, 3)); + bl = iMap->id2bl(script_getnum(st, 3)); else - bl = map_id2bl(st->rid); + bl = iMap->id2bl(st->rid); if (potion_flag == 1 && potion_target) //##TODO how does this work [FlavioJS] - bl = map_id2bl(potion_target); + bl = iMap->id2bl(potion_target); if (!bl) return true; @@ -9642,9 +9642,9 @@ BUILDIN(getscrate) type=script_getnum(st,2); rate=script_getnum(st,3); if( script_hasdata(st,4) ) //get for the bl assigned - bl = map_id2bl(script_getnum(st,4)); + bl = iMap->id2bl(script_getnum(st,4)); else - bl = map_id2bl(st->rid); + bl = iMap->id2bl(st->rid); if (bl) rate = status_get_sc_def(bl, (sc_type)type, 10000, 10000, 0); @@ -9689,11 +9689,11 @@ BUILDIN(getstatus) case 4: script_pushint(st, sd->sc.data[id]->val4); break; case 5: { - struct TimerData* timer = (struct TimerData*)get_timer(sd->sc.data[id]->timer); + struct TimerData* timer = (struct TimerData*)iTimer->get_timer(sd->sc.data[id]->timer); if( timer ) {// return the amount of time remaining - script_pushint(st, timer->tick - gettick()); + script_pushint(st, timer->tick - iTimer->gettick()); } } break; @@ -9833,7 +9833,7 @@ BUILDIN(eaclass) } class_ = sd->status.class_; } - script_pushint(st,pc_jobid2mapid(class_)); + script_pushint(st,iPc->jobid2mapid(class_)); return true; } @@ -9850,7 +9850,7 @@ BUILDIN(roclass) else sex = 1; //Just use male when not found. } - script_pushint(st,pc_mapid2jobid(class_, sex)); + script_pushint(st,iPc->mapid2jobid(class_, sex)); return true; } @@ -9891,7 +9891,7 @@ BUILDIN(resetlvl) if( sd == NULL ) return true; - pc_resetlvl(sd,type); + iPc->resetlvl(sd,type); return true; } /*========================================== @@ -9901,7 +9901,7 @@ BUILDIN(resetstatus) { TBL_PC *sd; sd=script_rid2sd(st); - pc_resetstate(sd); + iPc->resetstate(sd); return true; } @@ -9912,7 +9912,7 @@ BUILDIN(resetskill) { TBL_PC *sd; sd=script_rid2sd(st); - pc_resetskill(sd,1); + iPc->resetskill(sd,1); return true; } @@ -9923,7 +9923,7 @@ BUILDIN(skillpointcount) { TBL_PC *sd; sd=script_rid2sd(st); - script_pushint(st,sd->status.skill_point + pc_resetskill(sd,2)); + script_pushint(st,sd->status.skill_point + iPc->resetskill(sd,2)); return true; } @@ -9936,7 +9936,7 @@ BUILDIN(changebase) int vclass; if( script_hasdata(st,3) ) - sd=map_id2sd(script_getnum(st,3)); + sd=iMap->id2sd(script_getnum(st,3)); else sd=script_rid2sd(st); @@ -9974,10 +9974,10 @@ BUILDIN(changesex) TBL_PC *sd = NULL; sd = script_rid2sd(st); - pc_resetskill(sd,4); + iPc->resetskill(sd,4); // to avoid any problem with equipment and invalid sex, equipment is unequiped. for( i=0; i<EQI_MAX; i++ ) - if( sd->equip_index[i] >= 0 ) pc_unequipitem(sd, sd->equip_index[i], 3); + if( sd->equip_index[i] >= 0 ) iPc->unequipitem(sd, sd->equip_index[i], 3); chrif_changesex(sd); return true; } @@ -9987,7 +9987,7 @@ BUILDIN(changesex) *------------------------------------------*/ BUILDIN(globalmes) { - struct block_list *bl = map_id2bl(st->oid); + struct block_list *bl = iMap->id2bl(st->oid); struct npc_data *nd = (struct npc_data *)bl; const char *name=NULL,*mes; @@ -10024,7 +10024,7 @@ BUILDIN(waitingroom) int minLvl = script_hasdata(st,7) ? script_getnum(st,7) : 1; int maxLvl = script_hasdata(st,8) ? script_getnum(st,8) : MAX_LEVEL; - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); if( nd != NULL ) chat_createnpcchat(nd, title, limit, pub, trigger, ev, zeny, minLvl, maxLvl); @@ -10041,7 +10041,7 @@ BUILDIN(delwaitingroom) if( script_hasdata(st,2) ) nd = npc_name2id(script_getstr(st, 2)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); if( nd != NULL ) chat_deletenpcchat(nd); return true; @@ -10059,9 +10059,9 @@ BUILDIN(waitingroomkickall) if( script_hasdata(st,2) ) nd = npc_name2id(script_getstr(st,2)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); - if( nd != NULL && (cd=(struct chat_data *)map_id2bl(nd->chat_id)) != NULL ) + if( nd != NULL && (cd=(struct chat_data *)iMap->id2bl(nd->chat_id)) != NULL ) chat_npckickall(cd); return true; } @@ -10078,9 +10078,9 @@ BUILDIN(enablewaitingroomevent) if( script_hasdata(st,2) ) nd = npc_name2id(script_getstr(st, 2)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); - if( nd != NULL && (cd=(struct chat_data *)map_id2bl(nd->chat_id)) != NULL ) + if( nd != NULL && (cd=(struct chat_data *)iMap->id2bl(nd->chat_id)) != NULL ) chat_enableevent(cd); return true; } @@ -10097,9 +10097,9 @@ BUILDIN(disablewaitingroomevent) if( script_hasdata(st,2) ) nd = npc_name2id(script_getstr(st, 2)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); - if( nd != NULL && (cd=(struct chat_data *)map_id2bl(nd->chat_id)) != NULL ) + if( nd != NULL && (cd=(struct chat_data *)iMap->id2bl(nd->chat_id)) != NULL ) chat_disableevent(cd); return true; } @@ -10128,9 +10128,9 @@ BUILDIN(getwaitingroomstate) if( script_hasdata(st,3) ) nd = npc_name2id(script_getstr(st, 3)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); - if( nd == NULL || (cd=(struct chat_data *)map_id2bl(nd->chat_id)) == NULL ) + if( nd == NULL || (cd=(struct chat_data *)iMap->id2bl(nd->chat_id)) == NULL ) { script_pushint(st, -1); return true; @@ -10175,8 +10175,8 @@ BUILDIN(warpwaitingpc) struct chat_data* cd; TBL_PC* sd; - nd = (struct npc_data *)map_id2bl(st->oid); - if( nd == NULL || (cd=(struct chat_data *)map_id2bl(nd->chat_id)) == NULL ) + nd = (struct npc_data *)iMap->id2bl(st->oid); + if( nd == NULL || (cd=(struct chat_data *)iMap->id2bl(nd->chat_id)) == NULL ) return true; map_name = script_getstr(st,2); @@ -10202,17 +10202,17 @@ BUILDIN(warpwaitingpc) {// no zeny to cover set fee break; } - pc_payzeny(sd, cd->zeny, LOG_TYPE_NPC, NULL); + iPc->payzeny(sd, cd->zeny, LOG_TYPE_NPC, NULL); } mapreg_setreg(reference_uid(add_str("$@warpwaitingpc"), i), sd->bl.id); if( strcmp(map_name,"Random") == 0 ) - pc_randomwarp(sd,CLR_TELEPORT); + iPc->randomwarp(sd,CLR_TELEPORT); else if( strcmp(map_name,"SavePoint") == 0 ) - pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT); + iPc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT); else - pc_setpos(sd, mapindex_name2id(map_name), x, y, CLR_OUTSIGHT); + iPc->setpos(sd, mapindex_name2id(map_name), x, y, CLR_OUTSIGHT); } mapreg_setreg(add_str("$@warpwaitingpcnum"), i); return true; @@ -10241,7 +10241,7 @@ BUILDIN(attachrid) { int rid = script_getnum(st,2); - if (map_id2sd(rid) != NULL) { + if (iMap->id2sd(rid) != NULL) { script_detach_rid(st); st->rid = rid; @@ -10264,7 +10264,7 @@ BUILDIN(detachrid) *------------------------------------------*/ BUILDIN(isloggedin) { - TBL_PC* sd = map_id2sd(script_getnum(st,2)); + TBL_PC* sd = iMap->id2sd(script_getnum(st,2)); if (script_hasdata(st,3) && sd && sd->status.char_id != script_getnum(st,3)) sd = NULL; @@ -10286,7 +10286,7 @@ BUILDIN(setmapflagnosave) str2=script_getstr(st,3); x=script_getnum(st,4); y=script_getnum(st,5); - m = map_mapname2mapid(str); + m = iMap->mapname2mapid(str); mapindex = mapindex_name2id(str2); if(m >= 0 && mapindex) { @@ -10307,7 +10307,7 @@ BUILDIN(getmapflag) str=script_getstr(st,2); i=script_getnum(st,3); - m = map_mapname2mapid(str); + m = iMap->mapname2mapid(str); if(m >= 0) { switch(i) { case MF_NOMEMO: script_pushint(st,map[m].flag.nomemo); break; @@ -10368,7 +10368,7 @@ BUILDIN(getmapflag) static int script_mapflag_pvp_sub(struct block_list *bl,va_list ap) { TBL_PC* sd = (TBL_PC*)bl; if (sd->pvp_timer == INVALID_TIMER) { - sd->pvp_timer = add_timer(gettick() + 200, pc_calc_pvprank_timer, sd->bl.id, 0); + sd->pvp_timer = iTimer->add_timer(iTimer->gettick() + 200, iPc->calc_pvprank_timer, sd->bl.id, 0); sd->pvp_rank = 0; sd->pvp_lastusers = 0; sd->pvp_point = 5; @@ -10401,7 +10401,7 @@ BUILDIN(setmapflag) val = script_getnum(st, 4); } - m = map_mapname2mapid(str); + m = iMap->mapname2mapid(str); if(m >= 0) { switch(i) { @@ -10414,7 +10414,7 @@ BUILDIN(setmapflag) case MF_PVP: map[m].flag.pvp = 1; if( !battle_config.pk_mode ) { - map_foreachinmap(script_mapflag_pvp_sub,m,BL_PC); + iMap->foreachinmap(script_mapflag_pvp_sub,m,BL_PC); } break; case MF_PVP_NOPARTY: map[m].flag.pvp_noparty = 1; break; @@ -10492,7 +10492,7 @@ BUILDIN(removemapflag) if(script_hasdata(st,4)){ val=script_getnum(st,4); } - m = map_mapname2mapid(str); + m = iMap->mapname2mapid(str); if(m >= 0) { switch(i) { case MF_NOMEMO: map[m].flag.nomemo = 0; break; @@ -10545,7 +10545,7 @@ BUILDIN(removemapflag) case MF_NOWARPTO: map[m].flag.nowarpto = 0; break; case MF_NIGHTMAREDROP: map[m].flag.pvp_nightmaredrop = 0; break; case MF_ZONE: - map_zone_change2(m, map[m].prev_zone); + iMap->zone_change2(m, map[m].prev_zone); break; case MF_NOCOMMAND: map[m].nocommand = 0; break; case MF_NODROP: map[m].flag.nodrop = 0; break; @@ -10578,11 +10578,11 @@ BUILDIN(pvpon) struct block_list bl; str = script_getstr(st,2); - m = map_mapname2mapid(str); + m = iMap->mapname2mapid(str); if( m < 0 || map[m].flag.pvp ) return true; // nothing to do - map_zone_change2(m, strdb_get(zone_db, MAP_ZONE_PVP_NAME)); + iMap->zone_change2(m, strdb_get(zone_db, MAP_ZONE_PVP_NAME)); map[m].flag.pvp = 1; clif->map_property_mapall(m, MAPPROPERTY_FREEPVPZONE); bl.type = BL_NUL; @@ -10599,7 +10599,7 @@ BUILDIN(pvpon) if( sd->bl.m != m || sd->pvp_timer != INVALID_TIMER ) continue; // not applicable - sd->pvp_timer = add_timer(gettick()+200,pc_calc_pvprank_timer,sd->bl.id,0); + sd->pvp_timer = iTimer->add_timer(iTimer->gettick()+200,iPc->calc_pvprank_timer,sd->bl.id,0); sd->pvp_rank = 0; sd->pvp_lastusers = 0; sd->pvp_point = 5; @@ -10616,7 +10616,7 @@ static int buildin_pvpoff_sub(struct block_list *bl,va_list ap) TBL_PC* sd = (TBL_PC*)bl; clif->pvpset(sd, 0, 0, 2); if (sd->pvp_timer != INVALID_TIMER) { - delete_timer(sd->pvp_timer, pc_calc_pvprank_timer); + iTimer->delete_timer(sd->pvp_timer, iPc->calc_pvprank_timer); sd->pvp_timer = INVALID_TIMER; } return 0; @@ -10629,11 +10629,11 @@ BUILDIN(pvpoff) struct block_list bl; str=script_getstr(st,2); - m = map_mapname2mapid(str); + m = iMap->mapname2mapid(str); if(m < 0 || !map[m].flag.pvp) return true; //fixed Lupus - map_zone_change2(m, map[m].prev_zone); + iMap->zone_change2(m, map[m].prev_zone); map[m].flag.pvp = 0; clif->map_property_mapall(m, MAPPROPERTY_NOTHING); bl.type = BL_NUL; @@ -10643,7 +10643,7 @@ BUILDIN(pvpoff) if(battle_config.pk_mode) // disable ranking options if pk_mode is on [Valaris] return true; - map_foreachinmap(buildin_pvpoff_sub, m, BL_PC); + iMap->foreachinmap(buildin_pvpoff_sub, m, BL_PC); return true; } @@ -10653,10 +10653,10 @@ BUILDIN(gvgon) const char *str; str=script_getstr(st,2); - m = map_mapname2mapid(str); + m = iMap->mapname2mapid(str); if(m >= 0 && !map[m].flag.gvg) { struct block_list bl; - map_zone_change2(m, strdb_get(zone_db, MAP_ZONE_GVG_NAME)); + iMap->zone_change2(m, strdb_get(zone_db, MAP_ZONE_GVG_NAME)); map[m].flag.gvg = 1; clif->map_property_mapall(m, MAPPROPERTY_AGITZONE); bl.type = BL_NUL; @@ -10672,10 +10672,10 @@ BUILDIN(gvgoff) const char *str; str=script_getstr(st,2); - m = map_mapname2mapid(str); + m = iMap->mapname2mapid(str); if(m >= 0 && map[m].flag.gvg) { struct block_list bl; - map_zone_change2(m, map[m].prev_zone); + iMap->zone_change2(m, map[m].prev_zone); map[m].flag.gvg = 0; clif->map_property_mapall(m, MAPPROPERTY_NOTHING); bl.type = BL_NUL; @@ -10705,7 +10705,7 @@ BUILDIN(emotion) if (player) { TBL_PC *sd = NULL; if( script_hasdata(st,4) ) - sd = map_nick2sd(script_getstr(st,4)); + sd = iMap->nick2sd(script_getstr(st,4)); else sd = script_rid2sd(st); if (sd) @@ -10718,7 +10718,7 @@ BUILDIN(emotion) clif->emotion(&nd->bl,type); } else - clif->emotion(map_id2bl(st->oid),type); + clif->emotion(iMap->id2bl(st->oid),type); return true; } @@ -10735,7 +10735,7 @@ static int buildin_maprespawnguildid_sub_pc(struct map_session_data* sd, va_list (sd->status.guild_id != g_id && flag&2) || //Warp out outsiders (sd->status.guild_id == 0) // Warp out players not in guild [Valaris] ) - pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); + iPc->setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); return 1; } @@ -10755,46 +10755,46 @@ BUILDIN(maprespawnguildid) int g_id=script_getnum(st,3); int flag=script_getnum(st,4); - int16 m=map_mapname2mapid(mapname); + int16 m=iMap->mapname2mapid(mapname); if(m == -1) return true; //Catch ALL players (in case some are 'between maps' on execution time) - map_foreachpc(buildin_maprespawnguildid_sub_pc,m,g_id,flag); + iMap->map_foreachpc(buildin_maprespawnguildid_sub_pc,m,g_id,flag); if (flag&4) //Remove script mobs. - map_foreachinmap(buildin_maprespawnguildid_sub_mob,m,BL_MOB); + iMap->foreachinmap(buildin_maprespawnguildid_sub_mob,m,BL_MOB); return true; } BUILDIN(agitstart) { - if(agit_flag==1) return true; // Agit already Start. - agit_flag=1; + if(iMap->agit_flag==1) return true; // Agit already Start. + iMap->agit_flag=1; guild->agit_start(); return true; } BUILDIN(agitend) { - if(agit_flag==0) return true; // Agit already End. - agit_flag=0; + if(iMap->agit_flag==0) return true; // Agit already End. + iMap->agit_flag=0; guild->agit_end(); return true; } BUILDIN(agitstart2) { - if(agit2_flag==1) return true; // Agit2 already Start. - agit2_flag=1; + if(iMap->agit2_flag==1) return true; // Agit2 already Start. + iMap->agit2_flag=1; guild->agit2_start(); return true; } BUILDIN(agitend2) { - if(agit2_flag==0) return true; // Agit2 already End. - agit2_flag=0; + if(iMap->agit2_flag==0) return true; // Agit2 already End. + iMap->agit2_flag=0; guild->agit2_end(); return true; } @@ -10804,7 +10804,7 @@ BUILDIN(agitend2) *------------------------------------------*/ BUILDIN(agitcheck) { - script_pushint(st,agit_flag); + script_pushint(st,iMap->agit_flag); return true; } @@ -10813,7 +10813,7 @@ BUILDIN(agitcheck) *------------------------------------------*/ BUILDIN(agitcheck2) { - script_pushint(st,agit2_flag); + script_pushint(st,iMap->agit2_flag); return true; } @@ -10827,7 +10827,7 @@ BUILDIN(flagemblem) if(g_id < 0) return true; - nd = (TBL_NPC*)map_id2nd(st->oid); + nd = (TBL_NPC*)iMap->id2nd(st->oid); if( nd == NULL ) { ShowError("script:flagemblem: npc %d not found\n", st->oid); } else if( nd->subtype != SCRIPT ) { @@ -10946,7 +10946,7 @@ BUILDIN(getequipcardcnt) num=script_getnum(st,2); sd=script_rid2sd(st); if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if (i < 0 || !sd->inventory_data[i]) { script_pushint(st,0); @@ -10978,7 +10978,7 @@ BUILDIN(successremovecards) { int num = script_getnum(st,2); if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if (i < 0 || !sd->inventory_data[i]) { return true; @@ -10996,9 +10996,9 @@ BUILDIN(successremovecards) { item_tmp.nameid = sd->status.inventory[i].card[c]; item_tmp.identify = 1; - if((flag=pc_additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))){ // get back the cart in inventory + if((flag=iPc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))){ // get back the cart in inventory clif->additem(sd,0,0,flag); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } } @@ -11017,10 +11017,10 @@ BUILDIN(successremovecards) { for (j = sd->inventory_data[i]->slot; j < MAX_SLOTS; j++) item_tmp.card[j]=sd->status.inventory[i].card[j]; - pc_delitem(sd,i,1,0,3,LOG_TYPE_SCRIPT); - if((flag=pc_additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))){ //chk if can be spawn in inventory otherwise put on floor + iPc->delitem(sd,i,1,0,3,LOG_TYPE_SCRIPT); + if((flag=iPc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))){ //chk if can be spawn in inventory otherwise put on floor clif->additem(sd,0,0,flag); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } clif->misceffect(&sd->bl,3); @@ -11042,7 +11042,7 @@ BUILDIN(failedremovecards) { int typefail = script_getnum(st,3); if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if (i < 0 || !sd->inventory_data[i]) return true; @@ -11063,9 +11063,9 @@ BUILDIN(failedremovecards) { item_tmp.nameid = sd->status.inventory[i].card[c]; item_tmp.identify = 1; - if((flag=pc_additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))){ + if((flag=iPc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))){ clif->additem(sd,0,0,flag); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } } @@ -11073,7 +11073,7 @@ BUILDIN(failedremovecards) { if(cardflag == 1) { if(typefail == 0 || typefail == 2){ // destroy the item - pc_delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); + iPc->delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); } if(typefail == 1){ // destroy the card int flag; @@ -11090,11 +11090,11 @@ BUILDIN(failedremovecards) { for (j = sd->inventory_data[i]->slot; j < MAX_SLOTS; j++) item_tmp.card[j]=sd->status.inventory[i].card[j]; - pc_delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); + iPc->delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); - if((flag=pc_additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))){ + if((flag=iPc->additem(sd,&item_tmp,1,LOG_TYPE_SCRIPT))){ clif->additem(sd,0,0,flag); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } clif->misceffect(&sd->bl,2); @@ -11125,7 +11125,7 @@ BUILDIN(mapwarp) // Added by RoVeRT check_ID=script_getnum(st,7); } - if((m=map_mapname2mapid(mapname))< 0) + if((m=iMap->mapname2mapid(mapname))< 0) return true; if(!(index=mapindex_name2id(str))) @@ -11138,23 +11138,23 @@ BUILDIN(mapwarp) // Added by RoVeRT for( i=0; i < g->max_member; i++) { if(g->member[i].sd && g->member[i].sd->bl.m==m){ - pc_setpos(g->member[i].sd,index,x,y,CLR_TELEPORT); + iPc->setpos(g->member[i].sd,index,x,y,CLR_TELEPORT); } } } break; case 2: - p = party_search(check_ID); + p = iParty->search(check_ID); if(p){ for(i=0;i<MAX_PARTY; i++){ if(p->data[i].sd && p->data[i].sd->bl.m == m){ - pc_setpos(p->data[i].sd,index,x,y,CLR_TELEPORT); + iPc->setpos(p->data[i].sd,index,x,y,CLR_TELEPORT); } } } break; default: - map_foreachinmap(buildin_areawarp_sub,m,BL_PC,index,x,y,0,0); + iMap->foreachinmap(buildin_areawarp_sub,m,BL_PC,index,x,y,0,0); break; } @@ -11190,7 +11190,7 @@ BUILDIN(mobcount) // Added by RoVeRT script_pushint(st,-1); return true; } - } else if( (m = map_mapname2mapid(mapname)) < 0 ) { + } else if( (m = iMap->mapname2mapid(mapname)) < 0 ) { script_pushint(st,-1); return true; } @@ -11200,7 +11200,7 @@ BUILDIN(mobcount) // Added by RoVeRT return true; } - script_pushint(st,map_foreachinmap(buildin_mobcount_sub, m, BL_MOB, event)); + script_pushint(st,iMap->foreachinmap(buildin_mobcount_sub, m, BL_MOB, event)); return true; } @@ -11209,9 +11209,9 @@ BUILDIN(marriage) { const char *partner=script_getstr(st,2); TBL_PC *sd=script_rid2sd(st); - TBL_PC *p_sd=map_nick2sd(partner); + TBL_PC *p_sd=iMap->nick2sd(partner); - if(sd==NULL || p_sd==NULL || pc_marriage(sd,p_sd) < 0){ + if(sd==NULL || p_sd==NULL || iPc->marriage(sd,p_sd) < 0){ script_pushint(st,0); return true; } @@ -11224,7 +11224,7 @@ BUILDIN(wedding_effect) struct block_list *bl; if(sd==NULL) { - bl=map_id2bl(st->oid); + bl=iMap->id2bl(st->oid); } else bl=&sd->bl; clif->wedding_effect(bl); @@ -11233,7 +11233,7 @@ BUILDIN(wedding_effect) BUILDIN(divorce) { TBL_PC *sd=script_rid2sd(st); - if(sd==NULL || pc_divorce(sd) < 0){ + if(sd==NULL || iPc->divorce(sd) < 0){ script_pushint(st,0); return true; } @@ -11245,8 +11245,8 @@ BUILDIN(ispartneron) { TBL_PC *sd=script_rid2sd(st); - if(sd==NULL || !pc_ismarried(sd) || - map_charid2sd(sd->status.partner_id) == NULL) { + if(sd==NULL || !iPc->ismarried(sd) || + iMap->charid2sd(sd->status.partner_id) == NULL) { script_pushint(st,0); return true; } @@ -11311,8 +11311,8 @@ BUILDIN(warppartner) TBL_PC *sd=script_rid2sd(st); TBL_PC *p_sd=NULL; - if(sd==NULL || !pc_ismarried(sd) || - (p_sd=map_charid2sd(sd->status.partner_id)) == NULL) { + if(sd==NULL || !iPc->ismarried(sd) || + (p_sd=iMap->charid2sd(sd->status.partner_id)) == NULL) { script_pushint(st,0); return true; } @@ -11323,7 +11323,7 @@ BUILDIN(warppartner) mapindex = mapindex_name2id(str); if (mapindex) { - pc_setpos(p_sd,mapindex,x,y,CLR_OUTSIGHT); + iPc->setpos(p_sd,mapindex,x,y,CLR_OUTSIGHT); script_pushint(st,1); } else script_pushint(st,0); @@ -11424,16 +11424,16 @@ BUILDIN(setwall) shootable = script_getnum(st,7); name = script_getstr(st,8); - if( (m = map_mapname2mapid(map)) < 0 ) + if( (m = iMap->mapname2mapid(map)) < 0 ) return true; // Invalid Map - map_iwall_set(m, x, y, size, dir, shootable, name); + iMap->iwall_set(m, x, y, size, dir, shootable, name); return true; } BUILDIN(delwall) { const char *name = script_getstr(st,2); - map_iwall_remove(name); + iMap->iwall_remove(name); return true; } @@ -11466,7 +11466,7 @@ BUILDIN(guardianinfo) if( !gc->guardian[id].visible ) script_pushint(st,-1); else - if( (gd = map_id2md(gc->guardian[id].id)) == NULL ) + if( (gd = iMap->id2md(gc->guardian[id].id)) == NULL ) script_pushint(st,-1); else { @@ -11637,7 +11637,7 @@ BUILDIN(getequipcardid) slot=script_getnum(st,3); sd=script_rid2sd(st); if (num > 0 && num <= ARRAYLENGTH(equip)) - i=pc_checkequip(sd,equip[num-1]); + i=iPc->checkequip(sd,equip[num-1]); if(i >= 0 && slot>=0 && slot<4) script_pushint(st,sd->status.inventory[i].card[slot]); else @@ -11662,7 +11662,7 @@ BUILDIN(petskillbonus) if (pd->bonus) { //Clear previous bonus if (pd->bonus->timer != INVALID_TIMER) - delete_timer(pd->bonus->timer, pet_skill_bonus_timer); + iTimer->delete_timer(pd->bonus->timer, pet_skill_bonus_timer); } else //init pd->bonus = (struct pet_bonus *) aMalloc(sizeof(struct pet_bonus)); @@ -11678,7 +11678,7 @@ BUILDIN(petskillbonus) if (battle_config.pet_equip_required && pd->pet.equip == 0) pd->bonus->timer = INVALID_TIMER; else - pd->bonus->timer = add_timer(gettick()+pd->bonus->delay*1000, pet_skill_bonus_timer, sd->bl.id, 0); + pd->bonus->timer = iTimer->add_timer(iTimer->gettick()+pd->bonus->delay*1000, pet_skill_bonus_timer, sd->bl.id, 0); return true; } @@ -11735,22 +11735,22 @@ BUILDIN(getinventorylist) if(!sd) return true; for(i=0;i<MAX_INVENTORY;i++){ if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].amount > 0){ - pc_setreg(sd,reference_uid(add_str("@inventorylist_id"), j),sd->status.inventory[i].nameid); - pc_setreg(sd,reference_uid(add_str("@inventorylist_amount"), j),sd->status.inventory[i].amount); - pc_setreg(sd,reference_uid(add_str("@inventorylist_equip"), j),sd->status.inventory[i].equip); - pc_setreg(sd,reference_uid(add_str("@inventorylist_refine"), j),sd->status.inventory[i].refine); - pc_setreg(sd,reference_uid(add_str("@inventorylist_identify"), j),sd->status.inventory[i].identify); - pc_setreg(sd,reference_uid(add_str("@inventorylist_attribute"), j),sd->status.inventory[i].attribute); + iPc->setreg(sd,reference_uid(add_str("@inventorylist_id"), j),sd->status.inventory[i].nameid); + iPc->setreg(sd,reference_uid(add_str("@inventorylist_amount"), j),sd->status.inventory[i].amount); + iPc->setreg(sd,reference_uid(add_str("@inventorylist_equip"), j),sd->status.inventory[i].equip); + iPc->setreg(sd,reference_uid(add_str("@inventorylist_refine"), j),sd->status.inventory[i].refine); + iPc->setreg(sd,reference_uid(add_str("@inventorylist_identify"), j),sd->status.inventory[i].identify); + iPc->setreg(sd,reference_uid(add_str("@inventorylist_attribute"), j),sd->status.inventory[i].attribute); for (k = 0; k < MAX_SLOTS; k++) { sprintf(card_var, "@inventorylist_card%d",k+1); - pc_setreg(sd,reference_uid(add_str(card_var), j),sd->status.inventory[i].card[k]); + iPc->setreg(sd,reference_uid(add_str(card_var), j),sd->status.inventory[i].card[k]); } - pc_setreg(sd,reference_uid(add_str("@inventorylist_expire"), j),sd->status.inventory[i].expire_time); + iPc->setreg(sd,reference_uid(add_str("@inventorylist_expire"), j),sd->status.inventory[i].expire_time); j++; } } - pc_setreg(sd,add_str("@inventorylist_count"),j); + iPc->setreg(sd,add_str("@inventorylist_count"),j); return true; } @@ -11761,13 +11761,13 @@ BUILDIN(getskilllist) if(!sd) return true; for(i=0;i<MAX_SKILL;i++){ if(sd->status.skill[i].id > 0 && sd->status.skill[i].lv > 0){ - pc_setreg(sd,reference_uid(add_str("@skilllist_id"), j),sd->status.skill[i].id); - pc_setreg(sd,reference_uid(add_str("@skilllist_lv"), j),sd->status.skill[i].lv); - pc_setreg(sd,reference_uid(add_str("@skilllist_flag"), j),sd->status.skill[i].flag); + iPc->setreg(sd,reference_uid(add_str("@skilllist_id"), j),sd->status.skill[i].id); + iPc->setreg(sd,reference_uid(add_str("@skilllist_lv"), j),sd->status.skill[i].lv); + iPc->setreg(sd,reference_uid(add_str("@skilllist_flag"), j),sd->status.skill[i].flag); j++; } } - pc_setreg(sd,add_str("@skilllist_count"),j); + iPc->setreg(sd,add_str("@skilllist_count"),j); return true; } @@ -11778,7 +11778,7 @@ BUILDIN(clearitem) if(sd==NULL) return true; for (i=0; i<MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount) { - pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_SCRIPT); + iPc->delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_SCRIPT); } } return true; @@ -11796,7 +11796,7 @@ BUILDIN(disguise) id = script_getnum(st,2); if (mobdb_checkid(id) || npcdb_checkid(id)) { - pc_disguise(sd, id); + iPc->disguise(sd, id); script_pushint(st,id); } else script_pushint(st,0); @@ -11813,7 +11813,7 @@ BUILDIN(undisguise) if (sd == NULL) return true; if (sd->disguise != -1) { - pc_disguise(sd, -1); + iPc->disguise(sd, -1); script_pushint(st,0); } else { script_pushint(st,1); @@ -11828,7 +11828,7 @@ BUILDIN(undisguise) BUILDIN(classchange) { int _class,type; - struct block_list *bl=map_id2bl(st->oid); + struct block_list *bl=iMap->id2bl(st->oid); if(bl==NULL) return true; @@ -11847,7 +11847,7 @@ BUILDIN(misceffect) type=script_getnum(st,2); if(st->oid && st->oid != fake_nd->bl.id) { - struct block_list *bl = map_id2bl(st->oid); + struct block_list *bl = iMap->id2bl(st->oid); if (bl) clif->specialeffect(bl,type,AREA); } else{ @@ -11909,17 +11909,17 @@ BUILDIN(playBGMall) int x1 = script_getnum(st,6); int y1 = script_getnum(st,7); - map_foreachinarea(playBGM_sub, map_mapname2mapid(map), x0, y0, x1, y1, BL_PC, name); + iMap->foreachinarea(playBGM_sub, iMap->mapname2mapid(map), x0, y0, x1, y1, BL_PC, name); } else if( script_hasdata(st,3) ) {// entire map const char* map = script_getstr(st,3); - map_foreachinmap(playBGM_sub, map_mapname2mapid(map), BL_PC, name); + iMap->foreachinmap(playBGM_sub, iMap->mapname2mapid(map), BL_PC, name); } else {// entire server - map_foreachpc(&playBGM_foreachpc_sub, name); + iMap->map_foreachpc(&playBGM_foreachpc_sub, name); } return true; @@ -11961,14 +11961,14 @@ BUILDIN(soundeffectall) const char* name; int type; - bl = (st->rid) ? &(script_rid2sd(st)->bl) : map_id2bl(st->oid); + bl = (st->rid) ? &(script_rid2sd(st)->bl) : iMap->id2bl(st->oid); if (!bl) return true; name = script_getstr(st,2); type = script_getnum(st,3); - //FIXME: enumerating map squares (map_foreach) is slower than enumerating the list of online players (map_foreachpc?) [ultramage] + //FIXME: enumerating map squares (iMap->foreach) is slower than enumerating the list of online players (iMap->foreachpc?) [ultramage] if(!script_hasdata(st,4)) { // area around @@ -11978,7 +11978,7 @@ BUILDIN(soundeffectall) if(!script_hasdata(st,5)) { // entire map const char* map = script_getstr(st,4); - map_foreachinmap(soundeffect_sub, map_mapname2mapid(map), BL_PC, name, type); + iMap->foreachinmap(soundeffect_sub, iMap->mapname2mapid(map), BL_PC, name, type); } else if(script_hasdata(st,8)) @@ -11988,7 +11988,7 @@ BUILDIN(soundeffectall) int y0 = script_getnum(st,6); int x1 = script_getnum(st,7); int y1 = script_getnum(st,8); - map_foreachinarea(soundeffect_sub, map_mapname2mapid(map), x0, y0, x1, y1, BL_PC, name, type); + iMap->foreachinarea(soundeffect_sub, iMap->mapname2mapid(map), x0, y0, x1, y1, BL_PC, name, type); } else { @@ -12013,7 +12013,7 @@ BUILDIN(petrecovery) if (pd->recovery) { //Halt previous bonus if (pd->recovery->timer != INVALID_TIMER) - delete_timer(pd->recovery->timer, pet_recovery_timer); + iTimer->delete_timer(pd->recovery->timer, pet_recovery_timer); } else //Init pd->recovery = (struct pet_recovery *)aMalloc(sizeof(struct pet_recovery)); @@ -12041,9 +12041,9 @@ BUILDIN(petheal) if (pd->s_skill->timer != INVALID_TIMER) { if (pd->s_skill->id) - delete_timer(pd->s_skill->timer, pet_skill_support_timer); + iTimer->delete_timer(pd->s_skill->timer, pet_skill_support_timer); else - delete_timer(pd->s_skill->timer, pet_heal_timer); + iTimer->delete_timer(pd->s_skill->timer, pet_heal_timer); } } else //init memory pd->s_skill = (struct pet_skill_support *) aMalloc(sizeof(struct pet_skill_support)); @@ -12059,7 +12059,7 @@ BUILDIN(petheal) if (battle_config.pet_equip_required && pd->pet.equip == 0) pd->s_skill->timer = INVALID_TIMER; else - pd->s_skill->timer = add_timer(gettick()+pd->s_skill->delay*1000,pet_heal_timer,sd->bl.id,0); + pd->s_skill->timer = iTimer->add_timer(iTimer->gettick()+pd->s_skill->delay*1000,pet_heal_timer,sd->bl.id,0); return true; } @@ -12135,9 +12135,9 @@ BUILDIN(petskillsupport) if (pd->s_skill->timer != INVALID_TIMER) { if (pd->s_skill->id) - delete_timer(pd->s_skill->timer, pet_skill_support_timer); + iTimer->delete_timer(pd->s_skill->timer, pet_skill_support_timer); else - delete_timer(pd->s_skill->timer, pet_heal_timer); + iTimer->delete_timer(pd->s_skill->timer, pet_heal_timer); } } else //init memory pd->s_skill = (struct pet_skill_support *) aMalloc(sizeof(struct pet_skill_support)); @@ -12152,7 +12152,7 @@ BUILDIN(petskillsupport) if (battle_config.pet_equip_required && pd->pet.equip == 0) pd->s_skill->timer = INVALID_TIMER; else - pd->s_skill->timer = add_timer(gettick()+pd->s_skill->delay*1000,pet_skill_support_timer,sd->bl.id,0); + pd->s_skill->timer = iTimer->add_timer(iTimer->gettick()+pd->s_skill->delay*1000,pet_skill_support_timer,sd->bl.id,0); return true; } @@ -12182,7 +12182,7 @@ BUILDIN(skilleffect) /// npcskilleffect "<skill name>",<level>,<x>,<y> BUILDIN(npcskilleffect) { - struct block_list *bl= map_id2bl(st->oid); + struct block_list *bl= iMap->id2bl(st->oid); uint16 skill_id=( script_isstring(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); uint16 skill_lv=script_getnum(st,3); @@ -12190,7 +12190,7 @@ BUILDIN(npcskilleffect) int y=script_getnum(st,5); if (bl) - clif->skill_poseffect(bl,skill_id,skill_lv,x,y,gettick()); + clif->skill_poseffect(bl,skill_id,skill_lv,x,y,iTimer->gettick()); return true; } @@ -12200,7 +12200,7 @@ BUILDIN(npcskilleffect) *------------------------------------------*/ BUILDIN(specialeffect) { - struct block_list *bl=map_id2bl(st->oid); + struct block_list *bl=iMap->id2bl(st->oid); int type = script_getnum(st,2); enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA; @@ -12234,7 +12234,7 @@ BUILDIN(specialeffect2) enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA; if( script_hasdata(st,4) ) - sd = map_nick2sd(script_getstr(st,4)); + sd = iMap->nick2sd(script_getstr(st,4)); if (sd) clif->specialeffect(&sd->bl, type, target); @@ -12257,7 +12257,7 @@ BUILDIN(nude) if( sd->equip_index[ i ] >= 0 ) { if( !calcflag ) calcflag = 1; - pc_unequipitem( sd , sd->equip_index[ i ] , 2); + iPc->unequipitem( sd , sd->equip_index[ i ] , 2); } } @@ -12289,7 +12289,7 @@ BUILDIN(atcommand) memset(&dummy_sd, 0, sizeof(TBL_PC)); if (st->oid) { - struct block_list* bl = map_id2bl(st->oid); + struct block_list* bl = iMap->id2bl(st->oid); memcpy(&dummy_sd.bl, bl, sizeof(struct block_list)); if (bl->type == BL_NPC) safestrncpy(dummy_sd.status.name, ((TBL_NPC*)bl)->name, NAME_LENGTH); @@ -12423,7 +12423,7 @@ BUILDIN(getmercinfo) { char_id = script_getnum(st,3); - if( ( sd = map_charid2sd(char_id) ) == NULL ) + if( ( sd = iMap->charid2sd(char_id) ) == NULL ) { ShowError("buildin_getmercinfo: No such character (char_id=%d).\n", char_id); script_pushnil(st); @@ -12546,7 +12546,7 @@ BUILDIN(message) player = script_getstr(st,2); msg = script_getstr(st,3); - if((pl_sd=map_nick2sd((char *) player)) == NULL) + if((pl_sd=iMap->nick2sd((char *) player)) == NULL) return true; clif->message(pl_sd->fd, msg); @@ -12561,7 +12561,7 @@ BUILDIN(npctalk) const char* str; char name[NAME_LENGTH], message[256]; - struct npc_data* nd = (struct npc_data *)map_id2bl(st->oid); + struct npc_data* nd = (struct npc_data *)iMap->id2bl(st->oid); str = script_getstr(st,2); if(nd) @@ -12582,7 +12582,7 @@ BUILDIN(npcspeed) int speed; speed = script_getnum(st,2); - nd =(struct npc_data *)map_id2bl(st->oid); + nd =(struct npc_data *)iMap->id2bl(st->oid); if( nd ) { if( nd->ud == &npc_base_ud ) { @@ -12598,7 +12598,7 @@ BUILDIN(npcspeed) } // make an npc walk to a position [Valaris] BUILDIN(npcwalkto) { - struct npc_data *nd=(struct npc_data *)map_id2bl(st->oid); + struct npc_data *nd=(struct npc_data *)iMap->id2bl(st->oid); int x=0,y=0; x=script_getnum(st,2); @@ -12624,7 +12624,7 @@ BUILDIN(npcwalkto) { // stop an npc's movement [Valaris] BUILDIN(npcstop) { - struct npc_data *nd=(struct npc_data *)map_id2bl(st->oid); + struct npc_data *nd=(struct npc_data *)iMap->id2bl(st->oid); if(nd) { unit_stop_walking(&nd->bl,1|4); @@ -12745,7 +12745,7 @@ BUILDIN(getmapxy) switch (type){ case 0: //Get Character Position if( script_hasdata(st,6) ) - sd=map_nick2sd(script_getstr(st,6)); + sd=iMap->nick2sd(script_getstr(st,6)); else sd=script_rid2sd(st); @@ -12760,11 +12760,11 @@ BUILDIN(getmapxy) if (nd) bl = &nd->bl; } else //In case the origin is not an npc? - bl=map_id2bl(st->oid); + bl=iMap->id2bl(st->oid); break; case 2: //Get Pet Position if(script_hasdata(st,6)) - sd=map_nick2sd(script_getstr(st,6)); + sd=iMap->nick2sd(script_getstr(st,6)); else sd=script_rid2sd(st); @@ -12775,7 +12775,7 @@ BUILDIN(getmapxy) break; //Not supported? case 4: //Get Homun Position if(script_hasdata(st,6)) - sd=map_nick2sd(script_getstr(st,6)); + sd=iMap->nick2sd(script_getstr(st,6)); else sd=script_rid2sd(st); @@ -12784,7 +12784,7 @@ BUILDIN(getmapxy) break; case 5: //Get Mercenary Position if(script_hasdata(st,6)) - sd=map_nick2sd(script_getstr(st,6)); + sd=iMap->nick2sd(script_getstr(st,6)); else sd=script_rid2sd(st); @@ -12793,7 +12793,7 @@ BUILDIN(getmapxy) break; case 6: //Get Elemental Position if(script_hasdata(st,6)) - sd=map_nick2sd(script_getstr(st,6)); + sd=iMap->nick2sd(script_getstr(st,6)); else sd=script_rid2sd(st); @@ -12875,7 +12875,7 @@ BUILDIN(summon) const char *str,*event=""; TBL_PC *sd; struct mob_data *md; - int tick = gettick(); + int tick = iTimer->gettick(); sd=script_rid2sd(st); if (!sd) return true; @@ -12896,8 +12896,8 @@ BUILDIN(summon) md->master_id=sd->bl.id; md->special_state.ai = AI_ATTACK; if( md->deletetimer != INVALID_TIMER ) - delete_timer(md->deletetimer, mob_timer_delete); - md->deletetimer = add_timer(tick+(timeout>0?timeout*1000:60000),mob_timer_delete,md->bl.id,0); + iTimer->delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = iTimer->add_timer(tick+(timeout>0?timeout*1000:60000),mob_timer_delete,md->bl.id,0); mob_spawn (md); //Now it is ready for spawning. clif->specialeffect(&md->bl,344,AREA); sc_start4(&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000); @@ -12910,13 +12910,13 @@ BUILDIN(summon) *------------------------------------------*/ BUILDIN(isnight) { - script_pushint(st,(night_flag == 1)); + script_pushint(st,(iMap->night_flag == 1)); return true; } BUILDIN(isday) { - script_pushint(st,(night_flag == 0)); + script_pushint(st,(iMap->night_flag == 0)); return true; } @@ -13116,12 +13116,12 @@ BUILDIN(getrefine) *-------------------------------------------------------*/ BUILDIN(night) { - if (night_flag != 1) map_night_timer(night_timer_tid, 0, 0, 1); + if (iMap->night_flag != 1) iPc->map_night_timer(iPc->night_timer_tid, 0, 0, 1); return true; } BUILDIN(day) { - if (night_flag != 0) map_day_timer(day_timer_tid, 0, 0, 1); + if (iMap->night_flag != 0) iPc->map_day_timer(iPc->day_timer_tid, 0, 0, 1); return true; } @@ -13138,9 +13138,9 @@ BUILDIN(unequip) sd = script_rid2sd(st); if( sd != NULL && num >= 1 && num <= ARRAYLENGTH(equip) ) { - i = pc_checkequip(sd,equip[num-1]); + i = iPc->checkequip(sd,equip[num-1]); if (i >= 0) - pc_unequipitem(sd,i,1|2); + iPc->unequipitem(sd,i,1|2); } return true; } @@ -13161,7 +13161,7 @@ BUILDIN(equip) } ARR_FIND( 0, MAX_INVENTORY, i, sd->status.inventory[i].nameid == nameid ); if( i < MAX_INVENTORY ) - pc_equipitem(sd,i,item_data->equip); + iPc->equipitem(sd,i,item_data->equip); return true; } @@ -14484,7 +14484,7 @@ BUILDIN(npcshopattach) } if (flag) - nd->master_nd = ((struct npc_data *)map_id2bl(st->oid)); + nd->master_nd = ((struct npc_data *)iMap->id2bl(st->oid)); else nd->master_nd = NULL; @@ -14618,7 +14618,7 @@ BUILDIN(checkvending) // check vending [Nab4] TBL_PC *sd = NULL; if(script_hasdata(st,2)) - sd = map_nick2sd(script_getstr(st,2)); + sd = iMap->nick2sd(script_getstr(st,2)); else sd = script_rid2sd(st); @@ -14636,7 +14636,7 @@ BUILDIN(checkchatting) // check chatting [Marka] TBL_PC *sd = NULL; if(script_hasdata(st,2)) - sd = map_nick2sd(script_getstr(st,2)); + sd = iMap->nick2sd(script_getstr(st,2)); else sd = script_rid2sd(st); @@ -14653,7 +14653,7 @@ BUILDIN(checkidle) TBL_PC *sd = NULL; if (script_hasdata(st, 2)) - sd = map_nick2sd(script_getstr(st, 2)); + sd = iMap->nick2sd(script_getstr(st, 2)); else sd = script_rid2sd(st); @@ -14780,7 +14780,7 @@ BUILDIN(rid2name) { struct block_list *bl = NULL; int rid = script_getnum(st,2); - if((bl = map_id2bl(rid))) + if((bl = iMap->id2bl(rid))) { switch(bl->type) { case BL_MOB: script_pushstrcopy(st,((TBL_MOB*)bl)->name); break; @@ -14810,7 +14810,7 @@ BUILDIN(pcblockmove) flag = script_getnum(st,3); if(id) - sd = map_id2sd(id); + sd = iMap->id2sd(id); else sd = script_rid2sd(st); @@ -14830,12 +14830,12 @@ BUILDIN(pcfollow) targetid = script_getnum(st,3); if(id) - sd = map_id2sd(id); + sd = iMap->id2sd(id); else sd = script_rid2sd(st); if(sd) - pc_follow(sd, targetid); + iPc->follow(sd, targetid); return true; } @@ -14849,12 +14849,12 @@ BUILDIN(pcstopfollow) id = script_getnum(st,2); if(id) - sd = map_id2sd(id); + sd = iMap->id2sd(id); else sd = script_rid2sd(st); if(sd) - pc_stop_following(sd); + iPc->stop_following(sd); return true; } @@ -14871,7 +14871,7 @@ BUILDIN(unitwalk) { struct block_list* bl; - bl = map_id2bl(script_getnum(st,2)); + bl = iMap->id2bl(script_getnum(st,2)); if( bl == NULL ) { script_pushint(st, 0); @@ -14885,7 +14885,7 @@ BUILDIN(unitwalk) else { int map_id = script_getnum(st,3); - script_pushint(st, unit_walktobl(bl,map_id2bl(map_id),65025,1)); + script_pushint(st, unit_walktobl(bl,iMap->id2bl(map_id),65025,1)); } return true; @@ -14896,7 +14896,7 @@ BUILDIN(unitwalk) /// unitkill <unit_id>; BUILDIN(unitkill) { - struct block_list* bl = map_id2bl(script_getnum(st,2)); + struct block_list* bl = iMap->id2bl(script_getnum(st,2)); if( bl != NULL ) status_kill(bl); @@ -14922,14 +14922,14 @@ BUILDIN(unitwarp) y = (short)script_getnum(st,5); if (!unit_id) //Warp the script's runner - bl = map_id2bl(st->rid); + bl = iMap->id2bl(st->rid); else - bl = map_id2bl(unit_id); + bl = iMap->id2bl(unit_id); if( strcmp(mapname,"this") == 0 ) map = bl?bl->m:-1; else - map = map_mapname2mapid(mapname); + map = iMap->mapname2mapid(mapname); if( map >= 0 && bl != NULL ) script_pushint(st, unit_warp(bl,map,x,y,CLR_OUTSIGHT)); @@ -14954,7 +14954,7 @@ BUILDIN(unitattack) int actiontype = 0; // get unit - unit_bl = map_id2bl(script_getnum(st,2)); + unit_bl = iMap->id2bl(script_getnum(st,2)); if( unit_bl == NULL ) { script_pushint(st, 0); return true; @@ -14964,11 +14964,11 @@ BUILDIN(unitattack) get_val(st, data); if( data_isstring(data) ) { - TBL_PC* sd = map_nick2sd(script->conv_str(st, data)); + TBL_PC* sd = iMap->nick2sd(script->conv_str(st, data)); if( sd != NULL ) target_bl = &sd->bl; } else - target_bl = map_id2bl(script->conv_num(st, data)); + target_bl = iMap->id2bl(script->conv_num(st, data)); // request the attack if( target_bl == NULL ) { @@ -14983,7 +14983,7 @@ BUILDIN(unitattack) switch( unit_bl->type ) { case BL_PC: - clif->pActionRequest_sub(((TBL_PC *)unit_bl), actiontype > 0 ? 0x07 : 0x00, target_bl->id, gettick()); + clif->pActionRequest_sub(((TBL_PC *)unit_bl), actiontype > 0 ? 0x07 : 0x00, target_bl->id, iTimer->gettick()); script_pushint(st, 1); return true; case BL_MOB: @@ -15011,7 +15011,7 @@ BUILDIN(unitstop) unit_id = script_getnum(st,2); - bl = map_id2bl(unit_id); + bl = iMap->id2bl(unit_id); if( bl != NULL ) { unit_stop_attack(bl); @@ -15035,7 +15035,7 @@ BUILDIN(unittalk) unit_id = script_getnum(st,2); message = script_getstr(st, 3); - bl = map_id2bl(unit_id); + bl = iMap->id2bl(unit_id); if( bl != NULL ) { struct StringBuf sbuf; @@ -15063,7 +15063,7 @@ BUILDIN(unitemote) unit_id = script_getnum(st,2); emotion = script_getnum(st,3); - bl = map_id2bl(unit_id); + bl = iMap->id2bl(unit_id); if( bl != NULL ) clif->emotion(bl, emotion); @@ -15087,7 +15087,7 @@ BUILDIN(unitskilluseid) skill_lv = script_getnum(st,4); target_id = ( script_hasdata(st,5) ? script_getnum(st,5) : unit_id ); - bl = map_id2bl(unit_id); + bl = iMap->id2bl(unit_id); if( bl != NULL ) unit_skilluse_id(bl, target_id, skill_id, skill_lv); @@ -15113,7 +15113,7 @@ BUILDIN(unitskillusepos) skill_x = script_getnum(st,5); skill_y = script_getnum(st,6); - bl = map_id2bl(unit_id); + bl = iMap->id2bl(unit_id); if( bl != NULL ) unit_skilluse_pos(bl, skill_x, skill_y, skill_id, skill_lv); @@ -15162,7 +15162,7 @@ BUILDIN(sleep2) if( ticks <= 0 ) {// do nothing - script_pushint(st, (map_id2sd(st->rid)!=NULL)); + script_pushint(st, (iMap->id2sd(st->rid)!=NULL)); } else if( !st->sleep.tick ) {// sleep for the target amount of time @@ -15173,7 +15173,7 @@ BUILDIN(sleep2) {// sleep time is over st->state = RUN; st->sleep.tick = 0; - script_pushint(st, (map_id2sd(st->rid)!=NULL)); + script_pushint(st, (iMap->id2sd(st->rid)!=NULL)); } return true; } @@ -15197,7 +15197,7 @@ BUILDIN(awake) if( (int)__64BPTRSIZE(node->key) == nd->bl.id ) {// sleep timer for the npc struct script_state* tst = (struct script_state*)node->data; - TBL_PC* sd = map_id2sd(tst->rid); + TBL_PC* sd = iMap->id2sd(tst->rid); if( tst->sleep.timer == INVALID_TIMER ) {// already awake ??? @@ -15210,7 +15210,7 @@ BUILDIN(awake) tst->rid = 0; } - delete_timer(tst->sleep.timer, run_script_timer); + iTimer->delete_timer(tst->sleep.timer, run_script_timer); node = script_erase_sleepdb(node); tst->sleep.timer = INVALID_TIMER; if(tst->state != RERUNLINE) @@ -15284,7 +15284,7 @@ BUILDIN(warpportal) struct skill_unit_group* group; struct block_list* bl; - bl = map_id2bl(st->oid); + bl = iMap->id2bl(st->oid); if( bl == NULL ) { ShowError("script:warpportal: npc is needed\n"); @@ -15343,12 +15343,12 @@ BUILDIN(openauction) /// @see cell_chk* constants in const.txt for the types BUILDIN(checkcell) { - int16 m = map_mapname2mapid(script_getstr(st,2)); + int16 m = iMap->mapname2mapid(script_getstr(st,2)); int16 x = script_getnum(st,3); int16 y = script_getnum(st,4); cell_chk type = (cell_chk)script_getnum(st,5); - script_pushint(st, map_getcell(m, x, y, type)); + script_pushint(st, iMap->getcell(m, x, y, type)); return true; } @@ -15360,7 +15360,7 @@ BUILDIN(checkcell) /// @see cell_* constants in const.txt for the types BUILDIN(setcell) { - int16 m = map_mapname2mapid(script_getstr(st,2)); + int16 m = iMap->mapname2mapid(script_getstr(st,2)); int16 x1 = script_getnum(st,3); int16 y1 = script_getnum(st,4); int16 x2 = script_getnum(st,5); @@ -15630,7 +15630,7 @@ BUILDIN(checkquest) BUILDIN(showevent) { TBL_PC *sd = script_rid2sd(st); - struct npc_data *nd = map_id2nd(st->oid); + struct npc_data *nd = iMap->id2nd(st->oid); int state, color; if( sd == NULL || nd == NULL ) @@ -15659,9 +15659,9 @@ BUILDIN(waitingroom2bg) if( script_hasdata(st,7) ) nd = npc_name2id(script_getstr(st,7)); else - nd = (struct npc_data *)map_id2bl(st->oid); + nd = (struct npc_data *)iMap->id2bl(st->oid); - if( nd == NULL || (cd = (struct chat_data *)map_id2bl(nd->chat_id)) == NULL ) + if( nd == NULL || (cd = (struct chat_data *)iMap->id2bl(nd->chat_id)) == NULL ) { script_pushint(st,0); return true; @@ -15720,7 +15720,7 @@ BUILDIN(waitingroom2bg_single) y = script_getnum(st,5); nd = npc_name2id(script_getstr(st,6)); - if( nd == NULL || (cd = (struct chat_data *)map_id2bl(nd->chat_id)) == NULL || cd->users <= 0 ) + if( nd == NULL || (cd = (struct chat_data *)iMap->id2bl(nd->chat_id)) == NULL || cd->users <= 0 ) return true; if( (sd = cd->usersd[0]) == NULL ) @@ -15728,7 +15728,7 @@ BUILDIN(waitingroom2bg_single) if( bg_team_join(bg_id, sd) ) { - pc_setpos(sd, mapindex, x, y, CLR_TELEPORT); + iPc->setpos(sd, mapindex, x, y, CLR_TELEPORT); script_pushint(st,1); } else @@ -15790,7 +15790,7 @@ BUILDIN(bg_monster_set_team) int id = script_getnum(st,2), bg_id = script_getnum(st,3); - if( (mbl = map_id2bl(id)) == NULL || mbl->type != BL_MOB ) + if( (mbl = iMap->id2bl(id)) == NULL || mbl->type != BL_MOB ) return true; md = (TBL_MOB *)mbl; md->bg_id = bg_id; @@ -15832,7 +15832,7 @@ BUILDIN(bg_getareausers) bg_id = script_getnum(st,2); str = script_getstr(st,3); - if( (bg = bg_team_search(bg_id)) == NULL || (m = map_mapname2mapid(str)) < 0 ) + if( (bg = bg_team_search(bg_id)) == NULL || (m = iMap->mapname2mapid(str)) < 0 ) { script_pushint(st,0); return true; @@ -15862,7 +15862,7 @@ BUILDIN(bg_updatescore) int16 m; str = script_getstr(st,2); - if( (m = map_mapname2mapid(str)) < 0 ) + if( (m = iMap->mapname2mapid(str)) < 0 ) return true; map[m].bgscore_lion = script_getnum(st,3); @@ -15989,7 +15989,7 @@ BUILDIN(instance_detachmap) { instance_id = st->instance_id; else return true; - if( (m = map_mapname2mapid(str)) < 0 || (m = instance->map2imap(m,instance_id)) < 0 ) { + if( (m = iMap->mapname2mapid(str)) < 0 || (m = instance->map2imap(m,instance_id)) < 0 ) { ShowError("buildin_instance_detachmap: Trying to detach invalid map %s\n", str); return true; } @@ -16074,7 +16074,7 @@ BUILDIN(instance_announce) { return true; for( i = 0; i < instances[instance_id].num_map; i++ ) - map_foreachinmap(buildin_announce_sub, instances[instance_id].map[i], BL_PC, + iMap->foreachinmap(buildin_announce_sub, instances[instance_id].map[i], BL_PC, mes, strlen(mes)+1, flag&0xf0, fontColor, fontType, fontSize, fontAlign, fontY); return true; @@ -16112,7 +16112,7 @@ BUILDIN(has_instance) { str = script_getstr(st, 2); - if( (m = map_mapname2mapid(str)) < 0 ) { + if( (m = iMap->mapname2mapid(str)) < 0 ) { script_pushconststr(st, ""); return true; } @@ -16133,7 +16133,7 @@ BUILDIN(has_instance) { if( i != sd->instances ) instance_id = sd->instance[i]; } - if( instance_id == -1 && sd->status.party_id && (p = party_search(sd->status.party_id)) && p->instances ) { + if( instance_id == -1 && sd->status.party_id && (p = iParty->search(sd->status.party_id)) && p->instances ) { for( i = 0; i < p->instances; i++ ) { ARR_FIND(0, instances[p->instance[i]].num_map, j, map[instances[p->instance[i]].map[j]].instance_src_map == m); if( j != instances[p->instance[i]].num_map ) @@ -16167,7 +16167,7 @@ static int buildin_instance_warpall_sub(struct block_list *bl,va_list ap) { int x = va_arg(ap,int); int y = va_arg(ap,int); - pc_setpos(sd,mapindex,x,y,CLR_TELEPORT); + iPc->setpos(sd,mapindex,x,y,CLR_TELEPORT); return 0; } @@ -16189,12 +16189,12 @@ BUILDIN(instance_warpall) { else return true; - if( (m = map_mapname2mapid(mapn)) < 0 || (map[m].flag.src4instance && (m = instance->mapid2imapid(m, instance_id)) < 0) ) + if( (m = iMap->mapname2mapid(mapn)) < 0 || (map[m].flag.src4instance && (m = instance->mapid2imapid(m, instance_id)) < 0) ) return true; mapindex = map_id2index(m); - map_foreachininstance(buildin_instance_warpall_sub, instance_id, BL_PC,mapindex,x,y); + iMap->foreachininstance(buildin_instance_warpall_sub, instance_id, BL_PC,mapindex,x,y); return true; } @@ -16230,14 +16230,14 @@ BUILDIN(instance_check_party) { party_id = script_getnum(st,2); else return true; - if( !(p = party_search(party_id)) ){ + if( !(p = iParty->search(party_id)) ){ script_pushint(st, 0); // Returns false if party does not exist. return true; } for( i = 0; i < MAX_PARTY; i++ ) if( (pl_sd = p->data[i].sd) ) - if(map_id2bl(pl_sd->bl.id)){ + if(iMap->id2bl(pl_sd->bl.id)){ if(pl_sd->status.base_level < min){ script_pushint(st, 0); return true; @@ -16293,9 +16293,9 @@ static int buildin_mobuseskill_sub(struct block_list *bl,va_list ap) // 0:self, 1:target, 2:master, default:random switch( target ) { - case 0: tbl = map_id2bl(md->bl.id); break; - case 1: tbl = map_id2bl(md->target_id); break; - case 2: tbl = map_id2bl(md->master_id); break; + case 0: tbl = iMap->id2bl(md->bl.id); break; + case 1: tbl = iMap->id2bl(md->target_id); break; + case 2: tbl = iMap->id2bl(md->master_id); break; default:tbl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md),skill->get_range2(&md->bl, skill_id, skill_lv)); break; } @@ -16323,7 +16323,7 @@ BUILDIN(areamobuseskill) int16 m; int range,mobid,skill_id,skill_lv,casttime,emotion,target,cancel; - if( (m = map_mapname2mapid(script_getstr(st,2))) < 0 ) { + if( (m = iMap->mapname2mapid(script_getstr(st,2))) < 0 ) { ShowError("areamobuseskill: invalid map name.\n"); return true; } @@ -16343,7 +16343,7 @@ BUILDIN(areamobuseskill) emotion = script_getnum(st,11); target = script_getnum(st,12); - map_foreachinrange(buildin_mobuseskill_sub, ¢er, range, BL_MOB, mobid, skill_id, skill_lv, casttime, cancel, emotion, target); + iMap->foreachinrange(buildin_mobuseskill_sub, ¢er, range, BL_MOB, mobid, skill_id, skill_lv, casttime, cancel, emotion, target); return true; } @@ -16363,7 +16363,7 @@ BUILDIN(progressbar) second = script_getnum(st,3); sd->progressbar.npc_id = st->oid; - sd->progressbar.timeout = gettick() + second*1000; + sd->progressbar.timeout = iTimer->gettick() + second*1000; clif->progressbar(sd, strtol(color, (char **)NULL, 0), second); return true; @@ -16524,10 +16524,10 @@ BUILDIN(setdragon) { if( (sd = script_rid2sd(st)) == NULL ) return true; - if( !pc_checkskill(sd,RK_DRAGONTRAINING) || (sd->class_&MAPID_THIRDMASK) != MAPID_RUNE_KNIGHT ) + if( !iPc->checkskill(sd,RK_DRAGONTRAINING) || (sd->class_&MAPID_THIRDMASK) != MAPID_RUNE_KNIGHT ) script_pushint(st,0);//Doesn't have the skill or it's not a Rune Knight else if ( pc_isridingdragon(sd) ) {//Is mounted; release - pc_setoption(sd, sd->sc.option&~OPTION_DRAGON); + iPc->setoption(sd, sd->sc.option&~OPTION_DRAGON); script_pushint(st,1); } else {//Not mounted; Mount now. unsigned int option = OPTION_DRAGON1; @@ -16542,7 +16542,7 @@ BUILDIN(setdragon) { option = OPTION_DRAGON1; } } - pc_setoption(sd, sd->sc.option|option); + iPc->setoption(sd, sd->sc.option|option); script_pushint(st,1); } return true; @@ -16612,12 +16612,12 @@ BUILDIN(getcharip) if( script_hasdata(st, 2) ) { if (script_isstring(st, 2)) - sd = map_nick2sd(script_getstr(st, 2)); + sd = iMap->nick2sd(script_getstr(st, 2)); else if (script_isint(st, 2) || script_getnum(st, 2)) { int id; id = script_getnum(st, 2); - sd = (map_id2sd(id) ? map_id2sd(id) : map_charid2sd(id)); + sd = (iMap->id2sd(id) ? iMap->id2sd(id) : iMap->charid2sd(id)); } } else @@ -16803,7 +16803,7 @@ BUILDIN(useatcmd) memset(&dummy_sd, 0, sizeof(TBL_PC)); if( st->oid ) { - struct block_list* bl = map_id2bl(st->oid); + struct block_list* bl = iMap->id2bl(st->oid); memcpy(&dummy_sd.bl, bl, sizeof(struct block_list)); if( bl->type == BL_NPC ) safestrncpy(dummy_sd.status.name, ((TBL_NPC*)bl)->name, NAME_LENGTH); @@ -16921,10 +16921,10 @@ BUILDIN(getrandgroupitem) { for (i = 0; i < qty; i += get_count) { // if not pet egg if (!pet_create_egg(sd, nameid)) { - if ((flag = pc_additem(sd, &item_tmp, get_count, LOG_TYPE_SCRIPT))) { + if ((flag = iPc->additem(sd, &item_tmp, get_count, LOG_TYPE_SCRIPT))) { clif->additem(sd, 0, 0, flag); - if( pc_candrop(sd,&item_tmp) ) - map_addflooritem(&item_tmp,get_count,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + if( iPc->candrop(sd,&item_tmp) ) + iMap->addflooritem(&item_tmp,get_count,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } } @@ -16937,7 +16937,7 @@ BUILDIN(getrandgroupitem) { static int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) { nullpo_ret(bl); - map_clearflooritem(bl); + iMap->clearflooritem(bl); return 0; } @@ -16949,19 +16949,19 @@ BUILDIN(cleanmap) int16 x0 = 0, y0 = 0, x1 = 0, y1 = 0; map = script_getstr(st, 2); - m = map_mapname2mapid(map); + m = iMap->mapname2mapid(map); if (!m) return false; if ((script_lastdata(st) - 2) < 4) { - map_foreachinmap(atcommand_cleanfloor_sub, m, BL_ITEM); + iMap->foreachinmap(atcommand_cleanfloor_sub, m, BL_ITEM); } else { x0 = script_getnum(st, 3); y0 = script_getnum(st, 4); x1 = script_getnum(st, 5); y1 = script_getnum(st, 6); if (x0 > 0 && y0 > 0 && x1 > 0 && y1 > 0) { - map_foreachinarea(atcommand_cleanfloor_sub, m, x0, y0, x1, y1, BL_ITEM); + iMap->foreachinarea(atcommand_cleanfloor_sub, m, x0, y0, x1, y1, BL_ITEM); } else { ShowError("cleanarea: invalid coordinate defined!\n"); return false; @@ -16987,7 +16987,7 @@ BUILDIN(npcskill) stat_point = script_getnum(st, 4); npc_level = script_getnum(st, 5); sd = script_rid2sd(st); - nd = (struct npc_data *)map_id2bl(sd->npc_id); + nd = (struct npc_data *)iMap->id2bl(sd->npc_id); if (stat_point > battle_config.max_third_parameter) { ShowError("npcskill: stat point exceeded maximum of %d.\n",battle_config.max_third_parameter ); @@ -17090,7 +17090,7 @@ bool script_hqueue_add(int idx, int var) { script->hq[idx].item[i] = var; - if( var >= START_ACCOUNT_NUM && (sd = map_id2sd(var)) ) { + if( var >= START_ACCOUNT_NUM && (sd = iMap->id2sd(var)) ) { for(i = 0; i < sd->queues_count; i++) { if( sd->queues[i] == -1 ) { break; @@ -17134,7 +17134,7 @@ bool script_hqueue_remove(int idx, int var) { struct map_session_data *sd; script->hq[idx].item[i] = 0; - if( var >= START_ACCOUNT_NUM && (sd = map_id2sd(var)) ) { + if( var >= START_ACCOUNT_NUM && (sd = iMap->id2sd(var)) ) { for(i = 0; i < sd->queues_count; i++) { if( sd->queues[i] == var ) { break; @@ -17212,7 +17212,7 @@ bool script_hqueue_del(int idx) { int i; for(i = 0; i < script->hq[idx].items; i++) { - if( script->hq[idx].item[i] >= START_ACCOUNT_NUM && (sd = map_id2sd(script->hq[idx].item[i])) ) { + if( script->hq[idx].item[i] >= START_ACCOUNT_NUM && (sd = iMap->id2sd(script->hq[idx].item[i])) ) { int j; for(j = 0; j < sd->queues_count; j++) { if( sd->queues[j] == script->hq[idx].item[i] ) { diff --git a/src/map/searchstore.c b/src/map/searchstore.c index 7e1ee3e84..3cda77e4a 100644 --- a/src/map/searchstore.c +++ b/src/map/searchstore.c @@ -273,7 +273,7 @@ void searchstore_click(struct map_session_data* sd, int account_id, int store_id return; } - if( ( pl_sd = map_id2sd(account_id) ) == NULL ) {// no longer online + if( ( pl_sd = iMap->id2sd(account_id) ) == NULL ) {// no longer online clif->search_store_info_failed(sd, SSI_FAILED_SSILIST_CLICK_TO_OPEN_STORE); return; } diff --git a/src/map/skill.c b/src/map/skill.c index 0799dc1de..676a6e463 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -248,7 +248,7 @@ int skill_get_fixed_cast( uint16 skill_id ,uint16 skill_lv ){ skill_get2 (skill_ int skill_tree_get_max(uint16 skill_id, int b_class) { int i; - b_class = pc_class2idx(b_class); + b_class = iPc->class2idx(b_class); ARR_FIND( 0, MAX_SKILL_TREE, i, skill_tree[b_class][i].id == 0 || skill_tree[b_class][i].id == skill_id ); if( i < MAX_SKILL_TREE && skill_tree[b_class][i].id == skill_id ) @@ -322,7 +322,7 @@ int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { case RA_AIMEDBOLT: case RA_WUGBITE: if( bl->type == BL_PC ) - range += pc_checkskill((TBL_PC*)bl, AC_VULTURE); + range += iPc->checkskill((TBL_PC*)bl, AC_VULTURE); else range += 10; //Assume level 10? break; @@ -333,13 +333,13 @@ int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { case GS_SPREADATTACK: case GS_GROUNDDRIFT: if (bl->type == BL_PC) - range += pc_checkskill((TBL_PC*)bl, GS_SNAKEEYE); + range += iPc->checkskill((TBL_PC*)bl, GS_SNAKEEYE); else range += 10; //Assume level 10? break; case NJ_KIRIKAGE: if (bl->type == BL_PC) - range = skill->get_range(NJ_SHADOWJUMP,pc_checkskill((TBL_PC*)bl,NJ_SHADOWJUMP)); + range = skill->get_range(NJ_SHADOWJUMP,iPc->checkskill((TBL_PC*)bl,NJ_SHADOWJUMP)); break; /** * Warlock @@ -357,7 +357,7 @@ int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { case WL_TETRAVORTEX: case WL_RELEASE: if( bl->type == BL_PC ) - range += pc_checkskill((TBL_PC*)bl, WL_RADIUS); + range += iPc->checkskill((TBL_PC*)bl, WL_RADIUS); break; /** * Ranger Bonus @@ -370,7 +370,7 @@ int skill_get_range2 (struct block_list *bl, uint16 skill_id, uint16 skill_lv) { case RA_FIRINGTRAP: case RA_ICEBOUNDTRAP: if( bl->type == BL_PC ) - range += (1 + pc_checkskill((TBL_PC*)bl, RA_RESEARCHTRAP))/2; + range += (1 + iPc->checkskill((TBL_PC*)bl, RA_RESEARCHTRAP))/2; } if( !range && bl->type != BL_PC ) @@ -392,7 +392,7 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk hp = 30+5*skill_lv+5*(status_get_vit(src)/10); // HP recovery #endif if( sd ) - hp += 5*pc_checkskill(sd,BA_MUSICALLESSON); + hp += 5*iPc->checkskill(sd,BA_MUSICALLESSON); break; case PR_SANCTUARY: hp = (skill_lv>6)?777:skill_lv*100; @@ -406,13 +406,13 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk #ifdef RENEWAL /** * Renewal Heal Formula - * Formula: ( [(Base Level + INT) / 5] × 30 ) × (Heal Level / 10) × (Modifiers) + MATK + * Formula: ( [(Base Level + INT) / 5] � 30 ) � (Heal Level / 10) � (Modifiers) + MATK **/ hp = (status_get_lv(src) + status_get_int(src)) / 5 * 30 * skill_lv / 10; #else - hp = ( status_get_lv(src) + status_get_int(src) ) / 8 * (4 + ( skill_id == AB_HIGHNESSHEAL ? ( sd ? pc_checkskill(sd,AL_HEAL) : 10 ) : skill_lv ) * 8); + hp = ( status_get_lv(src) + status_get_int(src) ) / 8 * (4 + ( skill_id == AB_HIGHNESSHEAL ? ( sd ? iPc->checkskill(sd,AL_HEAL) : 10 ) : skill_lv ) * 8); #endif - if( sd && ((skill = pc_checkskill(sd, HP_MEDITATIO)) > 0) ) + if( sd && ((skill = iPc->checkskill(sd, HP_MEDITATIO)) > 0) ) hp += hp * skill * 2 / 100; else if( src->type == BL_HOM && (skill = homun->checkskill(((TBL_HOM*)src), HLIF_BRAIN)) > 0 ) hp += hp * skill * 2 / 100; @@ -422,10 +422,10 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk if( ( (target && target->type == BL_MER) || !heal ) && skill_id != NPC_EVILLAND ) hp >>= 1; - if( sd && (skill = pc_skillheal_bonus(sd, skill_id)) ) + if( sd && (skill = iPc->skillheal_bonus(sd, skill_id)) ) hp += hp*skill/100; - if( tsd && (skill = pc_skillheal2_bonus(tsd, skill_id)) ) + if( tsd && (skill = iPc->skillheal2_bonus(tsd, skill_id)) ) hp += hp*skill/100; sc = status_get_sc(target); @@ -532,7 +532,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd) // allowing a skill to be cast. This is to prevent no-delay ACT files from spamming skills such as // AC_DOUBLE which do not have a skill delay and are not regarded in terms of attack motion. if( !sd->state.autocast && sd->skillitem != skill_id && sd->canskill_tick && - DIFF_TICK(gettick(), sd->canskill_tick) < (sd->battle_status.amotion * (battle_config.skill_amotion_leniency) / 100) ) + DIFF_TICK(iTimer->gettick(), sd->canskill_tick) < (sd->battle_status.amotion * (battle_config.skill_amotion_leniency) / 100) ) {// attempted to cast a skill before the attack motion has finished return 1; } @@ -604,7 +604,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd) break; case GD_EMERGENCYCALL: if ( - !(battle_config.emergency_call&((agit_flag || agit2_flag)?2:1)) || + !(battle_config.emergency_call&((iMap->agit_flag || iMap->agit2_flag)?2:1)) || !(battle_config.emergency_call&(map[m].flag.gvg || map[m].flag.gvg_castle?8:4)) || (battle_config.emergency_call&16 && map[m].flag.nowarpto && !map[m].flag.gvg_castle) ) { @@ -701,7 +701,7 @@ struct s_skill_unit_layout* skill_get_unit_layout (uint16 skill_id, uint16 skill if (pos != -1) // simple single-definition layout return &skill_unit_layout[pos]; - dir = (src->x == x && src->y == y) ? 6 : map_calc_dir(src,x,y); // 6 - default aegis direction + dir = (src->x == x && src->y == y) ? 6 : iMap->calc_dir(src,x,y); // 6 - default aegis direction if (skill_id == MG_FIREWALL) return &skill_unit_layout [firewall_unit_pos + dir]; @@ -814,19 +814,19 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint break; // If a normal attack is a skill, it's splash damage. [Inkfish] if(sd) { // Automatic trigger of Blitz Beat - if (pc_isfalcon(sd) && sd->status.weapon == W_BOW && (temp=pc_checkskill(sd,HT_BLITZBEAT))>0 && + if (pc_isfalcon(sd) && sd->status.weapon == W_BOW && (temp=iPc->checkskill(sd,HT_BLITZBEAT))>0 && rnd()%1000 <= sstatus->luk*10/3+1 ) { rate=(sd->status.job_level+9)/10; skill->castend_damage_id(src,bl,HT_BLITZBEAT,(temp<rate)?temp:rate,tick,SD_LEVEL); } // Automatic trigger of Warg Strike [Jobbie] - if( pc_iswug(sd) && (sd->status.weapon == W_BOW || sd->status.weapon == W_FIST) && (temp=pc_checkskill(sd,RA_WUGSTRIKE)) > 0 && rnd()%1000 <= sstatus->luk*10/3+1 ) + if( pc_iswug(sd) && (sd->status.weapon == W_BOW || sd->status.weapon == W_FIST) && (temp=iPc->checkskill(sd,RA_WUGSTRIKE)) > 0 && rnd()%1000 <= sstatus->luk*10/3+1 ) skill->castend_damage_id(src,bl,RA_WUGSTRIKE,temp,tick,0); // Gank if(dstmd && sd->status.weapon != W_BOW && - (temp=pc_checkskill(sd,RG_SNATCHER)) > 0 && - (temp*15 + 55) + pc_checkskill(sd,TF_STEAL)*10 > rnd()%1000) { - if(pc_steal_item(sd,bl,pc_checkskill(sd,TF_STEAL))) + (temp=iPc->checkskill(sd,RG_SNATCHER)) > 0 && + (temp*15 + 55) + iPc->checkskill(sd,TF_STEAL)*10 > rnd()%1000) { + if(iPc->steal_item(sd,bl,iPc->checkskill(sd,TF_STEAL))) clif->skill_nodamage(src,bl,TF_STEAL,temp,1); else clif->skill_fail(sd,RG_SNATCHER,USESKILL_FAIL_LEVEL,0); @@ -874,7 +874,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint break; case SM_BASH: - if( sd && skill_lv > 5 && pc_checkskill(sd,SM_FATALBLOW)>0 ){ + if( sd && skill_lv > 5 && iPc->checkskill(sd,SM_FATALBLOW)>0 ){ //TODO: How much % per base level it actually is? sc_start(bl,SC_STUN,(5*(skill_lv-5)+(int)sd->status.base_level/10), skill_lv,skill->get_time2(SM_FATALBLOW,skill_lv)); @@ -887,7 +887,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint case AS_VENOMKNIFE: if (sd) //Poison chance must be that of Envenom. [Skotlex] - skill_lv = pc_checkskill(sd, TF_POISON); + skill_lv = iPc->checkskill(sd, TF_POISON); case TF_POISON: case AS_SPLASHER: if(!sc_start2(bl,SC_POISON,(4*skill_lv+10),skill_lv,src->id,skill->get_time2(skill_id,skill_lv)) @@ -1034,7 +1034,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint case DC_UGLYDANCE: rate = 5+5*skill_lv; - if(sd && (temp=pc_checkskill(sd,DC_DANCINGLESSON))) + if(sd && (temp=iPc->checkskill(sd,DC_DANCINGLESSON))) rate += 5+temp; status_zap(bl, 0, rate); break; @@ -1194,7 +1194,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint sc_start(bl,SC_CRITICALWOUND,100,skill_lv,skill->get_time2(skill_id,skill_lv)); break; case RK_HUNDREDSPEAR: - if( !sd || pc_checkskill(sd,KN_SPEARBOOMERANG) == 0 ) + if( !sd || iPc->checkskill(sd,KN_SPEARBOOMERANG) == 0 ) break; // Spear Boomerang auto cast chance only works if you have mastered Spear Boomerang. rate = 10 + 3 * skill_lv; if( rnd()%100 < rate ) @@ -1231,11 +1231,11 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint sc_start(bl,SC_FREEZE,100,skill_lv,skill->get_time(skill_id,skill_lv)); break; case RA_WUGBITE: - sc_start(bl, SC_BITE, (sd ? pc_checkskill(sd,RA_TOOTHOFWUG)*2 : 0), skill_lv, (skill->get_time(skill_id,skill_lv) + (sd ? pc_checkskill(sd,RA_TOOTHOFWUG)*500 : 0)) ); + sc_start(bl, SC_BITE, (sd ? iPc->checkskill(sd,RA_TOOTHOFWUG)*2 : 0), skill_lv, (skill->get_time(skill_id,skill_lv) + (sd ? iPc->checkskill(sd,RA_TOOTHOFWUG)*500 : 0)) ); break; case RA_SENSITIVEKEEN: if( rnd()%100 < 8 * skill_lv ) - skill->castend_damage_id(src, bl, RA_WUGBITE, sd ? pc_checkskill(sd, RA_WUGBITE):skill_lv, tick, SD_ANIMATION); + skill->castend_damage_id(src, bl, RA_WUGBITE, sd ? iPc->checkskill(sd, RA_WUGBITE):skill_lv, tick, SD_ANIMATION); break; case RA_FIRINGTRAP: case RA_ICEBOUNDTRAP: @@ -1261,7 +1261,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint case NC_POWERSWING: sc_start(bl, SC_STUN, 5*skill_lv, skill_lv, skill->get_time(skill_id, skill_lv)); if( rnd()%100 < 5*skill_lv ) - skill->castend_damage_id(src, bl, NC_AXEBOOMERANG, pc_checkskill(sd, NC_AXEBOOMERANG), tick, 1); + skill->castend_damage_id(src, bl, NC_AXEBOOMERANG, iPc->checkskill(sd, NC_AXEBOOMERANG), tick, 1); break; case GC_WEAPONCRUSH: skill->castend_nodamage_id(src,bl,skill_id,skill_lv,tick,BCT_ENEMY); @@ -1270,14 +1270,14 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint sc_start(bl, SC_STUN, 30 + 8 * skill_lv, skill_lv, skill->get_time(skill_id,skill_lv)); break; case LG_PINPOINTATTACK: - rate = 30 + (((5 * (sd?pc_checkskill(sd,LG_PINPOINTATTACK):skill_lv)) + (sstatus->agi + status_get_lv(src))) / 10); + rate = 30 + (((5 * (sd?iPc->checkskill(sd,LG_PINPOINTATTACK):skill_lv)) + (sstatus->agi + status_get_lv(src))) / 10); switch( skill_lv ) { case 1: sc_start2(bl,SC_BLEEDING,rate,skill_lv,src->id,skill->get_time(skill_id,skill_lv)); break; case 2: if( dstsd && dstsd->spiritball && rnd()%100 < rate ) - pc_delspiritball(dstsd, dstsd->spiritball, 0); + iPc->delspiritball(dstsd, dstsd->spiritball, 0); break; default: skill->break_equip(bl,(skill_lv == 3) ? EQP_SHIELD : (skill_lv == 4) ? EQP_ARMOR : EQP_WEAPON,rate * 100,BCT_ENEMY); @@ -1419,7 +1419,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint if (md && battle_config.summons_trigger_autospells && md->master_id && md->special_state.ai) { //Pass heritage to Master for status causing effects. [Skotlex] - sd = map_id2sd(md->master_id); + sd = iMap->id2sd(md->master_id); src = sd?&sd->bl:src; } @@ -1609,7 +1609,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, uint sd->autobonus[i].atk_type&attack_type&BF_RANGEMASK && sd->autobonus[i].atk_type&attack_type&BF_SKILLMASK)) continue; // one or more trigger conditions were not fulfilled - pc_exeautobonus(sd,&sd->autobonus[i]); + iPc->exeautobonus(sd,&sd->autobonus[i]); } } @@ -1722,7 +1722,7 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, uint1 continue; if( sd->autobonus3[i].atk_type != skill_id ) continue; - pc_exeautobonus(sd,&sd->autobonus3[i]); + iPc->exeautobonus(sd,&sd->autobonus3[i]); } } @@ -1807,9 +1807,9 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list * if(sd && skill_id && attack_type&BF_MAGIC && status_isdead(bl) && !(skill->get_inf(skill_id)&(INF_GROUND_SKILL|INF_SELF_SKILL)) && - (rate=pc_checkskill(sd,HW_SOULDRAIN))>0 + (rate=iPc->checkskill(sd,HW_SOULDRAIN))>0 ){ //Soul Drain should only work on targetted spells [Skotlex] - if (pc_issit(sd)) pc_setstand(sd); //Character stuck in attacking animation while 'sitting' fix. [Skotlex] + if (pc_issit(sd)) iPc->setstand(sd); //Character stuck in attacking animation while 'sitting' fix. [Skotlex] clif->skill_nodamage(src,bl,HW_SOULDRAIN,rate,1); status_heal(src, 0, status_get_lv(bl)*(95+15*rate)/100, 2); } @@ -1943,7 +1943,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list * dstsd->autobonus2[i].atk_type&attack_type&BF_RANGEMASK && dstsd->autobonus2[i].atk_type&attack_type&BF_SKILLMASK)) continue; // one or more trigger conditions were not fulfilled - pc_exeautobonus(dstsd,&dstsd->autobonus2[i]); + iPc->exeautobonus(dstsd,&dstsd->autobonus2[i]); } } @@ -2036,7 +2036,7 @@ int skill_break_equip (struct block_list *bl, unsigned short where, int rate, in } if (flag) { sd->status.inventory[j].attribute = 1; - pc_unequipitem(sd, j, 3); + iPc->unequipitem(sd, j, 3); } } clif->equiplist(sd); @@ -2116,7 +2116,7 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in } if (dir == -1) // <optimized>: do the computation here instead of outside - dir = map_calc_dir(target, src->x, src->y); // direction from src to target, reversed + dir = iMap->calc_dir(target, src->x, src->y); // direction from src to target, reversed if (dir >= 0 && dir < 8) { // take the reversed 'direction' and reverse it @@ -2255,9 +2255,9 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds //Spirit of Wizard blocks Kaite's reflection if( type == 2 && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_WIZARD ) { //Consume one Fragment per hit of the casted skill? [Skotlex] - type = tsd?pc_search_inventory (tsd, 7321):0; + type = tsd?iPc->search_inventory (tsd, 7321):0; if (type >= 0) { - if ( tsd ) pc_delitem(tsd, type, 1, 0, 1, LOG_TYPE_CONSUME); + if ( tsd ) iPc->delitem(tsd, type, 1, 0, 1, LOG_TYPE_CONSUME); dmg.damage = dmg.damage2 = 0; dmg.dmg_lv = ATK_MISS; sc->data[SC_SPIRIT]->val3 = skill_id; @@ -2354,12 +2354,12 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds case TK_STORMKICK: case TK_DOWNKICK: case TK_COUNTER: - if (pc_famerank(sd->status.char_id,MAPID_TAEKWON)) {//Extend combo time. + if (iPc->famerank(sd->status.char_id,MAPID_TAEKWON)) {//Extend combo time. sce->val1 = skill_id; //Update combo-skill sce->val3 = skill_id; if( sce->timer != INVALID_TIMER ) - delete_timer(sce->timer, status_change_timer); - sce->timer = add_timer(tick+sce->val4, status_change_timer, src->id, SC_COMBO); + iTimer->delete_timer(sce->timer, status_change_timer); + sce->timer = iTimer->add_timer(tick+sce->val4, status_change_timer, src->id, SC_COMBO); break; } unit_cancel_combo(src); // Cancel combo wait @@ -2371,27 +2371,27 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds } switch(skill_id) { case MO_TRIPLEATTACK: - if (pc_checkskill(sd, MO_CHAINCOMBO) > 0 || pc_checkskill(sd, SR_DRAGONCOMBO) > 0) + if (iPc->checkskill(sd, MO_CHAINCOMBO) > 0 || iPc->checkskill(sd, SR_DRAGONCOMBO) > 0) flag=1; break; case MO_CHAINCOMBO: - if(pc_checkskill(sd, MO_COMBOFINISH) > 0 && sd->spiritball > 0) + if(iPc->checkskill(sd, MO_COMBOFINISH) > 0 && sd->spiritball > 0) flag=1; break; case MO_COMBOFINISH: if (sd->status.party_id>0) //bonus from SG_FRIEND [Komurka] - party_skill_check(sd, sd->status.party_id, MO_COMBOFINISH, skill_lv); - if (pc_checkskill(sd, CH_TIGERFIST) > 0 && sd->spiritball > 0) + iParty->skill_check(sd, sd->status.party_id, MO_COMBOFINISH, skill_lv); + if (iPc->checkskill(sd, CH_TIGERFIST) > 0 && sd->spiritball > 0) flag=1; case CH_TIGERFIST: - if (!flag && pc_checkskill(sd, CH_CHAINCRUSH) > 0 && sd->spiritball > 1) + if (!flag && iPc->checkskill(sd, CH_CHAINCRUSH) > 0 && sd->spiritball > 1) flag=1; case CH_CHAINCRUSH: - if (!flag && pc_checkskill(sd, MO_EXTREMITYFIST) > 0 && sd->spiritball > 0 && sd->sc.data[SC_EXPLOSIONSPIRITS]) + if (!flag && iPc->checkskill(sd, MO_EXTREMITYFIST) > 0 && sd->spiritball > 0 && sd->sc.data[SC_EXPLOSIONSPIRITS]) flag=1; break; case AC_DOUBLE: - if( (tstatus->race == RC_BRUTE || tstatus->race == RC_INSECT) && pc_checkskill(sd, HT_POWER)) + if( (tstatus->race == RC_BRUTE || tstatus->race == RC_INSECT) && iPc->checkskill(sd, HT_POWER)) { //TODO: This code was taken from Triple Blows, is this even how it should be? [Skotlex] sc_start2(src,SC_COMBO,100,HT_POWER,bl->id,2000); @@ -2401,8 +2401,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds case TK_COUNTER: { //bonus from SG_FRIEND [Komurka] int level; - if(sd->status.party_id>0 && (level = pc_checkskill(sd,SG_FRIEND))) - party_skill_check(sd, sd->status.party_id, TK_COUNTER,level); + if(sd->status.party_id>0 && (level = iPc->checkskill(sd,SG_FRIEND))) + iParty->skill_check(sd, sd->status.party_id, TK_COUNTER,level); } break; case SL_STIN: @@ -2415,11 +2415,11 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds sd->ud.attackabletime = sd->canuseitem_tick = sd->ud.canact_tick; break; case SR_DRAGONCOMBO: - if( pc_checkskill(sd, SR_FALLENEMPIRE) > 0 ) + if( iPc->checkskill(sd, SR_FALLENEMPIRE) > 0 ) flag = 1; break; case SR_FALLENEMPIRE: - if( pc_checkskill(sd, SR_TIGERCANNON) > 0 || pc_checkskill(sd, SR_GATEOFHELL) > 0 ) + if( iPc->checkskill(sd, SR_TIGERCANNON) > 0 || iPc->checkskill(sd, SR_GATEOFHELL) > 0 ) flag = 1; break; } //Switch End @@ -2534,10 +2534,10 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds break; } - map_freeblock_lock(); + iMap->freeblock_lock(); if(damage > 0 && dmg.flag&BF_SKILL && tsd - && pc_checkskill(tsd,RG_PLAGIARISM) + && iPc->checkskill(tsd,RG_PLAGIARISM) && (!sc || !sc->data[SC_PRESERVE]) && damage < tsd->battle_status.hp) { //Updated to not be able to copy skills if the blow will kill you. [Skotlex] @@ -2610,7 +2610,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds } } - if ((type = pc_checkskill(tsd,RG_PLAGIARISM)) < lv) + if ((type = iPc->checkskill(tsd,RG_PLAGIARISM)) < lv) lv = type; tsd->cloneskill_id = copy_skill; @@ -2668,7 +2668,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds dir = rand()%8; break; case WL_CRIMSONROCK: - dir = map_calc_dir(bl,skill_area_temp[4],skill_area_temp[5]); + dir = iMap->calc_dir(bl,skill_area_temp[4],skill_area_temp[5]); break; } @@ -2679,7 +2679,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds short dir_x, dir_y; dir_x = dirx[(dir+4)%8]; dir_y = diry[(dir+4)%8]; - if( map_getcell(bl->m, bl->x+dir_x, bl->y+dir_y, CELL_CHKNOPASS) != 0 ) + if( iMap->getcell(bl->m, bl->x+dir_x, bl->y+dir_y, CELL_CHKNOPASS) != 0 ) skill->addtimerskill(src, tick + status_get_amotion(src), bl->id, 0, 0, LG_OVERBRAND_PLUSATK, skill_lv, BF_WEAPON, flag ); } else skill->addtimerskill(src, tick + status_get_amotion(src), bl->id, 0, 0, LG_OVERBRAND_PLUSATK, skill_lv, BF_WEAPON, flag ); @@ -2689,7 +2689,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds short dir_x, dir_y; dir_x = dirx[(dir+4)%8]; dir_y = diry[(dir+4)%8]; - if( map_getcell(bl->m, bl->x+dir_x, bl->y+dir_y, CELL_CHKNOPASS) != 0 ) + if( iMap->getcell(bl->m, bl->x+dir_x, bl->y+dir_y, CELL_CHKNOPASS) != 0 ) skill->addtimerskill(src, tick + 300 * ((flag&2) ? 1 : 2), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag|4); } break; @@ -2715,7 +2715,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds if( sc && sc->data[SC_DEVOTION] && skill_id != PA_PRESSURE ) { struct status_change_entry *sce = sc->data[SC_DEVOTION]; - struct block_list *d_bl = map_id2bl(sce->val1); + struct block_list *d_bl = iMap->id2bl(sce->val1); if( d_bl && ( (d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == bl->id) || @@ -2723,12 +2723,12 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds ) && check_distance_bl(bl, d_bl, sce->val3) ) { if(!rmdamage){ - clif->damage(d_bl,d_bl, gettick(), 0, 0, damage, 0, 0, 0); + clif->damage(d_bl,d_bl, iTimer->gettick(), 0, 0, damage, 0, 0, 0); status_fix_damage(NULL,d_bl, damage, 0); } else{ //Reflected magics are done directly on the target not on paladin //This check is only for magical skill. //For BF_WEAPON skills types track var rdamage and function battle_calc_return_damage - clif->damage(bl,bl, gettick(), 0, 0, damage, 0, 0, 0); + clif->damage(bl,bl, iTimer->gettick(), 0, 0, damage, 0, 0, 0); status_fix_damage(bl,bl, damage, 0); } } @@ -2769,7 +2769,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds change = true; if( change ) sd->state.autocast = 1; - map_foreachinshootrange(battle->damage_area,bl,skill->get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,bl,dmg.amotion,sstatus->dmotion,rdamage,tstatus->race); + iMap->foreachinshootrange(battle->damage_area,bl,skill->get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,bl,dmg.amotion,sstatus->dmotion,rdamage,tstatus->race); if( change ) sd->state.autocast = 0; } @@ -2803,7 +2803,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds } break; case WM_METALICSOUND: - status_zap(bl, 0, damage*100/(100*(110-pc_checkskill(sd,WM_LESSON)*10))); + status_zap(bl, 0, damage*100/(100*(110-iPc->checkskill(sd,WM_LESSON)*10))); break; case SR_TIGERCANNON: status_zap(bl, 0, damage/10); // 10% of damage dealt @@ -2825,7 +2825,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds skill->addtimerskill(src, tick + dmg.amotion, bl->id, 0, 0, skill_id, skill_lv, BF_MAGIC, flag|2); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return damage; } @@ -2937,7 +2937,7 @@ int skill_check_unit_range (struct block_list *bl, int x, int y, uint16 skill_id } range += layout_type; - return map_foreachinarea(skill->check_unit_range_sub,bl->m,x-range,y-range,x+range,y+range,BL_SKILL,skill_id); + return iMap->foreachinarea(skill->check_unit_range_sub,bl->m,x-range,y-range,x+range,y+range,BL_SKILL,skill_id); } int skill_check_unit_range2_sub (struct block_list *bl, va_list ap) { @@ -2984,7 +2984,7 @@ int skill_check_unit_range2 (struct block_list *bl, int x, int y, uint16 skill_i else type = BL_PC; - return map_foreachinarea(skill->check_unit_range2_sub, bl->m, + return iMap->foreachinarea(skill->check_unit_range2_sub, bl->m, x - range, y - range, x + range, y + range, type, skill_id); } @@ -3098,7 +3098,7 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv, { index[i] = -1; if( itemid[i] < 1 ) continue; // No item - index[i] = pc_search_inventory(sd, itemid[i]); + index[i] = iPc->search_inventory(sd, itemid[i]); if( index[i] < 0 || sd->status.inventory[index[i]].amount < amount[i] ) { clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); @@ -3109,7 +3109,7 @@ int skill_check_condition_mercenary(struct block_list *bl, int skill_id, int lv, // Consume items for( i = 0; i < ARRAYLENGTH(itemid); i++ ) { - if( index[i] >= 0 ) pc_delitem(sd, index[i], amount[i], 0, 1, LOG_TYPE_CONSUME); + if( index[i] >= 0 ) iPc->delitem(sd, index[i], amount[i], 0, 1, LOG_TYPE_CONSUME); } if( type&2 ) @@ -3132,7 +3132,7 @@ int skill_area_sub_count (struct block_list *src, struct block_list *target, uin * *------------------------------------------*/ int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) { - struct block_list *src = map_id2bl(id),*target; + struct block_list *src = iMap->id2bl(id),*target; struct unit_data *ud = unit_bl2ud(src); struct skill_timerskill *skl; int range; @@ -3147,7 +3147,7 @@ int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) { if(src->prev == NULL) break; // Source not on Map if(skl->target_id) { - target = map_id2bl(skl->target_id); + target = iMap->id2bl(skl->target_id); if( ( skl->skill_id == RG_INTIMIDATE || skl->skill_id == SC_FATALMENACE ) && (!target || target->prev == NULL || !check_distance_bl(src,target,AREA_SIZE)) ) target = src; //Required since it has to warp. if(target == NULL) @@ -3165,7 +3165,7 @@ int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) { case RG_INTIMIDATE: if (unit_warp(src,-1,-1,-1,CLR_TELEPORT) == 0) { short x,y; - map_search_freecell(src, 0, &x, &y, 1, 1, 0); + iMap->search_freecell(src, 0, &x, &y, 1, 1, 0); if (target != src && !status_isdead(target)) unit_warp(target, -1, x, y, CLR_TELEPORT); } @@ -3173,16 +3173,16 @@ int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) { case BA_FROSTJOKER: case DC_SCREAM: range= skill->get_splash(skl->skill_id, skl->skill_lv); - map_foreachinarea(skill->frostjoke_scream,skl->map,skl->x-range,skl->y-range, + iMap->foreachinarea(skill->frostjoke_scream,skl->map,skl->x-range,skl->y-range, skl->x+range,skl->y+range,BL_CHAR,src,skl->skill_id,skl->skill_lv,tick); break; case NPC_EARTHQUAKE: if( skl->type > 1 ) skill->addtimerskill(src,tick+250,src->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag); - skill_area_temp[0] = map_foreachinrange(skill->area_sub, src, skill->get_splash(skl->skill_id, skl->skill_lv), BL_CHAR, src, skl->skill_id, skl->skill_lv, tick, BCT_ENEMY, skill->area_sub_count); + skill_area_temp[0] = iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skl->skill_id, skl->skill_lv), BL_CHAR, src, skl->skill_id, skl->skill_lv, tick, BCT_ENEMY, skill->area_sub_count); skill_area_temp[1] = src->id; skill_area_temp[2] = 0; - map_foreachinrange(skill->area_sub, src, skill->get_splash(skl->skill_id, skl->skill_lv), splash_target(src), src, skl->skill_id, skl->skill_lv, tick, skl->flag, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skl->skill_id, skl->skill_lv), splash_target(src), src, skl->skill_id, skl->skill_lv, tick, skl->flag, skill->castend_damage_id); break; case WZ_WATERBALL: skill->toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify @@ -3258,7 +3258,7 @@ int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) { unit_warp(src, -1, skl->x, skl->y, 3); else { // Target's Part short x = skl->x, y = skl->y; - map_search_freecell(NULL, target->m, &x, &y, 2, 2, 1); + iMap->search_freecell(NULL, target->m, &x, &y, 2, 2, 1); unit_warp(target,-1,x,y,3); } break; @@ -3279,7 +3279,7 @@ int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) { skill->attack(BF_WEAPON, src, src, target, skl->skill_id, skl->skill_lv, tick, skl->flag|SD_LEVEL); break; case GN_SPORE_EXPLOSION: - map_foreachinrange(skill->area_sub, target, skill->get_splash(skl->skill_id, skl->skill_lv), BL_CHAR, + iMap->foreachinrange(skill->area_sub, target, skill->get_splash(skl->skill_id, skl->skill_lv), BL_CHAR, src, skl->skill_id, skl->skill_lv, 0, skl->flag|1|BCT_ENEMY, skill->castend_damage_id); break; case CH_PALMSTRIKE: @@ -3313,7 +3313,7 @@ int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) { break; case GN_CRAZYWEED_ATK: { int dummy = 1, i = skill->get_unit_range(skl->skill_id,skl->skill_lv); - map_foreachinarea(skill->cell_overlap, src->m, skl->x-i, skl->y-i, skl->x+i, skl->y+i, BL_SKILL, skl->skill_id, &dummy, src); + iMap->foreachinarea(skill->cell_overlap, src->m, skl->x-i, skl->y-i, skl->x+i, skl->y+i, BL_SKILL, skl->skill_id, &dummy, src); } case WL_EARTHSTRAIN: skill->unitsetting(src,skl->skill_id,skl->skill_lv,skl->x,skl->y,(skl->type<<16)|skl->flag); @@ -3344,7 +3344,7 @@ int skill_addtimerskill (struct block_list *src, unsigned int tick, int target, if( i == MAX_SKILLTIMERSKILL ) return 1; ud->skilltimerskill[i] = ers_alloc(skill_timer_ers, struct skill_timerskill); - ud->skilltimerskill[i]->timer = add_timer(tick, skill->timerskill, src->id, i); + ud->skilltimerskill[i]->timer = iTimer->add_timer(tick, skill->timerskill, src->id, i); ud->skilltimerskill[i]->src_id = src->id; ud->skilltimerskill[i]->target_id = target; ud->skilltimerskill[i]->skill_id = skill_id; @@ -3370,7 +3370,7 @@ int skill_cleartimerskill (struct block_list *src) for(i=0;i<MAX_SKILLTIMERSKILL;i++) { if(ud->skilltimerskill[i]) { - delete_timer(ud->skilltimerskill[i]->timer, skill->timerskill); + iTimer->delete_timer(ud->skilltimerskill[i]->timer, skill->timerskill); ers_free(skill_timer_ers, ud->skilltimerskill[i]); ud->skilltimerskill[i]=NULL; } @@ -3383,8 +3383,8 @@ int skill_activate_reverbetion( struct block_list *bl, va_list ap) { if( bl->type != BL_SKILL ) return 0; if( su->alive && (sg = su->group) && sg->skill_id == WM_REVERBERATION ) { - map_foreachinrange(skill->trap_splash, bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, bl, gettick()); - su->limit=DIFF_TICK(gettick(),sg->tick); + iMap->foreachinrange(skill->trap_splash, bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, bl, iTimer->gettick()); + su->limit=DIFF_TICK(iTimer->gettick(),sg->tick); sg->unit_id = UNT_USED_TRAPS; } return 0; @@ -3442,7 +3442,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint tstatus = status_get_status_data(bl); - map_freeblock_lock(); + iMap->freeblock_lock(); switch(skill_id) { case MER_CRASH: @@ -3567,7 +3567,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case NC_VULCANARM: case NC_COLDSLOWER: case NC_ARMSCANNON: - if (sd) pc_overheat(sd,1); + if (sd) iPc->overheat(sd,1); case RK_WINDCUTTER: skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag|SD_ANIMATION); break; @@ -3590,7 +3590,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case MO_COMBOFINISH: if (!(flag&1) && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_MONK) { //Becomes a splash attack when Soul Linked. - map_foreachinrange(skill->area_sub, bl, + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv),splash_target(src), src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); @@ -3601,7 +3601,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case TK_STORMKICK: // Taekwon kicks [Dralnu] clif->skill_nodamage(src,bl,skill_id,skill_lv,1); skill_area_temp[1] = 0; - map_foreachinrange(skill->attack_area, src, + iMap->foreachinrange(skill->attack_area, src, skill->get_splash(skill_id, skill_lv), splash_target(src), BF_WEAPON, src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY); break; @@ -3609,7 +3609,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case KN_CHARGEATK: { bool path = path_search_long(NULL, src->m, src->x, src->y, bl->x, bl->y,CELL_CHKWALL); unsigned int dist = distance_bl(src, bl); - uint8 dir = map_calc_dir(bl, src->x, src->y); + uint8 dir = iMap->calc_dir(bl, src->x, src->y); // teleport to target (if not on WoE grounds) if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground && unit_movepos(src, bl->x, bl->y, 0, 1) ) @@ -3628,7 +3628,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint break; case NC_FLAMELAUNCHER: - if (sd) pc_overheat(sd,1); + if (sd) iPc->overheat(sd,1); case SN_SHARPSHOOTING: case MA_SHARPSHOOTING: case NJ_KAMAITACHI: @@ -3636,7 +3636,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint //It won't shoot through walls since on castend there has to be a direct //line of sight between caster and target. skill_area_temp[1] = bl->id; - map_foreachinpath (skill->attack_area,src->m,src->x,src->y,bl->x,bl->y, + iMap->foreachinpath (skill->attack_area,src->m,src->x,src->y,bl->x,bl->y, skill->get_splash(skill_id, skill_lv),skill->get_maxcount(skill_id,skill_lv), splash_target(src), skill->get_type(skill_id),src,src,skill_id,skill_lv,tick,flag,BCT_ENEMY); break; @@ -3647,7 +3647,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case NPC_ICEBREATH: case NPC_THUNDERBREATH: skill_area_temp[1] = bl->id; - map_foreachinpath(skill->attack_area,src->m,src->x,src->y,bl->x,bl->y, + iMap->foreachinpath(skill->attack_area,src->m,src->x,src->y,bl->x,bl->y, skill->get_splash(skill_id, skill_lv),skill->get_maxcount(skill_id,skill_lv), splash_target(src), skill->get_type(skill_id),src,src,skill_id,skill_lv,tick,flag,BCT_ENEMY); break; @@ -3659,8 +3659,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case RG_BACKSTAP: { - uint8 dir = map_calc_dir(src, bl->x, bl->y), t_dir = unit_getdir(bl); - if ((!check_distance_bl(src, bl, 0) && !map_check_dir(dir, t_dir)) || bl->type == BL_SKILL) { + uint8 dir = iMap->calc_dir(src, bl->x, bl->y), t_dir = unit_getdir(bl); + if ((!check_distance_bl(src, bl, 0) && !iMap->check_dir(dir, t_dir)) || bl->type == BL_SKILL) { status_change_end(src, SC_HIDING, INVALID_TIMER); skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); dir = dir < 4 ? dir+4 : dir-4; // change direction [Celest] @@ -3717,7 +3717,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint #endif , 0); - dir = map_calc_dir(src,bl->x,bl->y); + dir = iMap->calc_dir(src,bl->x,bl->y); if( dir > 0 && dir < 4) x = -i; else if( dir > 4 ) x = i; else x = 0; @@ -3830,10 +3830,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint //SD_LEVEL -> Forced splash damage for Auto Blitz-Beat -> count targets //special case: Venom Splasher uses a different range for searching than for splashing if( flag&SD_LEVEL || skill->get_nk(skill_id)&NK_SPLASHSPLIT ) - skill_area_temp[0] = map_foreachinrange(skill->area_sub, bl, (skill_id == AS_SPLASHER)?1:skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill->area_sub_count); + skill_area_temp[0] = iMap->foreachinrange(skill->area_sub, bl, (skill_id == AS_SPLASHER)?1:skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill->area_sub_count); // recursive invocation of skill->castend_damage_id() with flag|1 - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), ( skill_id == WM_REVERBERATION_MELEE || skill_id == WM_REVERBERATION_MAGIC )?BL_CHAR:splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), ( skill_id == WM_REVERBERATION_MELEE || skill_id == WM_REVERBERATION_MAGIC )?BL_CHAR:splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id); } break; @@ -3861,13 +3861,13 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint for(i=0;i<c;i++){ if (!skill->blown(src,bl,1,(unit_getdir(src)+4)%8,0x1)) break; //Can't knockback - skill_area_temp[0] = map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY, skill->area_sub_count); + skill_area_temp[0] = iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY, skill->area_sub_count); if( skill_area_temp[0] > 1 ) break; // collision } clif->blown(bl); //Update target pos. if (i!=c) { //Splash skill_area_temp[1] = bl->id; - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_damage_id); } //Weirdo dual-hit property, two attacks for 500% skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,0); @@ -3883,14 +3883,14 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill->blown(src,bl,skill_area_temp[2],-1,0); } else { int x=bl->x,y=bl->y,i,dir; - dir = map_calc_dir(bl,src->x,src->y); + dir = iMap->calc_dir(bl,src->x,src->y); skill_area_temp[1] = bl->id; skill_area_temp[2] = skill->get_blewcount(skill_id,skill_lv); // all the enemies between the caster and the target are hit, as well as the target if (skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,0)) skill->blown(src,bl,skill_area_temp[2],-1,0); for (i=0;i<4;i++) { - map_foreachincell(skill->area_sub,bl->m,x,y,BL_CHAR, + iMap->foreachincell(skill->area_sub,bl->m,x,y,BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); x += dirx[dir]; y += diry[dir]; @@ -3903,7 +3903,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint { skill_area_temp[1] = bl->id; //NOTE: This is used in skill->castend_nodamage_id to avoid affecting the target. if (skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag)) - map_foreachinrange(skill->area_sub,bl, + iMap->foreachinrange(skill->area_sub,bl, skill->get_splash(skill_id, skill_lv),BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1, skill->castend_nodamage_id); @@ -3986,11 +3986,11 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint for( y = src->y - range; y <= src->y + range; ++y ) for( x = src->x - range; x <= src->x + range; ++x ) { - if( !map_find_skill_unit_oncell(src,x,y,SA_LANDPROTECTOR,NULL,1) ) + if( !iMap->find_skill_unit_oncell(src,x,y,SA_LANDPROTECTOR,NULL,1) ) { - if( src->type != BL_PC || map_getcell(src->m,x,y,CELL_CHKWATER) ) // non-players bypass the water requirement + if( src->type != BL_PC || iMap->getcell(src->m,x,y,CELL_CHKWATER) ) // non-players bypass the water requirement count++; // natural water cell - else if( (unit = map_find_skill_unit_oncell(src,x,y,SA_DELUGE,NULL,1)) != NULL || (unit = map_find_skill_unit_oncell(src,x,y,NJ_SUITON,NULL,1)) != NULL ) + else if( (unit = iMap->find_skill_unit_oncell(src,x,y,SA_DELUGE,NULL,1)) != NULL || (unit = iMap->find_skill_unit_oncell(src,x,y,NJ_SUITON,NULL,1)) != NULL ) { count++; // skill-induced water cell skill->delunit(unit); // consume cell @@ -4096,7 +4096,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground ) { //You don't move on GVG grounds. short x, y; - map_search_freecell(bl, 0, &x, &y, 1, 1, 0); + iMap->search_freecell(bl, 0, &x, &y, 1, 1, 0); if (unit_movepos(src, x, y, 0, 0)) clif->slide(src,src->x,src->y); } @@ -4104,7 +4104,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); break; case RK_PHANTOMTHRUST: - unit_setdir(src,map_calc_dir(src, bl->x, bl->y)); + unit_setdir(src,iMap->calc_dir(src, bl->x, bl->y)); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); skill->blown(src,bl,distance_bl(src,bl)-1,unit_getdir(src),0); @@ -4115,7 +4115,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case RK_STORMBLAST: case RK_CRUSHSTRIKE: if( sd ) { - if( pc_checkskill(sd,RK_RUNEMASTERY) >= ( skill_id == RK_CRUSHSTRIKE ? 7 : 3 ) ) + if( iPc->checkskill(sd,RK_RUNEMASTERY) >= ( skill_id == RK_CRUSHSTRIKE ? 7 : 3 ) ) skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); else clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); @@ -4125,7 +4125,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case GC_DARKILLUSION: { short x, y; - short dir = map_calc_dir(src,bl->x,bl->y); + short dir = iMap->calc_dir(src,bl->x,bl->y); if( dir > 0 && dir < 4) x = 2; else if( dir > 4 ) x = -2; @@ -4337,7 +4337,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if( sd && pc_isridingwug(sd) ){ short x[8]={0,-1,-1,-1,0,1,1,1}; short y[8]={1,1,0,-1,-1,-1,0,1}; - uint8 dir = map_calc_dir(bl, src->x, src->y); + uint8 dir = iMap->calc_dir(bl, src->x, src->y); if( unit_movepos(src, bl->x+x[dir], bl->y+y[dir], 1, 1) ) { @@ -4377,7 +4377,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint item_tmp.nameid = sg->item_id?sg->item_id:ITEMID_TRAP; item_tmp.identify = 1; if( item_tmp.nameid ) - map_addflooritem(&item_tmp,1,bl->m,bl->x,bl->y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,bl->m,bl->x,bl->y,0,0,0,0); } skill->delunit(su); } @@ -4394,9 +4394,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint } else { - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id); clif->skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); - if( sd ) pc_overheat(sd,1); + if( sd ) iPc->overheat(sd,1); } break; @@ -4409,11 +4409,11 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint else { short x, y; - map_search_freecell(src, 0, &x, &y, -1, -1, 0); + iMap->search_freecell(src, 0, &x, &y, -1, -1, 0); // Destination area skill_area_temp[4] = x; skill_area_temp[5] = y; - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_damage_id); skill->addtimerskill(src,tick + 800,src->id,x,y,skill_id,skill_lv,0,flag); // To teleport Self clif->skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skill_id,skill_lv,6); } @@ -4475,7 +4475,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint status_change_end(bl, SC_HIDING, INVALID_TIMER); status_change_end(bl, SC_CLOAKINGEXCEED, INVALID_TIMER); } else{ - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id); clif->skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); } break; @@ -4496,7 +4496,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); else { clif->skill_nodamage(src, bl, skill_id, 0, 1); - skill->addtimerskill(src, gettick() + skill->get_time(skill_id, skill_lv) - 1000, bl->id, 0, 0, skill_id, skill_lv, 0, 0); + skill->addtimerskill(src, iTimer->gettick() + skill->get_time(skill_id, skill_lv) - 1000, bl->id, 0, 0, skill_id, skill_lv, 0, 0); } break; @@ -4512,7 +4512,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint clif->skill_nodamage(src,battle->get_master(src),skill_id,skill_lv,1); clif->skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); if( rnd()%100 < 30 ) - map_foreachinrange(skill->area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); else skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); } @@ -4535,7 +4535,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint clif->skill_nodamage(src,battle->get_master(src),skill_id,skill_lv,1); clif->skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); if( rnd()%100 < 30 ) - map_foreachinrange(skill->area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); else skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); } @@ -4581,7 +4581,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if(flag & 1) skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); else { - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill->castend_damage_id); } break; @@ -4609,7 +4609,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, SD_LEVEL|flag); } else { skill_area_temp[1] = bl->id; - map_foreachinrange(skill->area_sub, bl, + iMap->foreachinrange(skill->area_sub, bl, sd->bonus.splash_range, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | 1, skill->castend_damage_id); @@ -4623,18 +4623,18 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint clif->skill_damage(src, bl, tick, status_get_amotion(src), tstatus->dmotion, 0, abs(skill->get_num(skill_id, skill_lv)), skill_id, skill_lv, skill->get_hit(skill_id)); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } if( sc && sc->data[SC_CURSEDCIRCLE_ATKER] ) //Should only remove after the skill has been casted. status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER); - map_freeblock_unlock(); + iMap->freeblock_unlock(); if( sd && !(flag&1) ) {// ensure that the skill last-cast tick is recorded - sd->canskill_tick = gettick(); + sd->canskill_tick = iTimer->gettick(); if( sd->state.arrow_atk ) {// consume arrow on last invocation to this skill. @@ -4758,7 +4758,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui battle->attr_fix(NULL, NULL, 100, i, tstatus->def_ele, tstatus->ele_lv) <= 0) return 1; //Skills that cause an status should be blocked if the target element blocks its element. - map_freeblock_lock(); + iMap->freeblock_lock(); switch(skill_id) { case HLIF_HEAL: //[orn] case AL_HEAL: @@ -4806,7 +4806,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui heal_get_jobexp = heal_get_jobexp * battle_config.heal_exp / 100; if (heal_get_jobexp <= 0) heal_get_jobexp = 1; - pc_gainexp (sd, bl, 0, heal_get_jobexp, false); + iPc->gainexp (sd, bl, 0, heal_get_jobexp, false); } } break; @@ -4828,8 +4828,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } skill_area_temp[0] = 5 - skill_area_temp[0]; // The actual penalty... if (skill_area_temp[0] > 0 && !map[src->m].flag.noexppenalty) { //Apply penalty - sd->status.base_exp -= min(sd->status.base_exp, pc_nextbaseexp(sd) * skill_area_temp[0] * 2/1000); //0.2% penalty per each. - sd->status.job_exp -= min(sd->status.job_exp, pc_nextjobexp(sd) * skill_area_temp[0] * 2/1000); + sd->status.base_exp -= min(sd->status.base_exp, iPc->nextbaseexp(sd) * skill_area_temp[0] * 2/1000); //0.2% penalty per each. + sd->status.job_exp -= min(sd->status.job_exp, iPc->nextjobexp(sd) * skill_area_temp[0] * 2/1000); clif->updatestatus(sd,SP_BASEEXP); clif->updatestatus(sd,SP_JOBEXP); } @@ -4873,16 +4873,16 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { int exp = 0,jexp = 0; int lv = dstsd->status.base_level - sd->status.base_level, jlv = dstsd->status.job_level - sd->status.job_level; - if(lv > 0 && pc_nextbaseexp(dstsd)) { + if(lv > 0 && iPc->nextbaseexp(dstsd)) { exp = (int)((double)dstsd->status.base_exp * (double)lv * (double)battle_config.resurrection_exp / 1000000.); if (exp < 1) exp = 1; } - if(jlv > 0 && pc_nextjobexp(dstsd)) { + if(jlv > 0 && iPc->nextjobexp(dstsd)) { jexp = (int)((double)dstsd->status.job_exp * (double)lv * (double)battle_config.resurrection_exp / 1000000.); if (jexp < 1) jexp = 1; } if(exp > 0 || jexp > 0) - pc_gainexp (sd, bl, exp, jexp, false); + iPc->gainexp (sd, bl, exp, jexp, false); } } } @@ -4898,7 +4898,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (flag&1) sc_start(bl,type, 23+skill_lv*4 +status_get_lv(src) -status_get_lv(bl), skill_lv,skill->get_time(skill_id,skill_lv)); else { - map_foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_CHAR, + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); } @@ -4954,7 +4954,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (!target_id) break; if (skill->get_casttype(abra_skill_id) == CAST_GROUND) { - bl = map_id2bl(target_id); + bl = iMap->id2bl(target_id); if (!bl) bl = src; unit_skilluse_pos(src, bl->x, bl->y, abra_skill_id, abra_skill_lv); } else @@ -4994,7 +4994,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case SA_LEVELUP: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - if (sd && pc_nextbaseexp(sd)) pc_gainexp(sd, NULL, pc_nextbaseexp(sd) * 10 / 100, 0, false); + if (sd && iPc->nextbaseexp(sd)) iPc->gainexp(sd, NULL, iPc->nextbaseexp(sd) * 10 / 100, 0, false); break; case SA_INSTANTDEATH: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); @@ -5042,7 +5042,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case SA_FORTUNE: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - if(sd) pc_getzeny(sd,status_get_lv(bl)*100,LOG_TYPE_STEAL,NULL); + if(sd) iPc->getzeny(sd,status_get_lv(bl)*100,LOG_TYPE_STEAL,NULL); break; case SA_TAMINGMONSTER: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); @@ -5057,7 +5057,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if(sd && dstsd){ //Check they are not another crusader [Skotlex] if ((dstsd->class_&MAPID_UPPERMASK) == MAPID_CRUSADER) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } } @@ -5072,7 +5072,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( sd && dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_BARDDANCER && dstsd->status.sex == sd->status.sex ) {// Cannot cast on another bard/dancer-type class of the same gender as caster clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } @@ -5096,7 +5096,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } } @@ -5179,7 +5179,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SM_MAGNUM: case MS_MAGNUM: skill_area_temp[1] = 0; - map_foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_SKILL|BL_CHAR, + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_SKILL|BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); clif->skill_nodamage (src,src,skill_id,skill_lv,1); // Initiate 10% of your damage becomes fire element. @@ -5286,7 +5286,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SO_STRIKING: if (sd) { int bonus = 25 + 10 * skill_lv; - bonus += (pc_checkskill(sd, SA_FLAMELAUNCHER)+pc_checkskill(sd, SA_FROSTWEAPON)+pc_checkskill(sd, SA_LIGHTNINGLOADER)+pc_checkskill(sd, SA_SEISMICWEAPON))*5; + bonus += (iPc->checkskill(sd, SA_FLAMELAUNCHER)+iPc->checkskill(sd, SA_FROSTWEAPON)+iPc->checkskill(sd, SA_LIGHTNINGLOADER)+iPc->checkskill(sd, SA_SEISMICWEAPON))*5; clif->skill_nodamage( src, bl, skill_id, skill_lv, battle->check_target(src,bl,BCT_PARTY) > 0 ? sc_start2(bl, type, 100, skill_lv, bonus, skill->get_time(skill_id,skill_lv)) : @@ -5334,7 +5334,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)); else { - map_foreachinrange(skill->area_sub, bl, + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ALL|1, skill->castend_nodamage_id); @@ -5403,7 +5403,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { clif->skill_nodamage(src,bl,skill_id,skill_lv, sc_start(bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv))); - map_foreachinrange( status_change_timer_sub, src, + iMap->foreachinrange( status_change_timer_sub, src, skill->get_splash(skill_id, skill_lv), BL_CHAR, src,NULL,type,tick); } @@ -5414,7 +5414,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case MER_PROVOKE: if( (tstatus->mode&MD_BOSS) || battle->check_undead(tstatus->race,tstatus->def_ele) ) { - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } //TODO: How much does base level affects? Dummy value of 1% per level difference used. [Skotlex] @@ -5424,7 +5424,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } unit_skillcastcancel(bl, 2); @@ -5466,7 +5466,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } @@ -5481,7 +5481,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( i == count ) { // No free slots, skill Fail clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } } @@ -5503,7 +5503,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( sd->sc.data[SC_RAISINGDRAGON] ) limit += sd->sc.data[SC_RAISINGDRAGON]->val1; clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - pc_addspiritball(sd,skill->get_time(skill_id,skill_lv),limit); + iPc->addspiritball(sd,skill->get_time(skill_id,skill_lv),limit); } break; @@ -5514,13 +5514,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui limit += sd->sc.data[SC_RAISINGDRAGON]->val1; clif->skill_nodamage(src,bl,skill_id,skill_lv,1); for (i = 0; i < limit; i++) - pc_addspiritball(sd,skill->get_time(skill_id,skill_lv),limit); + iPc->addspiritball(sd,skill->get_time(skill_id,skill_lv),limit); } break; case MO_KITRANSLATION: if(dstsd && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) { - pc_addspiritball(dstsd,skill->get_time(skill_id,skill_lv),5); + iPc->addspiritball(dstsd,skill->get_time(skill_id,skill_lv),5); } break; @@ -5537,7 +5537,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) { // split the if for readability, and included gunslingers in the check so that their coins cannot be removed [Reddozen] i = dstsd->spiritball * 7; - pc_delspiritball(dstsd,dstsd->spiritball,0); + iPc->delspiritball(dstsd,dstsd->spiritball,0); } else if (dstmd && !(tstatus->mode&MD_BOSS) && rnd() % 100 < 20) { // check if target is a monster and not a Boss, for the 20% chance to absorb 2 SP per monster's level [Reddozen] i = 2 * dstmd->level; @@ -5575,7 +5575,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RG_RAID: skill_area_temp[1] = 0; clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub, bl, + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); @@ -5593,7 +5593,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case KO_HAPPOKUNAI: skill_area_temp[1] = 0; clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - i = map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), + i = iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id); if( !i && ( skill_id == NC_AXETORNADO || skill_id == SR_SKYNETBLOW || skill_id == KO_HAPPOKUNAI ) ) clif->skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); @@ -5626,7 +5626,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui //Passive side of the attack. status_change_end(src, SC_SIGHT, INVALID_TIMER); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub,src, + iMap->foreachinrange(skill->area_sub,src, skill->get_splash(skill_id, skill_lv),BL_CHAR|BL_SKILL, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); @@ -5637,7 +5637,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case WZ_FROSTNOVA: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); skill_area_temp[1] = 0; - map_foreachinrange(skill->attack_area, src, + iMap->foreachinrange(skill->attack_area, src, skill->get_splash(skill_id, skill_lv), splash_target(src), BF_MAGIC, src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY); break; @@ -5649,12 +5649,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui i = ((!md || md->special_state.ai == 2) && !map_flag_vs(src->m))? BCT_ENEMY:BCT_ALL; clif->skill_nodamage(src, src, skill_id, -1, 1); - map_delblock(src); //Required to prevent chain-self-destructions hitting back. - map_foreachinrange(skill->area_sub, bl, + iMap->delblock(src); //Required to prevent chain-self-destructions hitting back. + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|i, skill->castend_damage_id); - map_addblock(src); + iMap->addblock(src); status_damage(src, src, sstatus->max_hp,0,0,1); break; @@ -5713,7 +5713,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( tsce ) { clif->skill_nodamage(src,bl,skill_id,skill_lv,status_change_end(bl, type, INVALID_TIMER)); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } clif->skill_nodamage(src,bl,skill_id,skill_lv,sc_start(bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv))); @@ -5752,12 +5752,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (tsce) { clif->skill_nodamage(src,bl,skill_id,-1,status_change_end(bl, type, INVALID_TIMER)); //Hide skill-scream animation. - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } else if( tsc && tsc->option&OPTION_MADOGEAR ) { //Mado Gear cannot hide if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } clif->skill_nodamage(src,bl,skill_id,-1,sc_start(bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv))); @@ -5766,7 +5766,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (tsce) { clif->skill_nodamage(src,bl,skill_id,skill_lv,status_change_end(bl, type, INVALID_TIMER)); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } clif->skill_nodamage(src,bl,skill_id,skill_lv,sc_start4(bl,type,100,skill_lv,unit_getdir(bl),0,0,0)); @@ -5784,7 +5784,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif->skill_nodamage(src,bl,skill_id,( skill_id == LG_FORCEOFVANGUARD ) ? skill_lv : -1,i); else if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } case RA_CAMOUFLAGE: @@ -5840,7 +5840,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case TF_STEAL: if(sd) { - if(pc_steal_item(sd,bl,skill_lv)) + if(iPc->steal_item(sd,bl,skill_lv)) clif->skill_nodamage(src,bl,skill_id,skill_lv,1); else clif->skill_fail(sd,skill_id,USESKILL_FAIL,0); @@ -5849,7 +5849,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RG_STEALCOIN: if(sd) { - if(pc_steal_coin(sd,bl)) + if(iPc->steal_coin(sd,bl)) { dstmd->state.provoke_flag = src->id; mob_target(dstmd, src, skill->get_range2(src,skill_id,skill_lv)); @@ -5888,7 +5888,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // Level 6-10 doesn't consume a red gem if it fails [celest] if (skill_lv > 5) { // not to consume items - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } } @@ -6019,7 +6019,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case MC_VENDING: if(sd) { //Prevent vending of GMs with unnecessary Level to trade/drop. [Skotlex] - if ( !pc_can_give_items(sd) ) + if ( !iPc->can_give_items(sd) ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); else { sd->state.prevend = 1; @@ -6044,9 +6044,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( sd->state.autocast || ( (sd->skillitem == AL_TELEPORT || battle_config.skip_teleport_lv1_menu) && skill_lv == 1 ) || skill_lv == 3 ) { if( skill_lv == 1 ) - pc_randomwarp(sd,CLR_TELEPORT); + iPc->randomwarp(sd,CLR_TELEPORT); else - pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); + iPc->setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); break; } @@ -6085,10 +6085,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui item_tmp.identify = 1; tbl.id = 0; clif->takeitem(&sd->bl,&tbl); - eflag = pc_additem(sd,&item_tmp,1,LOG_TYPE_PRODUCE); + eflag = iPc->additem(sd,&item_tmp,1,LOG_TYPE_PRODUCE); if(eflag) { clif->additem(sd,0,0,eflag); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } break; @@ -6176,27 +6176,27 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui int i,sp = 0; int64 hp = 0; if( dstmd && dstmd->class_ == MOBID_EMPERIUM ) { - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } if( sd ) { int x,bonus=100; x = skill_lv%11 - 1; - i = pc_search_inventory(sd,skill_db[skill_id].itemid[x]); + i = iPc->search_inventory(sd,skill_db[skill_id].itemid[x]); if( i < 0 || skill_db[skill_id].itemid[x] <= 0 ) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } if(sd->inventory_data[i] == NULL || sd->status.inventory[i].amount < skill_db[skill_id].amount[x]) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } if( skill_id == AM_BERSERKPITCHER ) { if( dstsd && dstsd->status.base_level < (unsigned int)sd->inventory_data[i]->elv ) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } } @@ -6209,23 +6209,23 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui bonus += sd->status.base_level; if( potion_per_hp > 0 || potion_per_sp > 0 ) { hp = tstatus->max_hp * potion_per_hp / 100; - hp = hp * (100 + pc_checkskill(sd,AM_POTIONPITCHER)*10 + pc_checkskill(sd,AM_LEARNINGPOTION)*5)*bonus/10000; + hp = hp * (100 + iPc->checkskill(sd,AM_POTIONPITCHER)*10 + iPc->checkskill(sd,AM_LEARNINGPOTION)*5)*bonus/10000; if( dstsd ) { sp = dstsd->status.max_sp * potion_per_sp / 100; - sp = sp * (100 + pc_checkskill(sd,AM_POTIONPITCHER)*10 + pc_checkskill(sd,AM_LEARNINGPOTION)*5)*bonus/10000; + sp = sp * (100 + iPc->checkskill(sd,AM_POTIONPITCHER)*10 + iPc->checkskill(sd,AM_LEARNINGPOTION)*5)*bonus/10000; } } else { if( potion_hp > 0 ) { - hp = potion_hp * (100 + pc_checkskill(sd,AM_POTIONPITCHER)*10 + pc_checkskill(sd,AM_LEARNINGPOTION)*5)*bonus/10000; + hp = potion_hp * (100 + iPc->checkskill(sd,AM_POTIONPITCHER)*10 + iPc->checkskill(sd,AM_LEARNINGPOTION)*5)*bonus/10000; hp = hp * (100 + (tstatus->vit<<1)) / 100; if( dstsd ) - hp = hp * (100 + pc_checkskill(dstsd,SM_RECOVERY)*10) / 100; + hp = hp * (100 + iPc->checkskill(dstsd,SM_RECOVERY)*10) / 100; } if( potion_sp > 0 ) { - sp = potion_sp * (100 + pc_checkskill(sd,AM_POTIONPITCHER)*10 + pc_checkskill(sd,AM_LEARNINGPOTION)*5)*bonus/10000; + sp = potion_sp * (100 + iPc->checkskill(sd,AM_POTIONPITCHER)*10 + iPc->checkskill(sd,AM_LEARNINGPOTION)*5)*bonus/10000; sp = sp * (100 + (tstatus->int_<<1)) / 100; if( dstsd ) - sp = sp * (100 + pc_checkskill(dstsd,MG_SRECOVERY)*10) / 100; + sp = sp * (100 + iPc->checkskill(dstsd,MG_SRECOVERY)*10) / 100; } } @@ -6234,7 +6234,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sp += sp * sd->itemgrouphealrate[IG_POTION] / 100; } - if( (i = pc_skillheal_bonus(sd, skill_id)) ) { + if( (i = iPc->skillheal_bonus(sd, skill_id)) ) { hp += hp * i / 100; sp += sp * i / 100; } @@ -6242,9 +6242,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui hp = (1 + rnd()%400) * (100 + skill_lv*10) / 100; hp = hp * (100 + (tstatus->vit<<1)) / 100; if( dstsd ) - hp = hp * (100 + pc_checkskill(dstsd,SM_RECOVERY)*10) / 100; + hp = hp * (100 + iPc->checkskill(dstsd,SM_RECOVERY)*10) / 100; } - if( dstsd && (i = pc_skillheal2_bonus(dstsd, skill_id)) ) { + if( dstsd && (i = iPc->skillheal2_bonus(dstsd, skill_id)) ) { hp += hp * i / 100; sp += sp * i / 100; } @@ -6281,9 +6281,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { unsigned int equip[] = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP}; - if( sd && ( bl->type != BL_PC || ( dstsd && pc_checkequip(dstsd,equip[skill_id - AM_CP_WEAPON]) < 0 ) ) ){ + if( sd && ( bl->type != BL_PC || ( dstsd && iPc->checkequip(dstsd,equip[skill_id - AM_CP_WEAPON]) < 0 ) ) ){ clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); // Don't consume item requirements + iMap->freeblock_unlock(); // Don't consume item requirements return 0; } @@ -6309,7 +6309,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case AM_TWILIGHT3: if (sd) { - int ebottle = pc_search_inventory(sd,713); + int ebottle = iPc->search_inventory(sd,713); if( ebottle >= 0 ) ebottle = sd->status.inventory[ebottle].amount; //check if you can produce all three, if not, then fail: @@ -6424,7 +6424,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } //Affect all targets on splash area. - map_foreachinrange(skill->area_sub, bl, i, BL_CHAR, + iMap->foreachinrange(skill->area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag|1, skill->castend_damage_id); break; @@ -6450,7 +6450,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } clif->skill_nodamage(src,bl,TK_HIGHJUMP,skill_lv,1); - if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB) && map_getcell(src->m,x,y,CELL_CHKREACH)) { + if(!iMap->count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB) && iMap->getcell(src->m,x,y,CELL_CHKREACH)) { clif->slide(src,x,y); unit_movepos(src, x, y, 1, 0); } @@ -6561,7 +6561,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case BS_GREED: if(sd){ clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->greed,bl, + iMap->foreachinrange(skill->greed,bl, skill->get_splash(skill_id, skill_lv),BL_ITEM,bl); } break; @@ -6670,7 +6670,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // not really needed... but adding here anyway ^^ if (md && md->master_id > 0) { struct block_list *mbl, *tbl; - if ((mbl = map_id2bl(md->master_id)) == NULL || + if ((mbl = iMap->id2bl(md->master_id)) == NULL || (tbl = battle->get_targeted(mbl)) == NULL) break; md->state.provoke_flag = tbl->id; @@ -6681,7 +6681,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case NPC_RUN: { const int mask[8][2] = {{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1}}; - uint8 dir = (bl == src)?unit_getdir(src):map_calc_dir(src,bl->x,bl->y); //If cast on self, run forward, else run away. + uint8 dir = (bl == src)?unit_getdir(src):iMap->calc_dir(src,bl->x,bl->y); //If cast on self, run forward, else run away. unit_stop_attack(src); //Run skillv tiles overriding the can-move check. if (unit_walktoxy(src, src->x + skill_lv * mask[dir][0], src->y + skill_lv * mask[dir][1], 2) && md) @@ -6766,12 +6766,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // parent-baby skills case WE_BABY: if(sd){ - struct map_session_data *f_sd = pc_get_father(sd); - struct map_session_data *m_sd = pc_get_mother(sd); + struct map_session_data *f_sd = iPc->get_father(sd); + struct map_session_data *m_sd = iPc->get_mother(sd); // if neither was found if(!f_sd && !m_sd){ clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } status_change_start(bl,SC_STUN,10000,skill_lv,0,0,0,skill->get_time2(skill_id,skill_lv),8); @@ -6819,10 +6819,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui memset(&item_tmp,0,sizeof(item_tmp)); item_tmp.nameid = skill_db[su->group->skill_id].itemid[i]; item_tmp.identify = 1; - if( item_tmp.nameid && (flag=pc_additem(sd,&item_tmp,skill_db[su->group->skill_id].amount[i],LOG_TYPE_OTHER)) ) + if( item_tmp.nameid && (flag=iPc->additem(sd,&item_tmp,skill_db[su->group->skill_id].amount[i],LOG_TYPE_OTHER)) ) { clif->additem(sd,0,0,flag); - map_addflooritem(&item_tmp,skill_db[su->group->skill_id].amount[i],sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,skill_db[su->group->skill_id].amount[i],sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } } @@ -6833,10 +6833,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui memset(&item_tmp,0,sizeof(item_tmp)); item_tmp.nameid = su->group->item_id?su->group->item_id:ITEMID_TRAP; item_tmp.identify = 1; - if( item_tmp.nameid && (flag=pc_additem(sd,&item_tmp,1,LOG_TYPE_OTHER)) ) + if( item_tmp.nameid && (flag=iPc->additem(sd,&item_tmp,1,LOG_TYPE_OTHER)) ) { clif->additem(sd,0,0,flag); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } } @@ -6891,7 +6891,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui #endif ) { if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } clif->skill_nodamage(src,bl,skill_id,skill_lv, @@ -6904,14 +6904,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case PF_MINDBREAKER: { if(tstatus->mode&MD_BOSS || battle->check_undead(tstatus->race,tstatus->def_ele) ) { - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } if (tsce) { //HelloKitty2 (?) explained that this silently fails when target is //already inflicted. [Skotlex] - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } @@ -6920,7 +6920,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl,type,55+5*skill_lv,skill_lv,skill->get_time(skill_id,skill_lv)))) { if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } @@ -6977,9 +6977,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sp = sp * (100 + (tstatus->int_<<1))/100; if (dstsd) { if (hp) - hp = hp * (100 + pc_checkskill(dstsd,SM_RECOVERY)*10 + pc_skillheal2_bonus(dstsd, skill_id))/100; + hp = hp * (100 + iPc->checkskill(dstsd,SM_RECOVERY)*10 + iPc->skillheal2_bonus(dstsd, skill_id))/100; if (sp) - sp = sp * (100 + pc_checkskill(dstsd,MG_SRECOVERY)*10 + pc_skillheal2_bonus(dstsd, skill_id))/100; + sp = sp * (100 + iPc->checkskill(dstsd,MG_SRECOVERY)*10 + iPc->skillheal2_bonus(dstsd, skill_id))/100; } if( tsc && tsc->count ) { if (tsc->data[SC_CRITICALWOUND]) { @@ -7009,14 +7009,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui int i, s = 0, skilltime = skill->get_time(skill_id,skill_lv); for (i=0 ; i<4; i++) { - if( bl->type != BL_PC || ( dstsd && pc_checkequip(dstsd,equip[i]) < 0 ) ) + if( bl->type != BL_PC || ( dstsd && iPc->checkequip(dstsd,equip[i]) < 0 ) ) continue; sc_start(bl,(sc_type)(SC_CP_WEAPON + i),100,skill_lv,skilltime); s++; } if( sd && !s ){ clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); // Don't consume item requirements + iMap->freeblock_unlock(); // Don't consume item requirements return 0; } clif->skill_nodamage(src,bl,skill_id,skill_lv,1); @@ -7046,7 +7046,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } status_zap(src,0,skill_db[skill->get_index(skill_id)].sp[skill_lv]); // consume sp only if succeeded [Inkfish] @@ -7199,7 +7199,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl,type,100,skill_lv,skill->get_time(skill_id, skill_lv)); } else if (status_get_guild_id(src)) { clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub, src, + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill->castend_nodamage_id); @@ -7213,7 +7213,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl,type,100,skill_lv,skill->get_time(skill_id, skill_lv)); } else if (status_get_guild_id(src)) { clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub, src, + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill->castend_nodamage_id); @@ -7227,7 +7227,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif->skill_nodamage(src,bl,AL_HEAL,status_percent_heal(bl,90,90),1); } else if (status_get_guild_id(src)) { clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub, src, + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill->castend_nodamage_id); @@ -7251,9 +7251,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !dstsd->state.autotrade && !pc_isdead(dstsd)) { if (map[dstsd->bl.m].flag.nowarp && !map_flag_gvg2(dstsd->bl.m)) continue; - if(map_getcell(src->m,src->x+dx[j],src->y+dy[j],CELL_CHKNOREACH)) + if(iMap->getcell(src->m,src->x+dx[j],src->y+dy[j],CELL_CHKNOREACH)) dx[j] = dy[j] = 0; - pc_setpos(dstsd, map_id2index(src->m), src->x+dx[j], src->y+dy[j], CLR_RESPAWN); + iPc->setpos(dstsd, map_id2index(src->m), src->x+dx[j], src->y+dy[j], CLR_RESPAWN); } } if (sd) @@ -7274,7 +7274,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SG_HATE: if (sd) { clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - if (!pc_set_hate_mob(sd, skill_lv-1, bl)) + if (!iPc->set_hate_mob(sd, skill_lv-1, bl)) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); } break; @@ -7283,9 +7283,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if(sd) { clif->skill_nodamage(src,bl,skill_id,skill_lv,1); if(rnd()%100 < (20+10*skill_lv)) - pc_addspiritball(sd,skill->get_time(skill_id,skill_lv),10); + iPc->addspiritball(sd,skill->get_time(skill_id,skill_lv),10); else if(sd->spiritball > 0) - pc_delspiritball(sd,1,0); + iPc->delspiritball(sd,1,0); } break; @@ -7333,7 +7333,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } //TODO: Shouldn't also players and the like switch targets? - map_foreachinrange(skill->chastle_mob_changetarget,src, + iMap->foreachinrange(skill->chastle_mob_changetarget,src, AREA_SIZE, BL_MOB, bl, src); } } @@ -7353,7 +7353,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else if(r<per[i][1]) //Master bl = battle->get_master(src); else //Enemy - bl = map_id2bl(battle->get_target(src)); + bl = iMap->id2bl(battle->get_target(src)); if (!bl) bl = src; i = skill->calc_heal(src, bl, skill_id, 1+rnd()%skill_lv, true); @@ -7405,7 +7405,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else { skill_area_temp[2] = 0; //For SD_PREAMBLE clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub, bl, + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv),BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|SD_PREAMBLE|1, skill->castend_nodamage_id); @@ -7417,7 +7417,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else { skill_area_temp[2] = 0; //For SD_PREAMBLE clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub, bl, + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv),BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|SD_PREAMBLE|1, skill->castend_nodamage_id); @@ -7457,7 +7457,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { skill_area_temp[2] = 0; clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub, src, + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_ENEMY|SD_PREAMBLE|1, skill->castend_nodamage_id); @@ -7469,13 +7469,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui i = skill->get_splash(skill_id,skill_lv); if( skill_id == LG_EARTHDRIVE ) { int dummy = 1; - map_foreachinarea(skill->cell_overlap, src->m, src->x-i, src->y-i, src->x+i, src->y+i, BL_SKILL, LG_EARTHDRIVE, &dummy, src); + iMap->foreachinarea(skill->cell_overlap, src->m, src->x-i, src->y-i, src->x+i, src->y+i, BL_SKILL, LG_EARTHDRIVE, &dummy, src); } - map_foreachinrange(skill->area_sub, bl,i,BL_CHAR, + iMap->foreachinrange(skill->area_sub, bl,i,BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); break; case RK_STONEHARDSKIN: - if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 4 ) + if( sd && iPc->checkskill(sd,RK_RUNEMASTERY) >= 4 ) { int heal = sstatus->hp / 4; // 25% HP if( status_charge(bl,heal,0) ) @@ -7485,7 +7485,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } break; case RK_REFRESH: - if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 8 ) + if( sd && iPc->checkskill(sd,RK_RUNEMASTERY) >= 8 ) { int heal = status_get_max_hp(bl) * 25 / 100; clif->skill_nodamage(src,bl,skill_id,skill_lv, @@ -7496,7 +7496,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case RK_MILLENNIUMSHIELD: - if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 9 ) + if( sd && iPc->checkskill(sd,RK_RUNEMASTERY) >= 9 ) { short shields = (rnd()%100<50) ? 4 : ((rnd()%100<80) ? 3 : 2); sc_start4(bl,type,100,skill_lv,shields,1000,0,skill->get_time(skill_id,skill_lv)); @@ -7518,7 +7518,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui lv = 6; else if( skill_id == RK_CRUSHSTRIKE ) lv = 7; - if( pc_checkskill(sd,RK_RUNEMASTERY) >= lv ) + if( iPc->checkskill(sd,RK_RUNEMASTERY) >= lv ) clif->skill_nodamage(src,bl,skill_id,skill_lv,sc_start(bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv))); } break; @@ -7526,10 +7526,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RK_FIGHTINGSPIRIT: if( flag&1 ) { if( src == bl ) - sc_start2(bl,type,100,skill_area_temp[5],10*(sd?pc_checkskill(sd,RK_RUNEMASTERY):10),skill->get_time(skill_id,skill_lv)); + sc_start2(bl,type,100,skill_area_temp[5],10*(sd?iPc->checkskill(sd,RK_RUNEMASTERY):10),skill->get_time(skill_id,skill_lv)); else sc_start(bl,type,100,skill_area_temp[5]/4,skill->get_time(skill_id,skill_lv)); - } else if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 5 ) { + } else if( sd && iPc->checkskill(sd,RK_RUNEMASTERY) >= 5 ) { if( sd->status.party_id ) { i = party_foreachsamemap(skill->area_sub,sd,skill->get_splash(skill_id,skill_lv),src,skill_id,skill_lv,tick,BCT_PARTY,skill->area_sub_count); skill_area_temp[5] = 7 * i; // ATK @@ -7546,7 +7546,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { short count = 1; skill_area_temp[2] = 0; - map_foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|SD_PREAMBLE|SD_SPLASH|1,skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|SD_PREAMBLE|SD_SPLASH|1,skill->castend_damage_id); if( tsc && tsc->data[SC_ROLLINGCUTTER] ) { // Every time the skill is casted the status change is reseted adding a counter. count += (short)tsc->data[SC_ROLLINGCUTTER]->val1; @@ -7600,7 +7600,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case GC_PHANTOMMENACE: clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR, + iMap->foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); break; @@ -7632,8 +7632,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case AB_CLEMENTIA: case AB_CANTO: { - int bless_lv = pc_checkskill(sd,AL_BLESSING) + (sd->status.job_level / 10); - int agi_lv = pc_checkskill(sd,AL_INCAGI) + (sd->status.job_level / 10); + int bless_lv = iPc->checkskill(sd,AL_BLESSING) + (sd->status.job_level / 10); + int agi_lv = iPc->checkskill(sd,AL_INCAGI) + (sd->status.job_level / 10); if( sd == NULL || sd->status.party_id == 0 || flag&1 ) clif->skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(bl,type,100, (skill_id == AB_CLEMENTIA)? bless_lv : (skill_id == AB_CANTO)? agi_lv : skill_lv, skill->get_time(skill_id,skill_lv))); @@ -7652,7 +7652,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case AB_CHEAL: if( sd == NULL || sd->status.party_id == 0 || flag&1 ) { if( sd && tstatus && !battle->check_undead(tstatus->race, tstatus->def_ele) ) { - i = skill->calc_heal(src, bl, AL_HEAL, pc_checkskill(sd, AL_HEAL), true); + i = skill->calc_heal(src, bl, AL_HEAL, iPc->checkskill(sd, AL_HEAL), true); if( (dstsd && pc_ismadogear(dstsd)) || status_isimmune(bl)) i = 0; // Should heal by 0 or won't do anything?? in iRO it breaks the healing to members.. [malufett] @@ -7672,7 +7672,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl, type, 40 + 5 * skill_lv, skill_lv, skill->get_time(skill_id, skill_lv)); else { - map_foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_CHAR, + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); } @@ -7786,12 +7786,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } break; } - map_foreachinrange(skill->area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag|1, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag|1, skill->castend_damage_id); break; case AB_SILENTIUM: // Should the level of Lex Divina be equivalent to the level of Silentium or should the highest level learned be used? [LimitLine] - map_foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_CHAR, + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id, skill_lv), BL_CHAR, src, PR_LEXDIVINA, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); break; @@ -7803,7 +7803,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)); else { - map_foreachinrange(skill->area_sub,src,skill->get_splash(skill_id, skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,(map_flag_vs(src->m)?BCT_ALL:BCT_ENEMY|BCT_SELF)|flag|1,skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub,src,skill->get_splash(skill_id, skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,(map_flag_vs(src->m)?BCT_ALL:BCT_ENEMY|BCT_SELF)|flag|1,skill->castend_nodamage_id); clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); } break; @@ -7833,12 +7833,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case WL_FROSTMISTY: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY,skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY,skill->castend_damage_id); break; case WL_JACKFROST: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_foreachinshootrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); + iMap->foreachinshootrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); break; case WL_MARSHOFABYSS: @@ -7873,7 +7873,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( rate ) { skill_area_temp[1] = bl->id; - map_foreachinrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_nodamage_id); } // Doesn't send failure packet if it fails on defense. } @@ -7947,9 +7947,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RA_WUGMASTERY: if( sd ) { if( !pc_iswug(sd) ) - pc_setoption(sd,sd->sc.option|OPTION_WUG); + iPc->setoption(sd,sd->sc.option|OPTION_WUG); else - pc_setoption(sd,sd->sc.option&~OPTION_WUG); + iPc->setoption(sd,sd->sc.option&~OPTION_WUG); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); } break; @@ -7957,11 +7957,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RA_WUGRIDER: if( sd ) { if( !pc_isridingwug(sd) && pc_iswug(sd) ) { - pc_setoption(sd,sd->sc.option&~OPTION_WUG); - pc_setoption(sd,sd->sc.option|OPTION_WUGRIDER); + iPc->setoption(sd,sd->sc.option&~OPTION_WUG); + iPc->setoption(sd,sd->sc.option|OPTION_WUGRIDER); } else if( pc_isridingwug(sd) ) { - pc_setoption(sd,sd->sc.option&~OPTION_WUGRIDER); - pc_setoption(sd,sd->sc.option|OPTION_WUG); + iPc->setoption(sd,sd->sc.option&~OPTION_WUGRIDER); + iPc->setoption(sd,sd->sc.option|OPTION_WUG); } clif->skill_nodamage(src,bl,skill_id,skill_lv,1); } @@ -7970,7 +7970,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RA_WUGDASH: if( tsce ) { clif->skill_nodamage(src,bl,skill_id,skill_lv,status_change_end(bl, type, INVALID_TIMER)); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } if( sd && pc_isridingwug(sd) ) { @@ -7982,7 +7982,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RA_SENSITIVEKEEN: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); clif->skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); - map_foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY,skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY,skill->castend_damage_id); break; /** * Mechanic @@ -8001,7 +8001,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case NC_SELFDESTRUCTION: if( sd ) { if( pc_ismadogear(sd) ) - pc_setmadogear(sd, 0); + iPc->setmadogear(sd, 0); clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); skill->castend_damage_id(src, src, skill_id, skill_lv, tick, flag); status_set_sp(src, 0, 0); @@ -8012,15 +8012,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif->skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); clif->skill_nodamage(src, bl, skill_id, skill_lv, sc_start(bl,type, 30 + 12 * skill_lv,skill_lv,skill->get_time(skill_id,skill_lv))); - if( sd ) pc_overheat(sd,1); + if( sd ) iPc->overheat(sd,1); break; case NC_MAGNETICFIELD: if( (i = sc_start2(bl,type,100,skill_lv,src->id,skill->get_time(skill_id,skill_lv))) ) { - map_foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),splash_target(src),src,skill_id,skill_lv,tick,flag|BCT_ENEMY|SD_SPLASH|1,skill->castend_damage_id);; + iMap->foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),splash_target(src),src,skill_id,skill_lv,tick,flag|BCT_ENEMY|SD_SPLASH|1,skill->castend_damage_id);; clif->skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skill_id,skill_lv,6); - if (sd) pc_overheat(sd,1); + if (sd) iPc->overheat(sd,1); } clif->skill_nodamage(src,src,skill_id,skill_lv,i); break; @@ -8046,7 +8046,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case NC_DISJOINT: { if( bl->type != BL_MOB ) break; - md = map_id2md(bl->id); + md = iMap->id2md(bl->id); if( md && md->class_ >= MOBID_SILVERSNIPER && md->class_ <= MOBID_MAGICDECOY_WIND ) status_kill(bl); clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); @@ -8090,7 +8090,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } } else { clif->skill_nodamage(src, bl, skill_id, 0, 1); - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); } break; @@ -8128,7 +8128,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case LG_TRAMPLE: clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); - map_foreachinrange(skill->destroy_trap,bl,skill->get_splash(skill_id,skill_lv),BL_SKILL,tick); + iMap->foreachinrange(skill->destroy_trap,bl,skill->get_splash(skill_id,skill_lv),BL_SKILL,tick); break; case LG_REFLECTDAMAGE: @@ -8168,7 +8168,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl,SC_SHIELDSPELL_DEF,100,opt,-1); clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); if( rate < brate ) - map_foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); status_change_end(bl,SC_SHIELDSPELL_DEF,INVALID_TIMER); break; case 2: @@ -8196,14 +8196,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl,SC_SHIELDSPELL_MDEF,100,opt,-1); clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); if( rate < brate ) - map_foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|2,skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|2,skill->castend_damage_id); status_change_end(bl,SC_SHIELDSPELL_MDEF,INVALID_TIMER); break; case 2: sc_start(bl,SC_SHIELDSPELL_MDEF,100,opt,-1); clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); if( rate < brate ) - map_foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub,src,skill->get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_nodamage_id); break; case 3: if( sc_start(bl,SC_SHIELDSPELL_MDEF,brate,opt,sd->bonus.shieldmdef * 30000) ) @@ -8255,15 +8255,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)); else { skill_area_temp[2] = 0; - map_foreachinrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_PC,src,skill_id,skill_lv,tick,flag|SD_PREAMBLE|BCT_PARTY|BCT_SELF|1,skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub,bl,skill->get_splash(skill_id,skill_lv),BL_PC,src,skill_id,skill_lv,tick,flag|SD_PREAMBLE|BCT_PARTY|BCT_SELF|1,skill->castend_nodamage_id); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); } break; case LG_INSPIRATION: if( sd && !map[sd->bl.m].flag.noexppenalty && sd->status.base_level != MAX_LEVEL ) { - sd->status.base_exp -= min(sd->status.base_exp, pc_nextbaseexp(sd) * 1 / 100); // 1% penalty. - sd->status.job_exp -= min(sd->status.job_exp, pc_nextjobexp(sd) * 1 / 100); + sd->status.base_exp -= min(sd->status.base_exp, iPc->nextbaseexp(sd) * 1 / 100); // 1% penalty. + sd->status.job_exp -= min(sd->status.job_exp, iPc->nextjobexp(sd) * 1 / 100); clif->updatestatus(sd,SP_BASEEXP); clif->updatestatus(sd,SP_JOBEXP); } @@ -8275,18 +8275,18 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( is_boss(bl) ) break; if( sc_start2(bl, type, 100, skill_lv, src->id, skill->get_time(skill_id, skill_lv))) { if( bl->type == BL_MOB ) - mob_unlocktarget((TBL_MOB*)bl,gettick()); + mob_unlocktarget((TBL_MOB*)bl,iTimer->gettick()); unit_stop_attack(bl); clif->bladestop(src, bl->id, 1); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } } else { int count = 0; clif->skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); - count = map_forcountinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv), (sd)?sd->spiritball_old:15, // Assume 15 spiritballs in non-charactors + count = iMap->forcountinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv), (sd)?sd->spiritball_old:15, // Assume 15 spiritballs in non-charactors BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); - if( sd ) pc_delspiritball(sd, count, 0); + if( sd ) iPc->delspiritball(sd, count, 0); clif->skill_nodamage(src, src, skill_id, skill_lv, sc_start2(src, SC_CURSEDCIRCLE_ATKER, 100, skill_lv, count, skill->get_time(skill_id,skill_lv))); } @@ -8297,7 +8297,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui short max = 5 + skill_lv; sc_start(bl, SC_EXPLOSIONSPIRITS, 100, skill_lv, skill->get_time(skill_id, skill_lv)); for( i = 0; i < max; i++ ) // Don't call more than max available spheres. - pc_addspiritball(sd, skill->get_time(skill_id, skill_lv), max); + iPc->addspiritball(sd, skill->get_time(skill_id, skill_lv), max); clif->skill_nodamage(src, bl, skill_id, skill_lv, sc_start(bl, type, 100, skill_lv,skill->get_time(skill_id, skill_lv))); } break; @@ -8308,13 +8308,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER ) { i = dstsd->spiritball; //1%sp per spiritball. - pc_delspiritball(dstsd, dstsd->spiritball, 0); + iPc->delspiritball(dstsd, dstsd->spiritball, 0); } if( i ) status_percent_heal(src, 0, i); clif->skill_nodamage(src, bl, skill_id, skill_lv, i ? 1:0); } else { clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|BCT_SELF|SD_SPLASH|1, skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|BCT_SELF|SD_SPLASH|1, skill->castend_nodamage_id); } break; @@ -8323,8 +8323,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; if( sd && dstsd->spiritball <= 5 ) { for(i = 0; i <= 5; i++) { - pc_addspiritball(dstsd, skill->get_time(MO_CALLSPIRITS, pc_checkskill(sd,MO_CALLSPIRITS)), i); - pc_delspiritball(sd, sd->spiritball, 0); + iPc->addspiritball(dstsd, skill->get_time(MO_CALLSPIRITS, iPc->checkskill(sd,MO_CALLSPIRITS)), i); + iPc->delspiritball(sd, sd->spiritball, 0); } } clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); @@ -8378,7 +8378,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case MI_RUSH_WINDMILL: case MI_ECHOSONG: if( sd == NULL || sd->status.party_id == 0 || (flag & 1) ) - sc_start4(bl,type,100,skill_lv,6*skill_lv,(sd?pc_checkskill(sd,WM_LESSON):0),(sd?sd->status.job_level:0),skill->get_time(skill_id,skill_lv)); + sc_start4(bl,type,100,skill_lv,6*skill_lv,(sd?iPc->checkskill(sd,WM_LESSON):0),(sd?sd->status.job_level:0),skill->get_time(skill_id,skill_lv)); else if( sd ) { // Only shows effects on caster. clif->skill_nodamage(src,bl,skill_id,skill_lv,1); party_foreachsamemap(skill->area_sub, sd, skill->get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill->castend_nodamage_id); @@ -8403,7 +8403,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui tstatus->hp = heal; tstatus->sp -= tstatus->sp * ( 120 - 20 * skill_lv ) / 100; clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - pc_revive((TBL_PC*)bl,heal,0); + iPc->revive((TBL_PC*)bl,heal,0); clif->resurrection(bl,1); } } @@ -8417,16 +8417,16 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( flag&1 ) { sc_start2(bl,type,(skill_id==WM_VOICEOFSIREN)?20+10*skill_lv:100,skill_lv,(skill_id==WM_VOICEOFSIREN)?src->id:0,skill->get_time(skill_id,skill_lv)); } else { - map_foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),(skill_id==WM_VOICEOFSIREN)?BL_CHAR|BL_SKILL:BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),(skill_id==WM_VOICEOFSIREN)?BL_CHAR|BL_SKILL:BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); } break; case WM_GLOOMYDAY: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - if( dstsd && ( pc_checkskill(dstsd,KN_BRANDISHSPEAR) || pc_checkskill(dstsd,LK_SPIRALPIERCE) || - pc_checkskill(dstsd,CR_SHIELDCHARGE) || pc_checkskill(dstsd,CR_SHIELDBOOMERANG) || - pc_checkskill(dstsd,PA_SHIELDCHAIN) || pc_checkskill(dstsd,LG_SHIELDPRESS) ) ) + if( dstsd && ( iPc->checkskill(dstsd,KN_BRANDISHSPEAR) || iPc->checkskill(dstsd,LK_SPIRALPIERCE) || + iPc->checkskill(dstsd,CR_SHIELDCHARGE) || iPc->checkskill(dstsd,CR_SHIELDBOOMERANG) || + iPc->checkskill(dstsd,PA_SHIELDCHAIN) || iPc->checkskill(dstsd,LG_SHIELDPRESS) ) ) { sc_start(bl,SC_GLOOMYDAY_SK,100,skill_lv,skill->get_time(skill_id,skill_lv)); break; @@ -8447,12 +8447,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif->skill_fail(sd,skill_id,USESKILL_FAIL_NEED_HELPER,0); break; } - if( map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id,skill_lv), + if( iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id,skill_lv), BL_PC, src, skill_id, skill_lv, tick, BCT_ENEMY, skill->area_sub_count) > 7 ) flag |= 2; else flag |= 1; - map_foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|BCT_SELF, skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|BCT_SELF, skill->castend_nodamage_id); clif->skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src,SC_STOP,100,skill_lv,skill->get_time2(skill_id,skill_lv))); if( flag&2 ) // Dealed here to prevent conflicts @@ -8486,7 +8486,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } else { // These affect to all targets arround the caster. short lv = (short)skill_lv; skill_area_temp[0] = (sd) ? skill->check_pc_partner(sd,skill_id,&lv,skill->get_splash(skill_id,skill_lv),1) : 50; // 50% chance in non BL_PC (clones). - map_foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); } break; @@ -8525,7 +8525,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (!target_id) break; if (skill->get_casttype(improv_skill_id) == CAST_GROUND) { - bl = map_id2bl(target_id); + bl = iMap->id2bl(target_id); if (!bl) bl = src; unit_skilluse_pos(src, bl->x, bl->y, improv_skill_id, improv_skill_lv); } else @@ -8559,10 +8559,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if(!mapindex) { //Given map not found? clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } - pc_setpos(sd, mapindex, x, y, CLR_TELEPORT); + iPc->setpos(sd, mapindex, x, y, CLR_TELEPORT); } break; @@ -8579,7 +8579,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SO_ARRULLO: { - // [(15 + 5 * Skill Level) + ( Caster’s INT / 5 ) + ( Caster’s Job Level / 5 ) - ( Target’s INT / 6 ) - ( Target’s LUK / 10 )] % + // [(15 + 5 * Skill Level) + ( Caster�s INT / 5 ) + ( Caster�s Job Level / 5 ) - ( Target�s INT / 6 ) - ( Target�s LUK / 10 )] % int rate = (15 + 5 * skill_lv) + status_get_int(src)/5 + (sd ? sd->status.job_level : 0); rate -= status_get_int(bl)/6 - status_get_luk(bl)/10; clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); @@ -8589,13 +8589,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case WM_LULLABY_DEEPSLEEP: if( flag&1 ){ - //[(Skill Level x 4) + (Voice Lessons Skill Level x 2) + (Caster’s Base Level / 15) + (Caster’s Job Level / 5)] % - int rate = (4 * skill_lv) + ( (sd) ? pc_checkskill(sd,WM_LESSON)*2 + sd->status.job_level/5 : 0 ) + status_get_lv(src) / 15; + //[(Skill Level x 4) + (Voice Lessons Skill Level x 2) + (Caster�s Base Level / 15) + (Caster�s Job Level / 5)] % + int rate = (4 * skill_lv) + ( (sd) ? iPc->checkskill(sd,WM_LESSON)*2 + sd->status.job_level/5 : 0 ) + status_get_lv(src) / 15; if( bl != src ) sc_start(bl,type,rate,skill_lv,skill->get_time(skill_id,skill_lv)); }else { clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ALL|1, skill->castend_nodamage_id); } break; @@ -8714,7 +8714,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(bl, type, 25 + 10 * skill_lv, skill_lv, skill->get_time(skill_id, skill_lv))) ) status_zap(bl, 0, status_get_max_sp(bl) * (25 + 5 * skill_lv) / 100); } else - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); break; @@ -8731,7 +8731,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( itemdb_is_GNbomb(ammo_id) ) { if(battle->check_target(src,bl,BCT_ENEMY) > 0) {// Only attack if the target is an enemy. if( ammo_id == 13263 ) - map_foreachincell(skill->area_sub,bl->m,bl->x,bl->y,BL_CHAR,src,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); + iMap->foreachincell(skill->area_sub,bl->m,bl->x,bl->y,BL_CHAR,src,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); else skill->attack(BF_WEAPON,src,src,bl,GN_SLINGITEM_RANGEMELEEATK,skill_lv,tick,flag); } else //Otherwise, it fails, shows animation and removes items. @@ -8836,7 +8836,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if(sd) { int ttype = skill->get_ele(skill_id, skill_lv); clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); - pc_add_talisman(sd, skill->get_time(skill_id, skill_lv), 10, ttype); + iPc->add_talisman(sd, skill->get_time(skill_id, skill_lv), 10, ttype); } break; @@ -8850,10 +8850,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui md->master_id = src->id; md->special_state.ai = AI_ZANZOU; if( md->deletetimer != INVALID_TIMER ) - delete_timer(md->deletetimer, mob_timer_delete); - md->deletetimer = add_timer (gettick() + skill->get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0); + iTimer->delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = iTimer->add_timer (iTimer->gettick() + skill->get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0); mob_spawn( md ); - pc_setinvincibletimer(sd,500);// unlock target lock + iPc->setinvincibletimer(sd,500);// unlock target lock clif->skill_nodamage(src,bl,skill_id,skill_lv,1); skill->blown(src,bl,skill->get_blewcount(skill_id,skill_lv),unit_getdir(bl),0); } @@ -8942,7 +8942,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } }else{ skill_area_temp[2] = 0; - map_foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_nodamage_id); + iMap->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_nodamage_id); } break; @@ -9027,8 +9027,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (md) { md->master_id = src->id; if (md->deletetimer != INVALID_TIMER) - delete_timer(md->deletetimer, mob_timer_delete); - md->deletetimer = add_timer(gettick() + skill->get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0); + iTimer->delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = iTimer->add_timer(iTimer->gettick() + skill->get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0); mob_spawn(md); //Now it is ready for spawning. sc_start4(&md->bl, SC_MODECHANGE, 100, 1, 0, MD_ASSIST, 0, 60000); } @@ -9040,7 +9040,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui default: ShowWarning("skill_castend_nodamage_id: Unknown skill used:%d\n",skill_id); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } @@ -9056,7 +9056,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } if( sd && !(flag&1) ) { // ensure that the skill last-cast tick is recorded - sd->canskill_tick = gettick(); + sd->canskill_tick = iTimer->gettick(); if( sd->state.arrow_atk ) { // consume arrow on last invocation to this skill. battle->consume_ammo(sd, skill_id, skill_lv); @@ -9066,7 +9066,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui skill->consume_requirement(sd,skill_id,skill_lv,2); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } @@ -9082,7 +9082,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) struct status_change *sc = NULL; int inf,inf2,flag = 0; - src = map_id2bl(id); + src = iMap->id2bl(id); if( src == NULL ) { ShowDebug("skill_castend_id: src == NULL (tid=%d, id=%d)\n", tid, id); @@ -9111,7 +9111,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) return 0; } - if( sd && ud->skilltimer != INVALID_TIMER && (pc_checkskill(sd,SA_FREECAST) > 0 || ud->skill_id == LG_EXEEDBREAK) ) + if( sd && ud->skilltimer != INVALID_TIMER && (iPc->checkskill(sd,SA_FREECAST) > 0 || ud->skill_id == LG_EXEEDBREAK) ) {// restore original walk speed ud->skilltimer = INVALID_TIMER; status_calc_bl(&sd->bl, SCB_SPEED); @@ -9123,7 +9123,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) if (ud->skilltarget == id) target = src; else - target = map_id2bl(ud->skilltarget); + target = iMap->id2bl(ud->skilltarget); // Use a do so that you can break out of it when the skill fails. do { @@ -9143,7 +9143,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) inf2 = skill->get_splash(ud->skill_id, ud->skill_lv); ud->skillx = target->x + inf2; ud->skilly = target->y + inf2; - if (inf2 && !map_random_dir(target, &ud->skillx, &ud->skilly)) { + if (inf2 && !iMap->random_dir(target, &ud->skillx, &ud->skilly)) { ud->skillx = target->x; ud->skilly = target->y; } @@ -9157,8 +9157,8 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) } if(ud->skill_id == RG_BACKSTAP) { - uint8 dir = map_calc_dir(src,target->x,target->y),t_dir = unit_getdir(target); - if(check_distance_bl(src, target, 0) || map_check_dir(dir,t_dir)) { + uint8 dir = iMap->calc_dir(src,target->x,target->y),t_dir = unit_getdir(target); + if(check_distance_bl(src, target, 0) || iMap->check_dir(dir,t_dir)) { break; } } @@ -9299,8 +9299,8 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) case NPC_GRANDDARKNESS: if( (sc = status_get_sc(src)) && sc->data[SC_STRIPSHIELD] ) { - const struct TimerData *timer = get_timer(sc->data[SC_STRIPSHIELD]->timer); - if( timer && timer->func == status_change_timer && DIFF_TICK(timer->tick,gettick()+skill->get_time(ud->skill_id, ud->skill_lv)) > 0 ) + const struct TimerData *timer = iTimer->get_timer(sc->data[SC_STRIPSHIELD]->timer); + if( timer && timer->func == status_change_timer && DIFF_TICK(timer->tick,iTimer->gettick()+skill->get_time(ud->skill_id, ud->skill_lv)) > 0 ) break; } sc_start2(src, SC_STRIPSHIELD, 100, 0, 1, skill->get_time(ud->skill_id, ud->skill_lv)); @@ -9314,7 +9314,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) ShowInfo("Type %d, ID %d skill castend id [id =%d, lv=%d, target ID %d]\n", src->type, src->id, ud->skill_id, ud->skill_lv, target->id); - map_freeblock_lock(); + iMap->freeblock_lock(); // SC_MAGICPOWER needs to switch states before any damage is actually dealt skill->toggle_magicpower(src, ud->skill_id); @@ -9346,7 +9346,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) else ud->skill_id = 0; //mobs can't clear this one as it is used for skill condition 'afterskill' ud->skill_lv = ud->skilltarget = 0; } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } while(0); @@ -9368,7 +9368,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) if (target && target->m == src->m) { //Move character to target anyway. int dir, x, y; - dir = map_calc_dir(src,target->x,target->y); + dir = iMap->calc_dir(src,target->x,target->y); if( dir > 0 && dir < 4) x = -2; else if( dir > 4 ) x = 2; else x = 0; @@ -9402,7 +9402,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) *------------------------------------------*/ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data) { - struct block_list* src = map_id2bl(id); + struct block_list* src = iMap->id2bl(id); int maxcount; struct map_session_data *sd; struct unit_data *ud = unit_bl2ud(src); @@ -9425,7 +9425,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data) return 0; } - if( sd && ud->skilltimer != INVALID_TIMER && ( pc_checkskill(sd,SA_FREECAST) > 0 || ud->skill_id == LG_EXEEDBREAK ) ) + if( sd && ud->skilltimer != INVALID_TIMER && ( iPc->checkskill(sd,SA_FREECAST) > 0 || ud->skill_id == LG_EXEEDBREAK ) ) {// restore original walk speed ud->skilltimer = INVALID_TIMER; status_calc_bl(&sd->bl, SCB_SPEED); @@ -9529,7 +9529,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data) // } unit_set_walkdelay(src, tick, battle_config.default_walk_delay+skill->get_walkdelay(ud->skill_id, ud->skill_lv), 1); status_change_end(src,SC_CAMOUFLAGE, INVALID_TIMER);// only normal attack and auto cast skills benefit from its bonuses - map_freeblock_lock(); + iMap->freeblock_lock(); skill->castend_pos2(src,ud->skillx,ud->skilly,ud->skill_id,ud->skill_lv,tick,0); if( sd && sd->skillitem != AL_WARP ) // Warp-Portal thru items will clear data in skill_castend_map. [Inkfish] @@ -9541,7 +9541,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data) ud->skill_lv = ud->skillx = ud->skilly = 0; } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 1; } while(0); @@ -9610,11 +9610,11 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case PR_BENEDICTIO: skill_area_temp[1] = src->id; i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea(skill->area_sub, + iMap->foreachinarea(skill->area_sub, src->m, x-i, y-i, x+i, y+i, BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ALL|1, skill->castend_nodamage_id); - map_foreachinarea(skill->area_sub, + iMap->foreachinarea(skill->area_sub, src->m, x-i, y-i, x+i, y+i, BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_damage_id); @@ -9622,7 +9622,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case BS_HAMMERFALL: i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea (skill->area_sub, + iMap->foreachinarea (skill->area_sub, src->m, x-i, y-i, x+i, y+i, BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|2, skill->castend_nodamage_id); @@ -9630,17 +9630,17 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case HT_DETECTING: i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea( status_change_timer_sub, + iMap->foreachinarea( status_change_timer_sub, src->m, x-i, y-i, x+i,y+i,BL_CHAR, src,NULL,SC_SIGHT,tick); if(battle_config.traps_setting&1) - map_foreachinarea( skill_reveal_trap, + iMap->foreachinarea( skill_reveal_trap, src->m, x-i, y-i, x+i,y+i,BL_SKILL); break; case SR_RIDEINLIGHTNING: i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea(skill->area_sub, src->m, x-i, y-i, x+i, y+i, BL_CHAR, + iMap->foreachinarea(skill->area_sub, src->m, x-i, y-i, x+i, y+i, BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_damage_id); break; @@ -9651,7 +9651,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui struct skill_unit_group *sg; if ((sg= skill->locate_element_field(src)) != NULL && ( sg->skill_id == SA_VOLCANO || sg->skill_id == SA_DELUGE || sg->skill_id == SA_VIOLENTGALE )) { - if (sg->limit - DIFF_TICK(gettick(), sg->tick) > 0) { + if (sg->limit - DIFF_TICK(iTimer->gettick(), sg->tick) > 0) { skill->unitsetting(src,skill_id,skill_lv,x,y,0); return 0; // not to consume items } else @@ -9778,7 +9778,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui if( sc->data[SC_BASILICA] ) status_change_end(src, SC_BASILICA, INVALID_TIMER); // Cancel Basilica else { // Create Basilica. Start SC on caster. Unit timer start SC on others. - if( map_foreachinrange(skill_count_wos, src, 2, BL_MOB|BL_PC, src) ) { + if( iMap->foreachinrange(skill_count_wos, src, 2, BL_MOB|BL_PC, src) ) { if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL,0); return 1; @@ -9799,7 +9799,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui break; case RG_CLEANER: // [Valaris] i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea(skill->graffitiremover,src->m,x-i,y-i,x+i,y+i,BL_SKILL); + iMap->foreachinarea(skill->graffitiremover,src->m,x-i,y-i,x+i,y+i,BL_SKILL); break; case SO_WARMER: @@ -9876,8 +9876,8 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui md->master_id = src->id; md->special_state.ai = (skill_id == AM_SPHEREMINE) ? AI_SPHERE : AI_FLORA; if( md->deletetimer != INVALID_TIMER ) - delete_timer(md->deletetimer, mob_timer_delete); - md->deletetimer = add_timer (gettick() + skill->get_time(skill_id,skill_lv), mob_timer_delete, md->bl.id, 0); + iTimer->delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = iTimer->add_timer (iTimer->gettick() + skill->get_time(skill_id,skill_lv), mob_timer_delete, md->bl.id, 0); mob_spawn (md); //Now it is ready for spawning. } } @@ -9887,7 +9887,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case CR_SLIMPITCHER: if (sd) { int i = skill_lv%11 - 1; - int j = pc_search_inventory(sd,skill_db[skill_id].itemid[i]); + int j = iPc->search_inventory(sd,skill_db[skill_id].itemid[i]); if( j < 0 || skill_db[skill_id].itemid[i] <= 0 || sd->inventory_data[j] == NULL || sd->status.inventory[j].amount < skill_db[skill_id].amount[i] ) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); @@ -9899,17 +9899,17 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui run_script(sd->inventory_data[j]->script,0,sd->bl.id,0); potion_flag = 0; //Apply skill bonuses - i = pc_checkskill(sd,CR_SLIMPITCHER)*10 - + pc_checkskill(sd,AM_POTIONPITCHER)*10 - + pc_checkskill(sd,AM_LEARNINGPOTION)*5 - + pc_skillheal_bonus(sd, skill_id); + i = iPc->checkskill(sd,CR_SLIMPITCHER)*10 + + iPc->checkskill(sd,AM_POTIONPITCHER)*10 + + iPc->checkskill(sd,AM_LEARNINGPOTION)*5 + + iPc->skillheal_bonus(sd, skill_id); potion_hp = potion_hp * (100+i)/100; potion_sp = potion_sp * (100+i)/100; if(potion_hp > 0 || potion_sp > 0) { i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea(skill->area_sub, + iMap->foreachinarea(skill->area_sub, src->m,x-i,y-i,x+i,y+i,BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_PARTY|BCT_GUILD|1, skill->castend_nodamage_id); @@ -9931,7 +9931,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui if(potion_hp > 0 || potion_sp > 0) { i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea(skill->area_sub, + iMap->foreachinarea(skill->area_sub, src->m,x-i,y-i,x+i,y+i,BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_PARTY|BCT_GUILD|1, skill->castend_nodamage_id); @@ -9944,7 +9944,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui int dummy = 1; clif->skill_poseffect(src,skill_id,skill_lv,x,y,tick); i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea(skill->cell_overlap, src->m, x-i, y-i, x+i, y+i, BL_SKILL, HW_GANBANTEIN, &dummy, src); + iMap->foreachinarea(skill->cell_overlap, src->m, x-i, y-i, x+i, y+i, BL_SKILL, HW_GANBANTEIN, &dummy, src); } else { if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 1; @@ -9960,7 +9960,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui // Plant Cultivation [Celest] case CR_CULTIVATION: if (sd) { - if( map_count_oncell(src->m,x,y,BL_CHAR) > 0 ) + if( iMap->count_oncell(src->m,x,y,BL_CHAR) > 0 ) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 1; @@ -9975,8 +9975,8 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui if ((i = skill->get_time(skill_id, skill_lv)) > 0) { if( md->deletetimer != INVALID_TIMER ) - delete_timer(md->deletetimer, mob_timer_delete); - md->deletetimer = add_timer (tick + i, mob_timer_delete, md->bl.id, 0); + iTimer->delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = iTimer->add_timer (tick + i, mob_timer_delete, md->bl.id, 0); } mob_spawn (md); } @@ -10028,13 +10028,13 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case NC_ARMSCANNON: case RK_DRAGONBREATH: i = skill->get_splash(skill_id,skill_lv); - map_foreachinarea(skill->area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src), + iMap->foreachinarea(skill->area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src), src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); break; case SO_ARRULLO: i = skill->get_splash(skill_id,skill_lv); - map_foreachinarea(skill->area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src), + iMap->foreachinarea(skill->area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); break; /** @@ -10056,7 +10056,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case AB_EPICLESIS: if( (sg = skill->unitsetting(src, skill_id, skill_lv, x, y, 0)) ) { i = sg->unit->range; - map_foreachinarea(skill->area_sub, src->m, x - i, y - i, x + i, y + i, BL_CHAR, src, ALL_RESURRECTION, 1, tick, flag|BCT_NOENEMY|1,skill->castend_nodamage_id); + iMap->foreachinarea(skill->area_sub, src->m, x - i, y - i, x + i, y + i, BL_CHAR, src, ALL_RESURRECTION, 1, tick, flag|BCT_NOENEMY|1,skill->castend_nodamage_id); } break; /** @@ -10068,12 +10068,12 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui sc->comet_y = y; } i = skill->get_splash(skill_id,skill_lv); - map_foreachinarea(skill->area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src),src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); + iMap->foreachinarea(skill->area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src),src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); break; case WL_EARTHSTRAIN: { - int i, wave = skill_lv + 4, dir = map_calc_dir(src,x,y); + int i, wave = skill_lv + 4, dir = iMap->calc_dir(src,x,y); int sx = x = src->x, sy = y = src->y; // Store first caster's location to avoid glitch on unit setting for( i = 1; i <= wave; i++ ) @@ -10084,7 +10084,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case 2: sx = x - i; break; case 6: sx = x + i; break; } - skill->addtimerskill(src,gettick() + (150 * i),0,sx,sy,skill_id,skill_lv,dir,flag&2); + skill->addtimerskill(src,iTimer->gettick() + (150 * i),0,sx,sy,skill_id,skill_lv,dir,flag&2); } } break; @@ -10093,7 +10093,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui **/ case RA_DETONATOR: i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea(skill->detonator, src->m, x-i, y-i, x+i, y+i, BL_SKILL, src); + iMap->foreachinarea(skill->detonator, src->m, x-i, y-i, x+i, y+i, BL_SKILL, src); clif->skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); break; /** @@ -10104,7 +10104,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui skill->clear_unitgroup(src); // To remove previous skills - cannot used combined if( (sg = skill->unitsetting(src,skill_id,skill_lv,src->x,src->y,0)) != NULL ) { sc_start2(src,skill_id == NC_NEUTRALBARRIER ? SC_NEUTRALBARRIER_MASTER : SC_STEALTHFIELD_MASTER,100,skill_lv,sg->group_id,skill->get_time(skill_id,skill_lv)); - if( sd ) pc_overheat(sd,1); + if( sd ) iPc->overheat(sd,1); } break; @@ -10119,8 +10119,8 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui md->master_id = src->id; md->special_state.ai = AI_FLORA; if( md->deletetimer != INVALID_TIMER ) - delete_timer(md->deletetimer, mob_timer_delete); - md->deletetimer = add_timer (gettick() + skill->get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0); + iTimer->delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = iTimer->add_timer (iTimer->gettick() + skill->get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0); mob_spawn( md ); } } @@ -10142,10 +10142,10 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui int width;//according to data from irowiki it actually is a square for( width = 0; width < 7; width++ ) for( i = 0; i < 7; i++ ) - map_foreachincell(skill->area_sub, src->m, x-2+i, y-2+width, splash_target(src), src, LG_OVERBRAND_BRANDISH, skill_lv, tick, flag|BCT_ENEMY,skill->castend_damage_id); + iMap->foreachincell(skill->area_sub, src->m, x-2+i, y-2+width, splash_target(src), src, LG_OVERBRAND_BRANDISH, skill_lv, tick, flag|BCT_ENEMY,skill->castend_damage_id); for( width = 0; width < 7; width++ ) for( i = 0; i < 7; i++ ) - map_foreachincell(skill->area_sub, src->m, x-2+i, y-2+width, splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY,skill->castend_damage_id); + iMap->foreachincell(skill->area_sub, src->m, x-2+i, y-2+width, splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY,skill->castend_damage_id); } break; @@ -10154,7 +10154,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui status_change_end(src,SC_BANDING,INVALID_TIMER); else if( (sg = skill->unitsetting(src,skill_id,skill_lv,src->x,src->y,0)) != NULL ) { sc_start4(src,SC_BANDING,100,skill_lv,0,0,sg->group_id,skill->get_time(skill_id,skill_lv)); - if( sd ) pc_banding(sd,skill_lv); + if( sd ) iPc->banding(sd,skill_lv); } clif->skill_nodamage(src,src,skill_id,skill_lv,1); break; @@ -10162,7 +10162,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case LG_RAYOFGENESIS: if( status_charge(src,status_get_max_hp(src)*3*skill_lv / 100,0) ) { i = skill->get_splash(skill_id,skill_lv); - map_foreachinarea(skill->area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src), + iMap->foreachinarea(skill->area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src), src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); } else if( sd ) clif->skill_fail(sd,skill_id,USESKILL_FAIL,0); @@ -10170,13 +10170,13 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case WM_DOMINION_IMPULSE: i = skill->get_splash(skill_id, skill_lv); - map_foreachinarea( skill->activate_reverberation, + iMap->foreachinarea( skill->activate_reverberation, src->m, x-i, y-i, x+i,y+i,BL_SKILL); break; case WM_GREAT_ECHO: flag|=1; // Should counsume 1 item per skill usage. - map_foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, src, skill->get_splash(skill_id,skill_lv),splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY, skill->castend_damage_id); break; case GN_CRAZYWEED: { int area = skill->get_splash(GN_CRAZYWEED_ATK, skill_lv); @@ -10208,10 +10208,10 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui clif->changetraplook(&ud->skillunit[i]->unit->bl, UNT_FIRE_EXPANSION_TEAR_GAS); break; case 5: - map_foreachinarea(skill->area_sub, src->m, + iMap->foreachinarea(skill->area_sub, src->m, ud->skillunit[i]->unit->bl.x - 3, ud->skillunit[i]->unit->bl.y - 3, ud->skillunit[i]->unit->bl.x + 3, ud->skillunit[i]->unit->bl.y + 3, BL_CHAR, - src, CR_ACIDDEMONSTRATION, sd ? pc_checkskill(sd, CR_ACIDDEMONSTRATION) : skill_lv, tick, flag|BCT_ENEMY|1|SD_LEVEL, skill->castend_damage_id); + src, CR_ACIDDEMONSTRATION, sd ? iPc->checkskill(sd, CR_ACIDDEMONSTRATION) : skill_lv, tick, flag|BCT_ENEMY|1|SD_LEVEL, skill->castend_damage_id); skill->delunit(ud->skillunit[i]->unit); break; default: @@ -10254,7 +10254,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER); if( sd ) {// ensure that the skill last-cast tick is recorded - sd->canskill_tick = gettick(); + sd->canskill_tick = iTimer->gettick(); if( sd->state.arrow_atk && !(flag&1) ) { // consume arrow if this is a ground skill @@ -10294,7 +10294,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char sd->sc.data[SC_ROKISWEIL] || sd->sc.data[SC_AUTOCOUNTER] || sd->sc.data[SC_STEELBODY] || - (sd->sc.data[SC_DANCING] && skill_id < RK_ENCHANTBLADE && !pc_checkskill(sd, WM_LESSON)) || + (sd->sc.data[SC_DANCING] && skill_id < RK_ENCHANTBLADE && !iPc->checkskill(sd, WM_LESSON)) || sd->sc.data[SC_BERSERK] || sd->sc.data[SC__BLOODYLUST] || sd->sc.data[SC_BASILICA] || sd->sc.data[SC_MARIONETTE] || @@ -10323,9 +10323,9 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char switch(skill_id) { case AL_TELEPORT: if(strcmp(map,"Random")==0) - pc_randomwarp(sd,CLR_TELEPORT); + iPc->randomwarp(sd,CLR_TELEPORT); else if (sd->menuskill_val > 1) //Need lv2 to be able to warp here. - pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); + iPc->setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); break; case AL_WARP: @@ -10360,7 +10360,7 @@ int skill_castend_map (struct map_session_data *sd, uint16 skill_id, const char } } - lv = sd->skillitem==skill_id?sd->skillitemlv:pc_checkskill(sd,skill_id); + lv = sd->skillitem==skill_id?sd->skillitemlv:iPc->checkskill(sd,skill_id); wx = sd->menuskill_val>>16; wy = sd->menuskill_val&0xffff; @@ -10441,7 +10441,7 @@ int skill_dance_overlap(struct skill_unit* unit, int flag) { unit->val2 &= ~UF_ENSEMBLE; } - return map_foreachincell(skill->dance_overlap_sub, unit->bl.m,unit->bl.x,unit->bl.y,BL_SKILL, unit,flag); + return iMap->foreachincell(skill->dance_overlap_sub, unit->bl.m,unit->bl.x,unit->bl.y,BL_SKILL, unit,flag); } /*========================================== @@ -10504,14 +10504,14 @@ int skill_icewall_block(struct block_list *bl,va_list ap) { nullpo_ret(bl); nullpo_ret(md); - if( !md->target_id || ( target = map_id2bl(md->target_id) ) == NULL ) + if( !md->target_id || ( target = iMap->id2bl(md->target_id) ) == NULL ) return 0; if( path_search_long(NULL,bl->m,bl->x,bl->y,target->x,target->y,CELL_CHKICEWALL) ) return 0; if( !check_distance_bl(bl, target, status_get_range(bl) ) ) { - mob_unlocktarget(md,gettick()); + mob_unlocktarget(md,iTimer->gettick()); mob_stop_walking(md,1); } @@ -10582,7 +10582,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill { //Warp Portal morphing to active mode, extract relevant data from src. [Skotlex] if( src->type != BL_SKILL ) return NULL; group = ((TBL_SKILL*)src)->group; - src = map_id2bl(group->src_id); + src = iMap->id2bl(group->src_id); if( !src ) return NULL; val2 = group->val2; //Copy the (x,y) position you warp to val3 = group->val3; //as well as the mapindex to warp to. @@ -10598,7 +10598,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill break; case WZ_FIREPILLAR: - if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) + if( iMap->getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) return NULL; if((flag&1)!=0) limit=1000; @@ -10663,7 +10663,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill old_sg->skill_id == SA_VIOLENTGALE ) && old_sg->limit > 0) { //Use the previous limit (minus the elapsed time) [Skotlex] - limit = old_sg->limit - DIFF_TICK(gettick(), old_sg->tick); + limit = old_sg->limit - DIFF_TICK(iTimer->gettick(), old_sg->tick); if (limit < 0) //This can happen... limit = skill->get_time(skill_id,skill_lv); } @@ -10680,8 +10680,8 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill val1 = skill_lv +status->agi/10; // Flee increase val2 = ((skill_lv+1)/2)+status->luk/10; // Perfect dodge increase if(sd){ - val1 += pc_checkskill(sd,BA_MUSICALLESSON); - val2 += pc_checkskill(sd,BA_MUSICALLESSON); + val1 += iPc->checkskill(sd,BA_MUSICALLESSON); + val2 += iPc->checkskill(sd,BA_MUSICALLESSON); } break; case DC_HUMMING: @@ -10690,47 +10690,47 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill val1 *= 2; #endif if(sd) - val1 += pc_checkskill(sd,DC_DANCINGLESSON); + val1 += iPc->checkskill(sd,DC_DANCINGLESSON); break; case BA_POEMBRAGI: val1 = 3*skill_lv+status->dex/10; // Casting time reduction //For some reason at level 10 the base delay reduction is 50%. val2 = (skill_lv<10?3*skill_lv:50)+status->int_/5; // After-cast delay reduction if(sd){ - val1 += 2*pc_checkskill(sd,BA_MUSICALLESSON); - val2 += 2*pc_checkskill(sd,BA_MUSICALLESSON); + val1 += 2*iPc->checkskill(sd,BA_MUSICALLESSON); + val2 += 2*iPc->checkskill(sd,BA_MUSICALLESSON); } break; case DC_DONTFORGETME: val1 = status->dex/10 + 3*skill_lv + 5; // ASPD decrease val2 = status->agi/10 + 3*skill_lv + 5; // Movement speed adjustment. if(sd){ - val1 += pc_checkskill(sd,DC_DANCINGLESSON); - val2 += pc_checkskill(sd,DC_DANCINGLESSON); + val1 += iPc->checkskill(sd,DC_DANCINGLESSON); + val2 += iPc->checkskill(sd,DC_DANCINGLESSON); } break; case BA_APPLEIDUN: val1 = 5+2*skill_lv+status->vit/10; // MaxHP percent increase if(sd) - val1 += pc_checkskill(sd,BA_MUSICALLESSON); + val1 += iPc->checkskill(sd,BA_MUSICALLESSON); break; case DC_SERVICEFORYOU: val1 = 15+skill_lv+(status->int_/10); // MaxSP percent increase TO-DO: this INT bonus value is guessed val2 = 20+3*skill_lv+(status->int_/10); // SP cost reduction if(sd){ - val1 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This bonus value is guessed - val2 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO Should be half this value + val1 += iPc->checkskill(sd,DC_DANCINGLESSON); //TO-DO This bonus value is guessed + val2 += iPc->checkskill(sd,DC_DANCINGLESSON); //TO-DO Should be half this value } break; case BA_ASSASSINCROSS: val1 = 100+(10*skill_lv)+(status->agi/10); // ASPD increase if(sd) - val1 += 5*pc_checkskill(sd,BA_MUSICALLESSON); + val1 += 5*iPc->checkskill(sd,BA_MUSICALLESSON); break; case DC_FORTUNEKISS: val1 = 10+skill_lv+(status->luk/10); // Critical increase if(sd) - val1 += pc_checkskill(sd,DC_DANCINGLESSON); + val1 += iPc->checkskill(sd,DC_DANCINGLESSON); val1*=10; //Because every 10 crit is an actual cri point. break; case BD_DRUMBATTLEFIELD: @@ -10819,7 +10819,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill interval = limit; val2 = 1; case WM_POEMOFNETHERWORLD: // Can't be placed on top of Land Protector. - if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) + if( iMap->getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) return NULL; break; case SO_CLOUD_KILL: @@ -10848,7 +10848,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill val2 = i; // aura type limit += val1 * 1000; subunt = i - 1; - pc_del_talisman(sd, sd->talisman[i], i); + iPc->del_talisman(sd, sd->talisman[i], i); } } break; @@ -10865,7 +10865,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill group->state.guildaura = ( skill_id >= GD_LEADERSHIP && skill_id <= GD_HAWKEYES )?1:0; group->item_id = req_item; //if tick is greater than current, do not invoke onplace function just yet. [Skotlex] - if (DIFF_TICK(group->tick, gettick()) > SKILLUNITTIMER_INTERVAL) + if (DIFF_TICK(group->tick, iTimer->gettick()) > SKILLUNITTIMER_INTERVAL) active_flag = 0; if(skill_id==HT_TALKIEBOX || skill_id==RG_GRAFFITI){ @@ -10898,7 +10898,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill int val2 = 0; int alive = 1; - if( !group->state.song_dance && !map_getcell(src->m,ux,uy,CELL_CHKREACH) ) + if( !group->state.song_dance && !iMap->getcell(src->m,ux,uy,CELL_CHKREACH) ) continue; // don't place skill units on walls (except for songs/dances/encores) if( battle_config.skill_wall_check && skill->get_unit_flag(skill_id)&UF_PATHCHECK && !path_search_long(NULL,src->m,ux,uy,x,y,CELL_CHKWALL) ) continue; // no path between cell and center of casting. @@ -10910,7 +10910,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill break; case WZ_ICEWALL: val1 = (skill_lv <= 1) ? 500 : 200 + 200*skill_lv; - val2 = map_getcell(src->m, ux, uy, CELL_GETTYPE); + val2 = iMap->getcell(src->m, ux, uy, CELL_GETTYPE); break; case HT_LANDMINE: case MA_LANDMINE: @@ -10963,7 +10963,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill val2 |= UF_RANGEDSINGLEUNIT; // center. if( range <= 0 ) - map_foreachincell(skill->cell_overlap,src->m,ux,uy,BL_SKILL,skill_id, &alive, src); + iMap->foreachincell(skill->cell_overlap,src->m,ux,uy,BL_SKILL,skill_id, &alive, src); if( !alive ) continue; @@ -10979,7 +10979,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill // execute on all targets standing on this cell if (range==0 && active_flag) - map_foreachincell(skill->unit_effect,unit->bl.m,unit->bl.x,unit->bl.y,group->bl_flag,&unit->bl,gettick(),1); + iMap->foreachincell(skill->unit_effect,unit->bl.m,unit->bl.x,unit->bl.y,group->bl_flag,&unit->bl,iTimer->gettick(),1); } if (!group->alive_count) { //No cells? Something that was blocked completely by Land Protector? @@ -10990,7 +10990,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, uint16 skill //success, unit created. switch( skill_id ) { case WZ_ICEWALL: - map_foreachinrange(skill->icewall_block, src, AREA_SIZE, BL_MOB); + iMap->foreachinrange(skill->icewall_block, src, AREA_SIZE, BL_MOB); break; case NJ_TATAMIGAESHI: //Store number of tiles. group->val1 = group->alive_count; @@ -11018,9 +11018,9 @@ int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned return 0; nullpo_ret(sg=src->group); - nullpo_ret(ss=map_id2bl(sg->src_id)); + nullpo_ret(ss=iMap->id2bl(sg->src_id)); - if( skill->get_type(sg->skill_id) == BF_MAGIC && map_getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR) && sg->skill_id != SA_LANDPROTECTOR ) + if( skill->get_type(sg->skill_id) == BF_MAGIC && iMap->getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR) && sg->skill_id != SA_LANDPROTECTOR ) return 0; //AoE skills are ineffective. [Skotlex] sc = status_get_sc(bl); @@ -11040,10 +11040,10 @@ int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned } else if( sc && battle->check_target(&sg->unit->bl,bl,sg->target_flag) > 0 ) { int sec = skill->get_time2(sg->skill_id,sg->skill_lv); if( status_change_start(bl,type,10000,sg->skill_lv,1,sg->group_id,0,sec,8) ) { - const struct TimerData* td = sc->data[type]?get_timer(sc->data[type]->timer):NULL; + const struct TimerData* td = sc->data[type]?iTimer->get_timer(sc->data[type]->timer):NULL; if( td ) sec = DIFF_TICK(td->tick, tick); - map_moveblock(bl, src->bl.x, src->bl.y, tick); + iMap->moveblock(bl, src->bl.x, src->bl.y, tick); clif->fixpos(bl); sg->val2 = bl->id; } @@ -11068,11 +11068,11 @@ int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned break; //Does not affect the caster. if (!sce) { TBL_PC *sd = BL_CAST(BL_PC, bl); //prevent fullheal exploit - if (sd && sd->bloodylust_tick && DIFF_TICK(gettick(), sd->bloodylust_tick) < skill->get_time2(SC_BLOODYLUST, 1)) + if (sd && sd->bloodylust_tick && DIFF_TICK(iTimer->gettick(), sd->bloodylust_tick) < skill->get_time2(SC_BLOODYLUST, 1)) clif->skill_nodamage(&src->bl,bl,sg->skill_id,sg->skill_lv, sc_start4(bl, type, 100, sg->skill_lv, 1, 0, 0, skill->get_time(LK_BERSERK, sg->skill_lv))); else { - if (sd) sd->bloodylust_tick = gettick(); + if (sd) sd->bloodylust_tick = iTimer->gettick(); clif->skill_nodamage(&src->bl,bl,sg->skill_id,sg->skill_lv, sc_start4(bl, type, 100, sg->skill_lv, 0, 0, 0, skill->get_time(LK_BERSERK, sg->skill_lv))); } @@ -11095,15 +11095,15 @@ int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned if( --count <= 0 ) skill->del_unitgroup(sg,ALC_MARK); - if ( map_mapindex2mapid(sg->val3) == sd->bl.m && x == sd->bl.x && y == sd->bl.y ) + if ( iMap->mapindex2mapid(sg->val3) == sd->bl.m && x == sd->bl.x && y == sd->bl.y ) working = 1;/* we break it because officials break it, lovely stuff. */ sg->val1 = (count<<16)|working; - pc_setpos(sd,m,x,y,CLR_TELEPORT); + iPc->setpos(sd,m,x,y,CLR_TELEPORT); } } else if(bl->type == BL_MOB && battle_config.mob_warp&2) { - int16 m = map_mapindex2mapid(sg->val3); + int16 m = iMap->mapindex2mapid(sg->val3); if (m < 0) break; //Map not available on this map-server. unit_warp(bl,m,sg->val2>>16,sg->val2&0xffff,CLR_TELEPORT); } @@ -11162,8 +11162,8 @@ int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned else if (sce->val4 == 1) { //Readjust timers since the effect will not last long. sce->val4 = 0; - delete_timer(sce->timer, status_change_timer); - sce->timer = add_timer(tick+sg->limit, status_change_timer, bl->id, type); + iTimer->delete_timer(sce->timer, status_change_timer); + sce->timer = iTimer->add_timer(tick+sg->limit, status_change_timer, bl->id, type); } break; @@ -11241,7 +11241,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns return 0; nullpo_ret(sg=src->group); - nullpo_ret(ss=map_id2bl(sg->src_id)); + nullpo_ret(ss=iMap->id2bl(sg->src_id)); tsd = BL_CAST(BL_PC, bl); tsc = status_get_sc(bl); @@ -11273,7 +11273,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns ts->tick = tick+sg->interval; if ((skill_id==CR_GRANDCROSS || skill_id==NPC_GRANDDARKNESS) && !battle_config.gx_allhit) - ts->tick += sg->interval*(map_count_oncell(bl->m,bl->x,bl->y,BL_CHAR)-1); + ts->tick += sg->interval*(iMap->count_oncell(bl->m,bl->x,bl->y,BL_CHAR)-1); } switch (sg->unit_id) { @@ -11423,7 +11423,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns if( sg->val2 == 0 && tsc && (sg->unit_id == UNT_ANKLESNARE || bl->id != sg->src_id) ) { int sec = skill->get_time2(sg->skill_id,sg->skill_lv); if( status_change_start(bl,type,10000,sg->skill_lv,sg->group_id,0,0,sec, 8) ) { - const struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL; + const struct TimerData* td = tsc->data[type]?iTimer->get_timer(tsc->data[type]->timer):NULL; if( td ) sec = DIFF_TICK(td->tick, tick); if( sg->unit_id == UNT_MANHOLE || battle_config.skill_trap_type || !map_flag_gvg(src->bl.m) ) { @@ -11454,12 +11454,12 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns break; if( status_change_start(bl,type,10000,sg->skill_lv,sg->group_id,0,0,skill->get_time2(sg->skill_id, sg->skill_lv), 8) ) { - map_moveblock(bl, src->bl.x, src->bl.y, tick); + iMap->moveblock(bl, src->bl.x, src->bl.y, tick); clif->fixpos(bl); } - map_foreachinrange(skill->trap_splash, &src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl, tick); + iMap->foreachinrange(skill->trap_splash, &src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl, tick); sg->unit_id = UNT_USED_TRAPS; //Changed ID so it does not invoke a for each in area again. } break; @@ -11489,7 +11489,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns case UNT_FLASHER: case UNT_FREEZINGTRAP: case UNT_FIREPILLAR_ACTIVE: - map_foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick); + iMap->foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick); if (sg->unit_id != UNT_FIREPILLAR_ACTIVE) clif->changetraplook(&src->bl, sg->unit_id==UNT_LANDMINE?UNT_FIREPILLAR_ACTIVE:UNT_USED_TRAPS); sg->limit=DIFF_TICK(tick,sg->tick)+1500 + @@ -11675,7 +11675,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns case UNT_GROUNDDRIFT_POISON: case UNT_GROUNDDRIFT_WATER: case UNT_GROUNDDRIFT_FIRE: - map_foreachinrange(skill->trap_splash,&src->bl, + iMap->foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick); sg->unit_id = UNT_USED_TRAPS; @@ -11725,14 +11725,14 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns case UNT_DIMENSIONDOOR: if( tsd && !map[bl->m].flag.noteleport ) - pc_randomwarp(tsd,3); + iPc->randomwarp(tsd,3); else if( bl->type == BL_MOB && battle_config.mob_warp&8 ) unit_warp(bl,-1,-1,-1,3); break; case UNT_REVERBERATION: clif->changetraplook(&src->bl,UNT_USED_TRAPS); - map_foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick); + iMap->foreachinrange(skill->trap_splash,&src->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &src->bl,tick); sg->limit = DIFF_TICK(tick,sg->tick)+1000; sg->unit_id = UNT_USED_TRAPS; break; @@ -11755,10 +11755,10 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns if( !sg->val2 ) { int sec = skill->get_time2(sg->skill_id, sg->skill_lv); if( sc_start(bl, type, 100, sg->skill_lv, sec) ) { - const struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL; + const struct TimerData* td = tsc->data[type]?iTimer->get_timer(tsc->data[type]->timer):NULL; if( td ) sec = DIFF_TICK(td->tick, tick); - ///map_moveblock(bl, src->bl.x, src->bl.y, tick); // in official server it doesn't behave like this. [malufett] + ///iMap->moveblock(bl, src->bl.x, src->bl.y, tick); // in official server it doesn't behave like this. [malufett] clif->fixpos(bl); sg->val2 = bl->id; } else @@ -11782,7 +11782,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns break; case 3: skill->attack(skill->get_type(CR_ACIDDEMONSTRATION), ss, &src->bl, bl, - CR_ACIDDEMONSTRATION, sd ? pc_checkskill(sd, CR_ACIDDEMONSTRATION) : sg->skill_lv, tick, 0); + CR_ACIDDEMONSTRATION, sd ? iPc->checkskill(sd, CR_ACIDDEMONSTRATION) : sg->skill_lv, tick, 0); break; } @@ -11973,7 +11973,7 @@ int skill_unit_onout (struct skill_unit *src, struct block_list *bl, unsigned in break; case UNT_SPIDERWEB: { - struct block_list *target = map_id2bl(sg->val2); + struct block_list *target = iMap->id2bl(sg->val2); if (target && target==bl) { if (sce && sce->val3 == sg->group_id) @@ -12063,11 +12063,11 @@ static int skill_unit_onleft (uint16 skill_id, struct block_list *bl, unsigned i case DC_FORTUNEKISS: case DC_SERVICEFORYOU: if (sce) { - delete_timer(sce->timer, status_change_timer); + iTimer->delete_timer(sce->timer, status_change_timer); //NOTE: It'd be nice if we could get the skill_lv for a more accurate extra time, but alas... //not possible on our current implementation. sce->val4 = 1; //Store the fact that this is a "reduced" duration effect. - sce->timer = add_timer(tick+skill->get_time2(skill_id,1), status_change_timer, bl->id, type); + sce->timer = iTimer->add_timer(tick+skill->get_time2(skill_id,1), status_change_timer, bl->id, type); } break; case PF_FOGWALL: @@ -12077,8 +12077,8 @@ static int skill_unit_onleft (uint16 skill_id, struct block_list *bl, unsigned i if (bl->type == BL_PC) //Players get blind ended inmediately, others have it still for 30 secs. [Skotlex] status_change_end(bl, SC_BLIND, INVALID_TIMER); else { - delete_timer(sce->timer, status_change_timer); - sce->timer = add_timer(30000+tick, status_change_timer, bl->id, SC_BLIND); + iTimer->delete_timer(sce->timer, status_change_timer); + sce->timer = iTimer->add_timer(30000+tick, status_change_timer, bl->id, SC_BLIND); } } } @@ -12209,7 +12209,7 @@ int skill_check_condition_char_sub (struct block_list *bl, va_list ap) { switch(skill_id) { case PR_BENEDICTIO: { - uint8 dir = map_calc_dir(&sd->bl,tsd->bl.x,tsd->bl.y); + uint8 dir = iMap->calc_dir(&sd->bl,tsd->bl.x,tsd->bl.y); dir = (unit_getdir(&sd->bl) + dir)%8; //This adjusts dir to account for the direction the sd is facing. if ((tsd->class_&MAPID_BASEMASK) == MAPID_ACOLYTE && (dir == 2 || dir == 6) //Must be standing to the left/right of Priest. && sd->status.sp >= 10) @@ -12238,7 +12238,7 @@ int skill_check_condition_char_sub (struct block_list *bl, va_list ap) { return 0; if (sd->status.sex != tsd->status.sex && (tsd->class_&MAPID_UPPERMASK) == MAPID_BARDDANCER && - (skill_lv = pc_checkskill(tsd, skill_id)) > 0 && + (skill_lv = iPc->checkskill(tsd, skill_id)) > 0 && (tsd->weapontype1==W_MUSICAL || tsd->weapontype1==W_WHIP) && sd->status.party_id && tsd->status.party_id && sd->status.party_id == tsd->status.party_id && @@ -12274,26 +12274,26 @@ int skill_check_pc_partner (struct map_session_data *sd, uint16 skill_id, short* switch (skill_id) { case PR_BENEDICTIO: for (i = 0; i < c; i++) { - if ((tsd = map_id2sd(p_sd[i])) != NULL) + if ((tsd = iMap->id2sd(p_sd[i])) != NULL) status_charge(&tsd->bl, 0, 10); } return c; case AB_ADORAMUS: - if( c > 0 && (tsd = map_id2sd(p_sd[0])) != NULL ) { + if( c > 0 && (tsd = iMap->id2sd(p_sd[0])) != NULL ) { i = 2 * (*skill_lv); status_charge(&tsd->bl, 0, i); } break; case WM_GREAT_ECHO: for( i = 0; i < c; i++ ) { - if( (tsd = map_id2sd(p_sd[i])) != NULL ) + if( (tsd = iMap->id2sd(p_sd[i])) != NULL ) status_zap(&tsd->bl,0,skill->get_sp(skill_id,*skill_lv)/c); } break; default: //Warning: Assuming Ensemble skills here (for speed) if( is_chorus ) break;//Chorus skills are not to be parsed as ensambles - if (c > 0 && sd->sc.data[SC_DANCING] && (tsd = map_id2sd(p_sd[0])) != NULL) { + if (c > 0 && sd->sc.data[SC_DANCING] && (tsd = iMap->id2sd(p_sd[0])) != NULL) { sd->sc.data[SC_DANCING]->val4 = tsd->bl.id; sc_start4(&tsd->bl,SC_DANCING,100,skill_id,sd->sc.data[SC_DANCING]->val2,*skill_lv,sd->bl.id,skill->get_time(skill_id,*skill_lv)+1000); clif->skill_nodamage(&tsd->bl, &sd->bl, skill_id, *skill_lv, 1); @@ -12310,7 +12310,7 @@ int skill_check_pc_partner (struct map_session_data *sd, uint16 skill_id, short* if( is_chorus ) i = party_foreachsamemap(skill->check_condition_char_sub,sd,AREA_SIZE,&sd->bl, &c, &p_sd, skill_id, *skill_lv); else - i = map_foreachinrange(skill->check_condition_char_sub, &sd->bl, range, BL_PC, &sd->bl, &c, &p_sd, skill_id); + i = iMap->foreachinrange(skill->check_condition_char_sub, &sd->bl, range, BL_PC, &sd->bl, &c, &p_sd, skill_id); if ( skill_id != PR_BENEDICTIO && skill_id != AB_ADORAMUS && skill_id != WL_COMET ) //Apply the average lv to encore skills. *skill_lv = (i+(*skill_lv))/(c+1); //I know c should be one, but this shows how it could be used for the average of n partners. @@ -12417,7 +12417,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id if( skill_id == WZ_EARTHSPIKE && sc && sc->data[SC_EARTHSCROLL] && rnd()%100 > sc->data[SC_EARTHSCROLL]->val2 ) // [marquis007] ; //Do not consume item. else if( sd->status.inventory[i].expire_time == 0 ) - pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); // Rental usable items are not consumed until expiration + iPc->delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); // Rental usable items are not consumed until expiration } return 1; } @@ -12595,7 +12595,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id status_change_end(&sd->bl, SC_COMBO, INVALID_TIMER); return 0; } - if(sc->data[SC_COMBO]->val1 != skill_id && !( sd && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON) )) { //Cancel combo wait. + if(sc->data[SC_COMBO]->val1 != skill_id && !( sd && sd->status.base_level >= 90 && iPc->famerank(sd->status.char_id, MAPID_TAEKWON) )) { //Cancel combo wait. unit_cancel_combo(&sd->bl); return 0; } @@ -12652,7 +12652,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id for (i=0;i<size*size;i++) { x = sd->bl.x+(i%size-range); y = sd->bl.y+(i/size-range); - if (map_getcell(sd->bl.m,x,y,CELL_CHKWALL)) { + if (iMap->getcell(sd->bl.m,x,y,CELL_CHKWALL)) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; } @@ -12662,8 +12662,8 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id case PR_REDEMPTIO: { int exp; - if( ((exp = pc_nextbaseexp(sd)) > 0 && get_percentage(sd->status.base_exp, exp) < 1) || - ((exp = pc_nextjobexp(sd)) > 0 && get_percentage(sd->status.job_exp, exp) < 1)) { + if( ((exp = iPc->nextbaseexp(sd)) > 0 && get_percentage(sd->status.base_exp, exp) < 1) || + ((exp = iPc->nextjobexp(sd)) > 0 && get_percentage(sd->status.job_exp, exp) < 1)) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); //Not enough exp. return 0; } @@ -12671,7 +12671,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id } case AM_TWILIGHT2: case AM_TWILIGHT3: - if (!party_skill_check(sd, sd->status.party_id, skill_id, skill_lv)) + if (!iParty->skill_check(sd, sd->status.party_id, skill_id, skill_lv)) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; @@ -12804,7 +12804,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id * Warlock **/ case WL_COMET: - if( skill->check_pc_partner(sd,skill_id,&skill_lv,1,0) <= 0 && ((i = pc_search_inventory(sd,require.itemid[0])) < 0 || sd->status.inventory[i].amount < require.amount[0]) ) + if( skill->check_pc_partner(sd,skill_id,&skill_lv,1,0) <= 0 && ((i = iPc->search_inventory(sd,require.itemid[0])) < 0 || sd->status.inventory[i].amount < require.amount[0]) ) { //clif->skill_fail(sd,skill_id,USESKILL_FAIL_NEED_ITEM,require.amount[0],require.itemid[0]); clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); @@ -12918,7 +12918,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id break; case SR_CURSEDCIRCLE: if (map_flag_gvg(sd->bl.m)) { - if (map_foreachinrange(mob_count_sub, &sd->bl, skill->get_splash(skill_id, skill_lv), BL_MOB, + if (iMap->foreachinrange(mob_count_sub, &sd->bl, skill->get_splash(skill_id, skill_lv), BL_MOB, MOBID_EMPERIUM, MOBID_GUARIDAN_STONE1, MOBID_GUARIDAN_STONE2)) { char output[128]; sprintf(output, "You're too close to a stone or emperium to do this skill"); @@ -13072,7 +13072,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id break; case ST_MOVE_ENABLE: if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill_id) - sd->ud.canmove_tick = gettick(); //When using a combo, cancel the can't move delay to enable the skill. [Skotlex] + sd->ud.canmove_tick = iTimer->gettick(); //When using a combo, cancel the can't move delay to enable the skill. [Skotlex] if (!unit_can_move(&sd->bl)) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); @@ -13082,7 +13082,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id case ST_WATER: if (sc && (sc->data[SC_DELUGE] || sc->data[SC_SUITON])) break; - if (map_getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKWATER)) + if (iMap->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKWATER)) break; clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; @@ -13262,7 +13262,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, int maxcount = (skill_id==AM_CANNIBALIZE)? 6-skill_lv : skill->get_maxcount(skill_id,skill_lv); int mob_class = (skill_id==AM_CANNIBALIZE)? summons[skill_lv-1] :1142; if(battle_config.land_skill_limit && maxcount>0 && (battle_config.land_skill_limit&BL_PC)) { - i = map_foreachinmap(skill->check_condition_mob_master_sub ,sd->bl.m, BL_MOB, sd->bl.id, mob_class, skill_id, &c); + i = iMap->foreachinmap(skill->check_condition_mob_master_sub ,sd->bl.m, BL_MOB, sd->bl.id, mob_class, skill_id, &c); if(c >= maxcount || (skill_id==AM_CANNIBALIZE && c != i && battle_config.summon_flora&2)) { //Fails when: exceed max limit. There are other plant types already out. @@ -13283,9 +13283,9 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, if( battle_config.land_skill_limit && maxcount > 0 && ( battle_config.land_skill_limit&BL_PC ) ) { if( skill_id == NC_MAGICDECOY ) { for( j = mob_class; j <= 2046; j++ ) - map_foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, j, skill_id, &c); + iMap->foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, j, skill_id, &c); } else - map_foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, mob_class, skill_id, &c); + iMap->foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, mob_class, skill_id, &c); if( c >= maxcount ) { clif->skill_fail(sd , skill_id, USESKILL_FAIL_LEVEL, 0); return 0; @@ -13295,7 +13295,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, break; case KO_ZANZOU: { int c = 0; - i = map_foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, 2308, skill_id, &c); + i = iMap->foreachinmap(skill->check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, 2308, skill_id, &c); if( c >= skill->get_maxcount(skill_id,skill_lv) || c != i) { clif->skill_fail(sd , skill_id, USESKILL_FAIL_LEVEL, 0); return 0; @@ -13342,7 +13342,7 @@ int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; ++i ) { if( !require.itemid[i] ) continue; - index[i] = pc_search_inventory(sd,require.itemid[i]); + index[i] = iPc->search_inventory(sd,require.itemid[i]); if( index[i] < 0 || sd->status.inventory[index[i]].amount < require.amount[i] ) { if( require.itemid[i] == ITEMID_RED_GEMSTONE ) clif->skill_fail(sd,skill_id,USESKILL_FAIL_REDJAMSTONE,0);// red gemstone required @@ -13375,7 +13375,7 @@ int skill_consume_requirement( struct map_session_data *sd, uint16 skill_id, uin status_zap(&sd->bl, req.hp, req.sp); if(req.spiritball > 0) - pc_delspiritball(sd,req.spiritball,0); + iPc->delspiritball(sd,req.spiritball,0); if(req.zeny > 0) { @@ -13383,7 +13383,7 @@ int skill_consume_requirement( struct map_session_data *sd, uint16 skill_id, uin req.zeny = 0; //Zeny is reduced on skill->attack. if( sd->status.zeny < req.zeny ) req.zeny = sd->status.zeny; - pc_payzeny(sd,req.zeny,LOG_TYPE_CONSUME,NULL); + iPc->payzeny(sd,req.zeny,LOG_TYPE_CONSUME,NULL); } } @@ -13425,8 +13425,8 @@ int skill_consume_requirement( struct map_session_data *sd, uint16 skill_id, uin break; } - if( (n = pc_search_inventory(sd,req.itemid[i])) >= 0 ) - pc_delitem(sd,n,req.amount[i],0,1,LOG_TYPE_CONSUME); + if( (n = iPc->search_inventory(sd,req.itemid[i])) >= 0 ) + iPc->delitem(sd,n,req.amount[i],0,1,LOG_TYPE_CONSUME); } } @@ -13593,9 +13593,9 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 req.amount[i] = 1; // Hocus Pocus allways use at least 1 gem } } - if( skill_id >= HT_SKIDTRAP && skill_id <= HT_TALKIEBOX && pc_checkskill(sd, RA_RESEARCHTRAP) > 0){ + if( skill_id >= HT_SKIDTRAP && skill_id <= HT_TALKIEBOX && iPc->checkskill(sd, RA_RESEARCHTRAP) > 0){ int16 itIndex; - if( (itIndex = pc_search_inventory(sd,req.itemid[i])) < 0 || ( itIndex >= 0 && sd->status.inventory[itIndex].amount < req.amount[i] ) ){ + if( (itIndex = iPc->search_inventory(sd,req.itemid[i])) < 0 || ( itIndex >= 0 && sd->status.inventory[itIndex].amount < req.amount[i] ) ){ req.itemid[i] = ITEMID_TRAP_ALLOY; req.amount[i] = 1; } @@ -13623,7 +13623,7 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 // Check for cost reductions due to skills & SCs switch(skill_id) { case MC_MAMMONITE: - if(pc_checkskill(sd,BS_UNFAIRLYTRICK)>0) + if(iPc->checkskill(sd,BS_UNFAIRLYTRICK)>0) req.zeny -= req.zeny*10/100; break; case AL_HOLYLIGHT: @@ -13634,7 +13634,7 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 case SL_STUN: case SL_STIN: { - int kaina_lv = pc_checkskill(sd,SL_KAINA); + int kaina_lv = iPc->checkskill(sd,SL_KAINA); if(kaina_lv==0 || sd->status.base_level<70) break; @@ -13692,7 +13692,7 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 case SO_SUMMON_AQUA: case SO_SUMMON_VENTUS: case SO_SUMMON_TERA: - req.sp -= req.sp * (5 + 5 * pc_checkskill(sd,SO_EL_SYMPATHY)) / 100; + req.sp -= req.sp * (5 + 5 * iPc->checkskill(sd,SO_EL_SYMPATHY)) / 100; break; case SO_PSYCHIC_WAVE: if( sc && sc->data[SC_BLAST_OPTION] ) @@ -13866,7 +13866,7 @@ int skill_vfcastfix (struct block_list *bl, double time, uint16 skill_id, uint16 fixcast_r = max(fixcast_r, sc->data[SC__LAZINESS]->val2); if( sc->data[SC_SECRAMENT] ) fixcast_r = max(fixcast_r, sc->data[SC_SECRAMENT]->val2); - if( sd && ( skill_lv = pc_checkskill(sd, WL_RADIUS) ) && skill_id >= WL_WHITEIMPRISON && skill_id <= WL_FREEZE_SP ) + if( sd && ( skill_lv = iPc->checkskill(sd, WL_RADIUS) ) && skill_id >= WL_WHITEIMPRISON && skill_id <= WL_FREEZE_SP ) fixcast_r = max(fixcast_r, 5 + skill_lv * 5); // Fixed cast non percentage bonuses if( sc->data[SC_MANDRAGORA] ) @@ -14111,7 +14111,7 @@ void skill_brandishspear_dir (struct square* tc, uint8 dir, int are) { void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 skill_id, uint16 skill_lv, unsigned int tick, int flag) { int c,n=4; - uint8 dir = map_calc_dir(src,bl->x,bl->y); + uint8 dir = iMap->calc_dir(src,bl->x,bl->y); struct square tc; int x=bl->x,y=bl->y; skill->brandishspear_first(&tc,dir,x,y); @@ -14120,7 +14120,7 @@ void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 s if(skill_lv > 9){ for(c=1;c<4;c++){ - map_foreachincell(skill->area_sub, + iMap->foreachincell(skill->area_sub, bl->m,tc.val1[c],tc.val2[c],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|n, skill->castend_damage_id); @@ -14136,7 +14136,7 @@ void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 s if(skill_lv > 3){ for(c=0;c<5;c++){ - map_foreachincell(skill->area_sub, + iMap->foreachincell(skill->area_sub, bl->m,tc.val1[c],tc.val2[c],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|n, skill->castend_damage_id); @@ -14148,7 +14148,7 @@ void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 s } for(c=0;c<10;c++){ if(c==0||c==5) skill->brandishspear_dir(&tc,dir,-1); - map_foreachincell(skill->area_sub, + iMap->foreachincell(skill->area_sub, bl->m,tc.val1[c%5],tc.val2[c%5],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); @@ -14166,7 +14166,7 @@ void skill_repairweapon (struct map_session_data *sd, int idx) { nullpo_retv(sd); - if ( !( target_sd = map_id2sd(sd->menuskill_val) ) ) //Failed.... + if ( !( target_sd = iMap->id2sd(sd->menuskill_val) ) ) //Failed.... return; if( idx == 0xFFFF ) // No item selected ('Cancel' clicked) @@ -14187,7 +14187,7 @@ void skill_repairweapon (struct map_session_data *sd, int idx) { material = materials [ target_sd->inventory_data[idx]->wlv - 1 ]; // Lv1/2/3/4 weapons consume 1 Iron Ore/Iron/Steel/Rough Oridecon else material = materials [2]; // Armors consume 1 Steel - if ( pc_search_inventory(sd,material) < 0 ) { + if ( iPc->search_inventory(sd,material) < 0 ) { clif->skill_fail(sd,sd->menuskill_id,USESKILL_FAIL_LEVEL,0); return; } @@ -14198,7 +14198,7 @@ void skill_repairweapon (struct map_session_data *sd, int idx) { clif->equiplist(target_sd); - pc_delitem(sd,pc_search_inventory(sd,material),1,0,0,LOG_TYPE_CONSUME); + iPc->delitem(sd,iPc->search_inventory(sd,material),1,0,0,LOG_TYPE_CONSUME); clif->item_repaireffect(sd,idx,0); @@ -14244,7 +14244,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx) if( item->refine >= sd->menuskill_val || item->refine >= 10 // if it's no longer refineable || ditem->flag.no_refine // if the item isn't refinable - || (i = pc_search_inventory(sd, material [ditem->wlv])) < 0 ) + || (i = iPc->search_inventory(sd, material [ditem->wlv])) < 0 ) { clif->skill_fail(sd,sd->menuskill_id,USESKILL_FAIL_LEVEL,0); return; @@ -14253,20 +14253,20 @@ void skill_weaponrefine (struct map_session_data *sd, int idx) per = status_get_refine_chance(ditem->wlv, (int)item->refine); per += (((signed int)sd->status.job_level)-50)/2; //Updated per the new kro descriptions. [Skotlex] - pc_delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER); + iPc->delitem(sd, i, 1, 0, 0, LOG_TYPE_OTHER); if (per > rnd() % 100) { logs->pick_pc(sd, LOG_TYPE_OTHER, -1, item, ditem); item->refine++; logs->pick_pc(sd, LOG_TYPE_OTHER, 1, item, ditem); if(item->equip) { ep = item->equip; - pc_unequipitem(sd,idx,3); + iPc->unequipitem(sd,idx,3); } clif->refine(sd->fd,0,idx,item->refine); clif->delitem(sd,idx,1,3); clif->additem(sd,idx,1,0); if (ep) - pc_equipitem(sd,idx,ep); + iPc->equipitem(sd,idx,ep); clif->misceffect(&sd->bl,3); if(item->refine == 10 && item->card[0] == CARD0_FORGE && @@ -14274,22 +14274,22 @@ void skill_weaponrefine (struct map_session_data *sd, int idx) { // Fame point system [DracoRPG] switch(ditem->wlv){ case 1: - pc_addfame(sd,1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point + iPc->addfame(sd,1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point break; case 2: - pc_addfame(sd,25); // Success to refine to +10 a lv2 weapon you forged = +25 fame point + iPc->addfame(sd,25); // Success to refine to +10 a lv2 weapon you forged = +25 fame point break; case 3: - pc_addfame(sd,1000); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point + iPc->addfame(sd,1000); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point break; } } } else { item->refine = 0; if(item->equip) - pc_unequipitem(sd,idx,3); + iPc->unequipitem(sd,idx,3); clif->refine(sd->fd,1,idx,item->refine); - pc_delitem(sd,idx,1,0,2, LOG_TYPE_OTHER); + iPc->delitem(sd,idx,1,0,2, LOG_TYPE_OTHER); clif->misceffect(&sd->bl,2); clif->emotion(&sd->bl, E_OMG); } @@ -14308,7 +14308,7 @@ int skill_autospell (struct map_session_data *sd, uint16 skill_id) nullpo_ret(sd); skill_lv = sd->menuskill_val; - lv=pc_checkskill(sd,skill_id); + lv=iPc->checkskill(sd,skill_id); if(!skill_lv || !lv) return 0; // Player must learn the skill before doing auto-spell [Lance] @@ -14351,10 +14351,10 @@ int skill_sit_count (struct block_list *bl, va_list ap) { if(!pc_issit(sd)) return 0; - if(type&1 && pc_checkskill(sd,RG_GANGSTER) > 0) + if(type&1 && iPc->checkskill(sd,RG_GANGSTER) > 0) return 1; - if(type&2 && (pc_checkskill(sd,TK_HPTIME) > 0 || pc_checkskill(sd,TK_SPTIME) > 0)) + if(type&2 && (iPc->checkskill(sd,TK_HPTIME) > 0 || iPc->checkskill(sd,TK_SPTIME) > 0)) return 1; return 0; @@ -14369,10 +14369,10 @@ int skill_sit_in (struct block_list *bl, va_list ap) { if(!pc_issit(sd)) return 0; - if(type&1 && pc_checkskill(sd,RG_GANGSTER) > 0) + if(type&1 && iPc->checkskill(sd,RG_GANGSTER) > 0) sd->state.gangsterparadise=1; - if(type&2 && (pc_checkskill(sd,TK_HPTIME) > 0 || pc_checkskill(sd,TK_SPTIME) > 0 )) { + if(type&2 && (iPc->checkskill(sd,TK_HPTIME) > 0 || iPc->checkskill(sd,TK_SPTIME) > 0 )) { sd->state.rest=1; status_calc_regen(bl, &sd->battle_status, &sd->regen); status_calc_regen_rate(bl, &sd->regen, &sd->sc); @@ -14402,15 +14402,15 @@ int skill_sit (struct map_session_data *sd, int type) nullpo_ret(sd); - if((lv = pc_checkskill(sd,RG_GANGSTER)) > 0) { + if((lv = iPc->checkskill(sd,RG_GANGSTER)) > 0) { flag|=1; range = skill->get_splash(RG_GANGSTER, lv); } - if((lv = pc_checkskill(sd,TK_HPTIME)) > 0) { + if((lv = iPc->checkskill(sd,TK_HPTIME)) > 0) { flag|=2; range = skill->get_splash(TK_HPTIME, lv); } - else if ((lv = pc_checkskill(sd,TK_SPTIME)) > 0) { + else if ((lv = iPc->checkskill(sd,TK_SPTIME)) > 0) { flag|=2; range = skill->get_splash(TK_SPTIME, lv); } @@ -14424,11 +14424,11 @@ int skill_sit (struct map_session_data *sd, int type) if (!flag) return 0; if(type) { - if (map_foreachinrange(skill->sit_count,&sd->bl, range, BL_PC, flag) > 1) - map_foreachinrange(skill->sit_in,&sd->bl, range, BL_PC, flag); + if (iMap->foreachinrange(skill->sit_count,&sd->bl, range, BL_PC, flag) > 1) + iMap->foreachinrange(skill->sit_in,&sd->bl, range, BL_PC, flag); } else { - if (map_foreachinrange(skill->sit_count,&sd->bl, range, BL_PC, flag) < 2) - map_foreachinrange(skill->sit_out,&sd->bl, range, BL_PC, flag); + if (iMap->foreachinrange(skill->sit_count,&sd->bl, range, BL_PC, flag) < 2) + iMap->foreachinrange(skill->sit_out,&sd->bl, range, BL_PC, flag); } return 0; } @@ -14613,7 +14613,7 @@ int skill_greed (struct block_list *bl, va_list ap) { nullpo_ret(src = va_arg(ap, struct block_list *)); if(src->type == BL_PC && (sd=(struct map_session_data *)src) && bl->type==BL_ITEM && (fitem=(struct flooritem_data *)bl)) - pc_takeitem(sd, fitem); + iPc->takeitem(sd, fitem); return 0; } @@ -14647,11 +14647,11 @@ int skill_detonator(struct block_list *bl, va_list ap) clif->talkiebox(bl,unit->group->valstr); unit->group->val2 = -1; } else - map_foreachinrange(skill->trap_splash,bl,skill->get_splash(unit->group->skill_id,unit->group->skill_lv),unit->group->bl_flag,bl,unit->group->tick); + iMap->foreachinrange(skill->trap_splash,bl,skill->get_splash(unit->group->skill_id,unit->group->skill_lv),unit->group->bl_flag,bl,unit->group->tick); clif->changetraplook(bl,unit_id == UNT_FIRINGTRAP ? UNT_DUMMYSKILL : UNT_USED_TRAPS); unit->group->unit_id = UNT_USED_TRAPS; - unit->group->limit = DIFF_TICK(gettick(),unit->group->tick) + + unit->group->limit = DIFF_TICK(iTimer->gettick(),unit->group->tick) + (unit_id == UNT_TALKIEBOX ? 5000 : (unit_id == UNT_CLUSTERBOMB || unit_id == UNT_ICEBOUNDTRAP? 2500 : 1500) ); break; } @@ -14800,7 +14800,7 @@ int skill_trap_splash (struct block_list *bl, va_list ap) { return 0; nullpo_ret(sg = unit->group); - nullpo_ret(ss = map_id2bl(sg->src_id)); + nullpo_ret(ss = iMap->id2bl(sg->src_id)); if(battle->check_target(src,bl,sg->target_flag) <= 0) return 0; @@ -14888,7 +14888,7 @@ bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce || (bl->type != BL_PC && battle_config.monster_cloak_check_type&1) ) { //Check for walls. int i; - ARR_FIND( 0, 8, i, map_getcell(bl->m, bl->x+dx[i], bl->y+dy[i], CELL_CHKNOPASS) != 0 ); + ARR_FIND( 0, 8, i, iMap->getcell(bl->m, bl->x+dx[i], bl->y+dy[i], CELL_CHKNOPASS) != 0 ); if( i == 8 ) wall = false; } @@ -14919,7 +14919,7 @@ bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *s if( bl->type == BL_PC ) { //Check for walls. int i; - ARR_FIND( 0, 8, i, map_getcell(bl->m, bl->x+dx[i], bl->y+dy[i], CELL_CHKNOPASS) != 0 ); + ARR_FIND( 0, 8, i, iMap->getcell(bl->m, bl->x+dx[i], bl->y+dy[i], CELL_CHKNOPASS) != 0 ); if( i == 8 ) wall = false; } @@ -14952,7 +14952,7 @@ struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int if(!unit->alive) group->alive_count++; - unit->bl.id=map_get_new_object_id(); + unit->bl.id=iMap->get_new_object_id(); unit->bl.type=BL_SKILL; unit->bl.m=group->map; unit->bl.x=x; @@ -14963,13 +14963,13 @@ struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int unit->val2=val2; idb_put(skillunit_db, unit->bl.id, unit); - map_addiddb(&unit->bl); - map_addblock(&unit->bl); + iMap->addiddb(&unit->bl); + iMap->addblock(&unit->bl); // perform oninit actions switch (group->skill_id) { case WZ_ICEWALL: - map_setgatcell(unit->bl.m,unit->bl.x,unit->bl.y,5); + iMap->setgatcell(unit->bl.m,unit->bl.x,unit->bl.y,5); clif->changemapcell(0,unit->bl.m,unit->bl.x,unit->bl.y,5,AREA); skill->unitsetmapcell(unit,WZ_ICEWALL,group->skill_lv,CELL_ICEWALL,true); map[unit->bl.m].icewall_num++; @@ -15012,18 +15012,18 @@ int skill_delunit (struct skill_unit* unit) { // invoke onout event if( !unit->range ) - map_foreachincell(skill->unit_effect,unit->bl.m,unit->bl.x,unit->bl.y,group->bl_flag,&unit->bl,gettick(),4); + iMap->foreachincell(skill->unit_effect,unit->bl.m,unit->bl.x,unit->bl.y,group->bl_flag,&unit->bl,iTimer->gettick(),4); // perform ondelete actions switch (group->skill_id) { case HT_ANKLESNARE: { - struct block_list* target = map_id2bl(group->val2); + struct block_list* target = iMap->id2bl(group->val2); if( target ) status_change_end(target, SC_ANKLE, INVALID_TIMER); } break; case WZ_ICEWALL: - map_setgatcell(unit->bl.m,unit->bl.x,unit->bl.y,unit->val2); + iMap->setgatcell(unit->bl.m,unit->bl.x,unit->bl.y,unit->val2); clif->changemapcell(0,unit->bl.m,unit->bl.x,unit->bl.y,unit->val2,ALL_SAMEMAP); // hack to avoid clientside cell bug skill->unitsetmapcell(unit,WZ_ICEWALL,group->skill_lv,CELL_ICEWALL,false); map[unit->bl.m].icewall_num--; @@ -15035,7 +15035,7 @@ int skill_delunit (struct skill_unit* unit) { skill->unitsetmapcell(unit,HP_BASILICA,group->skill_lv,CELL_BASILICA,false); break; case RA_ELECTRICSHOCKER: { - struct block_list* target = map_id2bl(group->val2); + struct block_list* target = iMap->id2bl(group->val2); if( target ) status_change_end(target, SC_ELECTRICSHOCKER, INVALID_TIMER); } @@ -15045,7 +15045,7 @@ int skill_delunit (struct skill_unit* unit) { break; case SC_MANHOLE: // Note : Removing the unit don't remove the status (official info) if( group->val2 ) { // Someone Traped - struct status_change *tsc = status_get_sc( map_id2bl(group->val2)); + struct status_change *tsc = status_get_sc( iMap->id2bl(group->val2)); if( tsc && tsc->data[SC__MANHOLE] ) tsc->data[SC__MANHOLE]->val4 = 0; // Remove the Unit ID } @@ -15055,8 +15055,8 @@ int skill_delunit (struct skill_unit* unit) { clif->skill_delunit(unit); unit->group=NULL; - map_delblock(&unit->bl); // don't free yet - map_deliddb(&unit->bl); + iMap->delblock(&unit->bl); // don't free yet + iMap->deliddb(&unit->bl); idb_remove(skillunit_db, unit->bl.id); if(--group->alive_count==0) skill->del_unitgroup(group,ALC_MARK); @@ -15114,7 +15114,7 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count, if(i == MAX_SKILLUNITGROUP) { // array is full, make room by discarding oldest group int j=0; - unsigned maxdiff=0,x,tick=gettick(); + unsigned maxdiff=0,x,tick=iTimer->gettick(); for(i=0;i<MAX_SKILLUNITGROUP && ud->skillunit[i];i++) if((x=DIFF_TICK(tick,ud->skillunit[i]->tick))>maxdiff){ maxdiff=x; @@ -15143,7 +15143,7 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count, group->map = src->m; group->limit = limit; group->interval = interval; - group->tick = gettick(); + group->tick = iTimer->gettick(); group->valstr = NULL; ud->skillunit[i] = group; @@ -15170,7 +15170,7 @@ int skill_delunitgroup(struct skill_unit_group *group, const char* file, int lin return 0; } - src=map_id2bl(group->src_id); + src=iMap->id2bl(group->src_id); ud = unit_bl2ud(src); if(!src || !ud) { ShowError("skill_delunitgroup: Group's source not found! (src_id: %d skill_id: %d)\n", group->src_id, group->skill_id); @@ -15272,7 +15272,7 @@ int skill_delunitgroup(struct skill_unit_group *group, const char* file, int lin } idb_remove(group_db, group->group_id); - map_freeblock(&group->unit->bl); // schedules deallocation of whole array (HACK) + iMap->freeblock(&group->unit->bl); // schedules deallocation of whole array (HACK) group->unit=NULL; group->group_id=0; group->unit_count=0; @@ -15358,7 +15358,7 @@ int skill_unit_timer_sub_onplace (struct block_list* bl, va_list ap) { nullpo_ret(group); - if( !(skill->get_inf2(group->skill_id)&(INF2_SONG_DANCE|INF2_TRAP|INF2_NOLP)) && map_getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR) ) + if( !(skill->get_inf2(group->skill_id)&(INF2_SONG_DANCE|INF2_TRAP|INF2_NOLP)) && iMap->getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR) ) return 0; //AoE skills are ineffective. [Skotlex] if( battle->check_target(&unit->bl,bl,group->target_flag) <= 0 ) @@ -15373,7 +15373,7 @@ int skill_unit_timer_sub_onplace (struct block_list* bl, va_list ap) { * @see DBApply */ int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) { - struct skill_unit* unit = DB->data2ptr(data); + struct skill_unit* unit = iDB->data2ptr(data); struct skill_unit_group* group = unit->group; unsigned int tick = va_arg(ap,unsigned int); bool dissonance; @@ -15431,13 +15431,13 @@ int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) { { struct block_list* src; - if( unit->val1 > 0 && (src = map_id2bl(group->src_id)) != NULL && src->type == BL_PC ) + if( unit->val1 > 0 && (src = iMap->id2bl(group->src_id)) != NULL && src->type == BL_PC ) { // revert unit back into a trap struct item item_tmp; memset(&item_tmp,0,sizeof(item_tmp)); item_tmp.nameid = group->item_id?group->item_id:ITEMID_TRAP; item_tmp.identify = 1; - map_addflooritem(&item_tmp,1,bl->m,bl->x,bl->y,0,0,0,0); + iMap->addflooritem(&item_tmp,1,bl->m,bl->x,bl->y,0,0,0,0); } skill->delunit(unit); } @@ -15451,23 +15451,23 @@ int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) { group->limit = skill->get_time(group->skill_id,group->skill_lv); unit->limit = skill->get_time(group->skill_id,group->skill_lv); // apply effect to all units standing on it - map_foreachincell(skill->unit_effect,unit->bl.m,unit->bl.x,unit->bl.y,group->bl_flag,&unit->bl,gettick(),1); + iMap->foreachincell(skill->unit_effect,unit->bl.m,unit->bl.x,unit->bl.y,group->bl_flag,&unit->bl,iTimer->gettick(),1); break; case UNT_CALLFAMILY: { struct map_session_data *sd = NULL; if(group->val1) { - sd = map_charid2sd(group->val1); + sd = iMap->charid2sd(group->val1); group->val1 = 0; if (sd && !map[sd->bl.m].flag.nowarp) - pc_setpos(sd,map_id2index(unit->bl.m),unit->bl.x,unit->bl.y,CLR_TELEPORT); + iPc->setpos(sd,map_id2index(unit->bl.m),unit->bl.x,unit->bl.y,CLR_TELEPORT); } if(group->val2) { - sd = map_charid2sd(group->val2); + sd = iMap->charid2sd(group->val2); group->val2 = 0; if (sd && !map[sd->bl.m].flag.nowarp) - pc_setpos(sd,map_id2index(unit->bl.m),unit->bl.x,unit->bl.y,CLR_TELEPORT); + iPc->setpos(sd,map_id2index(unit->bl.m),unit->bl.x,unit->bl.y,CLR_TELEPORT); } skill->delunit(unit); } @@ -15479,23 +15479,23 @@ int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) { break; } clif->changetraplook(bl,UNT_USED_TRAPS); - map_foreachinrange(skill->trap_splash, bl, skill->get_splash(group->skill_id, group->skill_lv), group->bl_flag, bl, tick); + iMap->foreachinrange(skill->trap_splash, bl, skill->get_splash(group->skill_id, group->skill_lv), group->bl_flag, bl, tick); group->limit = DIFF_TICK(tick,group->tick)+1000; unit->limit = DIFF_TICK(tick,group->tick)+1000; group->unit_id = UNT_USED_TRAPS; break; case UNT_FEINTBOMB: { - struct block_list *src = map_id2bl(group->src_id); + struct block_list *src = iMap->id2bl(group->src_id); if( src ) - map_foreachinrange(skill->area_sub, &group->unit->bl, unit->range, splash_target(src), src, SC_FEINTBOMB, group->skill_lv, tick, BCT_ENEMY|SD_ANIMATION|1, skill->castend_damage_id); + iMap->foreachinrange(skill->area_sub, &group->unit->bl, unit->range, splash_target(src), src, SC_FEINTBOMB, group->skill_lv, tick, BCT_ENEMY|SD_ANIMATION|1, skill->castend_damage_id); skill->delunit(unit); break; } case UNT_BANDING: { - struct block_list *src = map_id2bl(group->src_id); + struct block_list *src = iMap->id2bl(group->src_id); struct status_change *sc; if( !src || (sc = status_get_sc(src)) == NULL || !sc->data[SC_BANDING] ) { @@ -15542,7 +15542,7 @@ int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) { case UNT_REVERBERATION: if( unit->val1 <= 0 ){ clif->changetraplook(bl,UNT_USED_TRAPS); - map_foreachinrange(skill->trap_splash, bl, skill->get_splash(group->skill_id, group->skill_lv), group->bl_flag, bl, tick); + iMap->foreachinrange(skill->trap_splash, bl, skill->get_splash(group->skill_id, group->skill_lv), group->bl_flag, bl, tick); group->limit = DIFF_TICK(tick,group->tick)+1000; unit->limit = DIFF_TICK(tick,group->tick)+1000; group->unit_id = UNT_USED_TRAPS; @@ -15566,9 +15566,9 @@ int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) { if( unit->range >= 0 && group->interval != -1 ) { if( battle_config.skill_wall_check ) - map_foreachinshootrange(skill->unit_timer_sub_onplace, bl, unit->range, group->bl_flag, bl,tick); + iMap->foreachinshootrange(skill->unit_timer_sub_onplace, bl, unit->range, group->bl_flag, bl,tick); else - map_foreachinrange(skill->unit_timer_sub_onplace, bl, unit->range, group->bl_flag, bl,tick); + iMap->foreachinrange(skill->unit_timer_sub_onplace, bl, unit->range, group->bl_flag, bl,tick); if(unit->range == -1) //Unit disabled, but it should not be deleted yet. group->unit_id = UNT_USED_TRAPS; @@ -15590,11 +15590,11 @@ int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) { * Executes on all skill units every SKILLUNITTIMER_INTERVAL miliseconds. *------------------------------------------*/ int skill_unit_timer(int tid, unsigned int tick, int id, intptr_t data) { - map_freeblock_lock(); + iMap->freeblock_lock(); skillunit_db->foreach(skillunit_db, skill->unit_timer_sub, tick); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } @@ -15710,7 +15710,7 @@ int skill_unit_move (struct block_list *bl, unsigned int tick, int flag) { memset(skill_unit_temp, 0, sizeof(skill_unit_temp)); } - map_foreachincell(skill->unit_move_sub,bl->m,bl->x,bl->y,BL_SKILL,bl,tick,flag); + iMap->foreachincell(skill->unit_move_sub,bl->m,bl->x,bl->y,BL_SKILL,bl,tick,flag); if( flag&2 && flag&1 ) { //Onplace, check any skill units you have left. int i; @@ -15728,7 +15728,7 @@ int skill_unit_move (struct block_list *bl, unsigned int tick, int flag) { int skill_unit_move_unit_group (struct skill_unit_group *group, int16 m, int16 dx, int16 dy) { int i,j; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); int *m_flag; struct skill_unit *unit1; struct skill_unit *unit2; @@ -15776,14 +15776,14 @@ int skill_unit_move_unit_group (struct skill_unit_group *group, int16 m, int16 d if (!(m_flag[i]&0x2)) { if (group->state.song_dance&0x1) //Cancel dissonance effect. skill->dance_overlap(unit1, 0); - map_foreachincell(skill->unit_effect,unit1->bl.m,unit1->bl.x,unit1->bl.y,group->bl_flag,&unit1->bl,tick,4); + iMap->foreachincell(skill->unit_effect,unit1->bl.m,unit1->bl.x,unit1->bl.y,group->bl_flag,&unit1->bl,tick,4); } //Move Cell using "smart" criteria (avoid useless moving around) switch(m_flag[i]) { case 0: //Cell moves independently, safely move it. - map_moveblock(&unit1->bl, unit1->bl.x+dx, unit1->bl.y+dy, tick); + iMap->moveblock(&unit1->bl, unit1->bl.x+dx, unit1->bl.y+dy, tick); break; case 1: //Cell moves unto another cell, look for a replacement cell that won't collide @@ -15794,7 +15794,7 @@ int skill_unit_move_unit_group (struct skill_unit_group *group, int16 m, int16 d continue; //Move to where this cell would had moved. unit2 = &group->unit[j]; - map_moveblock(&unit1->bl, unit2->bl.x+dx, unit2->bl.y+dy, tick); + iMap->moveblock(&unit1->bl, unit2->bl.x+dx, unit2->bl.y+dy, tick); j++; //Skip this cell as we have used it. break; } @@ -15807,7 +15807,7 @@ int skill_unit_move_unit_group (struct skill_unit_group *group, int16 m, int16 d if (group->state.song_dance&0x1) //Check for dissonance effect. skill->dance_overlap(unit1, 1); clif->skill_setunit(unit1); - map_foreachincell(skill->unit_effect,unit1->bl.m,unit1->bl.x,unit1->bl.y,group->bl_flag,&unit1->bl,tick,1); + iMap->foreachincell(skill->unit_effect,unit1->bl.m,unit1->bl.x,unit1->bl.y,group->bl_flag,&unit1->bl,tick,1); } } aFree(m_flag); @@ -15829,7 +15829,7 @@ int skill_can_produce_mix (struct map_session_data *sd, int nameid, int trigger, for(i=0;i<MAX_SKILL_PRODUCE_DB;i++){ if(skill_produce_db[i].nameid == nameid ){ if((j=skill_produce_db[i].req_skill)>0 && - pc_checkskill(sd,j) < skill_produce_db[i].req_skill_lv) + iPc->checkskill(sd,j) < skill_produce_db[i].req_skill_lv) continue; // must iterate again to check other skills that produce it. [malufett] if( j > 0 && sd->menuskill_id > 0 && sd->menuskill_id != j ) continue; // special case @@ -15840,7 +15840,7 @@ int skill_can_produce_mix (struct map_session_data *sd, int nameid, int trigger, if( i >= MAX_SKILL_PRODUCE_DB ) return 0; - if( pc_checkadditem(sd, nameid, qty) == ADDITEM_OVERAMOUNT ) + if( iPc->checkadditem(sd, nameid, qty) == ADDITEM_OVERAMOUNT ) {// cannot carry the produced stuff return 0; } @@ -15863,7 +15863,7 @@ int skill_can_produce_mix (struct map_session_data *sd, int nameid, int trigger, if( (id=skill_produce_db[i].mat_id[j]) <= 0 ) continue; if(skill_produce_db[i].mat_amount[j] <= 0) { - if(pc_search_inventory(sd,id) < 0) + if(iPc->search_inventory(sd,id) < 0) return 0; } else { @@ -15915,22 +15915,22 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, int j; if( slot[i]<=0 ) continue; - j = pc_search_inventory(sd,slot[i]); + j = iPc->search_inventory(sd,slot[i]); if(j < 0) continue; if(slot[i]==1000){ /* Star Crumb */ - pc_delitem(sd,j,1,1,0,LOG_TYPE_PRODUCE); + iPc->delitem(sd,j,1,1,0,LOG_TYPE_PRODUCE); sc++; } if(slot[i]>=994 && slot[i]<=997 && ele==0){ /* Flame Heart . . . Great Nature */ static const int ele_table[4]={3,1,4,2}; - pc_delitem(sd,j,1,1,0,LOG_TYPE_PRODUCE); + iPc->delitem(sd,j,1,1,0,LOG_TYPE_PRODUCE); ele=ele_table[slot[i]-994]; } } if( skill_id == RK_RUNEMASTERY ) { - int temp_qty, skill_lv = pc_checkskill(sd,skill_id); + int temp_qty, skill_lv = iPc->checkskill(sd,skill_id); data = itemdb_search(nameid); if( skill_lv == 10 ) temp_qty = 1 + rnd()%3; @@ -15965,12 +15965,12 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, x=( skill_id == RK_RUNEMASTERY ? 1 : qty)*skill_produce_db[idx].mat_amount[i]; do{ int y=0; - j = pc_search_inventory(sd,id); + j = iPc->search_inventory(sd,id); if(j >= 0){ y = sd->status.inventory[j].amount; if(y>x)y=x; - pc_delitem(sd,j,y,0,0,LOG_TYPE_PRODUCE); + iPc->delitem(sd,j,y,0,0,LOG_TYPE_PRODUCE); } else ShowError("skill_produce_mix: material item error\n"); @@ -15986,7 +15986,7 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, case BS_STEEL: case BS_ENCHANTEDSTONE: // Ores & Metals Refining - skill bonuses are straight from kRO website [DracoRPG] - i = pc_checkskill(sd,skill_id); + i = iPc->checkskill(sd,skill_id); make_per = sd->status.job_level*20 + status->dex*10 + status->luk*10; //Base chance switch(nameid){ case 998: // Iron @@ -16017,8 +16017,8 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, case AM_TWILIGHT1: case AM_TWILIGHT2: case AM_TWILIGHT3: - make_per = pc_checkskill(sd,AM_LEARNINGPOTION)*50 - + pc_checkskill(sd,AM_PHARMACY)*300 + sd->status.job_level*20 + make_per = iPc->checkskill(sd,AM_LEARNINGPOTION)*50 + + iPc->checkskill(sd,AM_PHARMACY)*300 + sd->status.job_level*20 + (status->int_/2)*10 + status->dex*10+status->luk*10; if(homun_alive(sd->hd)) {//Player got a homun int skill; @@ -16066,7 +16066,7 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, **/ case RK_RUNEMASTERY: { - int A = 100 * (51 + 2 * pc_checkskill(sd, skill_id)); + int A = 100 * (51 + 2 * iPc->checkskill(sd, skill_id)); int B = 100 * status->dex / 30 + 10 * (status->luk + sd->status.job_level); int C = 100 * cap_value(sd->itemid,0,100); //itemid depend on makerune() int D = 0; @@ -16098,8 +16098,8 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, * Guilotine Cross **/ case GC_CREATENEWPOISON: - make_per = 3000 + 500 * pc_checkskill(sd,GC_RESEARCHNEWPOISON); - qty = 1+rnd()%pc_checkskill(sd,GC_RESEARCHNEWPOISON); + make_per = 3000 + 500 * iPc->checkskill(sd,GC_RESEARCHNEWPOISON); + qty = 1+rnd()%iPc->checkskill(sd,GC_RESEARCHNEWPOISON); break; case GN_CHANGEMATERIAL: for(i=0; i<MAX_SKILL_PRODUCE_DB; i++) @@ -16115,7 +16115,7 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, difficulty = (620 - 20 * skill_lv);// (620 - 20 * Skill Level) make_per = status->int_ + status->dex/2 + status->luk + sd->status.job_level + (30+rnd()%120) + // (Caster?s INT) + (Caster?s DEX / 2) + (Caster?s LUK) + (Caster?s Job Level) + Random number between (30 ~ 150) + - (sd->status.base_level-100) + pc_checkskill(sd, AM_LEARNINGPOTION) + pc_checkskill(sd, CR_FULLPROTECTION)*(4+rnd()%6); // (Caster?s Base Level - 100) + (Potion Research x 5) + (Full Chemical Protection Skill Level) x (Random number between 4 ~ 10) + (sd->status.base_level-100) + iPc->checkskill(sd, AM_LEARNINGPOTION) + iPc->checkskill(sd, CR_FULLPROTECTION)*(4+rnd()%6); // (Caster?s Base Level - 100) + (Potion Research x 5) + (Full Chemical Protection Skill Level) x (Random number between 4 ~ 10) switch(nameid){// difficulty factor case 12422: case 12425: @@ -16217,13 +16217,13 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, } } else { // Weapon Forging - skill bonuses are straight from kRO website, other things from a jRO calculator [DracoRPG] make_per = 5000 + sd->status.job_level*20 + status->dex*10 + status->luk*10; // Base - make_per += pc_checkskill(sd,skill_id)*500; // Smithing skills bonus: +5/+10/+15 - make_per += pc_checkskill(sd,BS_WEAPONRESEARCH)*100 +((wlv >= 3)? pc_checkskill(sd,BS_ORIDEOCON)*100:0); // Weaponry Research bonus: +1/+2/+3/+4/+5/+6/+7/+8/+9/+10, Oridecon Research bonus (custom): +1/+2/+3/+4/+5 + make_per += iPc->checkskill(sd,skill_id)*500; // Smithing skills bonus: +5/+10/+15 + make_per += iPc->checkskill(sd,BS_WEAPONRESEARCH)*100 +((wlv >= 3)? iPc->checkskill(sd,BS_ORIDEOCON)*100:0); // Weaponry Research bonus: +1/+2/+3/+4/+5/+6/+7/+8/+9/+10, Oridecon Research bonus (custom): +1/+2/+3/+4/+5 make_per -= (ele?2000:0) + sc*1500 + (wlv>1?wlv*1000:0); // Element Stone: -20%, Star Crumb: -15% each, Weapon level malus: -0/-20/-30 - if(pc_search_inventory(sd,989) > 0) make_per+= 1000; // Emperium Anvil: +10 - else if(pc_search_inventory(sd,988) > 0) make_per+= 500; // Golden Anvil: +5 - else if(pc_search_inventory(sd,987) > 0) make_per+= 300; // Oridecon Anvil: +3 - else if(pc_search_inventory(sd,986) > 0) make_per+= 0; // Anvil: +0? + if(iPc->search_inventory(sd,989) > 0) make_per+= 1000; // Emperium Anvil: +10 + else if(iPc->search_inventory(sd,988) > 0) make_per+= 500; // Golden Anvil: +5 + else if(iPc->search_inventory(sd,987) > 0) make_per+= 300; // Oridecon Anvil: +3 + else if(iPc->search_inventory(sd,986) > 0) make_per+= 0; // Anvil: +0? if(battle_config.wp_rate != 100) make_per = make_per * battle_config.wp_rate / 100; } @@ -16293,7 +16293,7 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, clif->produce_effect(sd,0,nameid); clif->misceffect(&sd->bl,3); if(itemdb_wlv(nameid) >= 3 && ((ele? 1 : 0) + sc) >= 3) // Fame point system [DracoRPG] - pc_addfame(sd,10); // Success to forge a lv3 weapon with 3 additional ingredients = +10 fame point + iPc->addfame(sd,10); // Success to forge a lv3 weapon with 3 additional ingredients = +10 fame point } else { int fame = 0; tmp_item.amount = 0; @@ -16333,7 +16333,7 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, } if (fame) - pc_addfame(sd,fame); + iPc->addfame(sd,fame); //Visual effects and the like. switch (skill_id) { case AM_PHARMACY: @@ -16372,9 +16372,9 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, for(j=0; j<5; j++){ if( rnd()%1000 < skill_changematerial_db[i].qty_rate[j] ){ tmp_item.amount = qty * skill_changematerial_db[i].qty[j]; - if((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { + if((flag = iPc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif->additem(sd,0,0,flag); - map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } k++; } @@ -16386,9 +16386,9 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, return 1; } } else if (tmp_item.amount) { //Success - if((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { + if((flag = iPc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif->additem(sd,0,0,flag); - map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } if( skill_id == GN_MIX_COOKING || skill_id == GN_MAKEBOMB || skill_id == GN_S_PHARMACY ) clif->msg_skill(sd,skill_id,0x627); @@ -16438,9 +16438,9 @@ int skill_produce_mix (struct map_session_data *sd, uint16 skill_id, int nameid, tmp_item.nameid = compensation[i]; tmp_item.amount = qty; tmp_item.identify = 1; - if( pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE) ) { + if( iPc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE) ) { clif->additem(sd,0,0,flag); - map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } clif->msg_skill(sd,skill_id,0x628); } @@ -16478,10 +16478,10 @@ int skill_arrow_create (struct map_session_data *sd, int nameid) break; } - if(index < 0 || (j = pc_search_inventory(sd,nameid)) < 0) + if(index < 0 || (j = iPc->search_inventory(sd,nameid)) < 0) return 1; - pc_delitem(sd,j,1,0,0,LOG_TYPE_PRODUCE); + iPc->delitem(sd,j,1,0,0,LOG_TYPE_PRODUCE); for(i=0;i<MAX_ARROW_RESOURCE;i++) { memset(&tmp_item,0,sizeof(tmp_item)); tmp_item.identify = 1; @@ -16495,9 +16495,9 @@ int skill_arrow_create (struct map_session_data *sd, int nameid) } if(tmp_item.nameid <= 0 || tmp_item.amount <= 0) continue; - if((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { + if((flag = iPc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif->additem(sd,0,0,flag); - map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } @@ -16507,7 +16507,7 @@ int skill_poisoningweapon( struct map_session_data *sd, int nameid) { sc_type type; int chance, i; nullpo_ret(sd); - if( nameid <= 0 || (i = pc_search_inventory(sd,nameid)) < 0 || pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME) ) { + if( nameid <= 0 || (i = iPc->search_inventory(sd,nameid)) < 0 || iPc->delitem(sd,i,1,0,0,LOG_TYPE_CONSUME) ) { clif->skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_LEVEL,0); return 0; } @@ -16527,7 +16527,7 @@ int skill_poisoningweapon( struct map_session_data *sd, int nameid) { } chance = 2 + 2 * sd->menuskill_val; // 2 + 2 * skill_lv - sc_start4(&sd->bl, SC_POISONINGWEAPON, 100, pc_checkskill(sd, GC_RESEARCHNEWPOISON), //in Aegis it store the level of GC_RESEARCHNEWPOISON in val1 + sc_start4(&sd->bl, SC_POISONINGWEAPON, 100, iPc->checkskill(sd, GC_RESEARCHNEWPOISON), //in Aegis it store the level of GC_RESEARCHNEWPOISON in val1 type, chance, 0, skill->get_time(GC_POISONINGWEAPON, sd->menuskill_val)); return 0; @@ -16563,14 +16563,14 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid) { nullpo_ret(sd); skill_id = sd->menuskill_val; - if( nameid <= 0 || !itemdb_is_element(nameid) || (i = pc_search_inventory(sd,nameid)) < 0 || !skill_id || pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME) ) + if( nameid <= 0 || !itemdb_is_element(nameid) || (i = iPc->search_inventory(sd,nameid)) < 0 || !skill_id || iPc->delitem(sd,i,1,0,0,LOG_TYPE_CONSUME) ) { clif->skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0); return 0; } // Spawn Position - pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); + iPc->delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); x = sd->sc.comet_x; y = sd->sc.comet_y; sd->sc.comet_x = sd->sc.comet_y = 0; @@ -16584,8 +16584,8 @@ int skill_magicdecoy(struct map_session_data *sd, int nameid) { md->master_id = sd->bl.id; md->special_state.ai = AI_FLORA; if( md->deletetimer != INVALID_TIMER ) - delete_timer(md->deletetimer, mob_timer_delete); - md->deletetimer = add_timer (gettick() + skill->get_time(NC_MAGICDECOY,skill_id), mob_timer_delete, md->bl.id, 0); + iTimer->delete_timer(md->deletetimer, mob_timer_delete); + md->deletetimer = iTimer->add_timer (iTimer->gettick() + skill->get_time(NC_MAGICDECOY,skill_id), mob_timer_delete, md->bl.id, 0); mob_spawn(md); md->status.matk_min = md->status.matk_max = 250 + (50 * skill_id); } @@ -16613,14 +16613,14 @@ int skill_spellbook (struct map_session_data *sd, int nameid) { ARR_FIND(0,MAX_SKILL_SPELLBOOK_DB,i,skill_spellbook_db[i].nameid == nameid); // Search for information of this item if( i == MAX_SKILL_SPELLBOOK_DB ) return 0; - if( !pc_checkskill(sd, (skill_id = skill_spellbook_db[i].skill_id)) ) + if( !iPc->checkskill(sd, (skill_id = skill_spellbook_db[i].skill_id)) ) { // User don't know the skill - sc_start(&sd->bl, SC_SLEEP, 100, 1, skill->get_time(WL_READING_SB, pc_checkskill(sd,WL_READING_SB))); + sc_start(&sd->bl, SC_SLEEP, 100, 1, skill->get_time(WL_READING_SB, iPc->checkskill(sd,WL_READING_SB))); clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP, 0); return 0; } - max_preserve = 4 * pc_checkskill(sd, WL_FREEZE_SP) + status_get_int(&sd->bl) / 10 + sd->status.base_level / 10; + max_preserve = 4 * iPc->checkskill(sd, WL_FREEZE_SP) + status_get_int(&sd->bl) / 10 + sd->status.base_level / 10; point = skill_spellbook_db[i].point; if( sc && sc->data[SC_READING_SB] ) { @@ -16631,13 +16631,13 @@ int skill_spellbook (struct map_session_data *sd, int nameid) { for(i = SC_MAXSPELLBOOK; i >= SC_SPELLBOOK1; i--){ // This is how official saves spellbook. [malufett] if( !sc->data[i] ){ sc->data[SC_READING_SB]->val2 += point; // increase points - sc_start4(&sd->bl, (sc_type)i, 100, skill_id, pc_checkskill(sd,skill_id), point, 0, INVALID_TIMER); + sc_start4(&sd->bl, (sc_type)i, 100, skill_id, iPc->checkskill(sd,skill_id), point, 0, INVALID_TIMER); break; } } }else{ sc_start2(&sd->bl, SC_READING_SB, 100, 0, point, INVALID_TIMER); - sc_start4(&sd->bl, SC_MAXSPELLBOOK, 100, skill_id, pc_checkskill(sd,skill_id), point, 0, INVALID_TIMER); + sc_start4(&sd->bl, SC_MAXSPELLBOOK, 100, skill_id, iPc->checkskill(sd,skill_id), point, 0, INVALID_TIMER); } return 1; @@ -16706,7 +16706,7 @@ int skill_elementalanalysis(struct map_session_data* sd, int n, uint16 skill_lv, return 1; } - if( pc_delitem(sd,idx,del_amount,0,1,LOG_TYPE_CONSUME) ) { + if( iPc->delitem(sd,idx,del_amount,0,1,LOG_TYPE_CONSUME) ) { clif->skill_fail(sd,SO_EL_ANALYSIS,USESKILL_FAIL_LEVEL,0); return 1; } @@ -16723,9 +16723,9 @@ int skill_elementalanalysis(struct map_session_data* sd, int n, uint16 skill_lv, tmp_item.identify = 1; if( tmp_item.amount ) { - if( (flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_CONSUME)) ) { + if( (flag = iPc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_CONSUME)) ) { clif->additem(sd,0,0,flag); - map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); + iMap->addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0); } } @@ -16803,7 +16803,7 @@ int skill_destroy_trap( struct block_list *bl, va_list ap ) { case UNT_CLUSTERBOMB: case UNT_FIRINGTRAP: case UNT_ICEBOUNDTRAP: - map_foreachinrange(skill->trap_splash,&su->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &su->bl,tick); + iMap->foreachinrange(skill->trap_splash,&su->bl, skill->get_splash(sg->skill_id, sg->skill_lv), sg->bl_flag, &su->bl,tick); break; } // Traps aren't recovered. @@ -16815,7 +16815,7 @@ int skill_destroy_trap( struct block_list *bl, va_list ap ) { * *------------------------------------------*/ int skill_blockpc_end(int tid, unsigned int tick, int id, intptr_t data) { - struct map_session_data *sd = map_id2sd(id); + struct map_session_data *sd = iMap->id2sd(id); struct skill_cd * cd = NULL; if (data <= 0 || data >= MAX_SKILL) @@ -16888,12 +16888,12 @@ int skill_blockpc_start_(struct map_session_data *sd, uint16 skill_id, int tick, cd->cursor++; } - sd->blockskill[idx] = 0x1|(0xFE&add_timer(gettick()+tick,skill->blockpc_end,sd->bl.id,idx)); + sd->blockskill[idx] = 0x1|(0xFE&iTimer->add_timer(iTimer->gettick()+tick,skill->blockpc_end,sd->bl.id,idx)); return 0; } int skill_blockhomun_end(int tid, unsigned int tick, int id, intptr_t data) { //[orn] - struct homun_data *hd = (TBL_HOM*) map_id2bl(id); + struct homun_data *hd = (TBL_HOM*) iMap->id2bl(id); if (data <= 0 || data >= MAX_SKILL) return 0; if (hd) hd->blockskill[data] = 0; @@ -16914,11 +16914,11 @@ int skill_blockhomun_start(struct homun_data *hd, uint16 skill_id, int tick) { / return -1; } hd->blockskill[idx] = 1; - return add_timer(gettick() + tick, skill->blockhomun_end, hd->bl.id, idx); + return iTimer->add_timer(iTimer->gettick() + tick, skill->blockhomun_end, hd->bl.id, idx); } int skill_blockmerc_end(int tid, unsigned int tick, int id, intptr_t data) {//[orn] - struct mercenary_data *md = (TBL_MER*)map_id2bl(id); + struct mercenary_data *md = (TBL_MER*)iMap->id2bl(id); if( data <= 0 || data >= MAX_SKILL ) return 0; if( md ) md->blockskill[data] = 0; @@ -16939,7 +16939,7 @@ int skill_blockmerc_start(struct mercenary_data *md, uint16 skill_id, int tick) return -1; } md->blockskill[idx] = 1; - return add_timer(gettick() + tick, skill->blockmerc_end, md->bl.id, idx); + return iTimer->add_timer(iTimer->gettick() + tick, skill->blockmerc_end, md->bl.id, idx); } /** * Adds a new skill unit entry for this player to recast after map load @@ -17806,27 +17806,27 @@ void skill_readdb(void) { safestrncpy(skill_db[0].name, "UNKNOWN_SKILL", sizeof(skill_db[0].name)); safestrncpy(skill_db[0].desc, "Unknown Skill", sizeof(skill_db[0].desc)); - sv->readdb(db_path, DBPATH"skill_db.txt" , ',', 17, 17, MAX_SKILL_DB, skill->parse_row_skilldb); - sv->readdb(db_path, DBPATH"skill_require_db.txt" , ',', 32, 32, MAX_SKILL_DB, skill->parse_row_requiredb); + sv->readdb(iMap->db_path, DBPATH"skill_db.txt" , ',', 17, 17, MAX_SKILL_DB, skill->parse_row_skilldb); + sv->readdb(iMap->db_path, DBPATH"skill_require_db.txt" , ',', 32, 32, MAX_SKILL_DB, skill->parse_row_requiredb); #ifdef RENEWAL_CAST - sv->readdb(db_path, "re/skill_cast_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill->parse_row_castdb); + sv->readdb(iMap->db_path, "re/skill_cast_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill->parse_row_castdb); #else - sv->readdb(db_path, "pre-re/skill_cast_db.txt" , ',', 7, 7, MAX_SKILL_DB, skill->parse_row_castdb); + sv->readdb(iMap->db_path, "pre-re/skill_cast_db.txt" , ',', 7, 7, MAX_SKILL_DB, skill->parse_row_castdb); #endif - sv->readdb(db_path, DBPATH"skill_castnodex_db.txt", ',', 2, 3, MAX_SKILL_DB, skill->parse_row_castnodexdb); - sv->readdb(db_path, DBPATH"skill_unit_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill->parse_row_unitdb); + sv->readdb(iMap->db_path, DBPATH"skill_castnodex_db.txt", ',', 2, 3, MAX_SKILL_DB, skill->parse_row_castnodexdb); + sv->readdb(iMap->db_path, DBPATH"skill_unit_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill->parse_row_unitdb); skill->init_unit_layout(); - sv->readdb(db_path, "produce_db.txt" , ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill->parse_row_producedb); - sv->readdb(db_path, "create_arrow_db.txt" , ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill->parse_row_createarrowdb); - sv->readdb(db_path, "abra_db.txt" , ',', 4, 4, MAX_SKILL_ABRA_DB, skill->parse_row_abradb); + sv->readdb(iMap->db_path, "produce_db.txt" , ',', 4, 4+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill->parse_row_producedb); + sv->readdb(iMap->db_path, "create_arrow_db.txt" , ',', 1+2, 1+2*MAX_ARROW_RESOURCE, MAX_SKILL_ARROW_DB, skill->parse_row_createarrowdb); + sv->readdb(iMap->db_path, "abra_db.txt" , ',', 4, 4, MAX_SKILL_ABRA_DB, skill->parse_row_abradb); //Warlock - sv->readdb(db_path, "spellbook_db.txt" , ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill->parse_row_spellbookdb); + sv->readdb(iMap->db_path, "spellbook_db.txt" , ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill->parse_row_spellbookdb); //Guillotine Cross - sv->readdb(db_path, "magicmushroom_db.txt" , ',', 1, 1, MAX_SKILL_MAGICMUSHROOM_DB, skill->parse_row_magicmushroomdb); - sv->readdb(db_path, "skill_reproduce_db.txt", ',', 1, 1, MAX_SKILL_DB, skill->parse_row_reproducedb); - sv->readdb(db_path, "skill_improvise_db.txt" , ',', 2, 2, MAX_SKILL_IMPROVISE_DB, skill->parse_row_improvisedb); - sv->readdb(db_path, "skill_changematerial_db.txt" , ',', 4, 4+2*5, MAX_SKILL_PRODUCE_DB, skill->parse_row_changematerialdb); + sv->readdb(iMap->db_path, "magicmushroom_db.txt" , ',', 1, 1, MAX_SKILL_MAGICMUSHROOM_DB, skill->parse_row_magicmushroomdb); + sv->readdb(iMap->db_path, "skill_reproduce_db.txt", ',', 1, 1, MAX_SKILL_DB, skill->parse_row_reproducedb); + sv->readdb(iMap->db_path, "skill_improvise_db.txt" , ',', 2, 2, MAX_SKILL_IMPROVISE_DB, skill->parse_row_improvisedb); + sv->readdb(iMap->db_path, "skill_changematerial_db.txt" , ',', 4, 4+2*5, MAX_SKILL_PRODUCE_DB, skill->parse_row_changematerialdb); } void skill_reload (void) { @@ -17871,13 +17871,13 @@ int do_init_skill (void) { skill_unit_ers = ers_new(sizeof(struct skill_unit_group),"skill.c::skill_unit_ers",ERS_OPT_NONE); skill_timer_ers = ers_new(sizeof(struct skill_timerskill),"skill.c::skill_timer_ers",ERS_OPT_NONE); - add_timer_func_list(skill->unit_timer,"skill_unit_timer"); - add_timer_func_list(skill->castend_id,"skill_castend_id"); - add_timer_func_list(skill->castend_pos,"skill_castend_pos"); - add_timer_func_list(skill->timerskill,"skill_timerskill"); - add_timer_func_list(skill->blockpc_end, "skill_blockpc_end"); + iTimer->add_timer_func_list(skill->unit_timer,"skill_unit_timer"); + iTimer->add_timer_func_list(skill->castend_id,"skill_castend_id"); + iTimer->add_timer_func_list(skill->castend_pos,"skill_castend_pos"); + iTimer->add_timer_func_list(skill->timerskill,"skill_timerskill"); + iTimer->add_timer_func_list(skill->blockpc_end, "skill_blockpc_end"); - add_timer_interval(gettick()+SKILLUNITTIMER_INTERVAL,skill->unit_timer,0,0,SKILLUNITTIMER_INTERVAL); + iTimer->add_timer_interval(iTimer->gettick()+SKILLUNITTIMER_INTERVAL,skill->unit_timer,0,0,SKILLUNITTIMER_INTERVAL); return 0; } diff --git a/src/map/status.c b/src/map/status.c index 35ce70349..09350fff0 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1109,7 +1109,7 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s } if (target->type == BL_SKILL) - return skill->unit_ondamaged((struct skill_unit *)target, src, hp, gettick()); + return skill->unit_ondamaged((struct skill_unit *)target, src, hp, iTimer->gettick()); status = status_get_status_data(target); if( status == &dummy_status ) @@ -1199,7 +1199,7 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s } switch (target->type) { - case BL_PC: pc_damage((TBL_PC*)target,src,hp,sp); break; + case BL_PC: iPc->damage((TBL_PC*)target,src,hp,sp); break; case BL_MOB: mob_damage((TBL_MOB*)target, src, hp); break; case BL_HOM: homun->damaged((TBL_HOM*)target); break; case BL_MER: mercenary_heal((TBL_MER*)target,hp,sp); break; @@ -1213,7 +1213,7 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s if( status->hp || (flag&8) ) { //Still lives or has been dead before this damage. if (walkdelay) - unit_set_walkdelay(target, gettick(), walkdelay, 0); + unit_set_walkdelay(target, iTimer->gettick(), walkdelay, 0); return hp+sp; } @@ -1224,7 +1224,7 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s //&2: Also remove object from map. //&4: Also delete object from memory. switch (target->type) { - case BL_PC: flag = pc_dead((TBL_PC*)target,src); break; + case BL_PC: flag = iPc->dead((TBL_PC*)target,src); break; case BL_MOB: flag = mob_dead((TBL_MOB*)target, src, flag&4?3:0); break; case BL_HOM: flag = homun->dead((TBL_HOM*)target); break; case BL_MER: flag = mercenary_dead((TBL_MER*)target); break; @@ -1303,7 +1303,7 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s unit_stop_walking(target,1); unit_skillcastcancel(target,0); clif->clearunit_area(target,CLR_DEAD); - skill->unit_move(target,gettick(),4); + skill->unit_move(target,iTimer->gettick(),4); skill->cleartimerskill(target); } @@ -1370,7 +1370,7 @@ int status_heal(struct block_list *bl,int hp,int sp, int flag) // send hp update to client switch(bl->type) { - case BL_PC: pc_heal((TBL_PC*)bl,hp,sp,flag&2?1:0); break; + case BL_PC: iPc->heal((TBL_PC*)bl,hp,sp,flag&2?1:0); break; case BL_MOB: mob_heal((TBL_MOB*)bl,hp); break; case BL_HOM: homun->healed((TBL_HOM*)bl); break; case BL_MER: mercenary_heal((TBL_MER*)bl,hp,sp); break; @@ -1474,7 +1474,7 @@ int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per if (bl->prev) //Animation only if character is already on a map. clif->resurrection(bl, 1); switch (bl->type) { - case BL_PC: pc_revive((TBL_PC*)bl, hp, sp); break; + case BL_PC: iPc->revive((TBL_PC*)bl, hp, sp); break; case BL_MOB: mob_revive((TBL_MOB*)bl, hp); break; case BL_HOM: homun->revive((TBL_HOM*)bl, hp, sp); break; } @@ -1547,7 +1547,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin break; case AL_TELEPORT: //Should fail when used on top of Land Protector [Skotlex] - if (src && map_getcell(src->m, src->x, src->y, CELL_CHKLANDPROTECTOR) + if (src && iMap->getcell(src->m, src->x, src->y, CELL_CHKLANDPROTECTOR) && !(status->mode&MD_BOSS) && (src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_id)) return 0; @@ -1578,7 +1578,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin if (sc->data[SC_WINKCHARM] && target && !flag) { //Prevents skill usage if( unit_bl2ud(src) && (unit_bl2ud(src))->walktimer == INVALID_TIMER ) - unit_walktobl(src, map_id2bl(sc->data[SC_WINKCHARM]->val2), 3, 1); + unit_walktobl(src, iMap->id2bl(sc->data[SC_WINKCHARM]->val2), 3, 1); clif->emotion(src, E_LV); return 0; } @@ -1597,7 +1597,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin if (sc->data[SC_DANCING] && flag!=2) { if( src->type == BL_PC && skill_id >= WA_SWING_DANCE && skill_id <= WM_UNLIMITED_HUMMING_VOICE ) { // Lvl 5 Lesson or higher allow you use 3rd job skills while dancing.v - if( pc_checkskill((TBL_PC*)src,WM_LESSON) < 5 ) + if( iPc->checkskill((TBL_PC*)src,WM_LESSON) < 5 ) return 0; } else if(sc->data[SC_LONGING]) { //Allow everything except dancing/re-dancing. [Skotlex] if (skill_id == BD_ENCORE || @@ -1813,21 +1813,21 @@ int status_base_amotion_pc(struct map_session_data* sd, struct status_data* stat } amotion = ( sd->status.weapon < MAX_WEAPON_TYPE && mod < 0 ) - ? (aspd_base[pc_class2idx(sd->status.class_)][sd->status.weapon]) // single weapon - : ((aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype2] // dual-wield - + aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype2]) * 6 / 10 + 10 * mod - - aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype2] - + aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype1]); + ? (aspd_base[iPc->class2idx(sd->status.class_)][sd->status.weapon]) // single weapon + : ((aspd_base[iPc->class2idx(sd->status.class_)][sd->weapontype2] // dual-wield + + aspd_base[iPc->class2idx(sd->status.class_)][sd->weapontype2]) * 6 / 10 + 10 * mod + - aspd_base[iPc->class2idx(sd->status.class_)][sd->weapontype2] + + aspd_base[iPc->class2idx(sd->status.class_)][sd->weapontype1]); if ( sd->status.shield ) - amotion += ( 2000 - aspd_base[pc_class2idx(sd->status.class_)][W_FIST] ) + - ( aspd_base[pc_class2idx(sd->status.class_)][MAX_WEAPON_TYPE] - 2000 ); + amotion += ( 2000 - aspd_base[iPc->class2idx(sd->status.class_)][W_FIST] ) + + ( aspd_base[iPc->class2idx(sd->status.class_)][MAX_WEAPON_TYPE] - 2000 ); #else // base weapon delay amotion = (sd->status.weapon < MAX_WEAPON_TYPE) - ? (aspd_base[pc_class2idx(sd->status.class_)][sd->status.weapon]) // single weapon - : (aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype1] + aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype2])*7/10; // dual-wield + ? (aspd_base[iPc->class2idx(sd->status.class_)][sd->status.weapon]) // single weapon + : (aspd_base[iPc->class2idx(sd->status.class_)][sd->weapontype1] + aspd_base[iPc->class2idx(sd->status.class_)][sd->weapontype2])*7/10; // dual-wield // percentual delay reduction from stats amotion -= amotion * (4*status->agi + status->dex)/1000; @@ -2008,7 +2008,7 @@ int status_calc_mob_(struct mob_data* md, bool first) memcpy(status, &md->db->status, sizeof(struct status_data)); if (flag&(8|16)) - mbl = map_id2bl(md->master_id); + mbl = iMap->id2bl(md->master_id); if (flag&8 && mbl) { struct status_data *mstatus = status_get_base_status(mbl); @@ -2222,12 +2222,12 @@ static void status_calc_sigma(void) /// f(x) = 35 + x*(A + B*C/D) + sum(i=2..x){ i*C/D } static unsigned int status_base_pc_maxhp(struct map_session_data* sd, struct status_data* status) { - uint64 val = pc_class2idx(sd->status.class_); + uint64 val = iPc->class2idx(sd->status.class_); val = 35 + sd->status.base_level*(int64)hp_coefficient2[val]/100 + hp_sigma_val[val][sd->status.base_level]; if((sd->class_&MAPID_UPPERMASK) == MAPID_NINJA || (sd->class_&MAPID_UPPERMASK) == MAPID_GUNSLINGER) val += 100; //Since their HP can't be approximated well enough without this. - if((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON)) + if((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && iPc->famerank(sd->status.char_id, MAPID_TAEKWON)) val *= 3; //Triple max HP for top ranking Taekwons over level 90. if((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.base_level >= 99) val += 2000; //Supernovice lvl99 hp bonus. @@ -2245,14 +2245,14 @@ static unsigned int status_base_pc_maxsp(struct map_session_data* sd, struct sta { uint64 val; - val = 10 + sd->status.base_level*(int64)sp_coefficient[pc_class2idx(sd->status.class_)]/100; + val = 10 + sd->status.base_level*(int64)sp_coefficient[iPc->class2idx(sd->status.class_)]/100; val += val * status->int_/100; if (sd->class_&JOBL_UPPER) val += val * 25/100; else if (sd->class_&JOBL_BABY) val -= val * 30/100; - if ((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && pc_famerank(sd->status.char_id, MAPID_TAEKWON)) + if ((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON && sd->status.base_level >= 90 && iPc->famerank(sd->status.char_id, MAPID_TAEKWON)) val *= 3; //Triple max SP for top ranking Taekwons over level 90. return (unsigned int)val; @@ -2279,9 +2279,9 @@ int status_calc_pc_(struct map_session_data* sd, bool first) b_max_weight = sd->max_weight; b_cart_weight_max = sd->cart_weight_max; - pc_calc_skilltree(sd); // SkillTree calculation + iPc->calc_skilltree(sd); // SkillTree calculation - sd->max_weight = max_weight_base[pc_class2idx(sd->status.class_)]+sd->status.str*300; + sd->max_weight = max_weight_base[iPc->class2idx(sd->status.class_)]+sd->status.str*300; if(first) { //Load Hp/SP from char-received data. @@ -2410,9 +2410,9 @@ int status_calc_pc_(struct map_session_data* sd, bool first) memset (&sd->bonus, 0,sizeof(sd->bonus)); // Autobonus - pc_delautobonus(sd,sd->autobonus,ARRAYLENGTH(sd->autobonus),true); - pc_delautobonus(sd,sd->autobonus2,ARRAYLENGTH(sd->autobonus2),true); - pc_delautobonus(sd,sd->autobonus3,ARRAYLENGTH(sd->autobonus3),true); + iPc->delautobonus(sd,sd->autobonus,ARRAYLENGTH(sd->autobonus),true); + iPc->delautobonus(sd,sd->autobonus2,ARRAYLENGTH(sd->autobonus2),true); + iPc->delautobonus(sd,sd->autobonus3,ARRAYLENGTH(sd->autobonus3),true); // Parse equipment. for(i=0;i<EQI_MAX-1;i++) { @@ -2498,7 +2498,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first) { // Forged weapon wd->star += (sd->status.inventory[index].card[1]>>8); if(wd->star >= 15) wd->star = 40; // 3 Star Crumbs now give +40 dmg - if(pc_famerank(MakeDWord(sd->status.inventory[index].card[2],sd->status.inventory[index].card[3]) ,MAPID_BLACKSMITH)) + if(iPc->famerank(MakeDWord(sd->status.inventory[index].card[2],sd->status.inventory[index].card[3]) ,MAPID_BLACKSMITH)) wd->star += 10; if (!wa->ele) //Do not overwrite element from previous bonuses. @@ -2617,7 +2617,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first) if( pd && pd->petDB && pd->petDB->equip_script && pd->pet.intimate >= battle_config.pet_equip_min_friendly ) run_script(pd->petDB->equip_script,0,sd->bl.id,0); if( pd && pd->pet.intimate > 0 && (!battle_config.pet_equip_required || pd->pet.equip > 0) && pd->state.skillbonus == 1 && pd->bonus ) - pc_bonus(sd,pd->bonus->type, pd->bonus->val); + iPc->bonus(sd,pd->bonus->type, pd->bonus->val); } //param_bonus now holds card bonuses. @@ -2649,7 +2649,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first) // ----- STATS CALCULATION ----- // Job bonuses - index = pc_class2idx(sd->status.class_); + index = iPc->class2idx(sd->status.class_); for(i=0;i<(int)sd->status.job_level && i<MAX_LEVEL;i++){ if(!job_bonus[index][i]) continue; @@ -2674,13 +2674,13 @@ int status_calc_pc_(struct map_session_data* sd, bool first) } // Absolute modifiers from passive skills - if(pc_checkskill(sd,BS_HILTBINDING)>0) + if(iPc->checkskill(sd,BS_HILTBINDING)>0) status->str++; - if((skill=pc_checkskill(sd,SA_DRAGONOLOGY))>0) + if((skill=iPc->checkskill(sd,SA_DRAGONOLOGY))>0) status->int_ += (skill+1)/2; // +1 INT / 2 lv - if((skill=pc_checkskill(sd,AC_OWL))>0) + if((skill=iPc->checkskill(sd,AC_OWL))>0) status->dex += skill; - if((skill = pc_checkskill(sd,RA_RESEARCHTRAP))>0) + if((skill = iPc->checkskill(sd,RA_RESEARCHTRAP))>0) status->int_ += skill; // Bonuses from cards and equipment as well as base stat, remember to avoid overflows. @@ -2704,7 +2704,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first) if (sd->status.weapon < MAX_WEAPON_TYPE && sd->weapon_atk[sd->status.weapon]) status->batk += sd->weapon_atk[sd->status.weapon]; // Absolute modifiers from passive skills - if((skill=pc_checkskill(sd,BS_HILTBINDING))>0) + if((skill=iPc->checkskill(sd,BS_HILTBINDING))>0) status->batk += 4; // ----- HP MAX CALCULATION ----- @@ -2717,7 +2717,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first) status->max_hp = (unsigned int)cap_value(i64, 0, INT_MAX); // Absolute modifiers from passive skills - if((skill=pc_checkskill(sd,CR_TRUST))>0) + if((skill=iPc->checkskill(sd,CR_TRUST))>0) status->max_hp += skill*200; // Apply relative modifiers from equipment @@ -2742,15 +2742,15 @@ int status_calc_pc_(struct map_session_data* sd, bool first) status->max_sp = (unsigned int)cap_value(i64, 0, INT_MAX); // Absolute modifiers from passive skills - if((skill=pc_checkskill(sd,SL_KAINA))>0) + if((skill=iPc->checkskill(sd,SL_KAINA))>0) status->max_sp += 30*skill; - if((skill=pc_checkskill(sd,HP_MEDITATIO))>0) + if((skill=iPc->checkskill(sd,HP_MEDITATIO))>0) status->max_sp += (int64)status->max_sp * skill/100; - if((skill=pc_checkskill(sd,HW_SOULDRAIN))>0) + if((skill=iPc->checkskill(sd,HW_SOULDRAIN))>0) status->max_sp += (int64)status->max_sp * 2*skill/100; - if( (skill = pc_checkskill(sd,RA_RESEARCHTRAP)) > 0 ) + if( (skill = iPc->checkskill(sd,RA_RESEARCHTRAP)) > 0 ) status->max_sp += 200 + 20 * skill; - if( (skill = pc_checkskill(sd,WM_LESSON)) > 0 ) + if( (skill = iPc->checkskill(sd,WM_LESSON)) > 0 ) status->max_sp += 30 * skill; @@ -2834,9 +2834,9 @@ int status_calc_pc_(struct map_session_data* sd, bool first) // ----- HIT CALCULATION ----- // Absolute modifiers from passive skills - if((skill=pc_checkskill(sd,BS_WEAPONRESEARCH))>0) + if((skill=iPc->checkskill(sd,BS_WEAPONRESEARCH))>0) status->hit += skill*2; - if((skill=pc_checkskill(sd,AC_VULTURE))>0){ + if((skill=iPc->checkskill(sd,AC_VULTURE))>0){ #ifndef RENEWAL status->hit += skill; #endif @@ -2845,9 +2845,9 @@ int status_calc_pc_(struct map_session_data* sd, bool first) } if(sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE) { - if((skill=pc_checkskill(sd,GS_SINGLEACTION))>0) + if((skill=iPc->checkskill(sd,GS_SINGLEACTION))>0) status->hit += 2*skill; - if((skill=pc_checkskill(sd,GS_SNAKEEYE))>0) { + if((skill=iPc->checkskill(sd,GS_SNAKEEYE))>0) { status->hit += skill; status->rhw.range += skill; } @@ -2856,9 +2856,9 @@ int status_calc_pc_(struct map_session_data* sd, bool first) // ----- FLEE CALCULATION ----- // Absolute modifiers from passive skills - if((skill=pc_checkskill(sd,TF_MISS))>0) + if((skill=iPc->checkskill(sd,TF_MISS))>0) status->flee += skill*(sd->class_&JOBL_2 && (sd->class_&MAPID_BASEMASK) == MAPID_THIEF? 4 : 3); - if((skill=pc_checkskill(sd,MO_DODGE))>0) + if((skill=iPc->checkskill(sd,MO_DODGE))>0) status->flee += (skill*3)>>1; // ----- EQUIPMENT-DEF CALCULATION ----- @@ -2905,29 +2905,29 @@ int status_calc_pc_(struct map_session_data* sd, bool first) // Relative modifiers from passive skills #ifndef RENEWAL_ASPD - if((skill=pc_checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK) + if((skill=iPc->checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK) status->aspd_rate -= 5*skill; - if((skill = pc_checkskill(sd,SG_DEVIL)) > 0 && !pc_nextjobexp(sd)) + if((skill = iPc->checkskill(sd,SG_DEVIL)) > 0 && !iPc->nextjobexp(sd)) status->aspd_rate -= 30*skill; - if((skill=pc_checkskill(sd,GS_SINGLEACTION))>0 && + if((skill=iPc->checkskill(sd,GS_SINGLEACTION))>0 && (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) status->aspd_rate -= ((skill+1)/2) * 10; if(pc_isriding(sd)) - status->aspd_rate += 500-100*pc_checkskill(sd,KN_CAVALIERMASTERY); + status->aspd_rate += 500-100*iPc->checkskill(sd,KN_CAVALIERMASTERY); else if(pc_isridingdragon(sd)) - status->aspd_rate += 250-50*pc_checkskill(sd,RK_DRAGONTRAINING); + status->aspd_rate += 250-50*iPc->checkskill(sd,RK_DRAGONTRAINING); #else // needs more info - if((skill=pc_checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK) + if((skill=iPc->checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK) status->aspd_rate += 5*skill; - if((skill = pc_checkskill(sd,SG_DEVIL)) > 0 && !pc_nextjobexp(sd)) + if((skill = iPc->checkskill(sd,SG_DEVIL)) > 0 && !iPc->nextjobexp(sd)) status->aspd_rate += 30*skill; - if((skill=pc_checkskill(sd,GS_SINGLEACTION))>0 && + if((skill=iPc->checkskill(sd,GS_SINGLEACTION))>0 && (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) status->aspd_rate += ((skill+1)/2) * 10; if(pc_isriding(sd)) - status->aspd_rate -= 500-100*pc_checkskill(sd,KN_CAVALIERMASTERY); + status->aspd_rate -= 500-100*iPc->checkskill(sd,KN_CAVALIERMASTERY); else if(pc_isridingdragon(sd)) - status->aspd_rate -= 250-50*pc_checkskill(sd,RK_DRAGONTRAINING); + status->aspd_rate -= 250-50*iPc->checkskill(sd,RK_DRAGONTRAINING); #endif status->adelay = 2*status->amotion; @@ -2942,26 +2942,26 @@ int status_calc_pc_(struct map_session_data* sd, bool first) // ----- MISC CALCULATIONS ----- // Weight - if((skill=pc_checkskill(sd,MC_INCCARRY))>0) + if((skill=iPc->checkskill(sd,MC_INCCARRY))>0) sd->max_weight += 2000*skill; - if(pc_isriding(sd) && pc_checkskill(sd,KN_RIDING)>0) + if(pc_isriding(sd) && iPc->checkskill(sd,KN_RIDING)>0) sd->max_weight += 10000; else if(pc_isridingdragon(sd)) - sd->max_weight += 5000+2000*pc_checkskill(sd,RK_DRAGONTRAINING); + sd->max_weight += 5000+2000*iPc->checkskill(sd,RK_DRAGONTRAINING); if(sc->data[SC_KNOWLEDGE]) sd->max_weight += sd->max_weight*sc->data[SC_KNOWLEDGE]->val1/10; - if((skill=pc_checkskill(sd,ALL_INCCARRY))>0) + if((skill=iPc->checkskill(sd,ALL_INCCARRY))>0) sd->max_weight += 2000*skill; - sd->cart_weight_max = battle_config.max_cart_weight + (pc_checkskill(sd, GN_REMODELING_CART)*5000); + sd->cart_weight_max = battle_config.max_cart_weight + (iPc->checkskill(sd, GN_REMODELING_CART)*5000); - if (pc_checkskill(sd,SM_MOVINGRECOVERY)>0) + if (iPc->checkskill(sd,SM_MOVINGRECOVERY)>0) sd->regen.state.walk = 1; else sd->regen.state.walk = 0; // Skill SP cost - if((skill=pc_checkskill(sd,HP_MANARECHARGE))>0 ) + if((skill=iPc->checkskill(sd,HP_MANARECHARGE))>0 ) sd->dsprate -= 4*skill; if(sc->data[SC_SERVICE4U]) @@ -2983,17 +2983,17 @@ int status_calc_pc_(struct map_session_data* sd, bool first) sd->sprecov_rate = 0; // Anti-element and anti-race - if((skill=pc_checkskill(sd,CR_TRUST))>0) + if((skill=iPc->checkskill(sd,CR_TRUST))>0) sd->subele[ELE_HOLY] += skill*5; - if((skill=pc_checkskill(sd,BS_SKINTEMPER))>0) { + if((skill=iPc->checkskill(sd,BS_SKINTEMPER))>0) { sd->subele[ELE_NEUTRAL] += skill; sd->subele[ELE_FIRE] += skill*4; } - if((skill=pc_checkskill(sd,NC_RESEARCHFE))>0) { + if((skill=iPc->checkskill(sd,NC_RESEARCHFE))>0) { sd->subele[ELE_EARTH] += skill*10; sd->subele[ELE_FIRE] += skill*10; } - if((skill=pc_checkskill(sd,SA_DRAGONOLOGY))>0 ){ + if((skill=iPc->checkskill(sd,SA_DRAGONOLOGY))>0 ){ skill = skill*4; sd->right_weapon.addrace[RC_DRAGON]+=skill; sd->left_weapon.addrace[RC_DRAGON]+=skill; @@ -3077,7 +3077,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first) clif->updatestatus(sd,SP_WEIGHT); if(b_max_weight != sd->max_weight) { clif->updatestatus(sd,SP_MAXWEIGHT); - pc_updateweightstatus(sd); + iPc->updateweightstatus(sd); } if( b_cart_weight_max != sd->cart_weight_max ) { clif->updatestatus(sd,SP_CARTINFO); @@ -3324,7 +3324,7 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct if( sd ) { struct regen_data_sub *sregen; - if( (skill=pc_checkskill(sd,HP_MEDITATIO)) > 0 ) + if( (skill=iPc->checkskill(sd,HP_MEDITATIO)) > 0 ) { val = regen->sp*(100+3*skill)/100; regen->sp = cap_value(val, 1, SHRT_MAX); @@ -3333,16 +3333,16 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct sregen = regen->sregen; val = 0; - if( (skill=pc_checkskill(sd,SM_RECOVERY)) > 0 ) + if( (skill=iPc->checkskill(sd,SM_RECOVERY)) > 0 ) val += skill*5 + skill*status->max_hp/500; sregen->hp = cap_value(val, 0, SHRT_MAX); val = 0; - if( (skill=pc_checkskill(sd,MG_SRECOVERY)) > 0 ) + if( (skill=iPc->checkskill(sd,MG_SRECOVERY)) > 0 ) val += skill*3 + skill*status->max_sp/500; - if( (skill=pc_checkskill(sd,NJ_NINPOU)) > 0 ) + if( (skill=iPc->checkskill(sd,NJ_NINPOU)) > 0 ) val += skill*3 + skill*status->max_sp/500; - if( (skill=pc_checkskill(sd,WM_LESSON)) > 0 ) + if( (skill=iPc->checkskill(sd,WM_LESSON)) > 0 ) val += 3 + 3 * skill; sregen->sp = cap_value(val, 0, SHRT_MAX); @@ -3351,21 +3351,21 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct sregen = regen->ssregen; val = 0; - if( (skill=pc_checkskill(sd,MO_SPIRITSRECOVERY)) > 0 ) + if( (skill=iPc->checkskill(sd,MO_SPIRITSRECOVERY)) > 0 ) val += skill*4 + skill*status->max_hp/500; - if( (skill=pc_checkskill(sd,TK_HPTIME)) > 0 && sd->state.rest ) + if( (skill=iPc->checkskill(sd,TK_HPTIME)) > 0 && sd->state.rest ) val += skill*30 + skill*status->max_hp/500; sregen->hp = cap_value(val, 0, SHRT_MAX); val = 0; - if( (skill=pc_checkskill(sd,TK_SPTIME)) > 0 && sd->state.rest ) + if( (skill=iPc->checkskill(sd,TK_SPTIME)) > 0 && sd->state.rest ) { val += skill*3 + skill*status->max_sp/500; - if ((skill=pc_checkskill(sd,SL_KAINA)) > 0) //Power up Enjoyable Rest + if ((skill=iPc->checkskill(sd,SL_KAINA)) > 0) //Power up Enjoyable Rest val += (30+10*skill)*val/100; } - if( (skill=pc_checkskill(sd,MO_SPIRITSRECOVERY)) > 0 ) + if( (skill=iPc->checkskill(sd,MO_SPIRITSRECOVERY)) > 0 ) val += skill*2 + skill*status->max_sp/500; sregen->sp = cap_value(val, 0, SHRT_MAX); } @@ -5015,12 +5015,12 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha if (sd && sd->state.permanent_speed) return (short)cap_value(speed,10,USHRT_MAX); - if( sd && sd->ud.skilltimer != INVALID_TIMER && (pc_checkskill(sd,SA_FREECAST) > 0 || sd->ud.skill_id == LG_EXEEDBREAK) ) + if( sd && sd->ud.skilltimer != INVALID_TIMER && (iPc->checkskill(sd,SA_FREECAST) > 0 || sd->ud.skill_id == LG_EXEEDBREAK) ) { if( sd->ud.skill_id == LG_EXEEDBREAK ) speed_rate = 100 + 60 - (sd->ud.skill_lv * 10); else - speed_rate = 175 - 5 * pc_checkskill(sd,SA_FREECAST); + speed_rate = 175 - 5 * iPc->checkskill(sd,SA_FREECAST); } else { @@ -5036,9 +5036,9 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha if( pc_isriding(sd) || sd->sc.option&(OPTION_DRAGON) || sd->sc.data[SC_ALL_RIDING] ) val = 25;//Same bonus else if( pc_isridingwug(sd) ) - val = 15 + 5 * pc_checkskill(sd, RA_WUGRIDER); + val = 15 + 5 * iPc->checkskill(sd, RA_WUGRIDER); else if( pc_ismadogear(sd) ) { - val = (- 10 * (5 - pc_checkskill(sd,NC_MADOLICENCE))); + val = (- 10 * (5 - iPc->checkskill(sd,NC_MADOLICENCE))); if( sc->data[SC_ACCELERATION] ) val += 25; } @@ -5051,8 +5051,8 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha { int val = 0; - if( sd && sc->data[SC_HIDING] && pc_checkskill(sd,RG_TUNNELDRIVE) > 0 ) - val = 120 - 6 * pc_checkskill(sd,RG_TUNNELDRIVE); + if( sd && sc->data[SC_HIDING] && iPc->checkskill(sd,RG_TUNNELDRIVE) > 0 ) + val = 120 - 6 * iPc->checkskill(sd,RG_TUNNELDRIVE); else if( sd && sc->data[SC_CHASEWALK] && sc->data[SC_CHASEWALK]->val3 < 0 ) val = sc->data[SC_CHASEWALK]->val3; @@ -5063,7 +5063,7 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha val = max( val, 50 - 10 * sc->data[SC_LONGING]->val1 ); else if( sd && sc->data[SC_DANCING] ) - val = max( val, 500 - (40 + 10 * (sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_BARDDANCER)) * pc_checkskill(sd,(sd->status.sex?BA_MUSICALLESSON:DC_DANCINGLESSON)) ); + val = max( val, 500 - (40 + 10 * (sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_BARDDANCER)) * iPc->checkskill(sd,(sd->status.sex?BA_MUSICALLESSON:DC_DANCINGLESSON)) ); if( sc->data[SC_DECREASEAGI] ) val = max( val, 25 ); @@ -5129,8 +5129,8 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha val = max( val, 2 * sc->data[SC_WINDWALK]->val1 ); if( sc->data[SC_CARTBOOST] ) val = max( val, 20 ); - if( sd && (sd->class_&MAPID_UPPERMASK) == MAPID_ASSASSIN && pc_checkskill(sd,TF_MISS) > 0 ) - val = max( val, 1 * pc_checkskill(sd,TF_MISS) ); + if( sd && (sd->class_&MAPID_UPPERMASK) == MAPID_ASSASSIN && iPc->checkskill(sd,TF_MISS) > 0 ) + val = max( val, 1 * iPc->checkskill(sd,TF_MISS) ); if( sc->data[SC_CLOAKING] && (sc->data[SC_CLOAKING]->val4&1) == 1 ) val = max( val, sc->data[SC_CLOAKING]->val1 >= 10 ? 25 : 3 * sc->data[SC_CLOAKING]->val1 - 3 ); if (sc->data[SC_BERSERK] || sc->data[SC__BLOODYLUST]) @@ -5168,7 +5168,7 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha //GetSpeed() { if( sd && pc_iscarton(sd) ) - speed += speed * (50 - 5 * pc_checkskill(sd,MC_PUSHCART)) / 100; + speed += speed * (50 - 5 * iPc->checkskill(sd,MC_PUSHCART)) / 100; if( sc->data[SC_PARALYSE] ) speed += speed * 50 / 100; if( speed_rate != 100 ) @@ -5321,7 +5321,7 @@ static short status_calc_fix_aspd(struct block_list *bl, struct status_change *s || sc->data[SC_WILD_STORM_OPTION])) aspd -= 50; // +5 ASPD if( sc && sc->data[SC_FIGHTINGSPIRIT] && sc->data[SC_FIGHTINGSPIRIT]->val2 ) - aspd -= (bl->type==BL_PC?pc_checkskill((TBL_PC *)bl, RK_RUNEMASTERY):10) / 10 * 40; + aspd -= (bl->type==BL_PC?iPc->checkskill((TBL_PC *)bl, RK_RUNEMASTERY):10) / 10 * 40; return cap_value(aspd, 0, 2000); // will be recap for proper bl anyway } @@ -5784,7 +5784,7 @@ int status_get_party_id(struct block_list *bl) { struct mob_data *md=(TBL_MOB*)bl; if( md->master_id > 0 ) { struct map_session_data *msd; - if (md->special_state.ai && (msd = map_id2sd(md->master_id)) != NULL) + if (md->special_state.ai && (msd = iMap->id2sd(md->master_id)) != NULL) return msd->status.party_id; return -md->master_id; } @@ -5822,7 +5822,7 @@ int status_get_guild_id(struct block_list *bl) { struct mob_data *md = (struct mob_data *)bl; if (md->guardian_data) //Guardian's guild [Skotlex] return md->guardian_data->guild_id; - if (md->special_state.ai && (msd = map_id2sd(md->master_id)) != NULL) + if (md->special_state.ai && (msd = iMap->id2sd(md->master_id)) != NULL) return msd->status.guild_id; //Alchemist's mobs [Skotlex] } break; @@ -5862,7 +5862,7 @@ int status_get_emblem_id(struct block_list *bl) { struct mob_data *md = (struct mob_data *)bl; if (md->guardian_data) //Guardian's guild [Skotlex] return md->guardian_data->emblem_id; - if (md->special_state.ai && (msd = map_id2sd(md->master_id)) != NULL) + if (md->special_state.ai && (msd = iMap->id2sd(md->master_id)) != NULL) return msd->guild_emblem_id; //Alchemist's mobs [Skotlex] } break; @@ -6603,7 +6603,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_INCREASEAGI: if(sd && pc_issit(sd)){ - pc_setstand(sd); + iPc->setstand(sd); } case SC_CONCENTRATE: @@ -6622,7 +6622,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val //Due to the cloaking card, we have to check the wall versus to known //skill level rather than the used one. [Skotlex] //if (sd && val1 < 3 && skill_check_cloaking(bl,NULL)) - if( sd && pc_checkskill(sd, AS_CLOAKING) < 3 && !skill->check_cloaking(bl,NULL) ) + if( sd && iPc->checkskill(sd, AS_CLOAKING) < 3 && !skill->check_cloaking(bl,NULL) ) return 0; break; case SC_MODECHANGE: @@ -6657,7 +6657,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val i = sd->equip_index[EQI_HAND_R]; if (i>=0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_WEAPON) { opt_flag|=2; - pc_unequipitem(sd,i,3); + iPc->unequipitem(sd,i,3); } if (!opt_flag) return 0; } @@ -6673,7 +6673,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val i = sd->equip_index[EQI_HAND_L]; if ( i < 0 || !sd->inventory_data[i] || sd->inventory_data[i]->type != IT_ARMOR ) return 0; - pc_unequipitem(sd,i,3); + iPc->unequipitem(sd,i,3); } if (tick == 1) return 1; //Minimal duration: Only strip without causing the SC break; @@ -6685,7 +6685,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val i = sd->equip_index[EQI_ARMOR]; if ( i < 0 || !sd->inventory_data[i] ) return 0; - pc_unequipitem(sd,i,3); + iPc->unequipitem(sd,i,3); } if (tick == 1) return 1; //Minimal duration: Only strip without causing the SC break; @@ -6697,7 +6697,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val i = sd->equip_index[EQI_HEAD_TOP]; if ( i < 0 || !sd->inventory_data[i] ) return 0; - pc_unequipitem(sd,i,3); + iPc->unequipitem(sd,i,3); } if (tick == 1) return 1; //Minimal duration: Only strip without causing the SC break; @@ -6758,7 +6758,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val return 0; break; case SC_CAMOUFLAGE: - if( sd && pc_checkskill(sd, RA_CAMOUFLAGE) < 3 && !skill->check_camouflage(bl,NULL) ) + if( sd && iPc->checkskill(sd, RA_CAMOUFLAGE) < 3 && !skill->check_camouflage(bl,NULL) ) return 0; break; case SC__STRIPACCESSORY: @@ -6767,11 +6767,11 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val if( !(sd->bonus.unstripable_equip&EQI_ACC_L) ) { i = sd->equip_index[EQI_ACC_L]; if( i >= 0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_ARMOR ) - pc_unequipitem(sd,i,3); //L-Accessory + iPc->unequipitem(sd,i,3); //L-Accessory } if( !(sd->bonus.unstripable_equip&EQI_ACC_R) ) { i = sd->equip_index[EQI_ACC_R]; if( i >= 0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_ARMOR ) - pc_unequipitem(sd,i,3); //R-Accessory + iPc->unequipitem(sd,i,3); //R-Accessory } if( i < 0 ) return 0; @@ -7142,7 +7142,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val //Kaahi overwrites previous level regardless of existing level. //Delete timer if it exists. if (sce->val4 != INVALID_TIMER) { - delete_timer(sce->val4,kaahi_heal_timer); + iTimer->delete_timer(sce->val4,kaahi_heal_timer); sce->val4 = INVALID_TIMER; } break; @@ -7191,7 +7191,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val int i; for( i = 0; i < 5; i++ ) { - if( sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])) ) + if( sd->devotion[i] && (tsd = iMap->id2sd(sd->devotion[i])) ) status_change_start(&tsd->bl, type, 10000, val1, val2, val3, val4, tick, 1); } } @@ -7223,7 +7223,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val val3 = 50*(val1+1); //Damage increase (+50 +50*lv%) #endif if( sd )//[Ind] - iROwiki says each level increases its duration by 3 seconds - tick += pc_checkskill(sd,GC_RESEARCHNEWPOISON)*3000; + tick += iPc->checkskill(sd,GC_RESEARCHNEWPOISON)*3000; break; case SC_POISONREACT: val2=(val1+1)/2 + val1/10; // Number of counters [Skotlex] @@ -7282,7 +7282,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val int i; for( i = 0; i < 5; i++ ) { - if( sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])) ) + if( sd->devotion[i] && (tsd = iMap->id2sd(sd->devotion[i])) ) status_change_start(&tsd->bl, type, 10000, val1, val2, 0, 0, tick, 1); } } @@ -7417,7 +7417,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val if (status->hp - diff < status->max_hp>>2) diff = status->hp - (status->max_hp>>2); if( val2 && bl->type == BL_MOB ) { - struct block_list* src = map_id2bl(val2); + struct block_list* src = iMap->id2bl(val2); if( src ) mob_log_damage((TBL_MOB*)bl,src,diff); } @@ -7457,7 +7457,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_BOSSMAPINFO: if( sd != NULL ) { - struct mob_data *boss_md = map_getmob_boss(bl->m); // Search for Boss on this Map + struct mob_data *boss_md = iMap->getmob_boss(bl->m); // Search for Boss on this Map if( boss_md == NULL || boss_md->bl.prev == NULL ) { // No MVP on this map - MVP is dead clif->bossmapinfo(sd->fd, boss_md, 1); @@ -7539,7 +7539,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val { for( i = 0; i < 5; i++ ) { - if( sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])) ) + if( sd->devotion[i] && (tsd = iMap->id2sd(sd->devotion[i])) ) status_change_start(&tsd->bl, type, 10000, val1, val2, 0, 0, tick, 1); } } @@ -7562,7 +7562,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val int i; for (i = 0; i < 5; i++) { //See if there are devoted characters, and pass the status to them. [Skotlex] - if (sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i]))) + if (sd->devotion[i] && (tsd = iMap->id2sd(sd->devotion[i]))) status_change_start(&tsd->bl,type,10000,val1,5+val1*5,val3,val4,tick,1); } } @@ -7631,7 +7631,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val { int stat,max_stat; // fetch caster information - struct block_list *pbl = map_id2bl(val1); + struct block_list *pbl = iMap->id2bl(val1); struct status_change *psc = pbl?status_get_sc(pbl):NULL; struct status_change_entry *psce = psc?psc->data[SC_MARIONETTE]:NULL; // fetch target's stats @@ -7680,7 +7680,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val struct block_list *d_bl; struct status_change *d_sc; - if( (d_bl = map_id2bl(val1)) && (d_sc = status_get_sc(d_bl)) && d_sc->count ) + if( (d_bl = iMap->id2bl(val1)) && (d_sc = status_get_sc(d_bl)) && d_sc->count ) { // Inherits Status From Source const enum sc_type types[] = { SC_AUTOGUARD, SC_DEFENDER, SC_REFLECTSHIELD, SC_ENDURE }; enum sc_type type2; @@ -7698,7 +7698,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_COMA: //Coma. Sends a char to 1HP. If val2, do not zap sp if( val3 && bl->type == BL_MOB ) { - struct block_list* src = map_id2bl(val3); + struct block_list* src = iMap->id2bl(val3); if( src ) mob_log_damage((TBL_MOB*)bl,src,status->hp - 1); } @@ -7707,7 +7707,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val break; case SC_CLOSECONFINE2: { - struct block_list *src = val2?map_id2bl(val2):NULL; + struct block_list *src = val2?iMap->id2bl(val2):NULL; struct status_change *sc2 = src?status_get_sc(src):NULL; struct status_change_entry *sce2 = sc2?sc2->data[SC_CLOSECONFINE]:NULL; if (src && sc2) { @@ -7715,8 +7715,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val sc_start4(src,SC_CLOSECONFINE,100,val1,1,0,0,tick+1000); else { //Increase count of locked enemies and refresh time. (sce2->val2)++; - delete_timer(sce2->timer, status_change_timer); - sce2->timer = add_timer(gettick()+tick+1000, status_change_timer, src->id, SC_CLOSECONFINE); + iTimer->delete_timer(sce2->timer, status_change_timer); + sce2->timer = iTimer->add_timer(iTimer->gettick()+tick+1000, status_change_timer, src->id, SC_CLOSECONFINE); } } else //Status failed. return 0; @@ -7750,8 +7750,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val struct unit_data *ud = unit_bl2ud(bl); if (ud && !val3) { tick += 300 * battle_config.combo_delay_rate/100; - ud->attackabletime = gettick()+tick; - unit_set_walkdelay(bl, gettick(), tick, 1); + ud->attackabletime = iTimer->gettick()+tick; + unit_set_walkdelay(bl, iTimer->gettick(), tick, 1); } val3 = 0; val4 = tick; @@ -7761,7 +7761,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val val2 = 11-val1; //Chance to consume: 11-skill_lv% break; case SC_RUN: - val4 = gettick(); //Store time at which you started running. + val4 = iTimer->gettick(); //Store time at which you started running. tick = -1; break; case SC_KAAHI: @@ -7794,14 +7794,14 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_OVERTHRUST: //val2 holds if it was casted on self, or is bonus received from others val3 = 5*val1; //Power increase - if(sd && pc_checkskill(sd,BS_HILTBINDING)>0) + if(sd && iPc->checkskill(sd,BS_HILTBINDING)>0) tick += tick / 10; break; case SC_ADRENALINE2: case SC_ADRENALINE: val3 = (val2) ? 300 : 200; // aspd increase case SC_WEAPONPERFECTION: - if(sd && pc_checkskill(sd,BS_HILTBINDING)>0) + if(sd && iPc->checkskill(sd,BS_HILTBINDING)>0) tick += tick / 10; break; case SC_CONCENTRATION: @@ -7889,7 +7889,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val int pos = (bl->x&0xFFFF)|(bl->y<<16), //Current Coordinates map = sd->mapindex; //Current Map //1. Place in Jail (val2 -> Jail Map, val3 -> x, val4 -> y - pc_setpos(sd,(unsigned short)val2,val3,val4, CLR_TELEPORT); + iPc->setpos(sd,(unsigned short)val2,val3,val4, CLR_TELEPORT); //2. Set restore point (val3 -> return map, val4 return coords val3 = map; val4 = pos; @@ -8033,7 +8033,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val break; case SC_STONEHARDSKIN: if( sd ) - val1 = sd->status.job_level * pc_checkskill(sd, RK_RUNEMASTERY) / 4; //DEF/MDEF Increase + val1 = sd->status.job_level * iPc->checkskill(sd, RK_RUNEMASTERY) / 4; //DEF/MDEF Increase break; case SC_FIGHTINGSPIRIT: val_flag |= 1|2; @@ -8155,11 +8155,11 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val tick_time = 1000; // [GodLesZ] tick time break; case SC_WUGDASH: - val4 = gettick(); //Store time at which you started running. + val4 = iTimer->gettick(); //Store time at which you started running. tick = -1; break; case SC__SHADOWFORM: { - struct map_session_data * s_sd = map_id2sd(val2); + struct map_session_data * s_sd = iMap->id2sd(val2); if( s_sd ) s_sd->shadowform_id = bl->id; val4 = tick / 1000; @@ -8181,18 +8181,18 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC__ENERVATION: val2 = 20 + 10 * val1; // ATK Reduction val_flag |= 1|2; - if( sd ) pc_delspiritball(sd,sd->spiritball,0); + if( sd ) iPc->delspiritball(sd,sd->spiritball,0); break; case SC__GROOMY: val2 = 20 + 10 * val1; //ASPD. Need to confirm if Movement Speed reduction is the same. [Jobbie] val3 = 20 * val1; //HIT val_flag |= 1|2|4; if( sd ) { // Removes Animals - if( pc_isriding(sd) ) pc_setriding(sd, 0); - if( pc_isridingdragon(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_DRAGON); - if( pc_iswug(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_WUG); - if( pc_isridingwug(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_WUGRIDER); - if( pc_isfalcon(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_FALCON); + if( pc_isriding(sd) ) iPc->setriding(sd, 0); + if( pc_isridingdragon(sd) ) iPc->setoption(sd, sd->sc.option&~OPTION_DRAGON); + if( pc_iswug(sd) ) iPc->setoption(sd, sd->sc.option&~OPTION_WUG); + if( pc_isridingwug(sd) ) iPc->setoption(sd, sd->sc.option&~OPTION_WUGRIDER); + if( pc_isfalcon(sd) ) iPc->setoption(sd, sd->sc.option&~OPTION_FALCON); if( sd->status.pet_id > 0 ) pet_menu(sd, 3); if( homun_alive(sd->hd) ) homun->vaporize(sd,1); if( sd->md ) merc_delete(sd->md,3); @@ -8292,13 +8292,13 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val val3 = 15 + 5 * val1; // ASPD reduction. if( sd && rand()%100 < val1 ){ // (Skill Lv) % val4 = 1; // reduce walk speed by half. - if( pc_isriding(sd) ) pc_setriding(sd, 0); - if( pc_isridingdragon(sd) ) pc_setoption(sd, sd->sc.option&~OPTION_DRAGON); + if( pc_isriding(sd) ) iPc->setriding(sd, 0); + if( pc_isridingdragon(sd) ) iPc->setoption(sd, sd->sc.option&~OPTION_DRAGON); } break; case SC_GLOOMYDAY_SK: // Random number between [15 ~ (Voice Lesson Skill Level x 5) + (Skill Level x 10)] %. - val2 = 15 + rand()%( (sd?pc_checkskill(sd, WM_LESSON)*5:0) + val1*10 ); + val2 = 15 + rand()%( (sd?iPc->checkskill(sd, WM_LESSON)*5:0) + val1*10 ); break; case SC_SITDOWN_FORCE: case SC_BANANA_BOMB_SITDOWN: @@ -8355,7 +8355,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val val2 = ((status->int_ + status->luk) / 6) + 5; // Chance to evade magic damage. val1 *= 15; // Defence added if( sd ) - val1 += 10 * pc_checkskill(sd,CR_DEFENDER); + val1 += 10 * iPc->checkskill(sd,CR_DEFENDER); val_flag |= 1|2; break; case SC_BANDING: @@ -8401,7 +8401,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val {// take note there is no def increase as skill desc says. [malufett] struct block_list * src; val3 = status->agi * val1 / 60; // ASPD increase: [(Target AGI x Skill Level) / 60] % - if( (src = map_id2bl(val2)) ) + if( (src = iMap->id2bl(val2)) ) val4 = ( 200/status_get_int(src) ) * val1;// MDEF decrease: MDEF [(200 / Caster INT) x Skill Level] } break; @@ -8409,7 +8409,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val {// take note there is no vit,aspd,speed increase as skill desc says. [malufett] struct block_list * src; val3 = val1 * 30 + 150; // Natural HP recovery increase: [(Skill Level x 30) + 50] % - if( (src = map_id2bl(val2)) ) // the stat def is not shown in the status window and it is process differently + if( (src = iMap->id2bl(val2)) ) // the stat def is not shown in the status window and it is process differently val4 = ( status_get_vit(src)/4 ) * val1; // STAT DEF increase: [(Caster VIT / 4) x Skill Level] } break; @@ -8643,7 +8643,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_STONE: case SC_DEEPSLEEP: if (sd && pc_issit(sd)) //Avoid sprite sync problems. - pc_setstand(sd); + iPc->setstand(sd); case SC_TRICKDEAD: status_change_end(bl, SC_DANCING, INVALID_TIMER); // Cancel cast when get status [LuzZza] @@ -8881,7 +8881,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val //Don't trust the previous sce assignment, in case the SC ended somewhere between there and here. if((sce=sc->data[type])) {// reuse old sc if( sce->timer != INVALID_TIMER ) - delete_timer(sce->timer, status_change_timer); + iTimer->delete_timer(sce->timer, status_change_timer); } else {// new sc ++(sc->count); sce = sc->data[type] = ers_alloc(sc_data_ers, struct status_change_entry); @@ -8891,7 +8891,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val sce->val3 = val3; sce->val4 = val4; if (tick >= 0) - sce->timer = add_timer(gettick() + tick, status_change_timer, bl->id, type); + sce->timer = iTimer->add_timer(iTimer->gettick() + tick, status_change_timer, bl->id, type); else sce->timer = INVALID_TIMER; //Infinite duration @@ -8921,7 +8921,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val } break; case SC_BOSSMAPINFO: - clif->bossmapinfo(sd->fd, map_id2boss(sce->val1), 0); // First Message + clif->bossmapinfo(sd->fd, iMap->id2boss(sce->val1), 0); // First Message break; case SC_MERC_HPUP: status_percent_heal(bl, 100, 0); // Recover Full HP @@ -8964,7 +8964,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val clif->skillinfo(sd,TK_JUMPKICK, INF_SELF_SKILL); break; case MO_TRIPLEATTACK: - if (sd && pc_checkskill(sd, SR_DRAGONCOMBO) > 0) + if (sd && iPc->checkskill(sd, SR_DRAGONCOMBO) > 0) clif->skillinfo(sd,SR_DRAGONCOMBO, INF_SELF_SKILL); break; case SR_FALLENEMPIRE: @@ -9080,7 +9080,7 @@ int status_change_clear(struct block_list* bl, int type) { //If for some reason status_change_end decides to still keep the status when quitting. [Skotlex] (sc->count)--; if (sc->data[i]->timer != INVALID_TIMER) - delete_timer(sc->data[i]->timer, status_change_timer); + iTimer->delete_timer(sc->data[i]->timer, status_change_timer); ers_free(sc_data_ers, sc->data[i]); sc->data[i] = NULL; } @@ -9128,7 +9128,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const //Do not end infinite endure. return 0; if (sce->timer != INVALID_TIMER) //Could be a SC with infinite duration - delete_timer(sce->timer,status_change_timer); + iTimer->delete_timer(sce->timer,status_change_timer); if (sc->opt1) switch (type) { //"Ugly workaround" [Skotlex] @@ -9144,7 +9144,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const //since these SC are not affected by it, and it lets us know //if we have already delayed this attack or not. sce->val1 = 0; - sce->timer = add_timer(gettick()+10, status_change_timer, bl->id, type); + sce->timer = iTimer->add_timer(iTimer->gettick()+10, status_change_timer, bl->id, type); return 1; } } @@ -9184,7 +9184,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const unit_stop_walking(bl,1); } if (begin_spurt && sce->val1 >= 7 && - DIFF_TICK(gettick(), sce->val4) <= 1000 && + DIFF_TICK(iTimer->gettick(), sce->val4) <= 1000 && (!sd || (sd->weapontype1 == 0 && sd->weapontype2 == 0)) ) sc_start(bl,SC_SPURT,100,sce->val1,skill->get_time2(status_sc2skill(type), sce->val1)); @@ -9206,7 +9206,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const int i; for( i = 0; i < 5; i++ ) { - if( sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])) && tsd->sc.data[type] ) + if( sd->devotion[i] && (tsd = iMap->id2sd(sd->devotion[i])) && tsd->sc.data[type] ) status_change_end(&tsd->bl, type, INVALID_TIMER); } } @@ -9220,7 +9220,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const break; case SC_DEVOTION: { - struct block_list *d_bl = map_id2bl(sce->val1); + struct block_list *d_bl = iMap->id2bl(sce->val1); if( d_bl ) { if( d_bl->type == BL_PC ) @@ -9241,7 +9241,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const if(sce->val4) { int tid = sce->val4; - struct block_list *tbl = map_id2bl(tid); + struct block_list *tbl = iMap->id2bl(tid); struct status_change *tsc = status_get_sc(tbl); sce->val4 = 0; if(tbl && tsc && tsc->data[SC_BLADESTOP]) @@ -9275,7 +9275,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const sd->delunit_prevline = line; } - if(sce->val4 && sce->val4 != BCT_SELF && (dsd=map_id2sd(sce->val4))) + if(sce->val4 && sce->val4 != BCT_SELF && (dsd=iMap->id2sd(sce->val4))) {// end status on partner as well dsc = dsd->sc.data[SC_DANCING]; if(dsc) { @@ -9322,14 +9322,14 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const break; case SC_SPLASHER: { - struct block_list *src=map_id2bl(sce->val3); + struct block_list *src=iMap->id2bl(sce->val3); if(src && tid != INVALID_TIMER) - skill->castend_damage_id(src, bl, sce->val2, sce->val1, gettick(), SD_LEVEL ); + skill->castend_damage_id(src, bl, sce->val2, sce->val1, iTimer->gettick(), SD_LEVEL ); } break; case SC_CLOSECONFINE2: { - struct block_list *src = sce->val2?map_id2bl(sce->val2):NULL; + struct block_list *src = sce->val2?iMap->id2bl(sce->val2):NULL; struct status_change *sc2 = src?status_get_sc(src):NULL; if (src && sc2 && sc2->data[SC_CLOSECONFINE]) { //If status was already ended, do nothing. @@ -9344,8 +9344,8 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const int range = 1 +skill->get_range2(bl, status_sc2skill(type), sce->val1) +skill->get_range2(bl, TF_BACKSLIDING, 1); //Since most people use this to escape the hold.... - map_foreachinarea(status_change_timer_sub, - bl->m, bl->x-range, bl->y-range, bl->x+range,bl->y+range,BL_CHAR,bl,sce,type,gettick()); + iMap->foreachinarea(status_change_timer_sub, + bl->m, bl->x-range, bl->y-range, bl->x+range,bl->y+range,BL_CHAR,bl,sce,type,iTimer->gettick()); } break; case SC_COMBO: @@ -9360,7 +9360,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const clif->skillinfo(sd, TK_JUMPKICK, 0); break; case MO_TRIPLEATTACK: - if (pc_checkskill(sd, SR_DRAGONCOMBO) > 0) + if (iPc->checkskill(sd, SR_DRAGONCOMBO) > 0) clif->skillinfo(sd, SR_DRAGONCOMBO, 0); break; case SR_FALLENEMPIRE: @@ -9375,7 +9375,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const if (sce->val1) { // check for partner and end their marionette status as well enum sc_type type2 = (type == SC_MARIONETTE) ? SC_MARIONETTE2 : SC_MARIONETTE; - struct block_list *pbl = map_id2bl(sce->val1); + struct block_list *pbl = iMap->id2bl(sce->val1); struct status_change* sc2 = pbl?status_get_sc(pbl):NULL; if (sc2 && sc2->data[type2]) @@ -9430,14 +9430,14 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const case SC_KAAHI: //Delete timer if it exists. if (sce->val4 != INVALID_TIMER) - delete_timer(sce->val4,kaahi_heal_timer); + iTimer->delete_timer(sce->val4,kaahi_heal_timer); break; case SC_JAILED: if(tid == INVALID_TIMER) break; //natural expiration. if(sd && sd->mapindex == sce->val2) - pc_setpos(sd,(unsigned short)sce->val3,sce->val4&0xFFFF, sce->val4>>16, CLR_TELEPORT); + iPc->setpos(sd,(unsigned short)sce->val3,sce->val4&0xFFFF, sce->val4>>16, CLR_TELEPORT); break; //guess hes not in jail :P case SC_CHANGE: if (tid == INVALID_TIMER) @@ -9451,15 +9451,15 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const break; // Note: vending/buying is closed by unit_remove_map, no // need to do it here. - map_quit(sd); - // Because map_quit calls status_change_end with tid -1 + iMap->quit(sd); + // Because iMap->quit calls status_change_end with tid -1 // from here it's not neccesary to continue return 1; break; case SC_STOP: if( sce->val2 ) { - struct block_list* tbl = map_id2bl(sce->val2); + struct block_list* tbl = iMap->id2bl(sce->val2); sce->val2 = 0; if( tbl && (sc = status_get_sc(tbl)) && sc->data[SC_STOP] && sc->data[SC_STOP]->val2 == bl->id ) status_change_end(tbl, SC_STOP, INVALID_TIMER); @@ -9476,10 +9476,10 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const break; case SC_WHITEIMPRISON: { - struct block_list* src = map_id2bl(sce->val2); + struct block_list* src = iMap->id2bl(sce->val2); if( tid == -1 || !src) break; // Terminated by Damage - status_fix_damage(src,bl,400*sce->val1,clif->damage(bl,bl,gettick(),0,0,400*sce->val1,0,0,0)); + status_fix_damage(src,bl,400*sce->val1,clif->damage(bl,bl,iTimer->gettick(),0,0,400*sce->val1,0,0,0)); } break; case SC_WUGDASH: @@ -9496,7 +9496,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const status_change_end(bl, SC_BLIND, INVALID_TIMER); break; case SC__SHADOWFORM: { - struct map_session_data *s_sd = map_id2sd(sce->val2); + struct map_session_data *s_sd = iMap->id2sd(sce->val2); if( !s_sd ) break; s_sd->shadowform_id = 0; @@ -9504,7 +9504,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const break; case SC_SITDOWN_FORCE: if( sd && pc_issit(sd) ) { - pc_setstand(sd); + iPc->setstand(sd); clif->standing(bl); } break; @@ -9527,23 +9527,23 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const break; case SC_CURSEDCIRCLE_ATKER: if( sce->val2 ) // used the default area size cause there is a chance the caster could knock back and can't clear the target. - map_foreachinrange(status_change_timer_sub, bl, battle_config.area_size,BL_CHAR, bl, sce, SC_CURSEDCIRCLE_TARGET, gettick()); + iMap->foreachinrange(status_change_timer_sub, bl, battle_config.area_size,BL_CHAR, bl, sce, SC_CURSEDCIRCLE_TARGET, iTimer->gettick()); break; case SC_RAISINGDRAGON: if( sd && sce->val2 && !pc_isdead(sd) ) { int i; i = min(sd->spiritball,5); - pc_delspiritball(sd, sd->spiritball, 0); + iPc->delspiritball(sd, sd->spiritball, 0); status_change_end(bl, SC_EXPLOSIONSPIRITS, INVALID_TIMER); while( i > 0 ) { - pc_addspiritball(sd, skill->get_time(MO_CALLSPIRITS, pc_checkskill(sd,MO_CALLSPIRITS)), 5); + iPc->addspiritball(sd, skill->get_time(MO_CALLSPIRITS, iPc->checkskill(sd,MO_CALLSPIRITS)), 5); --i; } } break; case SC_CURSEDCIRCLE_TARGET: { - struct block_list *src = map_id2bl(sce->val2); + struct block_list *src = iMap->id2bl(sce->val2); struct status_change *sc = status_get_sc(src); if( sc && sc->data[SC_CURSEDCIRCLE_ATKER] && --(sc->data[SC_CURSEDCIRCLE_ATKER]->val2) == 0 ){ status_change_end(src, SC_CURSEDCIRCLE_ATKER, INVALID_TIMER); @@ -9553,7 +9553,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const break; case SC_BLOODSUCKER: if( sce->val2 ){ - struct block_list *src = map_id2bl(sce->val2); + struct block_list *src = iMap->id2bl(sce->val2); if(src){ struct status_change *sc = status_get_sc(src); sc->bs_counter--; @@ -9761,9 +9761,9 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const status_calc_bl(bl,calc_flag); if(opt_flag&4) //Out of hiding, invoke on place. - skill->unit_move(bl,gettick(),1); + skill->unit_move(bl,iTimer->gettick(),1); - if(opt_flag&2 && sd && map_getcell(bl->m,bl->x,bl->y,CELL_CHKNPC)) + if(opt_flag&2 && sd && iMap->getcell(bl->m,bl->x,bl->y,CELL_CHKNPC)) npc_touch_areanpc(sd,bl->m,bl->x,bl->y); //Trigger on-touch event. ers_free(sc_data_ers, sce); @@ -9778,7 +9778,7 @@ int kaahi_heal_timer(int tid, unsigned int tick, int id, intptr_t data) struct status_data *status; int hp; - if(!((bl=map_id2bl(id))&& + if(!((bl=iMap->id2bl(id))&& (sc=status_get_sc(bl)) && (sce = sc->data[SC_KAAHI]))) return 0; @@ -9817,7 +9817,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) struct status_change *sc; struct status_change_entry *sce; - bl = map_id2bl(id); + bl = iMap->id2bl(id); if(!bl) { ShowDebug("status_change_timer: Null pointer id: %d data: %d\n", id, data); @@ -9843,7 +9843,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) // set the next timer of the sce (don't assume the status still exists) #define sc_timer_next(t,f,i,d) \ if( (sce=sc->data[type]) ) \ - sce->timer = add_timer(t,f,i,d); \ + sce->timer = iTimer->add_timer(t,f,i,d); \ else \ ShowError("status_change_timer: Unexpected NULL status change id: %d data: %d\n", id, data) @@ -9892,9 +9892,9 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_RUWACH: case SC_SIGHTBLASTER: if(type == SC_SIGHTBLASTER) - map_foreachinrange( status_change_timer_sub, bl, sce->val3, BL_CHAR|BL_SKILL, bl, sce, type, tick); + iMap->foreachinrange( status_change_timer_sub, bl, sce->val3, BL_CHAR|BL_SKILL, bl, sce, type, tick); else - map_foreachinrange( status_change_timer_sub, bl, sce->val3, BL_CHAR, bl, sce, type, tick); + iMap->foreachinrange( status_change_timer_sub, bl, sce->val3, BL_CHAR, bl, sce, type, tick); if( --(sce->val2)>0 ){ sce->val4 += 250; // use for Shadow Form 2 seconds checking. @@ -9936,16 +9936,16 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) if (--(sce->val3) > 0) { if (!sc->data[SC_SLOWPOISON]) { if( sce->val2 && bl->type == BL_MOB ) { - struct block_list* src = map_id2bl(sce->val2); + struct block_list* src = iMap->id2bl(sce->val2); if( src ) mob_log_damage((TBL_MOB*)bl,src,sce->val4); } - map_freeblock_lock(); + iMap->freeblock_lock(); status_zap(bl, sce->val4, 0); if (sc->data[type]) { // Check if the status still last ( can be dead since then ). sc_timer_next(1000 + tick, status_change_timer, bl->id, data ); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); } return 0; } @@ -9963,7 +9963,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) if(bl->m == sd->feel_map[0].m || bl->m == sd->feel_map[1].m || bl->m == sd->feel_map[2].m) - { //Timeout will be handled by pc_setpos + { //Timeout will be handled by iPc->setpos sce->timer = INVALID_TIMER; return 0; } @@ -9972,20 +9972,20 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_BLEEDING: if (--(sce->val4) >= 0) { int hp = rnd()%600 + 200; - struct block_list* src = map_id2bl(sce->val2); + struct block_list* src = iMap->id2bl(sce->val2); if( src && bl && bl->type == BL_MOB ) { mob_log_damage((TBL_MOB*)bl,src,sd||hp<status->hp?hp:status->hp-1); } - map_freeblock_lock(); + iMap->freeblock_lock(); status_fix_damage(src, bl, sd||hp<status->hp?hp:status->hp-1, 1); if( sc->data[type] ) { if( status->hp == 1 ) { - map_freeblock_unlock(); + iMap->freeblock_unlock(); break; } sc_timer_next(10000 + tick, status_change_timer, bl->id, data); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } break; @@ -10007,7 +10007,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_BOSSMAPINFO: if( sd && --(sce->val4) >= 0 ) { - struct mob_data *boss_md = map_id2boss(sce->val1); + struct mob_data *boss_md = iMap->id2boss(sce->val1); if( boss_md && sd->bl.m == boss_md->bl.m ) { clif->bossmapinfo(sd->fd, boss_md, 1); // Update X - Y on minimap @@ -10114,7 +10114,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_MARIONETTE: case SC_MARIONETTE2: { - struct block_list *pbl = map_id2bl(sce->val1); + struct block_list *pbl = iMap->id2bl(sce->val1); if( pbl && check_distance_bl(bl, pbl, 7) ) { sc_timer_next(1000 + tick, status_change_timer, bl->id, data); @@ -10160,13 +10160,13 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_PYREXIA: if( --(sce->val4) >= 0 ) { - map_freeblock_lock(); + iMap->freeblock_lock(); clif->damage(bl,bl,tick,status_get_amotion(bl),status_get_dmotion(bl)+500,100,0,0,0); status_fix_damage(NULL,bl,100,0); if( sc->data[type] ) { sc_timer_next(3000+tick,status_change_timer,bl->id,data); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } break; @@ -10176,12 +10176,12 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) int damage = status->max_hp/100; // {Target VIT x (New Poison Research Skill Level - 3)} + (Target HP/100) damage += status->vit * (sce->val1 - 3); unit_skillcastcancel(bl,2); - map_freeblock_lock(); + iMap->freeblock_lock(); status_damage(bl, bl, damage, 0, clif->damage(bl,bl,tick,status_get_amotion(bl),status_get_dmotion(bl)+500,damage,1,0,0), 1); if( sc->data[type] ) { sc_timer_next(1000 + tick, status_change_timer, bl->id, data ); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } break; @@ -10194,10 +10194,10 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) damage = status->hp - 1; // Cannot Kill if( damage > 0 ) { // 3% Damage each 4 seconds - map_freeblock_lock(); + iMap->freeblock_lock(); status_zap(bl,damage,0); flag = !sc->data[type]; // Killed? Should not - map_freeblock_unlock(); + iMap->freeblock_unlock(); } if( !flag ) { // Random Skill Cast @@ -10234,13 +10234,13 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_TOXIN: if( --(sce->val4) >= 0 ) { //Damage is every 10 seconds including 3%sp drain. - map_freeblock_lock(); + iMap->freeblock_lock(); clif->damage(bl,bl,tick,status_get_amotion(bl),1,1,0,0,0); status_damage(NULL, bl, 1, status->max_sp * 3 / 100, 0, 0); //cancel dmg only if cancelable if( sc->data[type] ) { sc_timer_next(10000 + tick, status_change_timer, bl->id, data ); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } break; @@ -10285,17 +10285,17 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_BURNING: if( --(sce->val4) >= 0 ) { - struct block_list *src = map_id2bl(sce->val3); + struct block_list *src = iMap->id2bl(sce->val3); int damage = 1000 + 3 * status_get_max_hp(bl) / 100; // Deals fixed (1000 + 3%*MaxHP) - map_freeblock_lock(); + iMap->freeblock_lock(); clif->damage(bl,bl,tick,0,0,damage,1,9,0); //damage is like endure effect with no walk delay status_damage(src, bl, damage, 0, 0, 1); if( sc->data[type]){ // Target still lives. [LimitLine] sc_timer_next(2000 + tick, status_change_timer, bl->id, data); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } break; @@ -10394,18 +10394,18 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) break; case SC_BLOODSUCKER: if( --(sce->val4) >= 0 ) { - struct block_list *src = map_id2bl(sce->val2); + struct block_list *src = iMap->id2bl(sce->val2); int damage; if( !src || (src && (status_isdead(src) || src->m != bl->m || distance_bl(src, bl) >= 12)) ) break; - map_freeblock_lock(); + iMap->freeblock_lock(); damage = 200 + 100 * sce->val1 + status_get_int(src); status_damage(src, bl, damage, 0, clif->damage(bl,bl,tick,status->amotion,status->dmotion+200,damage,1,0,0), 1); unit_skillcastcancel(bl,1); if ( sc->data[type] ) { sc_timer_next(1000 + tick, status_change_timer, bl->id, data); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); status_heal(src, damage*(5 + 5 * sce->val1)/100, 0, 0); // 5 + 5% per level return 0; } @@ -10482,7 +10482,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) case SC_BANDING: if( status_charge(bl, 0, 7 - sce->val1) ) { - if( sd ) pc_banding(sd, sce->val1); + if( sd ) iPc->banding(sd, sce->val1); sc_timer_next(5000 + tick, status_change_timer, bl->id, data); return 0; } @@ -10507,12 +10507,12 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) { int damage = status->max_hp / 100; // Suggestion 1% each second if( damage >= status->hp ) damage = status->hp - 1; // Do not kill, just keep you with 1 hp minimum - map_freeblock_lock(); + iMap->freeblock_lock(); status_fix_damage(NULL,bl,damage,clif->damage(bl,bl,tick,0,0,damage,0,0,0)); if( sc->data[type] ) { sc_timer_next(1000 + tick, status_change_timer, bl->id, data); } - map_freeblock_unlock(); + iMap->freeblock_unlock(); } break; @@ -10527,7 +10527,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data) } else { - struct block_list *src = map_id2bl(sce->val2); + struct block_list *src = iMap->id2bl(sce->val2); struct status_change *ssc; if( !src || (ssc = status_get_sc(src)) == NULL || !ssc->data[SC_MAGNETICFIELD] ) break; // Source no more under Magnetic Field @@ -10846,7 +10846,7 @@ int status_change_spread( struct block_list *src, struct block_list *bl ) { if( !sc || !sc->count ) return 0; - tick = gettick(); + tick = iTimer->gettick(); for( i = SC_COMMON_MIN; i < SC_MAX; i++ ) { if( !sc->data[i] || i == SC_COMMON_MAX ) @@ -10879,7 +10879,7 @@ int status_change_spread( struct block_list *src, struct block_list *bl ) { case SC_DEATHHURT: case SC_PARALYSE: if( sc->data[i]->timer != INVALID_TIMER ) { - timer = get_timer(sc->data[i]->timer); + timer = iTimer->get_timer(sc->data[i]->timer); if (timer == NULL || timer->func != status_change_timer || DIFF_TICK(timer->tick,tick) < 0) continue; data.tick = DIFF_TICK(timer->tick,tick); @@ -10961,9 +10961,9 @@ static int status_natural_heal(struct block_list* bl, va_list args) if (sd) { if (sd->hp_loss.value || sd->sp_loss.value) - pc_bleeding(sd, natural_heal_diff_tick); + iPc->bleeding(sd, natural_heal_diff_tick); if (sd->hp_regen.value || sd->sp_regen.value) - pc_regen(sd, natural_heal_diff_tick); + iPc->regen(sd, natural_heal_diff_tick); } if(flag&(RGN_SHP|RGN_SSP) && regen->ssregen && @@ -11098,7 +11098,7 @@ static int status_natural_heal(struct block_list* bl, va_list args) if (sd && sd->state.doridori) { val*=2; sd->state.doridori = 0; - if ((rate = pc_checkskill(sd,TK_SPTIME))) + if ((rate = iPc->checkskill(sd,TK_SPTIME))) sc_start(bl,status_skill2sc(TK_SPTIME), 100,rate,skill->get_time(TK_SPTIME, rate)); if ( @@ -11106,8 +11106,8 @@ static int status_natural_heal(struct block_list* bl, va_list args) rnd()%10000 < battle_config.sg_angel_skill_ratio ) { //Angel of the Sun/Moon/Star clif->feel_hate_reset(sd); - pc_resethate(sd); - pc_resetfeel(sd); + iPc->resethate(sd); + iPc->resetfeel(sd); } } sregen->tick.sp -= battle_config.natural_heal_skill_interval; @@ -11122,7 +11122,7 @@ static int status_natural_heal(struct block_list* bl, va_list args) static int status_natural_heal_timer(int tid, unsigned int tick, int id, intptr_t data) { natural_heal_diff_tick = DIFF_TICK(tick,natural_heal_prev_tick); - map_foreachregen(status_natural_heal); + iMap->map_foreachregen(status_natural_heal); natural_heal_prev_tick = tick; return 0; } @@ -11161,7 +11161,7 @@ static bool status_readdb_job1(char* fields[], int columns, int current) ShowWarning("status_readdb_job1: Invalid job class %d specified.\n", class_); return false; } - idx = pc_class2idx(class_); + idx = iPc->class2idx(class_); max_weight_base[idx] = atoi(fields[1]); hp_coefficient[idx] = atoi(fields[2]); @@ -11189,7 +11189,7 @@ static bool status_readdb_job2(char* fields[], int columns, int current) ShowWarning("status_readdb_job2: Invalid job class %d specified.\n", class_); return false; } - idx = pc_class2idx(class_); + idx = iPc->class2idx(class_); for(i = 1; i < columns; i++) { @@ -11287,13 +11287,13 @@ int status_readdb(void) #ifdef RENEWAL_ASPD - sv->readdb(db_path, "re/job_db1.txt", ',', 6+MAX_WEAPON_TYPE, 6+MAX_WEAPON_TYPE, -1, &status_readdb_job1); + sv->readdb(iMap->db_path, "re/job_db1.txt", ',', 6+MAX_WEAPON_TYPE, 6+MAX_WEAPON_TYPE, -1, &status_readdb_job1); #else - sv->readdb(db_path, "pre-re/job_db1.txt", ',', 5+MAX_WEAPON_TYPE, 5+MAX_WEAPON_TYPE, -1, &status_readdb_job1); + sv->readdb(iMap->db_path, "pre-re/job_db1.txt", ',', 5+MAX_WEAPON_TYPE, 5+MAX_WEAPON_TYPE, -1, &status_readdb_job1); #endif - sv->readdb(db_path, "job_db2.txt", ',', 1, 1+MAX_LEVEL, -1, &status_readdb_job2); - sv->readdb(db_path, "size_fix.txt", ',', MAX_WEAPON_TYPE, MAX_WEAPON_TYPE, ARRAYLENGTH(atkmods), &status_readdb_sizefix); - sv->readdb(db_path, DBPATH"refine_db.txt", ',', 4+MAX_REFINE, 4+MAX_REFINE, ARRAYLENGTH(refine_info), &status_readdb_refine); + sv->readdb(iMap->db_path, "job_db2.txt", ',', 1, 1+MAX_LEVEL, -1, &status_readdb_job2); + sv->readdb(iMap->db_path, "size_fix.txt", ',', MAX_WEAPON_TYPE, MAX_WEAPON_TYPE, ARRAYLENGTH(atkmods), &status_readdb_sizefix); + sv->readdb(iMap->db_path, DBPATH"refine_db.txt", ',', 4+MAX_REFINE, 4+MAX_REFINE, ARRAYLENGTH(refine_info), &status_readdb_refine); return 0; } @@ -11303,16 +11303,16 @@ int status_readdb(void) *------------------------------------------*/ int do_init_status(void) { - add_timer_func_list(status_change_timer,"status_change_timer"); - add_timer_func_list(kaahi_heal_timer,"kaahi_heal_timer"); - add_timer_func_list(status_natural_heal_timer,"status_natural_heal_timer"); + iTimer->add_timer_func_list(status_change_timer,"status_change_timer"); + iTimer->add_timer_func_list(kaahi_heal_timer,"kaahi_heal_timer"); + iTimer->add_timer_func_list(status_natural_heal_timer,"status_natural_heal_timer"); initChangeTables(); initDummyData(); status_readdb(); status_calc_sigma(); - natural_heal_prev_tick = gettick(); + natural_heal_prev_tick = iTimer->gettick(); sc_data_ers = ers_new(sizeof(struct status_change_entry),"status.c::sc_data_ers",ERS_OPT_NONE); - add_timer_interval(natural_heal_prev_tick + NATURAL_HEAL_INTERVAL, status_natural_heal_timer, 0, 0, NATURAL_HEAL_INTERVAL); + iTimer->add_timer_interval(natural_heal_prev_tick + NATURAL_HEAL_INTERVAL, status_natural_heal_timer, 0, 0, NATURAL_HEAL_INTERVAL); return 0; } void do_final_status(void) diff --git a/src/map/storage.c b/src/map/storage.c index 01da53907..188534b61 100644 --- a/src/map/storage.c +++ b/src/map/storage.c @@ -73,7 +73,7 @@ void do_final_storage(void) // by [MC Cameri] */ static int storage_reconnect_sub(DBKey key, DBData *data, va_list ap) { - struct guild_storage *stor = DB->data2ptr(data); + struct guild_storage *stor = iDB->data2ptr(data); if (stor->dirty && stor->storage_status == 0) //Save closed storages. storage_guild_storagesave(0, stor->guild_id,0); @@ -98,7 +98,7 @@ int storage_storageopen(struct map_session_data *sd) if(sd->state.storage_flag) return 1; //Already open? - if( !pc_can_give_items(sd) ) + if( !iPc->can_give_items(sd) ) { //check is this GM level is allowed to put items to storage clif->message(sd->fd, msg_txt(246)); return 1; @@ -148,7 +148,7 @@ static int storage_additem(struct map_session_data* sd, struct item* item_data, return 1; } - if( !itemdb_canstore(item_data, pc_get_group_level(sd)) ) + if( !itemdb_canstore(item_data, iPc->get_group_level(sd)) ) { //Check if item is storable. [Skotlex] clif->message (sd->fd, msg_txt(264)); return 1; @@ -227,7 +227,7 @@ int storage_storageadd(struct map_session_data* sd, int index, int amount) return 0; if( storage_additem(sd,&sd->status.inventory[index],amount) == 0 ) - pc_delitem(sd,index,amount,0,4,LOG_TYPE_STORAGE); + iPc->delitem(sd,index,amount,0,4,LOG_TYPE_STORAGE); return 1; } @@ -252,7 +252,7 @@ int storage_storageget(struct map_session_data* sd, int index, int amount) if( amount < 1 || amount > sd->status.storage.items[index].amount ) return 0; - if( (flag = pc_additem(sd,&sd->status.storage.items[index],amount,LOG_TYPE_STORAGE)) == 0 ) + if( (flag = iPc->additem(sd,&sd->status.storage.items[index],amount,LOG_TYPE_STORAGE)) == 0 ) storage_delitem(sd,index,amount); else clif->additem(sd,0,0,flag); @@ -284,7 +284,7 @@ int storage_storageaddfromcart(struct map_session_data* sd, int index, int amoun return 0; if( storage_additem(sd,&sd->status.cart[index],amount) == 0 ) - pc_cart_delitem(sd,index,amount,0,LOG_TYPE_STORAGE); + iPc->cart_delitem(sd,index,amount,0,LOG_TYPE_STORAGE); return 1; } @@ -309,7 +309,7 @@ int storage_storagegettocart(struct map_session_data* sd, int index, int amount) if( amount < 1 || amount > sd->status.storage.items[index].amount ) return 0; - if( pc_cart_additem(sd,&sd->status.storage.items[index],amount,LOG_TYPE_STORAGE) == 0 ) + if( iPc->cart_additem(sd,&sd->status.storage.items[index],amount,LOG_TYPE_STORAGE) == 0 ) storage_delitem(sd,index,amount); return 1; @@ -325,7 +325,7 @@ void storage_storageclose(struct map_session_data* sd) clif->storageclose(sd); - if( save_settings&4 ) + if( iMap->save_settings&4 ) chrif_save(sd,0); //Invokes the storage saving as well. sd->state.storage_flag = 0; @@ -338,7 +338,7 @@ void storage_storage_quit(struct map_session_data* sd, int flag) { nullpo_retv(sd); - if (save_settings&4) + if (iMap->save_settings&4) chrif_save(sd, flag); //Invokes the storage saving as well. sd->state.storage_flag = 0; @@ -352,7 +352,7 @@ static DBData create_guildstorage(DBKey key, va_list args) struct guild_storage *gs = NULL; gs = (struct guild_storage *) aCalloc(sizeof(struct guild_storage), 1); gs->guild_id=key.i; - return DB->ptr2data(gs); + return iDB->ptr2data(gs); } struct guild_storage *guild2storage(int guild_id) @@ -394,7 +394,7 @@ int storage_guild_storageopen(struct map_session_data* sd) if(sd->state.storage_flag) return 1; //Can't open both storages at a time. - if( !pc_can_give_items(sd) ) { //check is this GM level can open guild storage and store items [Lupus] + if( !iPc->can_give_items(sd) ) { //check is this GM level can open guild storage and store items [Lupus] clif->message(sd->fd, msg_txt(246)); return 1; } @@ -442,7 +442,7 @@ int guild_storage_additem(struct map_session_data* sd, struct guild_storage* sto return 1; } - if( !itemdb_canguildstore(item_data, pc_get_group_level(sd)) || item_data->expire_time ) + if( !itemdb_canguildstore(item_data, iPc->get_group_level(sd)) || item_data->expire_time ) { //Check if item is storable. [Skotlex] clif->message (sd->fd, msg_txt(264)); return 1; @@ -532,7 +532,7 @@ int storage_guild_storageadd(struct map_session_data* sd, int index, int amount) } if(guild_storage_additem(sd,stor,&sd->status.inventory[index],amount)==0) - pc_delitem(sd,index,amount,0,4,LOG_TYPE_GSTORAGE); + iPc->delitem(sd,index,amount,0,4,LOG_TYPE_GSTORAGE); return 1; } @@ -569,7 +569,7 @@ int storage_guild_storageget(struct map_session_data* sd, int index, int amount) return 0; } - if((flag = pc_additem(sd,&stor->items[index],amount,LOG_TYPE_GSTORAGE)) == 0) + if((flag = iPc->additem(sd,&stor->items[index],amount,LOG_TYPE_GSTORAGE)) == 0) guild_storage_delitem(sd,stor,index,amount); else //inform fail clif->additem(sd,0,0,flag); @@ -605,7 +605,7 @@ int storage_guild_storageaddfromcart(struct map_session_data* sd, int index, int return 0; if(guild_storage_additem(sd,stor,&sd->status.cart[index],amount)==0) - pc_cart_delitem(sd,index,amount,0,LOG_TYPE_GSTORAGE); + iPc->cart_delitem(sd,index,amount,0,LOG_TYPE_GSTORAGE); return 1; } @@ -636,7 +636,7 @@ int storage_guild_storagegettocart(struct map_session_data* sd, int index, int a if(amount < 1 || amount > stor->items[index].amount) return 0; - if(pc_cart_additem(sd,&stor->items[index],amount,LOG_TYPE_GSTORAGE)==0) + if(iPc->cart_additem(sd,&stor->items[index],amount,LOG_TYPE_GSTORAGE)==0) guild_storage_delitem(sd,stor,index,amount); return 1; @@ -694,7 +694,7 @@ int storage_guild_storageclose(struct map_session_data* sd) clif->storageclose(sd); if (stor->storage_status) { - if (save_settings&4) + if (iMap->save_settings&4) chrif_save(sd, 0); //This one also saves the storage. [Skotlex] else storage_guild_storagesave(sd->status.account_id, sd->status.guild_id,0); @@ -717,13 +717,13 @@ int storage_guild_storage_quit(struct map_session_data* sd, int flag) sd->state.storage_flag = 0; stor->storage_status = 0; clif->storageclose(sd); - if (save_settings&4) + if (iMap->save_settings&4) chrif_save(sd,0); return 0; } if(stor->storage_status) { - if (save_settings&4) + if (iMap->save_settings&4) chrif_save(sd,0); else storage_guild_storagesave(sd->status.account_id,sd->status.guild_id,1); diff --git a/src/map/trade.c b/src/map/trade.c index 1417426e9..4f4cc7394 100644 --- a/src/map/trade.c +++ b/src/map/trade.c @@ -55,7 +55,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta } if ( sd->trade_partner != 0 ) { // If a character tries to trade to another one then cancel the previous one - struct map_session_data *previous_sd = map_id2sd(sd->trade_partner); + struct map_session_data *previous_sd = iMap->id2sd(sd->trade_partner); if( previous_sd ){ previous_sd->trade_partner = 0; clif->tradecancelled(previous_sd); @@ -69,7 +69,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta return; } - if (!pc_can_give_items(sd) || !pc_can_give_items(target_sd)) //check if both GMs are allowed to trade + if (!iPc->can_give_items(sd) || !iPc->can_give_items(target_sd)) //check if both GMs are allowed to trade { clif->message(sd->fd, msg_txt(246)); clif->tradestart(sd, 2); // GM is not allowed to trade @@ -77,7 +77,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta } // Players can not request trade from far away, unless they are allowed to use @trade. - if (!pc_can_use_command(sd, "@trade") && + if (!iPc->can_use_command(sd, "@trade") && (sd->bl.m != target_sd->bl.m || !check_distance_bl(&sd->bl, &target_sd->bl, TRADE_DISTANCE))) { clif->tradestart(sd, 0); // too far return ; @@ -107,7 +107,7 @@ void trade_tradeack(struct map_session_data *sd, int type) if (sd->state.trading || !sd->trade_partner) return; //Already trading or no partner set. - if ((tsd = map_id2sd(sd->trade_partner)) == NULL) { + if ((tsd = iMap->id2sd(sd->trade_partner)) == NULL) { clif->tradestart(sd, 1); // character does not exist sd->trade_partner=0; return; @@ -135,7 +135,7 @@ void trade_tradeack(struct map_session_data *sd, int type) // Players can not request trade from far away, unless they are allowed to use @trade. // Check here as well since the original character could had warped. - if (!pc_can_use_command(sd, "@trade") && + if (!iPc->can_use_command(sd, "@trade") && (sd->bl.m != tsd->bl.m || !check_distance_bl(&sd->bl, &tsd->bl, TRADE_DISTANCE))) { clif->tradestart(sd, 0); // too far sd->trade_partner=0; @@ -201,9 +201,9 @@ int impossible_trade_check(struct map_session_data *sd) if (inventory[index].amount < sd->deal.item[i].amount) { // if more than the player have -> hack sprintf(message_to_gm, msg_txt(538), sd->status.name, sd->status.account_id); // Hack on trade: character '%s' (account: %d) try to trade more items that he has. - intif_wis_message_to_gm(wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm); + intif_wis_message_to_gm(iMap->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm); sprintf(message_to_gm, msg_txt(539), inventory[index].amount, inventory[index].nameid, sd->deal.item[i].amount); // This player has %d of a kind of item (id: %d), and try to trade %d of them. - intif_wis_message_to_gm(wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm); + intif_wis_message_to_gm(iMap->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm); // if we block people if (battle_config.ban_hack_trade < 0) { chrif_char_ask_name(-1, sd->status.name, 1, 0, 0, 0, 0, 0, 0); // type: 1 - block @@ -220,7 +220,7 @@ int impossible_trade_check(struct map_session_data *sd) // message about the ban strcpy(message_to_gm, msg_txt(508)); // This player hasn't been banned (Ban option is disabled). - intif_wis_message_to_gm(wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm); + intif_wis_message_to_gm(iMap->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm); return 1; } inventory[index].amount -= sd->deal.item[i].amount; // remove item from inventory @@ -329,7 +329,7 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount) if( !sd->state.trading || sd->state.deal_locked > 0 ) return; //Can't add stuff. - if( (target_sd = map_id2sd(sd->trade_partner)) == NULL ) + if( (target_sd = iMap->id2sd(sd->trade_partner)) == NULL ) { trade_tradecancel(sd); return; @@ -350,10 +350,10 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount) return; item = &sd->status.inventory[index]; - src_lv = pc_get_group_level(sd); - dst_lv = pc_get_group_level(target_sd); + src_lv = iPc->get_group_level(sd); + dst_lv = iPc->get_group_level(target_sd); if( !itemdb_cantrade(item, src_lv, dst_lv) && //Can't trade - (pc_get_partner(sd) != target_sd || !itemdb_canpartnertrade(item, src_lv, dst_lv)) ) //Can't partner-trade + (iPc->get_partner(sd) != target_sd || !itemdb_canpartnertrade(item, src_lv, dst_lv)) ) //Can't partner-trade { clif->message (sd->fd, msg_txt(260)); clif->tradeitemok(sd, index+2, 1); @@ -413,7 +413,7 @@ void trade_tradeaddzeny(struct map_session_data* sd, int amount) if( !sd->state.trading || sd->state.deal_locked > 0 ) return; //Can't add stuff. - if( (target_sd = map_id2sd(sd->trade_partner)) == NULL ) + if( (target_sd = iMap->id2sd(sd->trade_partner)) == NULL ) { trade_tradecancel(sd); return; @@ -439,7 +439,7 @@ void trade_tradeok(struct map_session_data *sd) if(sd->state.deal_locked || !sd->state.trading) return; - if ((target_sd = map_id2sd(sd->trade_partner)) == NULL) { + if ((target_sd = iMap->id2sd(sd->trade_partner)) == NULL) { trade_tradecancel(sd); return; } @@ -457,7 +457,7 @@ void trade_tradecancel(struct map_session_data *sd) struct map_session_data *target_sd; int trade_i; - target_sd = map_id2sd(sd->trade_partner); + target_sd = iMap->id2sd(sd->trade_partner); if(!sd->state.trading) { // Not trade acepted @@ -520,7 +520,7 @@ void trade_tradecommit(struct map_session_data *sd) if (!sd->state.trading || !sd->state.deal_locked) //Locked should be 1 (pressed ok) before you can press trade. return; - if ((tsd = map_id2sd(sd->trade_partner)) == NULL) { + if ((tsd = iMap->id2sd(sd->trade_partner)) == NULL) { trade_tradecancel(sd); return; } @@ -555,9 +555,9 @@ void trade_tradecommit(struct map_session_data *sd) { n = sd->deal.item[trade_i].index; - flag = pc_additem(tsd, &sd->status.inventory[n], sd->deal.item[trade_i].amount,LOG_TYPE_TRADE); + flag = iPc->additem(tsd, &sd->status.inventory[n], sd->deal.item[trade_i].amount,LOG_TYPE_TRADE); if (flag == 0) - pc_delitem(sd, n, sd->deal.item[trade_i].amount, 1, 6, LOG_TYPE_TRADE); + iPc->delitem(sd, n, sd->deal.item[trade_i].amount, 1, 6, LOG_TYPE_TRADE); else clif->additem(sd, n, sd->deal.item[trade_i].amount, 0); sd->deal.item[trade_i].index = 0; @@ -567,9 +567,9 @@ void trade_tradecommit(struct map_session_data *sd) { n = tsd->deal.item[trade_i].index; - flag = pc_additem(sd, &tsd->status.inventory[n], tsd->deal.item[trade_i].amount,LOG_TYPE_TRADE); + flag = iPc->additem(sd, &tsd->status.inventory[n], tsd->deal.item[trade_i].amount,LOG_TYPE_TRADE); if (flag == 0) - pc_delitem(tsd, n, tsd->deal.item[trade_i].amount, 1, 6, LOG_TYPE_TRADE); + iPc->delitem(tsd, n, tsd->deal.item[trade_i].amount, 1, 6, LOG_TYPE_TRADE); else clif->additem(tsd, n, tsd->deal.item[trade_i].amount, 0); tsd->deal.item[trade_i].index = 0; @@ -578,14 +578,14 @@ void trade_tradecommit(struct map_session_data *sd) } if( sd->deal.zeny ) { - pc_payzeny(sd ,sd->deal.zeny, LOG_TYPE_TRADE, tsd); - pc_getzeny(tsd,sd->deal.zeny,LOG_TYPE_TRADE, sd); + iPc->payzeny(sd ,sd->deal.zeny, LOG_TYPE_TRADE, tsd); + iPc->getzeny(tsd,sd->deal.zeny,LOG_TYPE_TRADE, sd); sd->deal.zeny = 0; } if ( tsd->deal.zeny) { - pc_payzeny(tsd,tsd->deal.zeny,LOG_TYPE_TRADE, sd); - pc_getzeny(sd ,tsd->deal.zeny,LOG_TYPE_TRADE, tsd); + iPc->payzeny(tsd,tsd->deal.zeny,LOG_TYPE_TRADE, sd); + iPc->getzeny(sd ,tsd->deal.zeny,LOG_TYPE_TRADE, tsd); tsd->deal.zeny = 0; } @@ -601,7 +601,7 @@ void trade_tradecommit(struct map_session_data *sd) clif->tradecompleted(tsd, 0); // save both player to avoid crash: they always have no advantage/disadvantage between the 2 players - if (save_settings&1) + if (iMap->save_settings&1) { chrif_save(sd,0); chrif_save(tsd,0); diff --git a/src/map/unit.c b/src/map/unit.c index 3ab1008cb..a09776298 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -108,7 +108,7 @@ int unit_walktoxy_sub(struct block_list *bl) else i = status_get_speed(bl); if( i > 0) - ud->walktimer = add_timer(gettick()+i,unit_walktoxy_timer,bl->id,i); + ud->walktimer = iTimer->add_timer(iTimer->gettick()+i,unit_walktoxy_timer,bl->id,i); return 1; } @@ -123,7 +123,7 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data struct unit_data *ud; struct mercenary_data *mrd; - bl = map_id2bl(id); + bl = iMap->id2bl(id); if(bl == NULL) return 0; sd = BL_CAST(BL_PC, bl); @@ -154,29 +154,29 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data dx = dirx[(int)dir]; dy = diry[(int)dir]; - if(map_getcell(bl->m,x+dx,y+dy,CELL_CHKNOPASS)) + if(iMap->getcell(bl->m,x+dx,y+dy,CELL_CHKNOPASS)) return unit_walktoxy_sub(bl); //Refresh view for all those we lose sight - map_foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, sd?BL_ALL:BL_PC, bl); + iMap->foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, sd?BL_ALL:BL_PC, bl); x += dx; y += dy; - map_moveblock(bl, x, y, tick); + iMap->moveblock(bl, x, y, tick); ud->walk_count++; //walked cell counter, to be used for walk-triggered skills. [Skotlex] status_change_end(bl, SC_ROLLINGCUTTER, INVALID_TIMER); //If you move, you lose your counters. [malufett] if (bl->x != x || bl->y != y || ud->walktimer != INVALID_TIMER) - return 0; //map_moveblock has altered the object beyond what we expected (moved/warped it) + return 0; //iMap->moveblock has altered the object beyond what we expected (moved/warped it) ud->walktimer = -2; // arbitrary non-INVALID_TIMER value to make the clif code send walking packets - map_foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, sd?BL_ALL:BL_PC, bl); + iMap->foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, sd?BL_ALL:BL_PC, bl); ud->walktimer = INVALID_TIMER; if(sd) { if( sd->touching_id ) npc_touchnext_areanpc(sd,false); - if(map_getcell(bl->m,x,y,CELL_CHKNPC)) { + if(iMap->getcell(bl->m,x,y,CELL_CHKNPC)) { npc_touch_areanpc(sd,bl->m,x,y); if (bl->prev == NULL) //Script could have warped char, abort remaining of the function. return 0; @@ -188,9 +188,9 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data // mercenary should be warped after being 3 seconds too far from the master [greenbox] if (sd->md->masterteleport_timer == 0) { - sd->md->masterteleport_timer = gettick(); + sd->md->masterteleport_timer = iTimer->gettick(); } - else if (DIFF_TICK(gettick(), sd->md->masterteleport_timer) > 3000) + else if (DIFF_TICK(iTimer->gettick(), sd->md->masterteleport_timer) > 3000) { sd->md->masterteleport_timer = 0; unit_warp( &sd->md->bl, sd->bl.m, sd->bl.x, sd->bl.y, CLR_TELEPORT ); @@ -202,7 +202,7 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data sd->md->masterteleport_timer = 0; } } else if (md) { - if( map_getcell(bl->m,x,y,CELL_CHKNPC) ) { + if( iMap->getcell(bl->m,x,y,CELL_CHKNPC) ) { if( npc_touch_areanpc2(md) ) return 0; // Warped } else md->areanpc_id = 0; @@ -229,9 +229,9 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data // mercenary should be warped after being 3 seconds too far from the master [greenbox] if (mrd->masterteleport_timer == 0) { - mrd->masterteleport_timer = gettick(); + mrd->masterteleport_timer = iTimer->gettick(); } - else if (DIFF_TICK(gettick(), mrd->masterteleport_timer) > 3000) + else if (DIFF_TICK(iTimer->gettick(), mrd->masterteleport_timer) > 3000) { mrd->masterteleport_timer = 0; unit_warp( bl, mrd->master->bl.id, mrd->master->bl.x, mrd->master->bl.y, CLR_TELEPORT ); @@ -258,7 +258,7 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data i = status_get_speed(bl); if(i > 0) { - ud->walktimer = add_timer(tick+i,unit_walktoxy_timer,id,i); + ud->walktimer = iTimer->add_timer(tick+i,unit_walktoxy_timer,id,i); if( md && DIFF_TICK(tick,md->dmgtick) < 3000 )//not required not damaged recently clif->move(ud); } else if(ud->state.running) { @@ -268,7 +268,7 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data } else if (ud->target_to) { //Update target trajectory. - struct block_list *tbl = map_id2bl(ud->target_to); + struct block_list *tbl = iMap->id2bl(ud->target_to); if (!tbl || !status_check_visibility(bl, tbl)) { //Cancel chase. ud->to_x = bl->x; ud->to_y = bl->y; @@ -300,7 +300,7 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data static int unit_delay_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data) { - struct block_list *bl = map_id2bl(id); + struct block_list *bl = iMap->id2bl(id); if (!bl || bl->prev == NULL) return 0; @@ -333,10 +333,10 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag) if( (battle_config.max_walk_path < wpd.path_len) && (bl->type != BL_NPC) ) return 0; - if (flag&4 && DIFF_TICK(ud->canmove_tick, gettick()) > 0 && - DIFF_TICK(ud->canmove_tick, gettick()) < 2000) + if (flag&4 && DIFF_TICK(ud->canmove_tick, iTimer->gettick()) > 0 && + DIFF_TICK(ud->canmove_tick, iTimer->gettick()) < 2000) { // Delay walking command. [Skotlex] - add_timer(ud->canmove_tick+1, unit_delay_walktoxy_timer, bl->id, (x<<16)|(y&0xFFFF)); + iTimer->add_timer(ud->canmove_tick+1, unit_delay_walktoxy_timer, bl->id, (x<<16)|(y&0xFFFF)); return 1; } @@ -350,7 +350,7 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag) sc = status_get_sc(bl); if (sc && sc->data[SC_CONFUSION]) //Randomize the target position - map_random_dir(bl, &ud->to_x, &ud->to_y); + iMap->random_dir(bl, &ud->to_x, &ud->to_y); if(ud->walktimer != INVALID_TIMER) { // When you come to the center of the grid because the change of destination while you're walking right now @@ -360,7 +360,7 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag) } if(ud->attacktimer != INVALID_TIMER) { - delete_timer( ud->attacktimer, unit_attack_timer ); + iTimer->delete_timer( ud->attacktimer, unit_attack_timer ); ud->attacktimer = INVALID_TIMER; } @@ -378,13 +378,13 @@ static inline void set_mobstate(struct block_list* bl, int flag) static int unit_walktobl_sub(int tid, unsigned int tick, int id, intptr_t data) { - struct block_list *bl = map_id2bl(id); + struct block_list *bl = iMap->id2bl(id); struct unit_data *ud = bl?unit_bl2ud(bl):NULL; if (ud && ud->walktimer == INVALID_TIMER && ud->target == data) { if (DIFF_TICK(ud->canmove_tick, tick) > 0) //Keep waiting? - add_timer(ud->canmove_tick+1, unit_walktobl_sub, id, data); + iTimer->add_timer(ud->canmove_tick+1, unit_walktobl_sub, id, data); else if (unit_can_move(bl)) { if (unit_walktoxy_sub(bl)) @@ -425,7 +425,7 @@ int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int sc = status_get_sc(bl); if (sc && sc->data[SC_CONFUSION]) //Randomize the target position - map_random_dir(bl, &ud->to_x, &ud->to_y); + iMap->random_dir(bl, &ud->to_x, &ud->to_y); if(ud->walktimer != INVALID_TIMER) { ud->state.change_walk_target = 1; @@ -433,9 +433,9 @@ int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int return 1; } - if(DIFF_TICK(ud->canmove_tick, gettick()) > 0) + if(DIFF_TICK(ud->canmove_tick, iTimer->gettick()) > 0) { //Can't move, wait a bit before invoking the movement. - add_timer(ud->canmove_tick+1, unit_walktobl_sub, bl->id, ud->target); + iTimer->add_timer(ud->canmove_tick+1, unit_walktobl_sub, bl->id, ud->target); return 1; } @@ -443,7 +443,7 @@ int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int return 0; if(ud->attacktimer != INVALID_TIMER) { - delete_timer( ud->attacktimer, unit_attack_timer ); + iTimer->delete_timer( ud->attacktimer, unit_attack_timer ); ud->attacktimer = INVALID_TIMER; } @@ -478,11 +478,11 @@ int unit_run(struct block_list *bl) to_y = bl->y; for(i=0;i<AREA_SIZE;i++) { - if(!map_getcell(bl->m,to_x+dir_x,to_y+dir_y,CELL_CHKPASS)) + if(!iMap->getcell(bl->m,to_x+dir_x,to_y+dir_y,CELL_CHKPASS)) break; //if sprinting and there's a PC/Mob/NPC, block the path [Kevin] - if(sc->data[SC_RUN] && map_count_oncell(bl->m, to_x+dir_x, to_y+dir_y, BL_PC|BL_MOB|BL_NPC)) + if(sc->data[SC_RUN] && iMap->count_oncell(bl->m, to_x+dir_x, to_y+dir_y, BL_PC|BL_MOB|BL_NPC)) break; to_x += dir_x; @@ -550,10 +550,10 @@ int unit_wugdash(struct block_list *bl, struct map_session_data *sd) { to_y = bl->y; for(i=0;i<AREA_SIZE;i++) { - if(!map_getcell(bl->m,to_x+dir_x,to_y+dir_y,CELL_CHKPASS)) + if(!iMap->getcell(bl->m,to_x+dir_x,to_y+dir_y,CELL_CHKPASS)) break; - if(sc->data[SC_WUGDASH] && map_count_oncell(bl->m, to_x+dir_x, to_y+dir_y, BL_PC|BL_MOB|BL_NPC)) + if(sc->data[SC_WUGDASH] && iMap->count_oncell(bl->m, to_x+dir_x, to_y+dir_y, BL_PC|BL_MOB|BL_NPC)) break; to_x += dir_x; @@ -567,7 +567,7 @@ int unit_wugdash(struct block_list *bl, struct map_session_data *sd) { if( sd ){ clif->fixpos(bl); - skill->castend_damage_id(bl, &sd->bl, RA_WUGDASH, lv, gettick(), SD_LEVEL); + skill->castend_damage_id(bl, &sd->bl, RA_WUGDASH, lv, iTimer->gettick(), SD_LEVEL); } return 0; } @@ -584,7 +584,7 @@ int unit_wugdash(struct block_list *bl, struct map_session_data *sd) { if( sd ){ clif->fixpos(bl); - skill->castend_damage_id(bl, &sd->bl, RA_WUGDASH, lv, gettick(), SD_LEVEL); + skill->castend_damage_id(bl, &sd->bl, RA_WUGDASH, lv, iTimer->gettick(), SD_LEVEL); } return 0; } @@ -594,8 +594,8 @@ int unit_wugdash(struct block_list *bl, struct map_session_data *sd) { //Makes bl attempt to run dist cells away from target. Uses hard-paths. int unit_escape(struct block_list *bl, struct block_list *target, short dist) { - uint8 dir = map_calc_dir(target, bl->x, bl->y); - while( dist > 0 && map_getcell(bl->m, bl->x + dist*dirx[dir], bl->y + dist*diry[dir], CELL_CHKNOREACH) ) + uint8 dir = iMap->calc_dir(target, bl->x, bl->y); + while( dist > 0 && iMap->getcell(bl->m, bl->x + dist*dirx[dir], bl->y + dist*diry[dir], CELL_CHKNOREACH) ) dist--; return ( dist > 0 && unit_walktoxy(bl, bl->x + dist*dirx[dir], bl->y + dist*diry[dir], 0) ); } @@ -617,30 +617,30 @@ int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool unit_stop_walking(bl,1); unit_stop_attack(bl); - if( checkpath && (map_getcell(bl->m,dst_x,dst_y,CELL_CHKNOPASS) || !path_search(NULL,bl->m,bl->x,bl->y,dst_x,dst_y,easy,CELL_CHKNOREACH)) ) + if( checkpath && (iMap->getcell(bl->m,dst_x,dst_y,CELL_CHKNOPASS) || !path_search(NULL,bl->m,bl->x,bl->y,dst_x,dst_y,easy,CELL_CHKNOREACH)) ) return 0; // unreachable ud->to_x = dst_x; ud->to_y = dst_y; - dir = map_calc_dir(bl, dst_x, dst_y); + dir = iMap->calc_dir(bl, dst_x, dst_y); ud->dir = dir; dx = dst_x - bl->x; dy = dst_y - bl->y; - map_foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, sd?BL_ALL:BL_PC, bl); + iMap->foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, sd?BL_ALL:BL_PC, bl); - map_moveblock(bl, dst_x, dst_y, gettick()); + iMap->moveblock(bl, dst_x, dst_y, iTimer->gettick()); ud->walktimer = -2; // arbitrary non-INVALID_TIMER value to make the clif code send walking packets - map_foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, sd?BL_ALL:BL_PC, bl); + iMap->foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, sd?BL_ALL:BL_PC, bl); ud->walktimer = INVALID_TIMER; if(sd) { if( sd->touching_id ) npc_touchnext_areanpc(sd,false); - if(map_getcell(bl->m,bl->x,bl->y,CELL_CHKNPC)) { + if(iMap->getcell(bl->m,bl->x,bl->y,CELL_CHKNPC)) { npc_touch_areanpc(sd,bl->m,bl->x,bl->y); if (bl->prev == NULL) //Script could have warped char, abort remaining of the function. return 0; @@ -721,15 +721,15 @@ int unit_blown(struct block_list* bl, int dx, int dy, int count, int flag) dy = ny-bl->y; if(dx || dy) { - map_foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, bl->type == BL_PC ? BL_ALL : BL_PC, bl); + iMap->foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, bl->type == BL_PC ? BL_ALL : BL_PC, bl); if(su) { skill->unit_move_unit_group(su->group, bl->m, dx, dy); } else { - map_moveblock(bl, nx, ny, gettick()); + iMap->moveblock(bl, nx, ny, iTimer->gettick()); } - map_foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, bl->type == BL_PC ? BL_ALL : BL_PC, bl); + iMap->foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, bl->type == BL_PC ? BL_ALL : BL_PC, bl); if(!(flag&1)) { clif->blown(bl); @@ -739,7 +739,7 @@ int unit_blown(struct block_list* bl, int dx, int dy, int count, int flag) if(sd->touching_id) { npc_touchnext_areanpc(sd, false); } - if(map_getcell(bl->m, bl->x, bl->y, CELL_CHKNPC)) { + if(iMap->getcell(bl->m, bl->x, bl->y, CELL_CHKNPC)) { npc_touch_areanpc(sd, bl->m, bl->x, bl->y); } else { sd->areanpc_id = 0; @@ -754,7 +754,7 @@ int unit_blown(struct block_list* bl, int dx, int dy, int count, int flag) } //Warps a unit/ud to a given map/position. -//In the case of players, pc_setpos is used. +//In the case of players, iPc->setpos is used. //it respects the no warp flags, so it is safe to call this without doing nowarpto/nowarp checks. int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type) { @@ -787,16 +787,16 @@ int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type) if (x<0 || y<0) { //Random map position. - if (!map_search_freecell(NULL, m, &x, &y, -1, -1, 1)) { + if (!iMap->search_freecell(NULL, m, &x, &y, -1, -1, 1)) { ShowWarning("unit_warp failed. Unit Id:%d/Type:%d, target position map %d (%s) at [%d,%d]\n", bl->id, bl->type, m, map[m].name, x, y); return 2; } - } else if (map_getcell(m,x,y,CELL_CHKNOREACH)) + } else if (iMap->getcell(m,x,y,CELL_CHKNOREACH)) { //Invalid target cell ShowWarning("unit_warp: Specified non-walkable target cell: %d (%s) at [%d,%d]\n", m, map[m].name, x,y); - if (!map_search_freecell(NULL, m, &x, &y, 4, 4, 1)) + if (!iMap->search_freecell(NULL, m, &x, &y, 4, 4, 1)) { //Can't find a nearby cell ShowWarning("unit_warp failed. Unit Id:%d/Type:%d, target position map %d (%s) at [%d,%d]\n", bl->id, bl->type, m, map[m].name, x, y); return 2; @@ -804,7 +804,7 @@ int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type) } if (bl->type == BL_PC) //Use pc_setpos - return pc_setpos((TBL_PC*)bl, map_id2index(m), x, y, type); + return iPc->setpos((TBL_PC*)bl, map_id2index(m), x, y, type); if (!unit_remove_map(bl, type)) return 3; @@ -817,9 +817,9 @@ int unit_warp(struct block_list *bl,short m,short x,short y,clr_type type) bl->y=ud->to_y=y; bl->m=m; - map_addblock(bl); + iMap->addblock(bl); clif->spawn(bl); - skill->unit_move(bl,gettick(),1); + skill->unit_move(bl,iTimer->gettick(),1); return 0; } @@ -843,13 +843,13 @@ int unit_stop_walking(struct block_list *bl,int type) if(!ud || ud->walktimer == INVALID_TIMER) return 0; //NOTE: We are using timer data after deleting it because we know the - //delete_timer function does not messes with it. If the function's + //iTimer->delete_timer function does not messes with it. If the function's //behaviour changes in the future, this code could break! - td = get_timer(ud->walktimer); - delete_timer(ud->walktimer, unit_walktoxy_timer); + td = iTimer->get_timer(ud->walktimer); + iTimer->delete_timer(ud->walktimer, unit_walktoxy_timer); ud->walktimer = INVALID_TIMER; ud->state.change_walk_target = 0; - tick = gettick(); + tick = iTimer->gettick(); if( (type&0x02 && !ud->walkpath.path_pos) //Force moving at least one cell. || (type&0x04 && td && DIFF_TICK(td->tick, tick) <= td->data/2) //Enough time has passed to cover half-cell ) { @@ -865,7 +865,7 @@ int unit_stop_walking(struct block_list *bl,int type) ud->to_x = bl->x; ud->to_y = bl->y; if(bl->type == BL_PET && type&~0xff) - ud->canmove_tick = gettick() + (type>>8); + ud->canmove_tick = iTimer->gettick() + (type>>8); //Readded, the check in unit_set_walkdelay means dmg during running won't fall through to this place in code [Kevin] if (ud->state.running) { @@ -908,10 +908,10 @@ int unit_can_move(struct block_list *bl) { if (!ud) return 0; - if (ud->skilltimer != INVALID_TIMER && ud->skill_id != LG_EXEEDBREAK && (!sd || !pc_checkskill(sd, SA_FREECAST) || skill->get_inf2(ud->skill_id)&INF2_GUILD_SKILL)) + if (ud->skilltimer != INVALID_TIMER && ud->skill_id != LG_EXEEDBREAK && (!sd || !iPc->checkskill(sd, SA_FREECAST) || skill->get_inf2(ud->skill_id)&INF2_GUILD_SKILL)) return 0; // prevent moving while casting - if (DIFF_TICK(ud->canmove_tick, gettick()) > 0) + if (DIFF_TICK(ud->canmove_tick, iTimer->gettick()) > 0) return 0; if (sd && ( @@ -968,7 +968,7 @@ int unit_can_move(struct block_list *bl) { if (sc->opt1 > 0 && sc->opt1 != OPT1_STONEWAIT && sc->opt1 != OPT1_BURNING && !(sc->opt1 == OPT1_CRYSTALIZE && bl->type == BL_MOB)) return 0; - if ((sc->option & OPTION_HIDE) && (!sd || pc_checkskill(sd, RG_TUNNELDRIVE) <= 0)) + if ((sc->option & OPTION_HIDE) && (!sd || iPc->checkskill(sd, RG_TUNNELDRIVE) <= 0)) return 0; } @@ -983,7 +983,7 @@ int unit_resume_running(int tid, unsigned int tick, int id, intptr_t data) { struct unit_data *ud = (struct unit_data *)data; - TBL_PC * sd = map_id2sd(id); + TBL_PC * sd = iMap->id2sd(id); if(sd && pc_isridingwug(sd)) clif->skill_nodamage(ud->bl,ud->bl,RA_WUGDASH,ud->skill_lv, @@ -1033,13 +1033,13 @@ int unit_set_walkdelay(struct block_list *bl, unsigned int tick, int delay, int //Resume running after can move again [Kevin] if(ud->state.running) { - add_timer(ud->canmove_tick, unit_resume_running, bl->id, (intptr_t)ud); + iTimer->add_timer(ud->canmove_tick, unit_resume_running, bl->id, (intptr_t)ud); } else { unit_stop_walking(bl,2|4); if(ud->target) - add_timer(ud->canmove_tick+1, unit_walktobl_sub, bl->id, ud->target); + iTimer->add_timer(ud->canmove_tick+1, unit_walktobl_sub, bl->id, ud->target); } } } @@ -1053,7 +1053,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui struct status_change *sc; struct map_session_data *sd = NULL; struct block_list * target = NULL; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); int temp = 0, range; nullpo_ret(src); @@ -1095,7 +1095,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui switch(skill_id) { //Check for skills that auto-select target case MO_CHAINCOMBO: if (sc && sc->data[SC_BLADESTOP]){ - if ((target=map_id2bl(sc->data[SC_BLADESTOP]->val4)) == NULL) + if ((target=iMap->id2bl(sc->data[SC_BLADESTOP]->val4)) == NULL) return 0; } break; @@ -1103,7 +1103,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui case WE_FEMALE: if (!sd->status.partner_id) return 0; - target = (struct block_list*)map_charid2sd(sd->status.partner_id); + target = (struct block_list*)iMap->charid2sd(sd->status.partner_id); if (!target) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; @@ -1126,7 +1126,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui } if( !target ) // choose default target - target = map_id2bl(target_id); + target = iMap->id2bl(target_id); if( !target || src->m != target->m || !src->prev || !target->prev ) return 0; @@ -1162,7 +1162,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui break; case BD_ENCORE: //Prevent using the dance skill if you no longer have the skill in your tree. - if(!sd->skill_id_dance || pc_checkskill(sd,sd->skill_id_dance)<=0){ + if(!sd->skill_id_dance || iPc->checkskill(sd,sd->skill_id_dance)<=0){ clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; } @@ -1277,7 +1277,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui } break; case GD_EMERGENCYCALL: //Emergency Call double cast when the user has learned Leap [Daegaladh] - if( sd && pc_checkskill(sd,TK_HIGHJUMP) ) + if( sd && iPc->checkskill(sd,TK_HIGHJUMP) ) casttime *= 2; break; case RA_WUGDASH: @@ -1385,8 +1385,8 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui if( casttime > 0 ) { - ud->skilltimer = add_timer( tick+casttime, skill->castend_id, src->id, 0 ); - if( sd && (pc_checkskill(sd,SA_FREECAST) > 0 || skill_id == LG_EXEEDBREAK) ) + ud->skilltimer = iTimer->add_timer( tick+casttime, skill->castend_id, src->id, 0 ); + if( sd && (iPc->checkskill(sd,SA_FREECAST) > 0 || skill_id == LG_EXEEDBREAK) ) status_calc_bl(&sd->bl, SCB_SPEED); } else skill->castend_id(ud->skilltimer,tick,src->id,0); @@ -1409,7 +1409,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui struct unit_data *ud = NULL; struct status_change *sc; struct block_list bl; - unsigned int tick = gettick(); + unsigned int tick = iTimer->gettick(); int range; nullpo_ret(src); @@ -1436,7 +1436,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui * "WHY IS IT HEREE": pneuma cannot be cancelled past this point, the client displays the animation even, * if we cancel it from nodamage_id, so it has to be here for it to not display the animation. **/ - if( skill_id == AL_PNEUMA && map_getcell(src->m, skill_x, skill_y, CELL_CHKLANDPROTECTOR) ) { + if( skill_id == AL_PNEUMA && iMap->getcell(src->m, skill_x, skill_y, CELL_CHKLANDPROTECTOR) ) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; } @@ -1445,7 +1445,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui if (!status_check_skilluse(src, NULL, skill_id, 0)) return 0; - if( map_getcell(src->m, skill_x, skill_y, CELL_CHKWALL) ) + if( iMap->getcell(src->m, skill_x, skill_y, CELL_CHKWALL) ) {// can't cast ground targeted spells on wall cells if (sd) clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 0; @@ -1516,8 +1516,8 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui // in official this is triggered even if no cast time. clif->skillcasting(src, src->id, 0, skill_x, skill_y, skill_id, skill->get_ele(skill_id, skill_lv), casttime); if( casttime > 0 ) { - ud->skilltimer = add_timer( tick+casttime, skill->castend_pos, src->id, 0 ); - if( (sd && pc_checkskill(sd,SA_FREECAST) > 0) || skill_id == LG_EXEEDBREAK) + ud->skilltimer = iTimer->add_timer( tick+casttime, skill->castend_pos, src->id, 0 ); + if( (sd && iPc->checkskill(sd,SA_FREECAST) > 0) || skill_id == LG_EXEEDBREAK) status_calc_bl(&sd->bl, SCB_SPEED); } else { ud->skilltimer = INVALID_TIMER; @@ -1537,9 +1537,9 @@ int unit_set_target(struct unit_data* ud, int target_id) nullpo_ret(ud); if( ud->target != target_id ) { - if( ud->target && (target = map_id2bl(ud->target)) && (ux = unit_bl2ud(target)) && ux->target_count > 0 ) + if( ud->target && (target = iMap->id2bl(ud->target)) && (ux = unit_bl2ud(target)) && ux->target_count > 0 ) ux->target_count --; - if( target_id && (target = map_id2bl(target_id)) && (ux = unit_bl2ud(target)) ) + if( target_id && (target = iMap->id2bl(target_id)) && (ux = unit_bl2ud(target)) ) ux->target_count ++; } @@ -1555,7 +1555,7 @@ int unit_stop_attack(struct block_list *bl) if(!ud || ud->attacktimer == INVALID_TIMER) return 0; - delete_timer( ud->attacktimer, unit_attack_timer ); + iTimer->delete_timer( ud->attacktimer, unit_attack_timer ); ud->attacktimer = INVALID_TIMER; unit_set_target(ud, 0); return 0; @@ -1571,7 +1571,7 @@ int unit_unattackable(struct block_list *bl) } if(bl->type == BL_MOB) - mob_unlocktarget((struct mob_data*)bl, gettick()) ; + mob_unlocktarget((struct mob_data*)bl, iTimer->gettick()) ; else if(bl->type == BL_PET) pet_unlocktarget((struct pet_data*)bl); return 0; @@ -1588,7 +1588,7 @@ int unit_attack(struct block_list *src,int target_id,int continuous) nullpo_ret(ud = unit_bl2ud(src)); - target = map_id2bl(target_id); + target = iMap->id2bl(target_id); if( target==NULL || status_isdead(target) ) { unit_unattackable(src); return 1; @@ -1623,11 +1623,11 @@ int unit_attack(struct block_list *src,int target_id,int continuous) if(src->type == BL_MOB) ((TBL_MOB*)src)->state.skillstate = ((TBL_MOB*)src)->state.aggressive?MSS_ANGRY:MSS_BERSERK; - if(DIFF_TICK(ud->attackabletime, gettick()) > 0) + if(DIFF_TICK(ud->attackabletime, iTimer->gettick()) > 0) //Do attack next time it is possible. [Skotlex] - ud->attacktimer=add_timer(ud->attackabletime,unit_attack_timer,src->id,0); + ud->attacktimer=iTimer->add_timer(ud->attackabletime,unit_attack_timer,src->id,0); else //Attack NOW. - unit_attack_timer(INVALID_TIMER, gettick(), src->id, 0); + unit_attack_timer(INVALID_TIMER, iTimer->gettick(), src->id, 0); return 0; } @@ -1644,13 +1644,13 @@ int unit_cancel_combo(struct block_list *bl) ud = unit_bl2ud(bl); nullpo_ret(ud); - ud->attackabletime = gettick() + status_get_amotion(bl); + ud->attackabletime = iTimer->gettick() + status_get_amotion(bl); if (ud->attacktimer == INVALID_TIMER) return 1; //Nothing more to do. - delete_timer(ud->attacktimer, unit_attack_timer); - ud->attacktimer=add_timer(ud->attackabletime,unit_attack_timer,bl->id,0); + iTimer->delete_timer(ud->attacktimer, unit_attack_timer); + ud->attacktimer=iTimer->add_timer(ud->attackabletime,unit_attack_timer,bl->id,0); return 1; } /*========================================== @@ -1691,9 +1691,9 @@ bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range, dx=(dx>0)?1:((dx<0)?-1:0); dy=(dy>0)?1:((dy<0)?-1:0); - if (map_getcell(tbl->m,tbl->x-dx,tbl->y-dy,CELL_CHKNOPASS)) + if (iMap->getcell(tbl->m,tbl->x-dx,tbl->y-dy,CELL_CHKNOPASS)) { //Look for a suitable cell to place in. - for(i=0;i<9 && map_getcell(tbl->m,tbl->x-dirx[i],tbl->y-diry[i],CELL_CHKNOPASS);i++); + for(i=0;i<9 && iMap->getcell(tbl->m,tbl->x-dirx[i],tbl->y-diry[i],CELL_CHKNOPASS);i++); if (i==9) return false; //No valid cells. dx = dirx[i]; dy = diry[i]; @@ -1784,7 +1784,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t sd = BL_CAST(BL_PC, src); md = BL_CAST(BL_MOB, src); ud->attacktimer = INVALID_TIMER; - target=map_id2bl(ud->target); + target=iMap->id2bl(ud->target); if( src == NULL || src->prev == NULL || target==NULL || target->prev == NULL ) return 0; @@ -1804,10 +1804,10 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t return 0; } - if( ud->skilltimer != INVALID_TIMER && !(sd && pc_checkskill(sd,SA_FREECAST) > 0) ) + if( ud->skilltimer != INVALID_TIMER && !(sd && iPc->checkskill(sd,SA_FREECAST) > 0) ) return 0; // can't attack while casting - if( !battle_config.sdelay_attack_enable && DIFF_TICK(ud->canact_tick,tick) > 0 && !(sd && pc_checkskill(sd,SA_FREECAST) > 0) ) + if( !battle_config.sdelay_attack_enable && DIFF_TICK(ud->canact_tick,tick) > 0 && !(sd && iPc->checkskill(sd,SA_FREECAST) > 0) ) { // attacking when under cast delay has restrictions: if( tid == INVALID_TIMER ) { //requested attack. @@ -1819,7 +1819,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t { if( DIFF_TICK(ud->canact_tick, ud->attackabletime) > 0 ) ud->attackabletime = ud->canact_tick; - ud->attacktimer=add_timer(ud->attackabletime,unit_attack_timer,src->id,0); + ud->attacktimer=iTimer->add_timer(ud->attackabletime,unit_attack_timer,src->id,0); } return 1; } @@ -1851,7 +1851,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t if( DIFF_TICK(ud->attackabletime,tick) <= 0 ) { if (battle_config.attack_direction_change && (src->type&battle_config.attack_direction_change)) { - ud->dir = map_calc_dir(src, target->x,target->y ); + ud->dir = iMap->calc_dir(src, target->x,target->y ); } if(ud->walktimer != INVALID_TIMER) unit_stop_walking(src,1); @@ -1861,18 +1861,18 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t if (sstatus->mode&MD_ASSIST && DIFF_TICK(md->last_linktime, tick) < MIN_MOBLINKTIME) { // Link monsters nearby [Skotlex] md->last_linktime = tick; - map_foreachinrange(mob_linksearch, src, md->db->range2, BL_MOB, md->class_, target, tick); + iMap->foreachinrange(mob_linksearch, src, md->db->range2, BL_MOB, md->class_, target, tick); } } if(src->type == BL_PET && pet_attackskill((TBL_PET*)src, target->id)) return 1; - map_freeblock_lock(); + iMap->freeblock_lock(); ud->attacktarget_lv = battle->weapon_attack(src,target,tick,0); if(sd && sd->status.pet_id > 0 && sd->pd && battle_config.pet_attack_support) pet_target_check(sd,target,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); /** * Applied when you're unable to attack (e.g. out of ammo) * We should stop here otherwise timer keeps on and this happens endlessly @@ -1887,7 +1887,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t } if(ud->state.attack_continue) - ud->attacktimer = add_timer(ud->attackabletime,unit_attack_timer,src->id,0); + ud->attacktimer = iTimer->add_timer(ud->attackabletime,unit_attack_timer,src->id,0); return 1; } @@ -1895,7 +1895,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t static int unit_attack_timer(int tid, unsigned int tick, int id, intptr_t data) { struct block_list *bl; - bl = map_id2bl(id); + bl = iMap->id2bl(id); if(bl && unit_attack_timer_sub(bl, tid, tick) == 0) unit_unattackable(bl); return 0; @@ -1910,7 +1910,7 @@ int unit_skillcastcancel(struct block_list *bl,int type) { struct map_session_data *sd = NULL; struct unit_data *ud = unit_bl2ud( bl); - unsigned int tick=gettick(); + unsigned int tick=iTimer->gettick(); int ret=0, skill_id; nullpo_ret(bl); @@ -1937,15 +1937,15 @@ int unit_skillcastcancel(struct block_list *bl,int type) skill_id = ud->skill_id; if (skill->get_inf(skill_id) & INF_GROUND_SKILL) - ret = delete_timer( ud->skilltimer, skill->castend_pos ); + ret = iTimer->delete_timer( ud->skilltimer, skill->castend_pos ); else - ret = delete_timer( ud->skilltimer, skill->castend_id ); + ret = iTimer->delete_timer( ud->skilltimer, skill->castend_id ); if( ret < 0 ) ShowError("delete timer error : skill_id : %d\n",ret); ud->skilltimer = INVALID_TIMER; - if( sd && pc_checkskill(sd,SA_FREECAST) > 0 ) + if( sd && iPc->checkskill(sd,SA_FREECAST) > 0 ) status_calc_bl(&sd->bl, SCB_SPEED); if( sd ) { @@ -1974,7 +1974,7 @@ void unit_dataset(struct block_list *bl) { ud->attacktimer = INVALID_TIMER; ud->attackabletime = ud->canact_tick = - ud->canmove_tick = gettick(); + ud->canmove_tick = iTimer->gettick(); } /*========================================== @@ -2037,7 +2037,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, if(bl->prev == NULL) return 0; //Already removed? - map_freeblock_lock(); + iMap->freeblock_lock(); unit_set_target(ud, 0); @@ -2049,7 +2049,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, unit_skillcastcancel(bl,0); // Do not reset can-act delay. [Skotlex] - ud->attackabletime = ud->canmove_tick /*= ud->canact_tick*/ = gettick(); + ud->attackabletime = ud->canmove_tick /*= ud->canact_tick*/ = iTimer->gettick(); if(sc && sc->count ) { //map-change/warp dispells. status_change_end(bl, SC_BLADESTOP, INVALID_TIMER); status_change_end(bl, SC_BASILICA, INVALID_TIMER); @@ -2085,7 +2085,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, } if (bl->type&(BL_CHAR|BL_PET)) { - skill->unit_move(bl,gettick(),4); + skill->unit_move(bl,iTimer->gettick(),4); skill->cleartimerskill(bl); } @@ -2094,7 +2094,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, struct map_session_data *sd = (struct map_session_data*)bl; if(sd->shadowform_id){ - struct block_list *d_bl = map_id2bl(sd->shadowform_id); + struct block_list *d_bl = iMap->id2bl(sd->shadowform_id); if( d_bl ) status_change_end(d_bl,SC__SHADOWFORM,INVALID_TIMER); } @@ -2111,7 +2111,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, storage_guild_storage_quit(sd,0); sd->state.storage_flag = 0; //Force close it when being warped. if(sd->party_invite>0) - party_reply_invite(sd,sd->party_invite,0); + iParty->reply_invite(sd,sd->party_invite,0); if(sd->guild_invite>0) guild->reply_invite(sd,sd->guild_invite,0); if(sd->guild_alliance>0) @@ -2131,7 +2131,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, sd->adopt_invite = 0; if(sd->pvp_timer != INVALID_TIMER) { - delete_timer(sd->pvp_timer,pc_calc_pvprank_timer); + iTimer->delete_timer(sd->pvp_timer,iPc->calc_pvprank_timer); sd->pvp_timer = INVALID_TIMER; sd->pvp_rank = 0; } @@ -2139,10 +2139,10 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, duel_leave(sd->duel_group, sd); if(pc_issit(sd)) { - pc_setstand(sd); + iPc->setstand(sd); skill->sit(sd,0); } - party_send_dot_remove(sd);//minimap dot fix [Kevin] + iParty->send_dot_remove(sd);//minimap dot fix [Kevin] guild->send_dot_remove(sd); bg_send_dot_remove(sd); @@ -2164,7 +2164,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, map[bl->m].name, map[bl->m].users, sd->debug_file, sd->debug_line, sd->debug_func, file, line, func); } else if (--map[bl->m].users == 0 && battle_config.dynamic_mobs) //[Skotlex] - map_removemobs(bl->m); + iMap->removemobs(bl->m); if( !(sd->sc.option&OPTION_INVISIBLE) ) {// decrement the number of active pvp players on the map --map[bl->m].users_pvp; @@ -2196,9 +2196,9 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, if( pd->pet.intimate <= 0 && !(pd->msd && !pd->msd->state.active) ) { //If logging out, this is deleted on unit_free clif->clearunit_area(bl,clrtype); - map_delblock(bl); + iMap->delblock(bl); unit_free(bl,CLR_OUTSIGHT); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } @@ -2211,9 +2211,9 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, { //If logging out, this is deleted on unit_free clif->emotion(bl, E_SOB); clif->clearunit_area(bl,clrtype); - map_delblock(bl); + iMap->delblock(bl); unit_free(bl,CLR_OUTSIGHT); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } break; @@ -2224,9 +2224,9 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, if( mercenary_get_lifetime(md) <= 0 && !(md->master && !md->master->state.active) ) { clif->clearunit_area(bl,clrtype); - map_delblock(bl); + iMap->delblock(bl); unit_free(bl,CLR_OUTSIGHT); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } break; @@ -2237,9 +2237,9 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, if( elemental_get_lifetime(ed) <= 0 && !(ed->master && !ed->master->state.active) ) { clif->clearunit_area(bl,clrtype); - map_delblock(bl); + iMap->delblock(bl); unit_free(bl,0); - map_freeblock_unlock(); + iMap->freeblock_unlock(); return 0; } break; @@ -2251,8 +2251,8 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file, **/ if( bl->type != BL_MOB || !status_isdead(bl) ) clif->clearunit_area(bl,clrtype); - map_delblock(bl); - map_freeblock_unlock(); + iMap->delblock(bl); + iMap->freeblock_unlock(); return 1; } @@ -2290,7 +2290,7 @@ int unit_free(struct block_list *bl, clr_type clrtype) struct unit_data *ud = unit_bl2ud( bl ); nullpo_ret(ud); - map_freeblock_lock(); + iMap->freeblock_lock(); if( bl->prev ) //Players are supposed to logout with a "warp" effect. unit_remove_map(bl, clrtype); @@ -2301,28 +2301,28 @@ int unit_free(struct block_list *bl, clr_type clrtype) int i; if( status_isdead(bl) ) - pc_setrestartvalue(sd,2); + iPc->setrestartvalue(sd,2); - pc_delinvincibletimer(sd); - pc_delautobonus(sd,sd->autobonus,ARRAYLENGTH(sd->autobonus),false); - pc_delautobonus(sd,sd->autobonus2,ARRAYLENGTH(sd->autobonus2),false); - pc_delautobonus(sd,sd->autobonus3,ARRAYLENGTH(sd->autobonus3),false); + iPc->delinvincibletimer(sd); + iPc->delautobonus(sd,sd->autobonus,ARRAYLENGTH(sd->autobonus),false); + iPc->delautobonus(sd,sd->autobonus2,ARRAYLENGTH(sd->autobonus2),false); + iPc->delautobonus(sd,sd->autobonus3,ARRAYLENGTH(sd->autobonus3),false); if( sd->followtimer != INVALID_TIMER ) - pc_stop_following(sd); + iPc->stop_following(sd); if( sd->duel_invite > 0 ) duel_reject(sd->duel_invite, sd); // Notify friends that this char logged out. [Skotlex] - map_foreachpc(clif->friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0); - party_send_logout(sd); + iMap->map_foreachpc(clif->friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0); + iParty->send_logout(sd); guild->send_memberinfoshort(sd,0); - pc_cleareventtimer(sd); - pc_inventory_rental_clear(sd); - pc_delspiritball(sd,sd->spiritball,1); + iPc->cleareventtimer(sd); + iPc->inventory_rental_clear(sd); + iPc->delspiritball(sd,sd->spiritball,1); for(i = 1; i < 5; i++) - pc_del_talisman(sd, sd->talisman[i], i); + iPc->del_talisman(sd, sd->talisman[i], i); if( sd->reg ) { //Double logout already freed pointer fix... [Skotlex] aFree(sd->reg); @@ -2382,9 +2382,9 @@ int unit_free(struct block_list *bl, clr_type clrtype) { if (pd->s_skill->timer != INVALID_TIMER) { if (pd->s_skill->id) - delete_timer(pd->s_skill->timer, pet_skill_support_timer); + iTimer->delete_timer(pd->s_skill->timer, pet_skill_support_timer); else - delete_timer(pd->s_skill->timer, pet_heal_timer); + iTimer->delete_timer(pd->s_skill->timer, pet_heal_timer); } aFree(pd->s_skill); pd->s_skill = NULL; @@ -2392,14 +2392,14 @@ int unit_free(struct block_list *bl, clr_type clrtype) if( pd->recovery ) { if(pd->recovery->timer != INVALID_TIMER) - delete_timer(pd->recovery->timer, pet_recovery_timer); + iTimer->delete_timer(pd->recovery->timer, pet_recovery_timer); aFree(pd->recovery); pd->recovery = NULL; } if( pd->bonus ) { if (pd->bonus->timer != INVALID_TIMER) - delete_timer(pd->bonus->timer, pet_skill_bonus_timer); + iTimer->delete_timer(pd->bonus->timer, pet_skill_bonus_timer); aFree(pd->bonus); pd->bonus = NULL; } @@ -2427,12 +2427,12 @@ int unit_free(struct block_list *bl, clr_type clrtype) struct mob_data *md = (struct mob_data*)bl; if( md->spawn_timer != INVALID_TIMER ) { - delete_timer(md->spawn_timer,mob_delayspawn); + iTimer->delete_timer(md->spawn_timer,mob_delayspawn); md->spawn_timer = INVALID_TIMER; } if( md->deletetimer != INVALID_TIMER ) { - delete_timer(md->deletetimer,mob_timer_delete); + iTimer->delete_timer(md->deletetimer,mob_timer_delete); md->deletetimer = INVALID_TIMER; } if( md->lootitem ) @@ -2534,19 +2534,19 @@ int unit_free(struct block_list *bl, clr_type clrtype) skill->clear_unitgroup(bl); status_change_clear(bl,1); - map_deliddb(bl); + iMap->deliddb(bl); if( bl->type != BL_PC ) //Players are handled by map_quit - map_freeblock(bl); - map_freeblock_unlock(); + iMap->freeblock(bl); + iMap->freeblock_unlock(); return 0; } int do_init_unit(void) { - add_timer_func_list(unit_attack_timer, "unit_attack_timer"); - add_timer_func_list(unit_walktoxy_timer,"unit_walktoxy_timer"); - add_timer_func_list(unit_walktobl_sub, "unit_walktobl_sub"); - add_timer_func_list(unit_delay_walktoxy_timer,"unit_delay_walktoxy_timer"); + iTimer->add_timer_func_list(unit_attack_timer, "unit_attack_timer"); + iTimer->add_timer_func_list(unit_walktoxy_timer,"unit_walktoxy_timer"); + iTimer->add_timer_func_list(unit_walktobl_sub, "unit_walktobl_sub"); + iTimer->add_timer_func_list(unit_delay_walktoxy_timer,"unit_delay_walktoxy_timer"); return 0; } diff --git a/src/map/vending.c b/src/map/vending.c index 1576b684e..5b0bfdaa5 100644 --- a/src/map/vending.c +++ b/src/map/vending.c @@ -46,12 +46,12 @@ void vending_vendinglistreq(struct map_session_data* sd, unsigned int id) { struct map_session_data* vsd; nullpo_retv(sd); - if( (vsd = map_id2sd(id)) == NULL ) + if( (vsd = iMap->id2sd(id)) == NULL ) return; if( !vsd->state.vending ) return; // not vending - if (!pc_can_give_items(sd) || !pc_can_give_items(vsd)) { //check if both GMs are allowed to trade + if (!iPc->can_give_items(sd) || !iPc->can_give_items(vsd)) { //check if both GMs are allowed to trade // GM is not allowed to trade clif->message(sd->fd, msg_txt(246)); return; @@ -69,7 +69,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, int i, j, cursor, w, new_ = 0, blank, vend_list[MAX_VENDING]; double z; struct s_vending vend[MAX_VENDING]; // against duplicate packets - struct map_session_data* vsd = map_id2sd(aid); + struct map_session_data* vsd = iMap->id2sd(aid); nullpo_retv(sd); if( vsd == NULL || !vsd->state.vending || vsd->bl.id == sd->bl.id ) @@ -88,7 +88,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, if( count < 1 || count > MAX_VENDING || count > vsd->vend_num ) return; // invalid amount of purchased items - blank = pc_inventoryblank(sd); //number of free cells in the buyer's inventory + blank = iPc->inventoryblank(sd); //number of free cells in the buyer's inventory // duplicate item in vending to check hacker with multiple packets memcpy(&vend, &vsd->vending, sizeof(vsd->vending)); // copy vending list @@ -144,7 +144,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, vend[j].amount -= amount; - switch( pc_checkadditem(sd, vsd->status.cart[idx].nameid, amount) ) { + switch( iPc->checkadditem(sd, vsd->status.cart[idx].nameid, amount) ) { case ADDITEM_EXIST: break; //We'd add this item to the existing one (in buyers inventory) case ADDITEM_NEW: @@ -157,10 +157,10 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, } } - pc_payzeny(sd, (int)z, LOG_TYPE_VENDING, vsd); + iPc->payzeny(sd, (int)z, LOG_TYPE_VENDING, vsd); if( battle_config.vending_tax ) z -= z * (battle_config.vending_tax/10000.); - pc_getzeny(vsd, (int)z, LOG_TYPE_VENDING, sd); + iPc->getzeny(vsd, (int)z, LOG_TYPE_VENDING, sd); for( i = 0; i < count; i++ ) { short amount = *(uint16*)(data + 4*i + 0); @@ -168,9 +168,9 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, idx -= 2; // vending item - pc_additem(sd, &vsd->status.cart[idx], amount, LOG_TYPE_VENDING); + iPc->additem(sd, &vsd->status.cart[idx], amount, LOG_TYPE_VENDING); vsd->vending[vend_list[i]].amount -= amount; - pc_cart_delitem(vsd, idx, amount, 0, LOG_TYPE_VENDING); + iPc->cart_delitem(vsd, idx, amount, 0, LOG_TYPE_VENDING); clif->vendingreport(vsd, idx, amount); //print buyer's name @@ -197,7 +197,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, vsd->vend_num = cursor; //Always save BOTH: buyer and customer - if( save_settings&2 ) { + if( iMap->save_settings&2 ) { chrif_save(sd,0); chrif_save(vsd,0); } @@ -209,7 +209,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, if( i == vsd->vend_num ) { //Close Vending (this was automatically done by the client, we have to do it manually for autovenders) [Skotlex] vending->close(vsd); - map_quit(vsd); //They have no reason to stay around anymore, do they? + iMap->quit(vsd); //They have no reason to stay around anymore, do they? } } } @@ -226,7 +226,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const if ( pc_isdead(sd) || !sd->state.prevend || pc_istrading(sd)) return; // can't open vendings lying dead || didn't use via the skill (wpe/hack) || can't have 2 shops at once - vending_skill_lvl = pc_checkskill(sd, MC_VENDING); + vending_skill_lvl = iPc->checkskill(sd, MC_VENDING); // skill level and cart check if( !vending_skill_lvl || !pc_iscarton(sd) ) { clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0); @@ -250,12 +250,12 @@ void vending_openvending(struct map_session_data* sd, const char* message, const index -= 2; // offset adjustment (client says that the first cart position is 2) if( index < 0 || index >= MAX_CART // invalid position - || pc_cartitem_amount(sd, index, amount) < 0 // invalid item or insufficient quantity + || iPc->cartitem_amount(sd, index, amount) < 0 // invalid item or insufficient quantity //NOTE: official server does not do any of the following checks! || !sd->status.cart[index].identify // unidentified item || sd->status.cart[index].attribute == 1 // broken item || sd->status.cart[index].expire_time // It should not be in the cart but just in case - || !itemdb_cantrade(&sd->status.cart[index], pc_get_group_level(sd), pc_get_group_level(sd)) ) // untradeable item + || !itemdb_cantrade(&sd->status.cart[index], iPc->get_group_level(sd), iPc->get_group_level(sd)) ) // untradeable item continue; sd->vending[i].index = index; |