From 7f548aa57a94a3d3b6c013bf9a01659dbbbf1d48 Mon Sep 17 00:00:00 2001 From: Night Owl Date: Wed, 18 Apr 2018 04:22:31 +0500 Subject: [PATCH] Fix runes. --- cl_dll/ev_hldm.cpp | 23 +++++++++++++++++++++-- dlls/dmc/quake_gun.cpp | 19 +++++++++++++++---- dlls/dmc/quake_items.cpp | 2 +- dlls/dmc/quake_player.cpp | 10 ++++++++++ 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/cl_dll/ev_hldm.cpp b/cl_dll/ev_hldm.cpp index ce224696..d955be4a 100644 --- a/cl_dll/ev_hldm.cpp +++ b/cl_dll/ev_hldm.cpp @@ -404,8 +404,27 @@ void EV_HLDM_DecalGunshot( pmtrace_t *pTrace, int iBulletType ) void EV_Quake_PlayQuadSound ( int idx, float *origin, int iFlag ) { - if( iFlag == 1 ) - gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_ITEM, "items/damage3.wav", 1, ATTN_NORM, 0, PITCH_NORM); + const char *pszSound; + + switch( iFlag ) + { + case 1: + pszSound = "items/damage3.wav"; + break; + case 2: + pszSound = "rune/rune2.wav"; + break; + case 3: + pszSound = "rune/rune22.wav"; + break; + case 4: + pszSound = "rune/rune3.wav"; + break; + default: + return; + } + + gEngfuncs.pEventAPI->EV_PlaySound( idx, origin, CHAN_ITEM, pszSound, 1, ATTN_NORM, 0, PITCH_NORM ); } /* diff --git a/dlls/dmc/quake_gun.cpp b/dlls/dmc/quake_gun.cpp index a03ccd36..3ccba8c8 100644 --- a/dlls/dmc/quake_gun.cpp +++ b/dlls/dmc/quake_gun.cpp @@ -146,15 +146,26 @@ BOOL CQuakeGun::Deploy( ) // Plays quad sound if needed int CQuakeGun::SuperDamageSound() { - if ( m_pPlayer->m_iQuakeItems & IT_QUAD ) + if( m_pPlayer->m_iQuakeItems & IT_QUAD ) { - if ( m_pPlayer->m_flNextQuadSound < gpGlobals->time) + if( m_pPlayer->m_flNextQuadSound < gpGlobals->time) { m_pPlayer->m_flNextQuadSound = gpGlobals->time + 1; - return 1; + return ( m_pPlayer->m_iRuneStatus == ITEM_RUNE2_FLAG ) ? 3 : 1; } } - + else if( m_pPlayer->m_iRuneStatus == ITEM_RUNE2_FLAG + && m_pPlayer->m_flNextQuadSound < gpGlobals->time ) + { + m_pPlayer->m_flNextQuadSound = gpGlobals->time + 1; + return 2; + } + else if( m_pPlayer->m_iRuneStatus == ITEM_RUNE3_FLAG + && m_pPlayer->m_flNextQuadSound < gpGlobals->time ) + { + m_pPlayer->m_flNextQuadSound = gpGlobals->time + 1; + return 4; + } return 0; } diff --git a/dlls/dmc/quake_items.cpp b/dlls/dmc/quake_items.cpp index e05a0eea..48efe92e 100644 --- a/dlls/dmc/quake_items.cpp +++ b/dlls/dmc/quake_items.cpp @@ -258,7 +258,7 @@ void CItemHealth::MegahealthRot( void ) { CBasePlayer *pPlayer = ((CBasePlayer *)((CBaseEntity *)m_hRotTarget)); - if (pPlayer->pev->health > pPlayer->pev->max_health ) + if( pPlayer->pev->health > pPlayer->pev->max_health && pPlayer->m_iRuneStatus != ITEM_RUNE4_FLAG ) { pPlayer->pev->health--; pev->nextthink = gpGlobals->time + 1; diff --git a/dlls/dmc/quake_player.cpp b/dlls/dmc/quake_player.cpp index c621cc2f..58a81ff2 100644 --- a/dlls/dmc/quake_player.cpp +++ b/dlls/dmc/quake_player.cpp @@ -126,8 +126,18 @@ int CBasePlayer::TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, fl else flDamage *= 4; } + + if( ( (CBasePlayer*)pAttacker )->m_iRuneStatus == ITEM_RUNE2_FLAG ) + { + flDamage *= 2; + } } + if( m_iRuneStatus == ITEM_RUNE1_FLAG ) + { + flDamage /= 2; + EMIT_SOUND( ENT( pev ), CHAN_ITEM, "rune/rune1.wav", 1, ATTN_NORM ); + } //++ BulliT if( g_pGameRules->m_iGameMode >= LMS ) {