15 Commits

Author SHA1 Message Date
eda35b4e9b feat"redhood interaction and sword getting
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 2m15s
2025-08-02 22:38:04 +02:00
02f04cc38a feat: shield
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m13s
2025-08-02 21:34:08 +02:00
12b02877bb feat: choice system
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m24s
2025-08-02 20:01:01 +02:00
3450c463f9 feat: arrows and stuff
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m22s
2025-08-02 15:51:29 +02:00
e3545a5087 feat: new dialogue with NPC
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m5s
2025-08-02 12:16:27 +02:00
712d2a41ea feat: parallax and more environment
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 2m19s
2025-08-02 11:50:59 +02:00
5c9add1fe4 feat: new hit anim 2025-08-01 17:58:25 +02:00
f914032f8f feat: nouveau dialogue
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m6s
2025-08-01 17:46:36 +02:00
6e017197f6 feat: integrated some assets and made a hitbox and damage reaction system
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 5s
Create tag and build when new code gets to main / Export (push) Successful in 2m5s
2025-08-01 17:17:00 +02:00
44f083fbce fix: ui flicker and also added a black fade at the start
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m5s
2025-08-01 15:33:36 +02:00
f3288698fe feat: basic dialogue system and opening cutscene
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m5s
2025-08-01 15:28:17 +02:00
d34f0749bd feat: bubbles setup
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 2m11s
2025-08-01 11:29:35 +02:00
18d1b0b22d feat: bubble location
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m11s
2025-08-01 11:13:14 +02:00
01aee48501 feat: player movement and animations
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m11s
2025-08-01 10:40:47 +02:00
797438d0fd feat: cameras
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m9s
2025-07-31 18:26:01 +02:00
83 changed files with 31843 additions and 399 deletions

36
arrow/arrow.gd Normal file
View File

@ -0,0 +1,36 @@
extends RigidBody2D
@onready var area_2d: Area2D = $Area2D
@onready var kill_after: Timer = $KillAfter
@export var speed = 100
@export var rotation_speed = 1
@export var jump_strength_on_death = 100
var is_moving = true
var first_frame_available = true
func _ready() -> void:
freeze = true
func _physics_process(delta: float) -> void:
if is_moving:
position.x -= speed
else:
freeze = false
area_2d.monitoring = false
area_2d.monitorable = false
linear_velocity.x = 0
linear_velocity += get_gravity() * delta
angular_velocity = rotation_speed
if first_frame_available:
apply_impulse(Vector2.UP * jump_strength_on_death)
first_frame_available = false
func _on_kill_after_timeout() -> void:
queue_free()
func _on_body_entered(body: Node) -> void:
is_moving = false
kill_after.start()

1
arrow/arrow.gd.uid Normal file
View File

@ -0,0 +1 @@
uid://127t4dvlp6tv

48
arrow/arrow.tscn Normal file
View File

@ -0,0 +1,48 @@
[gd_scene load_steps=6 format=3 uid="uid://4bfkbcr7v8tj"]
[ext_resource type="Script" uid="uid://127t4dvlp6tv" path="res://arrow/arrow.gd" id="1_d2qln"]
[ext_resource type="Script" uid="uid://dt2lsk3je41th" path="res://damageable/hitbox.gd" id="2_d2qln"]
[ext_resource type="Texture2D" uid="uid://lhq6h8f81qrr" path="res://player/assets/Fleche.png" id="2_ofxgm"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_d2qln"]
size = Vector2(2, 2)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_yaehf"]
size = Vector2(12, 5)
[node name="Arrow" type="RigidBody2D"]
collision_layer = 0
collision_mask = 0
freeze_mode = 1
linear_velocity = Vector2(-100, 0)
script = ExtResource("1_d2qln")
speed = 1
rotation_speed = 10
jump_strength_on_death = 500
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_d2qln")
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("2_ofxgm")
region_rect = Rect2(717, 6, 35, 9)
[node name="Area2D" type="Area2D" parent="."]
collision_layer = 4
collision_mask = 5
script = ExtResource("2_d2qln")
hitback_direction = Vector2(-1, -1)
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(1, 0.5)
shape = SubResource("RectangleShape2D_yaehf")
[node name="KillAfter" type="Timer" parent="."]
wait_time = 3.0
one_shot = true
ignore_time_scale = true
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="body_entered" from="Area2D" to="." method="_on_body_entered"]
[connection signal="body_entered" from="Area2D" to="Area2D" method="_on_body_entered"]
[connection signal="timeout" from="KillAfter" to="." method="_on_kill_after_timeout"]

10
arrow/arrow_spawner.gd Normal file
View File

@ -0,0 +1,10 @@
extends Node2D
@export var arrow_scene: PackedScene
@onready var spawn_timing: Timer = $SpawnTiming
func _on_spawn_timing_timeout() -> void:
var arrow: Node2D = arrow_scene.instantiate()
arrow.global_position = global_position
add_sibling(arrow)

View File

@ -0,0 +1 @@
uid://bej0paudsyd7h

14
arrow/arrow_spawner.tscn Normal file
View File

@ -0,0 +1,14 @@
[gd_scene load_steps=3 format=3 uid="uid://c5tp7c70qkxe3"]
[ext_resource type="Script" uid="uid://bej0paudsyd7h" path="res://arrow/arrow_spawner.gd" id="1_7je20"]
[ext_resource type="PackedScene" uid="uid://4bfkbcr7v8tj" path="res://arrow/arrow.tscn" id="2_ek028"]
[node name="ArrowSpawner" type="Node2D"]
script = ExtResource("1_7je20")
arrow_scene = ExtResource("2_ek028")
[node name="SpawnTiming" type="Timer" parent="."]
wait_time = 5.0
autostart = true
[connection signal="timeout" from="SpawnTiming" to="." method="_on_spawn_timing_timeout"]

42
camera/camera.gd Normal file
View File

@ -0,0 +1,42 @@
extends Node2D
class_name SuperCamera
@onready var area_2d: Area2D = $Area2D
@onready var camera: Camera2D = $Camera2D
@export var should_follow_player = false
@export var minimum_location = 0
@export var maximum_location = 640
signal became_active(SuperCamera)
var is_player_in_range = false
var player: Node2D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
if not should_follow_player or not is_player_in_range:
return
if player.global_position.x < minimum_location or player.global_position.x > maximum_location:
return
global_position.x = player.global_position.x
func _on_body_entered(body: Node2D) -> void:
if body.name == "Player":
became_active.emit(self)
camera.make_current()
player = body
is_player_in_range = true
func _on_body_exited(body: Node2D) -> void:
if body.name == "Player":
is_player_in_range = false

1
camera/camera.gd.uid Normal file
View File

@ -0,0 +1 @@
uid://cn0crfbdlcoot

24
camera/camera.tscn Normal file
View File

@ -0,0 +1,24 @@
[gd_scene load_steps=3 format=3 uid="uid://cwxv8xl0hi31i"]
[ext_resource type="Script" uid="uid://cn0crfbdlcoot" path="res://camera/camera.gd" id="1_f5lvx"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_7mycd"]
size = Vector2(630, 340)
[node name="CameraHandler" type="Node2D"]
script = ExtResource("1_f5lvx")
[node name="Area2D" type="Area2D" parent="."]
visible = false
collision_layer = 0
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("RectangleShape2D_7mycd")
[node name="Camera2D" type="Camera2D" parent="."]
position_smoothing_enabled = true
position_smoothing_speed = 30.0
[connection signal="body_entered" from="Area2D" to="." method="_on_body_entered"]
[connection signal="body_exited" from="Area2D" to="." method="_on_body_exited"]

20
damageable/damageable.gd Normal file
View File

@ -0,0 +1,20 @@
extends Node
class_name Damageable
@export var health = 3
@export var hitback_velocity: float = 500
var active = true
signal got_hit
func set_active(new_active: bool):
active = new_active
func damage(value: int = 0, direction: Vector2 = Vector2.UP):
if not active:
return
health -= value
get_parent().velocity = hitback_velocity * direction
got_hit.emit()

View File

@ -0,0 +1 @@
uid://bhbn4pngdfk7w

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://djwoetcyvvofc"]
[ext_resource type="Script" uid="uid://bhbn4pngdfk7w" path="res://damageable/damageable.gd" id="1_qv54c"]
[node name="Damageable" type="Node"]
script = ExtResource("1_qv54c")

9
damageable/hitbox.gd Normal file
View File

@ -0,0 +1,9 @@
extends Area2D
@export var damage = 0
@export var hitback_direction = Vector2.UP
func _on_body_entered(body: Node2D) -> void:
for child in body.get_children():
if is_instance_of(child, Damageable):
child.damage(damage, hitback_direction)

1
damageable/hitbox.gd.uid Normal file
View File

@ -0,0 +1 @@
uid://dt2lsk3je41th

8
damageable/hitbox.tscn Normal file
View File

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://7sqwi3lygb1u"]
[ext_resource type="Script" uid="uid://dt2lsk3je41th" path="res://damageable/hitbox.gd" id="1_n3l2p"]
[node name="Hitbox" type="Area2D"]
script = ExtResource("1_n3l2p")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

21
default_bus_layout.tres Normal file
View File

@ -0,0 +1,21 @@
[gd_resource type="AudioBusLayout" format=3 uid="uid://bvbt5y18xikew"]
[resource]
bus/1/name = &"SFX"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
bus/1/volume_db = -3.32682
bus/1/send = &"Master"
bus/2/name = &"Ambiance"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
bus/2/volume_db = -10.9863
bus/2/send = &"Master"
bus/3/name = &"Music"
bus/3/solo = false
bus/3/mute = false
bus/3/bypass_fx = false
bus/3/volume_db = -6.25101
bus/3/send = &"Master"

92
dialogues/choice.gd Normal file
View File

@ -0,0 +1,92 @@
extends Node
@onready var bubbles: HBoxContainer = %Bubbles
@onready var bubbles_back: TileMapLayer = %BubblesBack
@onready var bubbles_interior: TileMapLayer = %BubblesInterior
@onready var bubble_label: RichTextLabel = %BubbleLabel
@onready var ui_flicker_timer: Timer = $UIFlickerTimer
@onready var e_ui_button: TextureRect = %E
@onready var next_label: Label = %NextLabel
@onready var choices_container: MarginContainer = %ChoicesContainer
@onready var accept_indicator: ColorRect = %AcceptIndicator
@onready var accept_label: Label = %AcceptLabel
@onready var reject_indicator: ColorRect = %RejectIndicator
@onready var reject_label: Label = %RejectLabel
@export_multiline var choice = ""
@export var accept_option = ""
@export var reject_option = ""
@onready var wait_a_sec: Timer = $WaitASec
signal accepted
signal rejected
var is_accept_selected = true
var is_choice_happening = false
func _process(delta: float) -> void:
if not is_choice_happening:
return
if Input.is_action_just_pressed("move_right"):
is_accept_selected = false
update_ui()
if Input.is_action_just_pressed("move_left"):
is_accept_selected = true
update_ui()
if Input.is_action_just_pressed("interact"):
stop_choice()
func update_ui():
accept_indicator.visible = is_accept_selected
reject_indicator.visible = not is_accept_selected
func toggle_ui():
e_ui_button.visible = not e_ui_button.visible
func start_choice():
bubbles.visible = true
bubbles_back.visible = true
bubbles_interior.visible = true
bubble_label.visible = true
e_ui_button.visible = true
next_label.visible = true
choices_container.visible = true
bubble_label.text = choice
accept_label.text = accept_option
reject_label.text = reject_option
is_accept_selected = true
update_ui()
wait_a_sec.start()
func stop_choice():
is_choice_happening = false
ui_flicker_timer.stop()
bubbles.visible = false
bubbles_back.visible = false
bubbles_interior.visible = false
bubble_label.visible = false
e_ui_button.visible = false
next_label.visible = false
choices_container.visible = false
if is_accept_selected:
accepted.emit()
else:
rejected.emit()
func _on_wait_a_sec_timeout() -> void:
is_choice_happening = true
ui_flicker_timer.start()

1
dialogues/choice.gd.uid Normal file
View File

@ -0,0 +1 @@
uid://b65dvbdgyplnm

17
dialogues/choice.tscn Normal file
View File

@ -0,0 +1,17 @@
[gd_scene load_steps=2 format=3 uid="uid://c2axd06m2g28y"]
[ext_resource type="Script" uid="uid://b65dvbdgyplnm" path="res://dialogues/choice.gd" id="1_ht8c8"]
[node name="Choice" type="Node"]
script = ExtResource("1_ht8c8")
[node name="UIFlickerTimer" type="Timer" parent="."]
wait_time = 0.5
ignore_time_scale = true
[node name="WaitASec" type="Timer" parent="."]
wait_time = 0.5
one_shot = true
[connection signal="timeout" from="UIFlickerTimer" to="." method="toggle_ui"]
[connection signal="timeout" from="WaitASec" to="." method="_on_wait_a_sec_timeout"]

View File

@ -0,0 +1,113 @@
extends Node
@onready var bubbles: HBoxContainer = %Bubbles
@onready var bubbles_back: TileMapLayer = %BubblesBack
@onready var bubbles_interior: TileMapLayer = %BubblesInterior
@onready var bubble_label: RichTextLabel = %BubbleLabel
@onready var left_speaker: TextureRect = %LeftSpeaker
@onready var right_speaker: TextureRect = %RightSpeaker
@onready var time_between_letters: Timer = $TimeBetweenLetters
@onready var ui_flicker_timer: Timer = $UIFlickerTimer
@onready var e_ui_button: TextureRect = %E
@onready var next_label: Label = %NextLabel
@export_multiline var dialogue = ""
@export var start_with_left = false
@export var left_picture: Texture2D
@export var right_picture: Texture2D
signal dialogue_ended
var dialogue_steps = []
var current_dialogue = ""
var current_dialogue_split: PackedStringArray = []
var is_dialogue_ongoing = false
var is_left_speaking = false
func _ready() -> void:
is_left_speaking = start_with_left
e_ui_button.visible = false
next_label.visible = false
var steps = dialogue.split("---")
for step: String in steps:
dialogue_steps.append(step.strip_edges())
func display_profiles():
left_speaker.texture = left_picture
right_speaker.texture = right_picture
left_speaker.visible = is_left_speaking
right_speaker.visible = not is_left_speaking
func toggle_ui():
e_ui_button.visible = not e_ui_button.visible
func _process(delta: float) -> void:
if not is_dialogue_ongoing:
return
if Input.is_action_just_pressed("interact"):
if not current_dialogue_split.is_empty():
return
if dialogue_steps.is_empty():
end_dialogue()
return
else:
# toggle speakers
is_left_speaking = not is_left_speaking
display_profiles()
load_next_dialogue()
func load_next_dialogue():
var next_dialogue = dialogue_steps.pop_front()
current_dialogue = ""
current_dialogue_split = next_dialogue.split("")
func on_dialogue_started():
bubbles.visible = true
bubble_label.visible = true
bubbles_back.visible = true
bubbles_interior.visible = true
display_profiles()
is_dialogue_ongoing = true
time_between_letters.start()
load_next_dialogue()
func end_dialogue():
bubbles.visible = false
bubble_label.visible = false
bubbles_back.visible = false
bubbles_interior.visible = false
e_ui_button.visible = false
next_label.visible = false
is_dialogue_ongoing = false
time_between_letters.stop()
ui_flicker_timer.stop()
dialogue_ended.emit()
func _on_next_letter() -> void:
if not current_dialogue_split.is_empty():
ui_flicker_timer.stop()
e_ui_button.visible = false
next_label.visible = false
var next_letter = current_dialogue_split.get(0)
current_dialogue_split.remove_at(0)
current_dialogue += next_letter
bubble_label.text = current_dialogue
else:
if next_label.visible:
return
next_label.visible = true
ui_flicker_timer.start()
func _on_body_entered_trigger_dialogue(body: Node2D) -> void:
on_dialogue_started()

View File

@ -0,0 +1 @@
uid://k2r3aatbbyie

View File

@ -0,0 +1,17 @@
[gd_scene load_steps=2 format=3 uid="uid://bmng6wjt0paof"]
[ext_resource type="Script" uid="uid://k2r3aatbbyie" path="res://dialogues/dialogue_manager.gd" id="1_6nn6f"]
[node name="DialogueManager" type="Node"]
script = ExtResource("1_6nn6f")
[node name="UIFlickerTimer" type="Timer" parent="."]
wait_time = 0.5
ignore_time_scale = true
[node name="TimeBetweenLetters" type="Timer" parent="."]
wait_time = 0.05
ignore_time_scale = true
[connection signal="timeout" from="UIFlickerTimer" to="." method="toggle_ui"]
[connection signal="timeout" from="TimeBetweenLetters" to="." method="_on_next_letter"]

BIN
ennemy/IdleMechant.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://3g48672b8541"
path="res://.godot/imported/IdleMechant.png-ced0ec4bedd0a649c483c7992abb82fc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ennemy/IdleMechant.png"
dest_files=["res://.godot/imported/IdleMechant.png-ced0ec4bedd0a649c483c7992abb82fc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
ennemy/MechantVol.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cjruk5xlt3tyn"
path="res://.godot/imported/MechantVol.png-92fe77e69a79007327da2f7de078b743.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ennemy/MechantVol.png"
dest_files=["res://.godot/imported/MechantVol.png-92fe77e69a79007327da2f7de078b743.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

27
ennemy/armored_ennemy.gd Normal file
View File

@ -0,0 +1,27 @@
extends CharacterBody2D
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
@onready var time_to_finish_hit: Timer = $TimeToFinishHit
@onready var hitbox: Area2D = $Hitbox
func _ready() -> void:
hitbox.monitoring = false
func play_anim_run():
animated_sprite.play("run")
func play_anim_idle():
animated_sprite.play("idle")
func hit():
animated_sprite.play("hit")
time_to_finish_hit.start()
hitbox.monitoring = true
func _on_trigger_hit_body_entered(body: Node2D) -> void:
if body.name == "Player":
hit()
func _on_time_to_finish_hit_timeout() -> void:
play_anim_idle()
hitbox.monitoring = false

View File

@ -0,0 +1 @@
uid://dailpwkay2nu5

View File

@ -0,0 +1,52 @@
[gd_scene load_steps=8 format=3 uid="uid://c5ruphrd8ebuu"]
[ext_resource type="Script" uid="uid://dailpwkay2nu5" path="res://ennemy/armored_ennemy.gd" id="1_f4v0e"]
[ext_resource type="SpriteFrames" uid="uid://i6035vm5ited" path="res://player/armored_spritesheet.tres" id="1_k1sc2"]
[ext_resource type="Shape2D" uid="uid://6rhdwj5jxbxn" path="res://player/player_collision.tres" id="2_f4v0e"]
[ext_resource type="PackedScene" uid="uid://7sqwi3lygb1u" path="res://damageable/hitbox.tscn" id="4_e5h8j"]
[ext_resource type="AudioStream" uid="uid://c0w61do2a1hbc" path="res://ennemy/black-magic-159868.mp3" id="5_iblih"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_f4v0e"]
[sub_resource type="CircleShape2D" id="CircleShape2D_e5h8j"]
[node name="ArmoredEnnemy" type="CharacterBody2D"]
script = ExtResource("1_f4v0e")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(1, -16)
sprite_frames = ExtResource("1_k1sc2")
animation = &"idle"
autoplay = "idle"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -13)
shape = ExtResource("2_f4v0e")
[node name="TriggerHit" type="Area2D" parent="."]
collision_mask = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="TriggerHit"]
position = Vector2(17, -15)
shape = SubResource("RectangleShape2D_f4v0e")
[node name="Hitbox" parent="." instance=ExtResource("4_e5h8j")]
collision_mask = 3
hitback_direction = Vector2(1, -1)
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
position = Vector2(17, -15)
shape = SubResource("CircleShape2D_e5h8j")
[node name="TimeToFinishHit" type="Timer" parent="."]
wait_time = 0.5
one_shot = true
[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("5_iblih")
autoplay = true
max_distance = 400.0
bus = &"SFX"
[connection signal="body_entered" from="TriggerHit" to="." method="_on_trigger_hit_body_entered"]
[connection signal="timeout" from="TimeToFinishHit" to="." method="_on_time_to_finish_hit_timeout"]

BIN
ennemy/black-magic-159868.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://c0w61do2a1hbc"
path="res://.godot/imported/black-magic-159868.mp3-f5e04e11025cfff3fcd9a08fe133af57.mp3str"
[deps]
source_file="res://ennemy/black-magic-159868.mp3"
dest_files=["res://.godot/imported/black-magic-159868.mp3-f5e04e11025cfff3fcd9a08fe133af57.mp3str"]
[params]
loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4

72
main.gd Normal file
View File

@ -0,0 +1,72 @@
extends Node2D
@onready var next_dialogue: MarginContainer = %NextDialogue
@onready var bubbles: HBoxContainer = $Bubbles
@onready var bubbles_back: TileMapLayer = $BubblesBack
@onready var bubbles_interior: TileMapLayer = $BubblesInterior
var active_camera: SuperCamera
@onready var opening_fade_to_black: ColorRect = $OpeningFadeToBlack
@onready var opening_cutscene: AnimationPlayer = $OpeningCutscene
@onready var dance_cutscene: AnimationPlayer = $DanceCutscene
@onready var background_far: TileMapLayer = $BackgroundFar
@onready var background_middle: TileMapLayer = $BackgroundMiddle
@onready var background_close: TileMapLayer = $BackgroundClose
@onready var foreground_far: TileMapLayer = $ForegroundFar
@export_group("Parallax")
@export var parallax_far = 0.5
@export var parallax_middle = 0.4
@export var parallax_close = 0.3
@export var foreground = 0.2
@onready var choices_container: MarginContainer = %ChoicesContainer
@onready var red_hood_cutscene: AnimationPlayer = $RedHoodCutscene
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
for child in get_children():
if is_instance_of(child, SuperCamera):
child.became_active.connect(on_camera_became_active)
#opening_cutscene.play("opening_cutscene")
#opening_fade_to_black.visible = true
func on_camera_became_active(camera: SuperCamera):
active_camera = camera
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
bubbles.global_position.x = active_camera.global_position.x - 270.0
next_dialogue.global_position.x = active_camera.global_position.x + 133.0
bubbles_back.global_position.x = active_camera.global_position.x
bubbles_interior.global_position.x = active_camera.global_position.x
choices_container.global_position.x = active_camera.global_position.x - 100
background_far.global_position.x = active_camera.global_position.x * parallax_far
background_middle.global_position.x = active_camera.global_position.x * parallax_middle
background_close.global_position.x = active_camera.global_position.x * parallax_close
foreground_far.global_position.x = active_camera.global_position.x * foreground
func _on_start_dancing() -> void:
dance_cutscene.play("dance")
func restart_at_first_scene():
pass
func to_main_menu():
pass
func quit_game():
pass
func _on_trigger_second_npc_dialogue_body_entered(body: Node2D) -> void:
red_hood_cutscene.play("cutscene")
func _on_red_hood_sword_dialogue_dialogue_ended() -> void:
red_hood_cutscene.play("flee")

1
main.gd.uid Normal file
View File

@ -0,0 +1 @@
uid://cvtt52wodbopm

1215
main.tscn

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,232 @@
[gd_resource type="SpriteFrames" load_steps=34 format=3 uid="uid://i6035vm5ited"]
[ext_resource type="Texture2D" uid="uid://dv7jhtoptk12r" path="res://player/assets/Danse.png" id="1_4wqev"]
[ext_resource type="Texture2D" uid="uid://dcyawv770lkhp" path="res://player/assets/Défense.png" id="2_b2lu2"]
[ext_resource type="Texture2D" uid="uid://dwn548x0n4bpd" path="res://player/assets/Outch.png" id="2_t0xqw"]
[ext_resource type="Texture2D" uid="uid://dpy6espwka35l" path="res://player/assets/RunArme.png" id="4_3w5np"]
[sub_resource type="AtlasTexture" id="AtlasTexture_tqiix"]
atlas = ExtResource("1_4wqev")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_e7oew"]
atlas = ExtResource("1_4wqev")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_c35mf"]
atlas = ExtResource("1_4wqev")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_65viv"]
atlas = ExtResource("1_4wqev")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_x7c3f"]
atlas = ExtResource("1_4wqev")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_bjvpn"]
atlas = ExtResource("1_4wqev")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_s7qer"]
atlas = ExtResource("1_4wqev")
region = Rect2(192, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ge24q"]
atlas = ExtResource("1_4wqev")
region = Rect2(224, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_pnw6m"]
atlas = ExtResource("1_4wqev")
region = Rect2(256, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_1so5t"]
atlas = ExtResource("1_4wqev")
region = Rect2(288, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_55jnj"]
atlas = ExtResource("1_4wqev")
region = Rect2(320, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_dx5ib"]
atlas = ExtResource("1_4wqev")
region = Rect2(352, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_a2xo5"]
atlas = ExtResource("1_4wqev")
region = Rect2(384, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_art4l"]
atlas = ExtResource("1_4wqev")
region = Rect2(416, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_hg6s5"]
atlas = ExtResource("2_t0xqw")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_8t03j"]
atlas = ExtResource("2_t0xqw")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_3w5np"]
atlas = ExtResource("2_b2lu2")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_4wqev"]
atlas = ExtResource("4_3w5np")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_t0xqw"]
atlas = ExtResource("4_3w5np")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_7en50"]
atlas = ExtResource("4_3w5np")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_dcl6h"]
atlas = ExtResource("4_3w5np")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_yp8g1"]
atlas = ExtResource("4_3w5np")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_er5ay"]
atlas = ExtResource("4_3w5np")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_x3djp"]
atlas = ExtResource("4_3w5np")
region = Rect2(192, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ko4fi"]
atlas = ExtResource("4_3w5np")
region = Rect2(224, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_i5cp7"]
atlas = ExtResource("4_3w5np")
region = Rect2(256, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_0mkg8"]
atlas = ExtResource("4_3w5np")
region = Rect2(288, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_5lqr2"]
atlas = ExtResource("4_3w5np")
region = Rect2(320, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_nq0ey"]
atlas = ExtResource("4_3w5np")
region = Rect2(352, 0, 32, 32)
[resource]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_tqiix")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_e7oew")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c35mf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_65viv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_x7c3f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bjvpn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s7qer")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ge24q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pnw6m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1so5t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_55jnj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dx5ib")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a2xo5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_art4l")
}],
"loop": true,
"name": &"dance",
"speed": 6.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hg6s5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8t03j")
}],
"loop": false,
"name": &"got_hit",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_3w5np")
}],
"loop": true,
"name": &"idle",
"speed": 2.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_4wqev")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_t0xqw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7en50")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dcl6h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_yp8g1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_er5ay")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_x3djp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ko4fi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_i5cp7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0mkg8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5lqr2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nq0ey")
}],
"loop": true,
"name": &"run",
"speed": 14.0
}]

BIN
player/assets/Bouclier.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfxgjrja1ah60"
path="res://.godot/imported/Bouclier.png-e7c965646f348bf410efb0824b431e45.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/Bouclier.png"
dest_files=["res://.godot/imported/Bouclier.png-e7c965646f348bf410efb0824b431e45.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/Danse.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dv7jhtoptk12r"
path="res://.godot/imported/Danse.png-360f9d75971dc28cdb901fbcce9ab403.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/Danse.png"
dest_files=["res://.godot/imported/Danse.png-360f9d75971dc28cdb901fbcce9ab403.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/DebutIdle.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dr5ypp4q8n2xm"
path="res://.godot/imported/DebutIdle.png-d20fa9d40d66390fd8f04dab8c840cf9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/DebutIdle.png"
dest_files=["res://.godot/imported/DebutIdle.png-d20fa9d40d66390fd8f04dab8c840cf9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/Défense.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dcyawv770lkhp"
path="res://.godot/imported/Défense.png-c9911fdbdfe0bbcdb6f1b11801052875.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/Défense.png"
dest_files=["res://.godot/imported/Défense.png-c9911fdbdfe0bbcdb6f1b11801052875.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/Epee.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://db3oaynrhd7wg"
path="res://.godot/imported/Epee.png-2f948674a42be1d4f0f32c5289e9c5d8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/Epee.png"
dest_files=["res://.godot/imported/Epee.png-2f948674a42be1d4f0f32c5289e9c5d8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/Fleche.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://lhq6h8f81qrr"
path="res://.godot/imported/Fleche.png-fd23037ecccb3463f4413f9430b058a1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/Fleche.png"
dest_files=["res://.godot/imported/Fleche.png-fd23037ecccb3463f4413f9430b058a1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/Outch.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dwn548x0n4bpd"
path="res://.godot/imported/Outch.png-fb0d67fa327c4c83d19c4122b53475dc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/Outch.png"
dest_files=["res://.godot/imported/Outch.png-fb0d67fa327c4c83d19c4122b53475dc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/RunArme.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dpy6espwka35l"
path="res://.godot/imported/RunArme.png-0ddf4bccde5c36d31728f6dfcc6c39c0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/RunArme.png"
dest_files=["res://.godot/imported/RunArme.png-0ddf4bccde5c36d31728f6dfcc6c39c0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/RunArmeEpee.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dxsbbcagqkiid"
path="res://.godot/imported/RunArmeEpee.png-53c014bb63270f9d7b7a1a264ad4311e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/RunArmeEpee.png"
dest_files=["res://.godot/imported/RunArmeEpee.png-53c014bb63270f9d7b7a1a264ad4311e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/RunCycle.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsxvqsh3umw01"
path="res://.godot/imported/RunCycle.png-669737da4bd32c93f4786dff9477bb56.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/RunCycle.png"
dest_files=["res://.godot/imported/RunCycle.png-669737da4bd32c93f4786dff9477bb56.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/Stab .png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d2rfo6ilwusak"
path="res://.godot/imported/Stab .png-066cf9b96545ad05213c48d15dd6666a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/Stab .png"
dest_files=["res://.godot/imported/Stab .png-066cf9b96545ad05213c48d15dd6666a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
player/assets/WalkCycle.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dw6tn0grt2ajc"
path="res://.godot/imported/WalkCycle.png-3dcfa4941b274ed62a1c28413d027e7e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/assets/WalkCycle.png"
dest_files=["res://.godot/imported/WalkCycle.png-3dcfa4941b274ed62a1c28413d027e7e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

7
player/blue_profile.tres Normal file
View File

@ -0,0 +1,7 @@
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://b6ivps1v5bwc7"]
[ext_resource type="Texture2D" uid="uid://dbruj2bdtjfmd" path="res://player/assets/char_blue.png" id="1_jjpkp"]
[resource]
atlas = ExtResource("1_jjpkp")
region = Rect2(22, 24, 11, 12)

View File

@ -2,27 +2,123 @@ extends CharacterBody2D
@export_range(10, 1000, 10, "or_greater")
var speed = 300.0
@export_range(0, 0.2, 0.001, "or_greater")
var acceleration = 0.5
@export_group("Airborne")
@export_range(0, 1000, 10, "or_greater")
var jump_velocity = 400.0
@export_range(0, 10, 0.1, "or_greater")
var gravity_modifier = 1
@onready var sword: AnimatedSprite2D = $Sword
@onready var damageable: Damageable = $Damageable
@onready var shield: AnimatedSprite2D = $Shield
@onready var base: AnimatedSprite2D = $Base
var current_sprite: AnimatedSprite2D
var is_in_cutscene = false # back to true on build
var current_animation = "idle"
var has_shield = false
var has_sword = false
var has_armor = false
func play_anim():
current_sprite.play(current_animation)
func play_anim_run():
current_animation = "run"
func play_anim_idle():
current_animation = "idle"
func play_anim_jump():
current_animation = "jump"
func play_anim_dance():
current_animation = "dance"
func set_in_cutscene():
is_in_cutscene = true
play_anim_idle()
func set_in_play():
is_in_cutscene = false
func look_left():
current_sprite.flip_h = true
func look_right():
current_sprite.flip_h = false
func _ready() -> void:
current_sprite = base
func _physics_process(delta: float) -> void:
# Add the gravity.
play_anim()
if is_in_cutscene:
velocity.x = move_toward(velocity.x, 0, speed)
move_and_slide()
return
if not is_on_floor():
velocity += get_gravity() * delta * gravity_modifier
# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = -jump_velocity
var direction := Input.get_axis("move_left", "move_right")
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction := Input.get_axis("ui_left", "ui_right")
damageable.set_active(has_shield and direction != 0)
if direction > 0 and is_on_floor():
look_right()
if direction < 0 and is_on_floor():
look_left()
if not is_on_floor():
current_animation = "got_hit"
else:
if velocity.x != 0:
play_anim_run()
else:
play_anim_idle()
if is_on_floor():
if direction:
velocity.x = direction * speed
var smoothed_speed = speed * smoothstep(0, 1, acceleration)
velocity.x += direction * smoothed_speed
velocity.x = clampf(velocity.x, -speed, speed)
else:
velocity.x = move_toward(velocity.x, 0, speed)
if Input.is_action_just_pressed("hit") and has_sword:
hit()
move_and_slide()
func hit():
print("hit")
current_animation = "hit"
func _on_dialogue_manager_dialogue_ended() -> void:
set_in_play()
func _on_trigger_dialogue_body_entered(body: Node2D) -> void:
set_in_cutscene()
func _on_start_dancing() -> void:
play_anim_dance()
func _on_npc_shield_dialogue_dialogue_ended() -> void:
set_in_play()
current_sprite.visible = false
current_sprite = shield
current_sprite.play("idle")
current_sprite.visible = true
has_shield = true
func _on_red_hood_sword_dialogue_dialogue_ended() -> void:
set_in_play()
current_sprite.visible = false
current_sprite = sword
current_sprite.play("idle")
current_sprite.visible = true
has_sword = true

View File

@ -1,373 +1,164 @@
[gd_scene load_steps=70 format=3 uid="uid://yvp44oauis4n"]
[gd_scene load_steps=63 format=3 uid="uid://yvp44oauis4n"]
[ext_resource type="Texture2D" uid="uid://d3t1fn35skpip" path="res://player/assets/idle sheet-Sheet.png" id="1_g1dw6"]
[ext_resource type="Script" uid="uid://c1fqj3lba7wik" path="res://player/player.gd" id="1_yw30f"]
[ext_resource type="Texture2D" uid="uid://besci6tw4jtou" path="res://player/assets/itch run-Sheet sheet.png" id="2_yw30f"]
[ext_resource type="Texture2D" uid="uid://dbruj2bdtjfmd" path="res://player/assets/char_blue.png" id="3_qjkh3"]
[sub_resource type="AtlasTexture" id="AtlasTexture_8pxes"]
atlas = ExtResource("3_qjkh3")
region = Rect2(0, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_fmu53"]
atlas = ExtResource("3_qjkh3")
region = Rect2(56, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_w7j2h"]
atlas = ExtResource("3_qjkh3")
region = Rect2(112, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_n0b8q"]
atlas = ExtResource("3_qjkh3")
region = Rect2(168, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_jfgyi"]
atlas = ExtResource("3_qjkh3")
region = Rect2(224, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_237xx"]
atlas = ExtResource("3_qjkh3")
region = Rect2(280, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_wpyo2"]
atlas = ExtResource("3_qjkh3")
region = Rect2(0, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_7crtr"]
atlas = ExtResource("3_qjkh3")
region = Rect2(56, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_vgvch"]
atlas = ExtResource("3_qjkh3")
region = Rect2(112, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_a1u5o"]
atlas = ExtResource("3_qjkh3")
region = Rect2(168, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_3dxkp"]
atlas = ExtResource("3_qjkh3")
region = Rect2(224, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_6wior"]
atlas = ExtResource("3_qjkh3")
region = Rect2(280, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_p5tca"]
atlas = ExtResource("3_qjkh3")
region = Rect2(0, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_jbx34"]
atlas = ExtResource("3_qjkh3")
region = Rect2(56, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_s3g0c"]
atlas = ExtResource("3_qjkh3")
region = Rect2(112, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_35wys"]
atlas = ExtResource("3_qjkh3")
region = Rect2(168, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_pjwc4"]
atlas = ExtResource("3_qjkh3")
region = Rect2(224, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_or4qq"]
atlas = ExtResource("3_qjkh3")
region = Rect2(280, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_hggc2"]
atlas = ExtResource("3_qjkh3")
region = Rect2(336, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_b2j0d"]
atlas = ExtResource("3_qjkh3")
region = Rect2(392, 112, 56, 56)
[sub_resource type="SpriteFrames" id="SpriteFrames_7l6ig"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_8pxes")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fmu53")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w7j2h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n0b8q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jfgyi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_237xx")
}],
"loop": true,
"name": &"hit",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_wpyo2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7crtr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vgvch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a1u5o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3dxkp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6wior")
}],
"loop": true,
"name": &"idle",
"speed": 8.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_p5tca")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jbx34")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s3g0c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_35wys")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pjwc4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_or4qq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hggc2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_b2j0d")
}],
"loop": true,
"name": &"run",
"speed": 14.0
}]
[sub_resource type="AtlasTexture" id="AtlasTexture_g6k8r"]
atlas = ExtResource("1_g1dw6")
region = Rect2(0, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_boad6"]
atlas = ExtResource("1_g1dw6")
region = Rect2(80, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_rgyib"]
atlas = ExtResource("1_g1dw6")
region = Rect2(160, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_hg6s5"]
atlas = ExtResource("1_g1dw6")
region = Rect2(240, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_8t03j"]
atlas = ExtResource("1_g1dw6")
region = Rect2(320, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_2ieo8"]
atlas = ExtResource("1_g1dw6")
region = Rect2(400, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_ebec5"]
atlas = ExtResource("1_g1dw6")
region = Rect2(480, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_yllr7"]
atlas = ExtResource("1_g1dw6")
region = Rect2(560, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_kb6p2"]
atlas = ExtResource("1_g1dw6")
region = Rect2(640, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_wodsf"]
atlas = ExtResource("1_g1dw6")
region = Rect2(720, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_32hag"]
atlas = ExtResource("1_g1dw6")
region = Rect2(800, 0, 80, 80)
[ext_resource type="Texture2D" uid="uid://dxsbbcagqkiid" path="res://player/assets/RunArmeEpee.png" id="2_hg6s5"]
[ext_resource type="SpriteFrames" uid="uid://i6035vm5ited" path="res://player/armored_spritesheet.tres" id="2_qjkh3"]
[ext_resource type="Texture2D" uid="uid://dv7jhtoptk12r" path="res://player/assets/Danse.png" id="3_hg6s5"]
[ext_resource type="Texture2D" uid="uid://dwn548x0n4bpd" path="res://player/assets/Outch.png" id="3_rgyib"]
[ext_resource type="Texture2D" uid="uid://d2rfo6ilwusak" path="res://player/assets/Stab .png" id="4_8t03j"]
[ext_resource type="Texture2D" uid="uid://dr5ypp4q8n2xm" path="res://player/assets/DebutIdle.png" id="4_rgyib"]
[ext_resource type="Texture2D" uid="uid://dsxvqsh3umw01" path="res://player/assets/RunCycle.png" id="5_boad6"]
[ext_resource type="PackedScene" uid="uid://djwoetcyvvofc" path="res://damageable/damageable.tscn" id="5_g6k8r"]
[ext_resource type="Shape2D" uid="uid://6rhdwj5jxbxn" path="res://player/player_collision.tres" id="5_qjkh3"]
[sub_resource type="AtlasTexture" id="AtlasTexture_tqiix"]
atlas = ExtResource("1_g1dw6")
region = Rect2(880, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_e7oew"]
atlas = ExtResource("1_g1dw6")
region = Rect2(960, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_c35mf"]
atlas = ExtResource("1_g1dw6")
region = Rect2(1040, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_65viv"]
atlas = ExtResource("1_g1dw6")
region = Rect2(1120, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_x7c3f"]
atlas = ExtResource("1_g1dw6")
region = Rect2(1200, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_bjvpn"]
atlas = ExtResource("1_g1dw6")
region = Rect2(1280, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_s7qer"]
atlas = ExtResource("1_g1dw6")
region = Rect2(1360, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_g4c7l"]
atlas = ExtResource("2_yw30f")
region = Rect2(0, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_knn7v"]
atlas = ExtResource("2_yw30f")
region = Rect2(80, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_7pqkx"]
atlas = ExtResource("2_yw30f")
region = Rect2(160, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_uw77l"]
atlas = ExtResource("2_yw30f")
region = Rect2(240, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_rptt4"]
atlas = ExtResource("2_yw30f")
region = Rect2(320, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_r7pn3"]
atlas = ExtResource("2_yw30f")
region = Rect2(400, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_b8hi5"]
atlas = ExtResource("2_yw30f")
region = Rect2(480, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_2uvqg"]
atlas = ExtResource("2_yw30f")
region = Rect2(560, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_1s1yo"]
atlas = ExtResource("2_yw30f")
region = Rect2(640, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_5ejfk"]
atlas = ExtResource("2_yw30f")
region = Rect2(720, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_jd2rm"]
atlas = ExtResource("2_yw30f")
region = Rect2(800, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_q28gw"]
atlas = ExtResource("2_yw30f")
region = Rect2(880, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(192, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ge24q"]
atlas = ExtResource("2_yw30f")
region = Rect2(960, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(224, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_pnw6m"]
atlas = ExtResource("2_yw30f")
region = Rect2(1040, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(256, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_1so5t"]
atlas = ExtResource("2_yw30f")
region = Rect2(1120, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(288, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_55jnj"]
atlas = ExtResource("2_yw30f")
region = Rect2(1200, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(320, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_dx5ib"]
atlas = ExtResource("2_yw30f")
region = Rect2(1280, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(352, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_a2xo5"]
atlas = ExtResource("2_yw30f")
region = Rect2(1360, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(384, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_art4l"]
atlas = ExtResource("2_yw30f")
region = Rect2(1440, 0, 80, 80)
atlas = ExtResource("3_hg6s5")
region = Rect2(416, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_hg6s5"]
atlas = ExtResource("3_rgyib")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_8t03j"]
atlas = ExtResource("3_rgyib")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jfgyi"]
atlas = ExtResource("4_8t03j")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_237xx"]
atlas = ExtResource("4_8t03j")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_wpyo2"]
atlas = ExtResource("4_8t03j")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_7crtr"]
atlas = ExtResource("4_8t03j")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vgvch"]
atlas = ExtResource("4_8t03j")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_a1u5o"]
atlas = ExtResource("4_8t03j")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2ieo8"]
atlas = ExtResource("2_hg6s5")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ebec5"]
atlas = ExtResource("2_hg6s5")
region = Rect2(288, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_yllr7"]
atlas = ExtResource("2_hg6s5")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_kb6p2"]
atlas = ExtResource("2_hg6s5")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_fjxoa"]
atlas = ExtResource("2_yw30f")
region = Rect2(1520, 0, 80, 80)
atlas = ExtResource("2_hg6s5")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_gswnw"]
atlas = ExtResource("2_yw30f")
region = Rect2(1600, 0, 80, 80)
atlas = ExtResource("2_hg6s5")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xcnuv"]
atlas = ExtResource("2_yw30f")
region = Rect2(1680, 0, 80, 80)
atlas = ExtResource("2_hg6s5")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_j55il"]
atlas = ExtResource("2_yw30f")
region = Rect2(1760, 0, 80, 80)
atlas = ExtResource("2_hg6s5")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_hjies"]
atlas = ExtResource("2_yw30f")
region = Rect2(1840, 0, 80, 80)
atlas = ExtResource("2_hg6s5")
region = Rect2(192, 0, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_mmwog"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mmwog"]
atlas = ExtResource("2_hg6s5")
region = Rect2(224, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_8pxes"]
atlas = ExtResource("2_hg6s5")
region = Rect2(256, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_fmu53"]
atlas = ExtResource("2_hg6s5")
region = Rect2(288, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_w7j2h"]
atlas = ExtResource("2_hg6s5")
region = Rect2(320, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_n0b8q"]
atlas = ExtResource("2_hg6s5")
region = Rect2(352, 0, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_jfgyi"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_g6k8r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_boad6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rgyib")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hg6s5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8t03j")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2ieo8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ebec5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_yllr7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kb6p2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wodsf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_32hag")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tqiix")
}, {
"duration": 1.0,
@ -387,10 +178,245 @@ animations = [{
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s7qer")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ge24q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pnw6m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1so5t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_55jnj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dx5ib")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a2xo5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_art4l")
}],
"loop": true,
"name": &"dance",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hg6s5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8t03j")
}],
"loop": true,
"name": &"got_hit",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_jfgyi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_237xx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wpyo2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7crtr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vgvch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a1u5o")
}],
"loop": true,
"name": &"hit",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_2ieo8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ebec5")
}],
"loop": true,
"name": &"idle",
"speed": 13.0
"speed": 2.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yllr7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kb6p2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fjxoa")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gswnw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xcnuv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_j55il")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hjies")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mmwog")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8pxes")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fmu53")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w7j2h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n0b8q")
}],
"loop": true,
"name": &"run",
"speed": 14.0
}]
[sub_resource type="AtlasTexture" id="AtlasTexture_wodsf"]
atlas = ExtResource("4_rgyib")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_32hag"]
atlas = ExtResource("4_rgyib")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_g4c7l"]
atlas = ExtResource("5_boad6")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_knn7v"]
atlas = ExtResource("5_boad6")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_7pqkx"]
atlas = ExtResource("5_boad6")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_uw77l"]
atlas = ExtResource("5_boad6")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_rptt4"]
atlas = ExtResource("5_boad6")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_r7pn3"]
atlas = ExtResource("5_boad6")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_b8hi5"]
atlas = ExtResource("5_boad6")
region = Rect2(192, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2uvqg"]
atlas = ExtResource("5_boad6")
region = Rect2(224, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_1s1yo"]
atlas = ExtResource("5_boad6")
region = Rect2(256, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_5ejfk"]
atlas = ExtResource("5_boad6")
region = Rect2(288, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jd2rm"]
atlas = ExtResource("5_boad6")
region = Rect2(320, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_q28gw"]
atlas = ExtResource("5_boad6")
region = Rect2(352, 0, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_mmwog"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_tqiix")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_e7oew")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c35mf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_65viv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_x7c3f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bjvpn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s7qer")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ge24q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pnw6m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1so5t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_55jnj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dx5ib")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a2xo5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_art4l")
}],
"loop": true,
"name": &"dance",
"speed": 6.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hg6s5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8t03j")
}],
"loop": true,
"name": &"got_hit",
"speed": 8.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_wodsf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_32hag")
}],
"loop": true,
"name": &"idle",
"speed": 3.0
}, {
"frames": [{
"duration": 1.0,
@ -428,67 +454,46 @@ animations = [{
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_q28gw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ge24q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pnw6m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1so5t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_55jnj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dx5ib")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a2xo5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_art4l")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fjxoa")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gswnw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xcnuv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_j55il")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hjies")
}],
"loop": true,
"name": &"run",
"speed": 30.0
"speed": 14.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_g1dw6"]
radius = 6.0
height = 26.0
[node name="Player" type="CharacterBody2D"]
collision_layer = 3
script = ExtResource("1_yw30f")
speed = 180.0
acceleration = 0.177
[node name="Knight" type="AnimatedSprite2D" parent="."]
position = Vector2(1, -28)
sprite_frames = SubResource("SpriteFrames_7l6ig")
animation = &"idle"
[node name="AudioListener2D" type="AudioListener2D" parent="."]
current = true
[node name="Sword" type="AnimatedSprite2D" parent="."]
visible = false
position = Vector2(0, -16)
sprite_frames = SubResource("SpriteFrames_jfgyi")
animation = &"hit"
autoplay = "idle"
frame_progress = 0.277569
[node name="Shield" type="AnimatedSprite2D" parent="."]
visible = false
position = Vector2(0, -16)
sprite_frames = ExtResource("2_qjkh3")
animation = &"dance"
autoplay = "idle"
[node name="RedHood" type="AnimatedSprite2D" parent="."]
position = Vector2(11, -19)
[node name="Base" type="AnimatedSprite2D" parent="."]
position = Vector2(0, -16)
sprite_frames = SubResource("SpriteFrames_mmwog")
animation = &"idle"
animation = &"got_hit"
autoplay = "idle"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
visible = false
position = Vector2(0, -13)
shape = SubResource("CapsuleShape2D_g1dw6")
shape = ExtResource("5_qjkh3")
[node name="Damageable" parent="." instance=ExtResource("5_g6k8r")]
hitback_velocity = 400.0

View File

@ -0,0 +1,5 @@
[gd_resource type="CapsuleShape2D" format=3 uid="uid://6rhdwj5jxbxn"]
[resource]
radius = 6.0
height = 26.0

View File

@ -0,0 +1,7 @@
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://d4lwniwokx7px"]
[ext_resource type="Texture2D" uid="uid://dsxvqsh3umw01" path="res://player/assets/RunCycle.png" id="1_1apyp"]
[resource]
atlas = ExtResource("1_1apyp")
region = Rect2(14, 9, 6, 6)

View File

@ -0,0 +1,7 @@
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://oocxl803i4aa"]
[ext_resource type="Texture2D" uid="uid://d3t1fn35skpip" path="res://player/assets/idle sheet-Sheet.png" id="1_0t2s6"]
[resource]
atlas = ExtResource("1_0t2s6")
region = Rect2(663, 28, 14, 13)

View File

@ -10,7 +10,7 @@ config_version=5
[application]
config/name="ExampleProject"
config/name="GMTK25"
run/main_scene="uid://s1cx1gvt4bed"
config/features=PackedStringArray("4.4", "Forward Plus")
config/icon="res://icon.svg"
@ -25,6 +25,37 @@ window/stretch/mode="viewport"
project/assembly_name="ExampleProject"
[gui]
theme/custom_font="uid://dgdurp0mujjjv"
[input]
move_right={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
]
}
move_left={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
interact={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null)
]
}
hit={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(196, 11),"global_position":Vector2(205, 50),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
[rendering]
textures/canvas_textures/default_texture_filter=0

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hk7gv0ck7odb"
path="res://.godot/imported/tilemap_black.png-b89824c7dd01aaa69ee250fc21b3012c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/kenney_1-bit-input-prompts-pixel-16/Tilemap/tilemap_black.png"
dest_files=["res://.godot/imported/tilemap_black.png-b89824c7dd01aaa69ee250fc21b3012c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dbly5mbs11hek"
path="res://.godot/imported/tilemap_black_packed.png-268181d103bcebeab5df34abeebba388.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/kenney_1-bit-input-prompts-pixel-16/Tilemap/tilemap_black_packed.png"
dest_files=["res://.godot/imported/tilemap_black_packed.png-268181d103bcebeab5df34abeebba388.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c12l1hvmwmcns"
path="res://.godot/imported/tilemap_white_packed.png-58e2bcb32ac9f4de978b9824458cf8e7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/kenney_1-bit-input-prompts-pixel-16/Tilemap/tilemap_white_packed.png"
dest_files=["res://.godot/imported/tilemap_white_packed.png-58e2bcb32ac9f4de978b9824458cf8e7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
ui/kenney_1-bit-input-prompts-pixel-16/tilemap_white.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://deu2palri4pji"
path="res://.godot/imported/tilemap_white.png-0f5dc5834cef2c9b1022ca2dd8356f54.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/kenney_1-bit-input-prompts-pixel-16/tilemap_white.png"
dest_files=["res://.godot/imported/tilemap_white.png-0f5dc5834cef2c9b1022ca2dd8356f54.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
ui/m6x11.ttf Normal file

Binary file not shown.

35
ui/m6x11.ttf.import Normal file
View File

@ -0,0 +1,35 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://dgdurp0mujjjv"
path="res://.godot/imported/m6x11.ttf-2d62e7302f2ed70796487cab6df55017.fontdata"
[deps]
source_file="res://ui/m6x11.ttf"
dest_files=["res://.godot/imported/m6x11.ttf-2d62e7302f2ed70796487cab6df55017.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=4
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

BIN
world_assets/Armoire.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://rbj0av8dvm2e"
path="res://.godot/imported/Armoire.png-62a56be0dd5d8aab64da1c1f213a9e8a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://world_assets/Armoire.png"
dest_files=["res://.godot/imported/Armoire.png-62a56be0dd5d8aab64da1c1f213a9e8a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

12331
world_assets/Cave/cave.tres Normal file

File diff suppressed because it is too large Load Diff

1526
world_assets/bubbles.tres Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff