diff -ruN a/game/gui.rpy b/game/gui.rpy --- a/game/gui.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/gui.rpy 2026-11-04 13:36:57.481736908 -0300 @@ -61,7 +61,7 @@ define gui.name_text_font = "fonts/hack/Hack-Regular.ttf" ## The font used for out-of-game text. -define gui.interface_text_font = "fonts/saxmono.ttf" +define gui.interface_text_font = "fonts/sharetechmono/ShareTechMono-Regular.ttf" ## The size of normal dialogue text. define gui.text_size = 33 @@ -87,7 +87,7 @@ ## Main and Game Menus ######################################################### ## The images used for the main and game menus. -define gui.main_menu_background = "gui/main_menu.png" +define gui.main_menu_background = "gui/main_menu.webp" # define gui.game_menu_background = "gui/game_menu.png" diff -ruN a/game/options.rpy b/game/options.rpy --- a/game/options.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/options.rpy 2026-11-04 13:36:57.460261665 -0300 @@ -38,53 +38,45 @@ """) define about = _p(""" -This game was made possible by all the kind people who donate to support freeCodeCamp.org. You can help support our nonprofit's mission {a=https://www.freecodecamp.org/news/how-to-donate-to-free-code-camp/}here{/a}. - -This project is open source and is currently in beta. If you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}. - -If you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on {a=https://freecodecamp.itch.io/learn-to-code-rpg}itch.io{/a}. +This is a web edition of the open-source game by freeCodeCamp.org, released under the BSD 3-Clause License. The game runs offline in your browser and your progress is saved in this browser only. """) define credits = _p(""" Creative Lead: - {a=https://ruolinzheng08.github.io/}Lynn Zheng (Ruolin Zheng){/a} - {a=https://github.com/RuolinZheng08/}{icon=icon-github}{/a} - {a=https://www.youtube.com/channel/UCZ2MeG5jTIqgzEMiByrIzsw}{icon=icon-youtube}{/a} - {a=https://www.linkedin.com/in/ruolin-zheng/}{icon=icon-linkedin}{/a} - {a=https://twitter.com/lynnzheng08}{icon=icon-twitter}{/a} + Lynn Zheng (Ruolin Zheng) Coding: - {a=https://ruolinzheng08.github.io/}Lynn Zheng (Ruolin Zheng){/a} + Lynn Zheng (Ruolin Zheng) Writing: - {a=https://ruolinzheng08.github.io/}Lynn Zheng (Ruolin Zheng){/a} - {a=https://twitter.com/rainFrogTush}KayLa Thomas{/a} + Lynn Zheng (Ruolin Zheng) + KayLa Thomas Music: - {a=https://twitter.com/ossia}Quincy Larson{/a} + Quincy Larson Character Art: - {a=https://layerto.carrd.co}Layerto (Noa Trinh){/a} + Layerto (Noa Trinh) Other Graphics: - {a=https://ruolinzheng08.github.io/}Lynn Zheng (Ruolin Zheng){/a} - {a=https://twitter.com/nieldakarla}Nielda Karla{/a} + Lynn Zheng (Ruolin Zheng) + Nielda Karla Quiz Questions & Proofreading: - {a=https://twitter.com/abbeyrenn}Abbey Rennemeyer{/a}, - {a=https://twitter.com/kriskoishigawa}Kris Koishigawa{/a}, - {a=https://github.com/ojeytonwilliams/}Oliver Eyton-Williams{/a}, - {a=https://twitter.com/EstefaniaCassN}Estefania Cassingena Navone{/a}, - {a=https://twitter.com/codergirl1991}Jessica Wilkins{/a}, - {a=https://twitter.com/deniselemonaki}Dionysia Lemonaki{/a} + Abbey Rennemeyer, + Kris Koishigawa, + Oliver Eyton-Williams, + Estefania Cassingena Navone, + Jessica Wilkins, + Dionysia Lemonaki Playtesting: - {a=https://twitter.com/ieahleen}Ilenia Magoni{/a}, - {a=https://twitter.com/EstefaniaCassN}Estefania Cassingena Navone{/a}, - {a=https://twitter.com/nhcarrigan}Naomi Carrigan{/a}, - {a=https://twitter.com/_sidemt}Yoko Matsuda{/a}, - {a=https://twitter.com/Daniel__Rosa}Daniel Rosa{/a}, - {a=https://twitter.com/beaucarnes}Beau Carnes{/a} + Ilenia Magoni, + Estefania Cassingena Navone, + Naomi Carrigan, + Yoko Matsuda, + Daniel Rosa, + Beau Carnes And thank you for playing the game :) """) @@ -207,7 +199,6 @@ ## ## The icon displayed on the taskbar or dock. -define config.window_icon = "gui/window_icon.png" ## Build configuration ######################################################### diff -ruN a/game/screens.rpy b/game/screens.rpy --- a/game/screens.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/screens.rpy 2026-11-04 13:36:57.461097139 -0300 @@ -624,11 +624,10 @@ label _("Credits") text credits - # for Android Google Play Store compliance - text _("This game doesn't collect any user data. Check out our privacy policy {a=https://www.freecodecamp.org/news/privacy-policy/}here{/a}.") + text _("This game doesn't collect any user data.") - text _("Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].") - # text _("Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]") + text _("Made with Ren'Py [renpy.version_only].") + # text _("Made with Ren'Py [renpy.version_only].\n\n[renpy.license!t]") style about_label is gui_label @@ -1143,7 +1142,7 @@ hbox: label "V" - text _("Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}.") + text _("Toggles assistive self-voicing.") screen mouse_help(): diff -ruN a/game/script.rpy b/game/script.rpy --- a/game/script.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/script.rpy 2026-11-04 13:36:57.460715526 -0300 @@ -13,7 +13,7 @@ $ player_name = player_name.strip() if player_name in vip_names: $ vip_profile_url = vip_names[player_name] - "[player_name]? What a coincidence! Our VIP team member {a=[vip_profile_url]}[player_name]{/a} will be honored to hear that." + "[player_name]? What a coincidence! Our VIP team member [player_name] will be honored to hear that." # TODO: Easter Egg # handle empty string case by assigning default name if not player_name: @@ -115,7 +115,7 @@ $ vip_profile_url = vip_names[referral_name] play sound 'audio/sfx/system_processing.wav' "System processing... Looks like you were referred by a VIP team member. That's awesome! We'll highlight this on your profile." - "And we'll make sure to let our VIP team member {a=[vip_profile_url]}[referral_name]{/a} know!" + "And we'll make sure to let our VIP team member [referral_name] know!" $ add_achievement(plot_vip) else: @@ -704,7 +704,7 @@ player "They all look super complicated. I bet you put in a lot of hard work to finish each certification." player "Remind me - which one did you do again?" - annika "Oh, I did the web design one. What was it? {a=https://www.freecodecamp.org/learn/responsive-web-design/}Responsive Web Design{/a}?" + annika "Oh, I did the web design one. What was it? Responsive Web Design?" annika "If I remembered anything from my college CS minor, it's those web markup languages." player "Ahh I see." player pout "(So Annika managed to pull through the curriculum because she had some experience from college. Plus she has a real gift for design.)" @@ -1762,7 +1762,7 @@ $ player_name = player_name.strip() if player_name in vip_names: $ vip_profile_url = vip_names[player_name] - "[player_name]? What a coincidence! Our VIP team member {a=[vip_profile_url]}[player_name]{/a} will be honored to hear that." + "[player_name]? What a coincidence! Our VIP team member [player_name] will be honored to hear that." # TODO: Easter Egg # handle empty string case by assigning default name if not player_name: diff -ruN a/game/scripts/bonus_screen.rpy b/game/scripts/bonus_screen.rpy --- a/game/scripts/bonus_screen.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/bonus_screen.rpy 2026-11-04 13:36:57.459708016 -0300 @@ -8,7 +8,7 @@ vbox: spacing 15 - if not renpy.mobile: + if not renpy.variant("mobile"): label _('Minigames') textbutton _("{icon=icon-music} Rhythm Game") action Start('rhythm_game_entry_label') textbutton _("{icon=icon-zap} Quiz Mode") action Start('bonus_quiz_entry_label') @@ -34,20 +34,6 @@ # textbutton '{icon=icon-film} ' + _("Game Trailer") action NullAction() # textbutton '{icon=icon-youtube} ' + _("Learn to Code RPG: The Making of") action NullAction() - null height 20 - label _('Other Links') - textbutton _("{icon=icon-thumbs-up} Rate and Review This Game on itch.io") action OpenURL(itch_url) - textbutton _("{icon=icon-github} Check out This Game's Source Code on GitHub") action OpenURL(github_url) - textbutton _("{icon=icon-file-text} Read Our Dev Log Article (a Let's Play Video Included)") action OpenURL(article_url) - textbutton _("{icon=icon-heart} Support Us by Donating to freeCodeCamp.org") action OpenURL('https://www.freecodecamp.org/news/how-to-donate-to-free-code-camp/') - - null height 20 - label _('Awesome freeCodeCamp.org Resources') - textbutton _("{icon=icon-youtube} freeCodeCamp YouTube Channel") action OpenURL("https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ") - textbutton _("{icon=icon-map} freeCodeCamp Curriculum") action OpenURL("https://www.freecodecamp.org/learn/") - # textbutton '{icon=icon-compass} ' + _("freeCodeCamp Forum") action OpenURL("https://forum.freecodecamp.org/") - textbutton _("{icon=icon-coffee} freeCodeCamp Code Radio") action OpenURL("https://coderadio.freecodecamp.org/") - # textbutton '{icon=icon-edit-3} ' + _("freeCodeCamp Style Guide") action OpenURL("https://design-style-guide.freecodecamp.org/") screen achievements_screen(): tag menu @@ -62,9 +48,6 @@ $ num_achievements = len(persistent.achievements) text _('{icon=icon-award} Number of Achievements Unlocked: [num_achievements] / [total_num_achievements]'): font gui.text_font - textbutton _("{icon=icon-twitter} Tweet it when you've unlocked all of the achievements!"): - if num_achievements == total_num_achievements: - action OpenURL(tweet_all_achievements_unlocked) for category in [plot_achievement, plot_bonus, quiz_bonus, ending_achievement]: vbox: @@ -79,12 +62,11 @@ $ is_unlocked = (achievement in persistent.achievements) if is_unlocked: - $ tweet = achievement_to_tweet_map[achievement] text '{icon=icon-unlock} [achievement!t]': font gui.text_font if renpy.variant("small"): xsize 700 - textbutton _("{icon=icon-twitter} Tweet this") action OpenURL(tweet) + null else: text _('{icon=icon-lock} ? ? ?'): font gui.text_font diff -ruN a/game/scripts/confirm_and_share.rpy b/game/scripts/confirm_and_share.rpy --- a/game/scripts/confirm_and_share.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/confirm_and_share.rpy 2026-11-04 13:36:57.459437566 -0300 @@ -40,15 +40,11 @@ text _("Number of Achievements Unlocked: [num_achievements] / [total_num_achievements]"): xalign 0.5 - textbutton _("{icon=icon-twitter} Tweet this"): - xalign 0.5 - action OpenURL(tweet_content_url) - if ok_text is None: $ ok_text = _("Gotta Unlock 'Em All!") textbutton ok_text: xalign 0.5 action [ - Notify(_("This achievement is saved to the Bonus menu. Feel free to tweet about it later if you haven't!")), + Notify(_("This achievement is saved to the Bonus menu.")), Return() ] \ No newline at end of file diff -ruN a/game/scripts/definitions.rpy b/game/scripts/definitions.rpy --- a/game/scripts/definitions.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/definitions.rpy 2026-11-04 13:36:57.644171519 -0300 @@ -2,7 +2,6 @@ import re import random # renpy.random doesn't have sample import urllib.parse # for tweet intent generation - import requests # for querying itch.io API class Picker(object): def __init__(self, options): @@ -62,10 +61,10 @@ ## images - renpy.image('main_menu_v1', 'gui/main_menu_v1.png') + renpy.image('main_menu_v1', 'gui/main_menu_v1.webp') - renpy.image('main_menu', 'gui/main_menu.png') - renpy.image('main_menu sepia', im.Sepia('gui/main_menu.png')) + renpy.image('main_menu', 'gui/main_menu.webp') + renpy.image('main_menu sepia', im.Sepia('gui/main_menu.webp')) renpy.image('main_menu overlay', Composite( (1920, 1080), # size of main_menu.png (0, 0), 'main_menu', @@ -91,13 +90,13 @@ # bg images inside game/images/bg if file.startswith('images/bg'): image_path = re.sub(r'images/', '', file) # remove the `images/` prefix - image_name = re.match(r'images/bg/(.+).png', file, re.I).group(1) # ex. images/bg/(bg living_room).png + image_name = re.match(r'images/bg/(.+)\.webp', file, re.I).group(1) # ex. images/bg/(bg living_room).png renpy.image(image_name + ' night', im.MatrixColor(image_path, tint_dark)) renpy.image(image_name + ' dusk', im.MatrixColor(image_path, tint_sunset)) # npc sprites if file.startswith('images/chara/npc'): image_path = re.sub(r'images/', '', file) # remove the `images/` prefix - image_name = re.match(r'images/chara/npc/(.+).png', file, re.I).group(1) # ex. images/bg/(bg living_room).png + image_name = re.match(r'images/chara/npc/(.+)\.webp', file, re.I).group(1) # ex. images/bg/(bg living_room).png renpy.image(image_name + ' red', im.MatrixColor(image_path, tint_red)) renpy.image(image_name + ' orange', im.MatrixColor(image_path, tint_orange)) renpy.image(image_name + ' blue', im.MatrixColor(image_path, tint_blue)) @@ -129,14 +128,14 @@ ] ''' image player_eyes_blink = DynamicBlink( - "images/chara/player/player_eyes_open.png", - "images/chara/player/player_eyes_closed.png" + "images/chara/player/player_eyes_open.webp", + "images/chara/player/player_eyes_closed.webp" ) ''' for chara in charas: renpy.image(chara + '_eyes_blink', DynamicBlink( - f"images/chara/{chara}/{chara}_eyes_open.png", - f"images/chara/{chara}/{chara}_eyes_closed.png" + f"images/chara/{chara}/{chara}_eyes_open.webp", + f"images/chara/{chara}/{chara}_eyes_closed.webp" ) ) @@ -189,8 +188,8 @@ return x ** 1.33 # ATL transition - eyeopen = ImageDissolve("others/eye.png", 2, ramplen=128, reverse=False, time_warp=eyewarp) - eyeclose = ImageDissolve("others/eye.png", 2, ramplen=128, reverse=True, time_warp=eyewarp) + eyeopen = ImageDissolve("others/eye.webp", 2, ramplen=128, reverse=False, time_warp=eyewarp) + eyeclose = ImageDissolve("others/eye.webp", 2, ramplen=128, reverse=True, time_warp=eyewarp) init: # major characters @@ -242,10 +241,10 @@ define salesperson3 = Character(_("Salesperson 3")) # text displayables - define freeCodeCamp = '{a=https://www.freecodecamp.org/}{font=fonts/saxmono.ttf}{color=#002ead}freeCodeCamp.org{/color}{/font}{/a}' + define freeCodeCamp = '{font=fonts/sharetechmono/ShareTechMono-Regular.ttf}{color=#002ead}freeCodeCamp.org{/color}{/font}' define developerquiz = 'https://developerquiz.org/' - define learn_to_code_rpg_on_itch = '{a=https://freecodecamp.itch.io/learn-to-code-rpg}{font=fonts/saxmono.ttf}{color=#002ead}' + _("Learn to Code RPG on itch.io") + '{/color}{/font}{/a}' - define learn_to_code_rpg_on_github = '{a=https://github.com/freeCodeCamp/LearnToCodeRPG}{font=fonts/saxmono.ttf}{color=#002ead}' + _("Learn to Code RPG on GitHub") + '{/color}{/font}{/a}' + define learn_to_code_rpg_on_itch = '{font=fonts/sharetechmono/ShareTechMono-Regular.ttf}{color=#002ead}' + _("Learn to Code RPG on itch.io") + '{/color}{/font}' + define learn_to_code_rpg_on_github = '{font=fonts/sharetechmono/ShareTechMono-Regular.ttf}{color=#002ead}' + _("Learn to Code RPG on GitHub") + '{/color}{/font}' # transitions define fadehold = Fade(0.5, 1.0, 0.5) @@ -256,44 +255,44 @@ ## images # mint image mint: - "others/mint/mint1.png" # can simply use `mint1` + "others/mint/mint1.webp" # can simply use `mint1` 1.0 - "others/mint/mint2.png" + "others/mint/mint2.webp" 1.0 - "others/mint/mint3.png" + "others/mint/mint3.webp" 1.0 - "others/mint/mint2.png" + "others/mint/mint2.webp" 1.0 repeat image mint_with_pixel_sunglasses = Composite( (782, 782), # size of mint.png (0, 0), 'mint', - (0, 0), 'others/mint/mint_pixelsunglasses.png') + (0, 0), 'others/mint/mint_pixelsunglasses.webp') # cookie image cookie: - "others/cookie/cookie1.png" + "others/cookie/cookie1.webp" 0.5 - "others/cookie/cookie2.png" + "others/cookie/cookie2.webp" 0.5 - "others/cookie/cookie3.png" + "others/cookie/cookie3.webp" 0.5 - "others/cookie/cookie4.png" + "others/cookie/cookie4.webp" 0.5 - "others/cookie/cookie5.png" + "others/cookie/cookie5.webp" # toast image toast: - 'others/toast/toast1.png' + 'others/toast/toast1.webp' 0.8 - 'others/toast/toast2.png' + 'others/toast/toast2.webp' 0.8 - 'others/toast/toast3.png' + 'others/toast/toast3.webp' 0.8 - 'others/toast/toast4.png' + 'others/toast/toast4.webp' 0.8 - 'others/toast/toast5.png' + 'others/toast/toast5.webp' # coffee image coffee: @@ -309,33 +308,33 @@ # pizza image pizza: - 'others/pizza/pizza1.png' + 'others/pizza/pizza1.webp' 0.8 - 'others/pizza/pizza2.png' + 'others/pizza/pizza2.webp' 0.8 - 'others/pizza/pizza3.png' + 'others/pizza/pizza3.webp' 0.8 - 'others/pizza/pizza4.png' + 'others/pizza/pizza4.webp' 0.8 - 'others/pizza/pizza5.png' + 'others/pizza/pizza5.webp' # gyoza image gyoza: - 'others/gyoza/gyoza1.png' + 'others/gyoza/gyoza1.webp' 1.0 - 'others/gyoza/gyoza2.png' + 'others/gyoza/gyoza2.webp' 1.0 - 'others/gyoza/gyoza3.png' + 'others/gyoza/gyoza3.webp' # chicken image chicken: - 'others/chicken/chicken1.png' + 'others/chicken/chicken1.webp' 0.8 - 'others/chicken/chicken2.png' + 'others/chicken/chicken2.webp' 0.8 - 'others/chicken/chicken3.png' + 'others/chicken/chicken3.webp' 0.8 - 'others/chicken/chicken4.png' + 'others/chicken/chicken4.webp' # red warning flash light image red_flash: @@ -467,13 +466,13 @@ # more blink image goro_eyes_narrowblink = DynamicBlink( - "images/chara/goro/goro_eyes_narrow.png", - "images/chara/goro/goro_eyes_closed.png" + "images/chara/goro/goro_eyes_narrow.webp", + "images/chara/goro/goro_eyes_closed.webp" ) image iris_eyes_narrowblink = DynamicBlink( - "images/chara/iris/iris_eyes_narrow.png", - "images/chara/iris/iris_eyes_closed.png" + "images/chara/iris/iris_eyes_narrow.webp", + "images/chara/iris/iris_eyes_closed.webp" ) # layered character sprites diff -ruN a/game/scripts/job_posting.rpy b/game/scripts/job_posting.rpy --- a/game/scripts/job_posting.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/job_posting.rpy 2026-11-04 13:36:57.644286599 -0300 @@ -10,7 +10,7 @@ easter_egg_skills = list(easter_egg_skill_achievement_map.keys()) - # company logo files are named as images/others/company/avocado.png etc. + # company logo files are named as images/others/company/avocado.webp etc. # DO NOT TRANSLATE THE COMPANY NAMES all_company_names = { 'AvocadoAPI': 'avocado', @@ -49,7 +49,7 @@ label company_name xalign 0.5 - $ company_logo = 'images/others/company/%s.png' % all_company_names[company_name] + $ company_logo = 'images/others/company/%s.webp' % all_company_names[company_name] add company_logo xalign 0.5 text _("{b}[company_name]{/b} is hiring for a candidate with the following skills:") @@ -70,7 +70,7 @@ Function(persistent.achievements.add, achievement_name) ] action [ - OpenURL(all_tweet_map[achievement_name]), + NullAction(), ] text_font gui.text_font xoffset -7 # XXX: tweak alignment @@ -111,7 +111,7 @@ label company_name xalign 0.5 - $ company_logo = 'images/others/company/%s.png' % all_company_names[company_name] + $ company_logo = 'images/others/company/%s.webp' % all_company_names[company_name] add company_logo xalign 0.5 text _(message) diff -ruN a/game/scripts/labels/alternative_endings.rpy b/game/scripts/labels/alternative_endings.rpy --- a/game/scripts/labels/alternative_endings.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/labels/alternative_endings.rpy 2026-11-04 13:36:57.469541624 -0300 @@ -581,22 +581,6 @@ label ending_splash: # alternative endings also jump to here $ quick_menu = False $ calendar_enabled = False - # Learn to Code RPG logo - scene gray90 with Pause(1) - play sound 'audio/sfx/title_fire_swoosh.ogg' - show learn_to_code_rpg_logo at truecenter with dissolve - with Pause(2) - scene gray90 with dissolve - with Pause(1) - - # freeCodeCamp logo - scene gray90 with Pause(1) - play sound 'audio/sfx/title_fire_swoosh.ogg' - show fcc_logo at truecenter with dissolve - with Pause(2) - scene gray90 with dissolve - with Pause(1) - # Credits, like in the About section from options.rpy # use a lighter background because the hyperlinks are dark blue scene main_menu overlay with dissolve @@ -626,51 +610,17 @@ set post_game_choices "Here are some fun things that you can do now that you've finished the game. Select an option to learn more." - "Check out your achievements and tweet {icon=icon-twitter}": - "Let's get social! You've made a lot of progress throughout the game and it's time to spread the words." - "You can view your achievements on the {b}Bonus > Achievements{/b} screen. Click on the {b}Tweet{/b} button next to the achievement to tweet it." + "Check out your achievements {icon=icon-award}": + "You've made a lot of progress throughout the game. Let's take a look at it." + "You can view your achievements on the {b}Bonus > Achievements{/b} screen." "If you see a lock next to the achievement, backtrack to some point in the game, try different choices, and see if you can unlock it." call screen achievements_screen() "Will you be able to unlock all of the achievements? Now that's a dare." jump post_game_choice - "Rate and review this game on itch.io {icon=icon-thumbs-up}": - "Help us improve the game by rating and reviewing [learn_to_code_rpg_on_itch]." - show itch_rate at truecenter with zoomin - "You can find the {b}Rate Game{/b} button in the top right corner of the itch.io game page." - "Refer to {a=https://itch.io/updates/you-can-now-rate-games}this itch.io article{/a} for more details." - hide itch_rate - menu: - "Would you mind taking a minute to rate and review us?" - "Sure thing! Take me to the page.": - "Thanks! Here's the link to [learn_to_code_rpg_on_itch]." - "I've done that already!" if not persistent.has_rated_and_reviewed_on_itch: - "Awesome. Thank you for your input!" - $ persistent.has_rated_and_reviewed_on_itch = True - "Maybe next time :)": - "Of course! Take your time to explore and enjoy the game. You can visit this link anytime from the {b}Bonus{/b} screen." - jump post_game_choice - - "Star the game's source code on GitHub {icon=icon-star}": - "Interested in learning about how this game is built? Take a peek into our source code by visiting [learn_to_code_rpg_on_github]." - show github_star at truecenter with zoomin - "Better yet, {b}Star{/b} our repository for your reference and {b}Watch{/b} for updates!" - "Refer to {a=https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars}this GitHub article{/a} for more details." - hide github_star - menu: - "Would you like to check out our GitHub repository?" - "Sure thing! Take me to the page.": - "Thanks! Here's the link to [learn_to_code_rpg_on_github]." - "I've done that already!" if not persistent.has_visited_github: - "Awesome. Enjoy digging through the source code!" - $ persistent.has_visited_github = True - "Maybe next time :)": - "Of course! Take your time to explore and enjoy the game. You can visit this link anytime from the {b}Bonus{/b} screen." - jump post_game_choice - # "Support this game and other freeCodeCamp.org projects by donating {icon=icon-heart}": # "This game was made possible by all the kind people who donate to support [freeCodeCamp]." - # "You can help support our nonprofit's mission {a=https://www.freecodecamp.org/news/how-to-donate-to-free-code-camp/}by donating to us here{/a}." + # "You can help support our nonprofit's mission by donating to us here." # "Remember you can visit link anytime from the {b}Bonus{/b} screen." # jump post_game_choice diff -ruN a/game/scripts/labels/day_activity_choices.rpy b/game/scripts/labels/day_activity_choices.rpy --- a/game/scripts/labels/day_activity_choices.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/labels/day_activity_choices.rpy 2026-11-04 13:36:57.459836471 -0300 @@ -153,7 +153,7 @@ $ day_activity = 'park' player "Let's head out to the park. Too bad I can't take Mint out on a walk. Annika does that with her puppy sometimes and they both love it." call day_activity_park from _call_day_activity_park - "Play some video games" if not renpy.mobile: + "Play some video games" if not renpy.variant("mobile"): $ day_activity = 'videogame' player "Nothing beats some video games." call day_activity_video_game from _call_day_activity_video_game diff -ruN a/game/scripts/labels/npc_question_and_answer.rpy b/game/scripts/labels/npc_question_and_answer.rpy --- a/game/scripts/labels/npc_question_and_answer.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/labels/npc_question_and_answer.rpy 2026-11-04 13:36:57.469247759 -0300 @@ -85,7 +85,7 @@ npc "Machine Learning requires a lot of mathematical knowledge. You need to be familiar with linear algebra, calculus, and so on." player "That sounds intense, but really cool!" npc "Remember that [freeCodeCamp] has resources if you'd like to get started with Machine Learning." - npc "You can build a lot of cool projects with Machine Learning. How about {a=https://www.freecodecamp.org/news/discord-ai-chatbot/}a chatbot that speaks like your favorite character{/a}?" + npc "You can build a lot of cool projects with Machine Learning. How about a chatbot that speaks like your favorite character?" player "Sounds awesome! Thanks for sharing!" player "(Hmmm, so that's what {b}machine learning{/b} is about.)" diff -ruN a/game/scripts/quiz_questions.rpy b/game/scripts/quiz_questions.rpy --- a/game/scripts/quiz_questions.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/quiz_questions.rpy 2026-11-04 13:36:57.459924301 -0300 @@ -86,7 +86,7 @@ self.explanation = explanation self.category = category self.code_label = code_label - self.learn_more_url = learn_more_url + self.learn_more_url = None self.easter_egg_name = easter_egg_name self.difficulty = difficulty diff -ruN a/game/scripts/rhythm_minigame.rpy b/game/scripts/rhythm_minigame.rpy --- a/game/scripts/rhythm_minigame.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/rhythm_minigame.rpy 2026-11-04 13:36:57.618002674 -0300 @@ -264,10 +264,10 @@ self.horizontal_bar_drawable = Solid('#fff', xsize=config.screen_width, ysize=self.horizontal_bar_height) # map track_idx to the note drawable self.note_drawables = { - 0: Image('others/rhythm_minigame/left.png'), - 1: Image('others/rhythm_minigame/up.png'), - 2: Image('others/rhythm_minigame/down.png'), - 3: Image('others/rhythm_minigame/right.png') + 0: Image('others/rhythm_minigame/left.webp'), + 1: Image('others/rhythm_minigame/up.webp'), + 2: Image('others/rhythm_minigame/down.webp'), + 3: Image('others/rhythm_minigame/right.webp') } self.note_drawables_large = { 0: Transform(self.note_drawables[0], zoom=self.zoom_scale), diff -ruN a/game/scripts/splashscreen.rpy b/game/scripts/splashscreen.rpy --- a/game/scripts/splashscreen.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/splashscreen.rpy 2026-11-04 13:36:57.458483680 -0300 @@ -5,50 +5,6 @@ return version label splashscreen: - # check if new version is available on itch - if not renpy.mobile: - python: - itch_butler_target = 'freecodecamp/learn-to-code-rpg' - if renpy.linux: - itch_butler_channel = 'linux' - elif renpy.macintosh: - itch_butler_channel = 'mac' - elif renpy.windows: - itch_butler_channel = 'win' - - local_version = None - itch_version = None - try: - # query for version on itch - response = requests.get(f"https://itch.io/api/1/x/wharf/latest?target={itch_butler_target}&channel_name={itch_butler_channel}") - itch_version = response.json()['latest'].strip() - # compare with local version - local_version = get_version() - - except requests.ConnectionError: # no internet - pass - - if local_version != itch_version: - call screen confirm( - _("We've released a new version on itch.io that contains bug fixes and feature enhancements. Would you like to download the new version now?"), - OpenURL(itch_url), - Return() - ) - - scene gray90 with Pause(1) - play sound 'audio/sfx/title_fire_swoosh.ogg' - show learn_to_code_rpg_logo at truecenter with dissolve - with Pause(2) - scene gray90 with dissolve - with Pause(1) - - scene gray90 with Pause(1) - # play sound 'audio/sfx/title_fire_swoosh.ogg' - show fcc_logo at truecenter with dissolve - with Pause(2) - scene gray90 with dissolve - with Pause(1) - # if not persistent.language_selected: # scene black # menu: @@ -59,7 +15,7 @@ # $ persistent.language_selected = True $ accessibility_tips = _p(""" - Accessibility Tips: To enable auto-voicing of the text, please first configure the speech synthesis settings (speaker gender, accent, etc.) on your computer according to {a=https://www.renpy.org/doc/html/self_voicing.html#speech-synthesis}these instructions{/a}. + Accessibility Tips: To enable auto-voicing of the text, please first configure the speech synthesis settings (speaker gender, accent, etc.) on your computer according to the Ren'Py self-voicing instructions. Back to the game, you may press the {b}{u}v{/u}{/b} key to switch on auto-voicing. Adjust the volume of music and sound effects on the {icon=icon-settings} Settings screen. @@ -80,9 +36,6 @@ The current version is v1.5. Save data from v1 might not be compatible with this version. Please start a new game instead of loading from your v1 data if applicable. - If you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}. Please always download the latest version of the game from {a=https://freecodecamp.itch.io/learn-to-code-rpg}itch.io{/a} as we continuously update the builds to address your feedback. - - If you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on {a=https://freecodecamp.itch.io/learn-to-code-rpg}itch.io{/a} and {icon=icon-star} star our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}. """) # use a lighter background because the hyperlinks are dark blue show text "{size=48}[beta_disclaimer!t]{/size}" diff -ruN a/game/scripts/variables.rpy b/game/scripts/variables.rpy --- a/game/scripts/variables.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/scripts/variables.rpy 2026-11-04 13:36:57.457545917 -0300 @@ -390,7 +390,7 @@ } ## endings - ending_barista = _('Now serving {font=fonts/saxmono.ttf}0xc0ffee{/font}') + ending_barista = _('Now serving {font=fonts/sharetechmono/ShareTechMono-Regular.ttf}0xc0ffee{/font}') ending_cat = _('The Code-y Cats') ending_tutor = _('Coding It Forward') ending_office = _('Just Another Day at the Office') diff -ruN a/game/tl/english/common.rpy b/game/tl/english/common.rpy --- a/game/tl/english/common.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/tl/english/common.rpy 2026-11-04 13:36:57.463585769 -0300 @@ -455,8 +455,8 @@ new "Skip Mode" # renpy/common/00library.rpy:281 - old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}." - new "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}." + old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found here." + new "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found here." # renpy/common/00preferences.rpy:247 old "display" @@ -843,12 +843,12 @@ new "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display." # renpy/common/00gltest.rpy:259 - old "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer." - new "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer." + old "The log.txt file may contain information to help you determine what is wrong with your computer." + new "The log.txt file may contain information to help you determine what is wrong with your computer." # renpy/common/00gltest.rpy:264 - old "More details on how to fix this can be found in the {a=[url]}documentation{/a}." - new "More details on how to fix this can be found in the {a=[url]}documentation{/a}." + old "More details on how to fix this can be found in the documentation." + new "More details on how to fix this can be found in the documentation." # renpy/common/00gltest.rpy:269 old "Continue, Show this warning again" diff -ruN a/game/tl/english/options.rpy b/game/tl/english/options.rpy --- a/game/tl/english/options.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/tl/english/options.rpy 2026-11-04 13:36:57.462669673 -0300 @@ -11,10 +11,10 @@ new "{b}Learn to Code RPG{/b} is a game where you teach yourself to code, make friends in the tech industry, and pursue your dream to become a developer." # game/options.rpy:40 - old "This game was made possible by all the kind people who donate to support freeCodeCamp.org. You can help support our nonprofit's mission {a=https://www.freecodecamp.org/news/how-to-donate-to-free-code-camp/}here{/a}.\n\nThis project is open source and is currently in beta. If you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}.\n\nIf you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on {a=https://freecodecamp.itch.io/learn-to-code-rpg}itch.io{/a}." - new "This game was made possible by all the kind people who donate to support freeCodeCamp.org. You can help support our nonprofit's mission {a=https://www.freecodecamp.org/news/how-to-donate-to-free-code-camp/}here{/a}.\n\nThis project is open source and is currently in beta. If you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}.\n\nIf you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on {a=https://freecodecamp.itch.io/learn-to-code-rpg}itch.io{/a}." + old "This game was made possible by all the kind people who donate to support freeCodeCamp.org. You can help support our nonprofit's mission here.\n\nThis project is open source and is currently in beta. If you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our GitHub repo.\n\nIf you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on itch.io." + new "This game was made possible by all the kind people who donate to support freeCodeCamp.org. You can help support our nonprofit's mission here.\n\nThis project is open source and is currently in beta. If you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our GitHub repo.\n\nIf you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on itch.io." # game/options.rpy:48 - old "Creative Lead: {a=https://ruolinzheng08.github.io/}Lynn Zheng (Ruolin Zheng){/a} {a=https://github.com/RuolinZheng08/}{icon=icon-github}{/a} {a=https://www.youtube.com/channel/UCZ2MeG5jTIqgzEMiByrIzsw}{icon=icon-youtube}{/a} {a=https://www.linkedin.com/in/ruolin-zheng/}{icon=icon-linkedin}{/a} {a=https://twitter.com/lynnzheng08}{icon=icon-twitter}{/a}\n\nCoding & Writing & Misc. Art: {a=https://ruolinzheng08.github.io/}Lynn Zheng (Ruolin Zheng){/a}\n\nMusic: {a=https://twitter.com/ossia}Quincy Larson{/a}\n\nCharacter Art: {a=https://layerto.carrd.co}Layerto (Noa Trinh){/a}\n\nQuiz Questions & Proofreading: {a=https://twitter.com/abbeyrenn}Abbey Rennemeyer{/a}, {a=https://github.com/ojeytonwilliams/}Oliver Eyton-Williams{/a}, {a=https://twitter.com/EstefaniaCassN}Estefania Cassingena Navone{/a}, {a=https://twitter.com/codergirl1991}Jessica Wilkins{/a}, {a=https://twitter.com/deniselemonaki}Dionysia Lemonaki{/a}\n\nPlaytesting: {a=https://twitter.com/ieahleen}Ilenia Magoni{/a}, {a=https://twitter.com/EstefaniaCassN}Estefania Cassingena Navone{/a}, {a=https://twitter.com/nhcarrigan}Naomi Carrigan{/a}, {a=https://twitter.com/_sidemt}Yoko Matsuda{/a}, {a=https://twitter.com/Daniel__Rosa}Daniel Rosa{/a}, {a=https://twitter.com/beaucarnes}Beau Carnes{/a}\n\nAnd thank you for playing the game :)" - new "Creative Lead: {a=https://ruolinzheng08.github.io/}Lynn Zheng (Ruolin Zheng){/a} {a=https://github.com/RuolinZheng08/}{icon=icon-github}{/a} {a=https://www.youtube.com/channel/UCZ2MeG5jTIqgzEMiByrIzsw}{icon=icon-youtube}{/a} {a=https://www.linkedin.com/in/ruolin-zheng/}{icon=icon-linkedin}{/a} {a=https://twitter.com/lynnzheng08}{icon=icon-twitter}{/a}\n\nCoding & Writing & Misc. Art: {a=https://ruolinzheng08.github.io/}Lynn Zheng (Ruolin Zheng){/a}\n\nMusic: {a=https://twitter.com/ossia}Quincy Larson{/a}\n\nCharacter Art: {a=https://layerto.carrd.co}Layerto (Noa Trinh){/a}\n\nQuiz Questions & Proofreading: {a=https://twitter.com/abbeyrenn}Abbey Rennemeyer{/a}, {a=https://github.com/ojeytonwilliams/}Oliver Eyton-Williams{/a}, {a=https://twitter.com/EstefaniaCassN}Estefania Cassingena Navone{/a}, {a=https://twitter.com/codergirl1991}Jessica Wilkins{/a}, {a=https://twitter.com/deniselemonaki}Dionysia Lemonaki{/a}\n\nPlaytesting: {a=https://twitter.com/ieahleen}Ilenia Magoni{/a}, {a=https://twitter.com/EstefaniaCassN}Estefania Cassingena Navone{/a}, {a=https://twitter.com/nhcarrigan}Naomi Carrigan{/a}, {a=https://twitter.com/_sidemt}Yoko Matsuda{/a}, {a=https://twitter.com/Daniel__Rosa}Daniel Rosa{/a}, {a=https://twitter.com/beaucarnes}Beau Carnes{/a}\n\nAnd thank you for playing the game :)" + old "Creative Lead: Lynn Zheng (Ruolin Zheng) {icon=icon-github} {icon=icon-youtube} {icon=icon-linkedin} {icon=icon-twitter}\n\nCoding & Writing & Misc. Art: Lynn Zheng (Ruolin Zheng)\n\nMusic: Quincy Larson\n\nCharacter Art: Layerto (Noa Trinh)\n\nQuiz Questions & Proofreading: Abbey Rennemeyer, Oliver Eyton-Williams, Estefania Cassingena Navone, Jessica Wilkins, Dionysia Lemonaki\n\nPlaytesting: Ilenia Magoni, Estefania Cassingena Navone, Naomi Carrigan, Yoko Matsuda, Daniel Rosa, Beau Carnes\n\nAnd thank you for playing the game :)" + new "Creative Lead: Lynn Zheng (Ruolin Zheng) {icon=icon-github} {icon=icon-youtube} {icon=icon-linkedin} {icon=icon-twitter}\n\nCoding & Writing & Misc. Art: Lynn Zheng (Ruolin Zheng)\n\nMusic: Quincy Larson\n\nCharacter Art: Layerto (Noa Trinh)\n\nQuiz Questions & Proofreading: Abbey Rennemeyer, Oliver Eyton-Williams, Estefania Cassingena Navone, Jessica Wilkins, Dionysia Lemonaki\n\nPlaytesting: Ilenia Magoni, Estefania Cassingena Navone, Naomi Carrigan, Yoko Matsuda, Daniel Rosa, Beau Carnes\n\nAnd thank you for playing the game :)" diff -ruN a/game/tl/english/screens.rpy b/game/tl/english/screens.rpy --- a/game/tl/english/screens.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/tl/english/screens.rpy 2026-11-04 13:36:57.463743390 -0300 @@ -95,8 +95,8 @@ new "Credits" # game/screens.rpy:638 - old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only]." - new "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only]." + old "Made with Ren'Py [renpy.version_only]." + new "Made with Ren'Py [renpy.version_only]." # game/screens.rpy:667 old "Save" @@ -343,8 +343,8 @@ new "Takes a screenshot." # game/screens.rpy:1154 - old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}." - new "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}." + old "Toggles assistive self-voicing." + new "Toggles assistive self-voicing." # game/screens.rpy:1160 old "Left Click" diff -ruN a/game/tl/english/script.rpy b/game/tl/english/script.rpy --- a/game/tl/english/script.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/tl/english/script.rpy 2026-11-04 13:36:57.463354777 -0300 @@ -57,8 +57,8 @@ # game/script.rpy:92 translate english start_after_interview_941d689f: - # "[player_name]? What a coincidence! Our VIP team member {a=[vip_profile_url]}[player_name]{/a} will be honored to hear that." - "[player_name]? What a coincidence! Our VIP team member {a=[vip_profile_url]}[player_name]{/a} will be honored to hear that." + # "[player_name]? What a coincidence! Our VIP team member [player_name] will be honored to hear that." + "[player_name]? What a coincidence! Our VIP team member [player_name] will be honored to hear that." # game/script.rpy:109 translate english start_after_interview_3f33388f: @@ -87,8 +87,8 @@ # game/script.rpy:124 translate english start_after_interview_46d63ac7: - # "And we'll make sure to let our VIP team member {a=[vip_profile_url]}[referral_name]{/a} know!" - "And we'll make sure to let our VIP team member {a=[vip_profile_url]}[referral_name]{/a} know!" + # "And we'll make sure to let our VIP team member [referral_name] know!" + "And we'll make sure to let our VIP team member [referral_name] know!" # game/script.rpy:128 translate english start_after_interview_e6995b46: @@ -1467,8 +1467,8 @@ # game/script.rpy:633 translate english stage5_annika_42826abe: - # annika "Oh, I did the web design one. What was it? {a=https://www.freecodecamp.org/learn/responsive-web-design/}Responsive Web Design{/a}?" - annika "Oh, I did the web design one. What was it? {a=https://www.freecodecamp.org/learn/responsive-web-design/}Responsive Web Design{/a}?" + # annika "Oh, I did the web design one. What was it? Responsive Web Design?" + annika "Oh, I did the web design one. What was it? Responsive Web Design?" # game/script.rpy:634 translate english stage5_annika_ab2c1af4: @@ -4107,8 +4107,8 @@ # game/script.rpy:1722 translate english post_game_choice_1b8ba8fe: - # "Refer to {a=https://itch.io/updates/you-can-now-rate-games}this itch.io article{/a} for more details." - "Refer to {a=https://itch.io/updates/you-can-now-rate-games}this itch.io article{/a} for more details." + # "Refer to this itch.io article for more details." + "Refer to this itch.io article for more details." # game/script.rpy:1727 translate english post_game_choice_06a5190e: @@ -4143,8 +4143,8 @@ # game/script.rpy:1739 translate english post_game_choice_512499f6: - # "Refer to {a=https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars}this GitHub article{/a} for more details." - "Refer to {a=https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars}this GitHub article{/a} for more details." + # "Refer to this GitHub article for more details." + "Refer to this GitHub article for more details." # game/script.rpy:1744 translate english post_game_choice_0107dcc2: diff -ruN a/game/tl/english/scripts/labels/npc_question_and_answer.rpy b/game/tl/english/scripts/labels/npc_question_and_answer.rpy --- a/game/tl/english/scripts/labels/npc_question_and_answer.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/tl/english/scripts/labels/npc_question_and_answer.rpy 2026-11-04 13:36:57.465864865 -0300 @@ -267,8 +267,8 @@ # game/scripts/labels/npc_question_and_answer.rpy:88 translate english ask_machinelearning_28e2050d: - # npc "You can build a lot of cool projects with Machine Learning. How about {a=https://www.freecodecamp.org/news/discord-ai-chatbot/}a chatbot that speaks like your favorite character{/a}?" - npc "You can build a lot of cool projects with Machine Learning. How about {a=https://www.freecodecamp.org/news/discord-ai-chatbot/}a chatbot that speaks like your favorite character{/a}?" + # npc "You can build a lot of cool projects with Machine Learning. How about a chatbot that speaks like your favorite character?" + npc "You can build a lot of cool projects with Machine Learning. How about a chatbot that speaks like your favorite character?" # game/scripts/labels/npc_question_and_answer.rpy:89 translate english ask_machinelearning_435fde81: diff -ruN a/game/tl/english/scripts/splashscreen.rpy b/game/tl/english/scripts/splashscreen.rpy --- a/game/tl/english/scripts/splashscreen.rpy 2023-04-19 00:34:33.000000000 -0300 +++ b/game/tl/english/scripts/splashscreen.rpy 2026-11-04 13:36:57.464503324 -0300 @@ -3,10 +3,10 @@ translate english strings: # game/scripts/splashscreen.rpy:25 - old "Accessibility Tips: To enable auto-voicing of the text, please first configure the speech synthesis settings (speaker gender, accent, etc.) on your computer according to {a=https://www.renpy.org/doc/html/self_voicing.html#speech-synthesis}these instructions{/a}. Back to the game, you may press the {b}{u}v{/u}{/b} key to switch on auto-voicing.\n\nAdjust the volume of music and sound effects on the {icon=icon-settings} Settings screen.\n\nPress the {b}{u}Esc{/u}{/b} key to access the {icon=icon-grid}Game Menu at any time during the game." - new "Accessibility Tips: To enable auto-voicing of the text, please first configure the speech synthesis settings (speaker gender, accent, etc.) on your computer according to {a=https://www.renpy.org/doc/html/self_voicing.html#speech-synthesis}these instructions{/a}. Back to the game, you may press the {b}{u}v{/u}{/b} key to switch on auto-voicing.\n\nAdjust the volume of music and sound effects on the {icon=icon-settings} Settings screen.\n\nPress the {b}{u}Esc{/u}{/b} key to access the {icon=icon-grid}Game Menu at any time during the game." + old "Accessibility Tips: To enable auto-voicing of the text, please first configure the speech synthesis settings (speaker gender, accent, etc.) on your computer according to these instructions. Back to the game, you may press the {b}{u}v{/u}{/b} key to switch on auto-voicing.\n\nAdjust the volume of music and sound effects on the {icon=icon-settings} Settings screen.\n\nPress the {b}{u}Esc{/u}{/b} key to access the {icon=icon-grid}Game Menu at any time during the game." + new "Accessibility Tips: To enable auto-voicing of the text, please first configure the speech synthesis settings (speaker gender, accent, etc.) on your computer according to these instructions. Back to the game, you may press the {b}{u}v{/u}{/b} key to switch on auto-voicing.\n\nAdjust the volume of music and sound effects on the {icon=icon-settings} Settings screen.\n\nPress the {b}{u}Esc{/u}{/b} key to access the {icon=icon-grid}Game Menu at any time during the game." # game/scripts/splashscreen.rpy:42 - old "This game, {b}Learn to Code RPG{/b}, is currently in beta.\n\nIf you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}.\n\nIf you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on {a=https://freecodecamp.itch.io/learn-to-code-rpg}itch.io{/a} and {icon=icon-star} star our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}." - new "This game, {b}Learn to Code RPG{/b}, is currently in beta.\n\nIf you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}.\n\nIf you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on {a=https://freecodecamp.itch.io/learn-to-code-rpg}itch.io{/a} and {icon=icon-star} star our {a=https://github.com/freeCodeCamp/LearnToCodeRPG}GitHub repo{/a}." + old "This game, {b}Learn to Code RPG{/b}, is currently in beta.\n\nIf you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our GitHub repo.\n\nIf you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on itch.io and {icon=icon-star} star our GitHub repo." + new "This game, {b}Learn to Code RPG{/b}, is currently in beta.\n\nIf you notice any bugs or have suggestions about accessibility, the interface, the story, or anything at all, please report them on our GitHub repo.\n\nIf you are enjoying this game, please {icon=icon-thumbs-up} rate and review us on itch.io and {icon=icon-star} star our GitHub repo."