Repository: ReactiveDrop/reactivedrop_public_src (language: cpp)

Issue:
crucial point ending is cheesable
https://steamcommunity.com/app/563560/discussions/2/3464976518715210949/



Discussion / hints:
suggestion: why not make illyn forest (and now crucial point) have only techs hack the panels to reenable them back to working? with recent tech requirement changes, if we have a tech requirement disabled and enable it when techs are not alive, it will automatically fail the mission
oh my god this bug was in the game the whole time
![image](https://user-images.githubusercontent.com/95616101/186191416-249b4664-7942-4561-b6f5-f5342b831e1a.png)

when compiling the map
![image](https://user-images.githubusercontent.com/95616101/186196843-5fda124e-5c62-4aa6-9a8b-b8cfd4131683.png)

this is a keyvalue in npc_bullseye entity
will rename

Fix patch:
diff --git a/contentsrc/mapsrc/rd-par5crucial_point.vmf b/contentsrc/mapsrc/rd-par5crucial_point.vmf
index 027999564..062ad8a65 100644
--- a/contentsrc/mapsrc/rd-par5crucial_point.vmf
+++ b/contentsrc/mapsrc/rd-par5crucial_point.vmf
@@ -2,7 +2,7 @@ versioninfo
 {
 	"editorversion" "400"
 	"editorbuild" "7397"
-	"mapversion" "151"
+	"mapversion" "192"
 	"formatversion" "100"
 	"prefab" "0"
 }
@@ -152,13 +152,13 @@ viewsettings
 	"bSnapToGrid" "1"
 	"bShowGrid" "1"
 	"bShowLogicalGrid" "0"
-	"nGridSpacing" "8"
+	"nGridSpacing" "2"
 	"bShow3DGrid" "0"
 }
 world
 {
 	"id" "1"
-	"mapversion" "151"
+	"mapversion" "192"
 	"classname" "worldspawn"
 	"comment" "Decompiled by BSPSource v1.3.13 from as_paranoia3"
 	"detailmaterial" "detail/detailsprites"
@@ -160290,6 +160290,82 @@ world
 			"visgroupautoshown" "1"
 		}
 	}
+	solid
+	{
+		"id" "1488788"
+		side
+		{
+			"id" "26387"
+			"plane" "(-12580 4148 154) (-12444 4148 154) (-12444 4020 154)"
+			"material" "TOOLS/TOOLSPLAYERCLIP"
+			"uaxis" "[1 0 0 0] 0.25"
+			"vaxis" "[0 -1 0 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26388"
+			"plane" "(-12580 4020 -22) (-12444 4020 -22) (-12444 4148 -22)"
+			"material" "TOOLS/TOOLSPLAYERCLIP"
+			"uaxis" "[1 0 0 0] 0.25"
+			"vaxis" "[0 -1 0 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26389"
+			"plane" "(-12580 4148 154) (-12580 4020 154) (-12580 4020 -22)"
+			"material" "TOOLS/TOOLSPLAYERCLIP"
+			"uaxis" "[0 1 0 0] 0.25"
+			"vaxis" "[0 0 -1 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26390"
+			"plane" "(-12444 4148 -22) (-12444 4020 -22) (-12444 4020 154)"
+			"material" "TOOLS/TOOLSPLAYERCLIP"
+			"uaxis" "[0 1 0 0] 0.25"
+			"vaxis" "[0 0 -1 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26391"
+			"plane" "(-12444 4148 154) (-12580 4148 154) (-12580 4148 -22)"
+			"material" "TOOLS/TOOLSPLAYERCLIP"
+			"uaxis" "[1 0 0 0] 0.25"
+			"vaxis" "[0 0 -1 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26392"
+			"plane" "(-12444 4020 -22) (-12580 4020 -22) (-12580 4020 154)"
+			"material" "TOOLS/TOOLSPLAYERCLIP"
+			"uaxis" "[1 0 0 0] 0.25"
+			"vaxis" "[0 0 -1 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		editor
+		{
+			"color" "0 177 154"
+			"visgroupshown" "1"
+			"visgroupautoshown" "1"
+		}
+	}
 	group
 	{
 		"id" "1391302"
@@ -191260,35 +191336,11 @@ entity
 		"OnButtonActivated" "explosion_sulfa_finExplode30-1"
 		"OnButtonActivated" "spark_sulfa_finStartSpark30-1"
 		"OnButtonActivated" "sprite_sulfa_finKill30-1"
-		"OnButtonActivated" "train_shipStartForward115-1"
-		"OnButtonActivated" "explosion1_shipExplode121-1"
-		"OnButtonActivated" "explosion2_shipExplode122.8-1"
-		"OnButtonActivated" "intro_start_camera3Trigger120-1"
-		"OnButtonActivated" "rocks_shipEnableMotion121-1"
-		"OnButtonActivated" "dust1_shipStart121-1"
-		"OnButtonActivated" "dust2_shipStart122.8-1"
-		"OnButtonActivated" "relay.coreball.largeTrigger119-1"
-		"OnButtonActivated" "fade_finFade123-1"
-		"OnButtonActivated" "sound_fin_shipPlaySound124-1"
 		"OnButtonActivated" "trigger_sulfaDisable30-1"
 		"OnButtonActivated" "sprite_radar_compKill0-1"
-		"OnButtonActivated" "slomo_finStartSlomo120-1"
-		"OnButtonActivated" "train_shipSetSpeed600115-1"
-		"OnButtonActivated" "rocks_explo_finEnableMotion121-1"
 		"OnButtonActivated" "light_panel_finTurnOff30-1"
-		"OnButtonActivated" "fumee_shipStart120-1"
-		"OnButtonActivated" "shake_vaisseau2StartShake122.8-1"
-		"OnButtonActivated" "shake_vaisseau1StartShake121-1"
-		"OnButtonActivated" "fire_vaisseauStartFire123.5-1"
-		"OnButtonActivated" "sound_shipVolume10117-1"
 		"OnButtonActivated" "musique_finStartMusic0-1"
-		"OnButtonActivated" "fire_vaisseau2StartFire120-1"
-		"OnButtonActivated" "trigger_knock_finEnable121-1"
-		"OnButtonActivated" "trigger_knock_finDisable121.5-1"
-		"OnButtonActivated" "explo_sur_shipExplode119.5-1"
-		"OnButtonActivated" "objectif5SetComplete127.5-1"
 		"OnButtonActivated" "objectif5SetVisible10-1"
-		"OnTrigger" "trigger_final_remove_all_aliensEnable123.7-1"
 		"OnButtonActivated" "drones1_finStartSpawning0-1"
 		"OnButtonActivated" "drones1-1_finStartSpawning15-1"
 		"OnButtonActivated" "drones2_finStartSpawning30-1"
@@ -191296,8 +191348,15 @@ entity
 		"OnButtonActivated" "drones4_finStartSpawning90-1"
 		"OnButtonActivated" "objectif2SetComplete0-1"
 		"OnButtonActivated" "relay_new_end_spawnersTrigger0-1"
-		"OnTrigger" "clip_niveauEnable123.7-1"
-		"OnButtonActivated" "jet_particlesStart115-1"
+		"OnButtonActivated" "template_bullseyeForceSpawn0-1"
+		"OnButtonActivated" "relationship_end_panelApplyRelationship0.1-1"
+		"OnButtonActivated" "timer_timeleftEnable0-1"
+		"OnButtonActivated" "spawner_beaconattackerStartSpawning0-1"
+		"OnButtonActivated" "bossbar_timeEnable0-1"
+		"OnButtonActivated" "light_beacon_greenTurnOn0-1"
+		"OnButtonActivated" "light_beacon_redTurnOff0-1"
+		"OnButtonActivated" "bossbar_healthEnable0-1"
+		"OnButtonActivated" "relay_beacon_logicRunScriptCodeInit()0-1"
 	}
 	solid
 	{
@@ -260300,6 +260359,7 @@ entity
 		"OnMapSpawn" "tonemap_globalSetAutoExposureMin10-1"
 		"OnMapSpawn" "tonemap_globalSetAutoExposureMax50-1"
 		"OnMapSpawn" "tonemap_globalSetBloomScale.30-1"
+		"OnMapSpawn" "techreqDisableTechMarineReq0-1"
 	}
 	"origin" "-4224 -448 -334"
 	editor
@@ -261865,13 +261925,815 @@ entity
 		"logicalpos" "[0 0]"
 	}
 }
+entity
+{
+	"id" "1475700"
+	"classname" "point_template"
+	"spawnflags" "2"
+	"targetname" "template_bullseye"
+	"Template01" "gen_bullseye"
+	"Template02" "particle_end_gen_explo"
+	"origin" "-12387 4233.27 -56.9688"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 500]"
+	}
+}
+entity
+{
+	"id" "1475727"
+	"classname" "prop_dynamic"
+	"angles" "0 90 0"
+	"DisableBoneFollowers" "0"
+	"disablereceiveshadows" "0"
+	"ExplodeDamage" "0"
+	"ExplodeRadius" "0"
+	"fademindist" "-1"
+	"fadescale" "1"
+	"HoldAnimation" "0"
+	"MaxAnimTime" "10"
+	"MinAnimTime" "5"
+	"model" "models/props/de_nuke/hr_nuke/nuke_electric_panel/nuke_electric_panel02_big.mdl"
+	"PerformanceMode" "0"
+	"pressuredelay" "0"
+	"RandomAnimation" "0"
+	"renderamt" "255"
+	"rendercolor" "255 255 255"
+	"renderfx" "0"
+	"rendermode" "0"
+	"SetBodyGroup" "0"
+	"skin" "0"
+	"solid" "6"
+	"spawnflags" "0"
+	"StartDisabled" "0"
+	"targetname" "panel_target"
+	"origin" "-12486 4146 -44"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[-11768 11000]"
+	}
+}
+entity
+{
+	"id" "1475749"
+	"classname" "npc_bullseye"
+	"angles" "0 0 0"
+	"damagefilter" "filter_blast"
+	"damagemultiplierotherfaction" "1.0"
+	"damagemultipliersamefaction" "1.0"
+	"disableshadows" "1"
+	"faction" "0"
+	"health" "1000000"
+	"minangle" "360"
+	"physdamagescale" ".75"
+	"renderamt" "255"
+	"rendercolor" "255 255 255"
+	"spawnflags" "518"
+	"targetname" "gen_bullseye"
+	connections
+	{
+		"OnDamaged" "relay_beacon_logicFireUser10-1"
+	}
+	"origin" "-12486 4154 -41.8433"
+	editor
+	{
+		"color" "255 0 0"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[3500 5000]"
+	}
+}
+entity
+{
+	"id" "1475771"
+	"classname" "ai_relationship"
+	"disposition" "1"
+	"radius" "0"
+	"rank" "0"
+	"Reciprocal" "0"
+	"spawnflags" "0"
+	"StartActive" "0"
+	"subject" "gen_bullseye"
+	"target" "asw_drone"
+	"targetname" "relationship_end_panel"
+	"origin" "-12464.9 4214.2 -56.4688"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 1000]"
+	}
+}
+entity
+{
+	"id" "1475922"
+	"classname" "info_particle_system"
+	"angles" "0 0 0"
+	"cpoint1_parent" "0"
+	"cpoint2_parent" "0"
+	"cpoint3_parent" "0"
+	"cpoint4_parent" "0"
+	"cpoint5_parent" "0"
+	"cpoint6_parent" "0"
+	"cpoint7_parent" "0"
+	"effect_name" "stungrenade_core"
+	"start_active" "0"
+	"targetname" "particle_end_gen_explo"
+	"origin" "-12525.5 4087.64 -13.9717"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 500]"
+	}
+}
+entity
+{
+	"id" "1475990"
+	"classname" "ambient_generic"
+	"cspinup" "0"
+	"fadeinsecs" "0"
+	"fadeoutsecs" "0"
+	"health" "10"
+	"lfomodpitch" "0"
+	"lfomodvol" "0"
+	"lforate" "0"
+	"lfotype" "0"
+	"message" "ambient.electrical_zap_3"
+	"pitch" "100"
+	"pitchstart" "100"
+	"preset" "0"
+	"radius" "1250"
+	"spawnflags" "48"
+	"spindown" "0"
+	"spinup" "0"
+	"targetname" "ambient_end_gen_explo"
+	"volstart" "0"
+	"origin" "-12507.5 4129.54 -15"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 1000]"
+	}
+}
+entity
+{
+	"id" "1476002"
+	"classname" "logic_relay"
+	"spawnflags" "0"
+	"StartDisabled" "0"
+	"targetname" "relay_beacon_logic"
+	"vscripts" "para5_holdout_manager.nut"
+	connections
+	{
+		"OnUser1" "counter_healthSubtract10-1"
+	}
+	"origin" "-12549.5 4128.76 -22"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"comments" "user1 --- panel was damaged"
+		"logicalpos" "[0 500]"
+	}
+}
+entity
+{
+	"id" "1476032"
+	"classname" "asw_spawner"
+	"AlienOrders" "3"
+	"angles" "0 0 0"
+	"ClearCheck" "1"
+	"DirectorLockTime" "4"
+	"flammablesp" "1"
+	"flinchablesp" "1"
+	"freezablesp" "1"
+	"InfiniteAliens" "1"
+	"MaxLiveAliens" "4"
+	"maxoffset" "0 0 0"
+	"minoffset" "0 0 0"
+	"NearDistance" "740"
+	"NumAliens" "1"
+	"sizescalesp" "1.0"
+	"SpawnerState" "1"
+	"spawnflags" "1"
+	"SpawnIfMarinesAreNear" "1"
+	"SpawnInterval" "10"
+	"SpawnIntervalJitter" "25"
+	"speedscalesp" "1.0"
+	"StartBurrowed" "1"
+	"targetname" "spawner_beaconattacker"
+	"teslablesp" "1"
+	"UnburrowActivity" "ACT_CLIMB_OFF_RAIL_52"
+	"UnburrowIdleActivity" "ACT_CLIMB_OFF_RAIL_IDLE"
+	"origin" "-12550 4272 -62"
+	editor
+	{
+		"color" "0 0 255"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"comments" "this spawner is needed to have higher guarantee that the panel will be attacked even when marines are far away"
+		"logicalpos" "[-13768 -11268]"
+	}
+}
+entity
+{
+	"id" "1476192"
+	"classname" "rd_boss_bar"
+	"BarBGColor" "13 20 51 255"
+	"BarBorderColor" "255 255 255 255"
+	"BarColumn" "1"
+	"BarFGColor" "100 163 187 192"
+	"BarFlashColor" "255 255 255 255"
+	"BarFlashInterpolate" "0"
+	"BarFlashSustain" "0"
+	"BarID" "a"
+	"BarMax" "1149"
+	"BarMode" "0"
+	"BarRow" "1"
+	"BarScale" "0.5"
+	"BarTitle" "#par_crucialpoint_bossbar_timeleft"
+	"BarValue" "1149"
+	"targetname" "bossbar_time"
+	"origin" "-12457.1 4080.79 -15"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 1500]"
+	}
+}
+entity
+{
+	"id" "1476196"
+	"classname" "logic_relay"
+	"spawnflags" "0"
+	"StartDisabled" "0"
+	"targetname" "relay_init_endingcrash"
+	connections
+	{
+		"OnTrigger" "clip_niveauEnable8.7-1"
+		"OnTrigger" "trigger_final_remove_all_aliensEnable8.7-1"
+		"OnTrigger" "objectif5SetComplete12.5-1"
+		"OnTrigger" "sound_fin_shipPlaySound9-1"
+		"OnTrigger" "fire_vaisseauStartFire8.5-1"
+		"OnTrigger" "fade_finFade8-1"
+		"OnTrigger" "shake_vaisseau2StartShake7.8-1"
+		"OnTrigger" "dust2_shipStart7.8-1"
+		"OnTrigger" "explosion2_shipExplode7.8-1"
+		"OnTrigger" "trigger_knock_finDisable6.5-1"
+		"OnTrigger" "trigger_knock_finEnable6-1"
+		"OnTrigger" "shake_vaisseau1StartShake6-1"
+		"OnTrigger" "rocks_explo_finEnableMotion6-1"
+		"OnTrigger" "dust1_shipStart6-1"
+		"OnTrigger" "rocks_shipEnableMotion6-1"
+		"OnTrigger" "explosion1_shipExplode6-1"
+		"OnTrigger" "fire_vaisseau2StartFire5-1"
+		"OnTrigger" "fumee_shipStart5-1"
+		"OnTrigger" "slomo_finStartSlomo5-1"
+		"OnTrigger" "intro_start_camera3Trigger5-1"
+		"OnTrigger" "explo_sur_shipExplode4.5-1"
+		"OnTrigger" "relay.coreball.largeTrigger4-1"
+		"OnTrigger" "sound_shipVolume102-1"
+		"OnTrigger" "jet_particlesStart0-1"
+		"OnTrigger" "train_shipSetSpeed6000-1"
+		"OnTrigger" "train_shipStartForward0-1"
+		"OnTrigger" "#asw_name_jaegerSetHealth20478.75-1"
+		"OnTrigger" "#asw_name_jaegerRunScriptCodeself.SetMaxHealth( 2047 )8.7-1"
+		"OnTrigger" "#asw_name_sargeSetHealth20478.75-1"
+		"OnTrigger" "#asw_name_sargeRunScriptCodeself.SetMaxHealth( 2047 )8.7-1"
+		"OnTrigger" "#asw_name_wildcatSetHealth20478.75-1"
+		"OnTrigger" "#asw_name_wildcatRunScriptCodeself.SetMaxHealth( 2047 )8.7-1"
+		"OnTrigger" "#asw_name_wolfeSetHealth20478.75-1"
+		"OnTrigger" "#asw_name_wolfeRunScriptCodeself.SetMaxHealth( 2047 )8.7-1"
+		"OnTrigger" "#asw_name_faithSetHealth20478.75-1"
+		"OnTrigger" "#asw_name_faithRunScriptCodeself.SetMaxHealth( 2047 )8.7-1"
+		"OnTrigger" "#asw_name_bastilleSetHealth20478.75-1"
+		"OnTrigger" "#asw_name_bastilleRunScriptCodeself.SetMaxHealth( 2047 )8.7-1"
+		"OnTrigger" "#asw_name_crashSetHealth20478.75-1"
+		"OnTrigger" "#asw_name_crashRunScriptCodeself.SetMaxHealth( 2047 )8.7-1"
+		"OnTrigger" "#asw_name_vegasSetHealth20478.75-1"
+		"OnTrigger" "#asw_name_vegasRunScriptCodeself.SetMaxHealth( 2047 )8.7-1"
+	}
+	"origin" "-12568.1 4136.25 -15"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 2000]"
+	}
+}
+entity
+{
+	"id" "1476198"
+	"classname" "logic_timer"
+	"RefireTime" "0.1"
+	"StartDisabled" "1"
+	"targetname" "timer_timeleft"
+	"UseRandomTime" "0"
+	connections
+	{
+		"OnTimer" "counter_timeleftSubtract10-1"
+	}
+	"origin" "-12454.4 4059.93 -22"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 3500]"
+	}
+}
+entity
+{
+	"id" "1476209"
+	"classname" "math_counter"
+	"max" "1149"
+	"min" "0"
+	"StartDisabled" "0"
+	"startvalue" "1149"
+	"targetname" "counter_timeleft"
+	connections
+	{
+		"OnHitMin" "timer_timeleftKill01"
+		"OnHitMin" "relay_init_endingcrashTrigger01"
+		"OutValue" "bossbar_timeBarValue0-1"
+		"OnHitMin" "branch_techreqSetValue00-1"
+		"OnHitMin" "bossbar_healthDisable01"
+		"OnHitMin" "bossbar_timeDisable01"
+	}
+	"origin" "-12454 4040 -22"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 3500]"
+	}
+}
+entity
+{
+	"id" "1487848"
+	"classname" "rd_boss_bar"
+	"BarBGColor" "31 31 31 255"
+	"BarBorderColor" "184 56 56 255"
+	"BarColumn" "1"
+	"BarFGColor" "182 134 105 255"
+	"BarFlashColor" "255 255 255 255"
+	"BarFlashInterpolate" "0.05"
+	"BarFlashSustain" "0.05"
+	"BarID" "b"
+	"BarMax" "5"
+	"BarMode" "0"
+	"BarRow" "2"
+	"BarScale" "0.5"
+	"BarTitle" "#par_crucialpoint_bossbar_health"
+	"BarValue" "5"
+	"targetname" "bossbar_health"
+	"origin" "-12482 4080 -15"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"comments" "if i make this yellow it will be a ukrainian flag"
+		"logicalpos" "[0 1500]"
+	}
+}
+entity
+{
+	"id" "1487936"
+	"classname" "math_counter"
+	"max" "5"
+	"min" "0"
+	"StartDisabled" "0"
+	"startvalue" "5"
+	"targetname" "counter_health"
+	connections
+	{
+		"OutValue" "bossbar_healthBarValue0-1"
+		"OnHitMin" "particle_end_gen_exploStart0-1"
+		"OnHitMin" "gen_bullseyeKill0-1"
+		"OnHitMin" "ambient_end_gen_exploPlaySound0-1"
+		"OnHitMin" "timer_timeleftDisable0-1"
+		"OnHitMin" "light_beacon_redTurnOn0-1"
+		"OnHitMin" "light_beacon_greenTurnOff0-1"
+		"OnHitMin" "branch_techreqTest0-1"
+		"OnHitMin" "particle_end_gen_exploKill1-1"
+		"OnHitMin" "buttonarea_beaconEnable0-1"
+	}
+	"origin" "-12480 4058 -22"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 3500]"
+	}
+}
+entity
+{
+	"id" "1488011"
+	"classname" "prop_dynamic"
+	"angles" "0 220.5 0"
+	"DisableBoneFollowers" "0"
+	"disablereceiveshadows" "0"
+	"ExplodeDamage" "0"
+	"ExplodeRadius" "0"
+	"fademindist" "-1"
+	"fadescale" "1"
+	"HoldAnimation" "0"
+	"MaxAnimTime" "10"
+	"MinAnimTime" "5"
+	"model" "models/props/de_nuke/hr_nuke/wires_001/wires_001a_curve_long.mdl"
+	"PerformanceMode" "0"
+	"pressuredelay" "0"
+	"RandomAnimation" "0"
+	"renderamt" "255"
+	"rendercolor" "255 255 255"
+	"renderfx" "0"
+	"rendermode" "0"
+	"SetBodyGroup" "0"
+	"skin" "0"
+	"solid" "6"
+	"spawnflags" "0"
+	"StartDisabled" "0"
+	"targetname" "panel_radar_fin"
+	"origin" "-12485.3 4151.77 -62.7188"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[-11768 11000]"
+	}
+}
+entity
+{
+	"id" "1488019"
+	"classname" "prop_dynamic"
+	"angles" "0 130.5 0"
+	"DisableBoneFollowers" "0"
+	"disablereceiveshadows" "0"
+	"ExplodeDamage" "0"
+	"ExplodeRadius" "0"
+	"fademindist" "-1"
+	"fadescale" "1"
+	"HoldAnimation" "0"
+	"MaxAnimTime" "10"
+	"MinAnimTime" "5"
+	"model" "models/props/de_nuke/hr_nuke/wires_001/wires_001a_curve_long.mdl"
+	"PerformanceMode" "0"
+	"pressuredelay" "0"
+	"RandomAnimation" "0"
+	"renderamt" "255"
+	"rendercolor" "255 255 255"
+	"renderfx" "0"
+	"rendermode" "0"
+	"SetBodyGroup" "0"
+	"skin" "0"
+	"solid" "6"
+	"spawnflags" "0"
+	"StartDisabled" "0"
+	"targetname" "panel_radar_fin"
+	"origin" "-12412 4146 -62.7188"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[-11768 11000]"
+	}
+}
+entity
+{
+	"id" "1488142"
+	"classname" "light"
+	"_constant_attn" "0"
+	"_distance" "0"
+	"_fifty_percent_distance" "256"
+	"_hardfalloff" "1"
+	"_light" "218 46 50 50"
+	"_lightHDR" "-1 -1 -1 1"
+	"_lightscaleHDR" "1"
+	"_linear_attn" "0"
+	"_quadratic_attn" "1"
+	"_zero_percent_distance" "512"
+	"style" "0"
+	"targetname" "light_beacon_red"
+	"origin" "-12510 4158 78"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 0]"
+	}
+}
+entity
+{
+	"id" "1488160"
+	"classname" "light"
+	"_constant_attn" "0"
+	"_distance" "0"
+	"_fifty_percent_distance" "256"
+	"_hardfalloff" "1"
+	"_light" "60 204 70 50"
+	"_lightHDR" "-1 -1 -1 1"
+	"_lightscaleHDR" "1"
+	"_linear_attn" "0"
+	"_quadratic_attn" "1"
+	"_zero_percent_distance" "512"
+	"spawnflags" "1"
+	"style" "0"
+	"targetname" "light_beacon_green"
+	"origin" "-12510 4158 76"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 0]"
+	}
+}
+entity
+{
+	"id" "1488255"
+	"classname" "asw_trigger_fall"
+	"origin" "-10060 3334 -277"
+	"spawnflags" "16"
+	"StartDisabled" "0"
+	solid
+	{
+		"id" "1488250"
+		side
+		{
+			"id" "26368"
+			"plane" "(-10884 4486 -240) (-9236 4486 -240) (-9236 2182 -240)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[1 0 0 0] 5"
+			"vaxis" "[0 -1 0 0] 5"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26367"
+			"plane" "(-10884 2182 -314) (-9236 2182 -314) (-9236 4486 -314)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[1 0 0 0] 5"
+			"vaxis" "[0 -1 0 0] 5"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26366"
+			"plane" "(-10884 4486 -240) (-10884 2182 -240) (-10884 2182 -314)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[0 1 0 0] 5"
+			"vaxis" "[0 0 -1 48] 5"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26365"
+			"plane" "(-9236 4486 -314) (-9236 2182 -314) (-9236 2182 -240)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[0 1 0 0] 5"
+			"vaxis" "[0 0 -1 48] 5"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26364"
+			"plane" "(-9236 4486 -240) (-10884 4486 -240) (-10884 4486 -314)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[1 0 0 0] 5"
+			"vaxis" "[0 0 -1 48] 5"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26363"
+			"plane" "(-9236 2182 -314) (-10884 2182 -314) (-10884 2182 -240)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[1 0 0 0] 5"
+			"vaxis" "[0 0 -1 48] 5"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		editor
+		{
+			"color" "220 30 220"
+			"visgroupshown" "1"
+			"visgroupautoshown" "1"
+		}
+	}
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 1000]"
+	}
+}
+entity
+{
+	"id" "1488287"
+	"classname" "trigger_asw_button_area"
+	"changepanelskin" "0"
+	"DestroyHeldObject" "0"
+	"disableafteruse" "0"
+	"HoldTime" "-1"
+	"locked" "1"
+	"needstech" "1"
+	"nopower" "0"
+	"numwires" "2"
+	"origin" "-12489 4172 -19"
+	"panelpropname" "panel_target"
+	"playersrequired" "1"
+	"spawnflags" "2"
+	"StartDisabled" "1"
+	"targetname" "buttonarea_beacon"
+	"useafterhack" "1"
+	"wait" "1"
+	"wirecolumns" "5"
+	"wirerows" "2"
+	connections
+	{
+		"OnButtonHackCompleted" "template_bullseyeForceSpawn0-1"
+		"OnButtonHackCompleted" "relationship_end_panelApplyRelationship0.1-1"
+		"OnButtonHackCompleted" "light_beacon_redTurnOff0-1"
+		"OnButtonHackCompleted" "light_beacon_greenTurnOn0-1"
+		"OnButtonHackCompleted" "timer_timeleftEnable0-1"
+		"OnButtonHackCompleted" "buttonarea_beaconDisable0-1"
+		"OnButtonHackCompleted" "buttonarea_beaconResetHack0.1-1"
+		"OnButtonHackCompleted" "counter_healthSetValue50-1"
+		"OnButtonHackCompleted" "techreqDisableTechMarineReq0-1"
+	}
+	solid
+	{
+		"id" "1488285"
+		side
+		{
+			"id" "26380"
+			"plane" "(-12522 4196 26) (-12456 4196 26) (-12456 4148 26)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[1 0 0 0] 0.25"
+			"vaxis" "[0 -1 0 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26379"
+			"plane" "(-12522 4148 -64) (-12456 4148 -64) (-12456 4196 -64)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[1 0 0 0] 0.25"
+			"vaxis" "[0 -1 0 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26378"
+			"plane" "(-12522 4196 26) (-12522 4148 26) (-12522 4148 -64)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[0 1 0 0] 0.25"
+			"vaxis" "[0 0 -1 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26377"
+			"plane" "(-12456 4196 -64) (-12456 4148 -64) (-12456 4148 26)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[0 1 0 0] 0.25"
+			"vaxis" "[0 0 -1 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26376"
+			"plane" "(-12456 4196 26) (-12522 4196 26) (-12522 4196 -64)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[1 0 0 0] 0.25"
+			"vaxis" "[0 0 -1 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		side
+		{
+			"id" "26375"
+			"plane" "(-12456 4148 -64) (-12522 4148 -64) (-12522 4148 26)"
+			"material" "TOOLS/TOOLSTRIGGER"
+			"uaxis" "[1 0 0 0] 0.25"
+			"vaxis" "[0 0 -1 0] 0.25"
+			"rotation" "0"
+			"lightmapscale" "16"
+			"smoothing_groups" "0"
+		}
+		editor
+		{
+			"color" "220 30 220"
+			"visgroupshown" "1"
+			"visgroupautoshown" "1"
+		}
+	}
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 2500]"
+	}
+}
+entity
+{
+	"id" "1488322"
+	"classname" "asw_tech_marine_req"
+	"targetname" "techreq"
+	"origin" "-12531.3 4046.7 -15"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 1500]"
+	}
+}
+entity
+{
+	"id" "1488326"
+	"classname" "logic_branch"
+	"InitialValue" "1"
+	"targetname" "branch_techreq"
+	connections
+	{
+		"OnTrue" "techreqEnableTechMarineReq0-1"
+	}
+	"origin" "-12515.9 4042.03 -15"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 3000]"
+	}
+}
+entity
+{
+	"id" "1488640"
+	"classname" "filter_damage_type"
+	"damagetype" "64"
+	"Negated" "1"
+	"targetname" "filter_blast"
+	"origin" "-12442.6 4195.39 -63.9688"
+	editor
+	{
+		"color" "220 30 220"
+		"visgroupshown" "1"
+		"visgroupautoshown" "1"
+		"logicalpos" "[0 3500]"
+	}
+}
 cameras
 {
 	"activecamera" "0"
 	camera
 	{
-		"position" "[-12631.4 4715.03 127.517]"
-		"look" "[-12625.4 4881.79 -80.0943]"
+		"position" "[-12510.8 4211.73 184.434]"
+		"look" "[-12474.8 4057.82 -29.9612]"
 	}
 	camera
 	{
diff --git a/reactivedrop/scripts/vscripts/briefingcamera.nut b/reactivedrop/scripts/vscripts/briefingcamera.nut
index f4caec80c..21db3a2a3 100644
--- a/reactivedrop/scripts/vscripts/briefingcamera.nut
+++ b/reactivedrop/scripts/vscripts/briefingcamera.nut
@@ -1,147 +1,147 @@
-/*
-	How to use this script for your map:
-	
-		create a rd_briefing_camera entity anywhere, the position does not matter because it will be teleported
-		name it camera_briefing
-		in Entity Scripts field, add: briefingcamera.nut
-		
-		create a logic_auto entity and execute the InitCamera function when the map spawns, you do that with a output in logic_auto entity: OnMapSpawn camera_briefing RunScriptCode InitCamera()
-		
-		place info_target entities in your map with the name format like this: camtarget_<number of the target>_<camera_fov>
-		note: camera_fov is optional to add, by default it will be 75.
-		examples of some names: camtarget_1_75, camtarget_2_80, camtarget_3, camtarget_4_110, camtarget_5. In this case camera will be teleporting between those 5 places
-		
-		place the info_target entities in spots where you want the camera to teleport to
-		make the info_target entities have the angles (pitch, yaw, roll) that you want, the camera will swap to those angles when it is teleported there
-	
-	Function parameters:
-	
-		calling InitCamera() without parameters will make it teleport every 3 seconds.
-		calling InitCamera(5) will make it teleport every 5 seconds.
-		calling InitCamera(5, 10) will make it teleport at a random number of seconds between 5 and 10
-		
-		by default camera teleports randomly between places, it could teleport from 2nd to 1st to 5th to 3rd to 5th to 1st to 4th etc., without a pattern
-		if you want the camera to teleport to places in order (from 1st to 2nd to 3rd to 4th to 5th to 1st to 2nd to 3rd etc.), then you need to add a 3rd parameter: false
-		examples: InitCamera( 0, 0, false ) will make it teleport every 3 seconds 
-		InitCamera( 5, 0, false ) will make it teleport every 5 seconds
-		InitCamera( 5, 10, false ) will make it teleport at a random number of seconds between 5 and 10
-*/
-g_places_t <- [];
-g_next_place <- 0;
-
-g_min_delay <- 0.0;
-g_max_delay <- 0.0;
-g_random_targets <- true;
-
-function InitCamera( min_delay = 0.0, max_delay = 0.0, random_targets = true )
-{	
-	if ( typeof( min_delay ) != "integer" && typeof( min_delay ) != "float" )
-		return;
-		
-	if ( typeof( max_delay ) != "integer" && typeof( max_delay ) != "float" )
-		return;
-	
-	local hTarget = null;
-	while ( hTarget = Entities.FindByClassname( hTarget, "info_target" ) )
-	{
-		if ( GetPlaceNumber( hTarget ) < 0 )
-			continue;
-		
-		g_places_t.push( hTarget );
-	}
-	
-	if ( g_places_t.len() < 1 )
-		return;
-	
-	if ( g_places_t.len() == 1 )
-	{
-		ChangePlace( g_places_t[0] );
-		return;
-	}
-	
-	// sort the places in order of their numbers
-	local reference = g_places_t;
-	local numplaces = g_places_t.len();
-	for ( local i = 0; i < numplaces - 1; ++i )
-	{
-		for ( local j = i + 1; j < numplaces; ++j )
-		{
-			if ( GetPlaceNumber( reference[j] ) < GetPlaceNumber( reference[i] ) )
-			{	
-				local temp = reference[j];
-				reference[j] = reference[i];
-				reference[i] = temp;
-			}
-		}
-	}
-	g_places_t <- reference;
-	
-	if ( min_delay < 0.5 )
-		min_delay = 3.0;
-		
-	if ( max_delay <= min_delay )
-		max_delay = 0.0;
-	
-	g_min_delay <- min_delay;
-	g_max_delay <- max_delay;
-	g_random_targets <- random_targets;
-	
-	AddThinkToEnt( self, "OnCameraThink" );
-	OnCameraThink();
-}
-
-function OnCameraThink()
-{
-	if ( g_random_targets )
-	{
-		local next_place = g_next_place;
-		
-		// make sure next place is not the same place as before
-		while ( next_place == g_next_place )
-			next_place = RandomInt( 0, g_places_t.len() - 1 );
-			
-		g_next_place <- next_place;
-	}
-	else
-	{
-		if ( g_next_place + 1 >= g_places_t.len() )
-			g_next_place <- 0;
-		else
-			g_next_place++;
-	}
-	
-	ChangePlace( g_places_t[ g_next_place ] );
-	
-	return g_max_delay == 0.0 ? g_min_delay : RandomFloat( g_min_delay, g_max_delay );
-}
-
-function ChangePlace( hTarget )
-{
-	self.SetOrigin( hTarget.GetOrigin() );
-	self.SetAnglesVector( hTarget.GetAngles() );
-	
-	self.__KeyValueFromFloat( "fov" , GetFOV( hTarget ) );
-}
-
-function GetPlaceNumber( hTarget )
-{
-	local str_targetname = hTarget.GetName();
-	if ( str_targetname.len() < 10 )
-		return -1;
-		
-	local str_array = split( str_targetname, "_" );
-	if ( str_array.len() < 2 )
-		return -1;
-			
-	if ( str_array[0] != "camtarget" )
-		return -1;
-		
-	return str_array[1].tointeger();
-}
-
-function GetFOV( hTarget )
-{
-	local str_array = split( hTarget.GetName(), "_" );
-	
-	return str_array.len() <3 ? 75.0 : str_array[2].tofloat();
+/*
+	How to use this script for your map:
+	
+		create a rd_briefing_camera entity anywhere, the position does not matter because it will be teleported
+		name it camera_briefing
+		in Entity Scripts field, add: briefingcamera.nut
+		
+		create a logic_auto entity and execute the InitCamera function when the map spawns, you do that with a output in logic_auto entity: OnMapSpawn camera_briefing RunScriptCode InitCamera()
+		
+		place info_target entities in your map with the name format like this: camtarget_<number of the target>_<camera_fov>
+		note: camera_fov is optional to add, by default it will be 75.
+		examples of some names: camtarget_1_75, camtarget_2_80, camtarget_3, camtarget_4_110, camtarget_5. In this case camera will be teleporting between those 5 places
+		
+		place the info_target entities in spots where you want the camera to teleport to
+		make the info_target entities have the angles (pitch, yaw, roll) that you want, the camera will swap to those angles when it is teleported there
+	
+	Function parameters:
+	
+		calling InitCamera() without parameters will make it teleport every 3 seconds.
+		calling InitCamera(5) will make it teleport every 5 seconds.
+		calling InitCamera(5, 10) will make it teleport at a random number of seconds between 5 and 10
+		
+		by default camera teleports randomly between places, it could teleport from 2nd to 1st to 5th to 3rd to 5th to 1st to 4th etc., without a pattern
+		if you want the camera to teleport to places in order (from 1st to 2nd to 3rd to 4th to 5th to 1st to 2nd to 3rd etc.), then you need to add a 3rd parameter: false
+		examples: InitCamera( 0, 0, false ) will make it teleport every 3 seconds 
+		InitCamera( 5, 0, false ) will make it teleport every 5 seconds
+		InitCamera( 5, 10, false ) will make it teleport at a random number of seconds between 5 and 10
+*/
+g_places_t <- [];
+g_next_place <- 0;
+
+g_min_delay <- 0.0;
+g_max_delay <- 0.0;
+g_random_targets <- true;
+
+function InitCamera( min_delay = 0.0, max_delay = 0.0, random_targets = true )
+{	
+	if ( typeof( min_delay ) != "integer" && typeof( min_delay ) != "float" )
+		return;
+		
+	if ( typeof( max_delay ) != "integer" && typeof( max_delay ) != "float" )
+		return;
+	
+	local hTarget = null;
+	while ( hTarget = Entities.FindByClassname( hTarget, "info_target" ) )
+	{
+		if ( GetPlaceNumber( hTarget ) < 0 )
+			continue;
+		
+		g_places_t.push( hTarget );
+	}
+	
+	if ( g_places_t.len() < 1 )
+		return;
+	
+	if ( g_places_t.len() == 1 )
+	{
+		ChangePlace( g_places_t[0] );
+		return;
+	}
+	
+	// sort the places in order of their numbers
+	local reference = g_places_t;
+	local numplaces = g_places_t.len();
+	for ( local i = 0; i < numplaces - 1; ++i )
+	{
+		for ( local j = i + 1; j < numplaces; ++j )
+		{
+			if ( GetPlaceNumber( reference[j] ) < GetPlaceNumber( reference[i] ) )
+			{	
+				local temp = reference[j];
+				reference[j] = reference[i];
+				reference[i] = temp;
+			}
+		}
+	}
+	g_places_t <- reference;
+	
+	if ( min_delay < 0.5 )
+		min_delay = 3.0;
+		
+	if ( max_delay <= min_delay )
+		max_delay = 0.0;
+	
+	g_min_delay <- min_delay;
+	g_max_delay <- max_delay;
+	g_random_targets <- random_targets;
+	
+	AddThinkToEnt( self, "OnCameraThink" );
+	OnCameraThink();
+}
+
+function OnCameraThink()
+{
+	if ( g_random_targets )
+	{
+		local next_place = g_next_place;
+		
+		// make sure next place is not the same place as before
+		while ( next_place == g_next_place )
+			next_place = RandomInt( 0, g_places_t.len() - 1 );
+			
+		g_next_place <- next_place;
+	}
+	else
+	{
+		if ( g_next_place + 1 >= g_places_t.len() )
+			g_next_place <- 0;
+		else
+			g_next_place++;
+	}
+	
+	ChangePlace( g_places_t[ g_next_place ] );
+	
+	return g_max_delay == 0.0 ? g_min_delay : RandomFloat( g_min_delay, g_max_delay );
+}
+
+function ChangePlace( hTarget )
+{
+	self.SetOrigin( hTarget.GetOrigin() );
+	self.SetAnglesVector( hTarget.GetAngles() );
+	
+	self.__KeyValueFromFloat( "fov" , GetFOV( hTarget ) );
+}
+
+function GetPlaceNumber( hTarget )
+{
+	local str_targetname = hTarget.GetName();
+	if ( str_targetname.len() < 10 )
+		return -1;
+		
+	local str_array = split( str_targetname, "_" );
+	if ( str_array.len() < 2 )
+		return -1;
+			
+	if ( str_array[0] != "camtarget" )
+		return -1;
+		
+	return str_array[1].tointeger();
+}
+
+function GetFOV( hTarget )
+{
+	local str_array = split( hTarget.GetName(), "_" );
+	
+	return str_array.len() <3 ? 75.0 : str_array[2].tofloat();
 }
\ No newline at end of file
diff --git a/reactivedrop/scripts/vscripts/challenge_one_hit.nut b/reactivedrop/scripts/vscripts/challenge_one_hit.nut
index ffac219a6..b18094989 100644
--- a/reactivedrop/scripts/vscripts/challenge_one_hit.nut
+++ b/reactivedrop/scripts/vscripts/challenge_one_hit.nut
@@ -1,78 +1,78 @@
-g_strAlienClassnames <- [
-	//"asw_drone",	//"sk_asw_drone_damage" "600" in one_hit.txt so drones still kill doors fast
-	//"asw_drone_jumper",
-	//"asw_drone_uber",
-	//"asw_buzzer",	// buzzer one hit killing could be too annoying
-	//"asw_shaman",
-	
-	"asw_queen",
-	"asw_queen_grabber",	// when queen dies this becomes the attacker
-	"npc_headcrab",
-	"npc_headcrab_black",
-	"npc_headcrab_fast",
-	"npc_headcrab_poison",
-	"npc_antlion",
-	"npc_antlion_worker",
-	"grenade_spit",			// when antlion_worker dies this becomes the attacker
-	"npc_antlionguard",
-	"npc_antlionguard_cavern",
-	"npc_zombie",
-	//"npc_zombie_torso",	// doesnt attack, marines only take damage when stepping on it
-	"npc_fastzombie",
-	//"npc_fastzombie_torso",	// doesnt attack, marines only take damage when stepping on it
-	"npc_poisonzombie",
-	
-	"asw_harvester",
-	"asw_shieldbug",
-	"asw_boomer",
-	"asw_boomer_blob",		// when boomer dies this becomes the attacker
-	"asw_mortarbug",
-	"asw_mortarbug_shell",	// when mortarbug dies this becomes the attacker
-	"asw_ranger",
-	"asw_missile_round",	// when ranger dies this becomes the attacker
-	"asw_parasite_defanged",
-	"asw_parasite"
-];
-
-const bCorrosiveSkinKills = 0;
-
-function OnTakeDamage_Alive_Any( victim, inflictor, attacker, weapon, damage, damageType, ammoName )
-{	
-	if ( !victim )
-		return damage;
-
-	if ( victim.GetClassname() == "asw_marine" )
-	{
-		if ( !IsAlien( attacker ) )
-			return damage;
-	
-		if ( !bCorrosiveSkinKills )
-			if ( attacker.GetClassname() == "asw_mortarbug" || attacker.GetClassname() == "asw_harvester" )
-				if ( attacker == inflictor )
-					return damage;
-		
-		return 1000;
-	}
-	else if ( inflictor )
-	{
-		// reduce damage from alien's explosions to other aliens back to normal
-		if ( inflictor.GetClassname() == "asw_boomer_blob" || inflictor.GetClassname() == "asw_mortarbug_shell" )
-			return damage / 12;
-	}
-	
-	return damage;
-}
-
-function IsAlien( handle_attacker )
-{
-	if ( !handle_attacker )
-		return false;
-	
-	local str_attacker = handle_attacker.GetClassname();
-	
-	foreach ( str_classname in g_strAlienClassnames )
-		if ( str_attacker == str_classname )
-			return true;
-			
-	return false;
+g_strAlienClassnames <- [
+	//"asw_drone",	//"sk_asw_drone_damage" "600" in one_hit.txt so drones still kill doors fast
+	//"asw_drone_jumper",
+	//"asw_drone_uber",
+	//"asw_buzzer",	// buzzer one hit killing could be too annoying
+	//"asw_shaman",
+	
+	"asw_queen",
+	"asw_queen_grabber",	// when queen dies this becomes the attacker
+	"npc_headcrab",
+	"npc_headcrab_black",
+	"npc_headcrab_fast",
+	"npc_headcrab_poison",
+	"npc_antlion",
+	"npc_antlion_worker",
+	"grenade_spit",			// when antlion_worker dies this becomes the attacker
+	"npc_antlionguard",
+	"npc_antlionguard_cavern",
+	"npc_zombie",
+	//"npc_zombie_torso",	// doesnt attack, marines only take damage when stepping on it
+	"npc_fastzombie",
+	//"npc_fastzombie_torso",	// doesnt attack, marines only take damage when stepping on it
+	"npc_poisonzombie",
+	
+	"asw_harvester",
+	"asw_shieldbug",
+	"asw_boomer",
+	"asw_boomer_blob",		// when boomer dies this becomes the attacker
+	"asw_mortarbug",
+	"asw_mortarbug_shell",	// when mortarbug dies this becomes the attacker
+	"asw_ranger",
+	"asw_missile_round",	// when ranger dies this becomes the attacker
+	"asw_parasite_defanged",
+	"asw_parasite"
+];
+
+const bCorrosiveSkinKills = 0;
+
+function OnTakeDamage_Alive_Any( victim, inflictor, attacker, weapon, damage, damageType, ammoName )
+{	
+	if ( !victim )
+		return damage;
+
+	if ( victim.GetClassname() == "asw_marine" )
+	{
+		if ( !IsAlien( attacker ) )
+			return damage;
+	
+		if ( !bCorrosiveSkinKills )
+			if ( attacker.GetClassname() == "asw_mortarbug" || attacker.GetClassname() == "asw_harvester" )
+				if ( attacker == inflictor )
+					return damage;
+		
+		return 1000;
+	}
+	else if ( inflictor )
+	{
+		// reduce damage from alien's explosions to other aliens back to normal
+		if ( inflictor.GetClassname() == "asw_boomer_blob" || inflictor.GetClassname() == "asw_mortarbug_shell" )
+			return damage / 12;
+	}
+	
+	return damage;
+}
+
+function IsAlien( handle_attacker )
+{
+	if ( !handle_attacker )
+		return false;
+	
+	local str_attacker = handle_attacker.GetClassname();
+	
+	foreach ( str_classname in g_strAlienClassnames )
+		if ( str_attacker == str_classname )
+			return true;
+			
+	return false;
 }
\ No newline at end of file
diff --git a/reactivedrop/scripts/vscripts/para5_holdout_manager.nut b/reactivedrop/scripts/vscripts/para5_holdout_manager.nut
new file mode 100644
index 000000000..040482af4
--- /dev/null
+++ b/reactivedrop/scripts/vscripts/para5_holdout_manager.nut
@@ -0,0 +1,13 @@
+function Init()
+{
+	AddThinkToEnt( self, "_Think" );
+	_Think();
+}
+
+function _Think()
+{
+	if ( Entities.FindByClassnameNearest( "asw_marine", self.GetOrigin(), 1400.0 ) == null )
+		DoEntFire( "counter_health", "Subtract", "1", 0, null, null );
+	
+	return 1.0;
+}
\ No newline at end of file


Test patch: