[t2] (new) Tribes 3 Mod

Pages : [1] 2 3

SmartZ
09-10-2004, 10:20 PM
I've decided to take up the task of making a tribes 3 mod for tribes 2. I forget who was going to origonally, but i'm a pretty experienced coder in torque script, so ittl be much better and much faster made. Not to mention the fact that i've already coded the rocket pod, which would be the one major set-back. Ill start on a (realistic) grapple soon, and dont worry it wont be like any of the crummy t2 grappels already out there.
Gimme feedback please dont flame.

Shinigami
09-10-2004, 10:29 PM
Why would you do this when T:V is available?

bad_billy
09-10-2004, 11:58 PM
bcuz he prefers t2

SmartZ
09-11-2004, 12:44 AM
no, because i'm bored, and i like making useless things.

Dangerdoggie
09-11-2004, 01:45 AM
I think you should load up t2 and check out just how many servers are left running the game.

"It's dead Jim"

Amadeus
09-11-2004, 04:40 AM
I think you should load up t2 and check out just how many servers are left running the game.

"It's dead Jim"
That, and there's already a pefectly decent T:V mod out there made by ZOD, ilys and yours truly.


Btw did you just call my grappler crummy? :grimreape

ilys
09-11-2004, 06:34 AM
Good luck with the mod. When you get stuck, dont hesitate to ask for help ;)

Calder
09-11-2004, 09:08 AM
That, and there's already a pefectly decent T:V mod out there made by ZOD, ilys and yours truly.


Btw did you just call my grappler crummy? :grimreape
Sorry, but T2 T:V mod is a POS.

Amadeus
09-11-2004, 09:21 AM
Sorry, but T2 T:V mod is a POS.
Well, it's still T2 in its very essence, so duh. But it's just about the best that you can get out of T2.

Calder
09-11-2004, 12:13 PM
Its still a POS.

ilys
09-11-2004, 12:20 PM
I'd still like to see you try and make something close to T:V using Torque scripting.

SmartZ
09-11-2004, 01:11 PM
It wont be very hard. You know how i said i already coded the rocket pod? well.. yeah, take a look:
http://www.CaffeinePower.net/images/rpod1.jpg
http://www.CaffeinePower.net/images/rpod2.jpg
http://www.CaffeinePower.net/images/rpod3.jpg
I also coded the key-bind for auto-ski last night, but i likely wont include it (given that it SUCKS!) :P
I also did the shot-gun style blaster, it shoots 20 speedy energy projectiles that bounce off walls. Also turned the plasma into burner, requires no ammo and the bolt is blueish-purple, and explodes into a large flame. ill post screen shots next chance i get.

The jump tank wont be particullarly hard, and i can likely just change the physics/shape file of mpb to make it into a rover.

SmartZ
09-11-2004, 01:14 PM
I can likely get very similar gameplay out of torque, sure it wont be as pretty, but it will feel like vengance once im done with it.

ViRtuOsity
09-11-2004, 01:43 PM
OMG :lol: :rofl: u u u hahaha u use pjs and you call yourself a scripter :lol:

ilys
09-11-2004, 02:14 PM
The jump tank wont be particullarly hard, and i can likely just change the physics/shape file of mpb to make it into a rover.
That is where you will come to a dead end. Vehicle physics in T2, especially ground and hover vehicles, are not the best to work with.

Calder
09-11-2004, 02:49 PM
I'd still like to see you try and make something close to T:V using Torque scripting.
I never said I could, I just said its a POS :shrug:

SmartZ
09-11-2004, 06:27 PM
Gimme feedback please dont flame.
I've worked on it a few hours so far and i already have blaster/burner/rocket-pod/fusor to my satisification.

OMG hahaha u use pjs and you call yourself a scripter
Actually, i dont call myself a scripter. i call myself a programmer. A programmer who's makeing a nearly six figure salary. Shut up kid.

Amadeus
09-11-2004, 06:37 PM
If I had any experience in making weapons I would have done those in a few hours too... let's see the grappler!

ilys
09-12-2004, 05:42 AM
May I ask how you have gotten around the bugs inherent with using a lock-on sequence for the rocketpod and switching weapons? Or are you using a direct fire method instead of homing?

SmartZ
09-12-2004, 06:51 PM
Heres how it works, when the weapon is mounted, an invisible beacon object is created a certain distance infront of the muzzle vector. Then, i run a recursing function to re-calculate the position for the target object every 32 ms (so as to be smooth), and re-position it there. its really quite simple.

Here, my mod is open source.

//Close Combat Rocket Pod
//By SmartZ
//ok.. if ANYONE STEALS THIS THERE WILL FLAMEING DEATH RAINED FROM THE SKY!!!! :)
//created april 6, 2004

datablock EffectProfile(RocketPodFi reEffect)
{
effectname = "powered/turret_missile_fire";
minDistance = 2.5;
maxDistance = 7.25;
};

datablock EffectProfile(RocketPodSw itchEffect)
{
effectname = "weapons/weapon.missilereload";
minDistance = 2.5;
maxDistance = 2.5;
};

datablock EffectProfile(RocketPodDr yFireEffect)
{
effectname = "weapons/grenadelauncher_dryfire";
minDistance = 2.5;
maxDistance = 2.55;
};

datablock EffectProfile(RocketPodRe loadEffect)
{
effectname = "powered/turret_heavy_reload";
minDistance = 2.5;
maxDistance = 2.5;
};

datablock EffectProfile(RocketPodEx pEffect)
{
effectname = "explosions/deployables_explosion";
minDistance = 5;
maxDistance = 20;
};

//--------------------------------------------------------------------------
// Sounds
//--------------------------------------
datablock AudioProfile(RocketPodSwi tchSound)
{
filename = "fx/weapons/weapon.missilereload.wav";
description = AudioClosest3d;
preload = true;
effect = RocketPodSwitchEffect;
};

datablock AudioProfile(RocketPodFir eSound)
{
filename = "fx/powered/turret_missile_fire.wav";
description = AudioDefault3d;
preload = true;
effect = RocketPodFireEffect;
};

datablock AudioProfile(RocketPodRel oadSound)
{
filename = "fx/powered/turret_heavy_reload.wav";
description = AudioClosest3d;
preload = true;
effect = RocketPodReloadEffect;
};

datablock AudioProfile(RocketPodExp Sound)
{
filename = "fx/explorer/deployables_explosion.wav";
description = AudioExplosion3d;
preload = true;
effect = RocketPodExpEffect;
};

datablock AudioProfile(underwaterRo cketPodExpSound)
{
filename = "fx/weapons/spinfusor_impact_UW.wav";
description = AudioExplosion3d;
preload = true;
effect = RocketPodExpEffect;
};

datablock AudioProfile(RocketPodPro jectileSound)
{
filename = "fx/weapons/missile_projectile.wav";
description = ProjectileLooping3d;
preload = true;
};

datablock AudioProfile(RocketPodDry FireSound)
{
filename = "fx/weapons/grenadelauncher_dryfire.w av";
description = AudioClose3d;
preload = true;
effect = RocketPodDryFireEffect;
};

datablock ParticleData(RPodParticle )
{
dragCoefficient = 1.5;
gravityCoefficient = 0;
inheritedVelFactor = 0.2;
constantAcceleration = 0.0;
lifetimeMS = 1300;
lifetimeVarianceMS = 0;
textureName = "particleTest";
colors[0] = "0.6 0.6 0.6 0.5";
colors[1] = "0.1 0.1 0.15 0";
sizes[0] = 0.15;
sizes[1] = 0.15;
};

datablock ParticleEmitterData(RPodE mitter)
{
ejectionPeriodMS = 20;
periodVarianceMS = 0;
ejectionVelocity = 1;
velocityVariance = 1.0;
ejectionOffset = 0.0;
thetaMin = 0;
thetaMax = 10;
phiReferenceVel = 0;
phiVariance = 360;
overrideAdvances = false;
particles = "RPodParticle";
};

datablock SeekerProjectileData(PodM issile)
{
casingShapeName = "weapon_missile_casement.d ts";
projectileShapeName = "weapon_missile_projectile .dts";
hasDamageRadius = true;
indirectDamage = 0.4;
damageRadius = 5.0;
radiusDamageType = $DamageType::Missile;
kickBackStrength = 1000;

explosion = "MissileExplosion";
splash = MissileSplash;
velInheritFactor = 1.0;

baseEmitter = RPodEmitter;
puffEmitter = MissilePuffEmitter;
bubbleEmitter = GrenadeBubbleEmitter;
bubbleEmitTime = 1.0;

exhaustEmitter = MissileLauncherExhaustEmi tter;
exhaustTimeMs = 300;
exhaustNodeName = "muzzlePoint1";

lifetimeMS = 6000;
muzzleVelocity = 2.0;
maxVelocity = 30.0;
turningSpeed = 80.0;
acceleration = 150.0;

proximityRadius = 3;

terrainAvoidanceSpeed = 180;
terrainScanAhead = 0;
terrainHeightFail = 12;
terrainAvoidanceRadius = 0;

sound = MissileProjectileSound;

hasLight = true;
lightRadius = 5.0;
lightColor = "0.2 0.05 0";

explodeOnWaterImpact = false;
};

datablock ItemData(RocketPod)
{
className = Weapon;
catagory = "Spawn Items";
shapeFile = "weapon_plasma.dts";
image = RocketPodImage;
mass = 1;
elasticity = 0.2;
friction = 0.6;
pickupRadius = 2;
pickUpName = "a Rocket Pod";

computeCRC = true;
emap = true;
};

datablock ItemData(RocketPodAmmo)
{
className = Ammo;
catagory = "Ammo";
shapeFile = "ammo_missile.dts";
mass = 1;
elasticity = 0.2;
friction = 0.6;
pickupRadius = 2;
pickUpName = "some pod rockets";
};

datablock ItemData(RocketVertex)
{
className = TargetDummy;
catagory = "Misc";
shapeFile = "turret_muzzlepoint.dts";
mass = 1;
elasticity = 0.2;
friction = 0.8;
pickUpName = " ";

computeCRC = true;

};

datablock ShapeBaseImageData(Rocket PodImage)
{
className = WeaponImage;
shapeFile = "weapon_plasma.dts";
item = RocketPod;
ammo = RocketPodAmmo;
emap = true;

projectile = PodMissile;
projectileType = SeekerProjectile;

projectileSpread = 30 / 1000.0;

stateName[0] = "Activate";
stateTransitionOnTimeout[0] = "ActivateReady";
stateTimeoutValue[0] = 0.25;
stateSequence[0] = "Activate";
stateSound[0] = RocketPodSwitchSound;

stateName[1] = "ActivateReady";
stateTransitionOnLoaded[1] = "Ready";
stateTransitionOnNoAmmo[1] = "NoAmmo";

stateName[2] = "Ready";
stateTransitionOnNoAmmo[2] = "NoAmmo";
stateTransitionOnTriggerD own[2] = "Fire1";

stateName[3] = "Fire1";
stateTimeoutValue[3] = 0.35;
stateTransitionOnTimeout[3] = "Fire2";
stateFire[3] = true;
stateRecoil[3] = LightRecoil;
stateAllowImageChange[3] = false;
stateSequence[3] = "Fire";
stateSound[3] = RocketPodFireSound;
stateTransitionOnTriggerU p[3] = "BlowMissiles";
stateScript[3] = "onFire";
stateTransitionOnNoAmmo[3] = "WaitforDet";

stateName[4] = "Fire2";
stateTransitionOnTimeout[4] = "Fire3";
stateTimeoutValue[4] = 0.35;
stateFire[4] = true;
stateRecoil[4] = LightRecoil;
stateAllowImageChange[4] = false;
stateSequence[4] = "Fire";
stateSound[4] = RocketPodFireSound;
stateTransitionOnTriggerU p[4] = "BlowMissiles";
stateScript[4] = "onFire";
stateTransitionOnNoAmmo[4] = "WaitforDet";

stateName[5] = "Fire3";
stateTransitionOnTimeout[5] = "Fire4";
stateTimeoutValue[5] = 0.35;
stateFire[5] = true;
stateRecoil[5] = LightRecoil;
stateAllowImageChange[5] = false;
stateSequence[5] = "Fire";
stateSound[5] = RocketPodFireSound;
stateTransitionOnTriggerU p[5] = "BlowMissiles";
stateScript[5] = "onFire";
stateTransitionOnNoAmmo[5] = "WaitforDet";

stateName[6] = "Fire4";
stateTransitionOnTimeout[6] = "BlowMissiles";
stateTimeoutValue[6] = 0.35;
stateFire[6] = true;
stateRecoil[6] = LightRecoil;
stateAllowImageChange[6] = false;
stateSequence[6] = "Fire";
stateSound[6] = RocketPodFireSound;
stateTransitionOnTriggerU p[6] = "BlowMissiles";
stateScript[6] = "onFire";
stateTransitionOnNoAmmo[6] = "WaitforDet";

stateName[7] = "Fire5";
stateTransitionOnTimeout[7] = "Fire6";
stateTimeoutValue[7] = 0.35;
stateFire[7] = true;
stateRecoil[7] = LightRecoil;
stateAllowImageChange[7] = false;
stateSequence[7] = "Fire";
stateSound[7] = RocketPodFireSound;
stateTransitionOnTriggerU p[7] = "BlowMissiles";
stateScript[7] = "onFire";
stateTransitionOnNoAmmo[7] = "WaitforDet";

stateName[8] = "Fire6";
stateTransitionOnTimeout[8] = "WaitforDet";
stateTimeoutValue[8] = 0.35;
stateFire[8] = true;
stateRecoil[8] = LightRecoil;
stateAllowImageChange[8] = false;
stateSequence[8] = "Fire";
stateEjectShell[8] = true;
stateSound[8] = RocketPodFireSound;
stateTransitionOnTriggerU p[8] = "BlowMissiles";
stateScript[8] = "onFire";
stateTransitionOnNoAmmo[8] = "WaitforDet";

stateName[9] = "Reload";
stateTransitionOnNoAmmo[9] = "NoAmmo";
stateTransitionOnTimeout[9] = "Ready";
stateSound[9] = RocketPodReloadSound;
stateTimeoutValue[9] = 2.5;
stateAllowImageChange[9] = false;
stateSequence[9] = "Reload";

stateName[10] = "NoAmmo";
stateTransitionOnAmmo[10] = "Reload";
stateSequence[10] = "NoAmmo";
stateTransitionOnTriggerD own[10] = "DryFire";

stateName[11] = "DryFire";
stateSound[11] = RocketPodDryFireSound;
stateTimeoutValue[11] = 0.65;
stateTransitionOnTimeout[11] = "NoAmmo";

stateName[12] = "WaitforDet";
stateTransitionOnTriggerU p[12] = "BlowMissiles";

stateName[13] = "BlowMissiles";
stateTimeoutValue[13] = 0.1;
stateTransitionOnTimeout[13] = "Reload";

};

datablock StaticShapeData(RPodBeaco n) : StaticShapeDamageProfile
{
shapeFile = "turret_muzzlepoint.dts";
// explosion = DeployablesExplosion;
// maxDamage = 0.45;
// disabledLevel = 0.45;
// destroyedLevel = 0.45;
// targetNameTag = 'beacon';
//
// deployedObject = true;

// dynamicType = $TypeMasks::SensorObjectT ype;
//
// debrisShapeName = "debris_generic_small.dts";
// debris = SmallShapeDebris;
};

$ScanRange = 300;

function seekloop(%data,%obj,%slot )
{
if(%obj.noseek)
{
return;
}
%mVec = %obj.getMuzzleVector(%slo t);
%mPos = %obj.getMuzzlePoint(%slot );
%nmVec = VectorNormalize(%mVec);
%scmVec = VectorScale(%nmVec, $ScanRange);
%mEnd = VectorAdd(%mPos, %scmVec);
%searchResult = containerRayCast(%mPos, %mEnd, $TypeMasks::TerrainObject Type | $TypeMasks::InteriorObjec tType | $TypeMasks::PlayerObjectT ype | $TypeMasks::VehicleObject Type | $TypeMasks::StaticShapeOb jectType | $TypeMasks::TurretObjectT ype | $TypeMasks::ItemObjectTyp e, 0);
//%raycastPT = getWord(%searchResult, 1) @ " " @ getWord(%searchResult, 2) @ " " @ getWord(%searchResult, 3);
if(%searchResult)
{
if(VectorDist(%mPos, getWords(%searchResult.ge tTransform(), 0, 2)) <= $ScanRange)
{
%end = getWords(%searchResult.ge tTransform(), 0, 2);
}
else
{
%end = %mEnd;
}
}
if(%obj.rbeac)
{
%curtrans = %obj.rbeac.getTransform() ;
%rot = getWords(%curtrans, 3, 6);
%trans = %end@" "@%rot;
%obj.rbeac.setTransform(% trans);
}
else
{
%obj.rbeac = new BeaconObject() {
dataBlock = "RPodBeacon";
position = %end;
rotation = "1 0 0 0";
};
MissionCleanup.add(%obj.r beac);
}
schedule(32, 0, "seekloop", %data, %obj, %slot);
}

function RocketPodImage::onUnmount (%this,%obj,%slot)
{
Parent::onUnmount(%this, %obj, %slot);
%obj.noseek = true;
%obj.rbeac.delete();
%obj.rbeac = "";
}

function RocketPodImage::onMount(% data,%obj,%slot)
{
Parent::onMount(%data,%ob j,%slot);
%obj.noseek = false;
seekloop(%data,%obj,%slot );
}

function RocketPodImage::onFire(%d ata,%obj,%slot)
{
%p = new (%data.projectileType)() {
dataBlock = %data.projectile;
initialDirection = %obj.getMuzzleVector(%slo t);
initialPosition = %obj.getMuzzlePoint(%slot );
sourceObject = %obj;
sourceSlot = %slot;
};
MissionCleanup.add(%p);
%p.setObjectTarget(%obj.r beac);
%obj.decInventory(%data.a mmo,1);
}