mirror of
https://github.com/ChocoTaco1/zDiscord-Map-Pack.git
synced 2026-07-11 14:34:48 +00:00
Initial 4.5 commit
This commit is contained in:
commit
96f73b3aef
1166 changed files with 107707 additions and 0 deletions
157
scripts/CreativityGame.cs
Normal file
157
scripts/CreativityGame.cs
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
// Red Shifter's Creativity Limiters for Tribes 2
|
||||
// "With constraints come creativity." -HiRezTodd
|
||||
// The reverse is also true. If you limit creativity, you limit constraints. So here's a bunch of stupid shit.
|
||||
|
||||
// Version 0.1.1 contains these Creativity Limiters:
|
||||
// 1. Creativity Pad (T:V style jump pad)
|
||||
|
||||
//-------------------------------
|
||||
// EXTENSION 1: CREATIVITY PAD
|
||||
//-------------------------------
|
||||
// teamCheck - Only the team that controls the pad can use it
|
||||
// powerCheck - Power will be required to use the pad
|
||||
// minSpeed - Minimum horizontal speed that you will have upon using the pad
|
||||
// maxSpeed - Maximum horizontal speed that you will have upon using the pad (you will not lose speed if you're going over the limit)
|
||||
// factor - The horizontal multipler you gain upon hitting the pad (default: 1.3)
|
||||
// jumpPower - The amount of vertical speed applied by the pad (default: 50)
|
||||
// this isn't clearly ripped from TR2
|
||||
|
||||
package jumpPad{
|
||||
function Armor::onImpact(%data, %playerObject, %collidedObject, %vec, %vecLen){
|
||||
if(%collidedObject.getDataBlock().getName() !$= "CreativityPad"){
|
||||
parent::onImpact(%data, %playerObject, %collidedObject, %vec, %vecLen);
|
||||
}
|
||||
}
|
||||
};
|
||||
if(!isActivePackage(jumpPad))
|
||||
activatePackage(jumpPad);
|
||||
|
||||
datablock AudioProfile(CreativityPadSound)
|
||||
{
|
||||
volume = 1.0;
|
||||
filename = "fx/misc/launcher.wav";
|
||||
description = AudioClose3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
datablock StaticShapeData(CreativityPad)
|
||||
{
|
||||
catagory = "Creativity Limiters";
|
||||
className = "Creativity Pad";
|
||||
isInvincible = true;
|
||||
needsNoPower = true;
|
||||
alwaysAmbient = true;
|
||||
shapeFile = "station_teleport.dts";
|
||||
soundEffect = CreativityPadSound;
|
||||
};
|
||||
|
||||
function CreativityPad::onCollision(%this, %obj, %col) {
|
||||
// make sure a living player hit the pad
|
||||
if( %col.getClassName() !$= "Player" ) return;
|
||||
if( %col.getState() $= "Dead" ) return;
|
||||
|
||||
// make sure we're the right team, if this a team-based object
|
||||
if( %obj.teamCheck == 1 && %obj.team != %col.team ) {
|
||||
messageClient(%col.client, 'msgStationDenied', '\c2Access Denied -- Wrong team.~wfx/powered/station_denied.wav');
|
||||
return;
|
||||
}
|
||||
|
||||
// make sure we have power, if this a power-based object
|
||||
if( %obj.powerCheck == 1 && !%obj.isPowered() ) {
|
||||
messageClient(%col.client, 'msgStationNoPower', '\c2Station is not powered.');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// get player velocity
|
||||
%oldVel = %col.getVelocity();
|
||||
%x = getWord(%oldVel,0);
|
||||
%y = getWord(%oldVel,1);
|
||||
%z = getWord(%oldVel,2);
|
||||
|
||||
// test change
|
||||
//%col.setVelocity(VectorScale(VectorNormalize(%horizonVector), 1000 / 3.6));
|
||||
|
||||
// see if we customized the factor value
|
||||
if( %obj.factor !$= "" ) {
|
||||
%defaultFactor = %obj.factor;
|
||||
}
|
||||
else {
|
||||
%defaultFactor = 1.3;
|
||||
}
|
||||
|
||||
// see if we have a maximum horizontal boost
|
||||
if( %obj.maxSpeed !$= "" ) {
|
||||
%originalSpeed = VectorLen(%x SPC %y SPC "0");
|
||||
%newSpeed = %originalSpeed * %defaultFactor;
|
||||
%maxSpeed = %obj.maxSpeed / 3.6;
|
||||
|
||||
if( %originalSpeed > %maxSpeed ) {
|
||||
// don't reduce the player's speed
|
||||
%factor = 1.0;
|
||||
}
|
||||
else if( %newSpeed > %maxSpeed ) {
|
||||
// speed up the player to the listed max speed
|
||||
%factor = %maxSpeed / %originalSpeed;
|
||||
}
|
||||
else {
|
||||
// apply the maximum boost
|
||||
%factor = %defaultFactor;
|
||||
}
|
||||
}
|
||||
else {
|
||||
%factor = %defaultFactor;
|
||||
}
|
||||
|
||||
// make the changes to player velocity
|
||||
%x *= %factor;
|
||||
%y *= %factor;
|
||||
|
||||
// see if we have a minimum speed off the pad
|
||||
%currentSpeed = VectorLen(%x SPC %y SPC "0");
|
||||
if( %obj.minSpeed !$= "" && %currentSpeed < %obj.minSpeed / 3.6 ) {
|
||||
%newSpeed = VectorScale(VectorNormalize(%x SPC %y SPC "0"), %obj.minSpeed / 3.6);
|
||||
%x = getWord(%newSpeed,0);
|
||||
%y = getWord(%newSpeed,1);
|
||||
}
|
||||
|
||||
// add the jump power
|
||||
if( %obj.jumpPower !$= "" ) {
|
||||
%z = %obj.jumpPower;
|
||||
}
|
||||
else {
|
||||
%z = 50;
|
||||
}
|
||||
|
||||
// set the velocity
|
||||
%col.setVelocity(%x SPC %y SPC %z);
|
||||
|
||||
// play the effects
|
||||
%obj.playAudio(0, %this.soundEffect);
|
||||
|
||||
if( !%obj.activatedThread ) {
|
||||
%obj.activatedThread = 1;
|
||||
%obj.playThread($ActivateThread, "Activate");
|
||||
%obj.schedule(750, stopThread, $ActivateThread);
|
||||
schedule(800, 0, eval, %obj @ ".activatedThread = \"\";");
|
||||
}
|
||||
}
|
||||
|
||||
function CreativityPad::losePower(%this, %obj) {
|
||||
if( %obj.powerCheck == 1 && %obj.disabledThread == 0 ) {
|
||||
%obj.disabledThread = 1;
|
||||
%obj.playThread($PowerThread, "DAMAGE");
|
||||
}
|
||||
}
|
||||
function CreativityPad::gainPower(%this, %obj) {
|
||||
if( %obj.powerCheck == 1 && %obj.disabledThread == 1 ) {
|
||||
%obj.disabledThread = "";
|
||||
%obj.stopThread($PowerThread);
|
||||
}
|
||||
}
|
||||
|
||||
// anthem4admin
|
||||
function CreativityPad::onAdd(%this, %obj) {
|
||||
%obj.disabledThread = "";
|
||||
%obj.activatedThread = "";
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue