summaryrefslogtreecommitdiff
path: root/src/map/status.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-09-18 15:36:00 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-09-18 15:36:00 +0000
commitba0872fe48a8b9d78358e58f52483740d17de7c7 (patch)
tree705eecb263bc7c63b7d24dda85ecaf5634f65cf8 /src/map/status.c
parentf725525727f76fac8643b8953bb00ec73e320d24 (diff)
downloadhercules-ba0872fe48a8b9d78358e58f52483740d17de7c7.tar.gz
hercules-ba0872fe48a8b9d78358e58f52483740d17de7c7.tar.bz2
hercules-ba0872fe48a8b9d78358e58f52483740d17de7c7.tar.xz
hercules-ba0872fe48a8b9d78358e58f52483740d17de7c7.zip
- Moved the equipment/card resistances to status ailments outside of status_get_sc_def, so that they are applied only to rate, not duration.
- Due to this, the max sc resistance settings (battle/status.conf) no longer apply to equipment/card-granted resistances. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8795 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/status.c')
-rw-r--r--src/map/status.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 56fb7b1eb..fba106fab 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -4376,10 +4376,6 @@ int status_get_sc_def(struct block_list *bl, int type)
if (battle_config.pc_sc_def_rate != 100)
sc_def = sc_def*battle_config.pc_sc_def_rate/100;
- if(SC_COMMON_MIN<=type && type<=SC_COMMON_MAX
- && sd->reseff[type-SC_COMMON_MIN] > 0)
- sc_def+= sd->reseff[type-SC_COMMON_MIN];
-
if (sc_def < battle_config.pc_max_sc_def)
sc_def += (battle_config.pc_max_sc_def - sc_def)*
status->luk/battle_config.pc_luk_sc_def;
@@ -4459,18 +4455,25 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
if (!(flag&(1|4))) {
int def = status_get_sc_def(bl, type);
- if (def && !(flag&8))
- rate -= rate*def/10000;
-
- if (!(rand()%10000 < rate))
- return 0;
-
if (def && tick && !(flag&2))
{
tick -= tick*def/10000;
if (tick <= 0)
return 0;
}
+
+ //Item defenses do not reduce duration, so they go out of the function.
+ if(sd && SC_COMMON_MIN<=type && type<=SC_COMMON_MAX
+ && sd->reseff[type-SC_COMMON_MIN] > 0)
+ def += sd->reseff[type-SC_COMMON_MIN];
+
+ if (def && !(flag&8))
+ rate -= rate*def/10000;
+
+ if (!(rand()%10000 < rate))
+ return 0;
+
+
}
undead_flag=battle_check_undead(status->race,status->def_ele);