summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-11-24 17:15:23 +0000
committerultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-11-24 17:15:23 +0000
commit23658c125f6c9e44b2015043d8dd913c687b9df6 (patch)
tree9747bd392a144f5e935293116ac87682e3b18105
parent67b396bd39ce915cd2f93029080aff0cab9aec85 (diff)
downloadhercules-23658c125f6c9e44b2015043d8dd913c687b9df6.tar.gz
hercules-23658c125f6c9e44b2015043d8dd913c687b9df6.tar.bz2
hercules-23658c125f6c9e44b2015043d8dd913c687b9df6.tar.xz
hercules-23658c125f6c9e44b2015043d8dd913c687b9df6.zip
Fixed instances not initializing after reloadscript (bugreport:3522).
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14167 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/map/instance.c11
-rw-r--r--src/map/map.c2
-rw-r--r--src/map/npc.c2
-rw-r--r--src/map/script.c7
4 files changed, 13 insertions, 9 deletions
diff --git a/src/map/instance.c b/src/map/instance.c
index 8c8f9e2fd..454f92e98 100644
--- a/src/map/instance.c
+++ b/src/map/instance.c
@@ -214,12 +214,9 @@ int instance_map_npcsub(struct block_list* bl, va_list args)
void instance_init(int instance_id)
{
int i;
- if( !instance_id ) return;
- if( instance[instance_id].state != INSTANCE_IDLE )
- {
- ShowError("instance_init: instance already initialited.\n");
- return;
- }
+
+ if( !instance_id )
+ return; // nothing to do
for( i = 0; i < instance[instance_id].num_map; i++ )
map_foreachinmap(instance_map_npcsub, map[instance[instance_id].map[i]].instance_src_map, BL_NPC, instance[instance_id].map[i]);
@@ -314,7 +311,7 @@ void instance_destroy(int instance_id)
time_t now = time(NULL);
if( !instance_id || instance[instance_id].state == INSTANCE_FREE )
- return;
+ return; // nothing to do
if( instance[instance_id].progress_timeout && instance[instance_id].progress_timeout <= now )
type = 1;
diff --git a/src/map/map.c b/src/map/map.c
index 7488a5a15..7f8a72cd2 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -3371,7 +3371,7 @@ void do_final(void)
mapit_free(iter);
for( i = 0; i < MAX_INSTANCE; i++ )
- if( instance[i].state != INSTANCE_FREE ) instance_destroy(i);
+ instance_destroy(i);
id_db->foreach(id_db,cleanup_db_sub);
chrif_char_reset_offline();
diff --git a/src/map/npc.c b/src/map/npc.c
index 2a92a0e1b..6a3af6d40 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -3347,7 +3347,7 @@ int npc_reload(void)
npc_id - npc_new_min, npc_warp, npc_shop, npc_script, npc_mob, npc_cache_mob, npc_delay_mob);
for( i = 0; i < ARRAYLENGTH(instance); ++i )
- if( instance[i].instance_id ) instance_init(instance[i].instance_id);
+ instance_init(instance[i].instance_id);
//Re-read the NPC Script Events cache.
npc_read_event_script();
diff --git a/src/map/script.c b/src/map/script.c
index 57b11f305..fac794ba4 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -14004,6 +14004,13 @@ BUILDIN_FUNC(instance_set_timeout)
BUILDIN_FUNC(instance_init)
{
int instance_id = script_getnum(st, 2);
+
+ if( instance[instance_id].state != INSTANCE_IDLE )
+ {
+ ShowError("instance_init: instance already initialized.\n");
+ return 0;
+ }
+
instance_init(instance_id);
return 0;
}