From f2bad5e832a265685bafc760fc8e6a1d9a2eeb50 Mon Sep 17 00:00:00 2001 From: Jittapan Pluemsumran Date: Fri, 8 Jan 2016 16:57:22 +0700 Subject: [PATCH] Add master id check in setunitdata script command. Fixes #887 --- src/map/script.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/map/script.c b/src/map/script.c index ac2d45ce9b..01c254ac96 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -17172,7 +17172,17 @@ BUILDIN_FUNC(setunitdata) case UMOB_INT: md->status.int_ = (unsigned short)value; status_calc_misc(bl, &md->status, md->level); break; case UMOB_DEX: md->status.dex = (unsigned short)value; status_calc_misc(bl, &md->status, md->level); break; case UMOB_LUK: md->status.luk = (unsigned short)value; status_calc_misc(bl, &md->status, md->level); break; - case UMOB_SLAVECPYMSTRMD: md->state.copy_master_mode = value > 0 ? 1 : 0; if (value > 0) { TBL_MOB *md2 = map_id2md(md->master_id); md->status.mode = md2->status.mode; } break; + case UMOB_SLAVECPYMSTRMD: + md->state.copy_master_mode = value > 0 ? 1 : 0; + if (value > 0) { + if (!md->master_id) { + ShowWarning("buildin_setunitdata: Trying to set UMOB_SLAVECPYMSTRMD on mob without master!\n"); + break; + } + TBL_MOB *md2 = map_id2md(md->master_id); + md->status.mode = md2->status.mode; + } + break; case UMOB_DMGIMMUNE: md->ud.immune_attack = (bool)value > 0 ? 1 : 0; break; case UMOB_ATKRANGE: md->status.rhw.range = (unsigned short)value; break; case UMOB_ATKMIN: md->status.rhw.atk = (unsigned short)value; break;