/* ./\/\." ENiGMA½ Achievement Configuration -/--/-------- - -- - _____________________ _____ ____________________ __________\_ / \__ ____/\_ ____ \ /____/ / _____ __ \ / ______/ // /___jp! // __|___// | \// |// | \// | | \// \ /___ /_____ /____ _____| __________ ___|__| ____| \ / _____ \ ---- \______\ -- |______\ ------ /______/ ---- |______\ - |______\ /__/ // ___/ /__ _\ <*> ENiGMA½ // HTTPS://GITHUB.COM/NUSKOOLER/ENIGMA-BBS <*> /__/ *-----------------------------------------------------------------------------* General Information ------------------------------- - - This configuration is in HJSON (http://hjson.org/) format. Strict to-spec JSON is also perfectly valid. Use "hjson" from npm to convert to/from JSON. See http://hjson.org/ for more information and syntax. Various editors and IDEs such as Sublime Text 3 Visual Studio Code and so on have syntax highlighting for the HJSON format which are highly recommended. ------------------------------- -- - - Achievement Configuration ------------------------------- - - Achievements are currently fairly limited in what can trigger them. This is being expanded upon and more will be available in the near future. For now you should mostly be interested in: - Perhaps adding additional *levels* of triggers & points - Applying customizations via the achievements section in theme.hjson Some tips: - For 'userStatSet' types, see user_property.js Don"t forget to RTFM ...er uh... see the documentation for more information and don"t be shy to ask for help: BBS : Xibalba @ xibalba.l33t.codes FTN : BBS Discussion on fsxNet or ArakNet IRC : #enigma-bbs / FreeNode Email : bryan@l33t.codes */ { // Set to false to disable the achievement system enabled : true art : { localHeader: achievement_local_header localFooter: achievement_local_footer globalHeader: achievement_global_header globalFooter: achievement_global_footer } achievements: { user_login_count: { type: userStatSet statName: login_count match: { 2: { title: "Return Caller" globalText: "{userName} has returned to {boardName}!" text: "You've returned to {boardName}!" points: 5 } 10: { title: "Curious Caller" globalText: "{userName} has logged into {boardName} {achievedValue} times!" text: "You've logged into {boardName} {achievedValue} times!" points: 5 } 25: { title: "Inquisitive Caller" globalText: "{userName} has logged into {boardName} {achievedValue} times!" text: "You've logged into {boardName} {achievedValue} times!" points: 10 } 100: { title: "Regular Customer" globalText: "{userName} has logged into {boardName} {achievedValue} times!" text: "You've logged into {boardName} {achievedValue} times!" points: 10 } 500: { title: "System Addict" globalText: "{userName} the BBS {boardName} addict has logged in {achievedValue} times!" text: "You're a {boardName} addict! You've logged in {achievedValue} times!" points: 25 } } } user_post_count: { type: userStatSet statName: post_count match: { 5: { title: "Poster" globalText: "{userName} has posted {achievedValue} messages!" text: "You've posted {achievedValue} messages!" points: 5 } 20: { title: "Poster... again!", globalText: "{userName} has posted {achievedValue} messages!" text: "You've posted {achievedValue} messages!" points: 10 } 100: { title: "Frequent Poster", globalText: "{userName} has posted {achievedValue} messages!" text: "You've posted {achievedValue} messages!" points: 15 } 500: { title: "Scribe" globalText: "{userName} the scribe has posted {achievedValue} messages!" text: "Such a scribe! You've posted {achievedValue} messages!" points: 25 } } } user_upload_count: { type: userStatSet statName: ul_total_count match: { 1: { title: "Uploader" globalText: "{userName} has uploaded a file!" text: "You've uploaded somthing!" points: 5 } 10: { title: "Moar Uploads!" globalText: "{userName} has uploaded {achievedValue} files!" text: "You've uploaded {achievedValue} files!" points: 10 } 50: { title: "Contributor" globalText: "{userName} has uploaded {achievedValue} files!" text: "You've uploaded {achievedValue} files!" points: 20 } 100: { title: "Courier" globalText: "Courier {userName} has uploaded {achievedValue} files!" text: "You've uploaded {achievedValue} files!" points: 25 } 200: { title: "Must Be a Drop Site" globalText: "{userName} has uploaded a whomping {achievedValue} files!" text: "You've uploaded a whomping {achievedValue} files!" points: 50 } } } user_upload_bytes: { type: userStatSet statName: ul_total_bytes match: { 524288: { title: "Kickstart" globalText: "{userName} has uploaded 512KB, enough for a Kickstart!" text: "You've uploaded 512KB, enough for a Kickstart!" points: 10 } 1474560: { title: "America Online 2.5?" globalText: "{userName} has uploaded 1.44M worth of data. Hopefully it's not AOL 2.5." title: "You've uploaded 1.44M worth of data. Hopefully it's not AOL 2.5." points: 15 } 6291456: { title: "A Quake of a Upload" globalText: "{userName} has uploaded 6 x 1.44MB disks worth of data. That's the size of Quake for DOS!" text: "You've uploaded 6 x 1.44MB disks worth of data. That's the size of Quake for DOS!" points: 25 } 1073741824: { title: "Gigabyte!" globalText: "{userName} has uploaded a Gigabyte worth of data!" text: "You've uploaded a Gigabyte worth of data!" points: 50 } 3407872000: { title: "Encarta" globalText: "{userName} has uploaded 5 x CD-ROM disks worth of data. That's the size of Encarta!" text: "You've uploaded 5 x CD-ROM disks worth of data. That's the size of Encarta!" points: 100 } } } user_download_count: { type: userStatSet statName: dl_total_count match: { 1: { title: "Downloader" globalText: "{userName} has downloaded a file!" text: "You've downloaded somthing!" points: 5 } 10: { title: "Moar Downloads!" globalText: "{userName} has downloaded {achievedValue} files!" text: "You've downloaded {achievedValue} files!" points: 10 } 50: { title: "Leecher" globalText: "{userName} has leeched {achievedValue} files!" text: "You've leeched... er... downloaded {achievedValue} files!" points: 15 } 100: { title: "Hoarder" globalText: "{userName} has downloaded {achievedValue} files!" text: "Hoarding files? You've downloaded {achievedValue} files!" points: 20 } 200: { title: "Digital Archivist" globalText: "{userName} the digital archivist has {achievedValue} files!" text: "Building an archive? You've downloaded {achievedValue} files!" points: 25 } } } user_download_bytes: { type: userStatSet statName: dl_total_bytes match: { 655360: { title: "Ought to be Enough" globalText: "{userName} has downloaded 640K. Ought to be enough for anyone!" text: "You've downloaded 640K. Ought to be enough for anyone!" points: 5 } 1474560: { title: "Fits on a Floppy" globalText: "{userName} has downloaded 1.44MB worth of data!" text: "You've downloaded 1.44MB of data!" points: 10 } 104857600: { title: "Click of Death" globalText: "{userName} has downloaded 100MB... perhaps to a Zip Disk?" text: "You've downloaded 100MB of data... perhaps to a Zip Disk?" points: 15 } 681574400: { title: "A CD-ROM Worth" globalText: "{userName} has downloaded a CD-ROM's worth of data!" text: "You've downloaded a CD-ROM's worth of data!" points: 20 } } } user_door_runs: { type: userStatSet statName: door_run_total_count match: { 1: { title: "Nostalgia Toe Dip", globalText: "{userName} ran a door!" text: "You ran a door!" points: 5 }, 10: { title: "This is Kinda Fun" globalText: "{userName} ran {achievedValue} doors!" text: "You've run {achievedValue} doors!" points: 10 } 50: { title: "Gamer" globalText: "{userName} ran {achievedValue} doors!" text: "You've run {achievedValue} doors!" points: 15 } 100: { title: "Textmode is All You Need" globalText: "{userName} must really like textmode and has run {achievedValue} doors!" text: "You've run {achievedValue} doors! You must really like textmode!" points: 25 } 200: { title: "Dropfile Enthusiast" globalText: "{userName} the dropfile enthusiast ran {achievedValue} doors!" text: "You're a dropfile enthusiast! You've run {achievedValue} doors!" points: 100 } } } user_door_total_minutes: { type: userStatInc statName: door_run_total_minutes match: { 1: { title: "Nevermind!" globalText: "{userName} ran a door for {achievedValue!durationMinutes}. Guess it's not their thing!" text: "You ran a door for only {achievedValue!durationMinutes}. Not your thing?" points: 5 } 10: { title: "It's OK I Guess" globalText: "{userName} ran a door for {achievedValue!durationMinutes}!" text: "You ran a door for {achievedValue!durationMinutes}!" points: 10 } 30: { title: "Good Game" globalText: "{userName} ran a door for {achievedValue!durationMinutes}!" text: "You ran a door for {achievedValue!durationMinutes}!" points: 20 } 60: { title: "Textmode Dragon Slayer" globalText: "{userName} has spent {achievedValue!durationMinutes} in a door!" text: "You've spent {achievedValue!durationMinutes} in a door!" points: 25 } } } user_total_system_online_minutes: { type: userStatSet statName: minutes_online_total_count match: { 30: { title: "Just Poking Around" globalText: "{userName} has spent {achievedValue!durationMinutes} on {boardName}!" text: "You've been on {boardName} for a total of {achievedValue!durationMinutes}!" points: 5 } 60: { title: "Mildly Interesting" globalText: "{userName} has spent {achievedValue!durationMinutes} on {boardName}!" text: "You've been on {boardName} for a total of {achievedValue!durationMinutes}!" points: 15 } 120: { title: "Nothing Better to Do" globalText: "{userName} has spent {achievedValue!durationMinutes} on {boardName}!" text: "You've been on {boardName} for a total of {achievedValue!durationMinutes}!" points: 25 } 1440: { title: "Idle Bot" globalText: "{userName} is probably a bot. They've spent {achievedValue!durationMinutes} on {boardName}!" text: "You're a bot, aren't you? You've been on {boardName} for a total of {achievedValue!durationMinutes}!" points: 50 } } } } }