Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Scenes/Game Scenes/05_Level.tscn

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion Scenes/Game Scenes/Spawn.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ tile_map_data = PackedByteArray("AAAYABoABAABAAIAAAAbABoABAAEAAIAAAAcABkABAAFAAE
tile_set = ExtResource("4_qjkgr")

[node name="Destructible Pillar" type="Area2D" parent="."]
position = Vector2(2814, 388)
position = Vector2(783, 382)
scale = Vector2(1.62069, 1.62069)
script = ExtResource("9_l2ouu")
hit_damage = 10.0
Expand All @@ -156,13 +156,16 @@ scale = Vector2(2.15343, 2.15343)
texture = ExtResource("10_ea83u")

[node name="Object Presence" type="StaticBody2D" parent="Destructible Pillar/Pillar Sprite"]
visible = false
scale = Vector2(3.94673, 3.57513)

[node name="Collision Area" type="CollisionShape2D" parent="Destructible Pillar/Pillar Sprite/Object Presence"]
visible = false
position = Vector2(0.633453, 0)
shape = SubResource("RectangleShape2D_k5v5r")

[node name="Destruction Contact Area" type="CollisionShape2D" parent="Destructible Pillar"]
visible = false
position = Vector2(5, 0)
shape = SubResource("CapsuleShape2D_5tcfi")
debug_color = Color(0.940648, 0.168652, 0.449195, 0.42)
Expand Down
1 change: 1 addition & 0 deletions Scenes/Game Scenes/start_zone.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ tile_map_data = PackedByteArray("AAAeADIAAQAQAAUAAAAfADIAAQARAAUAAAAgADIAAQASAAU
tile_set = ExtResource("9_s46xd")

[node name="Layered_Decoration" type="TileMapLayer" parent="Stage"]
tile_map_data = PackedByteArray("AABCACsABgAAAAAAAQBEACsABgAAAAAAAQBGACsABgAAAAAAAQA=")
tile_set = ExtResource("9_s46xd")

[node name="ParallaxBackground" type="ParallaxBackground" parent="Stage"]
Expand Down
12 changes: 6 additions & 6 deletions Scripts/Bolt.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ extends Area2D
const DEBUG_LOGS = false

func _ready():
connect("body_entered", Callable(self, "_on_body_entered"))
connect("body_entered", Callable(self, "_on_body_entered"))

func _on_body_entered(body):
if body.name == "Player":
Logger.log_debug("U GOT A BOLT WOOOOOOOO!", DEBUG_LOGS)
ScoreManager.add_score(1)
queue_free()

if body.name == "Player":
Logger.log_debug("U GOT A BOLT WOOOOOOOO!", DEBUG_LOGS)
ScoreManager.add_score(1)
queue_free()

35 changes: 34 additions & 1 deletion Scripts/destructible_object.gd
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
extends Area2D

@onready var sprite : Sprite2D
@export var hit_damage : float = 20
@export var health : float = 100
const DEBUG_LOG = true;
var dmg_boost : float = 3

var is_blinking = false
var blink_duration = 0.05 # total blink time in seconds
var blink_timer = 0.0
var blink_interval = 0.05 # how fast it toggles
var blink_toggle_timer = 0.0

func _ready() -> void:
connect("body_entered", Callable(self, "_on_body_entered"))
sprite = get_node("Pillar Sprite")

pass # Replace with function body.

func take_hit(damage_scale : float = 1):
start_blinking()
if damage_scale == 1:
health -= hit_damage * dmg_boost
Logger.log_debug("%s object took a hit dealing (%s×%s) damage. Remainnig health %s" % [self.name, hit_damage, dmg_boost, health], DEBUG_LOG)
Expand All @@ -21,3 +30,27 @@ func take_hit(damage_scale : float = 1):
func check_for_destruction() -> void:
if health <=0:
queue_free()


func _physics_process(delta: float) -> void:
if is_blinking:
blink_timer -= delta
blink_toggle_timer -= delta

if blink_timer <= 0:
is_blinking = false
sprite.modulate = Color(1,1,1)
return

if blink_toggle_timer <= 0:
blink_toggle_timer = blink_interval
#if sprite.modulate == Color(255,128,0):
#sprite.modulate = Color(1,1,1) # normal color
#else:
sprite.modulate = Color(0.5,0.4,0.1)

func start_blinking():
is_blinking = true
blink_timer = blink_duration
blink_toggle_timer = 0
sprite.modulate = Color(255,128,0) # start with red
73 changes: 73 additions & 0 deletions Scripts/player.gd
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const JUMP_CUT_MULTIPLIER = 100
var is_sliding: bool = false
var slide_timer: float = 0.0
var timer : SceneTreeTimer
var tree = get_tree()

var sprite : AnimatedSprite2D

Expand Down Expand Up @@ -65,6 +66,25 @@ const FIRE_RATE_MAX: float = 0.35
var fire_cooldown: float = 0.0
var projectile_count = 0

#knockback on dmg
var is_knocked_back = false
var knockback_timer = 0.0
var knockback_direction = Vector2.ZERO
const KNOCKBACK_DURATION = 0.1
const KNOCKBACK_FORCE = 30
var invincible = false
var horizontal_force = -30.0
var vertical_force = -20
var resetting = false
var frozen = false

#damage blinking
var is_blinking = false
var blink_duration = 1.0 # total blink time in seconds
var blink_timer = 0.0
var blink_interval = 0.1 # how fast it toggles
var blink_toggle_timer = 0.0


func _ready() -> void:
timer = get_tree().create_timer(0)
Expand Down Expand Up @@ -93,6 +113,35 @@ func _on_spawn(position: Vector2, direction: String):

######################################################## Physics Processing Loop ########################################################
func _physics_process(delta: float) -> void:
if is_blinking:
blink_timer -= delta
blink_toggle_timer -= delta
if blink_toggle_timer <= 0:
blink_toggle_timer = blink_interval
if sprite.modulate == Color(0.3,0.1,0):
sprite.modulate = Color(1,1,1) # normal color
else:
sprite.modulate = Color(0.3,0.1,0) # blink red

if blink_timer <= 0:
is_blinking = false
sprite.modulate = Color(1,1,1) # reset to normal color

if frozen:
velocity = Vector2.ZERO
move_and_slide()
return

if is_knocked_back:
start_blinking()
velocity = knockback_direction * KNOCKBACK_FORCE
knockback_timer -= delta
if knockback_timer <= 0:
is_knocked_back = false
velocity = Vector2.ZERO
freeze_for(KNOCKBACK_DURATION * 5)


Logger.log_debug("Time left on timer: %s" % timer.time_left, DEBUG_OBJECT)
if fire_cooldown > 0:
fire_cooldown -= delta
Expand Down Expand Up @@ -324,3 +373,27 @@ func get_active_projectile_count() -> int:
if child is BlasterShot:
count += 1
return count

func apply_knockback(from_position: Vector2):
if is_knocked_back:
return
knockback_direction = Vector2(sign(direction_vector) * horizontal_force, vertical_force)
knockback_timer = KNOCKBACK_DURATION
is_knocked_back = true

func freeze_for(seconds):
frozen = true
await get_tree().create_timer(seconds).timeout
frozen = false
is_knocked_back = false
start_reset_sequence()


func start_reset_sequence() -> void:
get_tree().reload_current_scene()

func start_blinking():
is_blinking = true
blink_timer = blink_duration
blink_toggle_timer = 0
sprite.modulate = Color(0.3,0.1,0)
2 changes: 1 addition & 1 deletion Scripts/spike.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ func _ready():

func _on_body_entered(body):
if body is CharacterBody2D and body.name == "Player":
body.apply_knockback(global_position)
print("battery should reduce. code this.")
get_tree().reload_current_scene()