Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions reactivedrop/fgd/swarm.fgd
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,8 @@
3 : "Bait"
4 : "Neutral"
5 : "Combine"
6 : "Robots"
7 : "Incapacitated"
]
damagemultipliersamefaction(float) : "Same Faction Damage Scale" : "1.0" : "Amount to scale damage by when attacked by the faction the bullseye is a member of."
damagemultiplierotherfaction(float) : "Different Faction Damage Scale" : "1.0" : "Amount to scale damage by when attacked by a faction the bullseye is NOT a member of."
Expand Down
2 changes: 1 addition & 1 deletion src/game/server/swarm/asw_marine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4781,7 +4781,7 @@ void CASW_Marine::SetKnockedOut(bool bKnockedOut)
// reactivedrop: setting it to no solid still collides it with aliens
// will try changing collision group
SetCollisionGroup( ASW_COLLISION_GROUP_BOTS );
ChangeFaction( FACTION_NEUTRAL );
ChangeFaction( FACTION_INCAPACITATED );
CTakeDamageInfo info;
info.SetDamageType( DMG_GENERIC );
info.SetDamageForce( vec3_origin );
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/gamerules.h
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ abstract_class CGameRules : public CMemZeroOnNew, public CAutoGameSystemPerFrame
virtual void InitDefaultAIRelationships( void ) { return; }
virtual const char* AIClassText(int classType) { return NULL; }
virtual int NumEntityClasses() const { return LAST_SHARED_ENTITY_CLASS; }
virtual int NumFactions() const { return LAST_SHARED_FACTION; }
virtual int NumFactions() const { return NUM_SHARED_FACTIONS; }

// Healthcharger respawn control
virtual float FlHealthChargerRechargeTime( void ) = 0;// how long until a depleted HealthCharger recharges itself?
Expand Down
9 changes: 6 additions & 3 deletions src/game/shared/shareddefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -898,8 +898,11 @@ enum Class_T
};

// Factions
#define FACTION_NONE 0 // Not assigned a faction. Entities not assigned a faction will not do faction tests.
#define LAST_SHARED_FACTION (FACTION_NONE)
#define NUM_SHARED_FACTIONS (FACTION_NONE + 1)
enum
{
FACTION_NONE = 0, // Not assigned a faction. Entities not assigned a faction will not do faction tests.

NUM_SHARED_FACTIONS,
};

#endif // SHAREDDEFS_H
34 changes: 24 additions & 10 deletions src/game/shared/swarm/asw_gamerules.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4604,40 +4604,54 @@ void CAlienSwarm::InitDefaultAIRelationships()
CBaseCombatCharacter::AllocateDefaultRelationships();

// set up faction relationships
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_MARINES, FACTION_ALIENS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_MARINES, FACTION_MARINES, D_LIKE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_MARINES, FACTION_ALIENS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_MARINES, FACTION_BAIT, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_MARINES, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_MARINES, FACTION_COMBINE, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_MARINES, FACTION_ROBOTS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_MARINES, FACTION_INCAPACITATED, D_LIKE, 0 );

CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ALIENS, FACTION_ALIENS, D_LIKE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ALIENS, FACTION_MARINES, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ALIENS, FACTION_ALIENS, D_LIKE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ALIENS, FACTION_BAIT, D_HATE, 999 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ALIENS, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ALIENS, FACTION_COMBINE, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ALIENS, FACTION_ROBOTS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ALIENS, FACTION_INCAPACITATED, D_NEUTRAL, 0 );

CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_MARINES, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_BAIT, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_ALIENS, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_BAIT, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_COMBINE, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_ROBOTS, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_NEUTRAL, FACTION_INCAPACITATED, D_NEUTRAL, 0 );

CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_COMBINE, D_LIKE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_MARINES, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_BAIT, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_ALIENS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_BAIT, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_COMBINE, D_LIKE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_ROBOTS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_COMBINE, FACTION_INCAPACITATED, D_NEUTRAL, 0 );

CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_ROBOTS, D_LIKE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_MARINES, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_BAIT, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_ALIENS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_BAIT, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_COMBINE, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_ROBOTS, D_LIKE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_ROBOTS, FACTION_INCAPACITATED, D_NEUTRAL, 0 );

// Just like Marines. But Hostiles should be neutral towards undead marines or else they will crowd dead bodies when `rd_allow_revive 1`
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_INCAPACITATED, FACTION_MARINES, D_LIKE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_INCAPACITATED, FACTION_ALIENS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_INCAPACITATED, FACTION_BAIT, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_INCAPACITATED, FACTION_NEUTRAL, D_NEUTRAL, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_INCAPACITATED, FACTION_COMBINE, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_INCAPACITATED, FACTION_ROBOTS, D_HATE, 0 );
CAI_BaseNPC::SetDefaultFactionRelationship(FACTION_INCAPACITATED, FACTION_INCAPACITATED, D_LIKE, 0 );

// Matching HL2 defaults: Wildlife is scared of everything except other wildlife, barnacles (if we ever add them), and invisible NPCs.
for ( int nClass = CLASS_NONE; nClass < LAST_ASW_ENTITY_CLASS; nClass++ )
Expand Down
20 changes: 12 additions & 8 deletions src/game/shared/swarm/asw_gamerules.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,18 @@ class CASW_Powerup;
class CBaseStart;

// Faction defines
#define FACTION_MARINES ( LAST_SHARED_FACTION + 1 )
#define FACTION_ALIENS ( LAST_SHARED_FACTION + 2 )
#define FACTION_BAIT ( LAST_SHARED_FACTION + 3 )
#define FACTION_NEUTRAL ( LAST_SHARED_FACTION + 4 )
#define FACTION_COMBINE ( LAST_SHARED_FACTION + 5 )
#define FACTION_ROBOTS ( LAST_SHARED_FACTION + 6 )
#define LAST_ASW_FACTION (FACTION_ROBOTS)
#define NUM_ASW_FACTIONS (LAST_ASW_FACTION + 1)
enum
{
FACTION_MARINES = NUM_SHARED_FACTIONS,
FACTION_ALIENS,
FACTION_BAIT,
FACTION_NEUTRAL,
FACTION_COMBINE,
FACTION_ROBOTS,
FACTION_INCAPACITATED,

NUM_ASW_FACTIONS,
};

struct StringKeyValue_t
{
Expand Down
Loading