mirror of
https://github.com/Jusctsch5/ironsphererpg.git
synced 2026-01-19 19:44:45 +00:00
Taking everything obtained from http://ironsphererpg2.webs.com/ and dumping it in a git repo
1239 lines
34 KiB
C#
1239 lines
34 KiB
C#
// Load dts shapes and merge animations (moved to top of player.cs for testing)
|
|
exec("shapes/base_male.cs");
|
|
//exec("shapes/light_male.cs");
|
|
exec("shapes/mino.cs");
|
|
//exec("shapes/fish.cs"); damn fish.
|
|
//rpg's default armor for now
|
|
datablock PlayerData(MaleHumanArmor) : LightPlayerDamageProfile
|
|
{
|
|
emap = true;
|
|
|
|
className = Armor;
|
|
shapeFile = "base_male.dts";
|
|
|
|
cameraMaxDist = 3;
|
|
computeCRC = false;
|
|
|
|
canObserve = true;
|
|
cmdCategory = "Clients";
|
|
cmdIcon = CMDPlayerIcon;
|
|
cmdMiniIconName = "commander/MiniIcons/com_player_grey";
|
|
|
|
hudImageNameFriendly[0] = "";
|
|
hudImageNameEnemy[0] = "";
|
|
hudRenderModulated[0] = true;
|
|
hudRenderAlways[0] = true;
|
|
|
|
hudImageNameFriendly[1] = "";
|
|
hudImageNameEnemy[1] = "";
|
|
hudRenderModulated[1] = true;
|
|
hudRenderAlways[1] = true;
|
|
hudRenderCenter[1] = true;
|
|
hudRenderDistance[1] = true;
|
|
|
|
hudImageNameFriendly[2] = "";
|
|
hudImageNameEnemy[2] = "";
|
|
hudRenderModulated[2] = true;
|
|
hudRenderAlways[2] = true;
|
|
hudRenderCenter[2] = true;
|
|
hudRenderDistance[2] = true;
|
|
|
|
cameraDefaultFov = 90.0;
|
|
cameraMinFov = 5.0;
|
|
cameraMaxFov = 120.0;
|
|
|
|
debrisShapeName = "debris_player.dts";
|
|
debris = playerDebris;
|
|
|
|
aiAvoidThis = true;
|
|
|
|
minLookAngle = -1.4;
|
|
maxLookAngle = 1.4;
|
|
maxFreelookAngle = 3.0;
|
|
|
|
mass = 80;
|
|
drag = 0.3;
|
|
maxdrag = 0.4;
|
|
density = 10;
|
|
maxDamage = 1.0;
|
|
maxEnergy = 100;
|
|
repairRate = 0.0033;
|
|
energyPerDamagePoint = 75.0; // shield energy required to block one point of damage
|
|
|
|
rechargeRate = 0.01;
|
|
jetForce = 1.0;
|
|
underwaterJetForce = 26.21 * 100 * 1.5;//swiming?
|
|
underwaterVertJetFactor = 10000.0;
|
|
jetEnergyDrain = 0.0;
|
|
underwaterJetEnergyDrain = 0.06;
|
|
minJetEnergy = 1.0;
|
|
maxJetHorizontalPercentage = 10.0;
|
|
|
|
runForce = 48 * 120 *2;
|
|
runEnergyDrain = 0.005;
|
|
minRunEnergy = 0.0;
|
|
maxForwardSpeed = 10;
|
|
maxBackwardSpeed = 9;
|
|
maxSideSpeed = 9;
|
|
|
|
maxUnderwaterForwardSpeed = 6;
|
|
maxUnderwaterBackwardSpeed = 5.4;
|
|
maxUnderwaterSideSpeed = 5.4;
|
|
|
|
jumpForce = 6 * 90;
|
|
jumpEnergyDrain = 0;
|
|
minJumpEnergy = 0;
|
|
jumpDelay = 0;
|
|
|
|
recoverDelay = 9;
|
|
recoverRunForceScale = 0.1;
|
|
|
|
minImpactSpeed = 30;
|
|
speedDamageScale = 0.02;
|
|
|
|
//jetSound = none;
|
|
//wetJetSound = none;
|
|
//jetEmitter = none;
|
|
|
|
boundingBox = "1.2 1.2 2.3";
|
|
pickupRadius = 0.75;
|
|
|
|
// damage location details
|
|
boxNormalHeadPercentage = 0.83;
|
|
boxNormalTorsoPercentage = 0.49;
|
|
boxHeadLeftPercentage = 0;
|
|
boxHeadRightPercentage = 1;
|
|
boxHeadBackPercentage = 0;
|
|
boxHeadFrontPercentage = 1;
|
|
|
|
//Foot Prints
|
|
decalData = LightMaleFootprint;
|
|
decalOffset = 0.25;
|
|
|
|
footPuffEmitter = LightPuffEmitter;
|
|
footPuffNumParts = 15;
|
|
footPuffRadius = 0.20;
|
|
|
|
//dustEmitter = LiftoffDustEmitter;
|
|
|
|
splash = PlayerSplash;
|
|
splashVelocity = 4.0;
|
|
splashAngle = 67.0;
|
|
splashFreqMod = 300.0;
|
|
splashVelEpsilon = 0.60;
|
|
bubbleEmitTime = 0.4;
|
|
splashEmitter[0] = PlayerFoamDropletsEmitter;
|
|
splashEmitter[1] = PlayerFoamEmitter;
|
|
splashEmitter[2] = PlayerBubbleEmitter;
|
|
mediumSplashSoundVelocity = 10.0;
|
|
hardSplashSoundVelocity = 20.0;
|
|
exitSplashSoundVelocity = 5.0;
|
|
|
|
// Controls over slope of runnable/jumpable surfaces
|
|
runSurfaceAngle = 60;
|
|
jumpSurfaceAngle = 60;
|
|
|
|
minJumpSpeed = 20;
|
|
maxJumpSpeed = 30;
|
|
|
|
maxJetForwardSpeed = 30;
|
|
horizMaxSpeed = 680;
|
|
horizResistSpeed = 33;
|
|
horizResistFactor = 0.35;
|
|
|
|
upMaxSpeed = 8000;
|
|
upResistSpeed = 25;
|
|
upResistFactor = 0.3;
|
|
|
|
// heat inc'ers and dec'ers
|
|
heatDecayPerSec = 1.0 / 30.0; // takes 30 seconds to clear heat sig.
|
|
heatIncreasePerSec = 0.1; // takes 30.0 seconds of constant jet to get full heat sig.
|
|
|
|
footstepSplashHeight = 0.35;
|
|
//Footstep Sounds
|
|
LFootSoftSound = LFootLightSoftSound;
|
|
RFootSoftSound = RFootLightSoftSound;
|
|
LFootHardSound = LFootLightHardSound;
|
|
RFootHardSound = RFootLightHardSound;
|
|
LFootMetalSound = LFootLightMetalSound;
|
|
RFootMetalSound = RFootLightMetalSound;
|
|
LFootSnowSound = LFootLightSnowSound;
|
|
RFootSnowSound = RFootLightSnowSound;
|
|
LFootShallowSound = LFootLightShallowSplashSound;
|
|
RFootShallowSound = RFootLightShallowSplashSound;
|
|
LFootWadingSound = LFootLightWadingSound;
|
|
RFootWadingSound = RFootLightWadingSound;
|
|
LFootUnderwaterSound = LFootLightUnderwaterSound;
|
|
RFootUnderwaterSound = RFootLightUnderwaterSound;
|
|
LFootBubblesSound = LFootLightBubblesSound;
|
|
RFootBubblesSound = RFootLightBubblesSound;
|
|
movingBubblesSound = ArmorMoveBubblesSound;
|
|
waterBreathSound = WaterBreathMaleSound;
|
|
|
|
impactSoftSound = ImpactLightSoftSound;
|
|
impactHardSound = ImpactLightHardSound;
|
|
impactMetalSound = ImpactLightMetalSound;
|
|
impactSnowSound = ImpactLightSnowSound;
|
|
|
|
skiSoftSound = SkiAllSoftSound;
|
|
skiHardSound = SkiAllHardSound;
|
|
skiMetalSound = SkiAllMetalSound;
|
|
skiSnowSound = SkiAllSnowSound;
|
|
|
|
impactWaterEasy = ImpactLightWaterEasySound;
|
|
impactWaterMedium = ImpactLightWaterMediumSound;
|
|
impactWaterHard = ImpactLightWaterHardSound;
|
|
|
|
groundImpactMinSpeed = 10.0;
|
|
groundImpactShakeFreq = "4.0 4.0 4.0";
|
|
groundImpactShakeAmp = "1.0 1.0 1.0";
|
|
groundImpactShakeDuration = 0.8;
|
|
groundImpactShakeFalloff = 10.0;
|
|
|
|
exitingWater = ExitingWaterLightSound;
|
|
|
|
observeParameters = "0.5 4.5 4.5";
|
|
};
|
|
|
|
datablock PlayerData(DeathKnightArmor) : HeavyMaleHumanArmor
|
|
{
|
|
emap = true;
|
|
|
|
shapeFile = "Heavy_male.dts";
|
|
|
|
mass = 180;
|
|
drag = 1.0;
|
|
maxdrag = 1.5;
|
|
density = 10;
|
|
maxDamage = 1.0;
|
|
maxEnergy = 100;
|
|
repairRate = 0.0033;
|
|
energyPerDamagePoint = 75.0; // shield energy required to block one point of damage
|
|
|
|
rechargeRate = 0.256;
|
|
jetForce = 100 * 180;
|
|
underwaterJetForce = 100 * 180 * 2.0;
|
|
underwaterVertJetFactor = 1.5;
|
|
jetEnergyDrain = 0.0;
|
|
underwaterJetEnergyDrain = 0.0;
|
|
minJetEnergy = 1;
|
|
maxJetHorizontalPercentage = 1.0;
|
|
|
|
runForce = 100 * 180;
|
|
runEnergyDrain = 0;
|
|
minRunEnergy = 0;
|
|
maxForwardSpeed = 100;
|
|
maxBackwardSpeed = 100;
|
|
maxSideSpeed = 100;
|
|
|
|
maxUnderwaterForwardSpeed = 100;
|
|
maxUnderwaterBackwardSpeed = 100;
|
|
maxUnderwaterSideSpeed = 100;
|
|
|
|
recoverDelay = 1;
|
|
recoverRunForceScale = 1.2;
|
|
|
|
jumpForce = 20 * 180;
|
|
jumpEnergyDrain = 0;
|
|
minJumpEnergy = 0;
|
|
jumpDelay = 0;
|
|
|
|
// heat inc'ers and dec'ers
|
|
heatDecayPerSec = 1.0 / 30.0; // takes 30 seconds to clear heat sig.
|
|
heatIncreasePerSec = 0.0; // takes 3.0 seconds of constant jet to get full heat sig.
|
|
|
|
// Controls over slope of runnable/jumpable surfaces
|
|
runSurfaceAngle = 90;
|
|
jumpSurfaceAngle = 90;
|
|
|
|
minJumpSpeed = 20;
|
|
maxJumpSpeed = 30;
|
|
|
|
horizMaxSpeed = 80;
|
|
horizResistSpeed = 20;
|
|
horizResistFactor = 0.3;
|
|
maxJetForwardSpeed = 180;
|
|
|
|
upMaxSpeed = 40;
|
|
upResistSpeed = 35;
|
|
upResistFactor = 0.15;
|
|
|
|
minImpactSpeed = 45;
|
|
speedDamageScale = 0.006;
|
|
|
|
//jetSound = none;
|
|
//wetJetSound = none;
|
|
//jetEmitter = none;
|
|
|
|
boundingBox = "1.4 1.4 2.4";
|
|
|
|
splash = PlayerSplash;
|
|
splashVelocity = 4.0;
|
|
splashAngle = 67.0;
|
|
splashFreqMod = 300.0;
|
|
splashVelEpsilon = 0.60;
|
|
bubbleEmitTime = 0.4;
|
|
splashEmitter[0] = PlayerFoamDropletsEmitter;
|
|
splashEmitter[1] = PlayerFoamEmitter;
|
|
splashEmitter[2] = PlayerBubbleEmitter;
|
|
mediumSplashSoundVelocity = 10.0;
|
|
hardSplashSoundVelocity = 20.0;
|
|
exitSplashSoundVelocity = 5.0;
|
|
|
|
observeParameters = "2.5 6.5 6.5";
|
|
};
|
|
datablock PlayerData(ElementalArmor) : LightPlayerDamageProfile
|
|
{
|
|
emap = true;
|
|
|
|
className = Armor;
|
|
shapeFile = "base_male.dts";
|
|
|
|
cameraMaxDist = 3;
|
|
computeCRC = false;
|
|
|
|
canObserve = true;
|
|
cmdCategory = "Clients";
|
|
cmdIcon = CMDPlayerIcon;
|
|
cmdMiniIconName = "commander/MiniIcons/com_player_grey";
|
|
|
|
hudImageNameFriendly[0] = "";
|
|
hudImageNameEnemy[0] = "";
|
|
hudRenderModulated[0] = true;
|
|
hudRenderAlways[0] = true;
|
|
|
|
hudImageNameFriendly[1] = "";
|
|
hudImageNameEnemy[1] = "";
|
|
hudRenderModulated[1] = true;
|
|
hudRenderAlways[1] = true;
|
|
hudRenderCenter[1] = true;
|
|
hudRenderDistance[1] = true;
|
|
|
|
hudImageNameFriendly[2] = "";
|
|
hudImageNameEnemy[2] = "";
|
|
hudRenderModulated[2] = true;
|
|
hudRenderAlways[2] = true;
|
|
hudRenderCenter[2] = true;
|
|
hudRenderDistance[2] = true;
|
|
|
|
cameraDefaultFov = 90.0;
|
|
cameraMinFov = 5.0;
|
|
cameraMaxFov = 120.0;
|
|
|
|
debrisShapeName = "debris_player.dts";
|
|
debris = playerDebris;
|
|
|
|
aiAvoidThis = true;
|
|
|
|
minLookAngle = -1.4;
|
|
maxLookAngle = 1.4;
|
|
maxFreelookAngle = 3.0;
|
|
|
|
mass = 90;
|
|
drag = 0.3;
|
|
maxdrag = 0.4;
|
|
density = 10;
|
|
maxDamage = 1.0;
|
|
maxEnergy = 100;
|
|
repairRate = 0.0033;
|
|
energyPerDamagePoint = 75.0; // shield energy required to block one point of damage
|
|
|
|
rechargeRate = 7.0;
|
|
jetForce = 150.0;
|
|
underwaterJetForce = 26.21 * 100 * 1.5;//swiming?
|
|
underwaterVertJetFactor = 10000.0;
|
|
jetEnergyDrain = 0.0;
|
|
underwaterJetEnergyDrain = 0.06;
|
|
minJetEnergy = 1.0;
|
|
maxJetHorizontalPercentage = 10.0;
|
|
|
|
runForce = 55 * 90;
|
|
runEnergyDrain = 0.005;
|
|
minRunEnergy = 0.0;
|
|
maxForwardSpeed = 25;
|
|
maxBackwardSpeed = 15;
|
|
maxSideSpeed = 20;
|
|
|
|
maxUnderwaterForwardSpeed = 6;
|
|
maxUnderwaterBackwardSpeed = 5.4;
|
|
maxUnderwaterSideSpeed = 5.4;
|
|
|
|
jumpForce = 6 * 90;
|
|
jumpEnergyDrain = 1;
|
|
minJumpEnergy = 1;
|
|
jumpDelay = 0;
|
|
|
|
recoverDelay = 9;
|
|
recoverRunForceScale = 1.2;
|
|
|
|
minImpactSpeed = 45;
|
|
speedDamageScale = 0.004;
|
|
|
|
//jetSound = none;
|
|
//wetJetSound = none;
|
|
//jetEmitter = none;
|
|
|
|
boundingBox = "1.2 1.2 2.3";
|
|
pickupRadius = 0.75;
|
|
|
|
// damage location details
|
|
boxNormalHeadPercentage = 0.83;
|
|
boxNormalTorsoPercentage = 0.49;
|
|
boxHeadLeftPercentage = 0;
|
|
boxHeadRightPercentage = 1;
|
|
boxHeadBackPercentage = 0;
|
|
boxHeadFrontPercentage = 1;
|
|
|
|
//Foot Prints
|
|
decalData = LightMaleFootprint;
|
|
decalOffset = 0.25;
|
|
|
|
footPuffEmitter = LightPuffEmitter;
|
|
footPuffNumParts = 15;
|
|
footPuffRadius = 0.20;
|
|
|
|
//dustEmitter = LiftoffDustEmitter;
|
|
|
|
splash = PlayerSplash;
|
|
splashVelocity = 4.0;
|
|
splashAngle = 67.0;
|
|
splashFreqMod = 300.0;
|
|
splashVelEpsilon = 0.60;
|
|
bubbleEmitTime = 0.4;
|
|
splashEmitter[0] = PlayerFoamDropletsEmitter;
|
|
splashEmitter[1] = PlayerFoamEmitter;
|
|
splashEmitter[2] = PlayerBubbleEmitter;
|
|
mediumSplashSoundVelocity = 10.0;
|
|
hardSplashSoundVelocity = 20.0;
|
|
exitSplashSoundVelocity = 5.0;
|
|
|
|
// Controls over slope of runnable/jumpable surfaces
|
|
runSurfaceAngle = 90;
|
|
jumpSurfaceAngle = 90;
|
|
|
|
minJumpSpeed = 20;
|
|
maxJumpSpeed = 30;
|
|
|
|
maxJetForwardSpeed = 30;
|
|
horizMaxSpeed = 680;
|
|
horizResistSpeed = 33;
|
|
horizResistFactor = 0.35;
|
|
|
|
upMaxSpeed = 8000;
|
|
upResistSpeed = 25;
|
|
upResistFactor = 0.3;
|
|
|
|
// heat inc'ers and dec'ers
|
|
heatDecayPerSec = 1.0 / 30.0; // takes 3 seconds to clear heat sig.
|
|
heatIncreasePerSec = 0.0; // takes 3.0 seconds of constant jet to get full heat sig.
|
|
|
|
footstepSplashHeight = 0.35;
|
|
//Footstep Sounds
|
|
LFootSoftSound = LFootLightSoftSound;
|
|
RFootSoftSound = RFootLightSoftSound;
|
|
LFootHardSound = LFootLightHardSound;
|
|
RFootHardSound = RFootLightHardSound;
|
|
LFootMetalSound = LFootLightMetalSound;
|
|
RFootMetalSound = RFootLightMetalSound;
|
|
LFootSnowSound = LFootLightSnowSound;
|
|
RFootSnowSound = RFootLightSnowSound;
|
|
LFootShallowSound = LFootLightShallowSplashSound;
|
|
RFootShallowSound = RFootLightShallowSplashSound;
|
|
LFootWadingSound = LFootLightWadingSound;
|
|
RFootWadingSound = RFootLightWadingSound;
|
|
LFootUnderwaterSound = LFootLightUnderwaterSound;
|
|
RFootUnderwaterSound = RFootLightUnderwaterSound;
|
|
LFootBubblesSound = LFootLightBubblesSound;
|
|
RFootBubblesSound = RFootLightBubblesSound;
|
|
movingBubblesSound = ArmorMoveBubblesSound;
|
|
waterBreathSound = WaterBreathMaleSound;
|
|
|
|
impactSoftSound = ImpactLightSoftSound;
|
|
impactHardSound = ImpactLightHardSound;
|
|
impactMetalSound = ImpactLightMetalSound;
|
|
impactSnowSound = ImpactLightSnowSound;
|
|
|
|
skiSoftSound = SkiAllSoftSound;
|
|
skiHardSound = SkiAllHardSound;
|
|
skiMetalSound = SkiAllMetalSound;
|
|
skiSnowSound = SkiAllSnowSound;
|
|
|
|
impactWaterEasy = ImpactLightWaterEasySound;
|
|
impactWaterMedium = ImpactLightWaterMediumSound;
|
|
impactWaterHard = ImpactLightWaterHardSound;
|
|
|
|
groundImpactMinSpeed = 10.0;
|
|
groundImpactShakeFreq = "4.0 4.0 4.0";
|
|
groundImpactShakeAmp = "1.0 1.0 1.0";
|
|
groundImpactShakeDuration = 0.8;
|
|
groundImpactShakeFalloff = 10.0;
|
|
|
|
exitingWater = ExitingWaterLightSound;
|
|
|
|
observeParameters = "0.5 4.5 4.5";
|
|
};
|
|
datablock PlayerData(ElfArmor) : LightPlayerDamageProfile
|
|
{
|
|
emap = true;
|
|
|
|
className = Armor;
|
|
shapeFile = "base_male.dts";
|
|
|
|
cameraMaxDist = 3;
|
|
computeCRC = false;
|
|
|
|
canObserve = true;
|
|
cmdCategory = "Clients";
|
|
cmdIcon = CMDPlayerIcon;
|
|
cmdMiniIconName = "commander/MiniIcons/com_player_grey";
|
|
|
|
hudImageNameFriendly[0] = "";
|
|
hudImageNameEnemy[0] = "";
|
|
hudRenderModulated[0] = true;
|
|
hudRenderAlways[0] = true;
|
|
|
|
hudImageNameFriendly[1] = "";
|
|
hudImageNameEnemy[1] = "";
|
|
hudRenderModulated[1] = true;
|
|
hudRenderAlways[1] = true;
|
|
hudRenderCenter[1] = true;
|
|
hudRenderDistance[1] = true;
|
|
|
|
hudImageNameFriendly[2] = "";
|
|
hudImageNameEnemy[2] = "";
|
|
hudRenderModulated[2] = true;
|
|
hudRenderAlways[2] = true;
|
|
hudRenderCenter[2] = true;
|
|
hudRenderDistance[2] = true;
|
|
|
|
cameraDefaultFov = 90.0;
|
|
cameraMinFov = 5.0;
|
|
cameraMaxFov = 120.0;
|
|
|
|
debrisShapeName = "debris_player.dts";
|
|
debris = playerDebris;
|
|
|
|
aiAvoidThis = true;
|
|
|
|
minLookAngle = -1.4;
|
|
maxLookAngle = 1.4;
|
|
maxFreelookAngle = 3.0;
|
|
|
|
mass = 90;
|
|
drag = 0.3;
|
|
maxdrag = 0.4;
|
|
density = 10;
|
|
maxDamage = 1.0;
|
|
maxEnergy = 100;
|
|
repairRate = 0.0033;
|
|
energyPerDamagePoint = 75.0; // shield energy required to block one point of damage
|
|
|
|
rechargeRate = 0.2;
|
|
jetForce = 0.0;
|
|
underwaterJetForce = 26.21 * 100 * 1.5;//swiming?
|
|
underwaterVertJetFactor = 10000.0;
|
|
jetEnergyDrain = 0.0;
|
|
underwaterJetEnergyDrain = 0.06;
|
|
minJetEnergy = 1.0;
|
|
maxJetHorizontalPercentage = 10.0;
|
|
|
|
runForce = 50 * 90;
|
|
runEnergyDrain = 0.005;
|
|
minRunEnergy = 0.0;
|
|
maxForwardSpeed = 13;
|
|
maxBackwardSpeed = 11;
|
|
maxSideSpeed = 11;
|
|
|
|
maxUnderwaterForwardSpeed = 6;
|
|
maxUnderwaterBackwardSpeed = 5.4;
|
|
maxUnderwaterSideSpeed = 5.4;
|
|
|
|
jumpForce = 6 * 120;
|
|
jumpEnergyDrain = 0;
|
|
minJumpEnergy = 1;
|
|
jumpDelay = 0;
|
|
|
|
recoverDelay = 9;
|
|
recoverRunForceScale = 1.2;
|
|
|
|
minImpactSpeed = 45;
|
|
speedDamageScale = 0.004;
|
|
|
|
|
|
|
|
//jetSound = none;
|
|
//wetJetSound = none;
|
|
//jetEmitter = none;
|
|
|
|
boundingBox = "1.2 1.2 2.3";
|
|
pickupRadius = 0.75;
|
|
|
|
// damage location details
|
|
boxNormalHeadPercentage = 0.83;
|
|
boxNormalTorsoPercentage = 0.49;
|
|
boxHeadLeftPercentage = 0;
|
|
boxHeadRightPercentage = 1;
|
|
boxHeadBackPercentage = 0;
|
|
boxHeadFrontPercentage = 1;
|
|
|
|
//Foot Prints
|
|
decalData = LightMaleFootprint;
|
|
decalOffset = 0.25;
|
|
|
|
footPuffEmitter = LightPuffEmitter;
|
|
footPuffNumParts = 15;
|
|
footPuffRadius = 0.20;
|
|
|
|
//dustEmitter = LiftoffDustEmitter;
|
|
|
|
splash = PlayerSplash;
|
|
splashVelocity = 4.0;
|
|
splashAngle = 67.0;
|
|
splashFreqMod = 300.0;
|
|
splashVelEpsilon = 0.60;
|
|
bubbleEmitTime = 0.4;
|
|
splashEmitter[0] = PlayerFoamDropletsEmitter;
|
|
splashEmitter[1] = PlayerFoamEmitter;
|
|
splashEmitter[2] = PlayerBubbleEmitter;
|
|
mediumSplashSoundVelocity = 10.0;
|
|
hardSplashSoundVelocity = 20.0;
|
|
exitSplashSoundVelocity = 5.0;
|
|
|
|
// Controls over slope of runnable/jumpable surfaces
|
|
runSurfaceAngle = 85;
|
|
jumpSurfaceAngle = 80;
|
|
|
|
minJumpSpeed = 20;
|
|
maxJumpSpeed = 30;
|
|
|
|
maxJetForwardSpeed = 30;
|
|
horizMaxSpeed = 680;
|
|
horizResistSpeed = 33;
|
|
horizResistFactor = 0.35;
|
|
|
|
upMaxSpeed = 8000;
|
|
upResistSpeed = 25;
|
|
upResistFactor = 0.3;
|
|
|
|
// heat inc'ers and dec'ers
|
|
heatDecayPerSec = 1.0 / 30.0; // takes 3 seconds to clear heat sig.
|
|
heatIncreasePerSec = 0.0; // takes 3.0 seconds of constant jet to get full heat sig.
|
|
|
|
footstepSplashHeight = 0.35;
|
|
//Footstep Sounds
|
|
LFootSoftSound = LFootLightSoftSound;
|
|
RFootSoftSound = RFootLightSoftSound;
|
|
LFootHardSound = LFootLightHardSound;
|
|
RFootHardSound = RFootLightHardSound;
|
|
LFootMetalSound = LFootLightMetalSound;
|
|
RFootMetalSound = RFootLightMetalSound;
|
|
LFootSnowSound = LFootLightSnowSound;
|
|
RFootSnowSound = RFootLightSnowSound;
|
|
LFootShallowSound = LFootLightShallowSplashSound;
|
|
RFootShallowSound = RFootLightShallowSplashSound;
|
|
LFootWadingSound = LFootLightWadingSound;
|
|
RFootWadingSound = RFootLightWadingSound;
|
|
LFootUnderwaterSound = LFootLightUnderwaterSound;
|
|
RFootUnderwaterSound = RFootLightUnderwaterSound;
|
|
LFootBubblesSound = LFootLightBubblesSound;
|
|
RFootBubblesSound = RFootLightBubblesSound;
|
|
movingBubblesSound = ArmorMoveBubblesSound;
|
|
waterBreathSound = WaterBreathMaleSound;
|
|
|
|
impactSoftSound = ImpactLightSoftSound;
|
|
impactHardSound = ImpactLightHardSound;
|
|
impactMetalSound = ImpactLightMetalSound;
|
|
impactSnowSound = ImpactLightSnowSound;
|
|
|
|
skiSoftSound = SkiAllSoftSound;
|
|
skiHardSound = SkiAllHardSound;
|
|
skiMetalSound = SkiAllMetalSound;
|
|
skiSnowSound = SkiAllSnowSound;
|
|
|
|
impactWaterEasy = ImpactLightWaterEasySound;
|
|
impactWaterMedium = ImpactLightWaterMediumSound;
|
|
impactWaterHard = ImpactLightWaterHardSound;
|
|
|
|
groundImpactMinSpeed = 10.0;
|
|
groundImpactShakeFreq = "4.0 4.0 4.0";
|
|
groundImpactShakeAmp = "1.0 1.0 1.0";
|
|
groundImpactShakeDuration = 0.8;
|
|
groundImpactShakeFalloff = 10.0;
|
|
|
|
exitingWater = ExitingWaterLightSound;
|
|
|
|
observeParameters = "0.5 4.5 4.5";
|
|
};
|
|
|
|
datablock PlayerData(MonsterArmor) : MaleHumanArmor
|
|
{
|
|
emap = true;
|
|
|
|
className = Armor;
|
|
shapeFile = "bioderm_light.dts";
|
|
cameraMaxDist = 3;
|
|
computeCRC = false;
|
|
|
|
rechargeRate = 5.01;
|
|
jetForce = 1.0;
|
|
underwaterJetForce = 26.21 * 100 * 1.5;//swiming?
|
|
underwaterVertJetFactor = 10000.0;
|
|
jetEnergyDrain = 0.0;
|
|
underwaterJetEnergyDrain = 0.06;
|
|
minJetEnergy = 1.0;
|
|
maxJetHorizontalPercentage = 50.0;
|
|
|
|
runForce = 48 * 90;
|
|
runEnergyDrain = 0.005;
|
|
minRunEnergy = 0.0;
|
|
maxForwardSpeed = 10;
|
|
maxBackwardSpeed = 9;
|
|
maxSideSpeed = 9;
|
|
|
|
maxUnderwaterForwardSpeed = 60;
|
|
maxUnderwaterBackwardSpeed = 50.4;
|
|
maxUnderwaterSideSpeed = 50.4;
|
|
runSurfaceAngle = 85;
|
|
jumpSurfaceAngle = 80;
|
|
};
|
|
datablock PlayerData(GnollArmor) : MonsterArmor
|
|
{
|
|
emap = true;
|
|
className = Armor;
|
|
};
|
|
datablock PlayerData(MinotaurArmor) : MonsterArmor
|
|
{
|
|
emap = true;
|
|
className = Armor;
|
|
shapeFile = "Mino.dts";
|
|
};
|
|
datablock PlayerData(OrcArmor) : MonsterArmor
|
|
{
|
|
emap = true;
|
|
className = Armor;
|
|
shapeFile = "bioderm_medium.dts";
|
|
};
|
|
datablock PlayerData(OgreArmor) : MonsterArmor
|
|
{
|
|
emap = true;
|
|
className = Armor;
|
|
shapeFile = "bioderm_heavy.dts";
|
|
};
|
|
datablock PlayerData(GoblinArmor) : MonsterArmor
|
|
{
|
|
emap = true;
|
|
className = Armor;
|
|
};
|
|
datablock PlayerData(MaleOrcArmor) : MonsterArmor
|
|
{
|
|
className = Armor;
|
|
shapeFile = "bioderm_light.dts";
|
|
cameraMaxDist = 3;
|
|
computeCRC = false;
|
|
emap = true;
|
|
};
|
|
datablock PlayerData(FishArmor) : LightPlayerDamageProfile
|
|
{
|
|
emap = true;
|
|
|
|
className = Armor;
|
|
shapeFile = "fish.dts";
|
|
|
|
cameraMaxDist = 3;
|
|
computeCRC = false;
|
|
|
|
canObserve = true;
|
|
cmdCategory = "Clients";
|
|
cmdIcon = CMDPlayerIcon;
|
|
cmdMiniIconName = "commander/MiniIcons/com_player_grey";
|
|
|
|
hudImageNameFriendly[0] = "";
|
|
hudImageNameEnemy[0] = "";
|
|
hudRenderModulated[0] = true;
|
|
hudRenderAlways[0] = true;
|
|
|
|
hudImageNameFriendly[1] = "";
|
|
hudImageNameEnemy[1] = "";
|
|
hudRenderModulated[1] = true;
|
|
hudRenderAlways[1] = true;
|
|
hudRenderCenter[1] = true;
|
|
hudRenderDistance[1] = true;
|
|
|
|
hudImageNameFriendly[2] = "";
|
|
hudImageNameEnemy[2] = "";
|
|
hudRenderModulated[2] = true;
|
|
hudRenderAlways[2] = true;
|
|
hudRenderCenter[2] = true;
|
|
hudRenderDistance[2] = true;
|
|
|
|
cameraDefaultFov = 90.0;
|
|
cameraMinFov = 5.0;
|
|
cameraMaxFov = 120.0;
|
|
|
|
debrisShapeName = "debris_player.dts";
|
|
debris = playerDebris;
|
|
|
|
aiAvoidThis = true;
|
|
|
|
minLookAngle = -1.4;
|
|
maxLookAngle = 1.4;
|
|
maxFreelookAngle = 3.0;
|
|
|
|
mass = 10;
|
|
drag = 0.3;
|
|
maxdrag = 0.4;
|
|
density = 2;
|
|
maxDamage = 1.0;
|
|
maxEnergy = 100;
|
|
repairRate = 0.0033;
|
|
energyPerDamagePoint = 75.0; // shield energy required to block one point of damage
|
|
|
|
rechargeRate = 0.51;
|
|
jetForce = 5.0;
|
|
underwaterJetForce = 26.21 * 100 * 1.5;
|
|
underwaterVertJetFactor = 80.0;
|
|
jetEnergyDrain = 0.0;
|
|
underwaterJetEnergyDrain = 0.01;
|
|
minJetEnergy = 1.0;
|
|
maxJetHorizontalPercentage = 1000.0;
|
|
|
|
runForce = 48 * 90;
|
|
runEnergyDrain = 0.005;
|
|
minRunEnergy = 0.0;
|
|
maxForwardSpeed = 0;
|
|
maxBackwardSpeed = 0;
|
|
maxSideSpeed = 0;
|
|
|
|
maxUnderwaterForwardSpeed = 20;
|
|
maxUnderwaterBackwardSpeed = 15.4;
|
|
maxUnderwaterSideSpeed = 15.4;
|
|
|
|
jumpForce = 100;
|
|
jumpEnergyDrain = 0;
|
|
minJumpEnergy = 1;
|
|
jumpDelay = 1;
|
|
|
|
recoverDelay = 9;
|
|
recoverRunForceScale = 1.2;
|
|
|
|
minImpactSpeed = 45;
|
|
speedDamageScale = 0.004;
|
|
|
|
//jetSound = none;
|
|
//wetJetSound = none;
|
|
//jetEmitter = none;
|
|
|
|
boundingBox = "1.2 1.2 1.3";
|
|
pickupRadius = 0.75;
|
|
|
|
// damage location details
|
|
boxNormalHeadPercentage = 0.83;
|
|
boxNormalTorsoPercentage = 0.49;
|
|
boxHeadLeftPercentage = 0;
|
|
boxHeadRightPercentage = 1;
|
|
boxHeadBackPercentage = 0;
|
|
boxHeadFrontPercentage = 1;
|
|
|
|
//Foot Prints
|
|
decalData = LightMaleFootprint;
|
|
decalOffset = 0.25;
|
|
|
|
footPuffEmitter = LightPuffEmitter;
|
|
footPuffNumParts = 15;
|
|
footPuffRadius = 0.20;
|
|
|
|
dustEmitter = LiftoffDustEmitter;
|
|
|
|
splash = PlayerSplash;
|
|
splashVelocity = 4.0;
|
|
splashAngle = 67.0;
|
|
splashFreqMod = 300.0;
|
|
splashVelEpsilon = 0.60;
|
|
bubbleEmitTime = 0.4;
|
|
splashEmitter[0] = PlayerFoamDropletsEmitter;
|
|
splashEmitter[1] = PlayerFoamEmitter;
|
|
splashEmitter[2] = PlayerBubbleEmitter;
|
|
mediumSplashSoundVelocity = 10.0;
|
|
hardSplashSoundVelocity = 20.0;
|
|
exitSplashSoundVelocity = 5.0;
|
|
|
|
// Controls over slope of runnable/jumpable surfaces
|
|
runSurfaceAngle = 70;
|
|
jumpSurfaceAngle = 80;
|
|
|
|
minJumpSpeed = 20;
|
|
maxJumpSpeed = 30;
|
|
|
|
maxJetForwardSpeed = 30;
|
|
horizMaxSpeed = 68;
|
|
horizResistSpeed = 33;
|
|
horizResistFactor = 0.35;
|
|
|
|
upMaxSpeed = 8000;
|
|
upResistSpeed = 25;
|
|
upResistFactor = 0.3;
|
|
|
|
// heat inc'ers and dec'ers
|
|
heatDecayPerSec = 1.0 / 30.0; // takes 3 seconds to clear heat sig.
|
|
heatIncreasePerSec = 0.0; // takes 3.0 seconds of constant jet to get full heat sig.
|
|
|
|
footstepSplashHeight = 0.35;
|
|
//Footstep Sounds
|
|
LFootSoftSound = LFootLightSoftSound;
|
|
RFootSoftSound = RFootLightSoftSound;
|
|
LFootHardSound = LFootLightHardSound;
|
|
RFootHardSound = RFootLightHardSound;
|
|
LFootMetalSound = LFootLightMetalSound;
|
|
RFootMetalSound = RFootLightMetalSound;
|
|
LFootSnowSound = LFootLightSnowSound;
|
|
RFootSnowSound = RFootLightSnowSound;
|
|
LFootShallowSound = LFootLightShallowSplashSound;
|
|
RFootShallowSound = RFootLightShallowSplashSound;
|
|
LFootWadingSound = LFootLightWadingSound;
|
|
RFootWadingSound = RFootLightWadingSound;
|
|
LFootUnderwaterSound = LFootLightUnderwaterSound;
|
|
RFootUnderwaterSound = RFootLightUnderwaterSound;
|
|
LFootBubblesSound = LFootLightBubblesSound;
|
|
RFootBubblesSound = RFootLightBubblesSound;
|
|
movingBubblesSound = ArmorMoveBubblesSound;
|
|
waterBreathSound = WaterBreathMaleSound;
|
|
|
|
impactSoftSound = ImpactLightSoftSound;
|
|
impactHardSound = ImpactLightHardSound;
|
|
impactMetalSound = ImpactLightMetalSound;
|
|
impactSnowSound = ImpactLightSnowSound;
|
|
|
|
skiSoftSound = SkiAllSoftSound;
|
|
skiHardSound = SkiAllHardSound;
|
|
skiMetalSound = SkiAllMetalSound;
|
|
skiSnowSound = SkiAllSnowSound;
|
|
|
|
impactWaterEasy = ImpactLightWaterEasySound;
|
|
impactWaterMedium = ImpactLightWaterMediumSound;
|
|
impactWaterHard = ImpactLightWaterHardSound;
|
|
|
|
groundImpactMinSpeed = 10.0;
|
|
groundImpactShakeFreq = "4.0 4.0 4.0";
|
|
groundImpactShakeAmp = "1.0 1.0 1.0";
|
|
groundImpactShakeDuration = 0.8;
|
|
groundImpactShakeFalloff = 10.0;
|
|
|
|
exitingWater = ExitingWaterLightSound;
|
|
|
|
observeParameters = "0.5 4.5 4.5";
|
|
};
|
|
|
|
%file = new FileObject();
|
|
%fname = "temp/playerload.cs";//our eval workaround
|
|
//Load the player tree
|
|
%file.openforwrite(%fname);
|
|
for($maxarmor = 0; $maxarmor <= 100; $maxarmor++)
|
|
{
|
|
//time to hack around the game
|
|
|
|
%factor = (100-$maxarmor)/50;
|
|
%file.writeline("datablock PlayerData(MaleHumanArmor" @ $maxarmor @ ") : MaleHumanArmor ");
|
|
%file.writeline("{");
|
|
%file.writeline("runForce = 48 * 90 *" @ %factor @ ";");
|
|
%file.writeline("runEnergyDrain = " @ 0.005 + (1 - %factor) / 1000 @ ";");
|
|
%file.writeline("minRunEnergy = 0.0 ;");
|
|
%file.writeline("maxForwardSpeed = " @ 10 * %factor @ ";");
|
|
%file.writeline("maxBackwardSpeed = " @ 5 * %factor @ ";");
|
|
%file.writeline("maxSideSpeed = " @ 7 * %factor @ ";");
|
|
%file.writeline("jumpForce = " @ 6 * 90 * %factor @ ";");
|
|
%file.writeline("jumpEnergyDrain = " @ 2 - %factor @ ";");
|
|
%file.writeline(" emap = true;");
|
|
%file.writeline("};");
|
|
}
|
|
|
|
//Notes: MaleHumanArmor70 is speed 0
|
|
// MaleHumanArmor20 is normal speed
|
|
// MaleHumanArmor0 is faster than normal.
|
|
%file.close();
|
|
$tmp = "";
|
|
compile(%fname);
|
|
exec(%fname);
|
|
%file.delete();//delete the file object...
|
|
deletefile(%fname);//bye bye temp file, save memory...
|
|
deletefile(%fname @ ".dso");
|
|
function Armor::onCollision(%this,%obj,%col,%forceVehicleNode)
|
|
{
|
|
|
|
if (%obj.getState() $= "Dead")
|
|
return;
|
|
|
|
%dataBlock = %col.getDataBlock();
|
|
%className = %dataBlock.className;
|
|
%client = %obj.client;
|
|
|
|
// player collided with a vehicle?
|
|
%node = -1;
|
|
if (%forceVehicleNode !$= "" || (%className $= WheeledVehicleData || %className $= FlyingVehicleData || %className $= HoverVehicleData) &&
|
|
%obj.mountVehicle && %obj.getState() $= "Move" && %col.getDamageState() !$= "Destroyed") {
|
|
return;
|
|
|
|
}
|
|
else if (%className $= "Armor") {
|
|
|
|
}
|
|
}
|
|
|
|
function Player::onEndSequence(%data, %obj, %thread)
|
|
{
|
|
//echo("%data: " @ %data);
|
|
//echo("%obj: " @ %obj);
|
|
//echo("%thread: " @ %thread);
|
|
}
|
|
function playDeathAnimation(%player, %damageLocation, %type)
|
|
{
|
|
|
|
%player.stopThread(%client.currThread);
|
|
cancel(%client.rootthread);
|
|
%vertPos = firstWord(%damageLocation);
|
|
%quadrant = getWord(%damageLocation, 1);
|
|
|
|
//echo("vert Pos: " @ %vertPos);
|
|
//echo("quad: " @ %quadrant);
|
|
|
|
if( %type == $DamageType::Explosion || %type == $DamageType::Mortar || %type == $DamageType::Grenade)
|
|
{
|
|
if(%quadrant $= "front_left" || %quadrant $= "front_right")
|
|
%curDie = $PlayerDeathAnim::ExplosionBlowBack;
|
|
else
|
|
%curDie = $PlayerDeathAnim::TorsoBackFallForward;
|
|
}
|
|
else if(%vertPos $= "head")
|
|
{
|
|
if(%quadrant $= "front_left" || %quadrant $= "front_right" )
|
|
%curDie = $PlayerDeathAnim::HeadFrontDirect;
|
|
else
|
|
%curDie = $PlayerDeathAnim::HeadBackFallForward;
|
|
}
|
|
else if(%vertPos $= "torso")
|
|
{
|
|
if(%quadrant $= "front_left" )
|
|
%curDie = $PlayerDeathAnim::TorsoLeftSpinDeath;
|
|
else if(%quadrant $= "front_right")
|
|
%curDie = $PlayerDeathAnim::TorsoRightSpinDeath;
|
|
else if(%quadrant $= "back_left" )
|
|
%curDie = $PlayerDeathAnim::TorsoBackFallForward;
|
|
else if(%quadrant $= "back_right")
|
|
%curDie = $PlayerDeathAnim::TorsoBackFallForward;
|
|
}
|
|
else if (%vertPos $= "legs")
|
|
{
|
|
if(%quadrant $= "front_left" || %quadrant $= "back_left")
|
|
%curDie = $PlayerDeathAnim::LegsLeftGimp;
|
|
if(%quadrant $= "front_right" || %quadrant $= "back_right")
|
|
%curDie = $PlayerDeathAnim::LegsRightGimp;
|
|
}
|
|
|
|
if(%curDie $= "" || %curDie < 1 || %curDie > 11)
|
|
%curDie = 1;
|
|
if(!%player.client.isfish)
|
|
%player.setActionThread("Death" @ %curDie);
|
|
}
|
|
function Armor::setActionThread(%this, %thread)
|
|
{
|
|
//die!
|
|
}
|
|
function Armor::onMount(%this,%obj,%vehicle,%node)
|
|
{
|
|
if(%this.client.isfish) return;
|
|
if (%node == 0)
|
|
{
|
|
// Node 0 is the pilot's pos.
|
|
%obj.setTransform("0 0 0 0 0 1 0");
|
|
%obj.setActionThread(%vehicle.getDatablock().mountPose[%node],true,true);
|
|
|
|
if(!%obj.inStation)
|
|
%obj.lastWeapon = (%obj.getMountedImage($WeaponSlot) == 0 ) ? "" : %obj.getMountedImage($WeaponSlot).getName().item;
|
|
|
|
//%obj.unmountImage($WeaponSlot);
|
|
|
|
if(!%obj.client.isAIControlled())
|
|
{
|
|
%obj.setControlObject(%vehicle);
|
|
%obj.client.setObjectActiveImage(%vehicle, 2);
|
|
}
|
|
|
|
//E3 respawn...
|
|
|
|
if(%obj == %obj.lastVehicle.lastPilot && %obj.lastVehicle != %vehicle)
|
|
{
|
|
schedule(15000, %obj.lastVehicle,"vehicleAbandonTimeOut", %obj.lastVehicle);
|
|
%obj.lastVehicle.lastPilot = "";
|
|
}
|
|
if(%vehicle.lastPilot !$= "" && %vehicle == %vehicle.lastPilot.lastVehicle)
|
|
%vehicle.lastPilot.lastVehicle = "";
|
|
|
|
%vehicle.abandon = false;
|
|
%vehicle.lastPilot = %obj;
|
|
%obj.lastVehicle = %vehicle;
|
|
|
|
// update the vehicle's team
|
|
if((%vehicle.getTarget() != -1) && %vehicle.getDatablock().cantTeamSwitch $= "")
|
|
{
|
|
setTargetSensorGroup(%vehicle.getTarget(), %obj.client.getSensorGroup());
|
|
if( %vehicle.turretObject > 0 )
|
|
setTargetSensorGroup(%vehicle.turretObject.getTarget(), %obj.client.getSensorGroup());
|
|
}
|
|
|
|
// Send a message to the client so they can decide if they want to change view or not:
|
|
commandToClient( %obj.client, 'VehicleMount' );
|
|
|
|
}
|
|
else
|
|
{
|
|
// tailgunner/passenger positions
|
|
if(%vehicle.getDataBlock().mountPose[%node] !$= "")
|
|
%obj.setActionThread(%vehicle.getDatablock().mountPose[%node]);
|
|
else
|
|
%obj.setActionThread("root", true);
|
|
}
|
|
// -------------------------------------------------------------------------
|
|
// z0dd - ZOD, 10/06/02. announce to any other passengers that you've boarded
|
|
if(%vehicle.getDatablock().numMountPoints > 1)
|
|
{
|
|
%nodeName = findNodeName(%vehicle, %node); // function in vehicle.cs
|
|
for(%i = 0; %i < %vehicle.getDatablock().numMountPoints; %i++)
|
|
{
|
|
if (%vehicle.getMountNodeObject(%i) > 0)
|
|
{
|
|
if(%vehicle.getMountNodeObject(%i).client != %obj.client)
|
|
{
|
|
//%team = (%obj.team == %vehicle.getMountNodeObject(%i).client.team ? 'Teammate' : 'Enemy');
|
|
//messageClient( %vehicle.getMountNodeObject(%i).client, 'MsgShowPassenger', '\c2%3: \c3%1\c2 has boarded in the \c3%2\c2 position.', %obj.client.name, %nodeName, %team );
|
|
}
|
|
commandToClient( %vehicle.getMountNodeObject(%i).client, 'showPassenger', %node, true);
|
|
}
|
|
}
|
|
}
|
|
//make sure they don't have any packs active
|
|
// if ( %obj.getImageState( $BackpackSlot ) $= "activate")
|
|
// %obj.use("Backpack");
|
|
if ( %obj.getImageTrigger( $BackpackSlot ) )
|
|
%obj.setImageTrigger( $BackpackSlot, false );
|
|
|
|
//AI hooks
|
|
%obj.client.vehicleMounted = %vehicle;
|
|
AIVehicleMounted(%vehicle);
|
|
if(%obj.client.isAIControlled())
|
|
%this.AIonMount(%obj, %vehicle, %node);
|
|
}
|
|
function Armor::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, $DamageLava, $DamageType::Lava);
|
|
case 5:
|
|
//Hot Lava
|
|
%obj.liquidDamage(%data, $DamageHotLava, $DamageType::Lava);
|
|
case 6:
|
|
//Crusty Lava
|
|
%obj.liquidDamage(%data, $DamageCrustyLava, $DamageType::Lava);
|
|
case 7:
|
|
//Quick Sand
|
|
}
|
|
if(isobject(%obj.client))
|
|
if(%obj.client.isaicontrolled())
|
|
{
|
|
Game.onAIEnterLiquid(%data, %obj, %type);
|
|
|
|
}
|
|
}
|
|
|
|
function Armor::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 = "";
|
|
}
|
|
if(isobject(%obj.client))
|
|
if(%obj.client.isaicontrolled())
|
|
{
|
|
Game.onAILeaveLiquid(%data, %obj, %type);
|
|
|
|
}
|
|
}
|
|
function Player::use( %this,%data )
|
|
{
|
|
// If player is in a station then he can't use any items
|
|
if(%this.station !$= "")
|
|
return false;
|
|
|
|
// Convert the word "Backpack" to whatever is in the backpack slot.
|
|
if ( %data $= "Backpack" )
|
|
{
|
|
if ( %this.inStation )
|
|
return false;
|
|
|
|
if ( %this.isPilot() )
|
|
{
|
|
|
|
|
|
if(%this.getControlObject() == 0)
|
|
{
|
|
|
|
%vehicle = %this.lastVehicle;
|
|
echo(%vehicle SPC %vehicle.getDatablock().mountPose[0]);
|
|
%this.setTransform("0 0 0 0 0 1 0");
|
|
%this.setActionThread(%vehicle.getDatablock().mountPose[0],true, true);
|
|
%this.setControlObject(%vehicle);
|
|
}
|
|
else
|
|
{
|
|
%this.setActionThread("root", true, true);
|
|
%this.setControlObject(0);
|
|
}
|
|
}
|
|
//else if ( %this.isWeaponOperator() )
|
|
//{
|
|
// messageClient( %this.client, 'MsgCantUsePack', '\c2You can\'t use your pack while in a weaponry position.~wfx/misc/misc.error.wav' );
|
|
// return( false );
|
|
//}
|
|
|
|
%image = %this.getMountedImage( $BackpackSlot );
|
|
if ( %image )
|
|
%data = %image.item;
|
|
}
|
|
|
|
// Can't use some items when piloting or your a weapon operator
|
|
//if ( %this.isPilot() || %this.isWeaponOperator() )
|
|
// if ( %data.getName() !$= "RepairKit" )
|
|
// return false;
|
|
|
|
return ShapeBase::use( %this, %data );
|
|
}
|