mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-01-27 06:07:56 +03:00
Added backup activities to players
This commit is contained in:
parent
2d5e6f4adb
commit
b9a46bc4e0
@ -2727,8 +2727,7 @@ bool CBaseCombatCharacter::Weapon_CanUse( CBaseCombatWeapon *pWeapon )
|
||||
#ifdef MAPBASE
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Uses an activity from a different weapon when the activity we were originally looking for does not exist on this character.
|
||||
// Created to give NPCs the ability to use weapons they are not otherwise allowed to use.
|
||||
// Right now, everyone falls back to the SMG act table.
|
||||
// This gives NPCs and players the ability to use weapons they are otherwise unable to use.
|
||||
//-----------------------------------------------------------------------------
|
||||
Activity CBaseCombatCharacter::Weapon_BackupActivity( Activity activity, bool weaponTranslationWasRequired, CBaseCombatWeapon *pSpecificWeapon )
|
||||
{
|
||||
@ -2740,8 +2739,9 @@ Activity CBaseCombatCharacter::Weapon_BackupActivity( Activity activity, bool we
|
||||
if (!pWeapon->SupportsBackupActivity(activity))
|
||||
return activity;
|
||||
|
||||
// Sometimes, the NPC is supposed to use the default activity. Return that if the weapon translation was "not required" and we have an original activity.
|
||||
if (!weaponTranslationWasRequired && GetModelPtr()->HaveSequenceForActivity(activity))
|
||||
// Sometimes, a NPC is supposed to use the default activity. Return that if the weapon translation was "not required" and we have an original activity.
|
||||
// Don't do this with players.
|
||||
if (!weaponTranslationWasRequired && GetModelPtr()->HaveSequenceForActivity(activity) && !IsPlayer())
|
||||
{
|
||||
return activity;
|
||||
}
|
||||
@ -2754,7 +2754,7 @@ Activity CBaseCombatCharacter::Weapon_BackupActivity( Activity activity, bool we
|
||||
{
|
||||
if ( activity == pTable->baseAct )
|
||||
{
|
||||
// Don't pick SMG animations we don't actually have an animation for.
|
||||
// Don't pick backup activities we don't actually have an animation for.
|
||||
if (GetModelPtr() ? !GetModelPtr()->HaveSequenceForActivity(pTable->weaponAct) : false)
|
||||
{
|
||||
return activity;
|
||||
|
@ -7817,39 +7817,19 @@ void CBasePlayer::Weapon_Equip( CBaseCombatWeapon *pWeapon )
|
||||
//-----------------------------------------------------------------------------
|
||||
Activity CBasePlayer::Weapon_TranslateActivity( Activity baseAct, bool *pRequired )
|
||||
{
|
||||
#ifdef HL2_DLL
|
||||
// HAAAAAAAAAAAAAACKS!
|
||||
if (GetActiveWeapon())
|
||||
Activity weaponTranslation = BaseClass::Weapon_TranslateActivity( baseAct, pRequired );
|
||||
|
||||
if ( GetModelPtr() && !GetModelPtr()->HaveSequenceForActivity(weaponTranslation) )
|
||||
{
|
||||
int translated = baseAct;
|
||||
int iActOffset = (baseAct - ACT_HL2MP_IDLE);
|
||||
// This is used so players can fall back to backup activities in the same way NPCs in Mapbase can
|
||||
Activity backupActivity = Weapon_BackupActivity(baseAct, pRequired);
|
||||
if ( baseAct != backupActivity && GetModelPtr()->HaveSequenceForActivity(backupActivity) )
|
||||
return backupActivity;
|
||||
|
||||
string_t iszClassname = GetActiveWeapon()->m_iClassname;
|
||||
if (iszClassname == gm_isz_class_Pistol || iszClassname == gm_isz_class_357)
|
||||
translated = (ACT_HL2MP_IDLE_PISTOL + iActOffset);
|
||||
else if (iszClassname == gm_isz_class_SMG1)
|
||||
translated = (ACT_HL2MP_IDLE_SMG1 + iActOffset);
|
||||
else if (iszClassname == gm_isz_class_AR2)
|
||||
translated = (ACT_HL2MP_IDLE_AR2 + iActOffset);
|
||||
else if (iszClassname == gm_isz_class_Shotgun)
|
||||
translated = (ACT_HL2MP_IDLE_SHOTGUN + iActOffset);
|
||||
else if (iszClassname == gm_isz_class_RPG)
|
||||
translated = (ACT_HL2MP_IDLE_RPG + iActOffset);
|
||||
else if (iszClassname == gm_isz_class_Grenade)
|
||||
translated = (ACT_HL2MP_IDLE_GRENADE + iActOffset);
|
||||
else if (iszClassname == gm_isz_class_Physcannon)
|
||||
translated = (ACT_HL2MP_IDLE_PHYSGUN + iActOffset);
|
||||
else if (iszClassname == gm_isz_class_Crossbow)
|
||||
translated = (ACT_HL2MP_IDLE_CROSSBOW + iActOffset);
|
||||
else if (iszClassname == gm_isz_class_Crowbar || iszClassname == gm_isz_class_Stunstick)
|
||||
translated = (ACT_HL2MP_IDLE_MELEE + iActOffset);
|
||||
|
||||
if (translated != baseAct)
|
||||
return (Activity)translated;
|
||||
return baseAct;
|
||||
}
|
||||
#endif
|
||||
|
||||
return BaseClass::Weapon_TranslateActivity( baseAct, pRequired );
|
||||
return weaponTranslation;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user