๐Ÿ“ฆ sleepyfran / duets

๐Ÿ“„ FlightPrompts.fs ยท 62 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62namespace Duets.Cli.Text.Prompts

open Duets.Cli.Text
open Duets.Entities
open Duets.Simulation

[<RequireQualifiedAccess>]
module Flight =
    let createInFlightExperiencePrompt state (flight: Flight) =
        let originCity = flight.Origin |> Generic.cityName
        let destinationCity = flight.Destination |> Generic.cityName
        let character = state |> Queries.Characters.playableCharacter
        let currentDate = state |> Queries.Calendar.today

        Common.createPrompt
            $"""
You are narrating a flight experience for {character.Name}, who is flying from {originCity} to {destinationCity}.

Rules:
- Generate a brief, immersive observation (2-3 sentences) about what they notice during the flight and landing.
- Never use first person in descriptions, describe everything in third person.
- Consider the destination culture for the possible things the character might hear around them.
- This could be about: fellow passengers (their language, appearance, behavior), in-flight service, turbulence, views from the window, sounds, announcements, entertainment, or their own thoughts.
- Match the tone to the time of day: {currentDate.DayMoment} in {currentDate.Season}.
- Keep it realistic and grounded - this is a text adventure, so make it evocative but not overly dramatic.
- **Do not** use quotation marks, asterisks, or any formatting.
- **Do not** include labels or headers - just the observation itself.
- Make it feel like a natural moment that adds flavor to the journey.

Context:
- Origin: {originCity}
- Destination: {destinationCity}
- Time: {currentDate.DayMoment} in {currentDate.Season}

Generate the in-flight and landing moment:
"""

    let createAirportExperiencePrompt state (flight: Flight) =
        let destinationCity = flight.Destination |> Generic.cityName
        let originCity = flight.Origin |> Generic.cityName
        let character = state |> Queries.Characters.playableCharacter

        Common.createPrompt
            $"""
You are narrating the passport control experience for {character.Name} at {destinationCity} airport, arriving from {originCity}.

Rules:
- Generate a brief, immersive observation (1-2 sentences) about going through passport control and going out of the airport.
- Never use first person in descriptions, describe everything in third person.
- This could be about: the queue, immigration officers, security checks, customs declarations, other travelers, signage in local language, airport atmosphere.
- Consider the destination culture and language.
- Keep it realistic and slightly bureaucratic in tone.
- **Do not** use quotation marks, asterisks, or any formatting.
- **Do not** include labels or headers - just the observation itself.

Context:
- Origin: {originCity}
- Destination: {destinationCity}

Generate the passport control and stroll through the airport on the way out moment:
"""