41 lines
1,023 B
GDScript
41 lines
1,023 B
GDScript
extends Area2D
|
|
|
|
var broken = false
|
|
var hits_left = 3
|
|
|
|
var player = false
|
|
var player_body = null
|
|
|
|
func replace_numbers(name: String) -> String:
|
|
var new_name = name
|
|
for i in range(10):
|
|
new_name = new_name.replace(str(i), "")
|
|
return new_name
|
|
|
|
func _on_body_entered(body):
|
|
if body.get_parent().name == "Player":
|
|
player = true
|
|
player_body = body.get_parent()
|
|
|
|
func _on_body_exited(body):
|
|
if body.get_parent().name == "Player":
|
|
player = false
|
|
player_body = null
|
|
|
|
func _process(delta):
|
|
if player && player_body != null:
|
|
if Input.is_action_just_pressed("punch"):
|
|
if hits_left > 0:
|
|
$PunchPlayer.play()
|
|
hits_left -= 1
|
|
if hits_left == 0 && !broken:
|
|
# Mod Thing
|
|
$BreakPlayer.play()
|
|
$Sprite.texture = load("res://Sprites/Water/Broken/" + replace_numbers(name) + ".png")
|
|
broken = true
|
|
# Mod Player
|
|
player_body.scale += Vector2(0.05, 0.05)
|
|
player_body.get_node("CollisionShape2D").scale -= Vector2(0.05, 0.05)
|
|
player_body.speed -= 0.5
|
|
# Add points
|
|
Utils.points += 1
|