diff --git a/Classic/scripts/autoexec/MidAirDetRep.cs b/Classic/scripts/autoexec/MidairDetection.cs similarity index 100% rename from Classic/scripts/autoexec/MidAirDetRep.cs rename to Classic/scripts/autoexec/MidairDetection.cs diff --git a/Classic/scripts/autoexec/MissionTypeOptions.cs b/Classic/scripts/autoexec/MissionTypeOptions.cs index daa7f86..e5bf44d 100644 --- a/Classic/scripts/autoexec/MissionTypeOptions.cs +++ b/Classic/scripts/autoexec/MissionTypeOptions.cs @@ -20,11 +20,11 @@ function loadMissionStage2() switch$($Host::PUGpasswordAlwaysOn) { case 0: - if( $CurrentMissionType !$= "LakRabbit" ) + if($CurrentMissionType !$= "LakRabbit") { - if( $Host::TournamentMode && $Host::PUGautoPassword ) + if($Host::TournamentMode && $Host::PUGautoPassword) $Host::Password = $Host::PUGPassword; - else if( !$Host::TournamentMode ) + else if(!$Host::TournamentMode) { if($Host::Password) $Host::Password = ""; @@ -35,7 +35,7 @@ function loadMissionStage2() //Set server mode to SPEED $Host::HiVisibility = "0"; } - else if( $CurrentMissionType $= "LakRabbit" ) + else if($CurrentMissionType $= "LakRabbit") { if($Host::Password) $Host::Password = ""; @@ -53,7 +53,7 @@ function loadMissionStage2() } //Siege NoBaseRape Fix - if( $CurrentMissionType $= "Siege" ) + if($CurrentMissionType $= "Siege") $Host::NoBaseRapeEnabled = 0; else $Host::NoBaseRapeEnabled = 1; diff --git a/Classic/scripts/autoexec/TeamManagement.cs b/Classic/scripts/autoexec/TeamManagement.cs index 36532cb..970a4eb 100644 --- a/Classic/scripts/autoexec/TeamManagement.cs +++ b/Classic/scripts/autoexec/TeamManagement.cs @@ -24,18 +24,9 @@ function CreateServer( %mission, %missionType ) //Call for a GetTeamCount update GetTeamCounts(%game); - // Set when server starts - // Used to reset timelimit (if voted) when map changes - $DefaultTimeLimit = $Host::TimeLimit; - // Prevent package from being activated if it is already if (!isActivePackage(TeamCountsTriggers)) activatePackage(TeamCountsTriggers); - - // Auto Daily Hard Server Restart at a specific time - // getTimeDif from zDarkTigerStats.cs - if($dtStats::version) - schedule(getTimeDif("10\t00\tam"),0,"quit"); } }; diff --git a/Classic/scripts/autoexec/VoteMenu.cs b/Classic/scripts/autoexec/VoteMenu.cs index 783c46f..dc81da6 100644 --- a/Classic/scripts/autoexec/VoteMenu.cs +++ b/Classic/scripts/autoexec/VoteMenu.cs @@ -449,10 +449,13 @@ function serverCmdStartNewVote(%client, %typeName, %arg1, %arg2, %arg3, %arg4, % } case "stopRunningVote": - if(%client.isSuperAdmin || (%client.isAdmin && $Host::AllowAdminStopVote)) + if($VOStatus !$="InProgress") //Dont allow a stop vote after time has expired, then no new time is set - VoteOverTime { - adminStartNewVote(%client, %typename, %arg1, %arg2, %arg3, %arg4); - adminLog(%client, " stopped the vote in progress."); + if(%client.isSuperAdmin || (%client.isAdmin && $Host::AllowAdminStopVote)) + { + adminStartNewVote(%client, %typename, %arg1, %arg2, %arg3, %arg4); + adminLog(%client, " stopped the vote in progress."); + } } // LakRabbit Stuff diff --git a/Classic/scripts/autoexec/VoteOverTime.cs b/Classic/scripts/autoexec/VoteOverTime.cs index 87a52c8..314beb2 100644 --- a/Classic/scripts/autoexec/VoteOverTime.cs +++ b/Classic/scripts/autoexec/VoteOverTime.cs @@ -3,7 +3,7 @@ // Dont allow the match to end if a time vote is pending // Or if the timelimit has changed // -// Changes were also made in the Evo Admin.ovl and DefaultGame.ovl +// Changes were also made in how time votes are handled in scripts/autoexec/VoteMenu.cs // DefaultGame::voteChangeMission, DefaultGame::voteChangeTimeLimit, serverCmdStartNewVote // // The VoteChangeTimeLimit functions in evo dictate VOStatus conditions @@ -25,7 +25,7 @@ function DefaultGame::checkTimeLimit(%game, %forced) %game.timeCheck = %game.schedule(20000, "checkTimeLimit"); return; } - + %curTimeLeftMS = ($Host::TimeLimit * 60 * 1000) + $missionStartTime - getSimTime(); if (%curTimeLeftMS <= 0) @@ -43,9 +43,9 @@ function DefaultGame::checkTimeLimit(%game, %forced) } case InProgress: //Do Nothing - case TimeChanged: + case TimeChanged: //Do Nothing - case Normal: + case Normal: // time's up, put down your pencils %game.timeLimitReached(); } @@ -65,7 +65,7 @@ function DefaultGame::checkTimeLimit(%game, %forced) function DefaultGame::gameOver(%game) { Parent::gameOver(%game); - + //Reset everything to do with Vote Overtime ResetVOall(%game); } @@ -95,4 +95,4 @@ function ResetVOall(%game) // Prevent package from being activated if it is already if (!isActivePackage(VoteOverTime)) - activatePackage(VoteOverTime); \ No newline at end of file + activatePackage(VoteOverTime); diff --git a/Classic/scripts/autoexec/zDarkTigerAFK.cs b/Classic/scripts/autoexec/zAFK.cs similarity index 100% rename from Classic/scripts/autoexec/zDarkTigerAFK.cs rename to Classic/scripts/autoexec/zAFK.cs diff --git a/Classic/scripts/autoexec/zDarkTigerStats.cs b/Classic/scripts/autoexec/zStats.cs similarity index 100% rename from Classic/scripts/autoexec/zDarkTigerStats.cs rename to Classic/scripts/autoexec/zStats.cs diff --git a/Classic/scripts/server.cs b/Classic/scripts/server.cs index 4221725..0265cae 100755 --- a/Classic/scripts/server.cs +++ b/Classic/scripts/server.cs @@ -234,6 +234,15 @@ function CreateServer(%mission, %missionType) // TraversalRoot Console spam fix if($Host::ClassicSuppressTraversalRootError) suppressTraversalRootPatch(); + + // Set when server starts + // Used to reset timelimit (if voted) when map changes + $DefaultTimeLimit = $Host::TimeLimit; + + // Auto Daily Hard Server Restart at a specific time + // getTimeDif from zDarkTigerStats.cs + if($dtStats::version) + schedule(getTimeDif("10\t00\tam"),0,"quit"); //10AM server time } function initGameBots( %mission, %mType ) @@ -815,7 +824,7 @@ function GameConnection::onConnect( %client, %name, %raceGender, %skin, %voice, //Changed to allow botskins %temp = detag( %skin ); if(%temp $= "") - %client.skin = addTaggedString( "base" ); + %client.skin = addTaggedString( "base" ); else %client.skin = addTaggedString( %skin ); diff --git a/Classic/scripts/weapons/flashGrenade.cs b/Classic/scripts/weapons/flashGrenade.cs new file mode 100755 index 0000000..7bb3eda --- /dev/null +++ b/Classic/scripts/weapons/flashGrenade.cs @@ -0,0 +1,64 @@ +// grenade (thrown by hand) script +// ------------------------------------------------------------------------ +datablock EffectProfile(FlashGrenadeExplosionEffect) +{ + effectname = "explosions/grenade_flash_explode"; + minDistance = 10; + maxDistance = 30; +}; + +datablock AudioProfile(FlashGrenadeExplosionSound) +{ + filename = "fx/explosions/grenade_flash_explode.wav"; + description = AudioExplosion3d; + preload = true; + effect = FlashGrenadeExplosionEffect; +}; + +datablock ExplosionData(FlashGrenadeExplosion) +{ + explosionShape = "disc_explosion.dts"; + soundProfile = FlashGrenadeExplosionSound; + + faceViewer = true; +}; + +datablock ItemData(FlashGrenadeThrown) +{ + shapeFile = "grenade_flash.dts"; // z0dd - ZOD, 5/19/03. Was grenade.dts + mass = 0.7; + elasticity = 0.2; + friction = 1; + pickupRadius = 2; + maxDamage = 0.4; + explosion = FlashGrenadeExplosion; + indirectDamage = 0.5; + damageRadius = 10.0; + radiusDamageType = $DamageType::Grenade; + kickBackStrength = 1000; + computeCRC = true; + maxWhiteout = 0.78; // z0dd - ZOD, 9/8/02. Was 1.2 //Reduced. Was 0.9 Choco +}; + +datablock ItemData(FlashGrenade) +{ + className = HandInventory; + catagory = "Handheld"; + shapeFile = "grenade_flash.dts"; // z0dd - ZOD, 5/19/03. Was grenade.dts + mass = 0.7; + elasticity = 0.2; + friction = 1; + pickupRadius = 2; + thrownItem = FlashGrenadeThrown; + pickUpName = "some flash grenades"; + isGrenade = true; + //computeCRC = true; // z0dd - ZOD, 5/19/03. Only need to check this model once. +}; + +//-------------------------------------------------------------------------- +// Functions: +//-------------------------------------------------------------------------- +function FlashGrenadeThrown::onCollision( %data, %obj, %col ) +{ + // Do nothing... +} diff --git a/README.md b/README.md index 5499e0a..01cb241 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Tribes 2](https://cdn.discordapp.com/attachments/521797012014759970/678460505597149214/TacoServer.png) +![Tribes 2](https://cdn.discordapp.com/attachments/521797012014759970/678460505597149214/TacoServer.png) # TacoServer ## A Tribes 2 server with competitive features that is also open-source. @@ -10,32 +10,33 @@ Discord: [Tribes 2 Discord](https://discord.gg/Y4muNvF) ### Features - - Improved NoBaseRape Asset handling - - An Independant Team Population Counter - - Team-balance notifys - - NoBaseRape notifys + - Built Light-Weight - Team Autobalancing - - Minimum Cloakpack Management - - Minimum Turret Management - - MortarTurret Management - - Loading screen customization options - - Vote Overtime - - Vote in Progress chimes - - Extended 3-2 minute timeleft warnings - - Show Next Map player options - - Simplified player options menu - - Observer cooldown - - Set the Next Mission options - - Map Repetition Checker + - Team-Balance and Base Rape Messages + - Pack Restrictions + - No Base Rape based on Population + - Turret Activation based on Population + - Loading screen customization + - Time warnings + - Late Time Voting + - Vote chimes + - Vote Restricting + - Bug Fixes + - Map Stats + - Full Players Stats + - In-Game Stats Viewable - Improved Map Rotation - - PUG password Management - - Improved LakRabbit experience - - Extended LakRabbit debriefing - - Improved LCTF experience - - Improved Deathmatch experience - - Pro Mode for LCTF - - Shocklance Only Mode for Deathmatch - - Full Stats System + - PUG password options + - Ability to Lock Teams + - Disable/Enable Tournament Net Client In-Game + - LakRabbit improvements + - Various tweaks for PUBs + - Added Deathmatch, LCTF + - Support for Siege + - Shocklance Only Deathmatch Mode + - Admin Logging + - Teamkill Warnings + - General Improvments --- @@ -45,14 +46,15 @@ Discord: [Tribes 2 Discord](https://discord.gg/Y4muNvF) ### Prerequisites - Classic 1.5.2 - + - TribesNext Patch ### Setup - Meant to be installed on top of Classic 1.5.2 - - If the file isnt on this github it is unmodified in Classic 1.5.2 - - Place github server files in Classic folder + - If a file isnt on this github it is unmodified in Classic 1.5.2 + - Extract Classic 1.5.2 to GameData folder + - Place files from this github in Classic folder (Overwriting old files) - Run once to create Serverprefs - - Open Classic/Pref/Serverpref.cs and modify to your wishes + - Open Classic/Prefs/Serverprefs.cs in notepad and modify - Run using Classic_dedicated_server.bat ---- @@ -60,6 +62,5 @@ Discord: [Tribes 2 Discord](https://discord.gg/Y4muNvF) ### Credits & Thanks - BattleLore for this template and help - The T2 community for the free testing - - DarkTiger + - DarkTiger, Ravin, Krash - The TribesNext community - - Some very specific people for all their harsh criticism \ No newline at end of file