From e96039866f74e6fd16e2b65f3be29af98772d4f7 Mon Sep 17 00:00:00 2001 From: ChocoTaco1 Date: Sat, 27 Sep 2025 17:49:57 -0400 Subject: [PATCH] Comp Reversions --- Classic/scripts/CTFGame.cs | 2 +- Classic/scripts/autoexec/TacoOverrides.cs | 11 --- Classic/scripts/defaultGame.cs | 4 +- Classic/scripts/packs/cloakingpack.cs | 2 +- Classic/scripts/packs/sensorjammerpack.cs | 47 ++++++----- Classic/scripts/player.cs | 12 +-- Classic/scripts/vehicles/vehicle_tank.cs | 2 +- Classic/scripts/weapons/flashGrenade.cs | 2 +- Classic/scripts/weapons/missileLauncher.cs | 83 +++++++++---------- Classic/scripts/weapons/mortar.cs | 95 +++++++++++----------- README.md | 25 +++--- 11 files changed, 135 insertions(+), 150 deletions(-) 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 ---