Randvar: Difference between revisions
Helixhorned (talk | contribs) mention that randvar uses the "game" PRNG. Which is actually krand() in engine.c, but I hope it's clear what is meant. |
Rob Anybody (talk | contribs) m clarify rand range |
||
Line 2: | Line 2: | ||
'''randvarvar''' <gamevar> <value> | '''randvarvar''' <gamevar> <value> | ||
This function generates a random number (using the shared "game" PRNG) from 0 to <value> and assigns it to <gamevar>. | This function generates a random number (using the shared "game" PRNG) from 0 to <value> (inclusive), and assigns it to <gamevar>. | ||
This command should not be used in unsynchronized code or it will desynchronize multiplayer games. See the list of [[unsynchronized events]] for a full list. | This command should not be used in unsynchronized code or it will desynchronize multiplayer games. See the list of [[unsynchronized events]] for a full list. |
Revision as of 13:10, 2 August 2020
randvar <gamevar> <value>
randvarvar <gamevar> <value>
This function generates a random number (using the shared "game" PRNG) from 0 to <value> (inclusive), and assigns it to <gamevar>.
This command should not be used in unsynchronized code or it will desynchronize multiplayer games. See the list of unsynchronized events for a full list.
In prior releases of DOS EDuke, randvar contained a flaw that would desynchronize multiplayer regardless of where the command was used. The bug has since been corrected for post-1.0 releases of EDuke32.
Commands with an additional "var" suffix take gamevars rather than constants or defined labels for their inputs. As an alternate short form, "varvar" can be dropped from these commands; for example ife serves an an alias for ifvarvare.