ironsphererpg/scripts/rpgprojectiledata.cs

1694 lines
44 KiB
C#
Raw Normal View History

$spelldamagetype = 8;
$DamageType::Spell = 8;
exec("scripts/weapons/chaingun.cs");
exec("scripts/weapons/plasma.cs");
exec("scripts/weapons/gernadelauncher.cs");
exec("scripts/weapons/SniperRifle.cs");
function ProjectileData::onCollision(%data, %projectile, %targetObject, %modifier, %position, %normal)
{
%targetObject.damage(%projectile, %position, %data.directDamage * %modifier, %data.directDamageType);
}
function RadiusExplosion(%explosionSource, %position, %radius, %damage, %impulse, %sourceObject, %damageType)
{
InitContainerRadiusSearch(%position, %radius, $TypeMasks::PlayerObjectType |
$TypeMasks::VehicleObjectType |
$TypeMasks::StaticShapeObjectType |
$TypeMasks::TurretObjectType |
$TypeMasks::ItemObjectType);
%numTargets = 0;
%targetlist = "";
while ((%targetObject = containerSearchNext()) != 0)
{
%dist = containerSearchCurrRadDamageDist();
if (%dist > %radius)
continue;
if(%targetObject.istownbot)
continue;
if (%targetObject.isMounted())
{
%mount = %targetObject.getObjectMount();
%found = -1;
for (%i = 0; %i < %mount.getDataBlock().numMountPoints; %i++)
{
if (%mount.getMountNodeObject(%i) == %targetObject)
{
%found = %i;
break;
}
}
if (%found != -1)
{
if (%mount.getDataBlock().isProtectedMountPoint[%found])
{
continue;
}
}
}
%targets[%numTargets] = %targetObject;
%targetDists[%numTargets] = %dist;
%numTargets++;
}
for (%i = 0; %i < %numTargets; %i++)
{
%targetObject = %targets[%i];
%dist = %targetDists[%i];
%coverage = calcExplosionCoverage(%position, %targetObject,
($TypeMasks::InteriorObjectType |
$TypeMasks::TerrainObjectType |
$TypeMasks::ForceFieldObjectType |
$TypeMasks::VehicleObjectType));
if (%coverage == 0)
continue;
%targetlist = %targetObject SPC %targetlist;
//if ( $splashTest )
%amount = (1.0 - ((%dist / %radius) * 0.88)) * %coverage * %damage;
//else
//%amount = (1.0 - (%dist / %radius)) * %coverage * %damage;
//error( "damage: " @ %amount @ " at distance: " @ %dist @ " radius: " @ %radius @ " maxDamage: " @ %damage );
%data = %targetObject.getDataBlock();
%className = %data.className;
if (%impulse && %data.shouldApplyImpulse(%targetObject))
{
%p = %targetObject.getWorldBoxCenter();
%momVec = VectorSub(%p, %position);
%momVec = VectorNormalize(%momVec);
%impulseVec = VectorScale(%momVec, %impulse * (1.0 - (%dist / %radius)));
%doImpulse = true;
}
// ---------------------------------------------------------------------------
// z0dd - ZOD, 5/8/02. Removed Wheeled Vehicle to eliminate the flying MPB bug
// caused by tossing concussion grenades under a deployed MPB.
//else if( %className $= WheeledVehicleData || %className $= FlyingVehicleData || %className $= HoverVehicleData )
else if( %className $= FlyingVehicleData || %className $= HoverVehicleData )
{
%p = %targetObject.getWorldBoxCenter();
%momVec = VectorSub(%p, %position);
%momVec = VectorNormalize(%momVec);
%impulseVec = VectorScale(%momVec, %impulse * (1.0 - (%dist / %radius)));
if( getWord( %momVec, 2 ) < -0.5 )
%momVec = "0 0 1";
// Add obj's velocity into the momentum vector
%velocity = %targetObject.getVelocity();
//%momVec = VectorNormalize( vectorAdd( %momVec, %velocity) );
%doImpulse = true;
}
else
{
%momVec = "0 0 1";
%doImpulse = false;
}
%data2 = %explosionSource.getDataBlock();
if(%amount > 0)
{
//echo("spell:" @ %explosionsource.spell);
%targetObject.damage(%explosionsource, %position, %data2.directDamage * (1.0 - (%dist / %radius)), %DamageType);
//%data.damageObject(%targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %explosionSource.theClient, %explosionSource);
}
else if( %explosionSource.getDataBlock().getName() $= "ConcussionGrenadeThrown" && %data.getClassName() $= "PlayerData" )
{
%data.applyConcussion( %dist, %radius, %sourceObject, %targetObject );
if(!$teamDamage && %sourceObject != %targetObject && %sourceObject.client.team == %targetObject.client.team)
{
messageClient(%targetObject.client, 'msgTeamConcussionGrenade', '\c1You were hit by %1\'s concussion grenade.', getTaggedString(%sourceObject.client.name));
}
}
if( %doImpulse )
%targetObject.applyImpulse(%position, %impulseVec);
}
return %targetlist;
}
datablock ParticleData(GrenadeSmokeParticle)
{
dragCoeffiecient = 0.0;
gravityCoefficient = -0.2; // rises slowly
inheritedVelFactor = 0.00;
lifetimeMS = 700; // lasts 2 second
lifetimeVarianceMS = 150; // ...more or less
textureName = "particleTest";
useInvAlpha = true;
spinRandomMin = -30.0;
spinRandomMax = 30.0;
colors[0] = "0.9 0.9 0.9 1.0";
colors[1] = "0.6 0.6 0.6 1.0";
colors[2] = "0.4 0.4 0.4 0.0";
sizes[0] = 0.25;
sizes[1] = 1.0;
sizes[2] = 3.0;
times[0] = 0.0;
times[1] = 0.2;
times[2] = 1.0;
};
datablock ParticleEmitterData(GrenadeSmokeEmitter)
{
ejectionPeriodMS = 15;
periodVarianceMS = 5;
ejectionVelocity = 1.25;
velocityVariance = 0.50;
thetaMin = 0.0;
thetaMax = 90.0;
particles = "GrenadeSmokeParticle";
};
datablock EnergyProjectileData(EnergyBlast)
{
emitterDelay = -1;
directDamage = 0.01;
directDamageType = $DamageType::Spell;
kickBackStrength = 0.0;
bubbleEmitTime = 1.0;
sound = BlasterProjectileSound;
velInheritFactor = 0.5;
explosion = "BlasterExplosion";
splash = BlasterSplash;
grenadeElasticity = 0.998;
grenadeFriction = 0.0;
armingDelayMS = 500;
muzzleVelocity = 15.0;
drag = 0.05;
gravityMod = 0.0;
dryVelocity = 200.0;
wetVelocity = 150.0;
reflectOnWaterImpactAngle = 0.0;
explodeOnWaterImpact = false;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 3000;
hasLight = true;
lightRadius = 1.0;
lightColor = "0.5 0.0 0.0";
scale = "0.3 10.1 0.4";
crossViewAng = 0.99;
crossSize = 0.55;
lifetimeMS = 9000;
blurLifetime = 0.3;
blurWidth = 0.2;
blurColor = "0.4 0.0 0.0 1.0";
texture[0] = "special/blasterBolt";
texture[1] = "special/blasterBoltCross";
};
// #######################
// AUDIO DATABLOCK - THORN
// #######################
datablock AudioProfile(ThornProjectile)
{
filename = "Spell_Ice.wav";
description = ProjectileLooping3d;
preload = true;
};
datablock TracerProjectileData(Thorn)
{
doDynamicClientHits = true;
directDamage = 0.01;
directDamageType = $DamageType::Spell;
explosion = "ChaingunExplosion";
splash = ChaingunSplash;
kickBackStrength = 0.0;
sound = ThornProjectile;
dryVelocity = 425.0;
wetVelocity = 100.0;
velInheritFactor = 1.0;
fizzleTimeMS = 3000;
lifetimeMS = 3000;
explodeOnDeath = false;
reflectOnWaterImpactAngle = 0.0;
explodeOnWaterImpact = false;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 3000;
tracerLength = 15.0;
tracerAlpha = false;
tracerMinPixels = 6;
tracerColor = 211.0/255.0 @ " " @ 215.0/255.0 @ " " @ 120.0/255.0 @ " 0.75";
tracerTex[0] = "special/tracer00";
tracerTex[1] = "special/tracercross";
tracerWidth = 0.10;
crossSize = 0.20;
crossViewAng = 0.990;
renderCross = true;
decalData[0] = ChaingunDecal1;
decalData[1] = ChaingunDecal2;
decalData[2] = ChaingunDecal3;
decalData[3] = ChaingunDecal4;
decalData[4] = ChaingunDecal5;
decalData[5] = ChaingunDecal6;
};
datablock LinearFlareProjectileData(FireBall2)
{
projectileShapeName = "plasmabolt.dts";
scale = "2.0 2.0 2.0";
faceViewer = true;
directDamage = 0.00;
hasDamageRadius = true;
indirectDamage = 0.04;
damageRadius = 4.0;
kickBackStrength = 0.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $DamageType::Spell;
explosion = "PlasmaBoltExplosion";
splash = PlasmaSplash;
dryVelocity = 55.0;
wetVelocity = -1;
velInheritFactor = 0.3;
fizzleTimeMS = 2000;
lifetimeMS = 3000;
explodeOnDeath = false;
reflectOnWaterImpactAngle = 0.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = -1;
//activateDelayMS = 100;
activateDelayMS = -1;
size[0] = 0.2;
size[1] = 0.5;
size[2] = 0.1;
numFlares = 35;
flareColor = "1 0.75 0.25";
flareModTexture = "flaremod";
flareBaseTexture = "flarebase";
sound = PlasmaProjectileSound;
fireSound = PlasmaFireSound;
wetFireSound = PlasmaFireWetSound;
hasLight = true;
lightRadius = 3.0;
lightColor = "1 0.75 0.25";
};
//ironfist
datablock ExplosionData(IronFistExplosion)
{
soundProfile = GrenadeExplosionSound;
faceViewer = true;
explosionScale = "0.8 0.8 0.8";
debris = GrenadeDebris;
debrisThetaMin = 10;
debrisThetaMax = 50;
debrisNum = 8;
debrisVelocity = 26.0;
debrisVelocityVariance = 7.0;
emitter[0] = GrenadeDustEmitter;
emitter[1] = GExplosionSmokeEmitter;
emitter[2] = GrenadeSparksEmitter;
shakeCamera = true;
camShakeFreq = "5.0 3.0 6.0";
camShakeAmp = "100.0 100.0 100.0";
camShakeDuration = 10;
camShakeRadius = 10.0;
};
datablock LinearFlareProjectileData(IronFist)
{
projectileShapeName = "ironfist.dts";
scale = "2.0 2.0 2.0";
//faceViewer = true;
directDamage = 0;
hasDamageRadius = true;
indirectDamage = 0.04;
damageRadius = 4.0;
kickBackStrength = 2500.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $DamageType::Spell;
explosion = "IronFistExplosion";
splash = GrenadeSplash;
dryVelocity = 55.0;
wetVelocity = 55.0;
velInheritFactor = 0.3;
fizzleTimeMS = 2000;
lifetimeMS = 3000;
explodeOnDeath = false;
reflectOnWaterImpactAngle = 0.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = -1;
//activateDelayMS = 100;
activateDelayMS = -1;
size[0] = 0.2;
size[1] = 0.5;
size[2] = 0.1;
numFlares = 35;
flareColor = "0 0 0";
flareModTexture = "flaremod";
flareBaseTexture = "flarebase";
sound = PlasmaProjectileSound;
fireSound = PlasmaFireSound;
wetFireSound = PlasmaFireWetSound;
hasLight = false;
};
//Firebomb
//---------------------------------------------------------------
datablock GrenadeProjectileData(FireBomb)
{
projectileShapeName = "plasmabolt.dts";
faceViewer = true;
emitterDelay = 0.1;
directDamage = 0.0;
hasDamageRadius = true;
indirectDamage = 0.40;
damageRadius = 5.0;
radiusDamageType = $DamageType::Spell;
kickBackStrength = 10;
bubbleEmitTime = 1.0;
sound = PlasmaProjectileSound;
explosion = "PlasmaBoltExplosion";
velInheritFactor = 0.5;
splash = PlasmaSplash;
explodeOnWaterImpact= true;
baseEmitter = "GrenadeSmokeEmitter";
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 250;
muzzleVelocity = 47.00;
drag = 0.1;
hasLight = true;
lightRadius = 3.0;
lightColor = "1 0.75 0.25";
};
// #######################
// AUDIO DATABLOCK - ICE SPIKE
// #######################
datablock AudioProfile(IceProjectile)
{
filename = "spell_beam.wav";
description = ProjectileLooping3d;
preload = true;
};
datablock AudioProfile(IceSpikeImpact)
{
filename = "iceburst.wav";
description = AudioClosest3d;
preload = true;
};
//icespike
//--------------------
datablock ParticleData(IceSpikeParticle)
{
dragCoefficient = 3;
gravityCoefficient = 0.1;
windCoefficient = 1;
inheritedVelFactor = 0.2;
constantAcceleration = 0;
lifetimeMS = 2500;
lifetimeVarianceMS = 56;
useInvAlpha = 0;
spinRandomMin = -51.6129;
spinRandomMax = 205.645;
textureName = "special/Ice2.png";
times[0] = 0;
times[1] = 0.177419;
times[2] = 1;
colors[0] = "0.149606 0.360000 0.560000 1.000000";
colors[1] = "0.236220 0.360000 0.568000 0.588710";
colors[2] = "0.157480 0.360000 1.000000 0.000000";
sizes[0] = 0;
sizes[1] = 0.451613;
sizes[2] = 1.18548;
};
datablock ParticleEmitterData(IceSpikeEmitter)
{
ejectionPeriodMS = 2;
periodVarianceMS = 0;
ejectionVelocity = 2.74194;
velocityVariance = 2;
ejectionOffset = 0;
thetaMin = 0;
lifetimeMS = 120;
thetaMax = 72.5806;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = 0;
orientParticles= 0;
orientOnVelocity = 0;
particles = "IceSpikeParticle";
};
datablock ParticleData(IceSparks2Particle)
{
dragCoefficient = 0;
gravityCoefficient = -0.01;
windCoefficient = 1;
inheritedVelFactor = 0;
constantAcceleration = 0;
lifetimeMS = 1000;
lifetimeVarianceMS = 0;
useInvAlpha = 0;
spinRandomMin = 0;
spinRandomMax = 0;
textureName = "special/crescent3.png";
times[0] = 0;
times[1] = 0.508065;
times[2] = 1;
colors[0] = "0.500000 0.500000 1.000000 1.000000";
colors[1] = "0.500000 0.500000 1.000000 0.500000";
colors[2] = "0.500000 0.500000 1.000000 0.000000";
sizes[0] = 0.395161;
sizes[1] = 0.33871;
sizes[2] = 0.508065;
};
datablock ParticleEmitterData(IceSparks2)
{
ejectionPeriodMS = 2;
periodVarianceMS = 0;
ejectionVelocity = 4.55645;
velocityVariance = 1;
ejectionOffset = 0.806452;
thetaMin = 0;
thetaMax = 90;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = 0;
lifeTimeMS = 60.6796;
orientParticles= 1;
orientOnVelocity = 0;
particles = "IceSparks2Particle";
};
datablock ExplosionData(IceSpikeExplosion)
{
soundProfile = IceSpikeImpact;
emitter[0] = IceSpikeEmitter;
emitter[1] = IceSparks2;
faceViewer = false;
};
datablock LinearProjectileData(IceSpike)
{
projectileShapeName = "disc.dts";
scale = "0.1 1.0 0.2";
emitterDelay = -1;
directDamage = 0.1;
hasDamageRadius = false;
indirectDamage = 0.00;
damageRadius = 0.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $damageType::spell;
kickBackStrength = 0;
sound = IceProjectile;
explosion = "IceSpikeExplosion";
underwaterExplosion = "IceSpikeExplosion";
splash = ChaingunSplash;
dryVelocity = 70;
wetVelocity = 10;
velInheritFactor = 0.5;
fizzleTimeMS = 5000;
lifetimeMS = 5000;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 15.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 5000;
activateDelayMS = 200;
hasLight = true;
lightRadius = 2.0;
lightColor = "0.175 0.175 0.9";
};
datablock LinearProjectileData(IceSpike2)
{
projectileShapeName = "disc.dts";
scale = "0.1 1.0 0.2";
emitterDelay = -1;
directDamage = 0.1;
hasDamageRadius = false;
indirectDamage = 0.00;
damageRadius = 0.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $damageType::spell;
kickBackStrength = 0;
sound = IceProjectile;
explosion = "IceSpikeExplosion";
underwaterExplosion = "IceSpikeExplosion";
splash = ChaingunSplash;
dryVelocity = 70;
wetVelocity = 10;
velInheritFactor = 0.5;
fizzleTimeMS = 500;
lifetimeMS = 500;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 15.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = 500;
activateDelayMS = 200;
hasLight = true;
lightRadius = 2.0;
lightColor = "0.175 0.175 0.9";
};
//datablock GrenadeProjectileData(IceSpike2)
//{
// projectileShapeName = "disc.dts";
// scale = "0.1 1.0 0.2";
// emitterDelay = -1;
// directDamage = 0.1;
// hasDamageRadius = false;
// indirectDamage = 0.00;
// damageRadius = 0.0;
// radiusDamageType = $DamageType::Spell;
// directDamageType = $damageType::spell;
// kickBackStrength = 0;
//
// bubbleEmitTime = 1.0;
//
// sound = ChaingunProjectile;
// explosion = "ChaingunExplosion";
// velInheritFactor = 0.5;
// splash = ChaingunSplash;
//
// explodeOnWaterImpact= true;
//
//
// grenadeElasticity = 0.1;
// grenadeFriction = 0.1;
// armingDelayMS = 250;
// muzzleVelocity = 47.00;
// drag = 0.1;
// lifetimeMS = 5000;
//};
//melt
datablock ExplosionData(MeltExplosion)
{
explosionShape = "effect_plasma_explosion.dts";
soundProfile = plasmaExpSound;
particleEmitter = PlasmaExplosionEmitter;
particleDensity = 150;
particleRadius = 1.25;
faceViewer = true;
sizes[0] = "5.0 5.0 5.0";
sizes[1] = "5.0 5.0 5.0";
times[0] = 0.0;
times[1] = 1.5;
};
datablock LinearFlareProjectileData(Melt)
{
projectileShapeName = "plasmabolt.dts";
scale = "10.0 10.0 10.0";
faceViewer = true;
directDamage = 0.00;
hasDamageRadius = true;
indirectDamage = 0.04;
damageRadius = 15.0;
kickBackStrength = 0.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $DamageType::Spell;
explosion = "MeltExplosion";
splash = PlasmaSplash;
dryVelocity = 55.0;
wetVelocity = -1;
velInheritFactor = 0.3;
fizzleTimeMS = 2000;
lifetimeMS = 3000;
explodeOnDeath = false;
reflectOnWaterImpactAngle = 0.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = -1;
//activateDelayMS = 100;
activateDelayMS = -1;
size[0] = 0.2;
size[1] = 0.5;
size[2] = 0.1;
numFlares = 35;
flareColor = "1 0.75 0.25";
flareModTexture = "flaremod";
flareBaseTexture = "flarebase";
sound = PlasmaProjectileSound;
fireSound = PlasmaFireSound;
wetFireSound = PlasmaFireWetSound;
hasLight = true;
lightRadius = 3.0;
lightColor = "1 0.75 0.25";
};
datablock LinearFlareProjectileData(HellFireball)
{
projectileShapeName = "plasmabolt.dts";
scale = "10.0 10.0 10.0";
faceViewer = true;
directDamage = 0.00;
hasDamageRadius = true;
indirectDamage = 0.04;
damageRadius = 15.0;
kickBackStrength = 0.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $DamageType::Spell;
explosion = "MeltExplosion";
splash = PlasmaSplash;
dryVelocity = 30.0;
wetVelocity = 30;
velInheritFactor = 0.3;
fizzleTimeMS = 1000;
lifetimeMS = 1000;
explodeOnDeath = true;
reflectOnWaterImpactAngle = 0.0;
explodeOnWaterImpact = true;
deflectionOnWaterImpact = 0.0;
fizzleUnderwaterMS = -1;
//activateDelayMS = 100;
activateDelayMS = -1;
size[0] = 0.2;
size[1] = 0.5;
size[2] = 0.1;
numFlares = 35;
flareColor = "1 0.75 0.25";
flareModTexture = "flaremod";
flareBaseTexture = "flarebase";
sound = PlasmaProjectileSound;
fireSound = PlasmaFireSound;
wetFireSound = PlasmaFireWetSound;
hasLight = true;
lightRadius = 3.0;
lightColor = "1 0.75 0.25";
};
//dimension rift
//Credit goes to MostLikely for this bit.
datablock ParticleData(DHHoleParticle)
{
dragCoeffiecient = 0.0;
gravityCoefficient = 0.0;
inheritedVelFactor = 0.0;
lifetimeMS = 6000;
lifetimeVarianceMS = 0;
spinSpeed = "0";
spinRandomMin = 0.0;
spinRandomMax = 0.0;
windcoefficient = 0;
textureName = "skins/jetpackFlare";
UseInvAlpha = True;
colors[0] = "0.0 0.0 0.0 0.0";
colors[1] = "0.0 0.0 0.0 1.0";
colors[2] = "0.0 0.0 0.0 1.0";
colors[3] = "0.0 0.0 0.0 0.0";
sizes[0] = 800;
sizes[1] = 800;
sizes[2] = 800;
sizes[3] = 800;
times[0] = 0.25;
times[1] = 0.5;
times[2] = 0.75;
times[3] = 1;
};
datablock ParticleEmitterData(DHHoleEmitter)
{
lifetimeMS = 10;
ejectionPeriodMS = 50;
periodVarianceMS = 0;
ejectionVelocity = 0.1;
velocityVariance = 0.1;
ejectionoffset = 10;
phiReferenceVel = "0";
phiVariance = "360";
thetaMin = 0.0;
thetaMax = 180.0;
spinRandomMin = "-200";
spinRandomMax = "200";
orientParticles = true;
orientOnVelocity = false;
particles = "DHHoleParticle";
predietime = 6000;
};
datablock ShockwaveData(RiftShockwave)
{
width = 5;
numSegments = 20;
numVertSegments = 4;
velocity = 100;
acceleration = -10.0;
lifetimeMS = 5200;
height = 2.0;
verticalCurve = 0.5;
mapToTerrain = false;
renderBottom = true;
texture[0] = "special/shockwave4";
texture[1] = "special/gradient";
texWrap = 6.0;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
colors[0] = "1.0 0.7 0.5 1.0";
colors[1] = "1.0 0.5 0.2 1.0";
colors[2] = "1.0 0.25 0.1 0.0";
};
datablock AudioProfile(RiftExplosionSound)
{
filename = "fx/vehicles/bomber_bomb_impact.wav";
description = AudioBIGExplosion3d;
preload = true;
};
datablock ExplosionData(RiftExplosion)
{
shockwave = RiftShockwave;
shockwaveOnTerrain = false;
explosionShape = "effect_plasma_explosion.dts";
playSpeed = 1.0;
soundProfile = RiftExplosionSound;
faceViewer = true;
sizes[0] = "10.0 10.0 10.0";
shakeCamera = true;
camShakeFreq = "6.0 7.0 7.0";
camShakeAmp = "100.0 100.0 100.0";
camShakeDuration = 1.0;
camShakeRadius = 7.0;
};
datablock LinearProjectileData(Drift) {
className = "LinearProjectileData";
projectileShapeName = "turret_muzzlepoint.dts";
baseEmitter = "DHHoleEmitter";
directDamage = 0.1;
hasDamageRadius = true;
indirectDamage = 0.1;
damageRadius = 75.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $DamageType::spell;
kickBackStrength = -7500.0;
delayEmitter = "DHHoleEmitter";
hasLight = "1";
lightRadius = "20";
lightColor = "0.500000 0.500000 1.000000 1.000000";
dryVelocity = "12";
wetVelocity = "12";
fizzleTimeMS = "12000";
lifetimeMS = "12000";
explodeOnDeath = "1";
explosion = "RiftExplosion";
};
datablock SniperProjectileData(Beam)
{
directDamage = 0.4;
hasDamageRadius = false;
indirectDamage = 0.0;
damageRadius = 0.0;
velInheritFactor = 1.0;
sound = SniperRifleProjectileSound;
explosion = "SniperExplosion";
splash = SniperSplash;
directDamageType = $DamageType::Spell;
maxRifleRange = 1000;
rifleHeadMultiplier = 1.3;
beamColor = "1 0.1 0.1";
fadeTime = 10.0;
startBeamWidth = 0.145;
endBeamWidth = 0.25;
pulseBeamWidth = 0.5;
beamFlareAngle = 3.0;
minFlareSize = 0.0;
maxFlareSize = 400.0;
pulseSpeed = 6.0;
pulseLength = 0.150;
lightRadius = 10.0;
lightColor = "0.3 0.0 0.0";
textureName[0] = "special/flare";
textureName[1] = "special/nonlingradient";
textureName[2] = "special/laserrip01";
textureName[3] = "special/laserrip02";
textureName[4] = "special/laserrip03";
textureName[5] = "special/laserrip04";
textureName[6] = "special/laserrip05";
textureName[7] = "special/laserrip06";
textureName[8] = "special/laserrip07";
textureName[9] = "special/laserrip08";
textureName[10] = "special/laserrip09";
textureName[11] = "special/sniper00";
};
//cloud
datablock ParticleData(CloudParticle)
{
dragCoeffiecient = 0.0;
gravityCoefficient = 0.0;
inheritedVelFactor = 0.0;
lifetimeMS = 500;
lifetimeVarianceMS = 0;
spinSpeed = "0";
spinRandomMin = 0.0;
spinRandomMax = 0.0;
windcoefficient = 0;
textureName = "skins/jetpackFlare";
UseInvAlpha = True;
colors[0] = "0.5 0.5 0.5 0.0";
colors[1] = "0.8 0.7 0.7 1.0";
colors[2] = "0.7 0.8 0.7 1.0";
colors[3] = "0.7 0.7 0.8 0.0";
sizes[0] = 10;
sizes[1] = 10;
sizes[2] = 10;
sizes[3] = 10;
times[0] = 0.25;
times[1] = 0.5;
times[2] = 0.75;
times[3] = 1;
};
datablock ParticleEmitterData(CloudEmitter)
{
lifetimeMS = 10;
ejectionPeriodMS = 50;
periodVarianceMS = 0;
ejectionVelocity = 0.1;
velocityVariance = 0.1;
ejectionoffset = 2;
phiReferenceVel = "0";
phiVariance = "360";
thetaMin = 0.0;
thetaMax = 180.0;
spinRandomMin = "-200";
spinRandomMax = "200";
orientParticles = true;
orientOnVelocity = false;
particles = "CloudParticle";
predietime = 500;
};
datablock LinearProjectileData(Cloud) {
className = "LinearProjectileData";
projectileShapeName = "turret_muzzlepoint.dts";
baseEmitter = "CloudEmitter";
directDamage = 0.1;
hasDamageRadius = true;
indirectDamage = 0.1;
faceviewer = true;
damageRadius = 10.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $DamageType::spell;
delayEmitter = "CloudEmitter";
dryVelocity = "35";
wetVelocity = "35";
fizzleTimeMS = "12000";
lifetimeMS = "12000";
explodeOnDeath = "1";
explosion = "PlasmaBoltExplosion";
};
datablock ParticleData(PCloudParticle)
{
dragCoeffiecient = 0.0;
gravityCoefficient = 0.0;
inheritedVelFactor = 0.0;
lifetimeMS = 500;
lifetimeVarianceMS = 0;
spinSpeed = "0";
spinRandomMin = 0.0;
spinRandomMax = 0.0;
windcoefficient = 0;
textureName = "skins/jetpackFlare";
UseInvAlpha = True;
colors[0] = "1.0 0.3 0.1 0.0";
colors[1] = "1.0 0.3 0.3 1.0";
colors[2] = "1.0 0.3 0.5 1.0";
colors[3] = "1.0 0.1 0.5 0.0";
sizes[0] = 10;
sizes[1] = 10;
sizes[2] = 10;
sizes[3] = 10;
times[0] = 0.25;
times[1] = 0.5;
times[2] = 0.75;
times[3] = 1;
};
datablock ParticleEmitterData(PCloudEmitter)
{
lifetimeMS = 10;
ejectionPeriodMS = 50;
periodVarianceMS = 0;
ejectionVelocity = 0.1;
velocityVariance = 0.1;
ejectionoffset = 2;
phiReferenceVel = "0";
phiVariance = "360";
thetaMin = 0.0;
thetaMax = 180.0;
spinRandomMin = "-200";
spinRandomMax = "200";
orientParticles = true;
orientOnVelocity = false;
particles = "PCloudParticle";
predietime = 500;
};
datablock LinearProjectileData(PowerCloud) {
className = "LinearProjectileData";
projectileShapeName = "turret_muzzlepoint.dts";
baseEmitter = "PCloudEmitter";
directDamage = 0.1;
hasDamageRadius = true;
indirectDamage = 0.1;
faceviewer = true;
damageRadius = 10.0;
radiusDamageType = $DamageType::Spell;
directDamageType = $DamageType::spell;
delayEmitter = "PCloudEmitter";
dryVelocity = "40";
wetVelocity = "40";
fizzleTimeMS = "12000";
lifetimeMS = "12000";
explodeOnDeath = "1";
explosion = "PlasmaBoltExplosion";
};
//Defensive Magic
datablock ParticleData(HealAuraEmitter2Particle)
{
dragCoefficient = 0;
gravityCoefficient = 0.053871;
windCoefficient = 0;
inheritedVelFactor = 1;
constantAcceleration = 0;
lifetimeMS = 600;
lifetimeVarianceMS = 300;
useInvAlpha = 0;
spinRandomMin = -200;
spinRandomMax = 0;
textureName = "special/blasterBoltCross.PNG";
times[0] = 0;
times[1] = 0.01;
times[2] = 1;
colors[0] = "0.000000 0.256000 1.000000 1.000000";
colors[1] = "0.000000 0.528000 1.000000 0.500000";
colors[2] = "0.000000 0.784000 1.000000 0.000000";
sizes[0] = 1;
sizes[1] = 1;
sizes[2] = 1.18548;
};
datablock ParticleEmitterData(HealAuraEmitter2)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 4.84677;
velocityVariance = 4.70161;
ejectionOffset = 0.645161;
phiReferenceVel = "0";
phiVariance = "360";
thetaMin = 0.0;
thetaMax = 180.0;
spinRandomMin = "-200";
spinRandomMax = "200";
overrideAdvances = 0;
lifeTimeMS = 206.311;
orientParticles= 0;
orientOnVelocity = 1;
particles = "HealAuraEmitter2Particle";
};
datablock ParticleData(HealParticle)
{
dragCoefficient = 0;
gravityCoefficient = 0.053871;
windCoefficient = 0;
inheritedVelFactor = 1;
constantAcceleration = 0;
lifetimeMS = 100;
lifetimeVarianceMS = 10;
useInvAlpha = 0;
spinRandomMin = -200;
spinRandomMax = 0;
textureName = "special/blasterBoltCross.PNG";
times[0] = 0;
times[1] = 0.01;
times[2] = 1;
colors[0] = "0.000000 0.256000 0.000000 1.000000";
colors[1] = "0.000000 0.528000 0.000000 0.500000";
colors[2] = "0.000000 0.784000 0.000000 0.000000";
sizes[0] = 1;
sizes[1] = 1;
sizes[2] = 1.18548;
};
datablock ParticleEmitterData(HealEmitter)
{
ejectionPeriodMS = 1;
periodVarianceMS = 0;
ejectionVelocity = 4.84677;
velocityVariance = 4.70161;
ejectionOffset = 0.645161;
phiReferenceVel = "0";
phiVariance = "360";
thetaMin = 0.0;
thetaMax = 180.0;
spinRandomMin = "-200";
spinRandomMax = "200";
overrideAdvances = 0;
lifeTimeMS = 206.311;
orientParticles= 0;
orientOnVelocity = 1;
particles = "HealParticle";
};
//Neutral Magic
// #######################
// AUDIO DATABLOCK - FLARE
// #######################
datablock AudioProfile(FlareGrenadeBurnSound)
{
filename = "Flame4.wav";
description = CloseLooping3d;
preload = true;
};
datablock AudioProfile(FlareGrenadeExplosionSound)
{
filename = "Spell_Flame.wav";
description = AudioClosest3d;
preload = true;
};
//--------------------------------------------------------------------------
// Particle effects
//--------------------------------------
datablock ParticleData(FlareParticle)
{
dragCoeffiecient = 0.0;
gravityCoefficient = 0.15;
inheritedVelFactor = 0.5;
lifetimeMS = 1800;
lifetimeVarianceMS = 200;
textureName = "special/flareSpark";
colors[0] = "1.0 1.0 1.0 1.0";
colors[1] = "1.0 1.0 1.0 1.0";
colors[2] = "1.0 1.0 1.0 0.0";
sizes[0] = 0.6;
sizes[1] = 0.3;
sizes[2] = 0.1;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleData(FlareParticleg)
{
dragCoeffiecient = 0.0;
gravityCoefficient = 0.15;
inheritedVelFactor = 0.5;
lifetimeMS = 1800;
lifetimeVarianceMS = 200;
textureName = "special/flareSparkg";
colors[0] = "1.0 1.0 1.0 1.0";
colors[1] = "1.0 1.0 1.0 1.0";
colors[2] = "1.0 1.0 1.0 0.0";
sizes[0] = 0.6;
sizes[1] = 0.3;
sizes[2] = 0.1;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleData(FlareParticleb)
{
dragCoeffiecient = 0.0;
gravityCoefficient = 0.15;
inheritedVelFactor = 0.5;
lifetimeMS = 1800;
lifetimeVarianceMS = 200;
textureName = "special/flareSparkb";
colors[0] = "1.0 1.0 1.0 1.0";
colors[1] = "1.0 1.0 1.0 1.0";
colors[2] = "1.0 1.0 1.0 0.0";
sizes[0] = 0.6;
sizes[1] = 0.3;
sizes[2] = 0.1;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
};
datablock ParticleEmitterData(FlareEmitter)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 1.0;
velocityVariance = 0.0;
thetaMin = 0.0;
thetaMax = 90.0;
orientParticles = true;
orientOnVelocity = false;
particles = "FlareParticle";
};
datablock ParticleEmitterData(FlareEmitterg)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 1.0;
velocityVariance = 0.0;
thetaMin = 0.0;
thetaMax = 90.0;
orientParticles = true;
orientOnVelocity = false;
particles = "FlareParticleg";
};
datablock ParticleEmitterData(FlareEmitterb)
{
ejectionPeriodMS = 10;
periodVarianceMS = 0;
ejectionVelocity = 1.0;
velocityVariance = 0.0;
thetaMin = 0.0;
thetaMax = 90.0;
orientParticles = true;
orientOnVelocity = false;
particles = "FlareParticleb";
};
//--------------------------------------------------------------------------
// Explosion - Flare Grenade
//--------------------------------------
datablock ExplosionData(FlareGrenadeExplosion)
{
explosionShape = "energy_explosion.dts";
soundProfile = FlareGrenadeExplosionSound;
faceViewer = true;
explosionScale = "0.1 0.1 0.1";
};
//--------------------------------------------------------------------------
// Projectile - Flare Grenade
//--------------------------------------
datablock FlareProjectileData(Flare)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
sound = FlareGrenadeBurnSound;
explosion = FlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3";
texture[1] = "special/LensFlare/flare00";
size = 4.0;
baseEmitter = FlareEmitter;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 10000;
muzzleVelocity = 15.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 19.0;
lightColor = "0.5 0.1 0.1 0.1";
};
datablock FlareProjectileData(Flareg)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
sound = FlareGrenadeBurnSound;
explosion = FlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3g";
texture[1] = "special/LensFlare/flare00";
size = 4.0;
baseEmitter = FlareEmitterg;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 10000;
muzzleVelocity = 15.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 19.0;
lightColor = "0.1 0.5 0.1 0.1";
};
datablock FlareProjectileData(Flareb)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
sound = FlareGrenadeBurnSound;
explosion = FlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3b";
texture[1] = "special/LensFlare/flare00";
size = 4.0;
baseEmitter = FlareEmitterb;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 10000;
muzzleVelocity = 15.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 19.0;
lightColor = "0.1 0.1 0.5 0.1";
};
//--------------------------------------------------------------------------
// Projectile - Flare Grenade
//--------------------------------------
datablock FlareProjectileData(sFlare)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
//sound = FlareGrenadeBurnSound;
explosion = FlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3";
texture[1] = "special/LensFlare/flare00";
size = 1.0;
baseEmitter = FlareEmitter;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 50;
muzzleVelocity = 10.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 10.0;
lightColor = "0.5 0.1 0.1 0.1";
};
datablock FlareProjectileData(sFlareg)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
//sound = FlareGrenadeBurnSound;
explosion = FlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3g";
texture[1] = "special/LensFlare/flare00";
size = 1.0;
baseEmitter = FlareEmitterg;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 50;
muzzleVelocity = 10.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 10.0;
lightColor = "0.1 0.5 0.1 0.1";
};
datablock FlareProjectileData(sFlareb)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
//sound = FlareGrenadeBurnSound;
explosion = FlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3b";
texture[1] = "special/LensFlare/flare00";
size = 1.0;
baseEmitter = FlareEmitterb;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 50;
muzzleVelocity = 10.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 10.0;
lightColor = "0.1 0.1 0.5 0.1";
};
//Signal Flares
datablock ExplosionData(SignalFlareGrenadeExplosion)
{
explosionShape = "energy_explosion.dts";
soundProfile = RiftExplosionSound;
faceViewer = true;
explosionScale = "0.1 0.1 0.1";
};
datablock FlareProjectileData(SignalFlare)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
sound = FlareGrenadeBurnSound;
explosion = SignalFlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3";
texture[1] = "special/LensFlare/flare00";
size = 4.0;
baseEmitter = FlareEmitter;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 25000;
muzzleVelocity = 15.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 19.0;
lightColor = "0.5 0.1 0.1 0.1";
};
datablock FlareProjectileData(SignalFlareg)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
sound = FlareGrenadeBurnSound;
explosion = SignalFlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3g";
texture[1] = "special/LensFlare/flare00";
size = 4.0;
baseEmitter = FlareEmitterg;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 25000;
muzzleVelocity = 15.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 19.0;
lightColor = "0.1 0.5 0.1 0.1";
};
datablock FlareProjectileData(SignalFlareb)
{
projectileShapeName = "grenade_projectile.dts";
emitterDelay = -1;
directDamage = 0.0;
hasDamageRadius = false;
kickBackStrength = 0;
useLensFlare = false;
sound = FlareGrenadeBurnSound;
explosion = SignalFlareGrenadeExplosion;
velInheritFactor = 0.5;
texture[0] = "special/flare3b";
texture[1] = "special/LensFlare/flare00";
size = 4.0;
baseEmitter = FlareEmitterb;
grenadeElasticity = 0.35;
grenadeFriction = 0.2;
armingDelayMS = 25000;
muzzleVelocity = 15.0;
drag = 0.1;
gravityMod = 0.15;
hasLight = true;
lightRadius = 19.0;
lightColor = "0.1 0.1 0.5 0.1";
};
function createEmitter(%pos, %emitter, %rot)
{
%dummy = new ParticleEmissionDummy()
{
position = %pos;
rotation = %rot;
scale = "1 1 1";
dataBlock = defaultEmissionDummy;
emitter = %emitter;
velocity = "1";
};
MissionCleanup.add(%dummy);
%pos = getWords(%dummy.getTransform(), 0, 2);
%trans = %pos@" "@%rot;
%dummy.setTransform(%trans);
if(isObject(%dummy))
return %dummy;
}
function pos(%object)
{
%trans = %object.getTransform();
%pos = getword(%trans, 0) @ " " @ getword(%trans, 1) @ " " @ getword(%trans, 2);
return %pos;
}
//darkhole("-524 1026 150", "",13501,"-524 1026 61",0);
//%p1 =CreateEmitter(-524 1026 150,DHDiskEmitter,"0 0 0");
//CreateEmitter("-524 1026 50",DHDustEmitter,"1 0 0 3.14");
//CreateEmitter("-510 911 50",DHHoleEmitter,"0 0 0");
//CreateEmitter("-510 911 50",ArcEmitter,"0 0 0");