<% gotome=Request.ServerVariables("script_name") sServer=Request.ServerVariables("SERVER_NAME") if instr(sServer,"games.23ae.com") then response.redirect "http://www.23ae.com/games" sDSN="DRIVER={MySQL ODBC 3.51 Driver};SERVER=mysql251.secureserver.net;DATABASE=23AEGames;USER=23AEGames;PASSWORD=pooponastick23;OPTION=3;" Session.Timeout=60 EchelonAccess=0 EchelonID=session("EchelonID") 'Get session ID data if isnumeric(EchelonID) then 'If session not null (else cint will error) if EchelonID>0 then EchelonAccess=1 'if session ID exists, log in end if 'if session ID data does not exist, EchelonAccess still =0 (no attempt) if EchelonAccess<>1 then 'Check for cookie EchelonCookieUser=Request.Cookies("GameUser") 'Get the username cookie if len(EchelonCookieUser)>0 then 'If cookie not empty (else trim will fail) aEchelonUserData=GetEchelonUser(EchelonCookieUser) 'get user info from DB if isarray(aEchelonUserData)=False then EchelonAccess=2 'username not found - do you wish to register? else 'if username found in db EchelonCookiePassword=Request.Cookies("GamePass") 'Get the password cookie too if EchelonCookiePassword=trim(aEchelonUserData(2,0)) then 'if password cookie matches database session("EchelonID")=aEchelonUserData(0,0) 'write to session EchelonAccess=1 'log in else 'if password incorrect EchelonAccess=3 'failed attempt - password reminder EchelonSuspectID=EchelonCookieUser end if end if end if 'if cookie does not exist, EchelonAccess still =0 (no attempt) end if if EchelonAccess<>1 then 'Check for login data EchelonFormUser=trim(Request.Form("GameUser")) 'Get username from form EchelonFormPassword=trim(Request.Form("GamePass")) 'Get the password data too if len(EchelonFormUser)>0 then 'If formfield not null (else trim will fail) aEchelonUserData=GetEchelonUser(EchelonFormUser) 'get user info from DB if isarray(aEchelonUserData)=False then EchelonAccess=2 'username not found - do you wish to register? EchelonFormRegister=trim(Request.Form("Register")) if EchelonFormRegister="Yes" then if len(EchelonFormPassword)<3 then EchelonAccess=4 else Set Conn = CreateObject("ADODB.Connection") sSQL = "INSERT INTO C_Users (nLevel,nDisabled,sUsername,sPassword,sDisplayName,dCreate,dMod) " 'add user to DB sSQL = sSQL & "VALUES (1,0,'"&EchelonFormUser&"','"&EchelonFormPassword&"','"&EchelonFormUser&"',Now(),Now())" Conn.Open sDSN Conn.Execute(sSQL) Conn.close aEchelonUserData=GetEchelonUser(EchelonFormUser) session("EchelonID")=aEchelonUserData(0,0) 'write to session EchelonFormRememberMe=trim(Request.Form("RememberMe")) if EchelonFormRememberMe="Yes" then Response.Cookies("GameUser")=EchelonFormUser Response.Cookies("GameUser").Expires = Date + 1000 Response.Cookies("GamePass")=EchelonFormPassword Response.Cookies("GamePass").Expires = Date + 1000 end if EchelonAccess=1 'log in firsttime=1 end if end if else 'if username found in db if EchelonFormPassword=aEchelonUserData(2,0) then 'if password from form matches database session("EchelonID")=aEchelonUserData(0,0) 'write to session EchelonFormRememberMe=trim(Request.Form("RememberMe")) if EchelonFormRememberMe="Yes" then Response.Cookies("GameUser")=EchelonFormUser Response.Cookies("GameUser").Expires = Date + 364 Response.Cookies("GamePass")=EchelonFormPassword Response.Cookies("GamePass").Expires = Date + 364 end if EchelonAccess=1 'log in else 'if password incorrect EchelonAccess=3 'failed attempt - password reminder - check for add me, say user taken EchelonSuspectID=EchelonFormUser end if end if 'if username found in db end if 'if login data does not exist, EchelonAccess still =0 (no attempt) end if function GetEchelonUser(username) sSQL="Select nID,sUsername,sPassword,nLevel,nDisabled,sEmail FROM C_Users WHERE sUsername LIKE '"&username&"'" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sSQL, sDSN, 0, 1 'adOpenForwardOnly, adLockReadOnly if not rs.eof then aEchelonUserData = rs.GetRows rs.Close Set rs = nothing GetEchelonUser=aEchelonUserData end function function GetUserName(nID) sSQL="Select nID,sDisplayName FROM C_Users WHERE nID="&nID Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sSQL, sDSN, 0, 1 'adOpenForwardOnly, adLockReadOnly if not rs.eof then sDisplayName = rs("sDisplayName") else sDisplayName = "User Deleted" end if rs.Close Set rs = nothing GetUserName=sDisplayName end function %> <% function DiscordianizeNumber(num) if len(num)=4 then num="0"&num if len(num)=3 then num="00"&num if len(num)=2 then num="000"&num if len(num)=1 then num="0000"&num DiscordianizeNumber=num end function function DateToDiscord(passeddate,additional) 'date must be "dd/mm/yyyy" - additional: 0=just date, 1=just holyday (blank return if not), 2=both 3=just date,time aOffset = split("0 31 59 90 120 151 181 212 243 273 304 334") 'ignore leap years, since St. Tibbs Day is ignored aDMonth = split("Chaos Discord Confusion Bureaucracy Aftermath") nJulian=cint(aOffset(Month(passeddate)-1))+Day(passeddate) nDDay=nJulian MOD 73 sDMonth=aDMonth(nJulian\73) if additional=3 then aCutDate=split(passeddate) passeddate=aCutDate(0) stime=aCutDate(1) end if nDYear = Year(passeddate) + 1166 sDDate=sDMonth&" "&nDDay&", "&nDYear if additional>0 then if sDMonth="Chaos" AND nDDay=5 then sHolyday="
Mungday
" if sDMonth="Chaos" AND nDDay=37 then sHolyday="
Burrday
" if sDMonth="Chaos" AND nDDay=50 then sHolyday="
Chaoflux
" if sDMonth="Chaos" AND nDDay=73 then sHolyday="
Pi Day
" if sDMonth="Discord" AND nDDay=5 then sHolyday="
Mojoday
" if sDMonth="Discord" AND nDDay=28 then sHolyday="
Mu-Day
" if sDMonth="Discord" AND nDDay=50 then sHolyday="
Discoflux
" if sDMonth="Confusion" AND nDDay=5 then sHolyday="
Syaday/Guliday
" if sDMonth="Confusion" AND nDDay=23 then sHolyday="
Opposite Day
" if sDMonth="Confusion" AND nDDay=50 then sHolyday="
Confuflux
" if sDMonth="Confusion" AND nDDay=57 then sHolyday="
Pi Approx. Day
" if sDMonth="Bureaucracy" AND nDDay=5 then sHolyday="
Zaraday
" if sDMonth="Bureaucracy" AND nDDay=50 then sHolyday="
Bureflux
" if sDMonth="Aftermath" AND nDDay=5 then sHolyday="
Maladay
" if sDMonth="Aftermath" AND nDDay=50 then sHolyday="
Afflux
" end if if additional=0 then sFinalDate=sDDate if additional=1 then sFinalDate=sHolyday if additional=2 then sFinalDate=sDDate&sHolyday if additional=3 then sFinalDate=sDDate&" ("&formatDatetime(sTime,vbshorttime)&")" DateToDiscord=sFinalDate end function function EchelonScoreSelf(score) nSecond=Second(Now()) Eris=ErisNumber(55) Eris2=ErisNumber(555) nSecond=nSecond*Eris if isnumeric(score) then score=round(score,0) else score=Eris end if if nSecond Mod 7=0 then Eris=(Eris-Eris)-Eris if nSecond Mod 7=0 then Eris2=(Eris2-Eris2)-Eris2 if nSecond Mod 23=0 then Eris=Eris*Eris if nSecond Mod 23=0 then score=score*Eris if nSecond Mod 25=0 then score=score-Eris2 if len(score)>3 AND instr(score,"-")=0 then score=0-Eris2 if len(score)>4 AND nSecond Mod 2=0 then score=Eris if len(score)>4 AND nSecond Mod 2=1 then score=(Eris2-Eris2)-Eris2 EchelonScoreSelf=score end function function EchelonScore(score,who) 'who: 0=rating self, 1=rating someone else score=round(score,0) nSecond=Second(Now()) Eris=ErisNumber(55) Eris2=ErisNumber(555) nSecond=nSecond*Eris if nSecond Mod 7=0 then Eris=(Eris-Eris)-Eris if nSecond Mod 7=0 then Eris2=(Eris2-Eris2)-Eris2 if nSecond Mod 23=0 then Eris=Eris*Eris if len(score)>5 AND who=0 AND instr(score,"-")=0 then score=((score-score)-score)*Eris if len(score)>5 AND who=1 AND instr(score,"-")=1 then score=(score+score)*Eris if nSecond Mod 5=0 then score=Eris2-Eris if nSecond Mod 7=0 then score=(score-score)-score if nSecond Mod 11=0 then score=score-Eris if nSecond Mod 17=0 then score=(score+score)-Eris if nSecond Mod 23=0 then score=score*Eris if nSecond Mod 42=0 then score=score*Eris2 score=round(score,0) if len(score)>5 AND nSecond Mod 2=0 then score=Eris2 if len(score)>5 AND nSecond Mod 2=1 then score=(Eris2-Eris2)-Eris2 EchelonScore=score end function Function ErisNumber(nHighest) Randomize ErisNumber = Int(Rnd * nHighest) + 1 End Function Function CleanForDB(sContent) sContent=Replace(sContent,"'","'") sContent=Replace(sContent,"") CleanForHTML=sContent End Function Function CleanForForm(sContent) sContent=Replace(sContent,"
",vbcrlf) CleanForForm=sContent End Function function GetPointType(nID) sSQL="Select nID,sTitle FROM C_Type WHERE nID="&nID Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sSQL, sDSN, 0, 1 'adOpenForwardOnly, adLockReadOnly if not rs.eof then sTitle = rs("sTitle") else sTitle = "Points" end if rs.Close Set rs = nothing GetPointType=sTitle end function Function CountComments(nID) sSQL="Select COUNT(*) As inttotal from C_Comments where nPlay="&nID Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sSQL, sDSN, 0, 1 'adOpenForwardOnly, adLockReadOnly numberofcomments=rs("inttotal") rs.Close Set rs = nothing CountComments=numberofcomments end Function %> <% Function GetRandomScore() sSQL="Select nPlayer,nPoints,nType from C_Comments order by RAND() LIMIT 1" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sSQL, sDSN, 0, 1 'adOpenForwardOnly, adLockReadOnly aRandomComment=rs.GetRows rs.Close Set rs = nothing sSQL="Select nPlayer,nPoints,nType from C_Comments where nPlayer="&aRandomComment(0,0)&" AND nType="&aRandomComment(2,0) Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sSQL, sDSN, 0, 1 'adOpenForwardOnly, adLockReadOnly aCompiledComments=rs.GetRows rs.Close Set rs = nothing Erase aRandomComment i=0 points=0 for i=lbound(aCompiledComments,2) to ubound(aCompiledComments,2) points=points+aCompiledComments(1,i) next passback=""&GetUserName(aCompiledComments(0,0))&"
"&points&" "&GetPointType(aCompiledComments(2,0))&"
" Erase aCompiledComments GetRandomScore=passback end Function %> Discordian Games
<% function DiscordianizeNumber(num) if len(num)=4 then num="0"&num if len(num)=3 then num="00"&num if len(num)=2 then num="000"&num if len(num)=1 then num="0000"&num DiscordianizeNumber=num end function function DateToDiscord(passeddate,additional) 'date must be "dd/mm/yyyy" - additional: 0=just date, 1=just holyday (blank return if not), 2=both 3=just date,time aOffset = split("0 31 59 90 120 151 181 212 243 273 304 334") 'ignore leap years, since St. Tibbs Day is ignored aDMonth = split("Chaos Discord Confusion Bureaucracy Aftermath") nJulian=cint(aOffset(Month(passeddate)-1))+Day(passeddate) nDDay=nJulian MOD 73 sDMonth=aDMonth(nJulian\73) if additional=3 then aCutDate=split(passeddate) passeddate=aCutDate(0) stime=aCutDate(1) end if nDYear = Year(passeddate) + 1166 sDDate=sDMonth&" "&nDDay&", "&nDYear if additional>0 then if sDMonth="Chaos" AND nDDay=5 then sHolyday="
Mungday
" if sDMonth="Chaos" AND nDDay=37 then sHolyday="
Burrday
" if sDMonth="Chaos" AND nDDay=50 then sHolyday="
Chaoflux
" if sDMonth="Chaos" AND nDDay=73 then sHolyday="
Pi Day
" if sDMonth="Discord" AND nDDay=5 then sHolyday="
Mojoday
" if sDMonth="Discord" AND nDDay=28 then sHolyday="
Mu-Day
" if sDMonth="Discord" AND nDDay=50 then sHolyday="
Discoflux
" if sDMonth="Confusion" AND nDDay=5 then sHolyday="
Syaday/Guliday
" if sDMonth="Confusion" AND nDDay=23 then sHolyday="
Opposite Day
" if sDMonth="Confusion" AND nDDay=50 then sHolyday="
Confuflux
" if sDMonth="Confusion" AND nDDay=57 then sHolyday="
Pi Approx. Day
" if sDMonth="Bureaucracy" AND nDDay=5 then sHolyday="
Zaraday
" if sDMonth="Bureaucracy" AND nDDay=50 then sHolyday="
Bureflux
" if sDMonth="Aftermath" AND nDDay=5 then sHolyday="
Maladay
" if sDMonth="Aftermath" AND nDDay=50 then sHolyday="
Afflux
" end if if additional=0 then sFinalDate=sDDate if additional=1 then sFinalDate=sHolyday if additional=2 then sFinalDate=sDDate&sHolyday if additional=3 then sFinalDate=sDDate&" ("&formatDatetime(sTime,vbshorttime)&")" DateToDiscord=sFinalDate end function function EchelonScoreSelf(score) nSecond=Second(Now()) Eris=ErisNumber(55) Eris2=ErisNumber(555) nSecond=nSecond*Eris if isnumeric(score) then score=round(score,0) else score=Eris end if if nSecond Mod 7=0 then Eris=(Eris-Eris)-Eris if nSecond Mod 7=0 then Eris2=(Eris2-Eris2)-Eris2 if nSecond Mod 23=0 then Eris=Eris*Eris if nSecond Mod 23=0 then score=score*Eris if nSecond Mod 25=0 then score=score-Eris2 if len(score)>3 AND instr(score,"-")=0 then score=0-Eris2 if len(score)>4 AND nSecond Mod 2=0 then score=Eris if len(score)>4 AND nSecond Mod 2=1 then score=(Eris2-Eris2)-Eris2 EchelonScoreSelf=score end function function EchelonScore(score,who) 'who: 0=rating self, 1=rating someone else score=round(score,0) nSecond=Second(Now()) Eris=ErisNumber(55) Eris2=ErisNumber(555) nSecond=nSecond*Eris if nSecond Mod 7=0 then Eris=(Eris-Eris)-Eris if nSecond Mod 7=0 then Eris2=(Eris2-Eris2)-Eris2 if nSecond Mod 23=0 then Eris=Eris*Eris if len(score)>5 AND who=0 AND instr(score,"-")=0 then score=((score-score)-score)*Eris if len(score)>5 AND who=1 AND instr(score,"-")=1 then score=(score+score)*Eris if nSecond Mod 5=0 then score=Eris2-Eris if nSecond Mod 7=0 then score=(score-score)-score if nSecond Mod 11=0 then score=score-Eris if nSecond Mod 17=0 then score=(score+score)-Eris if nSecond Mod 23=0 then score=score*Eris if nSecond Mod 42=0 then score=score*Eris2 score=round(score,0) if len(score)>5 AND nSecond Mod 2=0 then score=Eris2 if len(score)>5 AND nSecond Mod 2=1 then score=(Eris2-Eris2)-Eris2 EchelonScore=score end function Function ErisNumber(nHighest) Randomize ErisNumber = Int(Rnd * nHighest) + 1 End Function Function CleanForDB(sContent) sContent=Replace(sContent,"'","'") sContent=Replace(sContent,"") CleanForHTML=sContent End Function Function CleanForForm(sContent) sContent=Replace(sContent,"
",vbcrlf) CleanForForm=sContent End Function function GetPointType(nID) sSQL="Select nID,sTitle FROM C_Type WHERE nID="&nID Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sSQL, sDSN, 0, 1 'adOpenForwardOnly, adLockReadOnly if not rs.eof then sTitle = rs("sTitle") else sTitle = "Points" end if rs.Close Set rs = nothing GetPointType=sTitle end function Function CountComments(nID) sSQL="Select COUNT(*) As inttotal from C_Comments where nPlay="&nID Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sSQL, sDSN, 0, 1 'adOpenForwardOnly, adLockReadOnly numberofcomments=rs("inttotal") rs.Close Set rs = nothing CountComments=numberofcomments end Function %> <% 'EchelonAccess: 0=not attempted, 1=signed in, 2=username wrong, 3=password wrong 4=password too short sform="" sform=sform&"" if EchelonAccess=1 then response.write "
" if firsttime=1 then response.write "Please set up your profile!" response.write "My Profile" response.write "My Plays" 'response.write "Report A Bug" response.write "Log Out" response.write "
" elseif EchelonAccess=2 then response.write "
" response.write "Username Not Found! Check the Register Me box to create an account" response.write sform response.write "
" elseif EchelonAccess=3 then response.write "
" if trim(Request.Form("Register"))="Yes" then response.write "Sorry! Username is taken. Try another." else response.write "PASSWORD INCORRECT!" if isArray(aEchelonUserData) then if len(aEchelonUserData(5,0))>1 then response.write " Send me my password" else response.write " No email address on file, so try again." end if end if end if response.write sform response.write "
" elseif EchelonAccess=4 then response.write "
" response.write "Password must be 4 characters or more!" response.write sform response.write "
" else response.write "
" response.write sform response.write "
" end if %> <% response.write "" %>

 

Our goal is to create a series of interlocking Discordian GamesK that you can play here in the company of other happy mutants, chaotic pranksters and inane anarchists.

These games will follow in the long and distinguished Discordian Tradition of being completely unfathomable to those unfamiliar with out ways, and contrariwise, will be completely comprehensible to those that are Discordians, yet did not hitherto know this to be the case.

Just register and sign in, and you will be able to merrily play our games while our unpatented Echeton 2300 furiously records and compiles your score using Advanced Discordian Methematics. If you are good enough, you may even appear on our prestigious Top Random Scores board!

If you don’t feel like playing, you should get an account anyway so you can set up a self-important profile, make supercilious comments on player’s moves.... and even influence their scores. Think of the disparagement and humiliation you can heap upon people who are playing and creating as you cynically sit off to the side – it’s just like real life!

Make sure to visit the Next page to see what we have planned for the future and to make suggestions and comments about existing or new games.

<% response.write "" %>