|
@@ -9531,9 +9531,11 @@ int32 skill_castend_nodamage_id (struct block_list *src, struct block_list *bl,
|
|
if (sd && sd->sc.getSCE(SC_PETROLOGY_OPTION))
|
|
if (sd && sd->sc.getSCE(SC_PETROLOGY_OPTION))
|
|
brate = sd->sc.getSCE(SC_PETROLOGY_OPTION)->val3;
|
|
brate = sd->sc.getSCE(SC_PETROLOGY_OPTION)->val3;
|
|
|
|
|
|
- if (sc_start2(src, bl, type, (skill_lv * 4 + 20) + brate, skill_lv, src->id, skill_get_time2(skill_id, skill_lv), skill_get_time(skill_id, skill_lv)))
|
|
|
|
|
|
+ // Except for players, the skill animation shows even if the status change doesn't start
|
|
|
|
+ // Players get a skill has failed message instead
|
|
|
|
+ if (sc_start2(src, bl, type, (skill_lv * 4 + 20) + brate, skill_lv, src->id, skill_get_time2(skill_id, skill_lv), skill_get_time(skill_id, skill_lv)) || sd == nullptr)
|
|
clif_skill_nodamage(src, *bl, skill_id, skill_lv);
|
|
clif_skill_nodamage(src, *bl, skill_id, skill_lv);
|
|
- else if(sd) {
|
|
|
|
|
|
+ else {
|
|
clif_skill_fail( *sd, skill_id );
|
|
clif_skill_fail( *sd, skill_id );
|
|
// Level 6-10 doesn't consume a red gem if it fails [celest]
|
|
// Level 6-10 doesn't consume a red gem if it fails [celest]
|
|
if (skill_lv > 5)
|
|
if (skill_lv > 5)
|
|
@@ -10321,7 +10323,7 @@ int32 skill_castend_nodamage_id (struct block_list *src, struct block_list *bl,
|
|
status_calc_bl(&md->bl, { SCB_SPEED });
|
|
status_calc_bl(&md->bl, { SCB_SPEED });
|
|
// We use skills only on each full cell, to fix the inaccuracy we do this on last move interval
|
|
// We use skills only on each full cell, to fix the inaccuracy we do this on last move interval
|
|
if (DIFF_TICK(md->trickcasting, tick) < trickstop + MOB_SKILL_INTERVAL)
|
|
if (DIFF_TICK(md->trickcasting, tick) < trickstop + MOB_SKILL_INTERVAL)
|
|
- md->last_skillcheck = tick + 50;
|
|
|
|
|
|
+ md->last_skillcheck = tick + 100;
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
// Synchronize skill usage
|
|
// Synchronize skill usage
|