summaryrefslogtreecommitdiff
path: root/src/map/npc_chat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/npc_chat.c')
-rw-r--r--src/map/npc_chat.c35
1 files changed, 24 insertions, 11 deletions
diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c
index 8950df1ee..fef3ba99b 100644
--- a/src/map/npc_chat.c
+++ b/src/map/npc_chat.c
@@ -339,15 +339,20 @@ void npc_chat_finalize(struct npc_data* nd)
*/
int npc_chat_sub(struct block_list* bl, va_list ap)
{
- struct npc_data *nd = (struct npc_data *) bl;
- struct npc_parse *npcParse = nd->chatdb;
- char* msg;
+ struct npc_data *nd = NULL;
+ struct npc_parse *npcParse = NULL;
+ char *msg;
int len, i;
struct map_session_data* sd;
struct npc_label_list* lst;
struct pcrematch_set* pcreset;
struct pcrematch_entry* e;
+ nullpo_ret(bl);
+ Assert_ret(bl->type == BL_NPC);
+ nd = BL_UCAST(BL_NPC, bl);
+ npcParse = nd->chatdb;
+
// Not interested in anything you might have to say...
if (npcParse == NULL || npcParse->active == NULL)
return 0;
@@ -395,38 +400,46 @@ int npc_chat_sub(struct block_list* bl, va_list ap)
}
// Various script built-ins used to support these functions
-BUILDIN(defpattern) {
+BUILDIN(defpattern)
+{
int setid = script_getnum(st,2);
const char* pattern = script_getstr(st,3);
const char* label = script_getstr(st,4);
- struct npc_data* nd = (struct npc_data *)map->id2bl(st->oid);
+ struct npc_data *nd = map->id2nd(st->oid);
+ nullpo_retr(false, nd);
npc_chat->def_pattern(nd, setid, pattern, label);
return true;
}
-BUILDIN(activatepset) {
+BUILDIN(activatepset)
+{
int setid = script_getnum(st,2);
- struct npc_data* nd = (struct npc_data *)map->id2bl(st->oid);
+ struct npc_data *nd = map->id2nd(st->oid);
+ nullpo_retr(false, nd);
npc_chat->activate_pcreset(nd, setid);
return true;
}
-BUILDIN(deactivatepset) {
+BUILDIN(deactivatepset)
+{
int setid = script_getnum(st,2);
- struct npc_data* nd = (struct npc_data *)map->id2bl(st->oid);
+ struct npc_data *nd = map->id2nd(st->oid);
+ nullpo_retr(false, nd);
npc_chat->deactivate_pcreset(nd, setid);
return true;
}
-BUILDIN(deletepset) {
+BUILDIN(deletepset)
+{
int setid = script_getnum(st,2);
- struct npc_data* nd = (struct npc_data *)map->id2bl(st->oid);
+ struct npc_data *nd = map->id2nd(st->oid);
+ nullpo_retr(false, nd);
npc_chat->delete_pcreset(nd, setid);