void RunEmplacedWeapon( gentity_t *ent, usercmd_t **ucmd ) { if (( (*ucmd)->buttons & BUTTON_USE || (*ucmd)->forwardmove < 0 || (*ucmd)->upmove > 0 ) && ent->owner && ent->owner->delay + 500 < level.time ) { ent->owner->s.loopSound = 0; if ( ent->owner->e_UseFunc == useF_eweb_use )//yeah, crappy way to check this, but... { G_Sound( ent, G_SoundIndex( "sound/weapons/eweb/eweb_dismount.mp3" )); } else { G_Sound( ent, G_SoundIndex( "sound/weapons/emplaced/emplaced_dismount.mp3" )); } ExitEmplacedWeapon( ent ); (*ucmd)->buttons &= ~BUTTON_USE; if ( (*ucmd)->upmove > 0 ) {//don't actually jump (*ucmd)->upmove = 0; } } else { // this is a crappy way to put sounds on a moving eweb.... if ( ent->owner && ent->owner->e_UseFunc == useF_eweb_use )//yeah, crappy way to check this, but... { if ( !VectorCompare( ent->client->ps.viewangles, ent->owner->movedir )) { ent->owner->s.loopSound = G_SoundIndex( "sound/weapons/eweb/eweb_aim.wav" ); ent->owner->fly_sound_debounce_time = level.time; } else { if ( ent->owner->fly_sound_debounce_time + 100 <= level.time ) { ent->owner->s.loopSound = 0; } } VectorCopy( ent->client->ps.viewangles, ent->owner->movedir ); } // don't allow movement, weapon switching, and most kinds of button presses (*ucmd)->forwardmove = 0; (*ucmd)->rightmove = 0; (*ucmd)->upmove = 0; (*ucmd)->buttons &= (BUTTON_ATTACK|BUTTON_ALT_ATTACK); (*ucmd)->weapon = ent->client->ps.weapon; //WP_EMPLACED_GUN; if ( ent->health <= 0 ) { ExitEmplacedWeapon( ent ); } } }
static void Svcmd_ExitView_f( void ) { extern cvar_t *g_skippingcin; static int exitViewDebounce = 0; if ( exitViewDebounce > level.time ) { return; } exitViewDebounce = level.time + 500; if ( in_camera ) {//see if we need to exit an in-game cinematic if ( g_skippingcin->integer ) // already doing cinematic skip? {// yes... so stop skipping... G_StopCinematicSkip(); } else {// no... so start skipping... G_StartCinematicSkip(); } } else if ( !G_ClearViewEntity( player ) ) {//didn't exit control of a droid or turret //okay, now try exiting emplaced guns or AT-ST's if ( player->s.eFlags & EF_LOCKED_TO_WEAPON ) {//get out of emplaced gun ExitEmplacedWeapon( player ); } else if ( player->client && player->client->NPC_class == CLASS_ATST ) {//a player trying to get out of his ATST GEntity_UseFunc( player->activator, player, player ); } } }