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.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 290882e05..1f7d81ccf 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -1746,10 +1746,8 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin
hide_flag &= ~OPTION_HIDE;
else {
switch ( skill_id ) {
- case LG_OVERBRAND:
- case LG_OVERBRAND_BRANDISH:
- case LG_OVERBRAND_PLUSATK:
- hide_flag &=~ OPTION_CLOAK|OPTION_CHASEWALK;
+ case MO_ABSORBSPIRITS: // it works when already casted and target suddenly hides.
+ hide_flag &= ~OPTION_HIDE;
break;
}
}
@@ -4832,6 +4830,8 @@ defType status_calc_def(struct block_list *bl, struct status_change *sc, int def
def -= def * 5 * (10-sc->data[SC_CAMOUFLAGE]->val4) / 100;
if( sc && sc->data[SC_GENTLETOUCH_REVITALIZE] && sc->data[SC_GENTLETOUCH_REVITALIZE]->val4 )
def += 2 * sc->data[SC_GENTLETOUCH_REVITALIZE]->val4;
+ if( sc->data[SC_FORCEOFVANGUARD] )
+ def += def * 2 * sc->data[SC_FORCEOFVANGUARD]->val1 / 100;
return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);
}
@@ -4882,8 +4882,6 @@ defType status_calc_def(struct block_list *bl, struct status_change *sc, int def
def -= def * (sc->data[SC_FLING]->val2)/100;
if( sc->data[SC_ANALYZE] )
def -= def * ( 14 * sc->data[SC_ANALYZE]->val1 ) / 100;
- if( sc->data[SC_FORCEOFVANGUARD] )
- def += def * 2 * sc->data[SC_FORCEOFVANGUARD]->val1 / 100;
if(sc->data[SC_SATURDAY_NIGHT_FEVER])
def -= def * (10 + 10 * sc->data[SC_SATURDAY_NIGHT_FEVER]->val1) / 100;
if(sc->data[SC_EARTHDRIVE])
@@ -8406,11 +8404,10 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
val4 = tick/10000;
tick_time = 10000; // [GodLesZ] tick time
break;
- case SC_FORCEOFVANGUARD: // This is not the official way to handle it but I think we should use it. [pakpil]
- val2 = 20 + 12 * (val1 - 1); // Chance
- val3 = 5 + (2 * val1); // Max rage counters
+ case SC_FORCEOFVANGUARD:
+ val2 = 8 + 12 * val1; // Chance
+ val3 = 5 + 2 * val1; // Max rage counters
tick = -1; //endless duration in the client
- tick_time = 6000; // [GodLesZ] tick time
break;
case SC_EXEEDBREAK:
val1 *= 150; // 150 * skill_lv
@@ -9265,6 +9262,7 @@ int status_change_clear(struct block_list* bl, int type) {
sc->opt2 = 0;
sc->opt3 = 0;
sc->bs_counter = 0;
+ sc->fv_counter = 0;
#ifndef RENEWAL
sc->sg_counter = 0;
#endif
@@ -10654,11 +10652,11 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) {
return 0;
}
break;
-
+
case SC_FORCEOFVANGUARD:
- if( !status->charge(bl,0,20) )
+ if( !status->charge(bl, 0, (24 - 4 * sce->val1)) )
break;
- sc_timer_next(6000 + tick, status->change_timer, bl->id, data);
+ sc_timer_next(10000 + tick, status->change_timer, bl->id, data);
return 0;
case SC_BANDING: