mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-27 22:49:25 +02:00
All CGPickable objects are now fully configurable
This commit is contained in:
@@ -489,148 +489,6 @@ static void loadRandomArtifact(CRandomGenerator & rand, CVisitInfo & info, int t
|
||||
info.reward.artifacts.push_back(artID);
|
||||
}
|
||||
|
||||
CGPickable::CGPickable()
|
||||
{
|
||||
visitMode = VISIT_UNLIMITED;
|
||||
selectMode = SELECT_PLAYER;
|
||||
}
|
||||
|
||||
void CGPickable::initObj(CRandomGenerator & rand)
|
||||
{
|
||||
blockVisit = true;
|
||||
switch(ID)
|
||||
{
|
||||
case Obj::CAMPFIRE:
|
||||
{
|
||||
int givenRes = rand.nextInt(5);
|
||||
int givenAmm = rand.nextInt(4, 6);
|
||||
|
||||
info.resize(1);
|
||||
info[0].reward.resources[givenRes] = givenAmm;
|
||||
info[0].reward.resources[Res::GOLD]= givenAmm * 100;
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT,23);
|
||||
info[0].reward.removeObject = true;
|
||||
break;
|
||||
}
|
||||
case Obj::FLOTSAM:
|
||||
{
|
||||
int type = rand.nextInt(3);
|
||||
switch(type)
|
||||
{
|
||||
case 0:
|
||||
info.resize(1);
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT, 51);
|
||||
info[0].reward.removeObject = true;
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
info.resize(1);
|
||||
info[0].reward.resources[Res::WOOD] = 5;
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT, 52);
|
||||
info[0].reward.removeObject = true;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
info.resize(1);
|
||||
info[0].reward.resources[Res::WOOD] = 5;
|
||||
info[0].reward.resources[Res::GOLD] = 200;
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT, 53);
|
||||
info[0].reward.removeObject = true;
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
info.resize(1);
|
||||
info[0].reward.resources[Res::WOOD] = 10;
|
||||
info[0].reward.resources[Res::GOLD] = 500;
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT, 54);
|
||||
info[0].reward.removeObject = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Obj::SEA_CHEST:
|
||||
{
|
||||
int hlp = rand.nextInt(99);
|
||||
if(hlp < 20)
|
||||
{
|
||||
info.resize(1);
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT, 116);
|
||||
info[0].reward.removeObject = true;
|
||||
}
|
||||
else if(hlp < 90)
|
||||
{
|
||||
info.resize(1);
|
||||
info[0].reward.resources[Res::GOLD] = 1500;
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT, 118);
|
||||
info[0].reward.removeObject = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
info.resize(1);
|
||||
loadRandomArtifact(rand, info[0], 100, 0, 0, 0);
|
||||
info[0].reward.resources[Res::GOLD] = 1000;
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT, 117);
|
||||
info[0].message.addReplacement(MetaString::ART_NAMES, info[0].reward.artifacts.back());
|
||||
info[0].reward.removeObject = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Obj::SHIPWRECK_SURVIVOR:
|
||||
{
|
||||
info.resize(1);
|
||||
loadRandomArtifact(rand, info[0], 55, 20, 20, 5);
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT, 125);
|
||||
info[0].message.addReplacement(MetaString::ART_NAMES, info[0].reward.artifacts.back());
|
||||
info[0].reward.removeObject = true;
|
||||
}
|
||||
break;
|
||||
case Obj::TREASURE_CHEST:
|
||||
{
|
||||
int hlp = rand.nextInt(99);
|
||||
if(hlp >= 95)
|
||||
{
|
||||
info.resize(1);
|
||||
loadRandomArtifact(rand, info[0], 100, 0, 0, 0);
|
||||
info[0].message.addTxt(MetaString::ADVOB_TXT,145);
|
||||
info[0].message.addReplacement(MetaString::ART_NAMES, info[0].reward.artifacts.back());
|
||||
info[0].reward.removeObject = true;
|
||||
return;
|
||||
}
|
||||
else if (hlp >= 65)
|
||||
{
|
||||
onSelect.addTxt(MetaString::ADVOB_TXT,146);
|
||||
info.resize(2);
|
||||
info[0].reward.resources[Res::GOLD] = 2000;
|
||||
info[1].reward.gainedExp = 1500;
|
||||
info[0].reward.removeObject = true;
|
||||
info[1].reward.removeObject = true;
|
||||
}
|
||||
else if(hlp >= 33)
|
||||
{
|
||||
onSelect.addTxt(MetaString::ADVOB_TXT,146);
|
||||
info.resize(2);
|
||||
info[0].reward.resources[Res::GOLD] = 1500;
|
||||
info[1].reward.gainedExp = 1000;
|
||||
info[0].reward.removeObject = true;
|
||||
info[1].reward.removeObject = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
onSelect.addTxt(MetaString::ADVOB_TXT,146);
|
||||
info.resize(2);
|
||||
info[0].reward.resources[Res::GOLD] = 1000;
|
||||
info[1].reward.gainedExp = 500;
|
||||
info[0].reward.removeObject = true;
|
||||
info[1].reward.removeObject = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
CGBonusingObject::CGBonusingObject()
|
||||
|
||||
Reference in New Issue
Block a user