Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if(isObject(Meltdown))
- Meltdown.DSOFileCount++;
- else
- quit();
- $WarpSpeedLimit = 4500;
- $WarpMassImpulseFactor = 10;
- //**************************************************************
- // Warp FLIER
- //**************************************************************
- datablock FlyingVehicleData(WarpFlyer) : ShrikeDamageProfile
- {
- spawnOffset = "0 0 2";
- catagory = "Vehicles";
- shapeFile = "vehicle_air_scout.dts";
- multipassenger = false;
- debrisShapeName = "vehicle_air_scout_debris.dts";
- debris = ShapeDebris;
- renderWhenDestroyed = false;
- drag = 0.15;
- density = 1.0;
- mountPose[0] = sitting;
- numMountPoints = 1;
- isProtectedMountPoint[0] = true;
- cameraMaxDist = 15;
- cameraOffset = 2.5;
- cameraLag = 0.9;
- explosion = VehicleExplosion;
- explosionDamage = 1.25;
- explosionRadius = 12.5;
- keepReticle = true;
- maxDamage = 1.40;
- destroyedLevel = 1.40;
- isShielded = true;
- energyPerDamagePoint = 100;
- maxEnergy = 290; // Afterburner and any energy weapon pool
- minDrag = 30; // Linear Drag (eventually slows you down when not thrusting...constant drag)
- rotationalDrag = 900; // Anguler Drag (dampens the drift after you stop moving the mouse...also tumble drag)
- rechargeRate = 0.825;
- maxAutoSpeed = 10; // Autostabilizer kicks in when less than this speed. (meters/second)
- autoAngularForce = 350; // Angular stabilizer force (this force levels you out when autostabilizer kicks in)
- autoLinearForce = 215; // Linear stabilzer force (this slows you down when autostabilizer kicks in)
- autoInputDamping = 0.95; // Dampen control input so you don't` whack out at very slow speeds
- // Maneuvering
- maxSteeringAngle = 5; // Max radiens you can rotate the wheel. Smaller number is more maneuverable.
- horizontalSurfaceForce = 6; // Horizontal center "wing" (provides "bite" into the wind for climbing/diving and turning)
- verticalSurfaceForce = 4; // Vertical center "wing" (controls side slip. lower numbers make MORE slide.)
- maneuveringForce = 3200; // Horizontal jets (W,S,D,A key thrust)
- steeringForce = 1250; // Steering jets (force applied when you move the mouse)
- steeringRollForce = 425; // Steering jets (how much you heel over when you turn)
- rollForce = 4; // Auto-roll (self-correction to right you after you roll/invert)
- hoverHeight = 3; // Height off the ground at rest
- createHoverHeight = 3; // Height off the ground when created
- maxForwardSpeed = 1500;
- // Turbo Jet
- jetForce = 3500; // Afterburner thrust (this is in addition to normal thrust)
- minJetEnergy = 16; // Afterburner can't be used if below this threshhold.
- jetEnergyDrain = 2.6; // Energy use of the afterburners (low number is less drain...can be fractional) // Auto stabilize speed
- vertThrustMultiple = 2.15;
- // Rigid body
- mass = 150; // Mass of the vehicle
- bodyFriction = 0; // Don't mess with this.
- bodyRestitution = 0.5; // When you hit the ground, how much you rebound. (between 0 and 1)
- minRollSpeed = 0; // Don't mess with this.
- softImpactSpeed = 25; // Sound hooks. This is the soft hit.
- hardImpactSpeed = 55.56; // Sound hooks. This is the hard hit.
- // Ground Impact Damage (uses DamageType::Ground)
- minImpactSpeed = 12; // If hit ground at speed above this then it's an impact. Meters/second
- speedDamageScale = 0.03;
- // Object Impact Damage (uses DamageType::Impact)
- collDamageThresholdVel = 48.0;
- collDamageMultiplier = 0.0125;
- //
- minTrailSpeed = 200; // The speed your contrail shows up at.
- trailEmitter = ContrailEmitter;
- forwardJetEmitter = ShrikeEngineEmitter;
- downJetEmitter = TurboJetEmitter;
- //
- jetSound = ScoutFlyerThrustSound;
- engineSound = ScoutFlyerEngineSound;
- softImpactSound = SoftImpactSound;
- hardImpactSound = HardImpactSound;
- //wheelImpactSound = WheelImpactSound;
- //
- softSplashSoundVelocity = 10.0;
- mediumSplashSoundVelocity = 15.0;
- hardSplashSoundVelocity = 20.0;
- exitSplashSoundVelocity = 10.0;
- exitingWater = VehicleExitWaterMediumSound;
- impactWaterEasy = VehicleImpactWaterSoftSound;
- impactWaterMedium = VehicleImpactWaterMediumSound;
- impactWaterHard = VehicleImpactWaterMediumSound;
- waterWakeSound = VehicleWakeMediumSplashSound;
- dustEmitter = VehicleLiftoffDustEmitter;
- triggerDustHeight = 4.0;
- dustHeight = 1.0;
- damageEmitter[0] = SmallHeavyDamageSmoke;
- damageEmitter[1] = SmallRedFlameEmitter;
- damageEmitter[2] = DamageBubbles;
- damageEmitterOffset[0] = "0.0 -3.0 0.0 ";
- damageLevelTolerance[0] = 0.4;
- damageLevelTolerance[1] = 0.4;
- numDmgEmitterAreas = 1;
- minMountDist = 4;
- splashEmitter[0] = VehicleFoamDropletsEmitter;
- splashEmitter[1] = VehicleFoamEmitter;
- shieldImpact = VehicleShieldImpact;
- cmdCategory = "Tactical";
- cmdIcon = CMDFlyingScoutIcon;
- cmdMiniIconName = "commander/MiniIcons/com_scout_grey";
- targetNameTag = 'Camanis*';
- targetTypeTag = 'Hypergrav';
- sensorData = AWACPulseSensor;
- sensorRadius = AWACPulseSensor.detectRadius;
- sensorColor = "255 194 9";
- checkRadius = 5.5;
- observeParameters = "1 10 10";
- // runningLight[0] = ShrikeLight1;
- // runningLight[1] = ShrikeLight2;
- shieldEffectScale = "0.937 1.125 0.60";
- };
- //**************************************************************
- // WEAPONS
- //**************************************************************
- datablock ShapeBaseImageData(WarpPlasmaMainImage)
- {
- className = WeaponImage;
- shapeFile = "turret_mortar_large.dts";
- item = Chaingun;
- projectile = WarpGaussBullet;
- projectileType = TracerProjectile;
- mountPoint = 10;
- offset = "0 3 -0.45";
- rotation = "0 1 0 0";
- usesEnergy = true;
- useMountEnergy = true;
- // DAVEG -- balancing numbers below!
- minEnergy = 10;
- fireEnergy = 5;
- fireTimeout = 250;
- //--------------------------------------
- stateName[0] = "Activate";
- stateSequence[0] = "Deploy";
- stateAllowImageChange[0] = false;
- stateTimeoutValue[0] = 0.05;
- stateTransitionOnTimeout[0] = "Ready";
- stateTransitionOnNoAmmo[0] = "NoAmmo";
- //--------------------------------------
- stateName[1] = "Ready";
- stateTransitionOnTriggerDown[1] = "Spinup";
- stateTransitionOnNoAmmo[1] = "NoAmmo";
- //--------------------------------------
- stateName[2] = "NoAmmo";
- stateTransitionOnAmmo[2] = "Ready";
- stateTransitionOnTriggerDown[2] = "DryFire";
- //--------------------------------------
- stateName[3] = "Spinup";
- stateTimeoutValue[3] = 0.01;
- stateWaitForTimeout[3] = false;
- stateTransitionOnTimeout[3] = "Fire";
- stateTransitionOnTriggerUp[3] = "Spindown";
- //--------------------------------------
- stateName[4] = "Fire";
- stateAllowImageChange[4] = false;
- stateScript[4] = "onFire";
- stateFire[4] = true;
- stateSequence[4] = "Recoil";
- stateSound[4] = PlasmaFireSound;
- // IMPORTANT! The stateTimeoutValue below has been replaced by fireTimeOut
- // above.
- stateTimeoutValue[4] = 0.25;
- stateTransitionOnTimeout[4] = "checkState";
- //--------------------------------------
- stateName[5] = "Spindown";
- stateSpinThread[5] = SpinDown;
- stateTimeoutValue[5] = 0.05;
- stateSequence[5] = "Fire";
- stateWaitForTimeout[5] = false;
- stateTransitionOnTimeout[5] = "Ready";
- stateTransitionOnTriggerDown[5] = "Spinup";
- //--------------------------------------
- stateName[6] = "EmptySpindown";
- stateTransitionOnAmmo[6] = "Ready";
- stateTimeoutValue[6] = 0.01;
- stateTransitionOnTimeout[6] = "NoAmmo";
- //--------------------------------------
- stateName[7] = "DryFire";
- stateSound[7] = ShrikeBlasterDryFireSound;
- stateTransitionOnTriggerUp[7] = "NoAmmo";
- stateTimeoutValue[7] = 0.25;
- stateTransitionOnTimeout[7] = "NoAmmo";
- stateName[8] = "checkState";
- stateTransitionOnTriggerUp[8] = "Spindown";
- stateSequence[8] = "Fire_Vis";
- stateTransitionOnNoAmmo[8] = "EmptySpindown";
- stateTimeoutValue[8] = 0.01;
- stateTransitionOnTimeout[8] = "ready";
- };
- datablock ShapeBaseImageData(WarpPlasmaSideAImage) : WarpPlasmaMainImage
- {
- shapeFile = "turret_tank_barrelmortar.dts";
- offset = "5.25 -3.5 0.75";
- rotation = "0 1 0 90";
- stateScript[3] = "onTriggerDown";
- stateScript[5] = "onTriggerUp";
- stateScript[6] = "onTriggerUp";
- stateSequence[4] = "Recoil";
- // stateSequence[5] = "Fire_Vis";
- // stateSequence[8] = "Fire_Vis";
- };
- datablock ShapeBaseImageData(WarpPlasmaSideBImage) : WarpPlasmaMainImage
- {
- shapeFile = "turret_tank_barrelmortar.dts";
- offset = "-5.25 -3.5 0.75"; //-1.5";
- rotation = "0 1 0 -90";
- stateScript[3] = "onTriggerDown";
- stateScript[5] = "onTriggerUp";
- stateScript[6] = "onTriggerUp";
- stateSequence[4] = "Recoil";
- // stateSequence[5] = "Recoil";
- // stateSequence[8] = "Recoil";
- };
- datablock ShapeBaseImageData(WarpFlyerParam)
- {
- mountPoint = 2;
- shapeFile = "turret_muzzlepoint.dts";
- projectile = PlasmaBolt;
- projectileType = LinearFlareProjectile;
- };
- function WarpFlyer::onTrigger(%data, %obj, %trigger, %state)
- {
- if(%trigger == 0)
- {
- if(%obj.selectedWeapon == 1)
- {
- %obj.setImageTrigger(2, false);
- %obj.setImageTrigger(3, false);
- %obj.setImageTrigger(4, false);
- switch(%state)
- {
- case 0:
- %obj.fireWeapon = false;
- %obj.setImageTrigger(2, false);
- %obj.setImageTrigger(3, false);
- %obj.setImageTrigger(4, false);
- case 1:
- %obj.fireWeapon = true;
- if(%obj.nextWeaponFire == 2)
- {
- %obj.setImageTrigger(2, true);
- %obj.setImageTrigger(3, false);
- %obj.setImageTrigger(4, false);
- }
- if(%obj.nextWeaponFire == 3)
- {
- %obj.setImageTrigger(2, false);
- %obj.setImageTrigger(3, true);
- %obj.setImageTrigger(4, false);
- }
- else
- {
- %obj.setImageTrigger(2, false);
- %obj.setImageTrigger(3, false);
- %obj.setImageTrigger(4, true);
- }
- }
- }
- }
- }
- //=============================================================================
- datablock ShapeBaseImageData(CamanisMuzzleImage)
- {
- shapeFile = "vehicle_grav_scout.dts";
- offset = "0 5.5 -1";
- // rotation = "0 1 0 90";
- };
- datablock ShapeBaseImageData(GenWing1Image)
- {
- shapeFile = "station_generator_large.dts";
- mountPoint = 1;
- offset = "-2 1 0";
- rotation = "0 1 0 90";
- stateName[0] = "Idle";
- stateSequence[0] = "Power";
- };
- datablock ShapeBaseImageData(GenWing2Image)
- {
- shapeFile = "station_generator_large.dts";
- mountPoint = 1;
- offset = "2 1 0";
- rotation = "0 1 0 -90";
- stateName[0] = "Idle";
- stateSequence[0] = "Power";
- };
- datablock StaticShapeData(WarpBubble)
- {
- shapeFile = "grenade_flare.dts";
- };
- datablock StaticShapeData(WarpCore)
- {
- shapeFile = "station_generator_large.dts";
- // emap = true;
- maxDamage = WarpFlyer.maxDamage;
- destroyedLevel = WarpFlyer.destroyedLevel;
- };
- function WarpCore::onDamage(%data, %obj)
- {
- %newDamageVal = %obj.getDamageLevel();
- if(%obj.lastDamageVal !$= "")
- if(isObject(%obj.getObjectMount()) && %obj.lastDamageVal > %newDamageVal)
- %obj.getObjectMount().setDamageLevel(%newDamageVal);
- %obj.lastDamageVal = %newDamageVal;
- }
- function WarpCore::damageObject(%this, %targetObject, %sourceObject, %position, %amount, %damageType ,%vec, %client, %projectile)
- {
- //If vehicle turret is hit then apply damage to the vehicle
- %vehicle = %targetObject.getObjectMount();
- if(%vehicle)
- %vehicle.getDataBlock().damageObject(%vehicle, %sourceObject, %position, %amount, %damageType, %vec, %client, %projectile);
- }
- datablock StaticShapeData(HoleEntry)
- {
- shapeFile = "energy_explosion.dts";
- };
- datablock StaticShapeData(Subspace)
- {
- shapeFile = "grenade_flare.dts";
- };
- datablock ShockLanceProjectileData(GeneratorPowerup)
- {
- directDamage = 0;
- radiusDamageType = $DamageType::Default;
- kickBackStrength = 0;
- velInheritFactor = 0;
- sound = "";
- zapDuration = 6;
- impulse = 0;
- boltLength = 14.0;
- extension = 14.0; // script variable indicating distance you can shock people from
- lightningFreq = 50.0;
- lightningDensity = 18.0;
- lightningAmp = 0.25;
- lightningWidth = 0.05;
- boltSpeed[0] = 2.0;
- boltSpeed[1] = -0.5;
- texWrap[0] = 1.5;
- texWrap[1] = 1.5;
- startWidth[0] = 0.3;
- endWidth[0] = 0.6;
- startWidth[1] = 0.3;
- endWidth[1] = 0.6;
- texture[0] = "special/jammermap";
- texture[1] = "special/jammermap";
- texture[2] = "special/cloaktexture";
- texture[3] = "special/jammermap";
- };
- datablock ShockLanceProjectileData(BlueShift)
- {
- directDamage = 0;
- radiusDamageType = $DamageType::Default;
- kickBackStrength = 0;
- velInheritFactor = 0;
- sound = "";
- zapDuration = 0.4;
- impulse = 0;
- boltLength = 14.0;
- extension = 14.0; // script variable indicating distance you can shock people from
- lightningFreq = 50.0;
- lightningDensity = 18.0;
- lightningAmp = 0.25;
- lightningWidth = 0.05;
- boltSpeed[0] = 2.0;
- boltSpeed[1] = -0.5;
- texWrap[0] = 1.5;
- texWrap[1] = 1.5;
- startWidth[0] = 0.3;
- endWidth[0] = 0.6;
- startWidth[1] = 0.3;
- endWidth[1] = 0.6;
- texture[0] = "special/shieldenvmap";
- texture[1] = "special/shieldmap";
- texture[2] = "special/shieldenvmap";
- texture[3] = "special/shieldmap";
- };
- function WarpFlyer::playerDismounted(%data, %obj, %player)
- {
- %obj.fireWeapon = false;
- %obj.setImageTrigger(2, false);
- %obj.setImageTrigger(3, false);
- %obj.setImageTrigger(4, false);
- setTargetSensorGroup(%obj.getTarget(), %obj.team);
- }
- function WarpPlasmaMainImage::onFire(%data,%obj,%slot)
- {
- Parent::onFire(%data,%obj,%slot);
- %obj.nextWeaponFire = 3;
- schedule(250, 0, "fireNextWarp", %obj);
- }
- function WarpPlasmaSideAImage::onFire(%data,%obj,%slot)
- {
- Parent::onFire(%data,%obj,%slot);
- %obj.nextWeaponFire = 4;
- schedule(250, 0, "fireNextWarp", %obj);
- }
- function WarpPlasmaSideBImage::onFire(%data,%obj,%slot)
- {
- Parent::onFire(%data,%obj,%slot);
- %obj.nextWeaponFire = 2;
- schedule(250, 0, "fireNextWarp", %obj);
- }
- //Warp core functions
- function WSInitCore(%obj)
- {
- if(!isObject(%obj))
- return;
- if(%obj.WarpCoreActive)
- {
- %obj.zapCnt++;
- if(%obj.zapCnt > 4)
- {
- if(!isObject(%obj.client.player))
- return;
- %obj.client.player.zap = new ShockLanceProjectile()
- {
- dataBlock = "blueshift";
- initialDirection = "0 0 -0.5";
- initialPosition = vectorAdd(%obj.client.player.getPosition(), "0 0 0.6");
- sourceObject = %obj;
- sourceSlot = 0;
- targetId = %obj;
- };
- MissionCleanup.add(%obj.client.player.zap);
- %obj.client.player.zap2 = new ShockLanceProjectile()
- {
- dataBlock = "blueshift";
- initialDirection = "0 0 -0.5";
- initialPosition = vectorAdd(%obj.client.player.getPosition(), "0 0 0.6");
- sourceObject = %obj;
- sourceSlot = 0;
- targetId = %obj.core;
- };
- MissionCleanup.add(%obj.client.player.zap2);
- %obj.zapCnt = 0;
- }
- }
- %obj.nacellePct++;
- %out = graphBar100(%obj.nacellePct);
- if(%obj.nacellePct < 33)
- %color = "<color:FF0000>";
- else if(%obj.nacellePct < 66)
- %color = "<color:FFFF00>";
- else
- %color = "<color:00FF00>";
- %nacelleFX = %color @ %obj.nacellePct;
- commandToClient( %obj.client, 'BottomPrint', "<color:00FF11><font:sui generis:18>Warp core charging: "@%nacelleFX@"%\n"@%out, 5, 2);
- if(%obj.nacellePct <= 100)
- schedule(50, 0, "WSInitCore", %obj);
- else
- {
- %obj.setFrozenState(true);
- %pos = %obj.getPosition();
- %nvec = vectorNormalize(%obj.getMuzzleVector(0));
- %vec = vectorScale(%nvec, 25);
- %new = vectorAdd(%pos, %vec);
- %wormhole = new StaticShape()
- {
- scale = "15 15 15";
- dataBlock = "Subspace";
- };
- MissionCleanup.add(%wormhole);
- %obj.wormhole = %wormhole;
- %wormhole.setPosition(%new);
- %wormhole.playThread(0, "throw");
- %wormhole.startfade(1000, 0, false);
- %pos2 = %obj.getPosition();
- %nvec2 = vectorNormalize(%obj.getMuzzleVector(0));
- %vec2 = vectorScale(%nvec2, -13);
- %new2 = vectorAdd(%pos2, %vec2);
- %wormhole2 = new StaticShape()
- {
- scale = "50 50 50";
- dataBlock = "HoleEntry";
- };
- MissionCleanup.add(%wormhole2);
- %obj.wormhole2 = %wormhole2;
- %wormhole2.setPosition(%new2);
- %wormhole2.playThread(0, "ambient");
- %wormhole2.startfade(1000, 0, false);
- %wormhole2.setRotation(%obj.getRotation());
- %obj.applyImpulse(%obj.getTransform(), %obj.impulse);
- schedule(500, 0, "WSPhase2", %obj);
- }
- }
- function WSPhase2(%obj)
- {
- if(isObject(%obj) && %obj.WarpCoreActive)
- {
- %obj.zapcnt++;
- if(%obj.zapCnt > 3)
- {
- %field = %obj.getMountNodeObject(6);
- %core = %obj.getMountNodeObject(7);
- %obj.client.player.zap = new ShockLanceProjectile()
- {
- dataBlock = "firelancebolt";
- initialDirection = "0 0 -0.5";
- initialPosition = vectorAdd(%obj.client.player.getPosition(), "0 0 0.6");
- sourceObject = %obj;
- sourceSlot = 0;
- targetId = %obj;
- };
- MissionCleanup.add(%obj.client.player.zap);
- %obj.client.player.zap2 = new ShockLanceProjectile()
- {
- dataBlock = "basicshocker";
- initialDirection = "0 0 -0.5";
- initialPosition = vectorAdd(%obj.client.player.getPosition(), "0 0 0.6");
- sourceObject = %obj;
- sourceSlot = 0;
- targetId = %core;
- };
- MissionCleanup.add(%obj.client.player.zap2);
- %obj.zapCnt = 0;
- }
- %obj.nacellePct = 0; // reset fun time :)
- %obj.chargingWarp = true;
- %vec = vectorScale(%obj.getMuzzleVector(0), (3 + getRandomT()));
- %force = %obj.getDatablock().mass;
- %newVec = VectorScale(%vec, %force);
- %obj.impulse = %newVec;
- %obj.applyImpulse(%obj.getTransform(), %obj.impulse);
- %obj.vel = velToSingle(%obj.getVelocity());
- %obj.load = msToKPH(%obj.vel);
- %obj.wcLoad = (mSqrt(cube(%obj.load * 2.6) / (3.14 * (22/7)))) / 2;
- %obj.wclPct = mFloor((%obj.wcLoad / 16000) * 100);
- // %out = graphBar100(%obj.wclPct);
- commandToClient( %obj.client, 'BottomPrint', "<color:CCCC11><font:sui generis:18>Warp Core Load: "@%obj.wcLoad@" / 16000 ("@%obj.wclPct@"%)", 5, 1);
- if(%obj.vel < 237.5)
- schedule(100, 0, "WSPhase2", %obj);
- else
- {
- commandToClient(%obj.client, 'BottomPrint', "<color:FF0000><font:sui generis:32>>>>CRITICAL MASS<<<<", 5, 2);
- %obj.setCloaked(true);
- %obj.core.setCloaked(true);
- schedule(1000, 0, "WSPhase3", %obj);
- }
- }
- }
- function WSPhase3(%obj)
- {
- if(isObject(%obj) && %obj.WarpCoreActive)
- {
- %obj.setFrozenState(false);
- %obj.playShieldEffect("0.0 0.0 1.0");
- %obj.applyImpulse(%obj.getPosition(), %obj.vel);
- %obj.wormhole.startfade(5000, 0, true);
- %obj.wormhole2.startfade(5000, 0, true);
- WSPhase4(%obj);
- }
- }
- function WSPhase4(%obj)
- {
- if(isObject(%obj) && %obj.WarpCoreActive && %obj.getMountedObject(0))
- {
- %obj.setCloaked(false);
- %obj.core.setCloaked(false);
- %obj.maxSpeed = msToKPH(velToSingle(%obj.getVelocity()));
- %obj.inWarp = true;
- %obj.chargingWarp = false;
- %vec = vectorNormalize(%obj.getForwardVector());//%obj.getMuzzleVector(7);
- if(%obj.maxSpeed > $WarpSpeedLimit) // 5375 // 694.444 m/s
- %force = %obj.getDatablock().mass*5;
- else
- %force = %obj.getDatablock().mass*$WarpMassImpulseFactor;
- %newVec = VectorScale(%vec, %force);
- %obj.applyImpulse(%obj.getTransform(), %newVec);
- %obj.spd = velToSingle(%obj.getVelocity());
- %obj.spdNrm = msToKPH(%obj.spd) / 1000;
- %obj.wcCount += 1;
- %obj.wcMax = 100;
- %obj.wcPct = mFloor(%obj.wcCount / %obj.wcMax);
- // %out = graphBar100R(%obj.wcPct, 75, 85, false);
- if(%obj.getMountNodeObject(0) && %obj.getMountedObject(0))
- commandToClient(%obj.client, 'BottomPrint', "Speed: Warp "@%obj.spdNrm@" >> "@velToSingle(%obj.getVelocity())@" m/s | Warp Core Stress: "@%obj.wcPct@"%", 2, 1);
- if(%obj.wcPct < 100)
- schedule(50, 0, "WSPhase4", %obj);
- else
- {
- if(%obj.getDamageState() !$= Destroyed) // hehe
- %obj.setDamageState(Destroyed);
- }
- }
- else if(isObject(%obj))
- warpCoreCoolDown(%obj);
- }
- function warpCoreCoolDown(%obj)
- {
- if(isObject(%obj) && !%obj.inWarp)
- {
- if(%obj.wcCount > 4)
- %obj.wcCount -= 4;
- schedule(200, 0, "warpCoreCoolDown", %obj);
- }
- }
- function enableWarp(%a)
- {
- %a.haltInfoBar = false;
- %a.canWarp = true;
- }
- function InitWarpCore(%obj)
- {
- if(!%obj.canWarp)
- return;
- if(!%obj.WarpCoreActive)
- {
- %obj.WarpCoreActive = true;
- %obj.nacellePct = 0;
- %obj.chargingWarp = false;
- %obj.inWarp = false;
- %obj.client.player.zap = new ShockLanceProjectile()
- {
- dataBlock = "generatorPowerup";
- initialDirection = "0 0 -0.5";
- initialPosition = vectorAdd(%obj.client.player.getPosition(), "0 0 0.6");
- sourceObject = %obj;
- sourceSlot = 0;
- targetId = %obj.core;
- };
- %obj.haltInfoBar = true;
- MissionCleanup.add(%obj.client.player.zap);
- %obj.field.startFade(4500, 0, false);
- commandToClient( %obj.client, 'BottomPrint', "<font:sui generis:18>Warp Core powering up...", 5, 1); // This should be interesting.....
- schedule(4500, 0, "WSInitCore", %obj);
- }
- else //if(%obj.WarpCoreActive && (%obj.chargingWarp || %obj.inWarp))
- {
- if(isObject(%obj.wormhole))
- %obj.wormhole.delete();
- if(isObject(%obj.wormhole2))
- %obj.wormhole2.delete();
- %obj.canWarp = false;
- %obj.setCloaked(false);
- %obj.core.setCloaked(false);
- %obj.WarpCoreActive = false;
- %obj.setFrozenState(false);
- %obj.field.startFade(1500, 0, true);
- commandtoClient( %obj.client, 'BottomPrint', "<font:sui generis:18>Warp Core powering down.", 5, 1); // This should be interesting.....
- schedule(5000, 0, "enableWarp", %obj);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement