Script:Files:script/weapons/pistol.script

From Mod Wiki
/***********************************************************************

weapon_pistol.script

***********************************************************************/

object weapon_pistol : weapon_clip {
    void        preinit();
    void        DoFire();

    void        PlayFireAnim();
    void        PlayIdleAnim();
    void        PlayZoomInAnim();
    void        PlayZoomOutAnim();
    void        PlayStartSprintAnim();
    void        PlayLeaveSprintAnim();
}

void weapon_pistol::preinit() {
    hasScope        = false;
    hasIronSights    = true;

    fireRateSingle    = getFloatKeyWithDefault( "fire_rate", 0.2f );
}

void weapon_pistol::DoFire() {
    if ( !mainFireDown ) {
        FireSingle();
    }
}

void weapon_pistol::PlayFireAnim() {
    if ( ironSightsEnabled ) {
        if ( ammoInClip( 0 ) == 1 ) {
            playAnim( ANIMCHANNEL_ALL, "fire_zoom_last" );
        } else {
            playAnim( ANIMCHANNEL_ALL, "fire_zoom" );
        }
    } else {
        if ( ammoInClip( 0 ) == 1 ) {
            playAnim( ANIMCHANNEL_ALL, "fire_last" );
        } else {
            playAnim( ANIMCHANNEL_ALL, "fire" );
        }
    }
}

void weapon_pistol::PlayIdleAnim() {
    if ( ironSightsEnabled ) {
        if ( ammoInClip( 0 ) == 0 ) {
            playCycle( ANIMCHANNEL_ALL, "idle_zoom_outofammo" );
        } else {
            playCycle( ANIMCHANNEL_ALL, "idle_zoom" );
        }
    } else {
        if ( ammoInClip( 0 ) == 0 ) {
            playCycle( ANIMCHANNEL_ALL, "idle_outofammo" );
        } else {
            playCycle( ANIMCHANNEL_ALL, "idle" );
        }
    }
}

void weapon_pistol::PlayZoomInAnim() {
    if ( ammoInClip( 0 ) == 0 ) {
        playAnim( ANIMCHANNEL_ALL, "zoomin_outofammo" );
    } else {
        playAnim( ANIMCHANNEL_ALL, "zoomin" );
    }
}

void weapon_pistol::PlayZoomOutAnim() {
    if ( ammoInClip( 0 ) == 0 ) {
        playAnim( ANIMCHANNEL_ALL, "zoomout_outofammo" );
    } else {
        playAnim( ANIMCHANNEL_ALL, "zoomout" );
    }
}

void weapon_pistol::PlayStartSprintAnim() {
    if ( ammoInClip( 0 ) == 0 ) {
        playAnim( ANIMCHANNEL_ALL, "start_sprint_outofammo" );
    } else {
        playAnim( ANIMCHANNEL_ALL, "start_sprint" );
    }

    waitUntil( animDone( ANIMCHANNEL_ALL, 4 ) );
}

void weapon_pistol::PlayLeaveSprintAnim() {
    if ( ammoInClip( 0 ) == 0 ) {
        playAnim( ANIMCHANNEL_ALL, "leave_sprint_outofammo" );
    } else {
        playAnim( ANIMCHANNEL_ALL, "leave_sprint" );
    }

    waitUntil( animDone( ANIMCHANNEL_ALL, 4 ) );
}