From ec5fcb3e7c730b13e6adc39c91494fcda6145b2a Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Sat, 23 Dec 2023 00:35:51 +0200 Subject: [PATCH] Do not ignore 'canRefuse' flag for select mode 'first' and 'random' --- lib/mapObjects/CRewardableObject.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/mapObjects/CRewardableObject.cpp b/lib/mapObjects/CRewardableObject.cpp index ce8399115..aa945d043 100644 --- a/lib/mapObjects/CRewardableObject.cpp +++ b/lib/mapObjects/CRewardableObject.cpp @@ -111,11 +111,20 @@ void CRewardableObject::onHeroVisit(const CGHeroInstance *h) const selectRewardWthMessage(h, rewards, configuration.onSelect); break; case Rewardable::SELECT_FIRST: // give first available - grantRewardWithMessage(h, rewards.front(), true); + if (configuration.canRefuse) + selectRewardWthMessage(h, { rewards.front() }, configuration.info.at(rewards.front()).message); + else + grantRewardWithMessage(h, rewards.front(), true); break; case Rewardable::SELECT_RANDOM: // give random - grantRewardWithMessage(h, *RandomGeneratorUtil::nextItem(rewards, cb->gameState()->getRandomGenerator()), true); + { + ui32 rewardIndex = *RandomGeneratorUtil::nextItem(rewards, cb->gameState()->getRandomGenerator()); + if (configuration.canRefuse) + selectRewardWthMessage(h, { rewardIndex }, configuration.info.at(rewardIndex).message); + else + grantRewardWithMessage(h, rewardIndex, true); break; + } } break; }