diff options
author | malufett <malufett.eat.my.binaries@gmail.com> | 2014-12-14 21:47:22 +0800 |
---|---|---|
committer | malufett <malufett.eat.my.binaries@gmail.com> | 2014-12-14 21:47:22 +0800 |
commit | fe7734dcb4ee15221b5dd006ea269ddf2f42e4b2 (patch) | |
tree | 1ca05d3fc5e762cc530ae090cf3b34c746105e1d /src/map | |
parent | ff145549f389e63be01234ddf778905700883d20 (diff) | |
download | hercules-fe7734dcb4ee15221b5dd006ea269ddf2f42e4b2.tar.gz hercules-fe7734dcb4ee15221b5dd006ea269ddf2f42e4b2.tar.bz2 hercules-fe7734dcb4ee15221b5dd006ea269ddf2f42e4b2.tar.xz hercules-fe7734dcb4ee15221b5dd006ea269ddf2f42e4b2.zip |
Fixed Bug#8456
-http://hercules.ws/board/tracker/issue-8456-map-crash-skill-cell-overlap/?gopid=24193
Signed-off-by: malufett <malufett.eat.my.binaries@gmail.com>
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/mob.c | 8 | ||||
-rw-r--r-- | src/map/skill.c | 8 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index 629653c8d..6171ddb75 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -3715,7 +3715,12 @@ bool mob_parse_dbrow(char** str) { mstatus->int_ = mob_parse_dbrow_cap_value(class_,UINT16_MIN,UINT16_MAX,atoi(str[17])); mstatus->dex = mob_parse_dbrow_cap_value(class_,UINT16_MIN,UINT16_MAX,atoi(str[18])); mstatus->luk = mob_parse_dbrow_cap_value(class_,UINT16_MIN,UINT16_MAX,atoi(str[19])); - + + /* + * Disabled for renewal since difference of 0 and 1 still has an impact in the formulas + * Just in case there is a mishandled division by zero please let us know. [malufett] + */ +#ifndef RENEWAL //All status should be min 1 to prevent divisions by zero from some skills. [Skotlex] if (mstatus->str < 1) mstatus->str = 1; if (mstatus->agi < 1) mstatus->agi = 1; @@ -3723,6 +3728,7 @@ bool mob_parse_dbrow(char** str) { if (mstatus->int_< 1) mstatus->int_= 1; if (mstatus->dex < 1) mstatus->dex = 1; if (mstatus->luk < 1) mstatus->luk = 1; +#endif //Tests showed that chase range is effectively 2 cells larger than expected [Playtester] if (db->range3 > 0) diff --git a/src/map/skill.c b/src/map/skill.c index eb7394b9e..d89d82f57 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -10107,11 +10107,13 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui } case MG_SAFETYWALL: - if (map->foreachincell(skill->cell_overlap,src->m,x,y,BL_SKILL)) { - skill->unitsetting(src,skill_id,skill_lv,x,y,0); + { + int alive = 1; + if ( map->foreachincell(skill->cell_overlap, src->m, x, y, BL_SKILL, skill_id, &alive, src) ) { + skill->unitsetting(src, skill_id, skill_lv, x, y, 0); return 0; // Don't consume gems if cast on LP } - + } case MG_FIREWALL: case MG_THUNDERSTORM: |