finished game 👍

This commit is contained in:
2026-05-05 10:02:41 +02:00
commit a297c5775c
61 changed files with 13951 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
extends Node2D
func _ready():
var v: bool = randi_range(0, 1) == 0
if $Anchor/Audience1 == null or $Anchor/Audience2 == null:
return
$Anchor/Audience1.visible = v
$Anchor/Audience2.visible = not v
$AnimationPlayer.speed_scale = randf_range(0.75, 1.25)
await get_tree().create_timer(randf_range(0, 2)).timeout
$AnimationPlayer.play("bounce")
+1
View File
@@ -0,0 +1 @@
uid://dwbxgtss31a7h
+13
View File
@@ -0,0 +1,13 @@
extends CharacterBody2D
@export var speed: float = 1.0
@export var increment: float = 0.01
func _process(delta: float):
if $AnimationPlayer.is_playing(): return
$AnimationPlayer.play("sway")
speed += increment
$AnimationPlayer.speed_scale = speed
+1
View File
@@ -0,0 +1 @@
uid://k468mwx8avg5
+28
View File
@@ -0,0 +1,28 @@
extends Control
var main_menu = preload("res://scenes/main_menu.tscn")
func trigger():
$Survived.text = "Time Spent Surviving the Rapture: " \
+ str(int($/root/Node2D.time_survived))
self.visible = true
$AnimationPlayer.play("GameOver")
func _ready():
self.visible = false
func end():
var menu = main_menu.instantiate()
var tree = get_tree()
tree.root.add_child(menu)
var old_scene = tree.current_scene
tree.current_scene = menu
old_scene.free()
func _on_back_to_menu_pressed():
end()
+1
View File
@@ -0,0 +1 @@
uid://dc0fcpq3htyy4
+12
View File
@@ -0,0 +1,12 @@
extends Node2D
var time_survived: float = 0.0
func _ready():
get_tree().root.content_scale_mode = Window.CONTENT_SCALE_MODE_VIEWPORT
func _process(delta: float):
time_survived += delta
+1
View File
@@ -0,0 +1 @@
uid://hickb1h8ci77
+74
View File
@@ -0,0 +1,74 @@
extends RigidBody2D
@export var particles: GPUParticles2D
@export var rider: Node2D
var held: bool
var anchored: bool
var anchor: Marker2D
var is_init: bool = false
func _ready():
self.get_parent().children_ready += 1
func init():
anchor.limb = self
is_init = true
func _process(delta: float):
if self.get_parent().is_init == true and not is_init:
init()
if (not Input.is_mouse_button_pressed(MouseButton.MOUSE_BUTTON_LEFT) \
or anchored) and held:
held = false
rider.is_grabbed_anywhere = false
on_ungrab()
if not held and anchored: move_to(anchor.global_position, delta)
func _physics_process(delta: float):
if held: move_to(get_global_mouse_position(), delta)
func _input_event(viewport: Viewport, event: InputEvent, shape_idx: int):
if event is not InputEventMouseButton: return
if event.button_index != MOUSE_BUTTON_LEFT: return
if event.is_pressed() and not anchored and not held \
and not rider.is_grabbed_anywhere:
held = true
rider.is_grabbed_anywhere = true
on_grab(get_global_mouse_position())
func move_to(to: Vector2, delta: float):
var dir = to - global_position
const damping = 2
self.linear_velocity = (dir / delta) / damping
func on_grab(pos: Vector2):
particles.global_position = pos
particles.emitting = true
anchor.setVisible(true)
func on_ungrab():
anchor.setVisible(false)
func ungrab():
held = false
if rider.is_grabbed_anywhere:
rider.is_grabbed_anywhere = false
on_ungrab()
+1
View File
@@ -0,0 +1 @@
uid://c78x72xskyxw8
+20
View File
@@ -0,0 +1,20 @@
extends Marker2D
#var v_tween = get_tree().create_tween()
var limb: RigidBody2D
func _ready():
setVisible(false)
func setVisible(v: bool):
$Sprite2D.visible = v
func _on_area_2d_body_entered(body: Node2D) -> void:
if body != limb: return
if limb.held:
limb.anchored = true
+1
View File
@@ -0,0 +1 @@
uid://b1jqfxhbkdbjc
+9
View File
@@ -0,0 +1,9 @@
extends Control
func _ready():
get_tree().root.content_scale_mode = Window.CONTENT_SCALE_MODE_VIEWPORT
func _on_play_button_pressed():
get_tree().change_scene_to_file("res://scenes/game.tscn")
+1
View File
@@ -0,0 +1 @@
uid://c16iy4k5dj2y2
+84
View File
@@ -0,0 +1,84 @@
extends Node2D
@export var release_timer_range: Vector2
@export var release_particles: GPUParticles2D
@export var bull: Node2D
@export var anchored: Array[bool] = [true, true, true, true]
@onready var joint_l_arm: Marker2D = bull.get_node("Bull/LimbJoint_LeftArm")
@onready var joint_r_arm: Marker2D = bull.get_node("Bull/LimbJoint_RightArm")
@onready var joint_l_leg: Marker2D = bull.get_node("Bull/LimbJoint_LeftLeg")
@onready var joint_r_leg: Marker2D = bull.get_node("Bull/LimbJoint_RightLeg")
var is_grabbed_anywhere: bool = false
var is_timer_active: bool = false
var children_ready: int = 0
var is_init: bool = false
var has_game_over: bool = false
func ready():
$ArmL2.anchor = joint_l_arm
$ArmR2.anchor = joint_r_arm
$LegL2.anchor = joint_l_leg
$LegR2.anchor = joint_r_leg
$ArmL2.anchored = anchored[0]
$ArmR2.anchored = anchored[1]
$LegL2.anchored = anchored[2]
$LegR2.anchored = anchored[3]
is_init = true
func _process(delta: float):
if children_ready == 4 and not is_init: ready()
if not is_timer_active and not has_game_over: timer()
func release():
if has_game_over: return
var limbs = [
$ArmL2,
$ArmR2,
$LegL2,
$LegR2
]
var attempts: int = 0
while true:
attempts += 1
if has_game_over or attempts > 50: return
var i = limbs[randi_range(0, len(limbs) - 1)]
if not i.anchored: continue
i.anchored = false
break
var amount_unanchored = 0
for i in limbs: if not i.anchored: amount_unanchored += 1
if amount_unanchored < 4:
release_particles.emitting = true
else:
$/root/Node2D/CanvasLayer/GameOver.trigger()
func timer():
is_timer_active = true
await get_tree().create_timer(randf_range(
release_timer_range.x,
release_timer_range.y
)).timeout
is_timer_active = false
release_timer_range.x = max(0, release_timer_range.x - 0.1)
release_timer_range.y = max(1, release_timer_range.y - 0.1)
release()
+1
View File
@@ -0,0 +1 @@
uid://dls3kam5cig67