summaryrefslogtreecommitdiff
path: root/src/map/status.c
diff options
context:
space:
mode:
authorcsnv <ctt@csnv.es>2014-09-14 16:51:07 +0200
committercsnv <ctt@csnv.es>2014-09-14 16:51:07 +0200
commit5ea9f0b2facd123d607591eb5a408b508cb56c6c (patch)
tree4d891df370f434fca1665313cad28ef04b176536 /src/map/status.c
parent5439fc4dbe5e867c59428538ca5cad4adc0e5e1f (diff)
downloadhercules-5ea9f0b2facd123d607591eb5a408b508cb56c6c.tar.gz
hercules-5ea9f0b2facd123d607591eb5a408b508cb56c6c.tar.bz2
hercules-5ea9f0b2facd123d607591eb5a408b508cb56c6c.tar.xz
hercules-5ea9f0b2facd123d607591eb5a408b508cb56c6c.zip
Restored flag 8 behaviour in status_change_start
- Fixes bug report http://hercules.ws/board/tracker/issue-8337-ankle-snare/?gopid=23533#entry23533
Diffstat (limited to 'src/map/status.c')
-rw-r--r--src/map/status.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/map/status.c b/src/map/status.c
index f7412380a..a02989699 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -6713,7 +6713,8 @@ void status_display_remove(struct map_session_data *sd, enum sc_type type) {
* &1: Cannot be avoided (it has to start)
* &2: Tick should not be reduced (by vit, luk, lv, etc)
* &4: sc_data loaded, no value has to be altered.
-* &8: SI will not be sent to the client
+* &8: rate should not be reduced (not evaluated here, but in some calls to other functions)
+* &16: SI will not be sent to the client
*------------------------------------------*/
int status_change_start(struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag) {
struct map_session_data *sd = NULL;
@@ -7526,10 +7527,10 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
int i;
for( i = 0; i < 5; i++ ) {
if( sd->devotion[i] && (tsd = map->id2sd(sd->devotion[i])) )
- status->change_start(bl, &tsd->bl, type, 10000, val1, val2, val3, val4, tick, 9);
+ status->change_start(bl, &tsd->bl, type, 10000, val1, val2, val3, val4, tick, 17);
}
} else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag && (tsd = ((TBL_MER*)bl)->master) )
- status->change_start(bl, &tsd->bl, type, 10000, val1, val2, val3, val4, tick, 9);
+ status->change_start(bl, &tsd->bl, type, 10000, val1, val2, val3, val4, tick, 17);
}
//val4 signals infinite endure (if val4 == 2 it is infinite endure from Berserk)
if( val4 )
@@ -7623,10 +7624,10 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
int i;
for( i = 0; i < 5; i++ ) {
if( sd->devotion[i] && (tsd = map->id2sd(sd->devotion[i])) )
- status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, 9);
+ status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, 17);
}
} else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag && (tsd = ((TBL_MER*)bl)->master) )
- status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, 9);
+ status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, 17);
}
break;
case SC_NOEQUIPWEAPON:
@@ -7881,11 +7882,11 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
if( sd ) {
for( i = 0; i < 5; i++ ) {
if( sd->devotion[i] && (tsd = map->id2sd(sd->devotion[i])) )
- status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, 9);
+ status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, 17);
}
}
else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag && (tsd = ((TBL_MER*)bl)->master) )
- status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, 9);
+ status->change_start(bl, &tsd->bl, type, 10000, val1, val2, 0, 0, tick, 17);
}
}
break;
@@ -8029,7 +8030,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
while( i >= 0 ) {
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) ? 8 : 0);
+ 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) ? 16 : 0);
i--;
}
}
@@ -8428,7 +8429,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
tick_time = 4000; // [GodLesZ] tick time
break;
case SC_PYREXIA:
- status->change_start(src, bl,SC_BLIND,10000,val1,0,0,0,30000,3); // Blind status that last for 30 seconds
+ status->change_start(src, bl,SC_BLIND,10000,val1,0,0,0,30000,11); // Blind status that last for 30 seconds
val4 = tick / 3000;
tick_time = 3000; // [GodLesZ] tick time
break;
@@ -9438,7 +9439,7 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
calc_flag&=~SCB_DYE;
}
- if(!(flag&8) && !(flag&4 && status->DisplayType[type]))
+ if(!(flag&16) && !(flag&4 && status->DisplayType[type]))
clif->status_change(bl,status->IconChangeTable[type],1,tick,(val_flag&1)?val1:1,(val_flag&2)?val2:0,(val_flag&4)?val3:0);
/**
@@ -11631,7 +11632,7 @@ int status_change_spread( struct block_list *src, struct block_list *bl ) {
data.val2 = sc->data[i]->val2;
data.val3 = sc->data[i]->val3;
data.val4 = sc->data[i]->val4;
- status->change_start(src,bl,(sc_type)i,10000,data.val1,data.val2,data.val3,data.val4,data.tick,1|2);
+ status->change_start(src,bl,(sc_type)i,10000,data.val1,data.val2,data.val3,data.val4,data.tick,1|2|8);
flag = 1;
}
}