Tree("Root") {
    Composite(Sequence) {
        BTC.InitializeSpeechManager()
        BTC.SetSpeechRecognitionLanguage("it-IT")
        BTC.SetVoiceName("it-IT-FabiolaNeural")

        Composite(Race) {
            Composite(Sequence) {
                // Error in Speech Service: Cancel BTC Trees
                BTC.SpeechErrorOccured()
                BTC.SetBool("error")
            }

            Composite(Sequence) {
                //RunTree("32_Grotto_Story_B_Grotto_Intro")

                RunTree("32_Grotto_Kueche_Intro")
                //RunTree("32_Grotto_Kueche_Zwiebeln_schneiden")
                //RunTree("32_Grotto_Kueche_alles_gefunden")
                //RunTree("32_Grotto_Kueche_Interesse_Kochen")
                //RunTree("32_Grotto_Kueche_Kochen_Anzahl")
                //RunTree("32_Grotto_Kueche_Zusammen_Kochen")
                //RunTree("32_Grotto_Kueche_Parmigiano")
                //RunTree("32_Grotto_Im_Grotto_Essen_Intro")
            }
        }

        Composite(Sequence) {
            BTC.CompareBool("error")
            // Error Handling
            BTC.AbortSpeechEventListener()
            BTC.StopSpeechIntentRecognition()
            BTC.ClearPossbileSpeechIntents()

            BTC.Show("GO.GO.SpeechButton")
            BTC.Set("TextMeshPro.GO.Option1Button", "text", "Restart")
            BTC.Show("GO.GO.Option1Button")
            BTC.Run("NamedEventTrigger.GO.Option1Button")
            BTC.Hide("GO.GO.Option1Button")
            BTC.Hide("GO.GO.SpeechButton")
            BTC.Show("GO.GO.Home")
            BTC.Hide("GO.GO.SpeechOptions")
        }
    }
}

Tree("32_Grotto_Story_B_Grotto_Intro") {
    Composite(Sequence) {
        // Initialization
        BTC.Run("StudioEventEmitter.STATIC.AmbiGarten")

        BTC.Show("Depthkit.VIDEOS.Intro1StoryBGrotto")
        BTC.Run("Depthkit.VIDEOS.Intro1StoryBGrotto")
        BTC.Hide("Depthkit.VIDEOS.Intro1StoryBGrotto")

        BTC.Show("Depthkit.VIDEOS.Intro2StoryBGrotto")
        BTC.Run("Depthkit.VIDEOS.Intro2StoryBGrotto")
        BTC.Hide("Depthkit.VIDEOS.Intro2StoryBGrotto")

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Intro.3")
        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Intro.4")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.Show("Depthkit.VIDEOS.Intro6StoryBGrotto")
        BTC.Run("Depthkit.VIDEOS.Intro6StoryBGrotto")
        BTC.Hide("Depthkit.VIDEOS.Intro6StoryBGrotto")

        // --- Story B Grotto - Telefonat ---
        BTC.Show("Depthkit.VIDEOS.Telefonat1StoryBGr")
        BTC.Run("Depthkit.VIDEOS.Telefonat1StoryBGr")
        BTC.Hide("Depthkit.VIDEOS.Telefonat1StoryBGr")

        BTC.SynthesizeText("Ciao Francesca. Sei già arrivata?")
        BTC.SpeechOutputEnded()

        BTC.Show("Depthkit.VIDEOS.Telefonat3StoryBGr")
        BTC.Run("Depthkit.VIDEOS.Telefonat3StoryBGr")
        BTC.Hide("Depthkit.VIDEOS.Telefonat3StoryBGr")

        BTC.SynthesizeText("Oh, che bello, e chi è?")
        BTC.SpeechOutputEnded()

        BTC.Show("Depthkit.VIDEOS.Telefonat5StoryBGr")
        BTC.Run("Depthkit.VIDEOS.Telefonat5StoryBGr")
        BTC.Hide("Depthkit.VIDEOS.Telefonat5StoryBGr")

        BTC.Show("Depthkit.VIDEOS.IdleLoopNonnaGrott")
        BTC.Run("Depthkit.VIDEOS.IdleLoopNonnaGrott")

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Telefonat.6")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        // --- Story B Grotto - Begruessung ---
        BTC.SynthesizeText("Ciao, che bello che accompagni Francesca. Com'è andato il viaggio?")
        BTC.SpeechOutputEnded()

        // --- Story B Grotto - Antwort_Reise ---
        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Reise.1")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.SynthesizeText("Ti piace la Mesolcina?")
        BTC.SpeechOutputEnded()

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Reise.5")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.SynthesizeText("Io non vorrei vivere in nessun altro posto al mondo! Purtroppo oggi non ci posso essere nel grotto. Aiuti tu Francesca in cucina o preferisci aspettarla nella sala del grotto?")
        BTC.SpeechOutputEnded()

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Reise.9")
        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Reise.11")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()

                        // Intent erkannt
                        Composite(Race) {
                            Composite(Sequence) {
                                BTC.CompareIntentID("Story_B_Grotto.Antwort_Reise.9")
                                BTC.ClearPossbileSpeechIntents()
                                RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche")
                            }
                            Composite(Sequence) {
                                BTC.CompareIntentID("Story_B_Grotto.Antwort_Reise.11")
                                BTC.ClearPossbileSpeechIntents()
                                RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto")
                            }
                        }
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        // --- Story B Grotto - Nachfrage Nonna Grotto ---
                        // SpeechIntentRecognized Failed: kein Intent erkannt
                        BTC.SynthesizeText("Che cosa volevi dire? Non ho capito. Preferisci aiutare o aspettare in giardino?")
                        BTC.SpeechOutputEnded()
                
                        BTC.StartSpeechIntentRecognition()
                        Composite(Race) {
                            Composite(Sequence) {
                                BTC.UserStartedSpeechInput()
                                BTC.SpeechIntentRecognized()

                                Composite(Race) {
                                    Composite(Sequence) {
                                        BTC.CompareIntentID("Story_B_Grotto.Antwort_Reise.9")
                                        BTC.ClearPossbileSpeechIntents()
                                        RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche")
                                    }
                                    Composite(Sequence) {
                                        BTC.CompareIntentID("Story_B_Grotto.Antwort_Reise.11")
                                        BTC.ClearPossbileSpeechIntents()
                                        RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto")
                                    }
                                }
                            }

                            Composite(Sequence) {
                                BTC.Wait(5)
                                BTC.CompareUserSpeechInputStarted(false)
                                BTC.AbortSpeechEventListener()
                                BTC.StopSpeechIntentRecognition()
                                BTC.ClearPossbileSpeechIntents()

                                BTC.CompareUserSpeechInputStarted(true)
                            }
                        }
                    }

                    // Selector 3: Fallback Button
                    Composite(Sequence) {
                        Composite(Marathon) {
                            BTC.Show("GO.GO.SpeechButton")
                            BTC.Set("TextMeshPro.GO.Option1Button", "text", "L'aiuto in cucina.")
                            BTC.Show("GO.GO.Option1Button")
                            BTC.Set("TextMeshPro.GO.Option2Button", "text", "La aspetto.")
                            BTC.Show("GO.GO.Option2Button")
                        }

                        Composite(Race) {
                            Composite(Sequence) {
                                // Kueche
                                BTC.Run("NamedEventTrigger.GO.Option1Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche")
                            }
                            Composite(Sequence) {
                                // Garten
                                BTC.Run("NamedEventTrigger.GO.Option2Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto")
                            }
                        }
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()

                // --- Bilder Bergell ---
                // TODO: Bergell
                //BTC.Run("LoadScene.NEXT.35Slideshow")

                // Fallback Button
                Composite(Sequence) {
                    Composite(Marathon) {
                        BTC.Show("GO.GO.SpeechButton")
                        BTC.Set("TextMeshPro.GO.Option1Button", "text", "L'aiuto in cucina.")
                        BTC.Show("GO.GO.Option1Button")
                        BTC.Set("TextMeshPro.GO.Option2Button", "text", "La aspetto.")
                        BTC.Show("GO.GO.Option2Button")
                    }

                    Composite(Race) {
                        Composite(Sequence) {
                            // Kueche
                            BTC.Run("NamedEventTrigger.GO.Option1Button")
                            BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                            BTC.Hide("GO.GO.Option1Button")
                            BTC.Hide("GO.GO.Option2Button")
                            BTC.Hide("GO.GO.SpeechButton")
                            BTC.Show("GO.GO.Home")
                            BTC.Hide("GO.GO.SpeechOptions")
                            RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche")
                        }
                        Composite(Sequence) {
                            // Garten
                            BTC.Run("NamedEventTrigger.GO.Option2Button")
                            BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                            BTC.Hide("GO.GO.Option1Button")
                            BTC.Hide("GO.GO.Option2Button")
                            BTC.Hide("GO.GO.SpeechButton")
                            BTC.Show("GO.GO.Home")
                            BTC.Hide("GO.GO.SpeechOptions")
                            RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto")
                        }
                    }
                }
            }
        }
    }
}

Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche") {
// --- Story B Grotto - Antwort Nonna Kueche ---
    Composite(Sequence) {
        BTC.SynthesizeText("Oh, va benissimo! Più tardi, naturalmente, offro io la cena.")
        BTC.SpeechOutputEnded()

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Kueche.2")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        // --- Story B Grotto - Outro ---
        BTC.SynthesizeText("Sai cosa fare, Francensca, vero? C'è da cucinare il risotto. La ricetta la conosci e la trovi comunque lì. Allora, vi lascio, forse ci vediamo più tardi. Quanto sono contenta che aiutiate in cucina! Ciao!")
        BTC.SpeechOutputEnded()

        BTC.Hide("Depthkit.VIDEOS.IdleLoopNonnaGrott")

        BTC.Show("Depthkit.VIDEOS.Outro2StoryBGrotto")
        BTC.Run("Depthkit.VIDEOS.Outro2StoryBGrotto")
        BTC.Hide("Depthkit.VIDEOS.Outro2StoryBGrotto")

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Outro.3")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        RunTree("32_Grotto_Kueche_Intro")
    }
}

Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto") {
// --- Story B Grotto - Antwort Nonna Grotto ---
    Composite(Sequence) {
        BTC.SynthesizeText("Va bene. Forse puoi leggere qualcosa mentre aspetti Francesca nella sala del grotto. Hai portato qualche libro?")
        BTC.SpeechOutputEnded()

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.2")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.SynthesizeText("Ottimo, divertitevi, e buon appetito!")
        BTC.SpeechOutputEnded()

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.6")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.Hide("Depthkit.VIDEOS.IdleLoopNonnaGrott")
        //BTC.SynthesizeText("Mentre aspetti, se vuoi puoi dare un'occhiata alle foto che ho scattato di recente in Bregaglia. Puoi usare il visore che trovi sul tavolo.")
        //BTC.SpeechOutputEnded()

        // TODO: Option VR Brille Bilder und Buch anschauen fehlt
        BTC.Wait(10)

        // TODO: Szenenuebergang fehlt
        BTC.Run("AudioSource.AUDIO.StoryBGrotto10Antw")

        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.11")
        BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.12")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.Run("AudioSource.AUDIO.StoryBGrotto15Antw")
        
        RunTree("32_Grotto_Im_Grotto_Essen_Intro")
    }
}

Tree("32_Grotto_Kueche_Intro") {
// --- Kueche - Intro ---
    Composite(Sequence) {
        // Initialization
        //BTC.Run("StudioEventEmitter.STATIC.Ambi3D")
        BTC.StopSound("StudioEventEmitter.STATIC.AmbiGarten")
        BTC.SetPosition("GO.XRInteractionHandsSetup.XROrigin", -7.036, 0, -16.413)
        BTC.SetPosition("GO.HANDMENU", -7.036, 0, -16.413)

        BTC.Show("Depthkit.VIDEOS.Intro1Kueche")
        BTC.Run("Depthkit.VIDEOS.Intro1Kueche")
        BTC.Hide("Depthkit.VIDEOS.Intro1Kueche")

        // Schuerze greifen
        BTC.Run("GO/NamedGrabEvent.INTERACTABLES.Schuerze")
        BTC.Hide("GO/NamedGrabEvent.INTERACTABLES.Schuerze")

        BTC.Show("Depthkit.VIDEOS.Intro2Kueche")
        BTC.Run("Depthkit.VIDEOS.Intro2Kueche")
        BTC.Hide("Depthkit.VIDEOS.Intro2Kueche")

        BTC.AddPossbileSpeechIntent("Kueche.Intro.3")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Selector) {
                Composite(Sequence) {
                    BTC.UserStartedSpeechInput()
                    BTC.SpeechIntentRecognized()
                    BTC.ClearPossbileSpeechIntents()
                }

                // Intent nicht erkannt
                Composite(Sequence) {
                    Decorator(Inverter) {
                        BTC.CompareUserSpeechInputStarted(false)
                    }
                    BTC.ClearPossbileSpeechIntents()
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()

                BTC.Show("Depthkit.VIDEOS.leggi")
                BTC.Run("Depthkit.VIDEOS.leggi")
                BTC.Hide("Depthkit.VIDEOS.leggi")

                BTC.StartSpeechIntentRecognition()

                Composite(Race) {
                    // -- Race 1: User sagt etwas
                    Composite(Selector) {
                        Composite(Sequence) {
                            BTC.UserStartedSpeechInput()
                            BTC.SpeechIntentRecognized()
                            BTC.ClearPossbileSpeechIntents()
                        }

                        // Intent nicht erkannt
                        Composite(Sequence) {
                            BTC.ClearPossbileSpeechIntents()
                        }
                    }

                    // -- Race 2: User sagt nichts
                    Composite(Sequence) {
                        BTC.Wait(5)
                        BTC.CompareUserSpeechInputStarted(false)
                        BTC.AbortSpeechEventListener()
                        BTC.StopSpeechIntentRecognition()
                        BTC.ClearPossbileSpeechIntents()
                    }
                }
            }
        }

        BTC.Show("Depthkit.VIDEOS.Intro5Kueche")
        BTC.Run("Depthkit.VIDEOS.Intro5Kueche")
        BTC.Hide("Depthkit.VIDEOS.Intro5Kueche")

        // Pilze leuchten
        Composite(Marathon) {
            BTC.Enable("NamedOutline.INTERACTABLES.Pilz01")
            BTC.Enable("NamedOutline.INTERACTABLES.Pilz02")
            BTC.Enable("NamedOutline.INTERACTABLES.Pilz03")
            BTC.Set("Collider.INTERACTABLES.GlassWasserTrigger", "otherTag", "Steinpilze")
        }

        Composite(Race) {
            Composite(Sequence) {
                // Pilze ins Wasser Glas legen
                BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
                BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
                BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
            }
            Composite(Sequence) {
                // Keine Reaction
                BTC.Wait(30)
                // --- Kueche - Steinpilze Hilfe ---
                BTC.Show("Depthkit.VIDEOS.SteinpilzeHilfe1Ku")
                BTC.Run("Depthkit.VIDEOS.SteinpilzeHilfe1Ku")
                BTC.Hide("Depthkit.VIDEOS.SteinpilzeHilfe1Ku")
                // Pilze ins Wasser Glas legen
                BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
                BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
                BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
            }
        }

        Composite(Marathon) {
            BTC.Show("GO.STATIC.RezeptCheckmark1")
            BTC.Disable("NamedOutline.INTERACTABLES.Pilz01")
            BTC.Disable("NamedOutline.INTERACTABLES.Pilz02")
            BTC.Disable("NamedOutline.INTERACTABLES.Pilz03")
        }

        RunTree("32_Grotto_Kueche_Zwiebeln_schneiden")
    }
}

Tree("32_Grotto_Kueche_Zwiebeln_schneiden") {
// --- Kueche - Zwiebeln schneiden ---
    Composite(Sequence) {
        BTC.Show("Depthkit.VIDEOS.Zwiebelnschneiden1")
        BTC.Run("Depthkit.VIDEOS.Zwiebelnschneiden1")
        BTC.Hide("Depthkit.VIDEOS.Zwiebelnschneiden1")

        // Zwiebeln schneiden
        BTC.FindObjectsByTag("SlicedZwiebel", 6)

        BTC.Show("Depthkit.VIDEOS.Zwiebelnschneiden2")
        BTC.Run("Depthkit.VIDEOS.Zwiebelnschneiden2")
        BTC.Hide("Depthkit.VIDEOS.Zwiebelnschneiden2")

        // Zutaten leuchten
        Composite(Marathon) {
            BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
            BTC.Show("GO/NamedSocketEvent.SOCKETS.BouillonSocket")
            BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
            BTC.Show("GO/NamedSocketEvent.SOCKETS.WeissweinSocket")
            BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
            BTC.Show("GO/NamedSocketEvent.SOCKETS.RisottoSocket")
            BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
            BTC.Show("GO/NamedSocketEvent.SOCKETS.OlivenoelSocket")
            BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
            BTC.Show("GO/NamedSocketEvent.SOCKETS.PfefferSocket")
            BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
            BTC.Show("GO/NamedSocketEvent.SOCKETS.SalzSocket")
        }
        

        // Zutaten auf die Arbeitsflaeche legen mithilfe Sockets
        Composite(Marathon) {
            // Risotto
            Composite(Sequence) {
                //BTC.GetKeyDown("Return")
                BTC.SetBool("RisottoIsSnapped", false)

                Composite(Race) {
                    Composite(Sequence) {
                        // Success
                        BTC.Run("GO/NamedSocketEvent.SOCKETS.RisottoSocket")
                        BTC.SetBool("RisottoIsSnapped")
                        BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
                        BTC.Hide("GO/NamedSocketEvent.SOCKETS.RisottoSocket")
                    }

                    Decorator(Repeat) {
                        Composite(Sequence) {
                            // Fail
                            BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
                            BTC.Wait(1)
                            BTC.CompareBool("RisottoIsSnapped", false)

                            // Objekt geht zurueck
                            BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto", -7.920319, 0.9762855, -16.10492)
                            BTC.Show("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Run("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Hide("Depthkit.VIDEOS.Zwiebelnschneiden5")
                        }
                    }
                }
            } // Sequence

            // Salz
            Composite(Sequence) {
                BTC.SetBool("SalzIsSnapped", false)

                Composite(Race) {
                    Composite(Sequence) {
                        // Success
                        BTC.Run("GO/NamedSocketEvent.SOCKETS.SalzSocket")
                        BTC.SetBool("SalzIsSnapped")
                        BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
                        BTC.Hide("GO/NamedSocketEvent.SOCKETS.SalzSocket")
                    }

                    Decorator(Repeat) {
                        Composite(Sequence) {
                            // Fail
                            BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
                            BTC.Wait(1)
                            BTC.CompareBool("SalzIsSnapped", false)

                            // Objekt geht zurueck
                            BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Salz", -7.94902, 0.9696183, -16.31448)

                            BTC.Show("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Run("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Hide("Depthkit.VIDEOS.Zwiebelnschneiden5")
                        }
                    }
                }
            } // Sequence

            // Pfeffer
            Composite(Sequence) {
                BTC.SetBool("PfefferIsSnapped", false)

                Composite(Race) {
                    Composite(Sequence) {
                        // Success
                        BTC.Run("GO/NamedSocketEvent.SOCKETS.PfefferSocket")
                        BTC.SetBool("PfefferIsSnapped")
                        BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
                        BTC.Hide("GO/NamedSocketEvent.SOCKETS.PfefferSocket")
                    }

                    Decorator(Repeat) {
                        Composite(Sequence) {
                            // Fail
                            BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
                            BTC.Wait(1)
                            BTC.CompareBool("PfefferIsSnapped", false)

                            // Objekt geht zurueck
                            BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer", -7.923509, 0.976778, -16.23407)

                            BTC.Show("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Run("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Hide("Depthkit.VIDEOS.Zwiebelnschneiden5")
                        }
                    }
                }
            } // Sequence

            // Weisswein
            Composite(Sequence) {
                BTC.SetBool("WeissweinIsSnapped", false)

                Composite(Race) {
                    Composite(Sequence) {
                        // Success
                        BTC.Run("GO/NamedSocketEvent.SOCKETS.WeissweinSocket")
                        BTC.SetBool("WeissweinIsSnapped")
                        BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
                        BTC.Hide("GO/NamedSocketEvent.SOCKETS.WeissweinSocket")
                    }

                    Decorator(Repeat) {
                        Composite(Sequence) {
                            // Fail
                            BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
                            BTC.Wait(1)
                            BTC.CompareBool("WeissweinIsSnapped", false)

                            // Objekt geht zurueck
                            BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein", -8.098644, 0.9762855, -16.33541)

                            BTC.Show("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Run("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Hide("Depthkit.VIDEOS.Zwiebelnschneiden5")
                        }
                    }
                }
            } // Sequence

            // Bouillon
            Composite(Sequence) {
                BTC.SetBool("BouillonIsSnapped", false)

                Composite(Race) {
                    Composite(Sequence) {
                        // Success
                        BTC.Run("GO/NamedSocketEvent.SOCKETS.BouillonSocket")
                        BTC.SetBool("BouillonIsSnapped")
                        BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
                        BTC.Hide("GO/NamedSocketEvent.SOCKETS.BouillonSocket")
                    }

                    Decorator(Repeat) {
                        Composite(Sequence) {
                            // Fail
                            BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
                            BTC.Wait(1)
                            BTC.CompareBool("BouillonIsSnapped", false)

                            // Objekt geht zurueck
                            BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon", -8.082785, 0.9762855, -15.99537)

                            BTC.Show("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Run("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Hide("Depthkit.VIDEOS.Zwiebelnschneiden5")
                        }
                    }
                }
            } // Sequence

            // Olivenoel
            Composite(Sequence) {
                BTC.SetBool("OlivenoelIsSnapped", false)

                Composite(Race) {
                    Composite(Sequence) {
                        // Success
                        BTC.Run("GO/NamedSocketEvent.SOCKETS.OlivenoelSocket")
                        BTC.SetBool("OlivenoelIsSnapped")
                        BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
                        BTC.Hide("GO/NamedSocketEvent.SOCKETS.OlivenoelSocket")
                    }

                    Decorator(Repeat) {
                        Composite(Sequence) {
                            // Fail
                            BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
                            BTC.Wait(1)
                            BTC.CompareBool("OlivenoelIsSnapped", false)

                            // Objekt geht zurueck
                            BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel", -8.0905, 0.9762856, -16.20448)

                            BTC.Show("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Run("Depthkit.VIDEOS.Zwiebelnschneiden5")
                            BTC.Hide("Depthkit.VIDEOS.Zwiebelnschneiden5")
                        }
                    }
                }
            } // Sequence
        }

        BTC.Wait(1)

        RunTree("32_Grotto_Kueche_alles_gefunden")
    }
}


Tree("32_Grotto_Kueche_alles_gefunden") {
// --- Kueche - alles gefunden ---
    Composite(Sequence) {
        BTC.Show("Depthkit.VIDEOS.allesgefunden1Kuec")
        BTC.Run("Depthkit.VIDEOS.allesgefunden1Kuec")
        BTC.Hide("Depthkit.VIDEOS.allesgefunden1Kuec")

        // Oel in Topf geben
        BTC.Run("Particle.INTERACTABLES.Olivenoel")
        BTC.Show("GO.STATIC.RezeptCheckmark2")

        BTC.Show("Depthkit.VIDEOS.allesgefunden2Kuec")
        BTC.Run("Depthkit.VIDEOS.allesgefunden2Kuec")
        BTC.Hide("Depthkit.VIDEOS.allesgefunden2Kuec")

        // Herd anstellen - ToDo: Handling in Story?
        //BTC.Run("NamedGrabEvent.STATIC.Herdschalter")
        //BTC.Run("StudioEventEmitter.STATIC.HerdplatteAnstelle")

        // Zwiebeln in Topf geben
        BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "SlicedZwiebel")
        BTC.Run("Collider.INTERACTABLES.Topf")
        BTC.Run("StudioEventEmitter.INTERACTABLES.ZwiebelnInTopf")
        BTC.Show("GO.STATIC.RezeptCheckmark3")
        
        BTC.Show("Depthkit.VIDEOS.allesgefunden3Kuec")
        BTC.Run("Depthkit.VIDEOS.allesgefunden3Kuec")
        BTC.Hide("Depthkit.VIDEOS.allesgefunden3Kuec")

        // Frage beantworten
        BTC.AddPossbileSpeechIntent("Kueche.alles_gefunden.4")
        BTC.AddPossbileSpeechIntent("Kueche.alles_gefunden.6")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()

                        // Intent erkannt
                        Composite(Race) {
                            Composite(Sequence) {
                                BTC.CompareIntentID("Kueche.alles_gefunden.4")
                                BTC.ClearPossbileSpeechIntents()
                                RunTree("32_Grotto_Kueche_Interesse_Kochen")
                            }
                            Composite(Sequence) {
                                BTC.CompareIntentID("Kueche.alles_gefunden.6")
                                BTC.ClearPossbileSpeechIntents()
                                RunTree("32_Grotto_Kueche_Zusammen_Kochen")
                            }
                        }
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()

                        // Fallback Button
                        Composite(Marathon) {
                            BTC.Show("GO.GO.SpeechButton")
                            BTC.Set("TextMeshPro.GO.Option1Button", "text", "Sì.")
                            BTC.Show("GO.GO.Option1Button")
                            BTC.Set("TextMeshPro.GO.Option2Button", "text", "No.")
                            BTC.Show("GO.GO.Option2Button")
                        }

                        Composite(Race) {
                            Composite(Sequence) {
                                // Ja
                                BTC.Run("NamedEventTrigger.GO.Option1Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                RunTree("32_Grotto_Kueche_Interesse_Kochen")
                            }
                            Composite(Sequence) {
                                // Nein
                                BTC.Run("NamedEventTrigger.GO.Option2Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                RunTree("32_Grotto_Kueche_Zusammen_Kochen")
                            }
                        }
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()

                // Fallback Button
                Composite(Marathon) {
                    BTC.Show("GO.GO.SpeechButton")
                    BTC.Set("TextMeshPro.GO.Option1Button", "text", "Sì.")
                    BTC.Show("GO.GO.Option1Button")
                    BTC.Set("TextMeshPro.GO.Option2Button", "text", "No.")
                    BTC.Show("GO.GO.Option2Button")
                }

                Composite(Race) {
                    Composite(Sequence) {
                        // Ja
                        BTC.Run("NamedEventTrigger.GO.Option1Button")
                        BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                        BTC.Hide("GO.GO.Option1Button")
                        BTC.Hide("GO.GO.Option2Button")
                        BTC.Hide("GO.GO.SpeechButton")
                        BTC.Show("GO.GO.Home")
                        BTC.Hide("GO.GO.SpeechOptions")
                        RunTree("32_Grotto_Kueche_Interesse_Kochen")
                    }
                    Composite(Sequence) {
                        // Nein
                        BTC.Run("NamedEventTrigger.GO.Option2Button")
                        BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                        BTC.Hide("GO.GO.Option1Button")
                        BTC.Hide("GO.GO.Option2Button")
                        BTC.Hide("GO.GO.SpeechButton")
                        BTC.Show("GO.GO.Home")
                        BTC.Hide("GO.GO.SpeechOptions")
                        RunTree("32_Grotto_Kueche_Zusammen_Kochen")
                    }
                }
            }
        }        
    }
}

Tree("32_Grotto_Kueche_Interesse_Kochen") {
// --- Kueche - Interesse Kochen ---
    Composite(Sequence) {
        BTC.Show("Depthkit.VIDEOS.InteresseKochen1Ku")
        BTC.Run("Depthkit.VIDEOS.InteresseKochen1Ku")
        BTC.Hide("Depthkit.VIDEOS.InteresseKochen1Ku")

        // Frage beantworten
        BTC.AddPossbileSpeechIntent("Kueche.Interesse_Kochen.2")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()

                        // Intent erkannt
                        BTC.ClearPossbileSpeechIntents()
                        RunTree("32_Grotto_Kueche_Kochen_Anzahl")
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()
                        RunTree("32_Grotto_Kueche_Kochen_Anzahl")
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
                RunTree("32_Grotto_Kueche_Zusammen_Kochen")
            }
        }    
    }
}

Tree("32_Grotto_Kueche_Kochen_Anzahl") {
// --- Kueche - Kochen Anzahl ---
    Composite(Sequence) {
        BTC.Show("Depthkit.VIDEOS.KochenAnzahl1Kuech")
        BTC.Run("Depthkit.VIDEOS.KochenAnzahl1Kuech")
        BTC.Hide("Depthkit.VIDEOS.KochenAnzahl1Kuech")

        // Frage beantworten
        BTC.AddPossbileSpeechIntent("Kueche.Kochen_Anzahl.2")
        BTC.AddPossbileSpeechIntent("Kueche.Kochen_Anzahl.4")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()

                        // Intent erkannt
                        Composite(Race) {
                            Composite(Sequence) {
                                BTC.CompareIntentID("Kueche.Kochen_Anzahl.2")
                                BTC.ClearPossbileSpeechIntents()
                                //RunTree("32_Grotto_Kueche_Selbststaendig_Kochen")
                                RunTree("32_Grotto_Kueche_Zusammen_Kochen")
                            }
                            Composite(Sequence) {
                                BTC.CompareIntentID("Kueche.Kochen_Anzahl.4")
                                BTC.ClearPossbileSpeechIntents()
                                RunTree("32_Grotto_Kueche_Zusammen_Kochen")
                            }
                        }
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()

                        // Fallback Button
                        Composite(Marathon) {
                            BTC.Show("GO.GO.SpeechButton")
                            BTC.Set("TextMeshPro.GO.Option1Button", "text", "molto spesso")
                            BTC.Show("GO.GO.Option1Button")
                            BTC.Set("TextMeshPro.GO.Option2Button", "text", "raramente")
                            BTC.Show("GO.GO.Option2Button")
                        }

                        Composite(Race) {
                            Composite(Sequence) {
                                // sehr oft
                                BTC.Run("NamedEventTrigger.GO.Option1Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                //RunTree("32_Grotto_Kueche_Selbststaendig_Kochen")
                                RunTree("32_Grotto_Kueche_Zusammen_Kochen")
                            }
                            Composite(Sequence) {
                                // selten
                                BTC.Run("NamedEventTrigger.GO.Option2Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                RunTree("32_Grotto_Kueche_Zusammen_Kochen")
                            }
                        }
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
                RunTree("32_Grotto_Kueche_Zusammen_Kochen")
            }
        }        
    }
}

Tree("32_Grotto_Kueche_Zusammen_Kochen") {
// --- Kueche - Zusammen Kochen ---
    Composite(Sequence) {
        BTC.Show("Depthkit.VIDEOS.ZusammenKochen1Kue")
        BTC.Run("Depthkit.VIDEOS.ZusammenKochen1Kue")
        BTC.Hide("Depthkit.VIDEOS.ZusammenKochen1Kue")

        // Risotto in Topf geben
        BTC.Run("Particle.INTERACTABLES.Risotto")
        BTC.Hide("GO.INTERACTABLES.Reis")
        BTC.Show("GO.STATIC.RezeptCheckmark4")

        // Ruehren
        BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Loeffel")
        BTC.Run("Collider.INTERACTABLES.Topf")
        BTC.Wait(2) // Wie lange ruehren?

        BTC.Show("Depthkit.VIDEOS.ZusammenKochen2Kue")
        BTC.Run("Depthkit.VIDEOS.ZusammenKochen2Kue")
        BTC.Hide("Depthkit.VIDEOS.ZusammenKochen2Kue")
        
        // Wein in Topf giessen
        BTC.Run("Particle.INTERACTABLES.Weisswein")
        BTC.StopSound("StudioEventEmitter.INTERACTABLES.ZwiebelnInTopf")
        BTC.Run("StudioEventEmitter.INTERACTABLES.Abloeschen")
        BTC.Show("GO.STATIC.RezeptCheckmark5")

        Composite(Marathon) {
            Composite(Sequence) {
                BTC.Wait(16)
                BTC.SetFloat("StudioEventEmitter.INTERACTABLES.Abloeschen", "blubbern.transition", 1)
                BTC.Show("GO.INTERACTABLES.ChangeSound") // Ruehren
            }

            Composite(Sequence) {
                BTC.Wait(5)
                BTC.Show("Depthkit.VIDEOS.ZusammenKochen3Kue")
                BTC.Run("Depthkit.VIDEOS.ZusammenKochen3Kue")
                BTC.Hide("Depthkit.VIDEOS.ZusammenKochen3Kue")
            }
        }

        // Bouillon in Topf geben
        BTC.Run("Particle.INTERACTABLES.Bouillon")
        BTC.Show("GO.STATIC.RezeptCheckmark6")

        BTC.Show("Depthkit.VIDEOS.ZusammenKochen4Kue")
        BTC.Run("Depthkit.VIDEOS.ZusammenKochen4Kue")
        BTC.Hide("Depthkit.VIDEOS.ZusammenKochen4Kue")

        // Glas Wasser mit Steinpilze in Topf geben
        BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Steinpilze")
        BTC.Run("Collider.INTERACTABLES.Topf")

        RunTree("32_Grotto_Kueche_Parmigiano")
    }
}

Tree("32_Grotto_Kueche_Selbststaendig_Kochen") {
// --- Kueche - Selbststaendig Kochen ---
    Composite(Sequence) {
        BTC.Run("AudioSource.AUDIO.Kueche1Selbststaen")
        // Selbstaendig kochen...
        // ...
        BTC.GetKeyDown("Return")

        RunTree("32_Grotto_Kueche_Parmigiano")
    }
}

Tree("32_Grotto_Kueche_Parmigiano") {
// --- Kueche - Parmigiano ---
    Composite(Sequence) {
        BTC.Run("AudioSource.AUDIO.Kueche5ZusammenKoc") // ToDo: Video adden

        // Parmigiano in Topf geben
        BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Parmigiano")
        BTC.Run("Collider.INTERACTABLES.Topf")
        BTC.Show("GO.STATIC.RezeptCheckmark7")

        BTC.Show("Depthkit.VIDEOS.ZusammenKochen6Kue")
        BTC.Run("Depthkit.VIDEOS.ZusammenKochen6Kue")
        BTC.Hide("Depthkit.VIDEOS.ZusammenKochen6Kue")

        // Antwort User
        BTC.AddPossbileSpeechIntent("Kueche.Zusammen_Kochen.6")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()

                        // Intent erkannt
                        BTC.ClearPossbileSpeechIntents()
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.Show("Depthkit.VIDEOS.ZusammenKochen7Kue")
        BTC.Run("Depthkit.VIDEOS.ZusammenKochen7Kue")
        BTC.Hide("Depthkit.VIDEOS.ZusammenKochen7Kue")

        // Stelle für Pfanne leuchtet
        BTC.Enable("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer")
        BTC.Set("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer", "otherTag", "Topf")

        Composite(Race) {
            Composite(Sequence) {
                // Pfanne rueber stellen
                BTC.Run("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer")
            }
            Composite(Sequence) {
                // Keine Reaction
                BTC.Wait(5)
                BTC.Show("Depthkit.VIDEOS.ZusammenKochen8Kue")
                BTC.Run("Depthkit.VIDEOS.ZusammenKochen8Kue")
                BTC.Hide("Depthkit.VIDEOS.ZusammenKochen8Kue")
                // Pfanne rueber stellen
                BTC.Run("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer")
            }
        }

        BTC.Disable("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer") 

        BTC.Show("Depthkit.VIDEOS.ZusammenKochen10Ku")
        BTC.Run("Depthkit.VIDEOS.ZusammenKochen10Ku")
        BTC.Hide("Depthkit.VIDEOS.ZusammenKochen10Ku")

        BTC.Show("Depthkit.VIDEOS.ZusammenKochen12Ku")
        BTC.Run("Depthkit.VIDEOS.ZusammenKochen12Ku")
        BTC.Hide("Depthkit.VIDEOS.ZusammenKochen12Ku")

        // --- Kueche - Outro ---
        BTC.Run("AudioSource.AUDIO.KuecheOutro1")
        BTC.Run("AudioSource.AUDIO.KuecheOutro2")

        // Name sagen
        BTC.AddPossbileSpeechIntent("Kueche.Outro.4")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()
                        BTC.ClearPossbileSpeechIntents()
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }        

        BTC.Run("AudioSource.AUDIO.KuecheOutro7")
        BTC.Run("AudioSource.AUDIO.KuecheOutro8")

        RunTree("32_Grotto_Im_Grotto_Essen_Intro")
    }
}

Tree("32_Grotto_Im_Grotto_Essen_Intro") {
// --- Im Grotto Essen - Intro ---
    Composite(Sequence) {
        // Initialization
        Composite(Marathon) {
            BTC.SetPosition("GO.XRInteractionHandsSetup.XROrigin", -4.648, 0, -12.295)
            BTC.SetPosition("GO.HANDMENU", -4.648, 0, -12.295)
            BTC.Run("StudioEventEmitter.STATIC.KuechenAmbi")
            BTC.Run("StudioEventEmitter.STATIC.AmbiGarten")
            //BTC.StopSound("StudioEventEmitter.STATIC.Ambi3D")
            //BTC.StopSound("StudioEventEmitter.STATIC.HerdplatteAnstelle")
            BTC.StopSound("StudioEventEmitter.INTERACTABLES.Abloeschen")
        }

        BTC.Run("AudioSource.AUDIO.ImGrottoessen1Intr")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen2Intr")

        BTC.AddPossbileSpeechIntent("Im_Grotto_essen.Intro.3")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()
                        BTC.ClearPossbileSpeechIntents()
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.Run("AudioSource.AUDIO.ImGrottoessen6Intr")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen7Intr")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen8Intr")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen9Intr")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen10Int")

        // --- Im Grotto Essen - Zweite Bestellung ---
        BTC.Run("AudioSource.AUDIO.ImGrottoessen1Zwei")

        BTC.AddPossbileSpeechIntent("Im_Grotto_essen.Zweite_Bestellung.2")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()
                        BTC.ClearPossbileSpeechIntents()
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()

                // Fallback Button
                Composite(Marathon) {
                    BTC.Show("GO.GO.SpeechButton")
                    BTC.Set("TextMeshPro.GO.Option1Button", "text", "una gazzosa")
                    BTC.Show("GO.GO.Option1Button")
                }

                BTC.Run("NamedEventTrigger.GO.Option1Button")
                BTC.Hide("GO.GO.Option1Button")
                BTC.Hide("GO.GO.SpeechButton")
                BTC.Show("GO.GO.Home")
                BTC.Hide("GO.GO.SpeechOptions") 
            }
        }

        // --- Im Grotto Essen - Nachfrage Kellner Essen ---
        BTC.Run("AudioSource.AUDIO.ImGrottoessen1Esse")

        BTC.AddPossbileSpeechIntent("Im_Grotto_essen.Nachfrage_Kellner_Essen.2")
        BTC.AddPossbileSpeechIntent("Im_Grotto_essen.Nachfrage_Kellner_Essen.3")
        BTC.AddPossbileSpeechIntent("Im_Grotto_essen.Nachfrage_Kellner_Essen.4")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()

                        // Intent erkannt
                        Composite(Race) {
                            Composite(Sequence) {
                                BTC.CompareIntentID("Im_Grotto_essen.Nachfrage_Kellner_Essen.2")
                                BTC.ClearPossbileSpeechIntents()
                                BTC.SetBool("ChoosedRisotto")
                            }
                            Composite(Sequence) {
                                BTC.CompareIntentID("Im_Grotto_essen.Nachfrage_Kellner_Essen.3")
                                BTC.ClearPossbileSpeechIntents()
                                BTC.SetBool("ChoosedPizochen")
                            }
                            Composite(Sequence) {
                                BTC.CompareIntentID("Im_Grotto_essen.Nachfrage_Kellner_Essen.4")
                                BTC.ClearPossbileSpeechIntents()
                                BTC.SetBool("ChoosedInsalata")
                            }
                        }
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        // --- Im Grotto Essen - Nachfrage Kellner Unklar ---
                        // SpeechIntentRecognized Failed: kein Intent erkannt
                        BTC.SynthesizeText("Perdonami, non ho capito bene, cosa desideri?")
                        BTC.SpeechOutputEnded()
                
                        BTC.StartSpeechIntentRecognition()
                        Composite(Race) {
                            Composite(Sequence) {
                                BTC.UserStartedSpeechInput()
                                BTC.SpeechIntentRecognized()

                                Composite(Race) {
                                    Composite(Sequence) {
                                        BTC.CompareIntentID("Im_Grotto_essen.Nachfrage_Kellner_Essen.2")
                                        BTC.ClearPossbileSpeechIntents()
                                        BTC.SetBool("ChoosedRisotto")
                                    }
                                    Composite(Sequence) {
                                        BTC.CompareIntentID("Im_Grotto_essen.Nachfrage_Kellner_Essen.3")
                                        BTC.ClearPossbileSpeechIntents()
                                        BTC.SetBool("ChoosedPizochen")
                                    }
                                    Composite(Sequence) {
                                        BTC.CompareIntentID("Im_Grotto_essen.Nachfrage_Kellner_Essen.4")
                                        BTC.ClearPossbileSpeechIntents()
                                        BTC.SetBool("ChoosedInsalata")
                                    }
                                }
                            }

                            Composite(Sequence) {
                                BTC.Wait(5)
                                BTC.CompareUserSpeechInputStarted(false)
                                BTC.AbortSpeechEventListener()
                                BTC.StopSpeechIntentRecognition()
                                BTC.ClearPossbileSpeechIntents()

                                BTC.CompareUserSpeechInputStarted(true)
                            }
                        }
                    }

                    // Selector 3: Fallback Button
                    Composite(Sequence) {
                        Composite(Marathon) {
                            BTC.Show("GO.GO.SpeechButton")
                            BTC.Set("TextMeshPro.GO.Option1Button", "text", "Risotto")
                            BTC.Show("GO.GO.Option1Button")
                            BTC.Set("TextMeshPro.GO.Option2Button", "text", "Pizochen")
                            BTC.Show("GO.GO.Option2Button")
                            BTC.Set("TextMeshPro.GO.Option3Button", "text", "Insalata")
                            BTC.Show("GO.GO.Option3Button")
                        }

                        Composite(Race) {
                            Composite(Sequence) {
                                // Risotto
                                BTC.Run("NamedEventTrigger.GO.Option1Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option3Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.Option3Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                BTC.SetBool("ChoosedRisotto")
                            }
                            Composite(Sequence) {
                                // Pizochen
                                BTC.Run("NamedEventTrigger.GO.Option2Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option3Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.Option3Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                BTC.SetBool("ChoosedPizochen")
                            }
                            Composite(Sequence) {
                                // Insalata
                                BTC.Run("NamedEventTrigger.GO.Option3Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                                BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                                BTC.Hide("GO.GO.Option1Button")
                                BTC.Hide("GO.GO.Option2Button")
                                BTC.Hide("GO.GO.Option3Button")
                                BTC.Hide("GO.GO.SpeechButton")
                                BTC.Show("GO.GO.Home")
                                BTC.Hide("GO.GO.SpeechOptions")
                                BTC.SetBool("ChoosedInsalata")
                            }
                        }
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()

                // Fallback Button
                Composite(Sequence) {
                    Composite(Marathon) {
                        BTC.Show("GO.GO.SpeechButton")
                        BTC.Set("TextMeshPro.GO.Option1Button", "text", "Risotto")
                        BTC.Show("GO.GO.Option1Button")
                        BTC.Set("TextMeshPro.GO.Option2Button", "text", "Pizochen")
                        BTC.Show("GO.GO.Option2Button")
                        BTC.Set("TextMeshPro.GO.Option3Button", "text", "Insalata")
                        BTC.Show("GO.GO.Option3Button")
                    }

                    Composite(Race) {
                        Composite(Sequence) {
                            // Risotto
                            BTC.Run("NamedEventTrigger.GO.Option1Button")
                            BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                            BTC.AbortEventListener("NamedEventTrigger.GO.Option3Button")
                            BTC.Hide("GO.GO.Option1Button")
                            BTC.Hide("GO.GO.Option2Button")
                            BTC.Hide("GO.GO.Option3Button")
                            BTC.Hide("GO.GO.SpeechButton")
                            BTC.Show("GO.GO.Home")
                            BTC.Hide("GO.GO.SpeechOptions")
                            BTC.SetBool("ChoosedRisotto")
                        }
                        Composite(Sequence) {
                            // Pizochen
                            BTC.Run("NamedEventTrigger.GO.Option2Button")
                            BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                            BTC.AbortEventListener("NamedEventTrigger.GO.Option3Button")
                            BTC.Hide("GO.GO.Option1Button")
                            BTC.Hide("GO.GO.Option2Button")
                            BTC.Hide("GO.GO.Option3Button")
                            BTC.Hide("GO.GO.SpeechButton")
                            BTC.Show("GO.GO.Home")
                            BTC.Hide("GO.GO.SpeechOptions")
                            BTC.SetBool("ChoosedPizochen")
                        }
                        Composite(Sequence) {
                            // Insalata
                            BTC.Run("NamedEventTrigger.GO.Option3Button")
                            BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button")
                            BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button")
                            BTC.Hide("GO.GO.Option1Button")
                            BTC.Hide("GO.GO.Option2Button")
                            BTC.Hide("GO.GO.Option3Button")
                            BTC.Hide("GO.GO.SpeechButton")
                            BTC.Show("GO.GO.Home")
                            BTC.Hide("GO.GO.SpeechOptions")
                            BTC.SetBool("ChoosedInsalata")
                        }
                    }
                }
            }
        }

        BTC.Run("AudioSource.AUDIO.ImGrottoessen3Nach")
        BTC.Wait(10)
        BTC.Run("AudioSource.AUDIO.ImGrottoessen4Nach")

        BTC.AddPossbileSpeechIntent("Im_Grotto_essen.Nachfrage_Kellner_unklar.5")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()
                        BTC.ClearPossbileSpeechIntents()
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }      

        // Getränke ersetzen fuer User
        BTC.Run("AudioSource.AUDIO.ImGrottoessen9Nach")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen10Nac")

        BTC.AddPossbileSpeechIntent("Im_Grotto_essen.Nachfrage_Kellner_unklar.11")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()
                        BTC.ClearPossbileSpeechIntents()
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        BTC.Run("AudioSource.AUDIO.ImGrottoessen15Nac")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen16Nac")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen18Nac")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen22Nac")
        BTC.Run("AudioSource.AUDIO.ImGrottoessen23Nac")

        BTC.AddPossbileSpeechIntent("Im_Grotto_essen.Nachfrage_Kellner_unklar.24")
        BTC.StartSpeechIntentRecognition()

        Composite(Race) {
            // -- Race 1: User sagt etwas
            Composite(Sequence) {
                BTC.UserStartedSpeechInput()
                
                Composite(Selector) {
                    // -- Selector 1: Intent erkannt
                    Composite(Sequence) {
                        BTC.SpeechIntentRecognized()
                        BTC.ClearPossbileSpeechIntents()
                    }

                    // -- Selector 2: Intent nicht erkannt
                    Composite(Sequence) {
                        BTC.ClearPossbileSpeechIntents()
                    }
                }
            }

            // -- Race 2: User sagt nichts
            Composite(Sequence) {
                BTC.Wait(5)
                BTC.CompareUserSpeechInputStarted(false)
                BTC.AbortSpeechEventListener()
                BTC.StopSpeechIntentRecognition()
                BTC.ClearPossbileSpeechIntents()
            }
        }

        // --- Im Grotto Essen - Outro ---
        // ...

        RunTree("32_Grotto_Hide")

    }
}

Tree("32_Grotto_Hide") {
    Composite(Sequence) {
        // Go to scene 3.5 Slideshow
        BTC.SetStoryBVisited()
        BTC.Run("LoadScene.NEXT.35Slideshow")
    }
}