TWM2/scripts/do_not_delete/Nuclear_blast.cs

1100 lines
27 KiB
C#
Raw Normal View History

2014-02-26 19:54:04 +00:00
//--------------------------------------
// Arrow IV Nuclear Launcher
//--------------------------------------
//-----------------------------------------
//-----------------------------------------
//Copyright (C) Dave "Uranium - 235" Schutz
//-----------------------------------------
//-----------------------------------------
//--------------------------------------------------------------------------
// Sounds
//--------------------------------------
datablock AudioProfile(NuclearSwitchSound)
{
filename = "fx/weapons/missile_launcher_activate.wav";
description = AudioClosest3d;
preload = true;
};
datablock AudioProfile(NuclearProjectileSound)
{
filename = "fx/weapons/missile_projectile.wav";
description = ProjectileLooping3d;
preload = true;
};
datablock AudioProfile(NuclearReloadSound)
{
filename = "fx/weapons/weapon.missilereload.wav";
description = AudioClosest3d;
preload = true;
};
datablock AudioProfile(NuclearLockSound)
{
filename = "fx/weapons/missile_launcher_searching.WAV";
description = AudioClosest3d;
preload = true;
};
datablock AudioProfile(NuclearDryFireSound)
{
filename = "fx/weapons/missile_launcher_dryfire.wav";
description = AudioClose3d;
preload = true;
};
datablock AudioProfile(NukeDeathSound)
{
filename = "voice/derm1/gbl.brag.wav";
description = AudioClose3d;
preload = true;
};
datablock AudioProfile(NuclearFireSound)
{
filename = "fx/weapons/grenade_flash_explode.wav";
description = AudioDefault3d;
preload = true;
};
datablock AudioProfile(NuclearExplosionSound)
{
filename = "fx/vehicles/bomber_bomb_impact.wav";
description = AudioBIGExplosion3d;
preload = true;
};
//----------------------------------------------------------------------------
// Explosion smoke particles
//----------------------------------------------------------------------------
datablock ParticleData(NuclearSmokeParticle)
{
dragCoeffiecient = 0.0;
gravityCoefficient = -0.02;
inheritedVelFactor = 0.1;
lifetimeMS = 8200;
lifetimeVarianceMS = 100;
textureName = "special/cloudFlash";
useInvAlpha = false;
spinRandomMin = -90.0;
spinRandomMax = 90.0;
colors[0] = "1.0 0.75 0.0 0.0";
colors[1] = "0.7 0.7 0.7 1.0";
colors[2] = "0.5 0.5 0.5 0.0";
sizes[0] = 4;
sizes[1] = 6;
sizes[2] = 8;
times[0] = 0.0;
times[1] = 0.1;
times[2] = 1.0;
};
datablock ParticleEmitterData(NuclearSmokeEmitter)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 1.5;
velocityVariance = 0.3;
thetaMin = 0.0;
thetaMax = 25.0;
particles = "NuclearSmokeParticle";
};
datablock ParticleData(NuclearFireParticle)
{
dragCoeffiecient = 0.0;
gravityCoefficient = 0.0;
inheritedVelFactor = 1.0;
lifetimeMS = 1000;
lifetimeVarianceMS = 000;
textureName = "special/cloudFlash";
spinRandomMin = -135;
spinRandomMax = 135;
colors[0] = "1.0 0.75 0.2 1.0";
colors[1] = "1.0 0.5 0.0 1.0";
colors[2] = "1.0 0.40 0.0 0.0";
sizes[0] = 2;
sizes[1] = 4;
sizes[2] = 5.5;
times[0] = 0.0;
times[1] = 0.3;
times[2] = 1.0;
};
datablock ParticleEmitterData(NuclearFireEmitter)
{
ejectionPeriodMS = 15;
periodVarianceMS = 0;
ejectionVelocity = 15.0;
velocityVariance = 0.0;
thetaMin = 0.0;
thetaMax = 0.0;
particles = "NuclearFireParticle";
};
//---------------------------------------------------------------------------
// Shockwaves
//---------------------------------------------------------------------------
datablock ShockwaveData(NuclearShockwave)
{
width = 5;
numSegments = 20;
numVertSegments = 4;
velocity = 100;
acceleration = -10.0; // was 40
lifetimeMS = 8200;
height = 2.0; // was 1.0
verticalCurve = 0.5;
mapToTerrain = true;
renderBottom = true;
texture[0] = "special/shockwave4";
texture[1] = "special/gradient";
texWrap = 6.0;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
colors[0] = "1.0 0.7 0.5 1.0";
colors[1] = "1.0 0.5 0.2 1.0";
colors[2] = "1.0 0.25 0.1 0.0";
};
datablock ShockwaveData(NuclearShockwave2)
{
width = 20.0;
numSegments = 50;
numVertSegments = 4;
velocity = 350;
acceleration = 0.0; // was 40
lifetimeMS = 3000;
height = 300.0; // was 1.0
verticalCurve = 0.5;
mapToTerrain = false;
orientToNormal = false;
renderBottom = true;
texture[0] = "special/shockwave4";
texture[1] = "special/gradient";
texWrap = 6.0;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
colors[0] = "0.7 0.7 1.0 1.0";
colors[1] = "0.7 0.7 1.0 0.5";
colors[2] = "0.7 0.7 1.0 1.0";
};
datablock ShockwaveData(NuclearShockwave3)
{
width = 6.0;
numSegments = 32;
numVertSegments = 60;
velocity = 150;
acceleration = -5.0;
lifetimeMS = 8000;
height = 20.0;
verticalCurve = 0.5;
is2D = false;
texture[0] = "special/shockwave4";
texture[1] = "special/gradient";
texWrap = 6.0;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
colors[0] = "0.8 0.8 0.0 0.50";
colors[1] = "0.4 0.4 0.0 0.25";
colors[2] = "0.4 0.4 0.0 0.0";
mapToTerrain = true;
orientToNormal = false;
renderBottom = true;
};
//--------------------------------------------------------------------------
// Particle effects
//--------------------------------------
//----------------------------------------------------
//Condensation
//----------------------------------------------------
datablock ParticleData(NuclearCapSmokeParticle)
{
dragCoefficient = 0.25;
gravityCoefficient = -0.01;
windCoefficient = 0;
inheritedVelFactor = 0.025;
constantAcceleration = 0;
lifetimeMS = 30000;
lifetimeVarianceMS = 100;
useInvAlpha = 0;
spinRandomMin = -90;
spinRandomMax = 90;
textureName = "special/cloudFlash";
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] = 50;
sizes[1] = 50;
sizes[2] = 50;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(NuclearCapSmokeEmitter)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 40.0;
velocityVariance = 5;
ejectionOffset = 0;
thetaMin = 90;
thetaMax = 180;
phiReferenceVel = 0;
phiVariance = 360;
lifeTimeMS = 25000;
orientParticles = 0;
orientOnVelocity = 1;
particles = "NuclearCapSmokeParticle";
};
datablock ParticleData(NuclearStemSmokeParticle)
{
dragCoeffiecient = 0.0;
gravityCoefficient = 0.0;
inheritedVelFactor = 0.0;
windcoefficient = 0.0;
lifetimeMS = 30000;
lifetimeVarianceMS = 100;
textureName = "special/cloudFlash";
useInvAlpha = false;
spinRandomMin = -90.0;
spinRandomMax = 90.0;
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] = 50;
sizes[1] = 50;
sizes[2] = 50;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(NuclearStemSmokeEmitter)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 2.0;
velocityVariance = 1.0;
thetaMin = 0.0;
thetaMax = 90.0;
particles = "NuclearStemSmokeParticle";
};
datablock ParticleData(NuclearDustParticle)
{
dragCoefficient = 1.0;
gravityCoefficient = 0.00;
windcoefficient = 0.0;
inheritedVelFactor = 0.0;
constantAcceleration = 0.0;
lifetimeMS = 30000;
lifetimeVarianceMS = 100;
useInvAlpha = false;
spinRandomMin = -90.0;
spinRandomMax = 90.0;
textureName = "special/cloudFlash";
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] = 50;
sizes[1] = 50;
sizes[2] = 50;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(NuclearDustEmitter)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 150.0;
velocityVariance = 150.0;
ejectionOffset = 0.0;
thetaMin = 85;
thetaMax = 85;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
lifetimeMS = 23000;
particles = "NuclearDustParticle";
};
datablock ParticleData(LargeCondensationParticle)
{
dragCoefficient = 1;
gravityCoefficient = 0;
windCoefficient = 0;
inheritedVelFactor = 0;
constantAcceleration = 0;
lifetimeMS = 12000;
lifetimeVarianceMS = 1000;
useInvAlpha = 0;
spinRandomMin = -90;
spinRandomMax = 500;
textureName = "special/cloudFlash";
times[0] = 0;
times[1] = 0.33;
times[2] = 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] = 30;
sizes[1] = 30;
sizes[2] = 30;
};
datablock ParticleEmitterData(LargeCondensationEmitter)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 2.66935;
velocityVariance = 2.59677;
ejectionOffset = 325;
thetaMin = 90;
thetaMax = 90;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = 0;
lifeTimeMS = 8750;
orientParticles= 0;
orientOnVelocity = 0;
particles = "LargeCondensationParticle";
};
datablock ParticleData(SmallCondensationParticle)
{
dragCoefficient = 1;
gravityCoefficient = -0.01;
windCoefficient = 0;
inheritedVelFactor = 0;
constantAcceleration = 0;
lifetimeMS = 12000;
lifetimeVarianceMS = 1000;
useInvAlpha = 0;
spinRandomMin = -90;
spinRandomMax = 500;
textureName = "special/cloudFlash";
times[0] = 0;
times[1] = 0.5;
times[2] = 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] = 30;
sizes[1] = 30;
sizes[2] = 30;
};
datablock ParticleEmitterData(SmallCondensationEmitter)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 2.66935;
velocityVariance = 2.59677;
ejectionOffset = 275;
thetaMin = 90;
thetaMax = 90;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = 0;
lifeTimeMS = 8750;
orientParticles= 0;
orientOnVelocity = 0;
particles = "SmallCondensationParticle";
};
datablock ParticleData(UpperRingParticle)
{
dragCoefficient = 1.0;
gravityCoefficient = 0;
windCoefficient = 0;
inheritedVelFactor = 0;
constantAcceleration = 0;
lifetimeMS = 12000;
lifetimeVarianceMS = 1000;
useInvAlpha = 0;
spinRandomMin = -90;
spinRandomMax = 500;
textureName = "special/cloudFlash";
times[0] = 0;
times[1] = 0.5;
times[2] = 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] = 30;
sizes[1] = 30;
sizes[2] = 30;
};
datablock ParticleEmitterData(UpperRingEmitter)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 50;
velocityVariance = 50;
ejectionOffset = 150;
thetaMin = 90;
thetaMax = 90;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = 0;
lifeTimeMS = 28000;
orientParticles= 0;
orientOnVelocity = 1;
particles = "UpperRingParticle";
};
datablock ParticleData(NuclearSplashParticle)
{
dragCoefficient = 0;
gravityCoefficient = 0.1;
windCoefficient = 0;
inheritedVelFactor = 0;
constantAcceleration = 0;
lifetimeMS = 10000;
lifetimeVarianceMS = 1000;
useInvAlpha = 0;
spinRandomMin = 0;
spinRandomMax = 0;
textureName = "special/droplet";
times[0] = 0;
times[1] = 0.5;
times[2] = 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] = 4.74194;
sizes[1] = 4.74194;
sizes[2] = 4.74194;
};
datablock ParticleEmitterData(NuclearSplashEmitter)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 10;
velocityVariance = 10;
ejectionOffset = 10;
thetaMin = 0;
thetaMax = 31.2097;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = 0;
lifeTimeMS = 30000;
orientParticles= 1;
orientOnVelocity = 1;
particles = "NuclearSplashParticle";
};
datablock ParticleData(DomeCondensationParticle)
{
dragCoefficient = 0.1;
gravityCoefficient = 0;
windCoefficient = 0;
inheritedVelFactor = 0;
constantAcceleration = 0;
lifetimeMS = 15000;
lifetimeVarianceMS = 0;
useInvAlpha = 0;
spinRandomMin = -90;
spinRandomMax = 500;
textureName = "special/cloudFlash";
times[0] = 0;
times[1] = 0.5;
times[2] = 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] = 7;
sizes[1] = 7;
sizes[2] = 7;
};
datablock ParticleEmitterData(DomeCondensationEmitter)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 10;
velocityVariance = 1;
ejectionOffset = 10;
thetaMin = 90;
thetaMax = 0;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = 0;
lifeTimeMS = 23000;
orientParticles= 0;
orientOnVelocity = 1;
particles = "DomeCondensationParticle";
};
// More explosions
datablock ExplosionData(RingExplosion1)
{
emitter[0] = SmallCondensationEmitter;
shakeCamera = true;
camShakeFreq = "10.0 11.0 10.0";
camShakeAmp = "20.0 20.0 20.0";
camShakeDuration = 0.5;
camShakeRadius = 10.0;
sizes[0] = "0.01 0.01 0.01";
sizes[1] = "0.01 0.01 0.01";
times[0] = 0.0;
times[1] = 1.0;
};
datablock ExplosionData(RingExplosion2)
{
emitter[0] = LargeCondensationEmitter;
shakeCamera = true;
camShakeFreq = "10.0 11.0 10.0";
camShakeAmp = "20.0 20.0 20.0";
camShakeDuration = 0.5;
camShakeRadius = 10.0;
sizes[0] = "0.01 0.01 0.01";
sizes[1] = "0.01 0.01 0.01";
times[0] = 0.0;
times[1] = 1.0;
};
datablock ExplosionData(UpperRingExplosion)
{
emitter[0] = UpperRingEmitter;
shakeCamera = true;
camShakeFreq = "10.0 11.0 10.0";
camShakeAmp = "20.0 20.0 20.0";
camShakeDuration = 0.5;
camShakeRadius = 10.0;
sizes[0] = "0.01 0.01 0.01";
sizes[1] = "0.01 0.01 0.01";
times[0] = 0.0;
times[1] = 1.0;
};
datablock ExplosionData(DustExplosion)
{
emitter[0] = NuclearDustEmitter;
shakeCamera = true;
camShakeFreq = "10.0 11.0 10.0";
camShakeAmp = "20.0 20.0 20.0";
camShakeDuration = 0.5;
camShakeRadius = 10.0;
sizes[0] = "0.01 0.01 0.01";
sizes[1] = "0.01 0.01 0.01";
times[0] = 0.0;
times[1] = 1.0;
};
datablock ExplosionData(CapExplosion)
{
emitter[0] = NuclearCapSmokeEmitter;
shakeCamera = true;
camShakeFreq = "10.0 11.0 10.0";
camShakeAmp = "20.0 20.0 20.0";
camShakeDuration = 0.5;
camShakeRadius = 10.0;
sizes[0] = "0.01 0.01 0.01";
sizes[1] = "0.01 0.01 0.01";
times[0] = 0.0;
times[1] = 1.0;
};
datablock ExplosionData(NuclearSplash)
{
emitter[0] = NuclearSplashEmitter;
shakeCamera = true;
camShakeFreq = "10.0 11.0 10.0";
camShakeAmp = "20.0 20.0 20.0";
camShakeDuration = 0.5;
camShakeRadius = 10.0;
sizes[0] = "0.01 0.01 0.01";
sizes[1] = "0.01 0.01 0.01";
times[0] = 0.0;
times[1] = 1.0;
};
datablock ExplosionData(DomeCondensationExplosion)
{
emitter[0] = DomeCondensationEmitter;
shakeCamera = true;
camShakeFreq = "10.0 11.0 10.0";
camShakeAmp = "20.0 20.0 20.0";
camShakeDuration = 0.5;
camShakeRadius = 10.0;
sizes[0] = "0.01 0.01 0.01";
sizes[1] = "0.01 0.01 0.01";
times[0] = 0.0;
times[1] = 1.0;
};
//---------------------------------------------------------------------------
// Explosions
//---------------------------------------------------------------------------
datablock ExplosionData(NuclearExplosion1)
{
shockwave = NuclearShockwave2;
shockwaveOnTerrain = false;
explosionShape = "effect_plasma_explosion.dts";
playSpeed = 0.05;
soundProfile = NuclearExplosionSound;
faceViewer = true;
sizes[0] = "100.0 100.0 100.0";
shakeCamera = true;
camShakeFreq = "6.0 7.0 7.0";
camShakeAmp = "100.0 100.0 100.0";
camShakeDuration = 1.0;
camShakeRadius = 7.0;
};
datablock ExplosionData(NuclearExplosion2)
{
shockwave = NuclearShockwave;
shockwaveOnTerrain = false;
explosionShape = "effect_plasma_explosion.dts";
playSpeed = 0.05;
soundProfile = NuclearExplosionSound;
faceViewer = true;
sizes[0] = "100.0 100.0 100.0";
shakeCamera = true;
camShakeFreq = "6.0 7.0 7.0";
camShakeAmp = "70.0 70.0 70.0";
camShakeDuration = 1.0;
camShakeRadius = 7.0;
};
datablock ExplosionData(NuclearExplosion3)
{
explosionShape = "effect_plasma_explosion.dts";
playSpeed = 0.05;
soundProfile = NuclearExplosionSound;
faceViewer = true;
shockwave = NuclearShockwave3;
shockwaveOnTerrain = false;
sizes[0] = "150.0 150.0 150.0";
shakeCamera = true;
camShakeFreq = "6.0 7.0 7.0";
camShakeAmp = "70.0 70.0 70.0";
camShakeDuration = 1.0;
camShakeRadius = 7.0;
};
datablock ExplosionData(NuclearExplosion4)
{
explosionShape = "effect_plasma_explosion.dts";
playSpeed = 0.05;
soundProfile = NuclearExplosionSound;
faceViewer = true;
sizes[0] = "250.0 250.0 250.0";
shakeCamera = true;
camShakeFreq = "6.0 7.0 7.0";
camShakeAmp = "70.0 70.0 70.0";
camShakeDuration = 1.0;
camShakeRadius = 7.0;
};
datablock ExplosionData(NuclearMainExplosion)
{
soundProfile = NuclearExplosionSound;
subExplosion[0] = NuclearExplosion1;
subExplosion[1] = NuclearExplosion2;
subExplosion[2] = NuclearExplosion3;
subExplosion[3] = NuclearExplosion4;
subExplosion[4] = DustExplosion;
};
//--------------------------------------------------------------------------
// Projectile
//--------------------------------------
datablock SeekerProjectileData(ShoulderNuclear)
{
casingShapeName = "weapon_missile_casement.dts";
projectileShapeName = "weapon_missile_projectile.dts";
hasDamageRadius = true;
indirectDamage = 1000.0;
damageRadius = 250.0;
radiusDamageType = $DamageType::Missile;
kickBackStrength = 100000;
Underwaterexplosion = "NuclearSplash";
splash = BlasterSplash;
velInheritFactor = 0.5;
depthTolerance = 10.0; // depth at which it uses underwater explosion
baseEmitter = NuclearSmokeEmitter;
delayEmitter = NuclearFireEmitter;
puffEmitter = NuclearPuffEmitter;
bubbleEmitter = GrenadeBubbleEmitter;
bubbleEmitTime = 1.0;
exhaustEmitter = NuclearExhaustEmitter;
exhaustTimeMs = 2000;
exhaustNodeName = "muzzlePoint1";
lifetimeMS = 1800000; //60000
muzzleVelocity = 1.0; //1
maxVelocity = 100.0; //80 100
turningSpeed = 120.0; //110 120
acceleration = 10.0; //200 10
proximityRadius = 5;
terrainAvoidanceSpeed = 480; //180
terrainScanAhead = 25; //25
terrainHeightFail = 3; //12
terrainAvoidanceRadius = 100; //100
flareDistance = 50; //200
flareAngle = 5; //30
sound = NuclearProjectileSound;
hasLight = true;
lightRadius = 5.0;
lightColor = "0.2 0.05 0";
useFlechette = true;
flechetteDelayMs = 550;
casingDeb = FlechetteDebris;
explodeOnWaterImpact = false;
};
datablock LinearProjectileData(RingProjectile1)
{
projectileShapeName = "weapon_missile_Projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = true;
indirectDamage = 1.0;
damageRadius = 500.0;
radiusDamageType = $DamageType::EMP;
kickBackStrength = 0;
sound = discProjectileSound;
explosion = "RingExplosion1";
underwaterExplosion = "RingExplosion1";
splash = DiscSplash;
dryVelocity = 180;
wetVelocity = 180;
velInheritFactor = 0.5;
fizzleTimeMS = 1500;
lifetimeMS = 1500;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 15.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 5000;
activateDelayMS = -1;
};
datablock LinearProjectileData(RingProjectile2)
{
projectileShapeName = "weapon_missile_Projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = true;
indirectDamage = 1000.0;
damageRadius = 250.0;
radiusDamageType = $DamageType::Nuclear;
kickBackStrength = 0;
sound = discProjectileSound;
explosion = "RingExplosion2";
underwaterExplosion = "RingExplosion2";
splash = DiscSplash;
depthTolerance = 10.0; // depth at which it uses underwater explosion
dryVelocity = 180;
wetVelocity = 180;
velInheritFactor = 0.5;
fizzleTimeMS = 1000;
lifetimeMS = 1000;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 15.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 5000;
activateDelayMS = 200;
};
datablock LinearProjectileData(StemProjectile1)
{
projectileShapeName = "weapon_missile_Projectile.dts";
emitterDelay = 1;
directDamage = 0.0;
hasDamageRadius = true;
indirectDamage = 1000.0;
damageRadius = 250.0;
radiusDamageType = $DamageType::Nuclear;
kickBackStrength = 0;
baseEmitter = NuclearStemSmokeEmitter;
dryVelocity = 50;
wetVelocity = 50;
velInheritFactor = 0.5;
fizzleTimeMS = 5000;
lifetimeMS = 5000;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 15.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 5000;
activateDelayMS = 200;
};
datablock LinearProjectileData(StemProjectile2)
{
projectileShapeName = "weapon_missile_Projectile.dts";
emitterDelay = 1;
directDamage = 0.0;
hasDamageRadius = true;
indirectDamage = 1000.0;
damageRadius = 250.0;
radiusDamageType = $DamageType::Nuclear;
kickBackStrength = 0;
explosion = "CapExplosion";
underwaterExplosion = "CapExplosion";
dryVelocity = 50;
wetVelocity = 50;
velInheritFactor = 0.5;
fizzleTimeMS = 4000;
lifetimeMS = 4000;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 15.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 4000;
activateDelayMS = 200;
};
datablock LinearProjectileData(UpperRingProjectile1)
{
projectileShapeName = "weapon_missile_Projectile.dts";
emitterDelay = 1;
directDamage = 0.0;
hasDamageRadius = true;
indirectDamage = 1000.0;
damageRadius = 250.0;
radiusDamageType = $DamageType::Nuclear;
kickBackStrength = 0;
explosion = "UpperRingExplosion";
underwaterExplosion = "UpperRingExplosion";
dryVelocity = 180;
wetVelocity = 180;
velInheritFactor = 0.5;
fizzleTimeMS = 2000;
lifetimeMS = 2000;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 15.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 2000;
activateDelayMS = -1;
};
datablock LinearProjectileData(DustProjectile1)
{
projectileShapeName = "weapon_missile_Projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = true;
indirectDamage = 1000.0;
damageRadius = 250.0;
radiusDamageType = $DamageType::Nuclear;
kickBackStrength = 35000;
maxWhiteout = 2.0;
sound = discProjectileSound;
explosion = "NuclearMainExplosion";
underwaterExplosion = "NuclearMainExplosion";
splash = DiscSplash;
dryVelocity = 180;
wetVelocity = 180;
velInheritFactor = 0.5;
fizzleTimeMS = 100;
lifetimeMS = 100;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 15.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 5000;
activateDelayMS = 200;
};
function ShoulderNuclear::onExplode(%data, %proj, %pos, %mod)
{
if (%data.hasDamageRadius)
RadiusExplosion(%proj, %pos, %data.damageRadius, %data.indirectDamage, %data.kickBackStrength, %proj.sourceObject, %data.radiusDamageType);
for(%i=0;%i<1;%i++)
{
%p = new LinearProjectile() {
dataBlock = RingProjectile2;
initialDirection = "0 0 1";
initialPosition = %pos;
//sourceObject = %projectile.sourceObject;
sourceSlot = %projectile.sourceSlot;
vehicleObject = %projectile.vehicleObject;
};
MissionCleanup.add(%p);
}
%p = new LinearProjectile() {
dataBlock = RingProjectile1;
initialDirection = "0 0 1";
initialPosition = %pos;
//sourceObject = %projectile.sourceObject;
sourceSlot = %projectile.sourceSlot;
vehicleObject = %projectile.vehicleObject;
};
MissionCleanup.add(%p);
%p = new LinearProjectile() {
dataBlock = DustProjectile1;
initialDirection = "0 0 1";
initialPosition = %pos;
//sourceObject = %projectile.sourceObject;
sourceSlot = %projectile.sourceSlot;
vehicleObject = %projectile.vehicleObject;
};
MissionCleanup.add(%p);
%p = new LinearProjectile() {
dataBlock = StemProjectile1;
initialDirection = "0 0 1";
initialPosition = %pos;
//sourceObject = %projectile.sourceObject;
sourceSlot = %projectile.sourceSlot;
vehicleObject = %projectile.vehicleObject;
};
MissionCleanup.add(%p);
%p = new LinearProjectile() {
dataBlock = UpperRingProjectile1;
initialDirection = "0 0 1";
initialPosition = %pos;
//sourceObject = %projectile.sourceObject;
sourceSlot = %projectile.sourceSlot;
vehicleObject = %projectile.vehicleObject;
};
MissionCleanup.add(%p);
%p = new LinearProjectile() {
dataBlock = StemProjectile2;
initialDirection = "0 0 1";
initialPosition = %pos;
//sourceObject = %projectile.sourceObject;
sourceSlot = %projectile.sourceSlot;
vehicleObject = %projectile.vehicleObject;
};
MissionCleanup.add(%p);
}