mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-25 22:42:04 +02:00
Fix initialization of gold pile from random resource with fixed amount
This commit is contained in:
@@ -263,6 +263,9 @@ void CGResource::pickRandomObject(CRandomGenerator & rand)
|
|||||||
ID = Obj::RESOURCE;
|
ID = Obj::RESOURCE;
|
||||||
subID = rand.nextInt(EGameResID::WOOD, EGameResID::GOLD);
|
subID = rand.nextInt(EGameResID::WOOD, EGameResID::GOLD);
|
||||||
setType(ID, subID);
|
setType(ID, subID);
|
||||||
|
|
||||||
|
if (subID == EGameResID::GOLD && amount != CGResource::RANDOM_AMOUNT)
|
||||||
|
amount *= CGResource::GOLD_AMOUNT_MULTIPLIER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -275,7 +278,7 @@ void CGResource::initObj(CRandomGenerator & rand)
|
|||||||
switch(resourceID().toEnum())
|
switch(resourceID().toEnum())
|
||||||
{
|
{
|
||||||
case EGameResID::GOLD:
|
case EGameResID::GOLD:
|
||||||
amount = rand.nextInt(5, 10) * 100;
|
amount = rand.nextInt(5, 10) * CGResource::GOLD_AMOUNT_MULTIPLIER;
|
||||||
break;
|
break;
|
||||||
case EGameResID::WOOD: case EGameResID::ORE:
|
case EGameResID::WOOD: case EGameResID::ORE:
|
||||||
amount = rand.nextInt(6, 10);
|
amount = rand.nextInt(6, 10);
|
||||||
|
|||||||
@@ -122,8 +122,9 @@ class DLL_LINKAGE CGResource : public CArmedInstance
|
|||||||
public:
|
public:
|
||||||
using CArmedInstance::CArmedInstance;
|
using CArmedInstance::CArmedInstance;
|
||||||
|
|
||||||
static constexpr ui32 RANDOM_AMOUNT = 0;
|
static constexpr uint32_t RANDOM_AMOUNT = 0;
|
||||||
ui32 amount = RANDOM_AMOUNT; //0 if random
|
static constexpr uint32_t GOLD_AMOUNT_MULTIPLIER = 100;
|
||||||
|
uint32_t amount = RANDOM_AMOUNT; //0 if random
|
||||||
|
|
||||||
MetaString message;
|
MetaString message;
|
||||||
|
|
||||||
|
|||||||
@@ -1315,7 +1315,7 @@ CGObjectInstance * CMapLoaderH3M::readResource(const int3 & mapPosition, std::sh
|
|||||||
if(GameResID(objectTemplate->subid) == GameResID(EGameResID::GOLD))
|
if(GameResID(objectTemplate->subid) == GameResID(EGameResID::GOLD))
|
||||||
{
|
{
|
||||||
// Gold is multiplied by 100.
|
// Gold is multiplied by 100.
|
||||||
object->amount *= 100;
|
object->amount *= CGResource::GOLD_AMOUNT_MULTIPLIER;
|
||||||
}
|
}
|
||||||
reader->skipZero(4);
|
reader->skipZero(4);
|
||||||
return object;
|
return object;
|
||||||
|
|||||||
Reference in New Issue
Block a user