Originally posted by [b]HiddenDragon[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=3329
There's a slight issue with status icon timers in that some status effects have a periodic effect that happens every x seconds during the status effect's duration.
For example:
CODE
case SC_HIDING:
val2 = tick/1000;
tick = 1000;
val3 = 0; // unused, previously speed adjustment
val4 = val1+3; //Seconds before SP substraction happen.
break;
The tick is split into 1 second intervals since SP subtraction for Hiding happens in 1 second intervals (the timer is reset when the interval runs out and SP drainage has happened). HOWEVER, this tick variable is then used later on in when status icons are sent:
CODE
if( vd && (pcdb_checkid(vd->class_) || bl->type == BL_MER ) ) //Only for players sprites, client crashes if they receive this for a mob o.O [Skotlex]
clif_status_change(bl,StatusIconChangeTable[type],1,tick);
I suggest using adding a new 'realtick' variable that contains the true duration of the status change and using that instead.