Search less often. Search for less. And use the proper inventory interface.
Before (first number is relative to MovingBrick.FxMoveVerticalTimer, because that's relatively constant (I guess?)).
59x 00826ms Global.FxBlessTheKingTimer
38x 00537ms Global.FxDeathByFireTimer
1x 00014ms MovingBrick.FxMoveVerticalTimer
After
41x 00328ms Global.FxBlessTheKingTimer
27x 00213ms Global.FxDeathByFireTimer
1x 00008ms MovingBrick.FxMoveVerticalTimer
The only use of C4RTF in its final moments was parsing out plain text
from RTF files anyway, so why even go to all the trouble instead of just
storing plain text in the beginning?
Most kills do not count in this map or are suicides or environment-kills. The round is currently nearly unplayable as Deathmatch as it takes an eternity (also due to penalty points).
Also move all object sounds to global Sound.ocg so they are still played.
This is to prevent naming collisions. All sounds are moved because otherwise all scripts would have to be adjusted. Also, the distinction between sounds in definitions and sounds in Sound.ocg was rather arbitrary.
It will also ensure most sounds are reloaded when sound is turned off temporarily, although that should better be fixed properly.
The Clonks' positions are now a bit random, too. I doubt that will have a noticable tactical influence on the game.
Buut it probably looks cooler when the effects are not all in one place.
This prevents tumbling Clonks from remaining "stuck" in the wind channel for a long time with some bad luck (which probably happened at least once per round).
The change also increases the speed that objects receive when being thrown into the channel - but from short testing it didn't look bad.
Removed granite at the lower right spawn point so clonk won't get stuck.
Because there was no background map, the moving platforms removed the material if earth pixels landed on them.
This better reflects what the function does. "ProjectileHit" was never used solely for projectiles. Neither was everything of that callback ever needed in all places, which resulted in weird flag-parameter hacking and OnStrike-callbacks. Splitting this up also allows customizing different parts of the behavior further (i.e. tumbling) without adding a hundred parameters or flags to the original function.