mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-07-13 15:34:58 +00:00
add DMP2 map pack
This commit is contained in:
parent
91111f8986
commit
f8958bdb1d
1073 changed files with 118893 additions and 1 deletions
|
|
@ -0,0 +1,676 @@
|
|||
//--------------------------------------
|
||||
// TR2Chaingun
|
||||
//--------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Force-Feedback Effects
|
||||
//--------------------------------------
|
||||
datablock EffectProfile(TR2ChaingunSwitchEffect)
|
||||
{
|
||||
effectname = "weapons/TR2Chaingun_activate";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2ChaingunFireEffect)
|
||||
{
|
||||
effectname = "weapons/TR2Chaingun_fire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2ChaingunSpinUpEffect)
|
||||
{
|
||||
effectname = "weapons/TR2Chaingun_spinup";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2ChaingunSpinDownEffect)
|
||||
{
|
||||
effectname = "weapons/TR2Chaingun_spindown";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2ChaingunDryFire)
|
||||
{
|
||||
effectname = "weapons/TR2Chaingun_dryfire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Sounds
|
||||
//--------------------------------------
|
||||
datablock AudioProfile(TR2ChaingunSwitchSound)
|
||||
{
|
||||
filename = "fx/weapons/chaingun_activate.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2ChaingunSwitchEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ChaingunFireSound)
|
||||
{
|
||||
filename = "fx/weapons/chaingun_fire.wav";
|
||||
description = AudioDefaultLooping3d;
|
||||
preload = true;
|
||||
effect = TR2ChaingunFireEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ChaingunProjectile)
|
||||
{
|
||||
filename = "fx/weapons/chaingun_projectile.wav";
|
||||
description = ProjectileLooping3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ChaingunImpact)
|
||||
{
|
||||
filename = "fx/weapons/chaingun_impact.WAV";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ChaingunSpinDownSound)
|
||||
{
|
||||
filename = "fx/weapons/chaingun_spindown.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2ChaingunSpinDownEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ChaingunSpinUpSound)
|
||||
{
|
||||
filename = "fx/weapons/chaingun_spinup.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2ChaingunSpinUpEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ChaingunDryFireSound)
|
||||
{
|
||||
filename = "fx/weapons/chaingun_dryfire.wav";
|
||||
description = AudioClose3d;
|
||||
preload = true;
|
||||
effect = TR2ChaingunDryFire;
|
||||
};
|
||||
|
||||
datablock AudioProfile(ShrikeBlasterProjectileSound)
|
||||
{
|
||||
filename = "fx/vehicles/shrike_blaster_projectile.wav";
|
||||
description = ProjectileLooping3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Splash
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData( TR2ChaingunSplashParticle )
|
||||
{
|
||||
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( TR2ChaingunSplashEmitter )
|
||||
{
|
||||
ejectionPeriodMS = 4;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 1.0;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 50;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 100;
|
||||
particles = "TR2ChaingunSplashParticle";
|
||||
};
|
||||
|
||||
|
||||
datablock SplashData(TR2ChaingunSplash)
|
||||
{
|
||||
numSegments = 10;
|
||||
ejectionFreq = 10;
|
||||
ejectionAngle = 20;
|
||||
ringLifetime = 0.4;
|
||||
lifetimeMS = 400;
|
||||
velocity = 3.0;
|
||||
startRadius = 0.0;
|
||||
acceleration = -3.0;
|
||||
texWrap = 5.0;
|
||||
|
||||
texture = "special/water2";
|
||||
|
||||
emitter[0] = TR2ChaingunSplashEmitter;
|
||||
|
||||
colors[0] = "0.7 0.8 1.0 0.0";
|
||||
colors[1] = "0.7 0.8 1.0 1.0";
|
||||
colors[2] = "0.7 0.8 1.0 0.0";
|
||||
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;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Particle Effects
|
||||
//--------------------------------------
|
||||
datablock ParticleData(TR2ChaingunFireParticle)
|
||||
{
|
||||
dragCoefficient = 2.75;
|
||||
gravityCoefficient = 0.1;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 550;
|
||||
lifetimeVarianceMS = 0;
|
||||
textureName = "particleTest";
|
||||
colors[0] = "0.46 0.36 0.26 1.0";
|
||||
colors[1] = "0.46 0.36 0.26 0.0";
|
||||
sizes[0] = 0.25;
|
||||
sizes[1] = 0.20;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2ChaingunFireEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 6;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 10;
|
||||
velocityVariance = 1.0;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 12;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvance = true;
|
||||
particles = "TR2ChaingunFireParticle";
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Explosions
|
||||
//--------------------------------------
|
||||
datablock ParticleData(TR2ChaingunExplosionParticle1)
|
||||
{
|
||||
dragCoefficient = 0.65;
|
||||
gravityCoefficient = 0.3;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 150;
|
||||
textureName = "particleTest";
|
||||
colors[0] = "0.56 0.36 0.26 1.0";
|
||||
colors[1] = "0.56 0.36 0.26 0.0";
|
||||
sizes[0] = 0.0625;
|
||||
sizes[1] = 0.2;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2ChaingunExplosionEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 0.75;
|
||||
velocityVariance = 0.25;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 60;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
particles = "TR2ChaingunExplosionParticle1";
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(TR2ChaingunImpactSmokeParticle)
|
||||
{
|
||||
dragCoefficient = 0.0;
|
||||
gravityCoefficient = -0.2;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 1000;
|
||||
lifetimeVarianceMS = 200;
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -90.0;
|
||||
spinRandomMax = 90.0;
|
||||
textureName = "particleTest";
|
||||
colors[0] = "0.7 0.7 0.7 0.0";
|
||||
colors[1] = "0.7 0.7 0.7 0.4";
|
||||
colors[2] = "0.7 0.7 0.7 0.0";
|
||||
sizes[0] = 0.5;
|
||||
sizes[1] = 0.5;
|
||||
sizes[2] = 1.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2ChaingunImpactSmoke)
|
||||
{
|
||||
ejectionPeriodMS = 8;
|
||||
periodVarianceMS = 1;
|
||||
ejectionVelocity = 1.0;
|
||||
velocityVariance = 0.5;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 35;
|
||||
overrideAdvances = false;
|
||||
particles = "TR2ChaingunImpactSmokeParticle";
|
||||
lifetimeMS = 50;
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(TR2ChaingunSparks)
|
||||
{
|
||||
dragCoefficient = 1;
|
||||
gravityCoefficient = 0.0;
|
||||
inheritedVelFactor = 0.2;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 300;
|
||||
lifetimeVarianceMS = 0;
|
||||
textureName = "special/spark00";
|
||||
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.6;
|
||||
sizes[1] = 0.2;
|
||||
sizes[2] = 0.05;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2ChaingunSparkEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 4;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 4;
|
||||
velocityVariance = 2.0;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 50;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 100;
|
||||
particles = "TR2ChaingunSparks";
|
||||
};
|
||||
|
||||
|
||||
datablock ExplosionData(TR2ChaingunExplosion)
|
||||
{
|
||||
soundProfile = TR2ChaingunImpact;
|
||||
|
||||
emitter[0] = TR2ChaingunImpactSmoke;
|
||||
emitter[1] = TR2ChaingunSparkEmitter;
|
||||
|
||||
faceViewer = false;
|
||||
};
|
||||
|
||||
|
||||
datablock ShockwaveData(ScoutTR2ChaingunHit)
|
||||
{
|
||||
width = 0.5;
|
||||
numSegments = 13;
|
||||
numVertSegments = 1;
|
||||
velocity = 0.5;
|
||||
acceleration = 2.0;
|
||||
lifetimeMS = 900;
|
||||
height = 0.1;
|
||||
verticalCurve = 0.5;
|
||||
|
||||
mapToTerrain = false;
|
||||
renderBottom = false;
|
||||
orientToNormal = true;
|
||||
|
||||
texture[0] = "special/shockwave5";
|
||||
texture[1] = "special/gradient";
|
||||
texWrap = 3.0;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "0.6 0.6 1.0 1.0";
|
||||
colors[1] = "0.6 0.3 1.0 0.5";
|
||||
colors[2] = "0.0 0.0 1.0 0.0";
|
||||
};
|
||||
|
||||
datablock ParticleData(ScoutTR2ChaingunExplosionParticle1)
|
||||
{
|
||||
dragCoefficient = 2;
|
||||
gravityCoefficient = 0.0;
|
||||
inheritedVelFactor = 0.2;
|
||||
constantAcceleration = -0.0;
|
||||
lifetimeMS = 600;
|
||||
lifetimeVarianceMS = 000;
|
||||
textureName = "special/crescent4";
|
||||
colors[0] = "0.6 0.6 1.0 1.0";
|
||||
colors[1] = "0.6 0.3 1.0 1.0";
|
||||
colors[2] = "0.0 0.0 1.0 0.0";
|
||||
sizes[0] = 0.25;
|
||||
sizes[1] = 0.5;
|
||||
sizes[2] = 1.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(ScoutTR2ChaingunExplosionEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 2;
|
||||
velocityVariance = 1.5;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 80;
|
||||
thetaMax = 90;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 200;
|
||||
particles = "ScoutTR2ChaingunExplosionParticle1";
|
||||
};
|
||||
|
||||
datablock ExplosionData(ScoutTR2ChaingunExplosion)
|
||||
{
|
||||
soundProfile = blasterExpSound;
|
||||
shockwave = ScoutTR2ChaingunHit;
|
||||
emitter[0] = ScoutTR2ChaingunExplosionEmitter;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Particle effects
|
||||
//--------------------------------------
|
||||
|
||||
|
||||
datablock DebrisData( TR2ShellDebris )
|
||||
{
|
||||
shapeName = "weapon_chaingun_ammocasing.dts";
|
||||
|
||||
lifetime = 3.0;
|
||||
|
||||
minSpinSpeed = 300.0;
|
||||
maxSpinSpeed = 400.0;
|
||||
|
||||
elasticity = 0.5;
|
||||
friction = 0.2;
|
||||
|
||||
numBounces = 3;
|
||||
|
||||
fade = true;
|
||||
staticOnMaxBounce = true;
|
||||
snapOnMaxBounce = true;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Projectile
|
||||
//--------------------------------------
|
||||
datablock DecalData(TR2ChaingunDecal1)
|
||||
{
|
||||
sizeX = 0.05;
|
||||
sizeY = 0.05;
|
||||
textureName = "special/bullethole1";
|
||||
};
|
||||
datablock DecalData(TR2ChaingunDecal2) : TR2ChaingunDecal1
|
||||
{
|
||||
textureName = "special/bullethole2";
|
||||
};
|
||||
|
||||
datablock DecalData(TR2ChaingunDecal3) : TR2ChaingunDecal1
|
||||
{
|
||||
textureName = "special/bullethole3";
|
||||
};
|
||||
datablock DecalData(TR2ChaingunDecal4) : TR2ChaingunDecal1
|
||||
{
|
||||
textureName = "special/bullethole4";
|
||||
};
|
||||
datablock DecalData(TR2ChaingunDecal5) : TR2ChaingunDecal1
|
||||
{
|
||||
textureName = "special/bullethole5";
|
||||
};
|
||||
datablock DecalData(TR2ChaingunDecal6) : TR2ChaingunDecal1
|
||||
{
|
||||
textureName = "special/bullethole6";
|
||||
};
|
||||
|
||||
|
||||
datablock TracerProjectileData(TR2ChaingunBullet)
|
||||
{
|
||||
doDynamicClientHits = true;
|
||||
|
||||
directDamage = 0.065;
|
||||
directDamageType = $DamageType::Bullet;
|
||||
explosion = "TR2ChaingunExplosion";
|
||||
splash = TR2ChaingunSplash;
|
||||
|
||||
kickBackStrength = 0.0;
|
||||
sound = TR2ChaingunProjectile;
|
||||
|
||||
dryVelocity = 750.0;
|
||||
wetVelocity = 280.0;
|
||||
velInheritFactor = 1.0;
|
||||
fizzleTimeMS = 3000;
|
||||
lifetimeMS = 3000;
|
||||
explodeOnDeath = false;
|
||||
reflectOnWaterImpactAngle = 0.0;
|
||||
explodeOnWaterImpact = false;
|
||||
deflectionOnWaterImpact = 0.0;
|
||||
fizzleUnderwaterMS = 3000;
|
||||
|
||||
tracerLength = 30.0;//15.0;
|
||||
tracerAlpha = false;
|
||||
tracerMinPixels = 6;
|
||||
tracerColor = 211.0/255.0 @ " " @ 215.0/255.0 @ " " @ 120.0/255.0 @ " 0.75";
|
||||
//211.0/255.0 @ " " @ 215.0/255.0 @ " " @ 120.0/255.0 @ " 0.75";
|
||||
tracerTex[0] = "special/tracer00";
|
||||
tracerTex[1] = "special/tracercross";
|
||||
tracerWidth = 0.20;//0.10;
|
||||
crossSize = 0.20;
|
||||
crossViewAng = 0.990;
|
||||
renderCross = true;
|
||||
|
||||
decalData[0] = TR2ChaingunDecal1;
|
||||
decalData[1] = TR2ChaingunDecal2;
|
||||
decalData[2] = TR2ChaingunDecal3;
|
||||
decalData[3] = TR2ChaingunDecal4;
|
||||
decalData[4] = TR2ChaingunDecal5;
|
||||
decalData[5] = TR2ChaingunDecal6;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Scout Projectile
|
||||
//--------------------------------------
|
||||
datablock TracerProjectileData(ScoutTR2ChaingunBullet)
|
||||
{
|
||||
doDynamicClientHits = true;
|
||||
|
||||
directDamage = 0.125;
|
||||
explosion = "ScoutTR2ChaingunExplosion";
|
||||
splash = TR2ChaingunSplash;
|
||||
|
||||
directDamageType = $DamageType::ShrikeBlaster;
|
||||
kickBackStrength = 0.0;
|
||||
|
||||
sound = ShrikeBlasterProjectileSound;
|
||||
|
||||
dryVelocity = 400.0;
|
||||
wetVelocity = 100.0;
|
||||
velInheritFactor = 1.0;
|
||||
fizzleTimeMS = 1000;
|
||||
lifetimeMS = 1000;
|
||||
explodeOnDeath = false;
|
||||
reflectOnWaterImpactAngle = 0.0;
|
||||
explodeOnWaterImpact = false;
|
||||
deflectionOnWaterImpact = 0.0;
|
||||
fizzleUnderwaterMS = 3000;
|
||||
|
||||
tracerLength = 45.0;
|
||||
tracerAlpha = false;
|
||||
tracerMinPixels = 6;
|
||||
tracerColor = "1.0 1.0 1.0 1.0";
|
||||
tracerTex[0] = "special/shrikeBolt";
|
||||
tracerTex[1] = "special/shrikeBoltCross";
|
||||
tracerWidth = 0.55;
|
||||
crossSize = 0.99;
|
||||
crossViewAng = 0.990;
|
||||
renderCross = true;
|
||||
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Ammo
|
||||
//--------------------------------------
|
||||
|
||||
datablock ItemData(TR2ChaingunAmmo)
|
||||
{
|
||||
className = Ammo;
|
||||
catagory = "Ammo";
|
||||
shapeFile = "ammo_chaingun.dts";
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "some chaingun ammo";
|
||||
|
||||
computeCRC = false;
|
||||
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Weapon
|
||||
//--------------------------------------
|
||||
datablock ShapeBaseImageData(TR2ChaingunImage)
|
||||
{
|
||||
className = WeaponImage;
|
||||
shapeFile = "TR2weapon_chaingun.dts";
|
||||
item = TR2Chaingun;
|
||||
ammo = TR2ChaingunAmmo;
|
||||
projectile = TR2ChaingunBullet;
|
||||
projectileType = TracerProjectile;
|
||||
emap = true;
|
||||
|
||||
casing = TR2ShellDebris;
|
||||
shellExitDir = "1.0 0.3 1.0";
|
||||
shellExitOffset = "0.15 -0.56 -0.1";
|
||||
shellExitVariance = 18.0;
|
||||
shellVelocity = 4.0;
|
||||
|
||||
projectileSpread = 5.5 / 1000.0;
|
||||
|
||||
//--------------------------------------
|
||||
stateName[0] = "Activate";
|
||||
stateSequence[0] = "Activate";
|
||||
stateSound[0] = TR2ChaingunSwitchSound;
|
||||
stateAllowImageChange[0] = false;
|
||||
//
|
||||
stateTimeoutValue[0] = 0.5;
|
||||
stateTransitionOnTimeout[0] = "Ready";
|
||||
stateTransitionOnNoAmmo[0] = "NoAmmo";
|
||||
|
||||
//--------------------------------------
|
||||
stateName[1] = "Ready";
|
||||
stateSpinThread[1] = Stop;
|
||||
//
|
||||
stateTransitionOnTriggerDown[1] = "Spinup";
|
||||
stateTransitionOnNoAmmo[1] = "NoAmmo";
|
||||
|
||||
//--------------------------------------
|
||||
stateName[2] = "NoAmmo";
|
||||
stateTransitionOnAmmo[2] = "Ready";
|
||||
stateSpinThread[2] = Stop;
|
||||
stateTransitionOnTriggerDown[2] = "DryFire";
|
||||
|
||||
//--------------------------------------
|
||||
stateName[3] = "Spinup";
|
||||
stateSpinThread[3] = SpinUp;
|
||||
stateSound[3] = TR2ChaingunSpinupSound;
|
||||
//
|
||||
stateTimeoutValue[3] = 0.5;
|
||||
stateWaitForTimeout[3] = false;
|
||||
stateTransitionOnTimeout[3] = "Fire";
|
||||
stateTransitionOnTriggerUp[3] = "Spindown";
|
||||
|
||||
//--------------------------------------
|
||||
stateName[4] = "Fire";
|
||||
stateSequence[4] = "Fire";
|
||||
stateSequenceRandomFlash[4] = true;
|
||||
stateSpinThread[4] = FullSpeed;
|
||||
stateSound[4] = TR2ChaingunFireSound;
|
||||
//stateRecoil[4] = LightRecoil;
|
||||
stateAllowImageChange[4] = false;
|
||||
stateScript[4] = "onFire";
|
||||
stateFire[4] = true;
|
||||
stateEjectShell[4] = true;
|
||||
//
|
||||
stateTimeoutValue[4] = 0.15;
|
||||
stateTransitionOnTimeout[4] = "Fire";
|
||||
stateTransitionOnTriggerUp[4] = "Spindown";
|
||||
stateTransitionOnNoAmmo[4] = "EmptySpindown";
|
||||
|
||||
//--------------------------------------
|
||||
stateName[5] = "Spindown";
|
||||
stateSound[5] = TR2ChaingunSpinDownSound;
|
||||
stateSpinThread[5] = SpinDown;
|
||||
//
|
||||
stateTimeoutValue[5] = 0.4;//1.0;
|
||||
stateWaitForTimeout[5] = false;//true;
|
||||
stateTransitionOnTimeout[5] = "Ready";
|
||||
stateTransitionOnTriggerDown[5] = "Spinup";
|
||||
|
||||
//--------------------------------------
|
||||
stateName[6] = "EmptySpindown";
|
||||
stateSound[6] = TR2ChaingunSpinDownSound;
|
||||
stateSpinThread[6] = SpinDown;
|
||||
//
|
||||
stateTimeoutValue[6] = 0.5;
|
||||
stateTransitionOnTimeout[6] = "NoAmmo";
|
||||
|
||||
//--------------------------------------
|
||||
stateName[7] = "DryFire";
|
||||
stateSound[7] = TR2ChaingunDryFireSound;
|
||||
stateTimeoutValue[7] = 0.5;
|
||||
stateTransitionOnTimeout[7] = "NoAmmo";
|
||||
};
|
||||
|
||||
datablock ItemData(TR2Chaingun)
|
||||
{
|
||||
className = Weapon;
|
||||
catagory = "Spawn Items";
|
||||
shapeFile = "TR2weapon_chaingun.dts";
|
||||
image = TR2ChaingunImage;
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "a chaingun";
|
||||
|
||||
computeCRC = true;
|
||||
emap = true;
|
||||
};
|
||||
|
||||
484
docs/base/@vl2/TR2final105-server.vl2/scripts/weapons/TR2disc.cs
Normal file
484
docs/base/@vl2/TR2final105-server.vl2/scripts/weapons/TR2disc.cs
Normal file
|
|
@ -0,0 +1,484 @@
|
|||
//--------------------------------------
|
||||
// TR2Disc launcher
|
||||
//--------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Force-Feedback Effects
|
||||
//--------------------------------------
|
||||
datablock EffectProfile(TR2DiscFireEffect)
|
||||
{
|
||||
effectname = "weapons/Tspinfusor_fire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2DiscSwitchEffect)
|
||||
{
|
||||
effectname = "weapons/spinfusor_activate";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2DiscDryFireEffect)
|
||||
{
|
||||
effectname = "weapons/spinfusor_dryfire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2DiscIdleEffect)
|
||||
{
|
||||
effectname = "weapons/spinfusor_idle";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2DiscReloadEffect)
|
||||
{
|
||||
effectname = "weapons/spinfusor_reload";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2DiscExpEffect)
|
||||
{
|
||||
effectname = "explosions/grenade_explode";
|
||||
minDistance = 5;
|
||||
maxDistance = 20;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Sounds
|
||||
//--------------------------------------
|
||||
datablock AudioProfile(TR2DiscSwitchSound)
|
||||
{
|
||||
filename = "fx/weapons/blaster_activate.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2DiscSwitchEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2DiscLoopSound)
|
||||
{
|
||||
filename = "fx/weapons/spinfusor_idle.wav";
|
||||
description = ClosestLooping3d;
|
||||
effect = TR2DiscIdleEffect;
|
||||
};
|
||||
|
||||
|
||||
datablock AudioProfile(TR2DiscFireSound)
|
||||
{
|
||||
filename = "fx/weapons/TR2spinfusor_fire.wav";
|
||||
description = AudioDefault3d;
|
||||
preload = true;
|
||||
effect = TR2DiscFireEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2DiscReloadSound)
|
||||
{
|
||||
filename = "fx/weapons/spinfusor_reload.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2DiscReloadEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2DiscExpSound)
|
||||
{
|
||||
filename = "fx/weapons/spinfusor_impact.wav";
|
||||
description = AudioExplosion3d;
|
||||
preload = true;
|
||||
effect = TR2DiscExpEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(underwaterTR2DiscExpSound)
|
||||
{
|
||||
filename = "fx/weapons/spinfusor_impact_UW.wav";
|
||||
description = AudioExplosion3d;
|
||||
preload = true;
|
||||
effect = TR2DiscExpEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2DiscProjectileSound)
|
||||
{
|
||||
filename = "fx/weapons/spinfusor_projectile.wav";
|
||||
description = ProjectileLooping3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2DiscDryFireSound)
|
||||
{
|
||||
filename = "fx/weapons/spinfusor_dryfire.wav";
|
||||
description = AudioClose3d;
|
||||
preload = true;
|
||||
effect = TR2DiscDryFireEffect;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Explosion
|
||||
//--------------------------------------
|
||||
datablock ParticleData(TR2DiscExplosionBubbleParticle)
|
||||
{
|
||||
dragCoefficient = 0.0;
|
||||
gravityCoefficient = -0.25;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 2000;
|
||||
lifetimeVarianceMS = 750;
|
||||
useInvAlpha = false;
|
||||
textureName = "special/bubbles";
|
||||
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
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] = 1.0;
|
||||
sizes[1] = 1.0;
|
||||
sizes[2] = 1.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.3;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
datablock ParticleEmitterData(TR2DiscExplosionBubbleEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 7;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 1.0;
|
||||
ejectionOffset = 3.0;
|
||||
velocityVariance = 0.5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 80;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
particles = "TR2DiscExplosionBubbleParticle";
|
||||
};
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2DiscExplosion)
|
||||
{
|
||||
explosionShape = "Disc_explosion.dts";
|
||||
soundProfile = underwaterTR2DiscExpSound;
|
||||
|
||||
faceViewer = true;
|
||||
|
||||
sizes[0] = "1.3 1.3 1.3";
|
||||
sizes[1] = "0.75 0.75 0.75";
|
||||
sizes[2] = "0.4 0.4 0.4";
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
emitter[0] = "TR2DiscExplosionBubbleEmitter";
|
||||
|
||||
shakeCamera = false;//true;
|
||||
camShakeFreq = "10.0 11.0 10.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 0.5;
|
||||
camShakeRadius = 10.0;
|
||||
};
|
||||
|
||||
datablock ExplosionData(TR2DiscExplosion)
|
||||
{
|
||||
explosionShape = "Disc_explosion.dts";
|
||||
soundProfile = TR2DiscExpSound;
|
||||
|
||||
faceViewer = true;
|
||||
explosionScale = "2.0 2.0 2.0";//"1 1 1";
|
||||
|
||||
shakeCamera = false;//true;
|
||||
camShakeFreq = "10.0 11.0 10.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 0.5;
|
||||
camShakeRadius = 10.0;
|
||||
|
||||
sizes[0] = "2.5 2.5 2.5";//"1.0 1.0 1.0";
|
||||
sizes[1] = "2.5 2.5 2.5";//"1.0 1.0 1.0";
|
||||
times[0] = 0.0;
|
||||
times[1] = 1.0;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Splash
|
||||
//--------------------------------------------------------------------------
|
||||
datablock ParticleData(TR2DiscMist)
|
||||
{
|
||||
dragCoefficient = 2.0;
|
||||
gravityCoefficient = -0.05;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 400;
|
||||
lifetimeVarianceMS = 100;
|
||||
useInvAlpha = false;
|
||||
spinRandomMin = -90.0;
|
||||
spinRandomMax = 500.0;
|
||||
textureName = "particleTest";
|
||||
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.5;
|
||||
sizes[2] = 0.8;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2DiscMistEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 5;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 3.0;
|
||||
velocityVariance = 2.0;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 85;
|
||||
thetaMax = 85;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
lifetimeMS = 250;
|
||||
particles = "TR2DiscMist";
|
||||
};
|
||||
|
||||
datablock ParticleData( TR2DiscSplashParticle2 )
|
||||
{
|
||||
|
||||
dragCoeffiecient = 0.4;
|
||||
gravityCoefficient = -0.03; // rises slowly
|
||||
inheritedVelFactor = 0.025;
|
||||
|
||||
lifetimeMS = 600;
|
||||
lifetimeVarianceMS = 300;
|
||||
|
||||
textureName = "particleTest";
|
||||
|
||||
useInvAlpha = false;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
|
||||
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] = 1.0;
|
||||
sizes[2] = 2.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData( TR2DiscSplashEmitter2 )
|
||||
{
|
||||
ejectionPeriodMS = 25;
|
||||
ejectionOffset = 0.2;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 2.25;
|
||||
velocityVariance = 0.50;
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 30.0;
|
||||
lifetimeMS = 250;
|
||||
|
||||
particles = "TR2DiscSplashParticle2";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData( TR2DiscSplashParticle )
|
||||
{
|
||||
dragCoefficient = 1;
|
||||
gravityCoefficient = 0.2;
|
||||
inheritedVelFactor = 0.2;
|
||||
constantAcceleration = -0.0;
|
||||
lifetimeMS = 600;
|
||||
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.5;
|
||||
sizes[1] = 0.5;
|
||||
sizes[2] = 0.5;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData( TR2DiscSplashEmitter )
|
||||
{
|
||||
ejectionPeriodMS = 1;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 1.0;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 60;
|
||||
thetaMax = 80;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 100;
|
||||
particles = "TR2DiscSplashParticle";
|
||||
};
|
||||
|
||||
|
||||
datablock SplashData(TR2DiscSplash)
|
||||
{
|
||||
numSegments = 15;
|
||||
ejectionFreq = 0.0001;
|
||||
ejectionAngle = 45;
|
||||
ringLifetime = 0.5;
|
||||
lifetimeMS = 400;
|
||||
velocity = 5.0;
|
||||
startRadius = 0.0;
|
||||
acceleration = -3.0;
|
||||
texWrap = 5.0;
|
||||
|
||||
texture = "special/water2";
|
||||
|
||||
emitter[0] = TR2DiscSplashEmitter;
|
||||
emitter[1] = TR2DiscMistEmitter;
|
||||
|
||||
colors[0] = "0.7 0.8 1.0 0.0";
|
||||
colors[1] = "0.7 0.8 1.0 1.0";
|
||||
colors[2] = "0.7 0.8 1.0 0.0";
|
||||
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;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Projectile
|
||||
//--------------------------------------
|
||||
datablock LinearProjectileData(TR2DiscProjectile)
|
||||
{
|
||||
projectileShapeName = "Disc.dts";
|
||||
emitterDelay = -1;
|
||||
directDamage = 0.0;
|
||||
hasDamageRadius = true;
|
||||
indirectDamage = 0.5;//0.35;//0.50;
|
||||
damageRadius = 15;//11;//7.5;
|
||||
radiusDamageType = $DamageType::Disc;
|
||||
kickBackStrength = 6100;//1750;
|
||||
|
||||
sound = TR2DiscProjectileSound;
|
||||
explosion = "TR2DiscExplosion";
|
||||
underwaterExplosion = "UnderwaterTR2DiscExplosion";
|
||||
splash = TR2DiscSplash;
|
||||
|
||||
dryVelocity = 130;//90;
|
||||
wetVelocity = 120;
|
||||
velInheritFactor = 0.7;
|
||||
fizzleTimeMS = 5000;
|
||||
lifetimeMS = 5000;
|
||||
explodeOnDeath = true;
|
||||
reflectOnWaterImpactAngle = 30.0;//15.0;
|
||||
explodeOnWaterImpact = false;
|
||||
deflectionOnWaterImpact = 0.0;
|
||||
fizzleUnderwaterMS = 5000;
|
||||
|
||||
activateDelayMS = 100;
|
||||
|
||||
hasLight = true;
|
||||
lightRadius = 6.0;
|
||||
lightColor = "0.175 0.175 1.0";
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Ammo
|
||||
//--------------------------------------
|
||||
|
||||
datablock ItemData(TR2DiscAmmo)
|
||||
{
|
||||
className = Ammo;
|
||||
catagory = "Ammo";
|
||||
shapeFile = "ammo_disc.dts";
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "some spinfusor discs";
|
||||
computeCRC = false;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Weapon
|
||||
//--------------------------------------
|
||||
|
||||
datablock ShapeBaseImageData(TR2DiscImage)
|
||||
{
|
||||
className = WeaponImage;
|
||||
shapeFile = "TR2weapon_disc.dts";
|
||||
item = TR2Disc;
|
||||
ammo = TR2DiscAmmo;
|
||||
offset = "0 -0.5 0";
|
||||
emap = true;
|
||||
|
||||
projectileSpread = 0.0 / 1000.0;
|
||||
|
||||
projectile = TR2DiscProjectile;
|
||||
projectileType = LinearProjectile;
|
||||
|
||||
// State Data
|
||||
stateName[0] = "Preactivate";
|
||||
stateTransitionOnLoaded[0] = "Activate";
|
||||
stateTransitionOnNoAmmo[0] = "NoAmmo";
|
||||
|
||||
stateName[1] = "Activate";
|
||||
stateTransitionOnTimeout[1] = "Ready";
|
||||
stateTimeoutValue[1] = 0.5;
|
||||
stateSequence[1] = "Activated";
|
||||
stateSound[1] = TR2DiscSwitchSound;
|
||||
|
||||
stateName[2] = "Ready";
|
||||
stateTransitionOnNoAmmo[2] = "NoAmmo";
|
||||
stateTransitionOnTriggerDown[2] = "Fire";
|
||||
stateSequence[2] = "TR2DiscSpin";
|
||||
stateSound[2] = TR2DiscLoopSound;
|
||||
|
||||
stateName[3] = "Fire";
|
||||
stateTransitionOnTimeout[3] = "Reload";
|
||||
stateTimeoutValue[3] = 1.25;
|
||||
stateFire[3] = true;
|
||||
stateRecoil[3] = LightRecoil;
|
||||
stateAllowImageChange[3] = false;
|
||||
stateSequence[3] = "Fire";
|
||||
stateScript[3] = "onFire";
|
||||
stateSound[3] = TR2DiscFireSound;
|
||||
|
||||
stateName[4] = "Reload";
|
||||
stateTransitionOnNoAmmo[4] = "NoAmmo";
|
||||
stateTransitionOnTimeout[4] = "Ready";
|
||||
stateTimeoutValue[4] = 0.5; // 0.25 load, 0.25 spinup
|
||||
stateAllowImageChange[4] = false;
|
||||
stateSequence[4] = "Reload";
|
||||
stateSound[4] = TR2DiscReloadSound;
|
||||
|
||||
stateName[5] = "NoAmmo";
|
||||
stateTransitionOnAmmo[5] = "Reload";
|
||||
stateSequence[5] = "NoAmmo";
|
||||
stateTransitionOnTriggerDown[5] = "DryFire";
|
||||
|
||||
stateName[6] = "DryFire";
|
||||
stateSound[6] = TR2DiscDryFireSound;
|
||||
stateTimeoutValue[6] = 1.0;
|
||||
stateTransitionOnTimeout[6] = "NoAmmo";
|
||||
};
|
||||
|
||||
datablock ItemData(TR2Disc)
|
||||
{
|
||||
className = Weapon;
|
||||
catagory = "Spawn Items";
|
||||
shapeFile = "TR2weapon_disc.dts";
|
||||
image = TR2DiscImage;
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "a spinfusor";
|
||||
computeCRC = true;
|
||||
emap = true;
|
||||
};
|
||||
|
|
@ -0,0 +1,380 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// grenade (thrown by hand) script
|
||||
// ------------------------------------------------------------------------
|
||||
datablock EffectProfile(TR2GrenadeThrowEffect)
|
||||
{
|
||||
effectname = "weapons/grenade_throw";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2GrenadeSwitchEffect)
|
||||
{
|
||||
effectname = "weapons/generic_switch";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2GrenadeThrowSound)
|
||||
{
|
||||
filename = "fx/weapons/throw_grenade.wav";
|
||||
description = AudioClose3D;
|
||||
preload = true;
|
||||
effect = GrenadeThrowEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2GrenadeSwitchSound)
|
||||
{
|
||||
filename = "fx/weapons/generic_switch.wav";
|
||||
description = AudioClosest3D;
|
||||
preload = true;
|
||||
effect = GrenadeSwitchEffect;
|
||||
};
|
||||
|
||||
//**************************************************************************
|
||||
// Hand Grenade underwater fx
|
||||
//**************************************************************************
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Underwater Hand Grenade Particle effects
|
||||
//--------------------------------------------------------------------------
|
||||
datablock ParticleData(TR2HandGrenadeExplosionBubbleParticle)
|
||||
{
|
||||
dragCoefficient = 0.0;
|
||||
gravityCoefficient = -0.25;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 2000;
|
||||
lifetimeVarianceMS = 750;
|
||||
useInvAlpha = false;
|
||||
textureName = "special/bubbles";
|
||||
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
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.75;
|
||||
sizes[1] = 0.75;
|
||||
sizes[2] = 0.75;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
datablock ParticleEmitterData(TR2HandGrenadeExplosionBubbleEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 7;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 1.0;
|
||||
ejectionOffset = 2.0;
|
||||
velocityVariance = 0.5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 80;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
particles = "TR2HandGrenadeExplosionBubbleParticle";
|
||||
};
|
||||
|
||||
datablock ParticleData(UnderwaterTR2HandGrenadeExplosionSmoke)
|
||||
{
|
||||
dragCoeffiecient = 105.0;
|
||||
gravityCoefficient = -0.0; // rises slowly
|
||||
inheritedVelFactor = 0.025;
|
||||
|
||||
constantAcceleration = -1.0;
|
||||
|
||||
lifetimeMS = 1250;
|
||||
lifetimeVarianceMS = 0;
|
||||
|
||||
textureName = "particleTest";
|
||||
|
||||
useInvAlpha = false;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
textureName = "special/Smoke/smoke_001";
|
||||
|
||||
colors[0] = "0.4 0.4 1.0 1.0";
|
||||
colors[1] = "0.4 0.4 1.0 0.5";
|
||||
colors[2] = "0.0 0.0 0.0 0.0";
|
||||
sizes[0] = 1.0;
|
||||
sizes[1] = 3.0;
|
||||
sizes[2] = 5.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(UnderwaterTR2HandGrenadeExplosionSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 0;
|
||||
|
||||
ejectionVelocity = 5.25;
|
||||
velocityVariance = 0.25;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 180.0;
|
||||
|
||||
lifetimeMS = 250;
|
||||
|
||||
particles = "UnderwaterTR2HandGrenadeExplosionSmoke";
|
||||
};
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(UnderwaterTR2HandGrenadeSparks)
|
||||
{
|
||||
dragCoefficient = 1;
|
||||
gravityCoefficient = 0.0;
|
||||
inheritedVelFactor = 0.2;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 350;
|
||||
textureName = "special/droplet";
|
||||
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.25;
|
||||
sizes[2] = 0.25;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(UnderwaterTR2HandGrenadeSparkEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 3;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 10;
|
||||
velocityVariance = 6.75;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 180;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 100;
|
||||
particles = "UnderwaterTR2HandGrenadeSparks";
|
||||
};
|
||||
|
||||
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2HandGrenadeSubExplosion1)
|
||||
{
|
||||
offset = 1.0;
|
||||
emitter[0] = UnderwaterTR2HandGrenadeExplosionSmokeEmitter;
|
||||
emitter[1] = UnderwaterTR2HandGrenadeSparkEmitter;
|
||||
};
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2HandGrenadeSubExplosion2)
|
||||
{
|
||||
offset = 1.0;
|
||||
emitter[0] = UnderwaterTR2HandGrenadeExplosionSmokeEmitter;
|
||||
emitter[1] = UnderwaterTR2HandGrenadeSparkEmitter;
|
||||
};
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2HandGrenadeExplosion)
|
||||
{
|
||||
soundProfile = TR2GrenadeExplosionSound;
|
||||
|
||||
emitter[0] = UnderwaterTR2HandGrenadeExplosionSmokeEmitter;
|
||||
emitter[1] = UnderwaterTR2HandGrenadeSparkEmitter;
|
||||
emitter[2] = TR2HandGrenadeExplosionBubbleEmitter;
|
||||
|
||||
subExplosion[0] = UnderwaterTR2HandGrenadeSubExplosion1;
|
||||
subExplosion[1] = UnderwaterTR2HandGrenadeSubExplosion2;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "12.0 13.0 11.0";
|
||||
camShakeAmp = "35.0 35.0 35.0";
|
||||
camShakeDuration = 1.0;
|
||||
camShakeRadius = 15.0;
|
||||
};
|
||||
|
||||
//**************************************************************************
|
||||
// Hand Grenade effects
|
||||
//**************************************************************************
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Grenade Particle effects
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData(TR2HandGrenadeExplosionSmoke)
|
||||
{
|
||||
dragCoeffiecient = 105.0;
|
||||
gravityCoefficient = -0.0; // rises slowly
|
||||
inheritedVelFactor = 0.025;
|
||||
|
||||
constantAcceleration = -0.80;
|
||||
|
||||
lifetimeMS = 1250;
|
||||
lifetimeVarianceMS = 0;
|
||||
|
||||
textureName = "particleTest";
|
||||
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
textureName = "special/Smoke/smoke_001";
|
||||
|
||||
colors[0] = "1.0 0.7 0.0 1.0";
|
||||
colors[1] = "0.2 0.2 0.2 1.0";
|
||||
colors[2] = "0.0 0.0 0.0 0.0";
|
||||
sizes[0] = 4.0;//1.0;
|
||||
sizes[1] = 12.0;//3.0;
|
||||
sizes[2] = 20.0;//5.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2HandGrenadeExplosionSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 0;
|
||||
|
||||
ejectionVelocity = 10.25;
|
||||
velocityVariance = 0.25;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 180.0;
|
||||
|
||||
lifetimeMS = 250;
|
||||
|
||||
particles = "TR2HandGrenadeExplosionSmoke";
|
||||
};
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(TR2HandGrenadeSparks)
|
||||
{
|
||||
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] = 3.0;//0.5;
|
||||
sizes[1] = 1.5;//0.25;
|
||||
sizes[2] = 1.0;//0.25;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2HandGrenadeSparkEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 3;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 24;//18;
|
||||
velocityVariance = 6.75;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 180;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 100;
|
||||
particles = "TR2HandGrenadeSparks";
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------
|
||||
// Explosion
|
||||
//----------------------------------------------------
|
||||
|
||||
datablock ExplosionData(TR2HandGrenadeSubExplosion1)
|
||||
{
|
||||
offset = 2.0;
|
||||
emitter[0] = TR2HandGrenadeExplosionSmokeEmitter;
|
||||
emitter[1] = TR2HandGrenadeSparkEmitter;
|
||||
};
|
||||
|
||||
datablock ExplosionData(TR2HandGrenadeSubExplosion2)
|
||||
{
|
||||
offset = 2.0;
|
||||
emitter[0] = TR2HandGrenadeExplosionSmokeEmitter;
|
||||
emitter[1] = TR2HandGrenadeSparkEmitter;
|
||||
};
|
||||
|
||||
datablock ExplosionData(TR2HandGrenadeExplosion)
|
||||
{
|
||||
soundProfile = TR2GrenadeExplosionSound;
|
||||
|
||||
emitter[0] = TR2HandGrenadeExplosionSmokeEmitter;
|
||||
emitter[1] = TR2HandGrenadeSparkEmitter;
|
||||
|
||||
subExplosion[0] = TR2HandGrenadeSubExplosion1;
|
||||
subExplosion[1] = TR2HandGrenadeSubExplosion2;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "12.0 13.0 11.0";
|
||||
camShakeAmp = "35.0 35.0 35.0";
|
||||
camShakeDuration = 1.0;
|
||||
camShakeRadius = 15.0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
datablock ItemData(TR2GrenadeThrown)
|
||||
{
|
||||
className = Weapon;
|
||||
shapeFile = "grenade.dts";
|
||||
mass = 0.35;//0.7;
|
||||
elasticity = 0.2;
|
||||
friction = 1;
|
||||
pickupRadius = 2;
|
||||
maxDamage = 0.5;
|
||||
explosion = TR2HandGrenadeExplosion;
|
||||
underwaterExplosion = UnderwaterTR2HandGrenadeExplosion;
|
||||
indirectDamage = 0.4;
|
||||
damageRadius = 22.0;//10.0;
|
||||
radiusDamageType = $DamageType::Grenade;
|
||||
kickBackStrength = 8000;//2000;
|
||||
|
||||
computeCRC = false;
|
||||
|
||||
};
|
||||
|
||||
datablock ItemData(TR2Grenade)
|
||||
{
|
||||
className = HandInventory;
|
||||
catagory = "Handheld";
|
||||
shapeFile = "grenade.dts";
|
||||
mass = 0.35;//0.7;
|
||||
elasticity = 0.2;
|
||||
friction = 1;
|
||||
pickupRadius = 2;
|
||||
thrownItem = TR2GrenadeThrown;
|
||||
pickUpName = "some grenades";
|
||||
isGrenade = true;
|
||||
|
||||
computeCRC = false;
|
||||
|
||||
};
|
||||
|
||||
function TR2GrenadeThrown::onThrow(%this, %gren)
|
||||
{
|
||||
//AIGrenadeThrow(%gren);
|
||||
%gren.detThread = schedule(2000, %gren, "detonateGrenade", %gren);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,788 @@
|
|||
//--------------------------------------
|
||||
// TR2Grenade launcher
|
||||
//--------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Force-Feedback Effects
|
||||
//--------------------------------------
|
||||
datablock EffectProfile(TR2GrenadeSwitchEffect)
|
||||
{
|
||||
effectname = "weapons/generic_switch";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2GrenadeFireEffect)
|
||||
{
|
||||
effectname = "weapons/grenadelauncher_fire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2GrenadeDryFireEffect)
|
||||
{
|
||||
effectname = "weapons/grenadelauncher_dryfire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2GrenadeReloadEffect)
|
||||
{
|
||||
effectname = "weapons/generic_switch";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2GrenadeExplosionEffect)
|
||||
{
|
||||
effectname = "explosions/grenade_explode";
|
||||
minDistance = 10;
|
||||
maxDistance = 35;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Sounds
|
||||
//--------------------------------------
|
||||
datablock AudioProfile(TR2GrenadeSwitchSound)
|
||||
{
|
||||
filename = "fx/weapons/generic_switch.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2GrenadeSwitchEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2GrenadeFireSound)
|
||||
{
|
||||
filename = "fx/weapons/grenadelauncher_fire.wav";
|
||||
description = AudioDefault3d;
|
||||
preload = true;
|
||||
effect = TR2GrenadeFireEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2GrenadeProjectileSound)
|
||||
{
|
||||
filename = "fx/weapons/grenadelauncher_projectile.wav";
|
||||
description = ProjectileLooping3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2GrenadeReloadSound)
|
||||
{
|
||||
filename = "fx/weapons/generic_switch.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2GrenadeReloadEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2GrenadeExplosionSound)
|
||||
{
|
||||
filename = "fx/weapons/grenade_explode.wav";
|
||||
description = AudioExplosion3d;
|
||||
preload = true;
|
||||
effect = TR2GrenadeExplosionEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(UnderwaterTR2GrenadeExplosionSound)
|
||||
{
|
||||
filename = "fx/weapons/grenade_explode_UW.wav";
|
||||
description = AudioExplosion3d;
|
||||
preload = true;
|
||||
effect = TR2GrenadeExplosionEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2GrenadeDryFireSound)
|
||||
{
|
||||
filename = "fx/weapons/grenadelauncher_dryfire.wav";
|
||||
description = AudioClose3d;
|
||||
preload = true;
|
||||
effect = TR2GrenadeDryFireEffect;
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Underwater fx
|
||||
//----------------------------------------------------------------------------
|
||||
datablock ParticleData(TR2GrenadeExplosionBubbleParticle)
|
||||
{
|
||||
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.0";
|
||||
colors[1] = "0.7 0.8 1.0 0.4";
|
||||
colors[2] = "0.7 0.8 1.0 0.0";
|
||||
sizes[0] = 1.0;
|
||||
sizes[1] = 1.0;
|
||||
sizes[2] = 1.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
datablock ParticleEmitterData(TR2GrenadeExplosionBubbleEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 5;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 1.0;
|
||||
ejectionOffset = 3.0;
|
||||
velocityVariance = 0.5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 80;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
particles = "TR2GrenadeExplosionBubbleParticle";
|
||||
};
|
||||
|
||||
datablock ParticleData(UnderwaterTR2GrenadeDust)
|
||||
{
|
||||
dragCoefficient = 1.0;
|
||||
gravityCoefficient = -0.01;
|
||||
inheritedVelFactor = 0.0;
|
||||
constantAcceleration = -1.1;
|
||||
lifetimeMS = 1000;
|
||||
lifetimeVarianceMS = 100;
|
||||
useInvAlpha = false;
|
||||
spinRandomMin = -90.0;
|
||||
spinRandomMax = 500.0;
|
||||
textureName = "particleTest";
|
||||
colors[0] = "0.6 0.6 1.0 0.5";
|
||||
colors[1] = "0.6 0.6 1.0 0.5";
|
||||
colors[2] = "0.6 0.6 1.0 0.0";
|
||||
sizes[0] = 3.0;
|
||||
sizes[1] = 3.0;
|
||||
sizes[2] = 3.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.7;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(UnderwaterTR2GrenadeDustEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 15;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 15.0;
|
||||
velocityVariance = 0.0;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 70;
|
||||
thetaMax = 70;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
lifetimeMS = 250;
|
||||
particles = "UnderwaterTR2GrenadeDust";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(UnderwaterTR2GrenadeExplosionSmoke)
|
||||
{
|
||||
dragCoeffiecient = 0.4;
|
||||
gravityCoefficient = -0.25; // rises slowly
|
||||
inheritedVelFactor = 0.025;
|
||||
constantAcceleration = -1.1;
|
||||
|
||||
lifetimeMS = 1250;
|
||||
lifetimeVarianceMS = 0;
|
||||
|
||||
textureName = "particleTest";
|
||||
|
||||
useInvAlpha = false;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
textureName = "special/Smoke/smoke_001";
|
||||
|
||||
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(UnderwaterTR2GExplosionSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 15;
|
||||
periodVarianceMS = 0;
|
||||
|
||||
ejectionVelocity = 6.25;
|
||||
velocityVariance = 0.25;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 90.0;
|
||||
|
||||
lifetimeMS = 250;
|
||||
|
||||
particles = "UnderwaterTR2GrenadeExplosionSmoke";
|
||||
};
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(UnderwaterTR2GrenadeSparks)
|
||||
{
|
||||
dragCoefficient = 1;
|
||||
gravityCoefficient = 0.0;
|
||||
inheritedVelFactor = 0.2;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 350;
|
||||
textureName = "special/underwaterSpark";
|
||||
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(UnderwaterTR2GrenadeSparksEmitter)
|
||||
{
|
||||
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 = "UnderwaterTR2GrenadeSparks";
|
||||
};
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2GrenadeExplosion)
|
||||
{
|
||||
soundProfile = UnderwaterTR2GrenadeExplosionSound;
|
||||
|
||||
faceViewer = true;
|
||||
explosionScale = "0.8 0.8 0.8";
|
||||
|
||||
emitter[0] = UnderwaterTR2GrenadeDustEmitter;
|
||||
emitter[1] = UnderwaterTR2GExplosionSmokeEmitter;
|
||||
emitter[2] = UnderwaterTR2GrenadeSparksEmitter;
|
||||
emitter[3] = TR2GrenadeExplosionBubbleEmitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "10.0 6.0 9.0";
|
||||
camShakeAmp = "20.0 20.0 20.0";
|
||||
camShakeDuration = 0.5;
|
||||
camShakeRadius = 20.0;
|
||||
};
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Bubbles
|
||||
//----------------------------------------------------------------------------
|
||||
datablock ParticleData(TR2GrenadeBubbleParticle)
|
||||
{
|
||||
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(TR2GrenadeBubbleEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 5;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 1.0;
|
||||
ejectionOffset = 0.1;
|
||||
velocityVariance = 0.5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 80;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
particles = "TR2GrenadeBubbleParticle";
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Debris
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData( TR2GDebrisSmokeParticle )
|
||||
{
|
||||
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( TR2GDebrisSmokeEmitter )
|
||||
{
|
||||
ejectionPeriodMS = 7;
|
||||
periodVarianceMS = 1;
|
||||
|
||||
ejectionVelocity = 1.0; // A little oomph at the back end
|
||||
velocityVariance = 0.2;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 40.0;
|
||||
|
||||
particles = "TR2GDebrisSmokeParticle";
|
||||
};
|
||||
|
||||
|
||||
datablock DebrisData( TR2GrenadeDebris )
|
||||
{
|
||||
emitters[0] = TR2GDebrisSmokeEmitter;
|
||||
|
||||
explodeOnMaxBounce = true;
|
||||
|
||||
elasticity = 0.4;
|
||||
friction = 0.2;
|
||||
|
||||
lifetime = 0.3;
|
||||
lifetimeVariance = 0.02;
|
||||
|
||||
numBounces = 1;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Splash
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
datablock ParticleData( TR2GrenadeSplashParticle )
|
||||
{
|
||||
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( TR2GrenadeSplashEmitter )
|
||||
{
|
||||
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(TR2GrenadeSplash)
|
||||
{
|
||||
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(TR2GrenadeSmokeParticle)
|
||||
{
|
||||
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;
|
||||
|
||||
// TR2: white
|
||||
colors[0] = "1.0 1.0 1.0 1.0";
|
||||
colors[1] = "0.95 0.95 0.95 1.0";
|
||||
colors[2] = "0.9 0.9 0.9 0.0";
|
||||
|
||||
sizes[0] = 0.7;//0.25;
|
||||
sizes[1] = 2.4;//1.0;
|
||||
sizes[2] = 7.0;//3.0;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.2;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2GrenadeSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 15;
|
||||
periodVarianceMS = 5;
|
||||
|
||||
ejectionVelocity = 1.25;
|
||||
velocityVariance = 0.50;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 90.0;
|
||||
|
||||
particles = "TR2GrenadeSmokeParticle";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(TR2GrenadeDust)
|
||||
{
|
||||
dragCoefficient = 1.0;
|
||||
gravityCoefficient = -0.01;
|
||||
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] = 7.0;//3.2;
|
||||
sizes[1] = 10.0;//4.6;
|
||||
sizes[2] = 11.0;//5.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.7;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2GrenadeDustEmitter)
|
||||
{
|
||||
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 = "TR2GrenadeDust";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(TR2GrenadeExplosionSmoke)
|
||||
{
|
||||
dragCoeffiecient = 0.4;
|
||||
gravityCoefficient = -0.5; // rises slowly
|
||||
inheritedVelFactor = 0.025;
|
||||
|
||||
lifetimeMS = 1250;
|
||||
lifetimeVarianceMS = 0;
|
||||
|
||||
textureName = "particleTest";
|
||||
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -200.0;
|
||||
spinRandomMax = 200.0;
|
||||
|
||||
textureName = "special/Smoke/smoke_001";
|
||||
|
||||
// TR2: Red/orange
|
||||
colors[0] = "0.9 0.7 0.7 1.0";
|
||||
colors[1] = "0.8 0.4 0.2 1.0";
|
||||
colors[2] = "0.6 0.2 0.1 0.0";
|
||||
sizes[0] = 6.0;//2.0;
|
||||
sizes[1] = 18.0;//6.0;
|
||||
sizes[2] = 6.0;//2.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2GExplosionSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 5;
|
||||
periodVarianceMS = 0;
|
||||
|
||||
ejectionVelocity = 6.25;
|
||||
velocityVariance = 0.25;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 90.0;
|
||||
|
||||
lifetimeMS = 250;
|
||||
|
||||
particles = "TR2GrenadeExplosionSmoke";
|
||||
};
|
||||
|
||||
|
||||
|
||||
datablock ParticleData(TR2GrenadeSparks)
|
||||
{
|
||||
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] = 9.0;//0.5;
|
||||
sizes[1] = 9.0;//0.5;
|
||||
sizes[2] = 12.0;//0.75;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2GrenadeSparksEmitter)
|
||||
{
|
||||
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 = "TR2GrenadeSparks";
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------
|
||||
// Explosion
|
||||
//----------------------------------------------------
|
||||
datablock ExplosionData(TR2GrenadeExplosion)
|
||||
{
|
||||
soundProfile = TR2GrenadeExplosionSound;
|
||||
|
||||
faceViewer = true;
|
||||
explosionScale = "3.0 3.0 3.0";//"0.8 0.8 0.8";
|
||||
|
||||
debris = TR2GrenadeDebris;
|
||||
debrisThetaMin = 10;
|
||||
debrisThetaMax = 50;
|
||||
debrisNum = 8;
|
||||
debrisVelocity = 52.0;//26.0;
|
||||
debrisVelocityVariance = 14.0;//7.0;
|
||||
|
||||
emitter[0] = TR2GrenadeDustEmitter;
|
||||
emitter[1] = TR2GExplosionSmokeEmitter;
|
||||
emitter[2] = TR2GrenadeSparksEmitter;
|
||||
|
||||
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(BasicTR2Grenade)
|
||||
{
|
||||
projectileShapeName = "grenade_projectile.dts";
|
||||
emitterDelay = -1;
|
||||
directDamage = 0.0;
|
||||
hasDamageRadius = true;
|
||||
indirectDamage = 0.40;
|
||||
damageRadius = 27;//20.0;
|
||||
radiusDamageType = $DamageType::Grenade;
|
||||
kickBackStrength = 7200;//1500;
|
||||
bubbleEmitTime = 1.0;
|
||||
|
||||
sound = TR2GrenadeProjectileSound;
|
||||
explosion = "TR2GrenadeExplosion";
|
||||
underwaterExplosion = "UnderwaterTR2GrenadeExplosion";
|
||||
velInheritFactor = 0.62;//0.7;//0.5;
|
||||
splash = TR2GrenadeSplash;
|
||||
|
||||
baseEmitter = TR2GrenadeSmokeEmitter;
|
||||
bubbleEmitter = TR2GrenadeBubbleEmitter;
|
||||
|
||||
grenadeElasticity = 0.15;//0.25;//0.35;
|
||||
grenadeFriction = 0.09;//0.2;//0.2;
|
||||
armingDelayMS = 1000;
|
||||
muzzleVelocity = 165;//78;//47.00;
|
||||
drag = 0.09;//0.15;//0.1;
|
||||
gravityMod = 2.75;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Ammo
|
||||
//--------------------------------------
|
||||
|
||||
datablock ItemData(TR2GrenadeLauncherAmmo)
|
||||
{
|
||||
className = Ammo;
|
||||
catagory = "Ammo";
|
||||
shapeFile = "ammo_grenade.dts";
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "some grenade launcher ammo";
|
||||
|
||||
computeCRC = false;
|
||||
emap = true;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Weapon
|
||||
//--------------------------------------
|
||||
datablock ItemData(TR2GrenadeLauncher)
|
||||
{
|
||||
className = Weapon;
|
||||
catagory = "Spawn Items";
|
||||
shapeFile = "TR2weapon_grenade_launcher.dts";
|
||||
image = TR2GrenadeLauncherImage;
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "a grenade launcher";
|
||||
|
||||
computeCRC = true;
|
||||
|
||||
};
|
||||
|
||||
datablock ShapeBaseImageData(TR2GrenadeLauncherImage)
|
||||
{
|
||||
className = WeaponImage;
|
||||
shapeFile = "TR2weapon_grenade_launcher.dts";
|
||||
item = TR2GrenadeLauncher;
|
||||
ammo = TR2GrenadeLauncherAmmo;
|
||||
offset = "0 0 0";
|
||||
emap = true;
|
||||
|
||||
projectile = BasicTR2Grenade;
|
||||
projectileType = GrenadeProjectile;
|
||||
|
||||
stateName[0] = "Activate";
|
||||
stateTransitionOnTimeout[0] = "ActivateReady";
|
||||
stateTimeoutValue[0] = 0.5;
|
||||
stateSequence[0] = "Activate";
|
||||
stateSound[0] = TR2GrenadeSwitchSound;
|
||||
|
||||
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] = TR2GrenadeFireSound;
|
||||
|
||||
stateName[4] = "Reload";
|
||||
stateTransitionOnNoAmmo[4] = "NoAmmo";
|
||||
stateTransitionOnTimeout[4] = "Ready";
|
||||
stateTimeoutValue[4] = 0.5;
|
||||
stateAllowImageChange[4] = false;
|
||||
stateSequence[4] = "Reload";
|
||||
stateSound[4] = TR2GrenadeReloadSound;
|
||||
|
||||
stateName[5] = "NoAmmo";
|
||||
stateTransitionOnAmmo[5] = "Reload";
|
||||
stateSequence[5] = "NoAmmo";
|
||||
stateTransitionOnTriggerDown[5] = "DryFire";
|
||||
|
||||
stateName[6] = "DryFire";
|
||||
stateSound[6] = TR2GrenadeDryFireSound;
|
||||
stateTimeoutValue[6] = 1.5;
|
||||
stateTransitionOnTimeout[6] = "NoAmmo";
|
||||
};
|
||||
|
|
@ -0,0 +1,799 @@
|
|||
//--------------------------------------
|
||||
// Mortar
|
||||
//--------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Force-Feedback Effects
|
||||
//--------------------------------------
|
||||
datablock EffectProfile(TR2MortarSwitchEffect)
|
||||
{
|
||||
effectname = "weapons/mortar_activate";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2MortarFireEffect)
|
||||
{
|
||||
effectname = "weapons/mortar_fire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 5.0;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2MortarReloadEffect)
|
||||
{
|
||||
effectname = "weapons/mortar_reload";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2MortarDryFireEffect)
|
||||
{
|
||||
effectname = "weapons/mortar_dryfire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2MortarExplosionEffect)
|
||||
{
|
||||
effectname = "explosions/explosion.xpl03";
|
||||
minDistance = 30;
|
||||
maxDistance = 65;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Sounds
|
||||
//--------------------------------------
|
||||
datablock AudioProfile(TR2MortarSwitchSound)
|
||||
{
|
||||
filename = "fx/weapons/mortar_activate.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2MortarSwitchEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2MortarReloadSound)
|
||||
{
|
||||
filename = "fx/weapons/mortar_reload.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2MortarReloadEffect;
|
||||
};
|
||||
|
||||
// DELETE IF NOT NEEDED
|
||||
//datablock AudioProfile(TR2MortarIdleSound)
|
||||
//{
|
||||
// filename = "fx/weapons/weapon.mortarIdle.wav";
|
||||
// description = ClosestLooping3d;
|
||||
// preload = true;
|
||||
//};
|
||||
|
||||
datablock AudioProfile(TR2MortarFireSound)
|
||||
{
|
||||
filename = "fx/weapons/mortar_fire.wav";
|
||||
description = AudioDefault3d;
|
||||
preload = true;
|
||||
effect = TR2MortarFireEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2MortarProjectileSound)
|
||||
{
|
||||
filename = "fx/weapons/mortar_projectile.wav";
|
||||
description = ProjectileLooping3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2MortarExplosionSound)
|
||||
{
|
||||
filename = "fx/weapons/mortar_explode.wav";
|
||||
description = AudioBIGExplosion3d;
|
||||
preload = true;
|
||||
effect = TR2MortarExplosionEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(UnderwaterTR2MortarExplosionSound)
|
||||
{
|
||||
filename = "fx/weapons/mortar_explode_UW.wav";
|
||||
description = AudioBIGExplosion3d;
|
||||
preload = true;
|
||||
effect = TR2MortarExplosionEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2MortarDryFireSound)
|
||||
{
|
||||
filename = "fx/weapons/mortar_dryfire.wav";
|
||||
description = AudioClose3d;
|
||||
preload = true;
|
||||
effect = TR2MortarDryFireEffect;
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Bubbles
|
||||
//----------------------------------------------------------------------------
|
||||
datablock ParticleData(TR2MortarBubbleParticle)
|
||||
{
|
||||
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.8;
|
||||
sizes[1] = 0.8;
|
||||
sizes[2] = 0.8;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2MortarBubbleEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 9;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 1.0;
|
||||
ejectionOffset = 0.1;
|
||||
velocityVariance = 0.5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 80;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
particles = "TR2MortarBubbleParticle";
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Splash
|
||||
//--------------------------------------------------------------------------
|
||||
datablock ParticleData( TR2MortarSplashParticle )
|
||||
{
|
||||
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( TR2MortarSplashEmitter )
|
||||
{
|
||||
ejectionPeriodMS = 4;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 3;
|
||||
velocityVariance = 1.0;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 50;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 100;
|
||||
particles = "TR2MortarSplashParticle";
|
||||
};
|
||||
|
||||
|
||||
datablock SplashData(TR2MortarSplash)
|
||||
{
|
||||
numSegments = 10;
|
||||
ejectionFreq = 10;
|
||||
ejectionAngle = 20;
|
||||
ringLifetime = 0.4;
|
||||
lifetimeMS = 400;
|
||||
velocity = 3.0;
|
||||
startRadius = 0.0;
|
||||
acceleration = -3.0;
|
||||
texWrap = 5.0;
|
||||
|
||||
texture = "special/water2";
|
||||
|
||||
emitter[0] = TR2MortarSplashEmitter;
|
||||
|
||||
colors[0] = "0.7 0.8 1.0 0.0";
|
||||
colors[1] = "0.7 0.8 1.0 1.0";
|
||||
colors[2] = "0.7 0.8 1.0 0.0";
|
||||
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;
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Mortar Shockwaves
|
||||
//---------------------------------------------------------------------------
|
||||
datablock ShockwaveData(UnderwaterTR2MortarShockwave)
|
||||
{
|
||||
width = 6.0;
|
||||
numSegments = 32;
|
||||
numVertSegments = 6;
|
||||
velocity = 10;
|
||||
acceleration = 20.0;
|
||||
lifetimeMS = 900;
|
||||
height = 1.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.4 0.4 1.0 0.50";
|
||||
colors[1] = "0.4 0.4 1.0 0.25";
|
||||
colors[2] = "0.4 0.4 1.0 0.0";
|
||||
|
||||
mapToTerrain = true;
|
||||
orientToNormal = false;
|
||||
renderBottom = false;
|
||||
};
|
||||
|
||||
datablock ShockwaveData(TR2MortarShockwave)
|
||||
{
|
||||
width = 6.0;
|
||||
numSegments = 32;
|
||||
numVertSegments = 6;
|
||||
velocity = 30;
|
||||
acceleration = 20.0;
|
||||
lifetimeMS = 500;
|
||||
height = 1.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.4 1.0 0.4 0.50";
|
||||
colors[1] = "0.4 1.0 0.4 0.25";
|
||||
colors[2] = "0.4 1.0 0.4 0.0";
|
||||
|
||||
mapToTerrain = true;
|
||||
orientToNormal = false;
|
||||
renderBottom = false;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Mortar Explosion Particle effects
|
||||
//--------------------------------------
|
||||
datablock ParticleData( TR2MortarCrescentParticle )
|
||||
{
|
||||
dragCoefficient = 2;
|
||||
gravityCoefficient = 0.0;
|
||||
inheritedVelFactor = 0.2;
|
||||
constantAcceleration = -0.0;
|
||||
lifetimeMS = 600;
|
||||
lifetimeVarianceMS = 000;
|
||||
textureName = "special/crescent3";
|
||||
colors[0] = "0.7 1.0 0.7 1.0";
|
||||
colors[1] = "0.7 1.0 0.7 0.5";
|
||||
colors[2] = "0.7 1.0 0.7 0.0";
|
||||
sizes[0] = 8.0;
|
||||
sizes[1] = 16.0;
|
||||
sizes[2] = 18.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData( TR2MortarCrescentEmitter )
|
||||
{
|
||||
ejectionPeriodMS = 25;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 40;
|
||||
velocityVariance = 5.0;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 80;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 200;
|
||||
particles = "TR2MortarCrescentParticle";
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleData(TR2MortarExplosionSmoke)
|
||||
{
|
||||
dragCoeffiecient = 0.4;
|
||||
gravityCoefficient = -0.30; // rises slowly
|
||||
inheritedVelFactor = 0.025;
|
||||
|
||||
lifetimeMS = 1250;
|
||||
lifetimeVarianceMS = 500;
|
||||
|
||||
textureName = "particleTest";
|
||||
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
textureName = "special/Smoke/bigSmoke";
|
||||
|
||||
colors[0] = "0.7 0.7 0.7 0.0";
|
||||
colors[1] = "0.4 0.4 0.4 0.5";
|
||||
colors[2] = "0.4 0.4 0.4 0.5";
|
||||
colors[3] = "0.4 0.4 0.4 0.0";
|
||||
sizes[0] = 25.0;
|
||||
sizes[1] = 28.0;
|
||||
sizes[2] = 40.0;
|
||||
sizes[3] = 56.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.333;
|
||||
times[2] = 0.666;
|
||||
times[3] = 1.0;
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2MortarExplosionSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 0;
|
||||
|
||||
ejectionOffset = 8.0;
|
||||
|
||||
|
||||
ejectionVelocity = 7.0;//3.25;
|
||||
velocityVariance = 1.2;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 90.0;
|
||||
|
||||
lifetimeMS = 500;
|
||||
|
||||
particles = "TR2MortarExplosionSmoke";
|
||||
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Underwater Explosion
|
||||
//---------------------------------------------------------------------------
|
||||
datablock ParticleData(TR2UnderwaterExplosionSparks)
|
||||
{
|
||||
dragCoefficient = 0;
|
||||
gravityCoefficient = 0.0;
|
||||
inheritedVelFactor = 0.2;
|
||||
constantAcceleration = 0.0;
|
||||
lifetimeMS = 500;
|
||||
lifetimeVarianceMS = 350;
|
||||
textureName = "special/crescent3";
|
||||
colors[0] = "0.4 0.4 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] = 3.5;
|
||||
sizes[1] = 3.5;
|
||||
sizes[2] = 3.5;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ParticleEmitterData(TR2UnderwaterExplosionSparksEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 2;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 17;
|
||||
velocityVariance = 4;
|
||||
ejectionOffset = 0.0;
|
||||
thetaMin = 0;
|
||||
thetaMax = 60;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
orientParticles = true;
|
||||
lifetimeMS = 100;
|
||||
particles = "TR2UnderwaterExplosionSparks";
|
||||
};
|
||||
|
||||
datablock ParticleData(TR2MortarExplosionBubbleParticle)
|
||||
{
|
||||
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.0";
|
||||
colors[1] = "0.7 0.8 1.0 0.4";
|
||||
colors[2] = "0.7 0.8 1.0 0.0";
|
||||
sizes[0] = 2.0;
|
||||
sizes[1] = 2.0;
|
||||
sizes[2] = 2.0;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.8;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
datablock ParticleEmitterData(TR2MortarExplosionBubbleEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 5;
|
||||
periodVarianceMS = 0;
|
||||
ejectionVelocity = 1.0;
|
||||
ejectionOffset = 7.0;
|
||||
velocityVariance = 0.5;
|
||||
thetaMin = 0;
|
||||
thetaMax = 80;
|
||||
phiReferenceVel = 0;
|
||||
phiVariance = 360;
|
||||
overrideAdvances = false;
|
||||
particles = "TR2MortarExplosionBubbleParticle";
|
||||
};
|
||||
|
||||
datablock DebrisData( UnderwaterTR2MortarDebris )
|
||||
{
|
||||
emitters[0] = MortarExplosionBubbleEmitter;
|
||||
|
||||
explodeOnMaxBounce = true;
|
||||
|
||||
elasticity = 0.4;
|
||||
friction = 0.2;
|
||||
|
||||
lifetime = 1.5;
|
||||
lifetimeVariance = 0.2;
|
||||
|
||||
numBounces = 1;
|
||||
};
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2MortarSubExplosion1)
|
||||
{
|
||||
explosionShape = "disc_explosion.dts";
|
||||
faceViewer = true;
|
||||
delayMS = 100;
|
||||
offset = 3.0;
|
||||
playSpeed = 1.5;
|
||||
|
||||
sizes[0] = "3.25 3.25 3.25";//"0.75 0.75 0.75";
|
||||
sizes[1] = "2.5 2.5 2.5";//"1.0 1.0 1.0";
|
||||
sizes[2] = "1.5 1.5 1.5";//"0.5 0.5 0.5";
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2MortarSubExplosion2)
|
||||
{
|
||||
explosionShape = "disc_explosion.dts";
|
||||
faceViewer = true;
|
||||
delayMS = 50;
|
||||
offset = 3.0;
|
||||
playSpeed = 0.75;
|
||||
|
||||
sizes[0] = "4.5 4.5 4.5";//"1.5 1.5 1.5";
|
||||
sizes[1] = "4.5 4.5 4.5";//"1.5 1.5 1.5";
|
||||
sizes[2] = "3.5 3.5 3.5";//"1.0 1.0 1.0";
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
};
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2MortarSubExplosion3)
|
||||
{
|
||||
explosionShape = "disc_explosion.dts";
|
||||
faceViewer = true;
|
||||
delayMS = 0;
|
||||
offset = 0.0;
|
||||
playSpeed = 0.5;
|
||||
|
||||
sizes[0] = "1.0 1.0 1.0";
|
||||
sizes[1] = "2.0 2.0 2.0";
|
||||
sizes[2] = "1.5 1.5 1.5";
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ExplosionData(UnderwaterTR2MortarExplosion)
|
||||
{
|
||||
soundProfile = UnderwaterTR2MortarExplosionSound;
|
||||
|
||||
shockwave = UnderwaterTR2MortarShockwave;
|
||||
shockwaveOnTerrain = true;
|
||||
|
||||
subExplosion[0] = UnderwaterTR2MortarSubExplosion1;
|
||||
subExplosion[1] = UnderwaterTR2MortarSubExplosion2;
|
||||
subExplosion[2] = UnderwaterTR2MortarSubExplosion3;
|
||||
|
||||
emitter[0] = TR2MortarExplosionBubbleEmitter;
|
||||
emitter[1] = TR2UnderwaterExplosionSparksEmitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "8.0 9.0 7.0";
|
||||
camShakeAmp = "100.0 100.0 100.0";
|
||||
camShakeDuration = 1.3;
|
||||
camShakeRadius = 25.0;
|
||||
};
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Explosion
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
datablock ExplosionData(TR2MortarSubExplosion1)
|
||||
{
|
||||
explosionShape = "mortar_explosion.dts";
|
||||
faceViewer = true;
|
||||
|
||||
delayMS = 100;
|
||||
|
||||
offset = 5.0;
|
||||
|
||||
playSpeed = 1.5;
|
||||
|
||||
sizes[0] = "8.0 8.0 8.0";//"1.5 1.5 1.5";
|
||||
sizes[1] = "8.0 8.0 8.0";//"1.5 1.5 1.5";
|
||||
times[0] = 0.0;
|
||||
times[1] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ExplosionData(TR2MortarSubExplosion2)
|
||||
{
|
||||
explosionShape = "mortar_explosion.dts";
|
||||
faceViewer = true;
|
||||
|
||||
delayMS = 50;
|
||||
|
||||
offset = 5.0;
|
||||
|
||||
playSpeed = 1.0;
|
||||
|
||||
sizes[0] = "12.0 12.0 12.0";//"3.0 3.0 3.0";
|
||||
sizes[1] = "12.0 12.0 12.0";//"3.0 3.0 3.0";
|
||||
times[0] = 0.0;
|
||||
times[1] = 1.0;
|
||||
};
|
||||
|
||||
datablock ExplosionData(TR2MortarSubExplosion3)
|
||||
{
|
||||
explosionShape = "mortar_explosion.dts";
|
||||
faceViewer = true;
|
||||
delayMS = 0;
|
||||
offset = 0.0;
|
||||
playSpeed = 0.7;
|
||||
|
||||
sizes[0] = "24.0 24.0 24.0";//"3.0 3.0 3.0";
|
||||
sizes[1] = "48.0 48.0 48.0";//"6.0 6.0 6.0";
|
||||
times[0] = 0.0;
|
||||
times[1] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
datablock ExplosionData(TR2MortarExplosion)
|
||||
{
|
||||
soundProfile = TR2MortarExplosionSound;
|
||||
|
||||
shockwave = MortarShockwave;
|
||||
shockwaveOnTerrain = true;
|
||||
|
||||
subExplosion[0] = TR2MortarSubExplosion1;
|
||||
subExplosion[1] = TR2MortarSubExplosion2;
|
||||
subExplosion[2] = TR2MortarSubExplosion3;
|
||||
|
||||
emitter[0] = TR2MortarExplosionSmokeEmitter;
|
||||
emitter[1] = TR2MortarCrescentEmitter;
|
||||
|
||||
shakeCamera = true;
|
||||
camShakeFreq = "8.0 9.0 7.0";
|
||||
camShakeAmp = "100.0 100.0 100.0";
|
||||
camShakeDuration = 1.3;
|
||||
camShakeRadius = 40.0;//25.0;
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Smoke particles
|
||||
//---------------------------------------------------------------------------
|
||||
datablock ParticleData(TR2MortarSmokeParticle)
|
||||
{
|
||||
dragCoeffiecient = 0.4;
|
||||
gravityCoefficient = -0.3; // rises slowly
|
||||
inheritedVelFactor = 0.125;
|
||||
|
||||
lifetimeMS = 1200;
|
||||
lifetimeVarianceMS = 200;
|
||||
useInvAlpha = true;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
animateTexture = false;
|
||||
|
||||
textureName = "special/Smoke/bigSmoke";
|
||||
|
||||
colors[0] = "0.7 1.0 0.7 0.5";
|
||||
colors[1] = "0.3 0.7 0.3 0.8";
|
||||
colors[2] = "0.0 0.0 0.0 0.0";
|
||||
sizes[0] = 4.0;//2.0;
|
||||
sizes[1] = 8.0;//4.0;
|
||||
sizes[2] = 17.0;//8.5;
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
datablock ParticleEmitterData(TR2MortarSmokeEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 10;
|
||||
periodVarianceMS = 3;
|
||||
|
||||
ejectionVelocity = 4.0;//2.25;
|
||||
velocityVariance = 0.55;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 40.0;
|
||||
|
||||
particles = "TR2MortarSmokeParticle";
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Projectile
|
||||
//--------------------------------------
|
||||
datablock GrenadeProjectileData(TR2MortarShot)
|
||||
{
|
||||
projectileShapeName = "mortar_projectile.dts";
|
||||
emitterDelay = -1;
|
||||
directDamage = 0.0;
|
||||
hasDamageRadius = true;
|
||||
indirectDamage = 0.2;
|
||||
damageRadius = 50.0;
|
||||
radiusDamageType = $DamageType::Mortar;
|
||||
kickBackStrength = 9500;
|
||||
|
||||
explosion = "MortarExplosion";
|
||||
underwaterExplosion = "UnderwaterMortarExplosion";
|
||||
velInheritFactor = 0.5;
|
||||
splash = TR2MortarSplash;
|
||||
depthTolerance = 10.0; // depth at which it uses underwater explosion
|
||||
|
||||
baseEmitter = TR2MortarSmokeEmitter;
|
||||
bubbleEmitter = TR2MortarBubbleEmitter;
|
||||
|
||||
grenadeElasticity = 0.15;
|
||||
grenadeFriction = 0.4;
|
||||
armingDelayMS = 1200;//2000;
|
||||
muzzleVelocity = 120.0;//63.7;
|
||||
drag = 0.1;
|
||||
gravityMod = 1.5;
|
||||
|
||||
sound = TR2MortarProjectileSound;
|
||||
|
||||
hasLight = true;
|
||||
lightRadius = 4;
|
||||
lightColor = "0.05 0.2 0.05";
|
||||
|
||||
hasLightUnderwaterColor = true;
|
||||
underWaterLightColor = "0.05 0.075 0.2";
|
||||
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Ammo
|
||||
//--------------------------------------
|
||||
|
||||
datablock ItemData(TR2MortarAmmo)
|
||||
{
|
||||
className = Ammo;
|
||||
catagory = "Ammo";
|
||||
shapeFile = "ammo_mortar.dts";
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "some mortar ammo";
|
||||
|
||||
computeCRC = false;
|
||||
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Weapon
|
||||
//--------------------------------------
|
||||
datablock ItemData(TR2Mortar)
|
||||
{
|
||||
className = Weapon;
|
||||
catagory = "Spawn Items";
|
||||
shapeFile = "TR2weapon_mortar.dts";
|
||||
image = TR2MortarImage;
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "a mortar gun";
|
||||
|
||||
computeCRC = true;
|
||||
emap = true;
|
||||
};
|
||||
|
||||
datablock ShapeBaseImageData(TR2MortarImage)
|
||||
{
|
||||
className = WeaponImage;
|
||||
shapeFile = "TR2weapon_mortar.dts";
|
||||
item = TR2Mortar;
|
||||
ammo = TR2MortarAmmo;
|
||||
offset = "0 0 0";
|
||||
emap = true;
|
||||
|
||||
projectile = TR2MortarShot;
|
||||
projectileType = GrenadeProjectile;
|
||||
|
||||
stateName[0] = "Activate";
|
||||
stateTransitionOnTimeout[0] = "ActivateReady";
|
||||
stateTimeoutValue[0] = 0.5;
|
||||
stateSequence[0] = "Activate";
|
||||
stateSound[0] = TR2MortarSwitchSound;
|
||||
|
||||
stateName[1] = "ActivateReady";
|
||||
stateTransitionOnLoaded[1] = "Ready";
|
||||
stateTransitionOnNoAmmo[1] = "NoAmmo";
|
||||
|
||||
stateName[2] = "Ready";
|
||||
stateTransitionOnNoAmmo[2] = "NoAmmo";
|
||||
stateTransitionOnTriggerDown[2] = "Fire";
|
||||
//stateSound[2] = MortarIdleSound;
|
||||
|
||||
stateName[3] = "Fire";
|
||||
stateSequence[3] = "Recoil";
|
||||
stateTransitionOnTimeout[3] = "Reload";
|
||||
stateTimeoutValue[3] = 0.8;
|
||||
stateFire[3] = true;
|
||||
stateRecoil[3] = LightRecoil;
|
||||
stateAllowImageChange[3] = false;
|
||||
stateScript[3] = "onFire";
|
||||
stateSound[3] = TR2MortarFireSound;
|
||||
|
||||
stateName[4] = "Reload";
|
||||
stateTransitionOnNoAmmo[4] = "NoAmmo";
|
||||
stateTransitionOnTimeout[4] = "Ready";
|
||||
stateTimeoutValue[4] = 2.0;
|
||||
stateAllowImageChange[4] = false;
|
||||
stateSequence[4] = "Reload";
|
||||
stateSound[4] = TR2MortarReloadSound;
|
||||
|
||||
stateName[5] = "NoAmmo";
|
||||
stateTransitionOnAmmo[5] = "Reload";
|
||||
stateSequence[5] = "NoAmmo";
|
||||
stateTransitionOnTriggerDown[5] = "DryFire";
|
||||
|
||||
stateName[6] = "DryFire";
|
||||
stateSound[6] = TR2MortarDryFireSound;
|
||||
stateTimeoutValue[6] = 1.5;
|
||||
stateTransitionOnTimeout[6] = "NoAmmo";
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,297 @@
|
|||
//--------------------------------------------------------------------------
|
||||
// Shock Lance
|
||||
//
|
||||
//
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
datablock EffectProfile(TR2ShockLanceSwitchEffect)
|
||||
{
|
||||
effectname = "weapons/shocklance_activate";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2ShockLanceFireEffect)
|
||||
{
|
||||
effectname = "weapons/shocklance_fire";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2ShockLanceReloadEffect)
|
||||
{
|
||||
effectname = "weapons/shocklance_reload";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ShockLanceSwitchSound)
|
||||
{
|
||||
filename = "fx/weapons/shocklance_activate.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = ShockLanceSwitchEffect;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Explosion
|
||||
//--------------------------------------
|
||||
datablock AudioProfile(TR2ShockLanceHitSound)
|
||||
{
|
||||
filename = "fx/weapons/shocklance_fire.WAV";
|
||||
description = AudioClose3d;
|
||||
preload = true;
|
||||
effect = TR2ShockLanceFireEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ShockLanceReloadSound)
|
||||
{
|
||||
filename = "fx/weapons/shocklance_reload.WAV";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TR2ShockLanceReloadEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ShockLanceDryFireSound)
|
||||
{
|
||||
filename = "fx/weapons/shocklance_dryfire.WAV";
|
||||
description = AudioClose3d;
|
||||
preload = true;
|
||||
effect = TR2ShockLanceReloadEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2ShockLanceMissSound)
|
||||
{
|
||||
filename = "fx/weapons/shocklance_miss.WAV";
|
||||
description = AudioExplosion3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Particle data
|
||||
//--------------------------------------------------------------------------
|
||||
datablock ParticleData(TR2ShockParticle)
|
||||
{
|
||||
dragCoeffiecient = 0.0;
|
||||
gravityCoefficient = -0.0;
|
||||
inheritedVelFactor = 0.0;
|
||||
|
||||
lifetimeMS = 1000;
|
||||
lifetimeVarianceMS = 0;
|
||||
|
||||
textureName = "particleTest";
|
||||
|
||||
useInvAlpha = false;
|
||||
spinRandomMin = -100.0;
|
||||
spinRandomMax = 100.0;
|
||||
|
||||
numParts = 50;
|
||||
|
||||
animateTexture = true;
|
||||
framesPerSec = 26;
|
||||
|
||||
animTexName[00] = "special/Explosion/exp_0002";
|
||||
animTexName[01] = "special/Explosion/exp_0004";
|
||||
animTexName[02] = "special/Explosion/exp_0006";
|
||||
animTexName[03] = "special/Explosion/exp_0008";
|
||||
animTexName[04] = "special/Explosion/exp_0010";
|
||||
animTexName[05] = "special/Explosion/exp_0012";
|
||||
animTexName[06] = "special/Explosion/exp_0014";
|
||||
animTexName[07] = "special/Explosion/exp_0016";
|
||||
animTexName[08] = "special/Explosion/exp_0018";
|
||||
animTexName[09] = "special/Explosion/exp_0020";
|
||||
animTexName[10] = "special/Explosion/exp_0022";
|
||||
animTexName[11] = "special/Explosion/exp_0024";
|
||||
animTexName[12] = "special/Explosion/exp_0026";
|
||||
animTexName[13] = "special/Explosion/exp_0028";
|
||||
animTexName[14] = "special/Explosion/exp_0030";
|
||||
animTexName[15] = "special/Explosion/exp_0032";
|
||||
animTexName[16] = "special/Explosion/exp_0034";
|
||||
animTexName[17] = "special/Explosion/exp_0036";
|
||||
animTexName[18] = "special/Explosion/exp_0038";
|
||||
animTexName[19] = "special/Explosion/exp_0040";
|
||||
animTexName[20] = "special/Explosion/exp_0042";
|
||||
animTexName[21] = "special/Explosion/exp_0044";
|
||||
animTexName[22] = "special/Explosion/exp_0046";
|
||||
animTexName[23] = "special/Explosion/exp_0048";
|
||||
animTexName[24] = "special/Explosion/exp_0050";
|
||||
animTexName[25] = "special/Explosion/exp_0052";
|
||||
|
||||
|
||||
colors[0] = "0.5 0.5 1.0 1.0";
|
||||
colors[1] = "0.5 0.5 1.0 0.5";
|
||||
colors[2] = "0.25 0.25 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(TR2ShockParticleEmitter)
|
||||
{
|
||||
ejectionPeriodMS = 1;
|
||||
periodVarianceMS = 0;
|
||||
|
||||
ejectionVelocity = 0.25;
|
||||
velocityVariance = 0.0;
|
||||
|
||||
thetaMin = 0.0;
|
||||
thetaMax = 30.0;
|
||||
|
||||
particles = "TR2ShockParticle";
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Shockwave
|
||||
//--------------------------------------------------------------------------
|
||||
datablock ShockwaveData( TR2ShocklanceHit )
|
||||
{
|
||||
width = 0.5;
|
||||
numSegments = 20;
|
||||
numVertSegments = 1;
|
||||
velocity = 0.25;
|
||||
acceleration = 1.0;
|
||||
lifetimeMS = 600;
|
||||
height = 0.1;
|
||||
verticalCurve = 0.5;
|
||||
|
||||
mapToTerrain = false;
|
||||
renderBottom = false;
|
||||
orientToNormal = true;
|
||||
|
||||
texture[0] = "special/shocklanceHit";
|
||||
texture[1] = "special/gradient";
|
||||
texWrap = 3.0;
|
||||
|
||||
times[0] = 0.0;
|
||||
times[1] = 0.5;
|
||||
times[2] = 1.0;
|
||||
|
||||
colors[0] = "1.0 1.0 1.0 1.0";
|
||||
colors[1] = "1.0 1.0 1.0 0.5";
|
||||
colors[2] = "1.0 1.0 1.0 0.0";
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------
|
||||
// Projectile
|
||||
//--------------------------------------
|
||||
datablock ShockLanceProjectileData(TR2BasicShocker)
|
||||
{
|
||||
directDamage = 0.1;//0.45;
|
||||
radiusDamageType = $DamageType::ShockLance;
|
||||
kickBackStrength = 12000;
|
||||
velInheritFactor = 0;
|
||||
sound = "";
|
||||
|
||||
zapDuration = 1.0;
|
||||
impulse = 12000;//1800;
|
||||
boltLength = 45;//14.0;
|
||||
extension = 39;//14.0;//14.0; // script variable indicating distance you can shock people from
|
||||
lightningFreq = 25.0;
|
||||
lightningDensity = 3.0;
|
||||
lightningAmp = 0.25;
|
||||
lightningWidth = 0.05;
|
||||
|
||||
shockwave = TR2ShocklanceHit;
|
||||
|
||||
boltSpeed[0] = 2.0;
|
||||
boltSpeed[1] = -0.5;
|
||||
|
||||
texWrap[0] = 1.5;
|
||||
texWrap[1] = 1.5;
|
||||
|
||||
startWidth[0] = 0.3;
|
||||
endWidth[0] = 0.6;
|
||||
startWidth[1] = 0.3;
|
||||
endWidth[1] = 0.6;
|
||||
|
||||
texture[0] = "special/shockLightning01";
|
||||
texture[1] = "special/shockLightning02";
|
||||
texture[2] = "special/shockLightning03";
|
||||
texture[3] = "special/ELFBeam";
|
||||
|
||||
emitter[0] = TR2ShockParticleEmitter;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------
|
||||
// Rifle and item...
|
||||
//--------------------------------------
|
||||
datablock ItemData(TR2ShockLance)
|
||||
{
|
||||
className = Weapon;
|
||||
catagory = "Spawn Items";
|
||||
shapeFile = "TR2weapon_shocklance.dts";
|
||||
image = TR2ShockLanceImage;
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "a shocklance";
|
||||
|
||||
computeCRC = true;
|
||||
emap = true;
|
||||
};
|
||||
|
||||
datablock ShapeBaseImageData(TR2ShockLanceImage)
|
||||
{
|
||||
classname = WeaponImage;
|
||||
shapeFile = "TR2weapon_shocklance.dts";
|
||||
item = TR2ShockLance;
|
||||
offset = "0 0 0";
|
||||
emap = true;
|
||||
|
||||
projectile = TR2BasicShocker;
|
||||
|
||||
usesEnergy = true;
|
||||
missEnergy = 0;
|
||||
hitEnergy = 15;
|
||||
minEnergy = 15; // needs to change to be datablock's energy drain for a hit
|
||||
|
||||
stateName[0] = "Activate";
|
||||
stateTransitionOnTimeout[0] = "ActivateReady";
|
||||
stateSound[0] = TR2ShockLanceSwitchSound;
|
||||
stateTimeoutValue[0] = 0.5;
|
||||
stateSequence[0] = "Activate";
|
||||
|
||||
stateName[1] = "ActivateReady";
|
||||
stateTransitionOnLoaded[1] = "Ready";
|
||||
stateTransitionOnNoAmmo[1] = "NoAmmo";
|
||||
|
||||
stateName[2] = "Ready";
|
||||
stateTransitionOnNoAmmo[2] = "NoAmmo";
|
||||
stateTransitionOnTriggerDown[2] = "CheckWet";
|
||||
|
||||
stateName[3] = "Fire";
|
||||
stateTransitionOnTimeout[3] = "Reload";
|
||||
stateTimeoutValue[3] = 0.5;
|
||||
stateFire[3] = true;
|
||||
stateAllowImageChange[3] = false;
|
||||
stateSequence[3] = "Fire";
|
||||
stateScript[3] = "onFire";
|
||||
stateSound[3] = TR2ShockLanceDryFireSound;
|
||||
|
||||
stateName[4] = "Reload";
|
||||
stateTransitionOnNoAmmo[4] = "NoAmmo";
|
||||
stateTransitionOnTimeout[4] = "Ready";
|
||||
stateTimeoutValue[4] = 2.0;
|
||||
stateAllowImageChange[4] = false;
|
||||
stateSequence[4] = "Reload";
|
||||
stateSound[4] = TR2ShockLanceReloadSound;
|
||||
|
||||
stateName[5] = "NoAmmo";
|
||||
stateTransitionOnAmmo[5] = "Ready";
|
||||
|
||||
stateName[6] = "DryFire";
|
||||
stateSound[6] = TR2ShockLanceDryFireSound;
|
||||
stateTimeoutValue[6] = 1.0;
|
||||
stateTransitionOnTimeout[6] = "Ready";
|
||||
|
||||
stateName[7] = "CheckWet";
|
||||
stateTransitionOnWet[7] = "DryFire";
|
||||
stateTransitionOnNotWet[7] = "Fire";
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,218 @@
|
|||
//--------------------------------------------------------------------------
|
||||
// Targeting laser
|
||||
//
|
||||
//--------------------------------------------------------------------------
|
||||
datablock EffectProfile(TR2TargetingLaserSwitchEffect)
|
||||
{
|
||||
effectname = "weapons/generic_switch";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock EffectProfile(TR2TargetingLaserPaintEffect)
|
||||
{
|
||||
effectname = "weapons/targetinglaser_paint";
|
||||
minDistance = 2.5;
|
||||
maxDistance = 2.5;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2TargetingLaserSwitchSound)
|
||||
{
|
||||
filename = "fx/weapons/generic_switch.wav";
|
||||
description = AudioClosest3d;
|
||||
preload = true;
|
||||
effect = TargetingLaserSwitchEffect;
|
||||
};
|
||||
|
||||
datablock AudioProfile(TR2TargetingLaserPaintSound)
|
||||
{
|
||||
filename = "fx/weapons/targetinglaser_paint.wav";
|
||||
description = CloseLooping3d;
|
||||
preload = true;
|
||||
effect = TargetingLaserPaintEffect;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------
|
||||
// Projectile
|
||||
//--------------------------------------
|
||||
datablock TargetProjectileData(TR2BasicGoldTargeter)
|
||||
{
|
||||
directDamage = 0.0;
|
||||
hasDamageRadius = false;
|
||||
indirectDamage = 0.0;
|
||||
damageRadius = 0.0;
|
||||
velInheritFactor = 1.0;
|
||||
|
||||
maxRifleRange = 1000;
|
||||
beamColor = "0.8 0.8 0.0";
|
||||
|
||||
startBeamWidth = 0.80;
|
||||
pulseBeamWidth = 0.55;
|
||||
beamFlareAngle = 3.0;
|
||||
minFlareSize = 0.0;
|
||||
maxFlareSize = 400.0;
|
||||
pulseSpeed = 6.0;
|
||||
pulseLength = 0.150;
|
||||
|
||||
textureName[0] = "special/nonlingradient";
|
||||
textureName[1] = "special/flare";
|
||||
textureName[2] = "special/pulse";
|
||||
textureName[3] = "special/expFlare";
|
||||
beacon = true;
|
||||
};
|
||||
|
||||
datablock TargetProjectileData(TR2BasicSilverTargeter)
|
||||
{
|
||||
directDamage = 0.0;
|
||||
hasDamageRadius = false;
|
||||
indirectDamage = 0.0;
|
||||
damageRadius = 0.0;
|
||||
velInheritFactor = 1.0;
|
||||
|
||||
maxRifleRange = 1000;
|
||||
beamColor = "0.56 0.56 0.56";
|
||||
|
||||
startBeamWidth = 0.80;
|
||||
pulseBeamWidth = 0.55;
|
||||
beamFlareAngle = 3.0;
|
||||
minFlareSize = 0.0;
|
||||
maxFlareSize = 400.0;
|
||||
pulseSpeed = 6.0;
|
||||
pulseLength = 0.150;
|
||||
|
||||
textureName[0] = "special/nonlingradient";
|
||||
textureName[1] = "special/flare";
|
||||
textureName[2] = "special/pulse";
|
||||
textureName[3] = "special/expFlare";
|
||||
beacon = true;
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------
|
||||
// Rifle and item...
|
||||
//--------------------------------------
|
||||
datablock ItemData(TR2GoldTargetingLaser)
|
||||
{
|
||||
className = Weapon;
|
||||
catagory = "Spawn Items";
|
||||
shapeFile = "weapon_targeting.dts";
|
||||
image = TR2GoldTargetingLaserImage;
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "a targeting laser rifle";
|
||||
|
||||
computeCRC = false;
|
||||
|
||||
};
|
||||
|
||||
datablock ItemData(TR2SilverTargetingLaser)
|
||||
{
|
||||
className = Weapon;
|
||||
catagory = "Spawn Items";
|
||||
shapeFile = "weapon_targeting.dts";
|
||||
image = TR2SilverTargetingLaserImage;
|
||||
mass = 1;
|
||||
elasticity = 0.2;
|
||||
friction = 0.6;
|
||||
pickupRadius = 2;
|
||||
pickUpName = "a targeting laser rifle";
|
||||
|
||||
computeCRC = false;
|
||||
|
||||
};
|
||||
|
||||
|
||||
datablock ShapeBaseImageData(TR2GoldTargetingLaserImage)
|
||||
{
|
||||
className = WeaponImage;
|
||||
|
||||
shapeFile = "weapon_targeting.dts";
|
||||
item = TR2GoldTargetingLaser;
|
||||
offset = "0 0 0";
|
||||
|
||||
projectile = TR2BasicGoldTargeter;
|
||||
projectileType = TargetProjectile;
|
||||
deleteLastProjectile = true;
|
||||
|
||||
usesEnergy = true;
|
||||
minEnergy = 1;
|
||||
|
||||
stateName[0] = "Activate";
|
||||
stateSequence[0] = "Activate";
|
||||
stateSound[0] = TR2TargetingLaserSwitchSound;
|
||||
stateTimeoutValue[0] = 0.5;
|
||||
stateTransitionOnTimeout[0] = "ActivateReady";
|
||||
|
||||
stateName[1] = "ActivateReady";
|
||||
stateTransitionOnAmmo[1] = "Ready";
|
||||
stateTransitionOnNoAmmo[1] = "NoAmmo";
|
||||
|
||||
stateName[2] = "Ready";
|
||||
stateTransitionOnNoAmmo[2] = "NoAmmo";
|
||||
stateTransitionOnTriggerDown[2] = "Fire";
|
||||
|
||||
stateName[3] = "Fire";
|
||||
stateEnergyDrain[3] = 0;
|
||||
stateFire[3] = true;
|
||||
stateAllowImageChange[3] = false;
|
||||
stateScript[3] = "onFire";
|
||||
stateTransitionOnTriggerUp[3] = "Deconstruction";
|
||||
stateTransitionOnNoAmmo[3] = "Deconstruction";
|
||||
stateSound[3] = TR2TargetingLaserPaintSound;
|
||||
|
||||
stateName[4] = "NoAmmo";
|
||||
stateTransitionOnAmmo[4] = "Ready";
|
||||
|
||||
stateName[5] = "Deconstruction";
|
||||
stateScript[5] = "deconstruct";
|
||||
stateTransitionOnTimeout[5] = "Ready";
|
||||
};
|
||||
|
||||
datablock ShapeBaseImageData(TR2SilverTargetingLaserImage)
|
||||
{
|
||||
className = WeaponImage;
|
||||
|
||||
shapeFile = "weapon_targeting.dts";
|
||||
item = TR2SilverTargetingLaser;
|
||||
offset = "0 0 0";
|
||||
|
||||
projectile = TR2BasicSilverTargeter;
|
||||
projectileType = TargetProjectile;
|
||||
deleteLastProjectile = true;
|
||||
|
||||
usesEnergy = true;
|
||||
minEnergy = 1;
|
||||
|
||||
stateName[0] = "Activate";
|
||||
stateSequence[0] = "Activate";
|
||||
stateSound[0] = TR2TargetingLaserSwitchSound;
|
||||
stateTimeoutValue[0] = 0.5;
|
||||
stateTransitionOnTimeout[0] = "ActivateReady";
|
||||
|
||||
stateName[1] = "ActivateReady";
|
||||
stateTransitionOnAmmo[1] = "Ready";
|
||||
stateTransitionOnNoAmmo[1] = "NoAmmo";
|
||||
|
||||
stateName[2] = "Ready";
|
||||
stateTransitionOnNoAmmo[2] = "NoAmmo";
|
||||
stateTransitionOnTriggerDown[2] = "Fire";
|
||||
|
||||
stateName[3] = "Fire";
|
||||
stateEnergyDrain[3] = 0;
|
||||
stateFire[3] = true;
|
||||
stateAllowImageChange[3] = false;
|
||||
stateScript[3] = "onFire";
|
||||
stateTransitionOnTriggerUp[3] = "Deconstruction";
|
||||
stateTransitionOnNoAmmo[3] = "Deconstruction";
|
||||
stateSound[3] = TR2TargetingLaserPaintSound;
|
||||
|
||||
stateName[4] = "NoAmmo";
|
||||
stateTransitionOnAmmo[4] = "Ready";
|
||||
|
||||
stateName[5] = "Deconstruction";
|
||||
stateScript[5] = "deconstruct";
|
||||
stateTransitionOnTimeout[5] = "Ready";
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue