diff --git a/project.godot b/project.godot index 59ad3e7..d150a7d 100644 --- a/project.godot +++ b/project.godot @@ -80,6 +80,11 @@ _global_script_classes=[ { "path": "res://src/behaviours/graphics/RandomRotationOnReady.gd" }, { "base": "Node", +"class": "RapidFire", +"language": "GDScript", +"path": "res://src/pickups/effects/RapidFire.gd" +}, { +"base": "Node", "class": "SetSpawnedGoalTo", "language": "GDScript", "path": "res://src/behaviours/targeting/SetSpawnedGoalTo.gd" @@ -119,6 +124,7 @@ _global_script_class_icons={ "PlayerMovement": "", "RNG": "", "RandomRotationOnReady": "", +"RapidFire": "", "SetSpawnedGoalTo": "", "SpawnEveryPeriod": "", "SpawnOnShoot": "", @@ -189,6 +195,7 @@ player_shoot={ 2d_physics/layer_2="Damageable" 2d_physics/layer_3="Projectiles" 2d_physics/layer_4="UI" +2d_physics/layer_5="Pickups" [physics] diff --git a/src/behaviours/movement/AttractedToMovement.gd b/src/behaviours/movement/AttractedToMovement.gd index 202bb97..0ba946c 100644 --- a/src/behaviours/movement/AttractedToMovement.gd +++ b/src/behaviours/movement/AttractedToMovement.gd @@ -8,13 +8,12 @@ signal goal_reached export var movement_per_second: float -export var goal_path: NodePath onready var parent: KinematicBody2D = get_parent() -onready var goal: PhysicsBody2D = get_node(goal_path) if goal_path else null +var goal: Node2D = null var _goal_reached_triggered: bool = false diff --git a/src/behaviours/movement/TeleportToRandomPosition.gd b/src/behaviours/movement/TeleportToRandomPosition.gd index 490a829..0b7a73f 100644 --- a/src/behaviours/movement/TeleportToRandomPosition.gd +++ b/src/behaviours/movement/TeleportToRandomPosition.gd @@ -13,21 +13,15 @@ onready var rng = get_tree().root.get_node("Game/RNG").rng func teleport(): - var random = rng.randi_range(1, 4) - - var new_position - if random == 1: - # Left - new_position = Vector2(0, rng.randf_range(0, bounds.y)) - elif random == 2: - # Right - new_position = Vector2(bounds.x, rng.randf_range(0, bounds.y)) - elif random == 3: - # Top - new_position = Vector2(rng.randf_range(0, bounds.x), 0) - else: - # Bottom - new_position = Vector2(rng.randf_range(0, bounds.y), bounds.y) + var new_position = Vector2( + rng.randf_range(0, bounds.x), + rng.randf_range(0, bounds.y) + ) parent.set_position(new_position) emit_signal("teleported", parent.position) + + +func _handle_spawned(_node): + teleport() + \ No newline at end of file diff --git a/src/behaviours/movement/TeleportToScreenEdge.gd b/src/behaviours/movement/TeleportToScreenEdge.gd index 38067fd..572cb96 100644 --- a/src/behaviours/movement/TeleportToScreenEdge.gd +++ b/src/behaviours/movement/TeleportToScreenEdge.gd @@ -13,10 +13,25 @@ onready var rng = get_tree().root.get_node("Game/RNG").rng func teleport(): - var new_position = Vector2( - rng.randf_range(0, bounds.x), - rng.randf_range(0, bounds.y) - ) + var random = rng.randi_range(1, 4) + + var new_position + if random == 1: + # Left + new_position = Vector2(0, rng.randf_range(0, bounds.y)) + elif random == 2: + # Right + new_position = Vector2(bounds.x, rng.randf_range(0, bounds.y)) + elif random == 3: + # Top + new_position = Vector2(rng.randf_range(0, bounds.x), 0) + else: + # Bottom + new_position = Vector2(rng.randf_range(0, bounds.x), bounds.y) parent.set_position(new_position) emit_signal("teleported", parent.position) + + +func _handle_spawned(_node): + teleport() diff --git a/src/behaviours/spawning/DropLoot.gd b/src/behaviours/spawning/DropLoot.gd index c86d670..cb8f400 100644 --- a/src/behaviours/spawning/DropLoot.gd +++ b/src/behaviours/spawning/DropLoot.gd @@ -24,7 +24,7 @@ func select_drop() -> PackedScene: var result = rng.randf_range(0.0, total_weights) - for i in range(loot_types.len()): + for i in range(len(loot_types)): var loot_type = loot_types[i] var loot_weight = loot_weights[i] result -= loot_weight diff --git a/src/behaviours/spawning/SpawnOnShoot.gd b/src/behaviours/spawning/SpawnOnShoot.gd index 4ed64ac..1251aaa 100644 --- a/src/behaviours/spawning/SpawnOnShoot.gd +++ b/src/behaviours/spawning/SpawnOnShoot.gd @@ -8,6 +8,7 @@ signal shot(bullet) export var bullet: PackedScene export var cooldown: float setget set_cooldown, get_cooldown export var rapid_fire: bool +export var angle_offset: float onready var parent: Node2D = get_parent() @@ -25,7 +26,7 @@ func shoot(target): var node = bullet.instance() container.add_child(node) node.set_position(global_position) - node.set_rotation(node.get_angle_to(target)) + node.set_rotation(node.get_angle_to(target) + angle_offset) node.get_node("Ownership").entity_owner = parent node.add_collision_exception_with(parent) emit_signal("shot") diff --git a/src/behaviours/targeting/SetSpawnedGoalTo.gd b/src/behaviours/targeting/SetSpawnedGoalTo.gd index 8d6001d..6d2321c 100644 --- a/src/behaviours/targeting/SetSpawnedGoalTo.gd +++ b/src/behaviours/targeting/SetSpawnedGoalTo.gd @@ -3,8 +3,9 @@ class_name SetSpawnedGoalTo export var goal_path: NodePath +onready var goal = get_node(goal_path) func set_goal(node): var movement = node.get_node("AttractedToMovement") - movement.goal = get_node(goal_path) + movement.goal = goal diff --git a/src/entities/enemies/AbstractEnemy.tscn b/src/entities/enemies/AbstractEnemy.tscn index 500bd27..294478d 100644 --- a/src/entities/enemies/AbstractEnemy.tscn +++ b/src/entities/enemies/AbstractEnemy.tscn @@ -9,3 +9,5 @@ alliance = -1 [node name="DropLoot" parent="." index="2" instance=ExtResource( 1 )] + +[connection signal="dead" from="Damageable" to="DropLoot" method="create_drop"] diff --git a/src/entities/enemies/ChaserEnemy.tscn b/src/entities/enemies/ChaserEnemy.tscn index 74684c7..4513eb1 100644 --- a/src/entities/enemies/ChaserEnemy.tscn +++ b/src/entities/enemies/ChaserEnemy.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=12 format=2] [ext_resource path="res://src/entities/enemies/EnemySnowmanLeft.png" type="Texture" id=1] -[ext_resource path="res://src/behaviours/movement/ErraticMovement.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/pickups/BranchPickup.tscn" type="PackedScene" id=2] [ext_resource path="res://src/behaviours/movement/AttractedToMovement.tscn" type="PackedScene" id=3] [ext_resource path="res://src/entities/enemies/AbstractEnemy.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/pickups/RapidFirePickup.tscn" type="PackedScene" id=5] [ext_resource path="res://src/entities/enemies/EnemySnowmanBack.png" type="Texture" id=6] [ext_resource path="res://src/entities/enemies/EnemySnowmanFront.png" type="Texture" id=7] [ext_resource path="res://src/entities/enemies/EnemySnowmanRight.png" type="Texture" id=8] @@ -45,8 +46,10 @@ shape = SubResource( 1 ) frames = SubResource( 2 ) animation = "down" -[node name="ErraticMovement" parent="." index="4" instance=ExtResource( 2 )] +[node name="DropLoot" parent="." index="3"] +loot_types = [ null, ExtResource( 2 ), ExtResource( 5 ) ] +loot_weights = [ 1.0, 1.0, 0.1 ] -[node name="AttractedToMovement" parent="." index="5" instance=ExtResource( 3 )] +[node name="AttractedToMovement" parent="." index="4" instance=ExtResource( 3 )] [connection signal="moving_in_direction" from="AttractedToMovement" to="Shape/FourSidedSprite" method="turn"] diff --git a/src/entities/players/PhaseOnePlayer.tscn b/src/entities/players/PhaseOnePlayer.tscn index 49c9725..3dbe519 100644 --- a/src/entities/players/PhaseOnePlayer.tscn +++ b/src/entities/players/PhaseOnePlayer.tscn @@ -1,7 +1,6 @@ -[gd_scene load_steps=10 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://src/entities/players/AbstractPlayer.tscn" type="PackedScene" id=1] -[ext_resource path="res://src/mechanics/White.png" type="Texture" id=2] [ext_resource path="res://src/entities/bullets/ArrowAlternative.tscn" type="PackedScene" id=3] [ext_resource path="res://src/behaviours/spawning/SpawnOnShoot.tscn" type="PackedScene" id=4] [ext_resource path="res://src/entities/players/CharacterFrontLeft.png" type="Texture" id=5] @@ -24,7 +23,7 @@ animations = [ { "name": "right", "speed": 5.0 }, { -"frames": [ ExtResource( 2 ) ], +"frames": [ ExtResource( 5 ) ], "loop": true, "name": "up", "speed": 5.0 @@ -36,6 +35,7 @@ animations = [ { } ] [node name="PhaseOnePlayer" instance=ExtResource( 1 )] +collision_layer = 19 [node name="Shape" type="CollisionShape2D" parent="." index="0"] shape = SubResource( 3 ) @@ -50,7 +50,6 @@ current = true [node name="SpawnOnShoot" parent="." index="2" instance=ExtResource( 4 )] bullet = ExtResource( 3 ) -cooldown = 0.1 -rapid_fire = true +cooldown = 0.2 [connection signal="moving_in_direction" from="PlayerMovement" to="Shape/FourSidedSprite" method="turn"] diff --git a/src/levels/Game.gd b/src/levels/Game.gd index 0af3acc..ff9033b 100644 --- a/src/levels/Game.gd +++ b/src/levels/Game.gd @@ -12,3 +12,7 @@ func set_survival_seconds(value): func _process(delta): set_survival_seconds(survival_seconds + delta) + + +func _on_Fire_intensity_reached_min(): + print("Game over!") diff --git a/src/levels/Game.tscn b/src/levels/Game.tscn index 3582e15..4d0568e 100644 --- a/src/levels/Game.tscn +++ b/src/levels/Game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=17 format=2] +[gd_scene load_steps=21 format=2] [ext_resource path="res://src/mechanics/Background.tscn" type="PackedScene" id=1] [ext_resource path="res://src/mechanics/Darkness.tscn" type="PackedScene" id=2] @@ -12,6 +12,10 @@ [ext_resource path="res://src/ui/LifeBarBg.png" type="Texture" id=10] [ext_resource path="res://src/levels/PhaseOneMusic.gd" type="Script" id=11] [ext_resource path="res://src/ui/Music_on.png" type="Texture" id=12] +[ext_resource path="res://src/mechanics/ScreenEdgeSpawner.tscn" type="PackedScene" id=13] +[ext_resource path="res://src/entities/enemies/ChaserEnemy.tscn" type="PackedScene" id=14] +[ext_resource path="res://src/behaviours/targeting/SetSpawnedGoalTo.tscn" type="PackedScene" id=15] +[ext_resource path="res://src/pickups/BranchPickup.tscn" type="PackedScene" id=16] [ext_resource path="res://src/music/BaseDrum.mp3" type="AudioStream" id=19] [ext_resource path="res://src/music/BaseBell.mp3" type="AudioStream" id=20] [ext_resource path="res://src/music/BaseChoir.mp3" type="AudioStream" id=21] @@ -66,20 +70,58 @@ autoplay = true tile_data = PoolIntArray( 0, 0, 131074, 1, 0, 131074, 2, 0, 131074, 3, 0, 131074, 4, 0, 131074, 5, 0, 131074, 6, 0, 131074, 7, 0, 131074, 8, 0, 131074, 9, 0, 131074, 10, 0, 131074, 11, 0, 131074, 12, 0, 131074, 13, 0, 131074, 14, 0, 131074, 15, 0, 131074, 16, 0, 131075, 17, 0, 0, 18, 0, 0, 19, 0, 0, 20, 0, 0, 21, 0, 0, 22, 0, 0, 23, 0, 131073, 24, 0, 131074, 25, 0, 131074, 26, 0, 131074, 27, 0, 131074, 28, 0, 131074, 29, 0, 131074, 30, 0, 131074, 31, 0, 131074, 32, 0, 131074, 33, 0, 131074, 34, 0, 131074, 35, 0, 131074, 36, 0, 131074, 37, 0, 131074, 38, 0, 131074, 39, 0, 131074, 65536, 0, 131074, 65537, 0, 131074, 65538, 0, 131074, 65539, 0, 131074, 65540, 0, 131074, 65541, 0, 131074, 65542, 0, 131074, 65543, 0, 131074, 65544, 0, 131074, 65545, 0, 131074, 65546, 0, 131074, 65547, 0, 131074, 65548, 0, 131074, 65549, 0, 131074, 65550, 0, 131074, 65551, 0, 131074, 65552, 0, 131075, 65553, 0, 0, 65554, 0, 0, 65555, 0, 0, 65556, 0, 0, 65557, 0, 0, 65558, 0, 0, 65559, 0, 131073, 65560, 0, 131074, 65561, 0, 131074, 65562, 0, 131074, 65563, 0, 131074, 65564, 0, 131074, 65565, 0, 131074, 65566, 0, 131074, 65567, 0, 131074, 65568, 0, 131074, 65569, 0, 131074, 65570, 0, 131074, 65571, 0, 131074, 65572, 0, 131074, 65573, 0, 131074, 65574, 0, 131074, 65575, 0, 131074, 131072, 0, 131074, 131073, 0, 131074, 131074, 0, 131074, 131075, 0, 131074, 131076, 0, 131074, 131077, 0, 131074, 131078, 0, 131074, 131079, 0, 131074, 131080, 0, 131074, 131081, 0, 131074, 131082, 0, 131074, 131083, 0, 131074, 131084, 0, 131074, 131085, 0, 131074, 131086, 0, 131074, 131087, 0, 131074, 131088, 0, 131075, 131089, 0, 0, 131090, 0, 0, 131091, 0, 0, 131092, 0, 0, 131093, 0, 0, 131094, 0, 0, 131095, 0, 131073, 131096, 0, 131074, 131097, 0, 131074, 131098, 0, 131074, 131099, 0, 131074, 131100, 0, 131074, 131101, 0, 131074, 131102, 0, 131074, 131103, 0, 131074, 131104, 0, 131074, 131105, 0, 131074, 131106, 0, 131074, 131107, 0, 131074, 131108, 0, 131074, 131109, 0, 131074, 131110, 0, 131074, 131111, 0, 131074, 196608, 0, 131074, 196609, 0, 131074, 196610, 0, 131074, 196611, 0, 131074, 196612, 0, 131074, 196613, 0, 131074, 196614, 0, 131074, 196615, 0, 131074, 196616, 0, 131074, 196617, 0, 131074, 196618, 0, 131074, 196619, 0, 131074, 196620, 0, 131074, 196621, 0, 131074, 196622, 0, 131074, 196623, 0, 131074, 196624, 0, 131075, 196625, 0, 0, 196626, 0, 0, 196627, 0, 0, 196628, 0, 0, 196629, 0, 0, 196630, 0, 0, 196631, 0, 131073, 196632, 0, 131074, 196633, 0, 131074, 196634, 0, 131074, 196635, 0, 131074, 196636, 0, 131074, 196637, 0, 131074, 196638, 0, 131074, 196639, 0, 131074, 196640, 0, 131074, 196641, 0, 131074, 196642, 0, 131074, 196643, 0, 131074, 196644, 0, 131074, 196645, 0, 131074, 196646, 0, 131074, 196647, 0, 131074, 262144, 0, 131074, 262145, 0, 131074, 262146, 0, 131074, 262147, 0, 131074, 262148, 0, 131074, 262149, 0, 131074, 262150, 0, 131074, 262151, 0, 131074, 262152, 0, 131074, 262153, 0, 131074, 262154, 0, 131074, 262155, 0, 131074, 262156, 0, 131074, 262157, 0, 131074, 262158, 0, 131074, 262159, 0, 131074, 262160, 0, 131075, 262161, 0, 0, 262162, 0, 0, 262163, 0, 0, 262164, 0, 0, 262165, 0, 0, 262166, 0, 0, 262167, 0, 131073, 262168, 0, 131074, 262169, 0, 131074, 262170, 0, 131074, 262171, 0, 131074, 262172, 0, 131074, 262173, 0, 131074, 262174, 0, 131074, 262175, 0, 131074, 262176, 0, 131074, 262177, 0, 131074, 262178, 0, 131074, 262179, 0, 131074, 262180, 0, 131074, 262181, 0, 131074, 262182, 0, 131074, 262183, 0, 131074, 327680, 0, 131074, 327681, 0, 131074, 327682, 0, 131074, 327683, 0, 131074, 327684, 0, 131074, 327685, 0, 131074, 327686, 0, 131074, 327687, 0, 131074, 327688, 0, 131074, 327689, 0, 131074, 327690, 0, 131074, 327691, 0, 131074, 327692, 0, 131074, 327693, 0, 131074, 327694, 0, 131074, 327695, 0, 131074, 327696, 0, 131075, 327697, 0, 0, 327698, 0, 0, 327699, 0, 0, 327700, 0, 0, 327701, 0, 0, 327702, 0, 0, 327703, 0, 131073, 327704, 0, 131074, 327705, 0, 131074, 327706, 0, 131074, 327707, 0, 131074, 327708, 0, 131074, 327709, 0, 131074, 327710, 0, 131074, 327711, 0, 131074, 327712, 0, 131074, 327713, 0, 131074, 327714, 0, 131074, 327715, 0, 131074, 327716, 0, 131074, 327717, 0, 131074, 327718, 0, 131074, 327719, 0, 131074, 393216, 0, 196610, 393217, 0, 196610, 393218, 0, 196610, 393219, 0, 196610, 393220, 0, 196610, 393221, 0, 196610, 393222, 0, 196610, 393223, 0, 196610, 393224, 0, 196610, 393225, 0, 196610, 393226, 0, 196610, 393227, 0, 196610, 393228, 0, 196610, 393229, 0, 196610, 393230, 0, 196610, 393231, 0, 196610, 393232, 0, 196611, 393233, 0, 0, 393234, 0, 0, 393235, 0, 0, 393236, 0, 0, 393237, 0, 0, 393238, 0, 0, 393239, 0, 196609, 393240, 0, 196610, 393241, 0, 196610, 393242, 0, 196610, 393243, 0, 196610, 393244, 0, 196610, 393245, 0, 196610, 393246, 0, 196610, 393247, 0, 196610, 393248, 0, 196610, 393249, 0, 196610, 393250, 0, 196610, 393251, 0, 196610, 393252, 0, 196610, 393253, 0, 196610, 393254, 0, 196610, 393255, 0, 196610, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 0, 0, 458770, 0, 0, 458771, 0, 0, 458772, 0, 0, 458773, 0, 0, 458774, 0, 0, 458775, 0, 0, 458776, 0, 0, 458777, 0, 0, 458778, 0, 0, 458779, 0, 0, 458780, 0, 0, 458781, 0, 0, 458782, 0, 0, 458783, 0, 0, 458784, 0, 0, 458785, 0, 0, 458786, 0, 0, 458787, 0, 0, 458788, 0, 0, 458789, 0, 0, 458790, 0, 0, 458791, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 0, 0, 524307, 0, 0, 524308, 0, 0, 524309, 0, 0, 524310, 0, 0, 524311, 0, 0, 524312, 0, 0, 524313, 0, 0, 524314, 0, 0, 524315, 0, 0, 524316, 0, 0, 524317, 0, 0, 524318, 0, 0, 524319, 0, 0, 524320, 0, 0, 524321, 0, 0, 524322, 0, 0, 524323, 0, 0, 524324, 0, 0, 524325, 0, 0, 524326, 0, 0, 524327, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0, 589843, 0, 0, 589844, 0, 0, 589845, 0, 0, 589846, 0, 0, 589847, 0, 0, 589848, 0, 0, 589849, 0, 0, 589850, 0, 0, 589851, 0, 0, 589852, 0, 0, 589853, 0, 0, 589854, 0, 0, 589855, 0, 0, 589856, 0, 0, 589857, 0, 0, 589858, 0, 0, 589859, 0, 0, 589860, 0, 0, 589861, 0, 0, 589862, 0, 0, 589863, 0, 0, 655360, 0, 0, 655361, 0, 0, 655362, 0, 0, 655363, 0, 0, 655364, 0, 0, 655365, 0, 0, 655366, 0, 0, 655367, 0, 0, 655368, 0, 0, 655369, 0, 0, 655370, 0, 0, 655371, 0, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, 0, 0, 655376, 0, 0, 655377, 0, 0, 655378, 0, 0, 655379, 0, 0, 655380, 0, 0, 655381, 0, 0, 655382, 0, 0, 655383, 0, 0, 655384, 0, 0, 655385, 0, 0, 655386, 0, 0, 655387, 0, 0, 655388, 0, 0, 655389, 0, 0, 655390, 0, 0, 655391, 0, 0, 655392, 0, 0, 655393, 0, 0, 655394, 0, 0, 655395, 0, 0, 655396, 0, 0, 655397, 0, 0, 655398, 0, 0, 655399, 0, 0, 720896, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 0, 0, 720901, 0, 0, 720902, 0, 0, 720903, 0, 0, 720904, 0, 0, 720905, 0, 0, 720906, 0, 0, 720907, 0, 0, 720908, 0, 0, 720909, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 720916, 0, 0, 720917, 0, 0, 720918, 0, 0, 720919, 0, 0, 720920, 0, 0, 720921, 0, 0, 720922, 0, 0, 720923, 0, 0, 720924, 0, 0, 720925, 0, 0, 720926, 0, 0, 720927, 0, 0, 720928, 0, 0, 720929, 0, 0, 720930, 0, 0, 720931, 0, 0, 720932, 0, 0, 720933, 0, 0, 720934, 0, 0, 720935, 0, 0, 786432, 0, 0, 786433, 0, 0, 786434, 0, 0, 786435, 0, 0, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786439, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 0, 0, 786443, 0, 0, 786444, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 0, 0, 786450, 0, 0, 786451, 0, 0, 786452, 0, 0, 786453, 0, 0, 786454, 0, 0, 786455, 0, 0, 786456, 0, 0, 786457, 0, 0, 786458, 0, 0, 786459, 0, 0, 786460, 0, 0, 786461, 0, 0, 786462, 0, 0, 786463, 0, 0, 786464, 0, 0, 786465, 0, 0, 786466, 0, 0, 786467, 0, 0, 786468, 0, 0, 786469, 0, 0, 786470, 0, 0, 786471, 0, 0, 851968, 0, 65538, 851969, 0, 65538, 851970, 0, 65538, 851971, 0, 65538, 851972, 0, 65538, 851973, 0, 65538, 851974, 0, 65538, 851975, 0, 65538, 851976, 0, 65538, 851977, 0, 65538, 851978, 0, 65538, 851979, 0, 65538, 851980, 0, 65538, 851981, 0, 65538, 851982, 0, 65538, 851983, 0, 65538, 851984, 0, 65539, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 851988, 0, 0, 851989, 0, 0, 851990, 0, 0, 851991, 0, 65537, 851992, 0, 65538, 851993, 0, 65538, 851994, 0, 65538, 851995, 0, 65538, 851996, 0, 65538, 851997, 0, 65538, 851998, 0, 65538, 851999, 0, 65538, 852000, 0, 65538, 852001, 0, 65538, 852002, 0, 65538, 852003, 0, 65538, 852004, 0, 65538, 852005, 0, 65538, 852006, 0, 65538, 852007, 0, 65538, 917504, 0, 131074, 917505, 0, 131074, 917506, 0, 131074, 917507, 0, 131074, 917508, 0, 131074, 917509, 0, 131074, 917510, 0, 131074, 917511, 0, 131074, 917512, 0, 131074, 917513, 0, 131074, 917514, 0, 131074, 917515, 0, 131074, 917516, 0, 131074, 917517, 0, 131074, 917518, 0, 131074, 917519, 0, 131074, 917520, 0, 131075, 917521, 0, 0, 917522, 0, 0, 917523, 0, 0, 917524, 0, 0, 917525, 0, 0, 917526, 0, 0, 917527, 0, 131073, 917528, 0, 131074, 917529, 0, 131074, 917530, 0, 131074, 917531, 0, 131074, 917532, 0, 131074, 917533, 0, 131074, 917534, 0, 131074, 917535, 0, 131074, 917536, 0, 131074, 917537, 0, 131074, 917538, 0, 131074, 917539, 0, 131074, 917540, 0, 131074, 917541, 0, 131074, 917542, 0, 131074, 917543, 0, 131074, 983040, 0, 131074, 983041, 0, 131074, 983042, 0, 131074, 983043, 0, 131074, 983044, 0, 131074, 983045, 0, 131074, 983046, 0, 131074, 983047, 0, 131074, 983048, 0, 131074, 983049, 0, 131074, 983050, 0, 131074, 983051, 0, 131074, 983052, 0, 131074, 983053, 0, 131074, 983054, 0, 131074, 983055, 0, 131074, 983056, 0, 131075, 983057, 0, 0, 983058, 0, 0, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 131073, 983064, 0, 131074, 983065, 0, 131074, 983066, 0, 131074, 983067, 0, 131074, 983068, 0, 131074, 983069, 0, 131074, 983070, 0, 131074, 983071, 0, 131074, 983072, 0, 131074, 983073, 0, 131074, 983074, 0, 131074, 983075, 0, 131074, 983076, 0, 131074, 983077, 0, 131074, 983078, 0, 131074, 983079, 0, 131074, 1048576, 0, 131074, 1048577, 0, 131074, 1048578, 0, 131074, 1048579, 0, 131074, 1048580, 0, 131074, 1048581, 0, 131074, 1048582, 0, 131074, 1048583, 0, 131074, 1048584, 0, 131074, 1048585, 0, 131074, 1048586, 0, 131074, 1048587, 0, 131074, 1048588, 0, 131074, 1048589, 0, 131074, 1048590, 0, 131074, 1048591, 0, 131074, 1048592, 0, 131075, 1048593, 0, 0, 1048594, 0, 0, 1048595, 0, 0, 1048596, 0, 0, 1048597, 0, 0, 1048598, 0, 0, 1048599, 0, 131073, 1048600, 0, 131074, 1048601, 0, 131074, 1048602, 0, 131074, 1048603, 0, 131074, 1048604, 0, 131074, 1048605, 0, 131074, 1048606, 0, 131074, 1048607, 0, 131074, 1048608, 0, 131074, 1048609, 0, 131074, 1048610, 0, 131074, 1048611, 0, 131074, 1048612, 0, 131074, 1048613, 0, 131074, 1048614, 0, 131074, 1048615, 0, 131074, 1114112, 0, 131074, 1114113, 0, 131074, 1114114, 0, 131074, 1114115, 0, 131074, 1114116, 0, 131074, 1114117, 0, 131074, 1114118, 0, 131074, 1114119, 0, 131074, 1114120, 0, 131074, 1114121, 0, 131074, 1114122, 0, 131074, 1114123, 0, 131074, 1114124, 0, 131074, 1114125, 0, 131074, 1114126, 0, 131074, 1114127, 0, 131074, 1114128, 0, 131075, 1114129, 0, 0, 1114130, 0, 0, 1114131, 0, 0, 1114132, 0, 0, 1114133, 0, 0, 1114134, 0, 0, 1114135, 0, 131073, 1114136, 0, 131074, 1114137, 0, 131074, 1114138, 0, 131074, 1114139, 0, 131074, 1114140, 0, 131074, 1114141, 0, 131074, 1114142, 0, 131074, 1114143, 0, 131074, 1114144, 0, 131074, 1114145, 0, 131074, 1114146, 0, 131074, 1114147, 0, 131074, 1114148, 0, 131074, 1114149, 0, 131074, 1114150, 0, 131074, 1114151, 0, 131074, 1179648, 0, 131074, 1179649, 0, 131074, 1179650, 0, 131074, 1179651, 0, 131074, 1179652, 0, 131074, 1179653, 0, 131074, 1179654, 0, 131074, 1179655, 0, 131074, 1179656, 0, 131074, 1179657, 0, 131074, 1179658, 0, 131074, 1179659, 0, 131074, 1179660, 0, 131074, 1179661, 0, 131074, 1179662, 0, 131074, 1179663, 0, 131074, 1179664, 0, 131075, 1179665, 0, 0, 1179666, 0, 0, 1179667, 0, 0, 1179668, 0, 0, 1179669, 0, 0, 1179670, 0, 0, 1179671, 0, 131073, 1179672, 0, 131074, 1179673, 0, 131074, 1179674, 0, 131074, 1179675, 0, 131074, 1179676, 0, 131074, 1179677, 0, 131074, 1179678, 0, 131074, 1179679, 0, 131074, 1179680, 0, 131074, 1179681, 0, 131074, 1179682, 0, 131074, 1179683, 0, 131074, 1179684, 0, 131074, 1179685, 0, 131074, 1179686, 0, 131074, 1179687, 0, 131074, 1245184, 0, 131074, 1245185, 0, 131074, 1245186, 0, 131074, 1245187, 0, 131074, 1245188, 0, 131074, 1245189, 0, 131074, 1245190, 0, 131074, 1245191, 0, 131074, 1245192, 0, 131074, 1245193, 0, 131074, 1245194, 0, 131074, 1245195, 0, 131074, 1245196, 0, 131074, 1245197, 0, 131074, 1245198, 0, 131074, 1245199, 0, 131074, 1245200, 0, 131075, 1245201, 0, 0, 1245202, 0, 0, 1245203, 0, 0, 1245204, 0, 0, 1245205, 0, 0, 1245206, 0, 0, 1245207, 0, 131073, 1245208, 0, 131074, 1245209, 0, 131074, 1245210, 0, 131074, 1245211, 0, 131074, 1245212, 0, 131074, 1245213, 0, 131074, 1245214, 0, 131074, 1245215, 0, 131074, 1245216, 0, 131074, 1245217, 0, 131074, 1245218, 0, 131074, 1245219, 0, 131074, 1245220, 0, 131074, 1245221, 0, 131074, 1245222, 0, 131074, 1245223, 0, 131074 ) [node name="Darkness" parent="PhaseOne/Entities" instance=ExtResource( 2 )] -position = Vector2( 553, 296 ) [node name="PhaseOnePlayer" parent="PhaseOne/Entities" instance=ExtResource( 4 )] position = Vector2( 596, 268 ) [node name="Fire" parent="PhaseOne/Entities" instance=ExtResource( 3 )] -position = Vector2( 640, 320 ) +position = Vector2( 640, 319 ) +intensity = 0.5 [node name="Pickups" type="Node" parent="PhaseOne/Entities"] +[node name="BranchPickup" parent="PhaseOne/Entities/Pickups" instance=ExtResource( 16 )] +position = Vector2( 590, 366 ) + +[node name="BranchPickup5" parent="PhaseOne/Entities/Pickups" instance=ExtResource( 16 )] +position = Vector2( 566, 321 ) + +[node name="BranchPickup6" parent="PhaseOne/Entities/Pickups" instance=ExtResource( 16 )] +position = Vector2( 714, 350 ) + +[node name="BranchPickup7" parent="PhaseOne/Entities/Pickups" instance=ExtResource( 16 )] +position = Vector2( 775, 318 ) + +[node name="BranchPickup2" parent="PhaseOne/Entities/Pickups" instance=ExtResource( 16 )] +position = Vector2( 680, 404 ) + +[node name="BranchPickup3" parent="PhaseOne/Entities/Pickups" instance=ExtResource( 16 )] +position = Vector2( 731, 289 ) + +[node name="BranchPickup4" parent="PhaseOne/Entities/Pickups" instance=ExtResource( 16 )] +position = Vector2( 643, 264 ) + [node name="Bullets" type="Node" parent="PhaseOne/Entities"] [node name="Enemies" type="Node" parent="PhaseOne/Entities"] +[node name="ScreenEdgeSpawner" parent="PhaseOne/Entities/Enemies" instance=ExtResource( 13 )] +spawning = ExtResource( 14 ) +bounds = Vector2( 1280, 640 ) +period_secs = 0.5 + +[node name="SetSpawnedGoalTo" parent="PhaseOne/Entities/Enemies/ScreenEdgeSpawner" instance=ExtResource( 15 )] +goal_path = NodePath("../../../Fire") + +[node name="ScreenEdgeSpawner2" parent="PhaseOne/Entities/Enemies" instance=ExtResource( 13 )] +scale = Vector2( 0.998195, 1 ) +spawning = ExtResource( 14 ) +bounds = Vector2( 1280, 640 ) +period_secs = 0.5 + +[node name="SetSpawnedGoalTo" parent="PhaseOne/Entities/Enemies/ScreenEdgeSpawner2" instance=ExtResource( 15 )] +goal_path = NodePath("../../../PhaseOnePlayer") + [node name="UserInterface" type="CanvasLayer" parent="."] [node name="TheDarkNightUI" parent="UserInterface" instance=ExtResource( 8 )] @@ -134,4 +176,7 @@ position = Vector2( 25, 30 ) texture = ExtResource( 12 ) [connection signal="intensity_changed" from="PhaseOne/Entities/Fire" to="PhaseOne/Music" method="_on_Fire_intensity_changed"] +[connection signal="intensity_reached_min" from="PhaseOne/Entities/Fire" to="." method="_on_Fire_intensity_reached_min"] +[connection signal="spawned" from="PhaseOne/Entities/Enemies/ScreenEdgeSpawner" to="PhaseOne/Entities/Enemies/ScreenEdgeSpawner/SetSpawnedGoalTo" method="set_goal"] +[connection signal="spawned" from="PhaseOne/Entities/Enemies/ScreenEdgeSpawner2" to="PhaseOne/Entities/Enemies/ScreenEdgeSpawner2/SetSpawnedGoalTo" method="set_goal"] [connection signal="pressed" from="UserInterface/TheDarkNightUI/Panel/MuteButton" to="PhaseOne/Music" method="_on_MuteButton_pressed"] diff --git a/src/mechanics/ScreenEdgeSpawner.tscn b/src/mechanics/ScreenEdgeSpawner.tscn index ad1194f..f8a00b8 100644 --- a/src/mechanics/ScreenEdgeSpawner.tscn +++ b/src/mechanics/ScreenEdgeSpawner.tscn @@ -7,4 +7,5 @@ [node name="TeleportToScreenEdge" parent="." index="1" instance=ExtResource( 2 )] +[connection signal="spawned" from="." to="TeleportToScreenEdge" method="_handle_spawned"] [connection signal="timeout" from="Period" to="TeleportToScreenEdge" method="teleport"] diff --git a/src/pickups/BranchPickup.tscn b/src/pickups/BranchPickup.tscn new file mode 100644 index 0000000..0b0e6f2 --- /dev/null +++ b/src/pickups/BranchPickup.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://src/pickups/effects/ChangeFireIntensity.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/pickups/Pickup.tscn" type="PackedScene" id=2] + +[node name="BranchPickup" instance=ExtResource( 2 )] +scale = Vector2( 0.5, 0.5 ) +duration_seconds = 0.4 +despawn_seconds = 15.0 + +[node name="Despawn" parent="." index="2"] +autostart = true + +[node name="ChangeFireIntensity" parent="." index="3" instance=ExtResource( 1 )] + +[connection signal="picked_up" from="." to="ChangeFireIntensity" method="_on_picked_up"] diff --git a/src/pickups/Pickup.gd b/src/pickups/Pickup.gd index 30cf6d8..e92551d 100644 --- a/src/pickups/Pickup.gd +++ b/src/pickups/Pickup.gd @@ -1,9 +1,8 @@ extends Area2D -export var sprite: Texture = preload("res://src/mechanics/White.png") setget set_sprite, get_sprite -export var duration_seconds: float = 1.0 setget set_duration, get_duration -export var despawn_seconds: float = INF setget set_despawn, get_despawn +export var duration_seconds: float setget set_duration, get_duration +export var despawn_seconds: float setget set_despawn, get_despawn signal picked_up signal expired @@ -11,18 +10,10 @@ signal despawned func _ready(): - set_sprite(sprite) set_duration(duration_seconds) set_despawn(despawn_seconds) -func set_sprite(value): - $Shape/Sprite.texture = value - -func get_sprite(): - return $Shape/Sprite.texture - - func set_duration(value): $Duration.wait_time = value @@ -36,7 +27,6 @@ func _on_Duration_timeout(): func set_despawn(value): $Despawn.wait_time = value - $Despawn.start() func get_despawn(): return $Despawn.wait_time diff --git a/src/pickups/Pickup.tscn b/src/pickups/Pickup.tscn index 07f7196..da2e5a6 100644 --- a/src/pickups/Pickup.tscn +++ b/src/pickups/Pickup.tscn @@ -1,13 +1,15 @@ [gd_scene load_steps=5 format=2] -[ext_resource path="res://src/entities/behaviours/SpriteRandomRotation.gd" type="Script" id=1] +[ext_resource path="res://src/behaviours/graphics/RandomRotationOnReady.gd" type="Script" id=1] [ext_resource path="res://src/pickups/Branch1.png" type="Texture" id=2] -[ext_resource path="res://src/entities/Pickup.gd" type="Script" id=3] +[ext_resource path="res://src/pickups/Pickup.gd" type="Script" id=3] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 16, 16 ) [node name="Pickup" type="Area2D"] +collision_layer = 16 +collision_mask = 16 input_pickable = false script = ExtResource( 3 ) diff --git a/src/pickups/RapidFirePickup.tscn b/src/pickups/RapidFirePickup.tscn new file mode 100644 index 0000000..cd1dc50 --- /dev/null +++ b/src/pickups/RapidFirePickup.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://src/pickups/effects/RapidFire.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/pickups/WeaponCrossbow.png" type="Texture" id=2] +[ext_resource path="res://src/pickups/Pickup.tscn" type="PackedScene" id=3] + +[node name="RapidFirePickup" instance=ExtResource( 3 )] +scale = Vector2( 0.5, 0.5 ) +duration_seconds = inf + +[node name="Sprite" parent="Shape" index="0"] +scale = Vector2( 2, 2 ) +texture = ExtResource( 2 ) + +[node name="RapidFire" parent="." index="3" instance=ExtResource( 1 )] +new_cooldown = 0.1 + +[connection signal="picked_up" from="." to="RapidFire" method="_on_picked_up"] diff --git a/src/mechanics/WeaponCrossbow.png b/src/pickups/WeaponCrossbow.png similarity index 100% rename from src/mechanics/WeaponCrossbow.png rename to src/pickups/WeaponCrossbow.png diff --git a/src/mechanics/WeaponCrossbow.png.import b/src/pickups/WeaponCrossbow.png.import similarity index 69% rename from src/mechanics/WeaponCrossbow.png.import rename to src/pickups/WeaponCrossbow.png.import index 4b7d2b5..6844fe6 100644 --- a/src/mechanics/WeaponCrossbow.png.import +++ b/src/pickups/WeaponCrossbow.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/WeaponCrossbow.png-0a9cc264e092ccff57799323e11448eb.stex" +path="res://.import/WeaponCrossbow.png-e19361cc3a5a60e770b810055c1aa183.stex" metadata={ "vram_texture": false } [deps] -source_file="res://src/mechanics/WeaponCrossbow.png" -dest_files=[ "res://.import/WeaponCrossbow.png-0a9cc264e092ccff57799323e11448eb.stex" ] +source_file="res://src/pickups/WeaponCrossbow.png" +dest_files=[ "res://.import/WeaponCrossbow.png-e19361cc3a5a60e770b810055c1aa183.stex" ] [params] diff --git a/src/pickups/effects/ChangeFireIntensity.gd b/src/pickups/effects/ChangeFireIntensity.gd index a348437..cd13e86 100644 --- a/src/pickups/effects/ChangeFireIntensity.gd +++ b/src/pickups/effects/ChangeFireIntensity.gd @@ -1,9 +1,8 @@ extends Node -export var target_path: NodePath = NodePath("../../Fire") export var amount_per_second: float = 0.2 -onready var target = get_node(target_path) +onready var target = get_tree().root.find_node("Fire", true, false) onready var pickup: Area2D = get_parent() var active = false diff --git a/src/pickups/effects/RapidFire.gd b/src/pickups/effects/RapidFire.gd new file mode 100644 index 0000000..64afd92 --- /dev/null +++ b/src/pickups/effects/RapidFire.gd @@ -0,0 +1,15 @@ +extends Node +class_name RapidFire + + +export var new_cooldown: float + +onready var target = get_tree().root.find_node("PhaseOnePlayer", true, false) +onready var pickup: Area2D = get_parent() + + +func _on_picked_up(): + var shoot = target.get_node("SpawnOnShoot") + shoot.cooldown = new_cooldown + shoot.rapid_fire = true + diff --git a/src/pickups/effects/RapidFire.tscn b/src/pickups/effects/RapidFire.tscn new file mode 100644 index 0000000..5db28d7 --- /dev/null +++ b/src/pickups/effects/RapidFire.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://src/pickups/effects/RapidFire.gd" type="Script" id=1] + +[node name="RapidFire" type="Node"] +script = ExtResource( 1 )