Issue Information
-
#006157
-
2 - Fair
-
Fixed
Issue Confirmations
-
Yes (1)No (0)
To make it work as it does on iRO:
(A little ugly code, but functional, sorry :S, this part of the Es- skills code is a little mess XD)
Index: skill.c =================================================================== --- skill.c (revision 16366) +++ skill.c (working copy) @@ -6987,10 +6987,6 @@ break; case SL_SWOO: - if (tsce) { - sc_start(src,SC_STUN,100,skilllv,10000); - break; - } case SL_SKA: // [marquis007] case SL_SKE: if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) { @@ -6998,6 +6994,12 @@ status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10); break; } + if (skillid == SL_SWOO && tsce) { + clif_skill_fail(sd,skillid,0,0); + status_change_start(src,SC_STUN,10000,skilllv,0,0,0,10000,10); + status_change_end(bl, SC_SWOO, -1); + break; + } clif_skill_nodamage(src,bl,skillid,skilllv,sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); if (skillid == SL_SKE) sc_start(src,SC_SMA,100,skilllv,skill_get_time(SL_SMA,skilllv));
How is it supposed to work on iRO?
If you use the skill on a mob already shrunken, it fails (shows a fail message), you got stunned for 10 seconds, and Eswoo status is canceled.
Edited by Daegaladh, 03 July 2012 - 12:54 PM.
I believe it's equivalent to your change.
case SL_SWOO: if (tsce) { +if (sd) + clif_skill_fail(sd,skillid,0,0); sc_start(src,SC_STUN,100,skilllv,10000); + status_change_end(bl, SC_SWOO, -1); -break; } +break;
Edited by MarkZD, 03 July 2012 - 12:41 PM.
It should be
status_change_start(src,SC_STUN,10000,skilllv,0,0,0,10000,10);
instead of the sc_start
And it should check if target is a mob first.
Btw, I tested on lastest svn and when I try to use Eswoo, Eska or Eske on a player, it does nothing. It's supposed they have to stun me :S
Understood, so it'd be like
case SL_SWOO: -if (tsce) { +if (tsce && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) { +if(sd) + clif_skill_fail(sd,skillid,0,0); sc_start(src,SC_STUN,100,skilllv,10000); + status_change_end(bl, SC_SWOO, -1); -break; } +break;
Edited by MarkZD, 03 July 2012 - 12:49 PM.
No, no, the mob check should be the same as Eska and Eske (Stun for 0.5s)
As I posted on the first post, this is the correct order:
1-Check for target, if there's no target or target isn't a mob, you got stunned for 0.5s
2-If the mob is already shrunken, you got stunned for 10s and effect on the mob is canceled
case SL_SWOO: case SL_SKA: // [marquis007] case SL_SKE: if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) { status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10); break; } if (skillid == SL_SWOO && tsce) { clif_skill_fail(sd,skillid,0,0); status_change_start(src,SC_STUN,10000,skilllv,0,0,0,10000,10); status_change_end(bl, SC_SWOO, -1); break; }
Anyway I think the whole code of the Es- skills could be improved a little...
Edited by Daegaladh, 03 July 2012 - 12:54 PM.
I also updated the break, otherwise the if inside SL_SKE would execute and overwrite the first change.
In this case I think sc_start can be used in both conditions instead of status_change_start.
Edited by MarkZD, 03 July 2012 - 12:46 PM.
No, no, the mob check should be the same as Eska and Eske (Stun for 0.5s)
It's because I didn't see this info on iRO, so I just put the shrunken check. ;D
But if you tested it on original, so you're right.
Edited by MarkZD, 03 July 2012 - 12:53 PM.
Try to use it on a player on iRO XD
Also from lastest lua files:
"Effect:^777777 Makes the monster small, greatly reducing their walking speed, but the size attribute is not affected. If this is used on a Boss monster, this skill only lasts 1/5 of normal time.", "If you use Eswoo on a monster that is already under this effect, it will cause you to be stunned for 10 seconds (reduced by VIT).", "\"Es\" type magic can only be used on monsters. If it is used on a player character, nothing happens and the caster will be stunned for 0.5 sec (not reduced by VIT). ^000000",
Edit: Hum, when you use on a monster the stun time can be reduced by VIT, so the flag should be 8 instead of 10, my fault.
Then the code should be:
case SL_SWOO: case SL_SKA: // [marquis007] case SL_SKE: if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) { status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10); break; } if (skillid == SL_SWOO && tsce) { clif_skill_fail(sd,skillid,0,0); status_change_start(src,SC_STUN,10000,skilllv,0,0,0,10000,8); status_change_end(bl, SC_SWOO, -1); break; }
Edited by Daegaladh, 03 July 2012 - 01:00 PM.
If player could get shrunked it'd never get into second if condition.
Also, there should be a sd check before sending the clif_skill_fail as it could be a mob casting, and the first sd should be removed(I think).
Edited by MarkZD, 03 July 2012 - 01:25 PM.
Hum, yeah, I was thinking on official servers, where you cannot shrink a player... but here we have the battle_config.allow_es_magic_pc option, so you're right.
Edited by Daegaladh, 03 July 2012 - 01:20 PM.
Apparently it's not needed, well, it's already solved how it's supposed to work, just wait devs implementing.Also, there should be a sd check before sending the clif_skill_fail as it could be a mob casting, and the first sd should be removed(I think).