From 8ebb789db6c3f9416af95a5d28f605bcd0c6ac78 Mon Sep 17 00:00:00 2001 From: Akinari1087 Date: Thu, 18 Jul 2013 00:24:40 -0400 Subject: [PATCH] Fixed bonus crit_atk_rate not being applied - Fixes bugreport:7846 Weapon Perfection now modifies size damage - Fixes bugreport:7813 Water Ball now checks for obstacles - Fixes bugreport:7426 Re-added the somehow lost Banishing Point hit rate fix --- src/map/battle.c | 12 +++++++----- src/map/skill.c | 6 ++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/map/battle.c b/src/map/battle.c index 7d05975dde..2059ff0f13 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1523,10 +1523,9 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int #ifdef RENEWAL static int battle_calc_sizefix(int damage, struct map_session_data *sd, unsigned char t_size, unsigned char weapon_type, short flag) { - if (sd) - { + if (sd) { //SizeFix only for players - if (!(sd->special_state.no_sizefix) || flag) + if (!(sd->special_state.no_sizefix) && !flag) DAMAGE_RATE(weapon_type==EQI_HAND_L? sd->left_weapon.atkmods[t_size]: sd->right_weapon.atkmods[t_size]) @@ -2064,6 +2063,9 @@ static bool is_attack_hitting(struct Damage wd, struct block_list *src, struct b if( sd && pc_checkskill(sd, GN_REMODELING_CART) ) hitrate += pc_checkskill(sd, GN_REMODELING_CART) * 4; break; + case LG_BANISHINGPOINT: + hitrate += 3 * skill_lv; + break; case GC_VENOMPRESSURE: hitrate += 10 + 4 * skill_lv; break; @@ -4365,9 +4367,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl #ifdef RENEWAL if(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 = (int32)floor((double)wd.damage * 1.4 * ((100 + sd->bonus.crit_atk_rate) / 100)); + wd.damage = (int)floor((double)(wd.damage * 1.4 * (100 + sd->bonus.crit_atk_rate)) / 100); else - wd.damage = (int32)floor((double)wd.damage * 1.4); + wd.damage = (int)floor((double)wd.damage * 1.4); } #endif diff --git a/src/map/skill.c b/src/map/skill.c index c641fe15a0..fe26e0f015 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3283,9 +3283,11 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) break; case WZ_WATERBALL: skill_toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify - if (!status_isdead(target)) + // Official behaviour is to hit as long as there is a line of sight, regardless of distance + range = path_search_long(NULL,src->m,src->x,src->y,target->x,target->y,CELL_CHKNOREACH); + if (!status_isdead(target) && range) skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); - if (skl->type>1 && !status_isdead(target) && !status_isdead(src)) { + if (skl->type>1 && !status_isdead(target) && !status_isdead(src) && range) { skill_addtimerskill(src,tick+125,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag); } else { struct status_change *sc = status_get_sc(src);