|
@@ -1,819 +0,0 @@
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-// Copyright (c) 2012 GarageGames, LLC
|
|
|
|
-//
|
|
|
|
-// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
-// of this software and associated documentation files (the "Software"), to
|
|
|
|
-// deal in the Software without restriction, including without limitation the
|
|
|
|
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
|
|
-// sell copies of the Software, and to permit persons to whom the Software is
|
|
|
|
-// furnished to do so, subject to the following conditions:
|
|
|
|
-//
|
|
|
|
-// The above copyright notice and this permission notice shall be included in
|
|
|
|
-// all copies or substantial portions of the Software.
|
|
|
|
-//
|
|
|
|
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
|
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
|
|
-// IN THE SOFTWARE.
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
-//--------------------------------------------------------------------------
|
|
|
|
-// Sounds
|
|
|
|
-//--------------------------------------------------------------------------
|
|
|
|
-datablock SFXProfile(LurkerFireSound)
|
|
|
|
-{
|
|
|
|
- filename = "art/sound/weapons/wpn_lurker_fire";
|
|
|
|
- description = AudioClose3D;
|
|
|
|
- preload = true;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock SFXProfile(LurkerReloadSound)
|
|
|
|
-{
|
|
|
|
- filename = "art/sound/weapons/wpn_lurker_reload";
|
|
|
|
- description = AudioClose3D;
|
|
|
|
- preload = true;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock SFXProfile(LurkerIdleSound)
|
|
|
|
-{
|
|
|
|
- filename = "art/sound/weapons/wpn_lurker_idle";
|
|
|
|
- description = AudioClose3D;
|
|
|
|
- preload = true;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock SFXProfile(LurkerSwitchinSound)
|
|
|
|
-{
|
|
|
|
- filename = "art/sound/weapons/wpn_lurker_switchin";
|
|
|
|
- description = AudioClose3D;
|
|
|
|
- preload = true;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock SFXProfile(LurkerGrenadeFireSound)
|
|
|
|
-{
|
|
|
|
- filename = "art/sound/weapons/wpn_lurker_grenadelaunch";
|
|
|
|
- description = AudioClose3D;
|
|
|
|
- preload = true;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock SFXPlayList(LurkerFireSoundList)
|
|
|
|
-{
|
|
|
|
- // Use a looped description so the list playback will loop.
|
|
|
|
- description = AudioClose3D;
|
|
|
|
-
|
|
|
|
- track[ 0 ] = LurkerFireSound;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-/*datablock SFXProfile(BulletImpactSound)
|
|
|
|
-{
|
|
|
|
- filename = "art/sound/weapons/SCARFIRE";
|
|
|
|
- description = AudioClose3D;
|
|
|
|
- preload = true;
|
|
|
|
-};*/
|
|
|
|
-
|
|
|
|
-// ----------------------------------------------------------------------------
|
|
|
|
-// Particles
|
|
|
|
-// ----------------------------------------------------------------------------
|
|
|
|
-datablock ParticleData(GunFireSmoke)
|
|
|
|
-{
|
|
|
|
- textureName = "art/particles/smoke";
|
|
|
|
- dragCoefficient = 0;
|
|
|
|
- gravityCoefficient = "-1";
|
|
|
|
- windCoefficient = 0;
|
|
|
|
- inheritedVelFactor = 0.0;
|
|
|
|
- constantAcceleration = 0.0;
|
|
|
|
- lifetimeMS = 500;
|
|
|
|
- lifetimeVarianceMS = 200;
|
|
|
|
- spinRandomMin = -180.0;
|
|
|
|
- spinRandomMax = 180.0;
|
|
|
|
- useInvAlpha = true;
|
|
|
|
-
|
|
|
|
- colors[0] = "0.795276 0.795276 0.795276 0.692913";
|
|
|
|
- colors[1] = "0.866142 0.866142 0.866142 0.346457";
|
|
|
|
- colors[2] = "0.897638 0.834646 0.795276 0";
|
|
|
|
-
|
|
|
|
- sizes[0] = "0.399805";
|
|
|
|
- sizes[1] = "1.19941";
|
|
|
|
- sizes[2] = "1.69993";
|
|
|
|
-
|
|
|
|
- times[0] = 0.0;
|
|
|
|
- times[1] = "0.498039";
|
|
|
|
- times[2] = 1.0;
|
|
|
|
- animTexName = "art/particles/smoke";
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock ParticleEmitterData(GunFireSmokeEmitter)
|
|
|
|
-{
|
|
|
|
- ejectionPeriodMS = 20;
|
|
|
|
- periodVarianceMS = 10;
|
|
|
|
- ejectionVelocity = "0";
|
|
|
|
- velocityVariance = "0";
|
|
|
|
- thetaMin = "0";
|
|
|
|
- thetaMax = "0";
|
|
|
|
- lifetimeMS = 250;
|
|
|
|
- particles = "GunFireSmoke";
|
|
|
|
- blendStyle = "NORMAL";
|
|
|
|
- softParticles = "0";
|
|
|
|
- originalName = "GunFireSmokeEmitter";
|
|
|
|
- alignParticles = "0";
|
|
|
|
- orientParticles = "0";
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock ParticleData(BulletDirtDust)
|
|
|
|
-{
|
|
|
|
- textureName = "art/particles/impact";
|
|
|
|
- dragCoefficient = "1";
|
|
|
|
- gravityCoefficient = "-0.100122";
|
|
|
|
- windCoefficient = 0;
|
|
|
|
- inheritedVelFactor = 0.0;
|
|
|
|
- constantAcceleration = "-0.83";
|
|
|
|
- lifetimeMS = 800;
|
|
|
|
- lifetimeVarianceMS = 300;
|
|
|
|
- spinRandomMin = -180.0;
|
|
|
|
- spinRandomMax = 180.0;
|
|
|
|
- useInvAlpha = true;
|
|
|
|
-
|
|
|
|
- colors[0] = "0.496063 0.393701 0.299213 0.692913";
|
|
|
|
- colors[1] = "0.692913 0.614173 0.535433 0.346457";
|
|
|
|
- colors[2] = "0.897638 0.84252 0.795276 0";
|
|
|
|
-
|
|
|
|
- sizes[0] = "0.997986";
|
|
|
|
- sizes[1] = "2";
|
|
|
|
- sizes[2] = "2.5";
|
|
|
|
-
|
|
|
|
- times[0] = 0.0;
|
|
|
|
- times[1] = "0.498039";
|
|
|
|
- times[2] = 1.0;
|
|
|
|
- animTexName = "art/particles/impact";
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock ParticleEmitterData(BulletDirtDustEmitter)
|
|
|
|
-{
|
|
|
|
- ejectionPeriodMS = 20;
|
|
|
|
- periodVarianceMS = 10;
|
|
|
|
- ejectionVelocity = "1";
|
|
|
|
- velocityVariance = 1.0;
|
|
|
|
- thetaMin = 0.0;
|
|
|
|
- thetaMax = 180.0;
|
|
|
|
- lifetimeMS = 250;
|
|
|
|
- particles = "BulletDirtDust";
|
|
|
|
- blendStyle = "NORMAL";
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-// Explosion
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-datablock ExplosionData(BulletDirtExplosion)
|
|
|
|
-{
|
|
|
|
- soundProfile = BulletImpactSound;
|
|
|
|
- lifeTimeMS = 65;
|
|
|
|
-
|
|
|
|
- // Volume particles
|
|
|
|
- particleEmitter = BulletDirtDustEmitter;
|
|
|
|
- particleDensity = 4;
|
|
|
|
- particleRadius = 0.3;
|
|
|
|
-
|
|
|
|
- // Point emission
|
|
|
|
- emitter[0] = BulletDirtSprayEmitter;
|
|
|
|
- emitter[1] = BulletDirtSprayEmitter;
|
|
|
|
- emitter[2] = BulletDirtRocksEmitter;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-//--------------------------------------------------------------------------
|
|
|
|
-// Shell ejected during reload.
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-datablock DebrisData(BulletShell)
|
|
|
|
-{
|
|
|
|
- shapeFile = "art/shapes/weapons/shared/RifleShell.DAE";
|
|
|
|
- lifetime = 6.0;
|
|
|
|
- minSpinSpeed = 300.0;
|
|
|
|
- maxSpinSpeed = 400.0;
|
|
|
|
- elasticity = 0.65;
|
|
|
|
- friction = 0.05;
|
|
|
|
- numBounces = 5;
|
|
|
|
- staticOnMaxBounce = true;
|
|
|
|
- snapOnMaxBounce = false;
|
|
|
|
- ignoreWater = true;
|
|
|
|
- fade = true;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-// Projectile Object
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-datablock LightDescription( BulletProjectileLightDesc )
|
|
|
|
-{
|
|
|
|
- color = "0.0 0.5 0.7";
|
|
|
|
- range = 3.0;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock ProjectileData( BulletProjectile )
|
|
|
|
-{
|
|
|
|
- projectileShapeName = "";
|
|
|
|
-
|
|
|
|
- directDamage = 5;
|
|
|
|
- radiusDamage = 0;
|
|
|
|
- damageRadius = 0.5;
|
|
|
|
- areaImpulse = 0.5;
|
|
|
|
- impactForce = 1;
|
|
|
|
-
|
|
|
|
- explosion = BulletDirtExplosion;
|
|
|
|
- decal = BulletHoleDecal;
|
|
|
|
-
|
|
|
|
- muzzleVelocity = 120;
|
|
|
|
- velInheritFactor = 1;
|
|
|
|
-
|
|
|
|
- armingDelay = 0;
|
|
|
|
- lifetime = 992;
|
|
|
|
- fadeDelay = 1472;
|
|
|
|
- bounceElasticity = 0;
|
|
|
|
- bounceFriction = 0;
|
|
|
|
- isBallistic = false;
|
|
|
|
- gravityMod = 1;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-function BulletProjectile::onCollision(%this,%obj,%col,%fade,%pos,%normal)
|
|
|
|
-{
|
|
|
|
- // Apply impact force from the projectile.
|
|
|
|
-
|
|
|
|
- // Apply damage to the object all shape base objects
|
|
|
|
- if ( %col.getType() & $TypeMasks::GameBaseObjectType )
|
|
|
|
- %col.damage(%obj,%pos,%this.directDamage,"BulletProjectile");
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-// Ammo Item
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-datablock ItemData(LurkerClip)
|
|
|
|
-{
|
|
|
|
- // Mission editor category
|
|
|
|
- category = "AmmoClip";
|
|
|
|
-
|
|
|
|
- // Add the Ammo namespace as a parent. The ammo namespace provides
|
|
|
|
- // common ammo related functions and hooks into the inventory system.
|
|
|
|
- className = "AmmoClip";
|
|
|
|
-
|
|
|
|
- // Basic Item properties
|
|
|
|
- shapeFile = "art/shapes/weapons/Lurker/TP_Lurker.DAE";
|
|
|
|
- mass = 1;
|
|
|
|
- elasticity = 0.2;
|
|
|
|
- friction = 0.6;
|
|
|
|
-
|
|
|
|
- // Dynamic properties defined by the scripts
|
|
|
|
- pickUpName = "Lurker clip";
|
|
|
|
- count = 1;
|
|
|
|
- maxInventory = 10;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock ItemData(LurkerAmmo)
|
|
|
|
-{
|
|
|
|
- // Mission editor category
|
|
|
|
- category = "Ammo";
|
|
|
|
-
|
|
|
|
- // Add the Ammo namespace as a parent. The ammo namespace provides
|
|
|
|
- // common ammo related functions and hooks into the inventory system.
|
|
|
|
- className = "Ammo";
|
|
|
|
-
|
|
|
|
- // Basic Item properties
|
|
|
|
- shapeFile = "art/shapes/weapons/Lurker/TP_Lurker.DAE";
|
|
|
|
- mass = 1;
|
|
|
|
- elasticity = 0.2;
|
|
|
|
- friction = 0.6;
|
|
|
|
-
|
|
|
|
- // Dynamic properties defined by the scripts
|
|
|
|
- pickUpName = "Lurker ammo";
|
|
|
|
- maxInventory = 30;
|
|
|
|
- clip = LurkerClip;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-//--------------------------------------------------------------------------
|
|
|
|
-// Weapon Item. This is the item that exists in the world, i.e. when it's
|
|
|
|
-// been dropped, thrown or is acting as re-spawnable item. When the weapon
|
|
|
|
-// is mounted onto a shape, the LurkerWeaponImage is used.
|
|
|
|
-//-----------------------------------------------------------------------------
|
|
|
|
-datablock ItemData(Lurker)
|
|
|
|
-{
|
|
|
|
- // Mission editor category
|
|
|
|
- category = "Weapon";
|
|
|
|
-
|
|
|
|
- // Hook into Item Weapon class hierarchy. The weapon namespace
|
|
|
|
- // provides common weapon handling functions in addition to hooks
|
|
|
|
- // into the inventory system.
|
|
|
|
- className = "Weapon";
|
|
|
|
-
|
|
|
|
- // Basic Item properties
|
|
|
|
- shapeFile = "art/shapes/weapons/Lurker/TP_Lurker.DAE";
|
|
|
|
- mass = 1;
|
|
|
|
- elasticity = 0.2;
|
|
|
|
- friction = 0.6;
|
|
|
|
- emap = true;
|
|
|
|
-
|
|
|
|
- // Dynamic properties defined by the scripts
|
|
|
|
- PreviewImage = 'lurker.png';
|
|
|
|
- pickUpName = "Lurker rifle";
|
|
|
|
- description = "Lurker";
|
|
|
|
- image = LurkerWeaponImage;
|
|
|
|
- reticle = "crossHair";
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-datablock ShapeBaseImageData(LurkerWeaponImage)
|
|
|
|
-{
|
|
|
|
- // Basic Item properties
|
|
|
|
- shapeFile = "art/shapes/weapons/Lurker/TP_Lurker.DAE";
|
|
|
|
- shapeFileFP = "art/shapes/weapons/Lurker/FP_Lurker.DAE";
|
|
|
|
- emap = true;
|
|
|
|
-
|
|
|
|
- imageAnimPrefix = "Rifle";
|
|
|
|
- imageAnimPrefixFP = "Rifle";
|
|
|
|
-
|
|
|
|
- // Specify mount point & offset for 3rd person, and eye offset
|
|
|
|
- // for first person rendering.
|
|
|
|
- mountPoint = 0;
|
|
|
|
- firstPerson = true;
|
|
|
|
- useEyeNode = true;
|
|
|
|
- animateOnServer = true;
|
|
|
|
-
|
|
|
|
- // When firing from a point offset from the eye, muzzle correction
|
|
|
|
- // will adjust the muzzle vector to point to the eye LOS point.
|
|
|
|
- // Since this weapon doesn't actually fire from the muzzle point,
|
|
|
|
- // we need to turn this off.
|
|
|
|
- correctMuzzleVector = true;
|
|
|
|
-
|
|
|
|
- // Add the WeaponImage namespace as a parent, WeaponImage namespace
|
|
|
|
- // provides some hooks into the inventory system.
|
|
|
|
- class = "WeaponImage";
|
|
|
|
- className = "WeaponImage";
|
|
|
|
-
|
|
|
|
- // Projectiles and Ammo.
|
|
|
|
- item = Lurker;
|
|
|
|
- ammo = LurkerAmmo;
|
|
|
|
- clip = LurkerClip;
|
|
|
|
-
|
|
|
|
- projectile = BulletProjectile;
|
|
|
|
- projectileType = Projectile;
|
|
|
|
- projectileSpread = "0.005";
|
|
|
|
-
|
|
|
|
- altProjectile = GrenadeLauncherProjectile;
|
|
|
|
- altProjectileSpread = "0.02";
|
|
|
|
-
|
|
|
|
- casing = BulletShell;
|
|
|
|
- shellExitDir = "1.0 0.3 1.0";
|
|
|
|
- shellExitOffset = "0.15 -0.56 -0.1";
|
|
|
|
- shellExitVariance = 15.0;
|
|
|
|
- shellVelocity = 3.0;
|
|
|
|
-
|
|
|
|
- // Weapon lights up while firing
|
|
|
|
- lightType = "WeaponFireLight";
|
|
|
|
- lightColor = "0.992126 0.968504 0.708661 1";
|
|
|
|
- lightRadius = "4";
|
|
|
|
- lightDuration = "100";
|
|
|
|
- lightBrightness = 2;
|
|
|
|
-
|
|
|
|
- // Shake camera while firing.
|
|
|
|
- shakeCamera = false;
|
|
|
|
- camShakeFreq = "0 0 0";
|
|
|
|
- camShakeAmp = "0 0 0";
|
|
|
|
-
|
|
|
|
- // Images have a state system which controls how the animations
|
|
|
|
- // are run, which sounds are played, script callbacks, etc. This
|
|
|
|
- // state system is downloaded to the client so that clients can
|
|
|
|
- // predict state changes and animate accordingly. The following
|
|
|
|
- // system supports basic ready->fire->reload transitions as
|
|
|
|
- // well as a no-ammo->dryfire idle state.
|
|
|
|
-
|
|
|
|
- useRemainderDT = true;
|
|
|
|
-
|
|
|
|
- // Initial start up state
|
|
|
|
- stateName[0] = "Preactivate";
|
|
|
|
- stateTransitionOnLoaded[0] = "Activate";
|
|
|
|
- stateTransitionOnNoAmmo[0] = "NoAmmo";
|
|
|
|
-
|
|
|
|
- // Activating the gun. Called when the weapon is first
|
|
|
|
- // mounted and there is ammo.
|
|
|
|
- stateName[1] = "Activate";
|
|
|
|
- stateTransitionGeneric0In[1] = "SprintEnter";
|
|
|
|
- stateTransitionOnTimeout[1] = "Ready";
|
|
|
|
- stateTimeoutValue[1] = 0.5;
|
|
|
|
- stateSequence[1] = "switch_in";
|
|
|
|
- stateSound[1] = LurkerSwitchinSound;
|
|
|
|
-
|
|
|
|
- // Ready to fire, just waiting for the trigger
|
|
|
|
- stateName[2] = "Ready";
|
|
|
|
- stateTransitionGeneric0In[2] = "SprintEnter";
|
|
|
|
- stateTransitionOnMotion[2] = "ReadyMotion";
|
|
|
|
- stateTransitionOnTimeout[2] = "ReadyFidget";
|
|
|
|
- stateTimeoutValue[2] = 10;
|
|
|
|
- stateWaitForTimeout[2] = false;
|
|
|
|
- stateScaleAnimation[2] = false;
|
|
|
|
- stateScaleAnimationFP[2] = false;
|
|
|
|
- stateTransitionOnNoAmmo[2] = "NoAmmo";
|
|
|
|
- stateTransitionOnTriggerDown[2] = "Fire";
|
|
|
|
- stateSequence[2] = "idle";
|
|
|
|
-
|
|
|
|
- // Same as Ready state but plays a fidget sequence
|
|
|
|
- stateName[3] = "ReadyFidget";
|
|
|
|
- stateTransitionGeneric0In[3] = "SprintEnter";
|
|
|
|
- stateTransitionOnMotion[3] = "ReadyMotion";
|
|
|
|
- stateTransitionOnTimeout[3] = "Ready";
|
|
|
|
- stateTimeoutValue[3] = 6;
|
|
|
|
- stateWaitForTimeout[3] = false;
|
|
|
|
- stateTransitionOnNoAmmo[3] = "NoAmmo";
|
|
|
|
- stateTransitionOnTriggerDown[3] = "Fire";
|
|
|
|
- stateSequence[3] = "idle_fidget1";
|
|
|
|
- stateSound[3] = LurkerIdleSound;
|
|
|
|
-
|
|
|
|
- // Ready to fire with player moving
|
|
|
|
- stateName[4] = "ReadyMotion";
|
|
|
|
- stateTransitionGeneric0In[4] = "SprintEnter";
|
|
|
|
- stateTransitionOnNoMotion[4] = "Ready";
|
|
|
|
- stateWaitForTimeout[4] = false;
|
|
|
|
- stateScaleAnimation[4] = false;
|
|
|
|
- stateScaleAnimationFP[4] = false;
|
|
|
|
- stateSequenceTransitionIn[4] = true;
|
|
|
|
- stateSequenceTransitionOut[4] = true;
|
|
|
|
- stateTransitionOnNoAmmo[4] = "NoAmmo";
|
|
|
|
- stateTransitionOnTriggerDown[4] = "Fire";
|
|
|
|
- stateSequence[4] = "run";
|
|
|
|
-
|
|
|
|
- // Fire the weapon. Calls the fire script which does
|
|
|
|
- // the actual work.
|
|
|
|
- stateName[5] = "Fire";
|
|
|
|
- stateTransitionGeneric0In[5] = "SprintEnter";
|
|
|
|
- stateTransitionOnTimeout[5] = "NewRound";
|
|
|
|
- stateTimeoutValue[5] = 0.15;
|
|
|
|
- stateFire[5] = true;
|
|
|
|
- stateRecoil[5] = "";
|
|
|
|
- stateAllowImageChange[5] = false;
|
|
|
|
- stateSequence[5] = "fire";
|
|
|
|
- stateScaleAnimation[5] = false;
|
|
|
|
- stateSequenceNeverTransition[5] = true;
|
|
|
|
- stateSequenceRandomFlash[5] = true; // use muzzle flash sequence
|
|
|
|
- stateScript[5] = "onFire";
|
|
|
|
- stateSound[5] = LurkerFireSoundList;
|
|
|
|
- stateEmitter[5] = GunFireSmokeEmitter;
|
|
|
|
- stateEmitterTime[5] = 0.025;
|
|
|
|
-
|
|
|
|
- // Put another round into the chamber if one is available
|
|
|
|
- stateName[6] = "NewRound";
|
|
|
|
- stateTransitionGeneric0In[6] = "SprintEnter";
|
|
|
|
- stateTransitionOnNoAmmo[6] = "NoAmmo";
|
|
|
|
- stateTransitionOnTimeout[6] = "Ready";
|
|
|
|
- stateWaitForTimeout[6] = "0";
|
|
|
|
- stateTimeoutValue[6] = 0.05;
|
|
|
|
- stateAllowImageChange[6] = false;
|
|
|
|
- stateEjectShell[6] = true;
|
|
|
|
-
|
|
|
|
- // No ammo in the weapon, just idle until something
|
|
|
|
- // shows up. Play the dry fire sound if the trigger is
|
|
|
|
- // pulled.
|
|
|
|
- stateName[7] = "NoAmmo";
|
|
|
|
- stateTransitionGeneric0In[7] = "SprintEnter";
|
|
|
|
- stateTransitionOnMotion[7] = "NoAmmoMotion";
|
|
|
|
- stateTransitionOnAmmo[7] = "ReloadClip";
|
|
|
|
- stateTimeoutValue[7] = 0.1; // Slight pause to allow script to run when trigger is still held down from Fire state
|
|
|
|
- stateScript[7] = "onClipEmpty";
|
|
|
|
- stateSequence[7] = "idle";
|
|
|
|
- stateScaleAnimation[7] = false;
|
|
|
|
- stateScaleAnimationFP[7] = false;
|
|
|
|
- stateTransitionOnTriggerDown[7] = "DryFire";
|
|
|
|
-
|
|
|
|
- stateName[8] = "NoAmmoMotion";
|
|
|
|
- stateTransitionGeneric0In[8] = "SprintEnter";
|
|
|
|
- stateTransitionOnNoMotion[8] = "NoAmmo";
|
|
|
|
- stateWaitForTimeout[8] = false;
|
|
|
|
- stateScaleAnimation[8] = false;
|
|
|
|
- stateScaleAnimationFP[8] = false;
|
|
|
|
- stateSequenceTransitionIn[8] = true;
|
|
|
|
- stateSequenceTransitionOut[8] = true;
|
|
|
|
- stateTransitionOnTriggerDown[8] = "DryFire";
|
|
|
|
- stateTransitionOnAmmo[8] = "ReloadClip";
|
|
|
|
- stateSequence[8] = "run";
|
|
|
|
-
|
|
|
|
- // No ammo dry fire
|
|
|
|
- stateName[9] = "DryFire";
|
|
|
|
- stateTransitionGeneric0In[9] = "SprintEnter";
|
|
|
|
- stateTransitionOnAmmo[9] = "ReloadClip";
|
|
|
|
- stateWaitForTimeout[9] = "0";
|
|
|
|
- stateTimeoutValue[9] = 0.7;
|
|
|
|
- stateTransitionOnTimeout[9] = "NoAmmo";
|
|
|
|
- stateScript[9] = "onDryFire";
|
|
|
|
- stateSound[9] = MachineGunDryFire;
|
|
|
|
-
|
|
|
|
- // Play the reload clip animation
|
|
|
|
- stateName[10] = "ReloadClip";
|
|
|
|
- stateTransitionGeneric0In[10] = "SprintEnter";
|
|
|
|
- stateTransitionOnTimeout[10] = "Ready";
|
|
|
|
- stateWaitForTimeout[10] = true;
|
|
|
|
- stateTimeoutValue[10] = 3.0;
|
|
|
|
- stateReload[10] = true;
|
|
|
|
- stateSequence[10] = "reload";
|
|
|
|
- stateShapeSequence[10] = "Reload";
|
|
|
|
- stateScaleShapeSequence[10] = true;
|
|
|
|
- stateSound[10] = LurkerReloadSound;
|
|
|
|
-
|
|
|
|
- // Start Sprinting
|
|
|
|
- stateName[11] = "SprintEnter";
|
|
|
|
- stateTransitionGeneric0Out[11] = "SprintExit";
|
|
|
|
- stateTransitionOnTimeout[11] = "Sprinting";
|
|
|
|
- stateWaitForTimeout[11] = false;
|
|
|
|
- stateTimeoutValue[11] = 0.5;
|
|
|
|
- stateWaitForTimeout[11] = false;
|
|
|
|
- stateScaleAnimation[11] = false;
|
|
|
|
- stateScaleAnimationFP[11] = false;
|
|
|
|
- stateSequenceTransitionIn[11] = true;
|
|
|
|
- stateSequenceTransitionOut[11] = true;
|
|
|
|
- stateAllowImageChange[11] = false;
|
|
|
|
- stateSequence[11] = "sprint";
|
|
|
|
-
|
|
|
|
- // Sprinting
|
|
|
|
- stateName[12] = "Sprinting";
|
|
|
|
- stateTransitionGeneric0Out[12] = "SprintExit";
|
|
|
|
- stateWaitForTimeout[12] = false;
|
|
|
|
- stateScaleAnimation[12] = false;
|
|
|
|
- stateScaleAnimationFP[12] = false;
|
|
|
|
- stateSequenceTransitionIn[12] = true;
|
|
|
|
- stateSequenceTransitionOut[12] = true;
|
|
|
|
- stateAllowImageChange[12] = false;
|
|
|
|
- stateSequence[12] = "sprint";
|
|
|
|
-
|
|
|
|
- // Stop Sprinting
|
|
|
|
- stateName[13] = "SprintExit";
|
|
|
|
- stateTransitionGeneric0In[13] = "SprintEnter";
|
|
|
|
- stateTransitionOnTimeout[13] = "Ready";
|
|
|
|
- stateWaitForTimeout[13] = false;
|
|
|
|
- stateTimeoutValue[13] = 0.5;
|
|
|
|
- stateSequenceTransitionIn[13] = true;
|
|
|
|
- stateSequenceTransitionOut[13] = true;
|
|
|
|
- stateAllowImageChange[13] = false;
|
|
|
|
- stateSequence[13] = "sprint";
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-//--------------------------------------------------------------------------
|
|
|
|
-// Lurker Grenade Launcher
|
|
|
|
-//--------------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
-datablock ItemData(LurkerGrenadeAmmo)
|
|
|
|
-{
|
|
|
|
- // Mission editor category
|
|
|
|
- category = "Ammo";
|
|
|
|
-
|
|
|
|
- // Add the Ammo namespace as a parent. The ammo namespace provides
|
|
|
|
- // common ammo related functions and hooks into the inventory system.
|
|
|
|
- className = "Ammo";
|
|
|
|
-
|
|
|
|
- // Basic Item properties
|
|
|
|
- shapeFile = "art/shapes/weapons/Lurker/TP_Lurker.DAE";
|
|
|
|
- mass = 1;
|
|
|
|
- elasticity = 0.2;
|
|
|
|
- friction = 0.6;
|
|
|
|
-
|
|
|
|
- // Dynamic properties defined by the scripts
|
|
|
|
- pickUpName = "Lurker grenade ammo";
|
|
|
|
- maxInventory = 20;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock ItemData(LurkerGrenadeLauncher)
|
|
|
|
-{
|
|
|
|
- // Mission editor category
|
|
|
|
- category = "Weapon";
|
|
|
|
-
|
|
|
|
- // Hook into Item Weapon class hierarchy. The weapon namespace
|
|
|
|
- // provides common weapon handling functions in addition to hooks
|
|
|
|
- // into the inventory system.
|
|
|
|
- className = "Weapon";
|
|
|
|
-
|
|
|
|
- // Basic Item properties
|
|
|
|
- shapeFile = "art/shapes/weapons/Lurker/TP_Lurker.DAE";
|
|
|
|
- mass = 1;
|
|
|
|
- elasticity = 0.2;
|
|
|
|
- friction = 0.6;
|
|
|
|
- emap = true;
|
|
|
|
-
|
|
|
|
- // Dynamic properties defined by the scripts
|
|
|
|
- PreviewImage = 'lurker.png';
|
|
|
|
- pickUpName = "a Lurker grenade launcher";
|
|
|
|
- description = "Lurker Grenade Launcher";
|
|
|
|
- image = LurkerGrenadeLauncherImage;
|
|
|
|
- reticle = "crossHair";
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-datablock ShapeBaseImageData(LurkerGrenadeLauncherImage)
|
|
|
|
-{
|
|
|
|
- // Basic Item properties
|
|
|
|
- shapeFile = "art/shapes/weapons/Lurker/TP_Lurker.DAE";
|
|
|
|
- shapeFileFP = "art/shapes/weapons/Lurker/FP_Lurker.DAE";
|
|
|
|
- emap = true;
|
|
|
|
-
|
|
|
|
- imageAnimPrefix = "Rifle";
|
|
|
|
- imageAnimPrefixFP = "Rifle";
|
|
|
|
-
|
|
|
|
- // Specify mount point & offset for 3rd person, and eye offset
|
|
|
|
- // for first person rendering.
|
|
|
|
- mountPoint = 0;
|
|
|
|
- firstPerson = true;
|
|
|
|
- useEyeNode = true;
|
|
|
|
- animateOnServer = true;
|
|
|
|
-
|
|
|
|
- // When firing from a point offset from the eye, muzzle correction
|
|
|
|
- // will adjust the muzzle vector to point to the eye LOS point.
|
|
|
|
- // Since this weapon doesn't actually fire from the muzzle point,
|
|
|
|
- // we need to turn this off.
|
|
|
|
- correctMuzzleVector = true;
|
|
|
|
-
|
|
|
|
- // Add the WeaponImage namespace as a parent, WeaponImage namespace
|
|
|
|
- // provides some hooks into the inventory system.
|
|
|
|
- class = "WeaponImage";
|
|
|
|
- className = "WeaponImage";
|
|
|
|
-
|
|
|
|
- // Projectiles and Ammo.
|
|
|
|
- item = LurkerGrenadeLauncher;
|
|
|
|
- ammo = LurkerGrenadeAmmo;
|
|
|
|
-
|
|
|
|
- projectile = GrenadeLauncherProjectile;
|
|
|
|
- projectileType = Projectile;
|
|
|
|
- projectileSpread = "0.02";
|
|
|
|
-
|
|
|
|
- // Weapon lights up while firing
|
|
|
|
- lightType = "WeaponFireLight";
|
|
|
|
- lightColor = "0.992126 0.968504 0.708661 1";
|
|
|
|
- lightRadius = "4";
|
|
|
|
- lightDuration = "100";
|
|
|
|
- lightBrightness = 2;
|
|
|
|
-
|
|
|
|
- // Shake camera while firing.
|
|
|
|
- shakeCamera = false;
|
|
|
|
- camShakeFreq = "0 0 0";
|
|
|
|
- camShakeAmp = "0 0 0";
|
|
|
|
-
|
|
|
|
- // Images have a state system which controls how the animations
|
|
|
|
- // are run, which sounds are played, script callbacks, etc. This
|
|
|
|
- // state system is downloaded to the client so that clients can
|
|
|
|
- // predict state changes and animate accordingly. The following
|
|
|
|
- // system supports basic ready->fire->reload transitions as
|
|
|
|
- // well as a no-ammo->dryfire idle state.
|
|
|
|
-
|
|
|
|
- useRemainderDT = true;
|
|
|
|
-
|
|
|
|
- // Initial start up state
|
|
|
|
- stateName[0] = "Preactivate";
|
|
|
|
- stateTransitionOnLoaded[0] = "Activate";
|
|
|
|
- stateTransitionOnNoAmmo[0] = "NoAmmo";
|
|
|
|
-
|
|
|
|
- // Activating the gun. Called when the weapon is first
|
|
|
|
- // mounted and there is ammo.
|
|
|
|
- stateName[1] = "Activate";
|
|
|
|
- stateTransitionGeneric0In[1] = "SprintEnter";
|
|
|
|
- stateTransitionOnTimeout[1] = "Ready";
|
|
|
|
- stateTimeoutValue[1] = 0.5;
|
|
|
|
- stateSequence[1] = "switch_in";
|
|
|
|
- stateSound[1] = LurkerSwitchinSound;
|
|
|
|
-
|
|
|
|
- // Ready to fire, just waiting for the trigger
|
|
|
|
- stateName[2] = "Ready";
|
|
|
|
- stateTransitionGeneric0In[2] = "SprintEnter";
|
|
|
|
- stateTransitionOnMotion[2] = "ReadyMotion";
|
|
|
|
- stateTransitionOnTimeout[2] = "ReadyFidget";
|
|
|
|
- stateTimeoutValue[2] = 10;
|
|
|
|
- stateWaitForTimeout[2] = false;
|
|
|
|
- stateScaleAnimation[2] = false;
|
|
|
|
- stateScaleAnimationFP[2] = false;
|
|
|
|
- stateTransitionOnNoAmmo[2] = "NoAmmo";
|
|
|
|
- stateTransitionOnTriggerDown[2] = "Fire";
|
|
|
|
- stateSequence[2] = "idle";
|
|
|
|
-
|
|
|
|
- // Same as Ready state but plays a fidget sequence
|
|
|
|
- stateName[3] = "ReadyFidget";
|
|
|
|
- stateTransitionGeneric0In[3] = "SprintEnter";
|
|
|
|
- stateTransitionOnMotion[3] = "ReadyMotion";
|
|
|
|
- stateTransitionOnTimeout[3] = "Ready";
|
|
|
|
- stateTimeoutValue[3] = 6;
|
|
|
|
- stateWaitForTimeout[3] = false;
|
|
|
|
- stateTransitionOnNoAmmo[3] = "NoAmmo";
|
|
|
|
- stateTransitionOnTriggerDown[3] = "Fire";
|
|
|
|
- stateSequence[3] = "idle_fidget1";
|
|
|
|
- stateSound[3] = LurkerIdleSound;
|
|
|
|
-
|
|
|
|
- // Ready to fire with player moving
|
|
|
|
- stateName[4] = "ReadyMotion";
|
|
|
|
- stateTransitionGeneric0In[4] = "SprintEnter";
|
|
|
|
- stateTransitionOnNoMotion[4] = "Ready";
|
|
|
|
- stateWaitForTimeout[4] = false;
|
|
|
|
- stateScaleAnimation[4] = false;
|
|
|
|
- stateScaleAnimationFP[4] = false;
|
|
|
|
- stateSequenceTransitionIn[4] = true;
|
|
|
|
- stateSequenceTransitionOut[4] = true;
|
|
|
|
- stateTransitionOnNoAmmo[4] = "NoAmmo";
|
|
|
|
- stateTransitionOnTriggerDown[4] = "Fire";
|
|
|
|
- stateSequence[4] = "run";
|
|
|
|
-
|
|
|
|
- // Fire the weapon. Calls the fire script which does
|
|
|
|
- // the actual work.
|
|
|
|
- stateName[5] = "Fire";
|
|
|
|
- stateTransitionGeneric0In[5] = "SprintEnter";
|
|
|
|
- stateTransitionOnTimeout[5] = "NewRound";
|
|
|
|
- stateTimeoutValue[5] = 1.2;
|
|
|
|
- stateFire[5] = true;
|
|
|
|
- stateRecoil[5] = "";
|
|
|
|
- stateAllowImageChange[5] = false;
|
|
|
|
- stateSequence[5] = "fire_alt";
|
|
|
|
- stateScaleAnimation[5] = true;
|
|
|
|
- stateSequenceNeverTransition[5] = true;
|
|
|
|
- stateSequenceRandomFlash[5] = true; // use muzzle flash sequence
|
|
|
|
- stateScript[5] = "onFire";
|
|
|
|
- stateSound[5] = LurkerGrenadeFireSound;
|
|
|
|
- stateEmitter[5] = GunFireSmokeEmitter;
|
|
|
|
- stateEmitterTime[5] = 0.025;
|
|
|
|
- stateEjectShell[5] = true;
|
|
|
|
-
|
|
|
|
- // Put another round into the chamber
|
|
|
|
- stateName[6] = "NewRound";
|
|
|
|
- stateTransitionGeneric0In[6] = "SprintEnter";
|
|
|
|
- stateTransitionOnNoAmmo[6] = "NoAmmo";
|
|
|
|
- stateTransitionOnTimeout[6] = "Ready";
|
|
|
|
- stateWaitForTimeout[6] = "0";
|
|
|
|
- stateTimeoutValue[6] = 0.05;
|
|
|
|
- stateAllowImageChange[6] = false;
|
|
|
|
-
|
|
|
|
- // No ammo in the weapon, just idle until something
|
|
|
|
- // shows up. Play the dry fire sound if the trigger is
|
|
|
|
- // pulled.
|
|
|
|
- stateName[7] = "NoAmmo";
|
|
|
|
- stateTransitionGeneric0In[7] = "SprintEnter";
|
|
|
|
- stateTransitionOnMotion[7] = "NoAmmoReadyMotion";
|
|
|
|
- stateTransitionOnAmmo[7] = "ReloadClip";
|
|
|
|
- stateTimeoutValue[7] = 0.1; // Slight pause to allow script to run when trigger is still held down from Fire state
|
|
|
|
- stateScript[7] = "onClipEmpty";
|
|
|
|
- stateSequence[7] = "idle";
|
|
|
|
- stateScaleAnimation[7] = false;
|
|
|
|
- stateScaleAnimationFP[7] = false;
|
|
|
|
- stateTransitionOnTriggerDown[7] = "DryFire";
|
|
|
|
-
|
|
|
|
- stateName[8] = "NoAmmoReadyMotion";
|
|
|
|
- stateTransitionGeneric0In[8] = "SprintEnter";
|
|
|
|
- stateTransitionOnNoMotion[8] = "NoAmmo";
|
|
|
|
- stateWaitForTimeout[8] = false;
|
|
|
|
- stateScaleAnimation[8] = false;
|
|
|
|
- stateScaleAnimationFP[8] = false;
|
|
|
|
- stateSequenceTransitionIn[8] = true;
|
|
|
|
- stateSequenceTransitionOut[8] = true;
|
|
|
|
- stateTransitionOnAmmo[8] = "ReloadClip";
|
|
|
|
- stateTransitionOnTriggerDown[8] = "DryFire";
|
|
|
|
- stateSequence[8] = "run";
|
|
|
|
-
|
|
|
|
- // No ammo dry fire
|
|
|
|
- stateName[9] = "DryFire";
|
|
|
|
- stateTransitionGeneric0In[9] = "SprintEnter";
|
|
|
|
- stateTimeoutValue[9] = 1.0;
|
|
|
|
- stateTransitionOnTimeout[9] = "NoAmmo";
|
|
|
|
- stateScript[9] = "onDryFire";
|
|
|
|
-
|
|
|
|
- // Play the reload clip animation
|
|
|
|
- stateName[10] = "ReloadClip";
|
|
|
|
- stateTransitionGeneric0In[10] = "SprintEnter";
|
|
|
|
- stateTransitionOnTimeout[10] = "Ready";
|
|
|
|
- stateWaitForTimeout[10] = true;
|
|
|
|
- stateTimeoutValue[10] = 3.0;
|
|
|
|
- stateReload[10] = true;
|
|
|
|
- stateSequence[10] = "reload";
|
|
|
|
- stateShapeSequence[10] = "Reload";
|
|
|
|
- stateScaleShapeSequence[10] = true;
|
|
|
|
-
|
|
|
|
- // Start Sprinting
|
|
|
|
- stateName[11] = "SprintEnter";
|
|
|
|
- stateTransitionGeneric0Out[11] = "SprintExit";
|
|
|
|
- stateTransitionOnTimeout[11] = "Sprinting";
|
|
|
|
- stateWaitForTimeout[11] = false;
|
|
|
|
- stateTimeoutValue[11] = 0.5;
|
|
|
|
- stateWaitForTimeout[11] = false;
|
|
|
|
- stateScaleAnimation[11] = false;
|
|
|
|
- stateScaleAnimationFP[11] = false;
|
|
|
|
- stateSequenceTransitionIn[11] = true;
|
|
|
|
- stateSequenceTransitionOut[11] = true;
|
|
|
|
- stateAllowImageChange[11] = false;
|
|
|
|
- stateSequence[11] = "sprint";
|
|
|
|
-
|
|
|
|
- // Sprinting
|
|
|
|
- stateName[12] = "Sprinting";
|
|
|
|
- stateTransitionGeneric0Out[12] = "SprintExit";
|
|
|
|
- stateWaitForTimeout[12] = false;
|
|
|
|
- stateScaleAnimation[12] = false;
|
|
|
|
- stateScaleAnimationFP[12] = false;
|
|
|
|
- stateSequenceTransitionIn[12] = true;
|
|
|
|
- stateSequenceTransitionOut[12] = true;
|
|
|
|
- stateAllowImageChange[12] = false;
|
|
|
|
- stateSequence[12] = "sprint";
|
|
|
|
-
|
|
|
|
- // Stop Sprinting
|
|
|
|
- stateName[13] = "SprintExit";
|
|
|
|
- stateTransitionGeneric0In[13] = "SprintEnter";
|
|
|
|
- stateTransitionOnTimeout[13] = "Ready";
|
|
|
|
- stateWaitForTimeout[13] = false;
|
|
|
|
- stateTimeoutValue[13] = 0.5;
|
|
|
|
- stateSequenceTransitionIn[13] = true;
|
|
|
|
- stateSequenceTransitionOut[13] = true;
|
|
|
|
- stateAllowImageChange[13] = false;
|
|
|
|
- stateSequence[13] = "sprint";
|
|
|
|
-};
|
|
|