summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorLance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-14 12:57:50 +0000
committerLance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-14 12:57:50 +0000
commit3b800b8ffa7b6d2a21e4c66d830871a8cf51eaf1 (patch)
tree2d37f74ab98fd5d953b2f6e57ca4aca49d2f2d03 /src/map
parent8add7789e56d8f40024cd68f2fdf647245f33a11 (diff)
downloadhercules-3b800b8ffa7b6d2a21e4c66d830871a8cf51eaf1.tar.gz
hercules-3b800b8ffa7b6d2a21e4c66d830871a8cf51eaf1.tar.bz2
hercules-3b800b8ffa7b6d2a21e4c66d830871a8cf51eaf1.tar.xz
hercules-3b800b8ffa7b6d2a21e4c66d830871a8cf51eaf1.zip
* Bugfix on fake npc
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6585 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r--src/map/clif.c8
-rw-r--r--src/map/map.h2
-rw-r--r--src/map/npc.c19
-rw-r--r--src/map/pc.c2
4 files changed, 22 insertions, 9 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index bb7ba3287..6ce6c6e59 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -763,13 +763,19 @@ int clif_clearchar_delay(unsigned int tick, struct block_list *bl, int type) {
*------------------------------------------
*/
int clif_clearchar_id(int id, int type, int fd) {
- unsigned char buf[16];
+ /*unsigned char buf[16];
WBUFW(buf,0) = 0x80;
WBUFL(buf,2) = id;
WBUFB(buf,6) = type;
WFIFOHEAD(fd, packet_len_table[0x80]);
memcpy(WFIFOP(fd,0), buf, 7);
+ WFIFOSET(fd, packet_len_table[0x80]);*/
+
+ WFIFOHEAD(fd, packet_len_table[0x80]);
+ WFIFOW(fd,0) = 0x80;
+ WFIFOL(fd,2) = id;
+ WFIFOB(fd,6) = (char)type; // Why use int for a char in the first place?
WFIFOSET(fd, packet_len_table[0x80]);
return 0;
diff --git a/src/map/map.h b/src/map/map.h
index 18e159163..042058885 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -1412,4 +1412,6 @@ typedef struct pet_data TBL_PET;
extern int lowest_gm_level;
extern char main_chat_nick[16];
+int fake_npc_id;
+
#endif
diff --git a/src/map/npc.c b/src/map/npc.c
index c463b0282..931a205c8 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -1076,14 +1076,19 @@ int npc_scriptcont(struct map_session_data *sd,int id)
ShowWarning("npc_scriptcont: sd->npc_id (%d) is not id (%d).\n", sd->npc_id, id);
return 1;
}
- if (npc_checknear(sd,id)){
- ShowWarning("npc_scriptcont: failed npc_checknear test.\n");
- return 1;
- }
- nd=(struct npc_data *)map_id2bl(id);
+ if(sd->npc_id != fake_npc_id){ // Not item script
+ if (npc_checknear(sd,id)){
+ ShowWarning("npc_scriptcont: failed npc_checknear test.\n");
+ return 1;
+ }
+
+ nd=(struct npc_data *)map_id2bl(id);
- sd->npc_pos=run_script(nd->u.scr.script,sd->npc_pos,sd->bl.id,id);
+ sd->npc_pos=run_script(nd->u.scr.script,sd->npc_pos,sd->bl.id,id);
+ } else { // Item script, continue execution...
+ sd->npc_pos=run_script(sd->npc_scriptroot,sd->npc_pos,sd->bl.id,id);
+ }
return 0;
}
@@ -2920,7 +2925,7 @@ int do_init_npc(void)
add_timer_func_list(npc_timerevent,"npc_timerevent");
// Init dummy NPC
- //dummy_npc_id = npc_get_new_npc_id();
+ fake_npc_id = npc_get_new_npc_id();
return 0;
}
diff --git a/src/map/pc.c b/src/map/pc.c
index c3da30b6a..ad3d758c3 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -2704,7 +2704,7 @@ int pc_useitem(struct map_session_data *sd,int n)
}
sd->canuseitem_tick= tick + battle_config.item_use_interval; //Update item use time.
- run_script(script,0,sd->bl.id,0);
+ run_script(script,0,sd->bl.id,fake_npc_id);
potion_flag = 0;
return 1;
}