T2-ACCM/Scripts/Vehicles/vehicle_transboat.cs
2013-02-01 15:45:22 -05:00

250 lines
No EOL
6.4 KiB
C#

//**************************************************************
// BEOWULF ASSAULT VEHICLE
//**************************************************************
//**************************************************************
// VEHICLE CHARACTERISTICS
//**************************************************************
datablock HoverVehicleData(PersonelBoat) : TankDamageProfile
{
spawnOffset = "0 0 4";
canControl = false;
floatingGravMag = 4.0;
catagory = "Vehicles";
shapeFile = "vehicle_air_scout.dts";
multipassenger = true;
computeCRC = true;
renderWhenDestroyed = false;
weaponNode = 1;
debrisShapeName = "vehicle_air_scout.dts";
debris = GShapeDebris;
drag = 0.0;
density = 0.9;
mountPose[0] = sitting;
numMountPoints = 6;
isProtectedMountPoint[0] = true;
isProtectedMountPoint[1] = true;
isProtectedMountPoint[2] = true;
isProtectedMountPoint[3] = true;
isProtectedMountPoint[4] = true;
isProtectedMountPoint[5] = true;
cameraMaxDist = 20;
cameraOffset = 3;
cameraLag = 1.5;
explosion = HGVehicleExplosion;
explosionDamage = 3.0;
explosionRadius = 25.0;
maxSteeringAngle = 0.5; // 20 deg.
maxDamage = 4.0;
destroyedLevel = 4.0;
HDAddMassLevel = 3.2;
HDMassImage = BoatHDMassImage;
isShielded = false;
rechargeRate = 1.0;
energyPerDamagePoint = 135;
maxEnergy = 1000;
minJetEnergy = 15;
jetEnergyDrain = 0.0;
// Rigid Body
mass = 950;
bodyFriction = 1.0;
bodyRestitution = 0.5;
minRollSpeed = 3;
gyroForce = 400;
gyroDamping = 0.3;
stabilizerForce = 20;
minDrag = 10;
softImpactSpeed = 5; // Play SoftImpact Sound
hardImpactSpeed = 10; // Play HardImpact Sound
// Ground Impact Damage (uses DamageType::Ground)
minImpactSpeed = 5;
speedDamageScale = 0.005;
// Object Impact Damage (uses DamageType::Impact)
collDamageThresholdVel = 18;
collDamageMultiplier = 0.005;
dragForce = 40 / 20;
vertFactor = 0.0;
floatingThrustFactor = 0.0;
mainThrustForce = 75;
reverseThrustForce = 30;
strafeThrustForce = 0.0;
turboFactor = 1.0;
brakingForce = 15;
brakingActivationSpeed = 4;
stabLenMin = 0.1;
stabLenMax = 1.6;
stabSpringConstant = 45;
stabDampingConstant = 20;
gyroDrag = 20;
normalForce = 20;
restorativeForce = 10;
steeringForce = 12;
rollForce = 4;
pitchForce = 0;
dustEmitter = TankDustEmitter;
triggerDustHeight = 3.5;
dustHeight = 1.0;
dustTrailEmitter = TireEmitter;
dustTrailOffset = "0.0 -1.0 0.5";
triggerTrailHeight = 3.6;
dustTrailFreqMod = 15.0;
jetSound = AssaultVehicleThrustSound;
engineSound = AssaultVehicleEngineSound;
floatSound = AssaultVehicleSkid;
softImpactSound = GravSoftImpactSound;
hardImpactSound = HardImpactSound;
wheelImpactSound = WheelImpactSound;
forwardJetEmitter = TankJetEmitter;
//
softSplashSoundVelocity = 5.0;
mediumSplashSoundVelocity = 10.0;
hardSplashSoundVelocity = 15.0;
exitSplashSoundVelocity = 10.0;
exitingWater = VehicleExitWaterMediumSound;
impactWaterEasy = VehicleImpactWaterSoftSound;
impactWaterMedium = VehicleImpactWaterMediumSound;
impactWaterHard = VehicleImpactWaterMediumSound;
waterWakeSound = VehicleWakeMediumSplashSound;
minMountDist = 10;
damageEmitter[0] = SmallLightDamageSmoke;
damageEmitter[1] = MeHGHeavyDamageSmoke;
damageEmitter[2] = DamageBubbles;
damageEmitterOffset[0] = "0.0 -1.5 3.5 ";
damageLevelTolerance[0] = 0.3;
damageLevelTolerance[1] = 0.7;
numDmgEmitterAreas = 1;
splashEmitter[0] = VehicleFoamDropletsEmitter;
splashEmitter[1] = VehicleFoamEmitter;
shieldImpact = VehicleShieldImpact;
cmdCategory = "Tactical";
cmdIcon = CMDGroundTankIcon;
cmdMiniIconName = "commander/MiniIcons/com_tank_grey";
targetNameTag = 'Grandens Transport';
targetTypeTag = 'Boat';
sensorData = PlayerSensor;
checkRadius = 5.5535;
observeParameters = "1 10 10";
runningLight[0] = TankLight1;
runningLight[1] = TankLight2;
runningLight[2] = TankLight3;
runningLight[3] = TankLight4;
shieldEffectScale = "0.9 1.0 0.6";
showPilotInfo = 1;
replaceTime = 20;
};
function PersonelBoat::onAdd(%this, %obj)
{
Parent::onAdd(%this, %obj);
%obj.schedule(6000, "playThread", $ActivateThread, "activate");
}
function PersonelBoat::playerMounted(%data, %obj, %player, %node)
{
if (%obj.clientControl)
serverCmdResetControlObject(%obj.clientControl);
if (%node == 0) {
commandToClient(%player.client, 'setHudMode', 'Pilot', "HAPC", %node);
}
else
{
// all others
commandToClient(%player.client, 'setHudMode', 'Passenger', "HAPC", %node);
}
if ( %player.client.observeCount > 0 )
resetObserveFollow( %player.client, false );
bottomPrint(%player.client, "ONLY use on water will not move well on land", 5, 2 );
%passString = buildPassengerString(%obj);
for(%i = 0; %i < %data.numMountPoints; %i++)
if (%obj.getMountNodeObject(%i) > 0)
commandToClient(%obj.getMountNodeObject(%i).client, 'checkPassengers', %passString);
}
function PersonelBoat::onEnterLiquid(%data, %obj, %coverage, %type)
{
switch(%type)
{
case 0:
//Water
case 1:
//Ocean Water
case 2:
//River Water
case 3:
//Stagnant Water
case 4:
//Lava
%obj.liquidDamage(%data, $VehicleDamageLava, $DamageType::Lava);
case 5:
//Hot Lava
%obj.liquidDamage(%data, $VehicleDamageHotLava, $DamageType::Lava);
case 6:
//Crusty Lava
%obj.liquidDamage(%data, $VehicleDamageCrustyLava, $DamageType::Lava);
case 7:
//Quick Sand
}
}
function PersonelBoat::onLeaveLiquid(%data, %obj, %type)
{
switch(%type)
{
case 0:
//Water
case 1:
//Ocean Water
case 2:
//River Water
case 3:
//Stagnant Water
case 4:
//Lava
case 5:
//Hot Lava
case 6:
//Crusty Lava
case 7:
//Quick Sand
}
if (%obj.lDamageSchedule !$= "")
{
cancel(%obj.lDamageSchedule);
%obj.lDamageSchedule = "";
}
}