Try this version. It takes the current value and makes it a percentage lighter / darker than it's original colour:
setVirtualResolution(640,480)
global red as float
global green as float
global blue as float
global currentRed as float
global currentGreen as float
global currentBlue as float
red = random(0,255)
green = random(0,255)
blue = random(0,255)
currentRed = red
currentGreen = green
currentBlue = blue
v# = random(0,100)*0.01
global spr1 as integer
spr1 = createSprite(0)
setSpriteSize(spr1,160,240)
setSpritePositionByOffset(spr1,240,240)
setSpriteColor(spr1,red,green,blue,255)
global spr2 as integer
spr2 = createSprite(0)
setSpriteSize(spr2,160,240)
setSpritePositionByOffset(spr2,400,240)
setSpriteColor(spr2,red,green,blue,255)
mode = 1
do
print("r="+str(currentRed))
print("b="+str(currentBlue))
print("g="+str(currentGreen))
print("v="+str(v#))
select mode
case 1
rem wait for click
print("Left-Click to go to "+str(v#*100,0)+"% lightness")
if getPointerPressed()>0
mode = 2
endif
endcase
case 2
done = setLightness(v#)
if done>0
mode = 3
endif
endcase
case 3
print("Left-Click to try again")
if getPointerPressed()>0
mode = 1
v# = random(0,100)*0.01
red = random(0,255)
blue = random(0,255)
green = random(0,255)
currentRed = red
currentGreen = green
currentBlue = blue
setSpriteColor(spr1,red,green,blue,255)
setSpriteColor(spr2,red,green,blue,255)
endif
endcase
endselect
sync()
loop
function setLightness(v#)
done = 0
if v#>0.5
v# = (v#-0.5)*2.0
tr# = red + v#*(255 - red)
tg# = green + v#*(255 - green)
tb# = blue + v#*(255 - blue)
else
v# = v#*2.0
tr# = v#*red
tg# = v#*green
tb# = v#*blue
endif
cr# = currentRed
cg# = currentGreen
cb# = currentBlue
dr# = tr# - cr#
dg# = tg# - cg#
db# = tb# - cb#
currentRed = cr# + dr#*0.02
currentGreen = cg# + dg#*0.02
currentBlue = cb# + db#*0.02
if abs(dr#)<0.1
done = 1
endif
setSpriteColor(spr2,currentRed,currentGreen,currentBlue,255)
endfunction done
this.mess = abs(sin(times#))