[T2] Vengeance mod

rocket thing is incredibly gay. the rockets cause too much screenshake, hit too easily, do too much damage, and seek too well.

discs apparently don't destroy mines.

mediums have too much health.

destroyed repair turrets still count toward your deployed total, so if you deploy 2 and they both get destroyed you can't deploy any more. not sure if this happens to other deployables too.
 
I've apparently created a monster, I apologize to everyone. I'll get back to work ASAP.


Some other notes: that thing about deployable count is right, I couldn't deploy more than 2 rep turrets the whole map.


Light armor uses energy too rapidly, it's just not worth taking over the medium.


E-pack boost is way too strong. A medium with an epack can float in the air indefinately.


Buckler shouldn't get stuck when hitting something if it's not on its way back. Also, I think it should travel a bit farther.


That's all I can think of now, and I promise I'll look into the grappler more. At least it will give me something to do until I wait for open beta :).
 
Amadeu5 said:
Light armor uses energy too rapidly, it's just not worth taking over the medium.
yeah.. medium flies better than light :p


the grapple just needs some damping put on the rebound thingy, so that you bounce back with less speed instead of equal or greater. that should fix the incredible speed problems and also make swinging smoother
 
That too, but it's too strong overall anyway, and it isn't even using the best way to determine when the line should break.


Without the ability to test it online though, this will be quite a task... :hrm:
 
yeah, the line breaking felt really inconsistent too. You could sometimes put an incredible snapping force on it before it broke... but when just swinging around in circles it seemed to break pretty easily
 
I"m not sure why CREVICE was on there, was that the map when you tried to join??

Might take a few days to get the rotation right.. but try again, Kata is on there, should work fine for ya.

You shouldn't have to do anything special to play Vengeance.. just load up T2 like normal, have the client installed and join the server. You may have to rebind a few keys.. like activating pack and such.
 
1.3a has been upped. Fixed the repair turret count problem. Lowered e-pack boost slightly, increased Med jet energy drain slightly, decreased health. Lowered light jet energy drain. Weakened missiles against players slightly and reduced camera shake+slowed missiles down slightly.
 
Alrighty. I really wanna get this mod working but I'm an idiot when it comes to moving files around and such. Without sounding like a hearthrob, what am I supposed to go to get this thing running and get on the server? Are the servers on the front page still up?

Update:

I tried extracting the whole client zip into the gamedata folder. and it made a vengeance folder so i thought i did something right.

i downloaded the bat and put it in gamedata and when i ran it, it said it couldnt find tribes2.exe

i went into the game and made a new filter to search for games with only the vengeance rule set. i found 4 servers. i tried to join one and looked like it loaded up fine. at the end it said i was missing interior idmiddle or something of the sort.
 
Last edited:
Rooster128 said:
Alrighty. I really wanna get this mod working but I'm an idiot when it comes to moving files around and such. Without sounding like a hearthrob, what am I supposed to go to get this thing running and get on the server? Are the servers on the front page still up?

Okay if you want to simply join a server:

1. Download the client off of page one. Put it in Tribes2\Gamedata\Base.

2. Go into Tribes 2, and put a button for "Activate Pack", and anything else you might want ("Mod Hud" is used to pick your spawn point, which is handy).

3. Go to the server list, setup a new filter, and change "Server Type" or whatever it is to "Vengeance".

4. Find a server, join, voila!

The batch file is only for servers methinks. As well, you don't have to extract the Vl2 file (it just leaves a bunch of messy files around), since Tribes 2 will simply load from it if it is in the base directory.
 
Well, I may or may not have fixed the grappler. I like to think I did.


I don't know who made the comment, but he hit the nail on the head with the energy out of nothing thing, because that's exactly what happened. I apparently made a mistake that allowed the total energy of the whole system to double itself with every check. Now when you grapple a moving target the sum of the forces applied to you and the target should be equal to that if you were grappling a building with the same speed, rope length etc. It's funny, because it seemed to be easier to drag around a shrike now.. then again, a shrike is ridiculously light compared to an armor.


Oh, and I fixed a bug that played the rope break sound every time you hit an invo if your last grapple ended in the breaking of the line. I'm only going to post the two functions I made changes to. I could just post the four lines I changed, but wth... better safe than sorry :)

Code:
function Player::moveGrappleSwingLoop(%player, %followObj)
{
   if(!isObject(%player))
      return;

   if(isEventPending(%player.grappleSchedule)) 
      cancel(%player.grappleSchedule);

   if(isObject(%player.rope))
      %player.rope.delete();

   // Stop if they have un-grappled
   if(%player.isHooked == false)
      return;

   if(%player.getState() !$= "Dead")
   {
      // Can't quite grapple to a non-existent object, can you?
      if(!isObject(%followObj)) {
         // If the object got destroyed then immediately disengage
         %player.disengageGrapple();
         return;
      }

      %SwingPos = VectorAdd(%followObj.getPosition(), VectorScale(%followObj.getVelocity(), $grapplingHook::scheduleTime / 1000));
      %vel = VectorSub(%followObj.getVelocity(), %player.getVelocity());
      %pos = %player.getPosition();
      %rad = VectorSub(%SwingPos, %pos);
      %dist = VectorLen(%rad);
      %radVel = VectorProject(%vel, %rad);

      // Ugly vector math beyond this point, keep out if you don't know what you're doing

      if (%dist > %player.grappleLength && %dist > %player.StretchLength && !%player.StartingGrapple
          && VectorDist(%SwingPos, VectorAdd(%pos, VectorScale(%vel, $grappleHook::scheduleTime / 1000))) > %player.grappleLength) {
	%tanVel = VectorProject(%vel, VectorCross(%rad, VectorCross(%rad, %vel)));
	%mass = %player.getDataBlock().mass;
	%force = mAbs(%dist * %radVel * %mass / %player.grappleLength);
	%tanStress = %tanVel * %tanVel * %mass / %dist;
	%value = %player.stretchLength / %player.GrappleLength * (%tanStress + %force);

	//echo(%player.StretchLength / %player.grappleLength);

	// Break the line if there's too much stress on it
	if (%value > 10000 * $GrappleHook::RopeStrength
	|| %player.StretchLength > 2.2 * %player.GrappleLength) {
		%player.LineIsBroken = true;
		%player.disengageGrapple();
	}

	else {
		%player.StretchLength = %dist;
		%targetMass = %followObj.getDatablock().mass;
		%totalMass = %mass + %targetMass;
		%vec = VectorScale(VectorNormalize(%rad), %force);
		%player.ApplyImpulse(%player.getPosition(), VectorScale(%vec, %targetmass/%totalMass));

		%followObj.applyImpulse(%SwingPos, VectorScale(%vec, -%mass / %totalMass));
		echo("************" NL "force:" SPC %force NL
		"total force:" SPC VectorLen(VectorScale(%vec, %targetmass/%totalMass)) + VectorLen(VectorScale(%vec, %mass/%totalMass)));
	}
      		
       }

      %player.StartingGrapple = false;


      // Create the rope
      %player.rope = new TargetProjectile() {
         datablock = GrappleBeam;
         sourceSlot = 0;
         //sourceObject = %player;
         initialPosition = %player.getMuzzlePoint(0);
         initialDirection = %vec;
      };

      // Add it to the MissionCleanup Simgroup
      MissionCleanup.add(%player.rope);

      %player.grappleSchedule = %player.schedule($GrappleHook::ScheduleTime, "moveGrappleSwingLoop", %followObj);
   }
}

function Player::disengageGrapple(%player)
{
   // Un-Grapple the player
   %player.isHooked = false;
   // If we were clumsy and broke the line then play a sound
   if (%player.LineIsBroken) {
	serverPlay3D(GrappleLineBreakSound, %player.getTransform());
	%player.LineIsBroken = false;
   }
   if(isObject(%player.rope))
      %player.rope.delete();

   if(isEventPending(%player.grappleSchedule)) 
      cancel(%player.grappleSchedule);
}
 
Back
Top