diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2009-11-24 17:15:23 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2009-11-24 17:15:23 +0000 |
commit | 23658c125f6c9e44b2015043d8dd913c687b9df6 (patch) | |
tree | 9747bd392a144f5e935293116ac87682e3b18105 | |
parent | 67b396bd39ce915cd2f93029080aff0cab9aec85 (diff) | |
download | hercules-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.c | 11 | ||||
-rw-r--r-- | src/map/map.c | 2 | ||||
-rw-r--r-- | src/map/npc.c | 2 | ||||
-rw-r--r-- | src/map/script.c | 7 |
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; } |