diff --git a/src/map/map.cpp b/src/map/map.cpp index 139dda02b7..ad37dc96f2 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -3655,7 +3655,7 @@ void map_flags_init(void){ union u_mapflag_args args = {}; mapdata->flag.clear(); - mapdata->flag.reserve(MF_MAX); // Reserve the bucket size + mapdata->flag.resize(MF_MAX, 0); // Resize and define default values mapdata->drop_list.clear(); args.flag_val = 100; @@ -3692,7 +3692,7 @@ void map_data_copy(struct map_data *dst_map, struct map_data *src_map) { memcpy(&dst_map->save, &src_map->save, sizeof(struct point)); memcpy(&dst_map->damage_adjust, &src_map->damage_adjust, sizeof(struct s_skill_damage)); - dst_map->flag.insert(src_map->flag.begin(), src_map->flag.end()); + dst_map->flag = src_map->flag; dst_map->skill_damage.insert(src_map->skill_damage.begin(), src_map->skill_damage.end()); dst_map->skill_duration.insert(src_map->skill_duration.begin(), src_map->skill_duration.end()); @@ -4581,11 +4581,11 @@ int map_getmapflag_sub(int16 m, enum e_mapflag mapflag, union u_mapflag_args *ar case MF_RESTRICTED: return mapdata->zone; case MF_NOLOOT: - return util::umap_get(mapdata->flag, static_cast(MF_NOMOBLOOT), 0) && util::umap_get(mapdata->flag, static_cast(MF_NOMVPLOOT), 0); + return mapdata->flag[MF_NOMOBLOOT] && mapdata->flag[MF_NOMVPLOOT]; case MF_NOPENALTY: - return util::umap_get(mapdata->flag, static_cast(MF_NOEXPPENALTY), 0) && util::umap_get(mapdata->flag, static_cast(MF_NOZENYPENALTY), 0); + return mapdata->flag[MF_NOEXPPENALTY] && mapdata->flag[MF_NOZENYPENALTY]; case MF_NOEXP: - return util::umap_get(mapdata->flag, static_cast(MF_NOBASEEXP), 0) && util::umap_get(mapdata->flag, static_cast(MF_NOJOBEXP), 0); + return mapdata->flag[MF_NOBASEEXP] && mapdata->flag[MF_NOJOBEXP]; case MF_SKILL_DAMAGE: nullpo_retr(-1, args); @@ -4598,10 +4598,10 @@ int map_getmapflag_sub(int16 m, enum e_mapflag mapflag, union u_mapflag_args *ar case SKILLDMG_CASTER: return mapdata->damage_adjust.caster; default: - return util::umap_get(mapdata->flag, static_cast(mapflag), 0); + return mapdata->flag[mapflag]; } default: - return util::umap_get(mapdata->flag, static_cast(mapflag), 0); + return mapdata->flag[mapflag]; } } diff --git a/src/map/map.hpp b/src/map/map.hpp index df6d3a25dd..4481244bca 100644 --- a/src/map/map.hpp +++ b/src/map/map.hpp @@ -784,7 +784,7 @@ struct map_data { int users_pvp; int iwall_num; // Total of invisible walls in this map - std::unordered_map flag; + std::vector flag; struct point save; std::vector drop_list; uint32 zone; // zone number (for item/skill restrictions)