Haybale damage reduction implementation (#5277)
* Haybale damage reduction impl * Update Pawn.cpp
This commit is contained in:
parent
c6de5e9bc5
commit
383867b6b0
@ -423,20 +423,27 @@ void cPawn::HandleFalling(void)
|
|||||||
Damage = static_cast<int>(static_cast<float>(Damage) * 0.33);
|
Damage = static_cast<int>(static_cast<float>(Damage) * 0.33);
|
||||||
}
|
}
|
||||||
|
|
||||||
TakeDamage(dtFalling, nullptr, Damage, static_cast<float>(Damage), 0);
|
|
||||||
|
|
||||||
// Fall particles:
|
// Fall particles:
|
||||||
if (const auto Below = POS_TOINT.addedY(-1); Below.y >= 0)
|
if (const auto Below = POS_TOINT.addedY(-1); Below.y >= 0)
|
||||||
{
|
{
|
||||||
|
const auto BlockBelow = GetWorld()->GetBlock(Below);
|
||||||
|
|
||||||
|
if (BlockBelow == E_BLOCK_HAY_BALE)
|
||||||
|
{
|
||||||
|
Damage = std::clamp(static_cast<int>(static_cast<float>(Damage) * 0.2), 1, 20);
|
||||||
|
}
|
||||||
|
|
||||||
GetWorld()->BroadcastParticleEffect(
|
GetWorld()->BroadcastParticleEffect(
|
||||||
"blockdust",
|
"blockdust",
|
||||||
GetPosition(),
|
GetPosition(),
|
||||||
{ 0, 0, 0 },
|
{ 0, 0, 0 },
|
||||||
(Damage - 1.f) * ((0.3f - 0.1f) / (15.f - 1.f)) + 0.1f, // Map damage (1 - 15) to particle speed (0.1 - 0.3)
|
(Damage - 1.f) * ((0.3f - 0.1f) / (15.f - 1.f)) + 0.1f, // Map damage (1 - 15) to particle speed (0.1 - 0.3)
|
||||||
static_cast<int>((Damage - 1.f) * ((50.f - 20.f) / (15.f - 1.f)) + 20.f), // Map damage (1 - 15) to particle quantity (20 - 50)
|
static_cast<int>((Damage - 1.f) * ((50.f - 20.f) / (15.f - 1.f)) + 20.f), // Map damage (1 - 15) to particle quantity (20 - 50)
|
||||||
{ { GetWorld()->GetBlock(Below), 0 } }
|
{ { BlockBelow, 0 } }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TakeDamage(dtFalling, nullptr, Damage, static_cast<float>(Damage), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_bTouchGround = true;
|
m_bTouchGround = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user