mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-01 09:18:00 +03:00
Added small_spider fix
- Return early on ShivaHit if pos is not valid.
This commit is contained in:
parent
20d0730c1a
commit
8242dcba50
2 changed files with 25 additions and 21 deletions
|
@ -1157,12 +1157,16 @@ bool IsCreatureVaultAvailable(ItemInfo* item, int stepCount)
|
|||
{
|
||||
switch (stepCount)
|
||||
{
|
||||
case -4:
|
||||
return item->ObjectNumber != ID_SMALL_SPIDER;
|
||||
|
||||
case -3:
|
||||
return (item->ObjectNumber != ID_CIVVY &&
|
||||
item->ObjectNumber != ID_MP_WITH_STICK &&
|
||||
item->ObjectNumber != ID_YETI &&
|
||||
item->ObjectNumber != ID_LIZARD &&
|
||||
item->ObjectNumber != ID_APE);
|
||||
item->ObjectNumber != ID_APE &&
|
||||
item->ObjectNumber != ID_SMALL_SPIDER);
|
||||
|
||||
case -2:
|
||||
return (item->ObjectNumber != ID_BADDY1 &&
|
||||
|
@ -1171,7 +1175,8 @@ bool IsCreatureVaultAvailable(ItemInfo* item, int stepCount)
|
|||
item->ObjectNumber != ID_MP_WITH_STICK &&
|
||||
item->ObjectNumber != ID_YETI &&
|
||||
item->ObjectNumber != ID_LIZARD &&
|
||||
item->ObjectNumber != ID_APE);
|
||||
item->ObjectNumber != ID_APE &&
|
||||
item->ObjectNumber != ID_SMALL_SPIDER);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -1189,12 +1194,11 @@ int CreatureVault(short itemNumber, short angle, int vault, int shift)
|
|||
|
||||
CreatureAnimation(itemNumber, angle, 0);
|
||||
|
||||
// FIXME: Add vault down animations for Von Croy and baddies.
|
||||
if (item->Floor > (y + CLICK(4.5f)))
|
||||
{
|
||||
vault = 0;
|
||||
}
|
||||
else if (item->Floor > (y + CLICK(3.5f)))
|
||||
else if (item->Floor > (y + CLICK(3.5f)) && IsCreatureVaultAvailable(item, -4))
|
||||
{
|
||||
vault = -4;
|
||||
}
|
||||
|
|
|
@ -464,24 +464,24 @@ namespace TEN::Entities::Creatures::TR3
|
|||
|
||||
void ShivaHit(ItemInfo& target, ItemInfo& source, std::optional<GameVector> pos, int damage, bool isExplosive, int jointIndex)
|
||||
{
|
||||
if (pos.has_value())
|
||||
{
|
||||
const auto& player = *GetLaraInfo(&source);
|
||||
const auto& object = Objects[target.ObjectNumber];
|
||||
if (!pos.has_value())
|
||||
return;
|
||||
|
||||
// If guarded, ricochet without damage.
|
||||
if ((target.Animation.ActiveState == SHIVA_STATE_WALK_FORWARD_GUARDING ||
|
||||
target.Animation.ActiveState == SHIVA_STATE_GUARD_IDLE))
|
||||
{
|
||||
SoundEffect(SFX_TR4_BADDY_SWORD_RICOCHET, &target.Pose);
|
||||
TriggerRicochetSpark(*pos, source.Pose.Orientation.y, 3, 0);
|
||||
}
|
||||
// Do basic hit effect.
|
||||
else if (object.hitEffect == HitEffect::Blood)
|
||||
{
|
||||
DoBloodSplat(pos->x, pos->y, pos->z, (GetRandomControl() & 3) + 3, source.Pose.Orientation.y, pos->RoomNumber);
|
||||
DoItemHit(&target, damage, isExplosive);
|
||||
}
|
||||
const auto& player = *GetLaraInfo(&source);
|
||||
const auto& object = Objects[target.ObjectNumber];
|
||||
|
||||
// If guarded, ricochet without damage.
|
||||
if ((target.Animation.ActiveState == SHIVA_STATE_WALK_FORWARD_GUARDING ||
|
||||
target.Animation.ActiveState == SHIVA_STATE_GUARD_IDLE))
|
||||
{
|
||||
SoundEffect(SFX_TR4_BADDY_SWORD_RICOCHET, &target.Pose);
|
||||
TriggerRicochetSpark(*pos, source.Pose.Orientation.y, 3, 0);
|
||||
}
|
||||
// Do basic hit effect.
|
||||
else if (object.hitEffect == HitEffect::Blood)
|
||||
{
|
||||
DoBloodSplat(pos->x, pos->y, pos->z, (GetRandomControl() & 3) + 3, source.Pose.Orientation.y, pos->RoomNumber);
|
||||
DoItemHit(&target, damage, isExplosive);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue