diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index f934af07be..7612f94305 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -20163,7 +20163,11 @@ Body: Time: 240000 - Level: 5 Time: 300000 - Duration2: 300000 + Duration2: + - Level: 1 + Time: 15000 + - Level: 2 + Time: 300000 Requires: SpCost: - Level: 1 @@ -20342,7 +20346,7 @@ Body: Unit: Id: Poisonsmoke Layout: 2 - Interval: 1000 + Interval: 2000 Target: Enemy Flag: NoOverlap: true diff --git a/src/map/battle.cpp b/src/map/battle.cpp index b317afb8ca..4b28e45573 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -1778,7 +1778,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if (sc->data[SC_POISONINGWEAPON] && flag&BF_SHORT && (skill_id == 0 || skill_id == GC_VENOMPRESSURE) && damage > 0) { damage += damage * 10 / 100; if (rnd() % 100 < sc->data[SC_POISONINGWEAPON]->val3) - sc_start4(src, bl, (sc_type)sc->data[SC_POISONINGWEAPON]->val2, 100, sc->data[SC_POISONINGWEAPON]->val1, 0, 1, 0, skill_get_time2(GC_POISONINGWEAPON, 1)); + sc_start4(src, bl, (sc_type)sc->data[SC_POISONINGWEAPON]->val2, 100, sc->data[SC_POISONINGWEAPON]->val1, 0, 1, 0, (sc->data[SC_POISONINGWEAPON]->val2 == SC_VENOMBLEED ? skill_get_time2(GC_POISONINGWEAPON, 1) : skill_get_time2(GC_POISONINGWEAPON, 2))); } if( sc->data[SC__DEADLYINFECT] && (flag&(BF_SHORT|BF_MAGIC)) == BF_SHORT && damage > 0 && rnd()%100 < 30 + 10 * sc->data[SC__DEADLYINFECT]->val1 ) diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 998b7387e1..f4d469f152 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -15713,8 +15713,8 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t break; case UNT_POISONSMOKE: - if( battle_check_target(ss,bl,BCT_ENEMY) > 0 && !(tsc && tsc->data[sg->val2]) && rnd()%100 < 20 ) - sc_start(ss,bl,(sc_type)sg->val2,100,sg->val3,skill_get_time2(GC_POISONINGWEAPON, 1)); + if( battle_check_target(ss,bl,BCT_ENEMY) > 0 && !(tsc && tsc->data[sg->val2]) && rnd()%100 < 50 ) + sc_start4(ss,bl,(sc_type)sg->val2,100,sg->val3,0,1,0,skill_get_time2(GC_POISONINGWEAPON, 1)); break; case UNT_EPICLESIS: diff --git a/src/map/status.cpp b/src/map/status.cpp index d8410246f5..3e9dd3d6b8 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -13240,6 +13240,7 @@ TIMER_FUNC(status_change_timer){ map_freeblock_lock(); dounlock = true; status_fix_damage(bl, bl, 100, clif_damage(bl, bl, tick, status->amotion, status->dmotion + 500, 100, 1, DMG_NORMAL, 0, false),0); + unit_skillcastcancel(bl, 2); } break;