DrawMaterialQuad was probably changed at some point and forgotten here. grep tells me we don't have any other DrawMaterialQuad-calls remaining where a boolean value is passed as the old "fSub" parameter.
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.
Deserializing players neglected to turn an enumerated proplist back into
a live one. This would explode later during player initialization when
someone didn't check that the deserialized value was a real, live
proplist.
The idol was once just a temporary placeholder that was to be replaced immediately. But apparently, we won't replace it anytime soon.
So we should at least give it a basic texture for the next release...
The HP bar was only centered over the object IFF the object's first vertex was in its center. This was not necessarily true for buildings (e.g. targets in GIDL).
Now the vertex position is taken into account when positioning the bar.
The global System.ocg should not cause any errors even if Objects.ocd is not loaded. This means that any functions that depend on certain definitions (e.g. FindLocation) will just not be available.
None of these functions require access to any state of C4Landscape, and
they've only been used from within C4Landscape.cpp, so don't need to be
part of the header.
When clearing parts of the landscape, solid masks must be disabled
beforehand because we don't want to remove the actual solid mask itself.
Theoretically we should also temp remove solid masks before DigFree,
ShakeFree, and all of the other landscape modifiers, just in case
someone overrides the Vehicle material with stupid values.
Pressing the Alt key enters the menu modal loop, which takes control of
the thread that everything happens on. As a quick fix, we'll suppress
this loop for simple Alt key presses, but this will still happen when
the system menu gets opened by Alt+Space or clicking the icon in the
window's title bar.
A more permanent solution would be to detach the message loop from
everything else, by having rendering etc. run in a separate background
thread.
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.
This increases the military power and doesn't look as weird: after jumping off, the boompack will explode on IsProjectileTarget or OCF_Alive (like a normal arrow).
OnProjectileHit is called so that e.g. balloons still pop even if the explosion might not damage them.
The pump is rather complex. This should allow for (new) players to figure out faster whether e.g. the drain pipe is clogged (as opposed to them doing anything wrong).
This can be helpful to see why the observed behavior is triggered in some cases (e.g. why a fish swims straight into a wall (hint: because the wall was left AND right)).
DumpCache() can be used like so:
var brain = FuzzyLogic->Init();
// ..do stuff
brain->DumpCache();
The main difference is now that the check for walls is only done closer to the fish and, to compensate lacking foresight, walls trigger stronger intention to turn.
Additionally, wall vision works slightly differently now, because it's not one vision set (angle) but two distance sets (left: close/far, right: close/far). This
should enable a wall being both left and right (e.g. when swimming in a tunnel) and hopefully lead to a bit straighter trajectory in such cases.
Also, fishes now don't swim 100% straight when they have no sensory input. That looked rather strange in a huge ocean.
PPS: also reduced slimness of fish. Very slim fish looked stupid.