diff options
author | xantara <xantara@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-01-23 04:47:38 +0000 |
---|---|---|
committer | xantara <xantara@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-01-23 04:47:38 +0000 |
commit | 8756ba5d50270bbad6ad7065a05a1329ef86878b (patch) | |
tree | f38f058f4b77a563e5e7682ec8c9b2c5af8b54da /src/map/battle.c | |
parent | 071702a2c76f8a69d33f68984961b735c23ca239 (diff) | |
download | hercules-8756ba5d50270bbad6ad7065a05a1329ef86878b.tar.gz hercules-8756ba5d50270bbad6ad7065a05a1329ef86878b.tar.bz2 hercules-8756ba5d50270bbad6ad7065a05a1329ef86878b.tar.xz hercules-8756ba5d50270bbad6ad7065a05a1329ef86878b.zip |
` Fixed Emperium's skill damage/heal and elemental resist (eg. Aspersio) - bugreport:5256
` Rebranded the Core.h file to rAthena
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15507 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/battle.c')
-rw-r--r-- | src/map/battle.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index ed51c63fe..5865ce02b 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -722,20 +722,19 @@ int battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int dama if (!damage) //No reductions to make. return 0; - + if(md && md->guardian_data) { - if(class_ == MOBID_EMPERIUM && flag&BF_SKILL) + if(class_ == MOBID_EMPERIUM && flag&BF_SKILL) { //Skill immunity. switch (skill_num) { +#if REMODE == 0 case MO_TRIPLEATTACK: +#endif case HW_GRAVITATION: - case AL_HEAL: - case PR_SANCTUARY: - case BA_APPLEIDUN: - case AB_CHEAL: break; default: return 0; + } } if(src->type != BL_MOB) { struct guild *g=guild_search(status_get_guild_id(src)); @@ -2577,10 +2576,22 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo if( flag.infdef ) { //Plants receive 1 damage when hit + short class_ = status_get_class(target); if( flag.hit || wd.damage > 0 ) wd.damage = wd.div_; // In some cases, right hand no need to have a weapon to increase damage if( flag.lh && (flag.hit || wd.damage2 > 0) ) wd.damage2 = wd.div_; + if( flag.hit && class_ == MOBID_EMPERIUM ) { + if(wd.damage2 > 0) { + wd.damage2 = battle_attr_fix(src,target,wd.damage2,s_ele_,tstatus->def_ele, tstatus->ele_lv); + wd.damage2 = battle_calc_gvg_damage(src,target,wd.damage2,wd.div_,skill_num,skill_lv,wd.flag); + } + else if(wd.damage > 0) { + wd.damage = battle_attr_fix(src,target,wd.damage,s_ele_,tstatus->def_ele, tstatus->ele_lv); + wd.damage = battle_calc_gvg_damage(src,target,wd.damage,wd.div_,skill_num,skill_lv,wd.flag); + } + return wd; + } if( !(battle_config.skill_min_damage&1) ) //Do not return if you are supposed to deal greater damage to plants than 1. [Skotlex] return wd; |