diff --git a/src/map/instance.cpp b/src/map/instance.cpp index f56c768bc7..3a9004d6bd 100644 --- a/src/map/instance.cpp +++ b/src/map/instance.cpp @@ -616,7 +616,7 @@ int instance_create(int owner_id, const char *name, e_instance_mode mode) { clif_instance_create(instance_id, instance_wait.id.size()); instance_subscription_timer(0,0,0,0); - ShowInfo("[Instance] Created: %s (%d).\n", name, instance_id); + ShowInfo("[Instance] Created: %s (%d)\n", name, instance_id); // Start the instance timer on instance creation instance_startkeeptimer(entry, instance_id); @@ -708,11 +708,13 @@ int instance_addmap(int instance_id) { * Returns an instance map ID * @param m: Source map ID * @param instance_id: Instance to search - * @return Map ID in this instance + * @return Map ID in this instance or -1 on failure */ int16 instance_mapid(int16 m, int instance_id) { - if(m < 0) { + const char *name = map_mapid2mapname(m); + + if (name == nullptr) { ShowError("instance_mapid: Map ID %d does not exist.\n", m); return -1; } @@ -722,18 +724,17 @@ int16 instance_mapid(int16 m, int instance_id) if(!idata || idata->state != INSTANCE_BUSY) return -1; - const char *iname = map_mapid2mapname(m); - for (const auto &it : idata->map) { if (it.src_m == m) { - char alt_name[MAP_NAME_LENGTH]; + char iname[MAP_NAME_LENGTH], alt_name[MAP_NAME_LENGTH]; + + strcpy(iname, name); if (!(strchr(iname, '@')) && strlen(iname) > 8) { - memmove((void*)iname, iname + (strlen(iname) - 9), strlen(iname)); - snprintf(alt_name, sizeof(alt_name), "%d#%s", instance_id, iname); - } - else - snprintf(alt_name, sizeof(alt_name), "%.3d%s", instance_id, iname); + memmove(iname, iname + (strlen(iname) - 9), strlen(iname)); + snprintf(alt_name, sizeof(alt_name), "%d#%s", (instance_id % 1000), iname); + } else + snprintf(alt_name, sizeof(alt_name), "%.3d%s", (instance_id % 1000), iname); return map_mapname2mapid(alt_name); } } @@ -847,7 +848,7 @@ bool instance_destroy(int instance_id) if( idata->regs.arrays ) idata->regs.arrays->destroy(idata->regs.arrays, script_free_array_db); - ShowInfo("[Instance] Destroyed %d.\n", instance_id); + ShowInfo("[Instance] Destroyed: %s (%d)\n", instance_db.find(idata->id)->name.c_str(), instance_id); instances.erase(instance_id); diff --git a/src/map/map.cpp b/src/map/map.cpp index fbee5a8c7e..6227ffb4ed 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -2703,7 +2703,7 @@ int map_addinstancemap(int src_m, int instance_id) if(strlen(name) > 20) { // against buffer overflow - ShowError("map_addinstancemap: can't add long map name \"%s\"\n", name); + ShowError("map_addinstancemap: Map name \"%s\" is too long.\n", name); return -2; } @@ -2732,7 +2732,7 @@ int map_addinstancemap(int src_m, int instance_id) // Alter the name // Due to this being custom we only worry about preserving as many characters as necessary for accurate map distinguishing // This also allows us to maintain complete independence with main map functions - if ((strchr(iname, '@') == NULL) && strlen(iname) > 8) { + if ((strchr(iname, '@') == nullptr) && strlen(iname) > 8) { memmove(iname, iname + (strlen(iname) - 9), strlen(iname)); snprintf(dst_map->name, sizeof(dst_map->name), "%d#%s", (instance_id % 1000), iname); } else @@ -2766,12 +2766,12 @@ int map_addinstancemap(int src_m, int instance_id) dst_map->block_mob = (struct block_list **)aCalloc(1,size); dst_map->index = mapindex_addmap(-1, dst_map->name); - dst_map->channel = NULL; + dst_map->channel = nullptr; dst_map->mob_delete_timer = INVALID_TIMER; map_data_copy(dst_map, src_map); - ShowInfo("[Instance] Created map '%s' ('%d') from map '%s' ('%d')\n", dst_map->name, dst_map->m, name, src_map->m); + ShowInfo("[Instance] Created map '%s' (%d) from '%s' (%d).\n", dst_map->name, dst_map->m, name, src_map->m); map_addmap2db(dst_map);