//-------------------------------------- //Smoke Grenade launcher //-------------------------------------- //---------------------------------------------------------------------------- // Bubbles //---------------------------------------------------------------------------- datablock ParticleData(SmokeGrenadeBubbleParticle) { dragCoefficient = 0.0; gravityCoefficient = -0.25; inheritedVelFactor = 0.0; constantAcceleration = 0.0; lifetimeMS = 1500; lifetimeVarianceMS = 600; useInvAlpha = false; textureName = "special/bubbles"; spinRandomMin = -100.0; spinRandomMax = 100.0; colors[0] = "0.7 0.8 1.0 0.4"; colors[1] = "0.7 0.8 1.0 0.4"; colors[2] = "0.7 0.8 1.0 0.0"; sizes[0] = 0.5; sizes[1] = 0.5; sizes[2] = 0.5; times[0] = 0.0; times[1] = 0.5; times[2] = 1.0; }; datablock ParticleEmitterData(SmokeGrenadeBubbleEmitter) { ejectionPeriodMS = 5; periodVarianceMS = 0; ejectionVelocity = 1.0; ejectionOffset = 0.1; velocityVariance = 0.5; thetaMin = 0; thetaMax = 80; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; particles = "GrenadeBubbleParticle"; }; //---------------------------------------------------------------------------- // Debris //---------------------------------------------------------------------------- datablock ParticleData( SmokeGDebrisSmokeParticle ) { dragCoeffiecient = 1.0; gravityCoefficient = 0.0; inheritedVelFactor = 0.2; lifetimeMS = 1000; lifetimeVarianceMS = 100; textureName = "particleTest"; useInvAlpha = true; spinRandomMin = -60.0; spinRandomMax = 60.0; colors[0] = "0.4 0.4 0.4 1.0"; colors[1] = "0.3 0.3 0.3 0.5"; colors[2] = "0.0 0.0 0.0 0.0"; sizes[0] = 0.0; sizes[1] = 1.0; sizes[2] = 1.0; times[0] = 0.0; times[1] = 0.5; times[2] = 1.0; }; datablock ParticleEmitterData( SmokeGDebrisSmokeEmitter ) { ejectionPeriodMS = 7; periodVarianceMS = 1; ejectionVelocity = 1.0; // A little oomph at the back end velocityVariance = 0.2; thetaMin = 0.0; thetaMax = 40.0; particles = "SmokeGDebrisSmokeParticle"; }; datablock DebrisData( SmokeGrenadeDebris ) { emitters[0] = SmokeGDebrisSmokeEmitter; explodeOnMaxBounce = true; elasticity = 0.4; friction = 0.2; lifetime = 0.3; lifetimeVariance = 0.02; numBounces = 1; }; //-------------------------------------------------------------------------- // Splash //-------------------------------------------------------------------------- datablock ParticleData( SmokeGrenadeSplashParticle ) { dragCoefficient = 1; gravityCoefficient = 0.0; inheritedVelFactor = 0.2; constantAcceleration = -1.4; lifetimeMS = 300; lifetimeVarianceMS = 0; textureName = "special/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.05; sizes[1] = 0.2; sizes[2] = 0.2; times[0] = 0.0; times[1] = 0.5; times[2] = 1.0; }; datablock ParticleEmitterData( SmokeGrenadeSplashEmitter ) { ejectionPeriodMS = 4; periodVarianceMS = 0; ejectionVelocity = 4; velocityVariance = 1.0; ejectionOffset = 0.0; thetaMin = 0; thetaMax = 50; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; orientParticles = true; lifetimeMS = 100; particles = "BlasterSplashParticle"; }; datablock SplashData(SmokeGrenadeSplash) { numSegments = 15; ejectionFreq = 15; ejectionAngle = 40; ringLifetime = 0.35; lifetimeMS = 300; velocity = 3.0; startRadius = 0.0; acceleration = -3.0; texWrap = 5.0; texture = "special/water2"; emitter[0] = BlasterSplashEmitter; colors[0] = "0.7 0.8 1.0 1.0"; colors[1] = "0.7 0.8 1.0 1.0"; colors[2] = "0.7 0.8 1.0 1.0"; colors[3] = "0.7 0.8 1.0 1.0"; times[0] = 0.0; times[1] = 0.4; times[2] = 0.8; times[3] = 1.0; }; //-------------------------------------------------------------------------- // Particle effects //-------------------------------------- datablock ParticleData(SmokeGrenadeSmokeParticle) { dragCoeffiecient = 0.0; gravityCoefficient = -0.2; // rises slowly inheritedVelFactor = 0.00; lifetimeMS = 700; // lasts 2 second lifetimeVarianceMS = 150; // ...more or less textureName = "particleTest"; useInvAlpha = true; spinRandomMin = -30.0; spinRandomMax = 30.0; colors[0] = "0.9 0.9 0.9 1.0"; colors[1] = "0.6 0.6 0.6 1.0"; colors[2] = "0.4 0.4 0.4 0.0"; sizes[0] = 0.25; sizes[1] = 1.0; sizes[2] = 3.0; times[0] = 0.0; times[1] = 0.2; times[2] = 1.0; }; datablock ParticleEmitterData(SmokeGrenadeSmokeEmitter) { ejectionPeriodMS = 15; periodVarianceMS = 5; ejectionVelocity = 1.25; velocityVariance = 0.50; thetaMin = 0.0; thetaMax = 90.0; particles = "SmokeGrenadeSmokeParticle"; }; datablock ParticleData(SmokeGrenadeDust) { dragCoefficient = 0.25; gravityCoefficient = -0.00; inheritedVelFactor = 0.0; constantAcceleration = 0.0; lifetimeMS = 1000; lifetimeVarianceMS = 100; useInvAlpha = true; spinRandomMin = -90.0; spinRandomMax = 500.0; textureName = "particleTest"; colors[0] = "0.3 0.3 0.3 0.5"; colors[1] = "0.3 0.3 0.3 0.5"; colors[2] = "0.3 0.3 0.3 0.0"; sizes[0] = 3.2; sizes[1] = 4.6; sizes[2] = 5.0; times[0] = 0.0; times[1] = 0.7; times[2] = 1.0; }; datablock ParticleEmitterData(SmokeGrenadeDustEmitter) { ejectionPeriodMS = 5; periodVarianceMS = 0; ejectionVelocity = 15.0; velocityVariance = 0.0; ejectionOffset = 0.0; thetaMin = 85; thetaMax = 85; phiReferenceVel = 0; phiVariance = 360; overrideAdvances = false; lifetimeMS = 250; particles = "SmokeGrenadeDust"; }; datablock ParticleData(SmokeGrenadeExplosionSmoke) { dragCoeffiecient = 0.2; gravityCoefficient = -0.05; // rises slowly inheritedVelFactor = 0.025; lifetimeMS = 5000; lifetimeVarianceMS = 0; textureName = "particleTest"; useInvAlpha = true; spinRandomMin = -200.0; spinRandomMax = 200.0; textureName = "special/Smoke/smoke_001"; colors[0] = "0.7 0.7 0.7 1.0"; colors[1] = "0.2 0.2 0.2 1.0"; colors[2] = "0.1 0.1 0.1 0.0"; sizes[0] = 2.0; sizes[1] = 6.0; sizes[2] = 15.0; times[0] = 0.0; times[1] = 0.5; times[2] = 1.0; }; datablock ParticleEmitterData(SmokeGExplosionSmokeEmitter) { ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 5.25; velocityVariance = 0.5; thetaMin = 0.0; thetaMax = 180.0; lifetimeMS = 1500; particles = "SmokeGrenadeExplosionSmoke"; }; datablock ParticleEmitterData(SmokeGProjSmokeEmitter) { ejectionPeriodMS = 3; periodVarianceMS = 0; ejectionVelocity = 5.25; velocityVariance = 0.5; thetaMin = 0.0; thetaMax = 180.0; // lifetimeMS = 1500; particles = "SmokeGrenadeExplosionSmoke"; }; datablock ParticleData(SmokeGrenadeSparks) { dragCoefficient = 1; gravityCoefficient = 0.0; inheritedVelFactor = 0.2; constantAcceleration = 0.0; lifetimeMS = 500; lifetimeVarianceMS = 350; textureName = "special/bigspark"; colors[0] = "0.56 0.36 0.26 1.0"; colors[1] = "0.56 0.36 0.26 1.0"; colors[2] = "1.0 0.36 0.26 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(SmokeGrenadeSparksEmitter) { 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 = "SmokeGrenadeSparks"; }; //---------------------------------------------------- // Explosion //---------------------------------------------------- datablock ExplosionData(SmokeGrenadeExplosion) { soundProfile = GrenadeExplosionSound; faceViewer = true; explosionScale = "0.8 0.8 0.8"; debris = GrenadeDebris; debrisThetaMin = 10; debrisThetaMax = 50; debrisNum = 8; debrisVelocity = 26.0; debrisVelocityVariance = 7.0; emitter[0] = SmokeGrenadeDustEmitter; emitter[1] = SmokeGExplosionSmokeEmitter; emitter[2] = SmokeGrenadeSparksEmitter; shakeCamera = true; camShakeFreq = "10.0 6.0 9.0"; camShakeAmp = "20.0 20.0 20.0"; camShakeDuration = 0.5; camShakeRadius = 20.0; }; //-------------------------------------------------------------------------- // Projectile //-------------------------------------- datablock GrenadeProjectileData(BasicSmokeGrenade) { projectileShapeName = "grenade_projectile.dts"; emitterDelay = -1; directDamage = 0.0; hasDamageRadius = false; indirectDamage = 0.40; // damageRadius = 0.0; radiusDamageType = $DamageType::Grenade; // kickBackStrength = 1500; bubbleEmitTime = 1.0; sound = GrenadeProjectileSound; explosion = "SmokeGrenadeExplosion"; underwaterExplosion = "SmokeGrenadeExplosion"; velInheritFactor = 0.5; splash = SmokeGrenadeSplash; // baseEmitter = SmokeGrenadeSmokeEmitter; baseEmitter = SmokeGProjSmokeEmitter; bubbleEmitter = SmokeGrenadeBubbleEmitter; grenadeElasticity = 0.35; grenadeFriction = 0.2; armingDelayMS = 15000; muzzleVelocity = 47.00; drag = 0.1; }; //-------------------------------------------------------------------------- // Ammo //-------------------------------------- datablock ItemData(SmokeGrenadeLauncherAmmo) { className = Ammo; catagory = "Ammo"; shapeFile = "ammo_grenade.dts"; mass = 1; elasticity = 0.2; friction = 0.6; pickupRadius = 2; pickUpName = "some smoke grenade launcher ammo"; computeCRC = true; emap = true; }; //-------------------------------------------------------------------------- // Weapon //-------------------------------------- datablock ItemData(SmokeGrenadeLauncher) { className = Weapon; catagory = "Spawn Items"; shapeFile = "weapon_grenade_launcher.dts"; image = SmokeGrenadeLauncherImage; mass = 1; elasticity = 0.2; friction = 0.6; pickupRadius = 2; pickUpName = "a smoke grenade launcher"; computeCRC = true; }; datablock ShapeBaseImageData(SmokeGrenadeLauncherImage) { className = WeaponImage; shapeFile = "weapon_grenade_launcher.dts"; item = SmokeGrenadeLauncher; ammo = SmokeGrenadeLauncherAmmo; offset = "0 0 0"; emap = true; projectile = BasicSmokeGrenade; projectileType = GrenadeProjectile; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; stateTimeoutValue[0] = 0.5; stateSequence[0] = "Activate"; stateSound[0] = GrenadeSwitchSound; stateName[1] = "ActivateReady"; stateTransitionOnLoaded[1] = "Ready"; stateTransitionOnNoAmmo[1] = "NoAmmo"; stateName[2] = "Ready"; stateTransitionOnNoAmmo[2] = "NoAmmo"; stateTransitionOnTriggerDown[2] = "Fire"; stateName[3] = "Fire"; stateTransitionOnTimeout[3] = "Reload"; stateTimeoutValue[3] = 0.4; stateFire[3] = true; stateRecoil[3] = LightRecoil; stateAllowImageChange[3] = false; stateSequence[3] = "Fire"; stateScript[3] = "onFire"; stateSound[3] = GrenadeFireSound; stateName[4] = "Reload"; stateTransitionOnNoAmmo[4] = "NoAmmo"; stateTransitionOnTimeout[4] = "Ready"; stateTimeoutValue[4] = 5.0; stateAllowImageChange[4] = false; stateSequence[4] = "Reload"; stateSound[4] = GrenadeReloadSound; stateName[5] = "NoAmmo"; stateTransitionOnAmmo[5] = "Reload"; stateSequence[5] = "NoAmmo"; stateTransitionOnTriggerDown[5] = "DryFire"; stateName[6] = "DryFire"; stateSound[6] = GrenadeDryFireSound; stateTimeoutValue[6] = 1.5; stateTransitionOnTimeout[6] = "NoAmmo"; };