datablock TracerProjectileData(NLS22AcidPulse) { doDynamicClientHits = true; directDamage = 0.65; directDamageType = $DamageType::AcidSniper; explosion = "ChaingunExplosion"; splash = ChaingunSplash; HeadMultiplier = 1.5; LegsMultiplier = 0.35; HeadShotKill = 1; ImageSource = "NLS22AcidSniperImage"; kickBackStrength = 15.0; sound = ChaingunProjectile; dryVelocity = 3000.0; wetVelocity = 2000.0; velInheritFactor = 1.0; fizzleTimeMS = 1000; lifetimeMS = 1000; explodeOnDeath = false; reflectOnWaterImpactAngle = 0.0; explodeOnWaterImpact = false; deflectionOnWaterImpact = 0.0; fizzleUnderwaterMS = 3000; tracerLength = 20.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.09; 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 ItemData(NLS22AcidSniperAmmo) { className = Ammo; catagory = "Ammo"; shapeFile = "ammo_chaingun.dts"; mass = 1; elasticity = 0.2; friction = 0.6; pickupRadius = 2; pickUpName = "Some NLS-22 Acid Sniper Canisters"; computeCRC = true; }; //-------------------------------------------------------------------------- // Weapon //-------------------------------------- datablock ShapeBaseImageData(NLS22AcidSniperImage) { className = WeaponImage; shapeFile = "weapon_sniper.dts"; mass = 10; item = NLS22AcidSniper; ammo = NLS22AcidSniperAmmo; projectile = NLS22AcidPulse; projectileType = TracerProjectile; emap = true; armThread = looksn; //ClipStuff ClipName = "NLS22AcidSniperClip"; ClipPickupName["NLS22AcidSniperClip"] = "A Few Boxes Of NLS-22 Acid Canisters"; ShowsClipInHud = 1; ClipReloadTime = 4; ClipReturn = 4; InitialClips = 5; // //Challenges HasChallenges = 1; ChallengeCt = 8; Challenge[1] = "NLS-22 Hunter\t100\t150\tNone"; Challenge[2] = "NLS-22 Expert\t200\t250\tNone"; Challenge[3] = "NLS-22 Master\t500\t500\tNone"; Challenge[4] = "NLS-22 God\t1000\t1000\tNone"; Challenge[5] = "NLS-22 Bronze Commendation\t2500\t10000\tNone"; Challenge[6] = "NLS-22 Silver Commendation\t5000\t25000\tNone"; Challenge[7] = "NLS-22 Gold Commendation\t10000\t50000\tNone"; Challenge[8] = "NLS-22 Titan Commendation\t25000\t75000\tNone"; GunName = "NLS-22 Acid Sniper Rifle"; // ChallengeRequire = "ThroughTheFlare"; hideExistence = true; casing = ShellDebris; shellExitDir = "1.0 0.3 1.0"; shellExitOffset = "0.15 -0.56 -0.1"; shellExitVariance = 15.0; shellVelocity = 3.0; stateName[0] = "Activate"; stateTransitionOnTimeout[0] = "ActivateReady"; stateTimeoutValue[0] = 0.5; stateSequence[0] = "Activate"; stateSound[0] = ChaingunSwitchSound; 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.01; stateFire[3] = true; stateRecoil[3] = LightRecoil; stateAllowImageChange[3] = false; stateScript[3] = "onFire"; stateSound[3] = "M1FireSound"; stateName[4] = "Reload"; stateTransitionOnNoAmmo[4] = "NoAmmo"; stateTransitionOnTimeout[4] = "Ready"; stateTimeoutValue[4] = 0.9; stateAllowImageChange[4] = false; stateSequence[4] = "Reload"; stateName[5] = "NoAmmo"; stateTransitionOnAmmo[5] = "Reload"; stateSequence[5] = "NoAmmo"; stateTransitionOnTriggerDown[5] = "DryFire"; stateName[6] = "DryFire"; stateSound[6] = ChaingunDryFireSound; stateTimeoutValue[6] = 1.0; stateTransitionOnTimeout[6] = "NoAmmo"; stateName[7] = "WetFire"; stateSound[7] = PlasmaFireWetSound; stateTimeoutValue[7] = 1.0; stateTransitionOnTimeout[7] = "Ready"; stateName[8] = "CheckWet"; stateTransitionOnWet[8] = "WetFire"; stateTransitionOnNotWet[8] = "Fire"; }; datablock ItemData(NLS22AcidSniper) { className = Weapon; catagory = "Spawn Items"; shapeFile = "weapon_sniper.dts"; image = NLS22AcidSniperImage; mass = 1.0; elasticity = 0.0; friction = 0.6; pickupRadius = 2; pickUpName = "a NLS-22 Acid Sniper Rifle"; computeCRC = true; emap = true; }; //Two images make the scope datablock ShapeBaseImageData(NLS22AcidSniperScopeImage) : NLS22AcidSniperImage { shapeFile = "turret_belly_barrell.dts"; offset = "0 0.25 0.25"; rotation = "1 0 0 180"; }; datablock ShapeBaseImageData(NLS22AcidSniperScopeImage2) : NLS22AcidSniperImage { shapeFile = "turret_belly_barrell.dts"; offset = "0 0.3 0.25"; rotation = "1 0 0 0"; }; datablock ShapeBaseImageData(NLS22AcidSniperBarrelImage) : NLS22AcidSniperImage { shapeFile = "weapon_elf.dts"; offset = "0 0.3 0"; rotation = "1 0 0 0"; }; function NLS22AcidSniperImage::onMount(%this,%obj,%slot) { if(!$TWM2::AllowSnipers) { bottomPrint(%obj.client, "The host has disabled sniper weapons.", 2, 2); %obj.throwweapon(1); %obj.throwweapon(0); } Parent::onMount(%this, %obj, %slot); %obj.mountImage(NLS22AcidSniperScopeImage, 5); %obj.mountImage(NLS22AcidSniperScopeImage2, 6); %obj.mountImage(NLS22AcidSniperBarrelImage, 7); } function NLS22AcidSniperImage::onUnmount(%this,%obj,%slot) { Parent::onUnmount(%this, %obj, %slot); %obj.unmountImage(5); %obj.unmountImage(6); %obj.unmountImage(7); } function NLS22AcidSniperImage::onFire(%data, %obj, %slot) { if(!$TWM2::AllowSnipers) { bottomPrint(%obj.client, "The host has disabled sniper weapons.", 2, 2); %obj.throwweapon(1); %obj.throwweapon(0); } %p = Parent::onFire(%data, %obj, %slot); }