mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-28 23:06:24 +02:00
Treasure piles should always be accessible.
Boosted treasure value for better overview.
This commit is contained in:
parent
1746ab8c12
commit
e4ea6727b7
@ -10,7 +10,7 @@
|
||||
{
|
||||
"type" : "playerStart", "size" : 1, "owner" : 1,
|
||||
"playerTowns" : { "castles" : 1 }, "neutralTowns" : { "towns" : 1 }, "townsAreSameType" : true,
|
||||
"treasure" : {"min" : 1000, "max": 3000}
|
||||
"treasure" : {"min" : 1500, "max": 3000}
|
||||
},
|
||||
"2" :
|
||||
{
|
||||
@ -33,7 +33,7 @@
|
||||
"5" :
|
||||
{
|
||||
"type" : "treasure", "size" : 2, "terrainTypes" : [ "sand" ], "neutralTowns" : { "castles" : 1 },
|
||||
"treasure" : {"min" : 5000, "max": 10000}
|
||||
"treasure" : {"min" : 9000, "max": 10000}
|
||||
}
|
||||
},
|
||||
"connections" :
|
||||
@ -65,7 +65,7 @@
|
||||
"3" :
|
||||
{
|
||||
"type" : "treasure", "size" : 2, "neutralTowns" : { "towns" : 1 }, "townTypeLikeZone" : "1",
|
||||
"treasure" : {"min" : 1500, "max": 4000}
|
||||
"treasure" : {"min" : 2000, "max": 4000}
|
||||
},
|
||||
"4" :
|
||||
{
|
||||
@ -75,7 +75,7 @@
|
||||
"5" :
|
||||
{
|
||||
"type" : "treasure", "size" : 3, "neutralTowns" : { "castles" : 1 }, "terrainTypes" : [ "sand" ],
|
||||
"treasure" : {"min" : 6000, "max": 12000}
|
||||
"treasure" : {"min" : 11000, "max": 12000}
|
||||
}
|
||||
},
|
||||
"connections" :
|
||||
@ -98,7 +98,7 @@
|
||||
{
|
||||
"type" : "playerStart", "size" : 3, "owner" : 1,
|
||||
"playerTowns" : { "castles" : 1 },
|
||||
"treasure" : {"min" : 300, "max": 3000}
|
||||
"treasure" : {"min" : 1000, "max": 2000}
|
||||
},
|
||||
"2" :
|
||||
{
|
||||
@ -118,7 +118,7 @@
|
||||
"7" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "2", "treasureLikeZone" : 4 },
|
||||
"8" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "3", "treasureLikeZone" : 4 },
|
||||
"9" : { "type" : "treasure", "size" : 1, "terrainTypeLikeZone" : "3", "treasureLikeZone" : 4 },
|
||||
"10" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treasure" : {"min" : 10000, "max": 25000} },
|
||||
"10" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treasure" : {"min" : 21000, "max": 25000} },
|
||||
"11" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treasureLikeZone" : 10 },
|
||||
"12" : { "type" : "treasure", "size" : 1, "neutralTowns" : { "towns" : 1 }, "treasureLikeZone" : 10 }
|
||||
},
|
||||
|
@ -543,9 +543,24 @@ bool CRmgTemplateZone::createTreasurePile (CMapGenerator* gen, int3 &pos)
|
||||
{
|
||||
placeObject(gen, treasure.second, treasure.first);
|
||||
}
|
||||
guardPos = *RandomGeneratorUtil::nextItem(boundary, gen->rand);
|
||||
|
||||
std::vector<int3> accessibleTiles; //we can't place guard in dead-end of zone, make sure that at least one neightbouring tile is possible and not blocked
|
||||
for (auto tile : boundary)
|
||||
{
|
||||
bool possible = false;
|
||||
gen->foreach_neighbour(tile, [gen, &accessibleTiles, &possible, boundary](int3 pos)
|
||||
{
|
||||
if (gen->isPossible(pos) && !vstd::contains(boundary, pos)) //do not check tiles that are going to be blocked
|
||||
possible = true;
|
||||
});
|
||||
if (possible)
|
||||
accessibleTiles.push_back(tile);
|
||||
}
|
||||
guardPos = *RandomGeneratorUtil::nextItem(accessibleTiles, gen->rand);
|
||||
|
||||
if (addMonster(gen, guardPos, currentValue))
|
||||
{//block only if object is guarded
|
||||
|
||||
for (auto tile : boundary)
|
||||
{
|
||||
if (gen->isPossible(tile))
|
||||
|
Loading…
Reference in New Issue
Block a user