sqwarmed/sdk_src/game/server/swarm/asw_triggers.h

170 lines
4.2 KiB
C
Raw Normal View History

2024-08-29 19:18:30 -04:00
#ifndef _INCLUDED_ASW_TRIGGERS_H
#define _INCLUDED_ASW_TRIGGERS_H
#include "triggers.h"
class CASW_Marine;
class CASW_Weapon;
// a trigger just like the trigger_multiple, but has a mapper set (0 to 1) chance of actually firing
class CASW_Chance_Trigger_Multiple : public CBaseTrigger
{
DECLARE_CLASS( CASW_Chance_Trigger_Multiple, CBaseTrigger );
public:
void ChanceMultiTouch(CBaseEntity *pOther);
void ActivateChanceMultiTrigger(CBaseEntity *pActivator);
void Spawn( void );
void MultiWaitOver( void );
DECLARE_DATADESC();
float m_fTriggerChance;
// Outputs
COutputEvent m_OnTrigger;
};
// a trigger with multiple outputs, a randomly chosen one is fired
// has up to 6 random targets
class CASW_Random_Target_Trigger_Multiple : public CBaseTrigger
{
DECLARE_CLASS( CASW_Random_Target_Trigger_Multiple, CBaseTrigger );
public:
void RandomMultiTouch(CBaseEntity *pOther);
void ActivateRandomMultiTrigger(CBaseEntity *pActivator);
void Spawn( void );
void MultiWaitOver( void );
DECLARE_DATADESC();
int m_iNumOutputs;
// Outputs
COutputEvent m_OnTrigger1, m_OnTrigger2, m_OnTrigger3, m_OnTrigger4, m_OnTrigger5, m_OnTrigger6;
};
// same as a trigger multiple, but will fire the 'supplies!' speech when triggered
class CASW_Supplies_Chatter_Trigger : public CBaseTrigger
{
DECLARE_CLASS( CASW_Supplies_Chatter_Trigger, CBaseTrigger );
public:
void SuppliesChatterTouch(CBaseEntity *pOther);
void ActivateSuppliesChatterTrigger(CBaseEntity *pActivator);
void Spawn( void );
void MultiWaitOver( void );
DECLARE_DATADESC();
int m_iNumOutputs;
bool m_bNoAmmo;
// Outputs
COutputEvent m_OnTrigger;
};
// same as a trigger multiple, but will fire the 'supplies!' speech when triggered
class CASW_SynUp_Chatter_Trigger : public CBaseTrigger
{
DECLARE_CLASS( CASW_SynUp_Chatter_Trigger, CBaseTrigger );
public:
void ChatterTouch(CBaseEntity *pOther);
void ActivateChatterTrigger(CBaseEntity *pActivator);
void Spawn( void );
void MultiWaitOver( void );
DECLARE_DATADESC();
// Outputs
COutputEvent m_OnTrigger;
};
// same as a trigger multiple, but will fire the 'supplies!' speech when triggered
class CASW_Marine_Position_Trigger : public CBaseTrigger
{
DECLARE_CLASS( CASW_Marine_Position_Trigger, CBaseTrigger );
public:
void PositionTouch(CBaseEntity *pOther);
void ActivatePositionTrigger(CBaseEntity *pActivator);
void Spawn( void );
void MultiWaitOver( void );
DECLARE_DATADESC();
float m_fDesiredFacing;
float m_fTolerance;
// Outputs
COutputEvent m_OnTrigger;
COutputEvent m_OnMarineInPosition;
COutputEvent m_OnMarineOutOfPosition;
EHANDLE m_hMarine;
};
// entity that fires outputs when a marine is healed
class CASW_Info_Heal : public CLogicalEntity
{
public:
DECLARE_CLASS( CASW_Info_Heal, CLogicalEntity );
DECLARE_DATADESC();
virtual void Spawn();
void OnMarineHealed( CASW_Marine *pHealer, CASW_Marine *pHealed, CASW_Weapon *pHealEquip );
COutputEvent m_MarineHealed;
};
class CASW_Hurt_Nearest_Marine : public CServerOnlyPointEntity
{
public:
DECLARE_CLASS( CASW_Hurt_Nearest_Marine, CServerOnlyPointEntity );
DECLARE_DATADESC();
virtual void InputHurtMarine( inputdata_t &inputdata );
};
DECLARE_AUTO_LIST( IASW_Marines_Past_Area_List );
class CASW_Marines_Past_Area : public CServerOnlyPointEntity, public IASW_Marines_Past_Area_List
{
public:
DECLARE_CLASS( CASW_Marines_Past_Area, CServerOnlyPointEntity );
DECLARE_DATADESC();
CASW_Marines_Past_Area();
void OnMarineKilled( CASW_Marine *pKilledMarine );
virtual void InputMarineInFront( inputdata_t &inputdata );
virtual void InputMarineBehind( inputdata_t &inputdata );
IMPLEMENT_AUTO_LIST_GET();
COutputEvent m_OutputMarinesPast;
CUtlVector<EHANDLE> m_MarinesPast;
int m_iNumMarines;
};
class CASW_Marine_Knockback_Trigger : public CBaseTrigger
{
DECLARE_CLASS( CASW_Marine_Knockback_Trigger, CBaseTrigger );
public:
void KnockbackTriggerTouch(CBaseEntity *pOther);
void Spawn( void );
DECLARE_DATADESC();
// Outputs
COutputEvent m_OnKnockedBack;
Vector m_vecKnockbackDir;
};
#endif // _INCLUDED_ASW_TRIGGERS_H