summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormalufett <malufett.eat.my.binaries@gmail.com>2014-12-14 21:47:22 +0800
committermalufett <malufett.eat.my.binaries@gmail.com>2014-12-14 21:47:22 +0800
commitfe7734dcb4ee15221b5dd006ea269ddf2f42e4b2 (patch)
tree1ca05d3fc5e762cc530ae090cf3b34c746105e1d
parentff145549f389e63be01234ddf778905700883d20 (diff)
downloadhercules-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>
-rw-r--r--src/map/mob.c8
-rw-r--r--src/map/skill.c8
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: