// Creates datablocks for the handheld items and the selection box. // ------------------------------------------------------------------- //Basic golden duplicator /////////////////////////////////////////////////////////////////////////// //Duplicator Item datablock ItemData(ND_Item) { cameraMaxDist = 0.1; canDrop = 1; category = "Tools"; className = "Weapon"; density = 0.2; doColorShift = false; colorShiftColor = "1 0.84 0 1"; elasticity = 0.2; emap = 1; friction = 0.6; iconName = $ND::ResourcePath @ "server/icon"; image = "ND_Image"; shapeFile = $ND::ResourcePath @ "server/duplicator_brick.dts"; uiName = "Duplicator"; }; //Particles for explosion datablock ParticleData(ND_HitParticle) { colors[0] = "1 0.84 0 0.9"; colors[1] = "1 0.84 0 0.7"; colors[2] = "1 0.84 0 0.5"; gravityCoefficient = 0.7; lifetimeMS = 600; lifetimeVarianceMS = 200; sizes[0] = 0.6; sizes[1] = 0.4; sizes[2] = 0.3; spinRandomMax = 90; spinRandomMin = -90; textureName = "base/client/ui/brickIcons/2x2"; times[1] = 0.8; times[2] = 1; }; //Emitter for explosion datablock ParticleEmitterData(ND_HitEmitter) { lifetimeMS = 20; ejectionPeriodMS = 1; periodVarianceMS = 0; ejectionVelocity = 3; ejectionOffset = 0.2; particles = ND_HitParticle; thetaMin = 20; thetaMax = 80; velocityVariance = 0; }; //Explosion datablock ExplosionData(ND_HitExplosion) { camShakeDuration = 0.5; camShakeFreq = "1 1 1"; emitter[0] = ND_HitEmitter; faceViewer = 1; lifetimeMS = 180; lightEndRadius = 0; lightStartColor = "0 0 0 0"; lightStartRadius = 0; shakeCamera = 1; soundProfile = "wandHitSound"; }; //Projectile to make explosion datablock ProjectileData(ND_HitProjectile) { bounceElasticity = 0; bounceFriction = 0; explodeOnDeath = 1; explosion = ND_HitExplosion; fadeDelay = 2; gravityMod = 0; lifetime = 0; range = 10; }; //Swing particles datablock ParticleData(ND_WaitParticle) { colors[0] = "1 0.84 0 0.9"; colors[1] = "1 0.84 0 0.7"; colors[2] = "1 0.84 0 0.5"; gravityCoefficient = -0.4; dragCoefficient = 2; lifetimeMS = 400; lifetimeVarianceMS = 200; sizes[0] = 0.5; sizes[1] = 0.8; sizes[2] = 0; spinRandomMax = 0; spinRandomMin = 0; textureName = "base/client/ui/brickIcons/1x1"; times[1] = 0.5; times[2] = 1; }; //Swing emitter datablock ParticleEmitterData(ND_WaitEmitter) { lifetimeMS = 5000; ejectionPeriodMS = 10; periodVarianceMS = 0; ejectionVelocity = 1; ejectionOffset = 0.01; particles = ND_WaitParticle; thetaMin = 20; thetaMax = 80; velocityVariance = 0; }; //Spin particles datablock ParticleData(ND_SpinParticle : ND_WaitParticle) { colors[0] = "1 0.65 0 0.9"; colors[1] = "1 0.65 0 0.7"; colors[2] = "1 0.65 0 0.5"; gravityCoefficient = 0; sizes[0] = 0.3; sizes[1] = 0.5; sizes[2] = 0; textureName = "base/client/ui/brickIcons/1x1"; }; //Spin emitter datablock ParticleEmitterData(ND_SpinEmitter : ND_WaitEmitter) { particles = ND_SpinParticle; ejectionPeriodMS = 15; thetaMin = 40; thetaMax = 140; ejectionVelocity = 2; }; //Duplicator image datablock ShapeBaseImageData(ND_Image) { shapeFile = $ND::ResourcePath @ "server/duplicator_brick.dts"; className = "WeaponImage"; emap = true; mountPoint = 0; offset = "0 0 0"; eyeOffset = "0.7 1.4 -0.9"; armReady = true; showBricks = true; doColorShift = true; colorShiftColor = "1 0.84 0 1"; item = ND_Item; projectile = ND_HitProjectile; loaded = false; //Image states stateName[0] = "Activate"; stateSpinThread[0] = "Stop"; stateTimeoutValue[0] = 0; stateAllowImageChange[0] = false; stateTransitionOnTimeout[0] = "Idle"; stateName[1] = "Idle"; stateSpinThread[1] = "Stop"; stateAllowImageChange[1] = true; stateTransitionOnNotLoaded[1] = "StartSpinning"; stateTransitionOnTriggerDown[1] = "PreFire"; stateName[2] = "PreFire"; stateScript[2] = "onPreFire"; stateTimeoutValue[2] = 0.01; stateAllowImageChange[2] = false; stateTransitionOnTimeout[2] = "Fire"; stateName[3] = "Fire"; stateFire[3] = true; stateScript[3] = "onFire"; stateEmitter[3] = ND_WaitEmitter; stateSequence[3] = "swing"; stateEmitterNode[3] = "muzzlePoint"; stateEmitterTime[3] = 0.01; stateTimeoutValue[3] = 0.01; stateWaitForTimeout[3] = true; stateAllowImageChange[3] = false; stateTransitionOnTimeout[3] = "CheckFire"; stateName[4] = "CheckFire"; stateSpinThread[4] = "Stop"; stateTransitionOnNotLoaded[4] = "StartSpinning_TDown"; stateTransitionOnTriggerUp[4] = "Idle"; //Spinning states (from idle) stateName[5] = "StartSpinning"; stateSpinThread[5] = "SpinUp"; stateTimeoutValue[5] = 0.25; stateTransitionOnTimeout[5] = "IdleSpinning"; stateName[6] = "IdleSpinning"; stateEmitter[6] = ND_SpinEmitter; stateSpinThread[6] = "FullSpeed"; stateEmitterNode[6] = "muzzlePoint"; stateEmitterTime[6] = 0.35; stateTimeoutValue[6] = 0.35; stateTransitionOnLoaded[6] = "StopSpinning"; stateTransitionOnTimeout[6] = "IdleSpinning"; stateName[7] = "StopSpinning"; stateSpinThread[7] = "SpinDown"; stateTimeoutValue[7] = 0.25; stateTransitionOnTimeout[7] = "Idle"; //Spinning states (from checkfire, trigger is still down) stateName[8] = "StartSpinning_TDown"; stateSpinThread[8] = "SpinUp"; stateTimeoutValue[8] = 0.25; stateTransitionOnTimeout[8] = "IdleSpinning_TDown"; stateName[9] = "IdleSpinning_TDown"; stateEmitter[9] = ND_SpinEmitter; stateSpinThread[9] = "FullSpeed"; stateEmitterNode[9] = "muzzlePoint_TDown"; stateEmitterTime[9] = 0.4; stateTimeoutValue[9] = 0.4; stateTransitionOnLoaded[9] = "StopSpinning_TDown"; stateTransitionOnTimeout[9] = "IdleSpinning_TDown"; stateName[10] = "StopSpinning_TDown"; stateSpinThread[10] = "SpinDown"; stateTimeoutValue[10] = 0.25; stateTransitionOnTimeout[10] = "CheckFire"; }; //Spinning selection box for box mode /////////////////////////////////////////////////////////////////////////// //Duplicator image datablock ShapeBaseImageData(ND_Image_Box : ND_Image) { shapeFile = $ND::ResourcePath @ "server/duplicator_selection.dts"; }; //Blue duplicator for plant mode /////////////////////////////////////////////////////////////////////////// //Particles for explosion datablock ParticleData(ND_HitParticle_Blue : ND_HitParticle) { colors[0] = "0 0.25 1 0.9"; colors[1] = "0 0.25 1 0.7"; colors[2] = "0 0.25 1 0.5"; }; //Emitter for explosion datablock ParticleEmitterData(ND_HitEmitter_Blue : ND_HitEmitter) { particles = ND_HitParticle_Blue; }; //Explosion datablock ExplosionData(ND_HitExplosion_Blue : ND_HitExplosion) { emitter[0] = ND_HitEmitter_Blue; }; //Projectile to make explosion datablock ProjectileData(ND_HitProjectile_Blue : ND_HitProjectile) { explosion = ND_HitExplosion_Blue; }; //Swing particles datablock ParticleData(ND_WaitParticle_Blue : ND_WaitParticle) { colors[0] = "0 0.25 1 0.9"; colors[1] = "0 0.25 1 0.7"; colors[2] = "0 0.25 1 0.5"; }; //Swing emitter datablock ParticleEmitterData(ND_WaitEmitter_Blue : ND_WaitEmitter) { particles = ND_WaitParticle_Blue; }; //Spin particles datablock ParticleData(ND_SpinParticle_Blue : ND_SpinParticle) { colors[0] = "0 0.25 0.75 0.9"; colors[1] = "0 0.25 0.75 0.7"; colors[2] = "0 0.25 0.75 0.5"; }; //Spin emitter datablock ParticleEmitterData(ND_SpinEmitter_Blue : ND_SpinEmitter) { particles = ND_SpinParticle_Blue; }; //Duplicator image datablock ShapeBaseImageData(ND_Image_Blue : ND_Image) { colorShiftColor = "0 0.25 1 1"; projectile = ND_HitProjectile_Blue; //Image states stateEmitter[3] = ND_WaitEmitter_Blue; stateEmitter[6] = ND_SpinEmitter_Blue; stateEmitter[9] = ND_SpinEmitter_Blue; }; //Resizable selection and highlight box /////////////////////////////////////////////////////////////////////////// //Transparent box to visualize bricks intersecting selection box datablock StaticShapeData(ND_SelectionBoxOuter) { shapeFile = $ND::ResourcePath @ "server/selectionbox_outer.dts"; }; //Inside box (inverted normals) to visualize backfaces datablock StaticShapeData(ND_SelectionBoxInner) { shapeFile = $ND::ResourcePath @ "server/selectionbox_inner.dts"; }; //Small box to create solid edges datablock StaticShapeData(ND_SelectionBoxBorder) { shapeFile = $ND::ResourcePath @ "server/selectionbox_border.dts"; }; //Empty shape to hold shapename datablock StaticShapeData(ND_SelectionBoxShapeName) { shapeFile = "base/data/shapes/empty.dts"; };