diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-09-18 15:36:00 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-09-18 15:36:00 +0000 |
commit | ba0872fe48a8b9d78358e58f52483740d17de7c7 (patch) | |
tree | 705eecb263bc7c63b7d24dda85ecaf5634f65cf8 | |
parent | f725525727f76fac8643b8953bb00ec73e320d24 (diff) | |
download | hercules-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
-rw-r--r-- | Changelog-Trunk.txt | 3 | ||||
-rw-r--r-- | conf-tmpl/Changelog.txt | 4 | ||||
-rw-r--r-- | conf-tmpl/battle/status.conf | 3 | ||||
-rw-r--r-- | src/map/battle.c | 4 | ||||
-rw-r--r-- | src/map/status.c | 23 |
5 files changed, 23 insertions, 14 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 3a7cc966e..bdbfdc111 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -5,6 +5,9 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/09/18 + * Moved the equipment/card resistances to status ailments outside of + status_get_sc_def, so that they are applied only to rate, not duration. + [Skotlex] * Modified the Asura code (again), hopefully movement sprite issues are fixed now [Skotlex] * @reloadscript scripts will no longer eliminate mobs with no respawn data. diff --git a/conf-tmpl/Changelog.txt b/conf-tmpl/Changelog.txt index fbe36534e..9779269eb 100644 --- a/conf-tmpl/Changelog.txt +++ b/conf-tmpl/Changelog.txt @@ -1,5 +1,9 @@ Date Added
+2006/09/18
+ * Due to a recent update of how cards/equipment status change defense
+ works, the max sc resistance settings (battle/status.conf) no longer apply
+ to them. [Skotlex]
2006/09/16
* Added monster_ai&256. When set, a monster will pick a random starting
position to begin checking versus it's skills, otherwise, it will always
diff --git a/conf-tmpl/battle/status.conf b/conf-tmpl/battle/status.conf index 5e611ab65..000c159ea 100644 --- a/conf-tmpl/battle/status.conf +++ b/conf-tmpl/battle/status.conf @@ -56,7 +56,6 @@ pc_luk_status_def: 300 mob_luk_status_def: 300
// Maximum resistance to status changes. (10000 = 100%)
-// NOTE: This is applied after cards and equipment, so inmunity cards are
-// capped to this.
+// NOTE: Cards and equipment can go over this limit, so it only applies to natural resist.
pc_max_status_def: 10000
mob_max_status_def: 10000
diff --git a/src/map/battle.c b/src/map/battle.c index f44493cb3..9d7bf7514 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1654,7 +1654,7 @@ static struct Damage battle_calc_weapon_attack( (target->type == BL_MOB && sd->right_weapon.ignore_def_mob & (is_boss(target)?2:1)) || sd->right_weapon.ignore_def_ele & (1<<tstatus->def_ele) || sd->right_weapon.ignore_def_race & (1<<tstatus->race) || - sd->right_weapon.ignore_def_race & (is_boss(target)?1<<10:1<<11) + sd->right_weapon.ignore_def_race & (is_boss(target)?1<<RC_BOSS:1<<RC_NONBOSS) )) flag.idef = 1; @@ -1662,7 +1662,7 @@ static struct Damage battle_calc_weapon_attack( (target->type == BL_MOB && sd->left_weapon.ignore_def_mob & (is_boss(target)?2:1)) || sd->left_weapon.ignore_def_ele & (1<<tstatus->def_ele) || sd->left_weapon.ignore_def_race & (1<<tstatus->race) || - sd->left_weapon.ignore_def_race & (is_boss(target)?1<<10:1<<11) + sd->left_weapon.ignore_def_race & (is_boss(target)?1<<RC_BOSS:1<<RC_NONBOSS) )) { if(battle_config.left_cardfix_to_right && flag.rh) //Move effect to right hand. [Skotlex] flag.idef = 1; 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);
|