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
This commit is contained in:
parent
3beb7833f9
commit
8ebb789db6
@ -1523,10 +1523,9 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int
|
|||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
static int battle_calc_sizefix(int damage, struct map_session_data *sd, unsigned char t_size, unsigned char weapon_type, short flag)
|
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
|
//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?
|
DAMAGE_RATE(weapon_type==EQI_HAND_L?
|
||||||
sd->left_weapon.atkmods[t_size]:
|
sd->left_weapon.atkmods[t_size]:
|
||||||
sd->right_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) )
|
if( sd && pc_checkskill(sd, GN_REMODELING_CART) )
|
||||||
hitrate += pc_checkskill(sd, GN_REMODELING_CART) * 4;
|
hitrate += pc_checkskill(sd, GN_REMODELING_CART) * 4;
|
||||||
break;
|
break;
|
||||||
|
case LG_BANISHINGPOINT:
|
||||||
|
hitrate += 3 * skill_lv;
|
||||||
|
break;
|
||||||
case GC_VENOMPRESSURE:
|
case GC_VENOMPRESSURE:
|
||||||
hitrate += 10 + 4 * skill_lv;
|
hitrate += 10 + 4 * skill_lv;
|
||||||
break;
|
break;
|
||||||
@ -4365,9 +4367,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
|||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
if(is_attack_critical(wd, src, target, skill_id, skill_lv, false)) {
|
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]
|
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
|
else
|
||||||
wd.damage = (int32)floor((double)wd.damage * 1.4);
|
wd.damage = (int)floor((double)wd.damage * 1.4);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -3283,9 +3283,11 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
|
|||||||
break;
|
break;
|
||||||
case WZ_WATERBALL:
|
case WZ_WATERBALL:
|
||||||
skill_toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify
|
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);
|
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);
|
skill_addtimerskill(src,tick+125,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag);
|
||||||
} else {
|
} else {
|
||||||
struct status_change *sc = status_get_sc(src);
|
struct status_change *sc = status_get_sc(src);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user