Config::iterator drops = map->world->drops_config.find(util::to_string(this->id)); if (drops != map->world->drops_config.end()) { std::vector<std::string> parts = util::explode(',', static_cast<std::string>((*drops).second)); if (parts.size() > 1) { if (parts.size() % 4 != 0) { Console::Wrn("skipping invalid drop data for NPC #%i", id); return; } this->drops.resize(parts.size() / 4); for (std::size_t i = 0; i < parts.size(); i += 4) { NPC_Drop *drop(new NPC_Drop); drop->id = util::to_int(parts[i]); drop->min = util::to_int(parts[i+1]); drop->max = util::to_int(parts[i+2]); drop->chance = util::to_float(parts[i+3]); this->drops[i/4] = drop; } } }