extends Node2D const zoomStart = 1.0 const zoomEnd = 0.97 const bloodStart = 0.2 const bloodEnd = 0.9 const timeParam = 1.7 const easterEggDelay = 13.0 var easterPresented var countdownTime var beginCountdown var isDead var bloodIncrement var zoomIncrement var currentZoom var currentEnergy var isIncreasing var screenWidth; var screenHeight; var xOffset; var yOffset func _ready(): if not get_tree().root.has_node("Root"): return ; GallerySingleton.AddImage("Death_fall"); if (float(Dialogic.get_variable("Pink_Karma")) <= - 3.5): easterPresented = true var dialogicNode = get_parent().get_parent().get_node("Game").get_child(0).get_child(0) dialogicNode.connect("dialogic_signal", self, "_frame_switch_listener") beginCountdown = false countdownTime = 0.0 isDead = false bloodIncrement = (bloodEnd - bloodStart) / timeParam; zoomIncrement = (zoomEnd - zoomStart) / timeParam; currentZoom = zoomStart isIncreasing = true currentEnergy = 0 screenWidth = SettingsSingleton.GetCurrectScreenResolutionVector2().x screenHeight = SettingsSingleton.GetCurrectScreenResolutionVector2().y func _process(delta): if (easterPresented): if (countdownTime < easterEggDelay and beginCountdown): countdownTime += delta elif (countdownTime >= easterEggDelay and beginCountdown): beginCountdown = false easterEgg() if (isDead): if (isIncreasing): if (currentEnergy <= bloodEnd): currentEnergy += bloodIncrement * delta currentZoom += zoomIncrement * delta $death / Light2D.self_modulate.a = currentEnergy xOffset = (1 - currentZoom) * ($death / Polygon2D.get_global_transform_with_canvas().origin.x) / (screenWidth); yOffset = (1 - currentZoom) * (screenHeight - $death / Polygon2D.get_global_transform_with_canvas().origin.y) / screenHeight; var offset = Vector2(xOffset, yOffset); var tiling = Vector2(currentZoom, currentZoom) $death / Polygon2D.material.set_shader_param("offset", offset) $death / Polygon2D.material.set_shader_param("tiling", tiling); else : isIncreasing = false if ( not isIncreasing): if (currentEnergy >= bloodStart): currentEnergy -= bloodIncrement * delta currentZoom -= zoomIncrement * delta $death / Light2D.self_modulate.a = currentEnergy xOffset = (1 - currentZoom) * ($death / Polygon2D.get_global_transform_with_canvas().origin.x) / (screenWidth); yOffset = (1 - currentZoom) * (screenHeight - $death / Polygon2D.get_global_transform_with_canvas().origin.y) / screenHeight; var offset = Vector2(xOffset, yOffset); $death / Polygon2D.material.set_shader_param("offset", offset) $death / Polygon2D.material.set_shader_param("tiling", Vector2(currentZoom, currentZoom)); else : isIncreasing = true else :pass func _frame_switch_listener(string): match string: "frame2": $Sprite2.visible = false $frames / Sprite2_1.visible = true "frame3": $frames / Sprite2_1.visible = false $frames / Sprite2_2.visible = true "frame4": $frames / Sprite2_2.visible = false $Sprite3.visible = true "death": $death.visible = true; var tween = $death.get_child(0).get_child(0) var light = $death.get_child(0) tween.interpolate_method(self, "bloodInterpolate", 0.0, bloodStart, 1.0, Tween.TRANS_LINEAR, 0); tween.start() yield ($death.get_child(0).get_child(0), "tween_all_completed") currentEnergy = bloodStart $death.get_child(0).self_modulate.a = bloodStart isDead = true; if easterPresented: beginCountdown = true func bloodInterpolate(value): $death / Light2D.self_modulate.a = value; func easterEgg(): if Dialogic.get_variable("Killer") == "Pink": var tween = $Tween $Sprite4.self_modulate.a = 0 tween.interpolate_method(self, "interpolateEye", 0, 0.8, 4.5, Tween.TRANS_LINEAR, 0) $Sprite4.visible = true tween.start() func interpolateEye(value): $Sprite4.self_modulate.a = value func InitForGallery()->Array: scale = Vector2(0.5, 0.5) $Sprite2.visible = true; $frames.visible = false; $Sprite3.visible = false; $Sprite4.visible = false; return ["ui_gallery_fall_1", "ui_gallery_fall_2", "ui_gallery_fall_3", "ui_gallery_fall_4"]; func SetSettings(setting): if setting == tr("ui_gallery_fall_1"): $Sprite2.visible = true; $frames.visible = false; $Sprite3.visible = false; $Sprite4.visible = false; elif setting == tr("ui_gallery_fall_2"): $Sprite2.visible = false; $frames.visible = true; $frames / Sprite2_1.visible = true; $frames / Sprite2_2.visible = false; $Sprite3.visible = false; $Sprite4.visible = false; elif setting == tr("ui_gallery_fall_3"): $Sprite2.visible = false; $frames.visible = true; $frames / Sprite2_1.visible = false; $frames / Sprite2_2.visible = true; $Sprite3.visible = false; $Sprite4.visible = false; elif setting == tr("ui_gallery_fall_4"): $Sprite2.visible = false; $frames.visible = false; $Sprite3.visible = true; $Sprite4.visible = false;