Larger dust puffs

For cloak detection
Line 1088
Line 1126
This commit is contained in:
ChocoTaco 2022-04-22 11:57:20 -04:00
parent 8ef58d73d3
commit 8db5e4bf51

View file

@ -187,7 +187,7 @@ datablock AudioProfile(CorpseLootingSound)
preload = true; preload = true;
effect = CorpseLootingEffect; effect = CorpseLootingEffect;
}; };
datablock AudioProfile(ArmorMoveBubblesSound) datablock AudioProfile(ArmorMoveBubblesSound)
{ {
filename = "fx/armor/bubbletrail2.wav"; filename = "fx/armor/bubbletrail2.wav";
@ -1085,8 +1085,8 @@ datablock ParticleData(LightPuff)
textureName = "particleTest"; textureName = "particleTest";
colors[0] = "0.46 0.36 0.26 0.4"; colors[0] = "0.46 0.36 0.26 0.4";
colors[1] = "0.46 0.46 0.36 0.0"; colors[1] = "0.46 0.46 0.36 0.0";
sizes[0] = 0.4; sizes[0] = 0.8; //was 0.4
sizes[1] = 1.0; sizes[1] = 1.4; //was 1.0
}; };
datablock ParticleEmitterData(LightPuffEmitter) datablock ParticleEmitterData(LightPuffEmitter)
@ -1123,9 +1123,9 @@ datablock ParticleData(LiftoffDust)
colors[0] = "0.46 0.36 0.26 0.0"; colors[0] = "0.46 0.36 0.26 0.0";
colors[1] = "0.46 0.46 0.36 0.4"; colors[1] = "0.46 0.46 0.36 0.4";
colors[2] = "0.46 0.46 0.36 0.0"; colors[2] = "0.46 0.46 0.36 0.0";
sizes[0] = 0.2; sizes[0] = 0.6; //was 0.2
sizes[1] = 0.6; sizes[1] = 1.0; //was 0.6
sizes[2] = 1.0; sizes[2] = 1.4; //was 1.0
times[0] = 0.0; times[0] = 0.0;
times[1] = 0.5; times[1] = 0.5;
times[2] = 1.0; times[2] = 1.0;
@ -1193,11 +1193,11 @@ datablock DebrisData( PlayerDebris )
velocity = 18.0; velocity = 18.0;
velocityVariance = 12.0; velocityVariance = 12.0;
}; };
// z0dd - ZOD, 4/21/02. Altered most of these properties // z0dd - ZOD, 4/21/02. Altered most of these properties
datablock PlayerData(LightMaleHumanArmor) : LightPlayerDamageProfile datablock PlayerData(LightMaleHumanArmor) : LightPlayerDamageProfile
{ {
emap = true; emap = true;
className = Armor; className = Armor;
@ -1316,8 +1316,8 @@ datablock PlayerData(LightMaleHumanArmor) : LightPlayerDamageProfile
splashEmitter[0] = PlayerFoamDropletsEmitter; splashEmitter[0] = PlayerFoamDropletsEmitter;
splashEmitter[1] = PlayerFoamEmitter; splashEmitter[1] = PlayerFoamEmitter;
splashEmitter[2] = PlayerBubbleEmitter; splashEmitter[2] = PlayerBubbleEmitter;
mediumSplashSoundVelocity = 10.0; mediumSplashSoundVelocity = 10.0;
hardSplashSoundVelocity = 20.0; hardSplashSoundVelocity = 20.0;
exitSplashSoundVelocity = 5.0; exitSplashSoundVelocity = 5.0;
// Controls over slope of runnable/jumpable surfaces // Controls over slope of runnable/jumpable surfaces
@ -1436,7 +1436,7 @@ datablock PlayerData(LightMaleHumanArmor) : LightPlayerDamageProfile
observeParameters = "0.5 4.5 4.5"; observeParameters = "0.5 4.5 4.5";
shieldEffectScale = "0.7 0.7 1.0"; shieldEffectScale = "0.7 0.7 1.0";
//Kills autopoints //Kills autopoints
detectsUsingLOSEnemy[1] = true; detectsUsingLOSEnemy[1] = true;
detectsUsingLOSEnemy[2] = true; detectsUsingLOSEnemy[2] = true;
@ -1453,7 +1453,7 @@ datablock DecalData(MediumMaleFootprint)
// z0dd - ZOD, 4/21/02. Altered most of these properties // z0dd - ZOD, 4/21/02. Altered most of these properties
datablock PlayerData(MediumMaleHumanArmor) : MediumPlayerDamageProfile datablock PlayerData(MediumMaleHumanArmor) : MediumPlayerDamageProfile
{ {
emap = true; emap = true;
className = Armor; className = Armor;
@ -1574,7 +1574,7 @@ datablock PlayerData(MediumMaleHumanArmor) : MediumPlayerDamageProfile
boxHeadRightPercentage = 1; boxHeadRightPercentage = 1;
boxHeadBackPercentage = 0; boxHeadBackPercentage = 0;
boxHeadFrontPercentage = 1; boxHeadFrontPercentage = 1;
//Foot Prints //Foot Prints
decalData = MediumMaleFootprint; decalData = MediumMaleFootprint;
decalOffset = 0.35; decalOffset = 0.35;
@ -1594,8 +1594,8 @@ datablock PlayerData(MediumMaleHumanArmor) : MediumPlayerDamageProfile
splashEmitter[0] = PlayerFoamDropletsEmitter; splashEmitter[0] = PlayerFoamDropletsEmitter;
splashEmitter[1] = PlayerFoamEmitter; splashEmitter[1] = PlayerFoamEmitter;
splashEmitter[2] = PlayerBubbleEmitter; splashEmitter[2] = PlayerBubbleEmitter;
mediumSplashSoundVelocity = 10.0; mediumSplashSoundVelocity = 10.0;
hardSplashSoundVelocity = 20.0; hardSplashSoundVelocity = 20.0;
exitSplashSoundVelocity = 5.0; exitSplashSoundVelocity = 5.0;
footstepSplashHeight = 0.35; footstepSplashHeight = 0.35;
@ -1694,7 +1694,7 @@ datablock PlayerData(MediumMaleHumanArmor) : MediumPlayerDamageProfile
observeParameters = "0.5 4.5 4.5"; observeParameters = "0.5 4.5 4.5";
shieldEffectScale = "0.7 0.7 1.0"; shieldEffectScale = "0.7 0.7 1.0";
//Kills autopoints //Kills autopoints
detectsUsingLOSEnemy[1] = true; detectsUsingLOSEnemy[1] = true;
detectsUsingLOSEnemy[2] = true; detectsUsingLOSEnemy[2] = true;
@ -1761,7 +1761,7 @@ datablock PlayerData(HeavyMaleHumanArmor) : HeavyPlayerDamageProfile
maxDamage = 1.32; maxDamage = 1.32;
maxEnergy = 110; maxEnergy = 110;
repairRate = 0.0033; repairRate = 0.0033;
//Value changed halfway between base and classic. //Value changed halfway between base and classic.
//Classic is 54, Base is 75 //Classic is 54, Base is 75
//Shield breaks right at two mine-disc //Shield breaks right at two mine-disc
@ -1853,8 +1853,8 @@ datablock PlayerData(HeavyMaleHumanArmor) : HeavyPlayerDamageProfile
splashEmitter[0] = PlayerFoamDropletsEmitter; splashEmitter[0] = PlayerFoamDropletsEmitter;
splashEmitter[1] = PlayerFoamEmitter; splashEmitter[1] = PlayerFoamEmitter;
splashEmitter[2] = PlayerBubbleEmitter; splashEmitter[2] = PlayerBubbleEmitter;
mediumSplashSoundVelocity = 10.0; mediumSplashSoundVelocity = 10.0;
hardSplashSoundVelocity = 20.0; hardSplashSoundVelocity = 20.0;
exitSplashSoundVelocity = 5.0; exitSplashSoundVelocity = 5.0;
footstepSplashHeight = 0.35; footstepSplashHeight = 0.35;
@ -1953,7 +1953,7 @@ datablock PlayerData(HeavyMaleHumanArmor) : HeavyPlayerDamageProfile
observeParameters = "0.5 4.5 4.5"; observeParameters = "0.5 4.5 4.5";
shieldEffectScale = "0.7 0.7 1.0"; shieldEffectScale = "0.7 0.7 1.0";
//Kills autopoints //Kills autopoints
detectsUsingLOSEnemy[1] = true; detectsUsingLOSEnemy[1] = true;
detectsUsingLOSEnemy[2] = true; detectsUsingLOSEnemy[2] = true;
@ -1998,7 +1998,7 @@ datablock PlayerData(LightMaleBiodermArmor) : LightMaleHumanArmor
debrisShapeName = "bio_player_debris.dts"; debrisShapeName = "bio_player_debris.dts";
//Foot Prints //Foot Prints
decalData = LightBiodermFootprint; decalData = LightBiodermFootprint;
decalOffset = 0.3; decalOffset = 0.3;
@ -2023,7 +2023,7 @@ datablock PlayerData(MediumMaleBiodermArmor) : MediumMaleHumanArmor
debrisShapeName = "bio_player_debris.dts"; debrisShapeName = "bio_player_debris.dts";
//Foot Prints //Foot Prints
decalData = MediumBiodermFootprint; decalData = MediumBiodermFootprint;
decalOffset = 0.35; decalOffset = 0.35;
waterBreathSound = WaterBreathBiodermSound; waterBreathSound = WaterBreathBiodermSound;
@ -2049,7 +2049,7 @@ datablock PlayerData(HeavyMaleBiodermArmor) : HeavyMaleHumanArmor
//Foot Prints //Foot Prints
decalData = HeavyBiodermFootprint; decalData = HeavyBiodermFootprint;
decalOffset = 0.4; decalOffset = 0.4;
waterBreathSound = WaterBreathBiodermSound; waterBreathSound = WaterBreathBiodermSound;
}; };
@ -2122,17 +2122,17 @@ function Armor::onMount(%this,%obj,%vehicle,%node)
if(!%obj.inStation) if(!%obj.inStation)
%obj.lastWeapon = (%obj.getMountedImage($WeaponSlot) == 0 ) ? "" : %obj.getMountedImage($WeaponSlot).item; %obj.lastWeapon = (%obj.getMountedImage($WeaponSlot) == 0 ) ? "" : %obj.getMountedImage($WeaponSlot).item;
%obj.unmountImage($WeaponSlot); %obj.unmountImage($WeaponSlot);
if(!%obj.client.isAIControlled()) if(!%obj.client.isAIControlled())
{ {
%obj.setControlObject(%vehicle); %obj.setControlObject(%vehicle);
%obj.client.setObjectActiveImage(%vehicle, 2); %obj.client.setObjectActiveImage(%vehicle, 2);
} }
//E3 respawn... //E3 respawn...
if(%obj == %obj.lastVehicle.lastPilot && %obj.lastVehicle != %vehicle) if(%obj == %obj.lastVehicle.lastPilot && %obj.lastVehicle != %vehicle)
{ {
schedule(15000, %obj.lastVehicle,"vehicleAbandonTimeOut", %obj.lastVehicle); schedule(15000, %obj.lastVehicle,"vehicleAbandonTimeOut", %obj.lastVehicle);
@ -2140,14 +2140,14 @@ function Armor::onMount(%this,%obj,%vehicle,%node)
} }
if(%vehicle.lastPilot !$= "" && %vehicle == %vehicle.lastPilot.lastVehicle) if(%vehicle.lastPilot !$= "" && %vehicle == %vehicle.lastPilot.lastVehicle)
%vehicle.lastPilot.lastVehicle = ""; %vehicle.lastPilot.lastVehicle = "";
%vehicle.abandon = false; %vehicle.abandon = false;
%vehicle.lastPilot = %obj; %vehicle.lastPilot = %obj;
%obj.lastVehicle = %vehicle; %obj.lastVehicle = %vehicle;
// update the vehicle's team // update the vehicle's team
if((%vehicle.getTarget() != -1) && %vehicle.getDatablock().cantTeamSwitch $= "") if((%vehicle.getTarget() != -1) && %vehicle.getDatablock().cantTeamSwitch $= "")
{ {
setTargetSensorGroup(%vehicle.getTarget(), %obj.client.getSensorGroup()); setTargetSensorGroup(%vehicle.getTarget(), %obj.client.getSensorGroup());
if( %vehicle.turretObject > 0 ) if( %vehicle.turretObject > 0 )
setTargetSensorGroup(%vehicle.turretObject.getTarget(), %obj.client.getSensorGroup()); setTargetSensorGroup(%vehicle.turretObject.getTarget(), %obj.client.getSensorGroup());
@ -2207,9 +2207,9 @@ function Armor::onUnmount( %this, %obj, %vehicle, %node )
%obj.use(%obj.lastWeapon); %obj.use(%obj.lastWeapon);
else else
{ {
if(%obj.getMountedImage($WeaponSlot) == 0) if(%obj.getMountedImage($WeaponSlot) == 0)
%obj.selectWeaponSlot( 0 ); %obj.selectWeaponSlot( 0 );
} }
//Inform gunner position when pilot leaves... //Inform gunner position when pilot leaves...
//if(%vehicle.getDataBlock().showPilotInfo !$= "") //if(%vehicle.getDataBlock().showPilotInfo !$= "")
// if((%gunner = %vehicle.getMountNodeObject(1)) != 0) // if((%gunner = %vehicle.getMountNodeObject(1)) != 0)
@ -2271,7 +2271,7 @@ function Armor::onCollision(%this,%obj,%col,%forceVehicleNode)
//to ensure they mount the turret before the passenger seat, regardless of where they collide... //to ensure they mount the turret before the passenger seat, regardless of where they collide...
if (%obj.client.isAIControlled()) if (%obj.client.isAIControlled())
{ {
%transform = %col.getTransform(); %transform = %col.getTransform();
//either the AI is *required* to pilot, or they'll pick the first available passenger seat //either the AI is *required* to pilot, or they'll pick the first available passenger seat
if (%client.pilotVehicle) if (%client.pilotVehicle)
@ -2312,7 +2312,7 @@ function Armor::onCollision(%this,%obj,%col,%forceVehicleNode)
} }
if(%col.noEnemyControl && %obj.team != %col.team) if(%col.noEnemyControl && %obj.team != %col.team)
return; return;
commandToClient(%obj.client,'SetDefaultVehicleKeys', true); commandToClient(%obj.client,'SetDefaultVehicleKeys', true);
//If pilot or passenger then bind a few extra keys //If pilot or passenger then bind a few extra keys
if(%node == 0) if(%node == 0)
@ -2329,7 +2329,7 @@ function Armor::onCollision(%this,%obj,%col,%forceVehicleNode)
if (%obj.client.isAIControlled() && %node == 1 && (%type $= "BomberFlyer" || %type $= "AssaultVehicle")) if (%obj.client.isAIControlled() && %node == 1 && (%type $= "BomberFlyer" || %type $= "AssaultVehicle"))
{ {
//%client.player.setActionThread(%col.getDataBlock().mountPose[0], true, true); //%client.player.setActionThread(%col.getDataBlock().mountPose[0], true, true);
%client.player.setActionThread(sitting, true, true); %client.player.setActionThread(sitting, true, true);
} }
%col.mountObject(%obj,%node); %col.mountObject(%obj,%node);
@ -2350,7 +2350,7 @@ function Armor::onCollision(%this,%obj,%col,%forceVehicleNode)
%gotSomething = false; %gotSomething = false;
// it's corpse-looting time! // it's corpse-looting time!
// weapons -- don't pick up more than you are allowed to carry! // weapons -- don't pick up more than you are allowed to carry!
for(%i = 0; ( %obj.weaponCount < %obj.getDatablock().maxWeapons ) && $InvWeapon[%i] !$= ""; %i++) for(%i = 0; ( %obj.weaponCount < %obj.getDatablock().maxWeapons ) && $InvWeapon[%i] !$= ""; %i++)
{ {
%weap = $NameToInv[$InvWeapon[%i]]; %weap = $NameToInv[$InvWeapon[%i]];
if ( %col.hasInventory( %weap ) ) if ( %col.hasInventory( %weap ) )
@ -2498,7 +2498,7 @@ function Player::resetFlagTossWait(%this)
function Player::resetSitMessage(%obj) function Player::resetSitMessage(%obj)
{ {
%obj.noSitMessage = false; %obj.noSitMessage = false;
} }
function Player::setInvincible(%this, %val) function Player::setInvincible(%this, %val)
@ -2508,9 +2508,9 @@ function Player::setInvincible(%this, %val)
function Player::causedRecentDamage(%this, %val) function Player::causedRecentDamage(%this, %val)
{ {
%this.causedRecentDamage = %val; %this.causedRecentDamage = %val;
} }
function hasLargePack(%player) function hasLargePack(%player)
{ {
%pack = %player.getMountedImage($BackpackSlot); %pack = %player.getMountedImage($BackpackSlot);
@ -2609,7 +2609,7 @@ function Armor::doDismount(%this, %obj, %forced)
%obj.unmount(); %obj.unmount();
if(%obj.mVehicle) if(%obj.mVehicle)
%obj.mVehicle.getDataBlock().playerDismounted(%obj.mVehicle, %obj); %obj.mVehicle.getDataBlock().playerDismounted(%obj.mVehicle, %obj);
// bots don't change their control objects when in vehicles // bots don't change their control objects when in vehicles
if(!%obj.client.isAIControlled()) if(!%obj.client.isAIControlled())
{ {
@ -2652,7 +2652,7 @@ function resetObserveFollow( %client, %dismount )
if ( %client.observers[%i].clientObserve != %client ) if ( %client.observers[%i].clientObserve != %client )
continue; continue;
%client.observers[%i].camera.setOrbitMode( %client.player, %client.player.getTransform(), 0.5, 4.5, 4.5); %client.observers[%i].camera.setOrbitMode( %client.player, %client.player.getTransform(), 0.5, 4.5, 4.5);
} }
} }
else else
@ -2666,7 +2666,7 @@ function resetObserveFollow( %client, %dismount )
%params = %client.player.getTransform(); %params = %client.player.getTransform();
else else
%params = %mount.getDataBlock().observeParameters; %params = %mount.getDataBlock().observeParameters;
for( %i = 0; %i < %client.observeCount; %i++ ) for( %i = 0; %i < %client.observeCount; %i++ )
{ {
// z0dd - ZOD, 5/21/03. Make sure this client actually obs this client // z0dd - ZOD, 5/21/03. Make sure this client actually obs this client
@ -2675,7 +2675,7 @@ function resetObserveFollow( %client, %dismount )
%client.observers[%i].camera.setOrbitMode(%mount, %mount.getTransform(), getWord( %params, 0 ), getWord( %params, 1 ), getWord( %params, 2 )); %client.observers[%i].camera.setOrbitMode(%mount, %mount.getTransform(), getWord( %params, 0 ), getWord( %params, 1 ), getWord( %params, 2 ));
} }
} }
} }
@ -2683,7 +2683,7 @@ function resetObserveFollow( %client, %dismount )
function Player::scriptKill(%player, %damageType) function Player::scriptKill(%player, %damageType)
{ {
%player.scriptKilled = 1; %player.scriptKilled = 1;
%player.setInvincible(false); %player.setInvincible(false);
%player.damage(0, %player.getPosition(), 10000, %damageType); %player.damage(0, %player.getPosition(), 10000, %damageType);
} }
@ -2695,7 +2695,7 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
return; return;
//---------------------------------------------------------------- //----------------------------------------------------------------
// z0dd - ZOD, 6/09/02. Check to see if this vehicle is destroyed, // z0dd - ZOD, 6/09/02. Check to see if this vehicle is destroyed,
// if it is do no damage. Fixes vehicle ghosting bug. We do not // if it is do no damage. Fixes vehicle ghosting bug. We do not
// check for isObject here, destroyed objects fail it even though // check for isObject here, destroyed objects fail it even though
// they exist as objects, go figure. // they exist as objects, go figure.
@ -2730,7 +2730,7 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
} }
else else
{ {
if(%damageType != $DamageType::Laser && %damageType != $DamageType::Bullet && %damageType != $DamageType::Blaster) if(%damageType != $DamageType::Laser && %damageType != $DamageType::Bullet && %damageType != $DamageType::Blaster)
return; return;
} }
} }
@ -2740,7 +2740,7 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
%targetClient = %targetObject.getOwnerClient(); %targetClient = %targetObject.getOwnerClient();
if(isObject(%mineSC)) if(isObject(%mineSC))
%sourceClient = %mineSC; %sourceClient = %mineSC;
else else
%sourceClient = isObject(%sourceObject) ? %sourceObject.getOwnerClient() : 0; %sourceClient = isObject(%sourceObject) ? %sourceObject.getOwnerClient() : 0;
@ -2754,7 +2754,7 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
else if(%damageType == $DamageType::Suicide) else if(%damageType == $DamageType::Suicide)
%sourceTeam = 0; %sourceTeam = 0;
//-------------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------------
// z0dd - ZOD, 4/8/02. Check to see if this turret has a valid owner, if not clear the variable. // z0dd - ZOD, 4/8/02. Check to see if this turret has a valid owner, if not clear the variable.
else if(isObject(%sourceObject) && %sourceObject.getClassName() $= "Turret") else if(isObject(%sourceObject) && %sourceObject.getClassName() $= "Turret")
{ {
%sourceTeam = getTargetSensorGroup(%sourceObject.getTarget()); %sourceTeam = getTargetSensorGroup(%sourceObject.getTarget());
@ -2794,11 +2794,11 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
%damageScale = %data.damageScale[%damageType]; %damageScale = %data.damageScale[%damageType];
if(%damageScale !$= "") if(%damageScale !$= "")
%amount *= %damageScale; %amount *= %damageScale;
%flash = %targetObject.getDamageFlash() + (%amount * 2); %flash = %targetObject.getDamageFlash() + (%amount * 2);
if (%flash > 0.75) if (%flash > 0.75)
%flash = 0.75; %flash = 0.75;
// Teratos: Originally from Eolk? Mine+Disc tracking/death message support. // Teratos: Originally from Eolk? Mine+Disc tracking/death message support.
// No Schedules by DarkTiger Ver.2 // No Schedules by DarkTiger Ver.2
%targetClient.mineDisc = false; %targetClient.mineDisc = false;
@ -2807,17 +2807,17 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
case $DamageType::Disc: case $DamageType::Disc:
if((getSimTime() - %targetClient.mdcTime1) < 256) if((getSimTime() - %targetClient.mdcTime1) < 256)
%targetClient.mineDisc = true; %targetClient.mineDisc = true;
%targetClient.mdcTime2 = getSimTime(); %targetClient.mdcTime2 = getSimTime();
case $DamageType::Mine: case $DamageType::Mine:
if((getSimTime() - %targetClient.mdcTime2) < 256) if((getSimTime() - %targetClient.mdcTime2) < 256)
%targetClient.mineDisc = true; %targetClient.mineDisc = true;
%targetClient.mdcTime1 = getSimTime(); %targetClient.mdcTime1 = getSimTime();
} }
// -- End Mine+Disc insert. // -- End Mine+Disc insert.
%previousDamage = %targetObject.getDamagePercent(); %previousDamage = %targetObject.getDamagePercent();
%targetObject.setDamageFlash(%flash); %targetObject.setDamageFlash(%flash);
%targetObject.applyDamage(%amount); %targetObject.applyDamage(%amount);
@ -2826,49 +2826,49 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
%targetClient.lastDamagedBy = %damagingClient; %targetClient.lastDamagedBy = %damagingClient;
%targetClient.lastDamaged = getSimTime(); %targetClient.lastDamaged = getSimTime();
//now call the "onKilled" function if the client was... you know... //now call the "onKilled" function if the client was... you know...
if(%targetObject.getState() $= "Dead") if(%targetObject.getState() $= "Dead")
{ {
// where did this guy get it? // where did this guy get it?
%damLoc = %targetObject.getDamageLocation(%position); %damLoc = %targetObject.getDamageLocation(%position);
// should this guy be blown apart? // should this guy be blown apart?
if( %damageType == $DamageType::Explosion || if( %damageType == $DamageType::Explosion ||
%damageType == $DamageType::TankMortar || %damageType == $DamageType::TankMortar ||
%damageType == $DamageType::Mortar || %damageType == $DamageType::Mortar ||
%damageType == $DamageType::MortarTurret || %damageType == $DamageType::MortarTurret ||
%damageType == $DamageType::BomberBombs || %damageType == $DamageType::BomberBombs ||
%damageType == $DamageType::SatchelCharge || %damageType == $DamageType::SatchelCharge ||
%damageType == $DamageType::Missile ) %damageType == $DamageType::Missile )
{ {
if( %previousDamage >= 0.35 ) // only if <= 35 percent damage remaining if( %previousDamage >= 0.35 ) // only if <= 35 percent damage remaining
{ {
%targetObject.setMomentumVector(%momVec); %targetObject.setMomentumVector(%momVec);
%targetObject.blowup(); %targetObject.blowup();
} }
} }
// this should be funny... // this should be funny...
if( %damageType == $DamageType::VehicleSpawn ) if( %damageType == $DamageType::VehicleSpawn )
{ {
%targetObject.setMomentumVector("0 0 1"); %targetObject.setMomentumVector("0 0 1");
%targetObject.blowup(); %targetObject.blowup();
} }
// If we were killed, max out the flash // If we were killed, max out the flash
%targetObject.setDamageFlash(0.75); %targetObject.setDamageFlash(0.75);
%damLoc = %targetObject.getDamageLocation(%position); %damLoc = %targetObject.getDamageLocation(%position);
Game.onClientKilled(%targetClient, %sourceClient, %damageType, %sourceObject, %damLoc); Game.onClientKilled(%targetClient, %sourceClient, %damageType, %sourceObject, %damLoc);
} }
else if ( %amount > 0.1 ) else if ( %amount > 0.1 )
{ {
if( %targetObject.station $= "" && %targetObject.isCloaked() ) if( %targetObject.station $= "" && %targetObject.isCloaked() )
{ {
%targetObject.setCloaked( false ); %targetObject.setCloaked( false );
%targetObject.reCloak = %targetObject.schedule( 500, "setCloaked", true ); %targetObject.reCloak = %targetObject.schedule( 500, "setCloaked", true );
} }
playPain( %targetObject ); playPain( %targetObject );
} }
} }
@ -2883,101 +2883,101 @@ function Armor::applyConcussion( %this, %dist, %radius, %sourceObject, %targetOb
{ {
%percentage = 1 - ( %dist / %radius ); %percentage = 1 - ( %dist / %radius );
%random = getRandom(); %random = getRandom();
if( %sourceObject == %targetObject ) if( %sourceObject == %targetObject )
{ {
%flagChance = 1.0; %flagChance = 1.0;
%itemChance = 1.0; %itemChance = 1.0;
} }
else else
{ {
%flagChance = 0.75; %flagChance = 0.75;
%itemChance = 0.75; %itemChance = 0.75;
} }
%probabilityFlag = %flagChance * %percentage; %probabilityFlag = %flagChance * %percentage;
%probabilityItem = %itemChance * %percentage; %probabilityItem = %itemChance * %percentage;
if( %random <= %probabilityFlag ) if( %random <= %probabilityFlag )
Game.applyConcussion( %targetObject ); Game.applyConcussion( %targetObject );
if( %random <= %probabilityItem ) if( %random <= %probabilityItem )
{ {
%player = %targetObject; %player = %targetObject;
%numWeapons = 0; %numWeapons = 0;
// blaster 0 // blaster 0
// plasma 1 // plasma 1
// chain 2 // chain 2
// disc 3 // disc 3
// grenade 4 // grenade 4
// snipe 5 // snipe 5
// elf 6 // elf 6
// mortar 7 // mortar 7
//get our inventory //get our inventory
if( %weaps[0] = %player.getInventory("Blaster") > 0 ) %numWeapons++; if( %weaps[0] = %player.getInventory("Blaster") > 0 ) %numWeapons++;
if( %weaps[1] = %player.getInventory("Plasma") > 0 ) %numWeapons++; if( %weaps[1] = %player.getInventory("Plasma") > 0 ) %numWeapons++;
if( %weaps[2] = %player.getInventory("Chaingun") > 0 ) %numWeapons++; if( %weaps[2] = %player.getInventory("Chaingun") > 0 ) %numWeapons++;
if( %weaps[3] = %player.getInventory("Disc") > 0 ) %numWeapons++; if( %weaps[3] = %player.getInventory("Disc") > 0 ) %numWeapons++;
if( %weaps[4] = %player.getInventory("GrenadeLauncher") > 0 ) %numWeapons++; if( %weaps[4] = %player.getInventory("GrenadeLauncher") > 0 ) %numWeapons++;
if( %weaps[5] = %player.getInventory("SniperRifle") > 0 ) %numWeapons++; if( %weaps[5] = %player.getInventory("SniperRifle") > 0 ) %numWeapons++;
if( %weaps[6] = %player.getInventory("ELFGun") > 0 ) %numWeapons++; if( %weaps[6] = %player.getInventory("ELFGun") > 0 ) %numWeapons++;
if( %weaps[7] = %player.getInventory("Mortar") > 0 ) %numWeapons++; if( %weaps[7] = %player.getInventory("Mortar") > 0 ) %numWeapons++;
%foundWeapon = false; %foundWeapon = false;
%attempts = 0; %attempts = 0;
if( %numWeapons > 0 ) if( %numWeapons > 0 )
{ {
while( !%foundWeapon ) while( !%foundWeapon )
{ {
%rand = mFloor( getRandom() * 8 ); %rand = mFloor( getRandom() * 8 );
if( %weaps[ %rand ] ) if( %weaps[ %rand ] )
{ {
%foundWeapon = true; %foundWeapon = true;
switch ( %rand ) switch ( %rand )
{ {
case 0: case 0:
%player.use("Blaster"); %player.use("Blaster");
case 1: case 1:
%player.use("Plasma"); %player.use("Plasma");
case 2: case 2:
%player.use("Chaingun"); %player.use("Chaingun");
case 3: case 3:
%player.use("Disc"); %player.use("Disc");
case 4: case 4:
%player.use("GrenadeLauncher"); %player.use("GrenadeLauncher");
case 5: case 5:
%player.use("SniperRifle"); %player.use("SniperRifle");
case 6: case 6:
%player.use("ElfGun"); %player.use("ElfGun");
case 7: case 7:
%player.use("Mortar"); %player.use("Mortar");
} }
%image = %player.getMountedImage( $WeaponSlot ); %image = %player.getMountedImage( $WeaponSlot );
%player.throw( %image.item ); %player.throw( %image.item );
%player.client.setWeaponsHudItem( %image.item, 0, 0 ); %player.client.setWeaponsHudItem( %image.item, 0, 0 );
%player.throwPack(); %player.throwPack();
} }
else else
{ {
%attempts++; %attempts++;
if( %attempts > 10 ) if( %attempts > 10 )
%foundWeapon = true; %foundWeapon = true;
} }
} }
} }
else else
{ {
%targetObject.throwPack(); %targetObject.throwPack();
%targetObject.throwWeapon(); %targetObject.throwWeapon();
} }
} }
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -3000,7 +3000,7 @@ function playPain( %obj )
%client = %obj.client; %client = %obj.client;
%random = getRandom(1) + 1; %random = getRandom(1) + 1;
%desc = AudioClosest3d; %desc = AudioClosest3d;
playTargetAudio( %client.target, $PainCry[%random], %desc, false); playTargetAudio( %client.target, $PainCry[%random], %desc, false);
} }
@ -3050,8 +3050,8 @@ function Player::pickup(%this,%obj,%amount)
%this.getMountedImage($BackpackSlot) != 0) %this.getMountedImage($BackpackSlot) != 0)
return 0; return 0;
// don't pick up a weapon (other than targeting laser) if player's at maxWeapons // don't pick up a weapon (other than targeting laser) if player's at maxWeapons
else if(%data.className $= Weapon else if(%data.className $= Weapon
&& %data.getName() !$= "TargetingLaser" // Special case && %data.getName() !$= "TargetingLaser" // Special case
&& %this.weaponCount >= %this.getDatablock().maxWeapons) && %this.weaponCount >= %this.getDatablock().maxWeapons)
return 0; return 0;
// don't allow players to throw large packs at pilots (thanks Wizard) // don't allow players to throw large packs at pilots (thanks Wizard)
@ -3067,7 +3067,7 @@ function Player::use( %this,%data )
return false; return false;
// Convert the word "Backpack" to whatever is in the backpack slot. // Convert the word "Backpack" to whatever is in the backpack slot.
if ( %data $= "Backpack" ) if ( %data $= "Backpack" )
{ {
if ( %this.inStation ) if ( %this.inStation )
return false; return false;
@ -3082,17 +3082,17 @@ function Player::use( %this,%data )
messageClient( %this.client, 'MsgCantUsePack', '\c2You can\'t use your pack while in a weaponry position.~wfx/misc/misc.error.wav' ); messageClient( %this.client, 'MsgCantUsePack', '\c2You can\'t use your pack while in a weaponry position.~wfx/misc/misc.error.wav' );
return( false ); return( false );
} }
%image = %this.getMountedImage( $BackpackSlot ); %image = %this.getMountedImage( $BackpackSlot );
if ( %image ) if ( %image )
%data = %image.item; %data = %image.item;
} }
// Can't use some items when piloting or your a weapon operator // Can't use some items when piloting or your a weapon operator
if ( %this.isPilot() || %this.isWeaponOperator() ) if ( %this.isPilot() || %this.isWeaponOperator() )
if ( %data.getName() !$= "RepairKit" ) if ( %data.getName() !$= "RepairKit" )
return false; return false;
return ShapeBase::use( %this, %data ); return ShapeBase::use( %this, %data );
} }
@ -3125,13 +3125,13 @@ function Player::isWeaponOperator(%this)
} }
return( false ); return( false );
} }
function Player::liquidDamage(%obj, %data, %damageAmount, %damageType) function Player::liquidDamage(%obj, %data, %damageAmount, %damageType)
{ {
if(%obj.getState() !$= "Dead") if(%obj.getState() !$= "Dead")
{ {
%data.damageObject(%obj, 0, "0 0 0", %damageAmount, %damageType); %data.damageObject(%obj, 0, "0 0 0", %damageAmount, %damageType);
%obj.lDamageSchedule = %obj.schedule(50, "liquidDamage", %data, %damageAmount, %damageType); %obj.lDamageSchedule = %obj.schedule(50, "liquidDamage", %data, %damageAmount, %damageType);
} }
else else
@ -3160,7 +3160,7 @@ function Armor::onEnterLiquid(%data, %obj, %coverage, %type)
case 5: case 5:
//Hot Lava //Hot Lava
%obj.liquidDamage(%data, $DamageHotLava, $DamageType::Lava); %obj.liquidDamage(%data, $DamageHotLava, $DamageType::Lava);
case 6: case 6:
//Crusty Lava //Crusty Lava
%obj.liquidDamage(%data, $DamageCrustyLava, $DamageType::Lava); %obj.liquidDamage(%data, $DamageCrustyLava, $DamageType::Lava);
case 7: case 7:
@ -3281,46 +3281,46 @@ function playDeathAnimation(%player, %damageLocation, %type)
{ {
%vertPos = firstWord(%damageLocation); %vertPos = firstWord(%damageLocation);
%quadrant = getWord(%damageLocation, 1); %quadrant = getWord(%damageLocation, 1);
//echo("vert Pos: " @ %vertPos); //echo("vert Pos: " @ %vertPos);
//echo("quad: " @ %quadrant); //echo("quad: " @ %quadrant);
if( %type == $DamageType::Explosion || %type == $DamageType::Mortar || %type == $DamageType::Grenade) if( %type == $DamageType::Explosion || %type == $DamageType::Mortar || %type == $DamageType::Grenade)
{ {
if(%quadrant $= "front_left" || %quadrant $= "front_right") if(%quadrant $= "front_left" || %quadrant $= "front_right")
%curDie = $PlayerDeathAnim::ExplosionBlowBack; %curDie = $PlayerDeathAnim::ExplosionBlowBack;
else else
%curDie = $PlayerDeathAnim::TorsoBackFallForward; %curDie = $PlayerDeathAnim::TorsoBackFallForward;
} }
else if(%vertPos $= "head") else if(%vertPos $= "head")
{ {
if(%quadrant $= "front_left" || %quadrant $= "front_right" ) if(%quadrant $= "front_left" || %quadrant $= "front_right" )
%curDie = $PlayerDeathAnim::HeadFrontDirect; %curDie = $PlayerDeathAnim::HeadFrontDirect;
else else
%curDie = $PlayerDeathAnim::HeadBackFallForward; %curDie = $PlayerDeathAnim::HeadBackFallForward;
} }
else if(%vertPos $= "torso") else if(%vertPos $= "torso")
{ {
if(%quadrant $= "front_left" ) if(%quadrant $= "front_left" )
%curDie = $PlayerDeathAnim::TorsoLeftSpinDeath; %curDie = $PlayerDeathAnim::TorsoLeftSpinDeath;
else if(%quadrant $= "front_right") else if(%quadrant $= "front_right")
%curDie = $PlayerDeathAnim::TorsoRightSpinDeath; %curDie = $PlayerDeathAnim::TorsoRightSpinDeath;
else if(%quadrant $= "back_left" ) else if(%quadrant $= "back_left" )
%curDie = $PlayerDeathAnim::TorsoBackFallForward; %curDie = $PlayerDeathAnim::TorsoBackFallForward;
else if(%quadrant $= "back_right") else if(%quadrant $= "back_right")
%curDie = $PlayerDeathAnim::TorsoBackFallForward; %curDie = $PlayerDeathAnim::TorsoBackFallForward;
} }
else if (%vertPos $= "legs") else if (%vertPos $= "legs")
{ {
if(%quadrant $= "front_left" || %quadrant $= "back_left") if(%quadrant $= "front_left" || %quadrant $= "back_left")
%curDie = $PlayerDeathAnim::LegsLeftGimp; %curDie = $PlayerDeathAnim::LegsLeftGimp;
if(%quadrant $= "front_right" || %quadrant $= "back_right") if(%quadrant $= "front_right" || %quadrant $= "back_right")
%curDie = $PlayerDeathAnim::LegsRightGimp; %curDie = $PlayerDeathAnim::LegsRightGimp;
} }
if(%curDie $= "" || %curDie < 1 || %curDie > 11) if(%curDie $= "" || %curDie < 1 || %curDie > 11)
%curDie = 1; %curDie = 1;
%player.setActionThread("Death" @ %curDie); %player.setActionThread("Death" @ %curDie);
} }