|
@@ -1050,7 +1050,7 @@ uint16 StatusDatabase::getSkill(sc_type type) {
|
|
* @return True if flag is set or false otherwise
|
|
* @return True if flag is set or false otherwise
|
|
*/
|
|
*/
|
|
bool StatusDatabase::hasSCF(status_change *sc, e_status_change_flag flag) {
|
|
bool StatusDatabase::hasSCF(status_change *sc, e_status_change_flag flag) {
|
|
- if (sc == nullptr || sc->count == 0 || flag == SCF_NONE)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty() || flag == SCF_NONE)
|
|
return false;
|
|
return false;
|
|
|
|
|
|
for (const auto &status_it : *this) {
|
|
for (const auto &status_it : *this) {
|
|
@@ -1124,7 +1124,7 @@ void StatusDatabase::removeByStatusFlag(block_list *bl, std::vector<e_status_cha
|
|
|
|
|
|
status_change *sc = status_get_sc(bl);
|
|
status_change *sc = status_get_sc(bl);
|
|
|
|
|
|
- if (sc == nullptr || sc->count == 0)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return;
|
|
return;
|
|
|
|
|
|
for (const auto &status_it : *this) {
|
|
for (const auto &status_it : *this) {
|
|
@@ -1197,6 +1197,10 @@ void status_change::clearSCE(enum sc_type type) {
|
|
lastStatus = {type, data[type]};
|
|
lastStatus = {type, data[type]};
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+bool status_change::empty(){
|
|
|
|
+ return this->count == 0;
|
|
|
|
+}
|
|
|
|
+
|
|
/** Creates dummy status */
|
|
/** Creates dummy status */
|
|
static void initDummyData(void) {
|
|
static void initDummyData(void) {
|
|
memset(&dummy_status, 0, sizeof(dummy_status));
|
|
memset(&dummy_status, 0, sizeof(dummy_status));
|
|
@@ -1738,7 +1742,7 @@ int32 status_heal(struct block_list *bl,int64 hhp,int64 hsp, int64 hap, int32 fl
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
sc = status_get_sc(bl);
|
|
sc = status_get_sc(bl);
|
|
- if (sc && !sc->count)
|
|
|
|
|
|
+ if (sc != nullptr && sc->empty())
|
|
sc = nullptr;
|
|
sc = nullptr;
|
|
|
|
|
|
if (hp < 0) {
|
|
if (hp < 0) {
|
|
@@ -2024,7 +2028,7 @@ bool status_check_skilluse(struct block_list *src, struct block_list *target, ui
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
- if( sc && sc->count ) {
|
|
|
|
|
|
+ if( sc != nullptr && !sc->empty() ) {
|
|
if (sc->getSCE(SC_ALL_RIDING))
|
|
if (sc->getSCE(SC_ALL_RIDING))
|
|
return false; //You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe)
|
|
return false; //You can't use skills while in the new mounts (The client doesn't let you, this is to make cheat-safe)
|
|
|
|
|
|
@@ -2159,7 +2163,7 @@ bool status_check_skilluse(struct block_list *src, struct block_list *target, ui
|
|
if (target == nullptr || target == src) // No further checking needed.
|
|
if (target == nullptr || target == src) // No further checking needed.
|
|
return true;
|
|
return true;
|
|
|
|
|
|
- if (tsc && tsc->count) {
|
|
|
|
|
|
+ if (tsc != nullptr && !tsc->empty()) {
|
|
if(!skill_id && tsc->getSCE(SC_TRICKDEAD))
|
|
if(!skill_id && tsc->getSCE(SC_TRICKDEAD))
|
|
return false;
|
|
return false;
|
|
if((skill_id == WZ_STORMGUST || skill_id == WZ_FROSTNOVA || skill_id == NJ_HYOUSYOURAKU || skill_id == NPC_STORMGUST2)
|
|
if((skill_id == WZ_STORMGUST || skill_id == WZ_FROSTNOVA || skill_id == NJ_HYOUSYOURAKU || skill_id == NPC_STORMGUST2)
|
|
@@ -4088,7 +4092,7 @@ int32 status_calc_pc_sub(map_session_data* sd, uint8 opt)
|
|
current_equip_opt_index = -1;
|
|
current_equip_opt_index = -1;
|
|
}
|
|
}
|
|
|
|
|
|
- if (sc->count){
|
|
|
|
|
|
+ if (!sc->empty()){
|
|
if( status_change_entry* sce = sc->getSCE(SC_ITEMSCRIPT); sce != nullptr ){
|
|
if( status_change_entry* sce = sc->getSCE(SC_ITEMSCRIPT); sce != nullptr ){
|
|
std::shared_ptr<item_data> data = item_db.find(sc->getSCE(SC_ITEMSCRIPT)->val1);
|
|
std::shared_ptr<item_data> data = item_db.find(sc->getSCE(SC_ITEMSCRIPT)->val1);
|
|
|
|
|
|
@@ -4682,7 +4686,7 @@ int32 status_calc_pc_sub(map_session_data* sd, uint8 opt)
|
|
sd->indexed_bonus.magic_atk_ele[ELE_POISON] += skill;
|
|
sd->indexed_bonus.magic_atk_ele[ELE_POISON] += skill;
|
|
}
|
|
}
|
|
|
|
|
|
- if(sc->count) {
|
|
|
|
|
|
+ if(!sc->empty()) {
|
|
if(sc->getSCE(SC_CONCENTRATE)) { // Update the card-bonus data
|
|
if(sc->getSCE(SC_CONCENTRATE)) { // Update the card-bonus data
|
|
sc->getSCE(SC_CONCENTRATE)->val3 = sd->indexed_bonus.param_bonus[1]; // Agi
|
|
sc->getSCE(SC_CONCENTRATE)->val3 = sd->indexed_bonus.param_bonus[1]; // Agi
|
|
sc->getSCE(SC_CONCENTRATE)->val4 = sd->indexed_bonus.param_bonus[4]; // Dex
|
|
sc->getSCE(SC_CONCENTRATE)->val4 = sd->indexed_bonus.param_bonus[4]; // Dex
|
|
@@ -5219,7 +5223,7 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct
|
|
if( (skill=pc_checkskill(sd,SM_RECOVERY)) > 0 )
|
|
if( (skill=pc_checkskill(sd,SM_RECOVERY)) > 0 )
|
|
val += skill*5 + skill*status->max_hp/500;
|
|
val += skill*5 + skill*status->max_hp/500;
|
|
|
|
|
|
- if (sc && sc->count) {
|
|
|
|
|
|
+ if (sc != nullptr && !sc->empty()) {
|
|
if (sc->getSCE(SC_INCREASE_MAXHP))
|
|
if (sc->getSCE(SC_INCREASE_MAXHP))
|
|
val += val * sc->getSCE(SC_INCREASE_MAXHP)->val2 / 100;
|
|
val += val * sc->getSCE(SC_INCREASE_MAXHP)->val2 / 100;
|
|
}
|
|
}
|
|
@@ -5234,7 +5238,7 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct
|
|
if( (skill=pc_checkskill(sd,WM_LESSON)) > 0 )
|
|
if( (skill=pc_checkskill(sd,WM_LESSON)) > 0 )
|
|
val += 3 + 3 * skill;
|
|
val += 3 + 3 * skill;
|
|
|
|
|
|
- if (sc && sc->count) {
|
|
|
|
|
|
+ if (sc != nullptr && !sc->empty()) {
|
|
if (sc->getSCE(SC_ANCILLA))
|
|
if (sc->getSCE(SC_ANCILLA))
|
|
val += sc->getSCE(SC_ANCILLA)->val2 / 100;
|
|
val += sc->getSCE(SC_ANCILLA)->val2 / 100;
|
|
if (sc->getSCE(SC_INCREASE_MAXSP))
|
|
if (sc->getSCE(SC_INCREASE_MAXSP))
|
|
@@ -5320,7 +5324,7 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, sta
|
|
}
|
|
}
|
|
regen->rate.hp = regen->rate.sp = 100;
|
|
regen->rate.hp = regen->rate.sp = 100;
|
|
|
|
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return;
|
|
return;
|
|
|
|
|
|
// No HP or SP regen
|
|
// No HP or SP regen
|
|
@@ -5449,7 +5453,7 @@ void status_calc_state( struct block_list *bl, status_change *sc, std::bitset<SC
|
|
{
|
|
{
|
|
|
|
|
|
/// No sc at all, we can zero without any extra weight over our conciousness
|
|
/// No sc at all, we can zero without any extra weight over our conciousness
|
|
- if( !sc->count ) {
|
|
|
|
|
|
+ if( sc->empty() ) {
|
|
sc->cant = {};
|
|
sc->cant = {};
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -6489,7 +6493,7 @@ void status_calc_bl_(struct block_list* bl, std::bitset<SCB_MAX> flag, uint8 opt
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_str(struct block_list *bl, status_change *sc, int32 str)
|
|
static unsigned short status_calc_str(struct block_list *bl, status_change *sc, int32 str)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(str,0,USHRT_MAX);
|
|
return cap_value(str,0,USHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
@@ -6574,7 +6578,7 @@ static unsigned short status_calc_str(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_agi(struct block_list *bl, status_change *sc, int32 agi)
|
|
static unsigned short status_calc_agi(struct block_list *bl, status_change *sc, int32 agi)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(agi,0,USHRT_MAX);
|
|
return cap_value(agi,0,USHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
@@ -6653,7 +6657,7 @@ static unsigned short status_calc_agi(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_vit(struct block_list *bl, status_change *sc, int32 vit)
|
|
static unsigned short status_calc_vit(struct block_list *bl, status_change *sc, int32 vit)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(vit,0,USHRT_MAX);
|
|
return cap_value(vit,0,USHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
@@ -6724,7 +6728,7 @@ static unsigned short status_calc_vit(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_int(struct block_list *bl, status_change *sc, int32 int_)
|
|
static unsigned short status_calc_int(struct block_list *bl, status_change *sc, int32 int_)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(int_,0,USHRT_MAX);
|
|
return cap_value(int_,0,USHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
@@ -6812,7 +6816,7 @@ static unsigned short status_calc_int(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_dex(struct block_list *bl, status_change *sc, int32 dex)
|
|
static unsigned short status_calc_dex(struct block_list *bl, status_change *sc, int32 dex)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(dex,0,USHRT_MAX);
|
|
return cap_value(dex,0,USHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
@@ -6895,7 +6899,7 @@ static unsigned short status_calc_dex(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_luk(struct block_list *bl, status_change *sc, int32 luk)
|
|
static unsigned short status_calc_luk(struct block_list *bl, status_change *sc, int32 luk)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(luk,0,USHRT_MAX);
|
|
return cap_value(luk,0,USHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
if(sc->getSCE(SC_HARMONIZE)) {
|
|
@@ -6966,7 +6970,7 @@ static unsigned short status_calc_luk(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_pow(struct block_list *bl, status_change *sc, int32 pow)
|
|
static unsigned short status_calc_pow(struct block_list *bl, status_change *sc, int32 pow)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(pow, 0, USHRT_MAX);
|
|
return cap_value(pow, 0, USHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_BENEDICTUM))
|
|
if (sc->getSCE(SC_BENEDICTUM))
|
|
@@ -6984,7 +6988,7 @@ static unsigned short status_calc_pow(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_sta(struct block_list *bl, status_change *sc, int32 sta)
|
|
static unsigned short status_calc_sta(struct block_list *bl, status_change *sc, int32 sta)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(sta, 0, USHRT_MAX);
|
|
return cap_value(sta, 0, USHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_RELIGIO))
|
|
if (sc->getSCE(SC_RELIGIO))
|
|
@@ -7002,7 +7006,7 @@ static unsigned short status_calc_sta(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_wis(struct block_list *bl, status_change *sc, int32 wis)
|
|
static unsigned short status_calc_wis(struct block_list *bl, status_change *sc, int32 wis)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(wis, 0, USHRT_MAX);
|
|
return cap_value(wis, 0, USHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_RELIGIO))
|
|
if (sc->getSCE(SC_RELIGIO))
|
|
@@ -7020,7 +7024,7 @@ static unsigned short status_calc_wis(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_spl(struct block_list *bl, status_change *sc, int32 spl)
|
|
static unsigned short status_calc_spl(struct block_list *bl, status_change *sc, int32 spl)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(spl, 0, USHRT_MAX);
|
|
return cap_value(spl, 0, USHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_RELIGIO))
|
|
if (sc->getSCE(SC_RELIGIO))
|
|
@@ -7038,7 +7042,7 @@ static unsigned short status_calc_spl(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_con(struct block_list *bl, status_change *sc, int32 con)
|
|
static unsigned short status_calc_con(struct block_list *bl, status_change *sc, int32 con)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(con, 0, USHRT_MAX);
|
|
return cap_value(con, 0, USHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_BENEDICTUM))
|
|
if (sc->getSCE(SC_BENEDICTUM))
|
|
@@ -7056,7 +7060,7 @@ static unsigned short status_calc_con(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_crt(struct block_list *bl, status_change *sc, int32 crt)
|
|
static unsigned short status_calc_crt(struct block_list *bl, status_change *sc, int32 crt)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(crt, 0, USHRT_MAX);
|
|
return cap_value(crt, 0, USHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_BENEDICTUM))
|
|
if (sc->getSCE(SC_BENEDICTUM))
|
|
@@ -7074,7 +7078,7 @@ static unsigned short status_calc_crt(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_batk(struct block_list *bl, status_change *sc, int32 batk)
|
|
static unsigned short status_calc_batk(struct block_list *bl, status_change *sc, int32 batk)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(batk,0,USHRT_MAX);
|
|
return cap_value(batk,0,USHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_ATKPOTION))
|
|
if(sc->getSCE(SC_ATKPOTION))
|
|
@@ -7136,7 +7140,7 @@ static unsigned short status_calc_batk(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static unsigned short status_calc_watk(struct block_list *bl, status_change *sc, int32 watk)
|
|
static unsigned short status_calc_watk(struct block_list *bl, status_change *sc, int32 watk)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(watk,0,USHRT_MAX);
|
|
return cap_value(watk,0,USHRT_MAX);
|
|
|
|
|
|
#ifndef RENEWAL
|
|
#ifndef RENEWAL
|
|
@@ -7234,7 +7238,7 @@ uint16 status_calc_pseudobuff_matk( map_session_data* sd, status_change *sc, int
|
|
matk += 15 * skill_lv + (skill_lv > 4 ? 25 : 0);
|
|
matk += 15 * skill_lv + (skill_lv > 4 ? 25 : 0);
|
|
}
|
|
}
|
|
|
|
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return static_cast<uint16>( cap_value(matk,0,USHRT_MAX) );
|
|
return static_cast<uint16>( cap_value(matk,0,USHRT_MAX) );
|
|
|
|
|
|
struct status_change_entry* sce;
|
|
struct status_change_entry* sce;
|
|
@@ -7286,7 +7290,7 @@ uint16 status_calc_pseudobuff_matk( map_session_data* sd, status_change *sc, int
|
|
* @return modified matk with cap_value(matk,0,USHRT_MAX)
|
|
* @return modified matk with cap_value(matk,0,USHRT_MAX)
|
|
*/
|
|
*/
|
|
uint16 status_calc_consumablematk( status_change *sc, int32 matk ){
|
|
uint16 status_calc_consumablematk( status_change *sc, int32 matk ){
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return static_cast<uint16>( cap_value(matk,0,USHRT_MAX) );
|
|
return static_cast<uint16>( cap_value(matk,0,USHRT_MAX) );
|
|
|
|
|
|
struct status_change_entry* sce;
|
|
struct status_change_entry* sce;
|
|
@@ -7328,7 +7332,7 @@ uint16 status_calc_consumablematk( status_change *sc, int32 matk ){
|
|
*/
|
|
*/
|
|
static signed short status_calc_critical(struct block_list *bl, status_change *sc, int32 critical)
|
|
static signed short status_calc_critical(struct block_list *bl, status_change *sc, int32 critical)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(critical,10,SHRT_MAX);
|
|
return cap_value(critical,10,SHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_INCCRI))
|
|
if (sc->getSCE(SC_INCCRI))
|
|
@@ -7380,7 +7384,7 @@ static signed short status_calc_critical(struct block_list *bl, status_change *s
|
|
*/
|
|
*/
|
|
static signed short status_calc_hit(struct block_list *bl, status_change *sc, int32 hit)
|
|
static signed short status_calc_hit(struct block_list *bl, status_change *sc, int32 hit)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(hit,1,SHRT_MAX);
|
|
return cap_value(hit,1,SHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_INCHIT))
|
|
if(sc->getSCE(SC_INCHIT))
|
|
@@ -7467,7 +7471,7 @@ static signed short status_calc_flee(struct block_list *bl, status_change *sc, i
|
|
flee -= flee * battle_config.bg_flee_penalty/100;
|
|
flee -= flee * battle_config.bg_flee_penalty/100;
|
|
}
|
|
}
|
|
|
|
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(flee,1,SHRT_MAX);
|
|
return cap_value(flee,1,SHRT_MAX);
|
|
if (sc->getSCE(SC_POISON_MIST))
|
|
if (sc->getSCE(SC_POISON_MIST))
|
|
return 0;
|
|
return 0;
|
|
@@ -7576,7 +7580,7 @@ static signed short status_calc_flee(struct block_list *bl, status_change *sc, i
|
|
*/
|
|
*/
|
|
static signed short status_calc_flee2(struct block_list *bl, status_change *sc, int32 flee2)
|
|
static signed short status_calc_flee2(struct block_list *bl, status_change *sc, int32 flee2)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(flee2,10,SHRT_MAX);
|
|
return cap_value(flee2,10,SHRT_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_INCFLEE2))
|
|
if(sc->getSCE(SC_INCFLEE2))
|
|
@@ -7602,7 +7606,7 @@ static signed short status_calc_flee2(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static defType status_calc_def(struct block_list *bl, status_change *sc, int32 def)
|
|
static defType status_calc_def(struct block_list *bl, status_change *sc, int32 def)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
|
|
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_BERSERK))
|
|
if(sc->getSCE(SC_BERSERK))
|
|
@@ -7717,7 +7721,7 @@ static defType status_calc_def(struct block_list *bl, status_change *sc, int32 d
|
|
*/
|
|
*/
|
|
static signed short status_calc_def2(struct block_list *bl, status_change *sc, int32 def2)
|
|
static signed short status_calc_def2(struct block_list *bl, status_change *sc, int32 def2)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
#ifdef RENEWAL
|
|
#ifdef RENEWAL
|
|
return (short)cap_value(def2,SHRT_MIN,SHRT_MAX);
|
|
return (short)cap_value(def2,SHRT_MIN,SHRT_MAX);
|
|
#else
|
|
#else
|
|
@@ -7783,7 +7787,7 @@ static signed short status_calc_def2(struct block_list *bl, status_change *sc, i
|
|
*/
|
|
*/
|
|
static defType status_calc_mdef(struct block_list *bl, status_change *sc, int32 mdef)
|
|
static defType status_calc_mdef(struct block_list *bl, status_change *sc, int32 mdef)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX);
|
|
return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_BERSERK))
|
|
if(sc->getSCE(SC_BERSERK))
|
|
@@ -7847,7 +7851,7 @@ static defType status_calc_mdef(struct block_list *bl, status_change *sc, int32
|
|
*/
|
|
*/
|
|
static signed short status_calc_mdef2(struct block_list *bl, status_change *sc, int32 mdef2)
|
|
static signed short status_calc_mdef2(struct block_list *bl, status_change *sc, int32 mdef2)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
#ifdef RENEWAL
|
|
#ifdef RENEWAL
|
|
return (short)cap_value(mdef2,SHRT_MIN,SHRT_MAX);
|
|
return (short)cap_value(mdef2,SHRT_MIN,SHRT_MAX);
|
|
#else
|
|
#else
|
|
@@ -8106,7 +8110,7 @@ static short status_calc_aspd(struct block_list *bl, status_change *sc, bool fix
|
|
{
|
|
{
|
|
int32 bonus = 0;
|
|
int32 bonus = 0;
|
|
|
|
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
if (fixed) {
|
|
if (fixed) {
|
|
@@ -8257,7 +8261,7 @@ static short status_calc_aspd(struct block_list *bl, status_change *sc, bool fix
|
|
*/
|
|
*/
|
|
static short status_calc_fix_aspd(struct block_list *bl, status_change *sc, int32 aspd)
|
|
static short status_calc_fix_aspd(struct block_list *bl, status_change *sc, int32 aspd)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(aspd, 0, 2000);
|
|
return cap_value(aspd, 0, 2000);
|
|
if (sc->getSCE(SC_OVERED_BOOST))
|
|
if (sc->getSCE(SC_OVERED_BOOST))
|
|
return cap_value(2000 - sc->getSCE(SC_OVERED_BOOST)->val3 * 10, 0, 2000);
|
|
return cap_value(2000 - sc->getSCE(SC_OVERED_BOOST)->val3 * 10, 0, 2000);
|
|
@@ -8297,7 +8301,7 @@ static short status_calc_aspd_rate(struct block_list *bl, status_change *sc, int
|
|
{
|
|
{
|
|
int32 i;
|
|
int32 i;
|
|
|
|
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(aspd_rate,0,SHRT_MAX);
|
|
return cap_value(aspd_rate,0,SHRT_MAX);
|
|
|
|
|
|
int32 max = 0;
|
|
int32 max = 0;
|
|
@@ -8464,7 +8468,7 @@ static unsigned short status_calc_dmotion(struct block_list *bl, status_change *
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
- if (sc && sc->count > 0 && (sc->getSCE(SC_ENDURE) || sc->getSCE(SC_RUN) || sc->getSCE(SC_WUGDASH) || sc->getSCE(SC_SPARKCANDY)))
|
|
|
|
|
|
+ if (sc != nullptr && !sc->empty() && (sc->getSCE(SC_ENDURE) || sc->getSCE(SC_RUN) || sc->getSCE(SC_WUGDASH) || sc->getSCE(SC_SPARKCANDY)))
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
return (unsigned short)cap_value(dmotion,0,USHRT_MAX);
|
|
return (unsigned short)cap_value(dmotion,0,USHRT_MAX);
|
|
@@ -8479,7 +8483,7 @@ static unsigned short status_calc_dmotion(struct block_list *bl, status_change *
|
|
*/
|
|
*/
|
|
static signed short status_calc_patk(struct block_list *bl, status_change *sc, int32 patk)
|
|
static signed short status_calc_patk(struct block_list *bl, status_change *sc, int32 patk)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(patk, 0, SHRT_MAX);
|
|
return cap_value(patk, 0, SHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_POWERFUL_FAITH))
|
|
if (sc->getSCE(SC_POWERFUL_FAITH))
|
|
@@ -8510,7 +8514,7 @@ static signed short status_calc_patk(struct block_list *bl, status_change *sc, i
|
|
*/
|
|
*/
|
|
static signed short status_calc_smatk(struct block_list *bl, status_change *sc, int32 smatk)
|
|
static signed short status_calc_smatk(struct block_list *bl, status_change *sc, int32 smatk)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(smatk, 0, SHRT_MAX);
|
|
return cap_value(smatk, 0, SHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_COMPETENTIA))
|
|
if (sc->getSCE(SC_COMPETENTIA))
|
|
@@ -8537,7 +8541,7 @@ static signed short status_calc_smatk(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static signed short status_calc_res(struct block_list *bl, status_change *sc, int32 res)
|
|
static signed short status_calc_res(struct block_list *bl, status_change *sc, int32 res)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(res, 0, SHRT_MAX);
|
|
return cap_value(res, 0, SHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_FIRM_FAITH))
|
|
if (sc->getSCE(SC_FIRM_FAITH))
|
|
@@ -8567,7 +8571,7 @@ static signed short status_calc_res(struct block_list *bl, status_change *sc, in
|
|
*/
|
|
*/
|
|
static signed short status_calc_mres(struct block_list *bl, status_change *sc, int32 mres)
|
|
static signed short status_calc_mres(struct block_list *bl, status_change *sc, int32 mres)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(mres, 0, SHRT_MAX);
|
|
return cap_value(mres, 0, SHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_GOLDENE_TONE))
|
|
if (sc->getSCE(SC_GOLDENE_TONE))
|
|
@@ -8589,7 +8593,7 @@ static signed short status_calc_mres(struct block_list *bl, status_change *sc, i
|
|
*/
|
|
*/
|
|
static signed short status_calc_hplus(struct block_list *bl, status_change *sc, int32 hplus)
|
|
static signed short status_calc_hplus(struct block_list *bl, status_change *sc, int32 hplus)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(hplus, 0, SHRT_MAX);
|
|
return cap_value(hplus, 0, SHRT_MAX);
|
|
|
|
|
|
return (short)cap_value(hplus, 0, SHRT_MAX);
|
|
return (short)cap_value(hplus, 0, SHRT_MAX);
|
|
@@ -8604,7 +8608,7 @@ static signed short status_calc_hplus(struct block_list *bl, status_change *sc,
|
|
*/
|
|
*/
|
|
static signed short status_calc_crate(struct block_list *bl, status_change *sc, int32 crate)
|
|
static signed short status_calc_crate(struct block_list *bl, status_change *sc, int32 crate)
|
|
{
|
|
{
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return cap_value(crate, 0, SHRT_MAX);
|
|
return cap_value(crate, 0, SHRT_MAX);
|
|
|
|
|
|
if (sc->getSCE(SC_PRE_ACIES))
|
|
if (sc->getSCE(SC_PRE_ACIES))
|
|
@@ -8679,7 +8683,7 @@ static uint32 status_calc_maxap(struct block_list *bl, uint64 maxap)
|
|
*/
|
|
*/
|
|
static unsigned char status_calc_element(struct block_list *bl, status_change *sc, int32 element)
|
|
static unsigned char status_calc_element(struct block_list *bl, status_change *sc, int32 element)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(element, 0, UCHAR_MAX);
|
|
return cap_value(element, 0, UCHAR_MAX);
|
|
|
|
|
|
if(sc->getSCE(SC_FREEZE) || sc->getSCE(SC_CRYSTAL_ARMOR_OPTION))
|
|
if(sc->getSCE(SC_FREEZE) || sc->getSCE(SC_CRYSTAL_ARMOR_OPTION))
|
|
@@ -8713,7 +8717,7 @@ static unsigned char status_calc_element(struct block_list *bl, status_change *s
|
|
*/
|
|
*/
|
|
static unsigned char status_calc_element_lv(struct block_list *bl, status_change *sc, int32 lv)
|
|
static unsigned char status_calc_element_lv(struct block_list *bl, status_change *sc, int32 lv)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(lv, 1, 4);
|
|
return cap_value(lv, 1, 4);
|
|
|
|
|
|
if(sc->getSCE(SC_FREEZE))
|
|
if(sc->getSCE(SC_FREEZE))
|
|
@@ -8746,7 +8750,7 @@ static unsigned char status_calc_element_lv(struct block_list *bl, status_change
|
|
*/
|
|
*/
|
|
unsigned char status_calc_attack_element(struct block_list *bl, status_change *sc, int32 element)
|
|
unsigned char status_calc_attack_element(struct block_list *bl, status_change *sc, int32 element)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(element, 0, UCHAR_MAX);
|
|
return cap_value(element, 0, UCHAR_MAX);
|
|
if(sc->getSCE(SC_ENCHANTARMS))
|
|
if(sc->getSCE(SC_ENCHANTARMS))
|
|
return sc->getSCE(SC_ENCHANTARMS)->val1;
|
|
return sc->getSCE(SC_ENCHANTARMS)->val1;
|
|
@@ -8784,7 +8788,7 @@ unsigned char status_calc_attack_element(struct block_list *bl, status_change *s
|
|
*/
|
|
*/
|
|
static int32 status_calc_mode(struct block_list *bl, status_change *sc, int32 mode)
|
|
static int32 status_calc_mode(struct block_list *bl, status_change *sc, int32 mode)
|
|
{
|
|
{
|
|
- if(!sc || !sc->count)
|
|
|
|
|
|
+ if(sc == nullptr || sc->empty())
|
|
return cap_value(mode, MD_NONE,INT_MAX);
|
|
return cap_value(mode, MD_NONE,INT_MAX);
|
|
if(sc->getSCE(SC_MODECHANGE)) {
|
|
if(sc->getSCE(SC_MODECHANGE)) {
|
|
if (sc->getSCE(SC_MODECHANGE)->val2)
|
|
if (sc->getSCE(SC_MODECHANGE)->val2)
|
|
@@ -9477,7 +9481,7 @@ t_tick status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_
|
|
status_data* status = status_get_status_data(*bl);
|
|
status_data* status = status_get_status_data(*bl);
|
|
status_data* status_src = status_get_status_data(*src);
|
|
status_data* status_src = status_get_status_data(*src);
|
|
sc = status_get_sc(bl);
|
|
sc = status_get_sc(bl);
|
|
- if( sc && !sc->count )
|
|
|
|
|
|
+ if( sc != nullptr && sc->empty() )
|
|
sc = nullptr;
|
|
sc = nullptr;
|
|
|
|
|
|
#ifdef RENEWAL
|
|
#ifdef RENEWAL
|
|
@@ -11210,10 +11214,15 @@ int32 status_change_start(struct block_list* src, struct block_list* bl,enum sc_
|
|
|
|
|
|
case SC_DEVOTION:
|
|
case SC_DEVOTION:
|
|
{
|
|
{
|
|
- struct block_list *d_bl;
|
|
|
|
- status_change *d_sc;
|
|
|
|
|
|
+ block_list* d_bl = map_id2bl( val1 );
|
|
|
|
+
|
|
|
|
+ if( d_bl == nullptr ){
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ status_change* d_sc = status_get_sc( d_bl );
|
|
|
|
|
|
- if( (d_bl = map_id2bl(val1)) && (d_sc = status_get_sc(d_bl)) && d_sc->count ) { // Inherits Status From Source
|
|
|
|
|
|
+ if( d_sc != nullptr && !d_sc->empty() ){
|
|
|
|
+ // Inherits status from source
|
|
const enum sc_type types[] = { SC_AUTOGUARD, SC_DEFENDER, SC_REFLECTSHIELD, SC_ENDURE };
|
|
const enum sc_type types[] = { SC_AUTOGUARD, SC_DEFENDER, SC_REFLECTSHIELD, SC_ENDURE };
|
|
int32 i = (map_flag_gvg2(bl->m) || map_getmapflag(bl->m, MF_BATTLEGROUND))?2:3;
|
|
int32 i = (map_flag_gvg2(bl->m) || map_getmapflag(bl->m, MF_BATTLEGROUND))?2:3;
|
|
while( i >= 0 ) {
|
|
while( i >= 0 ) {
|
|
@@ -13098,7 +13107,7 @@ int32 status_change_clear(struct block_list* bl, int32 type)
|
|
sc->sg_counter = 0;
|
|
sc->sg_counter = 0;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
- if (!sc->count)
|
|
|
|
|
|
+ if (sc->empty())
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
for (const auto &it : status_db) {
|
|
for (const auto &it : status_db) {
|
|
@@ -15000,7 +15009,7 @@ void status_change_clear_buffs(struct block_list* bl, uint8 type)
|
|
{
|
|
{
|
|
status_change *sc= status_get_sc(bl);
|
|
status_change *sc= status_get_sc(bl);
|
|
|
|
|
|
- if (!sc || !sc->count)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return;
|
|
return;
|
|
|
|
|
|
//Clears buffs with specified flag and type
|
|
//Clears buffs with specified flag and type
|
|
@@ -15075,7 +15084,7 @@ int32 status_change_spread(block_list *src, block_list *bl)
|
|
|
|
|
|
status_change *sc = status_get_sc(src);
|
|
status_change *sc = status_get_sc(src);
|
|
|
|
|
|
- if (sc == nullptr || sc->count == 0)
|
|
|
|
|
|
+ if (sc == nullptr || sc->empty())
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
bool hasSpread = false;
|
|
bool hasSpread = false;
|
|
@@ -15133,7 +15142,7 @@ static int32 status_natural_heal(struct block_list* bl, va_list args)
|
|
status_data* status = status_get_status_data(*bl);
|
|
status_data* status = status_get_status_data(*bl);
|
|
|
|
|
|
sc = status_get_sc(bl);
|
|
sc = status_get_sc(bl);
|
|
- if (sc && !sc->count)
|
|
|
|
|
|
+ if (sc != nullptr && sc->empty())
|
|
sc = nullptr;
|
|
sc = nullptr;
|
|
sd = BL_CAST(BL_PC,bl);
|
|
sd = BL_CAST(BL_PC,bl);
|
|
|
|
|
|
@@ -15395,7 +15404,7 @@ void status_change_clear_onChangeMap(struct block_list *bl, status_change *sc)
|
|
{
|
|
{
|
|
nullpo_retv(bl);
|
|
nullpo_retv(bl);
|
|
|
|
|
|
- if (sc && sc->count) {
|
|
|
|
|
|
+ if (sc != nullptr && !sc->empty()) {
|
|
struct map_data *mapdata = map_getmapdata(bl->m);
|
|
struct map_data *mapdata = map_getmapdata(bl->m);
|
|
bool mapIsVS = mapdata_flag_vs2(mapdata);
|
|
bool mapIsVS = mapdata_flag_vs2(mapdata);
|
|
bool mapIsPVP = mapdata->getMapFlag(MF_PVP) != 0;
|
|
bool mapIsPVP = mapdata->getMapFlag(MF_PVP) != 0;
|