MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / CreatureKill

Function CreatureKill

TombEngine/Game/control/box.cpp:1106–1147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1104}
1105
1106void CreatureKill(ItemInfo* creatureItem, int creatureAnimNumber, int playerExtraAnimNumber, int creatureState, int playerKillState)
1107{
1108 if (!Objects[ID_LARA_EXTRA_ANIMS].loaded ||
1109 Objects[ID_LARA_EXTRA_ANIMS].Animations.size() <= playerExtraAnimNumber || Objects[ID_LARA_EXTRA_ANIMS].Animations[playerExtraAnimNumber].Keyframes.size() <= 1 ||
1110 Objects[creatureItem->ObjectNumber].Animations.size() <= creatureAnimNumber || Objects[creatureItem->ObjectNumber].Animations[creatureAnimNumber].Keyframes.size() <= 1)
1111 {
1112 TENLog(fmt::format("Impossible to perform kill animation for object {}: animation data missing.", GetObjectName(creatureItem->ObjectNumber)), LogLevel::Warning);
1113 return;
1114 }
1115
1116 auto& playerItem = *LaraItem;
1117 auto& player = GetLaraInfo(playerItem);
1118
1119 SetAnimation(creatureItem, creatureAnimNumber);
1120 SetAnimation(playerItem, ID_LARA_EXTRA_ANIMS, playerExtraAnimNumber);
1121
1122 if (creatureState != NO_VALUE)
1123 creatureItem->Animation.ActiveState = creatureItem->Animation.TargetState = creatureState;
1124
1125 if (playerKillState != NO_VALUE)
1126 playerItem.Animation.ActiveState = playerItem.Animation.TargetState = playerKillState;
1127
1128 playerItem.Pose = creatureItem->Pose;
1129 playerItem.Animation.IsAirborne = false;
1130 playerItem.Animation.Velocity = Vector3::Zero;
1131
1132 if (creatureItem->RoomNumber != playerItem.RoomNumber)
1133 ItemNewRoom(playerItem.Index, creatureItem->RoomNumber);
1134
1135 AnimateItem(playerItem);
1136 playerItem.HitPoints = -1;
1137 player.Control.HandStatus = HandStatus::Busy;
1138 player.Control.Weapon.GunType = LaraWeaponType::None;
1139 player.ExtraAnim = 1;
1140 player.HitDirection = -1;
1141
1142 Camera.pos.RoomNumber = playerItem.RoomNumber;
1143 Camera.flags = CF_FOLLOW_CENTER;
1144 Camera.targetAngle = ANGLE(170.0f);
1145 Camera.targetElevation = ANGLE(-25.0f);
1146 Camera.targetDistance = BLOCK(2);
1147}
1148
1149short CreatureEffect2(ItemInfo* item, const CreatureBiteInfo& bite, short velocity, short angle, std::function<CreatureEffectFunction> func)
1150{

Callers 8

SpearGuardianControlFunction · 0.85
SharkControlFunction · 0.85
YetiControlFunction · 0.85
TRexControlFunction · 0.85
ShivaControlFunction · 0.85
GiantMutantControlFunction · 0.85
SethControlFunction · 0.85
ScorpionControlFunction · 0.85

Calls 7

TENLogFunction · 0.85
SetAnimationFunction · 0.85
ItemNewRoomFunction · 0.85
AnimateItemFunction · 0.85
ANGLEFunction · 0.85
formatFunction · 0.50
sizeMethod · 0.45

Tested by

no test coverage detected