summaryrefslogtreecommitdiff
path: root/src/map/status.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/status.c')
-rw-r--r--src/map/status.c238
1 files changed, 116 insertions, 122 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 6836d9b70..9ad8d849f 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -1284,7 +1284,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp,
//&4: Also delete object from memory.
switch (target->type) {
case BL_PC: flag = pc->dead((TBL_PC*)target,src); break;
- case BL_MOB: flag = mob->dead((TBL_MOB*)target, src, flag&4?3:0); break;
+ case BL_MOB: flag = mob->dead((TBL_MOB*)target, src, (flag&4) ? 3 : 0); break;
case BL_HOM: flag = homun->dead((TBL_HOM*)target); break;
case BL_MER: flag = mercenary->dead((TBL_MER*)target); break;
case BL_ELEM: flag = elemental->dead((TBL_ELEM*)target); break;
@@ -1423,7 +1423,7 @@ int status_heal(struct block_list *bl,int64 in_hp,int64 in_sp, int flag) {
// send hp update to client
switch(bl->type) {
- case BL_PC: pc->heal((TBL_PC*)bl,hp,sp,flag&2?1:0); break;
+ case BL_PC: pc->heal((TBL_PC*)bl,hp,sp,(flag&2) ? 1 : 0); break;
case BL_MOB: mob->heal((TBL_MOB*)bl,hp); break;
case BL_HOM: homun->healed((TBL_HOM*)bl); break;
case BL_MER: mercenary->heal((TBL_MER*)bl,hp,sp); break;
@@ -1905,7 +1905,7 @@ int status_calc_mob_(struct mob_data* md, enum e_status_calc_opt opt) {
if (flag&8 && mbl) {
struct status_data *masterstatus = status->get_base_status(mbl);
if ( masterstatus ) {
- if (battle_config.slaves_inherit_speed&(masterstatus->mode&MD_CANMOVE ? 1 : 2))
+ if (battle_config.slaves_inherit_speed&((masterstatus->mode&MD_CANMOVE) ? 1 : 2))
mstatus->speed = masterstatus->speed;
if (mstatus->speed < 2) /* minimum for the unit to function properly */
mstatus->speed = 2;
@@ -2479,16 +2479,16 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
if(i == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == index || sd->equip_index[EQI_HEAD_LOW] == index))
continue;
- if(sd->inventory_data[index]) {
- int j,c;
+ if (sd->inventory_data[index]) {
+ int j;
struct item_data *data;
//Card script execution.
- if(itemdb_isspecial(sd->status.inventory[index].card[0]))
+ if (itemdb_isspecial(sd->status.inventory[index].card[0]))
continue;
- for(j=0;j<MAX_SLOTS;j++) {
+ for (j = 0; j < MAX_SLOTS; j++) {
// Uses MAX_SLOTS to support Soul Bound system [Inkfish]
- status->current_equip_card_id= c= sd->status.inventory[index].card[j];
+ int c = status->current_equip_card_id = sd->status.inventory[index].card[j];
if(!c)
continue;
data = itemdb->exists(c);
@@ -3689,7 +3689,7 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) {
if(flag&SCB_MATK) {
status->update_matk(bl);
}
-
+
if ( flag&SCB_DSPD ) {
int dmotion;
if ( bl->type&BL_PC ) {
@@ -4691,7 +4691,7 @@ unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc,
|| (sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 2)
)
watk += watk / 10;
- if( sc && sc->data[SC_TIDAL_WEAPON] )
+ if(sc->data[SC_TIDAL_WEAPON])
watk += watk * sc->data[SC_TIDAL_WEAPON]->val2 / 100;
if(sc->data[SC_ANGRIFFS_MODUS])
watk += watk * sc->data[SC_ANGRIFFS_MODUS]->val2/100;
@@ -4975,100 +4975,101 @@ signed short status_calc_flee2(struct block_list *bl, struct status_change *sc,
return (short)cap_value(flee2,10,SHRT_MAX);
}
-defType status_calc_def(struct block_list *bl, struct status_change *sc, int def, bool viewable) {
+defType status_calc_def(struct block_list *bl, struct status_change *sc, int def, bool viewable)
+{
- if(!sc || !sc->count)
+ if (!sc || !sc->count)
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
- if( !viewable ){
+ if (!viewable) {
/* some statuses that are hidden in the status window */
- if( sc && sc->data[SC_CAMOUFLAGE] )
+ if (sc->data[SC_CAMOUFLAGE])
def -= def * 5 * (10-sc->data[SC_CAMOUFLAGE]->val4) / 100;
- if( sc->data[SC_OVERED_BOOST] && bl->type == BL_PC )
+ if (sc->data[SC_OVERED_BOOST] && bl->type == BL_PC)
def -= def * 50 / 100;
- if( sc->data[SC_NEUTRALBARRIER] )
+ if (sc->data[SC_NEUTRALBARRIER])
def += def * (10 + 5*sc->data[SC_NEUTRALBARRIER]->val1) / 100;
- if( sc->data[SC_FORCEOFVANGUARD] )
+ if (sc->data[SC_FORCEOFVANGUARD])
def += def * 2 * sc->data[SC_FORCEOFVANGUARD]->val1 / 100;
- if(sc->data[SC_DEFSET])
+ if (sc->data[SC_DEFSET])
return sc->data[SC_DEFSET]->val1;
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
}
if (sc->data[SC_BERSERK])
return 0;
- if(sc->data[SC_SKA])
+ if (sc->data[SC_SKA])
return sc->data[SC_SKA]->val3;
- if(sc->data[SC_BARRIER])
+ if (sc->data[SC_BARRIER])
return 100;
- if(sc->data[SC_KEEPING])
+ if (sc->data[SC_KEEPING])
return 90;
#ifndef RENEWAL // does not provide 90 DEF in renewal mode
- if(sc->data[SC_STEELBODY])
+ if (sc->data[SC_STEELBODY])
return 90;
#endif
- if(sc->data[SC_STONEHARDSKIN])
+ if (sc->data[SC_STONEHARDSKIN])
def += sc->data[SC_STONEHARDSKIN]->val1;
- if(sc->data[SC_DRUMBATTLE])
+ if (sc->data[SC_DRUMBATTLE])
def += sc->data[SC_DRUMBATTLE]->val3;
- if(sc->data[SC_STONESKIN])
+ if (sc->data[SC_STONESKIN])
def += sc->data[SC_STONESKIN]->val2;
- if(sc->data[SC_HAMI_DEFENCE]) //[orn]
+ if (sc->data[SC_HAMI_DEFENCE]) //[orn]
def += sc->data[SC_HAMI_DEFENCE]->val2;
- if(sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 2)
+ if (sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 2)
def += 50;
- if(sc->data[SC_ODINS_POWER])
+ if (sc->data[SC_ODINS_POWER])
def -= 20;
#ifndef RENEWAL
- if(sc->data[SC_STONE] && sc->opt1 == OPT1_STONE)
+ if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE)
def >>=1;
- if(sc->data[SC_FREEZE])
+ if (sc->data[SC_FREEZE])
def >>=1;
- if(sc->data[SC_INCDEFRATE])
+ if (sc->data[SC_INCDEFRATE])
def += def * sc->data[SC_INCDEFRATE]->val1/100;
#endif
- if( sc->data[SC_ANGRIFFS_MODUS] )
+ if (sc->data[SC_ANGRIFFS_MODUS])
def -= 30 + 20 * sc->data[SC_ANGRIFFS_MODUS]->val1;
- if(sc->data[SC_CRUCIS])
+ if (sc->data[SC_CRUCIS])
def -= def * sc->data[SC_CRUCIS]->val2/100;
- if(sc->data[SC_LKCONCENTRATION])
+ if (sc->data[SC_LKCONCENTRATION])
def -= def * sc->data[SC_LKCONCENTRATION]->val4/100;
- if(sc->data[SC_SKE])
+ if (sc->data[SC_SKE])
def >>=1;
- if(sc->data[SC_PROVOKE] && bl->type != BL_PC) // Provoke doesn't alter player defense->
+ if (sc->data[SC_PROVOKE] && bl->type != BL_PC) // Provoke doesn't alter player defense->
def -= def * sc->data[SC_PROVOKE]->val4/100;
- if(sc->data[SC_NOEQUIPSHIELD])
+ if (sc->data[SC_NOEQUIPSHIELD])
def -= def * sc->data[SC_NOEQUIPSHIELD]->val2/100;
if (sc->data[SC_FLING])
def -= def * (sc->data[SC_FLING]->val2)/100;
- if( sc->data[SC_ANALYZE] )
+ if (sc->data[SC_ANALYZE])
def -= def * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100;
- if(sc->data[SC_SATURDAY_NIGHT_FEVER])
+ if (sc->data[SC_SATURDAY_NIGHT_FEVER])
def -= def * (10 + 10 * sc->data[SC_SATURDAY_NIGHT_FEVER]->val1) / 100;
- if(sc->data[SC_EARTHDRIVE])
+ if (sc->data[SC_EARTHDRIVE])
def -= def * 25 / 100;
- if( sc->data[SC_ROCK_CRUSHER] )
+ if (sc->data[SC_ROCK_CRUSHER])
def -= def * sc->data[SC_ROCK_CRUSHER]->val2 / 100;
- if( sc->data[SC_FROSTMISTY] )
+ if (sc->data[SC_FROSTMISTY])
def -= def * 10 / 100;
- if( sc->data[SC_OVERED_BOOST] && bl->type == BL_HOM )
+ if (sc->data[SC_OVERED_BOOST] && bl->type == BL_HOM)
def -= def * 50 / 100;
- if( sc->data[SC_POWER_OF_GAIA] )
+ if (sc->data[SC_POWER_OF_GAIA])
def += def * sc->data[SC_POWER_OF_GAIA]->val2 / 100;
- if( sc->data[SC_SHIELDSPELL_REF] && sc->data[SC_SHIELDSPELL_REF]->val1 == 2 )
+ if (sc->data[SC_SHIELDSPELL_REF] && sc->data[SC_SHIELDSPELL_REF]->val1 == 2)
def += sc->data[SC_SHIELDSPELL_REF]->val2;
- if( sc->data[SC_PRESTIGE] )
+ if (sc->data[SC_PRESTIGE])
def += def * sc->data[SC_PRESTIGE]->val1 / 100;
- if(sc->data[SC_VOLCANIC_ASH] && (bl->type==BL_MOB)){
- if(status_get_race(bl)==RC_PLANT)
+ if (sc->data[SC_VOLCANIC_ASH] && (bl->type==BL_MOB)) {
+ if (status_get_race(bl)==RC_PLANT)
def /= 2;
}
- if(sc->data[SC_UNLIMIT])
+ if (sc->data[SC_UNLIMIT])
return 1;
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
@@ -5083,17 +5084,17 @@ signed short status_calc_def2(struct block_list *bl, struct status_change *sc, i
return (short)cap_value(def2,1,SHRT_MAX);
#endif
- if( !viewable ){
+ if (!viewable) {
/* some statuses that are hidden in the status window */
#ifdef RENEWAL
- if( sc && sc->data[SC_ASSUMPTIO] )
+ if (sc->data[SC_ASSUMPTIO])
def2 <<= 1;
#endif
- if( sc && sc->data[SC_CAMOUFLAGE] )
+ if (sc->data[SC_CAMOUFLAGE])
def2 -= def2 * 5 * (10-sc->data[SC_CAMOUFLAGE]->val4) / 100;
- if(sc->data[SC_GENTLETOUCH_REVITALIZE])
+ if (sc->data[SC_GENTLETOUCH_REVITALIZE])
def2 += sc->data[SC_GENTLETOUCH_REVITALIZE]->val2;
- if(sc->data[SC_DEFSET])
+ if (sc->data[SC_DEFSET])
return sc->data[SC_DEFSET]->val1;
#ifdef RENEWAL
return (short)cap_value(def2,SHRT_MIN,SHRT_MAX);
@@ -5104,39 +5105,39 @@ signed short status_calc_def2(struct block_list *bl, struct status_change *sc, i
if (sc->data[SC_BERSERK])
return 0;
- if(sc->data[SC_ETERNALCHAOS])
+ if (sc->data[SC_ETERNALCHAOS])
return 0;
- if(sc->data[SC_SUN_COMFORT])
+ if (sc->data[SC_SUN_COMFORT])
def2 += sc->data[SC_SUN_COMFORT]->val2;
- if( sc->data[SC_BANDING] && sc->data[SC_BANDING]->val2 > 1 )
+ if (sc->data[SC_BANDING] && sc->data[SC_BANDING]->val2 > 1)
def2 += (5 + sc->data[SC_BANDING]->val1) * (sc->data[SC_BANDING]->val2);
- if(sc->data[SC_ANGELUS])
+ if (sc->data[SC_ANGELUS])
#ifdef RENEWAL //in renewal only the VIT stat bonus is boosted by angelus
def2 += status_get_vit(bl) / 2 * sc->data[SC_ANGELUS]->val2/100;
#else
def2 += def2 * sc->data[SC_ANGELUS]->val2/100;
- if(sc->data[SC_LKCONCENTRATION])
+ if (sc->data[SC_LKCONCENTRATION])
def2 -= def2 * sc->data[SC_LKCONCENTRATION]->val4/100;
#endif
- if(sc->data[SC_POISON])
+ if (sc->data[SC_POISON])
def2 -= def2 * 25/100;
- if(sc->data[SC_DPOISON])
+ if (sc->data[SC_DPOISON])
def2 -= def2 * 25/100;
- if(sc->data[SC_SKE])
+ if (sc->data[SC_SKE])
def2 -= def2 * 50/100;
- if(sc->data[SC_PROVOKE])
+ if (sc->data[SC_PROVOKE])
def2 -= def2 * sc->data[SC_PROVOKE]->val4/100;
- if(sc->data[SC_JOINTBEAT])
- def2 -= def2 * ( sc->data[SC_JOINTBEAT]->val2&BREAK_SHOULDER ? 50 : 0 ) / 100
- + def2 * ( sc->data[SC_JOINTBEAT]->val2&BREAK_WAIST ? 25 : 0 ) / 100;
- if(sc->data[SC_FLING])
+ if (sc->data[SC_JOINTBEAT])
+ def2 -= def2 * ((sc->data[SC_JOINTBEAT]->val2&BREAK_SHOULDER) ? 50 : 0) / 100
+ + def2 * ((sc->data[SC_JOINTBEAT]->val2&BREAK_WAIST) ? 25 : 0) / 100;
+ if (sc->data[SC_FLING])
def2 -= def2 * (sc->data[SC_FLING]->val3)/100;
- if(sc->data[SC_ANALYZE])
+ if (sc->data[SC_ANALYZE])
def2 -= def2 * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100;
- if( sc->data[SC_ECHOSONG] )
+ if (sc->data[SC_ECHOSONG])
def2 += def2 * sc->data[SC_ECHOSONG]->val3/100;
- if(sc->data[SC_VOLCANIC_ASH] && (bl->type==BL_MOB)){
- if(status_get_race(bl)==RC_PLANT)
+ if (sc->data[SC_VOLCANIC_ASH] && (bl->type==BL_MOB)) {
+ if (status_get_race(bl)==RC_PLANT)
def2 /= 2;
}
if (sc->data[SC_NEEDLE_OF_PARALYZE])
@@ -5313,7 +5314,7 @@ unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc
if( sc->data[SC_WEDDING] )
val = max( val, 100 );
if( sc->data[SC_JOINTBEAT] && sc->data[SC_JOINTBEAT]->val2&(BREAK_ANKLE|BREAK_KNEE) )
- val = max( val, (sc->data[SC_JOINTBEAT]->val2&BREAK_ANKLE ? 50 : 0) + (sc->data[SC_JOINTBEAT]->val2&BREAK_KNEE ? 30 : 0) );
+ val = max( val, ((sc->data[SC_JOINTBEAT]->val2&BREAK_ANKLE) ? 50 : 0) + ((sc->data[SC_JOINTBEAT]->val2&BREAK_KNEE) ? 30 : 0) );
if( sc->data[SC_CLOAKING] && (sc->data[SC_CLOAKING]->val4&1) == 0 )
val = max( val, sc->data[SC_CLOAKING]->val1 < 3 ? 300 : 30 - 3 * sc->data[SC_CLOAKING]->val1 );
if( sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_ENEMY )
@@ -5430,12 +5431,13 @@ unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc
// flag&2 - percentage value
short status_calc_aspd(struct block_list *bl, struct status_change *sc, short flag) {
#ifdef RENEWAL_ASPD
- int i, pots = 0, bonus = 0;
+ int pots = 0, bonus = 0;
if (!sc || !sc->count)
return 0;
if (flag&1) {
+ int i;
// ASPD fixed values
if (sc->data[i=SC_ATTHASTE_INFINITY]
|| sc->data[i=SC_ATTHASTE_POTION3]
@@ -5443,7 +5445,7 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl
|| sc->data[i=SC_ATTHASTE_POTION1]
)
pots += sc->data[i]->val1;
-
+
if (!sc->data[SC_QUAGMIRE]) {
if(sc->data[SC_TWOHANDQUICKEN] && bonus < 7)
bonus = 7;
@@ -5559,9 +5561,9 @@ short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int
if ((sc->data[SC_GUST_OPTION] || sc->data[SC_BLAST_OPTION]
|| sc->data[SC_WILD_STORM_OPTION]))
aspd -= 50; // +5 ASPD
- if( sc && sc->data[SC_FIGHTINGSPIRIT] && sc->data[SC_FIGHTINGSPIRIT]->val2 )
+ if (sc->data[SC_FIGHTINGSPIRIT] && sc->data[SC_FIGHTINGSPIRIT]->val2)
aspd -= (bl->type==BL_PC?pc->checkskill((TBL_PC *)bl, RK_RUNEMASTERY):10) / 10 * 40;
- if( sc && sc->data[SC_MTF_ASPD] )
+ if (sc->data[SC_MTF_ASPD])
aspd -= 10;
if (sc->data[SC_OVERED_BOOST]) // should be final and unmodifiable by any means
@@ -7957,9 +7959,9 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_AUTOGUARD:
if( !(flag&SCFLAG_NOAVOID) ) {
struct map_session_data *tsd;
- int i,t;
- for( i = val2 = 0; i < val1; i++) {
- t = 5-(i>>1);
+ int i;
+ for (i = val2 = 0; i < val1; i++) {
+ int t = 5-(i>>1);
val2 += (t < 0)? 1:t;
}
@@ -8124,17 +8126,17 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
struct block_list *d_bl;
struct status_change *d_sc;
- if( (d_bl = map->id2bl(val1)) && (d_sc = status->get_sc(d_bl)) && d_sc->count ) {
+ if ((d_bl = map->id2bl(val1)) && (d_sc = status->get_sc(d_bl)) && d_sc->count) {
// Inherits Status From Source
const enum sc_type types[] = { SC_AUTOGUARD, SC_DEFENDER, SC_REFLECTSHIELD, SC_ENDURE };
- enum sc_type type2;
int i = (map_flag_gvg(bl->m) || map->list[bl->m].flag.battleground)?2:3;
- while( i >= 0 ) {
- type2 = types[i];
- if( d_sc->data[type2] )
+ while (i >= 0) {
+ enum sc_type type2 = types[i];
+ if (d_sc->data[type2]) {
status->change_start(bl, bl, type2, 10000, d_sc->data[type2]->val1, 0, 0, 0,
skill->get_time(status->sc2skill(type2),d_sc->data[type2]->val1),
(type2 != SC_DEFENDER) ? SCFLAG_NOICON : SCFLAG_NONE);
+ }
i--;
}
}
@@ -9919,28 +9921,23 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
int prevline = 0;
struct map_session_data *dsd;
struct status_change_entry *dsc;
- struct skill_unit_group *group;
- if( sd )
- {
- if( sd->delunit_prevfile )
- {// initially this is NULL, when a character logs in
+ if (sd) {
+ if (sd->delunit_prevfile) {
+ // initially this is NULL, when a character logs in
prevfile = sd->delunit_prevfile;
prevline = sd->delunit_prevline;
- }
- else
- {
+ } else {
prevfile = "<none>";
}
sd->delunit_prevfile = file;
sd->delunit_prevline = line;
}
- if(sce->val4 && sce->val4 != BCT_SELF && (dsd=map->id2sd(sce->val4)))
- {// end status on partner as well
+ if (sce->val4 && sce->val4 != BCT_SELF && (dsd=map->id2sd(sce->val4))) {
+ // end status on partner as well
dsc = dsd->sc.data[SC_DANCING];
- if(dsc) {
-
+ if (dsc) {
//This will prevent recursive loops.
dsc->val2 = dsc->val4 = 0;
@@ -9948,12 +9945,11 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
}
}
- if(sce->val2)
- {// erase associated land skill
- group = skill->id2group(sce->val2);
+ if (sce->val2) {
+ // erase associated land skill
+ struct skill_unit_group *group = skill->id2group(sce->val2);
- if( group == NULL )
- {
+ if (group == NULL) {
ShowDebug("status_change_end: SC_DANCING is missing skill unit group (val1=%d, val2=%d, val3=%d, val4=%d, timer=%d, tid=%d, char_id=%d, map=%s, x=%d, y=%d, prev=%s:%d, from=%s:%d). Please report this! (#3504)\n",
sce->val1, sce->val2, sce->val3, sce->val4, sce->timer, tid,
sd ? sd->status.char_id : 0,
@@ -9966,7 +9962,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
skill->del_unitgroup(group,ALC_MARK);
}
- if((sce->val1&0xFFFF) == CG_MOONLIT)
+ if ((sce->val1&0xFFFF) == CG_MOONLIT)
clif->sc_end(bl,bl->id,AREA,SI_MOON);
status_change_end(bl, SC_LONGING, INVALID_TIMER);
@@ -10922,14 +10918,13 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) {
if( !flag ) { // Random Skill Cast
if (sd && !pc_issit(sd)) { //can't cast if sit
- int mushroom_skill_id = 0, i;
+ int mushroom_skill_id = 0;
unit->stop_attack(bl);
unit->skillcastcancel(bl,0);
do {
- i = rnd() % MAX_SKILL_MAGICMUSHROOM_DB;
+ int i = rnd() % MAX_SKILL_MAGICMUSHROOM_DB;
mushroom_skill_id = skill->magicmushroom_db[i].skill_id;
- }
- while( mushroom_skill_id == 0 );
+ } while (mushroom_skill_id == 0);
switch( skill->get_casttype(mushroom_skill_id) ) { // Magic Mushroom skills are buffs or area damage
case CAST_GROUND:
@@ -10989,9 +10984,9 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
case SC_RENOVATIO:
- if( --(sce->val4) > 0 ) {
+ if (--(sce->val4) > 0 ){
int heal = st->max_hp * 3 / 100;
- if( sc && sc->data[SC_AKAITSUKI] && heal )
+ if (sc->count && sc->data[SC_AKAITSUKI] && heal)
heal = ~heal + 1;
status->heal(bl, heal, 0, 2);
sc_timer_next(5000 + tick, status->change_timer, bl->id, data);
@@ -11452,14 +11447,16 @@ int status_change_timer_sub(struct block_list* bl, va_list ap) {
int status_get_total_def(struct block_list *src) { return status->get_status_data(src)->def2 + (short)status->get_def(src); }
int status_get_total_mdef(struct block_list *src) { return status->get_status_data(src)->mdef2 + (short)status_get_mdef(src); }
-int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int flag) {
+int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int flag)
+{
#ifdef RENEWAL
- int min = 0, max = 0, dstr;
- float strdex_bonus, variance;
+ int min = 0, max = 0;
struct status_change *sc = status->get_sc(bl);
- if ( bl->type == BL_PC && watk->atk ){
- if ( flag&2 )
+ if (bl->type == BL_PC && watk->atk) {
+ float strdex_bonus, variance;
+ int dstr;
+ if (flag&2)
dstr = status_get_dex(bl);
else
dstr = status_get_str(bl);
@@ -11469,23 +11466,20 @@ int status_get_weapon_atk(struct block_list *bl, struct weapon_atk *watk, int fl
min = (int)(watk->atk - variance + strdex_bonus) + watk->atk2;
max = (int)(watk->atk + variance + strdex_bonus) + watk->atk2;
- }
- else if ((bl->type == BL_MOB || bl->type == BL_MER) && watk->atk){
+ } else if ((bl->type == BL_MOB || bl->type == BL_MER) && watk->atk) {
min = watk->atk * 80 / 100;
max = watk->atk * 120 / 100;
- }
- else if (bl->type == BL_HOM && watk->atk){
- if (flag & 4){
+ } else if (bl->type == BL_HOM && watk->atk) {
+ if (flag & 4) {
max = min = status->get_matk(bl, 2);
- }
- else{
+ } else {
min = watk->atk;
max = watk->atk2;
}
}
- if( !(flag&1) ){
- if( max > min )
+ if (!(flag&1)) {
+ if (max > min)
max = min + rnd()%(max - min + 1);
else
max = min;