Files
2026-06-26 17:53:28 +02:00

58 lines
1.6 KiB
GDScript

extends Interactable3D
const MAX_BREAK_LEVEL = 2
signal broken
@export var break_level = 0
func _ready():
update_model()
func click():
if interactable:
clicked.emit()
%BreackAudioPlayer.playing = true
%BreakParticles.emitting = true
break_level += 1
if break_level == MAX_BREAK_LEVEL:
broken.emit()
interactable = false
unlock_mutation()
update_model()
func update_model():
if is_node_ready():
%CristalModel.visible = break_level == 0
%CristalModelCrack.visible = break_level > 0
if break_level > 1:
%CristalModelCrack.find_children("AnimationPlayer")[0].play("Break")
func unlock_mutation():
var progression = GameInfo.game_data.progression_data
if not progression.are_all_mutations_unlocked():
var new_mutation : PlantMutation = progression.unlock_new_mutation()
get_tree().create_timer(1.).timeout.connect(
func (): %MutationAnnounce.announce_mutation = new_mutation
);
if progression.are_all_mutations_unlocked():
SteamConnection.unlock_achievement(SteamConnection.ACH_UNLOCK_ALL_MUTATION)
else:
var talion_relay = TalionRelayArtifact.new()
if GameInfo.game_data and GameInfo.game_data.current_region_data and GameInfo.game_data.current_run:
GameInfo.game_data.current_run.add_artefacts(talion_relay)
get_tree().create_timer(1.).timeout.connect(
func (): %ArtefactAnnounce.announce_artefact = talion_relay
);