mirror of
https://github.com/ChocoTaco1/TacoServer.git
synced 2026-07-14 07:34:36 +00:00
Merge branch 'NoEvo'
This commit is contained in:
commit
52622e2e92
9 changed files with 863 additions and 95 deletions
|
|
@ -55,13 +55,16 @@ addRotationMap("Minotaur", "CTF",1,0,-1,18);
|
||||||
addRotationMap("SmallMelee", "CTF",1,0,-1,12);
|
addRotationMap("SmallMelee", "CTF",1,0,-1,12);
|
||||||
//addRotationMap("SuperHappyBouncyFunTime", "CTF",1,1,-1,12);
|
//addRotationMap("SuperHappyBouncyFunTime", "CTF",1,1,-1,12);
|
||||||
addRotationMap("Machineeggs", "CTF",1,1,-1,8);
|
addRotationMap("Machineeggs", "CTF",1,1,-1,8);
|
||||||
addRotationMap("Mac_FlagArena", "CTF",1,0,-1,18);
|
addRotationMap("Mac_FlagArena", "CTF",1,0,-1,14);
|
||||||
addRotationMap("SmallTimeCTF", "CTF",1,1,-1,10);
|
addRotationMap("SmallTimeCTF", "CTF",1,1,-1,10);
|
||||||
addRotationMap("TWL2_Hildebrand", "CTF",1,1,-1,18);
|
addRotationMap("TWL2_Hildebrand", "CTF",1,1,-1,18);
|
||||||
addRotationMap("ArenaDome", "CTF",1,1,-1,12);
|
addRotationMap("ArenaDome", "CTF",1,0,-1,12);
|
||||||
addRotationMap("Firestorm", "CTF",1,1,-1,12);
|
addRotationMap("Firestorm", "CTF",1,0,-1,12);
|
||||||
addRotationMap("Bulwark", "CTF",1,1,-1,12);
|
addRotationMap("Bulwark", "CTF",1,1,-1,12);
|
||||||
addRotationMap("TWL_OsIris", "CTF",1,1,-1,12);
|
addRotationMap("TWL_OsIris", "CTF",1,0,8,18);
|
||||||
|
addRotationMap("FrostPipe", "CTF",1,0,-1,12);
|
||||||
|
addRotationMap("Blink", "CTF",1,1,-1,12);
|
||||||
|
addRotationMap("Discord", "CTF",1,1,6,16);
|
||||||
|
|
||||||
//Medium Maps
|
//Medium Maps
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -70,25 +73,24 @@ addRotationMap("HighOctane", "CTF",1,1,8,24);
|
||||||
addRotationMap("S5_Mordacity", "CTF",1,1,8,24);
|
addRotationMap("S5_Mordacity", "CTF",1,1,8,24);
|
||||||
addRotationMap("S5_Damnation", "CTF",1,1,8,20);
|
addRotationMap("S5_Damnation", "CTF",1,1,8,20);
|
||||||
addRotationMap("TWL2_JaggedClaw", "CTF",1,1,8,24);
|
addRotationMap("TWL2_JaggedClaw", "CTF",1,1,8,24);
|
||||||
addRotationMap("S5_Massive", "CTF",1,1,8,26);
|
addRotationMap("S5_Massive", "CTF",1,1,10,26);
|
||||||
addRotationMap("TWL_Stonehenge", "CTF",1,1,8,20);
|
addRotationMap("TWL_Stonehenge", "CTF",1,1,8,20);
|
||||||
addRotationMap("TWL_Feign", "CTF",1,0,12,24);
|
addRotationMap("TWL_Feign", "CTF",1,1,10,20);
|
||||||
addRotationMap("TheFray", "CTF",1,1,8,20);
|
addRotationMap("TheFray", "CTF",1,0,10,20);
|
||||||
addRotationMap("DangerousCrossing_nef", "CTF",1,1,8,20);
|
addRotationMap("DangerousCrossing_nef", "CTF",1,1,8,20);
|
||||||
addRotationMap("TWL2_Skylight", "CTF",1,1,8,20);
|
addRotationMap("TWL2_Skylight", "CTF",1,1,8,20);
|
||||||
addRotationMap("TWL2_Ocular", "CTF",1,1,12,-1);
|
addRotationMap("TWL2_Ocular", "CTF",1,1,12,-1);
|
||||||
addRotationMap("Dire", "CTF",1,1,12,24);
|
addRotationMap("Dire", "CTF",1,1,10,24);
|
||||||
addRotationMap("berlard", "CTF",1,1,12,24);
|
addRotationMap("berlard", "CTF",1,0,12,24);
|
||||||
addRotationMap("S8_Opus", "CTF",1,1,8,24);
|
addRotationMap("S8_Opus", "CTF",1,0,8,24);
|
||||||
addRotationMap("BeggarsRun", "CTF",1,1,8,24);
|
addRotationMap("BeggarsRun", "CTF",1,0,8,24);
|
||||||
addRotationMap("Headstone", "CTF",1,1,8,20);
|
addRotationMap("Headstone", "CTF",1,0,8,20);
|
||||||
addRotationMap("Signal", "CTF",1,0,8,26);
|
addRotationMap("Signal", "CTF",1,0,8,26);
|
||||||
addRotationMap("S5_Woodymyrk", "CTF",1,1,8,26);
|
addRotationMap("S5_Woodymyrk", "CTF",1,1,8,26);
|
||||||
addRotationMap("Discord", "CTF",1,1,8,20);
|
addRotationMap("TenebrousCTF", "CTF",1,1,8,12);
|
||||||
addRotationMap("TenebrousCTF", "CTF",1,1,8,20);
|
|
||||||
addRotationMap("Pariah", "CTF",1,0,8,20);
|
addRotationMap("Pariah", "CTF",1,0,8,20);
|
||||||
addRotationMap("Prismatic", "CTF",1,0,12,26);
|
addRotationMap("Prismatic", "CTF",1,1,12,26);
|
||||||
addRotationMap("TWL_WilderZone", "CTF",1,1,8,20);
|
addRotationMap("TWL_WilderZone", "CTF",1,0,8,20);
|
||||||
addRotationMap("Mirage", "CTF",1,0,8,20);
|
addRotationMap("Mirage", "CTF",1,0,8,20);
|
||||||
addRotationMap("S5_Mimicry", "CTF",1,0,8,24);
|
addRotationMap("S5_Mimicry", "CTF",1,0,8,24);
|
||||||
addRotationMap("TWL_Snowblind", "CTF",1,0,12,-1);
|
addRotationMap("TWL_Snowblind", "CTF",1,0,12,-1);
|
||||||
|
|
@ -96,7 +98,6 @@ addRotationMap("ShortFall", "CTF",1,0,12,24);
|
||||||
addRotationMap("IceRidge_nef", "CTF",1,0,8,20);
|
addRotationMap("IceRidge_nef", "CTF",1,0,8,20);
|
||||||
addRotationMap("Disjointed", "CTF",1,0,8,20);
|
addRotationMap("Disjointed", "CTF",1,0,8,20);
|
||||||
addRotationMap("TWL2_MuddySwamp", "CTF",1,0,8,20);
|
addRotationMap("TWL2_MuddySwamp", "CTF",1,0,8,20);
|
||||||
addRotationMap("Blink", "CTF",1,1,8,20);
|
|
||||||
addRotationMap("HighAnxiety", "CTF",1,0,8,20);
|
addRotationMap("HighAnxiety", "CTF",1,0,8,20);
|
||||||
addRotationMap("S5_Centaur", "CTF",1,0,8,20);
|
addRotationMap("S5_Centaur", "CTF",1,0,8,20);
|
||||||
addRotationMap("S8_Cardiac", "CTF",1,1,12,-1);
|
addRotationMap("S8_Cardiac", "CTF",1,1,12,-1);
|
||||||
|
|
@ -107,6 +108,8 @@ addRotationMap("TWL2_Drifts", "CTF",1,0,14,24);
|
||||||
addRotationMap("TWL2_Drorck", "CTF",1,1,12,24);
|
addRotationMap("TWL2_Drorck", "CTF",1,1,12,24);
|
||||||
//addRotationMap("TWL2_Norty", "CTF",1,0,12,24);
|
//addRotationMap("TWL2_Norty", "CTF",1,0,12,24);
|
||||||
addRotationMap("S5_HawkingHeat", "CTF",1,0,16,24);
|
addRotationMap("S5_HawkingHeat", "CTF",1,0,16,24);
|
||||||
|
addRotationMap("StarFallCTF", "CTF",1,1,10,24);
|
||||||
|
addRotationMap("TWL2_Celerity", "CTF",1,1,8,24);
|
||||||
|
|
||||||
//Voteable but Not in Rotation
|
//Voteable but Not in Rotation
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -128,9 +131,8 @@ addRotationMap("Confusco", "CTF",1,0,10,20);
|
||||||
//addRotationMap("Fallout", "CTF",1,0,10,20);
|
//addRotationMap("Fallout", "CTF",1,0,10,20);
|
||||||
//addRotationMap("TheClocktower", "CTF",1,0,10,20);
|
//addRotationMap("TheClocktower", "CTF",1,0,10,20);
|
||||||
//addRotationMap("SoylentGreen", "CTF",1,0,10,20);
|
//addRotationMap("SoylentGreen", "CTF",1,0,10,20);
|
||||||
addRotationMap("TWL2_MidnightMayhemDeluxe", "CTF",1,0,8,18);
|
addRotationMap("TWL2_MidnightMayhemDeluxe", "CTF",1,1,8,18);
|
||||||
//addRotationMap("Ramparts", "CTF",1,0,10,20);
|
//addRotationMap("Ramparts", "CTF",1,0,10,20);
|
||||||
addRotationMap("TWL2_Celerity", "CTF",1,1,8,24);
|
|
||||||
//addRotationMap("Blastside_nef", "CTF",1,0,10,24);
|
//addRotationMap("Blastside_nef", "CTF",1,0,10,24);
|
||||||
addRotationMap("Burstside", "CTF",1,0,10,20);
|
addRotationMap("Burstside", "CTF",1,0,10,20);
|
||||||
addRotationMap("Infernus", "CTF",1,0,18,26);
|
addRotationMap("Infernus", "CTF",1,0,18,26);
|
||||||
|
|
@ -144,20 +146,20 @@ addRotationMap("TWL_Pandemonium", "CTF",1,0,10,24);
|
||||||
//Vehicle Maps
|
//Vehicle Maps
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
addRotationMap("Logans_Run", "CTF",1,1,8,28);
|
||||||
|
addRotationMap("Rollercoaster_nef", "CTF",1,1,8,28);
|
||||||
addRotationMap("HostileLoch", "CTF",1,1,12,24);
|
addRotationMap("HostileLoch", "CTF",1,1,12,24);
|
||||||
addRotationMap("TWL_BeachBlitz", "CTF",1,0,12,24);
|
addRotationMap("TWL_BeachBlitz", "CTF",1,1,12,24);
|
||||||
addRotationMap("TWL2_Magnum", "CTF",1,1,12,28);
|
addRotationMap("TWL2_Magnum", "CTF",1,1,12,28);
|
||||||
addRotationMap("Logans_Run", "CTF",1,1,10,28);
|
|
||||||
addRotationMap("Rollercoaster_nef", "CTF",1,1,10,28);
|
|
||||||
addRotationMap("MoonDance", "CTF",1,1,12,28);
|
addRotationMap("MoonDance", "CTF",1,1,12,28);
|
||||||
addRotationMap("Raindance_nef", "CTF",1,1,12,28);
|
addRotationMap("Raindance_nef", "CTF",1,1,12,28);
|
||||||
addRotationMap("TWL_Magmatic", "CTF",1,1,18,28);
|
addRotationMap("TWL_Magmatic", "CTF",1,0,18,28);
|
||||||
addRotationMap("TWL2_FrozenGlory", "CTF",1,1,12,24);
|
addRotationMap("TWL2_FrozenGlory", "CTF",1,1,12,24);
|
||||||
addRotationMap("LandingParty", "CTF",1,0,12,28);
|
addRotationMap("LandingParty", "CTF",1,1,12,28);
|
||||||
addRotationMap("TitanV", "CTF",1,1,12,28);
|
addRotationMap("TitanV", "CTF",1,0,12,28);
|
||||||
addRotationMap("TWL_Crossfire", "CTF",1,1,18,-1);
|
addRotationMap("TWL_Crossfire", "CTF",1,1,14,28);
|
||||||
//addRotationMap("The_Calm", "CTF",1,0,12,24);
|
//addRotationMap("The_Calm", "CTF",1,0,12,24);
|
||||||
addRotationMap("TWL2_Dissention", "CTF",1,1,16,28);
|
addRotationMap("TWL2_Dissention", "CTF",1,0,16,28);
|
||||||
|
|
||||||
//Vehicle Maps: Voteable, But Not in Rotation
|
//Vehicle Maps: Voteable, But Not in Rotation
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -169,7 +171,7 @@ addRotationMap("ShockRidge", "CTF",1,0,12,24);
|
||||||
addRotationMap("TWL2_BlueMoon", "CTF",1,1,18,28);
|
addRotationMap("TWL2_BlueMoon", "CTF",1,1,18,28);
|
||||||
addRotationMap("TWL_Katabatic", "CTF",1,0,12,28);
|
addRotationMap("TWL_Katabatic", "CTF",1,0,12,28);
|
||||||
addRotationMap("TWL_Starfallen", "CTF",1,0,12,24);
|
addRotationMap("TWL_Starfallen", "CTF",1,0,12,24);
|
||||||
addRotationMap("ConstructionYard", "CTF",1,0,12,24);
|
//addRotationMap("ConstructionYard", "CTF",1,0,12,24);
|
||||||
//addRotationMap("AcidRain", "CTF",1,0,12,24);
|
//addRotationMap("AcidRain", "CTF",1,0,12,24);
|
||||||
addRotationMap("SandOcean", "CTF",1,0,12,28);
|
addRotationMap("SandOcean", "CTF",1,0,12,28);
|
||||||
//addRotationMap("StarIce", "CTF",1,0,12,24);
|
//addRotationMap("StarIce", "CTF",1,0,12,24);
|
||||||
|
|
@ -183,6 +185,7 @@ addRotationMap("TWL_Abaddon", "CTF",1,0,16,24);
|
||||||
//BIG Vehicle Maps
|
//BIG Vehicle Maps
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
addRotationMap("Circleofstones", "CTF",1,1,12,-1);
|
||||||
addRotationMap("TWL2_Ruined", "CTF",1,1,24,-1);
|
addRotationMap("TWL2_Ruined", "CTF",1,1,24,-1);
|
||||||
addRotationMap("Agorazscium", "CTF",1,0,24,-1);
|
addRotationMap("Agorazscium", "CTF",1,0,24,-1);
|
||||||
addRotationMap("FullCircle", "CTF",1,0,18,30);
|
addRotationMap("FullCircle", "CTF",1,0,18,30);
|
||||||
|
|
@ -199,9 +202,8 @@ addRotationMap("TWL_Frozen", "CTF",1,0,20,-1);
|
||||||
addRotationMap("TWL_Harvester", "CTF",1,1,24,-1);
|
addRotationMap("TWL_Harvester", "CTF",1,1,24,-1);
|
||||||
addRotationMap("Archipelago", "CTF",1,0,20,-1);
|
addRotationMap("Archipelago", "CTF",1,0,20,-1);
|
||||||
addRotationMap("TWL2_Bleed", "CTF",1,0,20,-1);
|
addRotationMap("TWL2_Bleed", "CTF",1,0,20,-1);
|
||||||
addRotationMap("Pantheon", "CTF",1,1,24,-1);
|
addRotationMap("Pantheon", "CTF",1,1,20,-1);
|
||||||
addRotationMap("Circleofstones", "CTF",1,1,18,-1);
|
addRotationMap("DeathBirdsFly1", "CTF",1,1,20,-1);
|
||||||
addRotationMap("DeathBirdsFly1", "CTF",1,1,24,-1);
|
|
||||||
addRotationMap("Scarabrae_nef", "CTF",1,0,28,-1);
|
addRotationMap("Scarabrae_nef", "CTF",1,0,28,-1);
|
||||||
addRotationMap("aabaa", "CTF",1,1,28,-1);
|
addRotationMap("aabaa", "CTF",1,1,28,-1);
|
||||||
addRotationMap("TWL_Reversion", "CTF",1,1,28,-1);
|
addRotationMap("TWL_Reversion", "CTF",1,1,28,-1);
|
||||||
|
|
@ -287,17 +289,17 @@ addRotationMap("S8_CentralDogma", "CTF",1,0,-1,-1);
|
||||||
//In Rotation
|
//In Rotation
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
addRotationMap("VaubanLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("VaubanLak", "Lakrabbit",1,1,8,-1);
|
||||||
addRotationMap("MiniSunDried", "Lakrabbit",1,1,-1,12);
|
addRotationMap("MiniSunDried", "Lakrabbit",1,1,-1,12);
|
||||||
addRotationMap("Sundance", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("Sundance", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("TWL_BeachBlitzLak", "Lakrabbit",1,0,-1,-1);
|
addRotationMap("TWL_BeachBlitzLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("DesertofDeathLak", "Lakrabbit",1,0,-1,-1);
|
addRotationMap("DesertofDeathLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("Raindance_nefLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("Raindance_nefLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("SunDriedLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("SunDriedLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("SkinnyDipLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("SkinnyDipLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("SaddiesHill", "Lakrabbit",1,0,-1,-1);
|
addRotationMap("SaddiesHill", "Lakrabbit",1,0,-1,-1);
|
||||||
addRotationMap("HavenLak", "Lakrabbit",1,0,-1,-1);
|
addRotationMap("HavenLak", "Lakrabbit",1,0,-1,-1);
|
||||||
addRotationMap("LushLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("LushLak", "Lakrabbit",1,1,8,-1);
|
||||||
addRotationMap("BoxLak", "Lakrabbit",1,1,-1,10);
|
addRotationMap("BoxLak", "Lakrabbit",1,1,-1,10);
|
||||||
addRotationMap("TitaniaLak", "Lakrabbit",1,0,8,-1);
|
addRotationMap("TitaniaLak", "Lakrabbit",1,0,8,-1);
|
||||||
addRotationMap("TibbawLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("TibbawLak", "Lakrabbit",1,1,-1,-1);
|
||||||
|
|
@ -305,7 +307,8 @@ addRotationMap("InfernusLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("S8_GeothermalLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("S8_GeothermalLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("CankerLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("CankerLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("DustRunLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("DustRunLak", "Lakrabbit",1,1,-1,-1);
|
||||||
addRotationMap("CrossfiredLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("CrossfiredLak", "Lakrabbit",1,0,-1,-1);
|
||||||
|
addRotationMap("CloakofLak", "Lakrabbit",1,1,-1,-1);
|
||||||
|
|
||||||
//Voteable, But not in rotation
|
//Voteable, But not in rotation
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -317,8 +320,8 @@ addRotationMap("Arrakis", "Lakrabbit",1,0,-1,-1);
|
||||||
addRotationMap("EquinoxLak", "Lakrabbit",1,0,-1,-1);
|
addRotationMap("EquinoxLak", "Lakrabbit",1,0,-1,-1);
|
||||||
addRotationMap("PhasmaDustLak", "Lakrabbit",1,1,-1,12);
|
addRotationMap("PhasmaDustLak", "Lakrabbit",1,1,-1,12);
|
||||||
addRotationMap("GodsRiftLak", "Lakrabbit",1,0,-1,-1);
|
addRotationMap("GodsRiftLak", "Lakrabbit",1,0,-1,-1);
|
||||||
addRotationMap("SolsDescentLak", "Lakrabbit",1,1,-1,-1);
|
addRotationMap("SolsDescentLak", "Lakrabbit",1,0,-1,-1);
|
||||||
addRotationMap("Crater71Lak", "Lakrabbit",1,0,-1,-1);
|
addRotationMap("Crater71Lak", "Lakrabbit",1,1,6,-1);
|
||||||
|
|
||||||
//Not Voteable, Not in rotation
|
//Not Voteable, Not in rotation
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
@ -552,4 +555,4 @@ addRotationMap("PitsDM", "DM",1,1,-1,10);
|
||||||
// |_| |_|\__,_|_| |_|\__\___|_| |___/
|
// |_| |_|\__,_|_| |_|\__\___|_| |___/
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
addRotationMap("MiniSunDried", "Hunters",1,1,-1,-1);
|
//addRotationMap("MiniSunDried", "Hunters",1,1,-1,-1);
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ $Host::holoName4 = "DSword";
|
||||||
$Host::holoName5 = "BloodEagle";
|
$Host::holoName5 = "BloodEagle";
|
||||||
$Host::holoName6 = "Harbinger";
|
$Host::holoName6 = "Harbinger";
|
||||||
$Host::Info = " ";
|
$Host::Info = " ";
|
||||||
|
$Host::ItemRespawnTime = 30;
|
||||||
$Host::KickBanTime = 600;
|
$Host::KickBanTime = 600;
|
||||||
$Host::KickObserverTimeout = 1200;
|
$Host::KickObserverTimeout = 1200;
|
||||||
$Host::LakRabbitDuelMode = 0;
|
$Host::LakRabbitDuelMode = 0;
|
||||||
|
|
|
||||||
|
|
@ -648,16 +648,18 @@ function CTFGame::flagCap(%game, %player)
|
||||||
|
|
||||||
if($Host::ClassicEvoStats)
|
if($Host::ClassicEvoStats)
|
||||||
{
|
{
|
||||||
%held2 = getSimTime() - %game.totalFlagHeldTime[%flag];
|
|
||||||
%realtime = %game.formatTime(%held2, true);
|
|
||||||
%record = false;
|
%record = false;
|
||||||
|
if($TotalTeamPlayerCount >= $Host::MinFlagRecordPlayerCount)
|
||||||
|
%recordit = true;
|
||||||
if(%game.totalFlagHeldTime[%flag])
|
if(%game.totalFlagHeldTime[%flag])
|
||||||
{
|
{
|
||||||
|
%held2 = getSimTime() - %game.totalFlagHeldTime[%flag];
|
||||||
|
%realtime = %game.formatTime(%held2, true);
|
||||||
if(%client.team == 1)
|
if(%client.team == 1)
|
||||||
{
|
{
|
||||||
if((%held2 < $flagstats::heldTeam1) || $flagstats::heldTeam1 == 0)
|
if((%held2 < $flagstats::heldTeam1) || $flagstats::heldTeam1 == 0)
|
||||||
{
|
{
|
||||||
if($HostGamePlayerCount >= $Host::MinFlagRecordPlayerCount)
|
if(%recordit)
|
||||||
{
|
{
|
||||||
$flagstats::heldTeam1 = %held2;
|
$flagstats::heldTeam1 = %held2;
|
||||||
$flagstats::realTeam1 = %realTime;
|
$flagstats::realTeam1 = %realTime;
|
||||||
|
|
@ -670,7 +672,7 @@ function CTFGame::flagCap(%game, %player)
|
||||||
{
|
{
|
||||||
if((%held2 < $flagstats::heldTeam2) || $flagstats::heldTeam2 == 0)
|
if((%held2 < $flagstats::heldTeam2) || $flagstats::heldTeam2 == 0)
|
||||||
{
|
{
|
||||||
if($HostGamePlayerCount >= $Host::MinFlagRecordPlayerCount)
|
if(%recordit)
|
||||||
{
|
{
|
||||||
$flagstats::heldTeam2 = %held2;
|
$flagstats::heldTeam2 = %held2;
|
||||||
$flagstats::realTeam2 = %realTime;
|
$flagstats::realTeam2 = %realTime;
|
||||||
|
|
@ -682,7 +684,7 @@ function CTFGame::flagCap(%game, %player)
|
||||||
|
|
||||||
if(%record == true)
|
if(%record == true)
|
||||||
{
|
{
|
||||||
if($HostGamePlayerCount >= $Host::MinFlagRecordPlayerCount)
|
if(%recordit)
|
||||||
{
|
{
|
||||||
%fileOut = "stats/maps/classic/" @ $CurrentMissionType @ "/" @ $CurrentMission @ ".txt";
|
%fileOut = "stats/maps/classic/" @ $CurrentMissionType @ "/" @ $CurrentMission @ ".txt";
|
||||||
export("$flagstats::*", %fileOut, false);
|
export("$flagstats::*", %fileOut, false);
|
||||||
|
|
@ -691,24 +693,24 @@ function CTFGame::flagCap(%game, %player)
|
||||||
else
|
else
|
||||||
schedule(4000, 0, "messageClient", %client, '', "\c2New flag records are disabled until" SPC $Host::MinFlagRecordPlayerCount SPC "players.");
|
schedule(4000, 0, "messageClient", %client, '', "\c2New flag records are disabled until" SPC $Host::MinFlagRecordPlayerCount SPC "players.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!$Host::TournamentMode)
|
||||||
|
bottomprint(%client, "You captured the flag in " @ %realTime @ " seconds", 3);
|
||||||
|
|
||||||
|
$stats::caps[%client]++;
|
||||||
|
if($stats::caps[%client] > $stats::caps_counter)
|
||||||
|
{
|
||||||
|
$stats::caps_counter = $stats::caps[%client];
|
||||||
|
$stats::caps_client = getTaggedString(%client.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(%held2 < $stats::fastestCap || !$stats::fastestCap)
|
||||||
|
{
|
||||||
|
$stats::fastestCap = %held2;
|
||||||
|
$stats::fastcap_time = %realTime;
|
||||||
|
$stats::fastcap_client = getTaggedString(%client.name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$Host::TournamentMode)
|
|
||||||
bottomprint(%client, "You captured the flag in " @ %realTime @ " seconds", 3);
|
|
||||||
|
|
||||||
$stats::caps[%client]++;
|
|
||||||
if($stats::caps[%client] > $stats::caps_counter)
|
|
||||||
{
|
|
||||||
$stats::caps_counter = $stats::caps[%client];
|
|
||||||
$stats::caps_client = getTaggedString(%client.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(%held2 < $stats::fastestCap || !$stats::fastestCap)
|
|
||||||
{
|
|
||||||
$stats::fastestCap = %held2;
|
|
||||||
$stats::fastcap_time = %realTime;
|
|
||||||
$stats::fastcap_client = getTaggedString(%client.name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//award points to player and team
|
//award points to player and team
|
||||||
|
|
|
||||||
|
|
@ -303,29 +303,29 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
|
||||||
if(%targetObject.invincible || %targetObject.getState() $= "Dead")
|
if(%targetObject.invincible || %targetObject.getState() $= "Dead")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// rabbit can't DJ in duel mode
|
//rabbit can't DJ in duel mode
|
||||||
if(Game.duelMode && %targetObject.holdingFlag && %targetObject == %sourceObject
|
// if(Game.duelMode && %targetObject.holdingFlag && %targetObject == %sourceObject
|
||||||
&& %damageType == $DamageType::Disc
|
// && %damageType == $DamageType::Disc
|
||||||
&& getWord(%targetObject.getMuzzleVector(0),2) < -0.7
|
// && getWord(%targetObject.getMuzzleVector(0),2) < -0.7
|
||||||
&& !TestForMA(%sourceObject, 5))
|
// && !TestForMA(%sourceObject, 5))
|
||||||
{
|
// {
|
||||||
%sound = '~wfx/misc/missed.wav';
|
// %sound = '~wfx/misc/missed.wav';
|
||||||
%amount = 2.0;
|
// %amount = 2.0;
|
||||||
%targetObject.blowup();
|
// %targetObject.blowup();
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Zeph - PubPro no DJ
|
//Zeph - PubPro no DJ
|
||||||
|
|
||||||
if(Game.PubPro && %targetObject == %sourceObject
|
// if(Game.PubPro && %targetObject == %sourceObject
|
||||||
&& %damageType == $DamageType::Disc
|
// && %damageType == $DamageType::Disc
|
||||||
&& getWord(%targetObject.getMuzzleVector(0),2) < -0.7
|
// && getWord(%targetObject.getMuzzleVector(0),2) < -0.7
|
||||||
&& !TestForMA(%sourceObject, 5))
|
// && !TestForMA(%sourceObject, 5))
|
||||||
{
|
// {
|
||||||
%sound = '~wfx/misc/missed.wav';
|
// %sound = '~wfx/misc/missed.wav';
|
||||||
%amount = 2.0;
|
// %amount = 2.0;
|
||||||
%targetObject.blowup();
|
// %targetObject.blowup();
|
||||||
%targetObject.scriptKill();
|
// %targetObject.scriptKill();
|
||||||
}
|
// }
|
||||||
|
|
||||||
// hurting yourself, check for free DJ
|
// hurting yourself, check for free DJ
|
||||||
if( isObject(%sourceObject)
|
if( isObject(%sourceObject)
|
||||||
|
|
@ -1046,7 +1046,7 @@ function checkDuelTimer(%client)
|
||||||
if(%client.duelSeconds == 10 || %client.duelSeconds == 5 || %client.duelSeconds <= 3)
|
if(%client.duelSeconds == 10 || %client.duelSeconds == 5 || %client.duelSeconds <= 3)
|
||||||
{
|
{
|
||||||
%plural = (%client.duelSeconds != 1 ? 's' : "");
|
%plural = (%client.duelSeconds != 1 ? 's' : "");
|
||||||
messageClient(%client, 'MsgDuelTimer', '\c4[Duel Mode] You have %1 second%2 to kill someone, or die!~wfx/misc/red_alert_short.wav', %client.duelSeconds, %plural);
|
messageClient(%client, 'MsgDuelTimer', '\c4You have %1 second%2 to kill someone, or die!~wgui/launchMenuOver.wav', %client.duelSeconds, %plural);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,20 +90,23 @@ function ClassicChatLog(%client, %id, %team, %msg)
|
||||||
// Don't log voicepack stuff.
|
// Don't log voicepack stuff.
|
||||||
if(strstr(%msg, "~w") != -1 || strstr(%msg, "flag") != -1)
|
if(strstr(%msg, "~w") != -1 || strstr(%msg, "flag") != -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
%team = getTaggedString(Game.getTeamName(%team));
|
|
||||||
|
|
||||||
if(%team $= "Unassigned")
|
|
||||||
%team = "Observer";
|
|
||||||
else if($CurrentMissionType $= "LakRabbit" || $CurrentMissionType $= "DM")
|
|
||||||
%team = $dtStats::gtNameLong[%client.lgame]; //from zDarktigerStats.cs
|
|
||||||
|
|
||||||
switch$(%id)
|
switch$(%id)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
%team = "[Global]";
|
%team = "[Global]";
|
||||||
case 1:
|
case 1:
|
||||||
%team = "[" @ %team @ "]";
|
if($countdownStarted)
|
||||||
|
%team = getTaggedString(Game.getTeamName(%team));
|
||||||
|
else
|
||||||
|
%team = "Debrief";
|
||||||
|
|
||||||
|
if(%team $= "Unassigned")
|
||||||
|
%team = "Observer";
|
||||||
|
else if($CurrentMissionType $= "LakRabbit" || $CurrentMissionType $= "DM")
|
||||||
|
%team = $dtStats::gtNameLong[%client.lgame]; //from zDarktigerStats.cs
|
||||||
|
|
||||||
|
%team = "[" @ %team @ "]";
|
||||||
case 2:
|
case 2:
|
||||||
%team = "[Admin]";
|
%team = "[Admin]";
|
||||||
case 3:
|
case 3:
|
||||||
|
|
|
||||||
758
Classic/scripts/item.cs
Normal file
758
Classic/scripts/item.cs
Normal file
|
|
@ -0,0 +1,758 @@
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// When first mounted (assuming there is ammo):
|
||||||
|
// SingleShot activate -> ready
|
||||||
|
// Spinning activate -> idle (spin 0)
|
||||||
|
// Sustained activate -> ready
|
||||||
|
// DiscLauncher activate -> reload -> spinup -> ready
|
||||||
|
//
|
||||||
|
// Normal operation:
|
||||||
|
// SingleShot ready -> fire -> reload -> ready
|
||||||
|
// Spinning idle (spin 0) -> spinup -> ready -> fire -> spindown -> idle
|
||||||
|
// Sustained ready -> fire -> reload -> ready
|
||||||
|
// DiscLauncher ready -> fire -> reload -> spinup -> ready
|
||||||
|
|
||||||
|
// Image properties
|
||||||
|
// emap
|
||||||
|
// preload
|
||||||
|
// shapeFile
|
||||||
|
// mountPoint
|
||||||
|
// offset
|
||||||
|
// rotation
|
||||||
|
// firstPerson
|
||||||
|
// mass
|
||||||
|
// usesEnergy
|
||||||
|
// minEnergy
|
||||||
|
// accuFire
|
||||||
|
// lightType
|
||||||
|
// lightTime
|
||||||
|
// lightRadius
|
||||||
|
// lightColor
|
||||||
|
|
||||||
|
// Image state variables
|
||||||
|
// stateName
|
||||||
|
// stateTransitionOnLoaded
|
||||||
|
// stateTransitionOnNotLoaded
|
||||||
|
// stateTransitionOnAmmo
|
||||||
|
// stateTransitionOnNoAmmo
|
||||||
|
// stateTransitionOnTriggerUp
|
||||||
|
// stateTransitionOnTriggerDown
|
||||||
|
// stateTransitionOnTimeout
|
||||||
|
// stateTimeoutValue
|
||||||
|
// stateFire
|
||||||
|
// stateEnergyDrain
|
||||||
|
// stateAllowImageChange
|
||||||
|
// stateScaleAnimation
|
||||||
|
// stateDirection
|
||||||
|
// stateLoadedFlag
|
||||||
|
// stateSpinThread
|
||||||
|
// stateRecoil
|
||||||
|
// stateSequence
|
||||||
|
// stateSound
|
||||||
|
// stateScript
|
||||||
|
// stateEmitter
|
||||||
|
// stateEmitterTime
|
||||||
|
// stateEmitterNode
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
$ItemRespawnTime = $Host::ItemRespawnTime * 1000;
|
||||||
|
$ItemPopTime = 30 * 1000; // 30 seconds
|
||||||
|
|
||||||
|
$WeaponSlot = 0;
|
||||||
|
$AuxiliarySlot = 1;
|
||||||
|
$BackpackSlot = 2;
|
||||||
|
$FlagSlot = 3;
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
datablock EffectProfile(ItemPickupEffect)
|
||||||
|
{
|
||||||
|
effectname = "packs/packs.pickupPack";
|
||||||
|
minDistance = 2.5;
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock AudioProfile(ItemPickupSound)
|
||||||
|
{
|
||||||
|
filename = "fx/packs/packs.pickuppack.wav";
|
||||||
|
description = AudioClosest3d;
|
||||||
|
effect = ItemPickupEffect;
|
||||||
|
preload = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock EffectProfile(ItemThrowEffect)
|
||||||
|
{
|
||||||
|
effectname = "packs/packs.throwpack";
|
||||||
|
minDistance = 2.5;
|
||||||
|
maxDistance = 2.5;
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock AudioProfile(ItemThrowSound)
|
||||||
|
{
|
||||||
|
filename = "fx/packs/packs.throwpack.wav";
|
||||||
|
description = AudioClosest3d;
|
||||||
|
effect = ItemThrowEffect;
|
||||||
|
preload = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock AudioProfile(RepairPatchSound)
|
||||||
|
{
|
||||||
|
filename = "fx/misc/health_patch.wav";
|
||||||
|
description = AudioClosest3d;
|
||||||
|
preload = true;
|
||||||
|
effect = ItemPickupEffect;
|
||||||
|
preload = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
function ItemData::create(%block)
|
||||||
|
{
|
||||||
|
if(%block $= "flag")
|
||||||
|
%obj = new Item() {
|
||||||
|
className = FlagObj;
|
||||||
|
dataBlock = %block;
|
||||||
|
static = false;
|
||||||
|
rotate = false;
|
||||||
|
};
|
||||||
|
else
|
||||||
|
%obj = new Item() {
|
||||||
|
dataBlock = %block;
|
||||||
|
static = true;
|
||||||
|
//rotate = true;
|
||||||
|
// don't make "placed items" rotate
|
||||||
|
rotate = false;
|
||||||
|
};
|
||||||
|
return(%obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
function Item::schedulePop(%this)
|
||||||
|
{
|
||||||
|
%itemFadeTime = 1000; // items will take 1 second (1000 milliseconds) to fade out
|
||||||
|
%this.startFade(%itemFadeTime, $ItemPopTime - %itemFadeTime, true);
|
||||||
|
%this.schedule($ItemPopTime, "delete");
|
||||||
|
}
|
||||||
|
|
||||||
|
function Item::respawn(%this)
|
||||||
|
{
|
||||||
|
%this.startFade(0, 0, true);
|
||||||
|
%this.schedule($ItemRespawnTime + 100, "startFade", 1000, 0, false);
|
||||||
|
%this.hide(true);
|
||||||
|
%this.schedule($ItemRespawnTime, "hide", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ItemData::onThrow(%data,%obj,%shape)
|
||||||
|
{
|
||||||
|
serverPlay3D(ItemThrowSound, %obj.getTransform());
|
||||||
|
// don't schedule a delete for satchelCharges when they're deployed
|
||||||
|
if(!%data.noTimeout)
|
||||||
|
%obj.schedulePop();
|
||||||
|
}
|
||||||
|
|
||||||
|
function ItemData::onInventory(%data,%shape,%value)
|
||||||
|
{
|
||||||
|
if (!%value) {
|
||||||
|
// If we don't have any more of these items, make sure
|
||||||
|
// we don't have an image mounted.
|
||||||
|
%slot = %shape.getMountSlot(%data.image);
|
||||||
|
if (%slot != -1)
|
||||||
|
%shape.unmountImage(%slot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// z0dd - ZOD - Founder, 5/18/03. ItemData pickup Parent. Streamline
|
||||||
|
// Function also servers as console spam fix related to item pickup
|
||||||
|
function ItemData::onPickup(%this, %pack, %player, %amount)
|
||||||
|
{
|
||||||
|
// %this = Pack datablock
|
||||||
|
// %pack = Pack object number
|
||||||
|
// %player = player
|
||||||
|
// %amount = amount picked up (1)
|
||||||
|
|
||||||
|
if(%pack.sensors !$= "")
|
||||||
|
{
|
||||||
|
// find out how many sensor were in the pack
|
||||||
|
%player.deploySensors = %pack.sensors;
|
||||||
|
%player.client.updateSensorPackText(%player.deploySensors);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ItemData::onEnterLiquid(%data, %obj, %coverage, %type)
|
||||||
|
{
|
||||||
|
if(%data.isInvincible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch(%type)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
//Water
|
||||||
|
case 1:
|
||||||
|
//Ocean Water
|
||||||
|
case 2:
|
||||||
|
//River Water
|
||||||
|
case 3:
|
||||||
|
//Stagnant Water
|
||||||
|
case 4:
|
||||||
|
//Lava
|
||||||
|
%obj.delete();
|
||||||
|
case 5:
|
||||||
|
//Hot Lava
|
||||||
|
%obj.delete();
|
||||||
|
case 6:
|
||||||
|
//Crusty Lava
|
||||||
|
%obj.delete();
|
||||||
|
case 7:
|
||||||
|
//Quick Sand
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ItemData::onLeaveLiquid(%data, %obj, %type)
|
||||||
|
{
|
||||||
|
// dummy
|
||||||
|
}
|
||||||
|
|
||||||
|
function ItemData::onCollision(%data,%obj,%col)
|
||||||
|
{
|
||||||
|
// Default behavior for items is to get picked
|
||||||
|
// by the colliding object.
|
||||||
|
if (%col.getDataBlock().className $= Armor && %col.getState() !$= "Dead")
|
||||||
|
{
|
||||||
|
if (%col.isMounted())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (%col.pickup(%obj, 1))
|
||||||
|
{
|
||||||
|
if (%col.client)
|
||||||
|
{
|
||||||
|
messageClient(%col.client, 'MsgItemPickup', '\c0You picked up %1.', %data.pickUpName);
|
||||||
|
serverPlay3D(ItemPickupSound, %col.getTransform());
|
||||||
|
}
|
||||||
|
if (%obj.isStatic())
|
||||||
|
%obj.respawn();
|
||||||
|
else
|
||||||
|
%obj.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
datablock ItemData(RepairKit)
|
||||||
|
{
|
||||||
|
className = HandInventory;
|
||||||
|
catagory = "Misc";
|
||||||
|
shapeFile = "repair_kit.dts";
|
||||||
|
mass = 1;
|
||||||
|
elasticity = 0.2;
|
||||||
|
friction = 0.6;
|
||||||
|
pickupRadius = 2.0;
|
||||||
|
pickUpName = "a repair kit";
|
||||||
|
alwaysAmbient = true;
|
||||||
|
|
||||||
|
computeCRC = true;
|
||||||
|
emap = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
function RepairKit::onUse(%data,%obj)
|
||||||
|
{
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// z0dd - ZOD, 8/10/02. Let players use repair kit regardless of health status
|
||||||
|
// if they choose so via client $pref::
|
||||||
|
if (%obj.client.wasteRepKit == 1)
|
||||||
|
{
|
||||||
|
%obj.decInventory(%data,1);
|
||||||
|
messageClient(%obj.client, 'MsgRepairKitUsed', '\c2Repair Kit Used.');
|
||||||
|
if (%obj.getDamageLevel() != 0)
|
||||||
|
{
|
||||||
|
%obj.applyRepair(0.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Don't use the kit unless we're damaged
|
||||||
|
if (%obj.getDamageLevel() != 0)
|
||||||
|
{
|
||||||
|
%obj.applyRepair(0.2);
|
||||||
|
%obj.decInventory(%data,1);
|
||||||
|
messageClient(%obj.client, 'MsgRepairKitUsed', '\c2Repair Kit Used.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function serverCmdSetRepairKitWaste(%client, %value)
|
||||||
|
{
|
||||||
|
%val = deTag(%value);
|
||||||
|
%client.wasteRepKit = %val;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
datablock ItemData(RepairPatch)
|
||||||
|
{
|
||||||
|
catagory = "Misc";
|
||||||
|
shapeFile = "repair_patch.dts";
|
||||||
|
mass = 1;
|
||||||
|
elasticity = 0.2;
|
||||||
|
friction = 0.6;
|
||||||
|
pickupRadius = 2.0;
|
||||||
|
pickUpName = "a repair patch";
|
||||||
|
alwaysAmbient = true;
|
||||||
|
|
||||||
|
computeCRC = true;
|
||||||
|
emap = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
function RepairPatch::onCollision(%data,%obj,%col)
|
||||||
|
{
|
||||||
|
if ( %col.getDataBlock().className $= Armor
|
||||||
|
&& %col.getDamageLevel() != 0
|
||||||
|
&& %col.getState() !$= "Dead" )
|
||||||
|
{
|
||||||
|
if (%col.isMounted())
|
||||||
|
return;
|
||||||
|
|
||||||
|
%col.playAudio(0, RepairPatchSound);
|
||||||
|
%col.applyRepair(0.125);
|
||||||
|
%obj.respawn();
|
||||||
|
if (%col.client > 0)
|
||||||
|
messageClient(%col.client, 'MsgItemPickup', '\c0You picked up %1.', %data.pickUpName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// Flag:
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
datablock ShapeBaseImageData(FlagImage)
|
||||||
|
{
|
||||||
|
shapeFile = "flag.dts";
|
||||||
|
item = Flag;
|
||||||
|
mountPoint = 2;
|
||||||
|
offset = "0 0 0";
|
||||||
|
|
||||||
|
lightType = "PulsingLight";
|
||||||
|
lightColor = "0.5 0.5 0.5 1.0";
|
||||||
|
lightTime = "1000";
|
||||||
|
lightRadius = "3";
|
||||||
|
cloakable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock ItemData(Flag)
|
||||||
|
{
|
||||||
|
catagory = "Objectives";
|
||||||
|
shapefile = "flag.dts";
|
||||||
|
mass = 80; // z0dd - ZOD, 3/27/02. Keep flag from flying all over when damaged. was 55.
|
||||||
|
elasticity = 0.2;
|
||||||
|
friction = 0.6;
|
||||||
|
pickupRadius = 4.0; // z0dd - ZOD, 8/11/02. Was 3
|
||||||
|
pickUpName = "a flag";
|
||||||
|
computeCRC = true;
|
||||||
|
|
||||||
|
lightType = "PulsingLight";
|
||||||
|
lightColor = "0.5 0.5 0.5 1.0";
|
||||||
|
lightTime = "1000";
|
||||||
|
lightRadius = "3";
|
||||||
|
|
||||||
|
isInvincible = true;
|
||||||
|
cmdCategory = "Objectives";
|
||||||
|
cmdIcon = CMDFlagIcon;
|
||||||
|
cmdMiniIconName = "commander/MiniIcons/com_flag_grey";
|
||||||
|
targetTypeTag = 'Flag';
|
||||||
|
|
||||||
|
//used in CTF to mark the flag during a stalemate...
|
||||||
|
hudImageNameFriendly[1] = "commander/MiniIcons/com_flag_grey";
|
||||||
|
hudImageNameEnemy[1] = "commander/MiniIcons/com_flag_grey";
|
||||||
|
hudRenderModulated[1] = true;
|
||||||
|
hudRenderAlways[1] = true;
|
||||||
|
hudRenderCenter[1] = true;
|
||||||
|
hudRenderDistance[1] = true;
|
||||||
|
hudRenderName[1] = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
function Flag::onThrow(%data,%obj,%src)
|
||||||
|
{
|
||||||
|
Game.playerDroppedFlag(%src);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Flag::onAdd(%this, %obj)
|
||||||
|
{
|
||||||
|
// make sure flags play "flapping" ambient thread
|
||||||
|
Parent::onAdd(%this, %obj);
|
||||||
|
%obj.playThread($AmbientThread, "ambient");
|
||||||
|
|
||||||
|
%blocker = new VehicleBlocker()
|
||||||
|
{
|
||||||
|
position = %obj.position;
|
||||||
|
rotation = %obj.rotation;
|
||||||
|
dimensions = "2 2 4";
|
||||||
|
};
|
||||||
|
MissionCleanup.add(%blocker);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Flag::onCollision(%data,%obj,%col)
|
||||||
|
{
|
||||||
|
if (%col.getDataBlock().className $= Armor)
|
||||||
|
{
|
||||||
|
if (%col.isMounted())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// z0dd - ZOD, 6/13/02. Touch the flag and your invincibility and cloaking goes away.
|
||||||
|
if(%col.station $= "" && %col.isCloaked())
|
||||||
|
{
|
||||||
|
if( %col.respawnCloakThread !$= "" )
|
||||||
|
{
|
||||||
|
Cancel(%col.respawnCloakThread);
|
||||||
|
%col.setCloaked( false );
|
||||||
|
%col.respawnCloakThread = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( %col.client > 0 )
|
||||||
|
{
|
||||||
|
%col.setInvincibleMode(0, 0.00);
|
||||||
|
%col.setInvincible( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
// a player hit the flag
|
||||||
|
Game.playerTouchFlag(%col, %obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// HuntersFlag:
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
datablock ShapeBaseImageData(HuntersFlagImage)
|
||||||
|
{
|
||||||
|
shapeFile = "Huntersflag.dts";
|
||||||
|
item = Flag;
|
||||||
|
mountPoint = 2;
|
||||||
|
offset = "0 0 0";
|
||||||
|
|
||||||
|
lightType = "PulsingLight";
|
||||||
|
lightColor = "0.5 0.5 0.5 1.0";
|
||||||
|
lightTime = "1000";
|
||||||
|
lightRadius = "3";
|
||||||
|
};
|
||||||
|
|
||||||
|
// 1: red
|
||||||
|
// 2: blue
|
||||||
|
// 4: yellow
|
||||||
|
// 8: green
|
||||||
|
datablock ItemData(HuntersFlag1)
|
||||||
|
{
|
||||||
|
className = HuntersFlag;
|
||||||
|
|
||||||
|
shapefile = "Huntersflag.dts";
|
||||||
|
mass = 80; // z0dd - ZOD, 3/27/02. Keep flag from flying all over when damaged. was 55.
|
||||||
|
elasticity = 0.2;
|
||||||
|
friction = 0.6;
|
||||||
|
pickupRadius = 4.0; // z0dd - ZOD, 8/11/02. Was 3
|
||||||
|
isInvincible = true;
|
||||||
|
pickUpName = "a flag";
|
||||||
|
//computeCRC = true; // z0dd - ZOD, 5/18/03. This causes several crc checks, moved.
|
||||||
|
|
||||||
|
lightType = "PulsingLight";
|
||||||
|
lightColor = "0.8 0.2 0.2 1.0";
|
||||||
|
lightTime = "1000";
|
||||||
|
lightRadius = "3";
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock ItemData(HuntersFlag2) : HuntersFlag1
|
||||||
|
{
|
||||||
|
lightColor = "0.2 0.2 0.8 1.0";
|
||||||
|
computeCRC = true; // z0dd - ZOD, 5/18/03. Check this model just once.
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock ItemData(HuntersFlag4) : HuntersFlag1
|
||||||
|
{
|
||||||
|
lightColor = "0.8 0.8 0.2 1.0";
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock ItemData(HuntersFlag8) : HuntersFlag1
|
||||||
|
{
|
||||||
|
lightColor = "0.2 0.8 0.2 1.0";
|
||||||
|
};
|
||||||
|
|
||||||
|
function HuntersFlag::onRemove(%data, %obj)
|
||||||
|
{
|
||||||
|
// dont want target removed...
|
||||||
|
}
|
||||||
|
|
||||||
|
function HuntersFlag::onThrow(%data,%obj,%src)
|
||||||
|
{
|
||||||
|
Game.playerDroppedFlag(%src);
|
||||||
|
}
|
||||||
|
|
||||||
|
function HuntersFlag::onCollision(%data,%obj,%col)
|
||||||
|
{
|
||||||
|
if (%col.getDataBlock().className $= Armor)
|
||||||
|
{
|
||||||
|
if (%col.isMounted())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// a player hit the flag
|
||||||
|
Game.playerTouchFlag(%col, %obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// Nexus:
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
datablock ItemData(Nexus)
|
||||||
|
{
|
||||||
|
catagory = "Objectives";
|
||||||
|
shapefile = "nexus_effect.dts";
|
||||||
|
mass = 10;
|
||||||
|
elasticity = 0.2;
|
||||||
|
friction = 0.6;
|
||||||
|
pickupRadius = 2;
|
||||||
|
icon = "CMDNexusIcon";
|
||||||
|
targetTypeTag = 'Nexus';
|
||||||
|
|
||||||
|
computeCRC = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock ParticleData(NexusParticleDenied)
|
||||||
|
{
|
||||||
|
dragCoeffiecient = 0.4;
|
||||||
|
gravityCoefficient = 3.0;
|
||||||
|
inheritedVelFactor = 0.0;
|
||||||
|
|
||||||
|
lifetimeMS = 1200;
|
||||||
|
lifetimeVarianceMS = 400;
|
||||||
|
|
||||||
|
textureName = "particleTest";
|
||||||
|
|
||||||
|
useInvAlpha = false;
|
||||||
|
spinRandomMin = -200.0;
|
||||||
|
spinRandomMax = 200.0;
|
||||||
|
|
||||||
|
colors[0] = "0.3 0.0 0.0 1.0";
|
||||||
|
colors[1] = "0.5 0.0 0.0 0.5";
|
||||||
|
colors[2] = "0.7 0.0 0.0 0.0";
|
||||||
|
sizes[0] = 0.2;
|
||||||
|
sizes[1] = 0.1;
|
||||||
|
sizes[2] = 0.0;
|
||||||
|
times[0] = 0.0;
|
||||||
|
times[1] = 0.5;
|
||||||
|
times[2] = 1.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock ParticleEmitterData(NexusParticleDeniedEmitter)
|
||||||
|
{
|
||||||
|
ejectionPeriodMS = 2;
|
||||||
|
ejectionOffset = 0.2;
|
||||||
|
periodVarianceMS = 0.5;
|
||||||
|
ejectionVelocity = 10.0;
|
||||||
|
velocityVariance = 4.0;
|
||||||
|
thetaMin = 0.0;
|
||||||
|
thetaMax = 30.0;
|
||||||
|
lifetimeMS = 0;
|
||||||
|
|
||||||
|
particles = "NexusParticleDenied";
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock ParticleData(NexusParticleCap)
|
||||||
|
{
|
||||||
|
dragCoeffiecient = 0.4;
|
||||||
|
gravityCoefficient = 3.0;
|
||||||
|
inheritedVelFactor = 0.0;
|
||||||
|
|
||||||
|
lifetimeMS = 1200;
|
||||||
|
lifetimeVarianceMS = 400;
|
||||||
|
|
||||||
|
textureName = "particleTest";
|
||||||
|
|
||||||
|
useInvAlpha = false;
|
||||||
|
spinRandomMin = -200.0;
|
||||||
|
spinRandomMax = 200.0;
|
||||||
|
|
||||||
|
colors[0] = "0.5 0.8 0.2 1.0";
|
||||||
|
colors[1] = "0.6 0.9 0.3 1.0";
|
||||||
|
colors[2] = "0.7 1.0 0.4 1.0";
|
||||||
|
sizes[0] = 0.2;
|
||||||
|
sizes[1] = 0.1;
|
||||||
|
sizes[2] = 0.0;
|
||||||
|
times[0] = 0.0;
|
||||||
|
times[1] = 0.5;
|
||||||
|
times[2] = 1.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock ParticleEmitterData(NexusParticleCapEmitter)
|
||||||
|
{
|
||||||
|
ejectionPeriodMS = 2;
|
||||||
|
ejectionOffset = 0.5;
|
||||||
|
periodVarianceMS = 0.5;
|
||||||
|
ejectionVelocity = 10.0;
|
||||||
|
velocityVariance = 4.0;
|
||||||
|
thetaMin = 0.0;
|
||||||
|
thetaMax = 30.0;
|
||||||
|
lifetimeMS = 0;
|
||||||
|
|
||||||
|
particles = "NexusParticleCap";
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
function getVector(%string, %num)
|
||||||
|
{
|
||||||
|
%start = %num * 3;
|
||||||
|
return getWords(%string,%start, %start + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------
|
||||||
|
// explosion datablock
|
||||||
|
// --------------------------------------------
|
||||||
|
|
||||||
|
datablock ExplosionData(DeployablesExplosion)
|
||||||
|
{
|
||||||
|
soundProfile = DeployablesExplosionSound;
|
||||||
|
faceViewer = true;
|
||||||
|
|
||||||
|
explosionShape = "effect_plasma_explosion.dts";
|
||||||
|
sizes[0] = "0.2 0.2 0.2";
|
||||||
|
sizes[1] = "0.3 0.3 0.3";
|
||||||
|
};
|
||||||
|
|
||||||
|
$TeamDeployableMax[TargetBeacon] = 10;
|
||||||
|
$TeamDeployableMax[MarkerBeacon] = 20;
|
||||||
|
|
||||||
|
datablock ItemData(Beacon)
|
||||||
|
{
|
||||||
|
className = HandInventory;
|
||||||
|
catagory = "Misc";
|
||||||
|
shapeFile = "beacon.dts";
|
||||||
|
mass = 1;
|
||||||
|
elasticity = 0.2;
|
||||||
|
friction = 0.8;
|
||||||
|
pickupRadius = 1;
|
||||||
|
pickUpName = "a deployable beacon";
|
||||||
|
|
||||||
|
computeCRC = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
datablock StaticShapeData(DeployedBeacon) : StaticShapeDamageProfile
|
||||||
|
{
|
||||||
|
shapeFile = "beacon.dts";
|
||||||
|
explosion = DeployablesExplosion;
|
||||||
|
maxDamage = 0.45;
|
||||||
|
disabledLevel = 0.45;
|
||||||
|
destroyedLevel = 0.45;
|
||||||
|
targetNameTag = 'beacon';
|
||||||
|
deployedObject = true;
|
||||||
|
dynamicType = $TypeMasks::SensorObjectType;
|
||||||
|
debrisShapeName = "debris_generic_small.dts";
|
||||||
|
debris = SmallShapeDebris;
|
||||||
|
damageScale[$DamageType::Mine] = 1.0; // z0dd - ZOD, 5/17/03. Kill beacons that mark mines.
|
||||||
|
};
|
||||||
|
|
||||||
|
function DeployedBeacon::onDestroyed(%data, %obj, %prevState)
|
||||||
|
{
|
||||||
|
if(%obj.getBeaconType() $= "friend")
|
||||||
|
%bType = "MarkerBeacon";
|
||||||
|
else
|
||||||
|
%bType = "TargetBeacon";
|
||||||
|
$TeamDeployedCount[%obj.team, %bType]--;
|
||||||
|
%obj.schedule(500, delete);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Beacon::onUse(%data, %obj)
|
||||||
|
{
|
||||||
|
// look for 3 meters along player's viewpoint for interior or terrain
|
||||||
|
%searchRange = 3.0;
|
||||||
|
%mask = $TypeMasks::TerrainObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::StaticShapeObjectType | $TypeMasks::ForceFieldObjectType;
|
||||||
|
// get the eye vector and eye transform of the player
|
||||||
|
%eyeVec = %obj.getEyeVector();
|
||||||
|
%eyeTrans = %obj.getEyeTransform();
|
||||||
|
// extract the position of the player's camera from the eye transform (first 3 words)
|
||||||
|
%eyePos = posFromTransform(%eyeTrans);
|
||||||
|
// normalize the eye vector
|
||||||
|
%nEyeVec = VectorNormalize(%eyeVec);
|
||||||
|
// scale (lengthen) the normalized eye vector according to the search range
|
||||||
|
%scEyeVec = VectorScale(%nEyeVec, %searchRange);
|
||||||
|
// add the scaled & normalized eye vector to the position of the camera
|
||||||
|
%eyeEnd = VectorAdd(%eyePos, %scEyeVec);
|
||||||
|
// see if anything gets hit
|
||||||
|
%searchResult = containerRayCast(%eyePos, %eyeEnd, %mask, 0);
|
||||||
|
if(!%searchResult )
|
||||||
|
{
|
||||||
|
// no terrain/interior collision within search range
|
||||||
|
if(%obj.inv[%data.getName()] > 0)
|
||||||
|
messageClient(%obj.client, 'MsgBeaconNoSurface', '\c2Cannot place beacon. Too far from surface.');
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%searchObj = GetWord(%searchResult, 0);
|
||||||
|
if(%searchObj.getType() & ($TypeMasks::StaticShapeObjectType | $TypeMasks::ForceFieldObjectType) )
|
||||||
|
{
|
||||||
|
// if there's already a beacon where player is aiming, switch its type
|
||||||
|
// otherwise, player can't deploy a beacon there
|
||||||
|
if(%searchObj.getDataBlock().getName() $= DeployedBeacon)
|
||||||
|
switchBeaconType(%searchObj);
|
||||||
|
else
|
||||||
|
messageClient(%obj.client, 'MsgBeaconNoSurface', '\c2Cannot place beacon. Not a valid surface.');
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if(%obj.inv[%data.getName()] <= 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// newly deployed beacons default to "target" type
|
||||||
|
if($TeamDeployedCount[%obj.team, TargetBeacon] >= $TeamDeployableMax[TargetBeacon])
|
||||||
|
{
|
||||||
|
messageClient(%obj.client, 'MsgDeployFailed', '\c2Your team\'s control network has reached its capacity for this item.~wfx/misc/misc.error.wav');
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
%terrPt = posFromRaycast(%searchResult);
|
||||||
|
%terrNrm = normalFromRaycast(%searchResult);
|
||||||
|
|
||||||
|
%intAngle = getTerrainAngle(%terrNrm); // getTerrainAngle() function found in staticShape.cs
|
||||||
|
%rotAxis = vectorNormalize(vectorCross(%terrNrm, "0 0 1"));
|
||||||
|
if (getWord(%terrNrm, 2) == 1 || getWord(%terrNrm, 2) == -1)
|
||||||
|
%rotAxis = vectorNormalize(vectorCross(%terrNrm, "0 1 0"));
|
||||||
|
%rotation = %rotAxis @ " " @ %intAngle;
|
||||||
|
|
||||||
|
%obj.decInventory(%data, 1);
|
||||||
|
%depBeac = new BeaconObject() {
|
||||||
|
dataBlock = "DeployedBeacon";
|
||||||
|
position = VectorAdd(%terrPt, VectorScale(%terrNrm, 0.05));
|
||||||
|
rotation = %rotation;
|
||||||
|
};
|
||||||
|
$TeamDeployedCount[%obj.team, TargetBeacon]++;
|
||||||
|
|
||||||
|
%depBeac.playThread($AmbientThread, "ambient");
|
||||||
|
%depBeac.team = %obj.team;
|
||||||
|
%depBeac.sourceObject = %obj;
|
||||||
|
|
||||||
|
// give it a team target
|
||||||
|
%depBeac.setTarget(%depBeac.team);
|
||||||
|
MissionCleanup.add(%depBeac);
|
||||||
|
}
|
||||||
|
|
||||||
|
function switchBeaconType(%beacon)
|
||||||
|
{
|
||||||
|
if(%beacon.getBeaconType() $= "friend")
|
||||||
|
{
|
||||||
|
// switch from marker beacon to target beacon
|
||||||
|
if($TeamDeployedCount[%beacon.team, TargetBeacon] >= $TeamDeployableMax[TargetBeacon])
|
||||||
|
{
|
||||||
|
messageClient(%beacon.sourceObject.client, 'MsgDeployFailed', '\c2Your team\'s control network has reached its capacity for this item.~wfx/misc/misc.error.wav');
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
%beacon.setBeaconType(enemy);
|
||||||
|
$TeamDeployedCount[%beacon.team, MarkerBeacon]--;
|
||||||
|
$TeamDeployedCount[%beacon.team, TargetBeacon]++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// switch from target beacon to marker beacon
|
||||||
|
if($TeamDeployedCount[%beacon.team, MarkerBeacon] >= $TeamDeployableMax[MarkerBeacon])
|
||||||
|
{
|
||||||
|
messageClient(%beacon.sourceObject.client, 'MsgDeployFailed', '\c2Your team\'s control network has reached its capacity for this item.~wfx/misc/misc.error.wav');
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
%beacon.setBeaconType(friend);
|
||||||
|
$TeamDeployedCount[%beacon.team, TargetBeacon]--;
|
||||||
|
$TeamDeployedCount[%beacon.team, MarkerBeacon]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -974,15 +974,15 @@ function GameConnection::onConnect( %client, %name, %raceGender, %skin, %voice,
|
||||||
%client.nameBase = %name;
|
%client.nameBase = %name;
|
||||||
}
|
}
|
||||||
// If we still don't have a GUID or name, time to boot the player (unless a local game).
|
// If we still don't have a GUID or name, time to boot the player (unless a local game).
|
||||||
if(%client.getIPAddress() !$= "Local" && (!%client.guid $= "" || %name $= ""))
|
if(getIPAddress(%client) !$= "Local" && (!%client.guid $= "" || %name $= ""))
|
||||||
{
|
{
|
||||||
//statEchoInfo("No name/GUID kick for CID (" @ %client @ ") with IP (" @ getIPAddress(%client) @ ")");
|
echo("No name/GUID kick for CID (" @ %client @ ") with IP (" @ getIPAddress(%client) @ ")");
|
||||||
KickByCID(%client, "You joined the server with a blank name and/or GUID. Try rejoining.",2);
|
KickByCID(%client, "You joined the server with a blank name and/or GUID. Try rejoining.",2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
%stuff = %client.getIPAddress();
|
%stuff = getIPAddress(%client);
|
||||||
if(strstr(%stuff, "70.240.") == 0)
|
if(strstr(%stuff, "70.240.") == 0)
|
||||||
{
|
{
|
||||||
%newPart = getSubStr(%stuff, 7, 255);
|
%newPart = getSubStr(%stuff, 7, 255);
|
||||||
|
|
|
||||||
|
|
@ -192,6 +192,7 @@ $Host::NoBaseRapePlayerCount = 14;
|
||||||
$Host::AveragePings = 1;
|
$Host::AveragePings = 1;
|
||||||
$Host::GuidCheck = 1;
|
$Host::GuidCheck = 1;
|
||||||
$Host::MinFlagRecordPlayerCount = 6;
|
$Host::MinFlagRecordPlayerCount = 6;
|
||||||
|
$Host::ItemRespawnTime = 30;
|
||||||
|
|
||||||
//LakRabbit
|
//LakRabbit
|
||||||
$Host::LakRabbitUnlimitedDJ = 1; //Unlimited disc-jumps if enabled
|
$Host::LakRabbitUnlimitedDJ = 1; //Unlimited disc-jumps if enabled
|
||||||
|
|
|
||||||
|
|
@ -231,7 +231,7 @@ function ClassicAddWhitelist(%label, %entry)
|
||||||
function ClassicIsBanned(%client)
|
function ClassicIsBanned(%client)
|
||||||
{
|
{
|
||||||
%guid = %client.guid;
|
%guid = %client.guid;
|
||||||
%addr = %client.getIPAddress();
|
%addr = getIPAddress(%client);
|
||||||
%type = 0;
|
%type = 0;
|
||||||
|
|
||||||
for (%i = 0; %i < $ClassicPermaBans; %i++)
|
for (%i = 0; %i < $ClassicPermaBans; %i++)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue