summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt2
-rw-r--r--src/map/npc.c17
2 files changed, 17 insertions, 2 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index c329b083f..35b0c92cc 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/12/12
+ * Updated npc_event_dequeue to free up your current npc information, and
+ not just the npc_id.
* Modified the skill damage packet and the knockback packets to mimic aegis
sent packets for such skills.
* Removed CART_MASK as OPTION_CART can take care of that.
diff --git a/src/map/npc.c b/src/map/npc.c
index d322fc530..6e39f3a20 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -162,7 +162,21 @@ int npc_event_dequeue(struct map_session_data *sd)
{
nullpo_retr(0, sd);
- sd->npc_id=0;
+ if(sd->npc_id)
+ { //Current script is aborted.
+ if(sd->state.using_fake_npc){
+ clif_clearchar_id(sd->npc_id, 0, sd->fd);
+ sd->state.using_fake_npc = 0;
+ }
+ if (sd->st) {
+ sd->st->pos = -1;
+ script_free_stack(sd->st->stack);
+ aFree(sd->st);
+ sd->st = NULL;
+ }
+ sd->npc_id = 0;
+ }
+
if (!sd->eventqueue[0][0])
return 0; //Nothing to dequeue
@@ -1079,7 +1093,6 @@ int npc_click(struct map_session_data *sd,struct npc_data *nd)
switch(nd->bl.subtype) {
case SHOP:
clif_npcbuysell(sd,nd->bl.id);
- npc_event_dequeue(sd);
break;
case SCRIPT:
run_script(nd->u.scr.script,0,sd->bl.id,nd->bl.id);