mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
- Implemented map object limit which should also distribute the objects evenly
- Fixed Magic Well limit of 1 per zone
This commit is contained in:
parent
8471d32334
commit
1cabc8f7f4
@ -401,6 +401,7 @@
|
||||
"object" : {
|
||||
"index" : 0,
|
||||
"rmg" : {
|
||||
"zoneLimit" : 1,
|
||||
"value" : 250,
|
||||
"rarity" : 100
|
||||
}
|
||||
|
@ -1606,6 +1606,8 @@ void CRmgTemplateZone::addAllPossibleObjects (CMapGenerator* gen)
|
||||
ObjectInfo oi;
|
||||
oi.maxPerMap = std::numeric_limits<ui32>().max();
|
||||
|
||||
int numZones = gen->getZones().size();
|
||||
|
||||
for (auto primaryID : VLC->objtypeh->knownObjects())
|
||||
{
|
||||
for (auto secondaryID : VLC->objtypeh->knownSubObjects(primaryID))
|
||||
@ -1621,10 +1623,12 @@ void CRmgTemplateZone::addAllPossibleObjects (CMapGenerator* gen)
|
||||
{
|
||||
return VLC->objtypeh->getHandlerFor(temp.id, temp.subid)->create(temp);
|
||||
};
|
||||
oi.value = handler->getRMGInfo().value;
|
||||
oi.probability = handler->getRMGInfo().rarity;
|
||||
auto rmgInfo = handler->getRMGInfo();
|
||||
oi.value = rmgInfo.value;
|
||||
oi.probability = rmgInfo.rarity;
|
||||
oi.templ = temp;
|
||||
oi.maxPerZone = handler->getRMGInfo().zoneLimit;
|
||||
oi.maxPerZone = rmgInfo.zoneLimit;
|
||||
vstd::amin (oi.maxPerZone, rmgInfo.mapLimit / numZones); //simple, but should distribute objects evenly on large maps
|
||||
possibleObjects.push_back (oi);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user