If you're somewhat knowledgeable in hammer and want to help look here

General ReSurfed talk goes here!
TheDeathly
Posts: 214
Joined: Sun Sep 06, 2015 5:04 pm

If you're somewhat knowledgeable in hammer and want to help look here

Post by TheDeathly » Sat Feb 13, 2016 4:22 pm

There's a lot of maps where having lasers on them would help improve running them immensely.

Currently the only one who knows how to do it is butler, and he works a ton and doesn't have the time do it for every map. So this post is here to see if a person or two would be interested in helping out the server by

1. Knowing / learning hammer and lasers within hammer
2. Knowing / learning stripper syntax to implement them in the maps

In order to do the above, you're mostly likely going to need to setup your own dedicated TF2 server which is pretty easy and install metamod and stripper. If you need help with that I can point you in the right direction for installing the addons and such.

Below is the stripper code for one laser beam point.

Code: Select all

add:
{
"origin" "768 -256 -687.268"
"TextureScroll" "35"
"texture" "sprites/laserbeam.spr"
"StrikeTime" "1"
"spawnflags" "1"
"rendercolor" "0 0 255"
"renderamt" "255"
"Radius" "256"
"LightningStart" "beam1_start"
"LightningEnd" "beam1_end"
"life" "0"
"HDRColorScale" "1.0"
"decalname" "white"
"BoltWidth" "8"
"classname" "env_beam"
}
{
"origin" "8498 2478 -620"
"targetname" "beam1_end"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "8498 2478 -2000"
"targetname" "beam1_start"
"angles" "0 0 0"
"classname" "info_target"
}
User avatar
Shadow Sheep
Posts: 525
Joined: Wed Jul 08, 2015 10:22 pm

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by Shadow Sheep » Sat Feb 13, 2016 8:42 pm

Okay, so I didn't know which maps you were thinking of when you said some of them need to have lasers on them. So I did the ones that I could think of needing some. Please develop which maps you were thinking about so I can know how to help. please also tell me how functional what I tried to make is.

All I did was decompiling the maps, placing in the lasers and target, then compiling the map. Then, I extracted the .ent file containing all the info about the entities in the map (Stripper probably edits this file in order to get modifiction to work in-game) and copied the lines referring the lasers and target added in the level.

You can change "rendercolor" "128 255 0" with whatever you want. 128 255 0 is just a suggestion. I made the lasers blue on kitsune2_tf2 though because I thought it was more apropriate to the map's theme on this stage.

Make also sure "spawnflags" "1" is set to 1 on the env_laser entities because if they are set to 0, they will start off and probably nothing will turn them on.

surf_cyanide

Lasers highlighting the border of the trigger on stage2 shortcut.

Code: Select all

{
"origin" "8209 4112 -784"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "6127 4112 -784"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "0"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "5121 4112 -784"
"targetname" "stripper_target1"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
surf_derpis_h

Lasers highlighting the edges of the triggers on below the first ramp of stage 5 and the inside loop of stage 6.

Code: Select all

{
"origin" "-9477 14335 10501"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-9477 11265 10501"
"targetname" "stripper_target1"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-10752 11265 7424"
"targetname" "stripper_target2"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-10752 14335 7424"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-4160 7808 8192"
"targetname" "stripper_target3"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-2816 7808 8192"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target3"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-2816 6528 8192"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target4"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-4160 6528 8192"
"targetname" "stripper_target4"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
surf_derpis
same as derpis_h, except that there is a shortcut possible on stage 3 where you go below first ramp from the side around the trigger (fixed in the _h version, thanks to Pickles).

Code: Select all

{
"origin" "-9477 14335 10501"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-9477 11265 10501"
"targetname" "stripper_target1"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-10752 11265 7424"
"targetname" "stripper_target2"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-10752 14335 7424"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-3316 -1920 9244"
"targetname" "stripper_target6"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-3316 -3200 9244"
"targetname" "stripper_target5"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-1476 -3200 9244"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target5"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-1476 -1920 9244"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target6"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-4552 -1920 9468"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target6"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-4552 -3200 9468"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target5"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-4160 7808 8192"
"targetname" "stripper_target3"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-2816 7808 8192"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target3"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-2816 6528 8192"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target4"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-4160 6528 8192"
"targetname" "stripper_target4"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
surf_insideout_final

There is a "U" shaped leak in the triggering of the second part allowing you to skip the two last jump of it. I highlighted it with lasers.

Code: Select all

{
"origin" "12880 745 -6880"
"targetname" "stripper_target4"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "12914 808 -6880"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "11701 745 -6880"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "11701 808 -6880"
"targetname" "stripper_target1"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "11701 -7319 -6880"
"targetname" "stripper_target3"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "11701 -7382 -6880"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "12914 -7382 -6880"
"targetname" "stripper_target2"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "12880 -7319 -6880"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target4"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "11701 745 -6880"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target4"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "12914 808 -6880"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "11701 -7382 -6880"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target3"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "12880 -7319 -6880"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target3"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}

surf_kitsune2_tf2

Knowing which direction to turn at the stage 9 to stage 10 direction is pretty hard because its perfectly symetrical and you only know on which side you are once you went through the teleporter, which is too late because you are going way too fast to react to the turn properly (especialy if you expected the wrong direction). So I drew an arrow with lasers on each side of the entrance to stage 10 so you know which side to turn at:

Code: Select all

{
"origin" "-10624 -8257 -6912"
"targetname" "stripper_target1"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-10816 -8257 -6912"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "71 0 247"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10688 -8257 -6848"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "71 0 247"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10688 -8257 -6976"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "71 0 247"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10688 -14271 -6848"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "71 0 247"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10816 -14271 -6912"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "71 0 247"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10688 -14271 -6976"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "71 0 247"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10624 -14271 -6912"
"targetname" "stripper_target2"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}

surf_legends_njv

Highlithed a lot of tall triggers along the map (seriously though, who makes 96 units tall triggers?)

Code: Select all

{
"origin" "-8161 8570 -4000"
"targetname" "stripper_target1"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-10944 8570 -4000"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser2"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10944 7546 -4000"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser1"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-8161 7546 -4000"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-6752 3378 -7448"
"targetname" "stripper_target2"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-6752 1025 -7448"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10687 -5376 13808"
"targetname" "stripper_target3"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-9921 -5376 13808"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target3"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10081 -8448 11616"
"targetname" "stripper_target4"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "-8193 -8448 11616"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target4"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-10080 -10193 11616"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target4"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
and this is an experiemnt I did to try to give visual informations on how to do last jump. Basicaly, I extended two lasers horizontaly from the end so you know which height to go. I also made them far from each other, and made them intersect at the end platform. That way, you can judge how far you are from the platform just by mentally projecting what you see from the lasers in order to know where they intersect, which is where you want to land. Tell me what you think about this setup:

Code: Select all

{
"origin" "8160 -9424 -2864"
"targetname" "stripper_target5"
"spawnflags" "0"
"angles" "0 0 0"
"classname" "info_target"
}
{
"origin" "0 -8193 -2864"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target5"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "0 -11559 -2864"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_target5"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
surf_this_njv

Lasers highlighting the outside of where to go in order to take the shortcut that is hidden in the ground.

Code: Select all

{
"origin" "-3432 -639 1799"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser1"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-3432 -513 1799"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser2"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser3"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-3432 -639 1553"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser4"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-3432 -513 1553"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser3"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser4"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "1536 -992 -303"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser5"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser6"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "2112 -992 -303"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser6"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser7"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "2112 -1824 -303"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser7"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser8"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "1536 -1824 -303"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser8"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser5"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "1536 -160 -303"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser9"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser10"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "1536 672 -303"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser10"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser11"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "2112 672 -303"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser11"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser12"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "2112 -160 -303"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser12"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser9"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
The better way in my opinion though is just to remove the func_illusionary hidding the entrance by removing this entity found in the map file:

Code: Select all

{
"model" "*16"
"rendermode" "0"
"renderfx" "0"
"rendercolor" "255 255 255"
"renderamt" "255"
"origin" "1824 -576 -312"
"disableshadows" "0"
"disablereceiveshadows" "0"
"classname" "func_illusionary"
"hammerid" "485"
}
surf_waterworks

Lasers showing the size and location of the gap in the window shortcut near the start of the map.

Code: Select all

{
"origin" "-12160 4648 9260"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser4"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser1"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-12072 4648 9260"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser1"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser2"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-12072 4648 9092"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser2"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser3"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
{
"origin" "-12160 4648 9092"
"width" "2"
"TextureScroll" "0"
"texture" "sprites/laserbeam.spr"
"targetname" "stripper_laser3"
"spawnflags" "1"
"renderfx" "0"
"rendercolor" "128 255 0"
"renderamt" "100"
"NoiseAmplitude" "0"
"LaserTarget" "stripper_laser4"
"framestart" "0"
"dissolvetype" "None"
"damage" "0"
"classname" "env_laser"
}
Last edited by Shadow Sheep on Sun Feb 14, 2016 8:46 am, edited 1 time in total.
TheDeathly
Posts: 214
Joined: Sun Sep 06, 2015 5:04 pm

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by TheDeathly » Sat Feb 13, 2016 10:18 pm

I don't really know what maps actually require lasers. I'm hoping some people who read the forums might put in some suggestions for maps that really need it. I have an hour to kill so I'll throw some of these up and take a look.

edit: Probably shouldn't have done so many sheep, since env_beam is what we want vs env_laser. That was my bad, i didn't realize that and env_beam is solid where env_laser flickers and is annoying.
If you would be able to convert those to env_beams update your post, that would be great. Also did you do S3 derpis sc lasers? That was the first one I went to and didn't see them, but i saw them on S6.
I also think you messed up your formatting a bit, there was surf_insideout on surf_derpis config.
User avatar
Shadow Sheep
Posts: 525
Joined: Wed Jul 08, 2015 10:22 pm

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by Shadow Sheep » Sun Feb 14, 2016 8:34 am

Env_beam and env_lasers are actually very similar. You can make both of them not flicker by replacing "TextureScroll" "35" with "TextureScroll" "0". They both use the same texture that is not a perfectly flat line, so scrolling it gives that flickering effect. If you set it to 0, it will stand perfectly still for both entities.

Now, I went ahead and created one of each side by side in order to see the difference:

Image

You can see env_laser way better than env_beam, but the player can cut the laser with his body while env_beam can go through any objects, including walls. Since in most case, you can stand in the laser without touching the trigger next to it, I think env_laser is fine. Unless of course someone starts greifing and stands noclipped in the laser's location.

So yeah, tell me the one you prefer, but I by far prefer the brighter one to the can't-obstruct one if they both don't flicker.

Also, for the codes, it may be a bit chaotic. I had everything in a 800+ lines files and manually copy-pasted separated parts, so probably mistakes were made. I edited the first post, tell me if its better.
User avatar
Shadow Sheep
Posts: 525
Joined: Wed Jul 08, 2015 10:22 pm

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by Shadow Sheep » Tue May 31, 2016 7:57 am

Edit: Hi, Shadow Sheep from the future here. I have learnt how to use stripper and since a lot of configs here weren't applied, figured I would write the code directly. Youre welcome!

Alright, I have looked a bit into what could be improved with the maps we have and here is what I came up with. Please note that most of it is made using pastebin because otherwise with the 60000 characters limit per post, I probably would have to do at least 3 of them.
  • Lasers to add on maps to highlight invisible limits

    Maps where we should add lasers to give visual informations as to where things that are not visible are in reality.

    Note: I didn't recompile the maps I added the lasers in, so I give you the hammer info on them instead (which is pretty similar since you mainly need the names and the origins of the entities anyway).

    surf_acp

    Highlighted the edge on stage 6 when you have to do a 180° turn below a platform because that trigger is tall.

    Code: Select all

    //highlighting the 180° turn tall trigger of stage 6 using a laser and a target
    add:
    {
    "classname" "info_target"
    "targetname" "target_stripper1"
    "origin" "-4867 -3040 1472"
    }
    add:
    {
    "classname" "env_laser"
    "damage" "0"
    "dissolvetype" "None"
    "NoiseAmplitude" "0"
    "LaserTarget" "target_stripper1"
    "renderamt" "100"
    "rendercolor" "128 255 0"
    "spawnflags" "1"
    "texture" "sprites/laserbeam.spr"
    "TextureScroll" "0"
    "width" "1"
    "origin" "-6397 -3040 1472"
    }


    surf_aircontrol

    Added lasers to show the edges of the playerclips on the bhop bonus.


    surf_halloween_njv

    Added several lasers to outline the high triggers of the map.


    surf_interceptor

    Added lasers on stage 2 to show the limits of where you can go through in the hoops areas.


    I am running out of characters for this post, but also of number of pastebins I can do per 24 hours, so here are all the lasers configs for the following maps:
    surf_kz_protraining_fix
    Added lasers to show where are the limits of the triggers on stage 9, 10 and 11.

    You should also probably raise the strength of the push ladder at the end of bonus 3 because you shouldn't fall off ladders if you reach them in css. Here is its data:

    Code: Select all

    {
    "model" "*131"
    "StartDisabled" "0"
    "speed" "900"
    "spawnflags" "1"
    "pushdir" "-90 0 0"
    "origin" "8777.99 -11228.5 1437"
    "alternateticksfix" "0"
    "classname" "trigger_push"
    "hammerid" "31082"
    }
    surf_mesa_tf2

    Hilghlighted high triggers with lasers near first ramp and before and after the second to last ramp.

    surf_stickybutt_njv

    Added lasers to highlight high triggers at the first big drop and after the first teleporter near cp1.

    surf_stonework2

    Added lasers to highligth the limits of the playerclip in bonus 1.

    surf_sundown_

    Highlighted high triggers near the first and the last square hole you go in in the map.

    surf_the_gloaming_v2

    highlighted higher triggers before the cp1 ramp and after the looping ramp.

    surf_togo

    High triggers at the dome room and at the spin after it (second part of the map).

    surf_torrent_njv

    High triggers after checkpoint 1 and the tall wall before the huge drop before checkpoint 2.

    surf_utopia_njv

    Highleted high triggers at the first slope and on the ground after the 180° curved ramp after checkpoint 1. Also added a red env_beam highliting roughly where thefirst turning right ramp is broken.

    surf_voteforthisone

    Highlited where the push up trigger on bonus 2 stops.

    http://pastebin.com/xa0VgRp3
  • Things that are moving and that really shouldn't

    Obstacles that are not in a consistent place, giving you sometimes fast, sometimes slow options in maps.

    surf_elements_beta3

    This map has three issues. The first is that the purple levels have illusionary traps that give no visual information as to how to predict them. The second is that you need to pick between doorways and one of them is randomly picked by the map as a valid one each map start. The third is that the grey stages have moving obstacles that easily can get desync if a player gets them stuck. I suggest removing the illusionary brushes, the randomness and remove the moving objects.

    The following script removes the func_illusionary blocking the view on the purple stage.
    The doorways are picked randomly. There is a func_breakable that is invisible, a trigger teleport and a func_illusionray (that never changes) on each of them. The func_breakable and teleport is randmoly chosen to break or block the player/ to not teleport or teleport the player at each map start. Since they all have the same origin at each doorways, so its easy to remove all of them together.
    For the teleports at the end of the purple stage, I suggest making the logic_auto that is supposed to pick a random one to be enabled to enable them all instead.
    The func_movelinear and trigger_teleport objects on the last stage are a problem and should be removed:
    I also suggest deleting the logic_auto entities telling the platforms at the end of the bonus to move:

    Code: Select all

    //removing the func_illusionary traps on the purple stage
    filter:
    {
    "model" "*83"
    }
    filter:
    {
    "model" "*89"
    }
    filter:
    {
    "model" "*91"
    }
    filter:
    {
    "model" "*93"
    }
    //removing the blocking doorways made out of trigger_teleport, func_breakable and func_illusionary on the purple stage and the bonus
    filter:
    {
    "origin" "10432 704 -704"
    }
    filter:
    {
    "origin" "10048 704 -704"
    }
    filter:
    {
    "origin" "-1184 -8000 -7104"
    }
    filter:
    {
    "origin" "-1184 -7776 -7104"
    }
    filter:
    {
    "origin" "-1184 -7552 -7104"
    }
    filter:
    {
    "origin" "-928 -7552 -7104"
    }
    filter:
    {
    "origin" "-928 -7776 -7104"
    }
    filter:
    {
    "origin" "-928 -8000 -7104"
    }
    filter:
    {
    "origin" "-672 -7552 -7104"
    }
    filter:
    {
    "origin" "-928 -8000 -7104"
    }
    filter:
    {
    "origin" "-928 -8000 -7104"
    }
    //make the end teleports of the purple stage not get picked randomly by editing the logic_auto
    modify:
    {
    match:
    {
    "origin" "10240 632 -608"
    "spawnflags" "1"
    "classname" "logic_auto"
    "hammerid" "3739"
    "OnMapSpawn" "shadow_case_1,PickRandom,,0,-1"
    "OnMapSpawn" "shadow_case_2,PickRandom,,0,-1"
    }
    delete:
    {
    "OnMapSpawn" "shadow_case_1,PickRandom,,0,-1"
    "OnMapSpawn" "shadow_case_2,PickRandom,,0,-1"
    }
    insert:
    {
    "OnMapSpawn" "shadow_teleport_*,Enable,,0,-1"
    }
    }
    
    //removing the func_movelinear obstructing and trigger_teleport the path on the last stage
    filter:
    {
    "origin" "12156 -2544 -96"
    }
    filter:
    {
    "origin" "12420 -2544 -96"
    }
    filter:
    {
    "origin" "12288 -2032 -80"
    }
    filter:
    {
    "origin" "12448 -944 -400"
    }
    filter:
    {
    "origin" "12448 -944 -384"
    }
    filter:
    {
    "origin" "12128 -1232 -400"
    }
    filter:
    {
    "origin" "12128 -1232 -384"
    }
    filter:
    {
    "origin" "12220 -6528 -4736"
    }
    filter:
    {
    "origin" "12356 -6528 -4736"
    }
    filter:
    {
    "origin" "12288 -6596 -4736"
    }
    filter:
    {
    "origin" "12288 -6460 -4736"
    }
    filter:
    {
    "origin" "12544 1216 -4096"
    }
    filter:
    {
    "origin" "12288 896 -4096"
    }
    filter:
    {
    "origin" "12096 512 -4096"
    }
    filter:
    {
    "origin" "12480 704 -4096"
    }
    filter:
    {
    "origin" "12096 1152 -4096"
    }
    filter:
    {
    "origin" "12352 384 -4096"
    }
    filter:
    {
    "origin" "12032 832 -4096"
    }
    //removing the logic_auto telling the func_movelinear at the end of the bonus to move
    filter:
    {
    "OnMapSpawn" "mech_doors1a,Open,,0,-1"
    }
    //re-centering the now static bonus end bhop blocks
    modifiy:
    {
    match:
    {
    "targetname" "bonus_mech_mover1"
    }
    replace:
    {
    "origin" "64 -7776 -7232"
    }
    match:
    {
    "targetname" "bonus_mech_mover2"
    }
    replace:
    {
    "origin" "448 -7776 -7232"
    }
    match:
    {
    "targetname" "bonus_mech_mover3"
    }
    replace:
    {
    "origin" "576 -7776 -7232"
    }
    match:
    {
    "targetname" "bonus_mech_mover4"
    }
    replace:
    {
    "origin" "960 -7776 -7232"
    }
    }
    //removing the non-solid segment on the first ramp of the purple stage
    filter:
    {
    "origin" "10240 -480 -848"
    }



    surf_qlimax

    On the last stage, there are func_tracktrain stprites going back and forth at different heights and speed, making them unpredictable in a map run. You should set their "startspeed" AND "speed" to 0. Here are the orign of these entities:

    Code: Select all

    //make the tanktrains on the last stage stop moving
    modify:
    {
    match:
    {
    "origin" "4206 -1974 -7247"
    "classname" "func_tracktrain"
    }
    replace:
    {
    "speed" "0"
    }
    }
    modify:
    {
    modify:
    {
    match:
    {
    "origin" "4206 -2042 -7175"
    "classname" "func_tracktrain"
    }
    replace:
    {
    "speed" "0"
    }
    }
    modify:
    {
    match:
    {
    "origin" "4206 -2098 -7095"
    "classname" "func_tracktrain"
    }
    replace:
    {
    "speed" "0"
    }
    }
    modify:
    {
    match:
    {
    "origin" "4206 -1874 -7043"
    "classname" "func_tracktrain"
    }
    replace:
    {
    "speed" "0"
    }
    }
    modify:
    {
    match:
    {
    "origin" "4206 -1958 -7147"
    "classname" "func_tracktrain"
    }
    replace:
    {
    "speed" "0"
    }
    }
    modify:
    {
    match:
    {
    "origin" "4206 -1866 -7147"
    "classname" "func_tracktrain"
    }
    replace:
    {
    "speed" "0"
    }
    }
    modify:
    {
    match:
    {
    "origin" "4206 -1902 -7239"
    "classname" "func_tracktrain"
    }
    replace:
    {
    "speed" "0"
    }
    }
    modify:
    {
    match:
    {
    "origin" "4206 -1814 -7355"
    "classname" "func_tracktrain"
    }
    replace:
    {
    "speed" "0"
    }
    }
    
  • Things that should rotate but actually don't

    Maps where there are func_rotating objects that work fine in counter-strike: source, but don't in tf2. Happily, they can be fixed through stripper.


    surf_jusched_njv

    The func_rotating are fixed, but the rotate distance is set to "99999999999999999999999999999". Setting all the func_door_rotating distance to "9999999999999999999" instead will make them work properly (and that is still enough to make it spin during 1.76 billion years).

    There is a func_brush that is supposed to rotate at checkpoint 1, but this one is solid, meaning that you will collide with it. I suggest setting both of them to not solid.

    Code: Select all

    //reducing the distance of func_door_rotating entities allows them to spin like intended by the map porter
    modify:
    {
    match:
    {
    "classname" "func_door_rotating"
    }
    replace:
    {
    "distance" "9999999999999999999"
    "Solidity" "1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "spin15brush"
    }
    replace:
    {
    "Solidity" "1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "spin16brush"
    }
    replace:
    {
    "Solidity" "1"
    }
    }
    surf_meme

    The dog coins, the kappa in the upward spin, the lenny in the second to last ramp and the mlg logos at start don't rotate. The XD also stop after a moment in the tube. Here is a fix:

    Replace:

    http://pastebin.com/16yrGeME

    With:

    http://pastebin.com/e8WGu9AG

    surf_milkyway

    Replace:
    http://pastebin.com/y0FCEY9a

    With (I added ambient_generic for the replaced func_rotating supposed to emit a sound):
    http://pastebin.com/cMavBEhk


    surf_missing_no

    The rotating fans at spawn are fixed, but never told to rotate. Just add this logic_auto to the map.
    Add:

    Code: Select all

    //adding a logic_auto in the map to tell the func_door_rotating to start spinning
    add
    {
    "origin" "1175.2 -8010.7 -2211"
    "spawnflags" "0"
    "classname" "logic_auto"
    "OnMapSpawn" "fan,Open,,0,-1"
    }
    surf_neoplasma

    I tried to fix this one with deathly, but got the objects ID confused, meaning it doesn't rotate properly. Just delete that Stripper config and do this instead:

    With (I also put the lasers back in again):

    Code: Select all

    //change func_rotating to momentary_rot_button that actually rotate
    filter:
    {
    "model" "*1"
    }
    {
    "model" "*14"
    }
    {
    "model" "*15"
    }
    {
    "model" "*16"
    }
    {
    "model" "*17"
    }
    {
    "model" "*19"
    }
    {
    "model" "*20"
    }
    {
    "model" "*21"
    }
    {
    "model" "*34"
    }
    {
    "model" "*35"
    }
    {
    "model" "*58"
    }
    {
    "model" "*82"
    }
    {
    "model" "*84"
    }
    {
    "model" "*85"
    }
    {
    "model" "*87"
    }
    {
    "model" "*100"
    }
    {
    "model" "*101"
    }
    {
    "model" "*133"
    }
    {
    "model" "*134"
    }
    add:
    {
    "model" "*1"
    "targetname" "rotating"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "50"
    "spawnflags" "96"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-832 0 -32"
    "distance" "18000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    "OnFullyClosed" "rotate_relay,Trigger,,0,-1"
    }
    {
    "model" "*14"
    "targetname" "small_ring1"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "200"
    "spawnflags" "161"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "parentname" "big_ring1"
    "origin" "-64 0 -5376"
    "distance" "72000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*15"
    "targetname" "big_ring1"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "150"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-64 0 -5376"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*16"
    "targetname" "big_ring2"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "150"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "1120 0 13.64"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*17"
    "targetname" "small_ring2"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "200"
    "spawnflags" "161"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "parentname" "big_ring2"
    "origin" "1120 0 13.64"
    "distance" "72000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*19"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "100"
    "spawnflags" "32"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "12432 0 -10047.9"
    "distance" "36000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*20"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "100"
    "spawnflags" "32"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "12432 0 -9919.92"
    "distance" "-36000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*21"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "100"
    "spawnflags" "32"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "12432 0 -9791.92"
    "distance" "36000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*34"
    "targetname" "small_ring3"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "200"
    "spawnflags" "161"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "parentname" "big_ring3"
    "origin" "12432 0 -9424"
    "distance" "72000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*35"
    "targetname" "big_ring3"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "150"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "12432 0 -9424"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*58"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "150"
    "spawnflags" "97"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-9728 -4832 5424"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*82"
    "targetname" "small_ring4"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "200"
    "spawnflags" "161"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "parentname" "big_ring4"
    "origin" "-9728 -4832 5424"
    "distance" "72000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*84"
    "targetname" "big_ring4"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "150"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "6928 0 -5632"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*85"
    "targetname" "small_ring5"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "200"
    "spawnflags" "161"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "parentname" "big_ring5"
    "origin" "-6784 7696 -256"
    "distance" "72000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*87"
    "targetname" "big_ring5"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "150"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-6784 7696 -256"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*100"
    "targetname" "small_ring6"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "200"
    "spawnflags" "161"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "parentname" "big_ring6"
    "origin" "9040 4304 -3664"
    "distance" "72000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*101"
    "targetname" "big_ring6"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "150"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "9040 4304 -3664"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*133"
    "targetname" "big_ring7"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "150"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "3600 -2208 -7760"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "model" "*134"
    "targetname" "small_ring7"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "200"
    "spawnflags" "161"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "parentname" "big_ring7"
    "origin" "3600 -2208 -7760"
    "distance" "72000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0.01,-1"
    }
    {
    "origin" "-64 0 -5376"
    "targetname" "rotate_relay"
    "spawnflags" "0"
    "classname" "logic_relay"
    "hammerid" "79762"
    "OnSpawn" "momentary_rot_button,SetPosition,1,0,-1"
    }
    
    //add lasers to highlight trigger limits
    {
    "origin" "-2995 -512 -32"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "targetname" "laser"
    "spawnflags" "0"
    "rendercolor" "0 0 255"
    "renderamt" "100"
    "parentname" "rotating"
    "NoiseAmplitude" "2"
    "LaserTarget" "target1"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    "hammerid" "810"
    }
    {
    "origin" "1336 -512 -34.3574"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "targetname" "target1"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "parentname" "rotating"
    "NoiseAmplitude" "0"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    "hammerid" "813"
    }
    {
    "origin" "1336 512 -34.3574"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "targetname" "target2"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "parentname" "rotating"
    "NoiseAmplitude" "0"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    "hammerid" "818"
    }
    {
    "origin" "-2995 512 -32"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "targetname" "laser"
    "spawnflags" "0"
    "rendercolor" "0 0 255"
    "renderamt" "100"
    "parentname" "rotating"
    "NoiseAmplitude" "2"
    "LaserTarget" "target2"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    "hammerid" "821"
    }
    {
    "origin" "1336 0 477.643"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "targetname" "target3"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "parentname" "rotating"
    "NoiseAmplitude" "0"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    "hammerid" "824"
    }
    {
    "origin" "-2995 0 480"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "targetname" "laser"
    "spawnflags" "0"
    "rendercolor" "0 0 255"
    "renderamt" "100"
    "parentname" "rotating"
    "NoiseAmplitude" "2"
    "LaserTarget" "target3"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    "hammerid" "827"
    }
    {
    "origin" "-2995 0 -544"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "targetname" "laser"
    "spawnflags" "0"
    "rendercolor" "0 0 255"
    "renderamt" "100"
    "parentname" "rotating"
    "NoiseAmplitude" "2"
    "LaserTarget" "target4"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    "hammerid" "830"
    }
    {
    "origin" "1336 0 -546.357"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "targetname" "target4"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "parentname" "rotating"
    "NoiseAmplitude" "0"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "7632 3169 -4032"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "1"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "stripper_target2"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "7632 5423 -4032"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "1"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "stripper_target1"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "7632 3169 -3073"
    "targetname" "stripper_target2"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "7632 5423 -3073"
    "targetname" "stripper_target1"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "6911 -1376 -3729.31"
    "targetname" "triggertarget"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "6911 -2992 -3729.31"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "triggertarget"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4345.07 -2496 -3743.02"
    "targetname" "ramptarget11"
    "spawnflags" "0"
    "angles" "0 0 0"
    "classname" "info_target"
    }
    {
    "origin" "4388.66 -2496 -3836.98"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget11"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4388.94 -2496 -3837.61"
    "targetname" "ramptarget10"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4440.56 -2496 -3927.41"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget10"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4440.89 -2496 -3927.89"
    "targetname" "ramptarget9"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4500.14 -2496 -4012.85"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget9"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4500.66 -2496 -4013.63"
    "targetname" "ramptarget8"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4567.09 -2496 -4093.1"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget8"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4567.45 -2496 -4093.59"
    "targetname" "ramptarget7"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4640.55 -2496 -4166.97"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget7"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4345.07 -1888 -3743.02"
    "targetname" "ramptarget12"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4388.66 -1888 -3836.98"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget12"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4388 -1888 -3837"
    "targetname" "ramptarget13"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4440 -1888 -3927"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget13"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4440 -1888 -3927"
    "targetname" "ramptarget14"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4500 -1888 -4012"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget14"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4500 -1888 -4013"
    "targetname" "ramptarget15"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4567 -1888 -4093"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget15"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }
    {
    "origin" "4567 -1888 -4093"
    "targetname" "ramptarget16"
    "spawnflags" "0"
    "classname" "info_target"
    }
    {
    "origin" "4640 -1888 -4166"
    "width" "2"
    "TextureScroll" "0"
    "texture" "sprites/laserbeam.spr"
    "spawnflags" "0"
    "renderfx" "0"
    "rendercolor" "128 255 0"
    "renderamt" "100"
    "NoiseAmplitude" "0"
    "LaserTarget" "ramptarget16"
    "framestart" "0"
    "dissolvetype" "None"
    "damage" "0"
    "classname" "env_laser"
    }

    surf_nightmare_fix

    Replace

    Code: Select all

    //Replace func_rotating with momentary_rot_button in order to make the fans on satge 1 spin, also adding a logic_auto to make them start
    filter
    {
    "model" "*89"
    }
    filter
    {
    "model" "*92"
    }
    filter
    {
    "model" "*95"
    }
    add
    {
    "model" "*89"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "100"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-9050 7934 -3672"
    "distance" "3600"
    "disablereceiveshadows" "0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0,-1"
    }
    add
    {
    "model" "*92"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "100"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-9978 7934 -3672"
    "distance" "3600"
    "disablereceiveshadows" "0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0,-1"
    }
    add
    {
    "model" "*95"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "100"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-10938 7934 -3672"
    "distance" "3600"
    "disablereceiveshadows" "0"
    "classname" "momentary_rot_button"
    "OnFullyClosed" "!self,SetPositionImmediately,0,0,-1"
    "OnFullyClosed" "!self,SetPosition,1,0,-1"
    }
    add
    {
    "origin" "-9978 7934 -3672"
    "classname" "logic_auto"
    "OnSpawn" "momentary_rot_button,Trigger,,0,-1"
    }
    surf_sinister

    Replace:

    Code: Select all

    {
    "model" "*313"
    "wait" "4"
    "unlocked_sentence" "0"
    "targetname" "alien"
    "speed" "100"
    "spawnpos" "0"
    "spawnflags" "4108"
    "solidbsp" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-12960 12608 13504"
    "loopmovesound" "0"
    "locked_sentence" "0"
    "lip" "0"
    "ignoredebris" "0"
    "health" "0"
    "forceclosed" "0"
    "dmg" "0"
    "distance" "9999999999999999999999999999999"
    "disableshadows" "0"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "func_door_rotating"
    "hammerid" "2348"
    }
    {
    "origin" "-15088 13056 12944"
    "spawnflags" "1"
    "classname" "logic_auto"
    "hammerid" "9902"
    "OnMapSpawn" "alien,Open,,0,-1"
    }
    With:

    Code: Select all

    {
    "model" "*313"
    "targetname" "alien"
    "startposition" "0"
    "startdirection" "Forward"
    "speed" "100"
    "spawnflags" "33"
    "sounds" "0"
    "solidbsp" "0"
    "returnspeed" "0"
    "rendermode" "0"
    "renderfx" "0"
    "rendercolor" "255 255 255"
    "renderamt" "255"
    "origin" "-12960 12608 13504"
    "distance" "54000"
    "disablereceiveshadows" "0"
    "angles" "0 0 0"
    "classname" "momentary_rot_button"
    "hammerid" "2348"
    "OnFullyClosed" "rotate_relay,Trigger,,0,-1"
    }
    
    {
    "origin" "-15088 13056 12944"
    "targetname" "rotate_relay"
    "spawnflags" "0"
    "classname" "logic_relay"
    "hammerid" "9902"
    "OnSpawn" "rotate_relay,Trigger,,0,-1"
    "OnTrigger" "alien,SetPositionImmediately,0,0,-1"
    "OnTrigger" "alien,SetPosition,1,0.01,-1"
    }
  • Trigger modifications or tweeking to do with maps

    Its a very general topic. Basicaly, anything that is trigger placement or function related in maps, such as anti-cboost triggers from the timer, adding checkpoints, change the destination of a trigger_teleport, etc...

    surf_amplitude_apex

    The start zone of stage 2 and stage 3 has a boosting start that regularly stops you because the start zone of the timer is too closse to it. Both start zone should be remade in order to prevent this issue.

    surf_destiny

    The end zone of the map is after the door while it completly shouldn't. If you landed on the platform that has the door on it, it means that you totally completed the map.

    surf_island

    If you type a timaer command teleporting you outside of the upward push area, you get stuck with upward gravity. There should be a trigger at the start zone that sets your gravity to 1 by default in order to prevent this issue.

    surf_lore

    On the first strage, there is a hoop which eventually deploys and that allow players to beat the stage faster. I think it should be deployed right away. Its is constituted of a func_movelinear hoop, a func_brush for the visual portal in the middle and a trigger_teleport that enables. Here is the origins of thhe three in the same order:

    Code: Select all

    "origin" "15212.5 -488 -2816"
    "origin" "15137 -488 -1581"
    "origin" "15137 -488 -1580"
    Or kill them for a legit stage completion all the time. The outputs are "Open" for the movelinear and "Enable" for both the brush and the teleport. Its "Kill" for all three to remove them.

    surf_minecraft

    The start of the map is TH and crouchboost friendly. That should be fixed using a maxvelocity trigger.


    surf_ny_momentum2_fix

    The map allows a huge skip because of a lack of timer checkpoints. Adding one would fix it.

    surf_orbion

    The boost on stage 1 can be walked off, but can't be jumped. it is because this trigger_push has a filter on it that resets your targetname when you stop touching it, but for some reason, doing so using the trigger_push itself makes it not give you the oush after you left the boost (walking is fine because the boost sticks out a bit so you are in the air when the name change happen, so no speed is lost). I suggest removing the output of that trigger_push and instead put a maxvelocity trigger right after to prevent any crouchboost exploits. here is the data of this trigger:

    Code: Select all

    {
    "model" "*76"
    "StartDisabled" "0"
    "speed" "1000"
    "spawnflags" "1"
    "pushdir" "0 90 0"
    "origin" "-1408 -6305 -3016"
    "filtername" "billy1"
    "alternateticksfix" "0"
    "classname" "trigger_push"
    "hammerid" "3101"
    "OnEndTouch" "!activator,AddOutput,targetname  ,0,-1"
    }
    surf_taq

    There is a button on stage 1 that opens the glass window after the second ramp, saving a lot of time and effort for the people using that shortccut. The button should either be removed or avtivated all the time. Here is its origin:

    Code: Select all

    "origin" "891.89 2492.31 12043.5"

    surf_the_distance

    Sometimes, you can telehop through the slown down fall rainbow teleport. Unless this trick can be done consistently, this exploit should probably get fixed.


    surf_the_gloaming_v2

    The map used to have a side for each team (red on left side, blue on right side) that you get teleported to when failing wherever you are in the map. I think that should still be the case.

    Code: Select all

    //make the teleports of the map teleport you to the correct side of spawn
    modify:
    {
    match:
    {
    "filtername" "Tfilter"
    "target" "Jail2"
    }
    replace:
    {
    "target" "TSpawn"
    }
    }
    modify:
    {
    match:
    {
    "filtername" "ctfilter"
    "target" "Jail2"
    }
    replace:
    {
    "target" "CTSpawn"
    }
    }
    For all the triggers that have a "filtername" "CTfilter" that teleport to Jail1 or 2, replace the target to "CTspawn", and do the opostie with all the "Tfilter" teleports.

    surf_treefort

    The start trigger of stage 4 is stopping you sometimes because it is too close from the boost. In order to disable the baked in trigger, you should take the trigger with this caracteristics:

    Code: Select all

    {
    "model" "*194"
    "wait" "1"
    "targetname" "stage4_start"
    "StartDisabled" "0"
    "spawnflags" "1"
    "origin" "9216 -9216 1792"
    "classname" "trigger_multiple"
    "hammerid" "79970"
    }
    And set its "spawnflags" parameter to 0 so clients can't trigger it. Then, you should manually place a trigger that is hopefully not too big so the issue gets solved.
  • Prophop locations that shouldn't be there

    Spots in map starts that are climbed on in order to get a height advantage, and so more speed. Some of them should either be removed, or promoted.

    surf_aircontrol
    You can climb on top of the first ramp, then do a 180° jump into the start zone to get more than a 128 units and 0.4 seconds of advantage at checkpoint 1.

    surf_exocube

    You can climb on all the clock supposed to show the time you have left to beat the stage.

    surf_forbidden_tomb4

    If you telehop upward, you can climb on the invisible playerclip for a very big height advantage.

    surf_healthy

    You can climb on top of the first ramp and 180° in the start zone for some extra speed.

    surf_lament_njv


    You can climb on the pillars at the start to get a height advantage.
  • Optimizing

    This only concerns one map for now, but it didn't really fit in the other categories. Basically anything that can make a map less performance consuming for players.

    surf_ori_tf

    It has tons of prop_dynamics that are loaded all the time because the map is a huge room and these props don't fade out with distance. All you have to do is to set their "fademindist" and "fademaxdist" to 10000 or less and then the map shouldrun way better. All the prop_dynamics of the map.

    Code: Select all

    //reduce the render distance of prop_dynamics to increase game performance
    modify:
    {
    match:
    {
    "classname" "prop_dynamic"
    }
    replace:
    "fademindist" "18000"
    "fademaxdist" "20000"
    }
  • Add a !teleport location that gives you speed at start

    Maps that have a telehopped start location but that do not have a !teleport location associated.

    surf_hurrr

    This map could use a of !teleport boost I think.

Even though these would greatly help the server, if anything I talked about was not 100% clear, please ask me about it and it will be my pleasure to develop the parts in question.
Last edited by Shadow Sheep on Thu Jan 18, 2018 3:11 pm, edited 6 times in total.
User avatar
Insomnia
Posts: 231
Joined: Wed Aug 20, 2014 9:05 pm
Location: Ontario, Canada
Contact:

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by Insomnia » Tue May 31, 2016 1:27 pm

Just a few notes:

I reported surf_forbidden_tomb4 to Zombie yesterday and the playerclip issue has been fixed. Also, for missing_no, there are lights in the tunnel that you have to spin down onto the last ramp that I believe should be func_illusionary rather than solid. The water boost bhops that are in that map are also fairly inconsistent, and there's a really tall trigger on the obstacle you have to avoid right before the ramp with the 2nd water boost bhop.
Contact me - Steam
User avatar
Nastybutler
Posts: 571
Joined: Sun Jan 12, 2014 7:40 am
Location: St. Louis, MO

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by Nastybutler » Sat Jun 04, 2016 10:42 pm

Insomnia wrote:Just a few notes:

I reported surf_forbidden_tomb4 to Zombie yesterday and the playerclip issue has been fixed. Also, for missing_no, there are lights in the tunnel that you have to spin down onto the last ramp that I believe should be func_illusionary rather than solid. The water boost bhops that are in that map are also fairly inconsistent, and there's a really tall trigger on the obstacle you have to avoid right before the ramp with the 2nd water boost bhop.

Yeah. I'll take the blame for missing_no...I completely forgot to make the lights illusionary when I converted it to njv...was already compiled and uploaded, didn't feel like doing it all over again for something so trivial. Didn't even think about adding a stripper .cfg to it, either.
[Owner] -DB!- tordana: meet me in the playground after school
User avatar
Shadow Sheep
Posts: 525
Joined: Wed Jul 08, 2015 10:22 pm

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by Shadow Sheep » Thu Jun 30, 2016 11:15 am

When porting surf_timewarp, I experimented again the double filtered slanted bhop method that I used in surf_lithium2_fix.

Basically, when I fix a slanted bhop, I replace its collision with a flat bhop with a boost on top of it equivalent to the strength of the speed boost the slanted bhop gives you. The issue is that people can crouchboost it easily and get the speed out of it multiple times by bhopping it twice really fast.

So the way I had it before was to use a filter system, that makes the trigger_push only accept the person who touched the bhop during 0.15 second (a longer period of time than a cboost/double bhop). This fixes the exploit as if you cboost, the second time you will have the correct filter to use the boost will happen before you will lose the boost filter from the first bhop, which completly negates the double boost effect. The issue of this method is that you get pushed during 0.15 seconds, which can matter a lot of someone who has an high ping with bhops since it adds a lot of lag on the client's perspective (which isn' enjoyable).

So I used a double filtered method on surf_lithium2_fix and surf_timewarp in order to cut that pushing delay to 0.02 seconds (0.01 doesn't assure the player to be detected fast enough by the trigger_push because a tick is 0.015 seconds, so you can sometimes lose your filter before the push registered you could use it). I placed a third trigger before the slanted bhop platform which allows you to use the slanted bhop (you can't avoid this trigger or else the bhop wouldn't work if you dodged the third trigger). Then, the second trigger on the bhop platform changes your filter from being able to use this bhop to being able to use the boost, then 0.02 sec later to your default name. The only way to use the slanted bhop again is to go back up and hit the third trigger again, which is why you can put a 0.02 seconds of delay.

The issue testers like rez and flamboyant faustino noticed (and that I didn't when testing) is that it in fact only works 80% of the times, meaning that even though all the filtering changements will occur, the boost will still not push you even if you keep the filter during a whole tenth of a second.

So I went back to the one filter way on surf_timewarp and it now works 100% like it always used to, and now I am submitting this stripper config in order to fix surf_lithium2_fix that also does only work 80% of the times in this current state.

Here we go:

Replace:

Code: Select all

//fixing the stage 2, stage 4 and stage 5 slanted bhops bad fixes
modify:
{
match:
{
"filtername" "filter_can_boost"
"OnStartTouch" "!activator,AddOutput,targetname boosting,0,-1"
"OnStartTouch" "!activator,AddOutput,targetname ,0.02,-1"
}
delete:
{
"filtername" "filter_can_boost"
"OnStartTouch" "!activator,AddOutput,targetname boosting,0,-1"
"OnStartTouch" "!activator,AddOutput,targetname ,0.02,-1"
}
insert:
{
"OnStartTouch" "!activator,AddOutput,targetname boosting,0,-1"
"OnStartTouch" "!activator,AddOutput,targetname ,0.15,-1"
}
}
filter:
{
"OnStartTouch" "!activator,AddOutput,targetname can_boost,0,-1"
}
Last edited by Shadow Sheep on Sat Nov 25, 2017 8:35 pm, edited 1 time in total.
User avatar
Nastybutler
Posts: 571
Joined: Sun Jan 12, 2014 7:40 am
Location: St. Louis, MO

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by Nastybutler » Tue Jul 05, 2016 7:55 am

It does go without saying I do appreciate the work being put into this...because yeah. All this would've made me snap and kick a puppy. IF...I can...(and I'm not making any promises here), I'll toss a few out myself.
[Owner] -DB!- tordana: meet me in the playground after school
User avatar
Shadow Sheep
Posts: 525
Joined: Wed Jul 08, 2015 10:22 pm

Re: If you're somewhat knowledgeable in hammer and want to help look here

Post by Shadow Sheep » Wed Jul 06, 2016 6:41 pm

More stripper stuff! :lol:
  • surf_pandemonium_njv:

    The stage 4 teleport destination is rotated backward, making you face the backwall of the stage start instead of where you need to go. This visibly isn't the case in css, meaning that it should be fixed:


    With:

    Code: Select all

    //make stage 4 teleport destination face the correct way
    modify:
    {
    match:
    {
    "classname" "info_radial_link_controller"
    "targetname" "Start_3"
    }
    replace:
    {
    "classname" "info_teleport_destination"
    }
    insert:
    {
    "angles" "0 180 0"
    }
    }
    (because yes, the mapper teleports you to an info_radial_link_controller entity because info_teleport_destination is just a poor way of expressive your lack of creativity it seems)
  • surf_delusion

    The maps has two problems. The first is that the stage order is randomly generated once the map starts. The second is that the ending has buttons and a teleport that have effect on players, like flashing or shaking the screen, or simply teleport them into a jail.

    Here is the fix so the stages are in the same order as in the ksf video (feel free to change the order of the stages in this config if you think that an other order is better)

    Code: Select all

    //make the stage order be always the same by changing the logic_case outputs, negating the effect of the troll buttons at the end
    modify:
    {
    match:
    {
    "targetname" "step1_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "Case08" "8"
    "OnCase01" "dest1_step1,Test,,0,-1"
    "OnCase02" "dest2_step1,Test,,0,-1"
    "OnCase03" "dest3_step1,Test,,0,-1"
    "OnCase04" "dest4_step1,Test,,0,-1"
    "OnCase05" "dest5_step1,Test,,0,-1"
    "OnCase06" "dest6_step1,Test,,0,-1"
    "OnCase07" "dest7_step1,Test,,0,-1"
    "OnCase08" "dest8_step1,Test,,0,-1"
    }
    insert:
    {
    "OnCase01" "dest1_step1,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "step2_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "OnCase01" "dest2_step2,Test,,0,-1"
    "OnCase02" "dest3_step2,Test,,0,-1"
    "OnCase03" "dest4_step2,Test,,0,-1"
    "OnCase04" "dest5_step2,Test,,0,-1"
    "OnCase05" "dest6_step2,Test,,0,-1"
    "OnCase06" "dest7_step2,Test,,0,-1"
    "OnCase07" "dest8_step2,Test,,0,-1"
    }
    insert:
    {
    "OnCase01" "dest2_step2,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "step3_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "OnCase01" "dest1_step3,Test,,0,-1"
    "OnCase02" "dest3_step3,Test,,0,-1"
    "OnCase03" "dest4_step3,Test,,0,-1"
    "OnCase04" "dest5_step3,Test,,0,-1"
    "OnCase05" "dest6_step3,Test,,0,-1"
    "OnCase06" "dest7_step3,Test,,0,-1"
    "OnCase07" "dest8_step3,Test,,0,-1"
    }
    insert:
    {
    "OnCase01" "dest2_step2,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "step4_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "OnCase01" "dest1_step4,Test,,0,-1"
    "OnCase02" "dest2_step4,Test,,0,-1"
    "OnCase03" "dest4_step4,Test,,0,-1"
    "OnCase04" "dest5_step4,Test,,0,-1"
    "OnCase05" "dest6_step4,Test,,0,-1"
    "OnCase06" "dest7_step4,Test,,0,-1"
    "OnCase07" "dest8_step4,Test,,0,-1"
    }
    insert:
    {
    "OnCase01" "dest3_step3,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "step5_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "OnCase01" "dest1_step5,Test,,0,-1"
    "OnCase02" "dest2_step5,Test,,0,-1"
    "OnCase03" "dest3_step5,Test,,0,-1"
    "OnCase04" "dest5_step5,Test,,0,-1"
    "OnCase05" "dest6_step5,Test,,0,-1"
    "OnCase06" "dest7_step5,Test,,0,-1"
    "OnCase07" "dest8_step5,Test,,0,-1"
    }
    insert:
    {
    "OnCase01" "dest4_step4,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "step6_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "OnCase01" "dest1_step6,Test,,0,-1"
    "OnCase02" "dest2_step6,Test,,0,-1"
    "OnCase03" "dest3_step6,Test,,0,-1"
    "OnCase04" "dest4_step6,Test,,0,-1"
    "OnCase05" "dest6_step6,Test,,0,-1"
    "OnCase06" "dest7_step6,Test,,0,-1"
    "OnCase07" "dest8_step6,Test,,0,-1"
    }
    insert:
    {
    "OnCase01" "dest5_step5,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "step7_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "OnCase01" "dest1_step7,Test,,0,-1"
    "OnCase02" "dest2_step7,Test,,0,-1"
    "OnCase03" "dest3_step7,Test,,0,-1"
    "OnCase04" "dest4_step7,Test,,0,-1"
    "OnCase05" "dest5_step7,Test,,0,-1"
    "OnCase06" "dest7_step7,Test,,0,-1"
    "OnCase07" "dest8_step7,Test,,0,-1"
    }
    insert:
    {
    "OnCase01" "dest6_step6,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "step8_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "OnCase01" "dest1_step8,Test,,0,-1"
    "OnCase02" "dest2_step8,Test,,0,-1"
    "OnCase03" "dest3_step8,Test,,0,-1"
    "OnCase04" "dest4_step8,Test,,0,-1"
    "OnCase05" "dest5_step8,Test,,0,-1"
    "OnCase06" "dest6_step8,Test,,0,-1"
    "OnCase07" "dest8_step8,Test,,0,-1"
    }
    insert:
    {
    "OnCase06" "dest7_step7,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "targetname" "step9_case"
    }
    delete:
    {
    "Case02" "2"
    "Case03" "3"
    "Case04" "4"
    "Case05" "5"
    "Case06" "6"
    "Case07" "7"
    "OnCase01" "dest1_step9,Test,,0,-1"
    "OnCase02" "dest2_step9,Test,,0,-1"
    "OnCase03" "dest3_step9,Test,,0,-1"
    "OnCase04" "dest4_step9,Test,,0,-1"
    "OnCase05" "dest5_step9,Test,,0,-1"
    "OnCase06" "dest6_step9,Test,,0,-1"
    "OnCase07" "dest7_step9,Test,,0,-1"
    }
    insert:
    {
    Case07" "dest7_step9,Test,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "model" "*143"
    }
    delete:
    {
    "OnPressed" "hudhint_gravbutton,ShowHudHint,,0,-1"
    "OnPressed" "!activator,AddOutput,targetname f_p_gethurt_grav,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "model" "*147"
    }
    delete:
    {
    "OnPressed" "snd_overlay,PlaySound,,0,-1"
    "OnPressed" "scn_overlay,StartOverlays,,0,-1"
    "OnPressed" "scn_overlay,StopOverlays,,1,-1"
    }
    }
    modify:
    {
    match:
    {
    "model" "*150"
    }
    delete:
    {
    "OnPressed" "shk_shake,StartShake,,0,-1"
    "OnPressed" "shk_shake,StopShake,,7,-1"
    "OnPressed" "shakebuttonsound,PlaySound,,0,-1"
    "OnPressed" "shakebuttonsound,StopSound,,7,-1"
    }
    }
    modify:
    {
    match:
    {
    "model" "*152"
    }
    delete:
    {
    "OnPressed" "killbuttonsound,PlaySound,,0,-1"
    }
    }
    modify:
    {
    match:
    {
    "model" "*191"
    }
    delete:
    {
    "OnStartTouch" "timerteleport,Enable,,0,-1"
    "OnStartTouch" "lift_tele,Disable,,0,-1"
    "OnStartTouch" "lift_tele_fx,Disable,,0,-1"
    "OnStartTouch" "timerteleport,Disable,,0.1,-1"
    }
    }
    Now the map should totally be playable after this.
  • surf_bob

    The map's issue is that it has secret teleports allowing you to skip stages, which is not supported by the deterministic timer ran by this server. Here is the data of the trigger_teleport to delete in order to prevent people from doing that:

    Code: Select all

    //remove the teleport shortcuts in the map
    filter:
    {
    "model" "*22"
    }
    filter:
    {
    "model" "*28"
    }
    filter:
    {
    "model" "*42"
    }
    filter:
    {
    "model" "*108"
    }
    
    Now that I think of it, this is unnecessary because if you go from lets say stage 3 to stage 5 start without going to stage 4 start, it will start a stage 5 run without making the stage 3 time count. But I guess I made the stripper config for it anyway.
Last edited by Shadow Sheep on Sat Nov 25, 2017 9:29 pm, edited 1 time in total.
Post Reply