From a04eeef27f16ba4fbe31e5e178313e6e718af4c8 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 27 Sep 2015 18:30:29 +0300 Subject: Allow set/get npc sex by working with variable '.sex'. --- src/emap/script.c | 12 ++++++++++++ src/emap/scriptdefines.h | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/emap/script.c b/src/emap/script.c index 0df3847..bb414b1 100644 --- a/src/emap/script.c +++ b/src/emap/script.c @@ -59,6 +59,13 @@ void escript_set_reg_npc_num(struct script_state* st, struct reg_db *n, int64 *n ext->language = *val; hookStop(); } + else if (!strcmp(name, ".sex")) + { + getND(); + clif->clearunit_area(&nd->bl, CLR_OUTSIGHT); + nd->vd->sex = *val; + clif->spawn(&nd->bl); + } } int escript_get_val_npcscope_num(struct script_state* st, struct reg_db *n, struct script_data* data) @@ -71,6 +78,11 @@ int escript_get_val_npcscope_num(struct script_state* st, struct reg_db *n, stru hookStop(); return ext->language; } + else if (!strcmp(name, ".sex")) + { + getNDReturn(0); + return nd->vd->sex; + } return 0; } diff --git a/src/emap/scriptdefines.h b/src/emap/scriptdefines.h index d35f71c..921df75 100644 --- a/src/emap/scriptdefines.h +++ b/src/emap/scriptdefines.h @@ -85,4 +85,14 @@ return false; \ } +#define getND() \ + TBL_NPC *nd = map->id2nd(st->oid); \ + if (!nd) \ + return; \ + +#define getNDReturn(def) \ + TBL_NPC *nd = map->id2nd(st->oid); \ + if (!nd) \ + return def; \ + #endif // EVOL_MAP_SCRIPTDEFINES -- cgit v1.2.3-60-g2f50