essytas 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. data/LICENSE +19 -0
  2. data/README +3 -0
  3. data/Rakefile +44 -0
  4. data/bin/essytas +2 -0
  5. data/lib/animation.rb +74 -0
  6. data/lib/config.rb +63 -0
  7. data/lib/core.rb +242 -0
  8. data/lib/cursor.rb +43 -0
  9. data/lib/def/animations/explosion1.anim +103 -0
  10. data/lib/def/characters.def +132 -0
  11. data/lib/def/de/dialogues/test.dlg +4 -0
  12. data/lib/def/de/enemies.trans +6 -0
  13. data/lib/def/de/items.trans +84 -0
  14. data/lib/def/de/skills.trans +48 -0
  15. data/lib/def/de/spells.trans +31 -0
  16. data/lib/def/en/dialogues/test.dlg +4 -0
  17. data/lib/def/en/enemies.trans +6 -0
  18. data/lib/def/en/items.trans +78 -0
  19. data/lib/def/en/skills.trans +48 -0
  20. data/lib/def/en/spells.trans +31 -0
  21. data/lib/def/enemies.def +8 -0
  22. data/lib/def/enemies/wolf.bhv +11 -0
  23. data/lib/def/init.def +5 -0
  24. data/lib/def/items.def +153 -0
  25. data/lib/def/loot.def +2 -0
  26. data/lib/def/particles.def +66 -0
  27. data/lib/def/recipies.def +18 -0
  28. data/lib/def/skills.def +40 -0
  29. data/lib/def/spells.def +42 -0
  30. data/lib/def/spells.rb +16 -0
  31. data/lib/def/weapons.def +9 -0
  32. data/lib/ext/astar/AMap.rb +146 -0
  33. data/lib/ext/astar/node.rb +72 -0
  34. data/lib/ext/astar/priority_queue.rb +44 -0
  35. data/lib/ext/shader.rb +116 -0
  36. data/lib/game/alchemy/recipe.rb +26 -0
  37. data/lib/game/character.rb +102 -0
  38. data/lib/game/combat/bar.rb +119 -0
  39. data/lib/game/combat/battle.rb +345 -0
  40. data/lib/game/combat/control.rb +18 -0
  41. data/lib/game/combat/gui.rb +190 -0
  42. data/lib/game/combat/gui/select_item.rb +11 -0
  43. data/lib/game/combat/gui/select_spell.rb +38 -0
  44. data/lib/game/constitution.rb +48 -0
  45. data/lib/game/equipment.rb +34 -0
  46. data/lib/game/inventory.rb +37 -0
  47. data/lib/game/item.rb +54 -0
  48. data/lib/game/magic.rb +33 -0
  49. data/lib/game/map/events.rb +29 -0
  50. data/lib/game/map/fog.rb +41 -0
  51. data/lib/game/map/map.rb +247 -0
  52. data/lib/game/map/map_animation.rb +26 -0
  53. data/lib/game/map/map_loader.rb +177 -0
  54. data/lib/game/map/map_object.rb +208 -0
  55. data/lib/game/map/map_particle.rb +27 -0
  56. data/lib/game/map/player.rb +78 -0
  57. data/lib/game/map/tile.rb +35 -0
  58. data/lib/game/mind.rb +24 -0
  59. data/lib/game/npc/behaviour.rb +45 -0
  60. data/lib/game/npc/bubble.rb +28 -0
  61. data/lib/game/npc/goal.rb +93 -0
  62. data/lib/game/npc/npc.rb +95 -0
  63. data/lib/game/npc/task.rb +73 -0
  64. data/lib/game/osd/magic.rb +24 -0
  65. data/lib/game/party.rb +42 -0
  66. data/lib/game/skills.rb +64 -0
  67. data/lib/game/spell.rb +35 -0
  68. data/lib/game_window.rb +95 -0
  69. data/lib/glsl/contrast.frag +12 -0
  70. data/lib/glsl/fade.frag +11 -0
  71. data/lib/glsl/mezzotint.frag +20 -0
  72. data/lib/glsl/noise.frag +20 -0
  73. data/lib/glsl/pixelate.frag +42 -0
  74. data/lib/glsl/radialblur.frag +28 -0
  75. data/lib/glsl/sepia.frag +15 -0
  76. data/lib/glsl/shockwave.frag +24 -0
  77. data/lib/glsl/tv_screen.frag +17 -0
  78. data/lib/graphics/animations/credits.txt +1 -0
  79. data/lib/graphics/animations/explosion2.png +0 -0
  80. data/lib/graphics/backgrounds/white_ties_grass.png +0 -0
  81. data/lib/graphics/chars/ejera.png +0 -0
  82. data/lib/graphics/chars/salyjea.png +0 -0
  83. data/lib/graphics/chars/tharat.png +0 -0
  84. data/lib/graphics/combat/tharat.png +0 -0
  85. data/lib/graphics/cursors/normal.png +0 -0
  86. data/lib/graphics/fog/clouds1.png +0 -0
  87. data/lib/graphics/gui/bar_center.png +0 -0
  88. data/lib/graphics/gui/bar_left.png +0 -0
  89. data/lib/graphics/gui/bar_right.png +0 -0
  90. data/lib/graphics/gui/button_background.png +0 -0
  91. data/lib/graphics/gui/button_close.png +0 -0
  92. data/lib/graphics/gui/button_close_hi.png +0 -0
  93. data/lib/graphics/gui/button_highlight.png +0 -0
  94. data/lib/graphics/gui/charequip_background.png +0 -0
  95. data/lib/graphics/gui/charselect_background.png +0 -0
  96. data/lib/graphics/gui/container_background.png +0 -0
  97. data/lib/graphics/gui/drop_item.png +0 -0
  98. data/lib/graphics/gui/equip_Etarae.png +0 -0
  99. data/lib/graphics/gui/equip_Mensch.png +0 -0
  100. data/lib/graphics/gui/equipslot_background.png +0 -0
  101. data/lib/graphics/gui/iteminfo_background.png +0 -0
  102. data/lib/graphics/gui/msg_background.png +0 -0
  103. data/lib/graphics/gui/scrollbar_background.png +0 -0
  104. data/lib/graphics/gui/scroller.png +0 -0
  105. data/lib/graphics/gui/tile_32.png +0 -0
  106. data/lib/graphics/gui/tile_32_highlight.png +0 -0
  107. data/lib/graphics/icons/items/arrow.png +0 -0
  108. data/lib/graphics/icons/items/bandage.png +0 -0
  109. data/lib/graphics/icons/items/boots_leather.png +0 -0
  110. data/lib/graphics/icons/items/bow.png +0 -0
  111. data/lib/graphics/icons/items/credits.txt +8 -0
  112. data/lib/graphics/icons/items/harness_leather.png +0 -0
  113. data/lib/graphics/icons/items/knife.png +0 -0
  114. data/lib/graphics/icons/items/shirt_linen.png +0 -0
  115. data/lib/graphics/items/none.png +0 -0
  116. data/lib/graphics/menu/ingame_background.png +0 -0
  117. data/lib/graphics/menu/ingame_background.xcf +0 -0
  118. data/lib/graphics/menu/start_background.png +0 -0
  119. data/lib/graphics/missing.png +0 -0
  120. data/lib/graphics/osd/magic_bg.png +0 -0
  121. data/lib/graphics/particles/leaf.png +0 -0
  122. data/lib/graphics/particles/smoke.png +0 -0
  123. data/lib/graphics/pixel.png +0 -0
  124. data/lib/graphics/tiles/test.png +0 -0
  125. data/lib/gui/base.rb +278 -0
  126. data/lib/gui/button.rb +93 -0
  127. data/lib/gui/char_equip.rb +118 -0
  128. data/lib/gui/char_selector.rb +54 -0
  129. data/lib/gui/context_menu.rb +115 -0
  130. data/lib/gui/draggable.rb +18 -0
  131. data/lib/gui/grid.rb +118 -0
  132. data/lib/gui/image.rb +17 -0
  133. data/lib/gui/inventory.rb +42 -0
  134. data/lib/gui/item_info.rb +33 -0
  135. data/lib/gui/slider.rb +10 -0
  136. data/lib/gui/textfield.rb +57 -0
  137. data/lib/layer.rb +64 -0
  138. data/lib/load.rb +31 -0
  139. data/lib/main.rb +18 -0
  140. data/lib/maps/def/test.bhv +26 -0
  141. data/lib/maps/def/test.rb +14 -0
  142. data/lib/maps/test.tmx +133 -0
  143. data/lib/maps/test2.tmx +94 -0
  144. data/lib/maps/test3.tmx +29 -0
  145. data/lib/maps/test3_lower.tmx +25 -0
  146. data/lib/maps/test3_upper.tmx +25 -0
  147. data/lib/maps/test_left.tmx +25 -0
  148. data/lib/maps/test_upper.tmx +25 -0
  149. data/lib/music/Butterfly Tea - A New Hope 2K11.mp3 +0 -0
  150. data/lib/music/Greendjohn - Rebirth.mp3 +0 -0
  151. data/lib/music/credits.txt +8 -0
  152. data/lib/parse.rb +605 -0
  153. data/lib/parse_tmx.rb +114 -0
  154. data/lib/particles.rb +127 -0
  155. data/lib/sample.rb +29 -0
  156. data/lib/save.rb +44 -0
  157. data/lib/song.rb +41 -0
  158. data/lib/sounds/click1.wav +0 -0
  159. data/lib/sounds/credits.txt +2 -0
  160. data/lib/sounds/error1.wav +0 -0
  161. data/lib/sprite.rb +35 -0
  162. data/lib/states/menus.rb +17 -0
  163. data/lib/states/menus/alchemy.rb +53 -0
  164. data/lib/states/menus/equip.rb +79 -0
  165. data/lib/states/menus/ingame.rb +34 -0
  166. data/lib/states/menus/magic.rb +31 -0
  167. data/lib/states/menus/options.rb +54 -0
  168. data/lib/states/menus/start.rb +38 -0
  169. data/lib/states/states.rb +154 -0
  170. data/lib/tileset.rb +42 -0
  171. data/lib/tools/world.rb +103 -0
  172. data/lib/tools/worldmap_editor.rb +221 -0
  173. data/lib/translate.rb +368 -0
  174. metadata +255 -0
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2011 Rylius Kejides (ryliusk@gmail.com)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,3 @@
1
+ == EwigeHoffnung
2
+
3
+ You should document your project here.
@@ -0,0 +1,44 @@
1
+
2
+ require 'rubygems'
3
+ require 'rake'
4
+ require 'rake/clean'
5
+ require 'rubygems/package_task'
6
+ require 'rdoc/task'
7
+
8
+ spec = Gem::Specification.new do |s|
9
+ s.name = 'essytas'
10
+ s.version = '0.0.1'
11
+ s.extra_rdoc_files = ['README', 'LICENSE']
12
+ s.summary = "2D open world RPG"
13
+ s.description = "The game takes place in a huge fictional world, \'Essytas\'. Unlike other games, your goal is not to rescue the world from all evil but to lead a young man and his family through their lives. Your decisions control the fate of the characters.
14
+ As you may have guessed, there isn\'t a real storyline. Instead, not long into the game a fire will destroy your village, forcing you to find a new shelter. What happens next is completely up to you.
15
+ The game doesn\'t have an end, it ends when your character dies."
16
+ s.authors = ['Rylius Kejides']
17
+ s.email = 'ryliusk@gmail.com'
18
+ s.homepage = 'http://rylius.hazewood.de/wp/essytas/'
19
+ s.files = %w(LICENSE README Rakefile) + Dir.glob("{bin,lib,spec}/**/*")
20
+ s.require_path = "lib"
21
+ s.bindir = "bin"
22
+ s.platform = Gem::Platform::RUBY
23
+ s.add_development_dependency("awesome_print")
24
+ s.add_runtime_dependency("gosu", "~> 0.7", ">= 0.7.0")
25
+ s.required_ruby_version = '>= 1.9.2'
26
+ s.requirements.push("1 GHz processor")
27
+ s.requirements.push("Decent graphics card")
28
+ s.license = "MIT"
29
+ s.executables.push("essytas")
30
+ end
31
+
32
+ Gem::PackageTask.new(spec) do |p|
33
+ p.gem_spec = spec
34
+ p.need_tar = true
35
+ end
36
+
37
+ Rake::RDocTask.new do |rdoc|
38
+ files =['README', 'LICENSE', 'lib/**/*.rb']
39
+ rdoc.rdoc_files.add(files)
40
+ rdoc.main = "README" # page to start on
41
+ rdoc.title = "Essytas Documentation"
42
+ rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
43
+ rdoc.options << '--line-numbers'
44
+ end
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative "../lib/main.rb"
@@ -0,0 +1,74 @@
1
+
2
+ module Core
3
+
4
+ def self.animations
5
+ return @animations
6
+ end
7
+
8
+ def self.animations=(hsh)
9
+ @animations = hsh
10
+ end
11
+
12
+ def self.anim(anim)
13
+ return animations[anim].clone
14
+ end
15
+
16
+ class Animation
17
+ attr_accessor :x, :y
18
+ def initialize(graphic, sx, sy, repeat, frames)
19
+ @anim_frames = Core.tiles("animations/#{graphic}", sx, sy, false)
20
+ @repeat = repeat
21
+ @frames = frames
22
+ @index = 0
23
+ @time = 0
24
+ @x, @y = 0
25
+ @remove = false
26
+ end
27
+
28
+ def frame
29
+ return @frames[@index]
30
+ end
31
+
32
+ def play(x, y, z)
33
+ @x, @y, @z = x, y, z
34
+ end
35
+
36
+ def draw
37
+ return if remove?
38
+ @anim_frames[@index].draw(@x + frame.x, @y + frame.y, @z, 1, 1, frame.color, frame.mode)
39
+ @time += 1
40
+ if @time >= frame.length
41
+ @time = 0
42
+ next_frame
43
+ end
44
+ end
45
+
46
+ def remove?
47
+ return @remove
48
+ end
49
+
50
+ private
51
+
52
+ def next_frame
53
+ @index += 1
54
+ if @index >= @frames.size
55
+ if @repeat
56
+ @index = 0
57
+ else
58
+ @remove = true
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ class Frame
65
+ attr_reader :length, :color, :x, :y, :mode
66
+ def initialize
67
+ @length = 1
68
+ @color = Gosu::Color::WHITE
69
+ @x, @y = 0, 0
70
+ @mode = :default
71
+ end
72
+ end
73
+
74
+ end
@@ -0,0 +1,63 @@
1
+
2
+ module Core
3
+
4
+ class Config
5
+
6
+ attr_reader :hash
7
+
8
+ def initialize
9
+ @hash = {
10
+ :opengl => true,
11
+ :language => "de",
12
+ :volume => 0.5, # 0 = normal, 1 = twice as loud
13
+ :contrast => 1.0, # 1.0 = off
14
+ :log => true, # whether to log to file or print everything on stdout
15
+ :text_speed => 5, # higher = slower
16
+ }
17
+ end
18
+
19
+ def load(file=Core::DEFAULT_CONFIG)
20
+ if !File.exists?(Core::HOME_PATH + file)
21
+ File.new(Core::HOME_PATH + file, "w")
22
+ else
23
+ if File.size(Core::HOME_PATH + file) > 0
24
+ begin
25
+ @hash = Marshal.load(File.open(Core::HOME_PATH + file, "r"))
26
+ validate
27
+ rescue TypeError
28
+ puts("WARNING: Corrupted config file (#{file}), reverting to default")
29
+ rescue NoMethodError # this is likely caused by outdated configs
30
+ warn("WARNING: Config file #{file} is outdated, deleting")
31
+ File.delete(Core::HOME_PATH + file)
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ def save(file=Core::DEFAULT_CONFIG)
38
+ validate
39
+ Marshal.dump(@hash, File.open(Core::HOME_PATH + file, "w"))
40
+ rescue NoMethodError # this is likely caused by outdated configs
41
+ warn("WARNING: Config file #{file} is outdated, deleting")
42
+ File.delete(Core::HOME_PATH + file)
43
+ end
44
+
45
+ def validate
46
+ if !["en", "de"].include?(@hash[:language])
47
+ @hash[:language] = "de"
48
+ end
49
+ vol = @hash[:volume]
50
+ if vol < 0
51
+ @hash[:volume] = 0.0
52
+ elsif vol > 1
53
+ @hash[:volume] = 1.0
54
+ end
55
+ speed = @hash[:text_speed]
56
+ if speed < 1
57
+ @hash[:text_speed] = 1
58
+ elsif speed > 10
59
+ @hash[:text_speed] = 10
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,242 @@
1
+
2
+ # General system interface and common convenience functions
3
+
4
+ require "gosu"
5
+
6
+ # Main entrance point of the engine
7
+ module Core
8
+ # Source locations
9
+ LIBRARY_PATH = File.dirname(__FILE__)
10
+ # For storing saves and updates in case the source folder is write protected
11
+ HOME_PATH = "#{ENV["HOME"]}/.essytas/"
12
+ if !File.directory?(HOME_PATH)
13
+ Dir.mkdir("#{ENV["HOME"]}/.essytas")
14
+ end
15
+ if !File.directory?("#{HOME_PATH}saves")
16
+ Dir.mkdir("#{HOME_PATH}saves")
17
+ end
18
+ SAVE_DIR = "#{HOME_PATH}saves/"
19
+
20
+ VERSION = 0.1
21
+ RELEASE = false
22
+
23
+ #--
24
+ # Game
25
+ MAP_Z = 1
26
+ MAPOBJECT_Z = 50
27
+ CURSOR_Z = 1000000
28
+ GUI_Z = 9999
29
+ PARTICLE_Z = 5000
30
+ FOG_Z = 6000
31
+
32
+ DEFAULT_FONT = "arial"
33
+
34
+ DEFAULT_CONFIG = "default.cfg"
35
+
36
+ def self.silently(&block)
37
+ lvl = $VERBOSE
38
+ $VERBOSE = nil
39
+ result = block.call
40
+ $VERBOSE = lvl
41
+ return result
42
+ end
43
+
44
+ @window = nil
45
+ # Returns the global Gosu::Window instance
46
+ def self.window
47
+ return @window
48
+ end
49
+ # Globally sets the Gosu::Window instance
50
+ def self.window=(w)
51
+ @window = w
52
+ end
53
+
54
+ def self.inside?(x, y, startx, starty, endx, endy)
55
+ if x >= startx && x < endx && y >= starty && y < endy
56
+ return true
57
+ end
58
+ return false
59
+ end
60
+
61
+ def self.mouse_inside?(x, y, ex, ey)
62
+ return inside?(Core.window.mouse_x, Core.window.mouse_y, x, y, ex, ey)
63
+ end
64
+
65
+ # a between b and c
66
+ def self.between?(a, b, c)
67
+ if a > b and a < c
68
+ return true
69
+ end
70
+ return false
71
+ end
72
+
73
+ def self.multiline(text, width, font)
74
+ ret = []
75
+ lines = text.split("\n")
76
+ lines.each { |line|
77
+ ary = line.split(" ")
78
+ str = ""
79
+ ary.each { |word|
80
+ if font.text_width(str + word) < width - 18
81
+ str += "#{word} "
82
+ else
83
+ str.rstrip!
84
+ if str != ""
85
+ ret.push(str)
86
+ end
87
+ str = "#{word} "
88
+ end
89
+ if word == ary.last
90
+ str.rstrip!
91
+ ret.push(str)
92
+ end
93
+ }
94
+ }
95
+ return ret
96
+ end
97
+
98
+ @@fonts = {}
99
+
100
+ # Returns a cached font instance
101
+ def self.font(name, size)
102
+ if @@fonts["#{name}-#{size}".to_sym]
103
+ return @@fonts["#{name}-#{size}".to_sym]
104
+ else
105
+ @@fonts["#{name}-#{size}".to_sym] = Gosu::Font.new(Core.window, name, size)
106
+ end
107
+ end
108
+
109
+ require_relative "config.rb"
110
+
111
+ @config = Config.new
112
+ @config.load
113
+ def self.config
114
+ return @config.hash
115
+ end
116
+
117
+ if RELEASE
118
+ if config[:log]
119
+ puts("INFO: Redirecting further output to log files")
120
+ $stdout.reopen("#{Core::HOME_PATH}/info.log", "w")
121
+ $stderr.reopen("#{Core::HOME_PATH}/error.log", "w")
122
+ end
123
+ if $DEBUG
124
+ $DEBUG = false
125
+ end
126
+ end
127
+
128
+ begin
129
+ require "gl"
130
+ rescue LoadError
131
+ warn("WARNING: OpenGL gem not found, disabling shader support")
132
+ config[:opengl] = false
133
+ end
134
+
135
+
136
+ # Graceful exit
137
+ def self.exit(int)
138
+ @config.save
139
+ puts("INFO: Shutting down")
140
+ Kernel.exit(int)
141
+ end
142
+
143
+ end
144
+
145
+ begin
146
+ require "awesome_print"
147
+ rescue LoadError
148
+ puts("INFO: awesome_print gem not found, using 'inspect' fallback")
149
+ def awesome_print(obj)
150
+ puts(obj.inspect)
151
+ end
152
+ alias ap awesome_print
153
+ end
154
+
155
+ # Few helper functions
156
+ class Numeric
157
+ def even?
158
+ if self % 2 == 0
159
+ return true
160
+ end
161
+ return false
162
+ end
163
+ def to_b
164
+ if self == 0
165
+ return false
166
+ else
167
+ return true
168
+ end
169
+ end
170
+ def inc
171
+ + 1
172
+ end
173
+ def dec
174
+ - 1
175
+ end
176
+ end
177
+
178
+ class String
179
+ def to_b
180
+ if self == "true"
181
+ return true
182
+ else
183
+ return false
184
+ end
185
+ end
186
+ def to_pos
187
+ ary = []
188
+ ary.push(self.gsub(/\|\d+/, "").to_i)
189
+ ary.push(self.gsub(/\d+\|/, "").to_i)
190
+ return ary
191
+ end
192
+ end
193
+
194
+ class TrueClass
195
+ def to_i
196
+ return 1
197
+ end
198
+ end
199
+
200
+ class FalseClass
201
+ def to_i
202
+ return 0
203
+ end
204
+ end
205
+
206
+ class Array
207
+ def to_color
208
+ return Gosu::Color.new(self[0], self[1], self[2], self[3])
209
+ end
210
+ def x
211
+ return self[0]
212
+ end
213
+ def y
214
+ return self[1]
215
+ end
216
+ end
217
+
218
+ class Object
219
+ alias ivg instance_variable_get
220
+ alias ivs instance_variable_set
221
+ end
222
+
223
+ puts("INFO: Loaded core module (v#{Core::VERSION})\nINFO: LIB #{Core::LIBRARY_PATH}\nINFO: HOME #{Core::HOME_PATH}")
224
+
225
+ if !File.exists?("#{Core::LIBRARY_PATH}/graphics/missing.png")
226
+ puts("FATAL: Couldn't find graphics, exiting.")
227
+ Core.exit(1)
228
+ end
229
+
230
+ require_relative "translate.rb"
231
+ require_relative "parse.rb"
232
+ require_relative "parse_tmx.rb"
233
+ require_relative "sample.rb"
234
+ require_relative "song.rb"
235
+ require_relative "sprite.rb"
236
+ require_relative "gui/base.rb"
237
+ require_relative "states/menus.rb"
238
+ require_relative "game/map/player.rb"
239
+ require_relative "game/npc/npc.rb"
240
+ require_relative "game/combat/battle.rb"
241
+ require_relative "save.rb"
242
+ require_relative "load.rb"