Implemented additional item bonus bMagicAddRace2 and bIGnoreMdefRace2Rate
This commit is contained in:
parent
e5af11309b
commit
0f1b1af928
@ -570,6 +570,7 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
||||
sstatus = status_get_status_data(src);
|
||||
tstatus = status_get_status_data(target);
|
||||
s_race2 = status_get_race2(src);
|
||||
t_race2 = status_get_race2(target);
|
||||
s_defele = (tsd) ? (enum e_element)status_get_element(src) : ELE_NONE;
|
||||
|
||||
//Official servers apply the cardfix value on a base of 1000 and round down the reduction/increase
|
||||
@ -579,7 +580,7 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
||||
case BF_MAGIC:
|
||||
// Affected by attacker ATK bonuses
|
||||
if( sd && !(nk&NK_NO_CARDFIX_ATK) ) {
|
||||
cardfix = cardfix * (100 + sd->magic_addrace[tstatus->race] + sd->magic_addrace[RC_ALL]) / 100;
|
||||
cardfix = cardfix * (100 + sd->magic_addrace[tstatus->race] + sd->magic_addrace[RC_ALL] + sd->magic_addrace2[t_race2]) / 100;
|
||||
if( !(nk&NK_NO_ELEFIX) ) { // Affected by Element modifier bonuses
|
||||
cardfix = cardfix * (100 + sd->magic_addele[tstatus->def_ele] + sd->magic_addele[ELE_ALL] +
|
||||
sd->magic_addele_script[tstatus->def_ele] + sd->magic_addele_script[ELE_ALL]) / 100;
|
||||
@ -643,7 +644,6 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
|
||||
break;
|
||||
|
||||
case BF_WEAPON:
|
||||
t_race2 = status_get_race2(target);
|
||||
// Affected by attacker ATK bonuses
|
||||
if( sd && !(nk&NK_NO_CARDFIX_ATK) && (left&2) ) {
|
||||
short cardfix_ = 1000;
|
||||
@ -5525,6 +5525,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
int skill_damage = 0;
|
||||
#endif
|
||||
short s_ele = 0;
|
||||
enum e_race2 t_race2;
|
||||
|
||||
TBL_PC *sd;
|
||||
TBL_PC *tsd;
|
||||
@ -5559,7 +5560,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
tsd = BL_CAST(BL_PC, target);
|
||||
sc = status_get_sc(src);
|
||||
tsc = status_get_sc(target);
|
||||
|
||||
t_race2 = status_get_race2(target);
|
||||
//Initialize variables that will be used afterwards
|
||||
s_ele = skill_get_ele(skill_id, skill_lv);
|
||||
|
||||
@ -6123,7 +6124,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
|
||||
mdef <<= 1; // only eMDEF is doubled
|
||||
#endif
|
||||
if(sd) {
|
||||
i = sd->ignore_mdef_by_race[tstatus->race] + sd->ignore_mdef_by_race[RC_ALL];
|
||||
i = sd->ignore_mdef_by_race[tstatus->race] + sd->ignore_mdef_by_race2[t_race2] + sd->ignore_mdef_by_race[RC_ALL];
|
||||
i += sd->ignore_mdef_by_class[tstatus->class_] + sd->ignore_mdef_by_class[CLASS_ALL];
|
||||
if (i)
|
||||
{
|
||||
|
@ -296,6 +296,7 @@ enum e_race2 {
|
||||
RC2_GVG,
|
||||
RC2_BATTLEFIELD,
|
||||
RC2_TREASURE,
|
||||
RC2_BIOLAB,
|
||||
RC2_MAX
|
||||
};
|
||||
|
||||
@ -464,7 +465,7 @@ enum _sp {
|
||||
SP_WEAPON_COMA_CLASS, SP_IGNORE_MDEF_CLASS_RATE, SP_EXP_ADDCLASS, SP_ADD_CLASS_DROP_ITEM, //2067-2070
|
||||
SP_ADD_CLASS_DROP_ITEMGROUP, SP_ADDMAXWEIGHT, SP_ADD_ITEMGROUP_HEAL_RATE, // 2071-2073
|
||||
SP_HP_VANISH_RACE_RATE, SP_SP_VANISH_RACE_RATE, SP_ABSORB_DMG_MAXHP, SP_SUB_SKILL, SP_SUBDEF_ELE, // 2074-2078
|
||||
SP_STATE_NORECOVER_RACE, SP_CRITICAL_RANGEATK, // 2079-2080
|
||||
SP_STATE_NORECOVER_RACE, SP_CRITICAL_RANGEATK, SP_MAGIC_ADDRACE2, SP_IGNORE_MDEF_RACE2_RATE // 2079-2082
|
||||
};
|
||||
|
||||
enum _look {
|
||||
|
10
src/map/pc.c
10
src/map/pc.c
@ -3673,6 +3673,16 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
||||
sd->coma_race[type2] += val;
|
||||
sd->special_state.bonus_coma = 1;
|
||||
break;
|
||||
case SP_MAGIC_ADDRACE2: // bonus2 bMagicAddRace2,r,n;
|
||||
PC_BONUS_CHK_RACE2(type2, SP_MAGIC_ADDRACE2);
|
||||
if(sd->state.lr_flag != 2)
|
||||
sd->magic_addrace2[type2] += val;
|
||||
break;
|
||||
case SP_IGNORE_MDEF_RACE2_RATE: //bonus2 bIgnoreMdefRace2Rate,r,n;
|
||||
PC_BONUS_CHK_RACE2(type2, SP_IGNORE_MDEF_RACE2);
|
||||
if (sd->state.lr_flag != 2)
|
||||
sd->ignore_mdef_by_race2[type2] += val;
|
||||
break;
|
||||
default:
|
||||
ShowWarning("pc_bonus2: unknown type %d %d %d!\n",type,type2,val);
|
||||
break;
|
||||
|
@ -366,6 +366,8 @@ struct map_session_data {
|
||||
int ignore_mdef_by_class[CLASS_MAX];
|
||||
int ignore_def_by_race[RC_MAX];
|
||||
short sp_gain_race[RC_MAX];
|
||||
int magic_addrace2[RC2_MAX];
|
||||
int ignore_mdef_by_race2[RC2_MAX];
|
||||
// zeroed arrays end here.
|
||||
|
||||
// zeroed structures start here
|
||||
|
@ -652,6 +652,8 @@
|
||||
script_set_constant("bSubDefEle",SP_SUBDEF_ELE,false);
|
||||
script_set_constant("bStateNoRecoverRace",SP_STATE_NORECOVER_RACE,false);
|
||||
script_set_constant("bCriticalLong",SP_CRITICAL_RANGEATK,false);
|
||||
script_set_constant("bMagicAddRace2", SP_MAGIC_ADDRACE2, false);
|
||||
script_set_constant("bIgnoreMdefRace2Rate", SP_IGNORE_MDEF_RACE2_RATE, false);
|
||||
|
||||
/* equip positions */
|
||||
export_constant(EQI_HEAD_TOP);
|
||||
@ -2414,6 +2416,7 @@
|
||||
export_constant(RC2_GVG);
|
||||
export_constant(RC2_BATTLEFIELD);
|
||||
export_constant(RC2_TREASURE);
|
||||
export_constant(RC2_BIOLAB);
|
||||
|
||||
/* classes */
|
||||
export_constant(CLASS_NORMAL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user