Toggling RPG Guidance
darlael Based on tutorial found here.
Basically what we're going to be doing is allowing a player to switch the RPG's guiding laser on and off using the weapon's secondary fire. Along with this, we will allow a player who has fired a dumb (non-guided) rocket that hasn't yet exploded to change weapons.
Files affected:
- weapon_rpg.cpp
In CWeaponRPG::ItemPostFrame() (about line 1539), add the following code:
if ( pPlayer->m_afButtonPressed & IN_ATTACK2 ) { ToggleGuiding(); }
at the end of the method, after:
if ( pPlayer->GetAmmoCount(m_iPrimaryAmmoType) <= 0 && m_hMissile == NULL ) { StopGuiding(); }
This says, in effect, "If the player hits the secondary attack, toggle rocket guidance on or off."
Then in CWeaponRPG::SuppressGuiding() (about line 1497), find the following code:
if ( m_hLaserDot == NULL ) { StartGuiding(); //STILL!? if ( m_hLaserDot == NULL ) return; }
and comment "StartGuiding();" out, so that it looks like this:
if ( m_hLaserDot == NULL ) { //StartGuiding(); //STILL!? if ( m_hLaserDot == NULL ) return; }
This stops the code from automatically starting up rocket guidance again.
That's it for the guidance toggling code. Now to allow the player to lower the RPG after firing a dumb rocket but before it explodes.
In CWeaponRPG::Lower() (about line 1528), find the following code:
if ( m_hMissile != NULL ) return false;
and change it to read:
if ( m_hMissile != NULL && IsGuiding() ) return false;
This prevents the code from automatically telling us that we can't lower the RPG if we're not guiding. You will then need to make the same change in CWeaponRPG::CanHolster() (about line 1641).
Then in CWeaponRPG::Reload() (about line 1827), add this code:
if ( pOwner->GetActiveWeapon() != this ) return false;
after:
if ( pOwner->GetAmmoCount(m_iPrimaryAmmoType) <= 0 ) return false;
If we changed weapons after firing, this will prevent the RPG from getting kicked back up to us for a reload after the dumb rocket explodes.
And that's it! You're done.