diff options
author | shenhuyong <shenhuyong@hotmail.com> | 2013-09-29 16:00:40 +0800 |
---|---|---|
committer | shenhuyong <shenhuyong@hotmail.com> | 2013-09-29 16:00:40 +0800 |
commit | 715016aa21dae454fbe430e9c806fd8cef769a27 (patch) | |
tree | 75cb544bc3c4aba9ccf7fa9befa1716b2196c925 /src/map/skill.c | |
parent | 608c1314e4db3cbb6653fe8e1a2cfc9413302747 (diff) | |
download | hercules-715016aa21dae454fbe430e9c806fd8cef769a27.tar.gz hercules-715016aa21dae454fbe430e9c806fd8cef769a27.tar.bz2 hercules-715016aa21dae454fbe430e9c806fd8cef769a27.tar.xz hercules-715016aa21dae454fbe430e9c806fd8cef769a27.zip |
* Fixed Bug #7708
http://hercules.ws/board/tracker/issue-7708-mandragora-howl-chance-way-too-high/
Mandragora Howl chance --- way too high.
Base on a patch of the fix made by Rytech in 3ceam.
Diffstat (limited to 'src/map/skill.c')
-rw-r--r-- | src/map/skill.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index fe9703741..ae69738a6 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8915,12 +8915,17 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case GN_MANDRAGORA: if( flag&1 ) { - if ( clif->skill_nodamage(bl, src, skill_id, skill_lv, - sc_start(bl, type, 25 + 10 * skill_lv, skill_lv, skill->get_time(skill_id, skill_lv))) ) - status_zap(bl, 0, status_get_max_sp(bl) * (25 + 5 * skill_lv) / 100); - } else - map->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR, - src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill->castend_nodamage_id); + int chance = 25 + 10 * skill_lv - (status_get_vit(bl) + status_get_luk(bl)) / 5; + if ( chance < 10 ) + chance = 10;//Minimal chance is 10%. + if ( rand()%100 < chance ) {//Coded to both inflect the status and drain the target's SP only when successful. [Rytech] + sc_start(bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv)); + status_zap(bl, 0, status_get_max_sp(bl) * (25 + 5 * skill_lv) / 100); + } + } else if ( sd ) { + map->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), BL_CHAR,src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); + clif->skill_nodamage(bl, src, skill_id, skill_lv, 1); + } break; case GN_SLINGITEM: |