Issue Information
-
#008337
-
0 - None Assigned
-
Fixed
Issue Confirmations
-
Yes (1)No (0)
I checked mine and it's working fine I don't get trapped. tested with mob also and it traps fine as it used to be.
try it in pvp or gvg
Other than I'd say it should always work.
Edit: If it's bugged here, maybe it's related to:
case SC_ANKLESNARE:
if(st->mode&MD_BOSS) // Lasts 5 times less on bosses
tick /= 5;
sc_def = st->agi*50;
break;
But this should only affect duration because of a flag...
//Natural resistance
if (!(flag&8)) {
Hmmmm...
That's strange, the flag was changed!
eAthena:
/*==========================================
* Starts a status change.
* 'type' = type, 'val1~4' depend on the type.
* 'rate' = base success rate. 10000 = 100%
* 'tick' is base duration
* 'flag':
* &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: rate should not be reduced
*------------------------------------------*/
Hercules:
/*==========================================
* Starts a status change.
* 'type' = type, 'val1~4' depend on the type.
* 'rate' = base success rate. 10000 = 100%
* 'tick' is base duration
* 'flag':
* &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
*------------------------------------------*/
Someone changed the meaning of the flag? o.o
Edited by Playtester, 14 September 2014 - 09:25 AM.
Officially, if Knockback is not possible (MVP/WoE) then the trapped person will still end up moving to the target cell (and activate all traps on the path). Target is unable to move again until the given status change expires, though. Maybe that's what you are experiencing?
Other than I'd say it should always work.
Edit: If it's bugged here, maybe it's related to:
case SC_ANKLESNARE:
if(st->mode&MD_BOSS) // Lasts 5 times less on bosses
tick /= 5;
sc_def = st->agi*50;
break;
But this should only affect duration because of a flag...
//Natural resistance
if (!(flag&8)) {
Hmmmm...
That's strange, the flag was changed!
eAthena:
/*==========================================
* Starts a status change.
* 'type' = type, 'val1~4' depend on the type.
* 'rate' = base success rate. 10000 = 100%
* 'tick' is base duration
* 'flag':
* &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: rate should not be reduced
*------------------------------------------*/
Hercules:
/*==========================================
* Starts a status change.
* 'type' = type, 'val1~4' depend on the type.
* 'rate' = base success rate. 10000 = 100%
* 'tick' is base duration
* 'flag':
* &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
*------------------------------------------*/
Someone changed the meaning of the flag? o.o
I guess the bug appears in this commit..
https://github.com/H...82e268e04303ca4
A quick fix would be to change
to:sc_def = st->agi*50;
But to fix on emulator one should check through that whole commit and see if the old "unavoidable" flag is really not needed. Well, theoretically you don't need it because resistance is based on the type of status change and not on the skill used, I guess! But the person who changed it probably overlooked that the old flag is still used in get_sc_def and that sometimes sc_def is used instead of tick_def, relying on said flag.tick_def = st->agi*50;