Sulfur

Sulfur rc4

Jekyllson

L3: Member
Jun 20, 2015
115
67
I was playing Sulfur again the other day, and I noticed a graphical glitch with the "curtain" models disappearing from view too early.

20160410192104_1.jpg

The left curtain should still stay visible here, but it disappears from shot when you turn.

20160410192121_1.jpg

The same glitch seems to hold for all the curtains of this type. In particular, if you stand up against the RED and BLU "bathroom curtains", they disappear, letting you look inside:

20160410192048_1.jpg

I also found a few places you get stuck in.

20160410190428_1.jpg

20160410190748_1.jpg

20160410191001_1.jpg

Finally, I noticed a spot under the water surface on D that isn't affected by the damage-over-time heat effect:

20160410190131_1.jpg
 

Asd417

Sample Text
aa
Mar 20, 2016
1,451
1,031
Anti-gravity flower pot powered by magic
20170116231309_1.jpg

Also there's this weird bug: Sometimes when the match starts, blu timer starts from 2:59 rather than 3:00.
 

Hydrogen

MvM Maniac
Apr 5, 2017
84
181
there's a little bug, overtime, the announcer keeps like O O O O O OVER O O O until the other team cap D or the current team win

@Benoist3012 and I figured out why this happens. There is a third hidden timer that's used during the setup period. The culprit is here:

https://github.com/alliedmodders/hl...42b/game/shared/teamplay_round_timer.cpp#L863

This is the 3rd hidden timer entity's think function during setup (CTeamRoundTimer = team_round_timer), which gets triggered once every 50 ms. The think function sets overtime to 0 on gamerules (CTFGameRules::m_bInOvertime) every 50 ms. Because she forgot to pause this timer, the 3rd timer's think entity kept setting the overtime boolean to 0 during the whole game. When the koth timers are >= 0, this is of no concern because there's no overtime anyway, so setting something that's already 0 to 0 has no effect. It only comes about when one of the timers run down.

During the actual game when both teams can capture the control points, the think function for the 2 koth timers is:

https://github.com/alliedmodders/hl...42b/game/shared/teamplay_round_timer.cpp#L948

Each koth timer calls its own think function every 50 ms. When one of those two timers on the HUD reaches 0 seconds, this is triggered:

https://github.com/alliedmodders/hl...2b/game/shared/teamplay_round_timer.cpp#L1003

So now you got the 3 timers fighting each other: (I'm using 2 as an example here)

(hidden timer) CTeamRoundTimer::RoundTimerSetupThink --> sets overtime to 0
[50 ms later]
(koth timer) CTeamRoundTimer::RoundTimerThink --> sets overtime to 1
[50 ms later]
(hidden timer) CTeamRoundTimer::RoundTimerSetupThink --> sets overtime to 0
[50 ms later]
(koth timer) CTeamRoundTimer::RoundTimerThink --> sets overtime to 1

And this keeps looping itself forever and forever which causes the overtime spam.

The fix is to either:
- Kill the 3rd timer
- Pause the 3rd timer

When the 3rd timer is paused the overtime bug doesn't occur because the think function quits before setting the overtime boolean (exits at line 859, line 863 sets the overtime boolean):

https://github.com/alliedmodders/hl...42b/game/shared/teamplay_round_timer.cpp#L856

Many thanks to @Benoist3012 for helping me track the root cause of the bug and testing out the fixes.
 

Freyja

aa
Jul 31, 2009
2,994
5,813
- Fixed the overtime bug (Thanks Hydrogen, Benoist! Huge help!)
- Improved visuals of final point
- Swapped in new jungle foliage
- Added detail sprites (Why weren't these here before?)
- Fixed curtain models disappearing
- Improved cherry trees (most places)
- Other small visual tweaks

Read the rest of this update entry...
 

Joel

L1: Registered
Nov 19, 2016
28
34
Just walked around RC1 as scout with atomizer to find any minor things that would barely matter in actual play, but whatever.
20171209200458_1.jpg
Odd brushwork in the greenhouse area between A and D.
20171209200522_1.jpg
Peek-in from top of framing in the same area that allows you to see what I assume to be the bottom of the skybox and the area past the wall.
20171209200911_1.jpg
One of the textures surrounding C mustn't have been packed.
20171209201211_1.jpg
I feel like this water is a little jarring, seems too dark of a blue.
 

Genevra

L1: Registered
Nov 14, 2022
2
1
always loved this map, never knew where it came from, it's pretty and relaxing
 

Pierogi

L1: Registered
May 24, 2023
11
2
Found an issue in a community server (Uncletopia). Not sure if it applies to all servers but posting it here so you can test it.

The round played out with BLU capping D first, then A second. After that, the timer went below 30 seconds, and they capped B. This put the timer down to a negative value, and this did not end the round. The round only ended when RED captured the point and BLU recaptured it.

I did some testing and found that zz_blue_koth_timer does not fire its OnFinished output when it goes to zero in this way. Nor does it fire any output when the time added or taken away jumps past the critical value.

You have a couple options for fixing the issue:
  • Use vscript to test the timer value of zz_blue_koth_timer after time is taken away. If the time is less than or equal to zero, you can just set the time to 1. Or, more robustly: If BLU own D; trigger your early round-end logic (probably a relay to give all points to BLU and set point bases accordingly). If BLU don't own D; add an OnCapTeam2 output to your final trigger_capture_area (you'll need to name it as it isn't already in the version I decompiled) to trigger your early round-end logic.
  • Use On1MinRemaining and On30SecRemaining outputs to control what to do if a point is capped, without vscript. You've certainly messed around with these so I won't introduce you to how to give them outputs. Here, you'd have a math_counter, initial value zero. On1MinRemaining would add outputs to each of the capture areas for A and B (you'll need to name them) to increment the counter when BLU caps. You don't need to do C because your team_control_point_master doesn't restrict BLU from winning via ownership of all points. On30SecRemaining would increment the counter (independently). The counter would OutValue -> SetValueCompare to a logic_compare with compare value 2. OnEqualTo (and I suppose OnGreaterThan for completeness), trigger your round end logic as aforementioned. This method is less robust and only works because each point lowers BLU's timer by 30 seconds, but avoids vscript. If you ever wanted to change these again, you'd need to use another method or ensure that it lines up with the available outputs. Race condition where BLU caps A or B on the same tick as the timer hits 30 seconds needs to be tested. If it doesn't end the game and it ends up in the same state, adding a delay of 0.05 or so on the addtime outputs on the capture areas should fix it, but it's a bit jank.

Hope all goes well.

Edit: clarified some stuff about adding outputs to trigger_capture_areas. Edit 2: Race condition disclaimer.

Pierogi
 
Last edited:

Pierogi

L1: Registered
May 24, 2023
11
2
Another issue: Roof above A point uses VPhysics for collission, walking over it causes your view to rapidly jitter up and down. Explosives seem to be fine but it's probably best to assume they're not. I'd suggest either clipping it off entirely (like the blu roofs are) or using blockbullet2 brushes to clip it properly. Also behind the point there are some unclipped details on the wall with the hose and tap.
 

Pierogi

L1: Registered
May 24, 2023
11
2
Sentries can see through the bridge from RED spawn to the control point, but can't shoot through it. Other stuff around the point is probably also affected. This means that they lock onto targets and become useless until they lose LOS or are wrangled.
 

Jacov

L1: Registered
Feb 25, 2021
33
15
Hello, thank you for the map.

Couple of problems.

1) You can build teleporters inside these beams near BLU spawn at A and trap people there:
1689511227084.png


2) You can get in the waterfall hole under the A. Soldier can use this to infinetely tauntkill people on point:
1689511263162.png
 

Freyja

aa
Jul 31, 2009
2,994
5,813
Freyja updated Sulfur with a new update entry:

RC4 - Official release parity

Sulfur rc4

  • Fixed a case where blu could win too well and lock the timer, not correctly allowing them to win when their timer hit 0 and they owned the main control point
  • Fixed a case where blu could contest themselves from winning
  • Fixed a case where you could build a teleporter under a platform and become trapped
  • Altered BLU spawn positions to better lead players towards the point they should be attacking during different states of the game
  • Altered RED spawn positons to...

Read the rest of this update entry...