Skip to content

Commit

Permalink
API: CGrenade::BounceTouch and CGrenade::TumbleThink
Browse files Browse the repository at this point in the history
  • Loading branch information
techhex committed Jan 7, 2024
1 parent 15df1a9 commit db459b2
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 2 deletions.
3 changes: 3 additions & 0 deletions regamedll/dlls/API/CAPI_Impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,9 @@ GAMEHOOK_REGISTRY(CSGameRules_SendDeathMessage);
GAMEHOOK_REGISTRY(CBasePlayer_PlayerDeathThink);
GAMEHOOK_REGISTRY(CBasePlayer_Observer_Think);

GAMEHOOK_REGISTRY(CGrenade_BounceTouch);
GAMEHOOK_REGISTRY(CGrenade_TumbleThink);

int CReGameApi::GetMajorVersion() {
return REGAMEDLL_API_VERSION_MAJOR;
}
Expand Down
14 changes: 14 additions & 0 deletions regamedll/dlls/API/CAPI_Impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -745,6 +745,14 @@ typedef IHookChainRegistryClassImpl<void, CBasePlayer> CReGameHookRegistry_CBase
typedef IHookChainClassImpl<void, CBasePlayer> CReGameHook_CBasePlayer_Observer_Think;
typedef IHookChainRegistryClassImpl<void, CBasePlayer> CReGameHookRegistry_CBasePlayer_Observer_Think;

// CGrenade::BounceTouch hook
typedef IHookChainClassImpl<void, CGrenade, CBaseEntity *> CReGameHook_CGrenade_BounceTouch;
typedef IHookChainRegistryClassImpl<void, CGrenade, CBaseEntity *> CReGameHookRegistry_CGrenade_BounceTouch;

// CGrenade::TumbleThink hook
typedef IHookChainClassImpl<void, CGrenade> CReGameHook_CGrenade_TumbleThink;
typedef IHookChainRegistryClassImpl<void, CGrenade> CReGameHookRegistry_CGrenade_TumbleThink;

class CReGameHookchains: public IReGameHookchains {
public:
// CBasePlayer virtual
Expand Down Expand Up @@ -906,6 +914,9 @@ class CReGameHookchains: public IReGameHookchains {
CReGameHookRegistry_CBasePlayer_PlayerDeathThink m_CBasePlayer_PlayerDeathThink;
CReGameHookRegistry_CBasePlayer_Observer_Think m_CBasePlayer_Observer_Think;

CReGameHookRegistry_CGrenade_BounceTouch m_CGrenade_BounceTouch;
CReGameHookRegistry_CGrenade_TumbleThink m_CGrenade_TumbleThink;

public:
virtual IReGameHookRegistry_CBasePlayer_Spawn *CBasePlayer_Spawn();
virtual IReGameHookRegistry_CBasePlayer_Precache *CBasePlayer_Precache();
Expand Down Expand Up @@ -1064,6 +1075,9 @@ class CReGameHookchains: public IReGameHookchains {

virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink();
virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think();

virtual IReGameHookRegistry_CGrenade_BounceTouch *CGrenade_BounceTouch();
virtual IReGameHookRegistry_CGrenade_TumbleThink *CGrenade_TumbleThink();
};

extern CReGameHookchains g_ReGameHookchains;
Expand Down
8 changes: 6 additions & 2 deletions regamedll/dlls/ggrenade.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -670,7 +670,9 @@ void CGrenade::DangerSoundThink()
}
}

void CGrenade::BounceTouch(CBaseEntity *pOther)
LINK_HOOK_CLASS_VOID_CHAIN(CGrenade, BounceTouch, (CBaseEntity *pOther), pOther)

void CGrenade::__API_HOOK(BounceTouch)(CBaseEntity *pOther)
{
// don't hit the guy that launched this grenade
if (pOther->edict() == pev->owner)
Expand Down Expand Up @@ -770,7 +772,9 @@ void CGrenade::BounceSound()
}
}

void CGrenade::TumbleThink()
LINK_HOOK_CLASS_VOID_CHAIN2(CGrenade, TumbleThink)

void CGrenade::__API_HOOK(TumbleThink)()
{
#ifdef REGAMEDLL_FIXES
if (pev->velocity.IsLengthGreaterThan(g_psv_maxvelocity->value))
Expand Down
3 changes: 3 additions & 0 deletions regamedll/dlls/weapons.h
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,9 @@ class CGrenade: public CBaseMonster
void Explode3_OrigFunc(TraceResult *pTrace, int bitsDamageType);
void Explode2_OrigFunc(TraceResult *pTrace, int bitsDamageType);
void SG_Detonate_OrigFunc();

void EXPORT BounceTouch_OrigFunc(CBaseEntity *pOther);
void EXPORT TumbleThink_OrigFunc();
#endif

void EXPORT Smoke();
Expand Down
11 changes: 11 additions & 0 deletions regamedll/public/regamedll/regamedll_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -624,6 +624,14 @@ typedef IHookChainRegistryClass<void, class CBasePlayer> IReGameHookRegistry_CBa
typedef IHookChainClass<void, class CBasePlayer> IReGameHook_CBasePlayer_Observer_Think;
typedef IHookChainRegistryClass<void, class CBasePlayer> IReGameHookRegistry_CBasePlayer_Observer_Think;

// CGrenade::BounceTouch hook
typedef IHookChainClass<void, class CGrenade, class CBaseEntity *> IReGameHook_CGrenade_BounceTouch;
typedef IHookChainRegistryClass<void, class CGrenade, class CBaseEntity *> IReGameHookRegistry_CGrenade_BounceTouch;

// CGrenade::TumbleThink hook
typedef IHookChainClass<void, class CGrenade> IReGameHook_CGrenade_TumbleThink;
typedef IHookChainRegistryClass<void, class CGrenade> IReGameHookRegistry_CGrenade_TumbleThink;

class IReGameHookchains {
public:
virtual ~IReGameHookchains() {}
Expand Down Expand Up @@ -785,6 +793,9 @@ class IReGameHookchains {

virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink() = 0;
virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think() = 0;

virtual IReGameHookRegistry_CGrenade_BounceTouch *CGrenade_BounceTouch() = 0;
virtual IReGameHookRegistry_CGrenade_TumbleThink *CGrenade_TumbleThink() = 0;
};

struct ReGameFuncs_t {
Expand Down

0 comments on commit db459b2

Please sign in to comment.