Untitled

Anonymous
plain_text
02/18/2026 2:44 AM
10.6 KB
9
Indexable
extends Node2D

@export var oldlady_portrait: Texture2D

var dialogue_ui
var note_ui
var fade_rect
var main_ref

@onready var player = $Player
@onready var oldlady = $OldLady

var has_key := false

func bind_ui(d, n, f, m) -> void:
	dialogue_ui = d
	note_ui = n
	fade_rect = f
	main_ref = m

func _ready() -> void:
	oldlady.interacted.connect(_on_oldlady_interacted)

# -------------------------------------------------
# Choice connection helper (prevents double replies)
# -------------------------------------------------
func _connect_choice_once(handler: Callable) -> void:
	if dialogue_ui == null:
		push_error("Corridor_Gang: dialogue_ui is null (bind_ui not called?)")
		return
	if dialogue_ui.choice_selected.is_connected(handler):
		dialogue_ui.choice_selected.disconnect(handler)
	dialogue_ui.choice_selected.connect(handler, CONNECT_ONE_SHOT)

# --------------------------
# Entry point
# --------------------------
func _on_oldlady_interacted() -> void:
	_start_gate()

func _start_gate() -> void:
	player.set_can_move(false)

	dialogue_ui.show_dialogue(
		"Ibolya néni",
		"„Na. Megjött.”\n„Akkor mondja, mit akar.”",
		oldlady_portrait,
		[
			{"label": "Jó reggelt."},
			{"label": "Sietek."},
			{"label": "Itt lakom."},
			{"label": "Csak észrevétlenül távoznék."}
		]
	)

	_connect_choice_once(_gate_choice)

func _gate_choice(index: int) -> void:
	match index:
		0: _branch_good_morning()
		1: _branch_hurry()
		2: _branch_i_live_here()
		3: _branch_leave_unnoticed()

# --------------------------
# Branches (each gives a reply + new choices)
# --------------------------
func _branch_good_morning() -> void:
	dialogue_ui.show_dialogue(
		"Ibolya néni",
		"„Jó reggelt?”\nMegforgatja a szót, mintha méreg lenne.\n„Minden reggelt, ami Isten kegyelmével életben találja az embert ki kell érdemelni.”\n„Indokolja meg, miért tartózkodik a folyosón.”",
		oldlady_portrait,
		[
			{"label": "Itt lakom?"},
			{"label": "A sarokban levő növény egész éjjel magához szólított."},
			{"label": "Elfogyott odabent a levegő."},
			{"label": "Takarítani jöttem a folyosó közös részét. De előtte dolgom van."}
		]
	)
	_connect_choice_once(_good_morning_choice)

func _good_morning_choice(i: int) -> void:
	match i:
		0:
			_return_to_gate("„Attól még hogy itt van egy ideje, ez nem biztos.”\n„Lakcímkártyát láttam már. Embert kevesebbet.”\n„Próbáld újra.”")
		1:
			_return_to_gate("„Ne humorizáljon.”\n„A vicceskedéssel jutnak be a betörők is az épületbe.”\n„Próbáld újra.”")
		2:
			_return_to_gate("A LEVEGŐ??\n“A levegő is társasházi tulajdon, remélem tudja.”\n“Próbáld újra.”")
		3:
			_midpoint_to_key("„Dolga.”\nBólint, mint aki jegyzőkönyvet vezet fejben.\n„Sorolja fel. Pontosan. Időrendben.”")

# --------------------------
# Hurry branch
# --------------------------
func _branch_hurry() -> void:
	dialogue_ui.show_dialogue(
		"Ibolya néni",
		"„Siet?”\nFelhúzza a szemöldökét.\n„A sietség a hibák melegágya.”\n„És a hibák mindig valakinél landolnak.”\n„Mi ennyire sürgős?”",
		oldlady_portrait,
		[
			{"label": "A busz nem vár meg."},
			{"label": "Időre megyek."},
			{"label": "Az élet halad."},
			{"label": "Nem akarok beszélgetni."}
		]
	)
	_connect_choice_once(_hurry_choice)

func _hurry_choice(i: int) -> void:
	match i:
		0:
			_midpoint_to_key("„A busz.”\n„A busz menetrend szerint jár.”\n„Az ember ritkán.”\n„Melyik?”")
		1:
			_midpoint_to_key("„Idő.”\n„Az idő relatív.”\n„A számonkérés nem.”\n„Hova?”")
		2:
			_return_to_gate("„Az élet halad.”\n„Igen.”\n„De mindjárt megállítom én magának..”\n„Próbáljd újra.”")
		3:
			_return_to_gate("Megdermed.\n„A beszélgetés közösség.”\n„A közösség erő.”\n„Ne gyengítse.”\n„Próbálja újra.”")

# --------------------------
# Live here branch
# --------------------------
func _branch_i_live_here() -> void:
	dialogue_ui.show_dialogue(
		"Ibolya néni",
		"„Itt lakik.”\nÖsszeszűkíti a szemét.\n„Mondjon egy dolgot, amit csak az tud, aki valóban itt él.”",
		oldlady_portrait,
		[
			{"label": "A félemeleti építkezés csak legenda."},
			{"label": "A lépcsőháznak saját szaga van."},
			{"label": "Mindig van szórólap, amit senki nem olvas."},
			{"label": "Az előtér a pletyka epicentruma."}
		]
	)
	_connect_choice_once(_live_here_choice)

func _live_here_choice(i: int) -> void:
	match i:
		0:
			_return_to_gate("„Építik azt.”\n„De hogy be is fejezik-e?..”\n„Próbáld újra.”")
		1:
			_midpoint_to_key("Mélyet szippant a levegőbe.\n„Igen.”\n„Enyhe töltött káposzta, por és üvegvisszaváltás.”\n„Rendben.”\n„Mi a terve ma?”")
		2:
			_return_to_gate("„A szórólapok figyelnek.”\n„Az érdeklődés az első lépés a bűnözés felé.”\n„Próbáld újra.”")
		3:
			_return_to_gate("„A pletyka intézmény.”\n„Nem játék.”\n„Próbáld újra.”")

# --------------------------
# Leave quietly branch
# --------------------------
func _branch_leave_unnoticed() -> void:
	dialogue_ui.show_dialogue(
		"Ibolya néni",
		"„Észrevétlenül?”\nLassan végigmér.\n„Ebben a házban semmi nem észrevétlen.”\n„Még a huzatnak is neve van.”\n„Mit akar, hogy ne vegyenek észre?”",
		oldlady_portrait,
		[
			{"label": "Hogy sietek."},
			{"label": "Hogy hogy nincs kedvem beszélgetni."},
			{"label": "Csak hogy leugrom a boltba."},
			{"label": "Semmit. Csak nem akarok jelentős lenni."}
		]
	)
	_connect_choice_once(_unnoticed_choice)

func _unnoticed_choice(i: int) -> void:
	match i:
		0:
			_return_to_gate("„Siet.”\n„Mindig mindenki siet.”\n„Aztán visszajönnek ide panaszkodni. Hova siet ennyire?”")
		1:
			_midpoint_to_key("Nincs kedve beszélgetni?\n„Az baj.”\n„A közösség nem kívánságműsor.”\n„Hova megy ilyen nagy hallgatással?”")
		2:
			_midpoint_to_key("„Boltba.”\n„Melyikbe?”\n„Ne mondja, hogy mindegy.”")
		3:
			_return_to_gate("Csak menne.\n„Na így nem.”\n„Itt minden mozgásnak oka van.”\n„Próbáld újra.”")

# --------------------------
# Return-to-gate helper (no escalating)
# --------------------------
func _return_to_gate(reply: String) -> void:
	dialogue_ui.show_dialogue(
		"Ibolya néni",
		reply,
		oldlady_portrait,
		[
			{"label": "Jó. Még egyszer."},
			{"label": "Vissza."}
		]
	)
	_connect_choice_once(_return_choice)

func _return_choice(i: int) -> void:
	_start_gate()

# --------------------------
# Midpoint -> Final question (properly chained)
# --------------------------
func _midpoint_to_key(prompt: String) -> void:
	dialogue_ui.show_dialogue(
		"Ibolya néni",
		prompt + "\nKözelebb hajol.\n„Utolsó kérdés.”\n„És most ne játsszon.”",
		oldlady_portrait,
		[
			{"label": "Nem hozok fel senkit"},
			{"label": "Nem lesz zaj."},
			{"label": "Nem kerül szóba a nevem."},
			{"label": "Visszajövök időben."}
		]
	)
	_connect_choice_once(_final_question_choice)

func _final_question_choice(i: int) -> void:
	match i:
		0:
			_grant_key()
		1:
			_grant_key()
		2:
			_return_to_gate("„A név mindig szóba kerül.”\n„Főleg, ha valaki azt hiszi, nem.”\n„Próbáld újra.”")
		3:
			_return_to_gate("„Időben?”\n„Az mit jelent magánál?”\n„Próbáld újra.”")

# --------------------------
# Grant key
# --------------------------
func _grant_key() -> void:
	if has_key:
		dialogue_ui.show_dialogue(
			"Ibolya néni",
			"„Maga ezt már megkapta.”\n„Menjen. Mielőtt meggondolom.”",
			oldlady_portrait,
			[]
		)
		player.set_can_move(true)
		return

	has_key = true

	dialogue_ui.show_dialogue(
		"Ibolya néni",
		"Nagyot sóhajt, mintha valami megterhelőt kellett volna csinálnia.\n„Jól van.”\nA köténye zsebéből előhúz egy **kulcsot**.\n„Ne hagyja el.”\n„Ha elhagyja, én fogom megtalálni. Nem maga.”\n„Na menjen már. És ne csapja be az ajtót.”",
		oldlady_portrait,
		[]
	)

	player.set_can_move(true)
Editor is loading...
Leave a Comment