Implemented new item bonuses bRegenPercentHP and bRegenPercentHP
This commit is contained in:
parent
30fb80afd8
commit
a79d065973
@ -155,6 +155,8 @@ bonus2 bHPRegenRate,n,t; Gain n HP every t milliseconds
|
|||||||
bonus2 bHPLossRate,n,t; Lose n HP every t milliseconds
|
bonus2 bHPLossRate,n,t; Lose n HP every t milliseconds
|
||||||
bonus2 bSPRegenRate,n,t; Gain n SP every t milliseconds
|
bonus2 bSPRegenRate,n,t; Gain n SP every t milliseconds
|
||||||
bonus2 bSPLossRate,n,t; Lose n SP every t milliseconds
|
bonus2 bSPLossRate,n,t; Lose n SP every t milliseconds
|
||||||
|
bonus2 bRegenPercentHP,n,t; Gain n% of max HP every t milliseconds
|
||||||
|
bonus2 bRegenPercentSP,n,t; Gain n% of max SP every t milliseconds
|
||||||
bonus bNoRegen,x; Stops HP or SP regeneration (x: 1=HP, 2=SP)
|
bonus bNoRegen,x; Stops HP or SP regeneration (x: 1=HP, 2=SP)
|
||||||
|
|
||||||
bonus bUseSPrate,n; SP consumption + n%
|
bonus bUseSPrate,n; SP consumption + n%
|
||||||
|
@ -469,7 +469,7 @@ enum _sp {
|
|||||||
SP_HP_VANISH_RACE_RATE, SP_SP_VANISH_RACE_RATE, SP_ABSORB_DMG_MAXHP, SP_SUB_SKILL, SP_SUBDEF_ELE, // 2074-2078
|
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, SP_MAGIC_ADDRACE2, SP_IGNORE_MDEF_RACE2_RATE, // 2079-2082
|
SP_STATE_NORECOVER_RACE, SP_CRITICAL_RANGEATK, SP_MAGIC_ADDRACE2, SP_IGNORE_MDEF_RACE2_RATE, // 2079-2082
|
||||||
SP_WEAPON_ATK_RATE, SP_WEAPON_MATK_RATE, SP_DROP_ADDRACE, SP_DROP_ADDCLASS, SP_NO_MADO_FUEL, // 2083-2087
|
SP_WEAPON_ATK_RATE, SP_WEAPON_MATK_RATE, SP_DROP_ADDRACE, SP_DROP_ADDCLASS, SP_NO_MADO_FUEL, // 2083-2087
|
||||||
SP_IGNORE_DEF_CLASS_RATE, //2088
|
SP_IGNORE_DEF_CLASS_RATE, SP_REGEN_PERCENT_HP, SP_REGEN_PERCENT_SP, //2088-2091
|
||||||
};
|
};
|
||||||
|
|
||||||
enum _look {
|
enum _look {
|
||||||
|
28
src/map/pc.c
28
src/map/pc.c
@ -3413,6 +3413,18 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
|
|||||||
sd->hp_regen.rate = val;
|
sd->hp_regen.rate = val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SP_REGEN_PERCENT_HP: // bonus2 bRegenPercentHP,n,t;
|
||||||
|
if (sd->state.lr_flag != 2) {
|
||||||
|
sd->percent_hp_regen.value = type2;
|
||||||
|
sd->percent_hp_regen.rate = val;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SP_REGEN_PERCENT_SP: // bonus2 bRegenPercentSP,n,t;
|
||||||
|
if (sd->state.lr_flag != 2) {
|
||||||
|
sd->percent_sp_regen.value = type2;
|
||||||
|
sd->percent_sp_regen.rate = val;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case SP_ADDRACE2: // bonus2 bAddRace2,mr,x;
|
case SP_ADDRACE2: // bonus2 bAddRace2,mr,x;
|
||||||
PC_BONUS_CHK_RACE2(type2,SP_ADDRACE2);
|
PC_BONUS_CHK_RACE2(type2,SP_ADDRACE2);
|
||||||
if(sd->state.lr_flag != 2)
|
if(sd->state.lr_flag != 2)
|
||||||
@ -10301,6 +10313,22 @@ void pc_regen (struct map_session_data *sd, unsigned int diff_tick)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sd->percent_hp_regen.value) {
|
||||||
|
sd->percent_hp_regen.tick += diff_tick;
|
||||||
|
while (sd->percent_hp_regen.tick >= sd->percent_hp_regen.rate) {
|
||||||
|
hp += (sd->percent_hp_regen.value * sd->status.max_hp);
|
||||||
|
sd->percent_hp_regen.tick -= sd->percent_hp_regen.rate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sd->percent_sp_regen.value) {
|
||||||
|
sd->percent_sp_regen.tick += diff_tick;
|
||||||
|
while (sd->percent_sp_regen.tick >= sd->percent_sp_regen.rate) {
|
||||||
|
sp += (sd->percent_sp_regen.value * sd->status.max_sp);
|
||||||
|
sd->percent_sp_regen.tick -= sd->percent_sp_regen.rate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (hp > 0 || sp > 0)
|
if (hp > 0 || sp > 0)
|
||||||
status_heal(&sd->bl, hp, sp, 0);
|
status_heal(&sd->bl, hp, sp, 0);
|
||||||
}
|
}
|
||||||
|
@ -395,7 +395,7 @@ struct map_session_data {
|
|||||||
short value;
|
short value;
|
||||||
int rate;
|
int rate;
|
||||||
int tick;
|
int tick;
|
||||||
} hp_loss, sp_loss, hp_regen, sp_regen;
|
} hp_loss, sp_loss, hp_regen, sp_regen, percent_hp_regen, percent_sp_regen;
|
||||||
struct {
|
struct {
|
||||||
short class_, rate;
|
short class_, rate;
|
||||||
} add_def[MAX_PC_BONUS], add_mdef[MAX_PC_BONUS], add_mdmg[MAX_PC_BONUS];
|
} add_def[MAX_PC_BONUS], add_mdef[MAX_PC_BONUS], add_mdmg[MAX_PC_BONUS];
|
||||||
|
@ -664,6 +664,8 @@
|
|||||||
script_set_constant("bDropAddClass", SP_DROP_ADDCLASS, false);
|
script_set_constant("bDropAddClass", SP_DROP_ADDCLASS, false);
|
||||||
script_set_constant("bNoMadoFuel", SP_NO_MADO_FUEL, false);
|
script_set_constant("bNoMadoFuel", SP_NO_MADO_FUEL, false);
|
||||||
script_set_constant("bIgnoreDefClassRate", SP_IGNORE_DEF_CLASS_RATE, false);
|
script_set_constant("bIgnoreDefClassRate", SP_IGNORE_DEF_CLASS_RATE, false);
|
||||||
|
script_set_constant("bRegenPercentHP", SP_REGEN_PERCENT_HP, false);
|
||||||
|
script_set_constant("bRegenPercentSP", SP_REGEN_PERCENT_SP, false);
|
||||||
|
|
||||||
/* equip indices */
|
/* equip indices */
|
||||||
export_constant(EQI_HEAD_TOP);
|
export_constant(EQI_HEAD_TOP);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user