mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-15 00:05:02 +02:00
Unit stack rebalancing rework
- CStackInstance::count is now private with accessor methods - CStackInstance::experience renamed to totalExperience and now stores total stack experience (multiplied by stack size) to reduce rounding errors - CStackInstance::totalExperience is now private with accessors methods - stack experience is now automatically reallocated on stack management - Removed buggy BulkSmartRebalanceStacks pack, that mostly duplicates BulkRebalanceStacks - Renamed BulkSmartSplitStack to BulkSplitAndRebalanceStack to drop unclear "smart" in name - Reworked split-and-rebalance logic to correctly reallocate stack experience
This commit is contained in:
@ -609,7 +609,7 @@ void CGWhirlpool::teleportDialogAnswered(const CGHeroInstance *hero, ui32 answer
|
||||
bool CGWhirlpool::isProtected(const CGHeroInstance * h)
|
||||
{
|
||||
return h->hasBonusOfType(BonusType::WHIRLPOOL_PROTECTION)
|
||||
|| (h->stacksCount() == 1 && h->Slots().begin()->second->count == 1)
|
||||
|| (h->stacksCount() == 1 && h->Slots().begin()->second->getCount() == 1)
|
||||
|| (h->stacksCount() == 0 && h->getCommander() && h->getCommander()->alive);
|
||||
}
|
||||
|
||||
@ -1040,11 +1040,11 @@ void CGSirens::onHeroVisit( const CGHeroInstance * h ) const
|
||||
for (auto i = h->Slots().begin(); i != h->Slots().end(); i++)
|
||||
{
|
||||
// 1-sized stacks are not affected by sirens
|
||||
if (i->second->count == 1)
|
||||
if (i->second->getCount() == 1)
|
||||
continue;
|
||||
|
||||
// tested H3 behavior: 30% (rounded up) of stack drowns
|
||||
TQuantity drown = std::ceil(i->second->count * 0.3);
|
||||
TQuantity drown = std::ceil(i->second->getCount() * 0.3);
|
||||
|
||||
if(drown)
|
||||
{
|
||||
|
Reference in New Issue
Block a user