What is the defect in SDT.swf?
obj.Strand::updateStrand() contains a special clause which attempts to destroy any Strand which has fallen too far outside the visible gameplay area. Imagine that we're playing at a high zoom level (the girl's breasts are at the bottom of the screen; the rest of her torso is hidden) and that the characters are far apart.
The guy ejaculates. The semen strands will fall to the ground and form a "puddle" near her knees. They won't actually be visible, but they'll still
reduce FPS to a crawl. The special clause would fix this problem by culling those strands. The player might be surprised to subsequently zoom out and find that the "puddle" is missing, but we can assume that they zoomed in
deliberately on the elements that interest them (e.g. face, breasts, buttocks, whatever). Therefore it's reasonable for the game to cull errant strands in order to preserve runtime performance.
Great idea. Unfortunately, the code is flawed and its conditional statement will never be triggered during normal gameplay. The activation threshold is somewhere around
g.sceneZoom=4.0 but the game caps out at
g.sceneZoom=1.0 .
Unfortunately, the flawed conditional statement gets triggered very easily by Animtools, because Animtools can set
g.sceneZoom to a negative value. The actual visualization/scaling logic of the game has no problem with a negative zoom parameter, but this one useless block of ancient performance-enhancement code gets triggered. It believes that the gameplay area is infinitely small (due to the negative zoom value) and concludes that
every semen strand has fallen outside the gameplay area. Therefore it culls all semen strands which were present in the scene before the player activated the zoomed-in Animtools position, and it also culls any
newly-generated strands before they've even left the penis.
Solution? Proxy the
obj.Strand::updateStrand() method and kill the special clause.
Are there any plans to expand the mod?
A subsequent version of this mod could attempt to fulfill the
original intent of the clause (presumably via globalToLocal lookups instead of an arbitrary inequality condition).
This work is on hold pending initial testing and feedback. If the mod gives rise to compatibility errors (or general instability) then there's no sense in adding more code until the basics have been sorted out.
Are there any limitations?
The correction is applied to semen strands only. Spit and drool strands are presumably
still subject to the bug. I excluded them for the sake of scope control; I didn't want to worry about secondary consequences until the basic mod behaviour was in-place and verified.