diff --git a/README.md b/README.md index c8fc5af..0996854 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,4 @@ Game written in Godot for AI Game Jam of the RUB - https://www.kenney.nl/ - https://opengameart.org/content/creepy-forest-f - https://opengameart.org/content/space-parallax-background +- https://opengameart.org/content/fantasy-lament-for-a-warriors-soul diff --git a/export_presets.cfg b/export_presets.cfg index 80ecbb9..b9efe30 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -15,7 +15,7 @@ script_encryption_key="" custom_template/debug="" custom_template/release="" -binary_format/64_bits=false +binary_format/64_bits=true binary_format/embed_pck=false texture_format/bptc=false texture_format/s3tc=true @@ -31,10 +31,10 @@ codesign/digest_algorithm=1 codesign/description="" codesign/custom_options=PoolStringArray( ) application/icon="res://common/icon.ico" -application/file_version="" -application/product_version="" -application/company_name="" -application/product_name="" +application/file_version="0.0.1" +application/product_version="0.0.1" +application/company_name="fusselkater.org" +application/product_name="Flopsy the Dog" application/file_description="" application/copyright="" application/trademarks="" diff --git a/objects/characters/flake/flake.gd b/objects/characters/flake/flake.gd index ba2f7f4..7c91035 100644 --- a/objects/characters/flake/flake.gd +++ b/objects/characters/flake/flake.gd @@ -6,8 +6,16 @@ export(String, FILE, "*.tscn") var flake_scene onready var level = get_parent() onready var main = level.get_parent() +enum ANIMATION { + idle, + run +} +export(ANIMATION) var animation = 0 + func _ready(): $Sprite.flip_h = reverse_direction + $Sprite.play(ANIMATION.keys()[animation]) func _on_player_entered(body): - main.load_level(flake_scene, true) + if flake_scene != "": + main.load_level(flake_scene, true) diff --git a/objects/characters/flake/flake.tres b/objects/characters/flake/flake.tres index 6998877..9003e82 100644 --- a/objects/characters/flake/flake.tres +++ b/objects/characters/flake/flake.tres @@ -1,4 +1,4 @@ -[gd_resource type="SpriteFrames" load_steps=10 format=2] +[gd_resource type="SpriteFrames" load_steps=18 format=2] [ext_resource path="res://objects/characters/flake/assets/Idle (1).png" type="Texture" id=1] [ext_resource path="res://objects/characters/flake/assets/Idle (3).png" type="Texture" id=2] @@ -9,6 +9,14 @@ [ext_resource path="res://objects/characters/flake/assets/Idle (5).png" type="Texture" id=7] [ext_resource path="res://objects/characters/flake/assets/Idle (7).png" type="Texture" id=8] [ext_resource path="res://objects/characters/flake/assets/Idle (2).png" type="Texture" id=9] +[ext_resource path="res://objects/characters/flake/assets/Run (3).png" type="Texture" id=10] +[ext_resource path="res://objects/characters/flake/assets/Run (5).png" type="Texture" id=11] +[ext_resource path="res://objects/characters/flake/assets/Run (2).png" type="Texture" id=12] +[ext_resource path="res://objects/characters/flake/assets/Run (8).png" type="Texture" id=13] +[ext_resource path="res://objects/characters/flake/assets/Run (6).png" type="Texture" id=14] +[ext_resource path="res://objects/characters/flake/assets/Run (4).png" type="Texture" id=15] +[ext_resource path="res://objects/characters/flake/assets/Run (1).png" type="Texture" id=16] +[ext_resource path="res://objects/characters/flake/assets/Run (7).png" type="Texture" id=17] [resource] animations = [ { @@ -16,4 +24,9 @@ animations = [ { "loop": true, "name": "idle", "speed": 15.0 +}, { +"frames": [ ExtResource( 16 ), ExtResource( 12 ), ExtResource( 10 ), ExtResource( 15 ), ExtResource( 11 ), ExtResource( 14 ), ExtResource( 17 ), ExtResource( 13 ) ], +"loop": true, +"name": "run", +"speed": 15.0 } ] diff --git a/objects/characters/flake/flake.tscn b/objects/characters/flake/flake.tscn index d5061c2..e9e9ee4 100644 --- a/objects/characters/flake/flake.tscn +++ b/objects/characters/flake/flake.tscn @@ -16,8 +16,8 @@ script = ExtResource( 2 ) [node name="Sprite" type="AnimatedSprite" parent="."] frames = ExtResource( 1 ) -animation = "idle" -frame = 7 +animation = "run" +frame = 5 playing = true [node name="CollisionShape2D" type="CollisionShape2D" parent="."] diff --git a/objects/characters/monsters/03/assets/cast.ogg b/objects/characters/monsters/03/assets/cast.ogg new file mode 100644 index 0000000..72a2cfd Binary files /dev/null and b/objects/characters/monsters/03/assets/cast.ogg differ diff --git a/objects/characters/monsters/03/assets/cast.ogg.import b/objects/characters/monsters/03/assets/cast.ogg.import new file mode 100644 index 0000000..a2b4d1c --- /dev/null +++ b/objects/characters/monsters/03/assets/cast.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/cast.ogg-7c445777357274a1b62f366377232704.oggstr" + +[deps] + +source_file="res://objects/characters/monsters/03/assets/cast.ogg" +dest_files=[ "res://.import/cast.ogg-7c445777357274a1b62f366377232704.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/objects/characters/monsters/03/assets/shoot.ogg b/objects/characters/monsters/03/assets/shoot.ogg new file mode 100644 index 0000000..7c73ec0 Binary files /dev/null and b/objects/characters/monsters/03/assets/shoot.ogg differ diff --git a/objects/characters/monsters/03/assets/shoot.ogg.import b/objects/characters/monsters/03/assets/shoot.ogg.import new file mode 100644 index 0000000..02c4f4e --- /dev/null +++ b/objects/characters/monsters/03/assets/shoot.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shoot.ogg-49351e8bfb5f39cc00d1fa5c2e262bb7.oggstr" + +[deps] + +source_file="res://objects/characters/monsters/03/assets/shoot.ogg" +dest_files=[ "res://.import/shoot.ogg-49351e8bfb5f39cc00d1fa5c2e262bb7.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/objects/characters/monsters/03/monster_03.gd b/objects/characters/monsters/03/monster_03.gd index ae7fa76..7cc8b8a 100644 --- a/objects/characters/monsters/03/monster_03.gd +++ b/objects/characters/monsters/03/monster_03.gd @@ -30,13 +30,13 @@ func _physics_process(delta): # Check angle and distance var angle = $monster.global_position.angle_to_point(GlobalState.player.global_position) - var rounded_angle = fmod(abs(round(rad2deg(angle))), 90) + var rounded_angle = fmod(round(rad2deg(angle)), 90) var distance = $monster.global_position.distance_to(GlobalState.player.global_position) var direction = ($monster.global_position - GlobalState.player.global_position).normalized() var player_is_left = direction.x > 0 # Shoot if in right distance/angle - if rounded_angle == 45 and cooldown == false \ + if rounded_angle == -45 and cooldown == false \ and player_is_left != $monster/AnimatedSprite.flip_h \ and GlobalState.player.global_position.y <= rect_global_position.y + rect_size.y: cooldown = true diff --git a/objects/characters/player/assets/hurt.ogg b/objects/characters/player/assets/hurt.ogg new file mode 100644 index 0000000..2719415 Binary files /dev/null and b/objects/characters/player/assets/hurt.ogg differ diff --git a/objects/characters/player/assets/hurt.ogg.import b/objects/characters/player/assets/hurt.ogg.import new file mode 100644 index 0000000..9215afb --- /dev/null +++ b/objects/characters/player/assets/hurt.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/hurt.ogg-9b76aab68e3c879188a86aedb77f6e8f.oggstr" + +[deps] + +source_file="res://objects/characters/player/assets/hurt.ogg" +dest_files=[ "res://.import/hurt.ogg-9b76aab68e3c879188a86aedb77f6e8f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/objects/characters/player/player.gd b/objects/characters/player/player.gd new file mode 100644 index 0000000..27af2a7 --- /dev/null +++ b/objects/characters/player/player.gd @@ -0,0 +1,190 @@ +extends "res://objects/characters/character.gd" + +const SPEED = 400 +const JUMP_HEIGHT = 1000 +const STRIKED_HEIGHT = 400 +export var background_scene : Resource + +onready var level = get_parent() +onready var main = level.get_parent() + +const ANIMATIONS = { + "idle": { + "animation": "idle", + "transistion": "idle", + "blocks": [] + }, + "run": { + "animation": "run", + "transistion": "run", + "blocks": [] + }, + "jump_start": { + "animation": "jump_start", + "transistion": "jump", + "blocks": ["idle", "run", "fall_start", "fall", "fall_end"] + }, + "jump": { + "animation": "jump", + "transistion": "jump", + "blocks": ["idle", "run", "fall_start", "fall", "fall_end", "jump_start"] + }, + "jump_end": { + "animation": "jump_end", + "transistion": "idle", + "blocks": ["idle", "run", "fall_start", "fall", "fall_end", "jump"] + }, + "fall_start": { + "animation": "fall_start", + "transistion": "fall", + "blocks": ["idle", "run", "fall", "fall_end", "jump_start", "jump", "jump_end"] + }, + "fall": { + "animation": "fall", + "transistion": "fall", + "blocks": ["idle", "run", "fall_start", "jump_start", "jump", "jump_end"] + }, + "fall_end": { + "animation": "fall_end", + "transistion": "idle", + "blocks": ["idle", "run", "fall_start", "fall", "jump_start", "jump", "jump_end"] + }, + "striked_start": { + "animation": "jump_start", + "transistion": "striked", + "blocks": ["idle", "run", "fall_start", "fall", "fall_end", "jump_start", "jump", "jump_end"] + }, + "striked": { + "animation": "jump", + "transistion": "striked_end", + "blocks": ["idle", "run", "fall_start", "fall", "fall_end", "jump_start", "jump", "jump_end"] + }, + "striked_end": { + "animation": "hurt", + "transistion": "idle", + "blocks": ["idle", "run", "fall_start", "fall", "fall_end", "jump_start", "jump", "jump_end"] + } +} +var player_state = "idle" +var invincible_hit = false + +var score = 0 + +func _ready(): + $Camera2D.add_child(background_scene.instance()) + $Sprite.connect("animation_finished", self, "_next_player_state") + $Sprite.animation = ANIMATIONS[player_state]['animation'] + $Camera2D.limit_left = level.camera_limit_left + $Camera2D.limit_right = level.camera_limit_right + $Camera2D.limit_top = level.camera_limit_top + $Camera2D.limit_bottom = level.camera_limit_bottom + yield(get_tree().create_timer(0.5), "timeout") + $Camera2D.smoothing_enabled = true + +func _physics_process(delta): + # out-of-screen checking + if position.y > level.camera_limit_bottom and health > 0: + _add_damage(100) + + # Fall animation if not on floor + if velocity.y > 1 and not is_on_floor(): + _set_player_state("fall_start") + + # Movement + if Input.is_action_pressed("move_left") and not Input.is_action_pressed("move_right") \ + and not player_state in ["striked_start", "striked", "striked_end"]: + move_left(SPEED) + elif Input.is_action_pressed("move_right") and not Input.is_action_pressed("move_left") \ + and not player_state in ["striked_start", "striked", "striked_end"]: + move_right(SPEED) + elif player_state in ["idle", "run", "jump", "jump_end", "fall_end", "striked_end"]: + move_stop() + + # On floor detection + if is_on_floor() and not player_state in ["striked", "striked_start"]: + snap = SNAP + _end_animation() + + # Jump + if Input.is_action_just_pressed("jump"): + if $RayBottomLeft.is_colliding() or $RayBottomRight.is_colliding() or $RayBottomCenter.is_colliding(): + jump() + +func _next_player_state(): + player_state = ANIMATIONS[player_state]["transistion"] + $Sprite.animation = ANIMATIONS[player_state]['animation'] + +func _set_player_state(new_state): + if not new_state in ANIMATIONS[player_state]["blocks"]: + player_state = new_state + $Sprite.animation = ANIMATIONS[player_state]['animation'] + return true + return false + +func move_right(delta): + _set_player_state("run") + get_node("Sprite").set_flip_h(false) + if position.x < level.camera_limit_right: + velocity.x = delta + else: + velocity.x = 0 + +func move_left(delta): + _set_player_state("run") + get_node("Sprite").set_flip_h(true) + if position.x > level.camera_limit_left: + velocity.x = -delta + else: + velocity.x = 0 + +func move_stop(): + _set_player_state("idle") + velocity.x = 0 + +func jump(): + if _set_player_state("jump_start"): + snap = Vector2.ZERO + position.y += get_floor_velocity().y * get_physics_process_delta_time() \ + - GRAVITY * get_physics_process_delta_time() - 3 + velocity.y -= JUMP_HEIGHT + +func _on_GroundCheck_body_entered(body): + _end_animation() + +func _end_animation(): + if velocity.y > 0 and player_state in ["jump_start", "jump"]: + _set_player_state("jump_end") + if velocity.y > 0 and player_state in ["fall_start", "fall"]: + _set_player_state("fall_end") + if velocity.y > 0 and player_state in ["striked_start", "striked"]: + _set_player_state("striked_end") + +func monster_hit(direction : int, damage: int): + if not invincible_hit: + invincible_hit = true + $HurtSound.play() + _set_player_state("striked_start") + _add_damage(damage) + snap = Vector2.ZERO + velocity.y = -300 + velocity.x = direction * 5 + yield(get_tree().create_timer(1.0), "timeout") + invincible_hit = false + +func _on_Enemy_Entered(body): + body.stomped_on_head() + _set_player_state("jump") + +func coin_collected(value): + main.add_score(value) + +func _add_damage(value): + health -= value + GlobalState.health = health + if health <= 0: + main.player_died() + +func _on_screen_exited(): + print("exited") + print($VisibilityNotifier2D.is_on_screen()) + _add_damage(100) diff --git a/objects/characters/player/player.tscn b/objects/characters/player/player.tscn new file mode 100644 index 0000000..77c5066 --- /dev/null +++ b/objects/characters/player/player.tscn @@ -0,0 +1,81 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://objects/characters/flopsy/flopsy.tres" type="SpriteFrames" id=1] +[ext_resource path="res://objects/characters/player/assets/hurt.ogg" type="AudioStream" id=2] +[ext_resource path="res://objects/characters/player/player.gd" type="Script" id=11] + +[sub_resource type="CapsuleShape2D" id=4] +radius = 164.75 +height = 138.75 + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 190.5, 100.625 ) + +[sub_resource type="CircleShape2D" id=5] +radius = 79.0 + +[node name="Player" type="KinematicBody2D"] +z_index = 10 +collision_mask = 4 +script = ExtResource( 11 ) + +[node name="Sprite" type="AnimatedSprite" parent="."] +frames = ExtResource( 1 ) +animation = "idle" +frame = 2 +playing = true +__meta__ = { +"_edit_lock_": true +} + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( -14.75, -7.875 ) +shape = SubResource( 4 ) + +[node name="GroundCheck" type="Area2D" parent="."] +collision_mask = 4 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="GroundCheck"] +position = Vector2( -22.5, 323.375 ) +shape = SubResource( 3 ) + +[node name="Camera2D" type="Camera2D" parent="."] +current = true +limit_left = 0 +limit_bottom = 1080 +limit_smoothed = true + +[node name="RayBottomLeft" type="RayCast2D" parent="."] +position = Vector2( -184, 0 ) +enabled = true +cast_to = Vector2( 0, 400 ) +collision_mask = 6 +collide_with_areas = true + +[node name="RayBottomRight" type="RayCast2D" parent="."] +position = Vector2( 154, 0 ) +enabled = true +cast_to = Vector2( 0, 400 ) +collision_mask = 6 +collide_with_areas = true + +[node name="RayBottomCenter" type="RayCast2D" parent="."] +position = Vector2( -14, 0 ) +enabled = true +cast_to = Vector2( 0, 400 ) +collision_mask = 6 +collide_with_areas = true + +[node name="EnemyBottomCheck" type="Area2D" parent="."] +collision_mask = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyBottomCheck"] +position = Vector2( -13, 225 ) +shape = SubResource( 5 ) + +[node name="HurtSound" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource( 2 ) +volume_db = -5.0 + +[connection signal="body_entered" from="GroundCheck" to="." method="_on_GroundCheck_body_entered"] +[connection signal="body_entered" from="EnemyBottomCheck" to="." method="_on_Enemy_Entered"] diff --git a/objects/falling_log/falling_log.gd b/objects/falling_log/falling_log.gd index 5dc1d18..0b6e0d2 100644 --- a/objects/falling_log/falling_log.gd +++ b/objects/falling_log/falling_log.gd @@ -13,6 +13,8 @@ func _on_PlayerCollision(body): func _on_Animation_finished(anim_name): if anim_name == "player_on_log": + collision_layer = 0b0 yield(get_tree().create_timer(recover_time), "timeout") $PlayerCollision/Collision.disabled = false $Animation.play("recover") + collision_layer = 0b100 diff --git a/objects/key/key.gd b/objects/key/key.gd index f346015..6d30eb5 100644 --- a/objects/key/key.gd +++ b/objects/key/key.gd @@ -6,7 +6,7 @@ enum KEY_COLOR{ green, blue } -export(KEY_COLOR) var key_color = "yellow" +export(KEY_COLOR) var key_color = 0 func _ready(): $Sprite.texture = load("res://objects/key/assets/" + str(KEY_COLOR.keys()[key_color]) + ".svg") diff --git a/objects/key/key.tscn b/objects/key/key.tscn index 6d7a475..c65afb4 100644 --- a/objects/key/key.tscn +++ b/objects/key/key.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=5 format=2] -[ext_resource path="res://objects/key/assets/yellow.svg" type="Texture" id=1] [ext_resource path="res://objects/key/key.gd" type="Script" id=2] [ext_resource path="res://objects/key/assets/key.wav" type="AudioStream" id=3] @@ -30,7 +29,6 @@ collision_mask = 0 script = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] -texture = ExtResource( 1 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite"] anims/default = SubResource( 1 ) diff --git a/project.godot b/project.godot index 0619817..a13d0b8 100644 --- a/project.godot +++ b/project.godot @@ -22,6 +22,7 @@ GlobalState="*res://common/global_state.gd" window/size/width=1920 window/size/height=1080 +window/size/fullscreen=true window/stretch/mode="2d" window/stretch/aspect="keep" diff --git a/scenes/levels/01/level_01.tscn b/scenes/levels/01/level_01.tscn index cb89fc3..30a68ac 100644 --- a/scenes/levels/01/level_01.tscn +++ b/scenes/levels/01/level_01.tscn @@ -12,11 +12,11 @@ [ext_resource path="res://objects/door/door.tscn" type="PackedScene" id=10] [ext_resource path="res://scenes/levels/01/CollidingMountain.tscn" type="PackedScene" id=11] -[sub_resource type="Gradient" id=1] +[sub_resource type="Gradient" id=3] colors = PoolColorArray( 0.0431373, 0.0431373, 0.0431373, 0, 0, 0, 0, 1 ) [sub_resource type="GradientTexture" id=2] -gradient = SubResource( 1 ) +gradient = SubResource( 3 ) width = 500 [node name="Level 01" type="Node2D"] diff --git a/scenes/levels/02/assets/castle.svg b/scenes/levels/02/assets/castle.svg new file mode 100644 index 0000000..974ace8 --- /dev/null +++ b/scenes/levels/02/assets/castle.svg @@ -0,0 +1,5017 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scenes/levels/02/assets/castle.svg.import b/scenes/levels/02/assets/castle.svg.import new file mode 100644 index 0000000..4d0073a --- /dev/null +++ b/scenes/levels/02/assets/castle.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/castle.svg-00d8399a3079f218c23cbd3d369eff6d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/levels/02/assets/castle.svg" +dest_files=[ "res://.import/castle.svg-00d8399a3079f218c23cbd3d369eff6d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=3.0 diff --git a/scenes/levels/02/assets/castle_door_closed.svg b/scenes/levels/02/assets/castle_door_closed.svg new file mode 100644 index 0000000..03cf38c --- /dev/null +++ b/scenes/levels/02/assets/castle_door_closed.svg @@ -0,0 +1,774 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scenes/levels/02/assets/castle_door_closed.svg.import b/scenes/levels/02/assets/castle_door_closed.svg.import new file mode 100644 index 0000000..45d07bc --- /dev/null +++ b/scenes/levels/02/assets/castle_door_closed.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/castle_door_closed.svg-fb9796fc691d76fc7dc625ac4b74f124.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/levels/02/assets/castle_door_closed.svg" +dest_files=[ "res://.import/castle_door_closed.svg-fb9796fc691d76fc7dc625ac4b74f124.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=3.0 diff --git a/scenes/levels/02/assets/castle_door_opened_1.svg b/scenes/levels/02/assets/castle_door_opened_1.svg new file mode 100644 index 0000000..0ca8f93 --- /dev/null +++ b/scenes/levels/02/assets/castle_door_opened_1.svg @@ -0,0 +1,783 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scenes/levels/02/assets/castle_door_opened_1.svg.import b/scenes/levels/02/assets/castle_door_opened_1.svg.import new file mode 100644 index 0000000..93da06f --- /dev/null +++ b/scenes/levels/02/assets/castle_door_opened_1.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/castle_door_opened_1.svg-59dd16913107eefa7629eeb7d1a43397.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/levels/02/assets/castle_door_opened_1.svg" +dest_files=[ "res://.import/castle_door_opened_1.svg-59dd16913107eefa7629eeb7d1a43397.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=3.0 diff --git a/scenes/levels/02/assets/castle_door_opened_2.svg b/scenes/levels/02/assets/castle_door_opened_2.svg new file mode 100644 index 0000000..02010ae --- /dev/null +++ b/scenes/levels/02/assets/castle_door_opened_2.svg @@ -0,0 +1,716 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scenes/levels/02/assets/castle_door_opened_2.svg.import b/scenes/levels/02/assets/castle_door_opened_2.svg.import new file mode 100644 index 0000000..a25d99d --- /dev/null +++ b/scenes/levels/02/assets/castle_door_opened_2.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/castle_door_opened_2.svg-709854c3d8d2e9fec2334eaeb5e3b007.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/levels/02/assets/castle_door_opened_2.svg" +dest_files=[ "res://.import/castle_door_opened_2.svg-709854c3d8d2e9fec2334eaeb5e3b007.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=3.0 diff --git a/scenes/levels/02/assets/castle_door_opened_3.svg b/scenes/levels/02/assets/castle_door_opened_3.svg new file mode 100644 index 0000000..d625175 --- /dev/null +++ b/scenes/levels/02/assets/castle_door_opened_3.svg @@ -0,0 +1,649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scenes/levels/02/assets/castle_door_opened_3.svg.import b/scenes/levels/02/assets/castle_door_opened_3.svg.import new file mode 100644 index 0000000..864bcb7 --- /dev/null +++ b/scenes/levels/02/assets/castle_door_opened_3.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/castle_door_opened_3.svg-cd517b7121163bff633c1ead7ab3c314.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/levels/02/assets/castle_door_opened_3.svg" +dest_files=[ "res://.import/castle_door_opened_3.svg-cd517b7121163bff633c1ead7ab3c314.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=3.0 diff --git a/scenes/levels/02/assets/castle_door_opened_4.svg b/scenes/levels/02/assets/castle_door_opened_4.svg new file mode 100644 index 0000000..c7c8273 --- /dev/null +++ b/scenes/levels/02/assets/castle_door_opened_4.svg @@ -0,0 +1,641 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scenes/levels/02/assets/castle_door_opened_4.svg.import b/scenes/levels/02/assets/castle_door_opened_4.svg.import new file mode 100644 index 0000000..37c1bd9 --- /dev/null +++ b/scenes/levels/02/assets/castle_door_opened_4.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/castle_door_opened_4.svg-0539bb1a6ad1d6025e06e921001a5f8d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/levels/02/assets/castle_door_opened_4.svg" +dest_files=[ "res://.import/castle_door_opened_4.svg-0539bb1a6ad1d6025e06e921001a5f8d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=3.0 diff --git a/scenes/levels/02/assets/interlude.ogg b/scenes/levels/02/assets/interlude.ogg new file mode 100644 index 0000000..d284cdb Binary files /dev/null and b/scenes/levels/02/assets/interlude.ogg differ diff --git a/scenes/levels/02/assets/interlude.ogg.import b/scenes/levels/02/assets/interlude.ogg.import new file mode 100644 index 0000000..8dd0c09 --- /dev/null +++ b/scenes/levels/02/assets/interlude.ogg.import @@ -0,0 +1,3 @@ +[remap] + +importer="keep" diff --git a/scenes/levels/02/castle.gd b/scenes/levels/02/castle.gd new file mode 100644 index 0000000..9a77f00 --- /dev/null +++ b/scenes/levels/02/castle.gd @@ -0,0 +1,18 @@ +extends StaticBody2D + +var unlocked = false + +signal player_entered_castle + +func _ready(): + pass # Replace with function body. + +func _on_Unlock(body): + if GlobalState.keys['blue'] == true: + $DoorSprite.play("open") + unlocked = true + + +func _on_entered_castle(body): + if unlocked == true: + emit_signal("player_entered_castle") diff --git a/scenes/levels/02/castle.tscn b/scenes/levels/02/castle.tscn new file mode 100644 index 0000000..6bf94d9 --- /dev/null +++ b/scenes/levels/02/castle.tscn @@ -0,0 +1,62 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://scenes/levels/02/assets/castle.svg" type="Texture" id=1] +[ext_resource path="res://scenes/levels/02/assets/castle_door_opened_3.svg" type="Texture" id=2] +[ext_resource path="res://scenes/levels/02/assets/castle_door_closed.svg" type="Texture" id=3] +[ext_resource path="res://scenes/levels/02/assets/castle_door_opened_4.svg" type="Texture" id=4] +[ext_resource path="res://scenes/levels/02/assets/castle_door_opened_2.svg" type="Texture" id=5] +[ext_resource path="res://scenes/levels/02/assets/castle_door_opened_1.svg" type="Texture" id=6] +[ext_resource path="res://scenes/levels/02/castle.gd" type="Script" id=7] + +[sub_resource type="SpriteFrames" id=1] +animations = [ { +"frames": [ ExtResource( 3 ), ExtResource( 6 ), ExtResource( 5 ), ExtResource( 2 ), ExtResource( 4 ) ], +"loop": false, +"name": "open", +"speed": 15.0 +} ] + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 595, 385 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 17.5, 17.5 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 105, 175 ) + +[node name="Castle" type="StaticBody2D"] +collision_layer = 0 +collision_mask = 0 +script = ExtResource( 7 ) + +[node name="Sprite" type="Sprite" parent="."] +scale = Vector2( 0.334, 0.334 ) +texture = ExtResource( 1 ) + +[node name="DoorSprite" type="AnimatedSprite" parent="."] +position = Vector2( 175, 350 ) +scale = Vector2( 0.336, 0.336 ) +frames = SubResource( 1 ) +animation = "open" + +[node name="Collision" type="CollisionShape2D" parent="."] +position = Vector2( 0, 140 ) +shape = SubResource( 2 ) + +[node name="Lock" type="Area2D" parent="."] +collision_layer = 0 + +[node name="Collision" type="CollisionShape2D" parent="Lock"] +position = Vector2( 367.5, 472.5 ) +shape = SubResource( 3 ) + +[node name="Door" type="Area2D" parent="."] +collision_layer = 0 + +[node name="Collision" type="CollisionShape2D" parent="Door"] +position = Vector2( 175, 350 ) +shape = SubResource( 4 ) + +[connection signal="body_entered" from="Lock" to="." method="_on_Unlock"] +[connection signal="body_entered" from="Door" to="." method="_on_entered_castle"] diff --git a/scenes/levels/02/interlude_02.gd b/scenes/levels/02/interlude_02.gd new file mode 100644 index 0000000..1c20341 --- /dev/null +++ b/scenes/levels/02/interlude_02.gd @@ -0,0 +1,48 @@ +extends "res://scenes/levels/interlude.gd" + +const text = [ + ["flake", "Hey Flopsy stop! Wait for me!", 0], + ["flopsy", "Flake? What are you doing here?", 1], + ["flake", "I asked around a little bit, and I got some important information.", 1], + ["flake", "The monsters, that kidnapped your friends were seen on the way to the lairs of Aprela.", 2], + ["flake", "You have to go through the catacombs of this abadoned castle and to the great river.", 3], + ["flake", "There you will meet Ricky the ferryman, who can bring you to the other side.", 3], + ["flake", "But take care! He is a rascal!", 3], + ["flake", "He changes the fee for a cross over arbitrary. So better have some extra coins.", 1], + ["flopsy", "Okay, catacombs, ferryman, extra coins, got it.", 3], + ["flake", "Be careful!", 2], + ["flopsy", "Sure. Thank you for your help.", 1] +] + +func _ready(): + _next_text() + +func _next_text(): + var current_text = text.pop_front() + + if current_text != null: + yield(get_tree().create_timer(current_text[2]), "timeout") + + if current_text[0] == "flake": + $CanvasLayer/speech_flopsy.fade_out() + yield(get_tree().create_timer(0.5), "timeout") + $CanvasLayer/speech_flake.say(current_text[1]) + elif current_text[0] == "flopsy": + $CanvasLayer/speech_flake.fade_out() + yield(get_tree().create_timer(0.5), "timeout") + $CanvasLayer/speech_flopsy.say(current_text[1]) + else: + yield(get_tree().create_timer(1), "timeout") + $CanvasLayer/speech_flopsy.fade_out() + $CanvasLayer/speech_flake.fade_out() + yield(get_tree().create_timer(0.5), "timeout") + $CanvasLayer/FlopsyFader.play("fade") + +func _on_speech_flake_ready(): + _next_text() + +func _on_speech_flopsy_ready(): + _next_text() + +func _on_FlopsyFader_finished(anim_name): + main.load_level(next_level, true) diff --git a/scenes/levels/02/interlude_02.tscn b/scenes/levels/02/interlude_02.tscn new file mode 100644 index 0000000..0d88af3 --- /dev/null +++ b/scenes/levels/02/interlude_02.tscn @@ -0,0 +1,87 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://common/tiles/grasland.tres" type="TileSet" id=1] +[ext_resource path="res://objects/characters/flopsy/flopsy.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/characters/flake/flake.tscn" type="PackedScene" id=3] +[ext_resource path="res://scenes/levels/02/interlude_02.gd" type="Script" id=4] +[ext_resource path="res://scenes/levels/02/assets/castle.svg" type="Texture" id=5] +[ext_resource path="res://scenes/levels/02/assets/castle_door_opened_4.svg" type="Texture" id=6] +[ext_resource path="res://objects/speech_bubble/speech_bubble.tscn" type="PackedScene" id=7] + +[sub_resource type="Animation" id=1] +resource_name = "fade" +length = 2.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Flopsy:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} + +[node name="Interlude 02" type="Node2D"] +script = ExtResource( 4 ) +bgm_path = "res://scenes/levels/02/assets/interlude.ogg" +hud_visible = false +clear_color = Color( 0, 0, 0, 1 ) +next_level = "res://scenes/levels/credits/credits.tscn" + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="Castle" type="TextureRect" parent="CanvasLayer"] +margin_left = -665.0 +margin_top = -2310.0 +margin_right = 525.0 +margin_bottom = -1260.0 +texture = ExtResource( 5 ) + +[node name="Door" type="TextureRect" parent="CanvasLayer"] +margin_left = 1225.0 +margin_top = -210.0 +margin_right = 1505.0 +margin_bottom = 140.0 +texture = ExtResource( 6 ) + +[node name="TileMap" type="TileMap" parent="CanvasLayer"] +tile_set = ExtResource( 1 ) +cell_size = Vector2( 70, 70 ) +collision_layer = 4 +collision_mask = 0 +format = 1 +tile_data = PoolIntArray( 851965, 4, 0, 851966, 4, 0, 851967, 4, 0, 786432, 4, 0, 786433, 4, 0, 786434, 4, 0, 786435, 4, 0, 786436, 4, 0, 786437, 4, 0, 786438, 4, 0, 786439, 4, 0, 786440, 4, 0, 786441, 4, 0, 786442, 4, 0, 786443, 4, 0, 786444, 4, 0, 786445, 4, 0, 786446, 4, 0, 786447, 4, 0, 786448, 4, 0, 786449, 4, 0, 786450, 4, 0, 786451, 4, 0, 786452, 4, 0, 786453, 4, 0, 786454, 4, 0, 786455, 4, 0, 786456, 4, 0, 786457, 4, 0, 786458, 4, 0, 786459, 4, 0, 786460, 4, 0, 786461, 4, 0, 917501, 5, 0, 917502, 5, 0, 917503, 5, 0, 851968, 5, 0, 851969, 5, 0, 851970, 5, 0, 851971, 5, 0, 851972, 5, 0, 851973, 5, 0, 851974, 5, 0, 851975, 5, 0, 851976, 5, 0, 851977, 5, 0, 851978, 5, 0, 851979, 5, 0, 851980, 5, 0, 851981, 5, 0, 851982, 5, 0, 851983, 5, 0, 851984, 5, 0, 851985, 5, 0, 851986, 5, 0, 851987, 5, 0, 851988, 5, 0, 851989, 5, 0, 851990, 5, 0, 851991, 5, 0, 851992, 5, 0, 851993, 5, 0, 851994, 5, 0, 851995, 5, 0, 851996, 5, 0, 851997, 5, 0, 983037, 5, 0, 983038, 5, 0, 983039, 5, 0, 917504, 5, 0, 917505, 5, 0, 917506, 5, 0, 917507, 5, 0, 917508, 5, 0, 917509, 5, 0, 917510, 5, 0, 917511, 5, 0, 917512, 5, 0, 917513, 5, 0, 917514, 5, 0, 917515, 5, 0, 917516, 5, 0, 917517, 5, 0, 917518, 5, 0, 917519, 5, 0, 917520, 5, 0, 917521, 5, 0, 917522, 5, 0, 917523, 5, 0, 917524, 5, 0, 917525, 5, 0, 917526, 5, 0, 917527, 5, 0, 917528, 5, 0, 917529, 5, 0, 917530, 5, 0, 917531, 5, 0, 917532, 5, 0, 917533, 5, 0, 1048573, 5, 0, 1048574, 5, 0, 1048575, 5, 0, 983040, 5, 0, 983041, 5, 0, 983042, 5, 0, 983043, 5, 0, 983044, 5, 0, 983045, 5, 0, 983046, 5, 0, 983047, 5, 0, 983048, 5, 0, 983049, 5, 0, 983050, 5, 0, 983051, 5, 0, 983052, 5, 0, 983053, 5, 0, 983054, 5, 0, 983055, 5, 0, 983056, 5, 0, 983057, 5, 0, 983058, 5, 0, 983059, 5, 0, 983060, 5, 0, 983061, 5, 0, 983062, 5, 0, 983063, 5, 0, 983064, 5, 0, 983065, 5, 0, 983066, 5, 0, 983067, 5, 0, 983068, 5, 0, 983069, 5, 0 ) + +[node name="Flake" parent="CanvasLayer" instance=ExtResource( 3 )] +position = Vector2( 280, 595 ) + +[node name="Flopsy" parent="CanvasLayer" instance=ExtResource( 2 )] +position = Vector2( 1645, 595 ) +reverse_direction = true + +[node name="speech_flopsy" parent="CanvasLayer" instance=ExtResource( 7 )] +margin_left = 1015.0 +margin_top = 350.0 +margin_right = 1505.0 +margin_bottom = 455.0 +rect_pivot_offset = Vector2( -210, -140 ) +pitch = 1.5 + +[node name="speech_flake" parent="CanvasLayer" instance=ExtResource( 7 )] +margin_left = 420.0 +margin_top = 350.0 +margin_right = 910.0 +margin_bottom = 455.0 +rect_pivot_offset = Vector2( -210, -140 ) +flip_h = true +pitch = 2.0 + +[node name="FlopsyFader" type="AnimationPlayer" parent="CanvasLayer"] +anims/fade = SubResource( 1 ) + +[connection signal="animation_ready" from="CanvasLayer/speech_flopsy" to="." method="_on_speech_flopsy_ready"] +[connection signal="animation_ready" from="CanvasLayer/speech_flake" to="." method="_on_speech_flake_ready"] +[connection signal="animation_finished" from="CanvasLayer/FlopsyFader" to="." method="_on_FlopsyFader_finished"] diff --git a/scenes/levels/02/level_02.gd b/scenes/levels/02/level_02.gd index a92ccbd..519a6d3 100644 --- a/scenes/levels/02/level_02.gd +++ b/scenes/levels/02/level_02.gd @@ -1,5 +1,6 @@ extends "res://scenes/levels/level.gd" +const INTERLUDE = "res://scenes/levels/02/interlude_02.tscn" # Declare member variables here. Examples: # var a = 2 @@ -8,9 +9,17 @@ extends "res://scenes/levels/level.gd" # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + $FlakeAnimation.play("reset") # Called every frame. 'delta' is the elapsed time since the previous frame. #func _process(delta): # pass + + +func _on_Castle_player_entered_castle(): + $FlakeAnimation.play("move") + +func _on_FlakeAnimation_finished(anim_name): + if anim_name == "move": + main.load_level(INTERLUDE, true) diff --git a/scenes/levels/02/level_02.tscn b/scenes/levels/02/level_02.tscn index 1c4908a..3395f66 100644 --- a/scenes/levels/02/level_02.tscn +++ b/scenes/levels/02/level_02.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=19 format=2] [ext_resource path="res://scenes/levels/02/level_02.gd" type="Script" id=1] [ext_resource path="res://common/tiles/grasland.tres" type="TileSet" id=2] @@ -11,16 +11,101 @@ [ext_resource path="res://objects/characters/monsters/03/monster_03.tscn" type="PackedScene" id=9] [ext_resource path="res://objects/key/key.tscn" type="PackedScene" id=10] [ext_resource path="res://objects/coin/coin.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/door/door.tscn" type="PackedScene" id=12] +[ext_resource path="res://scenes/levels/02/castle.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/characters/flake/flake.tscn" type="PackedScene" id=14] + +[sub_resource type="Gradient" id=1] +colors = PoolColorArray( 0.0431373, 0.0431373, 0.0431373, 0, 0, 0, 0, 1 ) + +[sub_resource type="GradientTexture" id=2] +gradient = SubResource( 1 ) +width = 500 + +[sub_resource type="Animation" id=3] +resource_name = "move" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Flake:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 9590, 585 ), Vector2( 10640, 585 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Flake:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 0 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "reset" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Flake:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 0 ), +"update": 0, +"values": [ Vector2( 9590, -490 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Flake:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 0 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} [node name="Level 02" type="Node2D"] script = ExtResource( 1 ) bgm_path = "res://scenes/levels/02/assets/bgm.ogg" hud_color = Color( 1, 1, 1, 1 ) clear_color = Color( 0, 0, 0, 1 ) +camera_limit_right = 11620 camera_limit_bottom = 1190 +[node name="TextureRect" type="TextureRect" parent="."] +margin_left = 7840.0 +margin_top = 375.0 +margin_right = 8796.0 +margin_bottom = 1986.0 +rect_rotation = 90.0 +texture = SubResource( 2 ) +expand = true + +[node name="TextureRect2" type="TextureRect" parent="."] +margin_left = 9485.0 +margin_top = 146.0 +margin_right = 10190.0 +margin_bottom = 1317.0 +rect_rotation = 90.0 +texture = SubResource( 2 ) +expand = true + [node name="Player" parent="." instance=ExtResource( 3 )] -position = Vector2( 2485, 875 ) +position = Vector2( 350, 980 ) scale = Vector2( 0.2, 0.2 ) background_scene = ExtResource( 4 ) @@ -34,13 +119,18 @@ position = Vector2( 1260, -210 ) sleep_down = 3.0 sleep_up = 1.0 +[node name="monster_08" parent="." instance=ExtResource( 6 )] +position = Vector2( 5565, 630 ) +sleep_down = 1.0 +sleep_up = 3.0 + [node name="Tiles" type="TileMap" parent="."] tile_set = ExtResource( 2 ) cell_size = Vector2( 70, 70 ) collision_layer = 4 collision_mask = 0 format = 1 -tile_data = PoolIntArray( -851924, 22, 0, -786390, 3, 1, -786389, 3, 65536, -786388, 3, 65537, -262128, 24, 0, -196594, 13, 1, -196593, 13, 2, -196592, 13, 2, -196591, 13, 2, -196590, 13, 3, -131058, 5, 0, -131057, 5, 0, -131056, 5, 0, -131055, 5, 0, -131054, 5, 0, -65522, 25, 0, -65521, 25, 0, -65520, 25, 0, -65519, 25, 0, -65518, 25, 0, 524329, 23, 0, 589864, 32, 0, 589865, 4, 0, 589866, 4, 0, 589867, 7, 0, 655400, 29, 0, 655401, 5, 0, 655402, 5, 0, 655403, 8, 0, 655404, 7, 0, 720935, 1, 0, 720936, 29, 0, 720937, 5, 0, 720938, 5, 0, 720939, 5, 0, 720940, 8, 0, 720941, 7, 0, 720943, 20, 0, 720945, 24, 0, 720964, 23, 0, 720969, 22, 0, 720970, 24, 0, 786472, 29, 0, 786473, 5, 0, 786474, 5, 0, 786475, 5, 0, 786476, 5, 0, 786477, 8, 0, 786478, 4, 0, 786479, 4, 0, 786480, 4, 0, 786481, 4, 0, 786482, 4, 0, 786483, 15, 0, 786484, 11, 0, 786485, 11, 0, 786486, 11, 0, 786487, 11, 0, 786488, 11, 0, 786489, 11, 0, 786490, 11, 0, 786491, 11, 0, 786492, 11, 0, 786493, 11, 0, 786494, 11, 0, 786495, 11, 0, 786496, 11, 0, 786497, 11, 0, 786498, 14, 0, 786499, 4, 0, 786500, 4, 0, 786501, 4, 0, 786502, 4, 0, 786503, 4, 0, 786504, 4, 0, 786505, 4, 0, 786506, 4, 0, 786507, 4, 0, 786508, 15, 0, 852008, 29, 0, 852009, 5, 0, 852010, 5, 0, 852011, 5, 0, 852012, 5, 0, 852013, 5, 0, 852014, 5, 0, 852015, 5, 0, 852016, 5, 0, 852017, 5, 0, 852018, 5, 0, 852019, 5, 0, 852020, 12, 0, 852021, 12, 0, 852022, 12, 0, 852023, 12, 0, 852024, 12, 0, 852025, 12, 0, 852026, 12, 0, 852027, 12, 0, 852028, 12, 0, 852029, 12, 0, 852030, 12, 0, 852031, 12, 0, 852032, 12, 0, 852033, 12, 0, 852034, 5, 0, 852035, 5, 0, 852036, 5, 0, 852037, 5, 0, 852038, 5, 0, 852039, 5, 0, 852040, 5, 0, 852041, 5, 0, 852042, 5, 0, 852043, 5, 0, 852044, 5, 0, 983033, 4, 0, 983034, 4, 0, 983035, 4, 0, 983036, 4, 0, 983037, 4, 0, 983038, 4, 0, 983039, 4, 0, 917504, 4, 0, 917505, 7, 0, 917512, 23, 0, 917516, 20, 0, 917538, 24, 0, 917541, 22, 0, 917542, 22, 0, 917544, 29, 0, 917545, 5, 0, 917546, 5, 0, 917547, 5, 0, 917548, 5, 0, 917549, 5, 0, 917550, 5, 0, 917551, 5, 0, 917552, 5, 0, 917553, 5, 0, 917554, 5, 0, 917555, 5, 0, 917556, 12, 0, 917557, 12, 0, 917558, 12, 0, 917559, 12, 0, 917560, 12, 0, 917561, 12, 0, 917562, 12, 0, 917563, 12, 0, 917564, 12, 0, 917565, 12, 0, 917566, 12, 0, 917567, 12, 0, 917568, 12, 0, 917569, 12, 0, 917570, 5, 0, 917571, 5, 0, 917572, 5, 0, 917573, 5, 0, 917574, 5, 0, 917575, 5, 0, 917576, 5, 0, 917577, 5, 0, 917578, 5, 0, 917579, 5, 0, 917580, 5, 0, 1048569, 5, 0, 1048570, 5, 0, 1048571, 5, 0, 1048572, 5, 0, 1048573, 5, 0, 1048574, 5, 0, 1048575, 5, 0, 983040, 5, 0, 983041, 8, 0, 983042, 4, 0, 983043, 4, 0, 983044, 4, 0, 983045, 4, 0, 983046, 4, 0, 983047, 4, 0, 983048, 4, 0, 983049, 4, 0, 983050, 4, 0, 983051, 4, 0, 983052, 4, 0, 983053, 4, 0, 983054, 15, 0, 983055, 11, 0, 983056, 11, 0, 983057, 11, 0, 983058, 11, 0, 983059, 11, 0, 983060, 11, 0, 983061, 11, 0, 983062, 11, 0, 983063, 11, 0, 983064, 11, 0, 983065, 11, 0, 983066, 11, 0, 983067, 11, 0, 983068, 11, 0, 983069, 11, 0, 983070, 14, 0, 983071, 4, 0, 983072, 4, 0, 983073, 4, 0, 983074, 4, 0, 983075, 4, 0, 983076, 4, 0, 983077, 4, 0, 983078, 4, 0, 983079, 4, 0, 983080, 10, 0, 983081, 5, 0, 983082, 5, 0, 983083, 5, 0, 983084, 5, 0, 983085, 5, 0, 983086, 5, 0, 983087, 5, 0, 983088, 5, 0, 983089, 5, 0, 983090, 5, 0, 983091, 5, 0, 983092, 12, 0, 983093, 12, 0, 983094, 12, 0, 983095, 12, 0, 983096, 12, 0, 983097, 12, 0, 983098, 12, 0, 983099, 12, 0, 983100, 12, 0, 983101, 12, 0, 983102, 12, 0, 983103, 12, 0, 983104, 12, 0, 983105, 12, 0, 983106, 5, 0, 983107, 5, 0, 983108, 5, 0, 983109, 5, 0, 983110, 5, 0, 983111, 5, 0, 983112, 5, 0, 983113, 5, 0, 983114, 5, 0, 983115, 5, 0, 983116, 5, 0, 1114105, 5, 0, 1114106, 5, 0, 1114107, 5, 0, 1114108, 5, 0, 1114109, 5, 0, 1114110, 5, 0, 1114111, 5, 0, 1048576, 5, 0, 1048577, 5, 0, 1048578, 5, 0, 1048579, 5, 0, 1048580, 5, 0, 1048581, 5, 0, 1048582, 5, 0, 1048583, 5, 0, 1048584, 5, 0, 1048585, 5, 0, 1048586, 5, 0, 1048587, 5, 0, 1048588, 5, 0, 1048589, 5, 0, 1048590, 5, 0, 1048591, 12, 0, 1048592, 12, 0, 1048593, 12, 0, 1048594, 12, 0, 1048595, 12, 0, 1048596, 12, 0, 1048597, 12, 0, 1048598, 12, 0, 1048599, 12, 0, 1048600, 12, 0, 1048601, 12, 0, 1048602, 12, 0, 1048603, 12, 0, 1048604, 12, 0, 1048605, 12, 0, 1048606, 5, 0, 1048607, 5, 0, 1048608, 5, 0, 1048609, 5, 0, 1048610, 5, 0, 1048611, 5, 0, 1048612, 5, 0, 1048613, 5, 0, 1048614, 5, 0, 1048615, 5, 0, 1048616, 5, 0, 1048617, 5, 0, 1048618, 5, 0, 1048619, 5, 0, 1048620, 5, 0, 1048621, 5, 0, 1048622, 5, 0, 1048623, 5, 0, 1048624, 5, 0, 1048625, 5, 0, 1048626, 5, 0, 1048627, 5, 0, 1048628, 12, 0, 1048629, 12, 0, 1048630, 12, 0, 1048631, 12, 0, 1048632, 12, 0, 1048633, 12, 0, 1048634, 12, 0, 1048635, 12, 0, 1048636, 12, 0, 1048637, 12, 0, 1048638, 12, 0, 1048639, 12, 0, 1048640, 12, 0, 1048641, 12, 0, 1048642, 5, 0, 1048643, 5, 0, 1048644, 5, 0, 1048645, 5, 0, 1048646, 5, 0, 1048647, 5, 0, 1048648, 5, 0, 1048649, 5, 0, 1048650, 5, 0, 1048651, 5, 0, 1048652, 5, 0, 1179641, 5, 0, 1179642, 5, 0, 1179643, 5, 0, 1179644, 5, 0, 1179645, 5, 0, 1179646, 5, 0, 1179647, 5, 0, 1114112, 5, 0, 1114113, 5, 0, 1114114, 5, 0, 1114115, 5, 0, 1114116, 5, 0, 1114117, 5, 0, 1114118, 5, 0, 1114119, 5, 0, 1114120, 5, 0, 1114121, 5, 0, 1114122, 5, 0, 1114123, 5, 0, 1114124, 5, 0, 1114125, 5, 0, 1114126, 5, 0, 1114127, 12, 0, 1114128, 12, 0, 1114129, 12, 0, 1114130, 12, 0, 1114131, 12, 0, 1114132, 12, 0, 1114133, 12, 0, 1114134, 12, 0, 1114135, 12, 0, 1114136, 12, 0, 1114137, 12, 0, 1114138, 12, 0, 1114139, 12, 0, 1114140, 12, 0, 1114141, 12, 0, 1114142, 5, 0, 1114143, 5, 0, 1114144, 5, 0, 1114145, 5, 0, 1114146, 5, 0, 1114147, 5, 0, 1114148, 5, 0, 1114149, 5, 0, 1114150, 5, 0, 1114151, 5, 0, 1114152, 5, 0, 1114153, 5, 0, 1114154, 5, 0, 1114155, 5, 0, 1114156, 5, 0, 1114157, 5, 0, 1114158, 5, 0, 1114159, 5, 0, 1114160, 5, 0, 1114161, 5, 0, 1114162, 5, 0, 1114163, 5, 0, 1114164, 12, 0, 1114165, 12, 0, 1114166, 12, 0, 1114167, 12, 0, 1114168, 12, 0, 1114169, 12, 0, 1114170, 12, 0, 1114171, 12, 0, 1114172, 12, 0, 1114173, 12, 0, 1114174, 12, 0, 1114175, 12, 0, 1114176, 12, 0, 1114177, 12, 0, 1114178, 5, 0, 1114179, 5, 0, 1114180, 5, 0, 1114181, 5, 0, 1114182, 5, 0, 1114183, 5, 0, 1114184, 5, 0, 1114185, 5, 0, 1114186, 5, 0, 1114187, 5, 0, 1114188, 5, 0, 1245177, 5, 0, 1245178, 5, 0, 1245179, 5, 0, 1245180, 5, 0, 1245181, 5, 0, 1245182, 5, 0, 1245183, 5, 0, 1179648, 5, 0, 1179649, 5, 0, 1179650, 5, 0, 1179651, 5, 0, 1179652, 5, 0, 1179653, 5, 0, 1179654, 5, 0, 1179655, 5, 0, 1179656, 5, 0, 1179657, 5, 0, 1179658, 5, 0, 1179659, 5, 0, 1179660, 5, 0, 1179661, 5, 0, 1179662, 5, 0, 1179663, 12, 0, 1179664, 12, 0, 1179665, 12, 0, 1179666, 12, 0, 1179667, 12, 0, 1179668, 12, 0, 1179669, 12, 0, 1179670, 12, 0, 1179671, 12, 0, 1179672, 12, 0, 1179673, 12, 0, 1179674, 12, 0, 1179675, 12, 0, 1179676, 12, 0, 1179677, 12, 0, 1179678, 5, 0, 1179679, 5, 0, 1179680, 5, 0, 1179681, 5, 0, 1179682, 5, 0, 1179683, 5, 0, 1179684, 5, 0, 1179685, 5, 0, 1179686, 5, 0, 1179687, 5, 0, 1179688, 5, 0, 1179689, 5, 0, 1179690, 5, 0, 1179691, 5, 0, 1179692, 5, 0, 1179693, 5, 0, 1179694, 5, 0, 1179695, 5, 0, 1179696, 5, 0, 1179697, 5, 0, 1179698, 5, 0, 1179699, 5, 0, 1179700, 12, 0, 1179701, 12, 0, 1179702, 12, 0, 1179703, 12, 0, 1179704, 12, 0, 1179705, 12, 0, 1179706, 12, 0, 1179707, 12, 0, 1179708, 12, 0, 1179709, 12, 0, 1179710, 12, 0, 1179711, 12, 0, 1179712, 12, 0, 1179713, 12, 0, 1179714, 5, 0, 1179715, 5, 0, 1179716, 5, 0, 1179717, 5, 0, 1179718, 5, 0, 1179719, 5, 0, 1179720, 5, 0, 1179721, 5, 0, 1179722, 5, 0, 1179723, 5, 0, 1179724, 5, 0 ) +tile_data = PoolIntArray( -851924, 22, 0, -786390, 3, 1, -786389, 3, 65536, -786388, 3, 65537, -393081, 32, 0, -393080, 4, 0, -393079, 33, 0, -327545, 29, 0, -327544, 5, 0, -327543, 30, 0, -262128, 24, 0, -262009, 29, 0, -262008, 5, 0, -262007, 30, 0, -196594, 13, 1, -196593, 13, 2, -196592, 13, 2, -196591, 13, 2, -196590, 13, 3, -196473, 29, 0, -196472, 5, 0, -196471, 30, 0, -131058, 5, 0, -131057, 5, 0, -131056, 5, 0, -131055, 5, 0, -131054, 5, 0, -130937, 29, 0, -130936, 5, 0, -130935, 30, 0, -65522, 25, 0, -65521, 25, 0, -65520, 25, 0, -65519, 25, 0, -65518, 25, 0, -65401, 29, 0, -65400, 5, 0, -65399, 30, 0, 135, 29, 0, 136, 5, 0, 137, 30, 0, 65653, 22, 0, 65654, 23, 0, 65661, 20, 0, 65666, 24, 0, 65669, 22, 0, 65671, 29, 0, 65672, 5, 0, 65673, 30, 0, 131184, 14, 0, 131185, 4, 0, 131186, 4, 0, 131187, 4, 0, 131188, 4, 0, 131189, 4, 0, 131190, 33, 0, 131195, 32, 0, 131196, 4, 0, 131197, 4, 0, 131198, 4, 0, 131199, 4, 0, 131200, 4, 0, 131201, 4, 0, 131202, 4, 0, 131203, 4, 0, 131204, 4, 0, 131205, 4, 0, 131206, 4, 0, 131207, 10, 0, 131208, 5, 0, 131209, 30, 0, 196720, 5, 0, 196721, 5, 0, 196722, 5, 0, 196723, 5, 0, 196724, 5, 0, 196725, 5, 0, 196726, 30, 0, 196730, 1, 0, 196731, 29, 0, 196732, 5, 0, 196733, 5, 0, 196734, 5, 0, 196735, 5, 0, 196736, 5, 0, 196737, 5, 0, 196738, 5, 0, 196739, 5, 0, 196740, 5, 0, 196741, 5, 0, 196742, 5, 0, 196743, 5, 0, 196744, 1073741829, 0, 196745, 30, 0, 262230, 20, 0, 262256, 5, 0, 262257, 5, 0, 262258, 5, 0, 262259, 5, 0, 262260, 5, 0, 262261, 5, 0, 262262, 30, 0, 262267, 1073741833, 0, 262268, 1073741828, 0, 262269, 1073741828, 0, 262270, 1073741828, 0, 262271, 1073741828, 0, 262272, 1073741828, 0, 262273, 1073741828, 0, 262274, 1073741828, 0, 262275, 1073741828, 0, 262276, 1073741828, 0, 262277, 1073741834, 0, 262278, 5, 0, 262279, 5, 0, 262280, 1073741829, 0, 262281, 30, 0, 327765, 9, 0, 327766, 4, 0, 327767, 4, 0, 327768, 15, 0, 327792, 5, 0, 327793, 5, 0, 327794, 5, 0, 327795, 5, 0, 327796, 5, 0, 327797, 5, 0, 327798, 30, 0, 327814, 5, 0, 327815, 5, 0, 327816, 5, 0, 327817, 30, 0, 393300, 9, 0, 393301, 10, 0, 393302, 5, 0, 393303, 5, 0, 393304, 5, 0, 393328, 5, 0, 393329, 5, 0, 393330, 5, 0, 393331, 5, 0, 393332, 5, 0, 393333, 5, 0, 393334, 30, 0, 393350, 5, 0, 393351, 5, 0, 393352, 5, 0, 393353, 8, 0, 458835, 9, 0, 458836, 10, 0, 458837, 5, 0, 458838, 5, 0, 458839, 5, 0, 458840, 5, 0, 458864, 5, 0, 458865, 5, 0, 458866, 5, 0, 458867, 5, 0, 458868, 5, 0, 458869, 5, 0, 458870, 30, 0, 458871, 536870913, 0, 458886, 1073741850, 0, 458887, 1073741850, 0, 458888, 25, 0, 458889, 25, 0, 458915, 9, 0, 458916, 4, 0, 458917, 4, 0, 524329, 23, 0, 524369, 23, 0, 524370, 9, 0, 524371, 10, 0, 524372, 5, 0, 524373, 5, 0, 524374, 5, 0, 524375, 5, 0, 524376, 5, 0, 524400, 5, 0, 524401, 5, 0, 524402, 5, 0, 524403, 5, 0, 524404, 5, 0, 524405, 5, 0, 524406, 30, 0, 524450, 9, 0, 524451, 10, 0, 524452, 5, 0, 524453, 5, 0, 589864, 32, 0, 589865, 4, 0, 589866, 4, 0, 589867, 7, 0, 589902, 9, 0, 589903, 4, 0, 589904, 4, 0, 589905, 4, 0, 589906, 10, 0, 589907, 5, 0, 589908, 5, 0, 589909, 5, 0, 589910, 5, 0, 589911, 5, 0, 589912, 5, 0, 589936, 5, 0, 589937, 5, 0, 589938, 5, 0, 589939, 5, 0, 589940, 5, 0, 589941, 5, 0, 589942, 8, 0, 589943, 7, 0, 589958, 32, 0, 589959, 4, 0, 589960, 4, 0, 589961, 4, 0, 589962, 4, 0, 589963, 4, 0, 589964, 4, 0, 589965, 4, 0, 589966, 4, 0, 589967, 4, 0, 589968, 4, 0, 589969, 4, 0, 589970, 4, 0, 589971, 4, 0, 589972, 4, 0, 589973, 4, 0, 589974, 4, 0, 589975, 4, 0, 589976, 4, 0, 589977, 4, 0, 589978, 4, 0, 589979, 4, 0, 589980, 4, 0, 589981, 4, 0, 589982, 4, 0, 589983, 4, 0, 589984, 4, 0, 589985, 4, 0, 589986, 10, 0, 589987, 5, 0, 589988, 5, 0, 589989, 5, 0, 655400, 29, 0, 655401, 5, 0, 655402, 5, 0, 655403, 8, 0, 655404, 7, 0, 655437, 9, 0, 655438, 10, 0, 655439, 5, 0, 655440, 5, 0, 655441, 5, 0, 655442, 5, 0, 655443, 5, 0, 655444, 5, 0, 655445, 5, 0, 655446, 5, 0, 655447, 5, 0, 655448, 5, 0, 655472, 5, 0, 655473, 5, 0, 655474, 5, 0, 655475, 5, 0, 655476, 5, 0, 655477, 5, 0, 655478, 5, 0, 655479, 8, 0, 655480, 7, 0, 655493, 1, 0, 655494, 29, 0, 655495, 5, 0, 655496, 5, 0, 655497, 5, 0, 655498, 5, 0, 655499, 5, 0, 655500, 5, 0, 655501, 5, 0, 655502, 5, 0, 655503, 5, 0, 655504, 5, 0, 655505, 5, 0, 655506, 5, 0, 655507, 5, 0, 655508, 5, 0, 655509, 5, 0, 655510, 5, 0, 655511, 5, 0, 655512, 5, 0, 655513, 5, 0, 655514, 5, 0, 655515, 5, 0, 655516, 5, 0, 655517, 5, 0, 655518, 5, 0, 655519, 5, 0, 655520, 5, 0, 655521, 5, 0, 655522, 5, 0, 655523, 5, 0, 655524, 5, 0, 655525, 5, 0, 720935, 1, 0, 720936, 29, 0, 720937, 5, 0, 720938, 5, 0, 720939, 5, 0, 720940, 8, 0, 720941, 7, 0, 720943, 20, 0, 720945, 24, 0, 720964, 23, 0, 720969, 22, 0, 720970, 24, 0, 720972, 9, 0, 720973, 10, 0, 720974, 5, 0, 720975, 5, 0, 720976, 5, 0, 720977, 5, 0, 720978, 5, 0, 720979, 5, 0, 720980, 5, 0, 720981, 5, 0, 720982, 5, 0, 720983, 5, 0, 720984, 5, 0, 721008, 5, 0, 721009, 5, 0, 721010, 5, 0, 721011, 5, 0, 721012, 5, 0, 721013, 5, 0, 721014, 5, 0, 721015, 5, 0, 721016, 8, 0, 721017, 7, 0, 721020, 23, 0, 721022, 24, 0, 721023, 24, 0, 721030, 29, 0, 721031, 5, 0, 721032, 5, 0, 721033, 5, 0, 721034, 5, 0, 721035, 5, 0, 721036, 5, 0, 721037, 5, 0, 721038, 5, 0, 721039, 5, 0, 721040, 5, 0, 721041, 5, 0, 721042, 5, 0, 721043, 5, 0, 721044, 5, 0, 721045, 5, 0, 721046, 5, 0, 721047, 5, 0, 721048, 5, 0, 721049, 5, 0, 721050, 5, 0, 721051, 5, 0, 721052, 5, 0, 721053, 5, 0, 721054, 5, 0, 721055, 5, 0, 721056, 5, 0, 721057, 5, 0, 721058, 5, 0, 721059, 5, 0, 721060, 5, 0, 721061, 5, 0, 786472, 29, 0, 786473, 5, 0, 786474, 5, 0, 786475, 5, 0, 786476, 5, 0, 786477, 8, 0, 786478, 4, 0, 786479, 4, 0, 786480, 4, 0, 786481, 4, 0, 786482, 4, 0, 786483, 15, 0, 786484, 11, 0, 786485, 11, 0, 786486, 11, 0, 786487, 11, 0, 786488, 11, 0, 786489, 11, 0, 786490, 11, 0, 786491, 11, 0, 786492, 11, 0, 786493, 11, 0, 786494, 11, 0, 786495, 11, 0, 786496, 11, 0, 786497, 11, 0, 786498, 14, 0, 786499, 4, 0, 786500, 4, 0, 786501, 4, 0, 786502, 4, 0, 786503, 4, 0, 786504, 4, 0, 786505, 4, 0, 786506, 4, 0, 786507, 4, 0, 786508, 10, 0, 786509, 5, 0, 786510, 5, 0, 786511, 5, 0, 786512, 5, 0, 786513, 5, 0, 786514, 5, 0, 786515, 5, 0, 786516, 5, 0, 786517, 5, 0, 786518, 5, 0, 786519, 5, 0, 786520, 5, 0, 786544, 5, 0, 786545, 5, 0, 786546, 5, 0, 786547, 5, 0, 786548, 5, 0, 786549, 5, 0, 786550, 5, 0, 786551, 5, 0, 786552, 5, 0, 786553, 8, 0, 786554, 4, 0, 786555, 4, 0, 786556, 4, 0, 786557, 4, 0, 786558, 4, 0, 786559, 4, 0, 786560, 4, 0, 786561, 4, 0, 786562, 4, 0, 786563, 4, 0, 786564, 4, 0, 786565, 4, 0, 786566, 10, 0, 786567, 5, 0, 786568, 5, 0, 786569, 5, 0, 786570, 5, 0, 786571, 5, 0, 786572, 5, 0, 786573, 5, 0, 786574, 5, 0, 786575, 5, 0, 786576, 5, 0, 786577, 5, 0, 786578, 5, 0, 786579, 5, 0, 786580, 5, 0, 786581, 5, 0, 786582, 5, 0, 786583, 5, 0, 786584, 5, 0, 786585, 5, 0, 786586, 5, 0, 786587, 5, 0, 786588, 5, 0, 786589, 5, 0, 786590, 5, 0, 786591, 5, 0, 786592, 5, 0, 786593, 5, 0, 786594, 5, 0, 786595, 5, 0, 786596, 5, 0, 786597, 5, 0, 852008, 29, 0, 852009, 5, 0, 852010, 5, 0, 852011, 5, 0, 852012, 5, 0, 852013, 5, 0, 852014, 5, 0, 852015, 5, 0, 852016, 5, 0, 852017, 5, 0, 852018, 5, 0, 852019, 5, 0, 852020, 12, 0, 852021, 12, 0, 852022, 12, 0, 852023, 12, 0, 852024, 12, 0, 852025, 12, 0, 852026, 12, 0, 852027, 12, 0, 852028, 12, 0, 852029, 12, 0, 852030, 12, 0, 852031, 12, 0, 852032, 12, 0, 852033, 12, 0, 852034, 5, 0, 852035, 5, 0, 852036, 5, 0, 852037, 5, 0, 852038, 5, 0, 852039, 5, 0, 852040, 5, 0, 852041, 5, 0, 852042, 5, 0, 852043, 5, 0, 852044, 5, 0, 852045, 5, 0, 852046, 5, 0, 852047, 5, 0, 852048, 5, 0, 852049, 5, 0, 852050, 5, 0, 852051, 5, 0, 852052, 5, 0, 852053, 5, 0, 852054, 5, 0, 852055, 5, 0, 852056, 5, 0, 852080, 5, 0, 852081, 5, 0, 852082, 5, 0, 852083, 5, 0, 852084, 5, 0, 852085, 5, 0, 852086, 5, 0, 852087, 5, 0, 852088, 5, 0, 852089, 5, 0, 852090, 5, 0, 852091, 5, 0, 852092, 5, 0, 852093, 5, 0, 852094, 5, 0, 852095, 5, 0, 852096, 5, 0, 852097, 5, 0, 852098, 5, 0, 852099, 5, 0, 852100, 5, 0, 852101, 5, 0, 852102, 5, 0, 852103, 5, 0, 852104, 5, 0, 852105, 5, 0, 852106, 5, 0, 852107, 5, 0, 852108, 5, 0, 852109, 5, 0, 852110, 5, 0, 852111, 5, 0, 852112, 5, 0, 852113, 5, 0, 852114, 5, 0, 852115, 5, 0, 852116, 5, 0, 852117, 5, 0, 852118, 5, 0, 852119, 5, 0, 852120, 5, 0, 852121, 5, 0, 852122, 5, 0, 852123, 5, 0, 852124, 5, 0, 852125, 5, 0, 852126, 5, 0, 852127, 5, 0, 852128, 5, 0, 852129, 5, 0, 852130, 5, 0, 852131, 5, 0, 852132, 5, 0, 852133, 5, 0, 983033, 4, 0, 983034, 4, 0, 983035, 4, 0, 983036, 4, 0, 983037, 4, 0, 983038, 4, 0, 983039, 4, 0, 917504, 4, 0, 917505, 7, 0, 917512, 23, 0, 917516, 20, 0, 917538, 24, 0, 917541, 22, 0, 917542, 22, 0, 917544, 29, 0, 917545, 5, 0, 917546, 5, 0, 917547, 5, 0, 917548, 5, 0, 917549, 5, 0, 917550, 5, 0, 917551, 5, 0, 917552, 5, 0, 917553, 5, 0, 917554, 5, 0, 917555, 5, 0, 917556, 12, 0, 917557, 12, 0, 917558, 12, 0, 917559, 12, 0, 917560, 12, 0, 917561, 12, 0, 917562, 12, 0, 917563, 12, 0, 917564, 12, 0, 917565, 12, 0, 917566, 12, 0, 917567, 12, 0, 917568, 12, 0, 917569, 12, 0, 917570, 5, 0, 917571, 5, 0, 917572, 5, 0, 917573, 5, 0, 917574, 5, 0, 917575, 5, 0, 917576, 5, 0, 917577, 5, 0, 917578, 5, 0, 917579, 5, 0, 917580, 5, 0, 917581, 5, 0, 917582, 5, 0, 917583, 5, 0, 917584, 5, 0, 917585, 5, 0, 917586, 5, 0, 917587, 5, 0, 917588, 5, 0, 917589, 5, 0, 917590, 5, 0, 917591, 5, 0, 917592, 5, 0, 917616, 5, 0, 917617, 5, 0, 917618, 5, 0, 917619, 5, 0, 917620, 5, 0, 917621, 5, 0, 917622, 5, 0, 917623, 5, 0, 917624, 5, 0, 917625, 5, 0, 917626, 5, 0, 917627, 5, 0, 917628, 5, 0, 917629, 5, 0, 917630, 5, 0, 917631, 5, 0, 917632, 5, 0, 917633, 5, 0, 917634, 5, 0, 917635, 5, 0, 917636, 5, 0, 917637, 5, 0, 917638, 5, 0, 917639, 5, 0, 917640, 5, 0, 917641, 5, 0, 917642, 5, 0, 917643, 5, 0, 917644, 5, 0, 917645, 5, 0, 917646, 5, 0, 917647, 5, 0, 917648, 5, 0, 917649, 5, 0, 917650, 5, 0, 917651, 5, 0, 917652, 5, 0, 917653, 5, 0, 917654, 5, 0, 917655, 5, 0, 917656, 5, 0, 917657, 5, 0, 917658, 5, 0, 917659, 5, 0, 917660, 5, 0, 917661, 5, 0, 917662, 5, 0, 917663, 5, 0, 917664, 5, 0, 917665, 5, 0, 917666, 5, 0, 917667, 5, 0, 917668, 5, 0, 917669, 5, 0, 1048569, 5, 0, 1048570, 5, 0, 1048571, 5, 0, 1048572, 5, 0, 1048573, 5, 0, 1048574, 5, 0, 1048575, 5, 0, 983040, 5, 0, 983041, 8, 0, 983042, 4, 0, 983043, 4, 0, 983044, 4, 0, 983045, 4, 0, 983046, 4, 0, 983047, 4, 0, 983048, 4, 0, 983049, 4, 0, 983050, 4, 0, 983051, 4, 0, 983052, 4, 0, 983053, 4, 0, 983054, 15, 0, 983055, 11, 0, 983056, 11, 0, 983057, 11, 0, 983058, 11, 0, 983059, 11, 0, 983060, 11, 0, 983061, 11, 0, 983062, 11, 0, 983063, 11, 0, 983064, 11, 0, 983065, 11, 0, 983066, 11, 0, 983067, 11, 0, 983068, 11, 0, 983069, 11, 0, 983070, 14, 0, 983071, 4, 0, 983072, 4, 0, 983073, 4, 0, 983074, 4, 0, 983075, 4, 0, 983076, 4, 0, 983077, 4, 0, 983078, 4, 0, 983079, 4, 0, 983080, 10, 0, 983081, 5, 0, 983082, 5, 0, 983083, 5, 0, 983084, 5, 0, 983085, 5, 0, 983086, 5, 0, 983087, 5, 0, 983088, 5, 0, 983089, 5, 0, 983090, 5, 0, 983091, 5, 0, 983092, 12, 0, 983093, 12, 0, 983094, 12, 0, 983095, 12, 0, 983096, 12, 0, 983097, 12, 0, 983098, 12, 0, 983099, 12, 0, 983100, 12, 0, 983101, 12, 0, 983102, 12, 0, 983103, 12, 0, 983104, 12, 0, 983105, 12, 0, 983106, 5, 0, 983107, 5, 0, 983108, 5, 0, 983109, 5, 0, 983110, 5, 0, 983111, 5, 0, 983112, 5, 0, 983113, 5, 0, 983114, 5, 0, 983115, 5, 0, 983116, 5, 0, 983117, 5, 0, 983118, 5, 0, 983119, 5, 0, 983120, 5, 0, 983121, 5, 0, 983122, 5, 0, 983123, 5, 0, 983124, 5, 0, 983125, 5, 0, 983126, 5, 0, 983127, 5, 0, 983128, 5, 0, 983152, 5, 0, 983153, 5, 0, 983154, 5, 0, 983155, 5, 0, 983156, 5, 0, 983157, 5, 0, 983158, 5, 0, 983159, 5, 0, 983160, 5, 0, 983161, 5, 0, 983162, 5, 0, 983163, 5, 0, 983164, 5, 0, 983165, 5, 0, 983166, 5, 0, 983167, 5, 0, 983168, 5, 0, 983169, 5, 0, 983170, 5, 0, 983171, 5, 0, 983172, 5, 0, 983173, 5, 0, 983174, 5, 0, 983175, 5, 0, 983176, 5, 0, 983177, 5, 0, 983178, 5, 0, 983179, 5, 0, 983180, 5, 0, 983181, 5, 0, 983182, 5, 0, 983183, 5, 0, 983184, 5, 0, 983185, 5, 0, 983186, 5, 0, 983187, 5, 0, 983188, 5, 0, 983189, 5, 0, 983190, 5, 0, 983191, 5, 0, 983192, 5, 0, 983193, 5, 0, 983194, 5, 0, 983195, 5, 0, 983196, 5, 0, 983197, 5, 0, 983198, 5, 0, 983199, 5, 0, 983200, 5, 0, 983201, 5, 0, 983202, 5, 0, 983203, 5, 0, 983204, 5, 0, 983205, 5, 0, 1114105, 5, 0, 1114106, 5, 0, 1114107, 5, 0, 1114108, 5, 0, 1114109, 5, 0, 1114110, 5, 0, 1114111, 5, 0, 1048576, 5, 0, 1048577, 5, 0, 1048578, 5, 0, 1048579, 5, 0, 1048580, 5, 0, 1048581, 5, 0, 1048582, 5, 0, 1048583, 5, 0, 1048584, 5, 0, 1048585, 5, 0, 1048586, 5, 0, 1048587, 5, 0, 1048588, 5, 0, 1048589, 5, 0, 1048590, 5, 0, 1048591, 12, 0, 1048592, 12, 0, 1048593, 12, 0, 1048594, 12, 0, 1048595, 12, 0, 1048596, 12, 0, 1048597, 12, 0, 1048598, 12, 0, 1048599, 12, 0, 1048600, 12, 0, 1048601, 12, 0, 1048602, 12, 0, 1048603, 12, 0, 1048604, 12, 0, 1048605, 12, 0, 1048606, 5, 0, 1048607, 5, 0, 1048608, 5, 0, 1048609, 5, 0, 1048610, 5, 0, 1048611, 5, 0, 1048612, 5, 0, 1048613, 5, 0, 1048614, 5, 0, 1048615, 5, 0, 1048616, 5, 0, 1048617, 5, 0, 1048618, 5, 0, 1048619, 5, 0, 1048620, 5, 0, 1048621, 5, 0, 1048622, 5, 0, 1048623, 5, 0, 1048624, 5, 0, 1048625, 5, 0, 1048626, 5, 0, 1048627, 5, 0, 1048628, 12, 0, 1048629, 12, 0, 1048630, 12, 0, 1048631, 12, 0, 1048632, 12, 0, 1048633, 12, 0, 1048634, 12, 0, 1048635, 12, 0, 1048636, 12, 0, 1048637, 12, 0, 1048638, 12, 0, 1048639, 12, 0, 1048640, 12, 0, 1048641, 12, 0, 1048642, 5, 0, 1048643, 5, 0, 1048644, 5, 0, 1048645, 5, 0, 1048646, 5, 0, 1048647, 5, 0, 1048648, 5, 0, 1048649, 5, 0, 1048650, 5, 0, 1048651, 5, 0, 1048652, 5, 0, 1048653, 5, 0, 1048654, 5, 0, 1048655, 5, 0, 1048656, 5, 0, 1048657, 5, 0, 1048658, 5, 0, 1048659, 5, 0, 1048660, 5, 0, 1048661, 5, 0, 1048662, 5, 0, 1048663, 5, 0, 1048664, 5, 0, 1048688, 5, 0, 1048689, 5, 0, 1048690, 5, 0, 1048691, 5, 0, 1048692, 5, 0, 1048693, 5, 0, 1048694, 5, 0, 1048695, 5, 0, 1048696, 5, 0, 1048697, 5, 0, 1048698, 5, 0, 1048699, 5, 0, 1048700, 5, 0, 1048701, 5, 0, 1048702, 5, 0, 1048703, 5, 0, 1048704, 5, 0, 1048705, 5, 0, 1048706, 5, 0, 1048707, 5, 0, 1048708, 5, 0, 1048709, 5, 0, 1048710, 5, 0, 1048711, 5, 0, 1048712, 5, 0, 1048713, 5, 0, 1048714, 5, 0, 1048715, 5, 0, 1048716, 5, 0, 1048717, 5, 0, 1048718, 5, 0, 1048719, 5, 0, 1048720, 5, 0, 1048721, 5, 0, 1048722, 5, 0, 1048723, 5, 0, 1048724, 5, 0, 1048725, 5, 0, 1048726, 5, 0, 1048727, 5, 0, 1048728, 5, 0, 1048729, 5, 0, 1048730, 5, 0, 1048731, 5, 0, 1048732, 5, 0, 1048733, 5, 0, 1048734, 5, 0, 1048735, 5, 0, 1048736, 5, 0, 1048737, 5, 0, 1048738, 5, 0, 1048739, 5, 0, 1048740, 5, 0, 1048741, 5, 0, 1179641, 5, 0, 1179642, 5, 0, 1179643, 5, 0, 1179644, 5, 0, 1179645, 5, 0, 1179646, 5, 0, 1179647, 5, 0, 1114112, 5, 0, 1114113, 5, 0, 1114114, 5, 0, 1114115, 5, 0, 1114116, 5, 0, 1114117, 5, 0, 1114118, 5, 0, 1114119, 5, 0, 1114120, 5, 0, 1114121, 5, 0, 1114122, 5, 0, 1114123, 5, 0, 1114124, 5, 0, 1114125, 5, 0, 1114126, 5, 0, 1114127, 12, 0, 1114128, 12, 0, 1114129, 12, 0, 1114130, 12, 0, 1114131, 12, 0, 1114132, 12, 0, 1114133, 12, 0, 1114134, 12, 0, 1114135, 12, 0, 1114136, 12, 0, 1114137, 12, 0, 1114138, 12, 0, 1114139, 12, 0, 1114140, 12, 0, 1114141, 12, 0, 1114142, 5, 0, 1114143, 5, 0, 1114144, 5, 0, 1114145, 5, 0, 1114146, 5, 0, 1114147, 5, 0, 1114148, 5, 0, 1114149, 5, 0, 1114150, 5, 0, 1114151, 5, 0, 1114152, 5, 0, 1114153, 5, 0, 1114154, 5, 0, 1114155, 5, 0, 1114156, 5, 0, 1114157, 5, 0, 1114158, 5, 0, 1114159, 5, 0, 1114160, 5, 0, 1114161, 5, 0, 1114162, 5, 0, 1114163, 5, 0, 1114164, 12, 0, 1114165, 12, 0, 1114166, 12, 0, 1114167, 12, 0, 1114168, 12, 0, 1114169, 12, 0, 1114170, 12, 0, 1114171, 12, 0, 1114172, 12, 0, 1114173, 12, 0, 1114174, 12, 0, 1114175, 12, 0, 1114176, 12, 0, 1114177, 12, 0, 1114178, 5, 0, 1114179, 5, 0, 1114180, 5, 0, 1114181, 5, 0, 1114182, 5, 0, 1114183, 5, 0, 1114184, 5, 0, 1114185, 5, 0, 1114186, 5, 0, 1114187, 5, 0, 1114188, 5, 0, 1114189, 5, 0, 1114190, 5, 0, 1114191, 5, 0, 1114192, 5, 0, 1114193, 5, 0, 1114194, 5, 0, 1114195, 5, 0, 1114196, 5, 0, 1114197, 5, 0, 1114198, 5, 0, 1114199, 5, 0, 1114200, 5, 0, 1114224, 5, 0, 1114225, 5, 0, 1114226, 5, 0, 1114227, 5, 0, 1114228, 5, 0, 1114229, 5, 0, 1114230, 5, 0, 1114231, 5, 0, 1114232, 5, 0, 1114233, 5, 0, 1114234, 5, 0, 1114235, 5, 0, 1114236, 5, 0, 1114237, 5, 0, 1114238, 5, 0, 1114239, 5, 0, 1114240, 5, 0, 1114241, 5, 0, 1114242, 5, 0, 1114243, 5, 0, 1114244, 5, 0, 1114245, 5, 0, 1114246, 5, 0, 1114247, 5, 0, 1114248, 5, 0, 1114249, 5, 0, 1114250, 5, 0, 1114251, 5, 0, 1114252, 5, 0, 1114253, 5, 0, 1114254, 5, 0, 1114255, 5, 0, 1114256, 5, 0, 1114257, 5, 0, 1114258, 5, 0, 1114259, 5, 0, 1114260, 5, 0, 1114261, 5, 0, 1114262, 5, 0, 1114263, 5, 0, 1114264, 5, 0, 1114265, 5, 0, 1114266, 5, 0, 1114267, 5, 0, 1114268, 5, 0, 1114269, 5, 0, 1114270, 5, 0, 1114271, 5, 0, 1114272, 5, 0, 1114273, 5, 0, 1114274, 5, 0, 1114275, 5, 0, 1114276, 5, 0, 1114277, 5, 0, 1245177, 5, 0, 1245178, 5, 0, 1245179, 5, 0, 1245180, 5, 0, 1245181, 5, 0, 1245182, 5, 0, 1245183, 5, 0, 1179648, 5, 0, 1179649, 5, 0, 1179650, 5, 0, 1179651, 5, 0, 1179652, 5, 0, 1179653, 5, 0, 1179654, 5, 0, 1179655, 5, 0, 1179656, 5, 0, 1179657, 5, 0, 1179658, 5, 0, 1179659, 5, 0, 1179660, 5, 0, 1179661, 5, 0, 1179662, 5, 0, 1179663, 12, 0, 1179664, 12, 0, 1179665, 12, 0, 1179666, 12, 0, 1179667, 12, 0, 1179668, 12, 0, 1179669, 12, 0, 1179670, 12, 0, 1179671, 12, 0, 1179672, 12, 0, 1179673, 12, 0, 1179674, 12, 0, 1179675, 12, 0, 1179676, 12, 0, 1179677, 12, 0, 1179678, 5, 0, 1179679, 5, 0, 1179680, 5, 0, 1179681, 5, 0, 1179682, 5, 0, 1179683, 5, 0, 1179684, 5, 0, 1179685, 5, 0, 1179686, 5, 0, 1179687, 5, 0, 1179688, 5, 0, 1179689, 5, 0, 1179690, 5, 0, 1179691, 5, 0, 1179692, 5, 0, 1179693, 5, 0, 1179694, 5, 0, 1179695, 5, 0, 1179696, 5, 0, 1179697, 5, 0, 1179698, 5, 0, 1179699, 5, 0, 1179700, 12, 0, 1179701, 12, 0, 1179702, 12, 0, 1179703, 12, 0, 1179704, 12, 0, 1179705, 12, 0, 1179706, 12, 0, 1179707, 12, 0, 1179708, 12, 0, 1179709, 12, 0, 1179710, 12, 0, 1179711, 12, 0, 1179712, 12, 0, 1179713, 12, 0, 1179714, 5, 0, 1179715, 5, 0, 1179716, 5, 0, 1179717, 5, 0, 1179718, 5, 0, 1179719, 5, 0, 1179720, 5, 0, 1179721, 5, 0, 1179722, 5, 0, 1179723, 5, 0, 1179724, 5, 0, 1179725, 5, 0, 1179726, 5, 0, 1179727, 5, 0, 1179728, 5, 0, 1179729, 5, 0, 1179730, 5, 0, 1179731, 5, 0, 1179732, 5, 0, 1179733, 5, 0, 1179734, 5, 0, 1179735, 5, 0, 1179736, 5, 0, 1179760, 5, 0, 1179761, 5, 0, 1179762, 5, 0, 1179763, 5, 0, 1179764, 5, 0, 1179765, 5, 0, 1179766, 5, 0, 1179767, 5, 0, 1179768, 5, 0, 1179769, 5, 0, 1179770, 5, 0, 1179771, 5, 0, 1179772, 5, 0, 1179773, 5, 0, 1179774, 5, 0, 1179775, 5, 0, 1179776, 5, 0, 1179777, 5, 0, 1179778, 5, 0, 1179779, 5, 0, 1179780, 5, 0, 1179781, 5, 0, 1179782, 5, 0, 1179783, 5, 0, 1179784, 5, 0, 1179785, 5, 0, 1179786, 5, 0, 1179787, 5, 0, 1179788, 5, 0, 1179789, 5, 0, 1179790, 5, 0, 1179791, 5, 0, 1179792, 5, 0, 1179793, 5, 0, 1179794, 5, 0, 1179795, 5, 0, 1179796, 5, 0, 1179797, 5, 0, 1179798, 5, 0, 1179799, 5, 0, 1179800, 5, 0, 1179801, 5, 0, 1179802, 5, 0, 1179803, 5, 0, 1179804, 5, 0, 1179805, 5, 0, 1179806, 5, 0, 1179807, 5, 0, 1179808, 5, 0, 1179809, 5, 0, 1179810, 5, 0, 1179811, 5, 0, 1179812, 5, 0, 1179813, 5, 0 ) [node name="CanvasModulate" type="CanvasModulate" parent="."] color = Color( 0.501961, 0.501961, 0.501961, 1 ) @@ -49,6 +139,10 @@ color = Color( 0.501961, 0.501961, 0.501961, 1 ) modulate = Color( 0.59, 0.59, 0.59, 1 ) position = Vector2( 35, 665 ) +[node name="CollidingMountain4" parent="." instance=ExtResource( 5 )] +modulate = Color( 0.59, 0.59, 0.59, 1 ) +position = Vector2( 11515, 175 ) + [node name="CollidingMountain" parent="." instance=ExtResource( 5 )] modulate = Color( 0.59, 0.59, 0.59, 1 ) position = Vector2( 175, 770 ) @@ -56,6 +150,12 @@ position = Vector2( 175, 770 ) [node name="monster_01" parent="." instance=ExtResource( 7 )] position = Vector2( 2205, 1015 ) +[node name="monster_10" parent="." instance=ExtResource( 7 )] +position = Vector2( 6125, 315 ) + +[node name="monster_09" parent="." instance=ExtResource( 7 )] +position = Vector2( 5180, 805 ) + [node name="monster_04" parent="." instance=ExtResource( 7 )] position = Vector2( 3360, 805 ) @@ -143,11 +243,23 @@ recover_time = 5.0 position = Vector2( 4340, 805 ) recover_time = 5.0 +[node name="FallingLog22" parent="." instance=ExtResource( 8 )] +position = Vector2( 6615, 210 ) +recover_time = 5.0 + +[node name="FallingLog23" parent="." instance=ExtResource( 8 )] +position = Vector2( 7000, 70 ) +recover_time = 5.0 + +[node name="FallingLog24" parent="." instance=ExtResource( 8 )] +position = Vector2( 7420, 0 ) +recover_time = 5.0 + [node name="Key" parent="." instance=ExtResource( 10 )] position = Vector2( 1085, -280 ) [node name="Key2" parent="." instance=ExtResource( 10 )] -position = Vector2( 3010, -910 ) +position = Vector2( 3045, -910 ) key_color = 3 [node name="Coin" parent="." instance=ExtResource( 11 )] @@ -200,3 +312,49 @@ margin_right = 5390.0 margin_bottom = 910.0 rect_pivot_offset = Vector2( 1225, 0 ) speed = 6.0 + +[node name="monster_11" parent="." instance=ExtResource( 9 )] +margin_left = 8470.0 +margin_top = 420.0 +margin_right = 9240.0 +margin_bottom = 840.0 +rect_pivot_offset = Vector2( 1225, 0 ) +speed = 6.0 +cooldown_time = 1.5 +bullet_speed = 5.0 +damage = 15 + +[node name="monster_12" parent="." instance=ExtResource( 9 )] +margin_left = 8330.0 +margin_top = -210.0 +margin_right = 9310.0 +margin_bottom = 140.0 +rect_pivot_offset = Vector2( 1225, 0 ) +speed = 8.0 +cooldown_time = 1.5 +bullet_speed = 5.0 +damage = 15 + +[node name="Door" parent="." instance=ExtResource( 12 )] +position = Vector2( 9485, 525 ) + +[node name="Castle" parent="." instance=ExtResource( 13 )] +position = Vector2( 10710, 105 ) +z_index = -10 + +[node name="CollidingMountain3" parent="." instance=ExtResource( 5 )] +modulate = Color( 0.59, 0.59, 0.59, 1 ) +position = Vector2( 11375, 315 ) + +[node name="Flake" parent="." instance=ExtResource( 14 )] +modulate = Color( 1, 1, 1, 0 ) +position = Vector2( 9590, -490 ) +scale = Vector2( 0.2, 0.2 ) +animation = 1 + +[node name="FlakeAnimation" type="AnimationPlayer" parent="."] +anims/move = SubResource( 3 ) +anims/reset = SubResource( 4 ) + +[connection signal="player_entered_castle" from="Castle" to="." method="_on_Castle_player_entered_castle"] +[connection signal="animation_finished" from="FlakeAnimation" to="." method="_on_FlakeAnimation_finished"] diff --git a/scenes/levels/credits/credits.gd b/scenes/levels/credits/credits.gd new file mode 100644 index 0000000..020909d --- /dev/null +++ b/scenes/levels/credits/credits.gd @@ -0,0 +1,7 @@ +extends "res://scenes/levels/interlude.gd" + +func _ready(): + $CanvasLayer/CreditsScroller.play("scroll") + +func _on_CreditsScroller_finished(anim_name): + get_tree().quit() diff --git a/scenes/levels/credits/credits.tscn b/scenes/levels/credits/credits.tscn new file mode 100644 index 0000000..4da5bc2 --- /dev/null +++ b/scenes/levels/credits/credits.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://scenes/levels/credits/credits.gd" type="Script" id=1] +[ext_resource path="res://common/fonts/ComicNeue-Bold.ttf" type="DynamicFontData" id=2] +[ext_resource path="res://common/fonts/ComicNeue-Regular.ttf" type="DynamicFontData" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 48 +font_data = ExtResource( 2 ) + +[sub_resource type="DynamicFont" id=2] +size = 48 +font_data = ExtResource( 3 ) + +[sub_resource type="Animation" id=3] +resource_name = "scroll" +length = 60.0 +tracks/0/type = "value" +tracks/0/path = NodePath("RichTextLabel:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 60 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 1080 ), Vector2( 0, -2350 ) ] +} + +[node name="Credits" type="Node2D"] +script = ExtResource( 1 ) +hud_visible = false +clear_color = Color( 0, 0, 0, 1 ) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="RichTextLabel" type="RichTextLabel" parent="CanvasLayer"] +margin_top = 1080.0 +margin_right = 1925.0 +margin_bottom = 3430.0 +custom_fonts/bold_font = SubResource( 1 ) +custom_fonts/normal_font = SubResource( 2 ) +bbcode_enabled = true +bbcode_text = "[center][b]Thank you for playing![/b] + + + + + + +[b]Development[/b] +Fusselkater + + +[b]Testing[/b] +xtristrix +oile + + +[b]Assets[/b] +World Assets: kenney (kenney.nl) +Flopsy & Flake: pzUH (opengameart.org) +Monster 01: bevouliin.com (opengameart.org) +14-segment-fonts: keshikan (keshikan.net) +Intro Background: Westbeam (opengameart.org) +Level 2 Background: scorcher24 (opengameart.org) + + +[b]Soundeffects[/b] +Soundpack 02: crazyduckgames (opengameart.org) +Soundpack 04: crazyduckgames (opengameart.org) +kenney (kenney.nl) + + +[b]Music[/b] +Intro: yd (opengameart.org) +Level 1: remaxim (opengameart.org) +Interlude 1: peastman (opengameart.org) +Level 2: Augmentality (Brandon Morris) (opengameart.org) +Interlude 2: RandomMind (opengameart.org) + + + +[b]See you later[/b]" +text = "Thank you for playing! + + + + + + +Development +Fusselkater + + +Testing +xtristrix +oile + + +Assets +World Assets: kenney (kenney.nl) +Flopsy & Flake: pzUH (opengameart.org) +Monster 01: bevouliin.com (opengameart.org) +14-segment-fonts: keshikan (keshikan.net) +Intro Background: Westbeam (opengameart.org) +Level 2 Background: scorcher24 (opengameart.org) + + +Soundeffects +Soundpack 02: crazyduckgames (opengameart.org) +Soundpack 04: crazyduckgames (opengameart.org) +kenney (kenney.nl) + + +Music +Intro: yd (opengameart.org) +Level 1: remaxim (opengameart.org) +Interlude 1: peastman (opengameart.org) +Level 2: Augmentality (Brandon Morris) (opengameart.org) +Interlude 2: RandomMind (opengameart.org) + + + +See you later" +scroll_active = false + +[node name="CreditsScroller" type="AnimationPlayer" parent="CanvasLayer"] +anims/scroll = SubResource( 3 ) + +[connection signal="animation_finished" from="CanvasLayer/CreditsScroller" to="." method="_on_CreditsScroller_finished"] diff --git a/scenes/main.tscn b/scenes/main.tscn index eafc059..a35042b 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -20,7 +20,7 @@ tracks/0/keys = { [node name="Main" type="Node2D"] script = ExtResource( 3 ) -level_path = "res://scenes/levels/02/level_02.tscn" +level_path = "res://scenes/levels/00/interlude_00.tscn" [node name="HUD" parent="." instance=ExtResource( 1 )]