diff --git a/src/Actors/Blobby/Blobby.gd b/src/Actors/Blobby/Blobby.gd index a78f0a6..0b28d24 100644 --- a/src/Actors/Blobby/Blobby.gd +++ b/src/Actors/Blobby/Blobby.gd @@ -437,5 +437,6 @@ func _on_GameplaySignalManager_getback_timer_up() -> void: func _on_BlobbySkin_body_exited(body:Node) -> void: + # This is for drop through platforms if body.get_collision_mask_bit(7): set_collision_mask_bit(7, true) diff --git a/src/Actors/Enemies/Beings/BoundFrog.gd b/src/Actors/Enemies/Beings/BoundFrog.gd index ab9ef38..07a7545 100644 --- a/src/Actors/Enemies/Beings/BoundFrog.gd +++ b/src/Actors/Enemies/Beings/BoundFrog.gd @@ -2,17 +2,53 @@ extends Node2D var Rope = preload("res://src/Contraptions/Rope/Rope.tscn") -var start_pos := Vector2.ZERO -var end_pos := Vector2.ZERO - -func _ready() -> void: - pass +var RopeAnchor = preload("res://src/Contraptions/Rope/RopeAnchor.tscn") +var rope +var is_first_signal = true func _on_LevelTemplate_ready() -> void: - var rope = Rope.instance() + rope = Rope.instance() + # For some reason the rope only can be instanced in the parent scene + # The scene also has to be ready beforehand get_parent().add_child(rope) rope.rope_end = get_node("RopeAnchor") rope.rope_start = get_node("WhatAreFrog") rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint") rope.rope_start_joint = get_node("WhatAreFrog/cshape/pjoint") - rope.spawn_rope($RopeAnchor.global_position, $RopeAnchor.global_position, false) + rope.spawn_rope($WhatAreFrog.global_position, $WhatAreFrog.global_position + Vector2(100,0), false) + pass + +# Executes on frog death +# The old switchero +func _on_WhatAreFrog_child_exiting_tree(node:Node) -> void: + if(is_first_signal): + var anchor = RopeAnchor.instance() + anchor.mode = 0 + add_child(anchor) + anchor.global_position = rope.rope_start_joint.global_position + rope.queue_free() + rope = Rope.instance() + # For some reason the rope only can be instanced in the parent scene + # The scene also has to be ready beforehand + get_parent().add_child(rope) + rope.rope_end = get_node("RopeAnchor") + rope.rope_start = anchor + rope.rope_end_joint = get_node("RopeAnchor/cshape/pjoint") + rope.rope_start_joint = anchor.get_node("cshape/pjoint") + rope.spawn_rope(anchor.global_position, $RopeAnchor.global_position, false) + is_first_signal = false + # rope.rope_start = anchor + # anchor.global_position = rope.rope_start_joint.global_position + # rope.rope_start_joint = anchor.get_node("cshape/pjoint") + # rope.rope_pieces[0] = anchor + # var first_piece = rope.rope_pieces[1] + # rope.rope_start_joint.node_a = anchor.get_path + # rope.rope_start_joint.node_b = first_piece.get_path() + # first_piece.get_node("cshape/pjoint").node_b = anchor.get_path() + else: + pass + # var lastPiecePath: NodePath = $WhatAreFrog/cshape/pjoint.node_b + # print(lastPiecePath) + # var lastPiece: Node = get_node(lastPiecePath) + # print(lastPiece) + # lastPiece.get_node("cshape/pjoint").node_a = anchor.get_path() diff --git a/src/Actors/Enemies/Beings/BoundFrog.tscn b/src/Actors/Enemies/Beings/BoundFrog.tscn index bae7898..472a7f5 100644 --- a/src/Actors/Enemies/Beings/BoundFrog.tscn +++ b/src/Actors/Enemies/Beings/BoundFrog.tscn @@ -12,4 +12,6 @@ script = ExtResource( 3 ) [node name="RopeAnchor" parent="." instance=ExtResource( 2 )] position = Vector2( -136, 11 ) +[connection signal="child_exiting_tree" from="WhatAreFrog" to="." method="_on_WhatAreFrog_child_exiting_tree"] + [editable path="RopeAnchor"] diff --git a/src/Actors/Enemies/Beings/WhatAreFrog.gd b/src/Actors/Enemies/Beings/WhatAreFrog.gd index 88e7241..6291b6d 100644 --- a/src/Actors/Enemies/Beings/WhatAreFrog.gd +++ b/src/Actors/Enemies/Beings/WhatAreFrog.gd @@ -1,8 +1,6 @@ extends Player const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") -var Rope = preload("res://src/Contraptions/Rope/Rope.tscn") - onready var orientation: RayCast2D = $Orientation onready var jump_timer: Timer @@ -10,10 +8,11 @@ export var score := 100 var start_x = 0 var in_air = false -var died = false +var is_hurt = false func _ready(): jump_timer = Timer.new() + jump_timer.set_one_shot(true) jump_timer.connect("timeout", self, "jump") add_child(jump_timer) @@ -22,8 +21,10 @@ func _ready(): func _on_StompDetector_body_entered(body: Node) -> void: if body.global_position.y > get_node("StompDetector").global_position.y: return - get_node("EnemyBody").disabled = true - die() + if body.is_in_group("player"): + remove_from_group("harmful") + is_hurt = true + func execute_movement(delta: float) -> void: velocity.y += _gravity * delta @@ -37,10 +38,9 @@ func execute_movement(delta: float) -> void: func die() -> void: - if(!died): - GlobalState.score += score - died = true - #queue_free() + GlobalState.score += score + + queue_free() func _on_EnemySkin_area_entered(area:Area2D) -> void: @@ -48,6 +48,7 @@ func _on_EnemySkin_area_entered(area:Area2D) -> void: get_node("EnemyBody").disabled = true die() + func searching() -> Vector2: if(is_on_floor()): if(jump_timer.is_stopped()): @@ -58,9 +59,16 @@ func searching() -> Vector2: else: if(!in_air): start_x = global_position.x + jump_timer.stop() in_air = true return velocity + +func sleeping() -> Vector2: + jump_timer.stop() + return velocity + + func jump(): var v: Vector2 = velocity_for_jump_distance() var jump_height = (pow(v.length(), 2) * pow(sin(deg2rad(65)),2))/(2*_gravity) @@ -68,6 +76,7 @@ func jump(): $CeilingRayCast.cast_to = Vector2(1.5*24 * sign(orientation.cast_to.x), - jump_height) velocity = v + func velocity_for_jump_distance(distance: float = 3*24, angle: float = deg2rad(65)) -> Vector2: var abs_velocity = sqrt((distance * _gravity)/sin(2*angle)) return Vector2(abs_velocity,0).rotated(-1*angle) diff --git a/src/Actors/Enemies/Beings/WhatAreFrog.tscn b/src/Actors/Enemies/Beings/WhatAreFrog.tscn index 5183bbd..146c177 100644 --- a/src/Actors/Enemies/Beings/WhatAreFrog.tscn +++ b/src/Actors/Enemies/Beings/WhatAreFrog.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://assets/enemy/enemy.png" type="Texture" id=1] [ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrog.gd" type="Script" id=2] [ext_resource path="res://src/Actors/Enemies/Beings/WhatAreFrogStateMachine.gd" type="Script" id=3] +[ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=4] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 2.72463, 1.17848 ) @@ -22,6 +23,19 @@ script = ExtResource( 2 ) [node name="Statemachine" type="Node2D" parent="."] script = ExtResource( 3 ) +[node name="StateLabel" type="Label" parent="."] +show_behind_parent = true +margin_left = -36.0 +margin_top = -30.0 +margin_right = 37.0 +margin_bottom = -16.0 +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_colors/font_outline_modulate = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 4 ) +text = "Ihre Werbung" +align = 1 +valign = 1 + [node name="FrogSprite" type="Sprite" parent="."] position = Vector2( 0, -1.90735e-06 ) scale = Vector2( 0.286789, 0.276348 ) @@ -67,7 +81,7 @@ scale = Vector2( 0.1, 0.1 ) [node name="pjoint" type="PinJoint2D" parent="cshape"] scale = Vector2( 0.3, 0.3 ) -bias = 0.9 +bias = 0.108 softness = 0.1 [node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]] diff --git a/src/Actors/Enemies/Beings/WhatAreFrogStateMachine.gd b/src/Actors/Enemies/Beings/WhatAreFrogStateMachine.gd index 7110db4..a838ba8 100644 --- a/src/Actors/Enemies/Beings/WhatAreFrogStateMachine.gd +++ b/src/Actors/Enemies/Beings/WhatAreFrogStateMachine.gd @@ -19,13 +19,24 @@ func _ready() -> void: # Game logic consequences of state func _state_logic(delta): - if(!(parent.died && parent.is_on_floor())): - var state_action_ref = funcref(parent, self.state) - parent.velocity = state_action_ref.call_func() - parent.execute_movement(delta) + var state_action_ref = funcref(parent, self.state) + parent.velocity = state_action_ref.call_func() + parent.execute_movement(delta) func _get_transition(_delta): + parent.get_node("StateLabel").text = ( + self.state + # + " x vel:" + # + String(round(parent.velocity.x)) + # + " y vel/10:" + # + String(round(parent.velocity.y / 10)) + ) + var new_state + if parent.is_hurt: + new_state = states.sleeping + if new_state != self.state: + return new_state return null diff --git a/src/Contraptions/Rope/Rope.gd b/src/Contraptions/Rope/Rope.gd index 1a7a754..7ea9528 100644 --- a/src/Contraptions/Rope/Rope.gd +++ b/src/Contraptions/Rope/Rope.gd @@ -33,8 +33,6 @@ func spawn_rope(start_pos: Vector2, end_pos: Vector2, new_anchors: bool = true): add_child(rope_end, true) rope_start.global_position = start_pos rope_end.global_position = end_pos - start_pos = rope_start_joint.global_position - end_pos = rope_end_joint.global_position var dist = start_pos.distance_to(end_pos) var pieces_amount = round(dist / piece_length) var spawn_angle = (end_pos-start_pos).angle() - PI/2 @@ -54,16 +52,16 @@ func create_rope(pieces_amount: int, last_piece: Object, end_pos: Vector2, spawn rope_end_joint.node_b = rope_pieces[-1].get_path() -func add_piece(prev_link: Object, id: int, spawn_angle:float) -> Object: - var joint: PinJoint2D = prev_link.get_node("cshape/pjoint") as PinJoint2D +func add_piece(prev_piece: Object, id: int, spawn_angle:float) -> Object: + var prev_joint: PinJoint2D = prev_piece.get_node("cshape/pjoint") as PinJoint2D var new_piece: Object = RopePiece.instance() as Object - new_piece.global_position = joint.global_position + new_piece.global_position = prev_joint.global_position new_piece.rotation = spawn_angle - new_piece.prev_link = prev_link + new_piece.prev_piece = prev_piece new_piece.id = id - add_child(new_piece) - joint.node_a = prev_link.get_path() - joint.node_b = new_piece.get_path() + add_child(new_piece, true) + prev_joint.node_a = prev_piece.get_path() + prev_joint.node_b = new_piece.get_path() return new_piece diff --git a/src/Contraptions/Rope/RopeAnchor.tscn b/src/Contraptions/Rope/RopeAnchor.tscn index cc279ce..b90de95 100644 --- a/src/Contraptions/Rope/RopeAnchor.tscn +++ b/src/Contraptions/Rope/RopeAnchor.tscn @@ -11,6 +11,7 @@ collision_layer = 256 collision_mask = 8 input_pickable = true mode = 1 +mass = 0.01 linear_damp = 1.0 angular_damp = 1.0 diff --git a/src/Contraptions/Rope/RopePiece.gd b/src/Contraptions/Rope/RopePiece.gd index a3a48bc..fd4b4ce 100644 --- a/src/Contraptions/Rope/RopePiece.gd +++ b/src/Contraptions/Rope/RopePiece.gd @@ -2,4 +2,4 @@ extends RigidBody2D var id := -1 -var prev_link: Object = null +var prev_piece: Object = null diff --git a/src/Contraptions/Rope/RopePiece.tscn b/src/Contraptions/Rope/RopePiece.tscn index ad3ca4b..a6136d4 100644 --- a/src/Contraptions/Rope/RopePiece.tscn +++ b/src/Contraptions/Rope/RopePiece.tscn @@ -9,7 +9,6 @@ height = 1.0 [node name="RigidBody2D" type="RigidBody2D"] collision_layer = 256 collision_mask = 8 -gravity_scale = 0.2 linear_damp = 1.0 angular_damp = 1.0 script = ExtResource( 1 ) @@ -21,5 +20,4 @@ shape = SubResource( 1 ) [node name="pjoint" type="PinJoint2D" parent="cshape"] position = Vector2( 0, 1.5 ) scale = Vector2( 0.3, 0.3 ) -bias = 0.1 softness = 0.1 diff --git a/src/Levels/The Line Level.gd b/src/Levels/The Line Level.gd index 36baf3b..98ead8e 100644 --- a/src/Levels/The Line Level.gd +++ b/src/Levels/The Line Level.gd @@ -15,17 +15,17 @@ func _ready() -> void: # rope.rope_end_joint = get_node("BoundFrog/WhatAreFrog/cshape/pjoint") # rope.spawn_rope($BoundFrog/RopeAnchor.global_position, $BoundFrog.global_position, false) -func _input(event): - if event is InputEventMouseButton && !event.is_pressed(): - if start_pos == Vector2.ZERO: - start_pos = get_global_mouse_position() - elif end_pos == Vector2.ZERO: - end_pos = get_global_mouse_position() - rope = Rope.instance() - add_child(rope) - rope.spawn_rope(start_pos, end_pos) - start_pos = Vector2.ZERO - end_pos = Vector2.ZERO +# func _input(event): +# if event is InputEventMouseButton && !event.is_pressed(): +# if start_pos == Vector2.ZERO: +# start_pos = get_global_mouse_position() +# elif end_pos == Vector2.ZERO: +# end_pos = get_global_mouse_position() +# rope = Rope.instance() +# add_child(rope) +# rope.spawn_rope(start_pos, end_pos) +# start_pos = Vector2.ZERO +# end_pos = Vector2.ZERO # if rope != null && event.is_action_pressed("click"): # rope.mouse_follow = true # if event.is_action_released("click"): diff --git a/src/Levels/The Line Level.tscn b/src/Levels/The Line Level.tscn index 4a29907..1583684 100644 --- a/src/Levels/The Line Level.tscn +++ b/src/Levels/The Line Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=2] +[gd_scene load_steps=15 format=2] [ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=1] [ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=2] @@ -12,6 +12,7 @@ [ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=10] [ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=11] [ext_resource path="res://src/Actors/Enemies/Beings/BoundFrog.tscn" type="PackedScene" id=12] +[ext_resource path="res://src/ObstacleObjects/Spikes.tscn" type="PackedScene" id=13] [sub_resource type="AnimationNodeStateMachinePlayback" id=4] @@ -30,12 +31,13 @@ wait_time = 20.0 [node name="TileMap" type="TileMap" parent="."] tile_set = ExtResource( 2 ) cell_size = Vector2( 24, 24 ) -cell_quadrant_size = 3 -cell_custom_transform = Transform2D( 24, 0, 0, 24, 0, 0 ) collision_layer = 8 collision_mask = 8 format = 1 -tile_data = PoolIntArray( 0, -1610612732, 0, 260, -1073741820, 0, 131070, -1610612733, 0, 131071, 1610612738, 0, 65536, 1610612738, 0, 65537, 1610612738, 0, 65538, 1610612738, 0, 65539, 1610612738, 0, 65540, 1610612738, 0, 65541, 1610612738, 0, 65542, 1610612738, 0, 65543, 1610612738, 0, 65544, 1610612738, 0, 65545, 1610612738, 0, 65546, 1610612738, 0, 65547, 1610612738, 0, 65548, 1610612738, 0, 65549, 1610612738, 0, 65550, 1610612738, 0, 65551, 1610612738, 0, 65552, 1610612738, 0, 65553, 1610612738, 0, 65554, 1610612738, 0, 65555, 1610612738, 0, 65556, 1610612738, 0, 65557, 1610612738, 0, 65558, 1610612738, 0, 65559, 1610612738, 0, 65560, 1610612738, 0, 65561, 1610612738, 0, 65562, 1610612738, 0, 65563, 1610612738, 0, 65564, 1610612738, 0, 65565, 1610612738, 0, 65566, -1610612733, 0, 65796, -1073741820, 0, 196606, -1610612734, 0, 131072, -1610612732, 0, 131102, -1073741822, 0, 131332, -1073741820, 0, 262142, -1610612734, 0, 196608, -1610612732, 0, 196638, -1073741822, 0, 196868, -1073741820, 0, 327678, -1610612734, 0, 262144, -1610612732, 0, 262174, -1073741822, 0, 262404, -1073741820, 0, 393214, -1610612734, 0, 327680, -1610612732, 0, 327710, -1073741822, 0, 327940, -1073741820, 0, 458750, -1610612734, 0, 393216, -1610612732, 0, 393246, -1073741822, 0, 393476, -1073741820, 0, 524286, -1610612734, 0, 458752, -1610612732, 0, 458782, -1073741822, 0, 459012, -1073741820, 0, 589822, -1610612734, 0, 524288, -1610612732, 0, 524318, -1073741822, 0, 524548, -1073741820, 0, 655358, -1610612734, 0, 589824, -1610612732, 0, 589854, -1073741822, 0, 590084, -1073741820, 0, 720894, -1610612734, 0, 655360, -1610612732, 0, 655390, -1073741822, 0, 655620, -1073741820, 0, 786430, -1610612734, 0, 720896, -1610612732, 0, 720926, -1073741822, 0, 721156, -1073741820, 0, 851966, -1610612734, 0, 786432, -1610612732, 0, 786462, -1073741822, 0, 786692, -1073741820, 0, 917502, -1610612734, 0, 851968, -1610612732, 0, 851998, -1073741822, 0, 852228, -1073741820, 0, 983038, -1610612733, 0, 983039, 2, 0, 917504, 2, 0, 917505, 2, 0, 917506, 2, 0, 917507, 2, 0, 917508, 2, 0, 917509, 2, 0, 917510, 2, 0, 917511, 2, 0, 917512, 2, 0, 917513, 2, 0, 917514, 2, 0, 917515, 2, 0, 917516, 2, 0, 917517, 2, 0, 917518, 2, 0, 917519, 2, 0, 917520, 2, 0, 917521, 2, 0, 917522, 2, 0, 917523, 2, 0, 917524, 2, 0, 917525, 2, 0, 917526, 2, 0, 917527, 2, 0, 917528, 2, 0, 917529, 2, 0, 917530, 2, 0, 917531, 2, 0, 917532, 2, 0, 917533, 2, 0, 917534, -1073741821, 0, 917535, 4, 0, 917536, 4, 0, 917538, 4, 0, 917539, 4, 0, 917540, 4, 0, 917541, 4, 0, 917542, 4, 0, 917543, 4, 0, 917544, 4, 0, 917545, 4, 0, 917546, 4, 0, 917547, 4, 0, 917548, 4, 0, 917549, 4, 0, 917550, 4, 0, 917551, 4, 0, 917552, 4, 0, 917553, 4, 0, 917554, 4, 0, 917555, 4, 0, 917556, 4, 0, 917557, 4, 0, 917558, 4, 0, 917559, 4, 0, 917560, 4, 0, 917561, 4, 0, 917562, 4, 0, 917563, 4, 0, 917564, 4, 0, 917565, 4, 0, 917566, 4, 0, 917567, 4, 0, 917568, 4, 0, 917569, 4, 0, 917570, 4, 0, 917571, 4, 0, 917572, 4, 0, 917573, 4, 0, 917574, 4, 0, 917575, 4, 0, 917576, 4, 0, 917577, 4, 0, 917578, 4, 0, 917579, 4, 0, 917580, 4, 0, 917581, 4, 0, 917582, 4, 0, 917583, 4, 0, 917584, 4, 0, 917585, 4, 0, 917586, 4, 0, 917587, 4, 0, 917588, 4, 0, 917589, 4, 0, 917590, 4, 0, 917591, 4, 0, 917592, 4, 0, 917593, 4, 0, 917594, 4, 0, 917595, 4, 0, 917596, 4, 0, 917597, 4, 0, 917598, 4, 0, 917599, 4, 0, 917600, 4, 0, 917601, 4, 0, 917602, 4, 0, 917603, 4, 0, 917604, 4, 0, 917605, 4, 0, 917606, 4, 0, 917607, 4, 0, 917608, 4, 0, 917609, 4, 0, 917610, 4, 0, 917611, 4, 0, 917612, 4, 0, 917613, 4, 0, 917614, 4, 0, 917615, 4, 0, 917616, 4, 0, 917617, 4, 0, 917618, 4, 0, 917619, 4, 0, 917620, 4, 0, 917621, 4, 0, 917622, 4, 0, 917623, 4, 0, 917624, 4, 0, 917625, 4, 0, 917626, 4, 0, 917627, 4, 0, 917628, 4, 0, 917629, 4, 0, 917630, 4, 0, 917631, 4, 0, 917632, 4, 0, 917633, 4, 0, 917634, 4, 0, 917635, 4, 0, 917636, 4, 0, 917637, 4, 0, 917638, 4, 0, 917639, 4, 0, 917640, 4, 0, 917641, 4, 0, 917642, 4, 0, 917643, 4, 0, 917644, 4, 0, 917645, 4, 0, 917646, 4, 0, 917647, 4, 0, 917648, 4, 0, 917649, 4, 0, 917650, 4, 0, 917651, 4, 0, 917652, 4, 0, 917653, 4, 0, 917654, 4, 0, 917655, 4, 0, 917656, 4, 0, 917657, 4, 0, 917658, 4, 0, 917659, 4, 0, 917660, 4, 0, 917661, 4, 0, 917662, 4, 0, 917663, 4, 0, 917664, 4, 0, 917665, 4, 0, 917666, 4, 0, 917667, 4, 0, 917668, 4, 0, 917669, 4, 0, 917670, 4, 0, 917671, 4, 0, 917672, 4, 0, 917673, 4, 0, 917674, 4, 0, 917675, 4, 0, 917676, 4, 0, 917677, 4, 0, 917678, 4, 0, 917679, 4, 0, 917680, 4, 0, 917681, 4, 0, 917682, 4, 0, 917683, 4, 0, 917684, 4, 0, 917685, 4, 0, 917686, 4, 0, 917687, 4, 0, 917688, 4, 0, 917689, 4, 0, 917690, 4, 0, 917691, 4, 0, 917692, 4, 0, 917693, 4, 0, 917694, 4, 0, 917695, 4, 0, 917696, 4, 0, 917697, 4, 0, 917698, 4, 0, 917699, 4, 0, 917700, 4, 0, 917701, 4, 0, 917702, 4, 0, 917703, 4, 0, 917704, 4, 0, 917705, 4, 0, 917706, 4, 0, 917707, 4, 0, 917708, 4, 0, 917709, 4, 0, 917710, 4, 0, 917711, 4, 0, 917712, 4, 0, 917713, 4, 0, 917714, 4, 0, 917715, 4, 0, 917716, 4, 0, 917717, 4, 0, 917718, 4, 0, 917719, 4, 0, 917720, 4, 0, 917721, 4, 0, 917722, 4, 0, 917723, 4, 0, 917724, 4, 0, 917725, 4, 0, 917726, 4, 0, 917727, 4, 0, 917728, 4, 0, 917729, 4, 0, 917730, 4, 0, 917731, 4, 0, 917732, 4, 0, 917733, 4, 0, 917734, 4, 0, 917735, 4, 0, 917736, 4, 0, 917737, 4, 0, 917738, 4, 0, 917739, 4, 0, 917740, 4, 0, 917741, 4, 0, 917742, 4, 0, 917743, 4, 0, 917744, 4, 0, 917745, 4, 0, 917746, 4, 0, 917747, 4, 0, 917748, 4, 0, 917749, 4, 0, 917750, 4, 0, 917751, 4, 0, 917752, 4, 0, 917753, 4, 0, 917754, 4, 0, 917755, 4, 0, 917756, 4, 0, 917757, 4, 0, 917758, 4, 0, 917759, 4, 0, 917760, 4, 0, 917761, 4, 0, 917762, 4, 0, 917763, 4, 0, 917764, 4, 0 ) +tile_data = PoolIntArray( 131099, -1073741822, 0, 262139, -1610612734, 0, 196635, -1073741822, 0, 327675, -1610612734, 0, 262171, -1073741822, 0, 393211, -1610612734, 0, 327707, -1073741822, 0, 458747, -1610612734, 0, 393243, -1073741822, 0, 524283, -1610612734, 0, 458779, -1073741822, 0, 589819, -1610612734, 0, 524315, -1073741822, 0, 655355, -1610612734, 0, 589851, -1073741822, 0, 720891, -1610612734, 0, 655387, -1073741822, 0, 786427, -1610612734, 0, 720923, -1073741822, 0, 851963, -1610612734, 0, 786459, -1073741822, 0, 917499, -1610612734, 0, 851995, -1073741822, 0, 983036, 2, 0, 983037, 2, 0, 983038, 2, 0, 983039, 2, 0, 917504, 2, 0, 917505, 2, 0, 917506, 2, 0, 917507, 2, 0, 917508, 2, 0, 917509, 2, 0, 917510, 2, 0, 917511, 2, 0, 917512, 2, 0, 917513, 2, 0, 917514, 2, 0, 917515, 2, 0, 917516, 2, 0, 917517, 2, 0, 917518, 2, 0, 917519, 2, 0, 917520, 2, 0, 917521, 2, 0, 917522, 2, 0, 917523, 2, 0, 917524, 2, 0, 917525, 2, 0, 917526, 2, 0, 917527, 2, 0, 917528, 2, 0, 917529, 2, 0, 917530, 2, 0 ) + +[node name="Spikes" parent="." instance=ExtResource( 13 )] +position = Vector2( 121, 324 ) [node name="BlobbyCam" parent="." instance=ExtResource( 11 )] @@ -51,6 +53,9 @@ parameters/playback = SubResource( 4 ) position = Vector2( 263, 323 ) scale = Vector2( 0.878906, 0.936025 ) +[node name="RopeAnchor" parent="BoundFrog" index="1"] +position = Vector2( 158.151, 10.6835 ) + [node name="Collectibles" type="Node2D" parent="."] visible = false @@ -121,6 +126,8 @@ script = ExtResource( 1 ) [editable path="UserInterface"] [editable path="UserInterface/HUD"] [editable path="Blobby"] +[editable path="BoundFrog"] +[editable path="BoundFrog/RopeAnchor"] [editable path="TreeWhyButtons"] [editable path="TreeWhyButtons/WhyButton1"] [editable path="TreeWhyButtons/WhyButton2"]