๐Ÿ“ฆ sleepyfran / duets

๐Ÿ“„ WorkPrompts.fs ยท 39 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
39namespace Duets.Cli.Text.Prompts

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

[<RequireQualifiedAccess>]
module Work =
    let createWorkShiftDescriptionPrompt state (job: Job) =
        let currentPlace = state |> Queries.World.currentPlace
        let currentCity = state |> Queries.World.currentCity
        let currentDate = state |> Queries.Calendar.today
        let currentWeather = state |> Queries.World.currentWeather
        let careerName = Career.careerName job.Id
        let stageName = Career.name job

        Common.createPrompt
            $"""
    You are describing a work shift in a text-based music and life simulation game.
    
    Rules:
    - Generate a single, engaging sentence (1-2 sentences max) describing the work shift the player is about to start.
    - Keep it immersive and relevant to the job type and career stage.
    - Reflect the time of day, weather, and location context when appropriate.
    - Make it feel natural and varied - sometimes humorous, sometimes serious, always contextual.
    - **Do not** use quotation marks, asterisks, or any formatting.
    - **Do not** include labels or prefixes - just the description itself.
    - Keep the tone casual and conversational, as if narrating a game event.
    
    Context:
    - Career: {careerName}
    - Current Position: {stageName}
    - Workplace: {currentPlace.Name} in {currentCity.Id |> Generic.cityName}
    - Time: {currentDate.DayMoment} in {currentDate.Season}
    - Weather: {currentWeather}
    
    Generate the work shift description:
    """