So, this is a very simple achievements list/structural code that might help someone else who wants some sort of achievements system in their game. For beginners, there is a fairly simple UDT to play with and some valuable WHILE-ENDWHILE code to look at (or at least I found it rather enlightening once I got it to work

), and for anyone else, hey, it's code you don't have to write.
Supports:
-Secret, "You see the name but not the details" achievements
-Hidden, "This achievement doesn't show until you earn it" achievements
-As well as your standard, you come, you see, you conquer achievements.
Up and down scroll, space gives you the achievement for debug testing. Notice you cannot see an achievement called "Sneaky Sneaky", although it exists. This is what a "Hidden" achievement would be like

"Big Game Hunter" is the sample "Secret" achievement.
//Computer Color Constants
#CONSTANT col_white RGB(255,255,255)
#CONSTANT col_black RGB(0,0,0)
#CONSTANT col_yellow RGB(255,255,0)
//Commmon Color Constants
#CONSTANT col_gray RGB(128,128,128)
//Pallette909 Monochrome
#CONSTANT col_dimgray RGB(105,105,105)
TYPE achievement
name$ AS STRING
desc$ AS STRING
is_hidden AS BOOLEAN
is_secret AS BOOLEAN
is_earned AS BOOLEAN
ENDTYPE
DIM ach_list(20) AS achievement
load_achievements()
sel=0
DO
CLS
FOR a=0 TO ARRAY COUNT(ach_list())
//Only shows hidden achievements if they have been earned.
IF ach_list(a).is_hidden=0 OR ach_list(a).is_earned=1
//This statement flags the selected achievement to show it's description
IF sel=a
active_flag=1
ELSE
active_flag=0
ENDIF
//INKing Commands
IF sel=a
////////////Unearned
IF ach_list(a).is_earned=0
INK col_gray,0
ENDIF
////////////Earned
IF ach_list(a).is_earned=1
INK col_yellow,0
ENDIF
////////////////////////////NOT selected
ELSE
////////////Unearned
IF ach_list(a).is_earned=0
INK col_dimgray,0
ENDIF
////////////Earned
IF ach_list(a).is_earned=1
INK col_white,0
ENDIF
ENDIF
//This is for the selected achievement
IF active_flag=1
//If an achievement is NOT secret or if it IS earned, shows the achievement description.
IF ach_list(a).is_secret=0 OR ach_list(a).is_earned=1
PRINT ach_list(a).name$+"-"+ach_list(a).desc$
ENDIF
//If an achievement IS secret and IS NOT earned, shows question marks.
IF ach_list(a).is_secret=1 AND ach_list(a).is_earned=0
PRINT ach_list(a).name$+"-"+"?????"
ENDIF
ENDIF
//This is for every unselected achievement.
IF active_flag=0 THEN PRINT ach_list(a).name$
ENDIF
NEXT a
IF DOWNKEY()=1 AND hold=0
hold=1
//Hunts down next item. Awkwardly structured, but it works.
INC sel : sel=WRAP(sel,0,ARRAY COUNT(ach_list()))
WHILE ach_list(sel).is_hidden=1
INC sel : sel=WRAP(sel,0,ARRAY COUNT(ach_list()))
ENDWHILE
ENDIF
IF UPKEY()=1 AND hold=0
hold=1
//Hunts down previous item. Again, sort of awkward.
DEC sel : sel=WRAP(sel,0,ARRAY COUNT(ach_list()))
WHILE ach_list(sel).is_hidden=1
DEC sel : sel=WRAP(sel,0,ARRAY COUNT(ach_list()))
sel=WRAP(sel,0,ARRAY COUNT(ach_list()))
ENDWHILE
ENDIF
IF UPKEY()+DOWNKEY()=0 THEN hold=0
//Debug-Earn the selected item
IF SPACEKEY()=1 THEN ach_list(sel).is_earned=1
SYNC
LOOP
FUNCTION load_achievements()
//Makes sure any extra items are not shown. Not useful once list is completely written.
FOR q=0 TO ARRAY COUNT(ach_list())
ach_list(q).is_hidden=1
NEXT q
//Creates the achievements
ach_list(0).name$="Start The Party!"
ach_list(0).desc$="Load the game."
ach_list(0).is_hidden=0
ach_list(0).is_secret=0
ach_list(0).is_earned=1
ach_list(1).name$="Level Up!"
ach_list(1).desc$="Get your main char. to level 2"
ach_list(1).is_hidden=0
ach_list(1).is_secret=0
ach_list(1).is_earned=0
ach_list(2).name$="Victory Is Yours!"
ach_list(2).desc$="Beat the game on Easy."
ach_list(2).is_hidden=0
ach_list(2).is_secret=0
ach_list(2).is_earned=0
ach_list(3).name$="The Real Difficulty"
ach_list(3).desc$="Beat the game on Normal."
ach_list(3).is_hidden=0
ach_list(3).is_secret=0
ach_list(3).is_earned=0
ach_list(4).name$="So You Think You're Tough?"
ach_list(4).desc$="Beat the game on Hard."
ach_list(4).is_hidden=0
ach_list(4).is_secret=0
ach_list(4).is_earned=0
ach_list(5).name$="Big Game Hunter"
ach_list(5).desc$="Shoot 20 ducks in the background."
ach_list(5).is_hidden=0
ach_list(5).is_secret=1
ach_list(5).is_earned=0
ach_list(6).name$="Sneaky Sneaky"
ach_list(6).desc$="Enter in the ultra-secret code."
ach_list(6).is_hidden=1
ach_list(6).is_secret=0
ach_list(6).is_earned=0
ENDFUNCTION