diff options
-rw-r--r-- | Changelog-SVN.txt | 3 | ||||
-rw-r--r-- | src/map/battle.c | 4 | ||||
-rw-r--r-- | src/map/status.c | 10 |
3 files changed, 13 insertions, 4 deletions
diff --git a/Changelog-SVN.txt b/Changelog-SVN.txt index 9c324e69d..77008de5f 100644 --- a/Changelog-SVN.txt +++ b/Changelog-SVN.txt @@ -1,6 +1,9 @@ Date Added 03/25 + * Some minor changes to Sacrifice in battle.c [celest] + * Set the Emperium to be immune to Sacrifice [celest] + * Set the Emperium to be have max status effects immunity [celest] * Fixed indoorsrwstable.txt reading even when 'indoors_override_grffile' is set to 'no' [celest] * Fixed @monsterbig/@monstersmall not working [celest] diff --git a/src/map/battle.c b/src/map/battle.c index 1a44dc9a7..9caa111b2 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -402,7 +402,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i if(class_ == 1288 || class_ == 1287 || class_ == 1286 || class_ == 1285) { // if(class_ == 1288) { - if(class_ == 1288 && (flag&BF_SKILL || skill_num == ASC_BREAKER)) + if(class_ == 1288 && (flag&BF_SKILL || skill_num == ASC_BREAKER || skill_num == PA_SACRIFICE)) damage=0; if(src->type == BL_PC) { struct guild *g=guild_search(((struct map_session_data *)src)->status.guild_id); @@ -2436,6 +2436,8 @@ static struct Damage battle_calc_pc_weapon_attack( hitrate = 1000000; s_ele = 0; s_ele_ = 0; + skill_num = PA_SACRIFICE; + //clif_skill_nodamage(src,target,skill_num,skill_lv,1); // this doesn't show effect either.. hmm =/ sc_data[SC_SACRIFICE].val2 --; if (sc_data[SC_SACRIFICE].val2 == 0) status_change_end(src, SC_SACRIFICE,-1); diff --git a/src/map/status.c b/src/map/status.c index e7fcf22b3..814121be0 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -2978,9 +2978,13 @@ int status_get_sc_def(struct block_list *bl, int type) break; } - if(bl->type == BL_MOB && sc_def < 50) - sc_def = 50; - else if(bl->type == BL_PC) { + if(bl->type == BL_MOB) { + struct mob_data *md = (struct mob_data *)bl; + if (md && md->class_ == 1288) + return 0; + if (sc_def < 50) + sc_def = 50; + } else if(bl->type == BL_PC) { struct status_change* sc_data = status_get_sc_data(bl); if (sc_data && sc_data[SC_GOSPEL].timer != -1 && sc_data[SC_GOSPEL].val4 == BCT_PARTY && |