//-------------------------------------------------------------------------- // Targeting laser // //-------------------------------------------------------------------------- datablock AudioProfile(TargetingLaserSwitchSound) { filename = "fx/weapons/generic_switch.wav"; description = AudioClosest3d; preload = true; }; datablock AudioProfile(TargetingLaserPaintSound) { filename = "fx/weapons/targetinglaser_paint.wav"; description = CloseLooping3d; preload = true; }; //-------------------------------------- // Projectile //-------------------------------------- datablock TargetProjectileData(BasicTargeter) { directDamage = 0.0; hasDamageRadius = false; indirectDamage = 0.0; damageRadius = 0.0; velInheritFactor = 1.0; maxRifleRange = 1000; beamColor = "1.0 0.1 0.1"; startBeamWidth = 0.1; pulseBeamWidth = 0.15; 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(TargetingLaser) { className = Weapon; catagory = "Spawn Items"; shapeFile = "weapon_targeting.dts"; image = TargetingLaserImage; mass = 1; elasticity = 0.2; friction = 0.6; pickupRadius = 2; pickUpName = "a targeting laser rifle"; computeCRC = true; }; datablock ShapeBaseImageData(TargetingLaserImage) { className = WeaponImage; shapeFile = "weapon_targeting.dts"; item = TargetingLaser; offset = "0 0 0"; projectile = BasicTargeter; projectileType = TargetProjectile; deleteLastProjectile = true; usesEnergy = true; minEnergy = 3; stateName[0] = "Activate"; stateSequence[0] = "Activate"; stateSound[0] = TargetingLaserSwitchSound; 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] = 3; stateFire[3] = true; stateAllowImageChange[3] = false; stateScript[3] = "onFire"; stateTransitionOnTriggerUp[3] = "Deconstruction"; stateTransitionOnNoAmmo[3] = "Deconstruction"; stateSound[3] = TargetingLaserPaintSound; stateName[4] = "NoAmmo"; stateTransitionOnAmmo[4] = "Ready"; stateName[5] = "Deconstruction"; stateScript[5] = "deconstruct"; stateTransitionOnTimeout[5] = "Ready"; }; function TargetingLaserImage::onFire(%data,%obj,%slot) { if(%obj.TagBeac) { %obj.TagBeac.delete(); %obj.TagBeac = ""; } %p = Parent::onFire(%data, %obj, %slot); %p.setTarget(%obj.team); } function TargetingLaserImage::deconstruct(%data, %obj, %slot) { %pos = %obj.lastProjectile.getTargetPoint(); if(%obj.client.TagBeac) { %obj.client.TagBeac.delete(); %obj.client.TagBeac = ""; } %obj.client.TagBeac = new BeaconObject() { dataBlock = "BomberBeacon"; beaconType = "vehicle"; position = %pos; }; %obj.client.TagBeac.playThread($AmbientThread, "ambient"); %obj.client.TagBeac.team = %obj.team; %obj.client.TagBeac.sourceObject = %obj; %obj.client.TagBeac.setTarget(%obj.team); MissionCleanup.add(%obj.client.TagBeac); Parent::deconstruct(%data, %obj, %slot); }