|
@@ -1598,8 +1598,11 @@ int64 battle_calc_bg_damage(struct block_list *src, struct block_list *bl, int64
|
|
|
bool battle_can_hit_gvg_target(struct block_list *src,struct block_list *bl,uint16 skill_id,int flag)
|
|
|
{
|
|
|
struct mob_data* md = BL_CAST(BL_MOB, bl);
|
|
|
+ struct unit_data *ud = unit_bl2ud(bl);
|
|
|
int class_ = status_get_class(bl);
|
|
|
|
|
|
+ if (ud && ud->immune_attack)
|
|
|
+ return false;
|
|
|
if(md && md->guardian_data) {
|
|
|
if ((status_bl_has_mode(bl,MD_SKILL_IMMUNE) || (class_ == MOBID_EMPERIUM && !(skill_get_inf3(skill_id)&INF3_HIT_EMP))) && flag&BF_SKILL) //Skill immunity.
|
|
|
return false;
|
|
@@ -5169,13 +5172,15 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
|
|
|
struct map_session_data *tsd = BL_CAST(BL_PC, target);
|
|
|
struct status_change *tsc = status_get_sc(target);
|
|
|
struct status_data *sstatus = status_get_status_data(src);
|
|
|
+ struct unit_data *ud = unit_bl2ud(target);
|
|
|
int tick = gettick(), rdelay = 0;
|
|
|
|
|
|
if (!tsc)
|
|
|
return;
|
|
|
|
|
|
// Calculate skill reflect damage separately
|
|
|
- rdamage = battle_calc_return_damage(target, src, &damage, wd->flag, skill_id,true);
|
|
|
+ if ((ud && !ud->immune_attack) || !status_bl_has_mode(target, MD_SKILL_IMMUNE))
|
|
|
+ rdamage = battle_calc_return_damage(target, src, &damage, wd->flag, skill_id,true);
|
|
|
if( rdamage > 0 ) {
|
|
|
struct block_list *d_bl = battle_check_devotion(src);
|
|
|
|