Script:Files:script/vehicles/weapons/law.script

From Mod Wiki
object vehicle_weapon_law : vehicle_weapon_base {
    void                    preinit();
    void                    Fire();

    string    muzzleFlashFX;

    float    jointHandle;
    float    fireRate;
    float    spread;
    float    projectileIndex;
    float    feedback;
    float    currentWeaponIndex;

    vector    velocity;

    entity    vehicle;
};

void vehicle_weapon_law::preinit() {
    projectileIndex        = GetEntityDef( getKey( "def_projectile" ) );

    vehicle                = getVehicle();

    muzzleFlashFX        = getKey( "muzzle_flash" );

    fireRate            = getFloatKey( "fire_rate" );
    spread                = getFloatKey( "spread" );
    velocity            = getVectorKey( "velocity" );
    feedback            = getFloatKey( "feedback" );
}

void vehicle_weapon_law::Fire() {
    RemoveCharge();

    jointHandle = vehicle.getJointHandle( getKey( "missile_pos" + currentWeaponIndex ) );
    vector origin = vehicle.getJointPos( jointHandle );

    vehicle.launchMissileSimple( user, vehicle, user.getEnemy(), projectileIndex, -1, spread, origin, vehicle.jointToWorldSpace( jointHandle, velocity ) );
    vehicle.applyImpulse( origin, -feedback * vehicle.getJointAxis( jointHandle, 0 ) );

    vehicle.playJointEffect( muzzleFlashFX, jointHandle, 0 );

    currentWeaponIndex++;

    if( currentWeaponIndex == getFloatKey( "num_missiles" ) ) {
        currentWeaponIndex = 0;
    }

    AddReFireDelay( fireRate );

    GoToIdle();
}