etqw-sdk/base/script/vehicles/weapons/law.script

54 lines
1.3 KiB
Plaintext
Raw Permalink Normal View History

2008-05-29 00:00:00 +00:00
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();
}