summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-SVN.txt3
-rw-r--r--src/map/battle.c4
-rw-r--r--src/map/status.c10
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 &&