From ed155c53df7ad47afc39ff11f35662bf0b99bd77 Mon Sep 17 00:00:00 2001 From: Berke <51463005+Berke111@users.noreply.github.com> Date: Mon, 25 Sep 2023 22:18:32 +0300 Subject: [PATCH] Final Person Standing (#529) * Add vscript * Update stripper * Oops * Cap zm item user hp to 1200 * Oops * Teleport zombies even if no one gets the solo! * O * Make sure disconnected players are removed properly --- stripper/ze_last_man_standing_p3.cfg | 6432 ++++++++++++++++++++------ vscripts/lms1main1.nut | 708 +++ 2 files changed, 5674 insertions(+), 1466 deletions(-) create mode 100644 vscripts/lms1main1.nut diff --git a/stripper/ze_last_man_standing_p3.cfg b/stripper/ze_last_man_standing_p3.cfg index ff13601f..4c53343f 100644 --- a/stripper/ze_last_man_standing_p3.cfg +++ b/stripper/ze_last_man_standing_p3.cfg @@ -1,4 +1,4 @@ -; - - - - - - - - - - - - - - - - - - - - - - - +; - - - - - - - - - - - - - - - - - - - - - - - ; ze Last Man Standing ; Map version "p3" (CS:GO) ; - - - - - - - - - - - - - - - - - - - - - - - @@ -21,58 +21,66 @@ modify: ; Changes done by "Hichatu". ; - - - - - - - - - - - - - - - - - - - - - - - -; Fix some Stage5 TP avoidance spots, move the trigger up a bit -modify: +; Fix stage 2 skips in first room. +add: { - match: - { - "targetname" "lms_fuckoffzombies" - } - replace: - { - "origin" "4608 -4608 13552" - } + "classname" "func_brush" + "model" "*219" + "origin" "5158 879 -6818" + "rendermode" "10" } -; Nerf Predator jump height a little -modify: +add: { - match: - { - "targetname" "Zombie_Item_Predator_Jump" - } - delete: - { - "OnLessThan" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));0-1" - } - insert: - { - "OnLessThan" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 400));0-1" - } + "classname" "func_brush" + "model" "*219" + "origin" "4102 879 -6818" + "rendermode" "10" +} + +add: +{ + "classname" "func_brush" + "model" "*223" + "origin" "3893 1353 -6870" + "rendermode" "10" +} + +add: +{ + "classname" "func_brush" + "model" "*223" + "origin" "5173 1353 -6870" + "rendermode" "10" } -; Fix dumb adminroom TP angles for my own convenience +; Fix admin room teleport angles. modify: { match: { + "classname" "trigger_multiple" "targetname" "adminroomtp" } + replace: + { + "wait" "1e30" + } insert: { - "OnStartTouch" "!activatorRunScriptCodeself.SetAngles(0,180,0)0-1" - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(0,0,0))0-1" + "OnStartTouch" "!activatorRunScriptCodeself.SetAngles(0, 180, 0);-1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector());-1" } } -; We are going to remake the Teamwin Heli/Sacrifice endings -; Delete the original condition for Heli ending +; Remake the "Team Win Ending". +; Delete the original condition for the stage 1 helicopter ending. modify: { match: { - "targetname" "stage_x_helicopter_6" "classname" "path_track" + "targetname" "stage_x_helicopter_6" } delete: { @@ -80,94 +88,93 @@ modify: } } -; We will base it on the amount of events completed throughout the map, when on Stage5 -; 10 to be specific +filter: +{ + "classname" "logic_compare" + "targetname" "Event_Status_Stage_x_helicopter_Escapes" +} + +; Base it on the amount of events completed throughout the map by humans, when on stage 5. +; 10 events to be specific. add: { "classname" "math_counter" - "targetname" "Stage5TeamwinEndingChooser" - "StartDisabled" "0" - "startvalue" "0" - "min" "0" + "targetname" "stage_5_teamwinending1" "max" "10" - "OnHitMax" "Case_Events_Stage_5InValuestage_x_helicopter_escapes1-1" + "OnHitMax" "!self,Kill,,,1" + "OnHitMax" "Case_Events_Stage_5,InValue,stage_x_helicopter_escapes,,1" } + modify: { match: { - "targetname" "Case_Events_Stage_5" "classname" "logic_case" + "targetname" "Case_Events_Stage_5" + "origin" "-4272 11224 -8552" } insert: { - "OnCase01" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase02" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase03" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase04" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase05" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase06" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase07" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase08" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase09" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase10" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase11" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase12" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase13" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase14" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase15" "Stage5TeamwinEndingChooserAdd10-1" - "OnCase16" "Stage5TeamwinEndingChooserAdd10-1" + "OnCase01" "stage_5_teamwinending1,Add,1,,1" + "OnCase02" "stage_5_teamwinending1,Add,1,,1" + "OnCase03" "stage_5_teamwinending1,Add,1,,1" + "OnCase04" "stage_5_teamwinending1,Add,1,,1" + "OnCase05" "stage_5_teamwinending1,Add,1,,1" + "OnCase06" "stage_5_teamwinending1,Add,1,,1" + "OnCase07" "stage_5_teamwinending1,Add,1,,1" + "OnCase08" "stage_5_teamwinending1,Add,1,,1" + "OnCase09" "stage_5_teamwinending1,Add,1,,1" + "OnCase10" "stage_5_teamwinending1,Add,1,,1" + "OnCase11" "stage_5_teamwinending1,Add,1,,1" + "OnCase12" "stage_5_teamwinending1,Add,1,,1" + "OnCase13" "stage_5_teamwinending1,Add,1,,1" + "OnCase14" "stage_5_teamwinending1,Add,1,,1" + "OnCase15" "stage_5_teamwinending1,Add,1,,1" + "OnCase16" "stage_5_teamwinending1,Add,1,,1" } } -; Reset mech gravity after core is fully charged modify: { match: { - "classname" "logic_relay" - "targetname" "stage_5_top_relay_core_working" + "classname" "logic_case" + "targetname" "Case_Events_Stage_5" + "origin" "-4272 11240 -8552" } insert: { - "OnTrigger" "human_mech,AddOutput,gravity 1,0,-1" + "OnCase01" "stage_5_teamwinending1,Add,1,,1" + "OnCase02" "stage_5_teamwinending1,Add,1,,1" + "OnCase03" "stage_5_teamwinending1,Add,1,,1" + "OnCase04" "stage_5_teamwinending1,Add,1,,1" + "OnCase05" "stage_5_teamwinending1,Add,1,,1" + "OnCase06" "stage_5_teamwinending1,Add,1,,1" + "OnCase07" "stage_5_teamwinending1,Add,1,,1" } } -; Fix stage 2 skips in first room. -add: -{ - "classname" "func_brush" - "model" "*219" - "origin" "5158 879 -6818" - "rendermode" "10" -} - -add: -{ - "classname" "func_brush" - "model" "*219" - "origin" "4102 879 -6818" - "rendermode" "10" -} - -add: -{ - "classname" "func_brush" - "model" "*223" - "origin" "3893 1353 -6870" - "rendermode" "10" -} - -add: +modify: { - "classname" "func_brush" - "model" "*223" - "origin" "5173 1353 -6870" - "rendermode" "10" + match: + { + "classname" "logic_case" + "targetname" "Case_Events_Stage_5" + "origin" "-4256 11256 -8552" + } + insert: + { + "OnCase09" "stage_5_teamwinending1,Add,1,,1" + "OnCase10" "stage_5_teamwinending1,Add,1,,1" + "OnCase11" "stage_5_teamwinending1,Add,1,,1" + "OnCase13" "stage_5_teamwinending1,Add,1,,1" + "OnCase14" "stage_5_teamwinending1,Add,1,,1" + "OnCase15" "stage_5_teamwinending1,Add,1,,1" + "OnCase16" "stage_5_teamwinending1,Add,1,,1" + } } -; Fix possible skip with "Tank" on stage 4. +; Fix possible skip with "Tank" vehicle on stage 4. add: { "classname" "func_brush" @@ -224,7 +231,7 @@ add: "parentname" "Weapon_PortalGun_Portal_1_Teleport" "StartDisabled" "1" "filtername" "Weapon_PortalGun_FixFilter_2" - "wait" ".01" + "wait" "1e30" "OnStartTouch" "!activator,AddContext,player_portal_1:1,,-1" "OnStartTouch" "Weapon_PortalGun_EnterPortalSound,FireUser1,,,-1" } @@ -239,7 +246,7 @@ add: "parentname" "Weapon_PortalGun_Portal_2_Teleport" "StartDisabled" "1" "filtername" "Weapon_PortalGun_FixFilter_1" - "wait" ".01" + "wait" "1e30" "OnStartTouch" "!activator,AddContext,player_portal_2:1,,-1" "OnStartTouch" "Weapon_PortalGun_EnterPortalSound,FireUser1,,,-1" } @@ -296,506 +303,176 @@ modify: } } -; Move stage_4_trigger_end back some units so it no longer sticks out of the wall -filter: +; Fix buggy train on stage 4. +modify: { - "classname" "trigger_once" - "targetname" "stage_4_trigger_end" + match: + { + "classname" "func_tanktrain" + "targetname" "Vehicle_Fake_Truck_Tracktrain1" + } + replace: + { + "orientationtype" "1" + } } -add: + +modify: { - "model" "*2" - "classname" "trigger_once" - "targetname" "stage_4_trigger_end" - "filtername" "team_filter_humans" - "origin" "11408 -9200 3504" - "spawnflags" "1" - "StartDisabled" "1" - "OnStartTouch" "Global_GameText_AnnouncementRunScriptCodesetMessage(9)0-1" - "OnStartTouch" "Vehicle_Fake_Helicopter_TrackTrain*FireUser111" - "OnStartTouch" "Event_Status_Stage_1_Tank_Reaches_EndFireUser10-1" - "OnStartTouch" "stage_x_end_rescue_helicopterTrigger401" - "OnStartTouch" "Global_GameText_AnnouncementFireUser40-1" - "OnTrigger" "stage_4_end_button*,Unlock,,,1" - "OnTrigger" "stage_4_end_button_protection,AddOutput,OnDamaged !self:FireUser1:::1,,1" + match: + { + "classname" "path_track" + "targetname" "Vehicle_Fake_Truck_Path_Track_5" + } + insert: + { + "OnPass" "!activator,AddOutput,angles 0 180,,1" + } } -; New way of filtering the 1st nuke button on Stage4 -; Elegant names I know, makes it memorable -add: +; - - - - - - - - - - - - - - - - - - - - - - - +; Changes done by "iszaar". +; - - - - - - - - - - - - - - - - - - - - - - - + +; Humans don't need to trigger this on extreme stage 1 but zombies can still trigger it. +modify: { - "classname" "filter_activator_team" - "targetname" "ZMTRIGGERCUNTLORDSUPREME" - "Negated" "Allow entities that match criteria" - "filterteam" "2" - "OnPass" "ZOMBIESTRIGGEREDTrigger01" -} -add: + match: + { + "classname" "func_button" + "targetname" "stage_1_button_end_2" + } + delete: + { + "OnPressed" "ZOMBIESTRIGGEREDRunScriptCodeprogressTrigger()01" + } +} + +; Remove the push for camping. +filter: { - "classname" "filter_activator_team" - "targetname" "HMTRIGGERCUNTLORDSUPREME" - "Negated" "Allow entities that match criteria" - "filterteam" "3" - "OnPass" "ZMTRIGGERCUNTLORDSUPREMEKill01" + "classname" "trigger_push" + "targetname" "extreme3antigaycamp" } -; If zombies press first while unlocked, round is ended -; If humans press first while unlocked, the other filter is killed, so zombies cannot press it and end the round +; Fix delaying on stage 2. modify: { match: { - "targetname" "stage_4_end_button" + "classname" "filter_activator_team" + "targetname" "stage_2_end_check_zombie" } insert: { - "OnPressed" "ZMTRIGGERCUNTLORDSUPREMETestActivator01" - "OnPressed" "HMTRIGGERCUNTLORDSUPREMETestActivator01" + "OnPass" "Global_GameText_Announcement,FireUser3,,,1" + "OnPass" "Global_GameText_Announcement,SetText,** ZOMBIES DETECTED! YOU LOSE! **,,1" + "OnPass" "map1roundend1,EndRound_TerroristsWin,7,3,1" } } -; A new way of unlocking the 1st nuke button on Stage4 -; Either humans get close and the button unlocks, or Ultralisk gets close and zombies can now press the button +; Open doors to prevent zombies being locked out on "Solo Ending". modify: { match: { - "targetname" "stage_x_ultralistk_path_6" + "classname" "logic_relay" + "targetname" "stage_5_core_destroyed" } insert: { - "OnPass" "stage_4_end_button*Unlock01" + "OnTrigger" "stage_5_top_door_*,Open,,,1" } } -; Stage4 train angle shittery +; Make "Ultralisk" come faster on event he's not killed. modify: { match: { - "targetname" "Vehicle_Fake_Truck_Tracktrain1" - "classname" "func_tanktrain" + "classname" "point_template" + "targetname" "stage5_things" } - replace: + delete: { - "orientationtype" "1" + "OnEntitySpawned" "stage_5_lower_ultraliskTrigger120-1" + } + insert: + { + "OnEntitySpawned" "stage_5_lower_ultralisk,Trigger,,100,1" } } + +; Avoid delaying on stage 5. modify: { match: { - "targetname" "Vehicle_Fake_Truck_Path_Track_5" - "classname" "path_track" + "classname" "math_counter" + "targetname" "stage_5_lower_counter_energy" } insert: { - "OnPass" "!activatorRunScriptCodeself.SetAngles(0,180,0)01" + "OnHitMax" "stage_5_antidelay1,Trigger,,,1" } } -; - - - - - - - - - - - - - - - - - - - - - - - -; Changes done by "iszaar". -; - - - - - - - - - - - - - - - - - - - - - - - - -; Particle and sprite crap -add: +modify: { - "classname" "env_lightglow" - "targetname" "stage_5_stuff1" - "origin" "4609 -4610 12743" - "HorizontalGlowSize" "210" - "MaxDist" "7500" - "MinDist" "100" - "OuterMaxDist" "1200" - "rendercolor" "130 192 255" - "VerticalGlowSize" "120" - "GlowProxySize" "16" - "HDRColorScale" "0.5" + match: + { + "classname" "func_button" + "targetname" "stage_5_lower_door_button_LIFT" + } + insert: + { + "OnPressed" "stage_5_antidelay1,Kill,,,1" + "OnPressed" "stage_5_antidelay1,CancelPending,,,1" + } } + add: { - "classname" "env_lightglow" - "targetname" "stage_5_stuff1" - "origin" "-8704 -979.863 -4848" - "HorizontalGlowSize" "210" - "MaxDist" "11000" - "MinDist" "-1" - "OuterMaxDist" "1200" - "rendercolor" "130 192 255" - "VerticalGlowSize" "180" - "GlowProxySize" "16" - "HDRColorScale" "1" + "classname" "logic_relay" + "targetname" "stage_5_antidelay1" + "OnTrigger" "Global_GameText_Announcement,FireUser3,,6,1" + "OnTrigger" "Global_GameText_Announcement,SetText,** ACTIVATE THE ELEVATOR QUICKLY! (1/3) **,5,1" + "OnTrigger" "Global_GameText_Announcement,FireUser3,,16,1" + "OnTrigger" "Global_GameText_Announcement,SetText,** ACTIVATE THE ELEVATOR QUICKLY! (2/3) **,15,1" + "OnTrigger" "Global_GameText_Announcement,FireUser3,,26,1" + "OnTrigger" "Global_GameText_Announcement,SetText,** LAST WARNING! ACTIVATE THE ELEVATOR QUICKLY! (3/3) **,25,1" + "OnTrigger" "map1roundend1,EndRound_TerroristsWin,7,35,1" } + +; Fix zombies being able to surf and stop stage 2 from being completed, only really doable with high air acceleration but just incase. add: { - "classname" "env_lightglow" - "targetname" "stage_5_stuff1" - "origin" "-8744 -13854 -14160" - "HorizontalGlowSize" "210" - "MaxDist" "27000" - "MinDist" "0" - "OuterMaxDist" "28000" - "rendercolor" "255 255 255" - "VerticalGlowSize" "180" - "GlowProxySize" "2" - "HDRColorScale" "0.5" + "classname" "trigger_multiple" + "targetname" "stage_2_antistrafe1" + "origin" "4608 -7232 -8864" + "spawnflags" "1" + "model" "*613" + "StartDisabled" "1" + "filtername" "team_filter_zombies" + "wait" "1e30" + "OnStartTouch" "!activatorRunScriptCodeif (self.GetTeam() == 2) self.SetVelocity(Vector(0, 0, self.GetVelocity().z));-1" } -add: + +modify: { - "classname" "env_lightglow" - "targetname" "stage_5_stuff1" - "origin" "-8750 -12393 -13824" - "HorizontalGlowSize" "210" - "MaxDist" "27000" - "MinDist" "7500" - "OuterMaxDist" "28000" - "rendercolor" "255 255 255" - "VerticalGlowSize" "180" - "GlowProxySize" "2" - "HDRColorScale" "0.5" + match: + { + "classname" "trigger_once" + "targetname" "stage_2_end_trigger" + } + insert: + { + "OnTrigger" "stage_2_antistrafe1,Enable,,1,1" + } } -add: -{ - "classname" "env_lightglow" - "targetname" "stage_3_stuff1" - "origin" "2494 -10305 1520" - "HorizontalGlowSize" "120" - "MaxDist" "10000" - "MinDist" "1500" - "OuterMaxDist" "11000" - "rendercolor" "255 255 255" - "VerticalGlowSize" "60" - "GlowProxySize" "2" - "HDRColorScale" "0.5" -} -add: -{ - "targetname" "stage_5_stuff1" - "spawnflags" "1" - "scale" "40" - "rendermode" "7" - "renderfx" "0" - "rendercolor" "255 255 255" - "renderamt" "140" - "origin" "-8736 -13856 -13776" - "model" "sprites/glow.vmt" - "mindxlevel" "0" - "maxdxlevel" "0" - "HDRColorScale" "1.0" - "GlowProxySize" "10.0" - "framerate" "10.0" - "disablereceiveshadows" "0" - "classname" "env_sprite" -} -add: -{ - "targetname" "stage_5_stuff1" - "spawnflags" "1" - "scale" "40" - "rendermode" "7" - "renderfx" "0" - "rendercolor" "255 255 255" - "renderamt" "140" - "origin" "-8744 -13854 -14160" - "model" "sprites/glow.vmt" - "mindxlevel" "0" - "maxdxlevel" "0" - "HDRColorScale" "1.0" - "GlowProxySize" "10.0" - "framerate" "10.0" - "disablereceiveshadows" "0" - "classname" "env_sprite" -} -add: -{ - "targetname" "stage_5_stuff1" - "spawnflags" "1" - "scale" "40" - "renderfx" "0" - "rendercolor" "255 255 255" - "renderamt" "140" - "origin" "-8704 -979.863 -5248" - "model" "sprites/halo.vmt" - "rendermode" "7" - "mindxlevel" "0" - "maxdxlevel" "0" - "HDRColorScale" "1.0" - "GlowProxySize" "10.0" - "framerate" "10.0" - "disablereceiveshadows" "0" - "classname" "env_sprite" -} - -; More particle and sprite crap -add: -{ - "targetname" "SpriteTemplate1" - "origin" "4190 1239 -7422" - "spawnflags" "1" - "scale" "2" - "rendermode" "9" - "renderfx" "14" - "rendercolor" "216 205 180" - "renderamt" "200" - "model" "sprites/glow_test02.vmt" - "mindxlevel" "0" - "maxdxlevel" "0" - "HDRColorScale" ".5" - "GlowProxySize" "10" - "framerate" "10.0" - "disablereceiveshadows" "0" - "classname" "env_sprite" -} -add: -{ - "origin" "4190 1239 -7422" - "Template01" "SpriteTemplate1" - "targetname" "TemplateSystem1" - "spawnflags" "0" - "classname" "point_template" -} -modify: -{ - match: - { - "targetname" "Stage_Start_Stage_2" - } - insert: - { - "OnTrigger" "TemplateSystem1,AddOutput,origin 4894 1092 -6834,0,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,0.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin 4126 1092 -6834,1,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,1.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin 7686 4356 -7058,2,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,2.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin 6406 4356 -7058,3,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,3.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin 5126 4356 -7058,4,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,4.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin 3846 4356 -7058,5,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,5.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin 2566 4356 -7058,6,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,6.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin 1286 4356 -7058,7,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,7.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin 6 4356 -7058,8,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,8.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -1274 4356 -7058,9,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,9.1,-1" - } -} -modify: -{ - match: - { - "targetname" "Stage_Start_Stage_4" - } - insert: - { - "OnTrigger" "TemplateSystem1,AddOutput,origin -9130 -8716 3959,0,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,0.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -9818 -8716 3959,1,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,1.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -8586 -8700 3959,2,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,2.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -8058 -8700 3959,3,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,3.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -7514 -8700 3959,4,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,4.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -7514 -11132 3959,5,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,5.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -8058 -11132 3959,6,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,6.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -8586 -11132 3959,7,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,7.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -9130 -11148 3959,8,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,8.1,-1" - "OnTrigger" "TemplateSystem1,AddOutput,origin -9818 -11148 3959,9,-1" - "OnTrigger" "TemplateSystem1,ForceSpawn,,9.1,-1" - } -} - -; Humans don't need to trigger this on extreme stage 1 but zombies can still trigger it. -modify: -{ - match: - { - "classname" "func_button" - "targetname" "stage_1_button_end_2" - } - delete: - { - "OnPressed" "ZOMBIESTRIGGEREDRunScriptCodeprogressTrigger()01" - } -} - -; Remove the push for camping. -filter: -{ - "classname" "trigger_push" - "targetname" "extreme3antigaycamp" -} - -; Fix delaying on stage 2. -modify: -{ - match: - { - "classname" "filter_activator_team" - "targetname" "stage_2_end_check_zombie" - } - insert: - { - "OnPass" "Global_GameText_Announcement,FireUser3,,,1" - "OnPass" "Global_GameText_Announcement,AddOutput,message ** ZOMBIES DETECTED! YOU LOSE! **,,1" - "OnPass" "map1roundend1,EndRound_TerroristsWin,7,3,1" - } -} - -; Open doors to prevent zombies being locked out on solo ending. -modify: -{ - match: - { - "classname" "logic_relay" - "targetname" "stage_5_core_destroyed" - } - insert: - { - "OnTrigger" "stage_5_top_door_*,Open,,,1" - } -} - -; Make "Ultralisk" come faster on event he's not killed. -modify: -{ - match: - { - "classname" "point_template" - "targetname" "stage5_things" - } - delete: - { - "OnEntitySpawned" "stage_5_lower_ultraliskTrigger120-1" - } - insert: - { - "OnEntitySpawned" "stage_5_lower_ultralisk,Trigger,,100,1" - } -} - -; Fix stage 2 last vent entrance being breakable early. -modify: -{ - match: - { - "classname" "trigger_multiple" - "targetname" "stage_2_teleport_2" - } - insert: - { - "OnStartTouch" "stage_2_escape_vent,SetHealth,100,5,1" - } -} - -modify: -{ - match: - { - "classname" "func_breakable" - "targetname" "stage_2_escape_vent" - } - replace: - { - "health" "0" - } -} - -; Avoid delay on stage 5. -modify: -{ - match: - { - "classname" "math_counter" - "targetname" "stage_5_lower_counter_energy" - } - insert: - { - "OnHitMax" "stage5_antidelay,Trigger,,,1" - "OnHitMax" "!self,Kill,,,1" - } -} - -modify: -{ - match: - { - "classname" "filter_activator_team" - "targetname" "stage_5_button_filter" - } - insert: - { - "OnPass" "stage5_antidelay,CancelPending,,,1" - } -} - -add: -{ - "classname" "logic_relay" - "targetname" "stage5_antidelay" - "OnTrigger" "Global_GameText_Announcement,FireUser3,,6,1" - "OnTrigger" "Global_GameText_Announcement,AddOutput,message ** ACTIVATE THE ELEVATOR QUICKLY! (1/3) **,6,1" - "OnTrigger" "Global_GameText_Announcement,FireUser3,,16,1" - "OnTrigger" "Global_GameText_Announcement,AddOutput,message ** ACTIVATE THE ELEVATOR QUICKLY! (2/3) **,16,1" - "OnTrigger" "Global_GameText_Announcement,FireUser3,,26,1" - "OnTrigger" "Global_GameText_Announcement,AddOutput,message ** LAST WARNING! ACTIVATE THE ELEVATOR QUICKLY! (3/3) **,26,1" - "OnTrigger" "map1roundend1,EndRound_TerroristsWin,7,36,1" -} - -add: -{ - "classname" "game_round_end" - "targetname" "map1roundend1" - "OnRoundEnded" "map1roundend1,Kill,,,1" -} - -; Fix zombies being able to surf and stop stage 2 from being completed, only really doable with high air acceleration but just incase. -add: -{ - "classname" "filter_activator_team" - "targetname" "team_filter_stage2water_human" - "filterteam" "3" -} - -modify: -{ - match: - { - "targetname" "stage_2_hurt_water" - } - replace: - { - "filtername" "team_filter_stage2water_human" - } -} - -modify: -{ - match: - { - "classname" "trigger_once" - "targetname" "stage_2_end_trigger" - } - insert: - { - "OnStartTouch" "team_filter_stage2water_human,Kill,,,1" - "OnStartTouch" "stage_2_hurt_water,AddOutput,damage 5000,,1" - } -} - -; Make this unblockable, players can get stuck but at least this won't be griefable. -modify: + +; Make this unblockable, players can get stuck but at least this won't be griefable. +modify: { match: { @@ -808,26 +485,13 @@ modify: } } -; Stage 5 lower delay on the buttons on top. -modify: -{ - match: - { - "classname" "func_button" - "targetname" "stage_5_end_button_blue" - } - replace: - { - "wait" ".01" - } -} - +; Lower delay on the buttons on top of stage 5. modify: { match: { "classname" "func_button" - "targetname" "stage_5_end_button_red" + "targetname" "/stage_x_end_button_(blue|red)/" } replace: { @@ -845,9 +509,10 @@ modify: } insert: { - "OnUser1" "stage4_nuke_broke,Enable,,,1" + "OnUser1" "stage_4_nuke_broke,Enable,,,1" } } + modify: { match: @@ -857,24 +522,24 @@ modify: } insert: { - "OnPass" "stage4_nuke_broke,Trigger,,,1" + "OnPass" "stage_4_nuke_broke,Trigger,,,1" } } add: { "classname" "logic_relay" - "targetname" "stage4_nuke_broke" + "targetname" "stage_4_nuke_broke" "spawnflags" "1" "StartDisabled" "1" "OnTrigger" "Global_GameText_Announcement,FireUser3,,2,1" - "OnTrigger" "Global_GameText_Announcement,AddOutput,message ** THE NUKE FAILED! **,2,1" + "OnTrigger" "Global_GameText_Announcement,SetText,** THE NUKE FAILED! **,2,1" "OnTrigger" "Global_GameText_Announcement,FireUser3,,8,1" - "OnTrigger" "Global_GameText_Announcement,AddOutput,message ** THE ULTRALISK IS STILL ALIVE HOPE WE DON'T HAVE TO MEET HIM AGAIN... **,8,1" + "OnTrigger" "Global_GameText_Announcement,SetText,** THE ULTRALISK IS STILL ALIVE HOPE WE DON'T HAVE TO MEET HIM AGAIN... **,8,1" "OnTrigger" "stage_end_explosion_working,Trigger,,10,1" } -; Nerf "Antlion", this was done due to it being overpowered if you know what to do. +; Nerf "Antlion" item, this was done due to it being overpowered if you know what to do. modify: { match: @@ -892,7 +557,7 @@ modify: } } -; Move stage 1 "Vortigaunt" item to let you get past easier with "Tank". +; Move stage 1 "Vortigaunt" item spawn place to let you get past easier with "Tank" vehicle. modify: { match: @@ -906,7 +571,7 @@ modify: } insert: { - "OnTrigger" "Zombie_Item_Vortigaunt_Template,AddOutput,origin 7886 3108 -13662,,-1" + "OnTrigger" "Zombie_Item_Vortigaunt_Template,SetLocalOrigin,7886 3108 -13662,,-1" } } @@ -920,7 +585,7 @@ modify: } insert: { - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(0, 0, self.GetVelocity().z));-1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector());-1" } } @@ -938,7 +603,7 @@ modify: } } -; Fix the helicopter shitting itself due to the added skybox. +; Fix the helicopter path due to the added skybox. modify: { match: @@ -991,6 +656,7 @@ add: "holdtime" ".75" "duration" ".5" } + modify: { match: @@ -1003,6 +669,7 @@ modify: "OnPressed" "stage_3_fade1,Fade,,5,1" } } + modify: { match: @@ -1012,99 +679,3941 @@ modify: } insert: { + "OnUser1" "stage_3_fade1,Kill,,19,-1" "OnUser1" "stage_3_fade1,Fade,,19,-1" } } -; make this open for dramatic effect stage 3 boss escape +; Change the "rendermode" to let us do the special effect thing. modify: { match: { - "targetname" "stage_3_boos_end_door" + "classname" "prop_dynamic" + "targetname" "stage_5_pendulum_model" } replace: { - "spawnpos" "0" - "speed" "20" + "renderamt" "254" + } + insert: + { + "rendermode" "2" + "renderfx" "14" } } -modify: + +; Special effects. +add: +{ + "classname" "env_sprite" + "targetname" "stage_3_stuff1" + "origin" "2494 -10305 1520" + "spawnflags" "1" + "model" "sprites/glow04.vmt" + "scale" "30" + "rendermode" "7" + "renderamt" "140" + "GlowProxySize" "10" + "HDRColorScale" "1" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_5_stuff1" + "origin" "-8704 -980 -5248" + "spawnflags" "1" + "model" "sprites/halo.vmt" + "scale" "40" + "renderamt" "140" + "rendermode" "7" + "GlowProxySize" "10" + "HDRColorScale" "1" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_5_stuff1" + "origin" "-8744 -13854 -14160" + "spawnflags" "1" + "model" "sprites/glow.vmt" + "scale" "40" + "rendermode" "7" + "renderamt" "140" + "HDRColorScale" "1" + "GlowProxySize" "10" +} + +; Light sprites. +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "4894 1092 -6834" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "4126 1092 -6834" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "7686 4356 -7058" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "6406 4356 -7058" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "5126 4356 -7058" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "3846 4356 -7058" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "2566 4356 -7058" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "1286 4356 -7058" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "6 4356 -7058" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_2_stuff1" + "origin" "-1274 4356 -7058" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-9130 -8716 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-9818 -8716 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-8586 -8700 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-8058 -8700 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-7514 -8700 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-7514 -11132 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-8058 -11132 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-8586 -11132 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-9130 -11148 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_sprite" + "targetname" "stage_4_stuff1" + "origin" "-9818 -11148 3959" + "spawnflags" "1" + "model" "sprites/glow_test02.vmt" + "scale" "2" + "rendermode" "9" + "renderfx" "14" + "rendercolor" "216 205 180" + "renderamt" "200" + "HDRColorScale" ".5" + "GlowProxySize" "10" +} + +add: +{ + "classname" "env_lightglow" + "targetname" "stage_3_stuff1" + "origin" "2494 -10305 1520" + "HorizontalGlowSize" "210" + "MaxDist" "10000" + "OuterMaxDist" "11000" + "VerticalGlowSize" "180" + "GlowProxySize" "64" + "HDRColorScale" "4" +} + +add: +{ + "classname" "env_lightglow" + "targetname" "stage_5_stuff1" + "origin" "4609 -4610 12743" + "HorizontalGlowSize" "210" + "MinDist" "100" + "MaxDist" "7500" + "OuterMaxDist" "1200" + "rendercolor" "130 192 255" + "VerticalGlowSize" "180" + "GlowProxySize" "32" + "HDRColorScale" "2" +} + +add: +{ + "classname" "env_lightglow" + "targetname" "stage_5_stuff1" + "origin" "-8704 -980 -4848" + "HorizontalGlowSize" "210" + "MaxDist" "11000" + "OuterMaxDist" "1200" + "rendercolor" "130 192 255" + "VerticalGlowSize" "180" + "GlowProxySize" "32" + "HDRColorScale" "2" +} + +add: +{ + "classname" "env_lightglow" + "targetname" "stage_5_stuff1" + "origin" "-8744 -13854 -14160" + "HorizontalGlowSize" "210" + "MaxDist" "27000" + "OuterMaxDist" "28000" + "VerticalGlowSize" "180" + "GlowProxySize" "64" + "HDRColorScale" "4" +} + +add: +{ + "classname" "env_lightglow" + "targetname" "stage_5_stuff1" + "origin" "-8750 -12393 -13824" + "HorizontalGlowSize" "210" + "MaxDist" "27000" + "OuterMaxDist" "28000" + "VerticalGlowSize" "180" + "GlowProxySize" "64" + "HDRColorScale" "4" +} + +; - - - - - - - - - - - - - - - - - - - - - - - +; Changes done by "Berke". +; - - - - - - - - - - - - - - - - - - - - - - - + +; Fix spawn trigger not resetting players and make it teleport faster. +filter: +{ + "classname" "trigger_teleport" + "targetname" "teleporter_main_trigger_positioner" +} + +modify: +{ + match: + { + "classname" "trigger_multiple" + "targetname" "teleporter_main_trigger_positioner" + } + replace: + { + "origin" "-3488 9376 -8528" + "wait" "1e30" + } + delete: + { + "model" "*273" + "filtername" "Z_Items_Filter_Name" + "OnStartTouch" "!activatorAddOutputtargetname 0-1" + "OnStartTouch" "!activatorAddOutputgravity 10-1" + "OnStartTouch" "!activatorAddOutputOnUser2 filter_player_killer:TestActivator::5:10-1" + "OnStartTouch" "!activatorAddOutputOnUser3 !self:AddOutput:health 1200:0:10-1" + "OnStartTouch" "!activatorAddOutputrendermode 00-1" + "OnStartTouch" "!activatorAddOutputgravity 10-1" + "OnUser1" "!activatorAddOutputOnUser3 !self:AddOutput:health 10000:0.1:10-1" + "OnStartTouch" "!activatorAddOutputrenderfx 00-1" + "OnStartTouch" "stage_end_explosion_workingTrigger5401" + "OnStartTouch" "!activatorSetDamageFilter0-1" + "OnStartTouch" "!activatorClearContext0-1" + "OnStartTouch" "Global_Speed_suppressModifySpeed10-1" + } + insert: + { + "OnStartTouch" "Z_Items_Filter_Name,TestActivator,,,-1" + "OnStartTouch" "stage_end_explosion_working,Trigger,,540,1" + } +} + +modify: +{ + match: + { + "classname" "logic_case" + "targetname" "/teleporter_main_counter_case_[1-4]/" + } + insert: + { + "OnCase01" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase02" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase03" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase04" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase05" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase06" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase07" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase08" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase09" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase10" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase11" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase12" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase13" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase14" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase15" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + "OnCase16" "stages_teleport_destination,TeleportToCurrentPos,,,-1" + } +} + +modify: +{ + match: + { + "classname" "math_counter" + "targetname" "teleporter_main_counter" + } + replace: + { + "startvalue" "0" + "min" "0" + } + insert: + { + "OnHitMax" "!self,SetValue,0,,-1" + } +} + +modify: +{ + match: + { + "classname" "info_teleport_destination" + "targetname" "stages_teleport_destination" + } + replace: + { + "classname" "point_teleport" + } + insert: + { + "target" "!activator" + } +} + +modify: +{ + match: + { + "classname" "filter_activator_name" + "targetname" "Z_Items_Filter_Name" + } + insert: + { + "OnPass" "!activator,AddOutput,targetname ,,-1" + "OnPass" "!activator,AddOutput,gravity 1,,-1" + "OnPass" "!activator,AddOutput,OnUser3 !self:AddOutput:health 1200::1,.01,-1" + "OnPass" "!activator,AddOutput,rendermode 0,,-1" + "OnPass" "!activator,AddOutput,renderfx 0,,-1" + "OnPass" "!activator,AddOutput,renderamt 255,,-1" + "OnPass" "!activator,SetDamageFilter,,,-1" + "OnPass" "!activator,ClearContext,,,-1" + "OnPass" "Global_Speed_suppress,ModifySpeed,1,,-1" + "OnUser1" "!activator,AddOutput,OnUser3 !self:AddOutput:health 10000::1,,-1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "/Extreme_Stage_[1-4]/" + } + delete: + { + "OnTrigger" "teleporter_main_trigger_positionerAddOutputOnStartTouch !self:FireUser1::0:00-1" + } + insert: + { + "OnTrigger" "Z_Items_Filter_Name,AddOutput,OnPass !self:FireUser1:::-1,,1" + } +} + +modify: +{ + match: + { + "classname" "math_counter" + "targetname" "Level_Counter" + } + insert: + { + "OnGetValue" "teleporter_main_trigger_positioner,AddOutput,solid 2,4,1" + "OnGetValue" "teleporter_main_trigger_positionerRunScriptCodeself.SetSize(Vector(-2336, -224, -48), Vector(2336, 224, 48));41" + } +} + +modify: +{ + match: + { + "classname" "func_movelinear" + "targetname" "teleporter_main_movelinear" + } + replace: + { + "spawnflags" "8" + "movedir" "-90 0 0" + "speed" "1500" + "movedistance" "288" + } + insert: + { + "effects" "32" + } +} + +; Remove the message related to checkpoints in warmup round since this version doesn't have them. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Stage_Start_Stage_Warmup" + } + delete: + { + "OnTrigger" "Global_GameText_AnnouncementAddOutputmessage CHECKPOINT REACHED MEANS STAGE WONT REPEAT WHEN IT ENDS5-1" + } +} + +; Add props to get out of a stuck spot near "Tank" vehicle spawn on extreme stage 1. +add: +{ + "classname" "prop_dynamic" + "targetname" "stage_1_stuff1" + "origin" "2368 320 -13680" + "angles" "0 -15 0" + "model" "models/props/props_crates/wooden_crate_64x64.mdl" + "solid" "6" + "disableshadows" "1" +} + +add: +{ + "classname" "prop_dynamic" + "targetname" "stage_1_stuff1" + "origin" "2368 320 -13608" + "model" "models/props/props_crates/wooden_crate_64x64.mdl" + "solid" "6" + "disableshadows" "1" +} + +add: +{ + "classname" "prop_dynamic" + "targetname" "stage_1_stuff1" + "origin" "2384 224 -13680" + "angles" "-10 0 0" + "model" "models/props/de_nuke/crate_large.mdl" + "solid" "6" + "disableshadows" "1" +} + +; Add viewcontrol template related outputs, filter stage 1 "Juggernaut" trigger to humans, reset targetnames and prevent viewmodel from being glitched out. +filter: +{ + "classname" "logic_auto" + "origin" "-2984 13152 -8552" +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Auto" + } + replace: + { + "spawnflags" "1" + } + delete: + { + "targetname" "Auto" + "OnSpawn" "playerAddOutputtargetname nodriver0.05-1" + } + insert: + { + "OnSpawn" "worldspawn_brush,FireUser1,,,1" + "OnSpawn" "Stages_Start_Fade,Fade,,,1" + "OnSpawn" "Human_Item_Mech_RightArm,SetParentAttachment,RightArm,,1" + "OnSpawn" "Human_Item_Mech_Left_Arm,SetParentAttachment,LeftArm,,1" + "OnSpawn" "console,FireUser1,,,1" + "OnSpawn" "stage_x_saw_rotating,FireUser1,,,1" + "OnSpawn" "correction2,Disable,,,1" + "OnSpawn" "correction,Disable,,,1" + "OnSpawn" "Tonemap,FireUser1,,,-1" + "OnSpawn" "consolaCliall,FireUser1,,,1" + "OnSpawn" "Sun,FireUser1,,,1" + "OnSpawn" "console,Command,zr_infect_mzombie_ratio 6,,1" + "OnSpawn" "worldspawn_brush_target,FireUser2,,,1" + "OnSpawn" "stage_x_crane_breakableRunScriptCodefunction InputUse() { return activator.GetTeam() == 3; }1" + "OnSpawn" "stage_x_crane_crateRunScriptCodefunction InputUse() { return activator.GetTeam() == 3; }1" + "OnSpawn" "player,AddOutput,targetname ,,1" + "OnSpawn" "playerRunScriptCodeif (self.GetName() == _.zombie_boss || self.GetName() == _.human_mech) EntFireByHandle(Entities.FindByName(null, _.game_playerdie), _.FireUser1, __, -1, self, null);1" + "OnSpawn" "map1manager1,CallScriptFunction,RoundSpawn,,1" + "OnSpawn" "map1viewcontrolpreservedtemplate1,ForceSpawn,,.01,1" + "OnSpawn" "map1viewcontroltemplate1,Kill,,.01,1" + "OnSpawn" "Level_Counter,GetValue,,.02,1" + "OnSpawn" "stage_flame_particle,Start,,2,1" + "OnSpawn" "Mode_Extreme_Compare,FireUser1,,3,1" + "OnSpawn" "console,Command,say ++ MAP BY HANNIBAL[SPA] / Rafuron ++,3,1" + "OnSpawn" "Mode_Extreme_Counter,Add,1,3.1,1" + "OnSpawn" "console,Command,say ++ MAP BY HANNIBAL[SPA] / Rafuron ++,4,1" + "OnSpawn" "console,Command,say ++ MAP BY HANNIBAL[SPA] / Rafuron ++,5,1" + "OnSpawn" "console,Command,say ++ MAP FIXED BY STRUPPI ++,7,1" + "OnSpawn" "console,Command,say ++ Thanks to George and Sgt. zuff ++,8,1" + "OnSpawn" "console,Command,say ++ Type ''!showmapstats'' to see the events you completed and damage dealt to zombies on stage 5. ++,9,1" + "OnSpawn" "console,Command,say ++ They increase your chance to be chosen for the solo ending. ++,10,1" + "OnSpawn" "v_button1,Unlock,,10,1" + "OnSpawn" "teleporter_main_trigger_positioner,AddOutput,OnStartTouch stages_teleport_destination:TeleportToCurrentPos:::-1,20,1" + "OnSpawn" "teleporter_main_counter*,Kill,,20,1" + } +} + +; Reduce stage 2 car generator movelinear speed slightly to prevent console error. +modify: +{ + match: + { + "classname" "func_movelinear" + "targetname" "Spawn_Phy_Car_Generator_Movelinear" + } + replace: + { + "speed" "1900" + } +} + +; Fix stage 2 last vent entrance being breakable early. +modify: +{ + match: + { + "classname" "trigger_multiple" + "targetname" "stage_2_teleport_2" + } + insert: + { + "OnStartTouch" "stage_2_escape_vent,SetHealth,100,10,1" + } +} + +modify: +{ + match: + { + "classname" "func_breakable" + "targetname" "stage_2_escape_vent" + } + replace: + { + "health" "0" + } +} + +; Optional: Prevent "Portal Gun" item skips. +;modify: +;{ +; match: +; { +; "classname" "func_button" +; "targetname" "Weapon_PortalGun_UI" +; } +; replace: +; { +; "origin" "-1004 13248 -8512" +; } +;} + +;modify: +;{ +; match: +; { +; "classname" "env_entity_maker" +; "targetname" "Weapon_PortalGun_Projectile_Spawner" +; } +; replace: +; { +; "origin" "-1088 13248 -8520" +; } +;} + +; Fix stage 2 last vent fall breaking despite second room being "Mutator Test" and fix pressing the buttons when room isn't selected. +modify: +{ + match: + { + "classname" "logic_case" + "targetname" "stage_2_open_random_relay" + } + insert: + { + "OnCase01" "stage_2_main_room_second_button_next,Unlock,,,1" + "OnCase01" "stage_2_main_room_second_button_nextRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnCase01" "stage_2_main_room_button_next,Kill,,,1" + "OnCase03" "stage_2_main_room_button_next,Unlock,,,1" + "OnCase03" "stage_2_main_room_button_nextRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnCase03" "stage_2_main_room_second_button_next,Kill,,,1" + "OnCase03" "stage_2_end_trigger,AddOutput,OnTrigger stage_2_vent_breakable:Break:::1,,1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_2_main_room_button_next" + } + replace: + { + "spawnflags" "19457" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_2_main_room_button_next" + "origin" "5462 1048 -6892" + } + delete: + { + "OnPressed" "stage_2_open_random_logicTrigger0-1" + } + replace: + { + "targetname" "stage_2_main_room_second_button_next" + } +} + +; Fix possibility of this trigger firing outputs more than once. +modify: +{ + match: + { + "classname" "trigger_once" + "targetname" "stage_2_end_trigger" + } + delete: + { + "OnStartTouch" "stage_2_vent_breakableBreak0-1" + "OnStartTouch" "stage2_afk_teleportEnable0-1" + "OnStartTouch" "stage2_afk_teleportDisable1-1" + "OnStartTouch" "Spawn_Phy_Car_Hurt*Kill0-1" + "OnStartTouch" "Spawn_Phy_Car_2_Hurt*Kill0-1" + "OnStartTouch" "stage_x_second_doorClose0-1" + "OnStartTouch" "stage_2_end_pushKill0-1" + } + insert: + { + "OnTrigger" "stage2_afk_teleport,Enable,,,1" + "OnTrigger" "stage2_afk_teleport,Disable,,1,1" + "OnTrigger" "Spawn_Phy_Car_Hurt*,Kill,,,1" + "OnTrigger" "Spawn_Phy_Car_2_Hurt*,Kill,,,1" + "OnTrigger" "stage_x_second_door,Close,,,1" + "OnTrigger" "stage_2_end_push,Kill,,,1" + } +} + +; Reduce volume of "Mech" item "Minigun" sound. +modify: +{ + match: + { + "classname" "ambient_generic" + "targetname" "Human_Item_Mech_Sound_Minigun" + } + replace: + { + "health" "3" + } +} + +; Fix stage 4 nuke pit teleport being setup wrong. +modify: +{ + match: + { + "classname" "trigger_teleport" + "targetname" "stage_4_trigger_pad" + } + delete: + { + "landmark" "stages_teleport_destination" + } + insert: + { + "target" "stages_teleport_destination" + } +} + +; Fix stage 4 nuke pad being broken showing the wrong message and being able to be damaged multiple times, uses "OnUser1" because we don't want it to be damaged early. +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_4_end_button_protection" + } + replace: + { + "spawnflags" "3073" + "wait" "-1" + } + delete: + { + "OnDamaged" "stage_4_nuke_worksDisable0-1" + "OnDamaged" "Global_GameText_AnnouncementRunScriptCodesetMessage(3)0-1" + "OnDamaged" "stage_4_end_nuke_malfunctionStartSpark0-1" + "OnDamaged" "Global_Message_Top_RightDisplay0.05-1" + "OnDamaged" "Global_Message_Top_RightAddOutputholdtime 00-1" + "OnDamaged" "Global_Message_Top_CountdownKill0-1" + "OnDamaged" "Global_GameText_AnnouncementFireUser30-1" + } + insert: + { + "OnUser1" "!self,Kill,,,1" + "OnUser1" "stage_4_nuke_works,Disable,,,1" + "OnUser1" "stage_4_end_nuke_malfunction,StartSpark,,,1" + "OnUser1" "Global_Message_Top_Right,Display,,,1" + "OnUser1" "Global_Message_Top_Right,SetText,,,1" + "OnUser1" "Global_Message_Top_Right,AddOutput,holdtime 0,,1" + "OnUser1" "Global_Message_Top_Countdown,Kill,,,1" + "OnUser1" "Global_GameText_Announcement,FireUser3,,,1" + "OnUser1" "Global_GameText_AnnouncementRunScriptCodesetMessage(33);1" + } +} + +; Fix the new truck model used in stage 5 not covering the side like in the original. +modify: +{ + match: + { + "classname" "prop_dynamic_override" + "targetname" "stage_5_megatrontruck" + } + replace: + { + "origin" "3904 -3440 12480" + } +} + +; Prevent explosions from triggering repeat killer. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Spawn_Explosion_Logic" + } + insert: + { + "OnSpawn" "Spawn_Explosion_Damage,AddOutput,classname norepeatkiller1,,1" + "OnSpawn" "Spawn_Explosion_Damage_All,AddOutput,classname norepeatkiller1,,1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Spawn_Explosion_Small_Logic" + } + insert: + { + "OnSpawn" "Spawn_Explosion_Small_Damage,AddOutput,classname norepeatkiller1,,1" + "OnSpawn" "Spawn_Explosion_Small_Damage_H,AddOutput,classname norepeatkiller1,,1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Spawn_Nuke_Trigger" + } + insert: + { + "OnSpawn" "Spawn_Nuke_Hurt,AddOutput,classname norepeatkiller1,,1" + } +} + +; When a "Tank" vehicle controlled by a zombie is killed, don't make it disappear but make it non-solid and darken it. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "_human_item_tank_health_drivver_zombiekill" + } + replace: + { + "spawnflags" "1" + } + delete: + { + "OnTrigger" "v_model1Break0-1" + } + insert: + { + "OnTrigger" "v_model1,AddOutput,solid 0,,1" + "OnTrigger" "v_button1,Kill,,,1" + "OnTrigger" "v_model1,Color,64 64 64,.01,1" + "OnTrigger" "Tank_Cannon,Color,64 64 64,.01,1" + } +} + +; Prevent camping zombie spawns and add filters that prevent all damage but nuke. +add: +{ + "classname" "filter_activator_name" + "targetname" "map1nukefilter1" + "filtername" "Nuke_Kill_Trigger" +} + +add: +{ + "classname" "filter_activator_name" + "targetname" "map1nukefilter2" + "filtername" "Kill_All_Trigger" +} + +add: +{ + "classname" "filter_activator_name" + "targetname" "map1nukefilter3" + "filtername" "stage_3_nuke" +} + +add: +{ + "classname" "filter_multi" + "targetname" "map1mainnukefilter1" + "FilterType" "1" + "Filter01" "map1nukefilter1" + "Filter02" "map1nukefilter2" + "Filter03" "map1nukefilter3" +} + +; Stage 1 +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_1_stuff1" + "origin" "1672 -464 -13632" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_1_stuff1" + "origin" "6392 224 -13632" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_1_stuff1" + "origin" "12184 -10384 -13632" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_1_stuff1" + "origin" "3856 -9368 -12848" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +; Stage 2 +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_2_stuff1" + "origin" "3920 768 -7376" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_2_stuff1" + "origin" "-1048 3656 -7632" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_2_stuff1" + "origin" "-1296 6048 -8032" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +; Stage 3 +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_3_stuff1" + "origin" "-296 6392 -560" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_3_stuff1" + "origin" "6640 5224 832" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_3_stuff1" + "origin" "8000 3880 1216" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +; Stage 4 +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_4_stuff1" + "origin" "5968 7952 3376" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_4_stuff1" + "origin" "176 -800 3376" + "angles" "0 90 0" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_4_stuff1" + "origin" "-11072 -10488 3376" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_4_stuff1" + "origin" "9608 -7704 3376" + "model" "*584" + "spawnflags" "1" + "filtername" "team_filter_zombies" + "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" + "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" +} + +; Implement the unused zombie teleport in extreme stage 1 and also make it not go too further when opening. +modify: +{ + match: + { + "classname" "func_movelinear" + "targetname" "stage_x_camp_door" + } + replace: + { + "movedistance" "256" + } + insert: + { + "OnFullyOpen" "stage_positioner_teleport,InValue,11,,1" + } +} + +; Implement the unused zombie teleport in extreme stage 3. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_3_tests_relay_1" + } + insert: + { + "OnTrigger" "stage_positioner_teleport,InValue,32,,1" + } +} + +; Fix viewcontrols being laggy for "Boss" and "Mech" items. +; Delete the old system used for viewcontrols. +filter: +{ + "classname" "logic_measure_movement" + "targetname" "Zombie_Item_Boss_Measure" +} + +filter: +{ + "classname" "info_teleport_destination" + "targetname" "Zombie_Item_Boss_Cam_Pos_2" +} + +filter: +{ + "classname" "logic_measure_movement" + "targetname" "Human_Item_Mech_Measure" +} + +filter: +{ + "classname" "info_teleport_destination" + "targetname" "Human_Item_Mech_Cam_Pos_2" +} + +; Add the new system where we spawn the viewcontrols using a preserved template and spawn them parented. +modify: +{ + match: + { + "classname" "point_viewcontrol" + "targetname" "Zombie_Item_Boss_Cam" + } + insert: + { + "parentname" "Zombie_Item_Boss_Cam_Pos" + } +} + +modify: +{ + match: + { + "classname" "point_viewcontrol" + "targetname" "Human_Item_Mech_Cam" + } + insert: + { + "parentname" "Human_Item_Mech_Knife" + } +} + +add: +{ + "classname" "point_template" + "targetname" "map1viewcontroltemplate1" + "Template01" "Zombie_Item_Boss_Cam" + "Template02" "Human_Item_Mech_Cam" +} + +modify: +{ + match: + { + "classname" "info_target" + "targetname" "worldspawn_brush_target" + } + insert: + { + "OnUser2" "map1viewcontrolpreservedtemplate1,AddOutput,classname info_ladder,,1" + "OnUser2" "map1viewcontroltemplate1,AddOutput,targetname map1viewcontrolpreservedtemplate1,,1" + } +} + +; When someone dies, give them empty targetname instead of one called "none" and prevent viewmodel from being glitched out. +modify: +{ + match: + { + "classname" "trigger_brush" + "targetname" "game_playerdie" + } + delete: + { + "OnUse" "!activatorAddOutputtargetname none0-1" + } + insert: + { + "DontMessageParent" "1" + "OnUse" "!activator,AddOutput,targetname ,,-1" + "OnUse" "!activatorRunScriptCodeif (self.GetName() == _.zombie_boss || self.GetName() == _.human_mech) EntFireByHandle(caller, _.FireUser1, __, -1, self, null);-1" + "OnUser1" "Map_End_Camera,RemovePlayer,,,2" + "OnUser1" "Map_End_Camera,AddPlayer,,,2" + } +} + +; Make trigger of extreme stage 3 third test room bigger to prevent zombies avoiding it by staying just next to the room. +modify: +{ + match: + { + "classname" "trigger_multiple" + "targetname" "stage_3_tests_main_5" + } + replace: + { + "model" "*279" + "origin" "5025.78 5771.83 968" + } +} + +; Implement a better zombie trigger system. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Extreme_Stage_1" + } + insert: + { + "OnTrigger" "stage_1_extratrigger1,Kill,,,1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_1_button_tower_top" + } + delete: + { + "OnPressed" "bullshitadderKill01" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "ZOMBIESTRIGGERED" + } + replace: + { + "spawnflags" "1" + } + delete: + { + "vscripts" "hichatu/zm_trigger.nut" + "OnTrigger" "Kill_All_TriggerEnable21" + } + insert: + { + "OnTrigger" "map1roundend1,EndRound_TerroristsWin,7,,1" + } +} + +add: +{ + "classname" "game_round_end" + "targetname" "map1roundend1" + "OnRoundEnded" "map1roundend1,Kill,,,1" +} + +modify: +{ + match: + { + "classname" "trigger_once" + "targetname" "bullshitadder" + } + replace: + { + "targetname" "stage_1_extratrigger1" + } + delete: + { + "OnStartTouch" "stage_1_button_end_2AddOutputOnPressed ZOMBIESTRIGGERED:RunScriptCode:progressTrigger():0:101" + } + insert: + { + "OnTrigger" "stage_1_button_end_2RunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnTrigger" "stage_1_button_end_2,AddOutput,OnPressed !self:Kill:::1,,1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "OnPressed" "ZOMBIESTRIGGEREDRunScriptCodeprogressTrigger()01" + } + replace: + { + "wait" "-1" + "rendermode" "10" + } + delete: + { + "OnPressed" "ZOMBIESTRIGGEREDRunScriptCodeprogressTrigger()01" + } + insert: + { + "OnPressed" "!self,Kill,,,1" + } +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "stage1_things" + } + insert: + { + "OnEntitySpawned" "stage_1_button_tower_topRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_1_road_button_alternative_pathRunScriptCodefunction InputUse() { if (activator) { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; } }1" + "OnEntitySpawned" "stage_1_bridge_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_1_button_endRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + } +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "stage1_x_things" + } + insert: + { + "OnEntitySpawned" "stage_x_btn_endRunScriptCodefunction InputUse() { return activator.GetTeam() == 3; }1" + } +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "stage2_things" + } + insert: + { + "OnEntitySpawned" "stage_2_entrance_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_2_btn_mainRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_2_button_weapon_doorRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_2_minifier_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_2_button_core_generatorRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + } +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "stage3_things" + } + insert: + { + "OnEntitySpawned" "stage_3_spawnRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_3_corridor_button_*RunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_3_button_lock*RunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_3_button_core_*RunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnEntitySpawned" "stage_3_core_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Extreme_Stage_3" + } + insert: + { + "OnTrigger" "stage_3_weapons_button_2RunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }21" + "OnTrigger" "stage_3_weapons_button_3*RunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }21" + } +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "stage4_things" + } + insert: + { + "OnEntitySpawned" "stage_4_custombrush1,AddOutput,solid 2,,1" + "OnEntitySpawned" "stage_4_custombrush1RunScriptCodeself.SetSize(Vector(-256, -448, -1696), Vector(256, 448, 1696));1" + "OnEntitySpawned" "stage_4_teleport,AddOutput,solid 2,,1" + "OnEntitySpawned" "stage_4_teleportRunScriptCodeself.SetSize(Vector(-4700, -11.5, -1856), Vector(4700, 11.5, 1856));1" + "OnEntitySpawned" "stage_4_end_button*RunScriptCodefunction InputUse() { return activator.GetTeam() == 3; }1" + } +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "stage4_x_things" + } + insert: + { + "OnEntitySpawned" "stage_x_part_4_explosion_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2 && activator.GetName() != _.zombie_freezer) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + } +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "stage5_things" + } + insert: + { + "OnEntitySpawned" "stage_5_hurt,AddOutput,classname norepeatkiller1,,1" + } +} + +; Make "Ultralisk" come faster on event he's not killed. +modify: +{ + match: + { + "classname" "point_template" + "targetname" "stage5_things" + } + insert: + { + "OnEntitySpawned" "stage_5_lower_door_button_LIFTRunScriptCodefunction InputUse() { return activator.GetTeam() == 3; }1" + } +} + +; Prevent pressing trigger buttons when triggered. +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_1_button_elevator" + } + insert: + { + "OnPressed" "!self,AddOutput,spawnflags 1,,1" + } +} + +modify: +{ + match: + { + "classname" "func_breakable" + "targetname" "stage_x_end_elevator_1_doors" + } + insert: + { + "OnBreak" "stage_1_button_elevatorRunScriptCodefunction InputUse() { return activator.GetTeam() == 3; }51" + "OnBreak" "stage_1_button_elevatorRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }201" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_x_part_4_explosion_button" + } + insert: + { + "OnPressed" "!selfRunScriptCodedelete InputUse;1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "/stage_(1_(button_(tower_top|end)|road_button_alternative_path)|2_((entrance|minifier)_button|main_room_button_next|button_(factory_control|core_factory)))/" + } + replace: + { + "wait" "-1" + "rendermode" "10" + } + insert: + { + "OnPressed" "!self,Kill,,,1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "/stage_(3_(spawn|corridor_button_(1|3(x|)|4|8)|weapons_button_(2|3(x|))|tests_door_button_8|core_button|button(_(2|(lock(_[2-6]|)|core_(left|right)))|))|4_part_(3_button|5_button_(2|[7-9]|10)))/" + } + replace: + { + "wait" "-1" + "rendermode" "10" + } + insert: + { + "OnPressed" "!self,Kill,,,1" + } +} + +; Kill entities when used. +modify: +{ + match: + { + "classname" "math_counter" + "targetname" "/stage_(3_cor(ridor_door_[4-5]_unlock|e_counter)|5_lower_counter_energy)/" + } + insert: + { + "OnHitMax" "!self,Kill,,,1" + } +} + +modify: +{ + match: + { + "classname" "logic_compare" + "targetname" "stage_3_core_counter_elevator" + } + insert: + { + "OnEqualTo" "!self,Kill,,,1" + } +} + +; No need for filters anymore. +filter: +{ + "classname" "filter_activator_team" + "targetname" "stage_3_core_button_filter" +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_3_core_button" + } + delete: + { + "OnPressed" "stage_3_core_button_filterTestActivator0-1" + } + insert: + { + "OnPressed" "stage_target_helper_3,SetLocalOrigin,0 0 0,,1" + "OnPressed" "Global_GameText_Objective,FireUser2,,,1" + "OnPressed" "stage_3_tests_door_button_7,FireUser1,,,1" + "OnPressed" "stage_3_core_counter,Add,1,,1" + "OnPressed" "Global_Give_30_points,ApplyScore,,,1" + } +} + +filter: +{ + "classname" "filter_activator_team" + "targetname" "stage_4_end_button_filter" +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_4_end_button" + } + replace: + { + "spawnflags" "3073" + } + delete: + { + "OnPressed" "stage_4_end_button_filterTestActivator0-1" + } + insert: + { + "OnPressed" "stage_x_end_nuke_door_*,Open,,,1" + "OnPressed" "stage_x_nuke_train,Open,,,1" + "OnPressed" "Glocal_Message_Selector,InValue,stage4_end,,1" + "OnPressed" "stage_4_nuke_works,Trigger,,80,1" + "OnPressed" "stage_x_end_bridge_1,Open,,43,1" + "OnPressed" "Global_GameText_Announcement,FireUser4,,,1" + "OnPressed" "Global_GameText_AnnouncementRunScriptCodesetMessage(3);1" + "OnPressed" "Global_GameText_Objective,FireUser2,,,1" + "OnPressed" "stage_target_helper_2,SetLocalOrigin,0 0 0,,1" + "OnPressed" "stage_x_ultralistk_model,FireUser2,,60,1" + "OnPressed" "stage_positioner_teleport,InValue,44,,1" + } +} + +filter: +{ + "classname" "filter_activator_team" + "targetname" "stage_4_end_button_protection_filter" +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_4_end_button_protection" + } + replace: + { + "spawnflags" "3073" + } + delete: + { + "OnPressed" "stage_4_end_button_protection_filterTestActivator0-1" + } + insert: + { + "OnPressed" "stage_x_end_nuke_protection_door,Close,,,1" + "OnPressed" "Global_GameText_Announcement,FireUser4,,,1" + "OnPressed" "Global_GameText_AnnouncementRunScriptCodesetMessage(6);1" + "OnPressed" "Global_Give_30_points,ApplyScore,,,1" + "OnPressed" "fallback_fade,Fade,,,-1" + } +} + +filter: +{ + "classname" "filter_activator_team" + "targetname" "stage_5_button_filter" +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_5_lower_door_button_LIFT" + } + replace: + { + "wait" "-1" + } + delete: + { + "OnPressed" "stage_5_button_filterTestActivator0-1" + } + insert: + { + "OnPressed" "stage_5_lower_timer*,Kill,,,1" + "OnPressed" "stage_5_lower_door_case,Kill,,,1" + "OnPressed" "stage_5_to_top_teleport,FireUser1,,15,1" + "OnPressed" "stage_x_main_lift,Open,,5,1" + "OnPressed" "stage_0_alarm_sound_emergency,StopSound,,,1" + "OnPressed" "stage_target_helper,SetLocalOrigin,4616 2120 12248,,1" + "OnPressed" "Global_GameText_Objective,FireUser3,,,1" + "OnPressed" "Global_GameText_Announcement,FireUser4,,,1" + "OnPressed" "Global_GameText_Announcement,SetText,** LIFT TO TOP IN 5 SECONDS **,,1" + "OnPressed" "stage_x_lower_bridges_tracktrain*,Close,,,1" + "OnPressed" "stage_5_end_hint,SetText,,,1" + "OnPressed" "stage_0_alarm_sound_emergency,StopSound,,,1" + "OnPressed" "stage_5_tank_kill,Enable,,5,1" + } +} + +; Kill stage relays when triggered. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "/Stage_Start_Stage_5|Extreme_Stage_([0-5]|common)/" + } + replace: + { + "spawnflags" "1" + } +} + +; Fix warmup texts. +modify: +{ + match: + { + "classname" "logic_case" + "targetname" "Stage_Warmup_Random_Messages_Case" + } + delete: + { + "OnCase01" "Global_GameText_Stage_StartRunScriptCodesetMessage(35)0-1" + "OnCase02" "Global_GameText_Stage_StartRunScriptCodesetMessage(36)0-1" + "OnCase03" "Global_GameText_Stage_StartRunScriptCodesetMessage(37)00" + "OnCase04" "Global_GameText_Stage_StartRunScriptCodesetMessage(38)0-1" + "OnCase05" "Global_GameText_Stage_StartRunScriptCodesetMessage(39)0-1" + "OnCase06" "Global_GameText_Stage_StartRunScriptCodesetMessage(40)0-1" + "OnCase07" "Global_GameText_Stage_StartRunScriptCodesetMessage(41)0-1" + "OnCase08" "Global_GameText_Stage_StartRunScriptCodesetMessage(42)0-1" + "OnCase09" "Global_GameText_Stage_StartRunScriptCodesetMessage(43)0-1" + "OnCase10" "Global_GameText_Stage_StartRunScriptCodesetMessage(44)0-1" + "OnCase11" "Global_GameText_Stage_StartRunScriptCodesetMessage(45)0-1" + "OnCase12" "Global_GameText_Stage_StartRunScriptCodesetMessage(46)0-1" + "OnCase13" "Global_GameText_Stage_StartRunScriptCodesetMessage(47)0-1" + "OnCase14" "Global_GameText_Stage_StartRunScriptCodesetMessage(48)0-1" + "OnCase15" "Global_GameText_Stage_StartRunScriptCodesetMessage(49)0-1" + } + insert: + { + "OnCase01" "Global_GameText_Stage_StartRunScriptCodesetMessage(34);1" + "OnCase02" "Global_GameText_Stage_StartRunScriptCodesetMessage(35);1" + "OnCase03" "Global_GameText_Stage_StartRunScriptCodesetMessage(36);1" + "OnCase04" "Global_GameText_Stage_StartRunScriptCodesetMessage(37);1" + "OnCase05" "Global_GameText_Stage_StartRunScriptCodesetMessage(38);1" + "OnCase06" "Global_GameText_Stage_StartRunScriptCodesetMessage(39);1" + "OnCase07" "Global_GameText_Stage_StartRunScriptCodesetMessage(40);1" + "OnCase08" "Global_GameText_Stage_StartRunScriptCodesetMessage(41);1" + "OnCase09" "Global_GameText_Stage_StartRunScriptCodesetMessage(42);1" + "OnCase10" "Global_GameText_Stage_StartRunScriptCodesetMessage(43);1" + "OnCase11" "Global_GameText_Stage_StartRunScriptCodesetMessage(44);1" + "OnCase12" "Global_GameText_Stage_StartRunScriptCodesetMessage(45);1" + "OnCase13" "Global_GameText_Stage_StartRunScriptCodesetMessage(46);1" + "OnCase14" "Global_GameText_Stage_StartRunScriptCodesetMessage(47);1" + "OnCase15" "Global_GameText_Stage_StartRunScriptCodesetMessage(48);1" + } +} + +; Remove missing animation inputs. +modify: +{ + match: + { + "classname" "func_tanktrain" + "targetname" "Vehicle_Fake_Helicopter_TrackTrain" + } + delete: + { + "OnUser1" "Vehicle_Fake_Helicopter_ModelSetAnimationstart_fast_fly0-1" + "OnUser1" "Vehicle_Fake_Helicopter_ModelSetDefaultAnimationfast_fly0-1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_x_helicopter_can_leave" + } + delete: + { + "OnTrigger" "stage_x_helicopterSetAnimationidle0-1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_x_end_button_blue" + } + delete: + { + "OnUser1" "stage_x_core_column_button_modelSetAnimationclose0-1" + } +} + +modify: +{ + match: + { + "classname" "func_door" + "targetname" "stage_x_core_column_mv_btns" + } + delete: + { + "OnFullyOpen" "stage_x_core_column_button_modelSetAnimationopen0-1" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "targetname" "Weapons_Turret_Model_Deployed" + } + delete: + { + "OnAnimationDone" "Weapon_Turret_Deployed_DevBrushSetParentAttachmentMaintainOffsetturret0-1" + } +} + +; Remove missing sounds. +modify: +{ + match: + { + "noise1" "E3_C17_02.GateGrindsDown1" + } + delete: + { + "noise1" "E3_C17_02.GateGrindsDown1" + } +} + +modify: +{ + match: + { + "unlocked_sound" "7" + } + replace: + { + "unlocked_sound" "0" + } +} + +modify: +{ + match: + { + "soundopenoverride" "Doors.CombineGate_citizen_stop2" + } + delete: + { + "soundopenoverride" "Doors.CombineGate_citizen_stop2" + } +} + +modify: +{ + match: + { + "soundcloseoverride" "Doors.CombineGate_citizen_stop2" + } + delete: + { + "soundcloseoverride" "Doors.CombineGate_citizen_stop2" + } +} + +; Remove invalid keyvalue. +modify: +{ + match: + { + "Negated" "Allow entities that match criteria" + } + replace: + { + "Negated" "0" + } +} + +; Shorten some button delays. +modify: +{ + match: + { + "classname" "func_button" + "wait" "0.1" + } + replace: + { + "wait" ".01" + } +} + +; Remove extra model. +filter: +{ + "classname" "prop_dynamic" + "targetname" "Weapon_ZeroGravity_Model" + "origin" "-1298.06 12522 -8552.82" +} + +; Make stage 2 lobby door non-solid. +modify: +{ + match: + { + "classname" "func_door" + "targetname" "stage_x_second_door" + } + replace: + { + "spawnflags" "808" + "forceclosed" "1" + "dmg" "9999" + } + insert: + { + "effects" "32" + } +} + +; Optional: Prevent the stage 2 lobby door killing humans. +;modify: +;{ +; match: +; { +; "classname" "func_door" +; "targetname" "stage_x_second_door" +; } +; replace: +; { +; "dmg" "0" +; } +; insert: +; { +; "OnBlockedClosing" "!activatorRunScriptCodeif (self.GetTeam() == 3) self.SetOrigin(Vector(self.GetOrigin().x, 605, self.GetOrigin().z)); else EntFireByHandle(self, _.SetHealth, (0).tostring(), -1, null, null);-1" +; "OnBlockedClosing" "!self,Open,,,-1" +; "OnBlockedClosing" "!self,Close,,.01,-1" +; } +;} + +; Fix extreme stage 3 elevators being blockable. +modify: +{ + match: + { + "classname" "func_door" + "targetname" "/stage_x_lift_[1-2]/" + } + replace: + { + "forceclosed" "1" + } +} + +; Prevent blocking bridge lowering in stage 4. +modify: +{ + match: + { + "classname" "func_door" + "targetname" "stage_x_end_bridge_1" + } + replace: + { + "spawnflags" "512" + "dmg" "9999" + } +} + +; Useless input on stage 3. +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_3_button" + } + delete: + { + "OnPressed" "stage_target_helperAddOutput0 0 001" + } +} + +; Kill stage 4 train entities when no longer needed. +modify: +{ + match: + { + "classname" "func_tanktrain" + "targetname" "Vehicle_Fake_Truck_Tracktrain1" + } + delete: + { + "OnUser2" "Vehicle_Fake_Truck_HurtDisable0-1" + "OnUser2" "Vehicle_Fake_Truck_teleportDisable0-1" + "OnUser2" "Vehicle_Fake_Truck_Tracktrain1_tankkillerDisable0-1" + } + insert: + { + "OnUser2" "Vehicle_Fake_Truck_Hurt,Kill,,,1" + "OnUser2" "Vehicle_Fake_Truck_teleport,Kill,,,1" + "OnUser2" "Vehicle_Fake_Truck_Tracktrain1_tankkiller,Kill,,,1" + } +} + +; Fix broken message on stage 4. +modify: +{ + match: + { + "classname" "func_tracktrain" + "targetname" "stage_x_part_4_plane_tracktrain" + } + delete: + { + "OnUser1" "Global_GameText_AnnouncementRunScriptCodeRunScriptCode(19)01" + } + insert: + { + "OnUser1" "Global_GameText_Announcement,FireUser3,,,1" + "OnUser1" "Global_GameText_AnnouncementRunScriptCodesetMessage(19);1" + } +} + +; Fix some funky stuff in stage 4 big gate. +modify: +{ + match: + { + "classname" "func_button" + "targetname" "stage_4_part_3_button" + } + insert: + { + "OnPressed" "fallback_fade,Fade,,,1" + } +} + +modify: +{ + match: + { + "classname" "func_physbox_multiplayer" + "targetname" "stage_4_door_phys" + } + replace: + { + "spawnflags" "15003648" + } + insert: + { + "OnBreak" "stage_4_part_3_button,Kill,,,1" + "OnBreak" "stage_4_teleport,Kill,,,1" + } +} + +; Fix some camera stuff in warmup and stage 3. +filter: +{ + "classname" "trigger_multiple" + "targetname" "stage_0_end_camera_disable" +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "stage_0_end_camera_disable" +} + +modify: +{ + match: + { + "classname" "trigger_once" + "targetname" "stage_0_trigger_detect_zombification" + } + delete: + { + "OnStartTouch" "!activatorAddOutputorigin 1592 3912 2110.20-1" + "OnStartTouch" "Global_Weapon_StripStripWeaponsAndSuit0-1" + } + insert: + { + "OnTrigger" "!activator,SetLocalOrigin,1592 3912 2110,,1" + } +} + +modify: +{ + match: + { + "classname" "trigger_once" + "targetname" "stage_0_zombie_boss_trigger" + } + insert: + { + "OnTrigger" "Global_Weapon_Strip,Strip,,,1" + "OnTrigger" "stage_0_trigger_detect_zombification,Kill,,,1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Supreme_Trigger" + } + delete: + { + "OnTrigger" "stage_0_end_cameraEnable12-1" + "OnTrigger" "stage_0_end_cameraDisable13-1" + "OnTrigger" "stage_0_end_camera_disableEnable41-1" + "OnTrigger" "stage_0_end_camera_disableDisable42-1" + } + insert: + { + "OnTrigger" "Map_End_Camera,Enable,,12,1" + "OnTrigger" "Map_End_Camera,Disable,,41,1" + } +} + +filter: +{ + "classname" "trigger_once" + "targetname" "stage_3_camera" +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "stage_3_camera_deactivator" +} + +filter: +{ + "classname" "filter_activator_team" + "targetname" "Global_Team_Set_No_Damage_Z" +} + +modify: +{ + match: + { + "classname" "point_viewcontrol_multiplayer" + "targetname" "stage_cinematic_cam" + } + delete: + { + "OnUser1" "playerFireUser40.03-1" + "OnUser1" "playerAddOutputOnUser4 stage_3_cinematic_cam:Enable::0:10.02-1" + "OnUser1" "playerFireUser40.01-1" + "OnUser1" "playerAddOutputOnUser4 Global_Team_Set_No_Damage_Z:TestActivator::0:10-1" + "OnUser1" "playerSetDamageFilterteam_filter_humans0-1" + "OnUser1" "stage_3_cameraEnable0-1" + "OnUser1" "stage_3_camera_deactivatorEnable20-1" + "OnUser1" "stage_3_camera_deactivatorDisable22-1" + "OnUser1" "stage_3_cameraDisable1-1" + } + insert: + { + "OnUser1" "!self,Enable,,,-1" + "OnUser1" "consolaCliall,FireUser4,,,-1" + "OnUser1" "!self,Disable,,20,-1" + "OnUser1" "consolaCliall,FireUser1,,20,-1" + } +} + +; Optional: Disable HUD during warmup cutscene. +;modify: +;{ +; match: +; { +; "classname" "logic_relay" +; "targetname" "Supreme_Trigger" +; } +; insert: +; { +; "OnTrigger" "player,SetHUDVisibility,0,12,1" +; "OnTrigger" "player,SetHUDVisibility,1,41,1" +; } +;} + +; Optional: Disable HUD during stage 3 cutscene. +;modify: +;{ +; match: +; { +; "classname" "point_viewcontrol_multiplayer" +; "targetname" "stage_cinematic_cam" +; } +; insert: +; { +; "OnUser1" "player,SetHUDVisibility,0,,-1" +; "OnUser1" "player,SetHUDVisibility,1,20,-1" +; } +;} + +; Optional: Kill the humans on stage 3 who weren't on boss room when it starts. +;modify: +;{ +; match: +; { +; "classname" "trigger_multiple" +; "targetname" "stage_3_boss_teleport" +; } +; insert: +; { +; "OnStartTouch" "!activatorRunScriptCodeif (self.GetTeam() == 3) EntFireByHandle(self, _.SetHealth, (0).tostring(), -1, null, null);20-1" +; } +;} + +; Remove missing script. +modify: +{ + match: + { + "classname" "func_button" + "vscripts" "filter.nut" + } + delete: + { + "vscripts" "filter.nut" + "OnPressed" "!selfRunScriptCodeFilterHolder();0-1" + } +} + +; Remove missing lighting origin. +modify: +{ + match: + { + "classname" "prop_dynamic" + "lightingorigin" "stage_2_bridge" + } + delete: + { + "lightingorigin" "stage_2_bridge" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "lightingorigin" "stage_2_lightinf" + } + delete: + { + "lightingorigin" "stage_2_lightinf" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "lightingorigin" "stage_3_info_lighting" + } + delete: + { + "lightingorigin" "stage_3_info_lighting" + } +} + +; Don't try to pick more cases. +modify: +{ + match: + { + "classname" "logic_timer" + "targetname" "stage_5_lower_timer_bridges" + } + delete: + { + "OnTimer" "stage_5_lower_timer_bridges_casePickRandomShuffle0-1" + } + insert: + { + "OnTimer" "stage_5_lower_timer_bridges_case,PickRandom,,,4" + } +} + +modify: +{ + match: + { + "classname" "logic_timer" + "targetname" "stage_5_lower_timer" + } + delete: + { + "OnTimer" "stage_5_lower_door_casePickRandomShuffle0-1" + } + insert: + { + "OnTimer" "stage_5_lower_door_case,PickRandom,,,3" + } +} + +; Kill stage 5 door relays when pressed. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "/stage_5_((we|ea)st|south)_survivors_tr/" + } + replace: + { + "spawnflags" "1" + } + delete: + { + "OnTrigger" "!selfKill0.5-1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_x_reward_vehicle_with_weapons_relay" + } + replace: + { + "spawnflags" "1" + } + delete: + { + "OnTrigger" "!selfEnable0-1" + } +} + +; Make sure "NPC" items spawn in correct order. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_5_west_survivors_tr" + } + delete: + { + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 968 -4288 98640-1" + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 944 -4520 98640.1-1" + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 968 -4688 98640.2-1" + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 952 -4832 98640.3-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.31-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.21-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.11-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.01-1" + } + insert: + { + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,968 -4288 9864,,1" + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,944 -4520 9864,,1" + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,968 -4688 9864,,1" + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,952 -4832 9864,,1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_5_south_survivors_tr" + } + delete: + { + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 4872 -8264 98640-1" + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 4320 -8256 98640.1-1" + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 4184 -8296 98640.2-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.21-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.11-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.01-1" + } + insert: + { + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,4872 -8264 9864,,1" + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,4320 -8256 9864,,1" + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,4184 -8296 9864,,1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_5_east_survivors_tr" + } + delete: + { + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 8248 -4368 98640-1" + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 8296 -4576 98640.1-1" + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 8248 -4736 98640.2-1" + "OnTrigger" "Weapon_NPC_TemplateAddOutputorigin 8288 -4872 98640.3-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.31-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.21-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.11-1" + "OnTrigger" "Weapon_NPC_TemplateForceSpawn0.01-1" + } + insert: + { + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,8248 -4368 9864,,1" + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,8296 -4576 9864,,1" + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,8248 -4736 9864,,1" + "OnTrigger" "Weapon_NPC_Template,ForceSpawn,,,1" + "OnTrigger" "Weapon_NPC_Template,SetLocalOrigin,8288 -4872 9864,,1" + } +} + +; "NPC" item fixes. +modify: +{ + match: + { + "classname" "func_physbox_multiplayer" + "targetname" "Weapon_NPC_Body" + } + replace: + { + "spawnflags" "15003648" + } + delete: + { + "OnBreak" "Weapon_NPC_ModelClearParent0-1" + } + insert: + { + "OnBreak" "Weapon_NPC_Model,ClearParent,,,1" + } +} + +modify: +{ + match: + { + "classname" "func_physbox_multiplayer" + "targetname" "NPC_Soldier_Body" + } + replace: + { + "spawnflags" "15003648" + } + delete: + { + "OnBreak" "NPC_Soldier_Anim_Die_CaseFireUser10-1" + "OnUser1" "!selfKill0-1" + "OnUser1" "NPC_Soldier_ModelKill0-1" + "OnUser1" "NPC_Soldier_Anim_Die_CaseKill0-1" + "OnUser1" "NPC_Soldier_Anim_CaseKill0-1" + "OnUser1" "NPC_Soldier_Sound_FireKill0.1-1" + "OnUser1" "NPC_Soldier_Sound_FireVolume00-1" + } + insert: + { + "OnBreak" "NPC_Soldier_Model,SetAnimation,deathpose_lowviolence,,1" + "OnBreak" "NPC_Soldier_Model,SetDefaultAnimation,,,1" + "OnBreak" "item1human1soldier1model1,Kill,,,1" + "OnBreak" "NPC_Soldier_Fire,Kill,,,1" + "OnBreak" "NPC_Soldier_Grenade_Maker,Kill,,,1" + "OnBreak" "NPC_Soldier_Area_Grenade,Kill,,,1" + "OnBreak" "NPC_Soldier_Area_Gun,Kill,,,1" + "OnBreak" "NPC_Soldier_Sound_Fire,Kill,,,1" + "OnBreak" "NPC_Soldier_Sound_Fire,StopSound,,,1" + "OnUser1" "NPC_Soldier_Model,KillHierarchy,,,1" + "OnUser1" "NPC_Soldier_Sound_Fire,Kill,,,1" + "OnUser1" "NPC_Soldier_Sound_Fire,StopSound,,,1" + } +} + +modify: +{ + match: + { + "classname" "trigger_hurt" + "targetname" "NPC_Soldier_Area_Gun" + } + delete: + { + "OnStartTouch" "NPC_Soldier_ModelFireUser20-1" + } + insert: + { + "OnStartTouchAll" "NPC_Soldier_Model,FireUser2,,,-1" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "targetname" "NPC_Soldier_Model" + "origin" "-254.87 10754.9 -8566" + } + replace: + { + "DefaultAnim" "rom" + } +} + +modify: +{ + match: + { + "classname" "trigger_hurt" + "targetname" "NPC_Soldier_Fire" + } + delete: + { + "OnUser2" "NPC_Soldier_Anim_CasePickRandom0-1" + } + insert: + { + "OnUser2" "NPC_Soldier_Model,SetAnimation,rom,,-1" + "OnUser2" "NPC_Soldier_Model,SetDefaultAnimation,rom,,-1" + } +} + +filter: +{ + "classname" "logic_case" + "targetname" "/NPC_Soldier_Anim_(Die_|)Case/" +} + +; Attach weapon to "NPC" item correctly. +modify: +{ + match: + { + "classname" "point_template" + "targetname" "NPC_Soldier_Template" + } + delete: + { + "Template04" "NPC_Soldier_Anim_Case" + } + replace: + { + "Template03" "item1human1soldier1model1" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "targetname" "NPC_Soldier_Model" + "origin" "-245 10744 -8510.54" + } + replace: + { + "classname" "prop_dynamic_ornament" + "targetname" "item1human1soldier1model1" + } + insert: + { + "InitialOwner" "NPC_Soldier_Model" + } +} + +; Fix some semi-transparent item models. +modify: +{ + match: + { + "classname" "prop_dynamic" + "targetname" "Weapon_Inmunizer_Model" + } + replace: + { + "rendermode" "0" + "renderamt" "255" + } +} + +modify: +{ + match: + { + "classname" "weapon_deagle" + "targetname" "Weapon_Inmunizer_Weapon" + } + insert: + { + "OnPlayerPickup" "Weapon_Inmunizer_Model,AddOutput,rendermode 2,,1" + "OnPlayerPickup" "Weapon_Inmunizer_Model,Alpha,254,,1" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "targetname" "Weapon_Turbo_Device_Model" + } + replace: + { + "rendermode" "0" + "renderamt" "255" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "targetname" "Zombie_Item_Predator_Model" + } + replace: + { + "rendermode" "0" + "renderamt" "255" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Predator_Knife" + } + insert: + { + "OnPlayerPickup" "Zombie_Item_Predator_Model,AddOutput,rendermode 2,,1" + "OnPlayerPickup" "Zombie_Item_Predator_Model,Alpha,254,,1" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "targetname" "Weapon_NPC_Model" + } + replace: + { + "rendermode" "0" + "renderamt" "255" + "DefaultAnim" "knife_aim_idle" + } +} + +modify: +{ + match: + { + "classname" "weapon_deagle" + "targetname" "Weapon_NPC_Weapon" + } + insert: + { + "OnPlayerPickup" "Weapon_NPC_Model,AddOutput,rendermode 2,,1" + "OnPlayerPickup" "Weapon_NPC_Model,Alpha,254,,1" + } +} + +; Better knife strip system. +filter: +{ + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Predator_Knife_Trigger" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Predator_Template" + } + replace: + { + "Template10" "Zombie_Item_Predator_Knife" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Predator_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Predator_Knife_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_once" + "targetname" "Zombie_Item_Antlion_Trigger" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Antlion_Template" + } + delete: + { + "Template07" "Zombie_Item_Antlion_Trigger" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Antlion_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Antlion_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Tank_Disarmer" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Tank_Spawn" + } + delete: + { + "Template02" "Zombie_Item_Tank_Disarmer" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Tank_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Tank_DisarmerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Vortigaunt_Trigger" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Vortigaunt_Template" + } + delete: + { + "Template04" "Zombie_Item_Vortigaunt_Trigger" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Vortigaunt_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Vortigaunt_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Alma_Trigger" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Alma_Template" + } + delete: + { + "Template06" "Zombie_Item_Alma_Trigger" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Alma_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Alma_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Summoner_Trigger" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Summoner_Template" + } + delete: + { + "Template05" "Zombie_Item_Summoner_Trigger" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Summoner_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Summoner_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Jumper_Trigger" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Jumper_Template" + } + delete: + { + "Template08" "Zombie_Item_Jumper_Trigger" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Jumper_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Jumper_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Shockwave_Trigger" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Shockwave_Template" + } + delete: + { + "Template08" "Zombie_Item_Shockwave_Trigger" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Shockwave_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Shockwave_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Freezer_Trigger" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Freezer_Template" + } + delete: + { + "Template03" "Zombie_Item_Freezer_Trigger" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Zombie_Item_Freezer_Knife" + } + delete: + { + "OnPlayerPickup" "Zombie_Item_Freezer_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1,CallScriptFunction,CheckKnifeStrip,,-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "wpn_jugger_strip" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "temp_jugger" + } + delete: + { + "Template12" "wpn_jugger_strip" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "wpn_jugger" + } + delete: + { + "OnPlayerPickup" "wpn_jugger_stripKill01" + } + insert: + { + "OnCacheInteraction" "map1manager1RunScriptCodeCheckKnifeStrip(1);-1" + } +} + +filter: +{ + "classname" "trigger_multiple" + "targetname" "Human_Item_Mech_Trigger" +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "Human_Item_Mech_Knife" + } + delete: + { + "OnPlayerPickup" "Human_Item_Mech_TriggerKill0-1" + } + insert: + { + "OnCacheInteraction" "map1manager1RunScriptCodeCheckKnifeStrip(2);-1" + } +} + +; Make stage 1 vehicles move to their position in extreme earlier. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Extreme_Stage_1" + } + delete: + { + "OnTrigger" "Stage_x_Spawn_Tank_Teleport_2Teleport4-1" + "OnTrigger" "v_model1EnableMotion2.1-1" + "OnTrigger" "v_model1DisableMotion4-1" + } + insert: + { + "OnTrigger" "Stage_x_Spawn_Tank_Teleport_2,Teleport,,,1" + "OnTrigger" "v_model1,EnableMotion,,,1" + "OnTrigger" "v_model1,DisableMotion,,2,1" + } +} + +; Make stage 5 truck entity non-solid. +modify: +{ + match: + { + "classname" "func_tracktrain" + "targetname" "stage_x_reward_vehicle_with_weapons" + } + insert: + { + "effects" "32" + } + replace: + { + "spawnflags" "779" + } +} + +; Make sure stage 5 door can only be selected to open if its event is unlocked, fix buttons and make "Tank" vehicle only spawn when button is pressed and make it human only for the first 10 seconds. +modify: +{ + match: + { + "classname" "logic_case" + "targetname" "stage_5_lower_door_case" + } + delete: + { + "OnCase01" "stage_5_lower_door_relay_reinforcements_1Trigger0-1" + "OnCase02" "stage_5_lower_door_relay_reinforcements_5Trigger0-1" + "OnCase03" "stage_5_lower_door_relay_reinforcements_7Trigger0-1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "/stage_5_lower_door_relay_reinforcements_(1|5|7)/" + } + replace: + { + "StartDisabled" "0" + } +} + +; Kill stage 5 door relays when pressed. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_5_west_survivors_tr" + } + replace: + { + "spawnflags" "1" + } +} + +modify: +{ + match: + { + "classname" "logic_case" + "targetname" "Case_Events_Stage_5" + "origin" "-4256 11256 -8552" + } + delete: + { + "OnCase13" "stage_5_lower_door_relay_reinforcements_1Enable21" + } + insert: + { + "OnCase13" "stage_5_lower_door_case,AddOutput,OnCase01 stage_5_lower_door_relay_reinforcements_1:Trigger:::1,,1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "/stage_5_lower_door_button_(1|5)/" + } + replace: + { + "spawnflags" "3073" + } +} + +modify: +{ + match: + { + "classname" "logic_case" + "targetname" "Case_Events_Stage_5" + "origin" "-4272 11224 -8552" + } + delete: + { + "OnCase01" "stage_x_lower_door_5AddOutputOnFullyOpen Spawn_Tank_Teleport_stage_5:Teleport::0:121" + "OnCase01" "stage_x_lower_door_5AddOutputOnFullyOpen v_model1:EnableMotion::0.1:121" + "OnCase01" "stage_x_lower_door_5AddOutputOnFullyOpen v_model1:DisableMotion::2:121" + "OnCase04" "stage_5_lower_door_relay_reinforcements_5Enable21" + "OnCase07" "stage_5_lower_door_relay_reinforcements_7Enable21" + } + insert: + { + "OnCase01" "stage_5_lower_door_button_5,AddOutput,OnPressed Spawn_Tank_Teleport_stage_5:Teleport:::1,,1" + "OnCase01" "stage_5_lower_door_button_5,AddOutput,OnPressed v_button1:RunScriptCode:function InputUse() { return false; }::1,,1" + "OnCase01" "stage_5_lower_door_button_5,AddOutput,OnPressed v_model1:EnableMotion:::1,,1" + "OnCase01" "stage_5_lower_door_button_5,AddOutput,OnPressed v_model1:DisableMotion::2:1,,1" + "OnCase01" "stage_5_lower_door_button_5,AddOutput,OnPressed v_button1:RunScriptCode:function InputUse() { return activator.GetTeam() == 3; }:2:1,,1" + "OnCase01" "stage_5_lower_door_button_5,AddOutput,OnPressed v_button1:RunScriptCode:delete InputUse;:10:1,,1" + "OnCase04" "stage_5_lower_door_case,AddOutput,OnCase02 stage_5_lower_door_relay_reinforcements_5:Trigger:::1,,1" + "OnCase07" "stage_5_lower_door_case,AddOutput,OnCase03 stage_5_lower_door_relay_reinforcements_7:Trigger:::1,,1" + } +} + +; Fix input of "All Events Unlocked" text. +modify: +{ + match: + { + "classname" "logic_compare" + "targetname" "Mode_Supreme_Compare" + } + delete: + { + "OnGreaterThan" "Global_GameText_AnnouncementFireUser451" + } + insert: + { + "OnGreaterThan" "Global_GameText_Announcement,FireUser4, ,5,1" + } +} + +; Fix broken music in stage 5 "Solo Ending". +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_5_extreme_relay" + } + replace: + { + "spawnflags" "1" + } + delete: + { + "OnTrigger" "music_master_ambient_exAddOutputmusic/extreme_new_new/e_stage_5_end_good_2_extra.mp30.11" + } + insert: + { + "OnTrigger" "music_master_ambient_ex,AddOutput,message music/extreme_new_new/e_stage_5_end_good_2_extra.mp3,.01,1" + } +} + +; Fix "Antlion" item user being able to exploit on stage 5. +add: +{ + "classname" "trigger_multiple" + "targetname" "stage_5_liftteleport1" + "origin" "4592 -4600 10904" + "spawnflags" "1" + "model" "*33" + "filtername" "team_filter_zombies" + "wait" "1e30" + "OnStartTouch" "!activator,SetLocalOrigin,4688 -2032 11184,,-1" +} + +modify: +{ + match: + { + "classname" "filter_activator_team" + "targetname" "stage_5_core_column_end_button_blue" + } + insert: + { + "OnUser1" "stage_5_liftteleport1,Kill,,3,1" + } +} + +; Fix stage 5 hint entity getting killed early and not showing rest of the texts. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_5_core_hit_relay" + } + delete: + { + "OnUser4" "stage_5_end_hintKill01" + } +} + +; The manager entity. +; This change requires having the "lms1main1.nut" file placed inside "scripts/vscripts/gfl" folder. +add: +{ + "classname" "info_target" + "targetname" "map1manager1" + "vscripts" "gfl/lms1main1" + "thinkfunction" "Think" + "OnUser1" "BigNet,Kill,,,1" + "OnUser1" "commentary_semaphore,Kill,,,1" +} + +; Add bias towards events and stage 5 damage for selecting the last man in stage 5 and prevent same person being selected twice. +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "stage_5_top_relay_core_working" + } + insert: + { + "OnTrigger" "map1manager1,CallScriptFunction,StopTrackingZombieDamage,,1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Stage_End_Stage_5" + } + insert: + { + "OnTrigger" "map1manager1,CallScriptFunction,Stage5Ended,,1" + } +} + +; Events. +modify: +{ + match: + { + "classname" "weapon_deagle" + "targetname" "/Weapon_(M(utator|60|ine)|T(hundergun|urret)|Inmunizer|PortalGun|Gauss|ZeroGravity|Extra_(Inmunizer|Unlimmited))_Weapon|Spawn_Fuel_Gun/" + } + insert: + { + "OnPlayerPickup" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +modify: +{ + match: + { + "classname" "weapon_glock" + "targetname" "/(Weapon_Turbo|NPC_Train_Driver)_Weapon/" + } + insert: + { + "OnPlayerPickup" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +modify: +{ + match: + { + "classname" "weapon_knife" + "targetname" "/Human_Item_Mech_Knife|wpn_jugger/" + } + insert: + { + "OnPlayerPickup" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "/stage_(x_(btn_end|part_4_explosion_button)|1_(b(utton_tower_top|ridge_button)|road_button_alternative_path)|2_(minifier_button|b(tn_main|utton_(weapon_door|factory_control|core_(factory|generator)))|escape_trigger))/" + } + insert: + { + "OnPressed" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +modify: +{ + match: + { + "classname" "func_button" + "targetname" "/stage_(3_(button_lock(_[2-6]|)|corridor_button_3x|core_button)|4_(part_3_button|end_button_protection)|5_lower_door_button_(1|5|7|LIFT))/" + } + insert: + { + "OnPressed" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +modify: +{ + match: + { + "classname" "trigger_once" + "targetname" "stage_1_extratrigger1" + } + insert: + { + "OnTrigger" "stage_1_base_button_4,AddOutput,OnPressed map1manager1:CallScriptFunction:PlayerCompletedEvent::1,,1" + } +} + +modify: +{ + match: + { + "classname" "func_physbox" + "targetname" "stage_x_end_door_breakable" + } + replace: + { + "classname" "func_physbox_multiplayer" + "spawnflags" "15003648" + } + insert: + { + "OnBreak" "map1manager1RunScriptCodePlayerCompletedEvent(_.driver1);1" + } +} + +modify: +{ + match: + { + "classname" "trigger_once" + "targetname" "stage_1_cargo_heli_trigger" + } + insert: + { + "OnTrigger" "map1manager1RunScriptCodePlayerCompletedEvent(_.driver1);1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "/stage_3_tests_relay_([1-2]|[5-6])/" + } + insert: + { + "OnTrigger" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Human_Item_Mech_Teleportation" + } + insert: + { + "OnTrigger" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,-1" + } +} + +modify: +{ + match: + { + "classname" "trigger_once" + "targetname" "/stage_4_mech_(rocket(_flame|)|minigun)/" + } + insert: + { + "OnTrigger" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +modify: +{ + match: + { + "classname" "trigger_multiple" + "targetname" "/stage_nuke_inmuzer[1-3]/" + } + insert: + { + "OnStartTouch" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,-1" + } +} + +modify: +{ + match: + { + "classname" "filter_activator_team" + "targetname" "/tank_who_entered|stage_(3_buton_filter|5_top_sync_button_((nor|sou)th|(ea|we)st)_filter)/" + } + insert: + { + "OnPass" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +modify: +{ + match: + { + "classname" "filter_activator_team" + "targetname" "Vehicle_Car1_Test" + } + insert: + { + "OnFail" "map1manager1,CallScriptFunction,PlayerCompletedEvent,,1" + } +} + +; Add text for showing your stats on events. +add: +{ + "classname" "game_text" + "targetname" "map1statstext1" + "y" ".2" + "x" "-1" + "channel" "5" + "color" "255 255 0" + "color2" "128 128 0" + "effect" "2" + "fadein" ".05" + "fadeout" "1" + "fxtime" ".5" + "holdtime" "2" +} + +add: +{ + "classname" "info_game_event_proxy" + "targetname" "map1eventgenerator1" + "event_name" "player_info" +} + +add: +{ + "classname" "logic_eventlistener" + "targetname" "map1eventlistener1" + "EventName" "player_connect" + "FetchEventData" "1" + "IsEnabled" "1" + "TeamNum" "-1" +} + +add: +{ + "classname" "logic_eventlistener" + "targetname" "map1eventlistener2" + "EventName" "player_activate" + "FetchEventData" "1" + "IsEnabled" "1" + "TeamNum" "-1" +} + +add: +{ + "classname" "logic_eventlistener" + "targetname" "map1eventlistener3" + "EventName" "player_say" + "FetchEventData" "1" + "IsEnabled" "1" + "TeamNum" "-1" +} + +add: +{ + "classname" "logic_eventlistener" + "targetname" "map1eventlistener4" + "EventName" "player_info" + "FetchEventData" "1" + "IsEnabled" "1" + "TeamNum" "-1" +} + +add: +{ + "classname" "logic_eventlistener" + "targetname" "map1eventlistener5" + "EventName" "player_disconnect" + "FetchEventData" "1" + "IsEnabled" "1" + "TeamNum" "-1" +} + +add: +{ + "classname" "logic_eventlistener" + "targetname" "map1eventlistener6" + "EventName" "player_hurt" + "FetchEventData" "1" + "IsEnabled" "1" + "TeamNum" "2" +} + +; Add kill credit and kill icons. +add: +{ + "classname" "point_hurt" + "targetname" "map1takedamage1" + "DamageTarget" "map1takedamagevictim1" + "DamageRadius" ".01" + "Damage" ".01" + "DamageDelay" ".01" +} + +modify: +{ + match: + { + "classname" "trigger_hurt" + "targetname" "Weapon_Turret_Deployed_DevBrush" + } + replace: + { + "damagecap" "0" + "damage" "0" + } + delete: + { + "OnStartTouch" "Weapon_Turret_Deployed_FireSoundVolume00-1" + "OnStartTouch" "Weapon_Turret_Deployed_FireSoundVolume100.01-1" + "OnStartTouch" "Weapons_Turret_Model_ParticleStart0-1" + "OnStartTouch" "Weapons_Turret_Model_ParticleStop0.1-1" + } + insert: + { + "OnHurtPlayer" "map1manager1RunScriptCodeTakeDamage(3000, 0, _.dronegun, _.player_turret_carrier);-1" + "OnHurtPlayer" "Weapon_Turret_Deployed_FireSound,PlaySound,,,-1" + "OnHurtPlayer" "Weapons_Turret_Model_Particle,Start,,,-1" + "OnHurtPlayer" "Weapons_Turret_Model_Particle,Stop,,,-1" + } +} + +modify: +{ + match: + { + "classname" "logic_relay" + "targetname" "Weapon_Mine_HasAmmo" + } + insert: + { + "OnTrigger" "!activatorRunScriptCodeEntities.FindByName(null, _.Weapon_Mine_Projectile_Model + strTemplateWildcard).SetOwner(self);.01-1" + } +} + +modify: +{ + match: + { + "classname" "prop_dynamic" + "targetname" "Weapon_Mine_Projectile_Model" + } + insert: + { + "OnUser4" "Spawn_Explosion_Small_Damage&*,AddOutput,OnStartTouch !self:FireUser1::-1,.03,1" + "OnUser4" "!selfRunScriptCodeEntities.FindByName(null, _.Spawn_Explosion_Small_Damage + strTemplateWildcard).SetOwner(self.GetOwner());.031" + "OnUser4" "Spawn_Explosion_Small_Damage&*,AddOutput,damage 0,.03,1" + } +} + +modify: +{ + match: + { + "classname" "trigger_hurt" + "targetname" "Weapon_Gauss_Hurt" + } + replace: + { + "classname" "trigger_multiple" + } + delete: + { + "nodmgforce" "0" + "damagetype" "512" + "damagemodel" "0" + "damagecap" "20" + "damage" "20000" + } + insert: + { + "wait" "1e30" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(activator.GetHealth(), 512, _.zone_repulsor);-1" + } +} + +modify: { match: { - "targetname" "stage_x_end_vehicle_escape_track_1" + "classname" "weapon_deagle" + "targetname" "Weapon_M60_Weapon" } insert: { - "OnPass" "stage_3_boos_end_door,Open,,0,1" - "OnPass" "stage_3_boos_end_door,Open,,0,1" + "OnPlayerPickup" "!activatorRunScriptCodeEntities.FindByName(null, _.Weapon_Mounted_Gun_Hurt + strTemplateWildcard).SetOwner(self);-1" } } -; Change the "rendermode" to let us do the special effect thing. modify: { match: { - "classname" "prop_dynamic" - "targetname" "stage_5_pendulum_model" + "classname" "trigger_hurt" + "targetname" "Weapon_Mounted_Gun_Hurt" } replace: { - "renderamt" "254" + "classname" "trigger_multiple" + } + delete: + { + "nodmgforce" "0" + "damagetype" "512" + "damagemodel" "0" + "damagecap" "20" + "damage" "100" } insert: { - "rendermode" "2" - "renderfx" "14" + "wait" "1e30" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(100, 512, _.m249, caller.GetOwner());-1" } } -add: -{ - "classname" "env_sprite" - "targetname" "stage_5_stuff1" - "origin" "-8704 -979.863 -5248" - "spawnflags" "1" - "model" "sprites/halo.vmt" - "scale" "40" - "rendercolor" "255 255 255" - "renderamt" "140" - "rendermode" "7" - "GlowProxySize" "10" - "HDRColorScale" "1" -} - -; - - - - - - - - - - - - - - - - - - - - - - - -; Changes done by "Berke". -; - - - - - - - - - - - - - - - - - - - - - - - - -; Fix spawn trigger not resetting players and make it teleport faster. -filter: -{ - "classname" "trigger_multiple" - "targetname" "teleporter_main_trigger_positioner" -} modify: { match: { - "classname" "trigger_teleport" - "targetname" "teleporter_main_trigger_positioner" + "classname" "logic_relay" + "targetname" "Zombie_Item_Predator_Plasma_Relay" } replace: { - "origin" "-3488 9376 -8528" + "spawnflags" "1" + "StartDisabled" "1" } delete: { - "model" "*684" + "OnSpawn" "Zombie_Item_Predator_Plasma_PhyFireUser12-1" } insert: { - "OnStartTouch" "stage_end_explosion_working,Trigger,,540,1" - "OnStartTouch" "Z_Items_Filter,TestActivator,,,-1" + "OnSpawn" "Zombie_Item_Predator_Plasma_Phy,KillHierarchy,,2,1" } } @@ -1112,22 +4621,28 @@ modify: { match: { - "classname" "filter_multi" - "targetname" "Z_Items_Filter" + "classname" "trigger_hurt" + "targetname" "Zombie_Item_Predator_Plasma_Hurt" + } + replace: + { + "classname" "trigger_once" + } + delete: + { + "nodmgforce" "0" + "Damagetype" "0" + "damagemodel" "0" + "damagecap" "20" + "damage" "50" + "OnHurt" "Zombie_Item_Predator_Plasma_PhyFireUser10-1" } insert: { - "OnPass" "!activator,AddOutput,targetname ,,-1" - "OnPass" "!activator,AddOutput,gravity 1,,-1" - "OnPass" "!activator,AddOutput,OnUser3 !self:AddOutput:health 1200::1,.01,-1" - "OnPass" "!activator,AddOutput,rendermode 0,,-1" - "OnPass" "!activator,AddOutput,renderfx 0,,-1" - "OnPass" "!activator,SetDamageFilter,,,-1" - "OnPass" "!activator,ClearContext,,,-1" - "OnPass" "teleporter_main_counter,Add,1,,-1" - "OnPass" "Global_Speed_suppress,ModifySpeed,1,,-1" - "OnPass" "stage_5_top_teleport_counter,Add,1,,-1" - "OnUser1" "!activator,AddOutput,OnUser3 !self:AddOutput:health 10000::1,,-1" + "parentname" "Zombie_Item_Predator_Plasma_Phy" + "OnTrigger" "map1manager1RunScriptCodeTakeDamage(25, 0, _.zone_repulsor, _.zombie_predator);1" + "OnTrigger" "Zombie_Item_Predator_Plasma_Phy,KillHierarchy,,,1" + "OnTrigger" "Zombie_Item_Predator_Thruster,Kill,,,1" } } @@ -1135,16 +4650,46 @@ modify: { match: { - "classname" "logic_relay" - "targetname" "/Extreme_Stage_[1-4]/" + "classname" "func_physbox_multiplayer" + "targetname" "Zombie_Item_Predator_Plasma_Phy" + } + replace: + { + "spawnflags" "14966784" + "health" "9999" + "minhealthdmg" "9999" + "nodamageforces" "1" } delete: { - "OnTrigger" "teleporter_main_trigger_positionerAddOutputOnStartTouch !self:FireUser1::0:00-1" + "OnUser1" "Zombie_Item_Predator_Plasma_ThrusterKill0-1" + "OnUser1" "Zombie_Item_Predator_Plasma_RelayKill0-1" + "OnUser1" "Zombie_Item_Predator_Plasma_MeasureKill0-1" } insert: { - "OnTrigger" "Z_Items_Filter,AddOutput,OnPass !self:FireUser1:::-1,,1" + "effects" "32" + "OnDamaged" "!self,KillHierarchy,,,1" + "OnDamaged" "Zombie_Item_Predator_Thruster,Kill,,,1" + } +} + +filter: +{ + "classname" "logic_measure_movement" + "targetname" "Zombie_Item_Predator_Plasma_Measure" +} + +modify: +{ + match: + { + "classname" "point_template" + "targetname" "Zombie_Item_Predator_Plasma_Template" + } + delete: + { + "Template06" "Zombie_Item_Predator_Plasma_Measure" } } @@ -1152,13 +4697,16 @@ modify: { match: { - "classname" "math_counter" - "targetname" "Level_Counter" + "classname" "logic_compare" + "targetname" "Zombie_Item_Predator_Suicide_2" } insert: { - "OnGetValue" "teleporter_main_trigger_positioner,AddOutput,solid 2,4,1" - "OnGetValue" "teleporter_main_trigger_positionerRunScriptCodeself.SetSize(Vector(-2336, -224, -48), Vector(2336, 224, 48));41" + "OnLessThan" "!activatorRunScriptCodeif (self.GetTeam() == 2) EntFireByHandle(caller, _.FireUser1, __, -1, self, null);1" + "OnUser1" "Spawn_Nuke_Hurt&*,AddOutput,OnStartTouch !self:FireUser1:::-1,7.01,1" + "OnUser1" "!activatorRunScriptCodeEntities.FindByName(null, _.Spawn_Nuke_Hurt + strTemplateWildcard).SetOwner(self);7.011" + "OnUser1" "!activatorRunScriptCodeEntities.FindByName(Entities.FindByName(null, _.Spawn_Nuke_Hurt + strTemplateWildcard), _.Spawn_Nuke_Hurt + strTemplateWildcard).SetOwner(self);7.011" + "OnUser1" "Spawn_Nuke_Hurt&*,AddOutput,damage 0,7.01,1" } } @@ -1166,132 +4714,97 @@ modify: { match: { - "classname" "func_movelinear" - "targetname" "teleporter_main_movelinear" + "classname" "trigger_hurt" + "targetname" "Spawn_Nuke_Hurt" } replace: { - "spawnflags" "8" - "movedir" "-90 0 0" - "speed" "1500" - "movedistance" "96" + "StartDisabled" "1" } insert: { - "effects" "32" + "OnUser1" "map1manager1RunScriptCodeTakeDamage(activator.GetHealth(), 0, _.prop_exploding_barrel, caller.GetOwner());-1" } } -; Remove the message related to checkpoints in warmup round since this version doesn't have them. modify: { match: { "classname" "logic_relay" - "targetname" "Stage_Start_Stage_Warmup" + "targetname" "Spawn_Nuke_Trigger" } - delete: + insert: { - "OnTrigger" "Global_GameText_AnnouncementAddOutputmessage CHECKPOINT REACHED MEANS STAGE WONT REPEAT WHEN IT ENDS5-1" + "OnSpawn" "Spawn_Nuke_Hurt,Enable,,.01,1" } } -; Add props to get out of a stuck spot near "Tank" spawn on extreme stage 1. -add: -{ - "classname" "prop_dynamic" - "targetname" "stage_1_stuff1" - "origin" "2368 320 -13680" - "angles" "0 -15 0" - "model" "models/props/props_crates/wooden_crate_64x64.mdl" - "solid" "6" -} - -add: -{ - "classname" "prop_dynamic" - "targetname" "stage_1_stuff1" - "origin" "2368 320 -13608" - "model" "models/props/props_crates/wooden_crate_64x64.mdl" - "solid" "6" -} - -add: +modify: { - "classname" "prop_dynamic" - "targetname" "stage_1_stuff1" - "origin" "2384 224 -13680" - "angles" "-10 0 0" - "model" "models/props/de_nuke/crate_large.mdl" - "solid" "6" + match: + { + "classname" "trigger_hurt" + "targetname" "Zombie_Item_Tank_Hurt_Trigger" + } + replace: + { + "classname" "trigger_multiple" + } + delete: + { + "nodmgforce" "0" + "damagetype" "4" + "damagemodel" "0" + "damagecap" "20" + "damage" "199" + } + insert: + { + "wait" "1e30" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(99, 4, _.fists);-1" + } } -; Add viewcontrol template related outputs, filter stage 1 "Juggernaut" trigger to humans, reset targetnames and prevent viewmodel from being glitched out. modify: { match: { "classname" "logic_relay" - "targetname" "Auto" + "targetname" "Zombie_Item_Alma_Attack_Hurt_Relay" } - replace: + delete: { - "spawnflags" "1" + "OnTrigger" "!activatorSetHealth-15-1" } insert: { - "OnSpawn" "map1viewcontrolpreservedtemplate1,ForceSpawn,,.01,1" - "OnSpawn" "map1viewcontroltemplate1,Kill,,.01,1" - "OnSpawn" "worldspawn_brush_target,FireUser2,,,1" - "OnSpawn" "stage_x_crane_breakableRunScriptCodefunction InputUse() { return activator.GetTeam() == 3; }1" - "OnSpawn" "stage_x_crane_crateRunScriptCodefunction InputUse() { return activator.GetTeam() == 3; }1" - "OnSpawn" "player,AddOutput,targetname ,,1" - "OnSpawn" "playerRunScriptCodeif (self.GetName() == _.zombie_boss || self.GetName() == _.human_mech) EntFireByHandle(caller, _.FireUser1, __, 0, self, null);1" - "OnSpawn" "!selfRunScriptCode::_ <- delegate { function _get(strKey) { return strKey; } } : {};1" - "OnSpawn" "!selfRunScriptCode::__ <- ' '.tochar();1" - "OnUser1" "Map_End_Camera,RemovePlayer,,,1" - "OnUser1" "Map_End_Camera,AddPlayer,,,1" + "OnTrigger" "map1manager1RunScriptCodeTakeDamage(activator.GetHealth(), 0, _.Default, _.zombie_alma);5-1" } } -; Optional: Prevent the "Portal Gun" skip. -;modify: -;{ -; match: -; { -; "classname" "func_button" -; "targetname" "Weapon_PortalGun_UI" -; } -; replace: -; { -; "origin" "-1004 13248 -8512" -; } -;} - -;modify: -;{ -; match: -; { -; "classname" "env_entity_maker" -; "targetname" "Weapon_PortalGun_Projectile_Spawner" -; } -; replace: -; { -; "origin" "-1088 13248 -8520" -; } -;} - -; Fix stage 2 last vent fall breaking despite second room being "Mutator Test". modify: { match: { - "classname" "logic_case" - "targetname" "stage_2_open_random_relay" + "classname" "trigger_hurt" + "targetname" "/Spawn_Phy_Car_(2_|)Hurt/" + } + replace: + { + "classname" "trigger_multiple" + } + delete: + { + "nodmgforce" "0" + "damagetype" "0" + "damagemodel" "0" + "damagecap" "20" + "damage" "2000" } insert: { - "OnCase03" "stage_2_end_trigger,AddOutput,OnTrigger stage_2_vent_breakable:Break:::1,,1" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(activator.GetHealth(), 1, _.Default, _.zombie_tank);-1" } } @@ -1299,109 +4812,114 @@ modify: { match: { - "classname" "trigger_once" - "targetname" "stage_2_end_trigger" + "classname" "trigger_hurt" + "targetname" "wpn_jugger_trigger" } - delete: + replace: { - "OnStartTouch" "stage_2_vent_breakableBreak0-1" + "Damagetype" "0" + "damagecap" "0" + "damage" "0" + } + insert: + { + "OnHurt" "map1manager1RunScriptCodeTakeDamage(1000, 512, _.fists);-1" + "OnHurtPlayer" "map1manager1RunScriptCodeTakeDamage(1000, 512, _.fists);-1" } } -; Reduce volume of "Mech" minigun sound. modify: { match: { - "classname" "ambient_generic" - "targetname" "Human_Item_Mech_Sound_Minigun" + "classname" "logic_relay" + "targetname" "gatlingbullettimer" } - replace: + insert: { - "health" "3" + "OnTrigger" "Spawn_Projectile_Physic&*,AddOutput,OnUser4 !self:FireUser1:::1,.01,-1" + "OnTrigger" "!activatorRunScriptCodeEntities.FindByName(null, _.Spawn_Projectile_Physic + strTemplateWildcard).SetOwner(self);.01-1" } } -; Fix stage 4 nuke pit teleport being setup wrong. modify: { match: { - "classname" "trigger_teleport" - "targetname" "stage_4_trigger_pad" + "classname" "trigger_hurt" + "targetname" "Human_Item_Mech_Hurt_Punch" + } + replace: + { + "classname" "trigger_multiple" } delete: { - "landmark" "stages_teleport_destination" + "nodmgforce" "0" + "damagetype" "512" + "damagemodel" "0" + "damagecap" "20" + "damage" "2000" } insert: { - "target" "stages_teleport_destination" + "wait" "1e30" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(1000, 512, _.fists, caller.GetMoveParent().GetMoveParent().GetOwner());-1" } } -; Fix stage 4 nuke pad being broken showing the wrong message and being able to be damaged multiple times, uses "OnUser1" because we don't want it to be damaged early. modify: { match: { - "classname" "func_button" - "targetname" "stage_4_end_button_protection" + "classname" "trigger_hurt" + "targetname" "Human_Item_Mech_Hurt_Fire" } replace: { - "spawnflags" "3073" - } - delete: - { - "OnDamaged" "stage_4_nuke_worksDisable0-1" - "OnDamaged" "Global_GameText_AnnouncementRunScriptCodesetMessage(3)0-1" - "OnDamaged" "stage_4_end_nuke_malfunctionStartSpark0-1" - "OnDamaged" "Global_Message_Top_RightDisplay0.05-1" - "OnDamaged" "Global_Message_Top_RightAddOutputholdtime 00-1" - "OnDamaged" "Global_Message_Top_CountdownKill0-1" - "OnDamaged" "Global_GameText_AnnouncementFireUser30-1" + "Damagetype" "0" + "damagecap" "0" + "damage" "0" } insert: { - "OnUser1" "!self,Kill,,,1" - "OnUser1" "Global_GameText_AnnouncementRunScriptCodesetMessage(33);1" - "OnUser1" "stage_4_nuke_works,Disable,,,1" - "OnUser1" "stage_4_end_nuke_malfunction,StartSpark,,,1" - "OnUser1" "Global_Message_Top_Right,Display,,,1" - "OnUser1" "Global_Message_Top_Right,AddOutput,message ,,1" - "OnUser1" "Global_Message_Top_Right,AddOutput,holdtime 0,,1" - "OnUser1" "Global_Message_Top_Countdown,Kill,,,1" - "OnUser1" "Global_GameText_Announcement,FireUser3,,,1" + "OnHurt" "map1manager1RunScriptCodeTakeDamage(275, 512, _.inferno, caller.GetMoveParent().GetMoveParent().GetMoveParent().GetOwner());-1" + "OnHurtPlayer" "map1manager1RunScriptCodeTakeDamage(275, 512, _.inferno, caller.GetMoveParent().GetMoveParent().GetMoveParent().GetOwner());-1" + "OnHurtPlayer" "!activator,IgniteLifetime,3,,-1" } } -; Fix the new truck model used in stage 5 not covering the side like in the original. modify: { match: { - "classname" "prop_dynamic_override" - "targetname" "stage_5_megatrontruck" + "classname" "trigger_hurt" + "targetname" "Human_Item_Mech_Hurt_Minigun" } replace: { - "origin" "3904 -3440 12480" + "Damagetype" "0" + "damagecap" "0" + "damage" "0" + } + insert: + { + "OnHurt" "map1manager1RunScriptCodeTakeDamage(150, 512, _.m249, caller.GetMoveParent().GetMoveParent().GetMoveParent().GetOwner());-1" + "OnHurtPlayer" "map1manager1RunScriptCodeTakeDamage(150, 512, _.m249, caller.GetMoveParent().GetMoveParent().GetMoveParent().GetOwner());-1" } } -; Prevent explosions from triggering repeat killer. modify: { match: { - "classname" "logic_relay" - "targetname" "Spawn_Explosion_Logic" + "classname" "logic_compare" + "targetname" "Human_Item_Mech_Attack_Rocketlauncher" } insert: { - "OnSpawn" "Spawn_Explosion_Damage,AddOutput,classname norepeatkiller1,,1" - "OnSpawn" "Spawn_Explosion_Damage_All,AddOutput,classname norepeatkiller1,,1" + "OnEqualTo" "Spawn_Projectile_Physic&*,AddOutput,OnUser4 !self:FireUser2:::1,1.21,-1" + "OnEqualTo" "!activatorRunScriptCodeEntities.FindByName(null, _.Spawn_Projectile_Physic + strTemplateWildcard).SetOwner(self);1.21-1" } } @@ -1409,319 +4927,259 @@ modify: { match: { - "classname" "logic_relay" - "targetname" "Spawn_Explosion_Small_Logic" + "classname" "func_physbox_multiplayer" + "targetname" "Spawn_Projectile_Physic" } insert: { - "OnSpawn" "Spawn_Explosion_Small_Damage,AddOutput,classname norepeatkiller1,,1" - "OnSpawn" "Spawn_Explosion_Small_Damage_H,AddOutput,classname norepeatkiller1,,1" + "OnUser1" "Spawn_Explosion_Small_Damage&*,AddOutput,OnStartTouch !self:FireUser1:::-1,.03,1" + "OnUser1" "!selfRunScriptCodeEntities.FindByName(null, _.Spawn_Explosion_Small_Damage + strTemplateWildcard).SetOwner(self.GetOwner());.031" + "OnUser1" "Spawn_Explosion_Small_Damage&*,AddOutput,damage 0,.03,1" + "OnUser1" "Spawn_Explosion_Small_Damage_H&*,AddOutput,OnStartTouch !self:FireUser1:::-1,.03,1" + "OnUser1" "!selfRunScriptCodeEntities.FindByName(null, _.Spawn_Explosion_Small_Damage_H + strTemplateWildcard).SetOwner(self.GetOwner());.031" + "OnUser1" "Spawn_Explosion_Small_Damage_H&*,AddOutput,damage 0,.03,1" + "OnUser2" "Spawn_Explosion_Small_Damage&*,AddOutput,OnStartTouch !self:FireUser1:::-1,.03,1" + "OnUser2" "!selfRunScriptCodeEntities.FindByName(null, _.Spawn_Explosion_Small_Damage + strTemplateWildcard).SetOwner(self.GetOwner());.031" + "OnUser2" "Spawn_Explosion_Small_Damage&*,AddOutput,damage 0,.03,1" } } -; When a "Tank" controlled by a zombie is broken, don't make it disappear but make it non-solid and darken it. modify: { match: { - "classname" "logic_relay" - "targetname" "_human_item_tank_health_drivver_zombiekill" + "classname" "trigger_hurt" + "targetname" "Spawn_Explosion_Small_Damage" } - replace: + insert: { - "spawnflags" "1" + "OnUser1" "map1manager1RunScriptCodeTakeDamage(activator.GetHealth(), 0, _.prop_exploding_barrel, caller.GetOwner());-1" } - delete: +} + +modify: +{ + match: { - "OnTrigger" "v_model1Break0-1" + "classname" "trigger_hurt" + "targetname" "Spawn_Explosion_Small_Damage_H" } insert: { - "OnTrigger" "v_model1,AddOutput,solid 0,,1" - "OnTrigger" "v_button1,Kill,,,1" - "OnTrigger" "v_model1,Color,64 64 64,.01,1" - "OnTrigger" "Tank_Cannon,Color,64 64 64,.01,1" + "OnUser1" "map1manager1RunScriptCodeTakeDamage(activator.GetHealth(), 0, _.prop_exploding_barrel, caller.GetOwner());-1" } } -; Prevent camping zombie spawns and add filters that prevent all damage but nuke. -add: -{ - "classname" "filter_activator_name" - "targetname" "map1nukefilter1" - "filtername" "Nuke_Kill_Trigger" -} - -add: -{ - "classname" "filter_activator_name" - "targetname" "map1nukefilter2" - "filtername" "Kill_All_Trigger" -} - add: { "classname" "filter_activator_name" - "targetname" "map1nukefilter3" - "filtername" "stage_3_nuke" + "targetname" "map1nobossfilter1" + "filtername" "zombie_boss" + "Negated" "1" } add: { "classname" "filter_multi" - "targetname" "map1mainnukefilter1" - "FilterType" "1" - "Filter01" "map1nukefilter1" - "Filter02" "map1nukefilter2" - "Filter03" "map1nukefilter3" -} - -; Stage 1 -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_1_stuff1" - "origin" "1672 -464 -13632" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_1_stuff1" - "origin" "6392 224 -13632" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_1_stuff1" - "origin" "12184 -10384 -13632" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_1_stuff1" - "origin" "3856 -9368 -12848" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -; Stage 2 -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_2_stuff1" - "origin" "3920 768 -7376" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_2_stuff1" - "origin" "-1048 3656 -7632" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_2_stuff1" - "origin" "-1296 6048 -8032" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -; Stage 3 -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_3_stuff1" - "origin" "-296 6392 -560" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_3_stuff1" - "origin" "6640 5224 832" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" -} - -add: -{ - "classname" "trigger_multiple" - "targetname" "stage_3_stuff1" - "origin" "8000 3880 1216" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" + "targetname" "map1nononbosszombie1" + "Filter01" "map1nobossfilter1" + "Filter02" "team_filter_zombies" + "Negated" "1" } -; Stage 4 -add: +modify: { - "classname" "trigger_multiple" - "targetname" "stage_4_stuff1" - "origin" "5968 7952 3376" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" + match: + { + "classname" "point_viewcontrol_multiplayer" + "targetname" "stage_cinematic_cam" + } + delete: + { + "OnUser2" "playerSetDamageFilterfilter_no_zombies0-1" + } + insert: + { + "OnUser2" "playerRunScriptCodeif (self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.filter_no_zombies, -1, null, null);-1" + "OnUser2" "map1manager1RunScriptCodebIsStage3Boss = true;-1" + } } -add: +modify: { - "classname" "trigger_multiple" - "targetname" "stage_4_stuff1" - "origin" "176 -800 3376" - "angles" "0 90 0" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" + match: + { + "classname" "trigger_hurt" + "targetname" "Zombie_Item_Boss_Trigger_Hurt_Claws" + } + insert: + { + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.map1nononbosszombie1, -1, null, null);.2-1" + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.filter_no_zombies, -1, null, null);.8-1" + } } -add: +modify: { - "classname" "trigger_multiple" - "targetname" "stage_4_stuff1" - "origin" "-11072 -10488 3376" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" + match: + { + "classname" "trigger_hurt" + "targetname" "Zombie_Item_Boss_Trigger_Hurt_Claws_Crouch" + } + insert: + { + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.map1nononbosszombie1, -1, null, null);.6-1" + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.filter_no_zombies, -1, null, null);3-1" + } } -add: +modify: { - "classname" "trigger_multiple" - "targetname" "stage_4_stuff1" - "origin" "9608 -7704 3376" - "model" "*584" - "spawnflags" "1" - "filtername" "team_filter_zombies" - "OnStartTouch" "!activator,SetDamageFilter,map1mainnukefilter1,.01,-1" - "OnEndTouch" "!activator,SetDamageFilter,,.01,-1" + match: + { + "classname" "info_particle_system" + "targetname" "Zombie_Item_Boss_Stomp_Particle" + } + insert: + { + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.map1nononbosszombie1, -1, null, null);-1" + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.filter_no_zombies, -1, null, null);.3-1" + } } -; Implement the unused zombie teleport in extreme stage 1. modify: { match: { - "classname" "func_movelinear" - "targetname" "stage_x_camp_door" + "classname" "trigger_hurt" + "targetname" "Zombie_Item_Boss_Trigger_Hurt_Claws_2" } insert: { - "OnFullyOpen" "stage_positioner_teleport,InValue,11,,1" + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.map1nononbosszombie1, -1, null, null);.6-1" + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.filter_no_zombies, -1, null, null);1-1" + "OnUser2" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.map1nononbosszombie1, -1, null, null);-1" + "OnUser2" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.filter_no_zombies, -1, null, null);1.5-1" } } -; Implement the unused zombie teleport in extreme stage 3. modify: { match: { - "classname" "logic_relay" - "targetname" "stage_3_tests_relay_1" + "classname" "trigger_hurt" + "targetname" "Zombie_Item_Boss_Attach_Hurt_Explosion" } insert: { - "OnTrigger" "stage_positioner_teleport,InValue,32,,1" + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.map1nononbosszombie1, -1, null, null);1.2-1" + "OnUser1" "playerRunScriptCodeif (bIsStage3Boss && self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, _.filter_no_zombies, -1, null, null);1.4-1" } } -; Fix viewcontrols being laggy for "Alex Mercer" and "Mech". -; Delete the old system used for viewcontrols. -filter: +modify: { - "classname" "logic_measure_movement" - "targetname" "Zombie_Item_Boss_Measure" + match: + { + "classname" "trigger_hurt" + "targetname" "Zombie_Item_Boss_Trigger_Hurt_Claws" + } + replace: + { + "classname" "trigger_multiple" + } + delete: + { + "nodmgforce" "0" + "damagetype" "128" + "damagemodel" "0" + "damagecap" "20" + "damage" "250" + } + insert: + { + "wait" "1e30" + "filtername" "filter_no_zombies" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(125, 128);-1" + } } -filter: +modify: { - "classname" "info_teleport_destination" - "targetname" "Zombie_Item_Boss_Cam_Pos_2" + match: + { + "classname" "trigger_hurt" + "targetname" "/Zombie_Item_Boss_Trigger_Hurt_Claws_(Crouch|2)/" + } + replace: + { + "classname" "trigger_multiple" + } + delete: + { + "nodmgforce" "0" + "damagetype" "128" + "damagemodel" "0" + "damagecap" "20" + "damage" "3000" + } + insert: + { + "wait" "1e30" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(activator.GetHealth(), 128);-1" + } } -filter: +modify: { - "classname" "logic_measure_movement" - "targetname" "Human_Item_Mech_Measure" + match: + { + "classname" "logic_case" + "targetname" "Zombie_Item_Boss_Attack_Case" + } + insert: + { + "OnCase03" "!activatorRunScriptCodeEntities.FindByName(null, _.SPawn_Mercer_Spikes_Hurt).SetOwner(self);1.01-1" + } } -filter: +modify: { - "classname" "info_teleport_destination" - "targetname" "Human_Item_Mech_Cam_Pos_2" + match: + { + "classname" "logic_relay" + "targetname" "SPawn_Mercer_Spikes_Relay" + } + insert: + { + "OnSpawn" "SPawn_Mercer_Spikes_Hurt,Enable,,.01,1" + } } -; Add the new system where we spawn the viewcontrols using a preserved template and spawn them parented. modify: { match: { - "classname" "point_viewcontrol" - "targetname" "Zombie_Item_Boss_Cam" + "classname" "trigger_hurt" + "targetname" "SPawn_Mercer_Spikes_Hurt" + } + replace: + { + "classname" "trigger_multiple" + "StartDisabled" "1" + } + delete: + { + "nodmgforce" "0" + "damagetype" "128" + "damagemodel" "0" + "damagecap" "20" + "damage" "1000" } insert: { - "parentname" "Zombie_Item_Boss_Cam_Pos" + "wait" "1e30" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(activator.GetHealth(), 128, _.Default, caller.GetOwner());-1" } } @@ -1729,97 +5187,132 @@ modify: { match: { - "classname" "point_viewcontrol" - "targetname" "Human_Item_Mech_Cam" + "classname" "trigger_hurt" + "targetname" "Zombie_Item_Boss_Attach_Hurt_Explosion" + } + replace: + { + "classname" "trigger_multiple" + } + delete: + { + "nodmgforce" "0" + "damagetype" "128" + "damagemodel" "0" + "damagecap" "20" + "damage" "170" } insert: { - "parentname" "Human_Item_Mech_Knife" + "wait" "1e30" + "OnStartTouch" "map1manager1RunScriptCodeTakeDamage(85, 128, _.prop_exploding_barrel, caller.GetMoveParent().GetMoveParent().GetOwner());-1" } } -add: +modify: { - "classname" "point_template" - "targetname" "map1viewcontroltemplate1" - "Template01" "Zombie_Item_Boss_Cam" - "Template02" "Human_Item_Mech_Cam" + match: + { + "classname" "func_physbox_multiplayer" + "targetname" "stage_x_boss_end_support_breakable_1" + } + insert: + { + "OnBreak" "Spawn_Explosion_Damage&*,AddOutput,OnStartTouch !self:FireUser1:::-1,.01,1" + "OnBreak" "!activatorRunScriptCodeEntities.FindByName(null, _.Spawn_Explosion_Damage + strTemplateWildcard).SetOwner(self);.011" + } } modify: { match: { - "classname" "info_target" - "targetname" "worldspawn_brush_target" + "classname" "trigger_hurt" + "targetname" "Spawn_Explosion_Damage" } insert: { - "OnUser2" "map1viewcontrolpreservedtemplate1,AddOutput,classname info_ladder,,1" - "OnUser2" "map1viewcontroltemplate1,AddOutput,targetname map1viewcontrolpreservedtemplate1,,1" + "OnUser1" "map1manager1RunScriptCodeTakeDamage(50000, 0, _.prop_exploding_barrel, caller.GetOwner());-1" } } -; When someone dies, give them empty targetname instead of one called "none" and prevent viewmodel from being glitched out. +; Replace "AddOutput basevelocity" inputs with "RunScriptCode SetVelocity". modify: { match: { - "classname" "trigger_brush" - "targetname" "game_playerdie" + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Alma_Attack_Hurt" } delete: { - "OnUse" "!activatorAddOutputtargetname none0-1" + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" } insert: { - "OnUse" "!activator,AddOutput,targetname ,,-1" - "OnUse" "!activatorRunScriptCodeif (self.GetName() == _.zombie_boss || self.GetName() == _.human_mech) EntFireByHandle(caller, _.FireUser1, __, 0, self, null);-1" - "OnUser1" "Map_End_Camera,RemovePlayer,,,1" - "OnUser1" "Map_End_Camera,AddPlayer,,,1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" } } -; Make trigger of extreme stage 3 third test room bigger to prevent zombies avoiding it by staying just next to the room. modify: { match: { "classname" "trigger_multiple" - "targetname" "stage_3_tests_main_5" + "targetname" "Weapon_ZeroGravity_Projectile_Trigger" } - replace: + delete: { - "model" "*279" - "origin" "5025.78 5771.83 968" + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 -4900.07-1" + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" + } + insert: + { + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, -490));.5-1" } } -; Implement a better zombie trigger system and prevent zombie "Freezer" item from triggering on stage 4. modify: { match: { - "classname" "logic_relay" - "targetname" "Extreme_Stage_1" + "classname" "logic_case" + "targetname" "Zombie_Item_Boss_Attack_Case" + } + delete: + { + "OnCase03" "!activatorAddOutputbasevelocity 0 0 3000-1" + "OnCase13" "!activatorAddOutputbasevelocity 0 0 4000-1" } insert: { - "OnTrigger" "stage_1_zmtrigger1,Kill,,,1" + "OnCase03" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 300));-1" + "OnCase13" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 400));-1" } } +filter: +{ + "classname" "filter_activator_team" + "targetname" "team_filter_push_up" +} + modify: { match: { - "classname" "func_button" - "targetname" "stage_1_button_tower_top" + "classname" "logic_case" + "targetname" "Zombie_Item_Boss_Attack_Case" } delete: { - "OnPressed" "bullshitadderKill01" + "OnCase13" "playerAddOutputOnUser1 team_filter_push_up:TestActivator::0:10-1" + "OnCase13" "playerFireUser10.8-1" + } + insert: + { + "OnCase13" "playerRunScriptCodeif (self.GetTeam() == 3 && self.GetHealth()) self.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 1000));.8-1" } } @@ -1827,43 +5320,36 @@ modify: { match: { - "classname" "logic_relay" - "targetname" "ZOMBIESTRIGGERED" - } - replace: - { - "spawnflags" "1" + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Boss_Gravity" } delete: { - "vscripts" "hichatu/zm_trigger.nut" - "OnTrigger" "Kill_All_TriggerEnable21" + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 -4700.07-1" + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" } insert: { - "OnTrigger" "map1roundend1,EndRound_TerroristsWin,7,,1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, -470));.5-1" } } +; Nerf "Predator" item jump ability height a little. modify: { match: { - "classname" "trigger_once" - "targetname" "bullshitadder" - } - replace: - { - "targetname" "stage_1_zmtrigger1" + "classname" "logic_compare" + "targetname" "Zombie_Item_Predator_Jump" } delete: { - "OnStartTouch" "stage_1_button_end_2AddOutputOnPressed ZOMBIESTRIGGERED:RunScriptCode:progressTrigger():0:101" + "OnLessThan" "!activatorAddOutputbasevelocity 0 0 5000-1" } insert: { - "OnStartTouch" "stage_1_button_end_2RunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" - "OnStartTouch" "stage_1_button_end_2,AddOutput,OnPressed !self:Kill:::1,,1" + "OnLessThan" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 400));-1" } } @@ -1871,16 +5357,16 @@ modify: { match: { - "classname" "func_button" - "OnPressed" "ZOMBIESTRIGGEREDRunScriptCodeprogressTrigger()01" + "classname" "trigger_multiple" + "targetname" "/stage_5_Trap_Gravity_Trigger([3-4]|)/" } delete: { - "OnPressed" "ZOMBIESTRIGGEREDRunScriptCodeprogressTrigger()01" + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" } insert: { - "OnPressed" "!self,Kill,,,1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" } } @@ -1888,42 +5374,33 @@ modify: { match: { - "classname" "point_template" - "targetname" "stage1_things" + "classname" "trigger_multiple" + "targetname" "/stage_2_trigger_minifier_room_[1-2]/" + } + delete: + { + "OnTrigger" "!activatorAddOutputbasevelocity 0 0 8000-1" } insert: { - "OnEntitySpawned" "stage_1_bridge_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnTrigger" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 800));-1" } } -; Optional: Zombie trigger for the underground button on stage 1 added by the porter, I am not sure if it should be kept considering humans can progress without pressing it. -;modify: -;{ -; match: -; { -; "classname" "point_template" -; "targetname" "stage1_x_things" -; } -; insert: -; { -; "OnEntitySpawned" "stage_x_btn_endRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" -; } -;} - modify: { match: { - "classname" "point_template" - "targetname" "stage2_things" + "classname" "trigger_hurt" + "targetname" "Spawn_Nuke_Hurt" + } + delete: + { + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000-1" } insert: { - "OnEntitySpawned" "stage_2_btn_mainRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" - "OnEntitySpawned" "stage_2_button_weapon_doorRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" - "OnEntitySpawned" "stage_2_button_core_generatorRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" - "OnEntitySpawned" "stage_2_main_room_button_nextRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" } } @@ -1931,368 +5408,323 @@ modify: { match: { - "classname" "point_template" - "targetname" "stage3_things" + "classname" "trigger_multiple" + "targetname" "stage_5_last_man_trigger_core_end_bad" + } + delete: + { + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 -4850.07-1" + "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" } insert: { - "OnEntitySpawned" "stage_3_core_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" + "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, -485));.5-1" } } -modify: +; Make stage 5 zombie teleports cover everywhere. +filter: +{ + "classname" "trigger_teleport" + "targetname" "lms_fuckoffzombies" +} + +; Optimize stage 5 "Last Man Standing" triggers and fix it killing the "Mech" user. +filter: +{ + "classname" "func_rotating" + "targetname" "stage_5_last_man_rotating" +} + +filter: +{ + "classname" "trigger_once" + "targetname" "stage_5_last_man_detect" +} + +filter: +{ + "classname" "filter_activator_name" + "targetname" "filter_last_man_name_allow" +} + +filter: { - match: - { - "classname" "point_template" - "targetname" "stage4_things" - } - insert: - { - ;"OnEntitySpawned" "stage_4_end_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" - "OnEntitySpawned" "stage_4_custombrush1,AddOutput,solid 2,,1" - "OnEntitySpawned" "stage_4_custombrush1RunScriptCodeself.SetSize(Vector(-256, -448, -1696), Vector(256, 448, 1696));1" - } + "classname" "trigger_teleport" + "targetname" "teleport_lastmanstanding" } -; No need for filters anymore. filter: { - "classname" "filter_activator_team" - "targetname" "stage_4_end_button_filter" + "classname" "filter_activator_name" + "targetname" "filter_last_man_name" } -modify: +filter: { - match: - { - "classname" "func_button" - "targetname" "stage_4_end_button" - } - replace: - { - "spawnflags" "3073" - } - delete: - { - "OnPressed" "stage_4_end_button_filterTestActivator0-1" - } - insert: - { - "OnPressed" "stage_x_end_nuke_door_*,Open,,,1" - "OnPressed" "Global_GameText_AnnouncementRunScriptCodesetMessage(3);1" - "OnPressed" "stage_x_nuke_train,Open,,,1" - "OnPressed" "Glocal_Message_Selector,InValue,stage4_end,,1" - "OnPressed" "stage_4_nuke_works,Trigger,,80,1" - "OnPressed" "stage_x_end_bridge_1,Open,,43,1" - "OnPressed" "Global_GameText_Announcement,FireUser4,,,1" - "OnPressed" "stage_4_part_5_trigger,FireUser1,,,1" - "OnPressed" "Global_GameText_Objective,FireUser2,,,1" - "OnPressed" "stage_target_helper_2,AddOutput,origin 0 0 0,,1" - "OnPressed" "stage_x_ultralistk_model,FireUser2,,60,1" - "OnPressed" "stage_positioner_teleport,InValue,44,,1" - } + "classname" "filter_multi" + "targetname" "filter_last_man" } filter: { - "classname" "filter_activator_team" - "targetname" "stage_4_end_button_protection_filter" + "classname" "trigger_hurt" + "targetname" "stage_5_last_man_trigger" } modify: { match: { - "classname" "func_button" - "targetname" "stage_4_end_button_protection" + "classname" "logic_relay" + "targetname" "stage_5_core_destroyed" } replace: { - "spawnflags" "3073" + "spawnflags" "1" } delete: { - "OnPressed" "stage_4_end_button_protection_filterTestActivator0-1" + "vscripts" "hichatu/actual_random_solo.nut" + "OnTrigger" "stage_5_last_man_detectEnable0-1" } insert: { - "OnPressed" "Global_GameText_AnnouncementRunScriptCodesetMessage(6);1" - "OnPressed" "stage_x_end_nuke_protection_door,Close,,,1" - "OnPressed" "Global_GameText_Announcement,FireUser4,,,1" - "OnPressed" "Global_Give_30_points,ApplyScore,,,1" - "OnPressed" "fallback_fade,Fade,,,-1" - } -} - -; Kill stage relays when triggered. + "OnTrigger" "map1manager1,CallScriptFunction,PickLastManStanding,,1" + "OnTrigger" "Human_Item_Mech_Model,KillHierarchy,,,1" + "OnTrigger" "Human_Item_Mech_UI,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Attack_*,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Logic,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Timer,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Selector,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Walk,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Sound_*,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Explosion,Kill,,,1" + "OnTrigger" "Mech_Particle_Teleportation,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Teleportation,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Hint,Kill,,,1" + "OnTrigger" "stage_4_Human_Item_Mech_Hint_Telp,Kill,,,1" + "OnTrigger" "human_item_mech_hurt_punch,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Cam,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Cam,Disable,,,1" + "OnTrigger" "stage_x_juggernaut_*,Kill,,,1" + "OnTrigger" "stage_4_juggernaut_escape_trigger,Kill,,,1" + "OnTrigger" "Human_Item_Mech_Show_Model,Kill,,,1" + "OnTrigger" "stage_4_mech_*,Kill,,,1" + "OnTrigger" "filter_mech,Kill,,,1" + "OnTrigger" "Human_Item_Mech_KnifeRunScriptCodeif (!self.GetOwner()) self.Destroy();1" + "OnTrigger" "human_mech,AddOutput,targetname ,,1" + "OnTrigger" "human_mechRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);1" + "OnTrigger" "human_mech,AddOutput,gravity 1,,1" + "OnTrigger" "human_mech,AddOutput,health 100,,1" + "OnTrigger" "human_mech,AddOutput,rendermode 0,,1" + "OnTrigger" "human_mech,AddOutput,renderfx 0,,1" + "OnTrigger" "human_mech,SetDamageFilter,,,1" + "OnTrigger" "wpn_jugger_branch,Kill,,,1" + "OnTrigger" "wpn_jugger_fx,Kill,,,1" + "OnTrigger" "wpn_jugger_mdl,Kill,,,1" + "OnTrigger" "wpn_jugger_phys,Kill,,,1" + "OnTrigger" "wpn_jugger_relay_*,Kill,,,1" + "OnTrigger" "wpn_jugger_hurt,Kill,,,1" + "OnTrigger" "wpn_jugger_snd_*,Kill,,,1" + "OnTrigger" "wpn_jugger_trigger,Kill,,,1" + "OnTrigger" "wpn_jugger_ui,Kill,,,1" + "OnTrigger" "item1human1juggernaut1multiple1,Kill,,,1" + "OnTrigger" "item1human1juggernaut1multipledisabled1,Kill,,,1" + "OnTrigger" "stage_5_dog_spawner,Kill,,,1" + "OnTrigger" "wpn_juggerRunScriptCodeif (!self.GetOwner()) self.Destroy();1" + "OnTrigger" "monsterRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);1" + "OnTrigger" "monster,SetDamageFilter,,,1" + "OnTrigger" "monster,AddOutput,rendermode 0,,1" + "OnTrigger" "monster,AddOutput,renderfx 0,,1" + "OnTrigger" "monster,AddOutput,renderamt 255,,1" + "OnTrigger" "monster,AddOutput,health 100,,1" + "OnTrigger" "last_man_standingRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);11" + "OnTrigger" "last_man_standing,SetDamageFilter,,1,1" + "OnTrigger" "last_man_standing,AddOutput,rendermode 0,1,1" + "OnTrigger" "last_man_standing,AddOutput,renderfx 0,1,1" + "OnTrigger" "last_man_standing,AddOutput,renderamt 255,1,1" + "OnTrigger" "monster,AddOutput,targetname ,1,1" + "OnTrigger" "monsterRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);11" + "OnTrigger" "monster,SetDamageFilter,,1,1" + "OnTrigger" "monster,AddOutput,rendermode 0,1,1" + "OnTrigger" "monster,AddOutput,renderfx 0,1,1" + "OnTrigger" "monster,AddOutput,renderamt 255,1,1" + "OnTrigger" "last_man_standingRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);2.31" + "OnTrigger" "human_mechRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);2.31" + "OnTrigger" "last_man_standingRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);31" + "OnTrigger" "human_mechRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);31" + } +} + +; Reset "Mech" item user's gravity when "Team Win Ending" is triggered. modify: { match: { "classname" "logic_relay" - "targetname" "/Stage_Start_Stage_5|Extreme_Stage_([0-5]|common)/" + "targetname" "stage_5_top_relay_core_working" } - replace: + insert: { - "spawnflags" "1" + "OnTrigger" "human_mech,AddOutput,gravity 1,,1" } } -; Fix warmup texts. +; Fix "Mech" item setting speed of user to normal after doing attacks. modify: { match: { - "classname" "logic_case" - "targetname" "Stage_Warmup_Random_Messages_Case" + "classname" "logic_compare" + "targetname" "Human_Item_Mech_Attack_Punch" } delete: { - "OnCase01" "Global_GameText_Stage_StartRunScriptCodesetMessage(35)0-1" - "OnCase02" "Global_GameText_Stage_StartRunScriptCodesetMessage(36)0-1" - "OnCase03" "Global_GameText_Stage_StartRunScriptCodesetMessage(37)00" - "OnCase04" "Global_GameText_Stage_StartRunScriptCodesetMessage(38)0-1" - "OnCase05" "Global_GameText_Stage_StartRunScriptCodesetMessage(39)0-1" - "OnCase06" "Global_GameText_Stage_StartRunScriptCodesetMessage(40)0-1" - "OnCase07" "Global_GameText_Stage_StartRunScriptCodesetMessage(41)0-1" - "OnCase08" "Global_GameText_Stage_StartRunScriptCodesetMessage(42)0-1" - "OnCase09" "Global_GameText_Stage_StartRunScriptCodesetMessage(43)0-1" - "OnCase10" "Global_GameText_Stage_StartRunScriptCodesetMessage(44)0-1" - "OnCase11" "Global_GameText_Stage_StartRunScriptCodesetMessage(45)0-1" - "OnCase12" "Global_GameText_Stage_StartRunScriptCodesetMessage(46)0-1" - "OnCase13" "Global_GameText_Stage_StartRunScriptCodesetMessage(47)0-1" - "OnCase14" "Global_GameText_Stage_StartRunScriptCodesetMessage(48)0-1" - "OnCase15" "Global_GameText_Stage_StartRunScriptCodesetMessage(49)0-1" + "OnEqualTo" "Global_SpeedModifySpeed12.3-1" } insert: { - "OnCase01" "Global_GameText_Stage_StartRunScriptCodesetMessage(34);1" - "OnCase02" "Global_GameText_Stage_StartRunScriptCodesetMessage(35);1" - "OnCase03" "Global_GameText_Stage_StartRunScriptCodesetMessage(36);1" - "OnCase04" "Global_GameText_Stage_StartRunScriptCodesetMessage(37);1" - "OnCase05" "Global_GameText_Stage_StartRunScriptCodesetMessage(38);1" - "OnCase06" "Global_GameText_Stage_StartRunScriptCodesetMessage(39);1" - "OnCase07" "Global_GameText_Stage_StartRunScriptCodesetMessage(40);1" - "OnCase08" "Global_GameText_Stage_StartRunScriptCodesetMessage(41);1" - "OnCase09" "Global_GameText_Stage_StartRunScriptCodesetMessage(42);1" - "OnCase10" "Global_GameText_Stage_StartRunScriptCodesetMessage(43);1" - "OnCase11" "Global_GameText_Stage_StartRunScriptCodesetMessage(44);1" - "OnCase12" "Global_GameText_Stage_StartRunScriptCodesetMessage(45);1" - "OnCase13" "Global_GameText_Stage_StartRunScriptCodesetMessage(46);1" - "OnCase14" "Global_GameText_Stage_StartRunScriptCodesetMessage(47);1" - "OnCase15" "Global_GameText_Stage_StartRunScriptCodesetMessage(48);1" + "OnEqualTo" "Global_Speed,ModifySpeed,.8,2.3,-1" } } -; Remove missing animation inputs. modify: { match: { - "classname" "func_tanktrain" - "targetname" "Vehicle_Fake_Helicopter_TrackTrain" + "classname" "logic_compare" + "targetname" "Human_Item_Mech_Attack_Rocketlauncher" } delete: { - "OnUser1" "Vehicle_Fake_Helicopter_ModelSetAnimationstart_fast_fly0-1" - "OnUser1" "Vehicle_Fake_Helicopter_ModelSetDefaultAnimationfast_fly0-1" - } -} - -; Shorten some button delays. -modify: -{ - match: - { - "classname" "func_button" - "wait" "0.1" + "OnEqualTo" "Global_SpeedModifySpeed13-1" } - replace: + insert: { - "wait" ".01" + "OnEqualTo" "Global_Speed,ModifySpeed,.8,3,-1" } } -; Make stage 2 lobby door non-solid. -; Optional: Prevent the stage 2 lobby door killing humans. modify: { match: { - "classname" "func_door" - "targetname" "stage_x_second_door" + "classname" "env_hudhint" + "targetname" "Human_Item_Mech_Hint" } - replace: + delete: { - "spawnflags" "808" - "forceclosed" "1" -; "dmg" "0" - "dmg" "9999" + "OnUser1" "Human_Item_Mech_HintFireUser10.5-1" } insert: { - "effects" "32" -; "OnBlockedClosing" "!activatorRunScriptCodeif (self.GetTeam() == 3) self.SetAbsOrigin(Vector(self.GetOrigin().x, 605, self.GetOrigin().z)); else EntFireByHandle(self, _.SetHealth, (0).tostring(), 0, null, null);-1" -; "OnBlockedClosing" "!self,Open,,,-1" -; "OnBlockedClosing" "!self,Close,,.01,-1" - "OnBlockedClosing" "!activatorRunScriptCodeif (self.GetTeam() == 3) EntFireByHandle(caller, _.FireUser1, __, 0, null, null);-1" - "OnUser1" "console,Command,say A human has died to the door!,,-1" + "OnUser1" "Human_Item_Mech_Hint,FireUser1,,.01,-1" } } -; Prevent blocking bridge lowering in stage 4. -modify: +; Useless entity. +filter: { - match: - { - "classname" "func_door" - "targetname" "stage_x_end_bridge_1" - } - replace: - { - "spawnflags" "512" - "dmg" "9999" - } + "classname" "info_target" + "targetname" "driver1" } -; Fix extreme stage 3 elevators being blockable. +; Make "270" angles to "90" cause why not. modify: { match: { - "classname" "func_door" - "targetname" "/stage_x_lift_[1-2]/" + "angles" "0 270 0" } replace: { - "forceclosed" "1" + "angles" "0 -90 0" } } -; Prevent blocking bridge lowering in stage 4. +; Turn "info_teleport_destination"s with no parent to "logic_relay", bless "Moltard". modify: { match: { - "classname" "func_door" - "targetname" "stage_x_end_bridge_1" + "classname" "info_teleport_destination" } - replace: + insert: { - "spawnflags" "512" - "dmg" "9999" + "hasparent" "0" } } -; Useless input on stage 3. modify: { match: { - "classname" "func_button" - "targetname" "stage_3_button" + "classname" "info_teleport_destination" + "parentname" "/.*/" } - delete: + replace: { - "OnPressed" "stage_target_helperAddOutput0 0 001" + "hasparent" "1" } } -; Kill stage 4 train entities when no longer needed. modify: { match: { - "classname" "func_tanktrain" - "targetname" "Vehicle_Fake_Truck_Tracktrain1" + "hasparent" "0" } - delete: + replace: { - "OnUser2" "Vehicle_Fake_Truck_HurtDisable0-1" - "OnUser2" "Vehicle_Fake_Truck_teleportDisable0-1" - "OnUser2" "Vehicle_Fake_Truck_Tracktrain1_tankkillerDisable0-1" + "classname" "logic_relay" + "StartDisabled" "1" } - insert: + delete: { - "OnUser2" "Vehicle_Fake_Truck_Hurt,Kill,,,1" - "OnUser2" "Vehicle_Fake_Truck_teleport,Kill,,,1" - "OnUser2" "Vehicle_Fake_Truck_Tracktrain1_tankkiller,Kill,,,1" + "hasparent" "0" } } -; Fix early triggering nuke on stage 4. modify: { match: { - "classname" "logic_case" - "targetname" "stage_4_part_5_case_controller" + "hasparent" "1" } - insert: + delete: { - "OnCase03" "stage_4_part_5_trigger,Enable,,20,1" + "hasparent" "1" } } +; Fix "ModifySpeed" outputs. modify: { match: { - "classname" "trigger_once" - "targetname" "stage_4_part_5_trigger" - } - replace: - { - "StartDisabled" "1" + "classname" "func_physbox_multiplayer" + "targetname" "Zombie_Item_Predator_Health" } - insert: + delete: { - "OnTrigger" "stage_4_trigger_end,Enable,,20,1" + "OnBreak" "zombie_predatorAddOutputOnUser4 Global_Speed:ModifySpeed:0:0:10-1" + "OnBreak" "zombie_predatorFireUser40.01-1" } } -;Not necessary since the trigger was remade -;modify: -;{ -; match: -; { -; "classname" "trigger_once" -; "targetname" "stage_4_trigger_end" -; } -; replace: -; { -; "StartDisabled" "1" -; } -; insert: -; { -; "OnTrigger" "stage_4_end_button*,Unlock,,,1" -; "OnTrigger" "stage_4_end_button_protection,AddOutput,OnDamaged !self:FireUser1:::1,,1" -; } -;} - -; Fix a huge skip in stage 4 involving jumping from plane's wing. -add: -{ - "classname" "func_reflective_glass" - "targetname" "stage_4_custombrush1" - "spawnflags" "2" - "origin" "-2944 -4416 5344" - "Solidity" "2" - "solidbsp" "1" -} - -; Fix stage 4 train early trigger. modify: { match: { - "classname" "weapon_glock" - "targetname" "NPC_Train_Driver_Weapon" + "classname" "env_entity_maker" + "targetname" "Zombie_Item_Predator_Suicide_Maker" } delete: { - "OnPlayerPickup" "NPC_Train_Driver_AreaFireUser101" + "OnEntitySpawned" "zombie_predatorFireUser40.01-1" + "OnEntitySpawned" "zombie_predatorAddOutputOnUser4 Global_Speed:ModifySpeed:0:0:10-1" } } @@ -2300,73 +5732,81 @@ modify: { match: { - "classname" "path_track" - "targetname" "Vehicle_Fake_Truck_Path_Track_5" + "classname" "func_physbox_multiplayer" + "targetname" "Human_Item_Mech_Body" + } + delete: + { + "OnBreak" "human_mechAddOutputOnUser1 Global_Speed:ModifySpeed:0:0:10-1" + "OnBreak" "human_mechAddOutputOnUser1 Global_Speed:ModifySpeed:1:1.7:10-1" } insert: { - "OnPass" "NPC_Train_Driver_Area,FireUser1,,,1" + "OnBreak" "human_mechRunScriptCodeEntFireByHandle(Entities.FindByName(null, _.Global_Speed), _.ModifySpeed, (1).tostring(), -1, self, null);1" } } -; Try a better system for "Train Driver" item holder slowdown on stage 4. modify: { match: { "classname" "trigger_multiple" - "targetname" "NPC_Train_Driver_Weapon_Slower" - } - replace: - { - "wait" ".01" + "targetname" "/stage_5_Trap_Gravity_Trigger([3-4]|)/" } delete: { - "OnTrigger" "Global_SpeedModifySpeed10.95-1" - "OnTrigger" "Global_SpeedModifySpeed0.80-1" + "OnStartTouch" "Global_SpeedModifySpeed1.1510-1" } insert: { - "OnStartTouch" "Global_Speed,ModifySpeed,.8,,-1" - "OnEndTouch" "Global_Speed,ModifySpeed,1,,-1" + "OnStartTouch" "Global_Speed,ModifySpeed,1,10,-1" } } -; Part of the above fix, but wanted to take a second here and admire the beautiful targetname. +; Fix weapon item buttons not rotating. modify: { match: { - "classname" "func_physbox_multiplayer" - "targetname" "CSGOFUCKFIX" + "classname" "func_button" + "targetname" "/Weapon_(Thundergun_Game|((M(utator|60|ine)|Tur(ret|bo_Device))|Inmunizer|PortalGun|Gauss|ZeroGravity|Extra_(Inmunizer|Unlimmited))_)UI/" + "spawnflags" "19457" } - delete: + replace: + { + "spawnflags" "3073" + } +} + +modify: +{ + match: { - "OnUser3" "NPC_Train_Driver_Weapon_SlowerKill0-1" + "classname" "func_button" + "targetname" "Weapon_Turret_Deployed_Button" + "spawnflags" "17409" } - insert: + replace: { - "OnUser3" "NPC_Train_Driver_Weapon_Slower,Disable,,,1" - "OnUser3" "NPC_Train_Driver_Weapon_Slower,Kill,,1,1" + "spawnflags" "1025" } } -; Replace "AddOutput basevelocity" inputs with "SetVelocity". +; Fix "Alma" item being able to be triggered when no human is inside her zone. modify: { match: { "classname" "trigger_multiple" - "targetname" "Zombie_Item_Alma_Attack_Hurt" + "targetname" "Zombie_Item_Alma_Detector" } delete: { - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" + "OnStartTouch" "Zombie_Item_Alma_RelayEnable0-1" } insert: { - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" + "OnStartTouchAll" "Zombie_Item_Alma_Relay,Enable,,,-1" } } @@ -2374,61 +5814,49 @@ modify: { match: { - "classname" "trigger_multiple" - "targetname" "Weapon_ZeroGravity_Projectile_Trigger" + "classname" "logic_relay" + "targetname" "Zombie_Item_Alma_Relay" } delete: { - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 -4900.07-1" - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" - } - insert: - { - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, -490));.5-1" + "OnTrigger" "!selfDisable0-1" + "OnTrigger" "!selfEnable15-1" } } +; Fix "Alma" item reverting humans back to wrong speed if they didn't die. modify: { match: { - "classname" "logic_case" - "targetname" "Zombie_Item_Boss_Attack_Case" + "classname" "trigger_multiple" + "targetname" "Zombie_Item_Alma_Attack_Hurt" } delete: { - "OnCase03" "!activatorAddOutputbasevelocity 0 0 3000-1" - "OnCase13" "!activatorAddOutputbasevelocity 0 0 4000-1" + "OnStartTouch" "Global_SpeedModifySpeed1.155-1" } insert: { - "OnCase03" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 300));-1" - "OnCase13" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 400));-1" + "OnStartTouch" "Global_Speed,ModifySpeed,1,5,-1" } } -filter: -{ - "classname" "filter_activator_team" - "targetname" "team_filter_push_up" -} - +; Fix stage 3 boss not being able to attack after being defeated, replace "movetype" inputs with speedmod, adjust some timings, fix "Boss" item animations, carry some outputs from "path_track" to here and don't lose the round if "Boss" item user disconnects. modify: { match: { - "classname" "logic_case" - "targetname" "Zombie_Item_Boss_Attack_Case" + "classname" "weapon_knife" + "targetname" "Zombie_Item_Boss_Knife" } delete: { - "OnCase13" "playerAddOutputOnUser1 team_filter_push_up:TestActivator::0:10-1" - "OnCase13" "playerFireUser10.8-1" + "OnPlayerPickup" "!activatorSetDamageFilter0-1" } insert: { - "OnCase13" "playerRunScriptCodeif (self.GetTeam() == 3 && self.GetHealth()) self.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 1000));.8-1" + "OnPlayerPickup" "!activator,SetDamageFilter,filter_no_humans,,1" } } @@ -2437,17 +5865,11 @@ modify: match: { "classname" "trigger_multiple" - "targetname" "Zombie_Item_Boss_Gravity" - } - delete: - { - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 -4700.07-1" - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" + "targetname" "Zombie_Item_Boss_Trigger_Attack" } - insert: + replace: { - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, -470));.5-1" + "wait" "1e30" } } @@ -2455,16 +5877,31 @@ modify: { match: { - "classname" "logic_compare" - "targetname" "Zombie_Item_Predator_Jump" + "classname" "logic_relay" + "targetname" "Zombie_Item_Boss_Normal_Transformation" } delete: { - "OnLessThan" "!activatorAddOutputbasevelocity 0 0 5000-1" + "OnTrigger" "!activatorAddOutputgravity 0.43-1" + "OnTrigger" "Global_SpeedModifySpeed2.55-1" + "OnTrigger" "Global_SpeedModifySpeed00-1" + "OnTrigger" "Zombie_Item_Boss_Attack_SelectorDisable39-1" + "OnTrigger" "Zombie_Item_Boss_Attack_CaseFireUser438-1" + "OnTrigger" "!activatorAddOutputmovetype 00-1" + "OnTrigger" "!activatorAddOutputmovetype 25-1" } insert: { - "OnLessThan" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" + "OnTrigger" "zombie_boss,AddOutput,gravity .4,5,1" + "OnTrigger" "Global_Speed,ModifySpeed,0,,1" + "OnTrigger" "Global_Speed,ModifySpeed,2.5,5,1" + "OnTrigger" "Zombie_Item_Boss_Normal_UI,Kill,,40,1" + "OnTrigger" "Zombie_Item_Boss_Attack_Selector,Kill,,40,1" + "OnTrigger" "Zombie_Item_Boss_Attack_Case,Kill,,40,1" + "OnTrigger" "Zombie_Item_Boss_Attack_Selected,Kill,,40,1" + "OnTrigger" "Zombie_Item_Boss_Attack_Selected,HideHudHint,,40,1" + "OnTrigger" "Zombie_Item_Boss_Trigger_Attack,Kill,,40,1" + "OnTrigger" "Zombie_Item_Boss_CanDieRunScriptCodeif (!Entities.FindByName(null, _.zombie_boss)) EntFireByHandle(self, _.Enable, __, -1, null, null);42.981" } } @@ -2472,79 +5909,123 @@ modify: { match: { - "classname" "trigger_multiple" - "targetname" "/stage_5_Trap_Gravity_Trigger([3-4]|)/" + "classname" "logic_relay" + "targetname" "Zombie_Item_Boss_CanDie" + } + replace: + { + "spawnflags" "0" } delete: { - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" + "OnTrigger" "Global_GameText_AnnouncementRunScriptCodesetMessage(21)0-1" + "OnTrigger" "Global_SpeedModifySpeed00-1" + "OnTrigger" "Global_SpeedModifySpeed214-1" + "OnTrigger" "Zombie_Item_Boss_Morphed_ModelSetDefaultAnimationrun9-1" + "OnTrigger" "Zombie_Item_Boss_Morphed_ModelFireUser17-1" + "OnTrigger" "zombie_bossAddOutputmovetype 00-1" + "OnTrigger" "zombie_bossAddOutputmovetype 214-1" + "OnTrigger" "zombie_bossRunScriptCodeforeach(k,_ in {Global_Speed_suppress=1}){foreach(v,__ in {ModifySpeed=1}){EntFire(k, v, '0'.tochar(), 0.0, self);}}0.11" + "OnTrigger" "zombie_bossRunScriptCodeforeach(k,_ in {Global_Speed_suppress=1}){foreach(v,__ in {ModifySpeed=1}){EntFire(k, v, '0'.tochar(), 0.0, self);}}13.91" } insert: { - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" + "OnTrigger" "Global_Speed_suppress,ModifySpeed,0,,1" + "OnTrigger" "!self,Kill,,,1" + "OnTrigger" "!selfRunScriptCodeEntFireByHandle(self, _.FireUser + (Entities.FindByName(null, _.zombie_boss) ? 1 : 2), __, -1, null, null);1" + "OnUser1" "Global_GameText_AnnouncementRunScriptCodesetMessage(21);1" + "OnUser2" "Global_GameText_Announcement,SetText,** HE HAS LEFT! GO GO ESCAPE FROM THE LAB! **,,1" + "OnTrigger" "Zombie_Item_Boss_Morphed_Model,SetDefaultAnimation,run,13,1" + "OnTrigger" "Zombie_Item_Boss_Morphed_Model,FireUser1,,13,1" + "OnTrigger" "zombie_boss,AddOutput,movetype 2,15,1" + "OnTrigger" "Global_Speed,ModifySpeed,2,15,1" + "OnTrigger" "Global_Speed_suppress,ModifySpeed,1,15,1" } } +filter: +{ + "classname" "trigger_once" + "targetname" "stage_3_end_teleport" +} + +filter: +{ + "classname" "filter_multi" + "targetname" "filter_no_boss_all_humans" +} + modify: { match: { - "classname" "trigger_multiple" - "targetname" "/stage_2_trigger_minifier_room_[1-2]/" + "classname" "path_track" + "targetname" "stage_x_end_vehicle_escape_track_1" } delete: { - "OnTrigger" "!activatorAddOutputbasevelocity 0 0 8000-1" + "OnPass" "zombie_bossFireUser40.1-1" + "OnPass" "Global_GameText_AnnouncementRunScriptCodesetMessage(21)0-1" + "OnPass" "zombie_bossAddOutputOnUser4 Global_Speed:ModifySpeed:0::10-1" + "OnPass" "zombie_bossAddOutputOnUser4 Global_Speed:ModifySpeed:1.7:14:10-1" + "OnPass" "Global_GameText_AnnouncementFireUser40-1" + "OnPass" "Zombie_Item_Boss_Morphed_ModelSetPlaybackRate00.1-1" + "OnPass" "Zombie_Item_Boss_Morphed_ModelSetPlaybackRate112.1-1" + "OnPass" "Zombie_Item_Boss_Attack_CaseAddOutputtargetname Zombie_Item_Boss_Attack_Deactivated0-1" + "OnPass" "Zombie_Item_Boss_Attack_DeactivatedAddOutputtargetname Zombie_Item_Boss_Attack_Case13-1" + "OnPass" "zombie_bossAddOutputmovetype 00-1" + "OnPass" "zombie_bossAddOutputmovetype 214-1" + "OnPass" "playerSetDamageFilter0.11" } insert: { - "OnTrigger" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 800));-1" + "OnPass" "zombie_boss,AddOutput,movetype 0,,1" + "OnPass" "playerRunScriptCodeif (self.GetTeam() == 3 && self.GetHealth()) EntFireByHandle(self, _.SetDamageFilter, __, -1, null, null);1" + "OnPass" "map1manager1RunScriptCodebIsStage3Boss = false;1" + "OnPass" "playerRunScriptCodeif (self.GetTeam() == 2 && self.GetName() != _.zombie_boss && self.GetHealth()) self.SetAbsOrigin(Vector(716, 1908, 1443));1" } } +; Make "Boss" item breakable type "None", humans aren't metal. modify: { match: { - "classname" "trigger_hurt" - "targetname" "Spawn_Nuke_Hurt" - } - delete: - { - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000-1" + "classname" "func_physbox_multiplayer" + "targetname" "Zombie_Item_Boss_Super_Health" } - insert: + replace: { - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" + "material" "10" } } +; Show them how a real nothing filter is done. modify: { match: { - "classname" "trigger_multiple" - "targetname" "stage_5_last_man_trigger_core_end_bad" + "classname" "filter_activator_name" + "targetname" "filter_nothing" } - delete: + replace: { - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 -4850.07-1" - "OnStartTouch" "!activatorAddOutputbasevelocity 0 0 5000.05-1" + "classname" "filter_base" + "Negated" "1" } - insert: + delete: { - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, 500));-1" - "OnStartTouch" "!activatorRunScriptCodeself.SetVelocity(Vector(self.GetVelocity().x, self.GetVelocity().y, -485));.5-1" + "filtername" "nothing_etc" + "OnFail" "!activatorSetHealth-10-1" } } -; Fix broken music in stage 5 "Solo Ending". modify: { match: { "classname" "logic_relay" - "targetname" "stage_5_extreme_relay" + "targetname" "stage5_zmratio" } replace: { @@ -2552,66 +6033,56 @@ modify: } delete: { - "OnTrigger" "music_master_ambient_exAddOutputmusic/extreme_new_new/e_stage_5_end_good_2_extra.mp30.11" + "vscripts" "hichatu/alternatezratio.nut" + "OnTrigger" "consoleCommandzr_infect_mzombie_ratio 221" + "OnTrigger" "!selfRunScriptCode//AlternateRatioSystem() - Stripper if needed21" + "OnTrigger" "stage5_zmhpsetterEnable201" } insert: { - "OnTrigger" "music_master_ambient_ex,AddOutput,message music/extreme_new_new/e_stage_5_end_good_2_extra.mp3,.01,1" + "OnTrigger" "console,Command,zr_infect_mzombie_ratio 2,,1" } } -; Fix "Antlion" item user being able to exploit on stage 5. -add: +filter: { - "classname" "trigger_multiple" - "targetname" "stage_5_liftteleport1" - "origin" "4592 -4600 10904" - "spawnflags" "1" - "model" "*33" - "filtername" "team_filter_zombies" - "wait" ".01" - "OnStartTouch" "!activator,SetLocalOrigin,4688 -2032 11184,,-1" + "classname" "logic_relay" + "targetname" "stage5_zmhpsetter" } modify: { match: { - "classname" "filter_activator_team" - "targetname" "stage_5_core_column_end_button_blue" + "classname" "logic_relay" + "targetname" "Stage_Start_Stage_5" } insert: { - "OnUser1" "stage_5_liftteleport1,Kill,,3,1" + "OnTrigger" "map1manager1RunScriptCodebDidZombiesSpawnOnStage5 = true;201" + "OnTrigger" "game_playerdie,AddOutput,OnUse map1manager1:CallScriptFunction:DiedOnStage5::-1,20,1" } } -; Fix stage 5 hint entity getting killed early and not showing rest of the texts. -modify: +; Handle it in a think function. +filter: { - match: - { - "classname" "logic_relay" - "targetname" "stage_5_core_hit_relay" - } - delete: - { - "OnUser4" "stage_5_end_hintKill01" - } + "classname" "logic_timer" + "targetname" "stage5_zmhpsetter" } -; Fix weapon item buttons not rotating properly +; Fix early triggering nuke on stage 4. modify: { match: { - "classname" "func_button" - "targetname" "/Weapon_(Thundergun_Game|((M(utator|60|ine)|Tur(ret|bo_Device))|Inmunizer|PortalGun|Gauss|ZeroGravity|Extra_(Inmunizer|Unlimmited))_)UI/" - "spawnflags" "19457" + "classname" "logic_case" + "targetname" "stage_4_part_5_case_controller" } - replace: + insert: { - "spawnflags" "3073" + "OnCase03" "stage_4_part_5_trigger,Enable,,20,1" + "OnCase03" "stage_4_end_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1201" } } @@ -2619,82 +6090,111 @@ modify: { match: { - "classname" "func_button" - "targetname" "Weapon_Turret_Deployed_Button" - "spawnflags" "17409" + "classname" "trigger_once" + "targetname" "stage_4_part_5_trigger" } replace: { - "spawnflags" "1025" + "StartDisabled" "1" + } + insert: + { + "OnTrigger" "stage_4_trigger_end,Enable,,10,1" + "OnTrigger" "stage_4_end_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }601" } } - -; OLD CHANGES THAT WERE FORGOTTON ABOUT LIKE THE COINS YOU HAVE DOWN THE SIDE OF THE SOFA -; WORKS FINE OFFLINE I THINK - -; Reduce stage 2 car generator movelinear speed slightly. +; Move stage 4 end trigger back some units so it no longer sticks out of the wall. modify: { match: { - "classname" "func_movelinear" - "targetname" "Spawn_Phy_Car_Generator_Movelinear" + "classname" "trigger_once" + "targetname" "stage_4_trigger_end" } replace: { - "speed" "1900" + "origin" "11408 -9200 3504" + "StartDisabled" "1" + } + insert: + { + "OnTrigger" "stage_4_end_button*,Unlock,,,1" + "OnTrigger" "stage_4_end_button_protection,AddOutput,OnDamaged !self:FireUser1:::1,,1" + "OnTrigger" "stage_4_end_buttonRunScriptCodefunction InputUse() { local iTeam = activator.GetTeam(); if (iTeam == 2) EntFire(_.ZOMBIESTRIGGERED, _.Trigger); return iTeam == 3; }1" } } -; Remove missing sounds to prevent le linux server lag +; Fix skipping over the oil tank in stage 4. modify: { match: { - "unlocked_sound" "7" + "classname" "trigger_multiple" + "targetname" "stage_4_teleport" } replace: { - "unlocked_sound" "0" + "origin" "4260 -707.5 5184" + "wait" "1e30" + } + delete: + { + "model" "*715" } } + +; Kill the door on stage 4 when "Ultralisk" passes. modify: { match: { - "soundopenoverride" "Doors.CombineGate_citizen_stop2" + "classname" "path_track" + "targetname" "stage_x_ultralistk_path_5" } - delete: + insert: { - "soundopenoverride" "Doors.CombineGate_citizen_stop2" + "OnPass" "stage_4_part_6_door_1,Kill,,5,1" } } + +; Fix a huge skip in stage 4 involving jumping from plane's wing. +add: +{ + "classname" "func_reflective_glass" + "targetname" "stage_4_custombrush1" + "spawnflags" "2" + "origin" "-2944 -4416 5344" + "Solidity" "2" + "solidbsp" "1" +} + +; Make this door open to the other side. modify: { match: { - "soundcloseoverride" "Doors.CombineGate_citizen_stop2" + "classname" "prop_door_rotating" + "targetname" "stage_4_part_5_door_2" } - delete: + replace: { - "soundcloseoverride" "Doors.CombineGate_citizen_stop2" + "spawnflags" "2048" } } -; Make sure stage 5 door can only be selected to open if its event is unlocked, fix buttons and make "Tank" vehicle only spawn when button is pressed and make it human only for the first 10 seconds. +; Make stage 1 barrels not break the incorrect walls. modify: { match: { - "classname" "logic_case" - "targetname" "stage_5_lower_door_case" + "classname" "prop_physics" + "targetname" "stage_1_end_explosion_barrel_2" } delete: { - "OnCase01" "stage_5_lower_door_relay_reinforcements_1Trigger0-1" - "OnCase02" "stage_5_lower_door_relay_reinforcements_5Trigger0-1" - "OnCase03" "stage_5_lower_door_relay_reinforcements_7Trigger0-1" + "OnBreak" "stage_4_part_4_doorBreak0-1" + "OnPlayerUse" "stage_1_wall_way2Break0-1" } } @@ -2702,26 +6202,31 @@ modify: { match: { - "classname" "logic_relay" - "targetname" "/stage_5_lower_door_relay_reinforcements_(1|5|7)/" + "classname" "prop_physics" + "targetname" "stage_1_end_explosion_barrel" } - replace: + delete: { - "StartDisabled" "0" + "OnPlayerUse" "stage_x_end_door_breakableBreak0-1" + "OnBreak" "stage_4_part_4_doorBreak0-1" + } + insert: + { + "OnBreak" "stage_x_end_door_breakable,Break,,,1" } } -; Kill stage 5 door relays when pressed. +; Fix stage 4 train early trigger. modify: { match: { - "classname" "logic_relay" - "targetname" "stage_5_west_survivors_tr" + "classname" "weapon_glock" + "targetname" "NPC_Train_Driver_Weapon" } - replace: + delete: { - "spawnflags" "1" + "OnPlayerPickup" "NPC_Train_Driver_AreaFireUser101" } } @@ -2729,59 +6234,54 @@ modify: { match: { - "classname" "logic_case" - "targetname" "Case_Events_Stage_5" - "origin" "-4256 11256 -8552" - } - delete: - { - "OnCase13" "stage_5_lower_door_relay_reinforcements_1Enable21" + "classname" "path_track" + "targetname" "Vehicle_Fake_Truck_Path_Track_5" } insert: { - "OnCase13" "stage_5_lower_door_case,AddOutput,OnCase01 stage_5_lower_door_relay_reinforcements_1:Trigger:::1,,1" + "OnPass" "NPC_Train_Driver_Area,FireUser1,,,1" } } +; Try a better system for "Train Driver" item holder slowdown on stage 4. modify: { match: { - "classname" "func_button" - "targetname" "/stage_5_lower_door_button_(1|5)/" + "classname" "trigger_multiple" + "targetname" "NPC_Train_Driver_Weapon_Slower" } replace: { - "spawnflags" "3073" + "wait" "1e30" + } + delete: + { + "OnTrigger" "Global_SpeedModifySpeed10.95-1" + "OnTrigger" "Global_SpeedModifySpeed0.80-1" + } + insert: + { + "OnStartTouch" "Global_Speed,ModifySpeed,.8,,-1" + "OnEndTouch" "Global_Speed,ModifySpeed,1,,-1" } } +; Part of the above fix, but wanted to take a second here and admire the beautiful targetname. modify: { match: { - "classname" "logic_case" - "targetname" "Case_Events_Stage_5" - "origin" "-4272 11224 -8552" + "classname" "func_physbox_multiplayer" + "targetname" "CSGOFUCKFIX" } delete: { - "OnCase01" "stage_x_lower_door_5AddOutputOnFullyOpen Spawn_Tank_Teleport_stage_5:Teleport::0:121" - "OnCase01" "stage_x_lower_door_5AddOutputOnFullyOpen v_model1:EnableMotion::0.1:121" - "OnCase01" "stage_x_lower_door_5AddOutputOnFullyOpen v_model1:DisableMotion::2:121" - "OnCase04" "stage_5_lower_door_relay_reinforcements_5Enable21" - "OnCase07" "stage_5_lower_door_relay_reinforcements_7Enable21" + "OnUser3" "NPC_Train_Driver_Weapon_SlowerKill0-1" } insert: { - "OnCase01" "stage_5_lower_door_button_5AddOutputOnPressed Spawn_Tank_Teleport_stage_5:Teleport::0:11" - "OnCase01" "stage_5_lower_door_button_5AddOutputOnPressed v_button1:RunScriptCode:function InputUse() { return false; }:0:11" - "OnCase01" "stage_5_lower_door_button_5AddOutputOnPressed v_model1:EnableMotion::0.1:11" - "OnCase01" "stage_5_lower_door_button_5AddOutputOnPressed v_model1:DisableMotion::2:11" - "OnCase01" "stage_5_lower_door_button_5AddOutputOnPressed v_button1:RunScriptCode:function InputUse() { return activator.GetTeam() == 3; }:2:11" - "OnCase01" "stage_5_lower_door_button_5AddOutputOnPressed v_button1:RunScriptCode:delete InputUse;:10:11" - "OnCase04" "stage_5_lower_door_caseAddOutputOnCase02 stage_5_lower_door_relay_reinforcements_5:Trigger::0:11" - "OnCase07" "stage_5_lower_door_caseAddOutputOnCase03 stage_5_lower_door_relay_reinforcements_7:Trigger::0:11" + "OnUser3" "NPC_Train_Driver_Weapon_Slower,Disable,,,1" + "OnUser3" "NPC_Train_Driver_Weapon_Slower,Kill,,1,1" } } - diff --git a/vscripts/lms1main1.nut b/vscripts/lms1main1.nut new file mode 100644 index 00000000..68d59d44 --- /dev/null +++ b/vscripts/lms1main1.nut @@ -0,0 +1,708 @@ +// By Berke "STEAM_0:0:95142811" + +::strTemplateWildcard <- "&*", +::hManagerScriptScope <- this, hMapEntities <- array(3), UserIDQueuePlayers <- array(0), hPlayers <- array(0), SavedPlayerInfos <- array(0), ::bIsStage3Boss <- false, bDidZombiesSpawnOnStage5 <- false, bShouldTrackZombieDamage <- true, +CurrentPlayerInfos <- +{ + hPlayer = null, + iUserID = 0 +}, +::__ <- " ", +::_ <- delegate +{ + function _get(strKey) + { + return strKey; + } +} +: {}; + +local hEventListener; + +while (hEventListener = Entities.FindByName(hEventListener, "map1eventlistener*")) +{ + hEventListener.__KeyValueFromString("classname", "info_ladder"); + + local strEventName = "Player"; + + switch (hEventListener.GetName().slice(17).tointeger()) + { + case 1: + { + strEventName += "Connect"; + + break; + } + + case 2: + { + strEventName += "Activate"; + + break; + } + + case 3: + { + strEventName += "Say"; + + break; + } + + case 4: + { + strEventName += "Info"; + + break; + } + + case 5: + { + strEventName += "Disconnect"; + + break; + } + + case 6: + strEventName += "ZombieHurt"; + } + + hEventListener.__KeyValueFromString("targetname", ""); + + hEventListener.ValidateScriptScope(); + + local hScriptScope = hEventListener.GetScriptScope(); + + hScriptScope.strEventName <- strEventName; + + delegate + { + function _newslot(strKey, Values) + { + hManagerScriptScope[strEventName](Values); + } + } + : hScriptScope; +} + +EntFireByHandle(self, "FireUser1", "", -1, null, null); + +function RoundSpawn() +{ + hMapEntities = array(3), bIsStage3Boss = false, bDidZombiesSpawnOnStage5 = false, bShouldTrackZombieDamage = true, CurrentPlayerInfos.hPlayer = null, CurrentPlayerInfos.iUserID = 0; + + UserIDQueuePlayers.clear(); + + local hEventListener; + + while (hEventListener = Entities.FindByName(hEventListener, "map1eventlistener*")) + hEventListener.Destroy(); + + foreach (SavedPlayerInfo in SavedPlayerInfos) + SavedPlayerInfo.iStage5Damage = 0; +} + +function Think() +{ + if (UserIDQueuePlayers.len()) + { + local UserIDQueuePlayerFirst = UserIDQueuePlayers.remove(0), hUserIDQueuePlayerFirst = UserIDQueuePlayerFirst.hPlayer; + + CurrentPlayerInfos.hPlayer = hUserIDQueuePlayerFirst, CurrentPlayerInfos.iUserID = UserIDQueuePlayerFirst.iUserID; + + EntFireByHandle(GetUserIDEventGenerator(), "GenerateGameEvent", "", -1, hUserIDQueuePlayerFirst, null); + } + + if (bDidZombiesSpawnOnStage5) + foreach (hPlayer in hPlayers) + if (hPlayer.GetTeam() == 2) + { + if (hPlayer.GetName().find("zombie_") == 0) + { + if (hPlayer.GetHealth() > 1200) + hPlayer.SetHealth(1200); + } + + else if (hPlayer.GetHealth() > 900) + hPlayer.SetHealth(900); + } + + return -1; +} + +function PlayerConnect(EventData) +{ + local strSteamID = EventData.networkid; + + if (strSteamID == "BOT") + SavedPlayerInfos.push( + { + hPlayer = null, + strName = EventData.name, + iUserID = EventData.userid, + strSteamID = "", + iCompletedEvents = 0, + iStage5Damage = 0, + bIsSoloBanned = false + }); + + else + { + strSteamID = strSteamID.slice(8); + + local bIsPlayerInfoUnsaved = true; + + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.strSteamID == strSteamID) + { + SavedPlayerInfo.strName = EventData.name, SavedPlayerInfo.iUserID = EventData.userid, bIsPlayerInfoUnsaved = false; + + break; + } + + if (bIsPlayerInfoUnsaved) + SavedPlayerInfos.push( + { + hPlayer = null, + strName = EventData.name, + iUserID = EventData.userid, + strSteamID = strSteamID, + iCompletedEvents = 0, + iStage5Damage = 0, + bIsSoloBanned = false + }); + } +} + +function PlayerActivate(EventData) +{ + local hPlayer, bIsPlayerUnsaved = false; + + while (hPlayer = Entities.FindByClassname(hPlayer, "player")) + { + bIsPlayerUnsaved = true; + + foreach (hStoredPlayer in hPlayers) + if (hPlayer == hStoredPlayer) + { + bIsPlayerUnsaved = false; + + break; + } + + if (bIsPlayerUnsaved) + { + hPlayers.push(hPlayer); + + break; + } + } + + if (!bIsPlayerUnsaved) + { + hPlayer = null; + + while (hPlayer = Entities.FindByClassname(hPlayer, "cs_bot")) + { + bIsPlayerUnsaved = true; + + foreach (hStoredPlayer in hPlayers) + if (hPlayer == hStoredPlayer) + { + bIsPlayerUnsaved = false; + + break; + } + + if (bIsPlayerUnsaved) + { + hPlayers.push(hPlayer); + + break; + } + } + } + + local iUserID = EventData.userid, bIsPlayerUnregistered = true; + + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.iUserID == iUserID) + { + bIsPlayerUnregistered = false; + + break; + } + + if (bIsPlayerUnregistered) + SavedPlayerInfos.push( + { + hPlayer = null, + strName = "", + iUserID = EventData.userid, + strSteamID = "", + iCompletedEvents = 0, + iStage5Damage = 0, + bIsSoloBanned = false + }); + + bIsPlayerUnregistered = true; + + foreach (hPlayer in hPlayers) + { + bIsPlayerUnregistered = true; + + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.hPlayer == hPlayer) + { + bIsPlayerUnregistered = false; + + break; + } + + if (bIsPlayerUnregistered) + { + UserIDQueuePlayers.push( + { + hPlayer = hPlayer, + iUserID = EventData.userid + }); + + break; + } + } +} + +function PlayerSay(EventData) +{ + if (rstrip(EventData.text).tolower() == "!showmapstats") + { + local iUserID = EventData.userid; + + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.iUserID == iUserID) + { + local hPlayer = SavedPlayerInfo.hPlayer; + + if (hPlayer) + { + local strText = "Completed events: " + SavedPlayerInfo.iCompletedEvents; + + if (bDidZombiesSpawnOnStage5 && bShouldTrackZombieDamage && hPlayer.GetTeam() == 3 && hPlayer.GetHealth()) + strText += "\\nStage 5 damage: " + SavedPlayerInfo.iStage5Damage; + + PrintStatsText(hPlayer, strText); + } + + break; + } + } +} + +function PlayerInfo(EventData) +{ + if (CurrentPlayerInfos.iUserID) + { + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.iUserID == CurrentPlayerInfos.iUserID) + { + SavedPlayerInfo.hPlayer = CurrentPlayerInfos.hPlayer; + + break; + } + + if (!UserIDQueuePlayers.len()) + CurrentPlayerInfos.hPlayer = null, CurrentPlayerInfos.iUserID = 0; + } +} + +function PlayerDisconnect(EventData) +{ + RemoveDisconnectPlayer(); + + EntFireByHandle(self, "CallScriptFunction", "RemoveDisconnectPlayer", -1, null, null); + + local iUserID = EventData.userid; + + foreach (iOrder, UserIDQueuePlayer in UserIDQueuePlayers) + if (UserIDQueuePlayer.iUserID == iUserID) + { + UserIDQueuePlayers.remove(iOrder); + + break; + } + + foreach (iOrder, SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.iUserID == iUserID) + { + if (SavedPlayerInfo.strSteamID == "") + SavedPlayerInfos.remove(iOrder); + + else + SavedPlayerInfo.strName = "", SavedPlayerInfo.iUserID = 0, SavedPlayerInfo.hPlayer = null; + + break; + } +} + +function RemoveDisconnectPlayer() +{ + foreach (iOrder, hPlayer in hPlayers) + if (!hPlayer.IsValid()) + { + hPlayers.remove(iOrder); + + break; + } +} + +function PlayerZombieHurt(EventData) +{ + if (bDidZombiesSpawnOnStage5 && bShouldTrackZombieDamage) + { + local iAttackerUserID = EventData.attacker; + + if (iAttackerUserID) + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.iUserID == iAttackerUserID) + { + local hPlayer = SavedPlayerInfo.hPlayer; + + if (hPlayer && hPlayer.GetTeam() == 3) + { + local flOrigin = hPlayer.GetOrigin(), flOriginX = flOrigin.x, flOriginY = flOrigin.y; + + if (flOriginX >= -1024 && flOriginX <= 10240 && flOriginY >= -10240 && flOriginY <= 1024) + { + local strName = hPlayer.GetName(); + + SavedPlayerInfo.iStage5Damage += strName == "human_mech" || strName == "driver1" ? EventData.dmg_health / 25 : EventData.dmg_health; + } + } + + break; + } + } +} + +function PlayerCompletedEvent(Player = "") +{ + Player = (activator ? activator.GetClassname() == "player" : false) ? activator : Entities.FindByName(null, Player); + + if (Player && Player.GetTeam() == 3) + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.hPlayer == Player) + { + SavedPlayerInfo.iCompletedEvents++; + + PrintStatsText(Player, "You have completed an event!\\nCompleted events: " + SavedPlayerInfo.iCompletedEvents); + + break; + } +} + +function DiedOnStage5() +{ + if (activator.IsValid() && activator.GetTeam() == 3) + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.hPlayer == activator) + { + if (bShouldTrackZombieDamage) + SavedPlayerInfo.iStage5Damage = 0; + + break; + } +} + +function StopTrackingZombieDamage() +{ + bShouldTrackZombieDamage = false; + + foreach (SavedPlayerInfo in SavedPlayerInfos) + SavedPlayerInfo.iStage5Damage = 0; +} + +function Stage5Ended() +{ + foreach (SavedPlayerInfo in SavedPlayerInfos) + SavedPlayerInfo.iCompletedEvents = 0, SavedPlayerInfo.bIsSoloBanned = false; +} + +function PrintStatsText(hPlayer, strText) +{ + local hStatsText = GetStatsText(); + + EntFireByHandle(hStatsText, "AddOutput", "spawnflags " + (hPlayer ? 0 : 1), -1, null, null); + + EntFireByHandle(hStatsText, "RunScriptCode", "self.__KeyValueFromString(\"message\", \"" + strText + "\");", -1, null, null); + + EntFireByHandle(hStatsText, "Display", "", -1, hPlayer, null); +} + +function CheckKnifeStrip(iItemType = 0) +{ + if (iItemType == 2 ? true : (iItemType ? (activator.GetTeam() == 3 ? true : false) : (activator.GetTeam() == 2 && activator.GetName().find("zombie_") != 0 ? true : false))) + for (local hKnife = activator.FirstMoveChild(); hKnife; hKnife = hKnife.NextMovePeer()) + if (hKnife.GetClassname() == "weapon_knife") + { + if (!hKnife.FirstMoveChild()) + hKnife.Destroy(); + + break; + } +} + +function TakeDamage(iDamage, iDamageType, strKillIcon = "Default", Killer = "Owner") +{ + if (typeof Killer == "string") + Killer = Killer == "Owner" ? caller.GetMoveParent().GetOwner() : Entities.FindByName(null, Killer); + + if (!Killer || activator.GetTeam() == Killer.GetTeam()) + { + local iNewHealth = activator.GetHealth() - iDamage; + + EntFireByHandle(activator, "SetHealth", iNewHealth < 0 ? "0" : iNewHealth.tostring(), -1, null, null); + } + + else + { + local hTakeDamageEntity = GetTakeDamageEntity(); + + EntFireByHandle(hTakeDamageEntity, "AddOutput", "Damage " + iDamage, -1, null, null); + + EntFireByHandle(hTakeDamageEntity, "AddOutput", "DamageType " + iDamageType, -1, null, null); + + if (strKillIcon == "Default") + strKillIcon = "point_hurt"; + + EntFireByHandle(hTakeDamageEntity, "AddOutput", "classname " + strKillIcon, -1, null, null); + + local strOldTargetName = activator.GetName(); + + EntFireByHandle(activator, "AddOutput", "targetname map1takedamagevictim1", -1, null, null); + + EntFireByHandle(hTakeDamageEntity, "Hurt", "", -1, Killer, null); + + EntFireByHandle(activator, "RunScriptCode", "if (self.IsValid() && self.GetName() == \"map1takedamagevictim1\") self.__KeyValueFromString(\"targetname\", \"" + strOldTargetName + "\");", -1, null, null); + } +} + +function PickLastManStanding() +{ + local PotentialSoloers = array(0), iPotentialSoloersLength = 0; + + for (local iLoopCount = 0; !iPotentialSoloersLength && iLoopCount < 2; iLoopCount++) + { + iPotentialSoloersLength = 0; + + PotentialSoloers.clear(); + + foreach (SavedPlayerInfo in SavedPlayerInfos) + { + local hPlayer = SavedPlayerInfo.hPlayer; + + if (hPlayer.GetTeam() == 3 && hPlayer.GetHealth() > 0 && (!SavedPlayerInfo.bIsSoloBanned || iLoopCount)) + { + local flOrigin = hPlayer.GetOrigin(), flOriginX = flOrigin.x, flOriginY = flOrigin.y; + + if (flOriginX >= -1024 && flOriginX <= 10240 && flOriginY >= -10240 && flOriginY <= 1024 && flOrigin.z >= 12288) + { + local iStage5Damage = SavedPlayerInfo.iStage5Damage, iCompletedEvents = SavedPlayerInfo.iCompletedEvents; + + PotentialSoloers.push( + { + hPlayer = SavedPlayerInfo.hPlayer, + strName = SavedPlayerInfo.strName, + iCompletedEvents = iCompletedEvents, + iStage5Damage = iStage5Damage, + iTotalPoints = iStage5Damage + 150 * iCompletedEvents, + iPlacement = 1 + }); + + iPotentialSoloersLength++; + } + } + } + } + + StopTrackingZombieDamage(); + + local hExit = Entities.FindByName(null, "fuckedoffzombies"); + + if (iPotentialSoloersLength) + { + local SoloPlayerInfo = {}; + + if (iPotentialSoloersLength == 1) + SoloPlayerInfo = PotentialSoloers[0]; + + else + { + PotentialSoloers.sort(SortSoloByTotalPoints); + + local iLuckBox = array(0); + + foreach (iOrder, PotentialSoloer in PotentialSoloers) + { + PotentialSoloer.iPlacement = iOrder + 1; + + local iRepeatAmount = 1; + + if (iOrder <= 14) + switch (iOrder) + { + case 0: + { + iRepeatAmount = 5; + + break; + } + + case 1: + case 2: + { + iRepeatAmount = 4; + + break; + } + + case 3: + case 4: + { + iRepeatAmount = 3; + + break; + } + + default: + iRepeatAmount = 2; + } + + for (local iSecondOrder = 0; iSecondOrder < iRepeatAmount; iSecondOrder++) + iLuckBox.push(iOrder); + } + + SoloPlayerInfo = PotentialSoloers[iLuckBox[RandomInt(0, iLuckBox.len() - 1)]]; + } + + local strName = SoloPlayerInfo.strName, iPlacement = SoloPlayerInfo.iPlacement; + + PrintStatsText(null, (strName == "" ? "A human" : "Human " + strName) + " has been chosen for the solo ending!\\nCompleted " + SoloPlayerInfo.iCompletedEvents + " events and did " + SoloPlayerInfo.iStage5Damage + " damage on stage 5.\\nResulting in " + SoloPlayerInfo.iTotalPoints + " points." + (iPotentialSoloersLength == 1 ? "" : "\\nPlaced " + iPlacement + GetOrdinalNumberSuffix(iPlacement) + " out of " + PotentialSoloers.len() + ".")); + + local hSoloPlayer = SoloPlayerInfo.hPlayer; + + foreach (SavedPlayerInfo in SavedPlayerInfos) + if (SavedPlayerInfo.hPlayer == hSoloPlayer) + { + SavedPlayerInfo.bIsSoloBanned = true; + + break; + } + + foreach (hPlayer in hPlayers) + if (hPlayer.GetHealth()) + { + if (hPlayer.GetTeam() == 3) + { + if (hPlayer != hSoloPlayer) + EntFireByHandle(hPlayer, "SetHealth", "0", -1, null, null); + } + + else + { + hPlayer.SetOrigin(hExit.GetOrigin()); + hPlayer.SetAngles(0, hExit.GetAngles().y, 0); + hPlayer.SetVelocity(Vector()); + } + } + + local hExits = array(0); + + while (hExit = Entities.FindByName(hExit, "last_man_standing_tpdest")) + hExits.push(hExit); + + hExit = hExits[RandomInt(0, hExits.len() - 1)]; + + hSoloPlayer.SetOrigin(hExit.GetOrigin()); + hSoloPlayer.SetAngles(0, hExit.GetAngles().y, 0); + hSoloPlayer.SetVelocity(Vector()); + } + + else + { + PrintStatsText(null, "No valid players were found, no one gets the solo!"); + + foreach (hPlayer in hPlayers) + if (hPlayer.GetHealth()) + { + if (hPlayer.GetTeam() == 3) + EntFireByHandle(hPlayer, "SetHealth", "0", -1, null, null); + + else + { + hPlayer.SetOrigin(hExit.GetOrigin()); + hPlayer.SetAngles(0, hExit.GetAngles().y, 0); + hPlayer.SetVelocity(Vector()); + } + } + } +} + +function SortSoloByTotalPoints(First, Second) +{ + local flFirstTotalPoint = First.iTotalPoints, flSecondTotalPoint = Second.iTotalPoints, iReturn = 0; + + if (flFirstTotalPoint > flSecondTotalPoint) + iReturn = -1; + + else if (flFirstTotalPoint < flSecondTotalPoint) + iReturn = 1; + + return iReturn; +} + +function GetOrdinalNumberSuffix(iNumber) +{ + local strSuffix = "th"; + + if (iNumber <= 3 || iNumber > 20) + switch (iNumber % 10) + { + case 1: + { + strSuffix = "st"; + + break; + } + + case 2: + { + strSuffix = "nd"; + + break; + } + + case 3: + strSuffix = "rd"; + } + + return strSuffix; +} + +function GetTakeDamageEntity() +{ + return GetEntity(0, "takedamage1"); +} + +function GetStatsText() +{ + return GetEntity(1, "statstext1"); +} + +function GetUserIDEventGenerator() +{ + return GetEntity(2, "eventgenerator1"); +} + +function GetEntity(iOrder, strName) +{ + return hMapEntities[iOrder] ? hMapEntities[iOrder] : hMapEntities[iOrder] = Entities.FindByName(null, "map1" + strName); +}