Revisited Mapbase's custom shared activities and expanded HL2 weapon activities

This commit is contained in:
Blixibon 2021-10-10 20:02:50 -05:00
parent b9f3ac03fa
commit 4cfa6dd22c
3 changed files with 187 additions and 33 deletions

View File

@ -2180,7 +2180,7 @@ void CAI_BaseNPC::InitDefaultActivitySR(void)
ADD_ACTIVITY_TO_SR( ACT_RUN_AIM_AR2 );
ADD_ACTIVITY_TO_SR( ACT_RELOAD_AR2 );
//ADD_ACTIVITY_TO_SR( ACT_RELOAD_AR2_LOW );
ADD_ACTIVITY_TO_SR( ACT_RELOAD_AR2_LOW );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_RELOAD_AR2 );
#endif
@ -2189,6 +2189,11 @@ void CAI_BaseNPC::InitDefaultActivitySR(void)
ADD_ACTIVITY_TO_SR( ACT_COMBINE_THROW_GRENADE );
ADD_ACTIVITY_TO_SR( ACT_COMBINE_AR2_ALTFIRE );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_COMBINE_THROW_GRENADE );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_COMBINE_AR2_ALTFIRE );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_SPECIAL_ATTACK1 );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_SPECIAL_ATTACK2 );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_SIGNAL_ADVANCE );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_SIGNAL_FORWARD );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_SIGNAL_GROUP );
@ -2198,7 +2203,54 @@ void CAI_BaseNPC::InitDefaultActivitySR(void)
ADD_ACTIVITY_TO_SR( ACT_GESTURE_SIGNAL_TAKECOVER );
#endif
#ifdef COMPANION_HOLSTER_WORKAROUND
#ifdef EXPANDED_HL2_WEAPON_ACTIVITIES
ADD_ACTIVITY_TO_SR( ACT_IDLE_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_IDLE_ANGRY_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_WALK_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_RUN_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_WALK_AIM_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_RUN_AIM_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_RELOAD_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK_REVOLVER_LOW );
ADD_ACTIVITY_TO_SR( ACT_RELOAD_REVOLVER_LOW );
ADD_ACTIVITY_TO_SR( ACT_COVER_REVOLVER_LOW );
ADD_ACTIVITY_TO_SR( ACT_RANGE_AIM_REVOLVER_LOW );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_RANGE_ATTACK_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_RELOAD_REVOLVER );
ADD_ACTIVITY_TO_SR( ACT_IDLE_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_IDLE_ANGRY_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_WALK_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_RUN_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_WALK_AIM_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_RUN_AIM_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_RELOAD_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK_CROSSBOW_LOW );
ADD_ACTIVITY_TO_SR( ACT_RELOAD_CROSSBOW_LOW );
ADD_ACTIVITY_TO_SR( ACT_COVER_CROSSBOW_LOW );
ADD_ACTIVITY_TO_SR( ACT_RANGE_AIM_CROSSBOW_LOW );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_RANGE_ATTACK_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_GESTURE_RELOAD_CROSSBOW );
ADD_ACTIVITY_TO_SR( ACT_IDLE_PISTOL_RELAXED );
ADD_ACTIVITY_TO_SR( ACT_IDLE_PISTOL_STIMULATED );
ADD_ACTIVITY_TO_SR( ACT_WALK_PISTOL_RELAXED );
ADD_ACTIVITY_TO_SR( ACT_WALK_PISTOL_STIMULATED );
ADD_ACTIVITY_TO_SR( ACT_RUN_PISTOL_RELAXED );
ADD_ACTIVITY_TO_SR( ACT_RUN_PISTOL_STIMULATED );
ADD_ACTIVITY_TO_SR( ACT_IDLE_AIM_PISTOL_STIMULATED );
ADD_ACTIVITY_TO_SR( ACT_WALK_AIM_PISTOL_STIMULATED );
ADD_ACTIVITY_TO_SR( ACT_RUN_AIM_PISTOL_STIMULATED );
ADD_ACTIVITY_TO_SR( ACT_RANGE_AIM_RPG_LOW );
ADD_ACTIVITY_TO_SR( ACT_RANGE_ATTACK_RPG_LOW );
ADD_ACTIVITY_TO_SR( ACT_RUN_PACKAGE );
ADD_ACTIVITY_TO_SR( ACT_RUN_SUITCASE );
ADD_ACTIVITY_TO_SR( ACT_ARM_RIFLE );
ADD_ACTIVITY_TO_SR( ACT_DISARM_RIFLE );
#endif

View File

@ -2296,7 +2296,7 @@ void ActivityList_RegisterSharedActivities( void )
REGISTER_SHARED_ACTIVITY( ACT_RUN_AIM_AR2 );
REGISTER_SHARED_ACTIVITY( ACT_RELOAD_AR2 );
//REGISTER_SHARED_ACTIVITY( ACT_RELOAD_AR2_LOW );
REGISTER_SHARED_ACTIVITY( ACT_RELOAD_AR2_LOW );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_RELOAD_AR2 );
#endif
@ -2305,6 +2305,11 @@ void ActivityList_RegisterSharedActivities( void )
REGISTER_SHARED_ACTIVITY( ACT_COMBINE_THROW_GRENADE );
REGISTER_SHARED_ACTIVITY( ACT_COMBINE_AR2_ALTFIRE );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_COMBINE_THROW_GRENADE );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_COMBINE_AR2_ALTFIRE );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_SPECIAL_ATTACK1 );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_SPECIAL_ATTACK2 );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_SIGNAL_ADVANCE );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_SIGNAL_FORWARD );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_SIGNAL_GROUP );
@ -2314,7 +2319,54 @@ void ActivityList_RegisterSharedActivities( void )
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_SIGNAL_TAKECOVER );
#endif
#ifdef COMPANION_HOLSTER_WORKAROUND
#ifdef EXPANDED_HL2_WEAPON_ACTIVITIES
REGISTER_SHARED_ACTIVITY( ACT_IDLE_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_IDLE_ANGRY_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_WALK_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_RUN_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_WALK_AIM_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_RUN_AIM_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_RANGE_ATTACK_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_RELOAD_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_RANGE_ATTACK_REVOLVER_LOW );
REGISTER_SHARED_ACTIVITY( ACT_RELOAD_REVOLVER_LOW );
REGISTER_SHARED_ACTIVITY( ACT_COVER_REVOLVER_LOW );
REGISTER_SHARED_ACTIVITY( ACT_RANGE_AIM_REVOLVER_LOW );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_RANGE_ATTACK_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_RELOAD_REVOLVER );
REGISTER_SHARED_ACTIVITY( ACT_IDLE_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_IDLE_ANGRY_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_WALK_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_RUN_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_WALK_AIM_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_RUN_AIM_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_RANGE_ATTACK_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_RELOAD_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_RANGE_ATTACK_CROSSBOW_LOW );
REGISTER_SHARED_ACTIVITY( ACT_RELOAD_CROSSBOW_LOW );
REGISTER_SHARED_ACTIVITY( ACT_COVER_CROSSBOW_LOW );
REGISTER_SHARED_ACTIVITY( ACT_RANGE_AIM_CROSSBOW_LOW );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_RANGE_ATTACK_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_GESTURE_RELOAD_CROSSBOW );
REGISTER_SHARED_ACTIVITY( ACT_IDLE_PISTOL_RELAXED );
REGISTER_SHARED_ACTIVITY( ACT_IDLE_PISTOL_STIMULATED );
REGISTER_SHARED_ACTIVITY( ACT_WALK_PISTOL_RELAXED );
REGISTER_SHARED_ACTIVITY( ACT_WALK_PISTOL_STIMULATED );
REGISTER_SHARED_ACTIVITY( ACT_RUN_PISTOL_RELAXED );
REGISTER_SHARED_ACTIVITY( ACT_RUN_PISTOL_STIMULATED );
REGISTER_SHARED_ACTIVITY( ACT_IDLE_AIM_PISTOL_STIMULATED );
REGISTER_SHARED_ACTIVITY( ACT_WALK_AIM_PISTOL_STIMULATED );
REGISTER_SHARED_ACTIVITY( ACT_RUN_AIM_PISTOL_STIMULATED );
REGISTER_SHARED_ACTIVITY( ACT_RANGE_AIM_RPG_LOW );
REGISTER_SHARED_ACTIVITY( ACT_RANGE_ATTACK_RPG_LOW );
REGISTER_SHARED_ACTIVITY( ACT_RUN_PACKAGE );
REGISTER_SHARED_ACTIVITY( ACT_RUN_SUITCASE );
REGISTER_SHARED_ACTIVITY( ACT_ARM_RIFLE );
REGISTER_SHARED_ACTIVITY( ACT_DISARM_RIFLE );
#endif

View File

@ -13,42 +13,34 @@
#ifdef MAPBASE
// Mapbase adds a few shared activities.
//
// These used to be placed in between existing activities, as outside of the code activities are based off of strings.
// This seemed like a bad idea, but no problems arose at the time.
// I later discovered that apparently some things in MP use the direct integers instead of the enum names.
// I retroactively put all custom activities at the bottom of the enum instead.
// Their placements in activitylist.cpp and ai_activity.cpp have not been changed.
// Mapbase adds many new shared activities, primarily for NPCs.
//
// These are at the bottom of the enum to prevent disruptions in the order of existing activities.
//
// AR2 ACTIVITY FIX
// You know all of those AR2 activities that citizens and combine soldiers have?
// Yeah, those are unused. It appears Valve forgot to implement them.
// Citizens and Combine soldiers have several activities for the SMG1 and AR2 which differ from each other.
// Across both NPCs, there are around 20-40 different AR2 animations. Most of these animations are similar to the
// SMG1 animations, except their hand positions are adjusted to use the AR2 instead.
//
// What could be 20-40 different animations on two different characters are not even defined in code.
// I didn't even realize they were unused until I saw ACT_RELOAD_AR2, so I don't blame them for never realizing this.
// They work surprisingly well for probably never being tested in-game.
// Unfortunately, the vast majority of the AR2 animations in those models are not declared as real activities in
// code. The AR2 instead falls back to its SMG1 animation counterparts.
// This is thought to be an oversight which dates back to late in Half-Life 2's development.
//
// 1 = Add activities directly
// 2 = Add activities as custom activities (todo)
//
// 2 should only be preferable if adding them like this breaks something.
// This preprocessor declares those activities and implements them on the AR2. In-game, they work surprisingly well
// despite presumably never being tested in-game during HL2's development.
#define AR2_ACTIVITY_FIX 1
// COMPANION HOLSTER WORKAROUND
// I introduced a separate holster/unholster animation to male_shared
// and female_shared and I realized it might conflict with Alyx's animation.
//
// I came up with a solution--ACT_ARM_RIFLE and its disarm counterpart--to solve it.
// I didn't think about the fact I could've named them the same as Alyx's so her animations would overwrite it...
// ...so this has been deactivated.
//#define COMPANION_HOLSTER_WORKAROUND 1
// SHARED COMBINE ACTIVITIES
// This turns ACT_COMBINE_AR2_ALTFIRE and ACT_COMBINE_THROW_GRENADE into shared activities.
// This is necessary so other NPCs to use them without having to rely on a bunch of custom activities.
// This turns ACT_COMBINE_AR2_ALTFIRE, ACT_COMBINE_THROW_GRENADE, and their new gesture counterparts into shared activities.
// This is necessary for other NPCs to use them without having to rely on private custom activities declared through the AI definition system.
#define SHARED_COMBINE_ACTIVITIES 1
// EXPANDED HL2 WEAPON ACTIVITIES
// This enables a bunch of new activities for Half-Life 2 weapons, including new 357 animations and readiness activities for pistols.
#define EXPANDED_HL2_WEAPON_ACTIVITIES 1
#endif
#define ACTIVITY_NOT_AVAILABLE -1
@ -2169,7 +2161,7 @@ typedef enum
ACT_RUN_AIM_AR2,
ACT_RELOAD_AR2,
//ACT_RELOAD_AR2_LOW,
ACT_RELOAD_AR2_LOW,
ACT_GESTURE_RELOAD_AR2,
#endif
@ -2178,7 +2170,12 @@ typedef enum
ACT_COMBINE_THROW_GRENADE,
ACT_COMBINE_AR2_ALTFIRE,
// New gesture-based signals as activities for people who want to use them
// Gesture versions for existing Combine signal and grenade activities
ACT_GESTURE_COMBINE_THROW_GRENADE,
ACT_GESTURE_COMBINE_AR2_ALTFIRE,
ACT_GESTURE_SPECIAL_ATTACK1,
ACT_GESTURE_SPECIAL_ATTACK2,
ACT_GESTURE_SIGNAL_ADVANCE,
ACT_GESTURE_SIGNAL_FORWARD,
ACT_GESTURE_SIGNAL_GROUP,
@ -2188,7 +2185,60 @@ typedef enum
ACT_GESTURE_SIGNAL_TAKECOVER,
#endif
#ifdef COMPANION_HOLSTER_WORKAROUND
#ifdef EXPANDED_HL2_WEAPON_ACTIVITIES
// Revolver (357)
ACT_IDLE_REVOLVER,
ACT_IDLE_ANGRY_REVOLVER,
ACT_WALK_REVOLVER,
ACT_RUN_REVOLVER,
ACT_WALK_AIM_REVOLVER,
ACT_RUN_AIM_REVOLVER,
ACT_RANGE_ATTACK_REVOLVER,
ACT_RELOAD_REVOLVER,
ACT_RANGE_ATTACK_REVOLVER_LOW,
ACT_RELOAD_REVOLVER_LOW,
ACT_COVER_REVOLVER_LOW,
ACT_RANGE_AIM_REVOLVER_LOW,
ACT_GESTURE_RANGE_ATTACK_REVOLVER,
ACT_GESTURE_RELOAD_REVOLVER,
// Crossbow
ACT_IDLE_CROSSBOW,
ACT_IDLE_ANGRY_CROSSBOW,
ACT_WALK_CROSSBOW,
ACT_RUN_CROSSBOW,
ACT_WALK_AIM_CROSSBOW,
ACT_RUN_AIM_CROSSBOW,
ACT_RANGE_ATTACK_CROSSBOW,
ACT_RELOAD_CROSSBOW,
ACT_RANGE_ATTACK_CROSSBOW_LOW,
ACT_RELOAD_CROSSBOW_LOW,
ACT_COVER_CROSSBOW_LOW,
ACT_RANGE_AIM_CROSSBOW_LOW,
ACT_GESTURE_RANGE_ATTACK_CROSSBOW,
ACT_GESTURE_RELOAD_CROSSBOW,
// Pistol
ACT_IDLE_PISTOL_RELAXED,
ACT_IDLE_PISTOL_STIMULATED,
ACT_WALK_PISTOL_RELAXED,
ACT_WALK_PISTOL_STIMULATED,
ACT_RUN_PISTOL_RELAXED,
ACT_RUN_PISTOL_STIMULATED,
ACT_IDLE_AIM_PISTOL_STIMULATED,
ACT_WALK_AIM_PISTOL_STIMULATED,
ACT_RUN_AIM_PISTOL_STIMULATED,
// RPG
ACT_RANGE_AIM_RPG_LOW,
ACT_RANGE_ATTACK_RPG_LOW,
// Citizen accessories
ACT_RUN_PACKAGE,
ACT_RUN_SUITCASE,
// Holster/Unholster
ACT_ARM_RIFLE,
ACT_DISARM_RIFLE,
#endif