1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

Fix object clearing

This commit is contained in:
nordsoft
2023-05-04 15:03:18 +04:00
parent 92dcfd1f68
commit 9984351302
3 changed files with 6 additions and 22 deletions

View File

@@ -322,7 +322,6 @@ void CTownRewardableBuilding::newTurn(CRandomGenerator & rand) const
} }
if(configuration.resetParameters.visitors) if(configuration.resetParameters.visitors)
{ {
cb->setObjProperty(town->id, ObjProperty::REWARD_CLEARED, indexOnTV);
cb->setObjProperty(town->id, ObjProperty::STRUCTURE_CLEAR_VISITORS, indexOnTV); cb->setObjProperty(town->id, ObjProperty::STRUCTURE_CLEAR_VISITORS, indexOnTV);
} }
} }
@@ -344,9 +343,6 @@ void CTownRewardableBuilding::setProperty(ui8 what, ui32 val)
case ObjProperty::REWARD_SELECT: case ObjProperty::REWARD_SELECT:
selectedReward = val; selectedReward = val;
break; break;
case ObjProperty::REWARD_CLEARED:
onceVisitableObjectCleared = val;
break;
} }
} }
@@ -360,12 +356,6 @@ void CTownRewardableBuilding::blockingDialogAnswered(const CGHeroInstance *hero,
if(visitors.find(hero->id) != visitors.end()) if(visitors.find(hero->id) != visitors.end())
return; // query not for this building return; // query not for this building
if(answer == 0)
{
cb->setObjProperty(town->id, ObjProperty::STRUCTURE_CLEAR_VISITORS, indexOnTV);
return; // player refused
}
if(answer > 0 && answer-1 < configuration.info.size()) if(answer > 0 && answer-1 < configuration.info.size())
{ {
auto list = getAvailableRewards(hero, Rewardable::EEventType::EVENT_FIRST_VISIT); auto list = getAvailableRewards(hero, Rewardable::EEventType::EVENT_FIRST_VISIT);
@@ -397,7 +387,7 @@ bool CTownRewardableBuilding::wasVisitedBefore(const CGHeroInstance * contextHer
case Rewardable::VISIT_UNLIMITED: case Rewardable::VISIT_UNLIMITED:
return false; return false;
case Rewardable::VISIT_ONCE: case Rewardable::VISIT_ONCE:
return onceVisitableObjectCleared; return !visitors.empty();
case Rewardable::VISIT_PLAYER: case Rewardable::VISIT_PLAYER:
return false; //not supported return false; //not supported
case Rewardable::VISIT_BONUS: case Rewardable::VISIT_BONUS:

View File

@@ -110,8 +110,6 @@ class DLL_LINKAGE CTownRewardableBuilding : public CGTownBuilding, public Reward
/// reward selected by player, no serialize /// reward selected by player, no serialize
ui16 selectedReward = 0; ui16 selectedReward = 0;
bool onceVisitableObjectCleared = false;
std::set<ObjectInstanceID> visitors; std::set<ObjectInstanceID> visitors;
bool wasVisitedBefore(const CGHeroInstance * contextHero) const; bool wasVisitedBefore(const CGHeroInstance * contextHero) const;
@@ -139,7 +137,6 @@ public:
{ {
h & static_cast<CGTownBuilding&>(*this); h & static_cast<CGTownBuilding&>(*this);
h & static_cast<Rewardable::Interface&>(*this); h & static_cast<Rewardable::Interface&>(*this);
h & onceVisitableObjectCleared;
h & visitors; h & visitors;
} }
}; };

View File

@@ -71,9 +71,6 @@ void CGTownInstance::setPropertyDer(ui8 what, ui32 val)
case ObjProperty::REWARD_RANDOMIZE: case ObjProperty::REWARD_RANDOMIZE:
bonusingBuildings[val]->setProperty(ObjProperty::REWARD_RANDOMIZE, 0); bonusingBuildings[val]->setProperty(ObjProperty::REWARD_RANDOMIZE, 0);
break; break;
case ObjProperty::REWARD_CLEARED:
bonusingBuildings[val]->setProperty(ObjProperty::REWARD_CLEARED, false);
break;
} }
} }
CGTownInstance::EFortLevel CGTownInstance::fortLevel() const //0 - none, 1 - fort, 2 - citadel, 3 - castle CGTownInstance::EFortLevel CGTownInstance::fortLevel() const //0 - none, 1 - fort, 2 - citadel, 3 - castle
@@ -550,7 +547,7 @@ void CGTownInstance::newTurn(CRandomGenerator & rand) const
TQuantity count = creatureGrowth(i); TQuantity count = creatureGrowth(i);
if (!count) // no dwelling if (!count) // no dwelling
count = VLC->creh->objects[c]->getGrowth(); count = VLC->creatures()->getByIndex(c)->getGrowth();
{//no lower tiers or above current month {//no lower tiers or above current month