summaryrefslogtreecommitdiff
path: root/src/map/npc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/npc.c')
-rw-r--r--src/map/npc.c396
1 files changed, 190 insertions, 206 deletions
diff --git a/src/map/npc.c b/src/map/npc.c
index eca640b1f..03ef54007 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -34,9 +34,9 @@
// linked list of npc source files
struct npc_src_list {
struct npc_src_list* next;
- char name[4];// dynamic array, the structure is allocated with extra bytes (string length)
+ char name[4]; // dynamic array, the structure is allocated with extra bytes (string length)
};
-static struct npc_src_list* npc_src_files=NULL;
+static struct npc_src_list* npc_src_files = NULL;
static int npc_id=START_NPC_NUM;
static int npc_warp=0;
@@ -67,7 +67,7 @@ static struct script_event_s
struct npc_data *nd;
struct event_data *event[UCHAR_MAX];
const char *event_name[UCHAR_MAX];
- unsigned char event_count;
+ uint8 event_count;
} script_event[NPCE_MAX];
struct view_data* npc_get_viewdata(int class_)
@@ -83,7 +83,7 @@ struct view_data* npc_get_viewdata(int class_)
* npc_enable
* npc_enable_sub 有効時にOnTouchイベントを実行
*------------------------------------------*/
-int npc_enable_sub( struct block_list *bl, va_list ap )
+int npc_enable_sub(struct block_list *bl, va_list ap)
{
struct map_session_data *sd;
struct npc_data *nd;
@@ -108,9 +108,9 @@ int npc_enable_sub( struct block_list *bl, va_list ap )
//aFree(name);
return 0;
}
-int npc_enable(const char *name,int flag)
+int npc_enable(const char* name, int flag)
{
- struct npc_data *nd= strdb_get(npcname_db,(unsigned char*)name);
+ struct npc_data* nd = strdb_get(npcname_db, name);
if (nd==NULL)
return 0;
@@ -141,15 +141,15 @@ int npc_enable(const char *name,int flag)
/*==========================================
* NPCを名前で探す
*------------------------------------------*/
-struct npc_data* npc_name2id(const char *name)
+struct npc_data* npc_name2id(const char* name)
{
- return (struct npc_data *) strdb_get(npcname_db,(unsigned char*)name);
+ return (struct npc_data *) strdb_get(npcname_db, name);
}
/*==========================================
* イベントキューのイベント処理
*------------------------------------------*/
-int npc_event_dequeue(struct map_session_data *sd)
+int npc_event_dequeue(struct map_session_data* sd)
{
nullpo_retr(0, sd);
@@ -185,12 +185,12 @@ int npc_event_dequeue(struct map_session_data *sd)
/*==========================================
* イベントの遅延実行
*------------------------------------------*/
-int npc_event_timer(int tid,unsigned int tick,int id,int data)
+int npc_event_timer(int tid, unsigned int tick, int id, int data)
{
- unsigned char *eventname = (unsigned char *)data;
- struct event_data *ev = strdb_get(ev_db,eventname);
- struct npc_data *nd;
- struct map_session_data *sd=map_id2sd(id);
+ char* eventname = (char *)data;
+ struct event_data* ev = strdb_get(ev_db,eventname);
+ struct npc_data* nd;
+ struct map_session_data* sd = map_id2sd(id);
size_t i;
if((ev==NULL || (nd=ev->nd)==NULL))
@@ -215,9 +215,9 @@ int npc_event_timer(int tid,unsigned int tick,int id,int data)
return 0;
}
-int npc_timer_event(const unsigned char *eventname) // Added by RoVeRT
+int npc_timer_event(const char* eventname) // Added by RoVeRT
{
- struct event_data *ev=strdb_get(ev_db,(unsigned char*)eventname);
+ struct event_data* ev = strdb_get(ev_db, eventname);
struct npc_data *nd;
// int xs,ys;
@@ -276,20 +276,20 @@ int npc_timer(int tid,unsigned int tick,int id,int data) // Added by RoVeRT
}*/
/*==========================================
- * イベント用ラベルのエクスポート
+ * exports a npc event label
* npc_parse_script->strdb_foreachから呼ばれる
*------------------------------------------*/
-int npc_event_export(char *lname,void *data,va_list ap)
+int npc_event_export(char* lname, void* data, va_list ap)
{
- int pos=(int)data;
- struct npc_data *nd=va_arg(ap,struct npc_data *);
+ int pos = (int)data;
+ struct npc_data* nd = va_arg(ap, struct npc_data *);
if ((lname[0]=='O' || lname[0]=='o')&&(lname[1]=='N' || lname[1]=='n')) {
struct event_data *ev;
- unsigned char buf[51];
- char *p=strchr(lname,':');
+ char buf[51];
+ char* p = strchr(lname, ':');
// エクスポートされる
- ev=(struct event_data *) aMalloc(sizeof(struct event_data));
+ ev = (struct event_data *) aMalloc(sizeof(struct event_data));
if (ev==NULL) {
ShowFatalError("npc_event_export: out of memory !\n");
exit(1);
@@ -297,35 +297,35 @@ int npc_event_export(char *lname,void *data,va_list ap)
ShowFatalError("npc_event_export: label name error !\n");
exit(1);
}else{
- ev->nd=nd;
- ev->pos=pos;
- *p='\0';
- sprintf(buf,"%s::%s",nd->exname,lname);
- *p=':';
- strdb_put(ev_db,buf,ev);
+ ev->nd = nd;
+ ev->pos = pos;
+ *p = '\0';
+ sprintf(buf, "%s::%s", nd->exname, lname);
+ *p = ':';
+ strdb_put(ev_db, buf, ev);
}
}
return 0;
}
-int npc_event_sub(struct map_session_data *, struct event_data *, const unsigned char *); //[Lance]
+int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char* eventname); //[Lance]
/*==========================================
* 全てのNPCのOn*イベント実行
*------------------------------------------*/
-int npc_event_doall_sub(DBKey key,void *data,va_list ap)
+int npc_event_doall_sub(DBKey key, void* data, va_list ap)
{
- const char*p = key.str;
- struct event_data *ev;
- int *c;
+ const char* p = key.str;
+ struct event_data* ev;
+ int* c;
int rid;
- unsigned char *name;
+ char* name;
- ev=(struct event_data *)data;
- c=va_arg(ap,int *);
- name=va_arg(ap,unsigned char *);
- rid=va_arg(ap, int);
+ ev = (struct event_data *)data;
+ c = va_arg(ap, int *);
+ name = va_arg(ap,char *);
+ rid = va_arg(ap, int);
- if( (p=strchr(p,':')) && p && strcmpi(name,p)==0 ){
+ if( (p=strchr(p, ':')) && p && strcmpi(name, p)==0 ) {
if(rid)
npc_event_sub(((struct map_session_data *)map_id2bl(rid)),ev,key.str);
else
@@ -335,50 +335,50 @@ int npc_event_doall_sub(DBKey key,void *data,va_list ap)
return 0;
}
-int npc_event_doall(const unsigned char *name)
+int npc_event_doall(const char* name)
{
- int c=0;
- unsigned char buf[64]="::";
+ int c = 0;
+ char buf[64] = "::";
- strncpy(buf+2,name,62);
+ strncpy(buf+2, name, 62);
ev_db->foreach(ev_db,npc_event_doall_sub,&c,buf,0);
return c;
}
-int npc_event_doall_id(const unsigned char *name, int rid)
+int npc_event_doall_id(const char* name, int rid)
{
- int c=0;
- unsigned char buf[64]="::";
+ int c = 0;
+ char buf[64] = "::";
- strncpy(buf+2,name,62);
+ strncpy(buf+2, name, 62);
ev_db->foreach(ev_db,npc_event_doall_sub,&c,buf,rid);
return c;
}
-int npc_event_do_sub(DBKey key,void *data,va_list ap)
+int npc_event_do_sub(DBKey key, void* data, va_list ap)
{
- const char *p = key.str;
- struct event_data *ev;
- int *c;
- const unsigned char *name;
+ const char* p = key.str;
+ struct event_data* ev;
+ int* c;
+ const char* name;
- nullpo_retr(0, ev=(struct event_data *)data);
+ nullpo_retr(0, ev = (struct event_data *)data);
nullpo_retr(0, ap);
- nullpo_retr(0, c=va_arg(ap,int *));
+ nullpo_retr(0, c = va_arg(ap, int *));
- name=va_arg(ap,const unsigned char *);
+ name = va_arg(ap, const char *);
- if (p && strcmpi(name,p)==0 ) {
+ if (p && strcmpi(name, p)==0) {
run_script(ev->nd->u.scr.script,ev->pos,0,ev->nd->bl.id);
(*c)++;
}
return 0;
}
-int npc_event_do(const unsigned char *name)
+int npc_event_do(const char* name)
{
- int c=0;
+ int c = 0;
- if (*name==':' && name[1]==':') {
+ if (*name == ':' && name[1] == ':') {
return npc_event_doall(name+2);
}
@@ -389,7 +389,7 @@ int npc_event_do(const unsigned char *name)
/*==========================================
* 時計イベント実行
*------------------------------------------*/
-int npc_event_do_clock(int tid,unsigned int tick,int id,int data)
+int npc_event_do_clock(int tid, unsigned int tick, int id, int data)
{
time_t timer;
struct tm *t;
@@ -446,21 +446,21 @@ int npc_event_do_oninit(void)
/*==========================================
* OnTimer NPC event - by RoVeRT
*------------------------------------------*/
-int npc_addeventtimer(struct npc_data *nd,int tick,const char *name)
+int npc_addeventtimer(struct npc_data* nd, int tick, const char* name)
{
int i;
- unsigned char *evname;
+ char* evname;
for(i=0;i<MAX_EVENTTIMER;i++)
if( nd->eventtimer[i]==-1 )
break;
if(i<MAX_EVENTTIMER){
- if (!strdb_get(ev_db,(unsigned char*)name)) {
+ if (!strdb_get(ev_db,name)) {
if (battle_config.error_log)
ShowError("npc_addeventimer: Event %s does not exists.\n", name);
return 1; //Event does not exists!
}
- evname =(unsigned char *) aMallocA(NAME_LENGTH*sizeof(char));
+ evname = (char *)aMallocA(NAME_LENGTH*sizeof(char));
if(evname==NULL){
ShowFatalError("npc_addeventtimer: out of memory !\n");exit(1);
}
@@ -474,21 +474,20 @@ int npc_addeventtimer(struct npc_data *nd,int tick,const char *name)
return 0;
}
-int npc_deleventtimer(struct npc_data *nd,const unsigned char *name)
+int npc_deleventtimer(struct npc_data* nd, const char* name)
{
int i;
for(i=0;i<MAX_EVENTTIMER;i++)
- if( nd->eventtimer[i]!=-1 && strcmp(
- (unsigned char *)(get_timer(nd->eventtimer[i])->data), name)==0 ){
- delete_timer(nd->eventtimer[i],npc_event_timer);
- nd->eventtimer[i]=-1;
- break;
+ if( nd->eventtimer[i]!=-1 && strcmp((char *)(get_timer(nd->eventtimer[i])->data), name)==0 ){
+ delete_timer(nd->eventtimer[i],npc_event_timer);
+ nd->eventtimer[i]=-1;
+ break;
}
return 0;
}
-int npc_cleareventtimer(struct npc_data *nd)
+int npc_cleareventtimer(struct npc_data* nd)
{
int i;
for(i=0;i<MAX_EVENTTIMER;i++)
@@ -500,7 +499,7 @@ int npc_cleareventtimer(struct npc_data *nd)
return 0;
}
-int npc_do_ontimer_sub(DBKey key,void *data,va_list ap)
+int npc_do_ontimer_sub(DBKey key, void* data, va_list ap)
{
const char *p = key.str;
struct event_data *ev = (struct event_data *)data;
@@ -535,7 +534,7 @@ int npc_do_ontimer(int npc_id, int option)
* タイマーイベント用ラベルの取り込み
* npc_parse_script->strdb_foreachから呼ばれる
*------------------------------------------*/
-int npc_timerevent_import(char *lname,void *data,va_list ap)
+int npc_timerevent_import(char* lname, void* data, va_list ap)
{
int pos=(int)data;
struct npc_data *nd=va_arg(ap,struct npc_data *);
@@ -574,7 +573,7 @@ struct timer_event_data {
/*==========================================
* タイマーイベント実行
*------------------------------------------*/
-int npc_timerevent(int tid,unsigned int tick,int id,int data)
+int npc_timerevent(int tid, unsigned int tick, int id, int data)
{
int next,t,old_rid,old_timer;
unsigned int old_tick;
@@ -634,7 +633,7 @@ int npc_timerevent(int tid,unsigned int tick,int id,int data)
/*==========================================
* タイマーイベント開始
*------------------------------------------*/
-int npc_timerevent_start(struct npc_data *nd, int rid)
+int npc_timerevent_start(struct npc_data* nd, int rid)
{
int j,n, next;
struct map_session_data *sd=NULL; //Player to whom script is attached.
@@ -690,7 +689,7 @@ int npc_timerevent_start(struct npc_data *nd, int rid)
/*==========================================
* タイマーイベント終了
*------------------------------------------*/
-int npc_timerevent_stop(struct npc_data *nd)
+int npc_timerevent_stop(struct npc_data* nd)
{
struct map_session_data *sd =NULL;
struct TimerData *td = NULL;
@@ -722,7 +721,7 @@ int npc_timerevent_stop(struct npc_data *nd)
/*==========================================
* Aborts a running npc timer that is attached to a player.
*------------------------------------------*/
-void npc_timerevent_quit(struct map_session_data *sd)
+void npc_timerevent_quit(struct map_session_data* sd)
{
struct TimerData *td;
struct npc_data* nd;
@@ -743,7 +742,7 @@ void npc_timerevent_quit(struct map_session_data *sd)
char buf[sizeof(nd->exname)+sizeof("::OnTimerQuit")+1];
struct event_data *ev;
sprintf(buf,"%s::OnTimerQuit",nd->exname);
- ev = strdb_get(ev_db,(unsigned char*)buf);
+ ev = strdb_get(ev_db, buf);
if(ev && ev->nd != nd) {
ShowWarning("npc_timerevent_quit: Unable to execute \"OnTimerQuit\", two NPCs have the same event name [%s]!\n",buf);
ev = NULL;
@@ -776,7 +775,7 @@ void npc_timerevent_quit(struct map_session_data *sd)
/*==========================================
* タイマー値の所得
*------------------------------------------*/
-int npc_gettimerevent_tick(struct npc_data *nd)
+int npc_gettimerevent_tick(struct npc_data* nd)
{
int tick;
nullpo_retr(0, nd);
@@ -789,7 +788,7 @@ int npc_gettimerevent_tick(struct npc_data *nd)
/*==========================================
* タイマー値の設定
*------------------------------------------*/
-int npc_settimerevent_tick(struct npc_data *nd,int newtimer)
+int npc_settimerevent_tick(struct npc_data* nd, int newtimer)
{
int flag;
struct map_session_data *sd=NULL;
@@ -815,7 +814,7 @@ int npc_settimerevent_tick(struct npc_data *nd,int newtimer)
return 0;
}
-int npc_event_sub(struct map_session_data *sd, struct event_data *ev, const unsigned char *eventname)
+int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char* eventname)
{
if ( sd->npc_id!=0) {
//Enqueue the event trigger.
@@ -841,12 +840,12 @@ int npc_event_sub(struct map_session_data *sd, struct event_data *ev, const unsi
/*==========================================
* イベント型のNPC処理
*------------------------------------------*/
-int npc_event (struct map_session_data *sd, const unsigned char *eventname, int mob_kill)
+int npc_event(struct map_session_data* sd, const char* eventname, int mob_kill)
{
- struct event_data *ev=strdb_get(ev_db,(unsigned char*)eventname);
+ struct event_data* ev = strdb_get(ev_db, eventname);
struct npc_data *nd;
int xs,ys;
- unsigned char mobevent[100];
+ char mobevent[100];
if (sd == NULL) {
nullpo_info(NLP_MARK);
@@ -897,7 +896,7 @@ int npc_command_sub(DBKey key,void *data,va_list ap)
struct event_data *ev=(struct event_data *)data;
const char* npcname = va_arg(ap, const char*);
const char* command = va_arg(ap, const char*);
- unsigned char temp[100];
+ char temp[100];
if(strcmp(ev->nd->name,npcname)==0 && (p=strchr(p,':')) && strnicmp("::OnCommand",p,10)==0 ){
sscanf(&p[11],"%s",temp);
@@ -918,7 +917,7 @@ int npc_command(struct map_session_data* sd, const char* npcname, const char* co
/*==========================================
* 接触型のNPC処理
*------------------------------------------*/
-int npc_touch_areanpc(struct map_session_data *sd,int m,int x,int y)
+int npc_touch_areanpc(struct map_session_data* sd, int m, int x, int y)
{
int i,f=1;
int xs,ys;
@@ -987,7 +986,7 @@ int npc_touch_areanpc(struct map_session_data *sd,int m,int x,int y)
return 0;
}
-int npc_touch_areanpc2(struct block_list *bl)
+int npc_touch_areanpc2(struct block_list* bl)
{
int i,m=bl->m;
int xs,ys;
@@ -1023,7 +1022,7 @@ int npc_touch_areanpc2(struct block_list *bl)
//Flag determines the type of object to check for:
//&1: NPC Warps
//&2: NPCs with on-touch events.
-int npc_check_areanpc(int flag,int m,int x,int y,int range)
+int npc_check_areanpc(int flag, int m, int x, int y, int range)
{
int i;
int x0,y0,x1,y1;
@@ -1083,7 +1082,7 @@ int npc_check_areanpc(int flag,int m,int x,int y,int range)
/*==========================================
* 近くかどうかの判定
*------------------------------------------*/
-int npc_checknear2(struct map_session_data *sd,struct block_list *bl)
+int npc_checknear2(struct map_session_data* sd, struct block_list* bl)
{
nullpo_retr(1, sd);
if(bl == NULL) return 1;
@@ -1102,7 +1101,7 @@ int npc_checknear2(struct map_session_data *sd,struct block_list *bl)
return 0;
}
-TBL_NPC *npc_checknear(struct map_session_data *sd,struct block_list *bl)
+TBL_NPC* npc_checknear(struct map_session_data* sd, struct block_list* bl)
{
struct npc_data *nd;
@@ -1128,15 +1127,15 @@ TBL_NPC *npc_checknear(struct map_session_data *sd,struct block_list *bl)
/*==========================================
* NPCのオープンチャット発言
*------------------------------------------*/
-int npc_globalmessage(const char *name,const char *mes)
+int npc_globalmessage(const char* name, const char* mes)
{
- struct npc_data *nd=(struct npc_data *) strdb_get(npcname_db,(unsigned char*)name);
+ struct npc_data* nd = (struct npc_data *) strdb_get(npcname_db, name);
char temp[100];
if (!nd)
return 0;
- snprintf(temp, sizeof temp ,"%s : %s",name,mes);
+ snprintf(temp, sizeof(temp), "%s : %s", name, mes);
clif_GlobalMessage(&nd->bl,temp);
return 0;
@@ -1145,7 +1144,7 @@ int npc_globalmessage(const char *name,const char *mes)
/*==========================================
* クリック時のNPC処理
*------------------------------------------*/
-int npc_click(struct map_session_data *sd,struct npc_data *nd)
+int npc_click(struct map_session_data* sd, struct npc_data* nd)
{
nullpo_retr(1, sd);
@@ -1177,7 +1176,7 @@ int npc_click(struct map_session_data *sd,struct npc_data *nd)
/*==========================================
*
*------------------------------------------*/
-int npc_scriptcont(struct map_session_data *sd,int id)
+int npc_scriptcont(struct map_session_data* sd, int id)
{
nullpo_retr(1, sd);
@@ -1204,7 +1203,7 @@ int npc_scriptcont(struct map_session_data *sd,int id)
/*==========================================
*
*------------------------------------------*/
-int npc_buysellsel(struct map_session_data *sd,int id,int type)
+int npc_buysellsel(struct map_session_data* sd, int id, int type)
{
struct npc_data *nd;
@@ -1233,9 +1232,9 @@ int npc_buysellsel(struct map_session_data *sd,int id,int type)
}
//npc_buylist for script-controlled shops.
-static int npc_buylist_sub(struct map_session_data *sd, int n, unsigned short *item_list, struct npc_data *nd)
+static int npc_buylist_sub(struct map_session_data* sd, int n, unsigned short* item_list, struct npc_data* nd)
{
- unsigned char npc_ev[51];
+ char npc_ev[51];
int i;
int regkey = add_str("@bought_nameid");
int regkey2 = add_str("@bought_quantity");
@@ -1251,7 +1250,7 @@ static int npc_buylist_sub(struct map_session_data *sd, int n, unsigned short *i
/*==========================================
*
*------------------------------------------*/
-int npc_buylist(struct map_session_data *sd,int n,unsigned short *item_list)
+int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list)
{
struct npc_data *nd;
double z;
@@ -1348,7 +1347,7 @@ int npc_buylist(struct map_session_data *sd,int n,unsigned short *item_list)
/*==========================================
*
*------------------------------------------*/
-int npc_selllist(struct map_session_data *sd,int n,unsigned short *item_list)
+int npc_selllist(struct map_session_data* sd, int n, unsigned short* item_list)
{
double z;
int i,skill,itemamount=0;
@@ -1417,7 +1416,7 @@ int npc_selllist(struct map_session_data *sd,int n,unsigned short *item_list)
}
if(nd) {
- unsigned char npc_ev[51];
+ char npc_ev[51];
sprintf(npc_ev, "%s::OnSellItem", nd->exname);
npc_event(sd, npc_ev, 0);
}
@@ -1433,7 +1432,7 @@ int npc_selllist(struct map_session_data *sd,int n,unsigned short *item_list)
return 0;
}
-int npc_remove_map(struct npc_data *nd)
+int npc_remove_map(struct npc_data* nd)
{
int m,i;
nullpo_retr(1, nd);
@@ -1473,10 +1472,10 @@ int npc_remove_map(struct npc_data *nd)
return 0;
}
-static int npc_unload_ev(DBKey key,void *data,va_list ap)
+static int npc_unload_ev(DBKey key, void* data, va_list ap)
{
- struct event_data *ev=(struct event_data *)data;
- unsigned char *npcname=va_arg(ap,unsigned char *);
+ struct event_data* ev = (struct event_data *)data;
+ char* npcname = va_arg(ap, char *);
if(strcmp(ev->nd->exname,npcname)==0){
db_remove(ev_db, key);
@@ -1485,7 +1484,7 @@ static int npc_unload_ev(DBKey key,void *data,va_list ap)
return 0;
}
-static int npc_unload_dup_sub(DBKey key,void * data,va_list ap)
+static int npc_unload_dup_sub(DBKey key, void* data, va_list ap)
{
struct npc_data *nd = (struct npc_data *)data;
int src_id;
@@ -1498,13 +1497,14 @@ static int npc_unload_dup_sub(DBKey key,void * data,va_list ap)
npc_unload(nd);
return 0;
}
+
//Removes all npcs that are duplicates of the passed one. [Skotlex]
-void npc_unload_duplicates (struct npc_data *nd)
+void npc_unload_duplicates(struct npc_data* nd)
{
map_foreachiddb(npc_unload_dup_sub,nd->bl.id);
}
-int npc_unload(struct npc_data *nd)
+int npc_unload(struct npc_data* nd)
{
nullpo_ret(nd);
@@ -1547,10 +1547,6 @@ int npc_unload(struct npc_data *nd)
}
//
-// 初期化関係
-//
-
-//
// NPC Source Files
//
@@ -1631,7 +1627,7 @@ void npc_delsrcfile(const char* name)
/*==========================================
* warp行解析
*------------------------------------------*/
-int npc_parse_warp (char *w1,char *w2,char *w3,char *w4)
+int npc_parse_warp(char* w1, char* w2, char* w3, char* w4)
{
int x, y, xs, ys, to_x, to_y, m;
int i;
@@ -1693,7 +1689,7 @@ int npc_parse_warp (char *w1,char *w2,char *w3,char *w4)
/*==========================================
* shop行解析
*------------------------------------------*/
-static int npc_parse_shop (char *w1, char *w2, char *w3, char *w4)
+static int npc_parse_shop(char* w1, char* w2, char* w3, char* w4)
{
#define MAX_SHOPITEM 100
char *p;
@@ -1791,7 +1787,7 @@ static int npc_parse_shop (char *w1, char *w2, char *w3, char *w4)
/*==========================================
* NPCのラベルデータコンバート
*------------------------------------------*/
-int npc_convertlabel_db (DBKey key, void *data, va_list ap)
+int npc_convertlabel_db(DBKey key, void* data, va_list ap)
{
const char *lname = (const char*)key.str;
int pos = (int)data;
@@ -1833,26 +1829,25 @@ int npc_convertlabel_db (DBKey key, void *data, va_list ap)
}
/*==========================================
- * script行解析
+ * parses a script line
*------------------------------------------*/
-static void npc_parse_script_line(unsigned char *p,int *curly_count,int line)
+static void npc_parse_script_line(char* p, int* curly_count, int line)
{
- int i = strlen((char *)p),j;
+ int i = strlen(p),j;
int string_flag = 0;
static int comment_flag = 0;
- for(j = 0; j < i ; j++) {
+ for(j = 0; j < i; j++)
+ {
if(comment_flag) {
- if(p[j] == '*' && p[j+1] == '/') {
- // マルチラインコメント終了
- j++;
+ if(p[j] == '*' && p[j+1] == '/') { // end of multiline comment
(*curly_count)--;
comment_flag = 0;
+ j++;
}
} else if(string_flag) {
if(p[j] == '"') {
string_flag = 0;
- } else if(p[j] == '\\' && p[j-1]<=0x7e) {
- // エスケープ
+ } else if(p[j] == '\\' && (unsigned char)(p[j-1])<=0x7e) { // escape
j++;
}
} else {
@@ -1866,57 +1861,55 @@ static void npc_parse_script_line(unsigned char *p,int *curly_count,int line)
}
} else if(p[j] == '{') {
(*curly_count)++;
- } else if(p[j] == '/' && p[j+1] == '/') {
- // コメント
+ } else if(p[j] == '/' && p[j+1] == '/') { // comment
break;
- } else if(p[j] == '/' && p[j+1] == '*') {
- // マルチラインコメント
- j++;
+ } else if(p[j] == '/' && p[j+1] == '*') { // multiline comment start
(*curly_count)++;
comment_flag = 1;
+ j++;
}
}
}
if(string_flag) {
- printf("Missing '\"' at file %s line %d\n",current_file,line);
+ printf("Missing '\"' at file %s line %d\n", current_file, line);
exit(1);
}
}
// Like npc_parse_script, except it's sole use is to skip the contents of a script. [Skotlex]
-static int npc_skip_script (char *w1,char *w2,char *w3,char *w4,char *first_line,FILE *fp,int *lines)
+static int npc_skip_script(char* w1, char* w2, char* w3, char* w4, char* first_line, FILE* fp, int* lines)
{
- unsigned char *srcbuf = NULL;
+ char *srcbuf = NULL;
int srcsize = 65536;
int startline = 0;
- unsigned char line[1024];
+ char line[1024];
int curly_count = 0;
- srcbuf = (unsigned char *)aMallocA(srcsize*sizeof(char));
+ srcbuf = (char *)aMallocA(srcsize*sizeof(char));
if (strchr(first_line, '{')) {
- strcpy((char *)srcbuf, strchr(first_line, '{'));
+ strcpy(srcbuf, strchr(first_line, '{'));
startline = *lines;
} else
srcbuf[0] = 0;
npc_parse_script_line(srcbuf,&curly_count,*lines);
while (curly_count > 0) {
- fgets ((char *)line, sizeof(line), fp);
+ fgets(line, sizeof(line), fp);
(*lines)++;
npc_parse_script_line(line,&curly_count,*lines);
if (feof(fp))
break;
- if (strlen((char *)srcbuf) + strlen((char *)line) + 1 >= (size_t)srcsize) {
+ if (strlen(srcbuf) + strlen(line) + 1 >= (size_t)srcsize) {
srcsize += 65536;
- srcbuf = (unsigned char *)aRealloc(srcbuf, srcsize);
+ srcbuf = (char *)aRealloc(srcbuf, srcsize);
memset(srcbuf + srcsize - 65536, '\0', 65536);
}
if (srcbuf[0] != '{') {
- if (strchr((char *) line,'{')) {
- strcpy((char *) srcbuf, strchr((const char *) line, '{'));
+ if (strchr(line, '{')) {
+ strcpy(srcbuf, strchr(line, '{'));
startline = *lines;
}
} else
- strcat((char *) srcbuf, (const char *) line);
+ strcat(srcbuf, line);
}
if(curly_count > 0)
ShowError("Missing right curly at file %s, line %d\n",current_file, *lines);
@@ -1924,15 +1917,15 @@ static int npc_skip_script (char *w1,char *w2,char *w3,char *w4,char *first_line
return 0;
}
-static int npc_parse_script(char *w1,char *w2,char *w3,char *w4,char *first_line,FILE *fp,int *lines,const char* file)
+static int npc_parse_script(char* w1, char* w2, char* w3, char* w4, char* first_line, FILE* fp, int* lines, const char* file)
{
int x, y, dir = 0, m, xs = 0, ys = 0, class_ = 0; // [Valaris] thanks to fov
char mapname[MAP_NAME_LENGTH_EXT];
- unsigned char *srcbuf = NULL;
+ char *srcbuf = NULL;
struct script_code *script;
int srcsize = 65536;
int startline = 0;
- unsigned char line[1024];
+ char line[1024];
int i;
struct npc_data *nd, *dnd;
DB label_db;
@@ -1956,34 +1949,34 @@ static int npc_parse_script(char *w1,char *w2,char *w3,char *w4,char *first_line
if (strcmp(w2, "script") == 0){
// parsing script with curly
int curly_count = 0;
- srcbuf = (unsigned char *)aMallocA(srcsize*sizeof(char));
+ srcbuf = (char *)aMallocA(srcsize*sizeof(char));
if (strchr(first_line, '{')) {
- strcpy((char *)srcbuf, strchr(first_line, '{'));
+ strcpy(srcbuf, strchr(first_line, '{'));
startline = *lines;
} else
srcbuf[0] = 0;
npc_parse_script_line(srcbuf,&curly_count,*lines);
while (curly_count > 0) {
- fgets((char *)line, sizeof(line), fp);
+ fgets(line, sizeof(line), fp);
(*lines)++;
npc_parse_script_line(line,&curly_count,*lines);
if (feof(fp))
break;
- if (strlen((char *)srcbuf) + strlen((char *)line) + 1 >= (size_t)srcsize) {
+ if (strlen(srcbuf) + strlen(line) + 1 >= (size_t)srcsize) {
srcsize += 65536;
- srcbuf = (unsigned char *)aRealloc(srcbuf, srcsize);
+ srcbuf = (char *)aRealloc(srcbuf, srcsize);
memset(srcbuf + srcsize - 65536, '\0', 65536);
}
if (srcbuf[0] != '{') {
- if (strchr((char *) line,'{')) {
- strcpy((char *) srcbuf, strchr((const char *) line, '{'));
+ if (strchr(line, '{')) {
+ strcpy(srcbuf, strchr(line, '{'));
startline = *lines;
}
} else
- strcat((char *) srcbuf, (const char *) line);
+ strcat(srcbuf, line);
}
if(curly_count > 0) {
- ShowError("Missing right curly at file %s, line %d\n",file, *lines);
+ ShowError("Missing right curly at file %s, line %d\n", file, *lines);
script = NULL;
} else {
// printf("Ok line %d\n",*lines);
@@ -2112,28 +2105,21 @@ static int npc_parse_script(char *w1,char *w2,char *w3,char *w4,char *first_line
// イベント用ラベルデータのエクスポート
for (i = 0; i < nd->u.scr.label_list_num; i++)
{
- char *lname = nd->u.scr.label_list[i].name;
+ char* lname = nd->u.scr.label_list[i].name;
int pos = nd->u.scr.label_list[i].pos;
- if ((lname[0] == 'O' || lname[0] == 'o') && (lname[1] == 'N' || lname[1] == 'n')) {
- // this check is useless here because the buffer is only 24 chars
- // and already overwritten if this is here is reached
- // I leave the check anyway but place it correctly to npc_convertlabel_db
- if (strlen(lname)>NAME_LENGTH-1) {
- ShowError("npc_parse_script: label name longer than %d chars! '%s' (%s)\n", NAME_LENGTH-1, lname, file);
- exit(1);
- } else {
- struct event_data *ev;
- unsigned char buf[50+1]; // 24 for npc name + 24 for label + 2 for a "::" and 1 for EOS
- sprintf(buf,"%s::%s",nd->exname,lname);
-
- // generate the data and insert it
- ev=(struct event_data *)aMalloc(sizeof(struct event_data));
- ev->nd=nd;
- ev->pos=pos;
- if (strdb_put(ev_db,buf,ev) != NULL) //There was already another event of the same name?
- ShowWarning("npc_parse_script : duplicate event %s (%s)\n",buf, file);
- }
+ if ((lname[0] == 'O' || lname[0] == 'o') && (lname[1] == 'N' || lname[1] == 'n'))
+ {
+ struct event_data* ev;
+ char buf[50+1]; // 24 for npc name + 24 for label + 2 for a "::" and 1 for EOS
+ snprintf(buf, sizeof(buf), "%s::%s", nd->exname, lname);
+
+ // generate the data and insert it
+ ev = (struct event_data *)aMalloc(sizeof(struct event_data));
+ ev->nd = nd;
+ ev->pos = pos;
+ if (strdb_put(ev_db, buf, ev) != NULL) //There was already another event of the same name?
+ ShowWarning("npc_parse_script : duplicate event %s (%s)\n", buf, file);
}
}
@@ -2168,7 +2154,7 @@ static int npc_parse_script(char *w1,char *w2,char *w3,char *w4,char *first_line
return 0;
}
-void npc_setcells(struct npc_data *nd)
+void npc_setcells(struct npc_data* nd)
{
int m = nd->bl.m, x = nd->bl.x, y = nd->bl.y, xs, ys;
int i,j;
@@ -2193,7 +2179,7 @@ void npc_setcells(struct npc_data *nd)
}
}
-int npc_unsetcells_sub(struct block_list *bl, va_list ap)
+int npc_unsetcells_sub(struct block_list* bl, va_list ap)
{
struct npc_data *nd = (struct npc_data*)bl;
int id = va_arg(ap,int);
@@ -2202,7 +2188,7 @@ int npc_unsetcells_sub(struct block_list *bl, va_list ap)
return 1;
}
-void npc_unsetcells(struct npc_data *nd)
+void npc_unsetcells(struct npc_data* nd)
{
int m = nd->bl.m, x = nd->bl.x, y = nd->bl.y, xs, ys;
int i,j, x0, x1, y0, y1;
@@ -2232,7 +2218,7 @@ void npc_unsetcells(struct npc_data *nd)
map_foreachinarea( npc_unsetcells_sub, m, x0, y0, x1, y1, BL_NPC, nd->bl.id);
}
-void npc_movenpc(struct npc_data *nd, int x, int y)
+void npc_movenpc(struct npc_data* nd, int x, int y)
{
const int m = nd->bl.m;
if (m < 0 || nd->bl.prev == NULL) return; //Not on a map.
@@ -2251,9 +2237,9 @@ void npc_movenpc(struct npc_data *nd, int x, int y)
/*==========================================
* function行解析
*------------------------------------------*/
-static int npc_parse_function (char *w1, char *w2, char *w3, char *w4, char *first_line, FILE *fp, int *lines,const char* file)
+static int npc_parse_function(char* w1, char* w2, char* w3, char* w4, char* first_line, FILE* fp, int* lines, const char* file)
{
- unsigned char *srcbuf, *p;
+ char *srcbuf, *p;
struct script_code *script;
struct script_code *oldscript;
int srcsize = 65536;
@@ -2263,7 +2249,7 @@ static int npc_parse_function (char *w1, char *w2, char *w3, char *w4, char *fir
struct dbt *user_db;
// スクリプトの解析
- srcbuf = (unsigned char *) aMallocA (srcsize*sizeof(char));
+ srcbuf = (char *) aMallocA (srcsize*sizeof(char));
if (strchr(first_line,'{')) {
strcpy(srcbuf, strchr(first_line,'{'));
startline = *lines;
@@ -2318,9 +2304,6 @@ static int npc_parse_function (char *w1, char *w2, char *w3, char *w4, char *fir
// もう使わないのでバッファ解放
aFree(srcbuf);
-
-// printf("function %s => %p\n",p,script);
-
return 0;
}
@@ -2333,7 +2316,7 @@ static int npc_parse_function (char *w1, char *w2, char *w3, char *w4, char *fir
* index points to the index in the mob_list of the map_data cache.
* -1 indicates that it is not stored on the map.
*------------------------------------------*/
-int npc_parse_mob2 (struct spawn_data *mob, int index)
+int npc_parse_mob2(struct spawn_data* mob, int index)
{
int i;
struct mob_data *md;
@@ -2349,7 +2332,7 @@ int npc_parse_mob2 (struct spawn_data *mob, int index)
return 1;
}
-int npc_parse_mob (char *w1, char *w2, char *w3, char *w4)
+int npc_parse_mob(char* w1, char* w2, char* w3, char* w4)
{
int level, num, class_, mode, x,y,xs,ys;
char mapname[MAP_NAME_LENGTH_EXT];
@@ -2483,7 +2466,7 @@ int npc_parse_mob (char *w1, char *w2, char *w3, char *w4)
/*==========================================
* マップフラグ行の解析
*------------------------------------------*/
-static int npc_parse_mapflag (char *w1, char *w2, char *w3, char *w4)
+static int npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4)
{
int m;
char mapname[MAP_NAME_LENGTH_EXT];
@@ -2736,7 +2719,7 @@ static int npc_parse_mapflag (char *w1, char *w2, char *w3, char *w4)
/*==========================================
* Setting up map cells
*------------------------------------------*/
-static int npc_parse_mapcell (char *w1, char *w2, char *w3, char *w4)
+static int npc_parse_mapcell(char* w1, char* w2, char* w3, char* w4)
{
int m, cell, x, y, x0, y0, x1, y1;
char type[24], mapname[MAP_NAME_LENGTH_EXT];
@@ -2855,7 +2838,8 @@ void npc_parsesrcfile(const char* name)
return;
}
-int npc_script_event(TBL_PC* sd, int type) {
+int npc_script_event(TBL_PC* sd, int type)
+{
int i;
if (type < 0 || type >= NPCE_MAX)
return 0;
@@ -2877,13 +2861,13 @@ int npc_script_event(TBL_PC* sd, int type) {
return 0;
}
-static int npc_read_event_script_sub(DBKey key,void *data,va_list ap)
+static int npc_read_event_script_sub(DBKey key, void* data, va_list ap)
{
- const char *p = key.str;
- unsigned char *name = va_arg(ap,unsigned char *);
- struct event_data **event_buf = va_arg(ap,struct event_data**);
- const char **event_name = va_arg(ap,const char **);
- unsigned char *count = va_arg(ap,char *);;
+ const char* p = key.str;
+ char* name = va_arg(ap, char *);
+ struct event_data** event_buf = va_arg(ap, struct event_data**);
+ const char** event_name = va_arg(ap,const char **);
+ unsigned char *count = va_arg(ap, unsigned char *);
if (*count >= UCHAR_MAX) return 0;
@@ -2947,7 +2931,7 @@ void npc_read_event_script(void)
/*==========================================
*
*------------------------------------------*/
-static int npc_cleanup_sub (struct block_list *bl, va_list ap)
+static int npc_cleanup_sub(struct block_list* bl, va_list ap)
{
nullpo_retr(0, bl);
@@ -2963,12 +2947,12 @@ static int npc_cleanup_sub (struct block_list *bl, va_list ap)
return 0;
}
-static int npc_cleanup_dbsub(DBKey key,void * data,va_list ap)
+static int npc_cleanup_dbsub(DBKey key, void* data, va_list ap)
{
return npc_cleanup_sub((struct block_list*)data, 0);
}
-int npc_reload (void)
+int npc_reload(void)
{
struct npc_src_list *nsl;
int m, i;
@@ -3068,7 +3052,7 @@ int do_final_npc(void)
return 0;
}
-static void npc_debug_warps_sub(struct npc_data *nd)
+static void npc_debug_warps_sub(struct npc_data* nd)
{
int m;
if (nd->bl.type != BL_NPC || nd->bl.subtype != WARP || nd->bl.m < 0)
@@ -3102,7 +3086,7 @@ static void npc_debug_warps(void)
}
/*==========================================
- * npc初期化
+ * npc initialization
*------------------------------------------*/
int do_init_npc(void)
{
@@ -3191,14 +3175,14 @@ int do_init_npc(void)
return 0;
}
// [Lance]
-int npc_changename(const char *name, const char *newname, short look)
+int npc_changename(const char* name, const char* newname, short look)
{
- struct npc_data *nd= (struct npc_data *) strdb_remove(npcname_db,(unsigned char*)name);
- if (nd==NULL)
+ struct npc_data* nd = (struct npc_data *) strdb_remove(npcname_db, name);
+ if (nd == NULL)
return 0;
- npc_enable(name,0);
- strcpy(nd->name,newname);
+ npc_enable(name, 0);
+ strcpy(nd->name, newname);
nd->class_ = look;
- npc_enable(newname,1);
+ npc_enable(newname, 1);
return 0;
}