From 4c0abf49e186f379c5e452780cbe547d1ee6cea1 Mon Sep 17 00:00:00 2001
From: Izwzyzx <184772711+Izwzyzx@users.noreply.github.com>
Date: Sat, 16 Oct 2021 18:00:39 -0500
Subject: [PATCH] Split .gmk into separate files
---
src/Backgrounds/_resources.list.xml | 2 +
src/Constants.xml | 2 +
src/Extension Packages.xml | 4 +
src/Fonts/_resources.list.xml | 2 +
src/Game Information.txt | Bin 0 -> 669 bytes
src/Game Information.xml | 16 +
src/Global Game Settings.xml | 66 ++
src/Objects/_resources.list.xml | 5 +
.../objNetControl.events/Close Button.xml | 28 +
src/Objects/objNetControl.events/Create.xml | 52 ++
src/Objects/objNetControl.events/Draw.xml | 71 ++
src/Objects/objNetControl.events/Step.xml | 51 ++
src/Objects/objNetControl.xml | 10 +
src/Objects/objTextbox.xml | 10 +
src/Paths/_resources.list.xml | 2 +
src/Rooms/_resources.list.xml | 4 +
src/Rooms/rmTest.xml | 101 +++
src/Scripts/General/_resources.list.xml | 6 +
src/Scripts/General/game_init.gml | 32 +
src/Scripts/General/num_prefix.gml | 21 +
src/Scripts/General/string_parse_single.gml | 46 ++
src/Scripts/IRC Functions/_resources.list.xml | 13 +
src/Scripts/IRC Functions/bot_commands.gml | 29 +
.../IRC Functions/interpret_message.gml | 171 +++++
src/Scripts/IRC Functions/irc_connect.gml | 15 +
src/Scripts/IRC Functions/irc_disconnect.gml | 5 +
src/Scripts/IRC Functions/join_channel.gml | 2 +
src/Scripts/IRC Functions/part_channel.gml | 2 +
src/Scripts/IRC Functions/send_ctcp.gml | 45 ++
src/Scripts/IRC Functions/send_message.gml | 17 +
src/Scripts/IRC Functions/send_notice.gml | 17 +
src/Scripts/IRC Functions/timestamp.gml | 9 +
src/Scripts/Scrollbars/_resources.list.xml | 7 +
src/Scripts/Scrollbars/get_scrollbarvalue.gml | 12 +
src/Scripts/Scrollbars/scrollbar_create.gml | 34 +
src/Scripts/Scrollbars/scrollbar_draw.gml | 82 +++
src/Scripts/Scrollbars/scrollbar_draw_ext.gml | 89 +++
src/Scripts/Textbox/_resources.list.xml | 7 +
src/Scripts/Textbox/log_draw.gml | 22 +
src/Scripts/Textbox/log_update.gml | 52 ++
src/Scripts/Textbox/textbox_create.gml | 49 ++
src/Scripts/Textbox/textbox_draw.gml | 685 ++++++++++++++++++
src/Scripts/_resources.list.xml | 7 +
src/Sounds/_resources.list.xml | 2 +
src/Sprites/Fonts/_resources.list.xml | 6 +
.../Fonts/sprCyberspace.images/image 0.png | Bin 0 -> 70 bytes
.../Fonts/sprCyberspace.images/image 1.png | Bin 0 -> 85 bytes
.../Fonts/sprCyberspace.images/image 10.png | Bin 0 -> 98 bytes
.../Fonts/sprCyberspace.images/image 11.png | Bin 0 -> 92 bytes
.../Fonts/sprCyberspace.images/image 12.png | Bin 0 -> 81 bytes
.../Fonts/sprCyberspace.images/image 13.png | Bin 0 -> 76 bytes
.../Fonts/sprCyberspace.images/image 14.png | Bin 0 -> 79 bytes
.../Fonts/sprCyberspace.images/image 15.png | Bin 0 -> 83 bytes
.../Fonts/sprCyberspace.images/image 16.png | Bin 0 -> 87 bytes
.../Fonts/sprCyberspace.images/image 17.png | Bin 0 -> 83 bytes
.../Fonts/sprCyberspace.images/image 18.png | Bin 0 -> 96 bytes
.../Fonts/sprCyberspace.images/image 19.png | Bin 0 -> 99 bytes
.../Fonts/sprCyberspace.images/image 2.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 20.png | Bin 0 -> 85 bytes
.../Fonts/sprCyberspace.images/image 21.png | Bin 0 -> 92 bytes
.../Fonts/sprCyberspace.images/image 22.png | Bin 0 -> 96 bytes
.../Fonts/sprCyberspace.images/image 23.png | Bin 0 -> 80 bytes
.../Fonts/sprCyberspace.images/image 24.png | Bin 0 -> 98 bytes
.../Fonts/sprCyberspace.images/image 25.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 26.png | Bin 0 -> 85 bytes
.../Fonts/sprCyberspace.images/image 27.png | Bin 0 -> 87 bytes
.../Fonts/sprCyberspace.images/image 28.png | Bin 0 -> 82 bytes
.../Fonts/sprCyberspace.images/image 29.png | Bin 0 -> 83 bytes
.../Fonts/sprCyberspace.images/image 3.png | Bin 0 -> 90 bytes
.../Fonts/sprCyberspace.images/image 30.png | Bin 0 -> 81 bytes
.../Fonts/sprCyberspace.images/image 31.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 32.png | Bin 0 -> 105 bytes
.../Fonts/sprCyberspace.images/image 33.png | Bin 0 -> 96 bytes
.../Fonts/sprCyberspace.images/image 34.png | Bin 0 -> 93 bytes
.../Fonts/sprCyberspace.images/image 35.png | Bin 0 -> 94 bytes
.../Fonts/sprCyberspace.images/image 36.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 37.png | Bin 0 -> 92 bytes
.../Fonts/sprCyberspace.images/image 38.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 39.png | Bin 0 -> 96 bytes
.../Fonts/sprCyberspace.images/image 4.png | Bin 0 -> 102 bytes
.../Fonts/sprCyberspace.images/image 40.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 41.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 42.png | Bin 0 -> 92 bytes
.../Fonts/sprCyberspace.images/image 43.png | Bin 0 -> 87 bytes
.../Fonts/sprCyberspace.images/image 44.png | Bin 0 -> 84 bytes
.../Fonts/sprCyberspace.images/image 45.png | Bin 0 -> 87 bytes
.../Fonts/sprCyberspace.images/image 46.png | Bin 0 -> 83 bytes
.../Fonts/sprCyberspace.images/image 47.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 48.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 49.png | Bin 0 -> 88 bytes
.../Fonts/sprCyberspace.images/image 5.png | Bin 0 -> 100 bytes
.../Fonts/sprCyberspace.images/image 50.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 51.png | Bin 0 -> 98 bytes
.../Fonts/sprCyberspace.images/image 52.png | Bin 0 -> 84 bytes
.../Fonts/sprCyberspace.images/image 53.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 54.png | Bin 0 -> 99 bytes
.../Fonts/sprCyberspace.images/image 55.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 56.png | Bin 0 -> 97 bytes
.../Fonts/sprCyberspace.images/image 57.png | Bin 0 -> 92 bytes
.../Fonts/sprCyberspace.images/image 58.png | Bin 0 -> 100 bytes
.../Fonts/sprCyberspace.images/image 59.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 6.png | Bin 0 -> 102 bytes
.../Fonts/sprCyberspace.images/image 60.png | Bin 0 -> 78 bytes
.../Fonts/sprCyberspace.images/image 61.png | Bin 0 -> 84 bytes
.../Fonts/sprCyberspace.images/image 62.png | Bin 0 -> 90 bytes
.../Fonts/sprCyberspace.images/image 63.png | Bin 0 -> 76 bytes
.../Fonts/sprCyberspace.images/image 64.png | Bin 0 -> 83 bytes
.../Fonts/sprCyberspace.images/image 65.png | Bin 0 -> 91 bytes
.../Fonts/sprCyberspace.images/image 66.png | Bin 0 -> 96 bytes
.../Fonts/sprCyberspace.images/image 67.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 68.png | Bin 0 -> 98 bytes
.../Fonts/sprCyberspace.images/image 69.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 7.png | Bin 0 -> 81 bytes
.../Fonts/sprCyberspace.images/image 70.png | Bin 0 -> 92 bytes
.../Fonts/sprCyberspace.images/image 71.png | Bin 0 -> 93 bytes
.../Fonts/sprCyberspace.images/image 72.png | Bin 0 -> 93 bytes
.../Fonts/sprCyberspace.images/image 73.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 74.png | Bin 0 -> 92 bytes
.../Fonts/sprCyberspace.images/image 75.png | Bin 0 -> 93 bytes
.../Fonts/sprCyberspace.images/image 76.png | Bin 0 -> 84 bytes
.../Fonts/sprCyberspace.images/image 77.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 78.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 79.png | Bin 0 -> 90 bytes
.../Fonts/sprCyberspace.images/image 8.png | Bin 0 -> 86 bytes
.../Fonts/sprCyberspace.images/image 80.png | Bin 0 -> 88 bytes
.../Fonts/sprCyberspace.images/image 81.png | Bin 0 -> 88 bytes
.../Fonts/sprCyberspace.images/image 82.png | Bin 0 -> 87 bytes
.../Fonts/sprCyberspace.images/image 83.png | Bin 0 -> 94 bytes
.../Fonts/sprCyberspace.images/image 84.png | Bin 0 -> 94 bytes
.../Fonts/sprCyberspace.images/image 85.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 86.png | Bin 0 -> 93 bytes
.../Fonts/sprCyberspace.images/image 87.png | Bin 0 -> 89 bytes
.../Fonts/sprCyberspace.images/image 88.png | Bin 0 -> 92 bytes
.../Fonts/sprCyberspace.images/image 89.png | Bin 0 -> 95 bytes
.../Fonts/sprCyberspace.images/image 9.png | Bin 0 -> 83 bytes
.../Fonts/sprCyberspace.images/image 90.png | Bin 0 -> 87 bytes
.../Fonts/sprCyberspace.images/image 91.png | Bin 0 -> 94 bytes
.../Fonts/sprCyberspace.images/image 92.png | Bin 0 -> 79 bytes
.../Fonts/sprCyberspace.images/image 93.png | Bin 0 -> 92 bytes
src/Sprites/Fonts/sprCyberspace.xml | 12 +
.../Fonts/sprGameSystem.images/image 0.png | Bin 0 -> 70 bytes
.../Fonts/sprGameSystem.images/image 1.png | Bin 0 -> 89 bytes
.../Fonts/sprGameSystem.images/image 10.png | Bin 0 -> 92 bytes
.../Fonts/sprGameSystem.images/image 11.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 12.png | Bin 0 -> 81 bytes
.../Fonts/sprGameSystem.images/image 13.png | Bin 0 -> 76 bytes
.../Fonts/sprGameSystem.images/image 14.png | Bin 0 -> 79 bytes
.../Fonts/sprGameSystem.images/image 15.png | Bin 0 -> 79 bytes
.../Fonts/sprGameSystem.images/image 16.png | Bin 0 -> 96 bytes
.../Fonts/sprGameSystem.images/image 17.png | Bin 0 -> 90 bytes
.../Fonts/sprGameSystem.images/image 18.png | Bin 0 -> 99 bytes
.../Fonts/sprGameSystem.images/image 19.png | Bin 0 -> 95 bytes
.../Fonts/sprGameSystem.images/image 2.png | Bin 0 -> 80 bytes
.../Fonts/sprGameSystem.images/image 20.png | Bin 0 -> 101 bytes
.../Fonts/sprGameSystem.images/image 21.png | Bin 0 -> 101 bytes
.../Fonts/sprGameSystem.images/image 22.png | Bin 0 -> 100 bytes
.../Fonts/sprGameSystem.images/image 23.png | Bin 0 -> 87 bytes
.../Fonts/sprGameSystem.images/image 24.png | Bin 0 -> 99 bytes
.../Fonts/sprGameSystem.images/image 25.png | Bin 0 -> 97 bytes
.../Fonts/sprGameSystem.images/image 26.png | Bin 0 -> 85 bytes
.../Fonts/sprGameSystem.images/image 27.png | Bin 0 -> 87 bytes
.../Fonts/sprGameSystem.images/image 28.png | Bin 0 -> 83 bytes
.../Fonts/sprGameSystem.images/image 29.png | Bin 0 -> 83 bytes
.../Fonts/sprGameSystem.images/image 3.png | Bin 0 -> 86 bytes
.../Fonts/sprGameSystem.images/image 30.png | Bin 0 -> 82 bytes
.../Fonts/sprGameSystem.images/image 31.png | Bin 0 -> 92 bytes
.../Fonts/sprGameSystem.images/image 32.png | Bin 0 -> 101 bytes
.../Fonts/sprGameSystem.images/image 33.png | Bin 0 -> 94 bytes
.../Fonts/sprGameSystem.images/image 34.png | Bin 0 -> 94 bytes
.../Fonts/sprGameSystem.images/image 35.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 36.png | Bin 0 -> 88 bytes
.../Fonts/sprGameSystem.images/image 37.png | Bin 0 -> 95 bytes
.../Fonts/sprGameSystem.images/image 38.png | Bin 0 -> 91 bytes
.../Fonts/sprGameSystem.images/image 39.png | Bin 0 -> 102 bytes
.../Fonts/sprGameSystem.images/image 4.png | Bin 0 -> 108 bytes
.../Fonts/sprGameSystem.images/image 40.png | Bin 0 -> 86 bytes
.../Fonts/sprGameSystem.images/image 41.png | Bin 0 -> 89 bytes
.../Fonts/sprGameSystem.images/image 42.png | Bin 0 -> 90 bytes
.../Fonts/sprGameSystem.images/image 43.png | Bin 0 -> 103 bytes
.../Fonts/sprGameSystem.images/image 44.png | Bin 0 -> 83 bytes
.../Fonts/sprGameSystem.images/image 45.png | Bin 0 -> 95 bytes
.../Fonts/sprGameSystem.images/image 46.png | Bin 0 -> 102 bytes
.../Fonts/sprGameSystem.images/image 47.png | Bin 0 -> 88 bytes
.../Fonts/sprGameSystem.images/image 48.png | Bin 0 -> 90 bytes
.../Fonts/sprGameSystem.images/image 49.png | Bin 0 -> 96 bytes
.../Fonts/sprGameSystem.images/image 5.png | Bin 0 -> 100 bytes
.../Fonts/sprGameSystem.images/image 50.png | Bin 0 -> 98 bytes
.../Fonts/sprGameSystem.images/image 51.png | Bin 0 -> 103 bytes
.../Fonts/sprGameSystem.images/image 52.png | Bin 0 -> 84 bytes
.../Fonts/sprGameSystem.images/image 53.png | Bin 0 -> 84 bytes
.../Fonts/sprGameSystem.images/image 54.png | Bin 0 -> 95 bytes
.../Fonts/sprGameSystem.images/image 55.png | Bin 0 -> 90 bytes
.../Fonts/sprGameSystem.images/image 56.png | Bin 0 -> 99 bytes
.../Fonts/sprGameSystem.images/image 57.png | Bin 0 -> 94 bytes
.../Fonts/sprGameSystem.images/image 58.png | Bin 0 -> 89 bytes
.../Fonts/sprGameSystem.images/image 59.png | Bin 0 -> 86 bytes
.../Fonts/sprGameSystem.images/image 6.png | Bin 0 -> 101 bytes
.../Fonts/sprGameSystem.images/image 60.png | Bin 0 -> 79 bytes
.../Fonts/sprGameSystem.images/image 61.png | Bin 0 -> 84 bytes
.../Fonts/sprGameSystem.images/image 62.png | Bin 0 -> 89 bytes
.../Fonts/sprGameSystem.images/image 63.png | Bin 0 -> 76 bytes
.../Fonts/sprGameSystem.images/image 64.png | Bin 0 -> 79 bytes
.../Fonts/sprGameSystem.images/image 65.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 66.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 67.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 68.png | Bin 0 -> 95 bytes
.../Fonts/sprGameSystem.images/image 69.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 7.png | Bin 0 -> 81 bytes
.../Fonts/sprGameSystem.images/image 70.png | Bin 0 -> 91 bytes
.../Fonts/sprGameSystem.images/image 71.png | Bin 0 -> 97 bytes
.../Fonts/sprGameSystem.images/image 72.png | Bin 0 -> 89 bytes
.../Fonts/sprGameSystem.images/image 73.png | Bin 0 -> 89 bytes
.../Fonts/sprGameSystem.images/image 74.png | Bin 0 -> 88 bytes
.../Fonts/sprGameSystem.images/image 75.png | Bin 0 -> 101 bytes
.../Fonts/sprGameSystem.images/image 76.png | Bin 0 -> 85 bytes
.../Fonts/sprGameSystem.images/image 77.png | Bin 0 -> 91 bytes
.../Fonts/sprGameSystem.images/image 78.png | Bin 0 -> 82 bytes
.../Fonts/sprGameSystem.images/image 79.png | Bin 0 -> 88 bytes
.../Fonts/sprGameSystem.images/image 8.png | Bin 0 -> 87 bytes
.../Fonts/sprGameSystem.images/image 80.png | Bin 0 -> 90 bytes
.../Fonts/sprGameSystem.images/image 81.png | Bin 0 -> 91 bytes
.../Fonts/sprGameSystem.images/image 82.png | Bin 0 -> 86 bytes
.../Fonts/sprGameSystem.images/image 83.png | Bin 0 -> 94 bytes
.../Fonts/sprGameSystem.images/image 84.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 85.png | Bin 0 -> 84 bytes
.../Fonts/sprGameSystem.images/image 86.png | Bin 0 -> 91 bytes
.../Fonts/sprGameSystem.images/image 87.png | Bin 0 -> 90 bytes
.../Fonts/sprGameSystem.images/image 88.png | Bin 0 -> 91 bytes
.../Fonts/sprGameSystem.images/image 89.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 9.png | Bin 0 -> 84 bytes
.../Fonts/sprGameSystem.images/image 90.png | Bin 0 -> 86 bytes
.../Fonts/sprGameSystem.images/image 91.png | Bin 0 -> 94 bytes
.../Fonts/sprGameSystem.images/image 92.png | Bin 0 -> 79 bytes
.../Fonts/sprGameSystem.images/image 93.png | Bin 0 -> 93 bytes
.../Fonts/sprGameSystem.images/image 94.png | Bin 0 -> 92 bytes
.../Fonts/sprGameSystem.images/image 95.png | Bin 0 -> 101 bytes
src/Sprites/Fonts/sprGameSystem.xml | 12 +
.../Fonts/sprRomulus.images/image 0.png | Bin 0 -> 84 bytes
.../Fonts/sprRomulus.images/image 1.png | Bin 0 -> 85 bytes
.../Fonts/sprRomulus.images/image 10.png | Bin 0 -> 93 bytes
.../Fonts/sprRomulus.images/image 11.png | Bin 0 -> 85 bytes
.../Fonts/sprRomulus.images/image 12.png | Bin 0 -> 76 bytes
.../Fonts/sprRomulus.images/image 13.png | Bin 0 -> 81 bytes
.../Fonts/sprRomulus.images/image 14.png | Bin 0 -> 80 bytes
.../Fonts/sprRomulus.images/image 15.png | Bin 0 -> 106 bytes
.../Fonts/sprRomulus.images/image 16.png | Bin 0 -> 90 bytes
.../Fonts/sprRomulus.images/image 17.png | Bin 0 -> 95 bytes
.../Fonts/sprRomulus.images/image 18.png | Bin 0 -> 101 bytes
.../Fonts/sprRomulus.images/image 19.png | Bin 0 -> 101 bytes
.../Fonts/sprRomulus.images/image 2.png | Bin 0 -> 104 bytes
.../Fonts/sprRomulus.images/image 20.png | Bin 0 -> 101 bytes
.../Fonts/sprRomulus.images/image 21.png | Bin 0 -> 108 bytes
.../Fonts/sprRomulus.images/image 22.png | Bin 0 -> 86 bytes
.../Fonts/sprRomulus.images/image 23.png | Bin 0 -> 106 bytes
.../Fonts/sprRomulus.images/image 24.png | Bin 0 -> 108 bytes
.../Fonts/sprRomulus.images/image 25.png | Bin 0 -> 86 bytes
.../Fonts/sprRomulus.images/image 26.png | Bin 0 -> 91 bytes
.../Fonts/sprRomulus.images/image 27.png | Bin 0 -> 84 bytes
.../Fonts/sprRomulus.images/image 28.png | Bin 0 -> 84 bytes
.../Fonts/sprRomulus.images/image 29.png | Bin 0 -> 82 bytes
.../Fonts/sprRomulus.images/image 3.png | Bin 0 -> 115 bytes
.../Fonts/sprRomulus.images/image 30.png | Bin 0 -> 97 bytes
.../Fonts/sprRomulus.images/image 31.png | Bin 0 -> 105 bytes
.../Fonts/sprRomulus.images/image 32.png | Bin 0 -> 105 bytes
.../Fonts/sprRomulus.images/image 33.png | Bin 0 -> 108 bytes
.../Fonts/sprRomulus.images/image 34.png | Bin 0 -> 100 bytes
.../Fonts/sprRomulus.images/image 35.png | Bin 0 -> 106 bytes
.../Fonts/sprRomulus.images/image 36.png | Bin 0 -> 105 bytes
.../Fonts/sprRomulus.images/image 37.png | Bin 0 -> 102 bytes
.../Fonts/sprRomulus.images/image 38.png | Bin 0 -> 107 bytes
.../Fonts/sprRomulus.images/image 39.png | Bin 0 -> 111 bytes
.../Fonts/sprRomulus.images/image 4.png | Bin 0 -> 110 bytes
.../Fonts/sprRomulus.images/image 40.png | Bin 0 -> 88 bytes
.../Fonts/sprRomulus.images/image 41.png | Bin 0 -> 94 bytes
.../Fonts/sprRomulus.images/image 42.png | Bin 0 -> 110 bytes
.../Fonts/sprRomulus.images/image 43.png | Bin 0 -> 92 bytes
.../Fonts/sprRomulus.images/image 44.png | Bin 0 -> 103 bytes
.../Fonts/sprRomulus.images/image 45.png | Bin 0 -> 108 bytes
.../Fonts/sprRomulus.images/image 46.png | Bin 0 -> 105 bytes
.../Fonts/sprRomulus.images/image 47.png | Bin 0 -> 106 bytes
.../Fonts/sprRomulus.images/image 48.png | Bin 0 -> 111 bytes
.../Fonts/sprRomulus.images/image 49.png | Bin 0 -> 111 bytes
.../Fonts/sprRomulus.images/image 5.png | Bin 0 -> 104 bytes
.../Fonts/sprRomulus.images/image 50.png | Bin 0 -> 104 bytes
.../Fonts/sprRomulus.images/image 51.png | Bin 0 -> 96 bytes
.../Fonts/sprRomulus.images/image 52.png | Bin 0 -> 104 bytes
.../Fonts/sprRomulus.images/image 53.png | Bin 0 -> 104 bytes
.../Fonts/sprRomulus.images/image 54.png | Bin 0 -> 100 bytes
.../Fonts/sprRomulus.images/image 55.png | Bin 0 -> 102 bytes
.../Fonts/sprRomulus.images/image 56.png | Bin 0 -> 104 bytes
.../Fonts/sprRomulus.images/image 57.png | Bin 0 -> 95 bytes
.../Fonts/sprRomulus.images/image 58.png | Bin 0 -> 86 bytes
.../Fonts/sprRomulus.images/image 59.png | Bin 0 -> 79 bytes
.../Fonts/sprRomulus.images/image 6.png | Bin 0 -> 83 bytes
.../Fonts/sprRomulus.images/image 60.png | Bin 0 -> 85 bytes
.../Fonts/sprRomulus.images/image 61.png | Bin 0 -> 93 bytes
.../Fonts/sprRomulus.images/image 62.png | Bin 0 -> 77 bytes
.../Fonts/sprRomulus.images/image 63.png | Bin 0 -> 81 bytes
.../Fonts/sprRomulus.images/image 64.png | Bin 0 -> 99 bytes
.../Fonts/sprRomulus.images/image 65.png | Bin 0 -> 105 bytes
.../Fonts/sprRomulus.images/image 66.png | Bin 0 -> 94 bytes
.../Fonts/sprRomulus.images/image 67.png | Bin 0 -> 109 bytes
.../Fonts/sprRomulus.images/image 68.png | Bin 0 -> 98 bytes
.../Fonts/sprRomulus.images/image 69.png | Bin 0 -> 96 bytes
.../Fonts/sprRomulus.images/image 7.png | Bin 0 -> 86 bytes
.../Fonts/sprRomulus.images/image 70.png | Bin 0 -> 105 bytes
.../Fonts/sprRomulus.images/image 71.png | Bin 0 -> 94 bytes
.../Fonts/sprRomulus.images/image 72.png | Bin 0 -> 89 bytes
.../Fonts/sprRomulus.images/image 73.png | Bin 0 -> 85 bytes
.../Fonts/sprRomulus.images/image 74.png | Bin 0 -> 105 bytes
.../Fonts/sprRomulus.images/image 75.png | Bin 0 -> 84 bytes
.../Fonts/sprRomulus.images/image 76.png | Bin 0 -> 98 bytes
.../Fonts/sprRomulus.images/image 77.png | Bin 0 -> 99 bytes
.../Fonts/sprRomulus.images/image 78.png | Bin 0 -> 98 bytes
.../Fonts/sprRomulus.images/image 79.png | Bin 0 -> 104 bytes
.../Fonts/sprRomulus.images/image 8.png | Bin 0 -> 85 bytes
.../Fonts/sprRomulus.images/image 80.png | Bin 0 -> 105 bytes
.../Fonts/sprRomulus.images/image 81.png | Bin 0 -> 96 bytes
.../Fonts/sprRomulus.images/image 82.png | Bin 0 -> 95 bytes
.../Fonts/sprRomulus.images/image 83.png | Bin 0 -> 90 bytes
.../Fonts/sprRomulus.images/image 84.png | Bin 0 -> 89 bytes
.../Fonts/sprRomulus.images/image 85.png | Bin 0 -> 95 bytes
.../Fonts/sprRomulus.images/image 86.png | Bin 0 -> 92 bytes
.../Fonts/sprRomulus.images/image 87.png | Bin 0 -> 97 bytes
.../Fonts/sprRomulus.images/image 88.png | Bin 0 -> 98 bytes
.../Fonts/sprRomulus.images/image 89.png | Bin 0 -> 94 bytes
.../Fonts/sprRomulus.images/image 9.png | Bin 0 -> 89 bytes
.../Fonts/sprRomulus.images/image 90.png | Bin 0 -> 95 bytes
.../Fonts/sprRomulus.images/image 91.png | Bin 0 -> 81 bytes
.../Fonts/sprRomulus.images/image 92.png | Bin 0 -> 94 bytes
.../Fonts/sprRomulus.images/image 93.png | Bin 0 -> 86 bytes
src/Sprites/Fonts/sprRomulus.xml | 12 +
src/Sprites/_resources.list.xml | 5 +
src/Sprites/sprScrollbar.images/image 0.png | Bin 0 -> 125 bytes
src/Sprites/sprScrollbar.images/image 1.png | Bin 0 -> 125 bytes
src/Sprites/sprScrollbar.images/image 10.png | Bin 0 -> 110 bytes
src/Sprites/sprScrollbar.images/image 11.png | Bin 0 -> 112 bytes
src/Sprites/sprScrollbar.images/image 12.png | Bin 0 -> 87 bytes
src/Sprites/sprScrollbar.images/image 13.png | Bin 0 -> 85 bytes
src/Sprites/sprScrollbar.images/image 14.png | Bin 0 -> 87 bytes
src/Sprites/sprScrollbar.images/image 15.png | Bin 0 -> 92 bytes
src/Sprites/sprScrollbar.images/image 16.png | Bin 0 -> 82 bytes
src/Sprites/sprScrollbar.images/image 17.png | Bin 0 -> 81 bytes
src/Sprites/sprScrollbar.images/image 18.png | Bin 0 -> 85 bytes
src/Sprites/sprScrollbar.images/image 19.png | Bin 0 -> 90 bytes
src/Sprites/sprScrollbar.images/image 2.png | Bin 0 -> 122 bytes
src/Sprites/sprScrollbar.images/image 3.png | Bin 0 -> 125 bytes
src/Sprites/sprScrollbar.images/image 4.png | Bin 0 -> 116 bytes
src/Sprites/sprScrollbar.images/image 5.png | Bin 0 -> 120 bytes
src/Sprites/sprScrollbar.images/image 6.png | Bin 0 -> 107 bytes
src/Sprites/sprScrollbar.images/image 7.png | Bin 0 -> 107 bytes
src/Sprites/sprScrollbar.images/image 8.png | Bin 0 -> 114 bytes
src/Sprites/sprScrollbar.images/image 9.png | Bin 0 -> 110 bytes
src/Sprites/sprScrollbar.xml | 12 +
src/Time Lines/_resources.list.xml | 2 +
src/game icon.ico | Bin 0 -> 17684 bytes
356 files changed, 1965 insertions(+)
create mode 100644 src/Backgrounds/_resources.list.xml
create mode 100644 src/Constants.xml
create mode 100644 src/Extension Packages.xml
create mode 100644 src/Fonts/_resources.list.xml
create mode 100644 src/Game Information.txt
create mode 100644 src/Game Information.xml
create mode 100644 src/Global Game Settings.xml
create mode 100644 src/Objects/_resources.list.xml
create mode 100644 src/Objects/objNetControl.events/Close Button.xml
create mode 100644 src/Objects/objNetControl.events/Create.xml
create mode 100644 src/Objects/objNetControl.events/Draw.xml
create mode 100644 src/Objects/objNetControl.events/Step.xml
create mode 100644 src/Objects/objNetControl.xml
create mode 100644 src/Objects/objTextbox.xml
create mode 100644 src/Paths/_resources.list.xml
create mode 100644 src/Rooms/_resources.list.xml
create mode 100644 src/Rooms/rmTest.xml
create mode 100644 src/Scripts/General/_resources.list.xml
create mode 100644 src/Scripts/General/game_init.gml
create mode 100644 src/Scripts/General/num_prefix.gml
create mode 100644 src/Scripts/General/string_parse_single.gml
create mode 100644 src/Scripts/IRC Functions/_resources.list.xml
create mode 100644 src/Scripts/IRC Functions/bot_commands.gml
create mode 100644 src/Scripts/IRC Functions/interpret_message.gml
create mode 100644 src/Scripts/IRC Functions/irc_connect.gml
create mode 100644 src/Scripts/IRC Functions/irc_disconnect.gml
create mode 100644 src/Scripts/IRC Functions/join_channel.gml
create mode 100644 src/Scripts/IRC Functions/part_channel.gml
create mode 100644 src/Scripts/IRC Functions/send_ctcp.gml
create mode 100644 src/Scripts/IRC Functions/send_message.gml
create mode 100644 src/Scripts/IRC Functions/send_notice.gml
create mode 100644 src/Scripts/IRC Functions/timestamp.gml
create mode 100644 src/Scripts/Scrollbars/_resources.list.xml
create mode 100644 src/Scripts/Scrollbars/get_scrollbarvalue.gml
create mode 100644 src/Scripts/Scrollbars/scrollbar_create.gml
create mode 100644 src/Scripts/Scrollbars/scrollbar_draw.gml
create mode 100644 src/Scripts/Scrollbars/scrollbar_draw_ext.gml
create mode 100644 src/Scripts/Textbox/_resources.list.xml
create mode 100644 src/Scripts/Textbox/log_draw.gml
create mode 100644 src/Scripts/Textbox/log_update.gml
create mode 100644 src/Scripts/Textbox/textbox_create.gml
create mode 100644 src/Scripts/Textbox/textbox_draw.gml
create mode 100644 src/Scripts/_resources.list.xml
create mode 100644 src/Sounds/_resources.list.xml
create mode 100644 src/Sprites/Fonts/_resources.list.xml
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 0.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 1.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 10.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 11.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 12.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 13.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 14.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 15.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 16.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 17.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 18.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 19.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 2.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 20.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 21.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 22.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 23.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 24.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 25.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 26.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 27.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 28.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 29.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 3.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 30.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 31.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 32.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 33.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 34.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 35.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 36.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 37.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 38.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 39.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 4.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 40.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 41.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 42.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 43.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 44.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 45.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 46.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 47.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 48.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 49.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 5.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 50.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 51.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 52.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 53.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 54.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 55.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 56.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 57.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 58.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 59.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 6.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 60.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 61.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 62.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 63.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 64.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 65.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 66.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 67.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 68.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 69.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 7.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 70.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 71.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 72.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 73.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 74.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 75.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 76.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 77.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 78.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 79.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 8.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 80.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 81.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 82.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 83.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 84.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 85.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 86.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 87.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 88.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 89.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 9.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 90.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 91.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 92.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.images/image 93.png
create mode 100644 src/Sprites/Fonts/sprCyberspace.xml
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 0.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 1.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 10.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 11.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 12.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 13.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 14.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 15.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 16.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 17.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 18.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 19.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 2.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 20.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 21.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 22.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 23.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 24.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 25.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 26.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 27.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 28.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 29.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 3.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 30.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 31.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 32.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 33.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 34.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 35.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 36.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 37.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 38.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 39.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 4.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 40.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 41.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 42.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 43.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 44.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 45.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 46.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 47.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 48.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 49.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 5.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 50.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 51.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 52.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 53.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 54.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 55.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 56.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 57.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 58.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 59.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 6.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 60.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 61.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 62.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 63.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 64.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 65.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 66.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 67.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 68.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 69.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 7.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 70.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 71.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 72.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 73.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 74.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 75.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 76.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 77.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 78.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 79.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 8.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 80.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 81.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 82.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 83.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 84.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 85.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 86.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 87.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 88.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 89.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 9.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 90.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 91.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 92.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 93.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 94.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.images/image 95.png
create mode 100644 src/Sprites/Fonts/sprGameSystem.xml
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 0.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 1.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 10.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 11.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 12.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 13.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 14.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 15.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 16.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 17.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 18.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 19.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 2.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 20.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 21.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 22.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 23.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 24.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 25.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 26.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 27.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 28.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 29.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 3.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 30.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 31.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 32.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 33.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 34.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 35.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 36.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 37.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 38.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 39.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 4.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 40.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 41.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 42.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 43.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 44.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 45.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 46.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 47.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 48.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 49.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 5.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 50.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 51.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 52.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 53.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 54.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 55.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 56.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 57.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 58.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 59.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 6.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 60.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 61.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 62.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 63.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 64.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 65.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 66.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 67.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 68.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 69.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 7.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 70.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 71.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 72.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 73.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 74.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 75.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 76.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 77.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 78.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 79.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 8.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 80.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 81.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 82.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 83.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 84.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 85.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 86.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 87.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 88.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 89.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 9.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 90.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 91.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 92.png
create mode 100644 src/Sprites/Fonts/sprRomulus.images/image 93.png
create mode 100644 src/Sprites/Fonts/sprRomulus.xml
create mode 100644 src/Sprites/_resources.list.xml
create mode 100644 src/Sprites/sprScrollbar.images/image 0.png
create mode 100644 src/Sprites/sprScrollbar.images/image 1.png
create mode 100644 src/Sprites/sprScrollbar.images/image 10.png
create mode 100644 src/Sprites/sprScrollbar.images/image 11.png
create mode 100644 src/Sprites/sprScrollbar.images/image 12.png
create mode 100644 src/Sprites/sprScrollbar.images/image 13.png
create mode 100644 src/Sprites/sprScrollbar.images/image 14.png
create mode 100644 src/Sprites/sprScrollbar.images/image 15.png
create mode 100644 src/Sprites/sprScrollbar.images/image 16.png
create mode 100644 src/Sprites/sprScrollbar.images/image 17.png
create mode 100644 src/Sprites/sprScrollbar.images/image 18.png
create mode 100644 src/Sprites/sprScrollbar.images/image 19.png
create mode 100644 src/Sprites/sprScrollbar.images/image 2.png
create mode 100644 src/Sprites/sprScrollbar.images/image 3.png
create mode 100644 src/Sprites/sprScrollbar.images/image 4.png
create mode 100644 src/Sprites/sprScrollbar.images/image 5.png
create mode 100644 src/Sprites/sprScrollbar.images/image 6.png
create mode 100644 src/Sprites/sprScrollbar.images/image 7.png
create mode 100644 src/Sprites/sprScrollbar.images/image 8.png
create mode 100644 src/Sprites/sprScrollbar.images/image 9.png
create mode 100644 src/Sprites/sprScrollbar.xml
create mode 100644 src/Time Lines/_resources.list.xml
create mode 100644 src/game icon.ico
diff --git a/src/Backgrounds/_resources.list.xml b/src/Backgrounds/_resources.list.xml
new file mode 100644
index 0000000..70032a2
--- /dev/null
+++ b/src/Backgrounds/_resources.list.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/src/Constants.xml b/src/Constants.xml
new file mode 100644
index 0000000..9fba3d9
--- /dev/null
+++ b/src/Constants.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/src/Extension Packages.xml b/src/Extension Packages.xml
new file mode 100644
index 0000000..5210dc7
--- /dev/null
+++ b/src/Extension Packages.xml
@@ -0,0 +1,4 @@
+
+
+ Faucet Networking
+
diff --git a/src/Fonts/_resources.list.xml b/src/Fonts/_resources.list.xml
new file mode 100644
index 0000000..70032a2
--- /dev/null
+++ b/src/Fonts/_resources.list.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/src/Game Information.txt b/src/Game Information.txt
new file mode 100644
index 0000000000000000000000000000000000000000..920a3cc31fedfb11e3a773b04747ce551e9288cf
GIT binary patch
literal 669
zcmb7COK%e~5ax`;f3V7>x$HA3Z6kyba79RP9I3LsW5>d4uRPxDMp6GelNX38mtJN@
zp2zonGu}hWrUn_v9gQAr-K-ku(3t9Ay$rUl+I9~nhMbk>paK(|2ctJK5#~yKPEPvu
zGpFif>hkdX?(H6Q^f7UxSVO|D0-F#+1ifGF41Veqy;rRERfq@Clt*LKt~;
+
+
+ -1
+ -1
+ 600
+ 400
+
+ true
+ FFFFE1
+ Game Information
+ false
+ true
+ true
+ false
+
diff --git a/src/Global Game Settings.xml b/src/Global Game Settings.xml
new file mode 100644
index 0000000..d5070c5
--- /dev/null
+++ b/src/Global Game Settings.xml
@@ -0,0 +1,66 @@
+
+
+
+ -1
+ true
+ false
+ false
+ 000000
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+ false
+ false
+ 255
+
+
+ LOADBAR_DEFAULT
+ true
+
+
+ true
+ false
+ false
+ false
+ false
+ false
+
+
+ true
+ false
+ false
+ false
+
+
+ 175401986
+ Ikewise
+ 1.0
+
+ 1
+ 0
+ 0
+ 0
+ Exoverse Games
+ GimelBot
+
+ GimelBot v1.0
+ 66d32cb0f1e18a45a8eb28ee48ffd6f6
+
+
+ PRIORITY_NORMAL
+ true
+ false
+
+
+ false
+ false
+ false
+
+
diff --git a/src/Objects/_resources.list.xml b/src/Objects/_resources.list.xml
new file mode 100644
index 0000000..0176242
--- /dev/null
+++ b/src/Objects/_resources.list.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Objects/objNetControl.events/Close Button.xml b/src/Objects/objNetControl.events/Close Button.xml
new file mode 100644
index 0000000..18b8908
--- /dev/null
+++ b/src/Objects/objNetControl.events/Close Button.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+ CODE
+ false
+ false
+ true
+ CODE
+
+ false
+ false
+ .self
+
+ if(serverSocket != noone) {
+ irc_disconnect("Program ended by user");
+ socket_destroy(serverSocket);
+}
+buffer_destroy(dataBuffer);
+font_delete(fntGameSystem);
+if background_exists(pseudoSurface){background_delete(pseudoSurface)}
+game_end();
+
+
+
+
+
diff --git a/src/Objects/objNetControl.events/Create.xml b/src/Objects/objNetControl.events/Create.xml
new file mode 100644
index 0000000..07dc7e6
--- /dev/null
+++ b/src/Objects/objNetControl.events/Create.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+ CODE
+ false
+ false
+ true
+ CODE
+
+ false
+ false
+ .self
+
+ textNick=textbox_create();
+textNick.single_line=true;
+textNick.text=botnick;
+textNick.color_selected=c_black;
+textNick.color_selection=$00FF00;
+
+textServer=textbox_create();
+textServer.single_line=true;
+textServer.text=server;
+textServer.color_selected=c_black;
+textServer.color_selection=$00FF00;
+
+textPort=textbox_create();
+textPort.single_line=true;
+textPort.text=string(port);
+textPort.max_chars=4;
+textPort.filter_chars="0123456789";
+textPort.color_selected=c_black;
+textPort.color_selection=$00FF00;
+
+textChannel=textbox_create();
+textChannel.single_line=true;
+textChannel.text=channel;
+textChannel.color_selected=c_black;
+textChannel.color_selection=$00FF00;
+
+textbox_focus=textNick;
+
+// Scrollbar
+
+chatScrollbar=scrollbar_create(1,sprScrollbar,1);
+checkScrollbar=1;
+
+
+
+
+
diff --git a/src/Objects/objNetControl.events/Draw.xml b/src/Objects/objNetControl.events/Draw.xml
new file mode 100644
index 0000000..0811217
--- /dev/null
+++ b/src/Objects/objNetControl.events/Draw.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+ CODE
+ false
+ false
+ true
+ CODE
+
+ false
+ false
+ .self
+
+ room_caption="GimelBot v"+botversion/*+" - Framerate: "+string(fps)+"/120"*/;
+
+
+// Draw the obtained data
+if(serverSocket != noone) {
+
+ if background_exists(pseudoSurface){draw_background(pseudoSurface,0,0);}
+ scrollbar_draw_ext(chatScrollbar,room_width-16,0,room_height-32,1,string_count(EOL,chatLog));
+
+} else {
+ var dy;
+
+ draw_text(1,1,errorMessage);
+
+ // Bot Nick field
+ dy=0;
+ draw_text(251,168,"Bot Nickname:");
+ draw_rectangle(422,164,550,180,1); // Text border
+ textbox_draw(textNick,427,168,547,178);
+
+ // Server field
+ dy+=1
+ draw_text(251,168+dy*32,"Server:");
+ draw_rectangle(422,164+dy*32,550,180+dy*32,1); // Text border
+ textbox_draw(textServer,427,168+dy*32,547,178+dy*32);
+
+ // Port field
+ dy+=1
+ draw_text(251,168+dy*32,"Port:");
+ draw_rectangle(422,164+dy*32,550,180+dy*32,1); // Text border
+ textbox_draw(textPort,427,168+dy*32,547,178+dy*32);
+
+ // Channel field
+ dy+=1
+ draw_text(251,168+dy*32,"Channel:");
+ draw_rectangle(422,164+dy*32,550,180+dy*32,1); // Text border
+ textbox_draw(textChannel,427,168+dy*32,547,178+dy*32);
+
+ // Connect button
+ draw_rectangle(357,307,444,337,1);
+ if((mouse_x>356)&&(mouse_x<445)&&(mouse_y>306)&&(mouse_y<338)){
+ draw_rectangle(357,307,444,337,0);
+ draw_set_color(c_black);
+ window_set_cursor(cr_handpoint);
+ if(mouse_check_button_released(mb_left)){window_set_cursor(cr_default); irc_connect();}
+ } else {
+ window_set_cursor(cr_default);
+ }
+ draw_text(374,318,"Connect");
+ if(draw_get_color()==c_black){draw_set_color($00FF00);}
+}
+
+
+
+
+
diff --git a/src/Objects/objNetControl.events/Step.xml b/src/Objects/objNetControl.events/Step.xml
new file mode 100644
index 0000000..40ffa98
--- /dev/null
+++ b/src/Objects/objNetControl.events/Step.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+ CODE
+ false
+ false
+ true
+ CODE
+
+ false
+ false
+ .self
+
+ if(serverSocket != noone) {
+ if(tcp_eof(serverSocket)){
+ if(socket_has_error(serverSocket)) {
+ errorMessage="Connection error: " + socket_error(serverSocket);
+ } else {
+ errorMessage=currentMessage;
+ }
+ socket_destroy(serverSocket);
+ serverSocket = noone;
+ } else {
+ tcp_receive_available(serverSocket);
+ write_buffer(dataBuffer,serverSocket);
+
+ while(buffer_size(dataBuffer)) {
+ data = read_delimited_string(dataBuffer,EOL);
+ if(is_string(data)) {
+ //�A�delimited�string�was�found�and�returned,�do�something�with�it
+ currentMessage=data;
+ interpret_message();
+ } else {
+ //�no�delimiter�found�(or�invalid�buffer)
+ buffer_clear(dataBuffer);
+ }
+ }
+
+ if(get_scrollbarvalue(chatScrollbar)!=checkScrollbar){
+ log_draw(1,0,1,50);
+ checkScrollbar=get_scrollbarvalue(chatScrollbar);
+ }
+ }
+}
+
+
+
+
+
diff --git a/src/Objects/objNetControl.xml b/src/Objects/objNetControl.xml
new file mode 100644
index 0000000..0e725f7
--- /dev/null
+++ b/src/Objects/objNetControl.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/src/Objects/objTextbox.xml b/src/Objects/objTextbox.xml
new file mode 100644
index 0000000..e09c2a7
--- /dev/null
+++ b/src/Objects/objTextbox.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/src/Paths/_resources.list.xml b/src/Paths/_resources.list.xml
new file mode 100644
index 0000000..70032a2
--- /dev/null
+++ b/src/Paths/_resources.list.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/src/Rooms/_resources.list.xml b/src/Rooms/_resources.list.xml
new file mode 100644
index 0000000..212492e
--- /dev/null
+++ b/src/Rooms/_resources.list.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Rooms/rmTest.xml b/src/Rooms/rmTest.xml
new file mode 100644
index 0000000..8eed7e8
--- /dev/null
+++ b/src/Rooms/rmTest.xml
@@ -0,0 +1,101 @@
+
+
+
+
+
+ false
+
+
+ 120
+ false
+ game_init();
+
+ 000000
+ true
+
+
+ false
+ false
+
+
+
+ true
+ true
+ false
+
+
+ false
+ false
+
+
+
+ true
+ true
+ false
+
+
+ false
+ false
+
+
+
+ true
+ true
+ false
+
+
+ false
+ false
+
+
+
+ true
+ true
+ false
+
+
+ false
+ false
+
+
+
+ true
+ true
+ false
+
+
+ false
+ false
+
+
+
+ true
+ true
+ false
+
+
+ false
+ false
+
+
+
+ true
+ true
+ false
+
+
+ false
+ false
+
+
+
+ true
+ true
+ false
+
+
+ false
+
+
+
+
diff --git a/src/Scripts/General/_resources.list.xml b/src/Scripts/General/_resources.list.xml
new file mode 100644
index 0000000..2dce94b
--- /dev/null
+++ b/src/Scripts/General/_resources.list.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/Scripts/General/game_init.gml b/src/Scripts/General/game_init.gml
new file mode 100644
index 0000000..5099934
--- /dev/null
+++ b/src/Scripts/General/game_init.gml
@@ -0,0 +1,32 @@
+globalvar server, port, channel, botnick, botversion;
+
+server="192.168.0.40";
+port=6667;
+channel="#lobby";
+botnick="GimelBot";
+
+botversion="1.0";
+
+globalvar serverSocket, dataBuffer, errorMessage, currentMessage, printMessage, pseudoSurface, EOL;
+
+serverSocket=noone;
+dataBuffer=buffer_create();
+errorMessage="";
+EOL=chr(13)+chr(10);
+
+globalvar chatLog, chatWidth;
+chatLog="";
+chatWidth=room_width-16
+
+globalvar fntGameSystem, fntRomulus, fntCyberspace;
+
+fntGameSystem = font_add_sprite(sprGameSystem,ord(' '),false,0);
+//fntRomulus = font_add_sprite(sprRomulus,ord('!'),true,2);
+//fntCyberspace = font_add_sprite(sprCyberspace,ord(' '),false,0);
+draw_set_font(fntGameSystem);
+draw_set_color($00FF00);
+draw_set_halign(fa_left);
+draw_set_valign(fa_top);
+
+
+instance_create(0,0,objNetControl);
diff --git a/src/Scripts/General/num_prefix.gml b/src/Scripts/General/num_prefix.gml
new file mode 100644
index 0000000..0f719ca
--- /dev/null
+++ b/src/Scripts/General/num_prefix.gml
@@ -0,0 +1,21 @@
+var strIN;
+var strST;
+
+/*
+argument 0 = score (as a string)
+argument 1 = total width required
+*/
+
+strIN = string(argument0);
+if argument1 > string_length(strIN)
+{
+ strST = string_repeat("0", argument1 - string_length(strIN));
+}
+else
+{
+ strST = "";
+}
+
+strST += strIN;
+
+return strST;
diff --git a/src/Scripts/General/string_parse_single.gml b/src/Scripts/General/string_parse_single.gml
new file mode 100644
index 0000000..2fec3fd
--- /dev/null
+++ b/src/Scripts/General/string_parse_single.gml
@@ -0,0 +1,46 @@
+/// string_parse_single(str,token,n,ignore)
+//
+// Returns the nth substring from a string of elements separated by
+// a given token, or the separator token if an error occurred.
+//
+// eg. string_parse_single("cat|dog|house|bee", "|", 2, true) == "dog"
+//
+// str elements, string
+// token element separator, string
+// n element to return, real
+// ignore ignore empty substrings, bool
+//
+/// GMLscripts.com/license
+{
+ var str, token, substr, ignore, N, tlen, temp, i;
+
+ str = argument0;
+ token = argument1;
+ N = argument2;
+ ignore = argument3;
+
+ tlen = string_length( token);
+
+ substr = "";
+ i = 0;
+ while( string_length( str) != 0 && i < N) {
+ temp = string_pos( token, str);
+ if( temp) {
+ if( temp != 1 || !ignore) {
+ substr = string_copy(str, 1, temp - 1);
+ i += 1;
+ }
+ str = string_copy( str, temp + tlen, string_length( str));
+ }
+ else {
+ substr = str;
+ i += 1;
+ str = "";
+ }
+ }
+
+ if( i != N)
+ return "";
+ else
+ return substr;
+}
diff --git a/src/Scripts/IRC Functions/_resources.list.xml b/src/Scripts/IRC Functions/_resources.list.xml
new file mode 100644
index 0000000..6631e19
--- /dev/null
+++ b/src/Scripts/IRC Functions/_resources.list.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Scripts/IRC Functions/bot_commands.gml b/src/Scripts/IRC Functions/bot_commands.gml
new file mode 100644
index 0000000..fa1ff2d
--- /dev/null
+++ b/src/Scripts/IRC Functions/bot_commands.gml
@@ -0,0 +1,29 @@
+var sender, hostmask, msgtype, target, msgdata;
+sender=argument0;
+hostmask=argument1;
+msgtype=argument2;
+target=argument3;
+msgdata=argument4;
+
+
+// GimelBot main commands begin here
+if(msgtype=="PRIVMSG") {
+
+ if((msgdata=="!quit")&&(sender=="Ikewise")){irc_disconnect("Received shutdown command from "+sender);};
+ if(msgdata=="!part"){part_channel(target);};
+
+ if(string_pos("!slap",msgdata)==1) {
+ switch(string_pos(" ",msgdata)){
+ case 0:
+ send_ctcp("PRIVMSG",target,"ACTION slaps "+sender+" around a bit with a large trout");
+ break;
+ default:
+ send_ctcp("PRIVMSG",target,"ACTION slaps "+string_copy(msgdata,string_pos(" ",msgdata)+1,string_length(msgdata))+" around a bit with a large trout");
+ break;
+ }
+ }
+
+ if(msgdata=="chk"){send_message(target,sender+": ack");};
+ if(msgdata=="."){send_message(target,"omg a meteor");};
+
+}
diff --git a/src/Scripts/IRC Functions/interpret_message.gml b/src/Scripts/IRC Functions/interpret_message.gml
new file mode 100644
index 0000000..88d9fb2
--- /dev/null
+++ b/src/Scripts/IRC Functions/interpret_message.gml
@@ -0,0 +1,171 @@
+var sender, hostmask, msgtype, target, msgdata;
+
+// Respond to server pings
+if(string_pos("PING",currentMessage)==1) {
+ write_string(serverSocket,"PONG "+string_parse_single(currentMessage," ",2,true)+EOL);
+ socket_send(serverSocket);
+}
+
+
+// Check if currentMessage is from a user or Service
+if(string_pos("!",string_parse_single(currentMessage," ",1,true))) {
+ sender = string_copy(currentMessage,2,string_pos("!",currentMessage)-2);
+ hostmask = string_copy(currentMessage,string_pos("!",currentMessage)+1,string_pos(" ",currentMessage)-string_pos("!",currentMessage)-1);
+ msgtype = string_parse_single(currentMessage," ",2,true);
+ target = string_parse_single(currentMessage," ",3,true);
+
+ if(string_count(" ",currentMessage)>2) {
+ msgdata = string_copy(currentMessage,string_pos(target+" ",currentMessage)+string_length(target)+1,string_length(currentMessage));
+ } else {
+ msgdata="";
+ }
+
+ // Cleanup
+ if(msgtype!="QUIT" && string_pos(":",target)==1){target=string_copy(target,2,string_length(target)-1)}
+ if((msgtype=="PART"||msgtype=="TOPIC"||msgtype=="INVITE"||msgtype=="NOTICE"||msgtype=="PRIVMSG") && msgdata!=""){msgdata=string_copy(msgdata,2,string_length(msgdata)-1)}
+
+} else {
+ if(string_pos("NOTICE AUTH",currentMessage)==1) {
+ printMessage = currentMessage;
+ log_update(printMessage,chatWidth);
+ } else {
+ // Message not from user or Service, do not print
+ printMessage = "";
+ }
+ return "";
+}
+
+
+// Format the message for display
+switch(msgtype) {
+ case "QUIT":
+ if(target==":"){printMessage="GLOBAL: "+timestamp()+"* Quits: "+sender+" ("+hostmask+")"};
+ if(target!=":"){printMessage="GLOBAL: "+timestamp()+"* Quits: "+sender+" ("+hostmask+") ("+string_copy(target,2,string_length(target)-1)+" "+msgdata+")"};
+ break;
+ case "JOIN":
+ if(sender==botnick){printMessage=target+": "+timestamp()+"* Now talking in "+target};
+ if(sender!=botnick){printMessage=target+": "+timestamp()+"* Joins: "+sender+" ("+hostmask+")"};
+ break;
+ case "PART":
+ if(msgdata==""){printMessage=target+": "+timestamp()+"* Parts: "+sender+" ("+hostmask+")"};
+ if(msgdata!=""){printMessage=target+": "+timestamp()+"* Parts: "+sender+" ("+hostmask+") ("+msgdata+")"};
+ break;
+ case "KICK":
+ if(string_parse_single(msgdata," ",1,true)!=botnick){
+ printMessage=target+": "+timestamp()+"* "+string_parse_single(msgdata," ",1,true)+" was kicked by "+sender+" ("+string_parse_single(msgdata,":",2,true)+")";
+ } else {
+ printMessage=target+": "+timestamp()+"* You were kicked from "+target+" by "+sender+" ("+string_parse_single(msgdata,":",2,true)+")";
+ join_channel(target);
+ }
+ break;
+ case "MODE":
+ printMessage=target+": "+timestamp()+"* "+sender+" sets mode: "+msgdata;
+ break;
+ case "TOPIC":
+ printMessage=target+": "+timestamp()+"* "+sender+" changes topic to '"+msgdata+"'";
+ break;
+ case "INVITE":
+ printMessage="GLOBAL: "+timestamp()+"* "+sender+" ("+hostmask+") invites you to join "+msgdata;
+ join_channel(msgdata);
+ break;
+ case "NICK":
+ printMessage="GLOBAL: "+timestamp()+"* "+sender+" is now known as "+target;
+ break;
+ case "NOTICE":
+ if(string_pos("#",target)!=1){printMessage="DIRECT ("+sender+"): "+timestamp()+"* NOTICE: -"+sender+"- "+msgdata};
+ if(string_pos("#",target)==1){printMessage=target+": "+timestamp()+"* NOTICE: -"+sender+"- "+msgdata};
+ break;
+ case "PRIVMSG":
+ if(string_pos("#",target)==1){ // If a channel
+ if(string_pos(chr(1),msgdata)==1){
+ if(string_pos(" ",msgdata)){
+ switch(string_parse_single(msgdata," ",1,true)){
+ case chr(1)+"ACTION":
+ printMessage=target+": "+timestamp()+"* "+sender+" "+string_copy(msgdata,string_pos(" ",msgdata)+1,string_length(msgdata));
+ break;
+ default:
+ printMessage=target+": "+timestamp()+"* CTCP: "+string_copy(msgdata,2,string_pos(" ",msgdata)-2)+" "+string_parse_single(msgdata," ",2,true);
+ break;
+ }
+ } else {
+ printMessage=target+": "+timestamp()+"* CTCP: "+string_copy(msgdata,2,string_length(msgdata)-2);
+ }
+ } else {
+ printMessage=target+": "+timestamp()+"<"+sender+"> "+msgdata;
+ }
+ } else { // If not a channel
+ target = sender;
+ if(string_pos(chr(1),msgdata)==1){
+ if(string_pos(" ",msgdata)){
+ switch(string_parse_single(msgdata," ",1,true)){
+ case chr(1)+"ACTION":
+ printMessage="DIRECT ("+sender+"): "+timestamp()+"* "+sender+" "+string_copy(msgdata,string_pos(" ",msgdata)+1,string_length(msgdata));
+ break;
+ default:
+ printMessage="DIRECT ("+sender+"): "+timestamp()+"* CTCP: "+string_copy(msgdata,2,string_pos(" ",msgdata)-2)+" "+string_parse_single(msgdata," ",2,true);
+ break;
+ }
+ } else {
+ printMessage="DIRECT ("+sender+"): "+timestamp()+"* CTCP: "+string_copy(msgdata,2,string_length(msgdata)-2);
+ }
+ } else {
+ printMessage="DIRECT ("+sender+"): "+timestamp()+"<"+sender+"> "+msgdata;
+ }
+ }
+ break;
+
+ default: break;
+}
+
+
+// Add the incoming message to the display
+if(printMessage!="") {
+ log_update(printMessage,chatWidth);
+}
+
+
+// CTCP Responses
+if(msgtype=="PRIVMSG"){
+ if(string_pos(chr(1),msgdata)==1){
+ if(string_pos(" ",msgdata)){
+ if(string_parse_single(msgdata," ",1,true)==chr(1)+"PING"){send_ctcp("NOTICE",sender,"PING "+string_copy(msgdata,string_pos(" ",msgdata)+1,string_length(msgdata)-(string_pos(" ",msgdata)+1)));};
+ } else {
+ if(string_copy(msgdata,1,5)==chr(1)+"TIME"){
+ var date, weekday, month;
+ date = date_current_datetime();
+ switch(date_get_weekday(date)){
+ case 1: weekday="Sun"; break;
+ case 2: weekday="Mon"; break;
+ case 3: weekday="Tue"; break;
+ case 4: weekday="Wed"; break;
+ case 5: weekday="Thur"; break;
+ case 6: weekday="Fri"; break;
+ case 7: weekday="Sat"; break;
+ }
+ switch(date_get_month(date)){
+ case 1: month="Jan"; break;
+ case 2: month="Feb"; break;
+ case 3: month="Mar"; break;
+ case 4: month="Apr"; break;
+ case 5: month="May"; break;
+ case 6: month="Jun"; break;
+ case 7: month="July"; break;
+ case 8: month="Aug"; break;
+ case 9: month="Sep"; break;
+ case 10: month="Oct"; break;
+ case 11: month="Nov"; break;
+ case 12: month="Dec"; break;
+ }
+ send_ctcp("NOTICE",sender,"TIME "+weekday+" "+month+" "+string(date_get_day(date))+" "+string(date_get_hour(date))+":"+string(date_get_minute(date))+":"+string(date_get_second(date))+" "+string(date_get_year(date)));
+ }
+ if(string_copy(msgdata,1,8)==chr(1)+"VERSION"){send_ctcp("NOTICE",sender,"VERSION GimelBot v"+botversion+" by Ikewise");};
+ }
+ }
+}
+
+
+// Run main bot functions
+bot_commands(sender, hostmask, msgtype, target, msgdata);
+
+
+
diff --git a/src/Scripts/IRC Functions/irc_connect.gml b/src/Scripts/IRC Functions/irc_connect.gml
new file mode 100644
index 0000000..9ce1859
--- /dev/null
+++ b/src/Scripts/IRC Functions/irc_connect.gml
@@ -0,0 +1,15 @@
+botnick=textNick.text;
+server=textServer.text;
+port=real(textPort.text);
+channel=textChannel.text;
+
+chatLog="Connecting to "+server+":"+string(port)+"..."+EOL;
+
+serverSocket=tcp_connect(server, port);
+
+write_string(serverSocket, "NICK "+ botnick + chr(10));
+write_string(serverSocket, "USER "+ botnick +" "+ botnick +" "+ botnick +" :GameMaker IRC bot" + EOL);
+
+socket_send(serverSocket);
+
+join_channel(channel);
diff --git a/src/Scripts/IRC Functions/irc_disconnect.gml b/src/Scripts/IRC Functions/irc_disconnect.gml
new file mode 100644
index 0000000..9f972c6
--- /dev/null
+++ b/src/Scripts/IRC Functions/irc_disconnect.gml
@@ -0,0 +1,5 @@
+write_string(serverSocket, "QUIT :" + argument0 + EOL);
+socket_send(serverSocket);
+
+socket_destroy(serverSocket);
+serverSocket = noone;
diff --git a/src/Scripts/IRC Functions/join_channel.gml b/src/Scripts/IRC Functions/join_channel.gml
new file mode 100644
index 0000000..28a0482
--- /dev/null
+++ b/src/Scripts/IRC Functions/join_channel.gml
@@ -0,0 +1,2 @@
+write_string(serverSocket, "JOIN :" + argument0 + EOL);
+socket_send(serverSocket);
diff --git a/src/Scripts/IRC Functions/part_channel.gml b/src/Scripts/IRC Functions/part_channel.gml
new file mode 100644
index 0000000..2a3f84c
--- /dev/null
+++ b/src/Scripts/IRC Functions/part_channel.gml
@@ -0,0 +1,2 @@
+write_string(serverSocket, "PART " + argument0 + EOL);
+socket_send(serverSocket);
diff --git a/src/Scripts/IRC Functions/send_ctcp.gml b/src/Scripts/IRC Functions/send_ctcp.gml
new file mode 100644
index 0000000..e98f36a
--- /dev/null
+++ b/src/Scripts/IRC Functions/send_ctcp.gml
@@ -0,0 +1,45 @@
+// Sends a CTCP message to the IRC server.
+// send_message(type, target, message);
+
+var type, target, message;
+
+type = argument0;
+target = argument1;
+message = argument2;
+
+write_string(serverSocket,type+" "+target+" :"+chr(1)+message+chr(1)+EOL);
+socket_send(serverSocket);
+
+
+if(string_pos("#",target)==1) {
+ switch(type){
+ case "PRIVMSG":
+ if(string_pos("ACTION",message)==1) {
+ log_update(target+": "+timestamp()+"* "+botnick+" "+string_copy(message,8,string_length(message)),chatWidth);
+ } else {
+ log_update(target+": "+timestamp()+"* CTCP SEND: "+message,chatWidth);
+ }
+ break;
+ case "NOTICE":
+ log_update(target+": "+timestamp()+"* CTCP RESPOND: "+message,chatWidth);
+ break;
+ }
+} else {
+ switch(type){
+ case "PRIVMSG":
+ if(string_pos("ACTION",message)==1) {
+ log_update("DIRECT ("+target+"): "+timestamp()+"* "+botnick+" "+string_copy(message,7,string_length(message)),chatWidth);
+ } else {
+ log_update("DIRECT ("+target+"): "+timestamp()+"* CTCP SEND: "+message,chatWidth);
+ }
+ break;
+ case "NOTICE":
+ log_update("DIRECT ("+target+"): "+timestamp()+"* CTCP RESPOND: "+message,chatWidth);
+ break;
+ }
+}
+
+
+
+
+
diff --git a/src/Scripts/IRC Functions/send_message.gml b/src/Scripts/IRC Functions/send_message.gml
new file mode 100644
index 0000000..c2d37b5
--- /dev/null
+++ b/src/Scripts/IRC Functions/send_message.gml
@@ -0,0 +1,17 @@
+// Sends a message to the IRC server.
+// send_message(target, message);
+
+var target, message;
+
+target = argument0;
+message = argument1;
+
+write_string(serverSocket,"PRIVMSG "+target+" :"+message+EOL);
+socket_send(serverSocket);
+
+
+if(string_pos("#",target)==1) {
+ log_update(target+": "+timestamp()+"<"+botnick+"> "+message,chatWidth);
+} else {
+ log_update("DIRECT ("+target+"): "+timestamp()+"<"+botnick+"> "+message,chatWidth);
+}
diff --git a/src/Scripts/IRC Functions/send_notice.gml b/src/Scripts/IRC Functions/send_notice.gml
new file mode 100644
index 0000000..fee8fe7
--- /dev/null
+++ b/src/Scripts/IRC Functions/send_notice.gml
@@ -0,0 +1,17 @@
+// Sends a notice to the IRC server.
+// send_notice(target, message);
+
+var target, message;
+
+target = argument0;
+message = argument1;
+
+write_string(serverSocket,"NOTICE "+target+" :"+message+EOL);
+socket_send(serverSocket);
+
+
+if(string_pos("#",target)==1) {
+ log_update(target+": "+timestamp()+"* NOTICE: -"+botnick+"- "+message,chatWidth);
+} else {
+ log_update("DIRECT ("+target+"): "+timestamp()+"* NOTICE: -"+botnick+"- "+message,chatWidth);
+}
diff --git a/src/Scripts/IRC Functions/timestamp.gml b/src/Scripts/IRC Functions/timestamp.gml
new file mode 100644
index 0000000..94ba1d5
--- /dev/null
+++ b/src/Scripts/IRC Functions/timestamp.gml
@@ -0,0 +1,9 @@
+var time, hour, minute, output;
+time = date_current_datetime();
+hour = date_get_hour(time);
+minute = date_get_minute(time);
+if(hour < 10) {hour = "0" + string(hour);}
+if(minute < 10) {minute = "0" + string(minute);}
+output = "[" + string(hour) + ":" + string(minute) + "] ";
+
+return output;
diff --git a/src/Scripts/Scrollbars/_resources.list.xml b/src/Scripts/Scrollbars/_resources.list.xml
new file mode 100644
index 0000000..517a1d4
--- /dev/null
+++ b/src/Scripts/Scrollbars/_resources.list.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/Scripts/Scrollbars/get_scrollbarvalue.gml b/src/Scripts/Scrollbars/get_scrollbarvalue.gml
new file mode 100644
index 0000000..94fe650
--- /dev/null
+++ b/src/Scripts/Scrollbars/get_scrollbarvalue.gml
@@ -0,0 +1,12 @@
+/*
+
+ CALL: get_scrollbarvalue(id)
+
+ INFO: Returns with the value of the selected scrollbar.
+
+ ARGUMENTS: id = The ID of the scrollbar.
+
+ WRITTEN BY: Davve
+
+*/
+return round(global.___sb[argument0,1])
diff --git a/src/Scripts/Scrollbars/scrollbar_create.gml b/src/Scripts/Scrollbars/scrollbar_create.gml
new file mode 100644
index 0000000..70f1f52
--- /dev/null
+++ b/src/Scripts/Scrollbars/scrollbar_create.gml
@@ -0,0 +1,34 @@
+/*
+
+ CALL: scrollbar_create(type,sprite,mousewheel)
+
+ INFO: Creates a new scrollbar and returns with the ID of it.
+
+ ARGUMENTS: type = 0 if horizontal,
+ 1 if vertical.
+ sprite = The sprite of the scrollbar.
+ mousewheel = If you should be able to scroll with the mouse wheel.
+
+ WRITTEN BY: Davve
+
+*/
+var type,spr,mw;
+type=argument0
+spr=argument1
+mw=argument2
+
+if (!variable_global_exists("___sbcount")) {
+ global.___sbcount=0
+ global.___sbtimer=0
+ global.___sbdrag=-1
+ global.___mxprev=mouse_x
+ global.___myprev=mouse_y
+ global.___sbcurrent=-1
+}
+global.___sb[global.___sbcount,0]=type
+global.___sb[global.___sbcount,1]=0
+global.___sb[global.___sbcount,2]=spr
+global.___sb[global.___sbcount,3]=mw
+global.___sbcount+=1
+
+return global.___sbcount-1
diff --git a/src/Scripts/Scrollbars/scrollbar_draw.gml b/src/Scripts/Scrollbars/scrollbar_draw.gml
new file mode 100644
index 0000000..1ec3f9f
--- /dev/null
+++ b/src/Scripts/Scrollbars/scrollbar_draw.gml
@@ -0,0 +1,82 @@
+/*
+
+ CALL: scrollbar_draw(id,x,y,w/h,maxw/h)
+
+ INFO: Draws the selected scrollbar. The value is measured in pixels.
+
+ ARGUMENTS: id = The ID of the scrollbar to draw.
+ x = The x starting position of the scrollbar.
+ y = The y starting position of the scrollbar.
+ w/h = The width or height of the scrollbar (buttons not included).
+ maxw/h = The maximum width or height (buttons not included).
+
+ WRITTEN BY: Davve
+
+*/
+var sb,xx,yy,wh,mwh,spr,sw,sh,sel,sel2,a,sp,ep,tp;
+sb=argument0
+xx=argument1
+yy=argument2
+wh=max(-16,argument3)
+mwh=argument4
+spr=global.___sb[sb,2]
+sw=sprite_get_width(spr)
+sh=sprite_get_height(spr)
+tp=global.___sb[sb,0]
+
+if (global.___sbcurrent=sb) {
+ global.___sbtimer=max(0,(global.___sbtimer-1)*mouse_check_button(mb_left))
+}
+for (a=((xx+sw)*(tp=0))+((yy+sh)*(tp>0)) a<((xx+wh+sw)*(tp=0))+((yy+wh+sh)*(tp>0)) a+=2) {
+ draw_sprite(spr,(15*(tp=0))+(19*(tp>0)),(a*(tp=0))+(xx*(tp>0)),(yy*(tp=0))+(a*(tp>0)))
+}
+if ((!mouse_check_button(mb_left) && global.___sbdrag>-1)) {
+ global.___sbdrag=-1
+}
+if (mwh>wh && wh>0) {
+ sp=((xx+sw)*(tp=0))+((yy+sh)*(tp>0))+(global.___sb[sb,1]*(wh/mwh))
+ ep=sp+max((wh*(wh/mwh)),4)
+ if (global.___sbdrag=sb && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))>=((xx+sw)*(tp=0))+((yy+sh)*(tp>0)) && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))<((xx+(sw*2)+wh)*(tp=0))+((yy+(sh*2)+wh)*(tp>0))) {
+ global.___sb[sb,1]+=(mwh/wh)*(((mouse_x*(tp=0))+(mouse_y*(tp>0)))-((global.___mxprev*(tp=0))+(global.___myprev*(tp>0))))
+ global.___mxprev=mouse_x
+ global.___myprev=mouse_y
+ }
+ if (global.___sbcurrent=sb && global.___sb[sb,3]>0) {
+ global.___sb[sb,1]+=((-1*mouse_wheel_up())+(1*mouse_wheel_down()))*ceil((mwh/wh)*((ep-sp)/3))
+ }
+ sel=(global.___sbdrag=-1 && (mouse_x*(tp=0))+(mouse_y*(tp>0))>=((xx+sw)*(tp=0))+((yy+sh)*(tp>0)) && (mouse_x*(tp=0))+(mouse_y*(tp>0))0))>(yy*(tp=0))+(xx*(tp>0)) && (mouse_y*(tp=0))+(mouse_x*(tp>0))<((yy+sh)*(tp=0))+((xx+sh)*(tp>0)))
+ sel+=2*(global.___sbdrag=-1 && (mouse_x*(tp=0))+(mouse_y*(tp>0))>ep && (mouse_x*(tp=0))+(mouse_y*(tp>0))<((xx+sw+wh)*(tp=0))+((yy+sh+wh)*(tp>0)) && mouse_check_button(mb_left) && (mouse_y*(tp=0))+(mouse_x*(tp>0))>(yy*(tp=0))+(xx*(tp>0)) && (mouse_y*(tp=0))+(mouse_x*(tp>0))<((yy+sh)*(tp=0))+((xx+sh)*(tp>0)))
+ if (sel>0 && global.___sbtimer=0) {
+ global.___sb[sb,1]+=((-1*(sel=1))+(1*(sel=2)))*ceil((mwh/wh)*((ep-sp)))
+ global.___sb[sb,1]=max(0,min(mwh-((ep-sp)*(mwh/wh)),global.___sb[sb,1]))
+ global.___sbtimer=ceil(fps/(15-(12*mouse_check_button_pressed(mb_left))))
+ global.___sbcurrent=sb
+ }
+ global.___sb[sb,1]=min(mwh-((ep-sp)*(mwh/wh)),max(0,global.___sb[sb,1]))
+ sp=((xx+sw)*(tp=0))+((yy+sh)*(tp>0))+(global.___sb[sb,1]*(wh/mwh))
+ ep=sp+max((wh*(wh/mwh)),4)
+ for (a=floor(sp+1) a<=ceil(ep-2) a+=1) {
+ draw_sprite(spr,(13*(tp=0))+(17*(tp>0)),(a*(tp=0))+(xx*(tp>0)),(yy*(tp=0))+(a*(tp>0)))
+ }
+ draw_sprite(spr,(12*(tp=0))+(16*(tp>0)),(floor(sp)*(tp=0))+(xx*(tp>0)),(floor(sp)*(tp>0))+(yy*(tp=0)))
+ draw_sprite(spr,(14*(tp=0))+(18*(tp>0)),((ceil(ep)-2)*(tp=0))+(xx*(tp>0)),((ceil(ep)-2)*(tp>0))+(yy*(tp=0)))
+ sel=(((mouse_x*(tp=0))+(mouse_y*(tp>0)))>=sp && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))0)))>=(yy*(tp=0))+(xx*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))<((yy+sh)*(tp=0))+((xx+sw)*(tp>0)) && mouse_check_button_pressed(mb_left))
+ if (sel=1 && global.___sbdrag=-1) {
+ global.___sbcurrent=sb
+ global.___sbdrag=sb
+ global.___mxprev=mouse_x
+ global.___myprev=mouse_y
+ }
+} else if (global.___sbdrag=sb) {
+ global.___sbdrag=-1
+}
+sel=(((mouse_x*(tp=0))+(mouse_y*(tp>0)))>=(xx*(tp=0))+(yy*(tp>0)) && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))<((xx+sw)*(tp=0))+((yy+sh)*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))>=(yy*(tp=0))+(xx*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))<((yy+sh)*(tp=0))+((xx+sw)*(tp>0)) && mouse_check_button(mb_left) && global.___sbdrag=-1 && mwh>wh)
+sel2=(((mouse_x*(tp=0))+(mouse_y*(tp>0)))>=((xx+wh+sw)*(tp=0))+((yy+wh+sh)*(tp>0)) && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))<((xx+(sw*2)+wh)*(tp=0))+((yy+(sh*2)+wh)*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))>=(yy*(tp=0))+(xx*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))<((yy+sh)*(tp=0))+((xx+sw)*(tp>0)) && mouse_check_button(mb_left) && global.___sbdrag=-1 && mwh>wh)
+if (sel+sel2>0 && global.___sbtimer=0) {
+ global.___sb[sb,1]+=((-1*(sel=1))+(1*(sel2=1)))*ceil((mwh/wh)*((ep-sp)/3))
+ global.___sb[sb,1]=max(0,min(mwh-((ep-sp)*(mwh/wh)),global.___sb[sb,1]))
+ global.___sbtimer=ceil(fps/(15-(12*mouse_check_button_pressed(mb_left))))
+ global.___sbcurrent=sb
+}
+draw_sprite(spr,(0*(tp=0))+(6*(tp>0))+(sel>0 || mwh<=wh)+(mwh<=wh),xx,yy)
+draw_sprite(spr,(3*(tp=0))+(9*(tp>0))+(sel2>0 || mwh<=wh)+(mwh<=wh),((xx+wh+sw)*(tp=0))+(xx*(tp>0)),(yy*(tp=0))+((yy+wh+sh)*(tp>0)))
diff --git a/src/Scripts/Scrollbars/scrollbar_draw_ext.gml b/src/Scripts/Scrollbars/scrollbar_draw_ext.gml
new file mode 100644
index 0000000..2cd6a78
--- /dev/null
+++ b/src/Scripts/Scrollbars/scrollbar_draw_ext.gml
@@ -0,0 +1,89 @@
+/*
+
+ CALL: scrollbar_draw_ext(id,x,y,slotw/h,slots,maxslots)
+
+ INFO: Draws the selected scrollbar. The value is measured in slots.
+
+ ARGUMENTS: id = The ID of the scrollbar to draw.
+ x = The x starting position of the scrollbar.
+ y = The y starting position of the scrollbar.
+ slotw/h = The width or height of a slot.
+ slots = The number of slots to show.
+ maxslots = The maximum number of slots.
+
+ WRITTEN BY: Davve
+
+*/
+var sb,xx,yy,swh,s,ms,wh,mwh,spr,sw,sh,sel,sel2,a,sp,ep,tp;
+sb=argument0
+xx=argument1
+yy=argument2
+swh=argument3
+s=argument4
+ms=argument5
+wh=s*swh
+mwh=ms*swh
+spr=global.___sb[sb,2]
+sw=sprite_get_width(spr)
+sh=sprite_get_height(spr)
+tp=global.___sb[sb,0]
+
+if (global.___sbcurrent=sb) {
+ global.___sbtimer=max(0,(global.___sbtimer-1)*mouse_check_button(mb_left))
+}
+for (a=((xx+sw)*(tp=0))+((yy+sh)*(tp>0)) a<((xx+wh+sw)*(tp=0))+((yy+wh+sh)*(tp>0)) a+=2) {
+ draw_sprite(spr,(15*(tp=0))+(19*(tp>0)),(a*(tp=0))+(xx*(tp>0)),(yy*(tp=0))+(a*(tp>0)))
+}
+if (!mouse_check_button(mb_left) && global.___sbdrag>-1) {
+ global.___sbdrag=-1
+}
+if (mwh>wh && wh>0) {
+ sp=(((xx+sw)*(tp=0))+((yy+sh)*(tp>0)))+(global.___sb[sb,1]*((s/ms)*swh))
+ ep=sp+max((wh*(wh/mwh)),4)
+ if (global.___sbdrag=sb && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))>=((xx+sw)*(tp=0))+((yy+sh)*(tp>0)) && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))<((xx+(sw*2)+wh)*(tp=0))+((yy+(sh*2)+wh)*(tp>0))) {
+ global.___sb[sb,1]+=((((mouse_x*(tp=0))+(mouse_y*(tp>0)))-((global.___mxprev*(tp=0))+(global.___myprev*(tp>0)))))/(wh/ms)
+ global.___mxprev=mouse_x
+ global.___myprev=mouse_y
+ }
+ if (global.___sbcurrent=sb && global.___sb[sb,3]>0) {
+ global.___sb[sb,1]+=((-1*mouse_wheel_up())+(1*mouse_wheel_down()))
+ }
+ sel=(global.___sbdrag=-1 && (mouse_x*(tp=0))+(mouse_y*(tp>0))>=((xx+sw)*(tp=0))+((yy+sh)*(tp>0)) && (mouse_x*(tp=0))+(mouse_y*(tp>0))0))>(yy*(tp=0))+(xx*(tp>0)) && (mouse_y*(tp=0))+(mouse_x*(tp>0))<((yy+sh)*(tp=0))+((xx+sh)*(tp>0)))
+ sel+=2*(global.___sbdrag=-1 && (mouse_x*(tp=0))+(mouse_y*(tp>0))>ep && (mouse_x*(tp=0))+(mouse_y*(tp>0))<((xx+sw+wh)*(tp=0))+((yy+sh+wh)*(tp>0)) && mouse_check_button(mb_left) && (mouse_y*(tp=0))+(mouse_x*(tp>0))>(yy*(tp=0))+(xx*(tp>0)) && (mouse_y*(tp=0))+(mouse_x*(tp>0))<((yy+sh)*(tp=0))+((xx+sh)*(tp>0)))
+ if (sel>0 && global.___sbtimer=0) {
+ global.___sb[sb,1]+=(-1*(sel=1))+(1*(sel=2))
+ global.___sb[sb,1]=max(0,min(ms-s,global.___sb[sb,1]))
+ global.___sbtimer=ceil(fps/(15-(12*mouse_check_button_pressed(mb_left))))
+ global.___sbcurrent=sb
+ }
+ global.___sb[sb,1]=min(ms-s,max(0,global.___sb[sb,1]))
+ if (global.___sbdrag<>sb) {
+ global.___sb[sb,1]=round(global.___sb[sb,1])
+ }
+ sp=(((xx+sw)*(tp=0))+((yy+sh)*(tp>0)))+(global.___sb[sb,1]*((s/ms)*swh))
+ ep=sp+max((wh*(wh/mwh)),4)
+ for (a=floor(sp+1) a<=ceil(ep-2) a+=1) {
+ draw_sprite(spr,(13*(tp=0))+(17*(tp>0)),(a*(tp=0))+(xx*(tp>0)),(yy*(tp=0))+(a*(tp>0)))
+ }
+ draw_sprite(spr,(12*(tp=0))+(16*(tp>0)),(floor(sp)*(tp=0))+(xx*(tp>0)),(floor(sp)*(tp>0))+(yy*(tp=0)))
+ draw_sprite(spr,(14*(tp=0))+(18*(tp>0)),((ceil(ep)-2)*(tp=0))+(xx*(tp>0)),((ceil(ep)-2)*(tp>0))+(yy*(tp=0)))
+ sel=(((mouse_x*(tp=0))+(mouse_y*(tp>0)))>=sp && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))0)))>=(yy*(tp=0))+(xx*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))<((yy+sh)*(tp=0))+((xx+sw)*(tp>0)) && mouse_check_button_pressed(mb_left))
+ if (sel=1 && global.___sbdrag=-1) {
+ global.___sbcurrent=sb
+ global.___sbdrag=sb
+ global.___mxprev=mouse_x
+ global.___myprev=mouse_y
+ }
+} else if (global.___sbdrag=sb) {
+ global.___sbdrag=-1
+}
+sel=(((mouse_x*(tp=0))+(mouse_y*(tp>0)))>=(xx*(tp=0))+(yy*(tp>0)) && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))<((xx+sw)*(tp=0))+((yy+sh)*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))>=(yy*(tp=0))+(xx*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))<((yy+sh)*(tp=0))+((xx+sw)*(tp>0)) && mouse_check_button(mb_left) && global.___sbdrag=-1 && mwh>wh)
+sel2=(((mouse_x*(tp=0))+(mouse_y*(tp>0)))>=((xx+wh+sw)*(tp=0))+((yy+wh+sh)*(tp>0)) && ((mouse_x*(tp=0))+(mouse_y*(tp>0)))<((xx+(sw*2)+wh)*(tp=0))+((yy+(sh*2)+wh)*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))>=(yy*(tp=0))+(xx*(tp>0)) && ((mouse_y*(tp=0))+(mouse_x*(tp>0)))<((yy+sh)*(tp=0))+((xx+sw)*(tp>0)) && mouse_check_button(mb_left) && global.___sbdrag=-1 && mwh>wh)
+if (sel+sel2>0 && global.___sbtimer=0) {
+ global.___sb[sb,1]+=(-1*(sel=1))+(1*(sel2=1))
+ global.___sb[sb,1]=max(0,min(ms-s,global.___sb[sb,1]))
+ global.___sbtimer=ceil(fps/(15-(12*mouse_check_button_pressed(mb_left))))
+ global.___sbcurrent=sb
+}
+draw_sprite(spr,(0*(tp=0))+(6*(tp>0))+(sel>0 || mwh<=wh)+(mwh<=wh),xx,yy)
+draw_sprite(spr,(3*(tp=0))+(9*(tp>0))+(sel2>0 || mwh<=wh)+(mwh<=wh),((xx+wh+sw)*(tp=0))+(xx*(tp>0)),(yy*(tp=0))+((yy+wh+sh)*(tp>0)))
diff --git a/src/Scripts/Textbox/_resources.list.xml b/src/Scripts/Textbox/_resources.list.xml
new file mode 100644
index 0000000..dc345de
--- /dev/null
+++ b/src/Scripts/Textbox/_resources.list.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/Scripts/Textbox/log_draw.gml b/src/Scripts/Textbox/log_draw.gml
new file mode 100644
index 0000000..426a932
--- /dev/null
+++ b/src/Scripts/Textbox/log_draw.gml
@@ -0,0 +1,22 @@
+// log_draw(x, y, startline, numlines)
+//
+// log_x - X position on screen
+// log_y - Y position on screen
+// startline - First line to draw
+// numlines - Number of lines of the log to draw
+
+var log_x, log_y, startline, numlines;
+
+log_x=argument0;
+log_y=argument1;
+startline=argument2;
+numlines=argument3;
+
+draw_set_color(c_black);
+draw_rectangle(0,0,room_width,room_height,0);
+draw_set_color($00FF00);
+
+draw_text(log_x,log_y+(numlines*string_height("A"))-((get_scrollbarvalue(chatScrollbar)+1)*string_height("A")),chatLog);
+
+if background_exists(pseudoSurface){background_delete(pseudoSurface)}
+pseudoSurface=background_create_from_screen(0,0,room_width,room_height,false,false);
diff --git a/src/Scripts/Textbox/log_update.gml b/src/Scripts/Textbox/log_update.gml
new file mode 100644
index 0000000..66d7e29
--- /dev/null
+++ b/src/Scripts/Textbox/log_update.gml
@@ -0,0 +1,52 @@
+// log_update(str,width)
+//
+// str - string to append to the log
+// width - width of area (in pixels) log will be displayed
+
+var str, logw, i, loop;
+
+str=argument0;
+logw=argument1;
+loop=true;
+
+while (loop){
+ if(string_width(str)>logw){
+ // The string is too long to be displayed on one line.
+
+ if(string_pos(" ",str)&&(string_width(string_copy(str,1,string_pos(" ",str)))-1) color_selected=i.color_selected
+ if (i.color_selection>-1) color_selection=i.color_selection
+
+ if (i.last_text!=i.text) {
+ str=i.text
+ str=string_replace_all(str,chr(13)+chr(10),chr(10))
+ str=string_replace_all(str,chr(13),chr(10))
+ if (i.max_chars>0) str=string_copy(str,1,i.max_chars)
+ if (i.single_line) str=string_replace_all(str,chr(10)," ")
+ i.text=str
+ str+=chr(10)
+ i.lines=0
+ while (str!="") {
+ i.line[i.lines]=string_copy(str,1,string_pos(chr(10),str)-1)
+ i.line_wrap[i.lines]=0
+ i.line_single[i.lines]=0
+ i.lines+=1
+ str=string_delete(str,1,string_pos(chr(10),str))
+ }
+ changetext=1
+ } else changetext=0
+
+ deletetext=0
+ inserttext=""
+ lineheight=string_height(" ")
+ mouseover=(mouse_x>=xx && mouse_x=yy && mouse_y30) {
+ key_press[keys[k]]=1
+ textbox_key_delay[k]=current_time+500*keyboard_check_pressed(keys[k]) // 500 msec if first press, otherwise 30
+ }
+ } else textbox_key_delay[k]=0
+ }
+
+ if (mouse_check_button_pressed(mb_left) && !keyboard_check(vk_shift)) textbox_focus=-1
+ if (!i.read_only && textbox_select=-1) {
+ deletetext=key_press[vk_backspace]-key_press[vk_delete] // 0=Do nothing, 1=Erase to left, -1=Erase to right, 2=Delete selected
+ inserttext=keyboard_string
+ }
+ keyboard_string=""
+
+ //Controls
+ if (!i.single_line) {
+ i.start+=mouse_wheel_down()-mouse_wheel_up() // Mousewheel to scroll
+ if (key_press[vk_enter] && !i.read_only) inserttext=chr(10) // Enter for linebreak
+ }
+ if (key_press[vk_right] || key_press[vk_left] || (key_press[vk_up] && textbox_select_mouseline>0) || (key_press[vk_down] && textbox_select_mouselinestring_length(i.line[textbox_select_mouseline])) { // Check if beyond end of line
+ if (textbox_select_mouseline0) {
+ textbox_select_mouseline-=1
+ textbox_select_mousepos=string_length(i.line[textbox_select_mouseline])
+ } else textbox_select_mousepos+=1
+ }
+ }
+ if (!i.single_line && (key_press[vk_up] || key_press[vk_down])) { // Move marker up/down
+ var currentx,nextx;
+ currentx=string_width(string_replace_all(string_copy(i.line[textbox_select_mouseline],1,textbox_select_mousepos),"#","\#"))
+ nextx=0
+ textbox_select_mouseline+=key_press[vk_down]-key_press[vk_up]
+ for (textbox_select_mousepos=0 textbox_select_mousepos<=string_length(i.line[textbox_select_mouseline]) textbox_select_mousepos+=1) { // Find correct position
+ nextx+=string_width(string_replace(string_char_at(i.line[textbox_select_mouseline],textbox_select_mousepos),"#","\#"))
+ if (nextx>currentx) break
+ }
+ }
+ if (!keyboard_check(vk_shift)) {
+ textbox_select_clickline=textbox_select_mouseline
+ textbox_select_clickpos=textbox_select_mousepos
+ }
+ textbox_select_startline=textbox_select_mouseline textbox_select_startpos=textbox_select_mousepos
+ textbox_select_endline=textbox_select_mouseline textbox_select_endpos=textbox_select_mousepos
+ textbox_marker=current_time
+ }
+
+ action=-1
+ if (mouse_check_button_pressed(mb_right) && mouseover && textbox_select=-1) { //Right-click menu
+ if (i.read_only) {
+ action=show_menu("Copy|-|Select all",-1)
+ if (action=1) action=4
+ if (action=0) action=1
+ } else action=show_menu("Cut|Copy|Paste|Delete|-|Select all",-1)
+ }
+ if (keyboard_check(vk_control) && textbox_select=-1) { // Ctrl commands
+ if (!i.read_only && keyboard_check_pressed(ord("X"))) action=0
+ if (keyboard_check_pressed(ord("C"))) action=1
+ if (!i.read_only && key_press[ord("V")]) action=2
+ if (keyboard_check_pressed(ord("A"))) action=4
+ }
+ switch (action) {
+ case 0: case 1: { // Cut/Copy text
+ str=""
+ if (textbox_select_startline=textbox_select_endline) { // Get text on single line
+ str=string_copy(i.line[textbox_select_startline],textbox_select_startpos+1,textbox_select_endpos-textbox_select_startpos)
+ } else {
+ for (l=textbox_select_startline l<=textbox_select_endline l+=1) { // Get selected text
+ if (l=textbox_select_startline) str+=string_delete(i.line[l],1,textbox_select_startpos)
+ else if (l=textbox_select_endline) str+=string_copy(i.line[l],1,textbox_select_endpos)
+ else str+=i.line[l]
+ if (l0)
+ }
+ inserttext=str
+ }
+
+ // Delete
+ if (deletetext!=0 || inserttext!="") {
+ // Get real position in total string for mouse/start/end
+ realmousepos=textbox_select_mousepos
+ realstartpos=textbox_select_startpos
+ realendpos=textbox_select_endpos
+ for (l=0 l0) { // In middle of line, just do string_delete
+ i.line[textbox_select_startline]=string_delete(i.line[textbox_select_startline],textbox_select_startpos,1)
+ textbox_select_startpos-=1
+ i.text=string_delete(i.text,realstartpos,1)
+ } else if (textbox_select_startline>0) { // Else, move up
+ textbox_select_startline-=1
+ textbox_select_startpos=string_length(i.line[textbox_select_startline])
+ if (i.line_wrap[textbox_select_startline+1]) { // If wrapped, delete, otherwise just jump up
+ textbox_select_startpos-=1
+ i.line[textbox_select_startline]=string_copy(i.line[textbox_select_startline],1,textbox_select_startpos)
+ }
+ i.line[textbox_select_startline]=i.line[textbox_select_startline]+i.line[textbox_select_startline+1]
+ i.lines-=1
+ for (l=textbox_select_startline+1 l0) { // Check max limit
+ var maxlen;
+ maxlen=i.max_chars-string_length(i.text);
+ if (string_length(inserttext)>maxlen) inserttext=string_copy(inserttext,1,maxlen)
+ }
+ if (inserttext!="") {
+ textbox_marker=current_time
+ if (i.single_line) inserttext=string_replace_all(inserttext,chr(10)," ")
+ i.text=string_copy(i.text,1,realmousepos)+inserttext+string_delete(i.text,1,realmousepos)
+
+ if (string_pos(chr(10),inserttext)>0) { // Add text with multiple lines (Paste or linebreak)
+ inserttext+=chr(10)
+ a=i.line[textbox_select_mouseline]
+ b=-1
+ while (inserttext!="") { // Parse
+ b+=1
+ str[b]=string_copy(inserttext,1,string_pos(chr(10),inserttext)-1)
+ if (i.replace_char!="") str[b]=string_repeat(i.replace_char,string_length(str[b]))
+ inserttext=string_delete(inserttext,1,string_pos(chr(10),inserttext))
+ }
+ i.lines+=b
+ for (l=i.lines-1 l>=textbox_select_mouseline+b l-=1) { //Push up
+ i.line[l]=i.line[l-b]
+ i.line_wrap[l]=i.line_wrap[l-b]
+ i.line_single[l]=i.line_single[l-b]
+ }
+ for (l=0 l<=b l+=1) { // Insert
+ if (l=0) {
+ i.line[textbox_select_mouseline+l]=string_copy(a,1,textbox_select_mousepos)+str[l] // First
+ i.line_single[textbox_select_mouseline+l]=false
+ } else if (l=b) {
+ i.line[textbox_select_mouseline+l]=str[l]+string_delete(a,1,textbox_select_mousepos) // Last
+ i.line_wrap[textbox_select_mouseline+l]=false
+ } else i.line[textbox_select_mouseline+l]=str[l] // Middle
+ }
+ textbox_select_mouseline+=b
+ textbox_select_mousepos=string_length(str[b])
+ inserttext=" "
+ } else { // Simple insert
+ if (i.replace_char!="") inserttext=string_repeat(i.replace_char,string_length(inserttext))
+ // Apparently, string_insert doesn't support å,ä,ö,é,è,í etc.
+ i.line[textbox_select_startline]=string_copy(i.line[textbox_select_startline],1,textbox_select_mousepos)+inserttext+string_delete(i.line[textbox_select_startline],1,textbox_select_mousepos)
+ textbox_select_mousepos+=string_length(inserttext)
+ }
+ textbox_select_clickline=textbox_select_mouseline textbox_select_clickpos=textbox_select_mousepos
+ textbox_select_startline=textbox_select_mouseline textbox_select_startpos=textbox_select_mousepos
+ textbox_select_endline=textbox_select_mouseline textbox_select_endpos=textbox_select_mousepos
+ }
+
+ // Move screen if text is edited or marker is moved
+ if (inserttext!="" || deletetext!=0 || key_press[vk_left] || key_press[vk_right] || key_press[vk_up] || key_press[vk_down]) {
+ if (i.single_line) {
+ if (textbox_select_mouseposi.start+i.chars-1) i.start=textbox_select_mousepos-i.chars // Move screen right
+ } else {
+ if (textbox_select_mouseline=i.start+floor(h/lineheight)) i.start=textbox_select_mouseline-floor(h/lineheight)+1 // Move screen down
+ }
+ }
+
+ // Handle selecting
+ if (!mouse_check_button(mb_left)) textbox_select=-1
+ if (textbox_select=i) { // Move up/down if dragging outside of box
+ textbox_marker=current_time
+ if (i.single_line) {
+ if (mouse_xxx+w) i.start+=1
+ } else {
+ if (mouse_yyy+h) i.start+=1
+ }
+ }
+ if (textbox_click>0) {
+ if (textbox_select_mouseline=textbox_select_clickline) {
+ textbox_select_startline=textbox_select_mouseline
+ textbox_select_endline=textbox_select_mouseline
+ if (textbox_select_mousepos>=textbox_select_clickpos) {
+ textbox_select_startpos=textbox_select_clickpos
+ textbox_select_endpos=textbox_select_mousepos
+ } else {
+ textbox_select_startpos=textbox_select_mousepos
+ textbox_select_endpos=textbox_select_clickpos
+ }
+ }
+ if (textbox_select_mouseline>textbox_select_clickline) {
+ textbox_select_startline=textbox_select_clickline
+ textbox_select_startpos=textbox_select_clickpos
+ textbox_select_endline=textbox_select_mouseline
+ textbox_select_endpos=textbox_select_mousepos
+ }
+ if (textbox_select_mouseline=0 a-=1) {
+ ww+=string_width(string_replace(string_char_at(i.line[0],a),"#","\#"))
+ b=a
+ if (ww>w) break
+ }
+ i.start=min(b,i.start)
+ // Calculate visible
+ ww=0
+ i.chars=0
+ for (a=i.start+1 a<=string_length(i.line[0]) a+=1) {
+ ww+=string_width(string_replace(string_char_at(i.line[0],a),"#","\#"))
+ if (ww>w) break
+ i.chars+=1
+ }
+ } else { // Wordwrapping
+ if (changetext || i.last_width!=w || inserttext!="" || deletetext!=0) { // Detect box width or line length changes.
+ for (l=1 lw) continue
+ if (i.line_single[l-1]) { // Single-worded line
+ for (p=1 p<=string_length(i.line[l]) p+=1) { // Try to add remaining letters
+ if (ww+string_width(string_replace_all(string_copy(i.line[l],1,p),"#","\#"))>w) break
+ a=string_char_at(i.line[l],p+1)
+ if (a=" " || a="-") {
+ p+=1
+ i.line_single[l-1]=false
+ break
+ }
+ if (p=string_length(i.line[l]) && !i.line_single[l]) i.line_single[l-1]=false
+ }
+ if (p=1) continue //Cannot move up
+ a=string_length(i.line[l-1]) // Move markers if affected
+ if (textbox_select_mouseline=l && textbox_select_mousepos<=p) {textbox_select_mouseline-=1 textbox_select_mousepos+=a}
+ if (textbox_select_clickline=l && textbox_select_clickpos<=p) {textbox_select_clickline-=1 textbox_select_clickpos+=a}
+ if (textbox_select_endline=l && textbox_select_endpos<=p) {textbox_select_endline-=1 textbox_select_endpos+=a}
+ if (textbox_select_startline=l && textbox_select_startpos<=p) {textbox_select_startline-=1 textbox_select_startpos+=a}
+ if (textbox_select_mouseline=l) textbox_select_mousepos-=p
+ if (textbox_select_clickline=l) textbox_select_clickpos-=p
+ if (textbox_select_endline=l) textbox_select_endpos-=p
+ if (textbox_select_startline=l) textbox_select_startpos-=p
+ i.line[l-1]+=string_copy(i.line[l],1,p)
+ i.line[l]=string_delete(i.line[l],1,p)
+ }
+ while (i.line[l]!="") { // Try to add words
+ p=string_pos(" ",i.line[l])
+ if (p=0) p=string_pos("-",i.line[l])
+ if (p=0) p=string_length(i.line[l])
+ if (ww+string_width(string_replace_all(string_copy(i.line[l],1,p-1),"#","\#"))>w) break
+ a=string_length(i.line[l-1]) // Move markers if affected
+ if (textbox_select_mouseline=l && textbox_select_mousepos<=p) {textbox_select_mouseline-=1 textbox_select_mousepos+=a}
+ if (textbox_select_clickline=l && textbox_select_clickpos<=p) {textbox_select_clickline-=1 textbox_select_clickpos+=a}
+ if (textbox_select_endline=l && textbox_select_endpos<=p) {textbox_select_endline-=1 textbox_select_endpos+=a}
+ if (textbox_select_startline=l && textbox_select_startpos<=p) {textbox_select_startline-=1 textbox_select_startpos+=a}
+ if (textbox_select_mouseline=l) textbox_select_mousepos-=p
+ if (textbox_select_clickline=l) textbox_select_clickpos-=p
+ if (textbox_select_endline=l) textbox_select_endpos-=p
+ if (textbox_select_startline=l) textbox_select_startpos-=p
+ i.line[l-1]+=string_copy(i.line[l],1,p)
+ i.line[l]=string_delete(i.line[l],1,p)
+ }
+
+ if (i.line[l]="") { // Remove empty line
+ i.lines-=1
+ for (a=l aw) {
+ i.line_single[l]=false
+ for (p=string_length(i.line[l]) p>1 p-=1) { // Look for words
+ a=string_char_at(i.line[l],p)
+ if (a=" " || a="-") {
+ if (string_width(string_replace_all(string_copy(i.line[l],1,p-1),"#","\#"))1 p-=1) {
+ if (string_width(string_replace_all(string_copy(i.line[l],1,p),"#","\#"))l b-=1) { // Push
+ i.line[b]=i.line[b-1]
+ i.line_wrap[b]=i.line_wrap[b-1]
+ i.line_single[b]=i.line_single[b-1]
+ if (textbox_select_mouseline=b) textbox_select_mouseline+=1 //Move markers if affected
+ if (textbox_select_clickline=b) textbox_select_clickline+=1
+ if (textbox_select_endline=b) textbox_select_endline+=1
+ if (textbox_select_startline=b) textbox_select_startline+=1
+ }
+ i.lines+=1
+ i.line[l+1]=string_delete(i.line[l],1,p)
+ i.line_wrap[l+1]=true
+ i.line_single[l+1]=false
+ } else {
+ i.line[l+1]=string_delete(i.line[l],1,p)+i.line[l+1] // Add to existing
+ }
+ // Move markers if affected
+ a=string_length(i.line[l])-p
+ if (textbox_select_mouseline=l+1) textbox_select_mousepos+=a
+ if (textbox_select_clickline=l+1) textbox_select_clickpos+=a
+ if (textbox_select_endline=l+1) textbox_select_endpos+=a
+ if (textbox_select_startline=l+1) textbox_select_startpos+=a
+ if (textbox_select_mouseline=l && textbox_select_mousepos>=p) {textbox_select_mouseline+=1 textbox_select_mousepos-=p}
+ if (textbox_select_clickline=l && textbox_select_clickpos>=p) {textbox_select_clickline+=1 textbox_select_clickpos-=p}
+ if (textbox_select_endline=l && textbox_select_endpos>=p) {textbox_select_endline+=1 textbox_select_endpos-=p}
+ if (textbox_select_startline=l && textbox_select_startpos>=p) {textbox_select_startline+=1 textbox_select_startpos-=p}
+ i.line[l]=string_copy(i.line[l],1,p)
+ }
+ }
+ if (textbox_select_mouseline=i.start+floor(h/lineheight)) i.start=textbox_select_mouseline-floor(h/lineheight)+1 // Move screen down
+ }
+ i.start=max(0,min(i.start,i.lines-floor(h/lineheight)))
+ }
+
+ //Draw text and selection
+ draw_set_halign(fa_left)
+ draw_set_valign(fa_top)
+ for (l=i.start*!i.single_line lh) break // Exit if beyond box
+ if ((mouseover && textbox_select=-1) || textbox_select=i) {
+ if (l=i.lines-1) hh=h-ly
+ else hh=lineheight
+ if ((mouse_x>=xx || textbox_select=i) &&
+ (mouse_x=yy+ly || (textbox_select=i && ly=0)) &&
+ (mouse_yh || l=i.lines-1)))) { // Cursor is inside line
+ if (mouse_check_button(mb_left)) {
+ if (i.select_on_focus && textbox_lastfocus!=i) { // Select all
+ textbox_select_startline=0 textbox_select_startpos=0
+ textbox_select_endline=i.lines-1 textbox_select_endpos=string_length(i.line[textbox_select_endline])
+ textbox_select_mouseline=textbox_select_endline textbox_select_mousepos=textbox_select_endpos
+ textbox_select_clickline=0 textbox_select_clickpos=0
+ textbox_marker=current_time
+ textbox_focus=i
+ keyboard_string=""
+ mouse_clear(mb_left)
+ } else {
+ textbox_select=i
+ ww=0
+ for (a=i.start*i.single_line a=string_length(i.line[textbox_select_endline])) {
+ if (textbox_select_endline=i.lines-1) break
+ if (!i.line_single[textbox_select_endline]) break
+ textbox_select_endline+=1
+ textbox_select_endpos=0
+ }
+ if (textbox_select_endpos>=string_length(i.line[textbox_select_endline])) break
+ }
+ textbox_select_mouseline=textbox_select_endline
+ textbox_select_mousepos=textbox_select_endpos
+ textbox_click=0
+ mouse_clear(mb_left)
+ } else { // Remove selection if clicking after word select
+ textbox_click=current_time
+ textbox_select_startline=textbox_select_mouseline textbox_select_startpos=textbox_select_mousepos
+ textbox_select_endline=textbox_select_mouseline textbox_select_endpos=textbox_select_mousepos
+ }
+ } else {
+ textbox_click=current_time
+ if (!keyboard_check(vk_shift) || textbox_lastfocus!=i) { // Drag selection if shift is held
+ textbox_select_startline=textbox_select_mouseline textbox_select_startpos=textbox_select_mousepos
+ textbox_select_endline=textbox_select_mouseline textbox_select_endpos=textbox_select_mousepos
+ textbox_select_clickline=textbox_select_mouseline textbox_select_clickpos=textbox_select_mousepos
+ }
+ }
+ textbox_marker=current_time
+ textbox_focus=i
+ keyboard_string=""
+ textbox_lastfocus=i
+ }
+ }
+ }
+ }
+ }
+ if (i.single_line) {
+ if (textbox_focus=i && textbox_select_startpos!=textbox_select_endpos) {
+ for (a=0 a<3 a+=1) str[a]=""
+ if (textbox_select_endposi.start+1+i.chars) str[0]=string_copy(i.line[0],i.start+1,i.chars) // Selection is outside
+ else if (textbox_select_startpos<=i.start && textbox_select_endpos>i.start+i.chars) str[1]=string_copy(i.line[0],i.start+1,i.chars) // All visible is selected
+ else if (textbox_select_startpos>i.start && textbox_select_endposl) { // Between
+ str[1]=i.line[l]
+ } else { // Outside
+ str[0]=i.line[l]
+ }
+ for (a=0 a<3 a+=1) str[a]=string_replace_all(str[a],"#","\#")
+ if (str[0]!="") { // Text before or outside selection
+ draw_set_color(color_normal)
+ draw_text(xx,yy+ly,str[0])
+ }
+ if (str[1]!="") { // Selected text
+ draw_set_color(color_selection)
+ draw_rectangle(min(xx+w,xx+string_width(str[0])),yy+ly,min(xx+w,xx+string_width(str[0]+str[1])),yy+ly+lineheight-1,0)
+ draw_set_color(color_selected)
+ draw_text(xx+string_width(str[0]),yy+ly,str[1])
+ }
+ if (str[2]!="") { // Text after selection
+ draw_set_color(color_normal)
+ draw_text(xx+string_width(str[0]+str[1]),yy+ly,str[2])
+ }
+ } else { // Unselected line
+ draw_set_color(color_normal)
+ draw_text(xx,yy+ly,string_replace_all(i.line[l],"#","\#"))
+ }
+ }
+ }
+
+ // Marker
+ if (textbox_focus=i && !i.read_only) {
+ a=string_width(string_replace_all(string_copy(i.line[textbox_select_mouseline],1,textbox_select_mousepos),"#","\#"))
+ b=(textbox_select_mouseline-i.start)*lineheight
+ if (i.single_line) {
+ a-=string_width(string_replace_all(string_copy(i.line[textbox_select_mouseline],1,i.start),"#","\#"))
+ b=0
+ }
+ if (a>=0 && a<=w && b>=0 && b+lineheight<=h && (current_time-textbox_marker) mod 1000<500) {
+ draw_set_color(color_marker)
+ draw_line(xx+a+1,yy+b-1,xx+a+1,yy+b+lineheight-1)
+ }
+ }
+
+ if (textbox_focus=i) textbox_lastfocus=i
+ else if (textbox_focus=-1) textbox_lastfocus=-1
+
+ // Set cursor
+ if (mouseover || textbox_select=i) {
+ textbox_mouseover=i
+ window_set_cursor(cr_beam)
+ } else if (textbox_mouseover=i) {
+ textbox_mouseover=-1
+ window_set_cursor(cr_default)
+ }
+ i.last_text=i.text
+ i.last_width=w
+
+ draw_set_color(color_normal)
+ return i.text
+}
diff --git a/src/Scripts/_resources.list.xml b/src/Scripts/_resources.list.xml
new file mode 100644
index 0000000..592b4e2
--- /dev/null
+++ b/src/Scripts/_resources.list.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/Sounds/_resources.list.xml b/src/Sounds/_resources.list.xml
new file mode 100644
index 0000000..70032a2
--- /dev/null
+++ b/src/Sounds/_resources.list.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/src/Sprites/Fonts/_resources.list.xml b/src/Sprites/Fonts/_resources.list.xml
new file mode 100644
index 0000000..5bf24bb
--- /dev/null
+++ b/src/Sprites/Fonts/_resources.list.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 0.png b/src/Sprites/Fonts/sprCyberspace.images/image 0.png
new file mode 100644
index 0000000000000000000000000000000000000000..18657fc7496a47a633f385128f74c34f2b2a956f
GIT binary patch
literal 70
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFjxHyJX#3d(4uqrSxFmf<3+LifE
Q0!lD=y85}Sb4q9e0Eom4tN;K2
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 1.png b/src/Sprites/Fonts/sprCyberspace.images/image 1.png
new file mode 100644
index 0000000000000000000000000000000000000000..73b05fc50e4c373d4c2498223167d0b5ddc05f60
GIT binary patch
literal 85
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqGM+AuAr*1S2@OsE0~j7BGgxUl
hh%567Y+({-VAy_3`zljS&TODM22WQ%mvv4FO#t956jcBK
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 10.png b/src/Sprites/Fonts/sprCyberspace.images/image 10.png
new file mode 100644
index 0000000000000000000000000000000000000000..d865724432c721c69746bc13def8553f1ea181ee
GIT binary patch
literal 98
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqnw~C>Ar*1S2@XvE8yRNuvm0=h
vNU=7sBr?SE@qEx~;9PWBf?+v}D+5E?9P^VcdYdDFnixD?{an^LB{Ts5)ms;4
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 11.png b/src/Sprites/Fonts/sprCyberspace.images/image 11.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd08dc0d95f611bdaff13713b0613196b4ac99b5
GIT binary patch
literal 92
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq%APKcAr*1S2@0%#*qKTUMH+$`
oJ(y${tY&1MBV^zZz!=HEATFtVx9CEmK2SM>r>mdKI;Vst04Por9{>OV
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 12.png b/src/Sprites/Fonts/sprCyberspace.images/image 12.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf8cf093d5d9cebec2694839362616f1fb269fd7
GIT binary patch
literal 81
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq5}q!OAr*1S2@+lp>_rxIA7%{X
ex^UEifni&h@Y_QP2B&~(7(8A5T-G@yGywpzhZOAq
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 13.png b/src/Sprites/Fonts/sprCyberspace.images/image 13.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab2c6ae9a69faef406064e18a78b1a74f7f95fe0
GIT binary patch
literal 76
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq!k#XUAr*1S2@)y~?8O?^wY4!Y
Ys3i)&t&FJn1C(a)boFyt=akR{05{AMPXGV_
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 14.png b/src/Sprites/Fonts/sprCyberspace.images/image 14.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c4afa5385f1c4716e45b9407243bdaf460253f1
GIT binary patch
literal 79
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqVxBIJAr*1S2@+lp>_rxIA7*r9
b-NC>R^MwDSTYgr+Ar*1SKl<4X8W`p@vK4e5
tX6)kJ!O+E&a#y1vgY^c(uBbH(4DG`C6Z<-1_XD*sc)I$ztaD0e0stfE8an_0
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 19.png b/src/Sprites/Fonts/sprCyberspace.images/image 19.png
new file mode 100644
index 0000000000000000000000000000000000000000..116ded9c956c1f8c3d99fa3efcaedf0079441a57
GIT binary patch
literal 99
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqTAnVBAr*1SKl+&s4lr=B_e*dc
w2x!PLF>(lO;Rz5)2<}|SAntIvU6z4i-Sq6Kk9}Tl1nOe&boFyt=akR{06lCPYXATM
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 2.png b/src/Sprites/Fonts/sprCyberspace.images/image 2.png
new file mode 100644
index 0000000000000000000000000000000000000000..8812a24817ecfa631aa61a20a60229c92b350d59
GIT binary patch
literal 86
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqvYsxEAr*1S2@FmD0~nH$A18Ax
j_tCd+WZH_gjJL7(8A5T-G@yGywq7h!p1l
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 21.png b/src/Sprites/Fonts/sprCyberspace.images/image 21.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7bb9cc06ff3954346b8d77d8e72363c3e513148
GIT binary patch
literal 92
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq%APKcAr*1SKl<4X8W`p@atkbF
p5O)aYW?!P&P`H87r1l0QL&eMNseBJuJ%P#@JYD@<);T3K0RVy37Wn`G
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 22.png b/src/Sprites/Fonts/sprCyberspace.images/image 22.png
new file mode 100644
index 0000000000000000000000000000000000000000..b97f9b9fb319431d40d435f72cd374cf230925f3
GIT binary patch
literal 96
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq>Ygr+Ar*1SKl<4X8W`p@atkbF
t5O2_SxXgT=<@th>$yx_kFMLU4XZYJ!+)78&qol`;+0Bq_KA^-pY
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 24.png b/src/Sprites/Fonts/sprCyberspace.images/image 24.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2b278c6dfe472ced73cba2324796959d7eaefb6
GIT binary patch
literal 98
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqnw~C>Ar*1S2@FmDBN#kn_%5(s
v_$k4pQPZ+;21Br^$b@wa;trSFWf>TRvx|G3SyL|oH8FU)`njxgN@xNABlsBi
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 25.png b/src/Sprites/Fonts/sprCyberspace.images/image 25.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6d6cf0aa0e5f4e3ec796bf29406e688c80293d8
GIT binary patch
literal 86
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqvYsxEAr*1SKl<4X8W`p@vUvnI
ia4&f2$Y7=6z{bE>8^4fa!>L0+g$$mqelF{r5}E)3&=oxZ
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 26.png b/src/Sprites/Fonts/sprCyberspace.images/image 26.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b3522c4ee6f1a4d6c541a0b5529d345b8fd9ad7
GIT binary patch
literal 85
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqGM+AuAr*1S2?}C=+L=lUEfiKX
h6ggbrYT_zjWccty{^5!%B{o2H44$rjF6*2Ung9(#7M=hA
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 27.png b/src/Sprites/Fonts/sprCyberspace.images/image 27.png
new file mode 100644
index 0000000000000000000000000000000000000000..e989c94f5ead3295198b96740fe1b2b35a9144e2
GIT binary patch
literal 87
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqa-J@ZAr*1S2?}C=+L=lUEfiKX
jC@5qw1#(?D+QGzd$6Wbt$Ic)lph^Z$S3j3^P6^s_EleUSe`
gX*0tvDJdp~yu0c*JI&3NfvOlhUHx3vIVCg!0PHFiO#lD@
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 3.png b/src/Sprites/Fonts/sprCyberspace.images/image 3.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c4db5429c43b246517d669a0fe1b5a2a553522d
GIT binary patch
literal 90
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqik>cxAr*1S2@OsE9U6R+8TN2F
mG`(PmcJ*5lYyZ(%zLYpUeGL{LIzJ)KbLh*2~7arY7?0N
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 32.png b/src/Sprites/Fonts/sprCyberspace.images/image 32.png
new file mode 100644
index 0000000000000000000000000000000000000000..46a7ba6e999c88b24eb6df0b2770f5a8bb50b023
GIT binary patch
literal 105
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq2A(dCAr*1S2@FmDBN#kncnnxB
z98KVvpYgr+Ar*1S2@FmDBN#kn_%5(s
t_$k4pQPZ+;27@bO47*4`AfqA!L+!QXx!wO}FaotOc)I$ztaD0e0s!ON7)1a8
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 34.png b/src/Sprites/Fonts/sprCyberspace.images/image 34.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5ad4af113f9e6ec6960ea5c9860e629b2c955ce
GIT binary patch
literal 93
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqDxNNmAr*1SKl+&s4lr=B&z1<}
oDqs|0Eszax*u|8?;LBeIRQs{KQ{497HK2M1Pgg&ebxsLQ0CD#gpa1{>
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 35.png b/src/Sprites/Fonts/sprCyberspace.images/image 35.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb2976f160a3fe3634a32adc4850f6bc3bea5a3f
GIT binary patch
literal 94
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqs-7;6Ar*1SKl<4X8W`p@vT~Dz|jP*4U8tXHy9ZfgTe~DWM4f%&Ztg
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 36.png b/src/Sprites/Fonts/sprCyberspace.images/image 36.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba4b5e687df6002da26e976472093bbddedb55a3
GIT binary patch
literal 89
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq3Z5>GAr*1SKl+&s4lr=Ba~?R_
m8Pwn_$Sbmd+2rdEMuroK$#W<736}uXGI+ZBxvX_?m7~KE>
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 38.png b/src/Sprites/Fonts/sprCyberspace.images/image 38.png
new file mode 100644
index 0000000000000000000000000000000000000000..95568a1703c97113d178169d37c1a438be4184a7
GIT binary patch
literal 89
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq3Z5>GAr*1SKl<4X8W`p@atkbF
k5O)Y{SjNw&5$*s~&gvMxGS8To1*n$6)78&qol`;+00^=ZJpcdz
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 39.png b/src/Sprites/Fonts/sprCyberspace.images/image 39.png
new file mode 100644
index 0000000000000000000000000000000000000000..44d3b62e98c671fcfef0f6068629803796306e9b
GIT binary patch
literal 96
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq>Ygr+Ar*1SKl<4X8W`p@vTs0LY@Iz-D)oUdP$Pq
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 40.png b/src/Sprites/Fonts/sprCyberspace.images/image 40.png
new file mode 100644
index 0000000000000000000000000000000000000000..222add3e2c9e869bb0b428224b5dfe75560b1bff
GIT binary patch
literal 89
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq3Z5>GAr*1SKloXAA{b)kSaB6F
mim;y8mH4QDEtQLdk>T2v@Re`nPdxytW$<+Mb6Mw<&;$TC))vhG
literal 0
HcmV?d00001
diff --git a/src/Sprites/Fonts/sprCyberspace.images/image 41.png b/src/Sprites/Fonts/sprCyberspace.images/image 41.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f5743faae705739be42dd583ac629ba713d936f
GIT binary patch
literal 89
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq3Z5>GAr*1SKl<4X7BH`AI?