mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-06-12 16:34:01 +00:00
1250 lines
34 KiB
C#
1250 lines
34 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Copyright (c) 2012 GarageGames, LLC
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to
|
|
// deal in the Software without restriction, including without limitation the
|
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
// sell copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
// IN THE SOFTWARE.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// RocketLauncher weapon.
|
|
// This script file contains all of the necessary datablocks needed for the
|
|
// RocketLauncher. These datablocks include sound profiles, light descriptions,
|
|
// particle effects, explosions, projectiles, items (weapon and ammo), shell
|
|
// casings (if any), and finally the weapon image which contains the state
|
|
// machine that determines how the weapon operates.
|
|
|
|
// The main "fire" method/mode is handled in "../scripts/server/weapons.cs"
|
|
// through a "WeaponImage" namespace function. This reduces duplicated code,
|
|
// although a unique fire method could still be implemented for this weapon.
|
|
|
|
// The "alt-fire" method/mode is handled in "../scripts/server/rocketlaucner.cs".
|
|
// Alt-fire for the Rocketlauncher allows you to "charge up" the number of
|
|
// projectiles, up to 3, that get fired. Hold to increase the number of shots
|
|
// and release to fire. After three shots are loaded and in the pipe, the
|
|
// weapon will automatically discharge on it's own.
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Sound profiles
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock SFXProfile(RocketLauncherReloadSound)
|
|
{
|
|
filename = "art/sound/weapons/Crossbow_reload";
|
|
description = AudioClose3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock SFXProfile(RocketLauncherFireSound)
|
|
{
|
|
filename = "art/sound/weapons/explosion_mono_01";
|
|
description = AudioClose3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock SFXProfile(RocketLauncherIncLoadSound)
|
|
{
|
|
filename = "art/sound/weapons/relbow_mono_01";
|
|
description = AudioClose3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock SFXProfile(RocketLauncherFireEmptySound)
|
|
{
|
|
filename = "art/sound/weapons/Crossbow_firing_empty";
|
|
description = AudioClose3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock SFXProfile(RocketLauncherExplosionSound)
|
|
{
|
|
filename = "art/sound/weapons/Crossbow_explosion";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Lights for the projectile(s)
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock LightDescription(RocketLauncherLightDesc)
|
|
{
|
|
range = 4.0;
|
|
color = "1 1 0";
|
|
brightness = 5.0;
|
|
animationType = PulseLightAnim;
|
|
animationPeriod = 0.25;
|
|
//flareType = SimpleLightFlare0;
|
|
};
|
|
|
|
datablock LightDescription(RocketLauncherWaterLightDesc)
|
|
{
|
|
radius = 2.0;
|
|
color = "1 1 1";
|
|
brightness = 5.0;
|
|
animationType = PulseLightAnim;
|
|
animationPeriod = 0.25;
|
|
//flareType = SimpleLightFlare0;
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Debris
|
|
//----------------------------------------------------------------------------
|
|
|
|
datablock ParticleData(RocketDebrisTrailParticle)
|
|
{
|
|
textureName = "art/shapes/particles/impact";
|
|
dragCoeffiecient = 0;
|
|
inheritedVelFactor = 0.0;
|
|
constantAcceleration = 0.0;
|
|
lifetimeMS = 1200;//1000;
|
|
lifetimeVarianceMS = 299;//500;
|
|
useInvAlpha = true;//false;
|
|
spinSpeed = 1;
|
|
spinRandomMin = -300.0;
|
|
spinRandomMax = 0;
|
|
colors[0] = "1 0.897638 0.795276 0.4";
|
|
colors[1] = "0.795276 0.795276 0.795276 0.6";
|
|
colors[2] = "0 0 0 0";
|
|
sizes[0] = 0.5;//1.0;
|
|
sizes[1] = 2;
|
|
sizes[2] = 1;//1.0;
|
|
times[0] = 0.0;
|
|
times[1] = 0.498039;
|
|
times[2] = 1.0;
|
|
animTexName = "art/shapes/particles/impact";
|
|
times[3] = "1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketDebrisTrailEmitter)
|
|
{
|
|
ejectionPeriodMS = 6;//8;
|
|
periodVarianceMS = 2;//4;
|
|
ejectionVelocity = 1.0;
|
|
velocityVariance = 0.5;
|
|
thetaMin = 0.0;
|
|
thetaMax = 180.0;
|
|
phiReferenceVel = 0;
|
|
phiVariance = 360;
|
|
ejectionoffset = 0.0;//0.3;
|
|
particles = "RocketDebrisTrailParticle";
|
|
};
|
|
|
|
datablock DebrisData(RocketDebris)
|
|
{
|
|
shapeFile = "art/shapes/weapons/SwarmGun/rocket.dts";
|
|
emitters[0] = RocketDebrisTrailEmitter;
|
|
elasticity = 0.5;
|
|
friction = 0.5;
|
|
numBounces = 1;//2;
|
|
bounceVariance = 1;
|
|
explodeOnMaxBounce = true;
|
|
staticOnMaxBounce = false;
|
|
snapOnMaxBounce = false;
|
|
minSpinSpeed = 400;
|
|
maxSpinSpeed = 800;
|
|
render2D = false;
|
|
lifetime = 0.25;//0.5;//1;//2;
|
|
lifetimeVariance = 0.0;//0.25;//0.5;
|
|
velocity = 35;//30;//15;
|
|
velocityVariance = 10;//5;
|
|
fade = true;
|
|
useRadiusMass = true;
|
|
baseRadius = 0.3;
|
|
gravModifier = 1.0;
|
|
terminalVelocity = 45;
|
|
ignoreWater = false;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Splash effects
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ParticleData(RocketSplashMist)
|
|
{
|
|
dragCoefficient = 1.0;
|
|
windCoefficient = 2.0;
|
|
gravityCoefficient = 0.3;
|
|
inheritedVelFactor = 0.0;
|
|
constantAcceleration = 0.0;
|
|
lifetimeMS = 600;
|
|
lifetimeVarianceMS = 100;
|
|
useInvAlpha = false;
|
|
spinRandomMin = -90.0;
|
|
spinRandomMax = 500.0;
|
|
spinSpeed = 1;
|
|
textureName = "art/shapes/particles/smoke";
|
|
colors[0] = "0.7 0.8 1.0 1.0";
|
|
colors[1] = "0.7 0.8 1.0 0.5";
|
|
colors[2] = "0.7 0.8 1.0 0.0";
|
|
sizes[0] = 0.2;//0.5;
|
|
sizes[1] = 0.4;//0.5;
|
|
sizes[2] = 0.8;
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketSplashMistEmitter)
|
|
{
|
|
ejectionPeriodMS = 5;
|
|
periodVarianceMS = 0;
|
|
ejectionVelocity = 3.0;
|
|
velocityVariance = 2.0;
|
|
ejectionOffset = 0.15;
|
|
thetaMin = 85;
|
|
thetaMax = 85;
|
|
phiReferenceVel = 0;
|
|
phiVariance = 360;
|
|
overrideAdvance = false;
|
|
lifetimeMS = 250;
|
|
particles = "RocketSplashMist";
|
|
};
|
|
|
|
datablock ParticleData(RocketSplashParticle)
|
|
{
|
|
dragCoefficient = 1;
|
|
windCoefficient = 0.9;
|
|
gravityCoefficient = 0.3;
|
|
inheritedVelFactor = 0.2;
|
|
constantAcceleration = -1.4;
|
|
lifetimeMS = 600;
|
|
lifetimeVarianceMS = 200;
|
|
textureName = "art/shapes/particles/droplet";
|
|
colors[0] = "0.7 0.8 1.0 1.0";
|
|
colors[1] = "0.7 0.8 1.0 0.5";
|
|
colors[2] = "0.7 0.8 1.0 0.0";
|
|
sizes[0] = 0.5;
|
|
sizes[1] = 0.25;
|
|
sizes[2] = 0.25;
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketSplashEmitter)
|
|
{
|
|
ejectionPeriodMS = 4;
|
|
periodVarianceMS = 0;
|
|
ejectionVelocity = 7.3;
|
|
velocityVariance = 2.0;
|
|
ejectionOffset = 0.0;
|
|
thetaMin = 30;
|
|
thetaMax = 80;
|
|
phiReferenceVel = 00;
|
|
phiVariance = 360;
|
|
overrideAdvance = false;
|
|
orientParticles = true;
|
|
orientOnVelocity = true;
|
|
lifetimeMS = 100;
|
|
particles = "RocketSplashParticle";
|
|
};
|
|
|
|
datablock ParticleData(RocketSplashRingParticle)
|
|
{
|
|
textureName = "art/shapes/particles/wake";
|
|
dragCoefficient = 0.0;
|
|
gravityCoefficient = 0.0;
|
|
inheritedVelFactor = 0.0;
|
|
lifetimeMS = 2500;
|
|
lifetimeVarianceMS = 200;
|
|
windCoefficient = 0.0;
|
|
useInvAlpha = 1;
|
|
spinRandomMin = 30.0;
|
|
spinRandomMax = 30.0;
|
|
spinSpeed = 1;
|
|
animateTexture = true;
|
|
framesPerSec = 1;
|
|
animTexTiling = "2 1";
|
|
animTexFrames = "0 1";
|
|
colors[0] = "0.7 0.8 1.0 1.0";
|
|
colors[1] = "0.7 0.8 1.0 0.5";
|
|
colors[2] = "0.7 0.8 1.0 0.0";
|
|
sizes[0] = 2.0;
|
|
sizes[1] = 4.0;
|
|
sizes[2] = 8.0;
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketSplashRingEmitter)
|
|
{
|
|
lifetimeMS = "100";
|
|
ejectionPeriodMS = 200;
|
|
periodVarianceMS = 10;
|
|
ejectionVelocity = 0;
|
|
velocityVariance = 0;
|
|
ejectionOffset = 0;
|
|
thetaMin = 89;
|
|
thetaMax = 90;
|
|
phiReferenceVel = 0;
|
|
phiVariance = 1;
|
|
alignParticles = 1;
|
|
alignDirection = "0 0 1";
|
|
particles = "RocketSplashRingParticle";
|
|
};
|
|
|
|
datablock SplashData(RocketSplash)
|
|
{
|
|
// numSegments = 15;
|
|
// ejectionFreq = 15;
|
|
// ejectionAngle = 40;
|
|
// ringLifetime = 0.5;
|
|
// lifetimeMS = 300;
|
|
// velocity = 4.0;
|
|
// startRadius = 0.0;
|
|
// acceleration = -3.0;
|
|
// texWrap = 5.0;
|
|
// texture = "art/shapes/particles/splash";
|
|
|
|
emitter[0] = RocketSplashEmitter;
|
|
emitter[1] = RocketSplashMistEmitter;
|
|
emitter[2] = RocketSplashRingEmitter;
|
|
|
|
// colors[0] = "0.7 0.8 1.0 0.0";
|
|
// colors[1] = "0.7 0.8 1.0 0.3";
|
|
// colors[2] = "0.7 0.8 1.0 0.7";
|
|
// colors[3] = "0.7 0.8 1.0 0.0";
|
|
//
|
|
// times[0] = 0.0;
|
|
// times[1] = 0.4;
|
|
// times[2] = 0.8;
|
|
// times[3] = 1.0;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Explosion Particle effects
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ParticleData(RocketExpFire)
|
|
{
|
|
gravityCoefficient = "-0.50061";
|
|
lifetimeMS = "400";
|
|
lifetimeVarianceMS = "299";
|
|
spinSpeed = "1";
|
|
spinRandomMin = "-200";
|
|
spinRandomMax = "0";
|
|
textureName = "art/shapes/particles/smoke";
|
|
animTexName = "art/shapes/particles/smoke";
|
|
colors[0] = "1 0.897638 0.795276 1";
|
|
colors[1] = "0.795276 0.393701 0 0.6";
|
|
colors[2] = "0 0 0 0";
|
|
sizes[0] = "1.99902";
|
|
sizes[1] = "7.99915";
|
|
sizes[2] = "3.99805";
|
|
times[1] = "0.392157";
|
|
times[2] = "1";
|
|
times[3] = "1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketExpFireEmitter)
|
|
{
|
|
ejectionPeriodMS = "10";
|
|
periodVarianceMS = "5";
|
|
ejectionVelocity = "3";
|
|
velocityVariance = "2";
|
|
particles = "RocketExpFire";
|
|
blendStyle = "NORMAL";
|
|
};
|
|
|
|
datablock ParticleData(RocketExpFireball)
|
|
{
|
|
textureName = "art/shapes/particles/fireball.png";
|
|
lifetimeMS = "300";
|
|
lifetimeVarianceMS = "299";
|
|
spinSpeed = "1";
|
|
spinRandomMin = "-400";
|
|
spinRandomMax = "0";
|
|
animTexName = "art/shapes/particles/fireball.png";
|
|
colors[0] = "1 0.897638 0.795276 0.2";
|
|
colors[1] = "1 0.496063 0 0.6";
|
|
colors[2] = "0.0944882 0.0944882 0.0944882 0";
|
|
sizes[0] = "0.997986";
|
|
sizes[1] = "1.99902";
|
|
sizes[2] = "2.99701";
|
|
times[1] = "0.498039";
|
|
times[2] = "1";
|
|
times[3] = "1";
|
|
gravityCoefficient = "-1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketExpFireballEmitter)
|
|
{
|
|
particles = "RocketExpFireball";
|
|
blendStyle = "ADDITIVE";
|
|
ejectionPeriodMS = "10";
|
|
periodVarianceMS = "5";
|
|
ejectionVelocity = "4";
|
|
velocityVariance = "2";
|
|
ejectionOffset = "2";
|
|
thetaMax = "120";
|
|
};
|
|
|
|
datablock ParticleData(RocketExpSmoke)
|
|
{
|
|
lifetimeMS = 1200;//"1250";
|
|
lifetimeVarianceMS = 299;//200;//"250";
|
|
textureName = "art/shapes/particles/smoke";
|
|
animTexName = "art/shapes/particles/smoke";
|
|
useInvAlpha = "1";
|
|
gravityCoefficient = "-0.100122";
|
|
spinSpeed = "1";
|
|
spinRandomMin = "-100";
|
|
spinRandomMax = "0";
|
|
colors[0] = "0.897638 0.795276 0.692913 0.4";//"0.192157 0.192157 0.192157 0.0944882";
|
|
colors[1] = "0.897638 0.897638 0.897638 0.8";//"0.454902 0.454902 0.454902 0.897638";
|
|
colors[2] = "0.4 0.4 0.4 0";//"1 1 1 0";
|
|
sizes[0] = "1.99597";
|
|
sizes[1] = "3.99805";
|
|
sizes[2] = "7.99915";
|
|
times[1] = "0.494118";
|
|
times[2] = "1";
|
|
times[3] = "1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketExpSmokeEmitter)
|
|
{
|
|
ejectionPeriodMS = "15";
|
|
periodVarianceMS = "5";
|
|
//ejectionOffset = "1";
|
|
thetaMax = "180";
|
|
particles = "RocketExpSmoke";
|
|
blendStyle = "NORMAL";
|
|
};
|
|
|
|
datablock ParticleData(RocketExpSparks)
|
|
{
|
|
textureName = "art/shapes/particles/droplet.png";
|
|
lifetimeMS = "100";
|
|
lifetimeVarianceMS = "50";
|
|
animTexName = "art/shapes/particles/droplet.png";
|
|
inheritedVelFactor = "0.391389";
|
|
sizes[0] = "1.99902";
|
|
sizes[1] = "2.49954";
|
|
sizes[2] = "0.997986";
|
|
colors[0] = "1.0 0.9 0.8 0.2";
|
|
colors[1] = "1.0 0.9 0.8 0.8";
|
|
colors[2] = "0.8 0.4 0.0 0.0";
|
|
times[0] = "0";
|
|
times[1] = "0.34902";
|
|
times[2] = "1";
|
|
times[3] = "1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketExpSparksEmitter)
|
|
{
|
|
particles = "RocketExpSparks";
|
|
blendStyle = "NORMAL";
|
|
ejectionPeriodMS = "10";
|
|
periodVarianceMS = "5";
|
|
ejectionVelocity = "60";
|
|
velocityVariance = "10";
|
|
thetaMax = "120";
|
|
phiReferenceVel = 0;
|
|
phiVariance = "360";
|
|
ejectionOffset = "0";
|
|
orientParticles = true;
|
|
orientOnVelocity = true;
|
|
};
|
|
|
|
datablock ParticleData(RocketExpSubFireParticles)
|
|
{
|
|
textureName = "art/shapes/particles/fireball.png";
|
|
gravityCoefficient = "-0.202686";
|
|
lifetimeMS = "400";
|
|
lifetimeVarianceMS = "299";
|
|
spinSpeed = "1";
|
|
spinRandomMin = "-200";
|
|
spinRandomMax = "0";
|
|
animTexName = "art/shapes/particles/fireball.png";
|
|
colors[0] = "1 0.897638 0.795276 0.2";
|
|
colors[1] = "1 0.496063 0 1";
|
|
colors[2] = "0.0944882 0.0944882 0.0944882 0";
|
|
sizes[0] = "0.997986";
|
|
sizes[1] = "1.99902";
|
|
sizes[2] = "2.99701";
|
|
times[1] = "0.498039";
|
|
times[2] = "1";
|
|
times[3] = "1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketExpSubFireEmitter)
|
|
{
|
|
particles = "RocketExpSubFireParticles";
|
|
blendStyle = "ADDITIVE";
|
|
ejectionPeriodMS = "10";
|
|
periodVarianceMS = "5";
|
|
ejectionVelocity = "4";
|
|
velocityVariance = "2";
|
|
thetaMax = "120";
|
|
};
|
|
|
|
datablock ParticleData(RocketExpSubSmoke)
|
|
{
|
|
textureName = "art/shapes/particles/smoke";
|
|
gravityCoefficient = "-0.40293";
|
|
lifetimeMS = "800";
|
|
lifetimeVarianceMS = "299";
|
|
spinSpeed = "1";
|
|
spinRandomMin = "-200";
|
|
spinRandomMax = "0";
|
|
animTexName = "art/shapes/particles/smoke";
|
|
colors[0] = "0.4 0.35 0.3 0.393701";
|
|
colors[1] = "0.45 0.45 0.45 0.795276";
|
|
colors[2] = "0.4 0.4 0.4 0";
|
|
sizes[0] = "1.99902";
|
|
sizes[1] = "3.99805";
|
|
sizes[2] = "7.99915";
|
|
times[1] = "0.4";
|
|
times[2] = "1";
|
|
times[3] = "1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketExpSubSmokeEmitter)
|
|
{
|
|
particles = "RocketExpSubSmoke";
|
|
ejectionPeriodMS = "30";
|
|
periodVarianceMS = "10";
|
|
ejectionVelocity = "2";
|
|
velocityVariance = "1";
|
|
ejectionOffset = 1;//"2";
|
|
blendStyle = "NORMAL";
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Water Explosion
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ParticleData(RLWaterExpDust)
|
|
{
|
|
textureName = "art/shapes/particles/steam";
|
|
dragCoefficient = 1.0;
|
|
gravityCoefficient = -0.01;
|
|
inheritedVelFactor = 0.0;
|
|
constantAcceleration = 0.0;
|
|
lifetimeMS = 2500;
|
|
lifetimeVarianceMS = 250;
|
|
useInvAlpha = false;
|
|
spinSpeed = 1;
|
|
spinRandomMin = -90.0;
|
|
spinRandomMax = 500.0;
|
|
colors[0] = "0.6 0.6 1.0 0.5";
|
|
colors[1] = "0.6 0.6 1.0 0.3";
|
|
sizes[0] = 0.25;
|
|
sizes[1] = 1.5;
|
|
times[0] = 0.0;
|
|
times[1] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RLWaterExpDustEmitter)
|
|
{
|
|
ejectionPeriodMS = 1;
|
|
periodVarianceMS = 0;
|
|
ejectionVelocity = 10;
|
|
velocityVariance = 0.0;
|
|
ejectionOffset = 0.0;
|
|
thetaMin = 85;
|
|
thetaMax = 85;
|
|
phiReferenceVel = 0;
|
|
phiVariance = 360;
|
|
overrideAdvances = false;
|
|
lifetimeMS = 75;
|
|
particles = "RLWaterExpDust";
|
|
};
|
|
|
|
datablock ParticleData(RLWaterExpSparks)
|
|
{
|
|
textureName = "art/shapes/particles/spark_wet";
|
|
dragCoefficient = 1;
|
|
gravityCoefficient = 0.0;
|
|
inheritedVelFactor = 0.2;
|
|
constantAcceleration = 0.0;
|
|
lifetimeMS = 500;
|
|
lifetimeVarianceMS = 250;
|
|
colors[0] = "0.6 0.6 1.0 1.0";
|
|
colors[1] = "0.6 0.6 1.0 1.0";
|
|
colors[2] = "0.6 0.6 1.0 0.0";
|
|
sizes[0] = 0.5;
|
|
sizes[1] = 0.5;
|
|
sizes[2] = 0.75;
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RLWaterExpSparkEmitter)
|
|
{
|
|
ejectionPeriodMS = 2;
|
|
periodVarianceMS = 0;
|
|
ejectionVelocity = 12;
|
|
velocityVariance = 6.75;
|
|
ejectionOffset = 0.0;
|
|
thetaMin = 0;
|
|
thetaMax = 60;
|
|
phiReferenceVel = 0;
|
|
phiVariance = 360;
|
|
overrideAdvances = false;
|
|
orientParticles = true;
|
|
lifetimeMS = 100;
|
|
particles = "RLWaterExpSparks";
|
|
};
|
|
|
|
datablock ParticleData(RLWaterExpSmoke)
|
|
{
|
|
textureName = "art/shapes/particles/smoke";
|
|
dragCoeffiecient = 0.4;
|
|
gravityCoefficient = -0.25;
|
|
inheritedVelFactor = 0.025;
|
|
constantAcceleration = -1.1;
|
|
lifetimeMS = 1250;
|
|
lifetimeVarianceMS = 0;
|
|
useInvAlpha = false;
|
|
spinSpeed = 1;
|
|
spinRandomMin = -200.0;
|
|
spinRandomMax = 200.0;
|
|
colors[0] = "0.1 0.1 1.0 1.0";
|
|
colors[1] = "0.4 0.4 1.0 1.0";
|
|
colors[2] = "0.4 0.4 1.0 0.0";
|
|
sizes[0] = 2.0;
|
|
sizes[1] = 6.0;
|
|
sizes[2] = 2.0;
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RLWaterExpSmokeEmitter)
|
|
{
|
|
ejectionPeriodMS = 15;
|
|
periodVarianceMS = 0;
|
|
ejectionVelocity = 6.25;
|
|
velocityVariance = 0.25;
|
|
thetaMin = 0.0;
|
|
thetaMax = 90.0;
|
|
lifetimeMS = 250;
|
|
particles = "RLWaterExpSmoke";
|
|
};
|
|
|
|
datablock ParticleData(RLWaterExpBubbles)
|
|
{
|
|
textureName = "art/shapes/particles/millsplash01";
|
|
dragCoefficient = 0.0;
|
|
gravityCoefficient = -0.05;
|
|
inheritedVelFactor = 0.0;
|
|
constantAcceleration = 0.0;
|
|
lifetimeMS = 1500;
|
|
lifetimeVarianceMS = 250;
|
|
useInvAlpha = false;
|
|
spinRandomMin = -100.0;
|
|
spinRandomMax = 100.0;
|
|
spinSpeed = 1;
|
|
colors[0] = "0.7 0.8 1.0 0.0";
|
|
colors[1] = "0.7 0.8 1.0 0.4";
|
|
colors[2] = "0.7 0.8 1.0 0.0";
|
|
sizes[0] = 0.2;
|
|
sizes[1] = 0.4;
|
|
sizes[2] = 0.8;
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RLWaterExpBubbleEmitter)
|
|
{
|
|
ejectionPeriodMS = 5;
|
|
periodVarianceMS = 0;
|
|
ejectionVelocity = 1.0;
|
|
ejectionOffset = 3.0;
|
|
velocityVariance = 0.5;
|
|
thetaMin = 0;
|
|
thetaMax = 80;
|
|
phiReferenceVel = 0;
|
|
phiVariance = 360;
|
|
overrideAdvances = false;
|
|
particles = "RLWaterExpBubbles";
|
|
};
|
|
|
|
datablock ExplosionData(RocketLauncherWaterExplosion)
|
|
{
|
|
//soundProfile = RLWaterExplosionSound;
|
|
|
|
emitter[0] = RLWaterExpDustEmitter;
|
|
emitter[1] = RLWaterExpSparkEmitter;
|
|
emitter[2] = RLWaterExpSmokeEmitter;
|
|
emitter[3] = RLWaterExpBubbleEmitter;
|
|
|
|
shakeCamera = true;
|
|
camShakeFreq = "10.0 11.0 9.0";
|
|
camShakeAmp = "20.0 20.0 20.0";
|
|
camShakeDuration = 1.5;
|
|
camShakeRadius = 20.0;
|
|
|
|
lightStartRadius = 20.0;
|
|
lightEndRadius = 0.0;
|
|
lightStartColor = "0.9 0.9 0.8";
|
|
lightEndColor = "0.6 0.6 1.0";
|
|
lightStartBrightness = 2.0;
|
|
lightEndBrightness = 0.0;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Dry/Air Explosion Objects
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ExplosionData(RocketSubExplosion)
|
|
{
|
|
lifeTimeMS = 100;
|
|
offset = 0.4;
|
|
emitter[0] = RocketExpSubFireEmitter;
|
|
emitter[1] = RocketExpSubSmokeEmitter;
|
|
};
|
|
|
|
|
|
datablock ExplosionData(RocketLauncherExplosion)
|
|
{
|
|
soundProfile = RocketLauncherExplosionSound;
|
|
lifeTimeMS = 200; // I want a quick bang and dissipation, not a slow burn-out
|
|
|
|
// Volume particles
|
|
particleEmitter = RocketExpSmokeEmitter;
|
|
particleDensity = 10;//20;
|
|
particleRadius = 1;//2;
|
|
|
|
// Point emission
|
|
emitter[0] = RocketExpFireEmitter;
|
|
emitter[1] = RocketExpSparksEmitter;
|
|
emitter[2] = RocketExpSparksEmitter;
|
|
emitter[3] = RocketExpFireballEmitter;
|
|
|
|
// Sub explosion objects
|
|
subExplosion[0] = RocketSubExplosion;
|
|
|
|
// Camera Shaking
|
|
shakeCamera = true;
|
|
camShakeFreq = "10.0 11.0 9.0";
|
|
camShakeAmp = "15.0 15.0 15.0";
|
|
camShakeDuration = 1.5;
|
|
camShakeRadius = 20;
|
|
|
|
// Exploding debris
|
|
debris = RocketDebris;
|
|
debrisThetaMin = 0;//10;
|
|
debrisThetaMax = 90;//80;
|
|
debrisNum = 5;
|
|
debrisNumVariance = 2;
|
|
debrisVelocity = 1;//2;
|
|
debrisVelocityVariance = 0.2;//0.5;
|
|
|
|
lightStartRadius = 6.0;
|
|
lightEndRadius = 0.0;
|
|
lightStartColor = "1.0 0.7 0.2";
|
|
lightEndColor = "0.9 0.7 0.0";
|
|
lightStartBrightness = 2.5;
|
|
lightEndBrightness = 0.0;
|
|
lightNormalOffset = 3.0;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Underwater Rocket projectile trail
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ParticleData(RocketTrailWaterParticle)
|
|
{
|
|
textureName = "art/shapes/particles/bubble";
|
|
dragCoefficient = 0.0;
|
|
gravityCoefficient = 0.1;
|
|
inheritedVelFactor = 0.0;
|
|
constantAcceleration = 0.0;
|
|
lifetimeMS = 1500;
|
|
lifetimeVarianceMS = 600;
|
|
useInvAlpha = false;
|
|
spinRandomMin = -100.0;
|
|
spinRandomMax = 100.0;
|
|
spinSpeed = 1;
|
|
|
|
colors[0] = "0.7 0.8 1.0 1.0";
|
|
colors[1] = "0.7 0.8 1.0 0.4";
|
|
colors[2] = "0.7 0.8 1.0 0.0";
|
|
|
|
sizes[0] = 0.05;
|
|
sizes[1] = 0.05;
|
|
sizes[2] = 0.05;
|
|
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketTrailWaterEmitter)
|
|
{
|
|
ejectionPeriodMS = 5;
|
|
periodVarianceMS = 0;
|
|
ejectionVelocity = 1.0;
|
|
ejectionOffset = 0.1;
|
|
velocityVariance = 0.5;
|
|
thetaMin = 0.0;
|
|
thetaMax = 80.0;
|
|
phiReferenceVel = 0;
|
|
phiVariance = 360;
|
|
overrideAdvances = false;
|
|
particles = RocketTrailWaterParticle;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Normal-fire Projectile Object
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ParticleData(RocketProjSmokeTrail)
|
|
{
|
|
textureName = "art/shapes/particles/smoke";
|
|
dragCoeffiecient = 0;
|
|
gravityCoefficient = -0.202686;
|
|
inheritedVelFactor = 0.0;
|
|
constantAcceleration = 0.0;
|
|
lifetimeMS = 750;
|
|
lifetimeVarianceMS = 749;
|
|
useInvAlpha = true;
|
|
spinRandomMin = -60;
|
|
spinRandomMax = 0;
|
|
spinSpeed = 1;
|
|
|
|
colors[0] = "0.3 0.3 0.3 0.598425";
|
|
colors[1] = "0.9 0.9 0.9 0.897638";
|
|
colors[2] = "0.9 0.9 0.9 0";
|
|
|
|
sizes[0] = 0.247207;
|
|
sizes[1] = 0.497467;
|
|
sizes[2] = 0.747726;
|
|
|
|
times[0] = 0.0;
|
|
times[1] = 0.4;
|
|
times[2] = 1.0;
|
|
animTexName = "art/shapes/particles/smoke";
|
|
times[3] = "1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketProjSmokeTrailEmitter)
|
|
{
|
|
ejectionPeriodMS = 1;
|
|
periodVarianceMS = 0;
|
|
ejectionVelocity = 0.75;
|
|
velocityVariance = 0;
|
|
thetaMin = 0.0;
|
|
thetaMax = 0.0;
|
|
phiReferenceVel = 90;
|
|
phiVariance = 0;
|
|
particles = "RocketProjSmokeTrail";
|
|
};
|
|
|
|
datablock ProjectileData(RocketLauncherProjectile)
|
|
{
|
|
projectileShapeName = "art/shapes/weapons/SwarmGun/rocket.dts";
|
|
directDamage = 30;
|
|
radiusDamage = 30;
|
|
damageRadius = 5;
|
|
areaImpulse = 2500;
|
|
|
|
explosion = RocketLauncherExplosion;
|
|
waterExplosion = RocketLauncherWaterExplosion;
|
|
|
|
decal = ScorchRXDecal;
|
|
splash = RocketSplash;
|
|
|
|
particleEmitter = RocketProjSmokeTrailEmitter;
|
|
particleWaterEmitter = RocketTrailWaterEmitter;
|
|
|
|
muzzleVelocity = 100;
|
|
velInheritFactor = 0.3;
|
|
|
|
armingDelay = 0;
|
|
lifetime = 5000; //(500m / 100m/s = 5000ms)
|
|
fadeDelay = 4500;
|
|
|
|
bounceElasticity = 0;
|
|
bounceFriction = 0;
|
|
isBallistic = false;
|
|
gravityMod = 0.80;
|
|
|
|
lightDesc = RocketLauncherLightDesc;
|
|
|
|
damageType = "RocketDamage";
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Underwater Projectile
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ProjectileData(RocketWetProjectile)
|
|
{
|
|
projectileShapeName = "art/shapes/weapons/SwarmGun/rocket.dts";
|
|
directDamage = 20;
|
|
radiusDamage = 10;
|
|
damageRadius = 10;
|
|
areaImpulse = 2000;
|
|
|
|
explosion = RocketLauncherWaterExplosion;
|
|
|
|
particleEmitter = RocketProjSmokeTrailEmitter;
|
|
particleWaterEmitter = RocketTrailWaterEmitter;
|
|
|
|
muzzleVelocity = 20;
|
|
velInheritFactor = 0.3;
|
|
|
|
armingDelay = 0;
|
|
lifetime = 5000; //(500m / 100m/s = 5000ms)
|
|
fadeDelay = 4500;
|
|
|
|
bounceElasticity = 0.2;
|
|
bounceFriction = 0.4;
|
|
isBallistic = true;
|
|
gravityMod = 0.80;
|
|
|
|
lightDesc = RocketLauncherWaterLightDesc;
|
|
|
|
damageType = "RocketDamage";
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Shell that's ejected during reload.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock DebrisData(RocketlauncherShellCasing)
|
|
{
|
|
shapeFile = "art/shapes/weapons/SwarmGun/rocket.dts";
|
|
lifetime = 6.0;
|
|
minSpinSpeed = 300.0;
|
|
maxSpinSpeed = 400.0;
|
|
elasticity = 0.65;
|
|
friction = 0.05;
|
|
numBounces = 5;
|
|
staticOnMaxBounce = true;
|
|
snapOnMaxBounce = false;
|
|
fade = true;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Particle Emitter played when firing.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ParticleData(RocketLauncherfiring1Particle)
|
|
{
|
|
textureName = "art/shapes/particles/Fireball";
|
|
dragCoefficient = 100.0;
|
|
gravityCoefficient = -0.25;//-0.5;//0.0;
|
|
inheritedVelFactor = 0.25;//1.0;
|
|
constantAcceleration = 0.1;
|
|
lifetimeMS = 400;
|
|
lifetimeVarianceMS = 100;
|
|
useInvAlpha = false;
|
|
spinSpeed = 1;
|
|
spinRandomMin = -200;
|
|
spinRandomMax = 200;
|
|
colors[0] = "1 0.9 0.8 0.1";
|
|
colors[1] = "1 0.5 0 0.3";
|
|
colors[2] = "0.1 0.1 0.1 0";
|
|
sizes[0] = 0.2;//1;
|
|
sizes[1] = 0.25;//0.15;//0.75;
|
|
sizes[2] = 0.3;//0.1;//0.5;
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;//0.294118;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketLauncherfiring1Emitter)
|
|
{
|
|
ejectionPeriodMS = 15;//75;
|
|
periodVarianceMS = 5;
|
|
ejectionVelocity = 1;
|
|
ejectionOffset = 0.0;
|
|
velocityVariance = 0;
|
|
thetaMin = 0.0;
|
|
thetaMax = 180;//10.0;
|
|
particles = "RocketLauncherfiring1Particle";
|
|
blendStyle = "ADDITIVE";
|
|
};
|
|
|
|
datablock ParticleData(RocketLauncherfiring2Particle)
|
|
{
|
|
textureName = "art/shapes/particles/impact";
|
|
dragCoefficient = 100.0;
|
|
gravityCoefficient = -0.5;//0.0;
|
|
inheritedVelFactor = 0.25;//1.0;
|
|
constantAcceleration = 0.1;
|
|
lifetimeMS = 1600;//400;
|
|
lifetimeVarianceMS = 400;//100;
|
|
useInvAlpha = false;
|
|
spinSpeed = 1;
|
|
spinRandomMin = -200;
|
|
spinRandomMax = 200;
|
|
colors[0] = "0.4 0.4 0.4 0.2";
|
|
colors[1] = "0.4 0.4 0.4 0.1";
|
|
colors[2] = "0.0 0.0 0.0 0.0";
|
|
sizes[0] = 0.2;//1;
|
|
sizes[1] = 0.15;//0.75;
|
|
sizes[2] = 0.1;//0.5;
|
|
times[0] = 0.0;
|
|
times[1] = 0.5;//0.294118;
|
|
times[2] = 1.0;
|
|
};
|
|
|
|
datablock ParticleEmitterData(RocketLauncherfiring2Emitter)
|
|
{
|
|
ejectionPeriodMS = 15;//75;
|
|
periodVarianceMS = 5;
|
|
ejectionVelocity = 1;
|
|
ejectionOffset = 0.0;
|
|
velocityVariance = 0;
|
|
thetaMin = 0.0;
|
|
thetaMax = 180;//10.0;
|
|
particles = "RocketLauncherfiring2Particle";
|
|
blendStyle = "NORMAL";
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Ammo Item
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ItemData(RocketLauncherAmmo)
|
|
{
|
|
// Mission editor category
|
|
category = "Ammo";
|
|
|
|
// Add the Ammo namespace as a parent. The ammo namespace provides
|
|
// common ammo related functions and hooks into the inventory system.
|
|
className = "Ammo";
|
|
|
|
// Basic Item properties
|
|
shapeFile = "art/shapes/weapons/SwarmGun/rocket.dts";
|
|
mass = 2;
|
|
elasticity = 0.2;
|
|
friction = 0.6;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
pickUpName = "Rockets";
|
|
maxInventory = 20;
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Weapon Item. This is the item that exists in the world,
|
|
// i.e. when it's been dropped, thrown or is acting as re-spawnable item.
|
|
// When the weapon is mounted onto a shape, the Image is used.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ItemData(RocketLauncher)
|
|
{
|
|
// Mission editor category
|
|
category = "Weapon";
|
|
|
|
// Hook into Item Weapon class hierarchy. The weapon namespace
|
|
// provides common weapon handling functions in addition to hooks
|
|
// into the inventory system.
|
|
className = "Weapon";
|
|
|
|
// Basic Item properties
|
|
shapefile = "art/shapes/weapons/SwarmGun/swarmgun.dts";
|
|
mass = 5;
|
|
elasticity = 0.2;
|
|
friction = 0.6;
|
|
emap = true;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
pickUpName = "SwarmGun";
|
|
description = "RocketLauncher";
|
|
image = RocketLauncherImage;
|
|
|
|
// weaponHUD
|
|
previewImage = 'swarmer.png';
|
|
reticle = 'reticle_rocketlauncher';
|
|
zoomReticle = 'bino';
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Image which does all the work. Images do not normally exist in
|
|
// the world, they can only be mounted on ShapeBase objects.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
datablock ShapeBaseImageData(RocketLauncherImage)
|
|
{
|
|
// Basic Item properties
|
|
shapefile = "art/shapes/weapons/SwarmGun/swarmgun.dts";
|
|
emap = true;
|
|
|
|
// Specify mount point & offset for 3rd person, and eye offset
|
|
// for first person rendering.
|
|
mountPoint = 0;
|
|
offset = "0.0 0.15 0.025";
|
|
eyeOffset = "0.25 0.6 -0.4"; // 0.25=right/left 0.5=forward/backward, -0.5=up/down
|
|
|
|
// When firing from a point offset from the eye, muzzle correction
|
|
// will adjust the muzzle vector to point to the eye LOS point.
|
|
// Since this weapon doesn't actually fire from the muzzle point,
|
|
// we need to turn this off.
|
|
correctMuzzleVector = false;
|
|
|
|
// Add the WeaponImage namespace as a parent, WeaponImage namespace
|
|
// provides some hooks into the inventory system.
|
|
className = "WeaponImage";
|
|
|
|
// Projectile && Ammo.
|
|
item = RocketLauncher;
|
|
ammo = RocketLauncherAmmo;
|
|
projectile = RocketLauncherProjectile;
|
|
wetProjectile = RocketWetProjectile;
|
|
projectileType = Projectile;
|
|
|
|
// shell casings
|
|
casing = RocketlauncherShellCasing;
|
|
shellExitDir = "1.0 0.3 1.0";
|
|
shellExitOffset = "0.15 -0.56 -0.1";
|
|
shellExitVariance = 15.0;
|
|
shellVelocity = 3.0;
|
|
|
|
// Let there be light - NoLight, ConstantLight, PulsingLight, WeaponFireLight.
|
|
lightType = "WeaponFireLight";
|
|
lightColor = "1.0 1.0 0.9";
|
|
lightDuration = 200;
|
|
lightRadius = 10;
|
|
|
|
// Images have a state system which controls how the animations
|
|
// are run, which sounds are played, script callbacks, etc. This
|
|
// state system is downloaded to the client so that clients can
|
|
// predict state changes and animate accordingly. The following
|
|
// system supports basic ready->fire->reload transitions as
|
|
// well as a no-ammo->dryfire idle state.
|
|
|
|
// Initial start up state
|
|
stateName[0] = "Preactivate";
|
|
stateTransitionOnLoaded[0] = "Activate";
|
|
stateTransitionOnNoAmmo[0] = "NoAmmo";
|
|
|
|
// Activating the gun.
|
|
// Called when the weapon is first mounted and there is ammo.
|
|
stateName[1] = "Activate";
|
|
stateTransitionOnTimeout[1] = "Ready";
|
|
stateTimeoutValue[1] = 0.6;
|
|
stateSequence[1] = "Activate";
|
|
|
|
// Ready to fire, just waiting for the trigger
|
|
stateName[2] = "Ready";
|
|
stateTransitionOnNoAmmo[2] = "NoAmmo";
|
|
stateTransitionOnTriggerDown[2] = "CheckWet";
|
|
stateTransitionOnAltTriggerDown[2] = "CheckWetAlt";
|
|
stateSequence[2] = "Ready";
|
|
|
|
// Fire the weapon. Calls the fire script which does the actual work.
|
|
stateName[3] = "Fire";
|
|
stateTransitionOnTimeout[3] = "PostFire";
|
|
stateTimeoutValue[3] = 0.9;
|
|
stateFire[3] = true;
|
|
stateRecoil[3] = LightRecoil;
|
|
stateAllowImageChange[3] = false;
|
|
stateSequence[3] = "Fire";
|
|
stateScript[3] = "onFire";
|
|
stateSound[3] = RocketLauncherFireSound;
|
|
stateEmitter[3] = RocketLauncherfiring1Emitter;
|
|
stateEmitterTime[3] = 0.6;
|
|
|
|
// Check ammo
|
|
stateName[4] = "PostFire";
|
|
stateTransitionOnAmmo[4] = "Reload";
|
|
stateTransitionOnNoAmmo[4] = "NoAmmo";
|
|
|
|
// Play the reload animation, and transition into
|
|
stateName[5] = "Reload";
|
|
stateTransitionOnTimeout[5] = "Ready";
|
|
stateTimeoutValue[5] = 0.9;
|
|
stateAllowImageChange[5] = false;
|
|
stateSequence[5] = "Reload";
|
|
stateEjectShell[5] = false; // set to true to enable shell casing eject
|
|
stateSound[5] = RocketLauncherReloadSound;
|
|
stateEmitter[5] = RocketLauncherfiring2Emitter;
|
|
stateEmitterTime[5] = 2.4;
|
|
|
|
// No ammo in the weapon, just idle until something shows up.
|
|
// Play the dry fire sound if the trigger iS pulled.
|
|
stateName[6] = "NoAmmo";
|
|
stateTransitionOnAmmo[6] = "Reload";
|
|
stateSequence[6] = "NoAmmo";
|
|
stateTransitionOnTriggerDown[6] = "DryFire";
|
|
|
|
// No ammo dry fire
|
|
stateName[7] = "DryFire";
|
|
stateTimeoutValue[7] = 1.0;
|
|
stateTransitionOnTimeout[7] = "NoAmmo";
|
|
stateSound[7] = RocketLauncherFireEmptySound;
|
|
|
|
// Check if wet
|
|
stateName[8] = "CheckWet";
|
|
stateTransitionOnWet[8] = "WetFire";
|
|
stateTransitionOnNotWet[8] = "Fire";
|
|
|
|
// Check if alt wet
|
|
stateName[9] = "CheckWetAlt";
|
|
stateTransitionOnWet[9] = "WetFire";
|
|
stateTransitionOnNotWet[9] = "ChargeUp1";
|
|
|
|
// Wet fire
|
|
stateName[10] = "WetFire";
|
|
stateTransitionOnTimeout[10] = "PostFire";
|
|
stateTimeoutValue[10] = 0.9;
|
|
stateFire[10] = true;
|
|
stateRecoil[10] = LightRecoil;
|
|
stateAllowImageChange[10] = false;
|
|
stateSequence[10] = "Fire";
|
|
stateScript[10] = "onWetFire";
|
|
stateSound[10] = RocketLauncherFireSound;
|
|
|
|
// Begin "charge up", 1 in the pipe
|
|
stateName[11] = "ChargeUp1";
|
|
stateScript[11] = "readyLoad";
|
|
stateSound[11] = RocketLauncherIncLoadSound;
|
|
stateTransitionOnAltTriggerUp[11] = "AltFire";
|
|
stateTransitionOnTimeout[11] = "ChargeUp2";
|
|
stateTimeoutValue[11] = 0.8;
|
|
stateWaitForTimeout[11] = false;
|
|
|
|
// Charge up, 2 in the pipe
|
|
stateName[12] = "ChargeUp2";
|
|
stateScript[12] = "incLoad";
|
|
stateSound[12] = RocketLauncherIncLoadSound;
|
|
stateTransitionOnAltTriggerUp[12] = "AltFire";
|
|
stateTransitionOnTimeout[12] = "ChargeUp3";
|
|
stateTimeoutValue[12] = 0.8;
|
|
stateWaitForTimeout[12] = false;
|
|
|
|
// Charge up, 3 in the pipe
|
|
stateName[13] = "ChargeUp3";
|
|
stateScript[13] = "incLoad";
|
|
stateSound[13] = RocketLauncherIncLoadSound;
|
|
stateTransitionOnAltTriggerUp[13] = "AltFire";
|
|
stateTransitionOnTimeout[13] = "Altfire"; // lets force them to fire
|
|
stateTimeOutValue[13] = 1.2;
|
|
stateWaitForTimeout[13] = false;
|
|
|
|
// Alt-fire
|
|
stateName[14] = "AltFire";
|
|
stateTransitionOnTimeout[14] = "PostFire";
|
|
stateTimeoutValue[14] = 1.2;
|
|
stateFire[14] = true;
|
|
stateRecoil[14] = LightRecoil;
|
|
stateAllowImageChange[14] = false;
|
|
stateSequence[14] = "Fire";
|
|
stateScript[14] = "onAltFire";
|
|
stateSound[14] = RocketLauncherFireSound;
|
|
stateEmitter[14] = RocketLauncherfiring1Emitter;
|
|
stateEmitterTime[14] = 1.2;
|
|
};
|