389 lines
9.1 KiB
C#
389 lines
9.1 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Torque Game Engine
|
|
//
|
|
// Copyright (c) 2001 GarageGames.Com
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// PowerUp base class
|
|
//-----------------------------------------------------------------------------
|
|
|
|
function PowerUp::onPickup(%this,%obj,%user,%amount)
|
|
{
|
|
// Dont' pickup the power up if it's the same
|
|
// one we already have.
|
|
if (%user.powerUpData == %this)
|
|
return false;
|
|
|
|
// Grab it...
|
|
%user.client.play2d(%this.pickupAudio);
|
|
if (%this.powerUpId)
|
|
{
|
|
if(%obj.showHelpOnPickup)
|
|
addHelpLine("Press <func:bind mouseFire> to use the " @ %this.useName @ "!", false);
|
|
|
|
%user.setPowerUp(%this);
|
|
}
|
|
Parent::onPickup(%this, %obj, %user, %amount);
|
|
return true;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock AudioProfile(doSuperJumpSfx)
|
|
{
|
|
filename = "~/data/sound/doSuperJump.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock AudioProfile(PuSuperJumpVoiceSfx)
|
|
{
|
|
filename = "~/data/sound/puSuperJumpVoice.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ItemData(SuperJumpItem)
|
|
{
|
|
// Mission editor category
|
|
category = "Powerups";
|
|
className = "PowerUp";
|
|
powerUpId = 1;
|
|
|
|
activeAudio = DoSuperJumpSfx;
|
|
pickupAudio = PuSuperJumpVoiceSfx;
|
|
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/items/superjump.dts";
|
|
mass = 1;
|
|
friction = 1;
|
|
elasticity = 0.3;
|
|
emap = false;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
pickupName = "a Super Jump PowerUp!";
|
|
useName = "Super Jump PowerUp";
|
|
maxInventory = 1;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock AudioProfile(doSuperBounceSfx)
|
|
{
|
|
filename = "~/data/sound/doSuperBounce.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock AudioProfile(PuSuperBounceVoiceSfx)
|
|
{
|
|
filename = "~/data/sound/puSuperBounceVoice.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ItemData(SuperBounceItem)
|
|
{
|
|
// Mission editor category
|
|
category = "Powerups";
|
|
className = "PowerUp";
|
|
powerUpId = 3;
|
|
|
|
activeAudio = DoSuperBounceSfx;
|
|
pickupAudio = PuSuperBounceVoiceSfx;
|
|
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/items/superbounce.dts";
|
|
mass = 1;
|
|
friction = 1;
|
|
elasticity = 0.3;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
pickupName = "a Super Bounce PowerUp!";
|
|
useName = "Super Bounce PowerUp";
|
|
maxInventory = 1;
|
|
};
|
|
|
|
datablock AudioProfile(SuperBounceLoopSfx)
|
|
{
|
|
filename = "~/data/sound/forcefield.wav";
|
|
description = AudioClosestLooping3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ShapeBaseImageData(SuperBounceImage)
|
|
{
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/images/glow_bounce.dts";
|
|
emap = true;
|
|
|
|
// Specify mount point & offset for 3rd person, and eye offset
|
|
// for first person rendering.
|
|
mountPoint = 0;
|
|
offset = "0 0 0";
|
|
stateName[0] = "Blah";
|
|
stateSound[0] = SuperBounceLoopSfx;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock AudioProfile(doSuperSpeedSfx)
|
|
{
|
|
filename = "~/data/sound/doSuperSpeed.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock AudioProfile(PuSuperSpeedVoiceSfx)
|
|
{
|
|
filename = "~/data/sound/puSuperSpeedVoice.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ItemData(SuperSpeedItem)
|
|
{
|
|
// Mission editor category
|
|
category = "Powerups";
|
|
className = "PowerUp";
|
|
powerUpId = 2;
|
|
|
|
activeAudio = DoSuperSpeedSfx;
|
|
pickupAudio = PuSuperSpeedVoiceSfx;
|
|
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/items/superspeed.dts";
|
|
mass = 1;
|
|
friction = 1;
|
|
elasticity = 0.3;
|
|
emap = false;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
pickupName = "a Super Speed PowerUp!";
|
|
useName = "Super Speed PowerUp";
|
|
maxInventory = 1;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock AudioProfile(doShockAbsorberSfx)
|
|
{
|
|
filename = "~/data/sound/doShockAbsorber.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock AudioProfile(PuShockAbsorberVoiceSfx)
|
|
{
|
|
filename = "~/data/sound/puShockAbsorberVoice.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ItemData(ShockAbsorberItem)
|
|
{
|
|
// Mission editor category
|
|
category = "Powerups";
|
|
className = "PowerUp";
|
|
powerUpId = 4;
|
|
|
|
activeAudio = DoShockAbsorberSfx;
|
|
pickupAudio = PuShockAbsorberVoiceSfx;
|
|
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/items/shockabsorber.dts";
|
|
mass = 1;
|
|
friction = 1;
|
|
elasticity = 0.3;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
pickupName = "a Shock Absorber PowerUp!";
|
|
useName = "Shock Absorber PowerUp";
|
|
maxInventory = 1;
|
|
emap = false;
|
|
};
|
|
|
|
datablock AudioProfile(ShockLoopSfx)
|
|
{
|
|
filename = "~/data/sound/superbounceactive.wav";
|
|
description = AudioClosestLooping3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ShapeBaseImageData(ShockAbsorberImage)
|
|
{
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/images/glow_bounce.dts";
|
|
emap = true;
|
|
|
|
// Specify mount point & offset for 3rd person, and eye offset
|
|
// for first person rendering.
|
|
mountPoint = 0;
|
|
offset = "0 0 0";
|
|
stateName[0] = "Blah";
|
|
stateSound[0] = ShockLoopSfx;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock AudioProfile(doHelicopterSfx)
|
|
{
|
|
filename = "~/data/sound/doHelicopter.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock AudioProfile(PuGyrocopterVoiceSfx)
|
|
{
|
|
filename = "~/data/sound/puGyrocopterVoice.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ItemData(HelicopterItem)
|
|
{
|
|
// Mission editor category
|
|
category = "Powerups";
|
|
className = "PowerUp";
|
|
powerUpId = 5;
|
|
|
|
activeAudio = DoHelicopterSfx;
|
|
pickupAudio = PuGyrocopterVoiceSfx;
|
|
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/images/helicopter.dts";
|
|
mass = 1;
|
|
friction = 1;
|
|
elasticity = 0.3;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
pickupName = "a Gyrocopter PowerUp!";
|
|
useName = "Gyrocopter PowerUp";
|
|
maxInventory = 1;
|
|
};
|
|
|
|
datablock AudioProfile(HelicopterLoopSfx)
|
|
{
|
|
filename = "~/data/sound/Use_Gyrocopter.wav";
|
|
description = AudioClosestLooping3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ShapeBaseImageData(HelicopterImage)
|
|
{
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/images/helicopter.dts";
|
|
emap = true;
|
|
mountPoint = 0;
|
|
offset = "0 0 0";
|
|
stateName[0] = "Rotate";
|
|
stateSequence[0] = "rotate";
|
|
stateSound[0] = HelicopterLoopSfx;
|
|
ignoreMountRotation = true;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Special non-inventory power ups
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock AudioProfile(PuTimeTravelVoiceSfx)
|
|
{
|
|
filename = "~/data/sound/puTimeTravelVoice.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ItemData(TimeTravelItem)
|
|
{
|
|
// Mission editor category
|
|
category = "Powerups";
|
|
className = "PowerUp";
|
|
|
|
// Basic Item properties
|
|
pickupAudio = PuTimeTravelVoiceSfx;
|
|
shapeFile = "~/data/shapes/items/timetravel.dts";
|
|
mass = 1;
|
|
friction = 1;
|
|
elasticity = 0.3;
|
|
emap = false;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
noRespawn = true;
|
|
maxInventory = 1;
|
|
};
|
|
|
|
function TimeTravelItem::getPickupName(%this, %obj)
|
|
{
|
|
if(%obj.timeBonus !$= "")
|
|
%time = %obj.timeBonus / 1000;
|
|
else
|
|
%time = $Game::TimeTravelBonus / 1000;
|
|
|
|
return "a " @ %time @ " second Time Travel Bonus!";
|
|
}
|
|
|
|
function TimeTravelItem::onPickup(%this,%obj,%user,%amount)
|
|
{
|
|
Parent::onPickup(%this, %obj, %user, %amount);
|
|
if(%obj.timeBonus !$= "")
|
|
%user.client.incBonusTime(%obj.timeBonus);
|
|
else
|
|
%user.client.incBonusTime($Game::TimeTravelBonus);
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock AudioProfile(PuAntiGravityVoiceSfx)
|
|
{
|
|
filename = "~/data/sound/gravitychange.wav";
|
|
description = AudioDefault3d;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ItemData(AntiGravityItem)
|
|
{
|
|
// Mission editor category
|
|
category = "Powerups";
|
|
className = "PowerUp";
|
|
|
|
pickupAudio = PuAntiGravityVoiceSfx;
|
|
pickupName = "a Gravity Modifier!";
|
|
|
|
// Basic Item properties
|
|
shapeFile = "~/data/shapes/items/antiGravity.dts";
|
|
mass = 1;
|
|
friction = 1;
|
|
elasticity = 0.3;
|
|
emap = false;
|
|
|
|
// Dynamic properties defined by the scripts
|
|
maxInventory = 1;
|
|
};
|
|
|
|
function AntiGravityItem::onAdd(%this, %obj)
|
|
{
|
|
%obj.playThread(0,"Ambient");
|
|
}
|
|
|
|
function AntiGravityItem::onPickup(%this,%obj,%user,%amount)
|
|
{
|
|
%rotation = getWords(%obj.getTransform(),3);
|
|
%ortho = vectorOrthoBasis(%rotation);
|
|
%up = getWords(%ortho,6);
|
|
if (getGravityDir() !$= %up) {
|
|
Parent::onPickup(%this, %obj, %user, %amount);
|
|
setGravityDir(%ortho);
|
|
}
|
|
}
|
|
|