mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-02-04 17:50:30 +03:00
Fixed various NPC holster-related issues
This commit is contained in:
parent
3d5f73b8be
commit
1c6b0679f8
@ -7782,7 +7782,7 @@ int CAI_BaseNPC::HolsterWeapon( void )
|
|||||||
if ( IsWeaponHolstered() )
|
if ( IsWeaponHolstered() )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
#ifdef COMPANION_HOLSTER_WORKAROUND
|
#ifdef MAPBASE
|
||||||
Activity activity = TranslateActivity( ACT_DISARM );
|
Activity activity = TranslateActivity( ACT_DISARM );
|
||||||
int iHolsterGesture = FindGestureLayer( activity );
|
int iHolsterGesture = FindGestureLayer( activity );
|
||||||
if ( iHolsterGesture != -1 )
|
if ( iHolsterGesture != -1 )
|
||||||
@ -7838,7 +7838,7 @@ int CAI_BaseNPC::UnholsterWeapon( void )
|
|||||||
if ( !IsWeaponHolstered() )
|
if ( !IsWeaponHolstered() )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
#ifdef COMPANION_HOLSTER_WORKAROUND
|
#ifdef MAPBASE
|
||||||
Activity activity = TranslateActivity( ACT_ARM );
|
Activity activity = TranslateActivity( ACT_ARM );
|
||||||
int iHolsterGesture = FindGestureLayer( activity );
|
int iHolsterGesture = FindGestureLayer( activity );
|
||||||
#else
|
#else
|
||||||
@ -7867,13 +7867,12 @@ int CAI_BaseNPC::UnholsterWeapon( void )
|
|||||||
{
|
{
|
||||||
SetActiveWeapon( GetWeapon(i) );
|
SetActiveWeapon( GetWeapon(i) );
|
||||||
|
|
||||||
#ifdef COMPANION_HOLSTER_WORKAROUND
|
#ifdef MAPBASE
|
||||||
int iLayer = AddGesture( activity, true );
|
int iLayer = AddGesture( TranslateActivity( ACT_ARM ), true );
|
||||||
//iLayer = AddGesture( ACT_GESTURE_ARM, true );
|
|
||||||
#else
|
#else
|
||||||
int iLayer = AddGesture( ACT_ARM, true );
|
int iLayer = AddGesture( ACT_ARM, true );
|
||||||
//iLayer = AddGesture( ACT_GESTURE_ARM, true );
|
|
||||||
#endif
|
#endif
|
||||||
|
//iLayer = AddGesture( ACT_GESTURE_ARM, true );
|
||||||
|
|
||||||
if (iLayer != -1)
|
if (iLayer != -1)
|
||||||
{
|
{
|
||||||
@ -8052,6 +8051,26 @@ bool CAI_BaseNPC::DoUnholster( void )
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Returns true if the NPC should be unholstering their weapon
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
bool CAI_BaseNPC::ShouldUnholsterWeapon( void )
|
||||||
|
{
|
||||||
|
return GetState() == NPC_STATE_COMBAT;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Returns true if the NPC can unholster their weapon
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
bool CAI_BaseNPC::CanUnholsterWeapon( void )
|
||||||
|
{
|
||||||
|
// Don't unholster during special navigation
|
||||||
|
if ( GetNavType() == NAV_JUMP || GetNavType() == NAV_CLIMB )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return IsWeaponHolstered();
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Purpose: Give the NPC in question the weapon specified
|
// Purpose: Give the NPC in question the weapon specified
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
@ -1731,8 +1731,8 @@ public:
|
|||||||
virtual bool DoHolster(void);
|
virtual bool DoHolster(void);
|
||||||
virtual bool DoUnholster(void);
|
virtual bool DoUnholster(void);
|
||||||
|
|
||||||
virtual bool ShouldUnholsterWeapon() { return GetState() == NPC_STATE_COMBAT; }
|
virtual bool ShouldUnholsterWeapon();
|
||||||
virtual bool CanUnholsterWeapon() { return IsWeaponHolstered(); }
|
virtual bool CanUnholsterWeapon();
|
||||||
|
|
||||||
void InputGiveWeaponHolstered( inputdata_t &inputdata );
|
void InputGiveWeaponHolstered( inputdata_t &inputdata );
|
||||||
void InputChangeWeapon( inputdata_t &inputdata );
|
void InputChangeWeapon( inputdata_t &inputdata );
|
||||||
|
@ -3899,6 +3899,15 @@ int CNPC_MetroPolice::SelectScheduleNoDirectEnemy()
|
|||||||
return SCHED_METROPOLICE_SMASH_PROP;
|
return SCHED_METROPOLICE_SMASH_PROP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
// If you see your enemy and your weapon is holstered, you're probably about to arm yourself.
|
||||||
|
// Wait and don't just charge in
|
||||||
|
if ( IsWeaponHolstered() && HasCondition(COND_SEE_ENEMY) )
|
||||||
|
{
|
||||||
|
return SCHED_COMBAT_FACE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return SCHED_METROPOLICE_CHASE_ENEMY;
|
return SCHED_METROPOLICE_CHASE_ENEMY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,6 +156,11 @@ acttable_t CWeaponAR2::m_acttable[] =
|
|||||||
{ ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_SMG1, true },
|
{ ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_SMG1, true },
|
||||||
// { ACT_RANGE_ATTACK2, ACT_RANGE_ATTACK_AR2_GRENADE, true },
|
// { ACT_RANGE_ATTACK2, ACT_RANGE_ATTACK_AR2_GRENADE, true },
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef EXPANDED_HL2_WEAPON_ACTIVITIES
|
||||||
|
{ ACT_ARM, ACT_ARM_RIFLE, false },
|
||||||
|
{ ACT_DISARM, ACT_DISARM_RIFLE, false },
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
IMPLEMENT_ACTTABLE(CWeaponAR2);
|
IMPLEMENT_ACTTABLE(CWeaponAR2);
|
||||||
|
@ -697,6 +697,9 @@ acttable_t CWeaponCrossbow::m_acttable[] =
|
|||||||
{ ACT_RANGE_AIM_LOW, ACT_RANGE_AIM_CROSSBOW_LOW, false },
|
{ ACT_RANGE_AIM_LOW, ACT_RANGE_AIM_CROSSBOW_LOW, false },
|
||||||
{ ACT_RELOAD_LOW, ACT_RELOAD_CROSSBOW_LOW, false },
|
{ ACT_RELOAD_LOW, ACT_RELOAD_CROSSBOW_LOW, false },
|
||||||
{ ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_CROSSBOW, true },
|
{ ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_CROSSBOW, true },
|
||||||
|
|
||||||
|
{ ACT_ARM, ACT_ARM_RIFLE, false },
|
||||||
|
{ ACT_DISARM, ACT_DISARM_RIFLE, false },
|
||||||
#else
|
#else
|
||||||
{ ACT_WALK_AIM, ACT_WALK_AIM_RIFLE, true },
|
{ ACT_WALK_AIM, ACT_WALK_AIM_RIFLE, true },
|
||||||
{ ACT_WALK_CROUCH, ACT_WALK_CROUCH_RIFLE, true },
|
{ ACT_WALK_CROUCH, ACT_WALK_CROUCH_RIFLE, true },
|
||||||
|
@ -1415,6 +1415,11 @@ acttable_t CWeaponRPG::m_acttable[] =
|
|||||||
{ ACT_RUN, ACT_RUN_RPG, true },
|
{ ACT_RUN, ACT_RUN_RPG, true },
|
||||||
{ ACT_RUN_CROUCH, ACT_RUN_CROUCH_RPG, true },
|
{ ACT_RUN_CROUCH, ACT_RUN_CROUCH_RPG, true },
|
||||||
{ ACT_COVER_LOW, ACT_COVER_LOW_RPG, true },
|
{ ACT_COVER_LOW, ACT_COVER_LOW_RPG, true },
|
||||||
|
|
||||||
|
#ifdef EXPANDED_HL2_WEAPON_ACTIVITIES
|
||||||
|
{ ACT_ARM, ACT_ARM_RIFLE, false },
|
||||||
|
{ ACT_DISARM, ACT_DISARM_RIFLE, false },
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
IMPLEMENT_ACTTABLE(CWeaponRPG);
|
IMPLEMENT_ACTTABLE(CWeaponRPG);
|
||||||
|
@ -153,6 +153,11 @@ acttable_t CWeaponShotgun::m_acttable[] =
|
|||||||
{ ACT_RANGE_ATTACK1_LOW, ACT_RANGE_ATTACK_SHOTGUN_LOW, true },
|
{ ACT_RANGE_ATTACK1_LOW, ACT_RANGE_ATTACK_SHOTGUN_LOW, true },
|
||||||
{ ACT_RELOAD_LOW, ACT_RELOAD_SHOTGUN_LOW, false },
|
{ ACT_RELOAD_LOW, ACT_RELOAD_SHOTGUN_LOW, false },
|
||||||
{ ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_SHOTGUN, false },
|
{ ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_SHOTGUN, false },
|
||||||
|
|
||||||
|
#ifdef EXPANDED_HL2_WEAPON_ACTIVITIES
|
||||||
|
{ ACT_ARM, ACT_ARM_RIFLE, false },
|
||||||
|
{ ACT_DISARM, ACT_DISARM_RIFLE, false },
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
IMPLEMENT_ACTTABLE(CWeaponShotgun);
|
IMPLEMENT_ACTTABLE(CWeaponShotgun);
|
||||||
|
@ -93,11 +93,6 @@ acttable_t CWeaponSMG1::m_acttable[] =
|
|||||||
|
|
||||||
{ ACT_WALK, ACT_WALK_RIFLE, true },
|
{ ACT_WALK, ACT_WALK_RIFLE, true },
|
||||||
{ ACT_WALK_AIM, ACT_WALK_AIM_RIFLE, true },
|
{ ACT_WALK_AIM, ACT_WALK_AIM_RIFLE, true },
|
||||||
|
|
||||||
#ifdef EXPANDED_HL2_WEAPON_ACTIVITIES
|
|
||||||
{ ACT_ARM, ACT_ARM_RIFLE, false },
|
|
||||||
{ ACT_DISARM, ACT_DISARM_RIFLE, false },
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Readiness activities (not aiming)
|
// Readiness activities (not aiming)
|
||||||
{ ACT_IDLE_RELAXED, ACT_IDLE_SMG1_RELAXED, false },//never aims
|
{ ACT_IDLE_RELAXED, ACT_IDLE_SMG1_RELAXED, false },//never aims
|
||||||
@ -139,6 +134,11 @@ acttable_t CWeaponSMG1::m_acttable[] =
|
|||||||
{ ACT_RANGE_AIM_LOW, ACT_RANGE_AIM_SMG1_LOW, false },
|
{ ACT_RANGE_AIM_LOW, ACT_RANGE_AIM_SMG1_LOW, false },
|
||||||
{ ACT_RELOAD_LOW, ACT_RELOAD_SMG1_LOW, false },
|
{ ACT_RELOAD_LOW, ACT_RELOAD_SMG1_LOW, false },
|
||||||
{ ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_SMG1, true },
|
{ ACT_GESTURE_RELOAD, ACT_GESTURE_RELOAD_SMG1, true },
|
||||||
|
|
||||||
|
#ifdef EXPANDED_HL2_WEAPON_ACTIVITIES
|
||||||
|
{ ACT_ARM, ACT_ARM_RIFLE, false },
|
||||||
|
{ ACT_DISARM, ACT_DISARM_RIFLE, false },
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
IMPLEMENT_ACTTABLE(CWeaponSMG1);
|
IMPLEMENT_ACTTABLE(CWeaponSMG1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user