diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/control/Script.cpp | 8 | ||||
-rw-r--r-- | src/peds/Ped.cpp | 23 | ||||
-rw-r--r-- | src/peds/PlayerPed.cpp | 6 | ||||
-rw-r--r-- | src/peds/Population.cpp | 11 | ||||
-rw-r--r-- | src/vehicles/Vehicle.h | 4 |
5 files changed, 42 insertions, 10 deletions
diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 4ef3821e..5daf12f5 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -2815,7 +2815,11 @@ int8 CRunningScript::ProcessCommands200To299(int32 command) pVehicle->AutoPilot.m_nCarMission = MISSION_CRUISE; pVehicle->bEngineOn = true; pPed->bUsesCollision = false; +#ifdef FIX_BUGS + AnimationId anim = pVehicle->GetDriverAnim(); +#else AnimationId anim = pVehicle->bLowVehicle ? ANIM_CAR_LSIT : ANIM_CAR_SIT; +#endif pPed->m_pVehicleAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, anim, 100.0f); pPed->StopNonPartialAnims(); pPed->m_nZoneLevel = CTheZones::GetLevelFromPosition(pPed->GetPosition()); @@ -4009,7 +4013,11 @@ int8 CRunningScript::ProcessCommands400To499(int32 command) pPed->SetPedState(PED_DRIVING); pVehicle->m_status = STATUS_PHYSICS; pPed->bUsesCollision = false; +#ifdef FIX_BUGS + AnimationId anim = pVehicle->GetDriverAnim(); +#else AnimationId anim = pVehicle->bLowVehicle ? ANIM_CAR_LSIT : ANIM_CAR_SIT; +#endif pPed->m_pVehicleAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, anim, 100.0f); pPed->StopNonPartialAnims(); pPed->m_nZoneLevel = CTheZones::GetLevelFromPosition(pPed->GetPosition()); diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 3e9bfc51..8803b5ec 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -237,7 +237,8 @@ static char PersonalityTypeText[][18] = { "Geek Girl", "Old Girl", "Tough Girl", - "Tramp", + "Tramp Male", + "Tramp Female", "Tourist", "Prostitute", "Criminal", @@ -246,6 +247,8 @@ static char PersonalityTypeText[][18] = { "Psycho", "Steward", "Sports Fan", + "Shopper", + "Old Shopper" }; static char WaitStateText[][16] = { @@ -16662,6 +16665,14 @@ CPed::WarpPedIntoCar(CVehicle *car) car->bEngineOn = true; DMAudio.PlayOneShot(car->m_audioEntityId, SOUND_CAR_ENGINE_START, 1.0f); } + +#ifdef VC_PED_PORTS + RpAnimBlendClumpSetBlendDeltas(GetClump(), ASSOC_PARTIAL, -1000.0f); + + // VC uses AddInCarAnims but we don't have that + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, car->GetDriverAnim(), 100.0f); + RemoveWeaponWhenEnteringVehicle(); +#else if (car->IsBoat()) { m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f); CWeaponInfo *ourWeapon = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType); @@ -16675,6 +16686,8 @@ CPed::WarpPedIntoCar(CVehicle *car) else m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f); } +#endif + StopNonPartialAnims(); if (car->bIsBus) bRenderPedInCar = false; @@ -16904,11 +16917,17 @@ CPed::SetEnterCar_AllClear(CVehicle *car, uint32 doorNode, uint32 doorFlag) m_vecOffsetSeek = doorOpenPos - GetPosition(); m_nPedStateTimer = CTimer::GetTimeInMilliseconds() + 600; if (car->IsBoat()) { - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f); #ifdef VC_PED_PORTS + // VC checks for handling flag, but we can't do that + if(car->GetModelIndex() == MI_SPEEDER) + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f); + else + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f); + PedSetInCarCB(nil, this); m_ped_flagI4 = true; #else + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f); m_pVehicleAnim->SetFinishCallback(PedSetInCarCB, this); #endif if (IsPlayer()) diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 9d4adcef..b459ed84 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -79,7 +79,11 @@ void CPlayerPed::MakeObjectTargettable(int32 handle)
{
for (int i = 0; i < ARRAY_SIZE(m_nTargettableObjects); i++) {
- if (CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]) == nil) {
+ if (
+#ifdef FIX_BUGS
+ m_nTargettableObjects[i] == -1 ||
+#endif
+ CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]) == nil) {
m_nTargettableObjects[i] = handle;
return;
}
diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index 6ffb65ba..6b15d8c7 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -820,15 +820,14 @@ CPopulation::AddPedInCar(CVehicle* car) // FIX: Make peds comfortable while driving car/boat #ifdef FIX_BUGS - if (car->IsBoat()) { - newPed->m_pVehicleAnim = CAnimManager::BlendAnimation(newPed->GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f); - } else if (car->IsVehicle() && ((CVehicle*)car)->bLowVehicle) { - newPed->m_pVehicleAnim = CAnimManager::BlendAnimation(newPed->GetClump(), ASSOCGRP_STD, ANIM_CAR_LSIT, 100.0f); - } else -#endif + { + newPed->m_pVehicleAnim = CAnimManager::BlendAnimation(newPed->GetClump(), ASSOCGRP_STD, car->GetDriverAnim(), 100.0f); + } +#else { newPed->m_pVehicleAnim = CAnimManager::BlendAnimation(newPed->GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f); } +#endif newPed->StopNonPartialAnims(); return newPed; diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index 7e99258c..bd8df694 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -3,6 +3,7 @@ #include "Physical.h" #include "AutoPilot.h" #include "ModelIndices.h" +#include "AnimManager.h" class CPed; class CFire; @@ -269,7 +270,8 @@ public: bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1; } CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); } bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE; } - + AnimationId GetDriverAnim(void) { return IsCar() && bLowVehicle ? ANIM_CAR_LSIT : (IsBoat() && GetModelIndex() != MI_SPEEDER ? ANIM_DRIVE_BOAT : ANIM_CAR_SIT); } + static bool &bWheelsOnlyCheat; static bool &bAllDodosCheat; static bool &bCheat3; |