summaryrefslogtreecommitdiffhomepage
path: root/samples/99_genre_arcade/flappy_dragon
diff options
context:
space:
mode:
authorAmir Rajan <[email protected]>2020-09-11 02:02:01 -0500
committerAmir Rajan <[email protected]>2020-09-11 02:02:57 -0500
commit33ec37b141e896b47ed642923fd33b0c658ae9fb (patch)
treea40d3e5d41beeb06508200078f6f26b0ee57d6a4 /samples/99_genre_arcade/flappy_dragon
parent958cf43779d2bf528869e80511c4c4f2a433b2db (diff)
downloaddragonruby-game-toolkit-contrib-33ec37b141e896b47ed642923fd33b0c658ae9fb.tar.gz
dragonruby-game-toolkit-contrib-33ec37b141e896b47ed642923fd33b0c658ae9fb.zip
synced samples
Diffstat (limited to 'samples/99_genre_arcade/flappy_dragon')
-rw-r--r--samples/99_genre_arcade/flappy_dragon/CREDITS.txt3
-rw-r--r--samples/99_genre_arcade/flappy_dragon/app/main.rb360
-rw-r--r--samples/99_genre_arcade/flappy_dragon/license-for-sample.txt9
-rw-r--r--samples/99_genre_arcade/flappy_dragon/metadata/game_metadata.txt6
-rw-r--r--samples/99_genre_arcade/flappy_dragon/replay.txt957
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sounds/flappy-song.oggbin0 -> 913845 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sounds/fly-sound.wavbin0 -> 352812 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sounds/hit-sound.wavbin0 -> 352812 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/background.pngbin0 -> 84902 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/dragon_die.pngbin0 -> 2927 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly1.pngbin0 -> 12896 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly2.pngbin0 -> 2964 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly3.pngbin0 -> 3047 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly4.pngbin0 -> 2655 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly5.pngbin0 -> 2725 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly6.pngbin0 -> 2655 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/parallax_back.pngbin0 -> 13968 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/parallax_front.pngbin0 -> 14778 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/parallax_middle.pngbin0 -> 16046 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/wall.pngbin0 -> 70729 bytes
-rw-r--r--samples/99_genre_arcade/flappy_dragon/sprites/wallbottom.pngbin0 -> 73050 bytes
21 files changed, 1335 insertions, 0 deletions
diff --git a/samples/99_genre_arcade/flappy_dragon/CREDITS.txt b/samples/99_genre_arcade/flappy_dragon/CREDITS.txt
new file mode 100644
index 0000000..e02ebbd
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/CREDITS.txt
@@ -0,0 +1,3 @@
+code: Amir Rajan, https://twitter.com/amirrajan
+graphics and audio: Nick Culbertson, https://twitter.com/MobyPixel
+
diff --git a/samples/99_genre_arcade/flappy_dragon/app/main.rb b/samples/99_genre_arcade/flappy_dragon/app/main.rb
new file mode 100644
index 0000000..56ce3ec
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/app/main.rb
@@ -0,0 +1,360 @@
+class FlappyDragon
+ attr_accessor :grid, :inputs, :state, :outputs
+
+ def tick
+ defaults
+ render
+ calc
+ process_inputs
+ end
+
+ def defaults
+ state.flap_power = 11
+ state.gravity = 0.9
+ state.ceiling = 600
+ state.ceiling_flap_power = 6
+ state.wall_countdown_length = 100
+ state.wall_gap_size = 100
+ state.wall_countdown ||= 0
+ state.hi_score ||= 0
+ state.score ||= 0
+ state.walls ||= []
+ state.x ||= 50
+ state.y ||= 500
+ state.dy ||= 0
+ state.scene ||= :menu
+ state.scene_at ||= 0
+ state.difficulty ||= :normal
+ state.new_difficulty ||= :normal
+ state.countdown ||= 4.seconds
+ state.flash_at ||= 0
+ end
+
+ def render
+ outputs.sounds << "sounds/flappy-song.ogg" if state.tick_count == 1
+ render_score
+ render_menu
+ render_game
+ end
+
+ def render_score
+ outputs.primitives << [10, 710, "HI SCORE: #{state.hi_score}", large_white_typeset].label
+ outputs.primitives << [10, 680, "SCORE: #{state.score}", large_white_typeset].label
+ outputs.primitives << [10, 650, "DIFFICULTY: #{state.difficulty.upcase}", large_white_typeset].label
+ end
+
+ def render_menu
+ return unless state.scene == :menu
+ render_overlay
+
+ outputs.labels << [640, 700, "Flappy Dragon", 50, 1, 255, 255, 255]
+ outputs.labels << [640, 500, "Instructions: Press Spacebar to flap. Don't die.", 4, 1, 255, 255, 255]
+ outputs.labels << [430, 430, "[Tab] Change difficulty", 4, 0, 255, 255, 255]
+ outputs.labels << [430, 400, "[Enter] Start at New Difficulty ", 4, 0, 255, 255, 255]
+ outputs.labels << [430, 370, "[Escape] Cancel/Resume ", 4, 0, 255, 255, 255]
+ outputs.labels << [640, 300, "(mouse, touch, and game controllers work, too!) ", 4, 1, 255, 255, 255]
+ outputs.labels << [640, 200, "Difficulty: #{state.new_difficulty.capitalize}", 4, 1, 255, 255, 255]
+
+ outputs.labels << [10, 100, "Code: @amirrajan", 255, 255, 255]
+ outputs.labels << [10, 80, "Art: @mobypixel", 255, 255, 255]
+ outputs.labels << [10, 60, "Music: @mobypixel", 255, 255, 255]
+ outputs.labels << [10, 40, "Engine: DragonRuby GTK", 255, 255, 255]
+ end
+
+ def render_overlay
+ outputs.primitives << [grid.rect.scale_rect(1.1, 0, 0), 0, 0, 0, 230].solid
+ end
+
+ def render_game
+ render_game_over
+ render_background
+ render_walls
+ render_dragon
+ render_flash
+ end
+
+ def render_game_over
+ return unless state.scene == :game
+ outputs.labels << [638, 358, score_text, 20, 1]
+ outputs.labels << [635, 360, score_text, 20, 1, 255, 255, 255]
+ outputs.labels << [638, 428, countdown_text, 20, 1]
+ outputs.labels << [635, 430, countdown_text, 20, 1, 255, 255, 255]
+ end
+
+ def render_background
+ outputs.sprites << [0, 0, 1280, 720, 'sprites/background.png']
+
+ scroll_point_at = state.tick_count
+ scroll_point_at = state.scene_at if state.scene == :menu
+ scroll_point_at = state.death_at if state.countdown > 0
+ scroll_point_at ||= 0
+
+ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_back.png', 0.25)
+ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_middle.png', 0.50)
+ outputs.sprites << scrolling_background(scroll_point_at, 'sprites/parallax_front.png', 1.00, -80)
+ end
+
+ def render_walls
+ state.walls.each do |w|
+ w.sprites = [
+ [w.x, w.bottom_height - 720, 100, 720, 'sprites/wall.png', 180],
+ [w.x, w.top_y, 100, 720, 'sprites/wallbottom.png', 0]
+ ]
+ end
+ outputs.sprites << state.walls.map(&:sprites)
+ end
+
+ def render_dragon
+ state.show_death = true if state.countdown == 3.seconds
+
+ render_debug_hitbox false
+
+ if state.show_death == false || !state.death_at
+ animation_index = state.flapped_at.frame_index 6, 2, false if state.flapped_at
+ sprite_name = "sprites/dragon_fly#{animation_index.or(0) + 1}.png"
+ state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]
+ else
+ sprite_name = "sprites/dragon_die.png"
+ state.dragon_sprite = [state.x, state.y, 100, 80, sprite_name, state.dy * 1.2]
+ sprite_changed_elapsed = state.death_at.elapsed_time - 1.seconds
+ state.dragon_sprite.angle += (sprite_changed_elapsed ** 1.3) * state.death_fall_direction * -1
+ state.dragon_sprite.x += (sprite_changed_elapsed ** 1.2) * state.death_fall_direction
+ state.dragon_sprite.y += (sprite_changed_elapsed * 14 - sprite_changed_elapsed ** 1.6)
+ end
+
+ outputs.sprites << state.dragon_sprite
+ end
+
+ def render_debug_hitbox show
+ return unless show
+ outputs.borders << [dragon_collision_box.rect, 255, 0, 0] if state.dragon_sprite
+ outputs.borders << state.walls.flat_map do |w|
+ w.sprites.map { |s| [s.rect, 255, 0, 0] }
+ end
+ end
+
+ def render_flash
+ return unless state.flash_at
+
+ outputs.primitives << [grid.rect,
+ white,
+ 255 * state.flash_at.ease(20, :flip)].solid
+
+ state.flash_at = 0 if state.flash_at.elapsed_time > 20
+ end
+
+ def calc
+ return unless state.scene == :game
+ reset_game if state.countdown == 1
+ state.countdown -= 1 and return if state.countdown > 0
+ calc_walls
+ calc_flap
+ calc_game_over
+ end
+
+ def calc_walls
+ state.walls.each { |w| w.x -= 8 }
+
+ walls_count_before_removal = state.walls.length
+
+ state.walls.reject! { |w| w.x < -100 }
+
+ state.score += 1 if state.walls.count < walls_count_before_removal
+
+ state.wall_countdown -= 1 and return if state.wall_countdown > 0
+
+ state.walls << state.new_entity(:wall) do |w|
+ w.x = grid.right
+ w.opening = grid.top
+ .randomize(:ratio)
+ .greater(200)
+ .lesser(520)
+ w.bottom_height = w.opening - state.wall_gap_size
+ w.top_y = w.opening + state.wall_gap_size
+ end
+
+ state.wall_countdown = state.wall_countdown_length
+ end
+
+ def calc_flap
+ state.y += state.dy
+ state.dy = state.dy.lesser state.flap_power
+ state.dy -= state.gravity
+ return if state.y < state.ceiling
+ state.y = state.ceiling
+ state.dy = state.dy.lesser state.ceiling_flap_power
+ end
+
+ def calc_game_over
+ return unless game_over?
+
+ state.death_at = state.tick_count
+ state.death_from = state.walls.first
+ state.death_fall_direction = -1
+ state.death_fall_direction = 1 if state.x > state.death_from.x
+ outputs.sounds << "sounds/hit-sound.wav"
+ begin_countdown
+ end
+
+ def process_inputs
+ process_inputs_menu
+ process_inputs_game
+ end
+
+ def process_inputs_menu
+ return unless state.scene == :menu
+
+ changediff = inputs.keyboard.key_down.tab || inputs.controller_one.key_down.select
+ if inputs.mouse.click
+ p = inputs.mouse.click.point
+ if (p.y >= 165) && (p.y < 200) && (p.x >= 500) && (p.x < 800)
+ changediff = true
+ end
+ end
+
+ if changediff
+ case state.new_difficulty
+ when :easy
+ state.new_difficulty = :normal
+ when :normal
+ state.new_difficulty = :hard
+ when :hard
+ state.new_difficulty = :flappy
+ when :flappy
+ state.new_difficulty = :easy
+ end
+ end
+
+ if inputs.keyboard.key_down.enter || inputs.controller_one.key_down.start || inputs.controller_one.key_down.a
+ state.difficulty = state.new_difficulty
+ change_to_scene :game
+ reset_game false
+ state.hi_score = 0
+ begin_countdown
+ end
+
+ if inputs.keyboard.key_down.escape || (inputs.mouse.click && !changediff) || inputs.controller_one.key_down.b
+ state.new_difficulty = state.difficulty
+ change_to_scene :game
+ end
+ end
+
+ def process_inputs_game
+ return unless state.scene == :game
+
+ clicked_menu = false
+ if inputs.mouse.click
+ p = inputs.mouse.click.point
+ clicked_menu = (p.y >= 620) && (p.x < 275)
+ end
+
+ if clicked_menu || inputs.keyboard.key_down.escape || inputs.keyboard.key_down.enter || inputs.controller_one.key_down.start
+ change_to_scene :menu
+ elsif (inputs.mouse.down || inputs.mouse.click || inputs.keyboard.key_down.space || inputs.controller_one.key_down.a) && state.countdown == 0
+ state.dy = 0
+ state.dy += state.flap_power
+ state.flapped_at = state.tick_count
+ outputs.sounds << "sounds/fly-sound.wav"
+ end
+ end
+
+ def scrolling_background at, path, rate, y = 0
+ [
+ [ 0 - at.*(rate) % 1440, y, 1440, 720, path],
+ [1440 - at.*(rate) % 1440, y, 1440, 720, path]
+ ]
+ end
+
+ def white
+ [255, 255, 255]
+ end
+
+ def large_white_typeset
+ [5, 0, 255, 255, 255]
+ end
+
+ def at_beginning?
+ state.walls.count == 0
+ end
+
+ def dragon_collision_box
+ state.dragon_sprite
+ .scale_rect(1.0 - collision_forgiveness, 0.5, 0.5)
+ .rect_shift_right(10)
+ .rect_shift_up(state.dy * 2)
+ end
+
+ def game_over?
+ return true if state.y <= 0.-(500 * collision_forgiveness) && !at_beginning?
+
+ state.walls
+ .flat_map { |w| w.sprites }
+ .any? do |s|
+ s.intersect_rect?(dragon_collision_box)
+ end
+ end
+
+ def collision_forgiveness
+ case state.difficulty
+ when :easy
+ 0.9
+ when :normal
+ 0.7
+ when :hard
+ 0.5
+ when :flappy
+ 0.3
+ else
+ 0.9
+ end
+ end
+
+ def countdown_text
+ state.countdown ||= -1
+ return "" if state.countdown == 0
+ return "GO!" if state.countdown.idiv(60) == 0
+ return "GAME OVER" if state.death_at
+ return "READY?"
+ end
+
+ def begin_countdown
+ state.countdown = 4.seconds
+ end
+
+ def score_text
+ return "" unless state.countdown > 1.seconds
+ return "" unless state.death_at
+ return "SCORE: 0 (LOL)" if state.score == 0
+ return "HI SCORE: #{state.score}" if state.score == state.hi_score
+ return "SCORE: #{state.score}"
+ end
+
+ def reset_game set_flash = true
+ state.flash_at = state.tick_count if set_flash
+ state.walls = []
+ state.y = 500
+ state.dy = 0
+ state.hi_score = state.hi_score.greater(state.score)
+ state.score = 0
+ state.wall_countdown = state.wall_countdown_length.fdiv(2)
+ state.show_death = false
+ state.death_at = nil
+ end
+
+ def change_to_scene scene
+ state.scene = scene
+ state.scene_at = state.tick_count
+ inputs.keyboard.clear
+ inputs.controller_one.clear
+ end
+end
+
+$flappy_dragon = FlappyDragon.new
+
+def tick args
+ $flappy_dragon.grid = args.grid
+ $flappy_dragon.inputs = args.inputs
+ $flappy_dragon.state = args.state
+ $flappy_dragon.outputs = args.outputs
+ $flappy_dragon.tick
+end
diff --git a/samples/99_genre_arcade/flappy_dragon/license-for-sample.txt b/samples/99_genre_arcade/flappy_dragon/license-for-sample.txt
new file mode 100644
index 0000000..c25563f
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/license-for-sample.txt
@@ -0,0 +1,9 @@
+Copyright 2019 DragonRuby LLC (code), Nick Culbertson @mobypixel (art/music)
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/samples/99_genre_arcade/flappy_dragon/metadata/game_metadata.txt b/samples/99_genre_arcade/flappy_dragon/metadata/game_metadata.txt
new file mode 100644
index 0000000..022ab17
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/metadata/game_metadata.txt
@@ -0,0 +1,6 @@
+devid=dragonruby
+devtitle=DragonRuby LLC
+gameid=flappydragon
+gametitle=Flappy Dragon
+version=1.3
+icon=sprites/dragon_fly1.png
diff --git a/samples/99_genre_arcade/flappy_dragon/replay.txt b/samples/99_genre_arcade/flappy_dragon/replay.txt
new file mode 100644
index 0000000..3640a47
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/replay.txt
@@ -0,0 +1,957 @@
+replay_version 2.0
+stopped_at 2687
+seed 100
+recorded_at Wed Oct 30 01:03:33 2019
+[:mouse_move, 230, 226, 2, 1, 1]
+[:mouse_move, 242, 232, 2, 2, 2]
+[:mouse_move, 243, 232, 2, 3, 4]
+[:mouse_move, 245, 233, 2, 4, 6]
+[:mouse_move, 247, 233, 2, 5, 7]
+[:mouse_move, 248, 234, 2, 6, 39]
+[:mouse_move, 250, 236, 2, 7, 40]
+[:mouse_move, 252, 240, 2, 8, 41]
+[:mouse_move, 256, 244, 2, 9, 42]
+[:mouse_move, 262, 248, 2, 10, 43]
+[:mouse_move, 266, 250, 2, 11, 44]
+[:mouse_move, 268, 252, 2, 12, 45]
+[:mouse_move, 269, 252, 2, 13, 48]
+[:mouse_move, 269, 253, 2, 14, 52]
+[:mouse_move, 272, 257, 2, 15, 53]
+[:mouse_move, 275, 262, 2, 16, 54]
+[:mouse_move, 278, 268, 2, 17, 55]
+[:mouse_move, 281, 274, 2, 18, 56]
+[:mouse_move, 288, 280, 2, 19, 57]
+[:mouse_move, 296, 286, 2, 20, 58]
+[:mouse_move, 308, 294, 2, 21, 59]
+[:mouse_move, 327, 302, 2, 22, 60]
+[:mouse_move, 353, 310, 2, 23, 61]
+[:mouse_move, 375, 315, 2, 24, 62]
+[:mouse_move, 394, 317, 2, 25, 63]
+[:mouse_move, 406, 317, 2, 26, 64]
+[:mouse_move, 413, 317, 2, 27, 65]
+[:mouse_move, 418, 315, 2, 28, 66]
+[:mouse_move, 419, 314, 2, 29, 67]
+[:mouse_move, 419, 313, 2, 30, 68]
+[:mouse_move, 418, 311, 2, 31, 69]
+[:mouse_move, 417, 308, 2, 32, 70]
+[:mouse_move, 416, 306, 2, 33, 71]
+[:mouse_move, 414, 306, 2, 34, 72]
+[:mouse_move, 414, 305, 2, 35, 73]
+[:mouse_move, 413, 305, 2, 36, 76]
+[:mouse_move, 413, 306, 2, 37, 80]
+[:mouse_move, 413, 307, 2, 38, 83]
+[:mouse_move, 413, 308, 2, 39, 84]
+[:mouse_move, 414, 309, 2, 40, 85]
+[:mouse_move, 414, 310, 2, 41, 86]
+[:mouse_move, 414, 311, 2, 42, 87]
+[:mouse_move, 413, 312, 2, 43, 88]
+[:mouse_move, 412, 313, 2, 44, 90]
+[:mouse_move, 413, 312, 2, 45, 94]
+[:mouse_move, 416, 310, 2, 46, 95]
+[:mouse_move, 419, 307, 2, 47, 96]
+[:mouse_move, 421, 305, 2, 48, 97]
+[:mouse_move, 422, 305, 2, 49, 98]
+[:mouse_move, 421, 305, 2, 50, 101]
+[:mouse_move, 421, 306, 2, 51, 104]
+[:mouse_move, 421, 307, 2, 52, 105]
+[:mouse_move, 420, 307, 2, 53, 106]
+[:mouse_move, 420, 308, 2, 54, 107]
+[:mouse_move, 419, 309, 2, 55, 108]
+[:mouse_move, 418, 309, 2, 56, 109]
+[:mouse_move, 416, 311, 2, 57, 110]
+[:mouse_move, 411, 312, 2, 58, 111]
+[:mouse_move, 407, 314, 2, 59, 112]
+[:mouse_move, 404, 315, 2, 60, 113]
+[:mouse_move, 400, 317, 2, 61, 114]
+[:mouse_move, 397, 318, 2, 62, 115]
+[:mouse_move, 395, 320, 2, 63, 116]
+[:mouse_move, 395, 321, 2, 64, 117]
+[:mouse_move, 395, 322, 2, 65, 120]
+[:mouse_move, 397, 323, 2, 66, 121]
+[:mouse_move, 401, 325, 2, 67, 122]
+[:mouse_move, 405, 326, 2, 68, 123]
+[:mouse_move, 410, 326, 2, 69, 124]
+[:mouse_move, 416, 327, 2, 70, 125]
+[:mouse_move, 421, 327, 2, 71, 126]
+[:mouse_move, 426, 328, 2, 72, 127]
+[:mouse_move, 430, 328, 2, 73, 128]
+[:mouse_move, 436, 328, 2, 74, 129]
+[:mouse_move, 441, 327, 2, 75, 130]
+[:mouse_move, 448, 327, 2, 76, 131]
+[:mouse_move, 454, 326, 2, 77, 132]
+[:mouse_move, 462, 326, 2, 78, 133]
+[:mouse_move, 471, 326, 2, 79, 134]
+[:mouse_move, 482, 327, 2, 80, 135]
+[:mouse_move, 496, 328, 2, 81, 136]
+[:mouse_move, 507, 329, 2, 82, 137]
+[:mouse_move, 519, 329, 2, 83, 138]
+[:mouse_move, 530, 329, 2, 84, 139]
+[:mouse_move, 540, 329, 2, 85, 140]
+[:mouse_move, 551, 330, 2, 86, 141]
+[:mouse_move, 561, 330, 2, 87, 142]
+[:mouse_move, 567, 330, 2, 88, 143]
+[:mouse_move, 573, 330, 2, 89, 144]
+[:mouse_move, 578, 329, 2, 90, 145]
+[:mouse_move, 582, 329, 2, 91, 146]
+[:mouse_move, 587, 329, 2, 92, 147]
+[:mouse_move, 593, 328, 2, 93, 148]
+[:mouse_move, 599, 328, 2, 94, 149]
+[:mouse_move, 605, 327, 2, 95, 150]
+[:mouse_move, 613, 327, 2, 96, 151]
+[:mouse_move, 621, 327, 2, 97, 152]
+[:mouse_move, 632, 327, 2, 98, 153]
+[:mouse_move, 645, 328, 2, 99, 154]
+[:mouse_move, 658, 328, 2, 100, 155]
+[:mouse_move, 669, 328, 2, 101, 156]
+[:mouse_move, 685, 328, 2, 102, 157]
+[:mouse_move, 702, 328, 2, 103, 158]
+[:mouse_move, 721, 328, 2, 104, 159]
+[:mouse_move, 741, 328, 2, 105, 160]
+[:mouse_move, 766, 327, 2, 106, 161]
+[:mouse_move, 790, 326, 2, 107, 162]
+[:mouse_move, 811, 325, 2, 108, 163]
+[:mouse_move, 827, 323, 2, 109, 164]
+[:mouse_move, 835, 321, 2, 110, 165]
+[:mouse_move, 838, 318, 2, 111, 166]
+[:mouse_move, 839, 317, 2, 112, 167]
+[:mouse_move, 839, 316, 2, 113, 168]
+[:mouse_move, 839, 315, 2, 114, 171]
+[:mouse_move, 838, 316, 2, 115, 180]
+[:mouse_move, 837, 316, 2, 116, 181]
+[:mouse_move, 835, 317, 2, 117, 215]
+[:mouse_move, 830, 318, 2, 118, 216]
+[:mouse_move, 821, 321, 2, 119, 217]
+[:mouse_move, 796, 324, 2, 120, 218]
+[:mouse_move, 772, 328, 2, 121, 219]
+[:mouse_move, 750, 331, 2, 122, 220]
+[:mouse_move, 730, 332, 2, 123, 221]
+[:mouse_move, 714, 333, 2, 124, 222]
+[:mouse_move, 699, 333, 2, 125, 223]
+[:mouse_move, 686, 331, 2, 126, 224]
+[:mouse_move, 676, 330, 2, 127, 225]
+[:mouse_move, 667, 330, 2, 128, 226]
+[:mouse_move, 659, 330, 2, 129, 227]
+[:mouse_move, 650, 330, 2, 130, 228]
+[:mouse_move, 640, 330, 2, 131, 229]
+[:mouse_move, 630, 329, 2, 132, 230]
+[:mouse_move, 620, 329, 2, 133, 231]
+[:mouse_move, 610, 330, 2, 134, 232]
+[:mouse_move, 598, 330, 2, 135, 233]
+[:mouse_move, 585, 330, 2, 136, 234]
+[:mouse_move, 571, 330, 2, 137, 235]
+[:mouse_move, 558, 331, 2, 138, 236]
+[:mouse_move, 546, 333, 2, 139, 237]
+[:mouse_move, 533, 334, 2, 140, 238]
+[:mouse_move, 520, 336, 2, 141, 239]
+[:mouse_move, 506, 338, 2, 142, 240]
+[:mouse_move, 497, 340, 2, 143, 241]
+[:mouse_move, 489, 342, 2, 144, 242]
+[:mouse_move, 482, 343, 2, 145, 243]
+[:mouse_move, 476, 344, 2, 146, 244]
+[:mouse_move, 472, 345, 2, 147, 245]
+[:mouse_move, 470, 345, 2, 148, 246]
+[:mouse_move, 469, 346, 2, 149, 248]
+[:mouse_move, 467, 346, 2, 150, 249]
+[:mouse_move, 465, 347, 2, 151, 250]
+[:mouse_move, 461, 347, 2, 152, 251]
+[:mouse_move, 459, 348, 2, 153, 252]
+[:mouse_move, 458, 348, 2, 154, 253]
+[:mouse_move, 457, 348, 2, 155, 254]
+[:mouse_move, 454, 347, 2, 156, 255]
+[:mouse_move, 450, 347, 2, 157, 256]
+[:mouse_move, 443, 347, 2, 158, 257]
+[:mouse_move, 434, 347, 2, 159, 258]
+[:mouse_move, 426, 347, 2, 160, 259]
+[:mouse_move, 422, 347, 2, 161, 260]
+[:mouse_move, 420, 348, 2, 162, 261]
+[:mouse_move, 423, 348, 2, 163, 265]
+[:mouse_move, 430, 349, 2, 164, 266]
+[:mouse_move, 438, 349, 2, 165, 267]
+[:mouse_move, 445, 350, 2, 166, 268]
+[:mouse_move, 453, 350, 2, 167, 269]
+[:mouse_move, 454, 350, 2, 168, 269]
+[:mouse_move, 461, 352, 2, 169, 270]
+[:mouse_move, 470, 352, 2, 170, 271]
+[:mouse_move, 477, 353, 2, 171, 272]
+[:mouse_move, 486, 354, 2, 172, 273]
+[:mouse_move, 499, 354, 2, 173, 274]
+[:mouse_move, 509, 354, 2, 174, 275]
+[:mouse_move, 522, 355, 2, 175, 276]
+[:mouse_move, 532, 355, 2, 176, 277]
+[:mouse_move, 538, 355, 2, 177, 278]
+[:mouse_move, 544, 355, 2, 178, 279]
+[:mouse_move, 549, 356, 2, 179, 280]
+[:mouse_move, 554, 356, 2, 180, 281]
+[:mouse_move, 561, 356, 2, 181, 282]
+[:mouse_move, 568, 356, 2, 182, 283]
+[:mouse_move, 573, 356, 2, 183, 284]
+[:mouse_move, 579, 356, 2, 184, 285]
+[:mouse_move, 586, 357, 2, 185, 286]
+[:mouse_move, 595, 357, 2, 186, 287]
+[:mouse_move, 601, 358, 2, 187, 288]
+[:mouse_move, 612, 358, 2, 188, 289]
+[:mouse_move, 624, 358, 2, 189, 290]
+[:mouse_move, 633, 359, 2, 190, 291]
+[:mouse_move, 645, 359, 2, 191, 292]
+[:mouse_move, 654, 359, 2, 192, 293]
+[:mouse_move, 665, 360, 2, 193, 294]
+[:mouse_move, 676, 360, 2, 194, 295]
+[:mouse_move, 686, 361, 2, 195, 296]
+[:mouse_move, 695, 361, 2, 196, 297]
+[:mouse_move, 705, 362, 2, 197, 298]
+[:mouse_move, 712, 362, 2, 198, 299]
+[:mouse_move, 721, 362, 2, 199, 300]
+[:mouse_move, 728, 362, 2, 200, 301]
+[:mouse_move, 736, 362, 2, 201, 302]
+[:mouse_move, 743, 362, 2, 202, 303]
+[:mouse_move, 750, 362, 2, 203, 304]
+[:mouse_move, 758, 362, 2, 204, 305]
+[:mouse_move, 769, 362, 2, 205, 306]
+[:mouse_move, 779, 362, 2, 206, 307]
+[:mouse_move, 788, 361, 2, 207, 308]
+[:mouse_move, 793, 360, 2, 208, 309]
+[:mouse_move, 796, 360, 2, 209, 310]
+[:mouse_move, 797, 359, 2, 210, 311]
+[:mouse_move, 796, 360, 2, 211, 353]
+[:mouse_move, 793, 362, 2, 212, 354]
+[:mouse_move, 786, 366, 2, 213, 355]
+[:mouse_move, 771, 375, 2, 214, 356]
+[:mouse_move, 750, 389, 2, 215, 357]
+[:mouse_move, 724, 407, 2, 216, 358]
+[:mouse_move, 693, 427, 2, 217, 359]
+[:mouse_move, 662, 445, 2, 218, 360]
+[:mouse_move, 635, 460, 2, 219, 361]
+[:mouse_move, 609, 473, 2, 220, 362]
+[:mouse_move, 590, 483, 2, 221, 363]
+[:mouse_move, 578, 489, 2, 222, 364]
+[:mouse_move, 569, 494, 2, 223, 365]
+[:mouse_move, 563, 497, 2, 224, 366]
+[:mouse_move, 560, 498, 2, 225, 367]
+[:mouse_move, 557, 500, 2, 226, 368]
+[:mouse_move, 554, 501, 2, 227, 369]
+[:mouse_move, 549, 504, 2, 228, 370]
+[:mouse_move, 541, 506, 2, 229, 371]
+[:mouse_move, 534, 509, 2, 230, 372]
+[:mouse_move, 526, 513, 2, 231, 373]
+[:mouse_move, 521, 516, 2, 232, 374]
+[:mouse_move, 516, 519, 2, 233, 375]
+[:mouse_move, 514, 522, 2, 234, 376]
+[:mouse_move, 514, 525, 2, 235, 377]
+[:mouse_move, 516, 531, 2, 236, 378]
+[:mouse_move, 520, 538, 2, 237, 379]
+[:mouse_move, 523, 546, 2, 238, 380]
+[:mouse_move, 524, 553, 2, 239, 381]
+[:mouse_move, 525, 561, 2, 240, 382]
+[:mouse_move, 528, 567, 2, 241, 383]
+[:mouse_move, 532, 573, 2, 242, 384]
+[:mouse_move, 537, 578, 2, 243, 385]
+[:mouse_move, 546, 582, 2, 244, 386]
+[:mouse_move, 561, 585, 2, 245, 387]
+[:mouse_move, 583, 588, 2, 246, 388]
+[:mouse_move, 608, 592, 2, 247, 389]
+[:mouse_move, 637, 594, 2, 248, 390]
+[:mouse_move, 664, 594, 2, 249, 391]
+[:mouse_move, 691, 593, 2, 250, 392]
+[:mouse_move, 712, 589, 2, 251, 393]
+[:mouse_move, 733, 585, 2, 252, 394]
+[:mouse_move, 749, 580, 2, 253, 395]
+[:mouse_move, 762, 574, 2, 254, 396]
+[:mouse_move, 774, 567, 2, 255, 397]
+[:mouse_move, 781, 562, 2, 256, 398]
+[:mouse_move, 788, 555, 2, 257, 399]
+[:mouse_move, 791, 551, 2, 258, 400]
+[:mouse_move, 792, 546, 2, 259, 401]
+[:mouse_move, 791, 539, 2, 260, 402]
+[:mouse_move, 788, 531, 2, 261, 403]
+[:mouse_move, 784, 524, 2, 262, 404]
+[:mouse_move, 777, 519, 2, 263, 405]
+[:mouse_move, 769, 513, 2, 264, 406]
+[:mouse_move, 756, 505, 2, 265, 407]
+[:mouse_move, 737, 497, 2, 266, 408]
+[:mouse_move, 710, 486, 2, 267, 409]
+[:mouse_move, 684, 481, 2, 268, 410]
+[:mouse_move, 665, 480, 2, 269, 411]
+[:mouse_move, 646, 477, 2, 270, 412]
+[:mouse_move, 627, 476, 2, 271, 413]
+[:mouse_move, 605, 474, 2, 272, 414]
+[:mouse_move, 586, 473, 2, 273, 415]
+[:mouse_move, 571, 475, 2, 274, 416]
+[:mouse_move, 560, 478, 2, 275, 417]
+[:mouse_move, 550, 484, 2, 276, 418]
+[:mouse_move, 540, 489, 2, 277, 419]
+[:mouse_move, 532, 496, 2, 278, 420]
+[:mouse_move, 525, 504, 2, 279, 421]
+[:mouse_move, 521, 512, 2, 280, 422]
+[:mouse_move, 520, 521, 2, 281, 423]
+[:mouse_move, 520, 532, 2, 282, 424]
+[:mouse_move, 522, 541, 2, 283, 425]
+[:mouse_move, 524, 549, 2, 284, 426]
+[:mouse_move, 529, 555, 2, 285, 427]
+[:mouse_move, 534, 561, 2, 286, 428]
+[:mouse_move, 541, 568, 2, 287, 429]
+[:mouse_move, 555, 576, 2, 288, 430]
+[:mouse_move, 572, 583, 2, 289, 431]
+[:mouse_move, 596, 588, 2, 290, 432]
+[:mouse_move, 628, 595, 2, 291, 433]
+[:mouse_move, 663, 598, 2, 292, 434]
+[:mouse_move, 698, 600, 2, 293, 435]
+[:mouse_move, 730, 599, 2, 294, 436]
+[:mouse_move, 762, 598, 2, 295, 437]
+[:mouse_move, 787, 596, 2, 296, 438]
+[:mouse_move, 806, 592, 2, 297, 439]
+[:mouse_move, 818, 588, 2, 298, 440]
+[:mouse_move, 824, 584, 2, 299, 441]
+[:mouse_move, 826, 581, 2, 300, 442]
+[:mouse_move, 827, 578, 2, 301, 443]
+[:mouse_move, 827, 576, 2, 302, 444]
+[:mouse_move, 827, 573, 2, 303, 445]
+[:mouse_move, 827, 572, 2, 304, 446]
+[:mouse_move, 827, 571, 2, 305, 448]
+[:mouse_move, 826, 570, 2, 306, 486]
+[:mouse_move, 826, 569, 2, 307, 487]
+[:key_down_raw, 9, 0, 2, 308, 487]
+[:mouse_move, 826, 568, 2, 309, 488]
+[:mouse_move, 825, 568, 2, 310, 489]
+[:mouse_move, 825, 567, 2, 311, 490]
+[:key_up_raw, 9, 0, 2, 312, 494]
+[:key_down_raw, 9, 0, 2, 313, 515]
+[:key_up_raw, 9, 0, 2, 314, 525]
+[:mouse_move, 824, 567, 2, 315, 535]
+[:mouse_move, 821, 567, 2, 316, 536]
+[:mouse_move, 816, 567, 2, 317, 537]
+[:mouse_move, 808, 568, 2, 318, 538]
+[:mouse_move, 803, 568, 2, 319, 539]
+[:mouse_move, 797, 568, 2, 320, 540]
+[:mouse_move, 792, 567, 2, 321, 541]
+[:mouse_move, 788, 567, 2, 322, 542]
+[:mouse_move, 786, 566, 2, 323, 543]
+[:mouse_move, 785, 565, 2, 324, 544]
+[:mouse_move, 784, 564, 2, 325, 545]
+[:mouse_move, 779, 563, 2, 326, 546]
+[:mouse_move, 774, 562, 2, 327, 547]
+[:mouse_move, 771, 562, 2, 328, 548]
+[:mouse_move, 766, 562, 2, 329, 549]
+[:mouse_move, 761, 562, 2, 330, 550]
+[:mouse_move, 755, 561, 2, 331, 551]
+[:mouse_move, 748, 561, 2, 332, 552]
+[:mouse_move, 740, 560, 2, 333, 553]
+[:mouse_move, 733, 561, 2, 334, 554]
+[:mouse_move, 726, 562, 2, 335, 555]
+[:mouse_move, 720, 562, 2, 336, 556]
+[:mouse_move, 713, 563, 2, 337, 557]
+[:mouse_move, 707, 565, 2, 338, 558]
+[:mouse_move, 702, 566, 2, 339, 559]
+[:mouse_move, 701, 566, 2, 340, 560]
+[:mouse_move, 702, 566, 2, 341, 561]
+[:mouse_move, 706, 566, 2, 342, 562]
+[:mouse_move, 711, 565, 2, 343, 563]
+[:mouse_move, 722, 564, 2, 344, 564]
+[:mouse_move, 737, 562, 2, 345, 565]
+[:mouse_move, 747, 560, 2, 346, 566]
+[:mouse_move, 749, 560, 2, 347, 567]
+[:mouse_move, 745, 560, 2, 348, 569]
+[:mouse_move, 724, 557, 2, 349, 570]
+[:mouse_move, 697, 557, 2, 350, 571]
+[:mouse_move, 678, 558, 2, 351, 572]
+[:mouse_move, 663, 561, 2, 352, 573]
+[:mouse_move, 660, 561, 2, 353, 574]
+[:mouse_move, 661, 560, 2, 354, 575]
+[:mouse_move, 665, 556, 2, 355, 576]
+[:mouse_move, 674, 554, 2, 356, 577]
+[:mouse_move, 693, 551, 2, 357, 578]
+[:mouse_move, 723, 548, 2, 358, 579]
+[:mouse_move, 742, 546, 2, 359, 580]
+[:mouse_move, 746, 546, 2, 360, 581]
+[:mouse_move, 742, 547, 2, 361, 583]
+[:mouse_move, 724, 548, 2, 362, 584]
+[:mouse_move, 702, 552, 2, 363, 585]
+[:mouse_move, 684, 556, 2, 364, 586]
+[:mouse_move, 673, 558, 2, 365, 587]
+[:mouse_move, 668, 560, 2, 366, 588]
+[:mouse_move, 669, 560, 2, 367, 590]
+[:mouse_move, 678, 560, 2, 368, 591]
+[:mouse_move, 696, 560, 2, 369, 592]
+[:mouse_move, 714, 560, 2, 370, 593]
+[:mouse_move, 729, 558, 2, 371, 594]
+[:mouse_move, 736, 558, 2, 372, 595]
+[:mouse_move, 732, 558, 2, 373, 597]
+[:mouse_move, 718, 560, 2, 374, 598]
+[:mouse_move, 701, 563, 2, 375, 599]
+[:mouse_move, 685, 566, 2, 376, 600]
+[:mouse_move, 676, 569, 2, 377, 601]
+[:mouse_move, 674, 569, 2, 378, 602]
+[:mouse_move, 680, 569, 2, 379, 604]
+[:mouse_move, 696, 567, 2, 380, 605]
+[:mouse_move, 712, 564, 2, 381, 606]
+[:mouse_move, 723, 562, 2, 382, 607]
+[:mouse_move, 727, 561, 2, 383, 608]
+[:mouse_move, 724, 561, 2, 384, 610]
+[:mouse_move, 708, 563, 2, 385, 611]
+[:mouse_move, 693, 565, 2, 386, 612]
+[:mouse_move, 686, 567, 2, 387, 613]
+[:mouse_move, 690, 565, 2, 388, 616]
+[:mouse_move, 695, 563, 2, 389, 617]
+[:mouse_move, 696, 563, 2, 390, 618]
+[:mouse_move, 693, 564, 2, 391, 626]
+[:mouse_move, 689, 565, 2, 392, 627]
+[:mouse_move, 685, 566, 2, 393, 628]
+[:mouse_move, 683, 567, 2, 394, 629]
+[:mouse_move, 683, 566, 2, 395, 633]
+[:mouse_move, 684, 566, 2, 396, 634]
+[:key_down_raw, 13, 0, 2, 397, 730]
+[:key_up_raw, 13, 0, 2, 398, 735]
+[:mouse_move, 681, 567, 2, 399, 888]
+[:mouse_move, 675, 566, 2, 400, 889]
+[:mouse_move, 660, 562, 2, 401, 890]
+[:mouse_move, 641, 554, 2, 402, 891]
+[:mouse_move, 600, 541, 2, 403, 892]
+[:mouse_move, 568, 532, 2, 404, 893]
+[:mouse_move, 565, 532, 2, 405, 894]
+[:mouse_move, 579, 533, 2, 406, 895]
+[:mouse_move, 597, 531, 2, 407, 896]
+[:mouse_move, 612, 530, 2, 408, 897]
+[:mouse_move, 616, 529, 2, 409, 898]
+[:mouse_move, 613, 529, 2, 410, 904]
+[:mouse_move, 602, 531, 2, 411, 905]
+[:mouse_move, 536, 530, 2, 412, 906]
+[:mouse_move, 422, 494, 2, 413, 907]
+[:mouse_move, 364, 443, 2, 414, 908]
+[:mouse_move, 350, 420, 2, 415, 909]
+[:mouse_move, 340, 404, 2, 416, 910]
+[:mouse_move, 318, 384, 2, 417, 911]
+[:mouse_move, 298, 366, 2, 418, 912]
+[:mouse_move, 289, 357, 2, 419, 913]
+[:mouse_move, 289, 356, 2, 420, 913]
+[:mouse_move, 285, 352, 2, 421, 914]
+[:mouse_move, 283, 345, 2, 422, 915]
+[:mouse_move, 282, 339, 2, 423, 916]
+[:mouse_move, 279, 328, 2, 424, 917]
+[:mouse_move, 275, 311, 2, 425, 918]
+[:mouse_move, 268, 294, 2, 426, 919]
+[:mouse_move, 263, 285, 2, 427, 920]
+[:mouse_move, 253, 277, 2, 428, 921]
+[:mouse_move, 229, 258, 2, 429, 922]
+[:mouse_move, 183, 222, 2, 430, 923]
+[:mouse_move, 144, 196, 2, 431, 924]
+[:mouse_move, 119, 178, 2, 432, 925]
+[:mouse_move, 101, 165, 2, 433, 926]
+[:mouse_move, 86, 154, 2, 434, 927]
+[:mouse_move, 78, 147, 2, 435, 928]
+[:mouse_move, 74, 142, 2, 436, 929]
+[:mouse_move, 71, 138, 2, 437, 930]
+[:mouse_move, 67, 133, 2, 438, 931]
+[:mouse_move, 60, 130, 2, 439, 932]
+[:mouse_move, 56, 125, 2, 440, 933]
+[:mouse_move, 55, 124, 2, 441, 934]
+[:mouse_move, 54, 124, 2, 442, 941]
+[:mouse_move, 51, 122, 2, 443, 942]
+[:mouse_move, 40, 117, 2, 444, 943]
+[:mouse_move, 32, 112, 2, 445, 944]
+[:mouse_move, 26, 108, 2, 446, 945]
+[:mouse_move, 25, 108, 2, 447, 946]
+[:mouse_move, 25, 107, 2, 448, 949]
+[:mouse_move, 27, 108, 2, 449, 952]
+[:mouse_move, 34, 110, 2, 450, 953]
+[:mouse_move, 43, 112, 2, 451, 954]
+[:mouse_move, 53, 113, 2, 452, 955]
+[:mouse_move, 65, 114, 2, 453, 956]
+[:mouse_move, 81, 114, 2, 454, 957]
+[:mouse_move, 96, 115, 2, 455, 958]
+[:mouse_move, 112, 116, 2, 456, 959]
+[:mouse_move, 118, 117, 2, 457, 960]
+[:mouse_move, 123, 117, 2, 458, 961]
+[:mouse_move, 130, 117, 2, 459, 962]
+[:mouse_move, 134, 117, 2, 460, 963]
+[:mouse_move, 138, 117, 2, 461, 964]
+[:mouse_move, 142, 117, 2, 462, 965]
+[:mouse_move, 148, 117, 2, 463, 966]
+[:mouse_move, 151, 117, 2, 464, 967]
+[:mouse_move, 155, 116, 2, 465, 968]
+[:mouse_move, 157, 115, 2, 466, 969]
+[:mouse_move, 161, 115, 2, 467, 970]
+[:mouse_move, 163, 114, 2, 468, 971]
+[:mouse_move, 164, 114, 2, 469, 972]
+[:mouse_move, 166, 114, 2, 470, 973]
+[:mouse_move, 168, 114, 2, 471, 974]
+[:mouse_move, 171, 115, 2, 472, 975]
+[:mouse_move, 178, 116, 2, 473, 976]
+[:mouse_move, 188, 117, 2, 474, 977]
+[:mouse_move, 200, 117, 2, 475, 978]
+[:mouse_move, 210, 117, 2, 476, 979]
+[:mouse_move, 217, 117, 2, 477, 980]
+[:mouse_move, 224, 117, 2, 478, 981]
+[:mouse_move, 230, 117, 2, 479, 982]
+[:mouse_move, 233, 116, 2, 480, 983]
+[:mouse_move, 234, 116, 2, 481, 984]
+[:mouse_move, 235, 116, 2, 482, 985]
+[:mouse_move, 234, 116, 2, 483, 994]
+[:key_down_raw, 32, 0, 2, 484, 998]
+[:key_up_raw, 32, 0, 2, 485, 1004]
+[:key_down_raw, 32, 0, 2, 486, 1008]
+[:key_up_raw, 32, 0, 2, 487, 1013]
+[:key_down_raw, 32, 0, 2, 488, 1017]
+[:key_up_raw, 32, 0, 2, 489, 1021]
+[:key_down_raw, 32, 0, 2, 490, 1025]
+[:key_up_raw, 32, 0, 2, 491, 1029]
+[:key_down_raw, 32, 0, 2, 492, 1034]
+[:key_up_raw, 32, 0, 2, 493, 1037]
+[:key_down_raw, 32, 0, 2, 494, 1042]
+[:key_up_raw, 32, 0, 2, 495, 1046]
+[:mouse_move, 244, 118, 2, 496, 1052]
+[:mouse_move, 304, 142, 2, 497, 1053]
+[:mouse_move, 425, 192, 2, 498, 1054]
+[:mouse_move, 494, 240, 2, 499, 1055]
+[:mouse_move, 513, 264, 2, 500, 1056]
+[:mouse_move, 516, 272, 2, 501, 1057]
+[:mouse_move, 520, 279, 2, 502, 1058]
+[:mouse_move, 531, 290, 2, 503, 1059]
+[:mouse_move, 548, 301, 2, 504, 1060]
+[:mouse_move, 567, 311, 2, 505, 1061]
+[:mouse_move, 584, 316, 2, 506, 1062]
+[:mouse_move, 598, 318, 2, 507, 1063]
+[:mouse_move, 605, 318, 2, 508, 1064]
+[:mouse_move, 612, 317, 2, 509, 1065]
+[:mouse_move, 618, 317, 2, 510, 1066]
+[:mouse_move, 625, 317, 2, 511, 1067]
+[:mouse_move, 629, 316, 2, 512, 1068]
+[:mouse_move, 632, 315, 2, 513, 1069]
+[:key_down_raw, 32, 0, 2, 514, 1083]
+[:key_up_raw, 32, 0, 2, 515, 1089]
+[:mouse_move, 633, 316, 2, 516, 1094]
+[:mouse_move, 640, 325, 2, 517, 1095]
+[:mouse_move, 653, 337, 2, 518, 1096]
+[:mouse_move, 679, 349, 2, 519, 1097]
+[:mouse_move, 708, 359, 2, 520, 1098]
+[:mouse_move, 742, 368, 2, 521, 1099]
+[:mouse_move, 771, 374, 2, 522, 1100]
+[:mouse_move, 792, 380, 2, 523, 1101]
+[:mouse_move, 807, 386, 2, 524, 1102]
+[:mouse_move, 818, 389, 2, 525, 1103]
+[:mouse_move, 825, 391, 2, 526, 1104]
+[:mouse_move, 827, 392, 2, 527, 1105]
+[:mouse_move, 828, 392, 2, 528, 1106]
+[:mouse_move, 828, 393, 2, 529, 1108]
+[:mouse_move, 834, 396, 2, 530, 1109]
+[:mouse_move, 839, 402, 2, 531, 1110]
+[:mouse_move, 841, 404, 2, 532, 1111]
+[:key_down_raw, 32, 0, 2, 533, 1112]
+[:key_up_raw, 32, 0, 2, 534, 1117]
+[:key_down_raw, 32, 0, 2, 535, 1136]
+[:key_up_raw, 32, 0, 2, 536, 1141]
+[:key_down_raw, 32, 0, 2, 537, 1150]
+[:key_up_raw, 32, 0, 2, 538, 1156]
+[:key_down_raw, 32, 0, 2, 539, 1161]
+[:key_up_raw, 32, 0, 2, 540, 1165]
+[:key_down_raw, 32, 0, 2, 541, 1188]
+[:key_up_raw, 32, 0, 2, 542, 1195]
+[:key_down_raw, 32, 0, 2, 543, 1216]
+[:key_up_raw, 32, 0, 2, 544, 1222]
+[:key_down_raw, 32, 0, 2, 545, 1242]
+[:key_up_raw, 32, 0, 2, 546, 1248]
+[:key_down_raw, 32, 0, 2, 547, 1255]
+[:key_up_raw, 32, 0, 2, 548, 1260]
+[:key_down_raw, 32, 0, 2, 549, 1264]
+[:key_up_raw, 32, 0, 2, 550, 1267]
+[:key_down_raw, 32, 0, 2, 551, 1283]
+[:key_up_raw, 32, 0, 2, 552, 1290]
+[:key_down_raw, 32, 0, 2, 553, 1329]
+[:key_up_raw, 32, 0, 2, 554, 1336]
+[:key_down_raw, 32, 0, 2, 555, 1349]
+[:key_up_raw, 32, 0, 2, 556, 1354]
+[:key_down_raw, 32, 0, 2, 557, 1359]
+[:key_up_raw, 32, 0, 2, 558, 1363]
+[:key_down_raw, 32, 0, 2, 559, 1387]
+[:key_up_raw, 32, 0, 2, 560, 1393]
+[:key_down_raw, 32, 0, 2, 561, 1416]
+[:key_up_raw, 32, 0, 2, 562, 1422]
+[:key_down_raw, 32, 0, 2, 563, 1428]
+[:key_up_raw, 32, 0, 2, 564, 1431]
+[:key_down_raw, 32, 0, 2, 565, 1436]
+[:key_up_raw, 32, 0, 2, 566, 1440]
+[:key_down_raw, 32, 0, 2, 567, 1445]
+[:key_up_raw, 32, 0, 2, 568, 1448]
+[:key_down_raw, 32, 0, 2, 569, 1472]
+[:key_up_raw, 32, 0, 2, 570, 1481]
+[:key_down_raw, 32, 0, 2, 571, 1504]
+[:key_up_raw, 32, 0, 2, 572, 1509]
+[:key_down_raw, 32, 0, 2, 573, 1531]
+[:key_up_raw, 32, 0, 2, 574, 1537]
+[:key_down_raw, 32, 0, 2, 575, 1555]
+[:key_up_raw, 32, 0, 2, 576, 1559]
+[:key_down_raw, 32, 0, 2, 577, 1565]
+[:key_up_raw, 32, 0, 2, 578, 1569]
+[:key_down_raw, 32, 0, 2, 579, 1590]
+[:key_up_raw, 32, 0, 2, 580, 1594]
+[:key_down_raw, 32, 0, 2, 581, 1600]
+[:key_up_raw, 32, 0, 2, 582, 1604]
+[:key_down_raw, 32, 0, 2, 583, 1609]
+[:key_up_raw, 32, 0, 2, 584, 1612]
+[:key_down_raw, 32, 0, 2, 585, 1617]
+[:key_up_raw, 32, 0, 2, 586, 1621]
+[:key_down_raw, 32, 0, 2, 587, 1653]
+[:key_up_raw, 32, 0, 2, 588, 1658]
+[:key_down_raw, 32, 0, 2, 589, 1669]
+[:key_up_raw, 32, 0, 2, 590, 1674]
+[:key_down_raw, 32, 0, 2, 591, 1701]
+[:key_up_raw, 32, 0, 2, 592, 1706]
+[:key_down_raw, 32, 0, 2, 593, 1712]
+[:key_up_raw, 32, 0, 2, 594, 1716]
+[:key_down_raw, 32, 0, 2, 595, 1722]
+[:key_up_raw, 32, 0, 2, 596, 1725]
+[:key_down_raw, 32, 0, 2, 597, 1730]
+[:key_up_raw, 32, 0, 2, 598, 1733]
+[:key_down_raw, 32, 0, 2, 599, 1738]
+[:key_up_raw, 32, 0, 2, 600, 1743]
+[:key_down_raw, 32, 0, 2, 601, 1769]
+[:key_up_raw, 32, 0, 2, 602, 1775]
+[:key_down_raw, 32, 0, 2, 603, 1790]
+[:key_up_raw, 32, 0, 2, 604, 1795]
+[:key_down_raw, 32, 0, 2, 605, 1835]
+[:key_up_raw, 32, 0, 2, 606, 1841]
+[:key_down_raw, 32, 0, 2, 607, 1850]
+[:key_up_raw, 32, 0, 2, 608, 1856]
+[:key_down_raw, 32, 0, 2, 609, 1877]
+[:key_up_raw, 32, 0, 2, 610, 1884]
+[:key_down_raw, 32, 0, 2, 611, 1904]
+[:key_up_raw, 32, 0, 2, 612, 1908]
+[:key_down_raw, 32, 0, 2, 613, 1935]
+[:key_up_raw, 32, 0, 2, 614, 1940]
+[:key_down_raw, 32, 0, 2, 615, 1950]
+[:key_up_raw, 32, 0, 2, 616, 1956]
+[:key_down_raw, 32, 0, 2, 617, 1962]
+[:key_up_raw, 32, 0, 2, 618, 1966]
+[:key_down_raw, 32, 0, 2, 619, 1993]
+[:key_up_raw, 32, 0, 2, 620, 1999]
+[:mouse_move, 828, 408, 2, 621, 2035]
+[:mouse_move, 797, 419, 2, 622, 2036]
+[:mouse_move, 775, 427, 2, 623, 2037]
+[:mouse_move, 766, 429, 2, 624, 2038]
+[:mouse_move, 763, 430, 2, 625, 2039]
+[:mouse_move, 759, 433, 2, 626, 2040]
+[:mouse_move, 756, 433, 2, 627, 2041]
+[:mouse_move, 752, 433, 2, 628, 2042]
+[:mouse_move, 746, 432, 2, 629, 2043]
+[:mouse_move, 740, 430, 2, 630, 2044]
+[:mouse_move, 728, 429, 2, 631, 2045]
+[:mouse_move, 713, 427, 2, 632, 2046]
+[:mouse_move, 697, 427, 2, 633, 2047]
+[:mouse_move, 685, 429, 2, 634, 2048]
+[:mouse_move, 678, 432, 2, 635, 2049]
+[:mouse_move, 675, 433, 2, 636, 2050]
+[:mouse_move, 673, 433, 2, 637, 2051]
+[:mouse_move, 670, 433, 2, 638, 2052]
+[:mouse_move, 665, 433, 2, 639, 2053]
+[:mouse_move, 659, 432, 2, 640, 2054]
+[:mouse_move, 654, 433, 2, 641, 2055]
+[:mouse_move, 654, 434, 2, 642, 2056]
+[:mouse_move, 659, 440, 2, 643, 2057]
+[:mouse_move, 670, 450, 2, 644, 2058]
+[:mouse_move, 685, 458, 2, 645, 2059]
+[:mouse_move, 708, 462, 2, 646, 2060]
+[:mouse_move, 745, 461, 2, 647, 2061]
+[:mouse_move, 792, 455, 2, 648, 2062]
+[:mouse_move, 827, 443, 2, 649, 2063]
+[:mouse_move, 848, 429, 2, 650, 2064]
+[:mouse_move, 861, 412, 2, 651, 2065]
+[:mouse_move, 868, 393, 2, 652, 2066]
+[:mouse_move, 868, 373, 2, 653, 2067]
+[:mouse_move, 859, 352, 2, 654, 2068]
+[:mouse_move, 844, 334, 2, 655, 2069]
+[:mouse_move, 830, 320, 2, 656, 2070]
+[:mouse_move, 812, 305, 2, 657, 2071]
+[:mouse_move, 787, 288, 2, 658, 2072]
+[:mouse_move, 747, 266, 2, 659, 2073]
+[:mouse_move, 696, 245, 2, 660, 2074]
+[:mouse_move, 653, 236, 2, 661, 2075]
+[:mouse_move, 622, 233, 2, 662, 2076]
+[:mouse_move, 598, 232, 2, 663, 2077]
+[:mouse_move, 576, 231, 2, 664, 2078]
+[:mouse_move, 553, 230, 2, 665, 2079]
+[:mouse_move, 535, 233, 2, 666, 2080]
+[:mouse_move, 519, 238, 2, 667, 2081]
+[:mouse_move, 503, 246, 2, 668, 2082]
+[:mouse_move, 490, 256, 2, 669, 2083]
+[:mouse_move, 482, 265, 2, 670, 2084]
+[:mouse_move, 472, 276, 2, 671, 2085]
+[:mouse_move, 464, 289, 2, 672, 2086]
+[:mouse_move, 459, 302, 2, 673, 2087]
+[:mouse_move, 457, 318, 2, 674, 2088]
+[:mouse_move, 457, 337, 2, 675, 2089]
+[:mouse_move, 461, 354, 2, 676, 2090]
+[:mouse_move, 471, 368, 2, 677, 2091]
+[:mouse_move, 484, 378, 2, 678, 2092]
+[:mouse_move, 504, 389, 2, 679, 2093]
+[:mouse_move, 536, 402, 2, 680, 2094]
+[:mouse_move, 574, 413, 2, 681, 2095]
+[:mouse_move, 613, 424, 2, 682, 2096]
+[:mouse_move, 658, 430, 2, 683, 2097]
+[:mouse_move, 695, 434, 2, 684, 2098]
+[:mouse_move, 722, 435, 2, 685, 2099]
+[:mouse_move, 748, 432, 2, 686, 2100]
+[:mouse_move, 769, 425, 2, 687, 2101]
+[:mouse_move, 784, 417, 2, 688, 2102]
+[:mouse_move, 796, 408, 2, 689, 2103]
+[:mouse_move, 804, 398, 2, 690, 2104]
+[:mouse_move, 808, 385, 2, 691, 2105]
+[:mouse_move, 809, 364, 2, 692, 2106]
+[:mouse_move, 805, 342, 2, 693, 2107]
+[:mouse_move, 798, 326, 2, 694, 2108]
+[:mouse_move, 790, 313, 2, 695, 2109]
+[:mouse_move, 777, 302, 2, 696, 2110]
+[:mouse_move, 756, 288, 2, 697, 2111]
+[:mouse_move, 724, 266, 2, 698, 2112]
+[:mouse_move, 688, 245, 2, 699, 2113]
+[:mouse_move, 656, 234, 2, 700, 2114]
+[:mouse_move, 630, 229, 2, 701, 2115]
+[:mouse_move, 610, 225, 2, 702, 2116]
+[:mouse_move, 592, 221, 2, 703, 2117]
+[:mouse_move, 569, 218, 2, 704, 2118]
+[:mouse_move, 547, 218, 2, 705, 2119]
+[:mouse_move, 532, 224, 2, 706, 2120]
+[:mouse_move, 518, 233, 2, 707, 2121]
+[:mouse_move, 506, 244, 2, 708, 2122]
+[:mouse_move, 494, 257, 2, 709, 2123]
+[:mouse_move, 481, 278, 2, 710, 2124]
+[:mouse_move, 467, 304, 2, 711, 2125]
+[:mouse_move, 462, 322, 2, 712, 2126]
+[:mouse_move, 465, 338, 2, 713, 2127]
+[:mouse_move, 471, 352, 2, 714, 2128]
+[:mouse_move, 483, 365, 2, 715, 2129]
+[:mouse_move, 498, 379, 2, 716, 2130]
+[:mouse_move, 519, 392, 2, 717, 2131]
+[:mouse_move, 550, 404, 2, 718, 2132]
+[:mouse_move, 594, 413, 2, 719, 2133]
+[:mouse_move, 643, 416, 2, 720, 2134]
+[:mouse_move, 686, 410, 2, 721, 2135]
+[:mouse_move, 727, 398, 2, 722, 2136]
+[:mouse_move, 762, 380, 2, 723, 2137]
+[:mouse_move, 786, 358, 2, 724, 2138]
+[:mouse_move, 797, 327, 2, 725, 2139]
+[:mouse_move, 798, 289, 2, 726, 2140]
+[:mouse_move, 790, 258, 2, 727, 2141]
+[:mouse_move, 777, 238, 2, 728, 2142]
+[:mouse_move, 769, 231, 2, 729, 2143]
+[:mouse_move, 762, 229, 2, 730, 2144]
+[:mouse_move, 756, 227, 2, 731, 2145]
+[:mouse_move, 747, 229, 2, 732, 2146]
+[:mouse_move, 741, 233, 2, 733, 2147]
+[:mouse_move, 734, 242, 2, 734, 2148]
+[:mouse_move, 726, 256, 2, 735, 2149]
+[:mouse_move, 716, 278, 2, 736, 2150]
+[:mouse_move, 712, 304, 2, 737, 2151]
+[:mouse_move, 711, 323, 2, 738, 2152]
+[:mouse_move, 712, 336, 2, 739, 2153]
+[:mouse_move, 712, 344, 2, 740, 2154]
+[:mouse_move, 711, 352, 2, 741, 2155]
+[:mouse_move, 708, 356, 2, 742, 2156]
+[:mouse_move, 706, 359, 2, 743, 2157]
+[:mouse_move, 705, 359, 2, 744, 2187]
+[:mouse_move, 704, 360, 2, 745, 2188]
+[:mouse_move, 702, 361, 2, 746, 2189]
+[:mouse_move, 701, 362, 2, 747, 2196]
+[:mouse_move, 698, 363, 2, 748, 2197]
+[:mouse_move, 694, 364, 2, 749, 2198]
+[:mouse_move, 690, 365, 2, 750, 2199]
+[:mouse_move, 685, 368, 2, 751, 2200]
+[:mouse_move, 682, 370, 2, 752, 2201]
+[:mouse_move, 679, 371, 2, 753, 2202]
+[:mouse_move, 679, 370, 2, 754, 2210]
+[:mouse_move, 674, 368, 2, 755, 2211]
+[:mouse_move, 664, 363, 2, 756, 2212]
+[:mouse_move, 654, 361, 2, 757, 2213]
+[:mouse_move, 644, 359, 2, 758, 2214]
+[:mouse_move, 635, 357, 2, 759, 2215]
+[:mouse_move, 629, 356, 2, 760, 2216]
+[:mouse_move, 627, 355, 2, 761, 2217]
+[:mouse_move, 628, 354, 2, 762, 2219]
+[:mouse_move, 630, 354, 2, 763, 2220]
+[:mouse_move, 631, 354, 2, 764, 2221]
+[:mouse_move, 632, 354, 2, 765, 2222]
+[:mouse_move, 633, 354, 2, 766, 2223]
+[:mouse_move, 631, 354, 2, 767, 2234]
+[:mouse_move, 627, 355, 2, 768, 2235]
+[:mouse_move, 621, 356, 2, 769, 2236]
+[:mouse_move, 612, 356, 2, 770, 2237]
+[:mouse_move, 602, 356, 2, 771, 2238]
+[:mouse_move, 598, 356, 2, 772, 2239]
+[:mouse_move, 599, 356, 2, 773, 2244]
+[:mouse_move, 599, 355, 2, 774, 2245]
+[:mouse_move, 600, 355, 2, 775, 2246]
+[:mouse_move, 599, 356, 2, 776, 2250]
+[:key_down_raw, 32, 0, 2, 777, 2258]
+[:key_up_raw, 32, 0, 2, 778, 2263]
+[:key_down_raw, 32, 0, 2, 779, 2268]
+[:mouse_move, 605, 359, 2, 780, 2271]
+[:mouse_move, 622, 365, 2, 781, 2272]
+[:key_up_raw, 32, 0, 2, 782, 2272]
+[:mouse_move, 648, 377, 2, 783, 2273]
+[:mouse_move, 673, 393, 2, 784, 2274]
+[:mouse_move, 689, 406, 2, 785, 2275]
+[:mouse_move, 700, 413, 2, 786, 2276]
+[:mouse_move, 709, 418, 2, 787, 2277]
+[:key_down_raw, 32, 0, 2, 788, 2277]
+[:mouse_move, 711, 419, 2, 789, 2277]
+[:mouse_move, 718, 421, 2, 790, 2278]
+[:mouse_move, 724, 423, 2, 791, 2279]
+[:mouse_move, 728, 425, 2, 792, 2280]
+[:mouse_move, 730, 426, 2, 793, 2281]
+[:key_up_raw, 32, 0, 2, 794, 2281]
+[:key_down_raw, 32, 0, 2, 795, 2286]
+[:mouse_move, 731, 425, 2, 796, 2286]
+[:key_up_raw, 32, 0, 2, 797, 2290]
+[:key_down_raw, 32, 0, 2, 798, 2294]
+[:mouse_move, 732, 425, 2, 799, 2294]
+[:key_up_raw, 32, 0, 2, 800, 2298]
+[:mouse_move, 732, 424, 2, 801, 2298]
+[:key_down_raw, 32, 0, 2, 802, 2302]
+[:key_up_raw, 32, 0, 2, 803, 2306]
+[:key_down_raw, 32, 0, 2, 804, 2311]
+[:key_up_raw, 32, 0, 2, 805, 2315]
+[:key_down_raw, 32, 0, 2, 806, 2347]
+[:key_up_raw, 32, 0, 2, 807, 2352]
+[:key_down_raw, 32, 0, 2, 808, 2374]
+[:key_up_raw, 32, 0, 2, 809, 2379]
+[:key_down_raw, 32, 0, 2, 810, 2386]
+[:key_up_raw, 32, 0, 2, 811, 2389]
+[:key_down_raw, 32, 0, 2, 812, 2395]
+[:mouse_move, 721, 424, 2, 813, 2397]
+[:mouse_move, 706, 425, 2, 814, 2398]
+[:mouse_move, 695, 428, 2, 815, 2399]
+[:key_up_raw, 32, 0, 2, 816, 2399]
+[:mouse_move, 689, 430, 2, 817, 2400]
+[:mouse_move, 684, 433, 2, 818, 2401]
+[:mouse_move, 680, 433, 2, 819, 2402]
+[:mouse_move, 676, 432, 2, 820, 2403]
+[:mouse_move, 670, 429, 2, 821, 2404]
+[:mouse_move, 668, 429, 2, 822, 2405]
+[:key_down_raw, 32, 0, 2, 823, 2405]
+[:mouse_move, 667, 429, 2, 824, 2405]
+[:key_up_raw, 32, 0, 2, 825, 2410]
+[:mouse_move, 668, 428, 2, 826, 2415]
+[:mouse_move, 669, 426, 2, 827, 2416]
+[:mouse_move, 669, 425, 2, 828, 2417]
+[:mouse_move, 669, 424, 2, 829, 2418]
+[:mouse_move, 668, 423, 2, 830, 2419]
+[:mouse_move, 666, 421, 2, 831, 2436]
+[:mouse_move, 664, 421, 2, 832, 2437]
+[:mouse_move, 661, 420, 2, 833, 2438]
+[:mouse_move, 659, 419, 2, 834, 2439]
+[:mouse_move, 657, 418, 2, 835, 2440]
+[:mouse_move, 656, 418, 2, 836, 2441]
+[:mouse_move, 653, 418, 2, 837, 2442]
+[:mouse_move, 652, 418, 2, 838, 2443]
+[:mouse_move, 651, 417, 2, 839, 2444]
+[:mouse_move, 650, 417, 2, 840, 2464]
+[:mouse_move, 646, 418, 2, 841, 2465]
+[:mouse_move, 636, 417, 2, 842, 2466]
+[:mouse_move, 624, 413, 2, 843, 2467]
+[:mouse_move, 612, 411, 2, 844, 2468]
+[:mouse_move, 605, 410, 2, 845, 2469]
+[:mouse_move, 601, 409, 2, 846, 2470]
+[:mouse_move, 597, 408, 2, 847, 2471]
+[:mouse_move, 592, 407, 2, 848, 2472]
+[:mouse_move, 586, 406, 2, 849, 2473]
+[:mouse_move, 579, 406, 2, 850, 2474]
+[:mouse_move, 570, 407, 2, 851, 2475]
+[:mouse_move, 564, 409, 2, 852, 2476]
+[:mouse_move, 561, 413, 2, 853, 2477]
+[:mouse_move, 558, 418, 2, 854, 2478]
+[:mouse_move, 561, 424, 2, 855, 2479]
+[:mouse_move, 573, 437, 2, 856, 2480]
+[:mouse_move, 600, 454, 2, 857, 2481]
+[:mouse_move, 643, 473, 2, 858, 2482]
+[:mouse_move, 698, 487, 2, 859, 2483]
+[:mouse_move, 763, 494, 2, 860, 2484]
+[:mouse_move, 839, 496, 2, 861, 2485]
+[:mouse_move, 900, 489, 2, 862, 2486]
+[:mouse_move, 935, 483, 2, 863, 2487]
+[:mouse_move, 951, 475, 2, 864, 2488]
+[:mouse_move, 955, 469, 2, 865, 2489]
+[:mouse_move, 956, 459, 2, 866, 2490]
+[:mouse_move, 953, 444, 2, 867, 2491]
+[:mouse_move, 947, 427, 2, 868, 2492]
+[:mouse_move, 934, 409, 2, 869, 2493]
+[:mouse_move, 909, 386, 2, 870, 2494]
+[:mouse_move, 876, 362, 2, 871, 2495]
+[:mouse_move, 851, 346, 2, 872, 2496]
+[:mouse_move, 834, 336, 2, 873, 2497]
+[:mouse_move, 820, 325, 2, 874, 2498]
+[:mouse_move, 797, 313, 2, 875, 2499]
+[:mouse_move, 766, 299, 2, 876, 2500]
+[:mouse_move, 724, 280, 2, 877, 2501]
+[:mouse_move, 685, 269, 2, 878, 2502]
+[:mouse_move, 664, 266, 2, 879, 2503]
+[:mouse_move, 650, 266, 2, 880, 2504]
+[:mouse_move, 640, 266, 2, 881, 2505]
+[:mouse_move, 625, 266, 2, 882, 2506]
+[:mouse_move, 603, 268, 2, 883, 2507]
+[:mouse_move, 580, 273, 2, 884, 2508]
+[:mouse_move, 564, 278, 2, 885, 2509]
+[:mouse_move, 553, 283, 2, 886, 2510]
+[:mouse_move, 541, 291, 2, 887, 2511]
+[:mouse_move, 531, 297, 2, 888, 2512]
+[:mouse_move, 520, 305, 2, 889, 2513]
+[:mouse_move, 510, 315, 2, 890, 2514]
+[:mouse_move, 503, 328, 2, 891, 2515]
+[:mouse_move, 499, 339, 2, 892, 2516]
+[:mouse_move, 497, 348, 2, 893, 2517]
+[:mouse_move, 497, 358, 2, 894, 2518]
+[:mouse_move, 504, 372, 2, 895, 2519]
+[:mouse_move, 516, 387, 2, 896, 2520]
+[:mouse_move, 532, 398, 2, 897, 2521]
+[:mouse_move, 552, 409, 2, 898, 2522]
+[:mouse_move, 573, 419, 2, 899, 2523]
+[:mouse_move, 595, 428, 2, 900, 2524]
+[:mouse_move, 620, 440, 2, 901, 2525]
+[:mouse_move, 650, 449, 2, 902, 2526]
+[:mouse_move, 685, 456, 2, 903, 2527]
+[:mouse_move, 722, 459, 2, 904, 2528]
+[:mouse_move, 760, 460, 2, 905, 2529]
+[:mouse_move, 787, 458, 2, 906, 2530]
+[:mouse_move, 813, 455, 2, 907, 2531]
+[:mouse_move, 832, 451, 2, 908, 2532]
+[:mouse_move, 842, 444, 2, 909, 2533]
+[:mouse_move, 848, 439, 2, 910, 2534]
+[:mouse_move, 851, 429, 2, 911, 2535]
+[:mouse_move, 851, 417, 2, 912, 2536]
+[:mouse_move, 848, 404, 2, 913, 2537]
+[:mouse_move, 844, 396, 2, 914, 2538]
+[:mouse_move, 842, 392, 2, 915, 2539]
+[:mouse_move, 837, 387, 2, 916, 2540]
+[:mouse_move, 828, 381, 2, 917, 2541]
+[:mouse_move, 822, 377, 2, 918, 2542]
+[:mouse_move, 820, 375, 2, 919, 2543]
+[:mouse_move, 818, 375, 2, 920, 2544]
+[:mouse_move, 817, 374, 2, 921, 2545]
+[:mouse_move, 816, 374, 2, 922, 2550]
+[:mouse_move, 813, 374, 2, 923, 2551]
+[:mouse_move, 804, 373, 2, 924, 2552]
+[:mouse_move, 785, 366, 2, 925, 2553]
+[:mouse_move, 741, 348, 2, 926, 2554]
+[:mouse_move, 669, 313, 2, 927, 2555]
+[:mouse_move, 561, 261, 2, 928, 2556]
+[:mouse_move, 432, 200, 2, 929, 2557]
+[:mouse_move, 324, 152, 2, 930, 2558]
+[:mouse_move, 237, 115, 2, 931, 2559]
+[:mouse_move, 169, 82, 2, 932, 2560]
+[:mouse_move, 116, 55, 2, 933, 2561]
+[:mouse_move, 71, 38, 2, 934, 2562]
+[:mouse_move, 42, 29, 2, 935, 2563]
+[:mouse_move, 32, 27, 2, 936, 2564]
+[:mouse_move, 24, 24, 2, 937, 2565]
+[:mouse_move, 16, 22, 2, 938, 2566]
+[:mouse_move, 10, 20, 2, 939, 2567]
+[:mouse_move, 7, 18, 2, 940, 2568]
+[:mouse_move, 4, 17, 2, 941, 2569]
+[:mouse_move, 2, 14, 2, 942, 2570]
+[:mouse_move, 0, 12, 2, 943, 2572]
+[:mouse_move, -3, 11, 2, 944, 2573]
+[:mouse_move, -4, 10, 2, 945, 2574]
+[:mouse_move, -5, 9, 2, 946, 2578]
+[:mouse_move, -8, 8, 2, 947, 2579]
+[:mouse_move, -11, 6, 2, 948, 2580]
+[:mouse_move, -14, 4, 2, 949, 2581]
+[:mouse_move, -17, 3, 2, 950, 2582]
+[:mouse_move, -18, 2, 2, 951, 2583]
+[:mouse_move, -20, 0, 2, 952, 2584]
+[:mouse_move, -22, 0, 2, 953, 2585]
diff --git a/samples/99_genre_arcade/flappy_dragon/sounds/flappy-song.ogg b/samples/99_genre_arcade/flappy_dragon/sounds/flappy-song.ogg
new file mode 100644
index 0000000..aa02e8b
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sounds/flappy-song.ogg
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sounds/fly-sound.wav b/samples/99_genre_arcade/flappy_dragon/sounds/fly-sound.wav
new file mode 100644
index 0000000..d621920
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sounds/fly-sound.wav
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sounds/hit-sound.wav b/samples/99_genre_arcade/flappy_dragon/sounds/hit-sound.wav
new file mode 100644
index 0000000..a701537
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sounds/hit-sound.wav
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/background.png b/samples/99_genre_arcade/flappy_dragon/sprites/background.png
new file mode 100644
index 0000000..6a0a42b
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/background.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/dragon_die.png b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_die.png
new file mode 100644
index 0000000..bb312e9
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_die.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly1.png b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly1.png
new file mode 100644
index 0000000..fb179af
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly1.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly2.png b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly2.png
new file mode 100644
index 0000000..8cfe531
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly2.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly3.png b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly3.png
new file mode 100644
index 0000000..cb462e1
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly3.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly4.png b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly4.png
new file mode 100644
index 0000000..04c4977
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly4.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly5.png b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly5.png
new file mode 100644
index 0000000..b29fa3d
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly5.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly6.png b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly6.png
new file mode 100644
index 0000000..99f4e74
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/dragon_fly6.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/parallax_back.png b/samples/99_genre_arcade/flappy_dragon/sprites/parallax_back.png
new file mode 100644
index 0000000..15c7e2f
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/parallax_back.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/parallax_front.png b/samples/99_genre_arcade/flappy_dragon/sprites/parallax_front.png
new file mode 100644
index 0000000..44d6a8a
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/parallax_front.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/parallax_middle.png b/samples/99_genre_arcade/flappy_dragon/sprites/parallax_middle.png
new file mode 100644
index 0000000..a3c16b1
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/parallax_middle.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/wall.png b/samples/99_genre_arcade/flappy_dragon/sprites/wall.png
new file mode 100644
index 0000000..fe94955
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/wall.png
Binary files differ
diff --git a/samples/99_genre_arcade/flappy_dragon/sprites/wallbottom.png b/samples/99_genre_arcade/flappy_dragon/sprites/wallbottom.png
new file mode 100644
index 0000000..1668be8
--- /dev/null
+++ b/samples/99_genre_arcade/flappy_dragon/sprites/wallbottom.png
Binary files differ