summaryrefslogtreecommitdiffstats
path: root/src/peds
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/peds/Ped.h7
-rw-r--r--src/peds/PedAI.cpp4
-rw-r--r--src/peds/PedFight.cpp21
-rw-r--r--src/peds/PlayerPed.cpp12
4 files changed, 27 insertions, 17 deletions
diff --git a/src/peds/Ped.h b/src/peds/Ped.h
index c2f417c4..92cb8eff 100644
--- a/src/peds/Ped.h
+++ b/src/peds/Ped.h
@@ -1009,6 +1009,13 @@ public:
return GetPrimaryFireAnim(weapon);
}
+ static AnimationId Get3rdFireAnim(CWeaponInfo* weapon) {
+ if (!!weapon->m_bCop3rd)
+ return ANIM_WEAPON_FIRE_3RD;
+ else
+ return (AnimationId)0;
+ }
+
static AnimationId GetFireAnimGround(CWeaponInfo* weapon, bool kickFloorIfNone = true) {
if (!!weapon->m_bGround2nd)
return ANIM_WEAPON_CROUCHFIRE;
diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp
index 88d0a091..d5705a2f 100644
--- a/src/peds/PedAI.cpp
+++ b/src/peds/PedAI.cpp
@@ -5901,11 +5901,11 @@ CPed::Duck(void)
CWeaponInfo *weapon = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType);
CAnimBlendAssociation *attackAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCH);
if (!attackAssoc) {
- if(!!weapon->m_bCrouchFire)
+ if(GetCrouchFireAnim(weapon))
attackAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weapon));
}
if (!attackAssoc) {
- if(!!weapon->m_bReload)
+ if(GetCrouchReloadAnim(weapon))
attackAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchReloadAnim(weapon));
}
if (!attackAssoc) {
diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp
index 855a0f1f..3a4e785a 100644
--- a/src/peds/PedFight.cpp
+++ b/src/peds/PedFight.cpp
@@ -472,20 +472,20 @@ CPed::ClearAttackByRemovingAnim(void)
CAnimBlendAssociation *weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetPrimaryFireAnim(weapon));
if (!weaponAssoc) {
- if (!!weapon->m_bCrouchFire)
+ if (GetCrouchFireAnim(weapon))
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weapon));
}
if (!weaponAssoc) {
- if(!!weapon->m_bFinish3rd)
+ if(GetFinishingAttackAnim(weapon))
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetFinishingAttackAnim(weapon));
}
if (!weaponAssoc) {
- if(!!weapon->m_bUse2nd)
+ if(GetSecondFireAnim(weapon))
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetSecondFireAnim(weapon));
}
if (!weaponAssoc) {
- if(!!weapon->m_bCop3rd)
- weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_SPECIAL);
+ if(Get3rdFireAnim(weapon))
+ weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), Get3rdFireAnim(weapon));
}
if (weaponAssoc) {
weaponAssoc->blendDelta = -8.0f;
@@ -507,10 +507,10 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg)
if (ped->m_nPedState != PED_ATTACK) {
if (ped->bIsDucking && ped->IsPedInControl()) {
- if (currentWeapon->m_bReload) {
+ if (GetCrouchReloadAnim(currentWeapon)) {
reloadAnimAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), GetCrouchReloadAnim(currentWeapon));
}
- if (currentWeapon->m_bCrouchFire && attackAssoc) {
+ if (GetCrouchFireAnim(currentWeapon) && attackAssoc) {
if (attackAssoc->animId == GetCrouchFireAnim(currentWeapon) && !reloadAnimAssoc) {
newAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_CROUCH, 8.0f);
newAnim->SetCurrentTime(newAnim->hierarchy->totalLength);
@@ -527,11 +527,12 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg)
newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_THROWABLE_THROW);
}
newAnim->SetFinishCallback(FinishedAttackCB, ped);
+
} else if (ped->bIsDucking && ped->bCrouchWhenShooting) {
- if (currentWeapon->m_bReload) {
+ if (GetCrouchReloadAnim(currentWeapon)) {
reloadAnimAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), GetCrouchReloadAnim(currentWeapon));
}
- if (currentWeapon->m_bCrouchFire && attackAssoc) {
+ if (GetCrouchFireAnim(currentWeapon) && attackAssoc) {
if (attackAssoc->animId == GetCrouchFireAnim(currentWeapon) && !reloadAnimAssoc) {
newAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_CROUCH, 8.0f);
newAnim->SetCurrentTime(newAnim->hierarchy->totalLength);
@@ -1957,7 +1958,7 @@ CPed::EndFight(uint8 endType)
RestorePreviousState();
CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCHRELOAD);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
if (animAssoc)
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp
index 60499ccd..04f98366 100644
--- a/src/peds/PlayerPed.cpp
+++ b/src/peds/PlayerPed.cpp
@@ -341,7 +341,7 @@ CPlayerPed::SetRealMoveAnim(void)
if (!curIdleAssoc)
curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE);
if (!curIdleAssoc)
- curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCHRELOAD);
+ curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
if (!((curRunStopAssoc && curRunStopAssoc->IsRunning()) || (curRunStopRAssoc && curRunStopRAssoc->IsRunning()))) {
@@ -414,7 +414,7 @@ CPlayerPed::SetRealMoveAnim(void)
delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED);
CAnimBlendAssociation *fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE);
if (!fightIdleAnim)
- fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCHRELOAD);
+ fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
delete fightIdleAnim;
delete curSprintAssoc;
@@ -1337,13 +1337,14 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed)
if (CCamera::m_bUseMouse3rdPerson && CCamera::bFreeCam &&
m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) {
+#define CAN_AIM_WITH_ARM (weaponInfo->m_bCanAimWithArm && !bIsDucking && !bCrouchWhenShooting)
// Weapons except throwable and melee ones
if (weaponInfo->m_nWeaponSlot > 2) {
- if ((padUsed->GetTarget() && weaponInfo->m_bCanAimWithArm) || padUsed->GetWeapon()) {
+ if ((padUsed->GetTarget() && CAN_AIM_WITH_ARM) || padUsed->GetWeapon()) {
float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation);
// On this one we can rotate arm.
- if (weaponInfo->m_bCanAimWithArm) {
+ if (CAN_AIM_WITH_ARM) {
if (!padUsed->GetWeapon()) { // making this State != ATTACK still stops it after attack. Re-start it immediately!
SetWeaponLockOnTarget(nil);
bIsPointingGunAt = false; // to not stop after attack
@@ -1372,9 +1373,10 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed)
m_fRotationCur += (limitedRotDest - m_fRotationCur) / 2;
}
}
- } else if (weaponInfo->m_bCanAimWithArm && m_nPedState != PED_ATTACK)
+ } else if (CAN_AIM_WITH_ARM && m_nPedState != PED_ATTACK)
ClearPointGunAt();
}
+#undef CAN_AIM_WITH_ARM
}
if (changedHeadingRate == 1) {
changedHeadingRate = 0;