- 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://svn.code.sf.net/p/rathena/svn/trunk@8795 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
77dd0bb951
commit
0c181dc424
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user