Numbered Steps to Reproduce Problem:
1. Compile code below.
2. Run code below.
3. Observe output.
Code Snippet (if applicable) to Reproduce Problem:
/*
Where the expected result is the actual result, the statement which is (correctly) executed is marked with '<-'
Where the expected result is *not* the actual result, both expected and actual are labelled
*/
/world/New()
var/x = 75
var/low = 0
var/mid = 50
var/high = 100
// Statements in the form (CONST to VAR) do not match alone
world.log << "Separate:"
switch(x)
if(0 to high) world.log << "CV" // Expected
else world.log << "CV NO" // Actual
switch(x)
if(low to 100) world.log << "VC" // <-
else world.log << "VC NO"
switch(x)
if(low to high) world.log << "VV" // <-
else world.log << "VV NO"
switch(x)
if(0 to 100) world.log << "CC" // <-
else world.log << "CC NO"
// ...but they *do* if something else is with them. Any case in this switch, moved to the top, will correctly match.
world.log << "Mixed:"
switch(x)
if(0 to high) world.log << "CV" // <-
if(low to 100) world.log << "VC"
if(low to high) world.log << "VV"
if(0 to 100) world.log << "CC"
else world.log << "Else"
// Sometimes it's just clearly incorrect.
world.log << "Three-case:"
switch(x)
if(low to mid) world.log << "Low-mid" // Actual - this switch says x is between 0 and 50; since x=75, it is clearly not.
if(mid to high) world.log << "Mid-hi" // Expected
else world.log << "Else"
del(src)
Expected Results:
Separate:
CV
VC
VV
CC
Mixed:
CV
Three-case:
Mid-hi
Actual Results:
Separate:
CV NO
VC
VV
CC
Mixed:
CV
Three-case:
Low-mid
Does the problem occur:
Every time? Or how often? Every time.
In other games? Yes.
In other user accounts? Unknown.
On other computers? Yes.
When does the problem NOT occur? Unknown.
Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? Unknown. Occurs as described in 510.1338 and 509.1318.
Workarounds: None.
As an aside, somebody is working on something involving syllable structure.