mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-02 09:47:58 +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)
|
switch (stepCount)
|
||||||
{
|
{
|
||||||
|
case -4:
|
||||||
|
return item->ObjectNumber != ID_SMALL_SPIDER;
|
||||||
|
|
||||||
case -3:
|
case -3:
|
||||||
return (item->ObjectNumber != ID_CIVVY &&
|
return (item->ObjectNumber != ID_CIVVY &&
|
||||||
item->ObjectNumber != ID_MP_WITH_STICK &&
|
item->ObjectNumber != ID_MP_WITH_STICK &&
|
||||||
item->ObjectNumber != ID_YETI &&
|
item->ObjectNumber != ID_YETI &&
|
||||||
item->ObjectNumber != ID_LIZARD &&
|
item->ObjectNumber != ID_LIZARD &&
|
||||||
item->ObjectNumber != ID_APE);
|
item->ObjectNumber != ID_APE &&
|
||||||
|
item->ObjectNumber != ID_SMALL_SPIDER);
|
||||||
|
|
||||||
case -2:
|
case -2:
|
||||||
return (item->ObjectNumber != ID_BADDY1 &&
|
return (item->ObjectNumber != ID_BADDY1 &&
|
||||||
|
@ -1171,7 +1175,8 @@ bool IsCreatureVaultAvailable(ItemInfo* item, int stepCount)
|
||||||
item->ObjectNumber != ID_MP_WITH_STICK &&
|
item->ObjectNumber != ID_MP_WITH_STICK &&
|
||||||
item->ObjectNumber != ID_YETI &&
|
item->ObjectNumber != ID_YETI &&
|
||||||
item->ObjectNumber != ID_LIZARD &&
|
item->ObjectNumber != ID_LIZARD &&
|
||||||
item->ObjectNumber != ID_APE);
|
item->ObjectNumber != ID_APE &&
|
||||||
|
item->ObjectNumber != ID_SMALL_SPIDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1189,12 +1194,11 @@ int CreatureVault(short itemNumber, short angle, int vault, int shift)
|
||||||
|
|
||||||
CreatureAnimation(itemNumber, angle, 0);
|
CreatureAnimation(itemNumber, angle, 0);
|
||||||
|
|
||||||
// FIXME: Add vault down animations for Von Croy and baddies.
|
|
||||||
if (item->Floor > (y + CLICK(4.5f)))
|
if (item->Floor > (y + CLICK(4.5f)))
|
||||||
{
|
{
|
||||||
vault = 0;
|
vault = 0;
|
||||||
}
|
}
|
||||||
else if (item->Floor > (y + CLICK(3.5f)))
|
else if (item->Floor > (y + CLICK(3.5f)) && IsCreatureVaultAvailable(item, -4))
|
||||||
{
|
{
|
||||||
vault = -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)
|
void ShivaHit(ItemInfo& target, ItemInfo& source, std::optional<GameVector> pos, int damage, bool isExplosive, int jointIndex)
|
||||||
{
|
{
|
||||||
if (pos.has_value())
|
if (!pos.has_value())
|
||||||
{
|
return;
|
||||||
const auto& player = *GetLaraInfo(&source);
|
|
||||||
const auto& object = Objects[target.ObjectNumber];
|
|
||||||
|
|
||||||
// If guarded, ricochet without damage.
|
const auto& player = *GetLaraInfo(&source);
|
||||||
if ((target.Animation.ActiveState == SHIVA_STATE_WALK_FORWARD_GUARDING ||
|
const auto& object = Objects[target.ObjectNumber];
|
||||||
target.Animation.ActiveState == SHIVA_STATE_GUARD_IDLE))
|
|
||||||
{
|
// If guarded, ricochet without damage.
|
||||||
SoundEffect(SFX_TR4_BADDY_SWORD_RICOCHET, &target.Pose);
|
if ((target.Animation.ActiveState == SHIVA_STATE_WALK_FORWARD_GUARDING ||
|
||||||
TriggerRicochetSpark(*pos, source.Pose.Orientation.y, 3, 0);
|
target.Animation.ActiveState == SHIVA_STATE_GUARD_IDLE))
|
||||||
}
|
{
|
||||||
// Do basic hit effect.
|
SoundEffect(SFX_TR4_BADDY_SWORD_RICOCHET, &target.Pose);
|
||||||
else if (object.hitEffect == HitEffect::Blood)
|
TriggerRicochetSpark(*pos, source.Pose.Orientation.y, 3, 0);
|
||||||
{
|
}
|
||||||
DoBloodSplat(pos->x, pos->y, pos->z, (GetRandomControl() & 3) + 3, source.Pose.Orientation.y, pos->RoomNumber);
|
// Do basic hit effect.
|
||||||
DoItemHit(&target, damage, isExplosive);
|
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