local COLOR={ red= {1.0, 0.0, 0.0}, fire= {1.0, 0.4, 0.0}, orange= {1.0, 0.6, 0.0}, yellow= {1.0, 1.0, 0.0}, lime= {0.7, 1.0, 0.0}, jade= {0.5, 1.0, 0.0}, green= {0.0, 1.0, 0.0}, aqua= {0.0, 1.0, 0.6}, cyan= {0.0, 1.0, 1.0}, navy= {0.0, 0.7, 1.0}, sea= {0.0, 0.4, 1.0}, blue= {0.2, 0.2, 1.0}, violet= {0.4, 0.0, 1.0}, purple= {0.7, 0.0, 1.0}, magenta= {1.0, 0.0, 1.0}, wine= {1.0, 0.0, 0.5}, lRed= {1.0, 0.5, 0.5}, lFire= {1.0, 0.7, 0.5}, lOrange= {1.0, 0.8, 0.3}, lYellow= {1.0, 1.0, 0.5}, lLime= {0.8, 1.0, 0.4}, lJade= {0.6, 1.0, 0.4}, lGreen= {0.5, 1.0, 0.5}, lAqua= {0.4, 1.0, 0.7}, lCyan= {0.5, 1.0, 1.0}, lNavy= {0.5, 0.8, 1.0}, lSea= {0.4, 0.7, 1.0}, lBlue= {0.7, 0.7, 1.0}, lViolet= {0.7, 0.4, 1.0}, lPurple= {0.8, 0.4, 1.0}, lMagenta= {1.0, 0.5, 1.0}, lWine= {1.0, 0.4, 0.7}, dRed= {0.6, 0.0, 0.0}, dFire= {0.6, 0.3, 0.0}, dOrange= {0.6, 0.4, 0.0}, dYellow= {0.6, 0.6, 0.0}, dLime= {0.5, 0.6, 0.0}, dJade= {0.3, 0.6, 0.0}, dGreen= {0.0, 0.6, 0.0}, dAqua= {0.0, 0.6, 0.4}, dCyan= {0.0, 0.6, 0.6}, dNavy= {0.0, 0.4, 0.6}, dSea= {0.0, 0.2, 0.6}, dBlue= {0.1, 0.1, 0.6}, dViolet= {0.2, 0.0, 0.6}, dPurple= {0.4, 0.0, 0.6}, dMagenta= {0.6, 0.0, 0.6}, dWine= {0.6, 0.0, 0.3}, black= {0.0, 0.0, 0.0}, dGray= {0.3, 0.3, 0.3}, gray= {0.6, 0.6, 0.6}, lGray= {0.8, 0.8, 0.8}, white= {1.0, 1.0, 1.0}, } for k,v in next,{ R='red',F='fire',O='orange',Y='yellow',L='lime',J='jade',G='green',A='aqua',C='cyan',N='navy',S='sea',B='blue',V='violet',P='purple',M='magenta',W='wine', lR='lRed',lF='lFire',lO='lOrange',lY='lYellow',lL='lLime',lJ='lJade',lG='lGreen',lA='lAqua',lC='lCyan',lN='lNavy',lS='lSea',lB='lBlue',lV='lViolet',lP='lPurple',lM='lMagenta',lW='lWine', dR='dRed',dF='dFire',dO='dOrange',dY='dYellow',dL='dLime',dJ='dJade',dG='dGreen',dA='dAqua',dC='dCyan',dN='dNavy',dS='dSea',dB='dBlue',dV='dViolet',dP='dPurple',dM='dMagenta',dW='dWine', D='black',dH='dGray',H='gray',lH='lGray',Z='white', --Remain letter: EIKQTUX }do COLOR[k]=COLOR[v] end setmetatable(COLOR,{__index=function(_,k) error("No color: "..tostring(k)) end}) do--Random generators local rnd=math.random local list_norm={'red','fire','orange','yellow','lime','jade','green','aqua','cyan','navy','sea','blue','violet','purple','magenta','wine'} local len_list_norm=#list_norm function COLOR.random_norm() return COLOR[list_norm[rnd(len_list_norm)]] end local list_bright={'lRed','lFire','lOrange','lYellow','lLime','lJade','lGreen','lAqua','lCyan','lNavy','lSea','lBlue','lViolet','lPurple','lMagenta','lWine'} local len_list_bright=#list_bright function COLOR.random_bright() return COLOR[list_bright[rnd(len_list_bright)]] end local list_dark={'dRed','dFire','dOrange','dYellow','dLime','dJade','dGreen','dAqua','dCyan','dNavy','dSea','dBlue','dViolet','dPurple','dMagenta','dWine'} local len_list_dark=#list_dark function COLOR.random_dark() return COLOR[list_dark[rnd(len_list_dark)]] end end do--Rainbow generators local sin=math.sin function COLOR.rainbow(phase) return sin(phase)*.4+.6, sin(phase+2.0944)*.4+.6, sin(phase-2.0944)*.4+.6 end function COLOR.rainbow_light(phase) return sin(phase)*.2+.7, sin(phase+2.0944)*.2+.7, sin(phase-2.0944)*.2+.7 end function COLOR.rainbow_dark(phase) return sin(phase)*.2+.4, sin(phase+2.0944)*.2+.4, sin(phase-2.0944)*.2+.4 end function COLOR.rainbow_gray(phase) return sin(phase)*.16+.5, sin(phase+2.0944)*.16+.5, sin(phase-2.0944)*.16+.5 end end return COLOR