From bb8ecf9a28a62c24748f736cc75f217e885e595f Mon Sep 17 00:00:00 2001 From: skotlex Date: Thu, 28 Sep 2006 13:26:40 +0000 Subject: - Merged the necessary changes to make the script engine support negative constants (db/const.txt). Thanks to Rayce (from jA) for the code. - Cleaned up the skill.c code to take into account when skill_unitsetting returns null (skill failed), fixes a possible crash with Wand of Hermode git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8891 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/skill.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'src/map/skill.c') diff --git a/src/map/skill.c b/src/map/skill.c index b5c01bf1d..6e36973ce 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -6020,15 +6020,15 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s break; case HP_BASILICA: skill_clear_unitgroup(src); - sg = skill_unitsetting(src,skillid,skilllv,x,y,0); - sc_start(src,type,100,skilllv,skill_get_time(skillid,skilllv)); + if ((sg = skill_unitsetting(src,skillid,skilllv,x,y,0))) + sc_start(src,type,100,skilllv,skill_get_time(skillid,skilllv)); flag|=1; break; case CG_HERMODE: skill_clear_unitgroup(src); - sg = skill_unitsetting(src,skillid,skilllv,x,y,0); - sc_start4(src,SC_DANCING,100, - skillid,0,skilllv,sg->group_id,skill_get_time(skillid,skilllv)); + if ((sg = skill_unitsetting(src,skillid,skilllv,x,y,0))) + sc_start4(src,SC_DANCING,100, + skillid,0,skilllv,sg->group_id,skill_get_time(skillid,skilllv)); flag|=1; break; case RG_CLEANER: // [Valaris] @@ -6172,8 +6172,8 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s break; case HW_GRAVITATION: - sg = skill_unitsetting(src,skillid,skilllv,x,y,0); - sc_start4(src,type,100,skilllv,0,BCT_SELF,(int)sg,skill_get_time(skillid,skilllv)); + if ((sg = skill_unitsetting(src,skillid,skilllv,x,y,0))) + sc_start4(src,type,100,skilllv,0,BCT_SELF,(int)sg,skill_get_time(skillid,skilllv)); flag|=1; break; @@ -6199,8 +6199,8 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s case SG_SUN_WARM: case SG_MOON_WARM: case SG_STAR_WARM: - sg = skill_unitsetting(src,skillid,skilllv,src->x,src->y,0); - sc_start4(src,type,100,skilllv,0,0,(int)sg,skill_get_time(skillid,skilllv)); + if ((sg = skill_unitsetting(src,skillid,skilllv,src->x,src->y,0))) + sc_start4(src,type,100,skilllv,0,0,(int)sg,skill_get_time(skillid,skilllv)); flag|=1; break; @@ -6210,14 +6210,15 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s else { sg = skill_unitsetting(src,skillid,skilllv,src->x,src->y,0); + if (!sg) break; if (sc && sc->data[type].timer != -1) status_change_end(src,type,-1); //Was under someone else's Gospel. [Skotlex] sc_start4(src,type,100,skilllv,0,(int)sg,BCT_SELF,skill_get_time(skillid,skilllv)); } break; case NJ_TATAMIGAESHI: - sc_start(src,type,100,skilllv,skill_get_time2(skillid,skilllv)); - skill_unitsetting(src,skillid,skilllv,src->x,src->y,0); + if (skill_unitsetting(src,skillid,skilllv,src->x,src->y,0)) + sc_start(src,type,100,skilllv,skill_get_time2(skillid,skilllv)); break; case AM_CALLHOMUN: //[orn] -- cgit v1.2.3-60-g2f50