|
@@ -3292,7 +3292,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|
|
struct status_change *sc, *tsc;
|
|
|
struct map_session_data *sd, *tsd;
|
|
|
int64 damage;
|
|
|
- int8 rmdamage = 0;//magic reflected
|
|
|
+ bool rmdamage = false;//magic reflected
|
|
|
int type;
|
|
|
enum e_damage_type dmg_type;
|
|
|
bool shadow_flag = false;
|
|
@@ -3371,7 +3371,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|
|
if( (dmg.damage || dmg.damage2) && (type = skill_magic_reflect(src, bl, src==dsrc)) )
|
|
|
{ //Magic reflection, switch caster/target
|
|
|
struct block_list *tbl = bl;
|
|
|
- rmdamage = 1;
|
|
|
+ rmdamage = true;
|
|
|
bl = src;
|
|
|
src = tbl;
|
|
|
dsrc = tbl;
|
|
@@ -3429,6 +3429,12 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|
|
//Reduction: 6% + 6% every 20%
|
|
|
dmg.damage -= dmg.damage * (6 * (1+per)) / 100;
|
|
|
}
|
|
|
+
|
|
|
+ if (sd && sd->bonus.reduce_damage_return != 0) {
|
|
|
+ dmg.damage -= dmg.damage * sd->bonus.reduce_damage_return / 100;
|
|
|
+ if (dmg.damage < 1)
|
|
|
+ dmg.damage = 1;
|
|
|
+ }
|
|
|
}
|
|
|
#endif
|
|
|
}
|
|
@@ -3819,7 +3825,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|
|
|
|
|
map_freeblock_unlock();
|
|
|
|
|
|
- if ((flag&0x1000000) && rmdamage == 1)
|
|
|
+ if ((flag&0x1000000) && rmdamage)
|
|
|
return 0; //Should return 0 when damage was reflected
|
|
|
|
|
|
return damage;
|