diff --git a/README.md b/README.md index 5a6eaa68d4..7d647d44f1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ rAthena ======= -Build Status: [![Build Status](https://travis-ci.org/rathena/rathena.png?branch=master)](https://travis-ci.org/rathena/rathena) [![Build status](https://ci.appveyor.com/api/projects/status/8574b8nlwd57loda/branch/master?svg=true)](https://ci.appveyor.com/project/rAthenaAPI/rathena/branch/master) +Build Status: [![Build Status](https://travis-ci.org/rathena/rathena.png?branch=master)](https://travis-ci.org/rathena/rathena) [![Build status](https://ci.appveyor.com/api/projects/status/8574b8nlwd57loda/branch/master?svg=true)](https://ci.appveyor.com/project/rAthenaAPI/rathena/branch/master) [![Total alerts](https://img.shields.io/lgtm/alerts/g/rathena/rathena.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/rathena/rathena/alerts/) [![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/rathena/rathena.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/rathena/rathena/context:cpp) Table of Contents --------- diff --git a/src/char/char.cpp b/src/char/char.cpp index dba1586e4c..00f016e150 100644 --- a/src/char/char.cpp +++ b/src/char/char.cpp @@ -2823,7 +2823,7 @@ void char_config_split_startpoint(char *w1_value, char *w2_value, struct point s start_point[i].map = mapindex_name2id(fields[1]); if (!start_point[i].map) { - ShowError("Start point %s not found in map-index cache. Setting to default location.\n", start_point[i].map); + ShowError("Start point %s not found in map-index cache. Setting to default location.\n", fields[1]); start_point[i].map = mapindex_name2id(MAP_DEFAULT_NAME); start_point[i].x = MAP_DEFAULT_X; start_point[i].y = MAP_DEFAULT_Y; diff --git a/src/char/char_mapif.cpp b/src/char/char_mapif.cpp index 16b6ee6bf6..221a5cbb30 100644 --- a/src/char/char_mapif.cpp +++ b/src/char/char_mapif.cpp @@ -253,7 +253,7 @@ int chmapif_parse_getmapname(int fd, int id){ mapbuf = RFIFOP(fd,4); RFIFOSKIP(fd,RFIFOW(fd,2)); - ShowStatus("Map-Server %d connected: %d maps, from IP %d.%d.%d.%d port %d.\n", + ShowStatus("Map-Server %d connected: %" PRIuPTR " maps, from IP %d.%d.%d.%d port %d.\n", id, map_server[id].map.size(), CONVIP(map_server[id].ip), map_server[id].port); ShowStatus("Map-server %d loading complete.\n", id); @@ -397,7 +397,7 @@ int chmapif_parse_reqsavechar(int fd, int id){ if (size - 13 != sizeof(struct mmo_charstatus)) { - ShowError("parse_from_map (save-char): Size mismatch! %d != %d\n", size-13, sizeof(struct mmo_charstatus)); + ShowError("parse_from_map (save-char): Size mismatch! %d != %" PRIuPTR "\n", size-13, sizeof(struct mmo_charstatus)); RFIFOSKIP(fd,size); return 1; } @@ -967,7 +967,7 @@ int chmapif_parse_save_scdata(int fd){ memcpy (&data, RFIFOP(fd, 14+i*sizeof(struct status_change_data)), sizeof(struct status_change_data)); if( i > 0 ) StringBuf_AppendStr(&buf, ", "); - StringBuf_Printf(&buf, "('%d','%d','%hu','%d','%d','%d','%d','%d')", aid, cid, + StringBuf_Printf(&buf, "('%d','%d','%hu','%d','%ld','%ld','%ld','%ld')", aid, cid, data.type, data.tick, data.val1, data.val2, data.val3, data.val4); } if( SQL_ERROR == Sql_QueryStr(sql_handle, StringBuf_Value(&buf)) ) diff --git a/src/char/int_achievement.cpp b/src/char/int_achievement.cpp index 70a0b40aff..06cb6adc9a 100644 --- a/src/char/int_achievement.cpp +++ b/src/char/int_achievement.cpp @@ -108,7 +108,7 @@ bool mapif_achievement_delete(uint32 char_id, int achievement_id) * @param ad: Achievement data * @return false in case of errors, true otherwise */ -bool mapif_achievement_add(uint32 char_id, struct achievement ad) +bool mapif_achievement_add(uint32 char_id, struct achievement* ad) { StringBuf buf; int i; @@ -118,19 +118,19 @@ bool mapif_achievement_add(uint32 char_id, struct achievement ad) for (i = 0; i < MAX_ACHIEVEMENT_OBJECTIVES; ++i) StringBuf_Printf(&buf, ", `count%d`", i + 1); StringBuf_AppendStr(&buf, ")"); - StringBuf_Printf(&buf, " VALUES ('%u', '%d',", char_id, ad.achievement_id, (uint32)ad.completed, (uint32)ad.rewarded); - if( ad.completed ){ - StringBuf_Printf(&buf, "FROM_UNIXTIME('%u'),", (uint32)ad.completed); + StringBuf_Printf(&buf, " VALUES ('%u', '%d',", char_id, ad->achievement_id, (uint32)ad->completed, (uint32)ad->rewarded); + if( ad->completed ){ + StringBuf_Printf(&buf, "FROM_UNIXTIME('%u'),", (uint32)ad->completed); }else{ StringBuf_AppendStr(&buf, "NULL,"); } - if( ad.rewarded ){ - StringBuf_Printf(&buf, "FROM_UNIXTIME('%u')", (uint32)ad.rewarded); + if( ad->rewarded ){ + StringBuf_Printf(&buf, "FROM_UNIXTIME('%u')", (uint32)ad->rewarded); }else{ StringBuf_AppendStr(&buf, "NULL"); } for (i = 0; i < MAX_ACHIEVEMENT_OBJECTIVES; ++i) - StringBuf_Printf(&buf, ", '%d'", ad.count[i]); + StringBuf_Printf(&buf, ", '%d'", ad->count[i]); StringBuf_AppendStr(&buf, ")"); if (SQL_ERROR == Sql_QueryStr(sql_handle, StringBuf_Value(&buf))) { @@ -150,26 +150,26 @@ bool mapif_achievement_add(uint32 char_id, struct achievement ad) * @param ad: Achievement data * @return false in case of errors, true otherwise */ -bool mapif_achievement_update(uint32 char_id, struct achievement ad) +bool mapif_achievement_update(uint32 char_id, struct achievement* ad) { StringBuf buf; int i; StringBuf_Init(&buf); StringBuf_Printf(&buf, "UPDATE `%s` SET ", schema_config.achievement_table); - if( ad.completed ){ - StringBuf_Printf(&buf, "`completed` = FROM_UNIXTIME('%u'),", (uint32)ad.completed); + if( ad->completed ){ + StringBuf_Printf(&buf, "`completed` = FROM_UNIXTIME('%u'),", (uint32)ad->completed); }else{ StringBuf_AppendStr(&buf, "`completed` = NULL,"); } - if( ad.rewarded ){ - StringBuf_Printf(&buf, "`rewarded` = FROM_UNIXTIME('%u')", (uint32)ad.rewarded); + if( ad->rewarded ){ + StringBuf_Printf(&buf, "`rewarded` = FROM_UNIXTIME('%u')", (uint32)ad->rewarded); }else{ StringBuf_AppendStr(&buf, "`rewarded` = NULL"); } for (i = 0; i < MAX_ACHIEVEMENT_OBJECTIVES; ++i) - StringBuf_Printf(&buf, ", `count%d` = '%d'", i + 1, ad.count[i]); - StringBuf_Printf(&buf, " WHERE `id` = %d AND `char_id` = %u", ad.achievement_id, char_id); + StringBuf_Printf(&buf, ", `count%d` = '%d'", i + 1, ad->count[i]); + StringBuf_Printf(&buf, " WHERE `id` = %d AND `char_id` = %u", ad->achievement_id, char_id); if (SQL_ERROR == Sql_QueryStr(sql_handle, StringBuf_Value(&buf))) { Sql_ShowDebug(sql_handle); @@ -216,7 +216,7 @@ int mapif_parse_achievement_save(int fd) // Only counts, complete, and reward are changable. ARR_FIND(0, MAX_ACHIEVEMENT_OBJECTIVES, k, new_ad[i].count[k] != old_ad[j].count[k]); if (k != MAX_ACHIEVEMENT_OBJECTIVES || new_ad[i].completed != old_ad[j].completed || new_ad[i].rewarded != old_ad[j].rewarded) { - if ((success = mapif_achievement_update(char_id, new_ad[i])) == false) + if ((success = mapif_achievement_update(char_id, &new_ad[i])) == false) break; } @@ -227,7 +227,7 @@ int mapif_parse_achievement_save(int fd) } } else { // Add new achievements if (new_ad[i].achievement_id) { - if ((success = mapif_achievement_add(char_id, new_ad[i])) == false) + if ((success = mapif_achievement_add(char_id, &new_ad[i])) == false) break; } } diff --git a/src/char/int_pet.cpp b/src/char/int_pet.cpp index d510ce2ebf..9f9ba0a54f 100644 --- a/src/char/int_pet.cpp +++ b/src/char/int_pet.cpp @@ -251,7 +251,7 @@ int mapif_save_pet(int fd, uint32 account_id, struct s_pet *data) { RFIFOHEAD(fd); len=RFIFOW(fd, 2); if(sizeof(struct s_pet)!=len-8) { - ShowError("inter pet: data size error %d %d\n", sizeof(struct s_pet), len-8); + ShowError("inter pet: data size error %" PRIuPTR " %d\n", sizeof(struct s_pet), len-8); } else{ diff --git a/src/char/int_storage.cpp b/src/char/int_storage.cpp index e2097afebf..9019f8986a 100644 --- a/src/char/int_storage.cpp +++ b/src/char/int_storage.cpp @@ -252,7 +252,7 @@ bool mapif_parse_SaveGuildStorage(int fd) if( sizeof(struct s_storage) != len - 12 ) { - ShowError("inter storage: data size error %d != %d\n", sizeof(struct s_storage), len - 12); + ShowError("inter storage: data size error %" PRIuPTR " != %d\n", sizeof(struct s_storage), len - 12); } else { @@ -465,7 +465,7 @@ bool mapif_parse_itembound_retrieve(int fd) * @param entries Inventory/cart/storage entries * @param result */ -void mapif_storage_data_loaded(int fd, uint32 account_id, char type, struct s_storage entries, bool result) { +void mapif_storage_data_loaded(int fd, uint32 account_id, char type, struct s_storage* entries, bool result) { uint16 size = sizeof(struct s_storage) + 10; WFIFOHEAD(fd, size); @@ -474,7 +474,7 @@ void mapif_storage_data_loaded(int fd, uint32 account_id, char type, struct s_st WFIFOB(fd, 4) = type; WFIFOL(fd, 5) = account_id; WFIFOB(fd, 9) = result; - memcpy(WFIFOP(fd, 10), &entries, sizeof(struct s_storage)); + memcpy(WFIFOP(fd, 10), entries, sizeof(struct s_storage)); WFIFOSET(fd, size); } @@ -536,7 +536,7 @@ bool mapif_parse_StorageLoad(int fd) { stor.state.put = (mode&STOR_MODE_PUT) ? 1 : 0; stor.state.get = (mode&STOR_MODE_GET) ? 1 : 0; - mapif_storage_data_loaded(fd, aid, type, stor, res); + mapif_storage_data_loaded(fd, aid, type, &stor, res); return true; } diff --git a/src/char/inter.cpp b/src/char/inter.cpp index ab8681b494..4717613fb9 100644 --- a/src/char/inter.cpp +++ b/src/char/inter.cpp @@ -887,7 +887,7 @@ void inter_config_readConf(void) { try { id = node["ID"].as(); } - catch (std::exception) { + catch (const std::exception&) { yaml_invalid_warning("inter_config_readConf: Storage definition with invalid ID field in '" CL_WHITE "%s" CL_RESET "', skipping.\n", node, current_file); continue; } @@ -913,7 +913,7 @@ void inter_config_readConf(void) { try { storage_table->max_num = node["Max"].as(); } - catch (std::exception) { + catch (const std::exception&) { yaml_invalid_warning("inter_config_readConf: Storage definition with invalid Max field in '" CL_WHITE "%s" CL_RESET "', skipping.\n", node, current_file); continue; } diff --git a/src/common/malloc.cpp b/src/common/malloc.cpp index 0125dc4b55..44393982a9 100644 --- a/src/common/malloc.cpp +++ b/src/common/malloc.cpp @@ -235,7 +235,7 @@ void* _mmalloc(size_t size, const char *file, int line, const char *func ) struct unit_head *head; if (((long) size) < 0) { - ShowError("_mmalloc: %d\n", size); + ShowError("_mmalloc: %" PRIuPTR "\n", size); return NULL; } @@ -265,7 +265,7 @@ void* _mmalloc(size_t size, const char *file, int line, const char *func ) *(long*)((char*)p + sizeof(struct unit_head_large) - sizeof(long) + size) = FREED_POINTER; return (char *)p + sizeof(struct unit_head_large) - sizeof(long); } else { - ShowFatalError("Memory manager::memmgr_alloc failed (allocating %d+%d bytes at %s:%d).\n", sizeof(struct unit_head_large), size, file, line); + ShowFatalError("Memory manager::memmgr_alloc failed (allocating %" PRIuPTR "+%" PRIuPTR " bytes at %s:%d).\n", sizeof(struct unit_head_large), size, file, line); exit(EXIT_FAILURE); } } diff --git a/src/common/socket.cpp b/src/common/socket.cpp index 2411141855..9a8e90d9de 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -321,9 +321,9 @@ void setsocketopts(int fd,int delay_timeout){ #endif if (sSetsockopt (fd, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout,sizeof(timeout)) < 0) - ShowError("setsocketopts: Unable to set SO_RCVTIMEO timeout for connection #%d!\n"); + ShowError("setsocketopts: Unable to set SO_RCVTIMEO timeout for connection #%d!\n", fd); if (sSetsockopt (fd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout,sizeof(timeout)) < 0) - ShowError("setsocketopts: Unable to set SO_SNDTIMEO timeout for connection #%d!\n"); + ShowError("setsocketopts: Unable to set SO_SNDTIMEO timeout for connection #%d!\n", fd); } } @@ -737,7 +737,7 @@ int RFIFOSKIP(int fd, size_t len) s = session[fd]; if ( s->rdata_size < s->rdata_pos + len ) { - ShowError("RFIFOSKIP: skipped past end of read buffer! Adjusting from %d to %d (session #%d)\n", len, RFIFOREST(fd), fd); + ShowError("RFIFOSKIP: skipped past end of read buffer! Adjusting from %" PRIuPTR " to %d (session #%d)\n", len, RFIFOREST(fd), fd); len = RFIFOREST(fd); } @@ -786,12 +786,12 @@ int WFIFOSET(int fd, size_t len) if( !s->flag.server ) { if( len > socket_max_client_packet ) {// see declaration of socket_max_client_packet for details - ShowError("WFIFOSET: Dropped too large client packet 0x%04x (length=%u, max=%u).\n", WFIFOW(fd,0), len, socket_max_client_packet); + ShowError("WFIFOSET: Dropped too large client packet 0x%04x (length=%" PRIuPTR ", max=%" PRIuPTR ").\n", WFIFOW(fd,0), len, socket_max_client_packet); return 0; } if( s->wdata_size+len > WFIFO_MAX ) {// reached maximum write fifo size - ShowError("WFIFOSET: Maximum write buffer size for client connection %d exceeded, most likely caused by packet 0x%04x (len=%u, ip=%lu.%lu.%lu.%lu).\n", fd, WFIFOW(fd,0), len, CONVIP(s->client_addr)); + ShowError("WFIFOSET: Maximum write buffer size for client connection %d exceeded, most likely caused by packet 0x%04x (len=%" PRIuPTR ", ip=%lu.%lu.%lu.%lu).\n", fd, WFIFOW(fd,0), len, CONVIP(s->client_addr)); set_eof(fd); return 0; } @@ -1525,7 +1525,7 @@ void send_shortlist_add_fd(int fd) if( send_shortlist_count >= ARRAYLENGTH(send_shortlist_array) ) { - ShowDebug("send_shortlist_add_fd: shortlist is full, ignoring... (fd=%d shortlist.count=%d shortlist.length=%d)\n", fd, send_shortlist_count, ARRAYLENGTH(send_shortlist_array)); + ShowDebug("send_shortlist_add_fd: shortlist is full, ignoring... (fd=%d shortlist.count=%" PRIuPTR " shortlist.length=%d)\n", fd, send_shortlist_count, ARRAYLENGTH(send_shortlist_array)); return; } diff --git a/src/common/sql.cpp b/src/common/sql.cpp index 2c4ab79a7b..6e91f2997d 100644 --- a/src/common/sql.cpp +++ b/src/common/sql.cpp @@ -807,7 +807,7 @@ int SqlStmt_BindColumn(SqlStmt* self, size_t idx, enum SqlDataType buffer_type, { if( buffer_len < 1 ) { - ShowDebug("SqlStmt_BindColumn: buffer_len(%d) is too small, no room for the nul-terminator\n", buffer_len); + ShowDebug("SqlStmt_BindColumn: buffer_len(%" PRIuPTR ") is too small, no room for the nul-terminator\n", buffer_len); return SQL_ERROR; } --buffer_len;// nul-terminator diff --git a/src/login/login.cpp b/src/login/login.cpp index 6d8b0efe9c..a3f9da5719 100644 --- a/src/login/login.cpp +++ b/src/login/login.cpp @@ -365,14 +365,14 @@ int login_mmo_auth(struct login_session_data* sd, bool isServer) { int i; if( !sd->has_client_hash ) { - ShowNotice("Client didn't send client hash (account: %s, ip: %s)\n", sd->userid, acc.state, ip); + ShowNotice("Client didn't send client hash (account: %s, ip: %s)\n", sd->userid, ip); return 5; } for( i = 0; i < 16; i++ ) sprintf(&smd5[i * 2], "%02x", sd->client_hash[i]); - ShowNotice("Invalid client hash (account: %s, sent md5: %d, ip: %s)\n", sd->userid, smd5, ip); + ShowNotice("Invalid client hash (account: %s, sent md5: %s, ip: %s)\n", sd->userid, smd5, ip); return 5; } } diff --git a/src/login/loginchrif.cpp b/src/login/loginchrif.cpp index da5180f110..e2266cf35a 100644 --- a/src/login/loginchrif.cpp +++ b/src/login/loginchrif.cpp @@ -206,17 +206,17 @@ int logchrif_send_accdata(int fd, uint32 aid) { * @param flag 0x1: VIP, 0x2: GM, 0x4: Show rates on player * @param mapfd */ -int logchrif_sendvipdata(int fd, struct mmo_account acc, unsigned char flag, int mapfd) { +int logchrif_sendvipdata(int fd, struct mmo_account* acc, unsigned char flag, int mapfd) { #ifdef VIP_ENABLE WFIFOHEAD(fd,19); WFIFOW(fd,0) = 0x2743; - WFIFOL(fd,2) = acc.account_id; - WFIFOL(fd,6) = (int)acc.vip_time; + WFIFOL(fd,2) = acc->account_id; + WFIFOL(fd,6) = (int)acc->vip_time; WFIFOB(fd,10) = flag; - WFIFOL(fd,11) = acc.group_id; //new group id + WFIFOL(fd,11) = acc->group_id; //new group id WFIFOL(fd,15) = mapfd; //link to mapserv WFIFOSET(fd,19); - logchrif_send_accdata(fd,acc.account_id); //refresh char with new setting + logchrif_send_accdata(fd,acc->account_id); //refresh char with new setting #endif return 1; } @@ -672,7 +672,7 @@ int logchrif_parse_reqvipdata(int fd) { bool isvip = false; if( acc.group_id > login_config.vip_sys.group ) { //Don't change group if it's higher. - logchrif_sendvipdata(fd,acc,0x2|((flag&0x8)?0x4:0),mapfd); + logchrif_sendvipdata(fd,&acc,0x2|((flag&0x8)?0x4:0),mapfd); return 1; } if( flag&2 ) { @@ -696,7 +696,7 @@ int logchrif_parse_reqvipdata(int fd) { acc.vip_time = vip_time; accounts->save(accounts,&acc); if( flag&1 ) - logchrif_sendvipdata(fd,acc,((isvip)?0x1:0)|((flag&0x8)?0x4:0),mapfd); + logchrif_sendvipdata(fd,&acc,((isvip)?0x1:0)|((flag&0x8)?0x4:0),mapfd); } } #endif diff --git a/src/map/battle.cpp b/src/map/battle.cpp index d36a12436c..9f21ee6241 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -2390,7 +2390,7 @@ static bool is_attack_left_handed(struct block_list *src, int skill_id) * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static bool is_attack_critical(struct Damage wd, struct block_list *src, struct block_list *target, int skill_id, int skill_lv, bool first_call) +static bool is_attack_critical(struct Damage* wd, struct block_list *src, struct block_list *target, int skill_id, int skill_lv, bool first_call) { struct status_data *sstatus = status_get_status_data(src); struct status_data *tstatus = status_get_status_data(target); @@ -2400,12 +2400,12 @@ static bool is_attack_critical(struct Damage wd, struct block_list *src, struct struct map_session_data *tsd = BL_CAST(BL_PC, target); if (!first_call) - return (wd.type == DMG_CRITICAL); + return (wd->type == DMG_CRITICAL); if (skill_id == NPC_CRITICALSLASH || skill_id == LG_PINPOINTATTACK) //Always critical skills return true; - if( !(wd.type&DMG_MULTI_HIT) && sstatus->cri && (!skill_id || + if( !(wd->type&DMG_MULTI_HIT) && sstatus->cri && (!skill_id || skill_id == KN_AUTOCOUNTER || skill_id == SN_SHARPSHOOTING || skill_id == MA_SHARPSHOOTING || skill_id == NJ_KIRIKAGE)) { @@ -2465,7 +2465,7 @@ static bool is_attack_critical(struct Damage wd, struct block_list *src, struct * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static int is_attack_piercing(struct Damage wd, struct block_list *src, struct block_list *target, int skill_id, int skill_lv, short weapon_position) +static int is_attack_piercing(struct Damage* wd, struct block_list *src, struct block_list *target, int skill_id, int skill_lv, short weapon_position) { if (skill_id == MO_INVESTIGATE || skill_id == RL_MASS_SPIRAL) return 2; @@ -2521,25 +2521,25 @@ static int battle_skill_get_damage_properties(uint16 skill_id, int is_splash) * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static bool is_attack_hitting(struct Damage wd, struct block_list *src, struct block_list *target, int skill_id, int skill_lv, bool first_call) +static bool is_attack_hitting(struct Damage* wd, struct block_list *src, struct block_list *target, int skill_id, int skill_lv, bool first_call) { struct status_data *sstatus = status_get_status_data(src); struct status_data *tstatus = status_get_status_data(target); struct status_change *sc = status_get_sc(src); struct status_change *tsc = status_get_sc(target); struct map_session_data *sd = BL_CAST(BL_PC, src); - int nk = battle_skill_get_damage_properties(skill_id, wd.miscflag); + int nk = battle_skill_get_damage_properties(skill_id, wd->miscflag); short flee, hitrate; if (!first_call) - return (wd.dmg_lv != ATK_FLEE); + return (wd->dmg_lv != ATK_FLEE); if (is_attack_critical(wd, src, target, skill_id, skill_lv, false)) return true; else if(sd && sd->bonus.perfect_hit > 0 && rnd()%100 < sd->bonus.perfect_hit) return true; else if (sc && sc->data[SC_FUSION]) return true; - else if (skill_id == AS_SPLASHER && !wd.miscflag) + else if (skill_id == AS_SPLASHER && !wd->miscflag) return true; else if (skill_id == CR_SHIELDBOOMERANG && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_CRUSADER ) return true; @@ -2548,7 +2548,7 @@ static bool is_attack_hitting(struct Damage wd, struct block_list *src, struct b else if (nk&NK_IGNORE_FLEE) return true; - if( tsc && tsc->data[SC_NEUTRALBARRIER] && (wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG ) + if( tsc && tsc->data[SC_NEUTRALBARRIER] && (wd->flag&(BF_LONG|BF_MAGIC)) == BF_LONG ) return false; flee = tstatus->flee; @@ -2574,7 +2574,7 @@ static bool is_attack_hitting(struct Damage wd, struct block_list *src, struct b hitrate += sstatus->hit - flee; //Fogwall's hit penalty is only for normal ranged attacks. - if ((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG && !skill_id && tsc && tsc->data[SC_FOGWALL]) + if ((wd->flag&(BF_LONG|BF_MAGIC)) == BF_LONG && !skill_id && tsc && tsc->data[SC_FOGWALL]) hitrate -= 50; if(sd && is_skill_using_arrow(src, skill_id)) @@ -2652,7 +2652,7 @@ static bool is_attack_hitting(struct Damage wd, struct block_list *src, struct b } break; } - } else if (sd && wd.type&DMG_MULTI_HIT && wd.div_ == 2) // +1 hit per level of Double Attack on a successful double attack (making sure other multi attack skills do not trigger this) [helvetica] + } else if (sd && wd->type&DMG_MULTI_HIT && wd->div_ == 2) // +1 hit per level of Double Attack on a successful double attack (making sure other multi attack skills do not trigger this) [helvetica] hitrate += pc_checkskill(sd,TF_DOUBLE); if (sd) { @@ -2686,12 +2686,12 @@ static bool is_attack_hitting(struct Damage wd, struct block_list *src, struct b * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static bool attack_ignores_def(struct Damage wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, short weapon_position) +static bool attack_ignores_def(struct Damage* wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, short weapon_position) { struct status_data *tstatus = status_get_status_data(target); struct status_change *sc = status_get_sc(src); struct map_session_data *sd = BL_CAST(BL_PC, src); - int nk = battle_skill_get_damage_properties(skill_id, wd.miscflag); + int nk = battle_skill_get_damage_properties(skill_id, wd->miscflag); #ifndef RENEWAL if (is_attack_critical(wd, src, target, skill_id, skill_lv, false)) @@ -2781,7 +2781,7 @@ static int battle_calc_equip_attack(struct block_list *src, int skill_id) * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static int battle_get_weapon_element(struct Damage wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, short weapon_position, bool calc_for_damage_only) +static int battle_get_weapon_element(struct Damage* wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, short weapon_position, bool calc_for_damage_only) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct status_change *sc = status_get_sc(src); @@ -2808,7 +2808,7 @@ static int battle_get_weapon_element(struct Damage wd, struct block_list *src, s switch( skill_id ) { case GS_GROUNDDRIFT: - element = wd.miscflag; //element comes in flag. + element = wd->miscflag; //element comes in flag. break; case LK_SPIRALPIERCE: if (!sd) @@ -2847,7 +2847,7 @@ static int battle_get_weapon_element(struct Damage wd, struct block_list *src, s * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static struct Damage battle_calc_element_damage(struct Damage wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv) +static void battle_calc_element_damage(struct Damage* wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct status_change *sc = status_get_sc(src); @@ -2856,7 +2856,7 @@ static struct Damage battle_calc_element_damage(struct Damage wd, struct block_l int element = skill_get_ele(skill_id, skill_lv); int left_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_L, true); int right_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_R, true); - int nk = battle_skill_get_damage_properties(skill_id, wd.miscflag); + int nk = battle_skill_get_damage_properties(skill_id, wd->miscflag); //Elemental attribute fix if(!(nk&NK_NO_ELEFIX)) { @@ -2865,11 +2865,11 @@ static struct Damage battle_calc_element_damage(struct Damage wd, struct block_l //Also non-pc units have only a defending element, but can inflict elemental attacks using skills [exneval] if(battle_config.attack_attr_none&src->type) if(((!skill_id && !right_element) || (skill_id && (element == -1 || !right_element))) && - (wd.flag&(BF_SHORT|BF_WEAPON)) == (BF_SHORT|BF_WEAPON)) - return wd; - if(wd.damage > 0) { + (wd->flag&(BF_SHORT|BF_WEAPON)) == (BF_SHORT|BF_WEAPON)) + return; + if(wd->damage > 0) { //Forced to its element - wd.damage = battle_attr_fix(src, target, wd.damage, right_element, tstatus->def_ele, tstatus->ele_lv); + wd->damage = battle_attr_fix(src, target, wd->damage, right_element, tstatus->def_ele, tstatus->ele_lv); switch( skill_id ) { case MC_CARTREVOLUTION: @@ -2877,29 +2877,28 @@ static struct Damage battle_calc_element_damage(struct Damage wd, struct block_l case SR_TIGERCANNON: case KO_BAKURETSU: //Forced to neutral element - wd.damage = battle_attr_fix(src, target, wd.damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); + wd->damage = battle_attr_fix(src, target, wd->damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); break; case GN_CARTCANNON: case KO_HAPPOKUNAI: //Forced to ammo's element - wd.damage = battle_attr_fix(src, target, wd.damage, (sd && sd->bonus.arrow_ele) ? sd->bonus.arrow_ele : ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); + wd->damage = battle_attr_fix(src, target, wd->damage, (sd && sd->bonus.arrow_ele) ? sd->bonus.arrow_ele : ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); break; } } - if (is_attack_left_handed(src, skill_id) && wd.damage2 > 0) - wd.damage2 = battle_attr_fix(src, target, wd.damage2, left_element ,tstatus->def_ele, tstatus->ele_lv); - if (sc && sc->data[SC_WATK_ELEMENT] && (wd.damage || wd.damage2)) { + if (is_attack_left_handed(src, skill_id) && wd->damage2 > 0) + wd->damage2 = battle_attr_fix(src, target, wd->damage2, left_element ,tstatus->def_ele, tstatus->ele_lv); + if (sc && sc->data[SC_WATK_ELEMENT] && (wd->damage || wd->damage2)) { // Descriptions indicate this means adding a percent of a normal attack in another element. [Skotlex] int64 damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, (is_skill_using_arrow(src, skill_id)?2:0)) * sc->data[SC_WATK_ELEMENT]->val2 / 100; - wd.damage += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv); + wd->damage += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv); if (is_attack_left_handed(src, skill_id)) { damage = battle_calc_base_damage(src, sstatus, &sstatus->lhw, sc, tstatus->size, (is_skill_using_arrow(src, skill_id)?2:0)) * sc->data[SC_WATK_ELEMENT]->val2 / 100; - wd.damage2 += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv); + wd->damage2 += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv); } } } - return wd; } #define ATK_RATE(damage, damage2, a) do { int64 rate_ = (a); (damage) = (damage) * rate_ / 100; if(is_attack_left_handed(src, skill_id)) (damage2) = (damage2) * rate_ / 100; } while(0); @@ -2914,9 +2913,9 @@ static struct Damage battle_calc_element_damage(struct Damage wd, struct block_l #define ATK_ADD2(damage, damage2, a , b) do { int64 rate_ = (a), rate2_ = (b); (damage) += rate_; if(is_attack_left_handed(src, skill_id)) (damage2) += rate2_; } while(0); #ifdef RENEWAL - #define RE_ALLATK_ADD(wd, a) do { int64 a_ = (a); ATK_ADD((wd).statusAtk, (wd).statusAtk2, a_); ATK_ADD((wd).weaponAtk, (wd).weaponAtk2, a_); ATK_ADD((wd).equipAtk, (wd).equipAtk2, a_); ATK_ADD((wd).masteryAtk, (wd).masteryAtk2, a_); } while(0); - #define RE_ALLATK_RATE(wd, a) do { int64 a_ = (a); ATK_RATE((wd).statusAtk, (wd).statusAtk2, a_); ATK_RATE((wd).weaponAtk, (wd).weaponAtk2, a_); ATK_RATE((wd).equipAtk, (wd).equipAtk2, a_); ATK_RATE((wd).masteryAtk, (wd).masteryAtk2, a_); } while(0); - #define RE_ALLATK_ADDRATE(wd, a) do { int64 a_ = (a); ATK_ADDRATE((wd).statusAtk, (wd).statusAtk2, a_); ATK_ADDRATE((wd).weaponAtk, (wd).weaponAtk2, a_); ATK_ADDRATE((wd).equipAtk, (wd).equipAtk2, a_); ATK_ADDRATE((wd).masteryAtk, (wd).masteryAtk2, a_); } while(0); + #define RE_ALLATK_ADD(wd, a) do { int64 a_ = (a); ATK_ADD((wd)->statusAtk, (wd)->statusAtk2, a_); ATK_ADD((wd)->weaponAtk, (wd)->weaponAtk2, a_); ATK_ADD((wd)->equipAtk, (wd)->equipAtk2, a_); ATK_ADD((wd)->masteryAtk, (wd)->masteryAtk2, a_); } while(0); + #define RE_ALLATK_RATE(wd, a) do { int64 a_ = (a); ATK_RATE((wd)->statusAtk, (wd)->statusAtk2, a_); ATK_RATE((wd)->weaponAtk, (wd)->weaponAtk2, a_); ATK_RATE((wd)->equipAtk, (wd)->equipAtk2, a_); ATK_RATE((wd)->masteryAtk, (wd)->masteryAtk2, a_); } while(0); + #define RE_ALLATK_ADDRATE(wd, a) do { int64 a_ = (a); ATK_ADDRATE((wd)->statusAtk, (wd)->statusAtk2, a_); ATK_ADDRATE((wd)->weaponAtk, (wd)->weaponAtk2, a_); ATK_ADDRATE((wd)->equipAtk, (wd)->equipAtk2, a_); ATK_ADDRATE((wd)->masteryAtk, (wd)->masteryAtk2, a_); } while(0); #else #define RE_ALLATK_ADD(wd, a) {;} #define RE_ALLATK_RATE(wd, a) {;} @@ -2931,7 +2930,7 @@ static struct Damage battle_calc_element_damage(struct Damage wd, struct block_l * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static void battle_calc_attack_masteries(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct status_change *sc = status_get_sc(src); @@ -2945,35 +2944,35 @@ static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block { //Add mastery damage uint16 skill; - wd.damage = battle_addmastery(sd,target,wd.damage,0); + wd->damage = battle_addmastery(sd,target,wd->damage,0); #ifdef RENEWAL - wd.masteryAtk = battle_addmastery(sd,target,wd.weaponAtk,0); + wd->masteryAtk = battle_addmastery(sd,target,wd->weaponAtk,0); #endif if (is_attack_left_handed(src, skill_id)) { - wd.damage2 = battle_addmastery(sd,target,wd.damage2,1); + wd->damage2 = battle_addmastery(sd,target,wd->damage2,1); #ifdef RENEWAL - wd.masteryAtk2 = battle_addmastery(sd,target,wd.weaponAtk2,1); + wd->masteryAtk2 = battle_addmastery(sd,target,wd->weaponAtk2,1); #endif } #ifdef RENEWAL //General skill masteries if(skill_id == TF_POISON) //Additional ATK from Envenom is treated as mastery type damage [helvetica] - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 15 * skill_lv); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, 15 * skill_lv); if (skill_id != MC_CARTREVOLUTION && pc_checkskill(sd, BS_HILTBINDING) > 0) - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 4); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, 4); if (skill_id != CR_SHIELDBOOMERANG) - ATK_ADD2(wd.masteryAtk, wd.masteryAtk2, ((wd.div_ < 1) ? 1 : wd.div_) * sd->right_weapon.star, ((wd.div_ < 1) ? 1 : wd.div_) * sd->left_weapon.star); + ATK_ADD2(wd->masteryAtk, wd->masteryAtk2, ((wd->div_ < 1) ? 1 : wd->div_) * sd->right_weapon.star, ((wd->div_ < 1) ? 1 : wd->div_) * sd->left_weapon.star); if (skill_id == MO_FINGEROFFENSIVE) { - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, ((wd.div_ < 1) ? 1 : wd.div_) * sd->spiritball_old * 3); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, ((wd->div_ < 1) ? 1 : wd->div_) * sd->spiritball_old * 3); } else - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, ((wd.div_ < 1) ? 1 : wd.div_) * sd->spiritball * 3); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, ((wd->div_ < 1) ? 1 : wd->div_) * sd->spiritball * 3); #endif if (skill_id == NJ_SYURIKEN && (skill = pc_checkskill(sd,NJ_TOBIDOUGU)) > 0) { - ATK_ADD(wd.damage, wd.damage2, 3 * skill); + ATK_ADD(wd->damage, wd->damage2, 3 * skill); #ifdef RENEWAL - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 3 * skill); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, 3 * skill); #endif } @@ -2984,9 +2983,9 @@ static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block if (sd) { skill = pc_checkskill(sd, RA_TOOTHOFWUG); - ATK_ADD(wd.damage, wd.damage2, 30 * skill); + ATK_ADD(wd->damage, wd->damage2, 30 * skill); #ifdef RENEWAL - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 30 * skill); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, 30 * skill); #endif } break; @@ -2995,31 +2994,29 @@ static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block if (sc) { // Status change considered as masteries #ifdef RENEWAL if (sc->data[SC_NIBELUNGEN]) // With renewal, the level 4 weapon limitation has been removed - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, sc->data[SC_NIBELUNGEN]->val2); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, sc->data[SC_NIBELUNGEN]->val2); #endif if(sc->data[SC_CAMOUFLAGE]) { - ATK_ADD(wd.damage, wd.damage2, 30 * min(10, sc->data[SC_CAMOUFLAGE]->val3)); + ATK_ADD(wd->damage, wd->damage2, 30 * min(10, sc->data[SC_CAMOUFLAGE]->val3)); #ifdef RENEWAL - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 30 * min(10, sc->data[SC_CAMOUFLAGE]->val3)); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, 30 * min(10, sc->data[SC_CAMOUFLAGE]->val3)); #endif } if(sc->data[SC_GN_CARTBOOST]) { - ATK_ADD(wd.damage, wd.damage2, 10 * sc->data[SC_GN_CARTBOOST]->val1); + ATK_ADD(wd->damage, wd->damage2, 10 * sc->data[SC_GN_CARTBOOST]->val1); #ifdef RENEWAL - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 10 * sc->data[SC_GN_CARTBOOST]->val1); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, 10 * sc->data[SC_GN_CARTBOOST]->val1); #endif } if (sc->data[SC_P_ALTER]) { - ATK_ADD(wd.damage, wd.damage2, sc->data[SC_P_ALTER]->val2); + ATK_ADD(wd->damage, wd->damage2, sc->data[SC_P_ALTER]->val2); #ifdef RENEWAL - ATK_ADD(wd.masteryAtk, wd.masteryAtk2, sc->data[SC_P_ALTER]->val2); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, sc->data[SC_P_ALTER]->val2); #endif } } } - - return wd; } #ifdef RENEWAL @@ -3031,7 +3028,7 @@ static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_calc_damage_parts(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static void battle_calc_damage_parts(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct status_data *sstatus = status_get_status_data(src); struct status_data *tstatus = status_get_status_data(target); @@ -3040,37 +3037,35 @@ struct Damage battle_calc_damage_parts(struct Damage wd, struct block_list *src, int right_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_R, false); int left_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_L, false); - wd.statusAtk += battle_calc_status_attack(sstatus, EQI_HAND_R); - wd.statusAtk2 += battle_calc_status_attack(sstatus, EQI_HAND_L); + wd->statusAtk += battle_calc_status_attack(sstatus, EQI_HAND_R); + wd->statusAtk2 += battle_calc_status_attack(sstatus, EQI_HAND_L); if (skill_id || (sd && sd->sc.data[SC_SEVENWIND])) { // Mild Wind applies element to status ATK as well as weapon ATK [helvetica] - wd.statusAtk = battle_attr_fix(src, target, wd.statusAtk, right_element, tstatus->def_ele, tstatus->ele_lv); - wd.statusAtk2 = battle_attr_fix(src, target, wd.statusAtk, left_element, tstatus->def_ele, tstatus->ele_lv); + wd->statusAtk = battle_attr_fix(src, target, wd->statusAtk, right_element, tstatus->def_ele, tstatus->ele_lv); + wd->statusAtk2 = battle_attr_fix(src, target, wd->statusAtk, left_element, tstatus->def_ele, tstatus->ele_lv); } else { // status atk is considered neutral on normal attacks [helvetica] - wd.statusAtk = battle_attr_fix(src, target, wd.statusAtk, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); - wd.statusAtk2 = battle_attr_fix(src, target, wd.statusAtk, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); + wd->statusAtk = battle_attr_fix(src, target, wd->statusAtk, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); + wd->statusAtk2 = battle_attr_fix(src, target, wd->statusAtk, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); } - wd.weaponAtk += battle_calc_base_weapon_attack(src, tstatus, &sstatus->rhw, sd); - wd.weaponAtk = battle_attr_fix(src, target, wd.weaponAtk, right_element, tstatus->def_ele, tstatus->ele_lv); + wd->weaponAtk += battle_calc_base_weapon_attack(src, tstatus, &sstatus->rhw, sd); + wd->weaponAtk = battle_attr_fix(src, target, wd->weaponAtk, right_element, tstatus->def_ele, tstatus->ele_lv); - wd.weaponAtk2 += battle_calc_base_weapon_attack(src, tstatus, &sstatus->lhw, sd); - wd.weaponAtk2 = battle_attr_fix(src, target, wd.weaponAtk2, left_element, tstatus->def_ele, tstatus->ele_lv); + wd->weaponAtk2 += battle_calc_base_weapon_attack(src, tstatus, &sstatus->lhw, sd); + wd->weaponAtk2 = battle_attr_fix(src, target, wd->weaponAtk2, left_element, tstatus->def_ele, tstatus->ele_lv); - wd.equipAtk += battle_calc_equip_attack(src, skill_id); - wd.equipAtk = battle_attr_fix(src, target, wd.equipAtk, right_element, tstatus->def_ele, tstatus->ele_lv); + wd->equipAtk += battle_calc_equip_attack(src, skill_id); + wd->equipAtk = battle_attr_fix(src, target, wd->equipAtk, right_element, tstatus->def_ele, tstatus->ele_lv); - wd.equipAtk2 += battle_calc_equip_attack(src, skill_id); - wd.equipAtk2 = battle_attr_fix(src, target, wd.equipAtk2, left_element, tstatus->def_ele, tstatus->ele_lv); + wd->equipAtk2 += battle_calc_equip_attack(src, skill_id); + wd->equipAtk2 = battle_attr_fix(src, target, wd->equipAtk2, left_element, tstatus->def_ele, tstatus->ele_lv); //Mastery ATK is a special kind of ATK that has no elemental properties //Because masteries are not elemental, they are unaffected by Ghost armors or Raydric Card - wd = battle_calc_attack_masteries(wd, src, target, skill_id, skill_lv); + battle_calc_attack_masteries(wd, src, target, skill_id, skill_lv); - wd.damage = 0; - wd.damage2 = 0; - - return wd; + wd->damage = 0; + wd->damage2 = 0; } #endif @@ -3082,22 +3077,22 @@ struct Damage battle_calc_damage_parts(struct Damage wd, struct block_list *src, * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static void battle_calc_skill_base_damage(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct status_change *sc = status_get_sc(src); struct status_data *sstatus = status_get_status_data(src); struct status_data *tstatus = status_get_status_data(target); struct map_session_data *sd = BL_CAST(BL_PC, src); uint16 i; - int nk = battle_skill_get_damage_properties(skill_id, wd.miscflag); + int nk = battle_skill_get_damage_properties(skill_id, wd->miscflag); switch (skill_id) { //Calc base damage according to skill case PA_SACRIFICE: - wd.damage = sstatus->max_hp* 9/100; - wd.damage2 = 0; + wd->damage = sstatus->max_hp* 9/100; + wd->damage2 = 0; #ifdef RENEWAL - wd.weaponAtk = wd.damage; - wd.weaponAtk2 = wd.damage2; + wd->weaponAtk = wd->damage; + wd->weaponAtk2 = wd->damage2; #endif break; #ifdef RENEWAL @@ -3109,29 +3104,29 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON) - wd.equipAtk += sd->inventory_data[index]->weight/20; // weight from spear is treated as equipment ATK on official [helvetica] + wd->equipAtk += sd->inventory_data[index]->weight/20; // weight from spear is treated as equipment ATK on official [helvetica] - wd = battle_calc_damage_parts(wd, src, target, skill_id, skill_lv); - wd.masteryAtk = 0; // weapon mastery is ignored for spiral + battle_calc_damage_parts(wd, src, target, skill_id, skill_lv); + wd->masteryAtk = 0; // weapon mastery is ignored for spiral } else { - wd.damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, 0); //Monsters have no weight and use ATK instead + wd->damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, 0); //Monsters have no weight and use ATK instead } switch (tstatus->size) { //Size-fix. Is this modified by weapon perfection? case SZ_SMALL: //Small: 125% - ATK_RATE(wd.damage, wd.damage2, 125); + ATK_RATE(wd->damage, wd->damage2, 125); RE_ALLATK_RATE(wd, 125); break; //case SZ_MEDIUM: //Medium: 100% case SZ_BIG: //Large: 75% - ATK_RATE(wd.damage, wd.damage2, 75); + ATK_RATE(wd->damage, wd->damage2, 75); RE_ALLATK_RATE(wd, 75); break; } #else case NJ_ISSEN: - wd.damage = 40 * sstatus->str + sstatus->hp * 8 * skill_lv / 100; - wd.damage2 = 0; + wd->damage = 40 * sstatus->str + sstatus->hp * 8 * skill_lv / 100; + wd->damage2 = 0; break; case LK_SPIRALPIERCE: case ML_SPIRALPIERCE: @@ -3141,41 +3136,41 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON) - wd.damage = sd->inventory_data[index]->weight*8/100; //80% of weight + wd->damage = sd->inventory_data[index]->weight*8/100; //80% of weight - ATK_ADDRATE(wd.damage, wd.damage2, 50*skill_lv); //Skill modifier applies to weight only. + ATK_ADDRATE(wd->damage, wd->damage2, 50*skill_lv); //Skill modifier applies to weight only. } else { - wd.damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, 0); //Monsters have no weight and use ATK instead + wd->damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, 0); //Monsters have no weight and use ATK instead } i = sstatus->str/10; i*=i; - ATK_ADD(wd.damage, wd.damage2, i); //Add str bonus. + ATK_ADD(wd->damage, wd->damage2, i); //Add str bonus. switch (tstatus->size) { //Size-fix. Is this modified by weapon perfection? case SZ_SMALL: //Small: 125% - ATK_RATE(wd.damage, wd.damage2, 125); + ATK_RATE(wd->damage, wd->damage2, 125); break; //case SZ_MEDIUM: //Medium: 100% case SZ_BIG: //Large: 75% - ATK_RATE(wd.damage, wd.damage2, 75); + ATK_RATE(wd->damage, wd->damage2, 75); break; } #endif break; case CR_SHIELDBOOMERANG: case PA_SHIELDCHAIN: - wd.damage = sstatus->batk; + wd->damage = sstatus->batk; if (sd) { short index = sd->equip_index[EQI_HAND_L]; if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR) { - ATK_ADD(wd.damage, wd.damage2, sd->inventory_data[index]->weight / 10); + ATK_ADD(wd->damage, wd->damage2, sd->inventory_data[index]->weight / 10); #ifdef RENEWAL - ATK_ADD(wd.weaponAtk, wd.weaponAtk2, sd->inventory_data[index]->weight / 10); + ATK_ADD(wd->weaponAtk, wd->weaponAtk2, sd->inventory_data[index]->weight / 10); #endif } } else - ATK_ADD(wd.damage, wd.damage2, sstatus->rhw.atk2); //Else use Atk2 + ATK_ADD(wd->damage, wd->damage2, sstatus->rhw.atk2); //Else use Atk2 break; case RK_DRAGONBREATH: case RK_DRAGONBREATH_WATER: @@ -3186,11 +3181,11 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list damagevalue = damagevalue * status_get_lv(src) / 150; if(sd) damagevalue = damagevalue * (100 + 5 * (pc_checkskill(sd,RK_DRAGONTRAINING) - 1)) / 100; - ATK_ADD(wd.damage, wd.damage2, damagevalue); + ATK_ADD(wd->damage, wd->damage2, damagevalue); #ifdef RENEWAL - ATK_ADD(wd.weaponAtk, wd.weaponAtk2, damagevalue); + ATK_ADD(wd->weaponAtk, wd->weaponAtk2, damagevalue); #endif - wd.flag |= BF_LONG; + wd->flag |= BF_LONG; } break; case NC_SELFDESTRUCTION: { @@ -3199,9 +3194,9 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list if(status_get_lv(src) > 100) damagevalue = damagevalue * status_get_lv(src) / 100; damagevalue = damagevalue + sstatus->hp; - ATK_ADD(wd.damage, wd.damage2, damagevalue); + ATK_ADD(wd->damage, wd->damage2, damagevalue); #ifdef RENEWAL - ATK_ADD(wd.weaponAtk, wd.weaponAtk2, damagevalue); + ATK_ADD(wd->weaponAtk, wd->weaponAtk2, damagevalue); #endif } break; @@ -3214,29 +3209,29 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list #endif sstatus->batk + sstatus->rhw.atk + (index >= 0 && sd->inventory_data[index] ? sd->inventory_data[index]->atk : 0)) * (skill_lv + 5) / 5; - ATK_ADD(wd.damage, wd.damage2, damagevalue); + ATK_ADD(wd->damage, wd->damage2, damagevalue); #ifdef RENEWAL - ATK_ADD(wd.weaponAtk, wd.weaponAtk2, damagevalue); + ATK_ADD(wd->weaponAtk, wd->weaponAtk2, damagevalue); #endif } else - ATK_ADD(wd.damage, wd.damage2, 5000); + ATK_ADD(wd->damage, wd->damage2, 5000); break; case HFLI_SBR44: //[orn] if(src->type == BL_HOM) - wd.damage = ((TBL_HOM*)src)->homunculus.intimacy ; + wd->damage = ((TBL_HOM*)src)->homunculus.intimacy ; break; default: #ifdef RENEWAL if (sd) - wd = battle_calc_damage_parts(wd, src, target, skill_id, skill_lv); + battle_calc_damage_parts(wd, src, target, skill_id, skill_lv); else { i = (is_attack_critical(wd, src, target, skill_id, skill_lv, false)?1:0)| (!skill_id && sc && sc->data[SC_CHANGE]?4:0); - wd.damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, i); + wd->damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, i); if (is_attack_left_handed(src, skill_id)) - wd.damage2 = battle_calc_base_damage(src, sstatus, &sstatus->lhw, sc, tstatus->size, i); + wd->damage2 = battle_calc_base_damage(src, sstatus, &sstatus->lhw, sc, tstatus->size, i); } #else i = (is_attack_critical(wd, src, target, skill_id, skill_lv, false)?1:0)| @@ -3258,18 +3253,18 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list break; } } - wd.damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, i); + wd->damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, i); if (is_attack_left_handed(src, skill_id)) - wd.damage2 = battle_calc_base_damage(src, sstatus, &sstatus->lhw, sc, tstatus->size, i); + wd->damage2 = battle_calc_base_damage(src, sstatus, &sstatus->lhw, sc, tstatus->size, i); #endif if (nk&NK_SPLASHSPLIT){ // Divide ATK among targets - if(wd.miscflag > 0) { - wd.damage /= wd.miscflag; + if(wd->miscflag > 0) { + wd->damage /= wd->miscflag; #ifdef RENEWAL - wd.statusAtk /= wd.miscflag; - wd.weaponAtk /= wd.miscflag; - wd.equipAtk /= wd.miscflag; - wd.masteryAtk /= wd.miscflag; + wd->statusAtk /= wd->miscflag; + wd->weaponAtk /= wd->miscflag; + wd->equipAtk /= wd->miscflag; + wd->masteryAtk /= wd->miscflag; #endif } else ShowError("0 enemies targeted by %d:%s, divide per 0 avoided!\n", skill_id, skill_get_name(skill_id)); @@ -3280,24 +3275,23 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list int skill; if (sd->bonus.atk_rate) { - ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.atk_rate); + ATK_ADDRATE(wd->damage, wd->damage2, sd->bonus.atk_rate); RE_ALLATK_ADDRATE(wd, sd->bonus.atk_rate); } #ifndef RENEWAL if(sd->bonus.crit_atk_rate && !skill_id && is_attack_critical(wd, src, target, skill_id, skill_lv, false)) { // add +crit damage bonuses here in pre-renewal mode [helvetica] - ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.crit_atk_rate); + ATK_ADDRATE(wd->damage, wd->damage2, sd->bonus.crit_atk_rate); } #endif if(sd->status.party_id && (skill=pc_checkskill(sd,TK_POWER)) > 0) { if( (i = party_foreachsamemap(party_sub_count, sd, 0)) > 1 ) { // exclude the player himself [Inkfish] - ATK_ADDRATE(wd.damage, wd.damage2, 2*skill*i); + ATK_ADDRATE(wd->damage, wd->damage2, 2*skill*i); RE_ALLATK_ADDRATE(wd, 2*skill*i); } } } break; } //End switch(skill_id) - return wd; } //For quick div adjustment. @@ -3310,18 +3304,16 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list * @param skill_id: ID of the skill that deals damage * @return Modified damage struct *------------------------------------------------*/ -static struct Damage battle_apply_div_fix(struct Damage d, uint16 skill_id) +static void battle_apply_div_fix(struct Damage* d, uint16 skill_id) { - if(d.damage) { - DAMAGE_DIV_FIX(d.damage, d.div_); + if(d->damage) { + DAMAGE_DIV_FIX(d->damage, d->div_); //Min damage - if(d.damage < d.div_ && (skill_id == SU_LUNATICCARROTBEAT || skill_id == SU_CN_METEOR || (battle_config.skill_min_damage&d.flag))) - d.damage = d.div_; - } else if (d.div_ < 0) { - d.div_ *= -1; + if(d->damage < d->div_ && (skill_id == SU_LUNATICCARROTBEAT || skill_id == SU_CN_METEOR || (battle_config.skill_min_damage&d->flag))) + d->damage = d->div_; + } else if (d->div_ < 0) { + d->div_ *= -1; } - - return d; } /*======================================= @@ -3332,7 +3324,7 @@ static struct Damage battle_apply_div_fix(struct Damage d, uint16 skill_id) * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static struct Damage battle_calc_multi_attack(struct Damage wd, struct block_list *src,struct block_list *target, uint16 skill_id, uint16 skill_lv) +static void battle_calc_multi_attack(struct Damage* wd, struct block_list *src,struct block_list *target, uint16 skill_id, uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct status_change *sc = status_get_sc(src); @@ -3353,16 +3345,16 @@ static struct Damage battle_calc_multi_attack(struct Damage wd, struct block_lis max_rate = max(5 * skill_lv, sd->bonus.double_rate); if( rnd()%100 < max_rate ) { - wd.div_ = skill_get_num(TF_DOUBLE,skill_lv?skill_lv:1); - wd.type = DMG_MULTI_HIT; + wd->div_ = skill_get_num(TF_DOUBLE,skill_lv?skill_lv:1); + wd->type = DMG_MULTI_HIT; } } else if( ((sd->weapontype1 == W_REVOLVER && (skill_lv = pc_checkskill(sd,GS_CHAINACTION)) > 0) //Normal Chain Action effect || (sc && sc->count && sc->data[SC_E_CHAIN] && (skill_lv = sc->data[SC_E_CHAIN]->val1) > 0)) //Chain Action of ETERNAL_CHAIN && rnd()%100 < 5*skill_lv ) //Success rate { - wd.div_ = skill_get_num(GS_CHAINACTION,skill_lv); - wd.type = DMG_MULTI_HIT; + wd->div_ = skill_get_num(GS_CHAINACTION,skill_lv); + wd->type = DMG_MULTI_HIT; sc_start(src,src,SC_QD_SHOT_READY,100,target->id,skill_get_time(RL_QD_SHOT,1)); } else if(sc && sc->data[SC_FEARBREEZE] && sd->weapontype1==W_BOW @@ -3370,34 +3362,32 @@ static struct Damage battle_calc_multi_attack(struct Damage wd, struct block_lis { int chance = rnd()%100; switch(sc->data[SC_FEARBREEZE]->val1) { - case 5: if( chance < 4) { wd.div_ = 5; break; } // 3 % chance to attack 5 times. - case 4: if( chance < 7) { wd.div_ = 4; break; } // 6 % chance to attack 4 times. - case 3: if( chance < 10) { wd.div_ = 3; break; } // 9 % chance to attack 3 times. + case 5: if( chance < 4) { wd->div_ = 5; break; } // 3 % chance to attack 5 times. + case 4: if( chance < 7) { wd->div_ = 4; break; } // 6 % chance to attack 4 times. + case 3: if( chance < 10) { wd->div_ = 3; break; } // 9 % chance to attack 3 times. case 2: - case 1: if( chance < 13) { wd.div_ = 2; break; } // 12 % chance to attack 2 times. + case 1: if( chance < 13) { wd->div_ = 2; break; } // 12 % chance to attack 2 times. } - wd.div_ = min(wd.div_,sd->inventory.u.items_inventory[i].amount); - sc->data[SC_FEARBREEZE]->val4 = wd.div_-1; - if (wd.div_ > 1) - wd.type = DMG_MULTI_HIT; + wd->div_ = min(wd->div_,sd->inventory.u.items_inventory[i].amount); + sc->data[SC_FEARBREEZE]->val4 = wd->div_-1; + if (wd->div_ > 1) + wd->type = DMG_MULTI_HIT; } } switch (skill_id) { case RA_AIMEDBOLT: if( tsc && (tsc->data[SC_BITE] || tsc->data[SC_ANKLE] || tsc->data[SC_ELECTRICSHOCKER]) ) - wd.div_ = tstatus->size + 2 + ( (rnd()%100 < 50-tstatus->size*10) ? 1 : 0 ); + wd->div_ = tstatus->size + 2 + ( (rnd()%100 < 50-tstatus->size*10) ? 1 : 0 ); break; case RL_QD_SHOT: - wd.div_ = 1 + (sd ? sd->status.job_level : 1) / 20 + (tsc && tsc->data[SC_C_MARKER] ? 2 : 0); + wd->div_ = 1 + (sd ? sd->status.job_level : 1) / 20 + (tsc && tsc->data[SC_C_MARKER] ? 2 : 0); break; case SC_JYUMONJIKIRI: if( tsc && tsc->data[SC_JYUMONJIKIRI] ) - wd.div_ = wd.div_ * -1;// needs more info + wd->div_ = wd->div_ * -1;// needs more info break; } - - return wd; } /*====================================================== @@ -3408,7 +3398,7 @@ static struct Damage battle_calc_multi_attack(struct Damage wd, struct block_lis * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct map_session_data *tsd = BL_CAST(BL_PC, target); @@ -3464,7 +3454,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s break; case SM_MAGNUM: case MS_MAGNUM: - if(wd.miscflag == 1) + if(wd->miscflag == 1) skillratio += 20 * skill_lv; //Inner 3x3 circle takes 100%+20%*level damage [Playtester] else skillratio += 10 * skill_lv; //Outer 5x5 circle takes 100%+10%*level damage [Playtester] @@ -3515,17 +3505,17 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s int ratio = 100 + 20 * skill_lv; skillratio += -100 + ratio; - if(skill_lv > 3 && wd.miscflag == 0) + if(skill_lv > 3 && wd->miscflag == 0) skillratio += ratio / 2; - if(skill_lv > 6 && wd.miscflag == 0) + if(skill_lv > 6 && wd->miscflag == 0) skillratio += ratio / 4; - if(skill_lv > 9 && wd.miscflag == 0) + if(skill_lv > 9 && wd->miscflag == 0) skillratio += ratio / 8; - if(skill_lv > 6 && wd.miscflag == 1) + if(skill_lv > 6 && wd->miscflag == 1) skillratio += ratio / 2; - if(skill_lv > 9 && wd.miscflag == 1) + if(skill_lv > 9 && wd->miscflag == 1) skillratio += ratio / 4; - if(skill_lv > 9 && wd.miscflag == 2) + if(skill_lv > 9 && wd->miscflag == 2) skillratio += ratio / 2; break; } @@ -3653,7 +3643,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s case LK_JOINTBEAT: i = 10 * skill_lv - 50; // Although not clear, it's being assumed that the 2x damage is only for the break neck ailment. - if (wd.miscflag&BREAK_NECK) + if (wd->miscflag&BREAK_NECK) i *= 2; skillratio += i; break; @@ -3712,7 +3702,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s //Different damage formulas depending on damage trigger if (sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == skill_id) skillratio += -100 + 4 * status_get_lv(src); //Tumble formula [4%*baselevel] - else if (wd.miscflag) { + else if (wd->miscflag) { skillratio += -100 + 4 * status_get_lv(src); //Running formula [4%*baselevel] if (sc && sc->data[SC_SPURT]) //Spurt formula [8%*baselevel] skillratio *= 2; @@ -3788,7 +3778,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s break; #endif case KN_CHARGEATK: { // +100% every 3 cells of distance but hard-limited to 500% - int k = (wd.miscflag-1)/3; + int k = (wd->miscflag-1)/3; if (k < 0) k = 0; else if (k > 4) @@ -4078,7 +4068,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s unsigned int hp = sstatus->max_hp * abs(skill_get_hp_rate(skill_id, skill_lv)) / 100, sp = sstatus->max_sp * abs(skill_get_sp_rate(skill_id, skill_lv)) / 100; - if (wd.miscflag&8) + if (wd->miscflag&8) // Base_Damage = [((Caster consumed HP + SP) / 2) x Caster Base Level / 100] % skillratio += -100 + (hp + sp) / 2; else @@ -4088,7 +4078,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s } break; case SR_SKYNETBLOW: - if (wd.miscflag&8) + if (wd->miscflag&8) //ATK [{(Skill Level x 100) + (Caster AGI) + 150} x Caster Base Level / 100] % skillratio += -100 + 100 * skill_lv + sstatus->agi + 150; else @@ -4107,7 +4097,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s } break; case SR_KNUCKLEARROW: - if (wd.miscflag&4) { // ATK [(Skill Level x 150) + (1000 x Target current weight / Maximum weight) + (Target Base Level x 5) x (Caster Base Level / 150)] % + if (wd->miscflag&4) { // ATK [(Skill Level x 150) + (1000 x Target current weight / Maximum weight) + (Target Base Level x 5) x (Caster Base Level / 150)] % skillratio += -100 + 150 * skill_lv + status_get_lv(target) * 5; if (tsd && tsd->weight) skillratio += 100 * tsd->weight / tsd->max_weight; @@ -4385,7 +4375,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -static int64 battle_calc_skill_constant_addition(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static int64 battle_calc_skill_constant_addition(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct map_session_data *tsd = BL_CAST(BL_PC, target); @@ -4448,7 +4438,7 @@ static int64 battle_calc_skill_constant_addition(struct Damage wd, struct block_ * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv) +static void battle_attack_sc_bonus(struct Damage* wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct status_change *sc = status_get_sc(src); @@ -4459,9 +4449,9 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s // Kagerou/Oboro Earth Charm effect +15% wATK if(sd && sd->spiritcharm_type == CHARM_TYPE_LAND && sd->spiritcharm > 0) { - ATK_ADDRATE(wd.damage, wd.damage2, 15 * sd->spiritcharm); + ATK_ADDRATE(wd->damage, wd->damage2, 15 * sd->spiritcharm); #ifdef RENEWAL - ATK_ADDRATE(wd.weaponAtk, wd.weaponAtk2, 15 * sd->spiritcharm); + ATK_ADDRATE(wd->weaponAtk, wd->weaponAtk2, 15 * sd->spiritcharm); #endif } @@ -4469,42 +4459,42 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s if (sc) { #ifdef RENEWAL if (sc->data[SC_WATK_ELEMENT] && skill_id != ASC_METEORASSAULT) - ATK_ADDRATE(wd.weaponAtk, wd.weaponAtk2, sc->data[SC_WATK_ELEMENT]->val2); + ATK_ADDRATE(wd->weaponAtk, wd->weaponAtk2, sc->data[SC_WATK_ELEMENT]->val2); if (sc->data[SC_IMPOSITIO]) - ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_IMPOSITIO]->val2); + ATK_ADD(wd->equipAtk, wd->equipAtk2, sc->data[SC_IMPOSITIO]->val2); if (sc->data[SC_VOLCANO]) - ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_VOLCANO]->val2); + ATK_ADD(wd->equipAtk, wd->equipAtk2, sc->data[SC_VOLCANO]->val2); if (sc->data[SC_DRUMBATTLE]) - ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_DRUMBATTLE]->val2); + ATK_ADD(wd->equipAtk, wd->equipAtk2, sc->data[SC_DRUMBATTLE]->val2); if (sc->data[SC_MADNESSCANCEL]) - ATK_ADD(wd.equipAtk, wd.equipAtk2, 100); + ATK_ADD(wd->equipAtk, wd->equipAtk2, 100); if (sc->data[SC_MAGICALBULLET]) { short tmdef = tstatus->mdef + tstatus->mdef2; if (sstatus->matk_min > tmdef && sstatus->matk_max > sstatus->matk_min) { - ATK_ADD(wd.weaponAtk, wd.weaponAtk2, i64max((sstatus->matk_min + rnd() % (sstatus->matk_max - sstatus->matk_min)) - tmdef, 0)); + ATK_ADD(wd->weaponAtk, wd->weaponAtk2, i64max((sstatus->matk_min + rnd() % (sstatus->matk_max - sstatus->matk_min)) - tmdef, 0)); } else { - ATK_ADD(wd.weaponAtk, wd.weaponAtk2, i64max(sstatus->matk_min - tmdef, 0)); + ATK_ADD(wd->weaponAtk, wd->weaponAtk2, i64max(sstatus->matk_min - tmdef, 0)); } } if (sc->data[SC_GATLINGFEVER]) { if (tstatus->size == SZ_SMALL) { - ATK_ADD(wd.equipAtk, wd.equipAtk2, 10 * sc->data[SC_GATLINGFEVER]->val1); + ATK_ADD(wd->equipAtk, wd->equipAtk2, 10 * sc->data[SC_GATLINGFEVER]->val1); } else if (tstatus->size == SZ_MEDIUM) { - ATK_ADD(wd.equipAtk, wd.equipAtk2, 5 * sc->data[SC_GATLINGFEVER]->val1); + ATK_ADD(wd->equipAtk, wd->equipAtk2, 5 * sc->data[SC_GATLINGFEVER]->val1); } else if (tstatus->size == SZ_BIG) - ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_GATLINGFEVER]->val1); + ATK_ADD(wd->equipAtk, wd->equipAtk2, sc->data[SC_GATLINGFEVER]->val1); } #else if (sc->data[SC_TRUESIGHT]) - ATK_ADDRATE(wd.damage, wd.damage2, 2 * sc->data[SC_TRUESIGHT]->val1); + ATK_ADDRATE(wd->damage, wd->damage2, 2 * sc->data[SC_TRUESIGHT]->val1); #endif if (sc->data[SC_SPIRIT]) { if (skill_id == AS_SONICBLOW && sc->data[SC_SPIRIT]->val2 == SL_ASSASIN) { - ATK_ADDRATE(wd.damage, wd.damage2, map_flag_gvg2(src->m) ? 25 : 100); //+25% dmg on woe/+100% dmg on nonwoe + ATK_ADDRATE(wd->damage, wd->damage2, map_flag_gvg2(src->m) ? 25 : 100); //+25% dmg on woe/+100% dmg on nonwoe RE_ALLATK_ADDRATE(wd, map_flag_gvg2(src->m) ? 25 : 100); //+25% dmg on woe/+100% dmg on nonwoe } else if (skill_id == CR_SHIELDBOOMERANG && sc->data[SC_SPIRIT]->val2 == SL_CRUSADER) { - ATK_ADDRATE(wd.damage, wd.damage2, 100); + ATK_ADDRATE(wd->damage, wd->damage2, 100); RE_ALLATK_ADDRATE(wd, 100); } } @@ -4534,89 +4524,89 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s case ASC_BREAKER: case GC_COUNTERSLASH: case GC_CROSSIMPACT: - ATK_RATE(wd.weaponAtk, wd.weaponAtk2, 50); - ATK_RATE(wd.equipAtk, wd.equipAtk2, 50); + ATK_RATE(wd->weaponAtk, wd->weaponAtk2, 50); + ATK_RATE(wd->equipAtk, wd->equipAtk2, 50); default: // fall through to apply EDP bonuses // Renewal EDP formula [helvetica] // weapon atk * (1 + (edp level * .8)) // equip atk * (1 + (edp level * .6)) - ATK_RATE(wd.weaponAtk, wd.weaponAtk2, 100 + (sc->data[SC_EDP]->val1 * 80)); - ATK_RATE(wd.equipAtk, wd.equipAtk2, 100 + (sc->data[SC_EDP]->val1 * 60)); + ATK_RATE(wd->weaponAtk, wd->weaponAtk2, 100 + (sc->data[SC_EDP]->val1 * 80)); + ATK_RATE(wd->equipAtk, wd->equipAtk2, 100 + (sc->data[SC_EDP]->val1 * 60)); break; #else default: - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_EDP]->val3); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_EDP]->val3); #endif } } if (sc->data[SC_GLOOMYDAY_SK] && (inf3&INF3_SC_GLOOMYDAY_SK)) { - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_GLOOMYDAY_SK]->val2); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_GLOOMYDAY_SK]->val2); RE_ALLATK_ADDRATE(wd, sc->data[SC_GLOOMYDAY_SK]->val2); } if (sc->data[SC_DANCEWITHWUG]) { if (inf3&INF3_SC_DANCEWITHWUG) { - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_DANCEWITHWUG]->val1 * 10 * battle_calc_chorusbonus(sd)); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_DANCEWITHWUG]->val1 * 10 * battle_calc_chorusbonus(sd)); RE_ALLATK_ADDRATE(wd, sc->data[SC_DANCEWITHWUG]->val1 * 10 * battle_calc_chorusbonus(sd)); } - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_DANCEWITHWUG]->val1 * 2 * battle_calc_chorusbonus(sd)); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_DANCEWITHWUG]->val1 * 2 * battle_calc_chorusbonus(sd)); #ifdef RENEWAL - ATK_ADDRATE(wd.equipAtk, wd.equipAtk2, sc->data[SC_DANCEWITHWUG]->val1 * 2 * battle_calc_chorusbonus(sd)); + ATK_ADDRATE(wd->equipAtk, wd->equipAtk2, sc->data[SC_DANCEWITHWUG]->val1 * 2 * battle_calc_chorusbonus(sd)); #endif } if(sc->data[SC_ZENKAI] && sstatus->rhw.ele == sc->data[SC_ZENKAI]->val2) { - ATK_ADD(wd.damage, wd.damage2, 200); + ATK_ADD(wd->damage, wd->damage2, 200); #ifdef RENEWAL - ATK_ADD(wd.equipAtk, wd.equipAtk2, 200); + ATK_ADD(wd->equipAtk, wd->equipAtk2, 200); #endif } if (sc->data[SC_EQC]) { - ATK_ADDRATE(wd.damage, wd.damage2, -sc->data[SC_EQC]->val2); + ATK_ADDRATE(wd->damage, wd->damage2, -sc->data[SC_EQC]->val2); #ifdef RENEWAL - ATK_ADDRATE(wd.equipAtk, wd.equipAtk2, -sc->data[SC_EQC]->val2); + ATK_ADDRATE(wd->equipAtk, wd->equipAtk2, -sc->data[SC_EQC]->val2); #endif } if(sc->data[SC_STYLE_CHANGE]) { TBL_HOM *hd = BL_CAST(BL_HOM,src); if(hd) { - ATK_ADD(wd.damage, wd.damage2, hd->homunculus.spiritball * 3); + ATK_ADD(wd->damage, wd->damage2, hd->homunculus.spiritball * 3); RE_ALLATK_ADD(wd, hd->homunculus.spiritball * 3); } } - if(sc->data[SC_UNLIMIT] && (wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { + if(sc->data[SC_UNLIMIT] && (wd->flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { switch(skill_id) { case RA_WUGDASH: case RA_WUGSTRIKE: case RA_WUGBITE: break; default: - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_UNLIMIT]->val2); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_UNLIMIT]->val2); RE_ALLATK_ADDRATE(wd, sc->data[SC_UNLIMIT]->val2); break; } } if (sc->data[SC_HEAT_BARREL]) { - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_HEAT_BARREL]->val3); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_HEAT_BARREL]->val3); RE_ALLATK_ADDRATE(wd, sc->data[SC_HEAT_BARREL]->val3); } - if((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { + if((wd->flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { if (sc->data[SC_MTF_RANGEATK]) { // Monster Transformation bonus - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_MTF_RANGEATK]->val1); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_MTF_RANGEATK]->val1); RE_ALLATK_ADDRATE(wd, sc->data[SC_MTF_RANGEATK]->val1); } if (sc->data[SC_MTF_RANGEATK2]) { // Monster Transformation bonus - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_MTF_RANGEATK2]->val1); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_MTF_RANGEATK2]->val1); RE_ALLATK_ADDRATE(wd, sc->data[SC_MTF_RANGEATK2]->val1); } if (sc->data[SC_ARCLOUSEDASH] && sc->data[SC_ARCLOUSEDASH]->val4) { - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_ARCLOUSEDASH]->val4); + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_ARCLOUSEDASH]->val4); RE_ALLATK_ADDRATE(wd, sc->data[SC_ARCLOUSEDASH]->val4); } } - if (sd && wd.flag&BF_WEAPON && sc->data[SC_GVG_GIANT] && sc->data[SC_GVG_GIANT]->val3) { - ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_GVG_GIANT]->val3); + if (sd && wd->flag&BF_WEAPON && sc->data[SC_GVG_GIANT] && sc->data[SC_GVG_GIANT]->val3) { + ATK_ADDRATE(wd->damage, wd->damage2, sc->data[SC_GVG_GIANT]->val3); RE_ALLATK_ADDRATE(wd, sc->data[SC_GVG_GIANT]->val3); } @@ -4624,11 +4614,11 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s anger_id = 2; // Always treat all monsters as star flagged monster when in miracle state } - if ((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { + if ((wd->flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { if (sd && pc_checkskill(sd, SU_POWEROFLIFE) > 0) { if ((pc_checkskill(sd, SU_SCAROFTAROU) + pc_checkskill(sd, SU_PICKYPECK) + pc_checkskill(sd, SU_ARCLOUSEDASH) + pc_checkskill(sd, SU_LUNATICCARROTBEAT) + pc_checkskill(sd, SU_HISS) + pc_checkskill(sd, SU_POWEROFFLOCK) + pc_checkskill(sd, SU_SVG_SPIRIT)) > 19) { - ATK_ADDRATE(wd.damage, wd.damage2, 20); + ATK_ADDRATE(wd->damage, wd->damage2, 20); RE_ALLATK_ADDRATE(wd, 20); } } @@ -4645,13 +4635,11 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s skillratio += sstatus->str; // SG_STAR_ANGER additionally has STR added in its formula. if (anger_level < 4) skillratio /= 12 - 3 * anger_level; - ATK_ADDRATE(wd.damage, wd.damage2, skillratio); + ATK_ADDRATE(wd->damage, wd->damage2, skillratio); #ifdef RENEWAL RE_ALLATK_ADDRATE(wd, skillratio); #endif } - - return wd; } /*==================================== @@ -4662,7 +4650,7 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_calc_defense_reduction(struct Damage wd, struct block_list *src,struct block_list *target, uint16 skill_id, uint16 skill_lv) +static void battle_calc_defense_reduction(struct Damage* wd, struct block_list *src,struct block_list *target, uint16 skill_id, uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct map_session_data *tsd = BL_CAST(BL_PC, target); @@ -4798,27 +4786,26 @@ struct Damage battle_calc_defense_reduction(struct Damage wd, struct block_list */ if( def1 == -400 ) /* -400 creates a division by 0 and subsequently crashes */ def1 = -399; - ATK_ADD2(wd.damage, wd.damage2, + ATK_ADD2(wd->damage, wd->damage2, is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ? (def1*battle_calc_attack_skill_ratio(wd, src, target, skill_id, skill_lv))/200 : 0, is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ? (def1*battle_calc_attack_skill_ratio(wd, src, target, skill_id, skill_lv))/200 : 0 ); if( !attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_R) && !is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ) - wd.damage = wd.damage * (4000+def1) / (4000+10*def1) - vit_def; + wd->damage = wd->damage * (4000+def1) / (4000+10*def1) - vit_def; if( is_attack_left_handed(src, skill_id) && !attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_L) && !is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ) - wd.damage2 = wd.damage2 * (4000+def1) / (4000+10*def1) - vit_def; + wd->damage2 = wd->damage2 * (4000+def1) / (4000+10*def1) - vit_def; #else if (def1 > 100) def1 = 100; - ATK_RATE2(wd.damage, wd.damage2, + ATK_RATE2(wd->damage, wd->damage2, attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ?100:(is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ? (int64)is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R)*(def1+vit_def) : (100-def1)), attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ?100:(is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ? (int64)is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L)*(def1+vit_def) : (100-def1)) ); - ATK_ADD2(wd.damage, wd.damage2, + ATK_ADD2(wd->damage, wd->damage2, attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_R) || is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ?0:-vit_def, attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_L) || is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ?0:-vit_def ); #endif - return wd; } /*==================================== @@ -4829,7 +4816,7 @@ struct Damage battle_calc_defense_reduction(struct Damage wd, struct block_list * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_calc_attack_post_defense(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static void battle_calc_attack_post_defense(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct status_change *sc = status_get_sc(src); @@ -4844,41 +4831,39 @@ struct Damage battle_calc_attack_post_defense(struct Damage wd, struct block_lis ) { int lv = sc->data[SC_AURABLADE]->val1; #ifdef RENEWAL - lv *= ((skill_id == LK_SPIRALPIERCE || skill_id == ML_SPIRALPIERCE)?wd.div_:1); // +100 per hit in lv 5 + lv *= ((skill_id == LK_SPIRALPIERCE || skill_id == ML_SPIRALPIERCE)?wd->div_:1); // +100 per hit in lv 5 #endif - ATK_ADD(wd.damage, wd.damage2, 20*lv); + ATK_ADD(wd->damage, wd->damage2, 20*lv); } } #ifndef RENEWAL - wd = battle_calc_attack_masteries(wd, src, target, skill_id, skill_lv); + battle_calc_attack_masteries(wd, src, target, skill_id, skill_lv); //Refine bonus if (sd && battle_skill_stacks_masteries_vvs(skill_id) && skill_id != MO_INVESTIGATE && skill_id != MO_EXTREMITYFIST) { // Counts refine bonus multiple times if (skill_id == MO_FINGEROFFENSIVE) { - ATK_ADD2(wd.damage, wd.damage2, wd.div_*sstatus->rhw.atk2, wd.div_*sstatus->lhw.atk2); + ATK_ADD2(wd->damage, wd->damage2, wd->div_*sstatus->rhw.atk2, wd->div_*sstatus->lhw.atk2); } else { - ATK_ADD2(wd.damage, wd.damage2, sstatus->rhw.atk2, sstatus->lhw.atk2); + ATK_ADD2(wd->damage, wd->damage2, sstatus->rhw.atk2, sstatus->lhw.atk2); } } #endif //Set to min of 1 - if (is_attack_right_handed(src, skill_id) && wd.damage < 1) wd.damage = 1; - if (is_attack_left_handed(src, skill_id) && wd.damage2 < 1) wd.damage2 = 1; + if (is_attack_right_handed(src, skill_id) && wd->damage < 1) wd->damage = 1; + if (is_attack_left_handed(src, skill_id) && wd->damage2 < 1) wd->damage2 = 1; switch (skill_id) { case AS_SONICBLOW: if(sd && pc_checkskill(sd,AS_SONICACCEL)>0) - ATK_ADDRATE(wd.damage, wd.damage2, 10); + ATK_ADDRATE(wd->damage, wd->damage2, 10); break; case NC_AXETORNADO: if( (sstatus->rhw.ele) == ELE_WIND || (sstatus->lhw.ele) == ELE_WIND ) - ATK_ADDRATE(wd.damage, wd.damage2, 25); + ATK_ADDRATE(wd->damage, wd->damage2, 25); break; } - - return wd; } /*================================================================================= @@ -4889,7 +4874,7 @@ struct Damage battle_calc_attack_post_defense(struct Damage wd, struct block_lis * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_calc_attack_plant(struct Damage wd, struct block_list *src,struct block_list *target, uint16 skill_id, uint16 skill_lv) +static void battle_calc_attack_plant(struct Damage* wd, struct block_list *src,struct block_list *target, uint16 skill_id, uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct status_data *tstatus = status_get_status_data(target); @@ -4902,50 +4887,48 @@ struct Damage battle_calc_attack_plant(struct Damage wd, struct block_list *src, status_change_end(src, SC_CAMOUFLAGE, INVALID_TIMER); //Plants receive 1 damage when hit - if( attack_hits || wd.damage > 0 ) - wd.damage = 1; //In some cases, right hand no need to have a weapon to deal a damage - if( is_attack_left_handed(src, skill_id) && (attack_hits || wd.damage2 > 0) ) { + if( attack_hits || wd->damage > 0 ) + wd->damage = 1; //In some cases, right hand no need to have a weapon to deal a damage + if( is_attack_left_handed(src, skill_id) && (attack_hits || wd->damage2 > 0) ) { if(sd->status.weapon == W_KATAR) - wd.damage2 = 0; //No backhand damage against plants + wd->damage2 = 0; //No backhand damage against plants else { - wd.damage2 = 1; //Deal 1 HP damage as long as there is a weapon in the left hand + wd->damage2 = 1; //Deal 1 HP damage as long as there is a weapon in the left hand } } if (attack_hits && target->type == BL_MOB) { struct status_change *sc = status_get_sc(target); - if (sc && !battle_check_sc(src, target, sc, &wd, 1, skill_id, skill_lv)) { - wd.damage = wd.damage2 = 0; - return wd; + if (sc && !battle_check_sc(src, target, sc, wd, 1, skill_id, skill_lv)) { + wd->damage = wd->damage2 = 0; + return; } } if( attack_hits && class_ == MOBID_EMPERIUM ) { if(target && !battle_can_hit_gvg_target(src,target,skill_id,(skill_id)?BF_SKILL:0) && map_flag_gvg2(target->m)) { - wd.damage = wd.damage2 = 0; - return wd; + wd->damage = wd->damage2 = 0; + return; } - if (wd.damage > 0) { - wd.damage = battle_attr_fix(src, target, wd.damage, right_element, tstatus->def_ele, tstatus->ele_lv); - wd.damage = battle_calc_gvg_damage(src, target, wd.damage, skill_id, wd.flag); - } else if (wd.damage2 > 0) { - wd.damage2 = battle_attr_fix(src, target, wd.damage2, left_element, tstatus->def_ele, tstatus->ele_lv); - wd.damage2 = battle_calc_gvg_damage(src, target, wd.damage2, skill_id, wd.flag); + if (wd->damage > 0) { + wd->damage = battle_attr_fix(src, target, wd->damage, right_element, tstatus->def_ele, tstatus->ele_lv); + wd->damage = battle_calc_gvg_damage(src, target, wd->damage, skill_id, wd->flag); + } else if (wd->damage2 > 0) { + wd->damage2 = battle_attr_fix(src, target, wd->damage2, left_element, tstatus->def_ele, tstatus->ele_lv); + wd->damage2 = battle_calc_gvg_damage(src, target, wd->damage2, skill_id, wd->flag); } - return wd; + return; } //For plants we don't continue with the weapon attack code, so we have to apply DAMAGE_DIV_FIX here - wd = battle_apply_div_fix(wd, skill_id); + battle_apply_div_fix(wd, skill_id); //If there is left hand damage, total damage can never exceed 2, even on multiple hits - if(wd.damage > 1 && wd.damage2 > 0) { - wd.damage = 1; - wd.damage2 = 1; + if(wd->damage > 1 && wd->damage2 > 0) { + wd->damage = 1; + wd->damage2 = 1; } - - return wd; } /*======================================================================================== @@ -4956,7 +4939,7 @@ struct Damage battle_calc_attack_plant(struct Damage wd, struct block_list *src, * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_calc_attack_left_right_hands(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static void battle_calc_attack_left_right_hands(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); @@ -4964,46 +4947,44 @@ struct Damage battle_calc_attack_left_right_hands(struct Damage wd, struct block int skill; if (!is_attack_right_handed(src, skill_id) && is_attack_left_handed(src, skill_id)) { - wd.damage = wd.damage2; - wd.damage2 = 0; + wd->damage = wd->damage2; + wd->damage2 = 0; } else if(sd->status.weapon == W_KATAR && !skill_id) { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2) skill = pc_checkskill(sd,TF_DOUBLE); - wd.damage2 = (int64)wd.damage * (1 + (skill * 2))/100; + wd->damage2 = (int64)wd->damage * (1 + (skill * 2))/100; } else if(is_attack_right_handed(src, skill_id) && is_attack_left_handed(src, skill_id)) { //Dual-wield - if (wd.damage) { + if (wd->damage) { if( (sd->class_&MAPID_BASEMASK) == MAPID_THIEF ) { skill = pc_checkskill(sd,AS_RIGHT); - ATK_RATER(wd.damage, 50 + (skill * 10)) + ATK_RATER(wd->damage, 50 + (skill * 10)) } else if(sd->class_ == MAPID_KAGEROUOBORO) { skill = pc_checkskill(sd,KO_RIGHT); - ATK_RATER(wd.damage, 70 + (skill * 10)) + ATK_RATER(wd->damage, 70 + (skill * 10)) } - if(wd.damage < 1) - wd.damage = 1; + if(wd->damage < 1) + wd->damage = 1; } - if (wd.damage2) { + if (wd->damage2) { if( (sd->class_&MAPID_BASEMASK) == MAPID_THIEF) { skill = pc_checkskill(sd,AS_LEFT); - ATK_RATEL(wd.damage2, 30 + (skill * 10)) + ATK_RATEL(wd->damage2, 30 + (skill * 10)) } else if(sd->class_ == MAPID_KAGEROUOBORO) { skill = pc_checkskill(sd,KO_LEFT); - ATK_RATEL(wd.damage2, 50 + (skill * 10)) + ATK_RATEL(wd->damage2, 50 + (skill * 10)) } - if(wd.damage2 < 1) - wd.damage2 = 1; + if(wd->damage2 < 1) + wd->damage2 = 1; } } } - if(!is_attack_right_handed(src, skill_id) && !is_attack_left_handed(src, skill_id) && wd.damage) - wd.damage=0; + if(!is_attack_right_handed(src, skill_id) && !is_attack_left_handed(src, skill_id) && wd->damage) + wd->damage=0; - if(!is_attack_left_handed(src, skill_id) && wd.damage2) - wd.damage2=0; - - return wd; + if(!is_attack_left_handed(src, skill_id) && wd->damage2) + wd->damage2=0; } /** @@ -5030,59 +5011,58 @@ struct block_list *battle_check_devotion(struct block_list *bl) { * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_calc_attack_gvg_bg(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static void battle_calc_attack_gvg_bg(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { - if( wd.damage + wd.damage2 ) { //There is a total damage value + if( wd->damage + wd->damage2 ) { //There is a total damage value if( src != target && //Don't reflect your own damage (Grand Cross) (!skill_id || skill_id || (src->type == BL_SKILL && (skill_id == SG_SUN_WARM || skill_id == SG_MOON_WARM || skill_id == SG_STAR_WARM))) ) { - int64 damage = wd.damage + wd.damage2, rdamage = 0; + int64 damage = wd->damage + wd->damage2, rdamage = 0; struct map_session_data *tsd = BL_CAST(BL_PC, target); struct status_data *sstatus = status_get_status_data(src); int tick = gettick(), rdelay = 0; - rdamage = battle_calc_return_damage(target, src, &damage, wd.flag, skill_id, false); + rdamage = battle_calc_return_damage(target, src, &damage, wd->flag, skill_id, false); if( rdamage > 0 ) { //Item reflect gets calculated before any mapflag reducing is applicated struct block_list *d_bl = battle_check_devotion(src); - rdelay = clif_damage(src, (!d_bl) ? src : d_bl, tick, wd.amotion, sstatus->dmotion, rdamage, 1, DMG_ENDURE, 0, false); + rdelay = clif_damage(src, (!d_bl) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, DMG_ENDURE, 0, false); if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, sstatus->class_); //Use Reflect Shield to signal this kind of skill trigger [Skotlex] - battle_delay_damage(tick, wd.amotion, target, (!d_bl) ? src : d_bl, 0, CR_REFLECTSHIELD, 0, rdamage, ATK_DEF, rdelay, true, false); + battle_delay_damage(tick, wd->amotion, target, (!d_bl) ? src : d_bl, 0, CR_REFLECTSHIELD, 0, rdamage, ATK_DEF, rdelay, true, false); skill_additional_effect(target, (!d_bl) ? src : d_bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL, ATK_DEF, tick); } } struct map_data *mapdata = map_getmapdata(target->m); - if(!wd.damage2) { - wd.damage = battle_calc_damage(src,target,&wd,wd.damage,skill_id,skill_lv); + if(!wd->damage2) { + wd->damage = battle_calc_damage(src,target,wd,wd->damage,skill_id,skill_lv); if( mapdata_flag_gvg2(mapdata) ) - wd.damage=battle_calc_gvg_damage(src,target,wd.damage,skill_id,wd.flag); + wd->damage=battle_calc_gvg_damage(src,target,wd->damage,skill_id,wd->flag); else if( mapdata->flag[MF_BATTLEGROUND] ) - wd.damage=battle_calc_bg_damage(src,target,wd.damage,skill_id,wd.flag); + wd->damage=battle_calc_bg_damage(src,target,wd->damage,skill_id,wd->flag); } - else if(!wd.damage) { - wd.damage2 = battle_calc_damage(src,target,&wd,wd.damage2,skill_id,skill_lv); + else if(!wd->damage) { + wd->damage2 = battle_calc_damage(src,target,wd,wd->damage2,skill_id,skill_lv); if( mapdata_flag_gvg2(mapdata) ) - wd.damage2 = battle_calc_gvg_damage(src,target,wd.damage2,skill_id,wd.flag); + wd->damage2 = battle_calc_gvg_damage(src,target,wd->damage2,skill_id,wd->flag); else if( mapdata->flag[MF_BATTLEGROUND] ) - wd.damage2 = battle_calc_bg_damage(src,target,wd.damage2,skill_id,wd.flag); + wd->damage2 = battle_calc_bg_damage(src,target,wd->damage2,skill_id,wd->flag); } else { - int64 d1 = wd.damage + wd.damage2,d2 = wd.damage2; - wd.damage = battle_calc_damage(src,target,&wd,d1,skill_id,skill_lv); + int64 d1 = wd->damage + wd->damage2,d2 = wd->damage2; + wd->damage = battle_calc_damage(src,target,wd,d1,skill_id,skill_lv); if( mapdata_flag_gvg2(mapdata) ) - wd.damage = battle_calc_gvg_damage(src,target,wd.damage,skill_id,wd.flag); + wd->damage = battle_calc_gvg_damage(src,target,wd->damage,skill_id,wd->flag); else if( mapdata->flag[MF_BATTLEGROUND] ) - wd.damage = battle_calc_bg_damage(src,target,wd.damage,skill_id,wd.flag); - wd.damage2 = (int64)d2*100/d1 * wd.damage/100; - if(wd.damage > 1 && wd.damage2 < 1) wd.damage2 = 1; - wd.damage-=wd.damage2; + wd->damage = battle_calc_bg_damage(src,target,wd->damage,skill_id,wd->flag); + wd->damage2 = (int64)d2*100/d1 * wd->damage/100; + if(wd->damage > 1 && wd->damage2 < 1) wd->damage2 = 1; + wd->damage-=wd->damage2; } } - return wd; } /*========================================== @@ -5093,7 +5073,7 @@ struct Damage battle_calc_attack_gvg_bg(struct Damage wd, struct block_list *src * Initial refactoring by Baalberith * Refined and optimized by helvetica */ -struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) +static void battle_calc_weapon_final_atk_modifiers(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct map_session_data *tsd = BL_CAST(BL_PC, target); @@ -5104,7 +5084,7 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl int skill_damage = 0; //Reject Sword bugreport:4493 by Daegaladh - if(wd.damage && tsc && tsc->data[SC_REJECTSWORD] && + if(wd->damage && tsc && tsc->data[SC_REJECTSWORD] && (src->type!=BL_PC || ( ((TBL_PC *)src)->weapontype1 == W_DAGGER || ((TBL_PC *)src)->weapontype1 == W_1HSWORD || @@ -5113,20 +5093,20 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl rnd()%100 < tsc->data[SC_REJECTSWORD]->val2 ) { - ATK_RATER(wd.damage, 50) - status_fix_damage(target,src,wd.damage,clif_damage(target,src,gettick(),0,0,wd.damage,0,DMG_NORMAL,0,false)); + ATK_RATER(wd->damage, 50) + status_fix_damage(target,src,wd->damage,clif_damage(target,src,gettick(),0,0,wd->damage,0,DMG_NORMAL,0,false)); 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); } - if( tsc && tsc->data[SC_CRESCENTELBOW] && wd.flag&BF_SHORT && rnd()%100 < tsc->data[SC_CRESCENTELBOW]->val2 ) { + if( tsc && tsc->data[SC_CRESCENTELBOW] && wd->flag&BF_SHORT && rnd()%100 < tsc->data[SC_CRESCENTELBOW]->val2 ) { //ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}] int64 rdamage = 0; int ratio = (int64)(status_get_hp(src) / 100) * tsc->data[SC_CRESCENTELBOW]->val1 * status_get_lv(target) / 125; if (ratio > 5000) ratio = 5000; // Maximum of 5000% ATK rdamage = battle_calc_base_damage(target,tstatus,&tstatus->rhw,tsc,sstatus->size,0); - rdamage = (int64)rdamage * ratio / 100 + wd.damage * (10 + tsc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10; + rdamage = (int64)rdamage * ratio / 100 + wd->damage * (10 + tsc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10; skill_blown(target, src, skill_get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1), unit_getdir(src), BLOWN_NONE); clif_skill_damage(target, src, gettick(), status_get_amotion(src), 0, rdamage, 1, SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1, DMG_SKILL); // This is how official does @@ -5150,7 +5130,7 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl status_zap(src, hp, 0); } // Only affecting non-skills - if (!skill_id && wd.dmg_lv > ATK_BLOCK) { + if (!skill_id && wd->dmg_lv > ATK_BLOCK) { if (sc->data[SC_ENCHANTBLADE]) { //[((Skill Lv x 20) + 100) x (casterBaseLevel / 150)] + casterInt + MATK - MDEF - MDEF2 int64 enchant_dmg = sc->data[SC_ENCHANTBLADE]->val2; @@ -5160,7 +5140,7 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl enchant_dmg = enchant_dmg + sstatus->matk_min; enchant_dmg = enchant_dmg - (tstatus->mdef + tstatus->mdef2); if (enchant_dmg > 0) - ATK_ADD(wd.damage, wd.damage2, enchant_dmg); + ATK_ADD(wd->damage, wd->damage2, enchant_dmg); } } if (skill_id != SN_SHARPSHOOTING && skill_id != RA_ARROWSTORM) @@ -5169,15 +5149,15 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl switch (skill_id) { case LG_RAYOFGENESIS: { - struct Damage md = battle_calc_magic_attack(src, target, skill_id, skill_lv, wd.miscflag); - wd.damage += md.damage; + struct Damage md = battle_calc_magic_attack(src, target, skill_id, skill_lv, wd->miscflag); + wd->damage += md.damage; } break; #ifndef RENEWAL case ASC_BREAKER: { //Breaker's int-based damage (a misc attack?) - struct Damage md = battle_calc_misc_attack(src, target, skill_id, skill_lv, wd.miscflag); - wd.damage += md.damage; + struct Damage md = battle_calc_misc_attack(src, target, skill_id, skill_lv, wd->miscflag); + wd->damage += md.damage; } break; #endif @@ -5185,8 +5165,7 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl // Skill damage adjustment if ((skill_damage = battle_skill_damage(src, target, skill_id)) != 0) - ATK_ADDRATE(wd.damage, wd.damage2, skill_damage); - return wd; + ATK_ADDRATE(wd->damage, wd->damage2, skill_damage); } /*==================================================== @@ -5365,8 +5344,8 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl wd = initialize_weapon_data(src, target, skill_id, skill_lv, wflag); - right_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_R, false); - left_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_L, false); + right_element = battle_get_weapon_element(&wd, src, target, skill_id, skill_lv, EQI_HAND_R, false); + left_element = battle_get_weapon_element(&wd, src, target, skill_id, skill_lv, EQI_HAND_L, false); if (sc && !sc->count) sc = NULL; //Skip checking as there are no status changes active. @@ -5386,29 +5365,29 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl } // on official check for multi hit first so we can override crit on double attack [helvetica] - wd = battle_calc_multi_attack(wd, src, target, skill_id, skill_lv); + battle_calc_multi_attack(&wd, src, target, skill_id, skill_lv); // crit check is next since crits always hit on official [helvetica] - if (is_attack_critical(wd, src, target, skill_id, skill_lv, true)) + if (is_attack_critical(&wd, src, target, skill_id, skill_lv, true)) wd.type = DMG_CRITICAL; // check if we're landing a hit - if(!is_attack_hitting(wd, src, target, skill_id, skill_lv, true)) + if(!is_attack_hitting(&wd, src, target, skill_id, skill_lv, true)) wd.dmg_lv = ATK_FLEE; else if(!(infdef = is_infinite_defense(target, wd.flag))) { //no need for math against plants int64 ratio = 0; int i = 0; - wd = battle_calc_skill_base_damage(wd, src, target, skill_id, skill_lv); // base skill damage - ratio = battle_calc_attack_skill_ratio(wd, src, target, skill_id, skill_lv); // skill level ratios + battle_calc_skill_base_damage(&wd, src, target, skill_id, skill_lv); // base skill damage + ratio = battle_calc_attack_skill_ratio(&wd, src, target, skill_id, skill_lv); // skill level ratios ATK_RATE(wd.damage, wd.damage2, ratio); - RE_ALLATK_RATE(wd, ratio); + RE_ALLATK_RATE(&wd, ratio); - ratio = battle_calc_skill_constant_addition(wd, src, target, skill_id, skill_lv); // other skill bonuses + ratio = battle_calc_skill_constant_addition(&wd, src, target, skill_id, skill_lv); // other skill bonuses ATK_ADD(wd.damage, wd.damage2, ratio); - RE_ALLATK_ADD(wd, ratio); + RE_ALLATK_ADD(&wd, ratio); #ifdef RENEWAL if(skill_id == HW_MAGICCRASHER) { // Add weapon attack for MATK onto Magic Crasher @@ -5423,11 +5402,11 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl // add any miscellaneous player ATK bonuses if( sd && skill_id && (i = pc_skillatk_bonus(sd, skill_id))) { ATK_ADDRATE(wd.damage, wd.damage2, i); - RE_ALLATK_ADDRATE(wd, i); + RE_ALLATK_ADDRATE(&wd, i); } if (tsd && (i = pc_sub_skillatk_bonus(tsd, skill_id))) { ATK_ADDRATE(wd.damage, wd.damage2, -i); - RE_ALLATK_ADDRATE(wd, -i); + RE_ALLATK_ADDRATE(&wd, -i); } #ifdef RENEWAL @@ -5441,7 +5420,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl } // final attack bonuses that aren't affected by cards - wd = battle_attack_sc_bonus(wd, src, target, skill_id, skill_lv); + battle_attack_sc_bonus(&wd, src, target, skill_id, skill_lv); if (sd) { //monsters, homuns and pets have their damage computed directly wd.damage = wd.statusAtk + wd.weaponAtk + wd.equipAtk + wd.masteryAtk; @@ -5451,27 +5430,27 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl } #else // final attack bonuses that aren't affected by cards - wd = battle_attack_sc_bonus(wd, src, target, skill_id, skill_lv); + battle_attack_sc_bonus(&wd, src, target, skill_id, skill_lv); #endif if (wd.damage + wd.damage2) { //Check if attack ignores DEF - if(!attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_L) || !attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_R)) - wd = battle_calc_defense_reduction(wd, src, target, skill_id, skill_lv); + if(!attack_ignores_def(&wd, src, target, skill_id, skill_lv, EQI_HAND_L) || !attack_ignores_def(&wd, src, target, skill_id, skill_lv, EQI_HAND_R)) + battle_calc_defense_reduction(&wd, src, target, skill_id, skill_lv); - wd = battle_calc_attack_post_defense(wd, src, target, skill_id, skill_lv); + battle_calc_attack_post_defense(&wd, src, target, skill_id, skill_lv); } } #ifdef RENEWAL if(!sd) // monsters only have a single ATK for element, in pre-renewal we also apply element to entire ATK on players [helvetica] #endif - wd = battle_calc_element_damage(wd, src, target, skill_id, skill_lv); + battle_calc_element_damage(&wd, src, target, skill_id, skill_lv); if(skill_id == CR_GRANDCROSS || skill_id == NPC_GRANDDARKNESS) return wd; //Enough, rest is not needed. #ifdef RENEWAL - if (!skill_id && is_attack_critical(wd, src, target, skill_id, skill_lv, false)) { + if (!skill_id && is_attack_critical(&wd, src, target, skill_id, skill_lv, false)) { if (sd) { //Check for player so we don't crash out, monsters don't have bonus crit rates [helvetica] wd.damage = (int)floor((float)((wd.damage * 140) / 100 * (100 + sd->bonus.crit_atk_rate)) / 100); if (is_attack_left_handed(src, skill_id)) @@ -5634,13 +5613,15 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl DAMAGE_DIV_FIX_RENEWAL(wd, wd.div_); #endif // only do 1 dmg to plant, no need to calculate rest - if(infdef) - return battle_calc_attack_plant(wd, src, target, skill_id, skill_lv); + if(infdef){ + battle_calc_attack_plant(&wd, src, target, skill_id, skill_lv); + return wd; + } //Apply DAMAGE_DIV_FIX and check for min damage - wd = battle_apply_div_fix(wd, skill_id); + battle_apply_div_fix(&wd, skill_id); - wd = battle_calc_attack_left_right_hands(wd, src, target, skill_id, skill_lv); + battle_calc_attack_left_right_hands(&wd, src, target, skill_id, skill_lv); switch (skill_id) { #ifdef RENEWAL @@ -5652,11 +5633,11 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl case SO_VARETYR_SPEAR: return wd; //These skills will do a GVG fix later default: - wd = battle_calc_attack_gvg_bg(wd, src, target, skill_id, skill_lv); + battle_calc_attack_gvg_bg(&wd, src, target, skill_id, skill_lv); break; } - wd = battle_calc_weapon_final_atk_modifiers(wd, src, target, skill_id, skill_lv); + battle_calc_weapon_final_atk_modifiers(&wd, src, target, skill_id, skill_lv); battle_absorb_damage(target, &wd); @@ -6385,7 +6366,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list } //Hint: Against plants damage will still be 1 at this point //Apply DAMAGE_DIV_FIX and check for min damage - ad = battle_apply_div_fix(ad, skill_id); + battle_apply_div_fix(&ad, skill_id); #ifdef RENEWAL switch(skill_id) { @@ -6766,7 +6747,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } //Apply DAMAGE_DIV_FIX and check for min damage - md = battle_apply_div_fix(md, skill_id); + battle_apply_div_fix(&md, skill_id); switch(skill_id) { case RA_FIRINGTRAP: diff --git a/src/map/battle.hpp b/src/map/battle.hpp index a69c402274..52db98b9ad 100644 --- a/src/map/battle.hpp +++ b/src/map/battle.hpp @@ -87,7 +87,6 @@ extern int attr_fix_table[MAX_ELE_LEVEL][ELE_MAX][ELE_MAX]; // Damage Calculation struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,uint16 skill_id,uint16 skill_lv,int flag); -struct Damage battle_calc_attack_plant(struct Damage wd, struct block_list *src,struct block_list *target, uint16 skill_id, uint16 skill_lv); int64 battle_calc_return_damage(struct block_list *bl, struct block_list *src, int64 *, int flag, uint16 skill_id, bool status_reflect); diff --git a/src/map/cashshop.cpp b/src/map/cashshop.cpp index bae204f06f..df26abde73 100644 --- a/src/map/cashshop.cpp +++ b/src/map/cashshop.cpp @@ -143,7 +143,7 @@ static int cashshop_read_db_sql( void ){ Sql_FreeResult( mmysql_handle ); - ShowStatus( "Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, cash_db_name[fi] ); + ShowStatus( "Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, cash_db_name[fi] ); } return 0; @@ -232,7 +232,7 @@ static void sale_read_db_sql( void ){ Sql_FreeResult(mmysql_handle); - ShowStatus( "Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, sales_table ); + ShowStatus( "Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, sales_table ); } static TIMER_FUNC(sale_end_timer){ diff --git a/src/map/chrif.cpp b/src/map/chrif.cpp index 3c0cb27ba3..0994925c34 100644 --- a/src/map/chrif.cpp +++ b/src/map/chrif.cpp @@ -692,7 +692,7 @@ void chrif_authok(int fd) { //Check if both servers agree on the struct's size if( RFIFOW(fd,2) - 25 != sizeof(struct mmo_charstatus) ) { - ShowError("chrif_authok: Data size mismatch! %d != %d\n", RFIFOW(fd,2) - 25, sizeof(struct mmo_charstatus)); + ShowError("chrif_authok: Data size mismatch! %d != %" PRIuPTR "\n", RFIFOW(fd,2) - 25, sizeof(struct mmo_charstatus)); return; } @@ -1986,13 +1986,13 @@ void do_final_chrif(void) { *------------------------------------------*/ void do_init_chrif(void) { if(sizeof(struct mmo_charstatus) > 0xFFFF){ - ShowError("mmo_charstatus size = %d is too big to be transmitted. (must be below 0xFFFF)\n", + ShowError("mmo_charstatus size = %" PRIuPTR " is too big to be transmitted. (must be below 0xFFFF)\n", sizeof(struct mmo_charstatus)); exit(EXIT_FAILURE); } if (sizeof(struct s_storage) > 0xFFFF) { - ShowError("s_storage size = %d is too big to be transmitted. (must be below 0xFFFF)\n", sizeof(struct s_storage)); + ShowError("s_storage size = %" PRIuPTR " is too big to be transmitted. (must be below 0xFFFF)\n", sizeof(struct s_storage)); exit(EXIT_FAILURE); } diff --git a/src/map/clif.cpp b/src/map/clif.cpp index b375fad02a..3fcfb68a1a 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -6216,7 +6216,7 @@ void clif_GlobalMessage(struct block_list* bl, const char* message, enum send_ta static_assert(CHAT_SIZE_MAX > 8, "CHAT_SIZE_MAX too small for packet"); if( len > CHAT_SIZE_MAX ) { - ShowWarning("clif_GlobalMessage: Truncating too long message '%s' (len=%d).\n", message, len); + ShowWarning("clif_GlobalMessage: Truncating too long message '%s' (len=%" PRIuPTR ").\n", message, len); len = CHAT_SIZE_MAX; } std::unique_ptr buf(new char[8+len]); @@ -7632,7 +7632,7 @@ void clif_party_message(struct party_data* p, uint32 account_id, const char* mes if( len > sizeof(buf)-8 ) { - ShowWarning("clif_party_message: Truncated message '%s' (len=%d, max=%d, party_id=%d).\n", mes, len, sizeof(buf)-8, p->party.party_id); + ShowWarning("clif_party_message: Truncated message '%s' (len=%d, max=%" PRIuPTR ", party_id=%d).\n", mes, len, sizeof(buf)-8, p->party.party_id); len = sizeof(buf)-8; } @@ -8826,7 +8826,7 @@ void clif_guild_message(struct guild *g,uint32 account_id,const char *mes,int le } else if( len > sizeof(buf)-5 ) { - ShowWarning("clif_guild_message: Truncated message '%s' (len=%d, max=%d, guild_id=%d).\n", mes, len, sizeof(buf)-5, g->guild_id); + ShowWarning("clif_guild_message: Truncated message '%s' (len=%d, max=%" PRIuPTR ", guild_id=%d).\n", mes, len, sizeof(buf)-5, g->guild_id); len = sizeof(buf)-5; } @@ -9085,7 +9085,7 @@ void clif_disp_message(struct block_list* src, const char* mes, int len, enum se if( len == 0 ) { return; } else if( len > sizeof(buf)-5 ) { - ShowWarning("clif_disp_message: Truncated message '%s' (len=%d, max=%d, aid=%d).\n", mes, len, sizeof(buf)-5, src->id); + ShowWarning("clif_disp_message: Truncated message '%s' (len=%d, max=%" PRIuPTR ", aid=%d).\n", mes, len, sizeof(buf)-5, src->id); len = sizeof(buf)-5; } @@ -19032,7 +19032,7 @@ void clif_showscript(struct block_list* bl, const char* message, enum send_targe len = strlen(message)+1; if( len > sizeof(buf)-8 ) { - ShowWarning("clif_showscript: Truncating too long message '%s' (len=%d).\n", message, len); + ShowWarning("clif_showscript: Truncating too long message '%s' (len=%" PRIuPTR ").\n", message, len); len = sizeof(buf)-8; } @@ -19070,7 +19070,7 @@ void clif_clan_message(struct clan *clan,const char *mes,int len){ if( len == 0 ){ return; }else if( len > (sizeof(buf)-5-NAME_LENGTH) ){ - ShowWarning("clif_clan_message: Truncated message '%s' (len=%d, max=%d, clan_id=%d).\n", mes, len, sizeof(buf)-5, clan->id); + ShowWarning("clif_clan_message: Truncated message '%s' (len=%d, max=%" PRIuPTR ", clan_id=%d).\n", mes, len, sizeof(buf)-5, clan->id); len = sizeof(buf)-5-NAME_LENGTH; } diff --git a/src/map/homunculus.cpp b/src/map/homunculus.cpp index aae3f9a1aa..7a79f65567 100644 --- a/src/map/homunculus.cpp +++ b/src/map/homunculus.cpp @@ -1591,11 +1591,12 @@ void read_homunculus_expdb(void) memset(hexptbl,0,sizeof(hexptbl)); for (i = 0; i < ARRAYLENGTH(filename); i++) { FILE *fp; + char path[1024]; char line[1024]; int j=0; - sprintf(line, "%s/%s", db_path, filename[i]); - fp = fopen(line,"r"); + sprintf(path, "%s/%s", db_path, filename[i]); + fp = fopen(path,"r"); if (fp == NULL) { if (i != 0) continue; @@ -1611,11 +1612,11 @@ void read_homunculus_expdb(void) break; } if (hexptbl[MAX_LEVEL - 1]) { // Last permitted level have to be 0! - ShowWarning("read_hexptbl: Reached max level in %s [%d]. Remaining lines were not read.\n ",filename,MAX_LEVEL); + ShowWarning("read_hexptbl: Reached max level in %s [%d]. Remaining lines were not read.\n ",path,MAX_LEVEL); hexptbl[MAX_LEVEL - 1] = 0; } fclose(fp); - ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' levels in '" CL_WHITE "%s/%s" CL_RESET "'.\n", j, db_path, filename[i]); + ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' levels in '" CL_WHITE "%s/%s" CL_RESET "'.\n", j, db_path, path); } } diff --git a/src/map/intif.cpp b/src/map/intif.cpp index 70006d254a..f5a0cc0c9e 100644 --- a/src/map/intif.cpp +++ b/src/map/intif.cpp @@ -428,7 +428,7 @@ int intif_saveregistry(struct map_session_data *sd) ++len; if (!lValid) { //this is sql colum size, must be retrive from config - ShowError("intif_saveregistry: Variable name length is too long (aid: %d, cid: %d): '%s' sz=%d\n", sd->status.account_id, sd->status.char_id, varname, len); + ShowError("intif_saveregistry: Variable name length is too long (aid: %d, cid: %d): '%s' sz=%" PRIuPTR "\n", sd->status.account_id, sd->status.char_id, varname, len); continue; } WFIFOB(inter_fd, plen) = (unsigned char)len; // won't be higher; the column size is 32 @@ -450,7 +450,7 @@ int intif_saveregistry(struct map_session_data *sd) lValid = script_check_RegistryVariableLength(1,p->value,&len); ++len; if ( !lValid ) { // error can't be higher; the column size is 254. (nb the transmission limit with be fixed with protobuf revamp) - ShowDebug( "intif_saveregistry: Variable value length is too long (aid: %d, cid: %d): '%s' sz=%d to be saved with current system and will be truncated\n",sd->status.account_id, sd->status.char_id,p->value,len); + ShowDebug( "intif_saveregistry: Variable value length is too long (aid: %d, cid: %d): '%s' sz=%" PRIuPTR " to be saved with current system and will be truncated\n",sd->status.account_id, sd->status.char_id,p->value,len); len = 254; p->value[len - 1] = '\0'; //this is backward for old char-serv but new one doesn't need this } @@ -1488,7 +1488,7 @@ int intif_parse_LoadGuildStorage(int fd) return 0; } if (RFIFOW(fd,2)-13 != sizeof(struct s_storage)) { - ShowError("intif_parse_LoadGuildStorage: data size error %d %d\n",RFIFOW(fd,2)-13 , sizeof(struct s_storage)); + ShowError("intif_parse_LoadGuildStorage: data size error %d %" PRIuPTR "\n",RFIFOW(fd,2)-13 , sizeof(struct s_storage)); gstor->status = false; return 0; } @@ -1538,7 +1538,7 @@ int intif_parse_PartyInfo(int fd) } 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)); + ShowError("intif: party info : data size error (char_id=%d party_id=%d packet_len=%d expected_len=%" PRIuPTR ")\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)); return 1; } @@ -1637,7 +1637,7 @@ int intif_parse_GuildInfo(int fd) return 0; } if( RFIFOW(fd,2)!=sizeof(struct guild)+4 ) - ShowError("intif: guild info : data size error Gid: %d recv size: %d Expected size: %d\n",RFIFOL(fd,4),RFIFOW(fd,2),sizeof(struct guild)+4); + ShowError("intif: guild info : data size error Gid: %d recv size: %d Expected size: %" PRIuPTR "\n",RFIFOL(fd,4),RFIFOW(fd,2),sizeof(struct guild)+4); guild_recv_info((struct guild *)RFIFOP(fd,4)); return 1; } @@ -1760,7 +1760,7 @@ int intif_parse_GuildMemberInfoChanged(int fd) int intif_parse_GuildPosition(int fd) { if( RFIFOW(fd,2)!=sizeof(struct guild_position)+12 ) - ShowError("intif: guild info : data size error\n %d %d %d",RFIFOL(fd,4),RFIFOW(fd,2),sizeof(struct guild_position)+12); + ShowError("intif: guild info : data size error %d %d %" PRIuPTR "\n",RFIFOL(fd,4),RFIFOW(fd,2),sizeof(struct guild_position)+12); guild_position_changed(RFIFOL(fd,4),RFIFOL(fd,8),(struct guild_position *)RFIFOP(fd,12)); return 1; } @@ -1863,7 +1863,7 @@ int intif_parse_RecvPetData(int fd) len=RFIFOW(fd,2); if(sizeof(struct s_pet)!=len-9) { if(battle_config.etc_log) - ShowError("intif: pet data: data size error %d %d\n",sizeof(struct s_pet),len-9); + ShowError("intif: pet data: data size error %" PRIuPTR " %d\n",sizeof(struct s_pet),len-9); } else{ memcpy(&p,RFIFOP(fd,9),sizeof(struct s_pet)); @@ -1938,7 +1938,7 @@ int intif_parse_CreateHomunculus(int fd) len=RFIFOW(fd,2)-9; if(sizeof(struct s_homunculus)!=len) { if(battle_config.etc_log) - ShowError("intif: create homun data: data size error %d != %d\n",sizeof(struct s_homunculus),len); + ShowError("intif: create homun data: data size error %" PRIuPTR " != %d\n",sizeof(struct s_homunculus),len); return 0; } hom_recv_data(RFIFOL(fd,4), (struct s_homunculus*)RFIFOP(fd,9), RFIFOB(fd,8)) ; @@ -1958,7 +1958,7 @@ int intif_parse_RecvHomunculusData(int fd) if(sizeof(struct s_homunculus)!=len) { if(battle_config.etc_log) - ShowError("intif: homun data: data size error %d %d\n",sizeof(struct s_homunculus),len); + ShowError("intif: homun data: data size error %" PRIuPTR " %d\n",sizeof(struct s_homunculus),len); return 0; } hom_recv_data(RFIFOL(fd,4), (struct s_homunculus*)RFIFOP(fd,9), RFIFOB(fd,8)); @@ -2306,7 +2306,7 @@ int intif_parse_Mail_inboxreceived(int fd) if (RFIFOW(fd,2) - 10 != sizeof(struct mail_data)) { - ShowError("intif_parse_Mail_inboxreceived: data size error %d %d\n", RFIFOW(fd,2) - 10, sizeof(struct mail_data)); + ShowError("intif_parse_Mail_inboxreceived: data size error %d %" PRIuPTR "\n", RFIFOW(fd,2) - 10, sizeof(struct mail_data)); return 0; } @@ -2382,7 +2382,7 @@ int intif_parse_Mail_getattach(int fd) if (RFIFOW(fd, 2) - 16 != sizeof(struct item)*MAIL_MAX_ITEM) { - ShowError("intif_parse_Mail_getattach: data size error %d %d\n", RFIFOW(fd, 2) - 16, sizeof(struct item)); + ShowError("intif_parse_Mail_getattach: data size error %d %" PRIuPTR "\n", RFIFOW(fd, 2) - 16, sizeof(struct item)); return 0; } @@ -2564,7 +2564,7 @@ static void intif_parse_Mail_send(int fd) if( RFIFOW(fd,2) - 4 != sizeof(struct mail_message) ) { - ShowError("intif_parse_Mail_send: data size error %d %d\n", RFIFOW(fd,2) - 4, sizeof(struct mail_message)); + ShowError("intif_parse_Mail_send: data size error %d %" PRIuPTR "\n", RFIFOW(fd,2) - 4, sizeof(struct mail_message)); return; } @@ -2725,7 +2725,7 @@ static void intif_parse_Auction_register(int fd) if( RFIFOW(fd,2) - 4 != sizeof(struct auction_data) ) { - ShowError("intif_parse_Auction_register: data size error %d %d\n", RFIFOW(fd,2) - 4, sizeof(struct auction_data)); + ShowError("intif_parse_Auction_register: data size error %d %" PRIuPTR "\n", RFIFOW(fd,2) - 4, sizeof(struct auction_data)); return; } @@ -2935,7 +2935,7 @@ int intif_parse_mercenary_received(int fd) if( sizeof(struct s_mercenary) != len ) { if( battle_config.etc_log ) - ShowError("intif: create mercenary data size error %d != %d\n", sizeof(struct s_mercenary), len); + ShowError("intif: create mercenary data size error %" PRIuPTR " != %d\n", sizeof(struct s_mercenary), len); return 0; } @@ -3060,7 +3060,7 @@ int intif_parse_elemental_received(int fd) if( sizeof(struct s_elemental) != len ) { if( battle_config.etc_log ) - ShowError("intif: create elemental data size error %d != %d\n", sizeof(struct s_elemental), len); + ShowError("intif: create elemental data size error %" PRIuPTR " != %d\n", sizeof(struct s_elemental), len); return 0; } @@ -3427,7 +3427,7 @@ static bool intif_parse_StorageReceived(int fd) } } if (RFIFOW(fd,2)-10 != sz_stor) { - ShowError("intif_parse_StorageReceived: data size error %d %d\n",RFIFOW(fd,2)-10 , sz_stor); + ShowError("intif_parse_StorageReceived: data size error %d %" PRIuPTR "\n",RFIFOW(fd,2)-10 , sz_stor); stor->status = false; return false; } diff --git a/src/map/itemdb.cpp b/src/map/itemdb.cpp index 1faa56422b..1fcf090e25 100644 --- a/src/map/itemdb.cpp +++ b/src/map/itemdb.cpp @@ -1081,7 +1081,7 @@ static void itemdb_read_combos(const char* basedir, bool silent) { } fclose(fp); - ShowStatus("Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n",count,path); + ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n",count,path); return; } @@ -1175,7 +1175,7 @@ bool itemdb_parse_roulette_db(void) } } - ShowStatus("Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, roulette_table); + ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, roulette_table); return true; } @@ -1521,7 +1521,7 @@ static int itemdb_readdb(void){ fclose(fp); - ShowStatus("Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, path); + ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, path); } return 0; @@ -1567,7 +1567,7 @@ static int itemdb_read_sqldb(void) { // free the query result Sql_FreeResult(mmysql_handle); - ShowStatus("Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, item_db_name[fi]); + ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, item_db_name[fi]); } return 0; @@ -1708,7 +1708,7 @@ static bool itemdb_read_randomopt(const char* basedir, bool silent) { } fclose(fp); - ShowStatus("Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, path); + ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, path); return true; } diff --git a/src/map/map.cpp b/src/map/map.cpp index f89a111ab7..59b12d899e 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -3749,7 +3749,7 @@ int map_readallmaps (void) map_cache_buffer[i] = map_init_mapcache(fp); if( !map_cache_buffer[i] ) { - ShowFatalError( "Failed to initialize mapcache data (%s)..\n", mapcachefilepath ); + ShowFatalError( "Failed to initialize mapcache data (%s)..\n", mapcachefilepath[i] ); exit(EXIT_FAILURE); } diff --git a/src/map/mob.cpp b/src/map/mob.cpp index 3de3fa1623..3f9376e237 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -3845,7 +3845,7 @@ int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 y, cons try{ db = &mob_db_data[mob_id]; - }catch( std::bad_alloc ){ + }catch( const std::bad_alloc& ){ ShowError( "mob_clone_spawn: Memory allocation for clone %hu failed.\n", mob_id ); return 0; } @@ -4264,7 +4264,7 @@ static bool mob_parse_dbrow(char** str) if (db == NULL) { try{ db = &mob_db_data[mob_id]; - }catch( std::bad_alloc ){ + }catch( const std::bad_alloc& ){ ShowError( "Memory allocation for monster %hu failed.\n", mob_id ); return false; } @@ -4330,7 +4330,7 @@ static int mob_read_sqldb(void) // free the query result Sql_FreeResult(mmysql_handle); - ShowStatus("Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, mob_db_name[fi]); + ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, mob_db_name[fi]); } return 0; } @@ -4455,7 +4455,7 @@ static bool mob_parse_row_chatdb(char* fields[], int columns, int current) if( ms == NULL ){ try{ ms = &mob_chat_db[msg_id]; - }catch( std::bad_alloc ){ + }catch( const std::bad_alloc& ){ ShowError( "mob_parse_row_chatdb: Memory allocation for chat ID '%d' failed.\n", msg_id ); return false; } @@ -4798,7 +4798,7 @@ static int mob_read_sqlskilldb(void) // free the query result Sql_FreeResult(mmysql_handle); - ShowStatus("Done reading '" CL_WHITE "%lu" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, mob_skill_db_name[fi]); + ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, mob_skill_db_name[fi]); } return 0; } diff --git a/src/map/npc.cpp b/src/map/npc.cpp index 97edcfbc5e..74a3947c30 100644 --- a/src/map/npc.cpp +++ b/src/map/npc.cpp @@ -2800,7 +2800,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const } if (type == NPCTYPE_MARKETSHOP && (!qty || qty > UINT16_MAX)) { ShowWarning("npc_parse_shop: Item %s [%hu] is stocked with invalid value %d, changed to 1. File '%s', line '%d'.\n", - id->name, nameid2, filepath, strline(buffer,start-buffer)); + id->name, nameid2, qty, filepath, strline(buffer,start-buffer)); qty = 1; } //for logs filters, atcommands and iteminfo script command @@ -3994,7 +3994,7 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con } m = map_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); + ShowWarning("npc_parse_mapflag: Unknown map '%s' in file '%s', line '%d'.\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", mapname, filepath, strline(buffer,start-buffer), w1, w2, w3, w4); return strchr(start,'\n');// skip and continue } @@ -4449,7 +4449,7 @@ void npc_read_event_script(void) if (battle_config.etc_log) { //Print summary. for (i = 0; i < NPCE_MAX; i++) - ShowInfo("%d '%s' events.\n", script_event[static_cast(i)].size(), npc_get_script_event_name(i)); + ShowInfo("%" PRIuPTR " '%s' events.\n", script_event[static_cast(i)].size(), npc_get_script_event_name(i)); } } diff --git a/src/map/pc.cpp b/src/map/pc.cpp index 7441821059..28bbf5fe7f 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -2484,7 +2484,7 @@ void pc_itemgrouphealrate(struct map_session_data *sd, uint16 group_id, short ra } if (i >= UINT8_MAX) { - ShowError("pc_itemgrouphealrate_add: Reached max (%d) possible bonuses for this player %d\n", UINT8_MAX); + ShowError("pc_itemgrouphealrate_add: Reached max (%d) possible bonuses for this player %d\n", UINT8_MAX, sd->status.char_id); return; } @@ -11401,7 +11401,7 @@ static bool pc_readdb_job_noenter_map(char *str[], int columns, int current) { } if (!pcdb_checkid(class_) || (idx = pc_class2idx(class_)) < 0) { - ShowError("pc_readdb_job_noenter_map: Invalid job %d specified.\n", str[0]); + ShowError("pc_readdb_job_noenter_map: Invalid job %d specified.\n", class_); return false; } @@ -11501,12 +11501,12 @@ void pc_readdb(void) { s = pc_read_statsdb(dbsubpath2,s,i > 0); if (i == 0) #ifdef RENEWAL_ASPD - sv_readdb(dbsubpath1, "re/job_db1.txt",',',6+MAX_WEAPON_TYPE,6+MAX_WEAPON_TYPE,CLASS_COUNT,&pc_readdb_job1, i > 0); + sv_readdb(dbsubpath1, "re/job_db1.txt",',',6+MAX_WEAPON_TYPE,6+MAX_WEAPON_TYPE,CLASS_COUNT,&pc_readdb_job1, false); #else - sv_readdb(dbsubpath1, "pre-re/job_db1.txt",',',5+MAX_WEAPON_TYPE,5+MAX_WEAPON_TYPE,CLASS_COUNT,&pc_readdb_job1, i > 0); + sv_readdb(dbsubpath1, "pre-re/job_db1.txt",',',5+MAX_WEAPON_TYPE,5+MAX_WEAPON_TYPE,CLASS_COUNT,&pc_readdb_job1, false); #endif else - sv_readdb(dbsubpath1, "job_db1.txt",',',5+MAX_WEAPON_TYPE,6+MAX_WEAPON_TYPE,CLASS_COUNT,&pc_readdb_job1, i > 0); + sv_readdb(dbsubpath1, "job_db1.txt",',',5+MAX_WEAPON_TYPE,6+MAX_WEAPON_TYPE,CLASS_COUNT,&pc_readdb_job1, true); sv_readdb(dbsubpath1, "job_db2.txt",',',1,1+MAX_LEVEL,CLASS_COUNT,&pc_readdb_job2, i > 0); sv_readdb(dbsubpath2, "job_exp.txt",',',4,1000+3,CLASS_COUNT*2,&pc_readdb_job_exp, i > 0); //support till 1000lvl #ifdef HP_SP_TABLES @@ -12146,7 +12146,7 @@ TIMER_FUNC(pc_bonus_script_timer){ return 0; if (!sd->bonus_script.head || entry == NULL) { - ShowError("pc_bonus_script_timer: Invalid entry pointer 0x%08X!\n", entry); + ShowError("pc_bonus_script_timer: Invalid entry pointer %p!\n", entry); return 0; } diff --git a/src/map/quest.cpp b/src/map/quest.cpp index ff90373747..d1f486aa59 100644 --- a/src/map/quest.cpp +++ b/src/map/quest.cpp @@ -474,7 +474,7 @@ void quest_read_txtdb(void) quest_id = atoi(str[0]); if (quest_id < 0 || quest_id >= INT_MAX) { - ShowError("quest_read_txtdb: Invalid quest ID '%d' in '%s' line '%s' (min: 0, max: %d.)\n", quest_id, filename,ln, INT_MAX); + ShowError("quest_read_txtdb: Invalid quest ID '%d' in '%s' line '%d' (min: 0, max: %d.)\n", quest_id, filename, ln, INT_MAX); continue; } diff --git a/src/map/script.cpp b/src/map/script.cpp index c8aeabe5ec..68897ff0cd 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -1099,9 +1099,15 @@ const char* parse_variable(const char* p) { const char *p2 = NULL; const char *var = p; - if ((p[0] == '+' && p[1] == '+' && (type = C_ADD_PRE)) // pre ++ - || (p[0] == '-' && p[1] == '-' && (type = C_SUB_PRE))) // pre -- + if( p[0] == '+' && p[1] == '+' ){ + type = C_ADD_PRE; // pre ++ + }else if( p[0] == '-' && p[1] == '-' ){ + type = C_SUB_PRE; // pre -- + } + + if( type != C_NOP ){ var = p = skip_space(&p[2]); + } // skip the variable where applicable p = skip_word(p); @@ -1123,24 +1129,39 @@ const char* parse_variable(const char* p) { } } - if( type == C_NOP && - !( ( p[0] == '=' && p[1] != '=' && (type = C_EQ) ) // = - || ( p[0] == '+' && p[1] == '=' && (type = C_ADD) ) // += - || ( p[0] == '-' && p[1] == '=' && (type = C_SUB) ) // -= - || ( p[0] == '^' && p[1] == '=' && (type = C_XOR) ) // ^= - || ( p[0] == '|' && p[1] == '=' && (type = C_OR ) ) // |= - || ( p[0] == '&' && p[1] == '=' && (type = C_AND) ) // &= - || ( p[0] == '*' && p[1] == '=' && (type = C_MUL) ) // *= - || ( p[0] == '/' && p[1] == '=' && (type = C_DIV) ) // /= - || ( p[0] == '%' && p[1] == '=' && (type = C_MOD) ) // %= - || ( p[0] == '~' && p[1] == '=' && (type = C_NOT) ) // ~= - || ( p[0] == '+' && p[1] == '+' && (type = C_ADD_POST) ) // post ++ - || ( p[0] == '-' && p[1] == '-' && (type = C_SUB_POST) ) // post -- - || ( p[0] == '<' && p[1] == '<' && p[2] == '=' && (type = C_L_SHIFT) ) // <<= - || ( p[0] == '>' && p[1] == '>' && p[2] == '=' && (type = C_R_SHIFT) ) // >>= - ) ) - {// failed to find a matching operator combination so invalid - return NULL; + if( type == C_NOP ){ + if( p[0] == '=' && p[1] != '=' ){ + type = C_EQ; // = + }else if( p[0] == '+' && p[1] == '=' ){ + type = C_ADD; // += + }else if( p[0] == '-' && p[1] == '=' ){ + type = C_SUB; // -= + }else if( p[0] == '^' && p[1] == '=' ){ + type = C_XOR; // ^= + }else if( p[0] == '|' && p[1] == '=' ){ + type = C_OR; // |= + }else if( p[0] == '&' && p[1] == '=' ){ + type = C_AND; // &= + }else if( p[0] == '*' && p[1] == '=' ){ + type = C_MUL; // *= + }else if( p[0] == '/' && p[1] == '=' ){ + type = C_DIV; // /= + }else if( p[0] == '%' && p[1] == '=' ){ + type = C_MOD; // %= + }else if( p[0] == '~' && p[1] == '=' ){ + type = C_NOT; // ~= + }else if( p[0] == '+' && p[1] == '+' ){ + type = C_ADD_POST; // post ++ + }else if( p[0] == '-' && p[1] == '-' ){ + type = C_SUB_POST; // post -- + }else if( p[0] == '<' && p[1] == '<' && p[2] == '=' ){ + type = C_L_SHIFT; // <<= + }else if( p[0] == '>' && p[1] == '>' && p[2] == '=' ){ + type = C_R_SHIFT; // >>= + }else{ + // failed to find a matching operator combination so invalid + return nullptr; + } } switch( type ) { @@ -3074,7 +3095,7 @@ int set_reg(struct script_state* st, struct map_session_data* sd, int64 num, con size_t vlen = 0; if ( !script_check_RegistryVariableLength(0,name,&vlen) ) { - ShowError("set_reg: Variable name length is too long (aid: %d, cid: %d): '%s' sz=%d\n", sd?sd->status.account_id:-1, sd?sd->status.char_id:-1, name, vlen); + ShowError("set_reg: Variable name length is too long (aid: %d, cid: %d): '%s' sz=%" PRIuPTR "\n", sd?sd->status.account_id:-1, sd?sd->status.char_id:-1, name, vlen); return 0; } @@ -23694,7 +23715,7 @@ static inline bool mail_sub( struct script_state *st, struct script_data *data, // Try to find the array's source pointer if( !script_array_src( st, sd, name, reference_getref(data) ) ){ - ShowError( "buildin_mail: variable \"%s\" is not an array.\n" ); + ShowError( "buildin_mail: variable \"%s\" is not an array.\n", name ); return false; } diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 6ee603a700..d920511e91 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -11030,7 +11030,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // Do the teleport part for (i = 0; i < MAX_PARTY; ++i) { - map_session_data *pl_sd = pl_sd = p->data[i].sd; + map_session_data *pl_sd = p->data[i].sd; if (pl_sd == nullptr || pl_sd == sd || pl_sd->status.party_id != p->party.party_id || pc_isdead(pl_sd) || sd->bl.m != pl_sd->bl.m) diff --git a/src/tool/mapcache.cpp b/src/tool/mapcache.cpp index 509e220475..76fb5e9210 100644 --- a/src/tool/mapcache.cpp +++ b/src/tool/mapcache.cpp @@ -121,7 +121,7 @@ void cache_map(char *name, struct map_data *m) // Fill the map header if (strlen(name) > MAP_NAME_LENGTH) // It does not hurt to warn that there are maps with name longer than allowed. - ShowWarning ("Map name '%s' size '%d' is too long. Truncating to '%d'.\n", name, strlen(name), MAP_NAME_LENGTH); + ShowWarning ("Map name '%s' size '%" PRIuPTR "' is too long. Truncating to '%d'.\n", name, strlen(name), MAP_NAME_LENGTH); strncpy(info.name, name, MAP_NAME_LENGTH); info.xs = MakeShortLE(m->xs); info.ys = MakeShortLE(m->ys);