TribesReplay/base/scripts/weapons/ELFGun.cs
2017-07-17 22:55:25 -04:00

201 lines
5.5 KiB
C#

//--------------------------------------------------------------------------
// ELF Gun
//--------------------------------------------------------------------------
datablock EffectProfile(ELFGunSwitchEffect)
{
effectname = "weapons/generic_switch";
minDistance = 2.5;
};
datablock EffectProfile(ELFGunFireEffect)
{
effectname = "weapons/ELF_fire";
minDistance = 10.0;
};
datablock EffectProfile(ElfFireWetEffect)
{
effectname = "weapons/ELF_underwater";
minDistance = 10.0;
};
datablock AudioProfile(ELFGunSwitchSound)
{
filename = "fx/weapons/generic_switch.wav";
description = AudioClosest3d;
preload = true;
effect = ELFGunSwitchEffect;
};
datablock AudioProfile(ELFGunFireSound)
{
filename = "fx/weapons/ELF_fire.wav";
description = CloseLooping3d;
preload = true;
effect = ELFGunFireEffect;
};
datablock AudioProfile(ElfFireWetSound)
{
filename = "fx/weapons/ELF_underwater.wav";
description = AudioClose3d;
preload = true;
};
datablock AudioProfile(ELFHitTargetSound)
{
filename = "fx/weapons/ELF_hit.wav";
description = CloseLooping3d;
preload = true;
};
//--------------------------------------
// Sparks
//--------------------------------------
datablock ParticleData(ELFSparks)
{
dragCoefficient = 1;
gravityCoefficient = 0.0;
inheritedVelFactor = 0.2;
constantAcceleration = 0.0;
lifetimeMS = 200;
lifetimeVarianceMS = 0;
textureName = "special/blueSpark";
colors[0] = "0.8 0.8 1.0 1.0";
colors[1] = "0.8 0.8 1.0 1.0";
colors[2] = "0.8 0.8 1.0 0.0";
sizes[0] = 0.35;
sizes[1] = 0.15;
sizes[2] = 0.0;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(ELFSparksEmitter)
{
ejectionPeriodMS = 5;
periodVarianceMS = 0;
ejectionVelocity = 4;
velocityVariance = 2;
ejectionOffset = 0.0;
thetaMin = 0;
thetaMax = 180;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
orientParticles = true;
// lifetimeMS = 100;
particles = "ELFSparks";
};
//--------------------------------------
// Projectile
//--------------------------------------
datablock ELFProjectileData(BasicELF)
{
beamRange = 37;
numControlPoints = 8;
restorativeFactor = 3.75;
dragFactor = 4.5;
endFactor = 2.25;
randForceFactor = 2;
randForceTime = 0.125;
drainEnergy = 1.0;
drainHealth = 0.0;
directDamageType = $DamageType::ELF;
mainBeamWidth = 0.1; // width of blue wave beam
mainBeamSpeed = 9.0; // speed that the beam travels forward
mainBeamRepeat = 0.25; // number of times the texture repeats
lightningWidth = 0.1;
lightningDist = 0.15; // distance of lightning from main beam
fireSound = ElfGunFireSound;
wetFireSound = ElfFireWetSound;
textures[0] = "special/ELFBeam";
textures[1] = "special/ELFLightning";
textures[2] = "special/BlueImpact";
emitter = ELFSparksEmitter;
};
//--------------------------------------
// Rifle and item...
//--------------------------------------
datablock ItemData(ELFGun)
{
className = Weapon;
catagory = "Spawn Items";
shapeFile = "weapon_elf.dts";
image = ELFGunImage;
mass = 1;
elasticity = 0.2;
friction = 0.6;
pickupRadius = 2;
pickUpName = "an ELF gun";
computeCRC = true;
emap = true;
};
datablock ShapeBaseImageData(ELFGunImage)
{
className = WeaponImage;
shapeFile = "weapon_elf.dts";
item = ELFGun;
offset = "0 0 0";
projectile = BasicELF;
projectileType = ELFProjectile;
deleteLastProjectile = true;
emap = true;
usesEnergy = true;
minEnergy = 3;
stateName[0] = "Activate";
stateSequence[0] = "Activate";
stateSound[0] = ELFGunSwitchSound;
stateTimeoutValue[0] = 0.5;
stateTransitionOnTimeout[0] = "ActivateReady";
stateName[1] = "ActivateReady";
stateTransitionOnAmmo[1] = "Ready";
stateTransitionOnNoAmmo[1] = "NoAmmo";
stateName[2] = "Ready";
stateTransitionOnNoAmmo[2] = "NoAmmo";
stateTransitionOnTriggerDown[2] = "CheckWet";
stateName[3] = "Fire";
stateEnergyDrain[3] = 5;
stateFire[3] = true;
stateAllowImageChange[3] = false;
stateScript[3] = "onFire";
stateTransitionOnTriggerUp[3] = "Deconstruction";
stateTransitionOnNoAmmo[3] = "Deconstruction";
//stateSound[3] = ElfFireWetSound;
stateName[4] = "NoAmmo";
stateTransitionOnAmmo[4] = "Ready";
stateName[5] = "Deconstruction";
stateScript[5] = "deconstruct";
stateTransitionOnTimeout[5] = "Ready";
stateTransitionOnNoAmmo[6] = "NoAmmo";
stateName[6] = "DryFire";
stateSound[6] = ElfFireWetSound;
stateTimeoutValue[6] = 0.5;
stateTransitionOnTimeout[6] = "Ready";
stateName[7] = "CheckWet";
stateTransitionOnWet[7] = "DryFire";
stateTransitionOnNotWet[7] = "Fire";
};