TWM2/scripts/turrets/sentryTurret.cs
2014-02-26 13:54:04 -06:00

214 lines
5.4 KiB
C#

// Sound datablocks
datablock AudioProfile(SentryTurretSwitchSound)
{
filename = "fx/powered/turret_sentry_activate.wav";
description = AudioClose3d;
preload = true;
};
datablock AudioProfile(SentryTurretFireSound)
{
filename = "fx/powered/turret_sentry_fire.wav";
description = AudioDefault3d;
preload = true;
};
datablock AudioProfile(SentryTurretExpSound)
{
filename = "fx/powered/turret_sentry_impact.WAV";
description = AudioClosest3d;
preload = true;
};
datablock AudioProfile(SentryTurretProjectileSound)
{
filename = "fx/weapons/blaster_projectile.WAV";
description = AudioExplosion3d;
preload = true;
};
// Explosion
datablock ParticleData(SentryTurretExplosionParticle1)
{
dragCoefficient = 0.65;
gravityCoefficient = 0.3;
inheritedVelFactor = 0.0;
constantAcceleration = 0.0;
lifetimeMS = 500;
lifetimeVarianceMS = 150;
textureName = "particleTest";
colors[0] = "0.26 0.36 0.56 1.0";
colors[1] = "0.26 0.36 0.56 0.0";
sizes[0] = 0.0425;
sizes[1] = 0.15;
};
datablock ParticleEmitterData(SentryTurretExplosionEmitter)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 0.75;
velocityVariance = 0.25;
ejectionOffset = 0.0;
thetaMin = 0;
thetaMax = 60;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
particles = "SentryTurretExplosionParticle1";
};
datablock ExplosionData(SentryTurretExplosion)
{
explosionShape = "energy_explosion.dts";
soundProfile = SentryTurretExpSound;
particleEmitter = SentryTurretExplosionEmitter;
particleDensity = 120;
particleRadius = 0.15;
faceViewer = false;
};
// Projectile
datablock LinearFlareProjectileData(SentryTurretEnergyBolt)
{
directDamage = 0.1;
directDamageType = $DamageType::SentryTurret;
explosion = "SentryTurretExplosion";
kickBackStrength = 0.0;
dryVelocity = 200.0;
wetVelocity = 150.0;
velInheritFactor = 0.5;
fizzleTimeMS = 2000;
lifetimeMS = 3000;
explodeOnDeath = false;
reflectOnWaterImpactAngle = 0.0;
explodeOnWaterImpact = false;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 3000;
numFlares = 10;
size = 0.35;
flareColor = "0.35 0.35 1";
flareModTexture = "flaremod";
flareBaseTexture = "flarebase";
sound = SentryTurretProjectileSound;
hasLight = true;
lightRadius = 1.5;
lightColor = "0.35 0.35 1";
};
// Turret data
datablock SensorData(SentryMotionSensor)
{
detects = true;
detectsUsingLOS = true;
detectsActiveJammed = false;
detectsPassiveJammed = true;
detectsCloaked = true;
detectionPings = false;
detectRadius = 60;
detectMinVelocity = 2;
};
datablock TurretData(SentryTurret) : TurretDamageProfile
{
//className = Turret;
catagory = "Turrets";
shapeFile = "turret_sentry.dts";
//Uses the same stats as an outdoor deployable turret (balancing info for Dave)
mass = 5.0;
barrel = SentryTurretBarrel;
maxDamage = 1.2;
destroyedLevel = 1.2;
disabledLevel = 0.84;
explosion = ShapeExplosion;
expDmgRadius = 5.0;
expDamage = 0.4;
expImpulse = 1000.0;
repairRate = 0;
thetaMin = 89;
thetaMax = 175;
emap = true;
isShielded = true;
energyPerDamagePoint = 100;
maxEnergy = 150;
rechargeRate = 0.40;
canControl = true;
cmdCategory = "Tactical";
cmdIcon = CMDTurretIcon;
cmdMiniIconName = "commander/MiniIcons/com_turret_grey";
targetNameTag = 'Sentry';
targetTypeTag = 'Turret';
sensorData = SentryMotionSensor;
sensorRadius = SentryMotionSensor.detectRadius;
sensorColor = "9 136 255";
firstPersonOnly = true;
};
datablock TurretImageData(SentryTurretBarrel)
{
shapeFile = "turret_muzzlepoint.dts";
projectile = SentryTurretEnergyBolt;
projectileType = LinearFlareProjectile;
usesEnergy = true;
fireEnergy = 6.00;
minEnergy = 6.00;
emap = true;
// Turret parameters
activationMS = 300;
deactivateDelayMS = 500;
thinkTimeMS = 200;
degPerSecTheta = 520;
degPerSecPhi = 960;
attackRadius = 60;
// State transitions
stateName[0] = "Activate";
stateTimeoutValue[0] = 0.01;
stateTransitionOnTimeout[0] = "Ready";
stateSound[0] = SentryTurretSwitchSound;
stateName[1] = "Ready";
stateTransitionOnTriggerDown[1] = "Fire";
stateTransitionOnNoAmmo[1] = "NoAmmo";
stateName[2] = "Fire";
stateTransitionOnTimeout[2] = "Reload";
stateTimeoutValue[2] = 0.13;
stateFire[2] = true;
stateRecoil[2] = LightRecoil;
stateAllowImageChange[2] = false;
stateSequence[2] = "Fire";
stateSound[2] = SentryTurretFireSound;
stateScript[2] = "onFire";
stateName[3] = "Reload";
stateTimeoutValue[3] = 0.40;
stateAllowImageChange[3] = false;
stateTransitionOnTimeout[3] = "Ready";
stateTransitionOnNoAmmo[3] = "NoAmmo";
stateName[4] = "NoAmmo";
stateTransitionOnAmmo[4] = "Reload";
stateSequence[4] = "NoAmmo";
};