diff --git a/Classic/scripts/CTFGame.cs b/Classic/scripts/CTFGame.cs
index 5677f3c..bf65472 100755
--- a/Classic/scripts/CTFGame.cs
+++ b/Classic/scripts/CTFGame.cs
@@ -2019,7 +2019,7 @@ function CTFGame::awardScoreKill(%game, %killerID)
function checkVehicleCamping( %team )
{
%position = $flagPos[%team];
- %radius = 15;
+ %radius = 5;
InitContainerRadiusSearch(%position, %radius, $TypeMasks::VehicleObjectType );
while ((%vehicle = containerSearchNext()) != 0)
diff --git a/Classic/scripts/autoexec/TacoOverrides.cs b/Classic/scripts/autoexec/TacoOverrides.cs
index 640ee4b..0e8fb6e 100644
--- a/Classic/scripts/autoexec/TacoOverrides.cs
+++ b/Classic/scripts/autoexec/TacoOverrides.cs
@@ -323,17 +323,6 @@ function serverCmdScopeCommanderMap(%client, %scope)
%client.player.ccActive = %scope;
}
-//Mortar Throw Reload Fix
-// function ShapeBase::throwWeapon(%this)
-// {
-// if((%this.getMountedImage($WeaponSlot).getName() $= "MortarImage" || %this.getMountedImage($WeaponSlot).getName() $= "MissileLauncherImage" || %this.getMountedImage($WeaponSlot).getName() $= "ShockLanceImage") &&
-// (%this.getImageState($WeaponSlot) $= "Reload" || %this.getImageState($WeaponSlot) $= "Fire")){
-// return;
-// }
-
-// parent::throwWeapon(%this);
-// }
-
// Added object check
function VehicleData::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType, %momVec, %theClient, %proj)
diff --git a/Classic/scripts/defaultGame.cs b/Classic/scripts/defaultGame.cs
index 46f4386..64609f6 100644
--- a/Classic/scripts/defaultGame.cs
+++ b/Classic/scripts/defaultGame.cs
@@ -459,9 +459,9 @@ function DefaultGame::createPlayer(%game, %client, %spawnLoc, %respawn)
if(%respawn)
{
%player.setInvincible(true);
- %player.setCloaked(true); // z0dd - ZOD, 8/6/02. Don't spawn players cloaked //was //
+ //%player.setCloaked(true); // z0dd - ZOD, 8/6/02. Don't spawn players cloaked
%player.setInvincibleMode($InvincibleTime,0.02);
- %player.respawnCloakThread = %player.schedule($InvincibleTime * 50, "setRespawnCloakOff"); // z0dd - ZOD, 8/6/02. Don't spawn players cloaked //was 1000
+ //%player.respawnCloakThread = %player.schedule($InvincibleTime * 50, "setRespawnCloakOff"); // z0dd - ZOD, 8/6/02. Don't spawn players cloaked //was 1000
%player.schedule($InvincibleTime * 1000, "setInvincible", false);
}
diff --git a/Classic/scripts/packs/cloakingpack.cs b/Classic/scripts/packs/cloakingpack.cs
index b21ae1c..5ed4048 100755
--- a/Classic/scripts/packs/cloakingpack.cs
+++ b/Classic/scripts/packs/cloakingpack.cs
@@ -34,7 +34,7 @@ datablock AudioDescription(CloakLooping3d)
is3D = true;
minDistance= 10.0;
- MaxDistance= 55.0; //Was 50
+ MaxDistance= 50.0;
type = $EffectAudioType;
environmentLevel = 1.0;
};
diff --git a/Classic/scripts/packs/sensorjammerpack.cs b/Classic/scripts/packs/sensorjammerpack.cs
index b7085ef..2ac0e64 100644
--- a/Classic/scripts/packs/sensorjammerpack.cs
+++ b/Classic/scripts/packs/sensorjammerpack.cs
@@ -64,7 +64,7 @@ datablock ItemData(SensorJammerPack)
};
-datablock SensorData(JammerSensorObjectPassive) //v2 was commented out...
+datablock SensorData(JammerSensorObjectPassive)
{
// same detection info as 'PlayerObject' sensorData
detects = true;
@@ -76,7 +76,7 @@ datablock SensorData(JammerSensorObjectPassive) //v2 was commented out...
detectFOVPercent = 1.3;
useObjectFOV = true;
- detectscloaked = 1; //v2
+ //detectscloaked = 1; //v2
jams = true;
jamsOnlyGroup = true;
@@ -96,52 +96,55 @@ datablock SensorData(JammerSensorObjectActive)
detectFOVPercent = 1.3;
useObjectFOV = true;
- detectscloaked = 1; //v2
+ //detectscloaked = 1; //v2
jams = true;
jamsOnlyGroup = true;
jamsUsingLOS = true;
- jamRadius = 45; //was 30
+ jamRadius = 30;
};
function SensorJammerPackImage::onMount(%data, %obj, %slot)
{
- setTargetSensorData(%obj.client.target, JammerSensorObjectPassive); //v2
- %obj.setImageTrigger(%slot, false);
- commandToClient( %obj.client, 'setSenJamIconOff' );
- %obj.setJammerFX(false);
+ setTargetSensorData(%obj.client.target, JammerSensorObjectPassive);
}
-function deactivateJammer(%data, %obj, %slot)
+function SensorJammerPackImage::onUnmount(%data, %obj, %slot)
{
- SensorJammerPackImage::onDeactivate(%data, %obj, %slot);
-}
-
-function SensorJammerPackImage::onUnmount(%data, %obj, %slot) //v2
-{
- %obj.setImageTrigger(%slot, false);
setTargetSensorData(%obj.client.target, PlayerSensor);
+ %obj.setImageTrigger(%slot, false);
}
function SensorJammerPackImage::onActivate(%data, %obj, %slot)
{
messageClient(%obj.client, 'MsgSensorJammerPackOn', '\c2Sensor jammer pack on.');
setTargetSensorData(%obj.client.target, JammerSensorObjectActive);
+ // z0dd - ZOD, 9/29/02. Removed T2 demo code from here
commandToClient( %obj.client, 'setSenJamIconOn' );
+
%obj.setJammerFX( true );
}
function SensorJammerPackImage::onDeactivate(%data, %obj, %slot)
{
messageClient(%obj.client, 'MsgSensorJammerPackOff', '\c2Sensor jammer pack off.');
- setTargetSensorData(%obj.client.target, PlayerSensor); //v2 H bug fix
%obj.setImageTrigger(%slot, false);
- setTargetSensorData(%obj.client.target, JammerSensorObjectPassive); //v2 was PlayerSensor
+
+ // ----------------------------------------------------------------------
+ // z0dd - ZOD, 4/25/02. This function is actually getting called AFTER
+ // ::onUnmount. We must check to see what the players current sensor data
+ // is, then if it is NOT PlayerSensor, set to passive jam, bug fix.
+ if(getTargetSensorData(%obj.client.target).getName() !$= "PlayerSensor")
+ setTargetSensorData(%obj.client.target, JammerSensorObjectPassive);
+ // ----------------------------------------------------------------------
+
+ // z0dd - ZOD, 9/29/02. Removed T2 demo code from here
commandToClient( %obj.client, 'setSenJamIconOff' );
+
%obj.setJammerFX( false );
}
-
-function SensorJammerPack::onPickup(%this, %obj, %shape, %amount)
-{
-//Nope
-}
+// z0dd - ZOD, 5/18/03. Removed functions, created parent. Streamline.
+//function SensorJammerPack::onPickup(%this, %obj, %shape, %amount)
+//{
+ // created to prevent console errors
+//}
diff --git a/Classic/scripts/player.cs b/Classic/scripts/player.cs
index 5139f30..d9558c1 100755
--- a/Classic/scripts/player.cs
+++ b/Classic/scripts/player.cs
@@ -1085,8 +1085,8 @@ datablock ParticleData(LightPuff)
textureName = "particleTest";
colors[0] = "0.46 0.36 0.26 0.4";
colors[1] = "0.46 0.46 0.36 0.0";
- sizes[0] = 0.8; //was 0.4
- sizes[1] = 1.4; //was 1.0
+ sizes[0] = 0.4;
+ sizes[1] = 1.0;
};
datablock ParticleEmitterData(LightPuffEmitter)
@@ -1123,9 +1123,9 @@ datablock ParticleData(LiftoffDust)
colors[0] = "0.46 0.36 0.26 0.0";
colors[1] = "0.46 0.46 0.36 0.4";
colors[2] = "0.46 0.46 0.36 0.0";
- sizes[0] = 0.6; //was 0.2
- sizes[1] = 1.0; //was 0.6
- sizes[2] = 1.4; //was 1.0
+ sizes[0] = 0.2;
+ sizes[1] = 0.6;
+ sizes[2] = 1.0;
times[0] = 0.0;
times[1] = 0.5;
times[2] = 1.0;
@@ -1765,7 +1765,7 @@ datablock PlayerData(HeavyMaleHumanArmor) : HeavyPlayerDamageProfile
//Value changed halfway between base and classic.
//Classic is 54, Base is 75
//Shield breaks right at two mine-disc
- energyPerDamagePoint = 60.0; // shield energy required to block one point of damage
+ energyPerDamagePoint = 54.0; // shield energy required to block one point of damage
rechargeRate = 0.256;
jetForce = 29.58 * 180;
diff --git a/Classic/scripts/vehicles/vehicle_tank.cs b/Classic/scripts/vehicles/vehicle_tank.cs
index 6cac286..55432e7 100755
--- a/Classic/scripts/vehicles/vehicle_tank.cs
+++ b/Classic/scripts/vehicles/vehicle_tank.cs
@@ -235,7 +235,7 @@ datablock HoverVehicleData(AssaultVehicle) : TankDamageProfile
isShielded = true;
rechargeRate = 1.0;
- energyPerDamagePoint = 142; //was 135
+ energyPerDamagePoint = 135;
maxEnergy = 400;
minJetEnergy = 15;
jetEnergyDrain = 2.0;
diff --git a/Classic/scripts/weapons/flashGrenade.cs b/Classic/scripts/weapons/flashGrenade.cs
index 7bb3eda..7241668 100755
--- a/Classic/scripts/weapons/flashGrenade.cs
+++ b/Classic/scripts/weapons/flashGrenade.cs
@@ -37,7 +37,7 @@ datablock ItemData(FlashGrenadeThrown)
radiusDamageType = $DamageType::Grenade;
kickBackStrength = 1000;
computeCRC = true;
- maxWhiteout = 0.78; // z0dd - ZOD, 9/8/02. Was 1.2 //Reduced. Was 0.9 Choco
+ maxWhiteout = 0.9; // z0dd - ZOD, 9/8/02. Was 1.2
};
datablock ItemData(FlashGrenade)
diff --git a/Classic/scripts/weapons/missileLauncher.cs b/Classic/scripts/weapons/missileLauncher.cs
index abaec08..65063fe 100644
--- a/Classic/scripts/weapons/missileLauncher.cs
+++ b/Classic/scripts/weapons/missileLauncher.cs
@@ -2,6 +2,37 @@
// Missile launcher
//--------------------------------------
+//--------------------------------------------------------------------------
+// Force-Feedback Effects
+//--------------------------------------
+datablock EffectProfile(MissileSwitchEffect)
+{
+ effectname = "weapons/missile_launcher_activate";
+ minDistance = 2.5;
+ maxDistance = 2.5;
+};
+
+datablock EffectProfile(MissileFireEffect)
+{
+ effectname = "weapons/missile_fire";
+ minDistance = 2.5;
+ maxDistance = 5.0;
+};
+
+datablock EffectProfile(MissileDryFireEffect)
+{
+ effectname = "weapons/missile_launcher_dryfire";
+ minDistance = 2.5;
+ maxDistance = 2.5;
+};
+
+datablock EffectProfile(MissileExplosionEffect)
+{
+ effectname = "explosions/explosion.xpl23";
+ minDistance = 10;
+ maxDistance = 30;
+};
+
//--------------------------------------------------------------------------
// Sounds
//--------------------------------------
@@ -10,6 +41,7 @@ datablock AudioProfile(MissileSwitchSound)
filename = "fx/weapons/missile_launcher_activate.wav";
description = AudioClosest3d;
preload = true;
+ effect = MissileSwitchEffect;
};
datablock AudioProfile(MissileFireSound)
@@ -17,6 +49,7 @@ datablock AudioProfile(MissileFireSound)
filename = "fx/weapons/missile_fire.WAV";
description = AudioDefault3d;
preload = true;
+ effect = MissileFireEffect;
};
datablock AudioProfile(MissileProjectileSound)
@@ -45,6 +78,7 @@ datablock AudioProfile(MissileExplosionSound)
filename = "fx/explosions/explosion.xpl23.wav";
description = AudioBIGExplosion3d;
preload = true;
+ effect = MissileExplosionEffect;
};
datablock AudioProfile(MissileDryFireSound)
@@ -52,6 +86,7 @@ datablock AudioProfile(MissileDryFireSound)
filename = "fx/weapons/missile_launcher_dryfire.wav";
description = AudioClose3d;
preload = true;
+ effect = MissileDryFireEffect;
};
@@ -727,9 +762,9 @@ datablock ShapeBaseImageData(MissileLauncherImage)
stateSequence[0] = "Activate";
stateSound[0] = MissileSwitchSound;
- stateName[1] = "ActivateReady";
- stateTransitionOnAmmo[1] = "Ready";
- stateTransitionOnNoAmmo[1] = "FirstLoad";
+ stateName[1] = "ActivateReady";
+ stateTransitionOnLoaded[1] = "Ready";
+ stateTransitionOnNoAmmo[1] = "NoAmmo";
stateName[2] = "Ready";
stateTransitionOnNoAmmo[2] = "NoAmmo";
@@ -792,9 +827,6 @@ datablock ShapeBaseImageData(MissileLauncherImage)
stateSequence[10] = "Fire";
stateScript[10] = "onDumbFire";
stateSound[10] = MissileFireSound;
-
- stateName[11] = "FirstLoad";
- stateTransitionOnAmmo[11] = "Ready";
};
function MissileLauncherImage::onDumbFire(%data,%obj,%slot)
@@ -815,42 +847,3 @@ function MissileLauncherImage::onDumbFire(%data,%obj,%slot)
%obj.decInventory(%data.ammo, 1);
return %p;
}
-function MissileLauncherImage::onUnmount(%this,%obj,%slot){
- parent::onUnmount(%this,%obj,%slot);
- if(isEventPending(%obj.reloadDelaySch))
- cancel(%obj.reloadDelaySch);
-}
-function MissileLauncherImage::onMount(%this,%obj,%slot){
-
- if(%obj.getClassName() !$= "Player")
- return;
-
- if (%this.armthread $= "")
- %obj.setArmThread(look);
- else
- %obj.setArmThread(%this.armThread);
-
- if(%obj.getMountedImage($WeaponSlot).ammo !$= ""){
- if (%obj.getInventory(%this.ammo)){
-
- %fireAndReloadTime = mFloor((%this.stateTimeoutValue[4] + %this.stateTimeoutValue[3]) * 1000);
-
- if(%obj.lfireTime[%this.getName()] && (getSimTime() - %obj.lfireTime[%this.getName()]) < %fireAndReloadTime){
- if(isEventPending(%obj.reloadDelaySch)){
- cancel(%obj.reloadDelaySch);
- }
- %time = mFloor(%fireAndReloadTime - (getSimTime() - %obj.lfireTime[%this.getName()]));
- %obj.reloadDelaySch = schedule(%time, 0, "ammoStateDelay", %obj, %slot, true);
- }
- else{
- %obj.setImageAmmo(%slot,true);
- }
- }
- }
-
- %obj.client.setWeaponsHudActive(%this.item);
- if(%obj.getMountedImage($WeaponSlot).ammo !$= "")
- %obj.client.setAmmoHudCount(%obj.getInventory(%this.ammo));
- else
- %obj.client.setAmmoHudCount(-1);
-}
\ No newline at end of file
diff --git a/Classic/scripts/weapons/mortar.cs b/Classic/scripts/weapons/mortar.cs
index 876ee09..4d33872 100644
--- a/Classic/scripts/weapons/mortar.cs
+++ b/Classic/scripts/weapons/mortar.cs
@@ -2,6 +2,44 @@
// Mortar
//--------------------------------------
+//--------------------------------------------------------------------------
+// Force-Feedback Effects
+//--------------------------------------
+datablock EffectProfile(MortarSwitchEffect)
+{
+ effectname = "weapons/mortar_activate";
+ minDistance = 2.5;
+ maxDistance = 2.5;
+};
+
+datablock EffectProfile(MortarFireEffect)
+{
+ effectname = "weapons/mortar_fire";
+ minDistance = 2.5;
+ maxDistance = 5.0;
+};
+
+datablock EffectProfile(MortarReloadEffect)
+{
+ effectname = "weapons/mortar_reload";
+ minDistance = 2.5;
+ maxDistance = 2.5;
+};
+
+datablock EffectProfile(MortarDryFireEffect)
+{
+ effectname = "weapons/mortar_dryfire";
+ minDistance = 2.5;
+ maxDistance = 2.5;
+};
+
+datablock EffectProfile(MortarExplosionEffect)
+{
+ effectname = "explosions/explosion.xpl03";
+ minDistance = 30;
+ maxDistance = 65;
+};
+
//--------------------------------------------------------------------------
// Sounds
//--------------------------------------
@@ -10,6 +48,7 @@ datablock AudioProfile(MortarSwitchSound)
filename = "fx/weapons/mortar_activate.wav";
description = AudioClosest3d;
preload = true;
+ effect = MortarSwitchEffect;
};
datablock AudioProfile(MortarReloadSound)
@@ -17,6 +56,7 @@ datablock AudioProfile(MortarReloadSound)
filename = "fx/weapons/mortar_reload.wav";
description = AudioClosest3d;
preload = true;
+ effect = MortarReloadEffect;
};
datablock AudioProfile(MortarIdleSound)
@@ -25,6 +65,7 @@ datablock AudioProfile(MortarIdleSound)
filename = "fx/weapons/plasma_rifle_idle.wav";
description = ClosestLooping3d;
preload = true;
+ effect = PlasmaIdleEffect;
};
datablock AudioProfile(MortarFireSound)
@@ -32,6 +73,7 @@ datablock AudioProfile(MortarFireSound)
filename = "fx/weapons/mortar_fire.wav";
description = AudioDefault3d;
preload = true;
+ effect = MortarFireEffect;
};
datablock AudioProfile(MortarProjectileSound)
@@ -46,6 +88,7 @@ datablock AudioProfile(MortarExplosionSound)
filename = "fx/weapons/mortar_explode.wav";
description = AudioBIGExplosion3d;
preload = true;
+ effect = MortarExplosionEffect;
};
datablock AudioProfile(UnderwaterMortarExplosionSound)
@@ -53,6 +96,7 @@ datablock AudioProfile(UnderwaterMortarExplosionSound)
filename = "fx/weapons/mortar_explode_UW.wav";
description = AudioBIGExplosion3d;
preload = true;
+ effect = MortarExplosionEffect;
};
datablock AudioProfile(MortarDryFireSound)
@@ -60,6 +104,7 @@ datablock AudioProfile(MortarDryFireSound)
filename = "fx/weapons/mortar_dryfire.wav";
description = AudioClose3d;
preload = true;
+ effect = MortarDryFireEffect;
};
//----------------------------------------------------------------------------
@@ -740,8 +785,8 @@ datablock ShapeBaseImageData(MortarImage)
stateSound[0] = MortarSwitchSound;
stateName[1] = "ActivateReady";
- stateTransitionOnAmmo[1] = "Ready";
- stateTransitionOnNoAmmo[1] = "FirstLoad";
+ stateTransitionOnLoaded[1] = "Ready";
+ stateTransitionOnNoAmmo[1] = "NoAmmo";
stateName[2] = "Ready";
stateTransitionOnNoAmmo[2] = "NoAmmo";
@@ -775,50 +820,4 @@ datablock ShapeBaseImageData(MortarImage)
stateSound[6] = MortarDryFireSound;
stateTimeoutValue[6] = 1.5;
stateTransitionOnTimeout[6] = "NoAmmo";
-
- stateName[7] = "FirstLoad";
- stateTransitionOnAmmo[7] = "Ready";
};
-
-function MortarImage::onUnmount(%this,%obj,%slot){
- parent::onUnmount(%this,%obj,%slot);
- if(isEventPending(%obj.reloadDelaySch))
- cancel(%obj.reloadDelaySch);
-}
-function MortarImage::onMount(%this,%obj,%slot){
-
- if(%obj.getClassName() !$= "Player")
- return;
-
- if (%this.armthread $= "")
- %obj.setArmThread(look);
- else
- %obj.setArmThread(%this.armThread);
-
- if(%obj.getMountedImage($WeaponSlot).ammo !$= ""){
- if (%obj.getInventory(%this.ammo)){
- %fireAndReloadTime = mFloor((%this.stateTimeoutValue[4] + %this.stateTimeoutValue[3]) * 1000);
- if(%obj.lfireTime[%this.getName()] && (getSimTime() - %obj.lfireTime[%this.getName()]) < %fireAndReloadTime){
- if(isEventPending(%obj.reloadDelaySch)){
- cancel(%obj.reloadDelaySch);
- }
- %time = mFloor(%fireAndReloadTime - (getSimTime() - %obj.lfireTime[%this.getName()]));
- %obj.reloadDelaySch = schedule(%time, 0, "ammoStateDelay", %obj, %slot, true);
- }
- else{
- %obj.setImageAmmo(%slot,true);
- }
- }
- }
-
- %obj.client.setWeaponsHudActive(%this.item);
- if(%obj.getMountedImage($WeaponSlot).ammo !$= "")
- %obj.client.setAmmoHudCount(%obj.getInventory(%this.ammo));
- else
- %obj.client.setAmmoHudCount(-1);
-}
-
-function ammoStateDelay(%obj, %slot, %state){
- if(isObject(%obj) && %obj.getState() !$= "Dead")
- %obj.setImageAmmo(%slot, %state);
-}
\ No newline at end of file
diff --git a/README.md b/README.md
index 568c238..1a83266 100644
--- a/README.md
+++ b/README.md
@@ -45,19 +45,20 @@ Discord: [Tribes 2 Discord](https://playt2.com/discord)
---
### Important Gameplay Changes over stock classic
- - OG blaster buffed for Heavy Armors
- - No Vehicle Zone around flag is bigger 5 >> 15
- - Heavy Shield Nerfed (54 to block 1 DMG, is now 60)
+ - OG blaster buffed against Heavy Armors (Not Tournament Mode Only)
- Max FOV 120 >> 138 (For Wide Screens)
- - Item respawn time can be changed (default 30)
- - Cloak Sound 50m >> 55m
- - Bigger ground dust puffs (For cloak) 0.4 larger
- - Sensor Jammer jam radius is buffed to jam cloaks 30 >> 45
- - Sensor Jammer can passively see cloaker's triangle
- - Mortor reload rework (Player can throw, but must wait until reload time has passed)
- - Tank Shield Nerf (135 to block 1 DMG, is now 142)
- - Whiteout grenades are less seizurely (Due to spamming) 0.9 >> 0.78
- - All water viscosity follows a global preset
+ - Item respawn time can be changed (Optional)
+ - All water viscosity follows a global preset (3)
+ - No Vehicle Zone around flag is bigger 5 >> 15
+ - Heavy Shield Nerfed (54 to block 1 DMG, is now 60)
+ - Cloak Sound 50m >> 55m
+ - Bigger ground dust puffs (For cloak) 0.4 larger
+ - Sensor Jammer jam radius is buffed to jam cloaks 30 >> 45
+ - Sensor Jammer can passively see cloaker's triangle
+ - Mortor reload rework (Player can throw, but must wait until reload time has passed)
+ - Tank Shield Nerf (135 to block 1 DMG, is now 142)
+ - Whiteout grenades are less seizurely (Due to spamming) 0.9 >> 0.78
+ - Spawn fade-in effect
---