Implemented additional item bonus bMagicAddRace2 and bIGnoreMdefRace2Rate

This commit is contained in:
Jittapan Pluemsumran 2016-04-26 00:31:24 +07:00
parent e5af11309b
commit 0f1b1af928
No known key found for this signature in database
GPG Key ID: CE430096446F41D9
5 changed files with 22 additions and 5 deletions

View File

@ -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)
{

View File

@ -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 {

View File

@ -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;

View File

@ -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

View File

@ -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);