From 4c656ec404c01947a502e7a220cbcfe1ba97f281 Mon Sep 17 00:00:00 2001 From: ChocoTaco Date: Mon, 6 Nov 2023 17:07:44 -0500 Subject: [PATCH 1/3] Flag terrain fix --- Classic/scripts/autoexec/flagTunnelingFix.cs | 22 +++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Classic/scripts/autoexec/flagTunnelingFix.cs b/Classic/scripts/autoexec/flagTunnelingFix.cs index 04c875e..fb05288 100644 --- a/Classic/scripts/autoexec/flagTunnelingFix.cs +++ b/Classic/scripts/autoexec/flagTunnelingFix.cs @@ -57,19 +57,25 @@ package flagFix{ activatePackage(flagFix); function DefaultGame::flagColTest(%game, %flag){ - if( !%flag.isHome ){// keeps flags from getting stuck in ceilings +//flag ceiling check + if( !%flag.isHome ){ %flag.stuckChkTimer += $flagSimTime; - if(%flag.stuckChkTimer > $flagStuckTime){ - %fpos = %flag.getPosition(); - %upRay = containerRayCast(%fpos, vectorAdd(%fpos,"0 0 2.4"), $TypeMasks::InteriorObjectType | $TypeMasks::StaticObjectType | $TypeMasks::ForceFieldObjectType, %flag); - if(%upRay){ - %dist = vectorDist(%fpos,getWords(%upRay,1,3)); - //error(%dist); - %flag.setPosition(vectorSub(%fpos,"0 0" SPC (2.5 - %dist))); + if(%flag.stuckChkTimer > $flagStuckTime){ // rate limit are checks + if(vectorLen(%flag.getVelocity()) < 2){ // only check if we are not at speed + %fpos = %flag.getPosition(); + //0.1 offset any fp errors with the flag position being at ground level, 2.4 offset flag height offset + some extra + %upRay = containerRayCast(vectorAdd(%fpos,"0 0 0.1"), vectorAdd(%fpos,"0 0 2.4"), $TypeMasks::InteriorObjectType | $TypeMasks::StaticTSObjectType | $TypeMasks::ForceFieldObjectType, %flag); + if(%upRay){ + %dist = vectorDist(%fpos,getWords(%upRay,1,3)); + //error(%dist); + %flag.setPosition(vectorSub(%fpos,"0 0" SPC (2.5 - %dist))); + } } %flag.stuckChkTimer = 0; } } +//////////////////////////////////////////////////////////////////////////////// +//flag collision check %Box2 = %flag.getWorldBox(); InitContainerRadiusSearch( %flag.getWorldBoxCenter(), $flagCheckRadius, $TypeMasks::PlayerObjectType); while((%player = containerSearchNext()) != 0){ From 50af14e7bd9855d8a86cce5852f42bcc503c6221 Mon Sep 17 00:00:00 2001 From: ChocoTaco Date: Mon, 19 Feb 2024 00:56:33 -0500 Subject: [PATCH 2/3] LCTF - Dont delete FlagStands --- Classic/scripts/SCtFGame.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classic/scripts/SCtFGame.cs b/Classic/scripts/SCtFGame.cs index 221db34..4f24b44 100755 --- a/Classic/scripts/SCtFGame.cs +++ b/Classic/scripts/SCtFGame.cs @@ -2459,7 +2459,7 @@ function deleteNonSCtFObjects() $TypeMasks::TurretObjectType | $TypeMasks::VehicleObjectType | $TypeMasks::StaticShapeObjectType); //For FF: $TypeMasks::ForceFieldObjectType while ((%obj = containerSearchNext()) != 0) { - if(%obj.Datablock !$= "flag" && %obj.Datablock !$= "RepairKit" && %obj.Datablock !$= "RepairPatch") //Dont delete these... + if(%obj.Datablock !$= "flag" && %obj.Datablock !$= "RepairKit" && %obj.Datablock !$= "RepairPatch" && %obj.Datablock !$= "ExteriorFlagStand" && %obj.Datablock !$= "InteriorFlagStand") //Dont delete these... { %deleteList[%c] = %obj; %c++; From c4fe9224108cc47541e0e54068e9a2003f342b41 Mon Sep 17 00:00:00 2001 From: ChocoTaco Date: Mon, 19 Feb 2024 01:04:10 -0500 Subject: [PATCH 3/3] Add NexusBase --- Classic/scripts/SCtFGame.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classic/scripts/SCtFGame.cs b/Classic/scripts/SCtFGame.cs index 4f24b44..ecc86ba 100755 --- a/Classic/scripts/SCtFGame.cs +++ b/Classic/scripts/SCtFGame.cs @@ -2459,7 +2459,7 @@ function deleteNonSCtFObjects() $TypeMasks::TurretObjectType | $TypeMasks::VehicleObjectType | $TypeMasks::StaticShapeObjectType); //For FF: $TypeMasks::ForceFieldObjectType while ((%obj = containerSearchNext()) != 0) { - if(%obj.Datablock !$= "flag" && %obj.Datablock !$= "RepairKit" && %obj.Datablock !$= "RepairPatch" && %obj.Datablock !$= "ExteriorFlagStand" && %obj.Datablock !$= "InteriorFlagStand") //Dont delete these... + if(%obj.Datablock !$= "flag" && %obj.Datablock !$= "RepairKit" && %obj.Datablock !$= "RepairPatch" && %obj.Datablock !$= "ExteriorFlagStand" && %obj.Datablock !$= "InteriorFlagStand" && %obj.Datablock !$= "NexusBase") //Dont delete these... { %deleteList[%c] = %obj; %c++;