|
@@ -3030,7 +3030,7 @@ void pc_bonus(struct map_session_data *sd,int type,int val)
|
|
|
case SP_DEX:
|
|
|
case SP_LUK:
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->param_bonus[type-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[type-SP_STR]+=val;
|
|
|
break;
|
|
|
case SP_ATK1:
|
|
|
if(!sd->state.lr_flag) {
|
|
@@ -3425,25 +3425,25 @@ void pc_bonus(struct map_session_data *sd,int type,int val)
|
|
|
break;
|
|
|
case SP_ALL_STATS: // [Valaris]
|
|
|
if(sd->state.lr_flag!=2) {
|
|
|
- sd->param_bonus[SP_STR-SP_STR]+=val;
|
|
|
- sd->param_bonus[SP_AGI-SP_STR]+=val;
|
|
|
- sd->param_bonus[SP_VIT-SP_STR]+=val;
|
|
|
- sd->param_bonus[SP_INT-SP_STR]+=val;
|
|
|
- sd->param_bonus[SP_DEX-SP_STR]+=val;
|
|
|
- sd->param_bonus[SP_LUK-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_STR-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_AGI-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_VIT-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_INT-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_DEX-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_LUK-SP_STR]+=val;
|
|
|
}
|
|
|
break;
|
|
|
case SP_AGI_VIT: // [Valaris]
|
|
|
if(sd->state.lr_flag!=2) {
|
|
|
- sd->param_bonus[SP_AGI-SP_STR]+=val;
|
|
|
- sd->param_bonus[SP_VIT-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_AGI-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_VIT-SP_STR]+=val;
|
|
|
}
|
|
|
break;
|
|
|
case SP_AGI_DEX_STR: // [Valaris]
|
|
|
if(sd->state.lr_flag!=2) {
|
|
|
- sd->param_bonus[SP_AGI-SP_STR]+=val;
|
|
|
- sd->param_bonus[SP_DEX-SP_STR]+=val;
|
|
|
- sd->param_bonus[SP_STR-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_AGI-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_DEX-SP_STR]+=val;
|
|
|
+ sd->indexed_bonus.param_bonus[SP_STR-SP_STR]+=val;
|
|
|
}
|
|
|
break;
|
|
|
case SP_PERFECT_HIDE: // [Valaris]
|
|
@@ -3684,7 +3684,7 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
else if(sd->state.lr_flag == 1)
|
|
|
sd->left_weapon.addele[type2]+=val;
|
|
|
else if(sd->state.lr_flag == 2)
|
|
|
- sd->arrow_addele[type2]+=val;
|
|
|
+ sd->indexed_bonus.arrow_addele[type2]+=val;
|
|
|
break;
|
|
|
case SP_ADDRACE: // bonus2 bAddRace,r,x;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_ADDRACE);
|
|
@@ -3693,7 +3693,7 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
else if(sd->state.lr_flag == 1)
|
|
|
sd->left_weapon.addrace[type2]+=val;
|
|
|
else if(sd->state.lr_flag == 2)
|
|
|
- sd->arrow_addrace[type2]+=val;
|
|
|
+ sd->indexed_bonus.arrow_addrace[type2]+=val;
|
|
|
break;
|
|
|
case SP_ADDCLASS: // bonus2 bAddClass,c,x;
|
|
|
PC_BONUS_CHK_CLASS(type2,SP_ADDCLASS);
|
|
@@ -3702,7 +3702,7 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
else if(sd->state.lr_flag == 1)
|
|
|
sd->left_weapon.addclass[type2]+=val;
|
|
|
else if(sd->state.lr_flag == 2)
|
|
|
- sd->arrow_addclass[type2]+=val;
|
|
|
+ sd->indexed_bonus.arrow_addclass[type2]+=val;
|
|
|
break;
|
|
|
case SP_ADDSIZE: // bonus2 bAddSize,s,x;
|
|
|
PC_BONUS_CHK_SIZE(type2,SP_ADDSIZE);
|
|
@@ -3711,22 +3711,22 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
else if(sd->state.lr_flag == 1)
|
|
|
sd->left_weapon.addsize[type2]+=val;
|
|
|
else if(sd->state.lr_flag == 2)
|
|
|
- sd->arrow_addsize[type2]+=val;
|
|
|
+ sd->indexed_bonus.arrow_addsize[type2]+=val;
|
|
|
break;
|
|
|
case SP_SUBELE: // bonus2 bSubEle,e,x;
|
|
|
PC_BONUS_CHK_ELEMENT(type2,SP_SUBELE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->subele_script[type2] += val;
|
|
|
+ sd->indexed_bonus.subele_script[type2] += val;
|
|
|
break;
|
|
|
case SP_SUBRACE: // bonus2 bSubRace,r,x;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_SUBRACE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->subrace[type2]+=val;
|
|
|
+ sd->indexed_bonus.subrace[type2]+=val;
|
|
|
break;
|
|
|
case SP_SUBCLASS: // bonus2 bSubClass,c,x;
|
|
|
PC_BONUS_CHK_CLASS(type2,SP_SUBCLASS);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->subclass[type2]+=val;
|
|
|
+ sd->indexed_bonus.subclass[type2]+=val;
|
|
|
break;
|
|
|
case SP_ADDEFF: // bonus2 bAddEff,eff,n;
|
|
|
PC_BONUS_CHK_SC(type2,SP_ADDEFF);
|
|
@@ -3749,27 +3749,27 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
case SP_MAGIC_ADDELE: // bonus2 bMagicAddEle,e,x;
|
|
|
PC_BONUS_CHK_ELEMENT(type2,SP_MAGIC_ADDELE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->magic_addele_script[type2] += val;
|
|
|
+ sd->indexed_bonus.magic_addele_script[type2] += val;
|
|
|
break;
|
|
|
case SP_MAGIC_ADDRACE: // bonus2 bMagicAddRace,r,x;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_MAGIC_ADDRACE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->magic_addrace[type2]+=val;
|
|
|
+ sd->indexed_bonus.magic_addrace[type2]+=val;
|
|
|
break;
|
|
|
case SP_MAGIC_ADDCLASS: // bonus2 bMagicAddClass,c,x;
|
|
|
PC_BONUS_CHK_CLASS(type2,SP_MAGIC_ADDCLASS);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->magic_addclass[type2]+=val;
|
|
|
+ sd->indexed_bonus.magic_addclass[type2]+=val;
|
|
|
break;
|
|
|
case SP_MAGIC_ADDSIZE: // bonus2 bMagicAddSize,s,x;
|
|
|
PC_BONUS_CHK_SIZE(type2,SP_MAGIC_ADDSIZE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->magic_addsize[type2]+=val;
|
|
|
+ sd->indexed_bonus.magic_addsize[type2]+=val;
|
|
|
break;
|
|
|
case SP_MAGIC_ATK_ELE: // bonus2 bMagicAtkEle,e,x;
|
|
|
PC_BONUS_CHK_ELEMENT(type2,SP_MAGIC_ATK_ELE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->magic_atk_ele[type2]+=val;
|
|
|
+ sd->indexed_bonus.magic_atk_ele[type2]+=val;
|
|
|
break;
|
|
|
case SP_ADD_DAMAGE_CLASS: { // bonus2 bAddDamageClass,mid,x;
|
|
|
struct weapon_data *wd = (sd->state.lr_flag ? &sd->left_weapon : &sd->right_weapon);
|
|
@@ -3858,35 +3858,35 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
PC_BONUS_CHK_ELEMENT(type2,SP_WEAPON_COMA_ELE);
|
|
|
if(sd->state.lr_flag == 2)
|
|
|
break;
|
|
|
- sd->weapon_coma_ele[type2] += val;
|
|
|
+ sd->indexed_bonus.weapon_coma_ele[type2] += val;
|
|
|
sd->special_state.bonus_coma = 1;
|
|
|
break;
|
|
|
case SP_WEAPON_COMA_RACE: // bonus2 bWeaponComaRace,r,n;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_WEAPON_COMA_RACE);
|
|
|
if(sd->state.lr_flag == 2)
|
|
|
break;
|
|
|
- sd->weapon_coma_race[type2] += val;
|
|
|
+ sd->indexed_bonus.weapon_coma_race[type2] += val;
|
|
|
sd->special_state.bonus_coma = 1;
|
|
|
break;
|
|
|
case SP_WEAPON_COMA_CLASS: // bonus2 bWeaponComaClass,c,n;
|
|
|
PC_BONUS_CHK_CLASS(type2,SP_WEAPON_COMA_CLASS);
|
|
|
if(sd->state.lr_flag == 2)
|
|
|
break;
|
|
|
- sd->weapon_coma_class[type2] += val;
|
|
|
+ sd->indexed_bonus.weapon_coma_class[type2] += val;
|
|
|
sd->special_state.bonus_coma = 1;
|
|
|
break;
|
|
|
case SP_WEAPON_ATK: // bonus2 bWeaponAtk,w,n;
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->weapon_atk[type2]+=val;
|
|
|
+ sd->indexed_bonus.weapon_atk[type2]+=val;
|
|
|
break;
|
|
|
case SP_WEAPON_DAMAGE_RATE: // bonus2 bWeaponDamageRate,w,n;
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->weapon_damage_rate[type2]+=val;
|
|
|
+ sd->indexed_bonus.weapon_damage_rate[type2]+=val;
|
|
|
break;
|
|
|
case SP_CRITICAL_ADDRACE: // bonus2 bCriticalAddRace,r,n;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_CRITICAL_ADDRACE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->critaddrace[type2] += val*10;
|
|
|
+ sd->indexed_bonus.critaddrace[type2] += val*10;
|
|
|
break;
|
|
|
case SP_ADDEFF_WHENHIT: // bonus2 bAddEffWhenHit,eff,n;
|
|
|
PC_BONUS_CHK_SC(type2,SP_ADDEFF_WHENHIT);
|
|
@@ -3967,17 +3967,17 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
case SP_SUBSIZE: // bonus2 bSubSize,s,x;
|
|
|
PC_BONUS_CHK_SIZE(type2,SP_SUBSIZE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->subsize[type2]+=val;
|
|
|
+ sd->indexed_bonus.subsize[type2]+=val;
|
|
|
break;
|
|
|
case SP_MAGIC_SUBSIZE: // bonus2 bMagicSubSize,s,x;
|
|
|
PC_BONUS_CHK_SIZE(type2,SP_MAGIC_SUBSIZE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->magic_subsize[type2]+=val;
|
|
|
+ sd->indexed_bonus.magic_subsize[type2]+=val;
|
|
|
break;
|
|
|
case SP_SUBRACE2: // bonus2 bSubRace2,mr,x;
|
|
|
PC_BONUS_CHK_RACE2(type2,SP_SUBRACE2);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->subrace2[type2]+=val;
|
|
|
+ sd->indexed_bonus.subrace2[type2]+=val;
|
|
|
break;
|
|
|
case SP_ADD_ITEM_HEAL_RATE: // bonus2 bAddItemHealRate,iid,n;
|
|
|
if(sd->state.lr_flag == 2)
|
|
@@ -4010,17 +4010,17 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
case SP_EXP_ADDRACE: // bonus2 bExpAddRace,r,x;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_EXP_ADDRACE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->expaddrace[type2]+=val;
|
|
|
+ sd->indexed_bonus.expaddrace[type2]+=val;
|
|
|
break;
|
|
|
case SP_EXP_ADDCLASS: // bonus2 bExpAddClass,c,x;
|
|
|
PC_BONUS_CHK_CLASS(type2,SP_EXP_ADDCLASS);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->expaddclass[type2]+=val;
|
|
|
+ sd->indexed_bonus.expaddclass[type2]+=val;
|
|
|
break;
|
|
|
case SP_SP_GAIN_RACE: // bonus2 bSPGainRace,r,n;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_SP_GAIN_RACE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->sp_gain_race[type2]+=val;
|
|
|
+ sd->indexed_bonus.sp_gain_race[type2]+=val;
|
|
|
break;
|
|
|
case SP_ADD_MONSTER_DROP_ITEM: // bonus2 bAddMonsterDropItem,iid,n;
|
|
|
if (sd->state.lr_flag != 2)
|
|
@@ -4081,22 +4081,22 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
case SP_IGNORE_MDEF_RACE_RATE: // bonus2 bIgnoreMdefRaceRate,r,n;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_IGNORE_MDEF_RACE_RATE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->ignore_mdef_by_race[type2] += val;
|
|
|
+ sd->indexed_bonus.ignore_mdef_by_race[type2] += val;
|
|
|
break;
|
|
|
case SP_IGNORE_MDEF_CLASS_RATE: // bonus2 bIgnoreMdefClassRate,c,n;
|
|
|
PC_BONUS_CHK_CLASS(type2,SP_IGNORE_MDEF_CLASS_RATE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->ignore_mdef_by_class[type2] += val;
|
|
|
+ sd->indexed_bonus.ignore_mdef_by_class[type2] += val;
|
|
|
break;
|
|
|
case SP_IGNORE_DEF_RACE_RATE: // bonus2 bIgnoreDefRaceRate,r,n;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_IGNORE_DEF_RACE_RATE);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->ignore_def_by_race[type2] += val;
|
|
|
+ sd->indexed_bonus.ignore_def_by_race[type2] += val;
|
|
|
break;
|
|
|
case SP_IGNORE_DEF_CLASS_RATE: // bonus2 bIgnoreDefClassRate,r,n;
|
|
|
PC_BONUS_CHK_CLASS(type2, SP_IGNORE_DEF_CLASS_RATE);
|
|
|
if (sd->state.lr_flag != 2)
|
|
|
- sd->ignore_def_by_class[type2] += val;
|
|
|
+ sd->indexed_bonus.ignore_def_by_class[type2] += val;
|
|
|
break;
|
|
|
case SP_SKILL_USE_SP_RATE: // bonus2 bSkillUseSPrate,sk,n;
|
|
|
if(sd->state.lr_flag == 2)
|
|
@@ -4207,41 +4207,41 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|
|
break;
|
|
|
case SP_SUBDEF_ELE: // bonus2 bSubDefEle,e,x;
|
|
|
PC_BONUS_CHK_ELEMENT(type2,SP_SUBDEF_ELE);
|
|
|
- sd->subdefele[type2] += val;
|
|
|
+ sd->indexed_bonus.subdefele[type2] += val;
|
|
|
break;
|
|
|
case SP_COMA_CLASS: // bonus2 bComaClass,c,n;
|
|
|
PC_BONUS_CHK_CLASS(type2,SP_COMA_CLASS);
|
|
|
- sd->coma_class[type2] += val;
|
|
|
+ sd->indexed_bonus.coma_class[type2] += val;
|
|
|
sd->special_state.bonus_coma = 1;
|
|
|
break;
|
|
|
case SP_COMA_RACE: // bonus2 bComaRace,r,n;
|
|
|
PC_BONUS_CHK_RACE(type2,SP_COMA_RACE);
|
|
|
- sd->coma_race[type2] += val;
|
|
|
+ sd->indexed_bonus.coma_race[type2] += val;
|
|
|
sd->special_state.bonus_coma = 1;
|
|
|
break;
|
|
|
case SP_MAGIC_ADDRACE2: // bonus2 bMagicAddRace2,mr,n;
|
|
|
PC_BONUS_CHK_RACE2(type2, SP_MAGIC_ADDRACE2);
|
|
|
if(sd->state.lr_flag != 2)
|
|
|
- sd->magic_addrace2[type2] += val;
|
|
|
+ sd->indexed_bonus.magic_addrace2[type2] += val;
|
|
|
break;
|
|
|
case SP_IGNORE_MDEF_RACE2_RATE: //bonus2 bIgnoreMdefRace2Rate,mr,n;
|
|
|
PC_BONUS_CHK_RACE2(type2, SP_IGNORE_MDEF_RACE2);
|
|
|
if (sd->state.lr_flag != 2)
|
|
|
- sd->ignore_mdef_by_race2[type2] += val;
|
|
|
+ sd->indexed_bonus.ignore_mdef_by_race2[type2] += val;
|
|
|
break;
|
|
|
case SP_DROP_ADDRACE: // bonus2 bDropAddRace,r,x;
|
|
|
PC_BONUS_CHK_RACE(type2, SP_DROP_ADDRACE);
|
|
|
if (sd->state.lr_flag != 2)
|
|
|
- sd->dropaddrace[type2] += val;
|
|
|
+ sd->indexed_bonus.dropaddrace[type2] += val;
|
|
|
break;
|
|
|
case SP_DROP_ADDCLASS: // bonus2 bDropAddClass,c,x;
|
|
|
PC_BONUS_CHK_CLASS(type2, SP_DROP_ADDCLASS);
|
|
|
if (sd->state.lr_flag != 2)
|
|
|
- sd->dropaddclass[type2] += val;
|
|
|
+ sd->indexed_bonus.dropaddclass[type2] += val;
|
|
|
break;
|
|
|
case SP_MAGIC_SUBDEF_ELE: // bonus2 bMagicSubDefEle,e,x;
|
|
|
PC_BONUS_CHK_ELEMENT(type2, SP_MAGIC_SUBDEF_ELE);
|
|
|
- sd->magic_subdefele[type2] += val;
|
|
|
+ sd->indexed_bonus.magic_subdefele[type2] += val;
|
|
|
break;
|
|
|
default:
|
|
|
if (current_equip_combo_pos > 0) {
|
|
@@ -7168,14 +7168,14 @@ static void pc_calcexp(struct map_session_data *sd, t_exp *base_exp, t_exp *job_
|
|
|
if (src) {
|
|
|
struct status_data *status = status_get_status_data(src);
|
|
|
|
|
|
- if( sd->expaddrace[status->race] )
|
|
|
- bonus += sd->expaddrace[status->race];
|
|
|
- if( sd->expaddrace[RC_ALL] )
|
|
|
- bonus += sd->expaddrace[RC_ALL];
|
|
|
- if( sd->expaddclass[status->class_] )
|
|
|
- bonus += sd->expaddclass[status->class_];
|
|
|
- if( sd->expaddclass[CLASS_ALL] )
|
|
|
- bonus += sd->expaddclass[CLASS_ALL];
|
|
|
+ if( sd->indexed_bonus.expaddrace[status->race] )
|
|
|
+ bonus += sd->indexed_bonus.expaddrace[status->race];
|
|
|
+ if( sd->indexed_bonus.expaddrace[RC_ALL] )
|
|
|
+ bonus += sd->indexed_bonus.expaddrace[RC_ALL];
|
|
|
+ if( sd->indexed_bonus.expaddclass[status->class_] )
|
|
|
+ bonus += sd->indexed_bonus.expaddclass[status->class_];
|
|
|
+ if( sd->indexed_bonus.expaddclass[CLASS_ALL] )
|
|
|
+ bonus += sd->indexed_bonus.expaddclass[CLASS_ALL];
|
|
|
|
|
|
if (battle_config.pk_mode &&
|
|
|
(int)(status_get_lv(src) - sd->status.base_level) >= 20)
|