extends Node3D ## Bayerischer Hof: 3 Quests → Paywall-Joke → Exit zu Dressler. Urhahn-Schock. var _fed_pigs: bool = false var _milked: bool = false var _chickens: bool = false func _ready() -> void: GameState.current_scene_id = "farm" GameState.heal_full() _fed_pigs = bool(GameState.get_flag("pigs_fed", false)) _milked = bool(GameState.get_flag("cows_milked", false)) _chickens = bool(GameState.get_flag("chickens_taken", false)) var mood := str(GameState.get_flag("farmer_mood", "direct")) var ui := get_node_or_null("/root/UIRoot") if ui and ui.has_method("show_dialog"): if mood == "detour": ui.show_dialog_key("dialog_farmer_detour", 4.0) else: ui.show_dialog_key("dialog_farmer_direct", 3.5) await get_tree().create_timer(1.2).timeout ui.show_dialog_key("dialog_farmer_quest", 4.0) var urhahn := get_node_or_null("Urhahn") if urhahn: urhahn.set("ai_enabled", true) urhahn.set("invulnerable", true) urhahn.set("instakill", true) urhahn.set("move_speed", 4.2) urhahn.set("attack_cooldown", 0.85) urhahn.set("death_cause_key", "death_rooster") urhahn.set("shout_key", "dialog_urhahn") urhahn.set("shout_interval", 5.0) urhahn.set("billboard_height", SpriteFit.WORLD_BOSS_HEIGHT) if urhahn.has_signal("defeated"): urhahn.defeated.connect(_on_urhahn_down) var hazard := get_node_or_null("RoosterHazard") if hazard: hazard.set("damage", 99) hazard.set("death_cause_key", "death_rooster") if hazard.has_signal("body_entered") and not hazard.body_entered.is_connected(_on_rooster_touch): hazard.body_entered.connect(_on_rooster_touch) var exit := get_node_or_null("Exit") if exit: exit.set("require_flag", "paywall_cleared") var ticket := get_node_or_null("TicketVendor") if ticket and ticket.has_signal("interacted"): ticket.interacted.connect(_on_ticket) func _physics_process(_delta: float) -> void: if GameState.get_flag("pigs_fed", false) and not _fed_pigs: complete_pig() if GameState.get_flag("cows_milked", false) and not _milked: complete_cow() if GameState.get_flag("chickens_taken", false) and not _chickens: complete_chicken() func complete_pig() -> void: _fed_pigs = true _check_quests() func complete_cow() -> void: _milked = true _check_quests() func complete_chicken() -> void: _chickens = true if not Inventory.has_item("lava_chicken"): Inventory.add_item("lava_chicken", 1) _check_quests() func _check_quests() -> void: if not (_fed_pigs and _milked and _chickens): return GameState.set_flag("farm_quests_done", true) var ui := get_node_or_null("/root/UIRoot") if ui and ui.has_method("show_dialog"): ui.show_dialog_key("dialog_paywall", 4.0) Shop.purchase("continue_joke") GameState.set_flag("paywall_cleared", true) func _on_urhahn_down() -> void: GameState.set_flag("urhahn_defeated", true) func _on_rooster_touch(body: Node3D) -> void: if body.is_in_group("player") and not GameState.get_flag("urhahn_defeated", false): GameState.apply_shock(10.0) func _on_ticket(_n: Node = null) -> void: Inventory.add_item("death_ticket", 1) var ui := get_node_or_null("/root/UIRoot") if ui and ui.has_method("show_dialog"): ui.show_dialog(Locale.tr_key("item_death_ticket"))