Skip to content

Commit e51f41e

Browse files
committed
Solider has 30 percent chance to not die if he has an armor and is hit by a catapult (losing his armor)
1 parent 158a82b commit e51f41e

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

libs/s25main/buildings/nobMilitary.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,12 +1444,18 @@ void nobMilitary::HitOfCatapultStone()
14441444
// Ein Soldat weniger, falls es noch welche gibt
14451445
if(!troops.empty())
14461446
{
1447-
std::unique_ptr<nofPassiveSoldier> soldier = std::move(*troops.begin());
1448-
helpers::pop_front(troops);
1449-
// Shortcut for Die(): No need to remove from world as it is inside and we can delete it right away
1450-
soldier->RemoveFromInventory();
1451-
soldier->LeftBuilding();
1452-
soldier->Destroy();
1447+
// 30 percent chance to not die if the soldier has an armor
1448+
bool die = !(*troops.begin())->HasArmor() || (RANDOM_RAND(99) < 70);
1449+
if(die)
1450+
{
1451+
std::unique_ptr<nofPassiveSoldier> soldier = std::move(*troops.begin());
1452+
helpers::pop_front(troops);
1453+
// Shortcut for Die(): No need to remove from world as it is inside and we can delete it right away
1454+
soldier->RemoveFromInventory();
1455+
soldier->LeftBuilding();
1456+
soldier->Destroy();
1457+
} else
1458+
(*troops.begin())->SetArmor(false);
14531459
}
14541460

14551461
// If there are troops left, order some more, else this will be destroyed

0 commit comments

Comments
 (0)