265{
267
268 for (auto i = monster_spawn_map.begin(); i != monster_spawn_map.end(); i++) {
269 std::shared_ptr<monster_spawn_data> msd = (*i).second;
270 if (map_name.compare(msd->map_name) == 0) {
271 if (msd->dead_amount > 0) {
272 for (auto dead_it = msd->dead_spawn_time_list.begin(); dead_it != msd->dead_spawn_time_list.end();) {
273 int64_t dead_monster_spawn_uuid = dead_it->first;
275
276 uint8_t type = 0;
277 uint32_t guid = 0;
278 uint16_t spawn_dataset_id = 0;
279 uint8_t spawn_id = 0;
280
281 sZone->from_uuid(dead_monster_spawn_uuid, type, guid, spawn_dataset_id, spawn_id);
282
283 int64_t since_death_ms = (std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count() - dead_stc.
dead_time);
284
285 int64_t time_to_spawn_ms = dead_stc.
spawn_time - since_death_ms;
286
287 if (time_to_spawn_ms < 0)
288 time_to_spawn_ms = 0;
289
295
296 if (segment_number == 0)
297 return;
298
300
301 std::shared_ptr<Map> map = container->
get_resource_manager().template get_resource<RESOURCE_PRIORITY_PRIMARY, std::string, std::shared_ptr<Map>>(map_name,
nullptr);
302
303 if (map->get_user_count() == 0)
304 return;
305
306 this->
spawn_monster_internal(map, msd->spawn_dataset_id, msd->monster_id, 1, msd->x, msd->y, msd->x_area, msd->y_area);
307 });
308
309 dead_it = msd->dead_spawn_time_list.erase(dead_it);
310 msd->dead_amount--;
311 }
312 }
313
315
316 if (segment_number == 0)
317 return;
318
320
321 std::shared_ptr<Map> map = container->
get_resource_manager().template get_resource<RESOURCE_PRIORITY_PRIMARY, std::string, std::shared_ptr<Map>>(map_name,
nullptr);
322
323 this->
spawn_monster_internal(map, msd->spawn_dataset_id, msd->monster_id, msd->amount - msd->dead_amount, msd->x, msd->y, msd->x_area, msd->y_area);
324 }
325 }
326}
void spawn_monster_internal(std::shared_ptr< Map > map, int spawn_dataset_id, int monster_id, int16_t amount, int16_t x, int16_t y, int16_t x_area, int16_t y_area)
Definition: GameLogicProcess.cpp:352
std::map< Key, Value > get_map() const
Definition: LockedLookupTable.hpp:78