Browse Source

Changed Sirens behavior to match H3 logic

Ivan Savenko 2 years ago
parent
commit
7e8516f927
1 changed files with 7 additions and 1 deletions
  1. 7 1
      lib/mapObjects/MiscObjects.cpp

+ 7 - 1
lib/mapObjects/MiscObjects.cpp

@@ -1956,7 +1956,13 @@ void CGSirens::onHeroVisit( const CGHeroInstance * h ) const
 
 		for (auto i = h->Slots().begin(); i != h->Slots().end(); i++)
 		{
-			TQuantity drown = static_cast<TQuantity>(i->second->count * 0.3);
+			// 1-sized stacks are not affected by sirens
+			if (i->second->count == 1)
+				continue;
+
+			// tested H3 behavior: 30% (rounded up) of stack drowns
+			TQuantity drown = std::ceil(i->second->count * 0.3);
+
 			if(drown)
 			{
 				cb->changeStackCount(StackLocation(h, i->first), -drown);