|
@@ -1270,7 +1270,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|
|
* Initial refactoring by Baalberith
|
|
|
* Refined and optimized by helvetica
|
|
|
*/
|
|
|
-int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64 damage, int div_, uint16 skill_id, uint16 skill_lv, int flag)
|
|
|
+int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64 damage, uint16 skill_id, int flag)
|
|
|
{
|
|
|
if( !damage )
|
|
|
return 0;
|
|
@@ -1326,7 +1326,7 @@ bool battle_can_hit_gvg_target(struct block_list *src,struct block_list *bl,uint
|
|
|
/*==========================================
|
|
|
* Calculates GVG related damage adjustments.
|
|
|
*------------------------------------------*/
|
|
|
-int64 battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int64 damage,int div_,uint16 skill_id,uint16 skill_lv,int flag)
|
|
|
+int64 battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int64 damage,uint16 skill_id,int flag)
|
|
|
{
|
|
|
if (!damage) //No reductions to make.
|
|
|
return 0;
|
|
@@ -2523,9 +2523,9 @@ static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block
|
|
|
if (skill_id != MC_CARTREVOLUTION && pc_checkskill(sd, BS_HILTBINDING) > 0)
|
|
|
ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 4);
|
|
|
if (skill_id == MO_FINGEROFFENSIVE) {
|
|
|
- ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 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_ * sd->spiritball * 3);
|
|
|
+ ATK_ADD(wd.masteryAtk, wd.masteryAtk2, ((wd.div_ < 1) ? 1 : wd.div_) * sd->spiritball * 3);
|
|
|
#endif
|
|
|
|
|
|
if (sc) { // Status change considered as masteries
|
|
@@ -4467,10 +4467,10 @@ struct Damage battle_calc_attack_plant(struct Damage wd, struct block_list *src,
|
|
|
}
|
|
|
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, wd.div_, skill_id, skill_lv, wd.flag);
|
|
|
+ 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, wd.div_, skill_id, skill_lv, wd.flag);
|
|
|
+ wd.damage2 = battle_calc_gvg_damage(src, target, wd.damage2, skill_id, wd.flag);
|
|
|
}
|
|
|
return wd;
|
|
|
}
|
|
@@ -4552,24 +4552,24 @@ struct Damage battle_calc_attack_gvg_bg(struct Damage wd, struct block_list *src
|
|
|
if(!wd.damage2) {
|
|
|
wd.damage = battle_calc_damage(src,target,&wd,wd.damage,skill_id,skill_lv);
|
|
|
if( map_flag_gvg2(target->m) )
|
|
|
- wd.damage=battle_calc_gvg_damage(src,target,wd.damage,wd.div_,skill_id,skill_lv,wd.flag);
|
|
|
+ wd.damage=battle_calc_gvg_damage(src,target,wd.damage,skill_id,wd.flag);
|
|
|
else if( map[target->m].flag.battleground )
|
|
|
- wd.damage=battle_calc_bg_damage(src,target,wd.damage,wd.div_,skill_id,skill_lv,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);
|
|
|
if( map_flag_gvg2(target->m) )
|
|
|
- wd.damage2 = battle_calc_gvg_damage(src,target,wd.damage2,wd.div_,skill_id,skill_lv,wd.flag);
|
|
|
+ wd.damage2 = battle_calc_gvg_damage(src,target,wd.damage2,skill_id,wd.flag);
|
|
|
else if( map[target->m].flag.battleground )
|
|
|
- wd.damage2 = battle_calc_bg_damage(src,target,wd.damage2,wd.div_,skill_id,skill_lv,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);
|
|
|
if( map_flag_gvg2(target->m) )
|
|
|
- wd.damage = battle_calc_gvg_damage(src,target,wd.damage,wd.div_,skill_id,skill_lv,wd.flag);
|
|
|
+ wd.damage = battle_calc_gvg_damage(src,target,wd.damage,skill_id,wd.flag);
|
|
|
else if( map[target->m].flag.battleground )
|
|
|
- wd.damage = battle_calc_bg_damage(src,target,wd.damage,wd.div_,skill_id,skill_lv,wd.flag);
|
|
|
+ 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;
|
|
@@ -5048,9 +5048,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
|
|
if (skill_id != MC_CARTREVOLUTION && pc_checkskill(sd, BS_HILTBINDING) > 0)
|
|
|
ATK_ADD(wd.damage, wd.damage2, 4);
|
|
|
if (skill_id == MO_FINGEROFFENSIVE) { //The finger offensive spheres on moment of attack do count. [Skotlex]
|
|
|
- ATK_ADD(wd.damage, wd.damage2, wd.div_ * sd->spiritball_old * 3);
|
|
|
+ ATK_ADD(wd.damage, wd.damage2, ((wd.div_ < 1) ? 1 : wd.div_) * sd->spiritball_old * 3);
|
|
|
} else
|
|
|
- ATK_ADD(wd.damage, wd.damage2, wd.div_ * sd->spiritball * 3);
|
|
|
+ ATK_ADD(wd.damage, wd.damage2, ((wd.div_ < 1) ? 1 : wd.div_) * sd->spiritball * 3);
|
|
|
#endif
|
|
|
if( skill_id == CR_SHIELDBOOMERANG || skill_id == PA_SHIELDCHAIN ) { //Refine bonus applies after cards and elements.
|
|
|
short index = sd->equip_index[EQI_HAND_L];
|
|
@@ -5933,9 +5933,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
|
|
default:
|
|
|
ad.damage=battle_calc_damage(src,target,&ad,ad.damage,skill_id,skill_lv);
|
|
|
if( map_flag_gvg2(target->m) )
|
|
|
- ad.damage=battle_calc_gvg_damage(src,target,ad.damage,ad.div_,skill_id,skill_lv,ad.flag);
|
|
|
+ ad.damage=battle_calc_gvg_damage(src,target,ad.damage,skill_id,ad.flag);
|
|
|
else if( map[target->m].flag.battleground )
|
|
|
- ad.damage=battle_calc_bg_damage(src,target,ad.damage,ad.div_,skill_id,skill_lv,ad.flag);
|
|
|
+ ad.damage=battle_calc_bg_damage(src,target,ad.damage,skill_id,ad.flag);
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -6303,9 +6303,9 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
|
|
|
|
|
|
md.damage=battle_calc_damage(src,target,&md,md.damage,skill_id,skill_lv);
|
|
|
if( map_flag_gvg2(target->m) )
|
|
|
- md.damage=battle_calc_gvg_damage(src,target,md.damage,md.div_,skill_id,skill_lv,md.flag);
|
|
|
+ md.damage=battle_calc_gvg_damage(src,target,md.damage,skill_id,md.flag);
|
|
|
else if( map[target->m].flag.battleground )
|
|
|
- md.damage=battle_calc_bg_damage(src,target,md.damage,md.div_,skill_id,skill_lv,md.flag);
|
|
|
+ md.damage=battle_calc_bg_damage(src,target,md.damage,skill_id,md.flag);
|
|
|
|
|
|
switch( skill_id ) {
|
|
|
case RA_FIRINGTRAP:
|