{
  "schema_version": 16,
  "metadata": {
    "project": "BIG EGG",
    "modified_at": "2026-08-18T21:34:50-04:00",
    "published_at": "2026-08-18T21:34:50-04:00"
  },
  "active_player_config": "default_player",
  "player_configs": {
    "default_player": {
      "display_name": "Default Player",
      "starting_hp": 10,
      "starting_stamina": 100,
      "walk_speed": 300,
      "run_speed": 500,
      "walk_stamina_per_second": 0.35,
      "run_stamina_per_second": 1,
      "attack_damage": 1,
      "attack_rate": 0.45,
      "attack_range": 175,
      "attack_angle": 15,
      "attack_knockback": 600,
      "attack_stamina_cost": 5,
      "damage_variance": 0.12,
      "dash_speed": 760,
      "dash_duration": 0.2,
      "dash_cooldown": 0.9,
      "dash_stamina_cost": 8
    }
  },
  "ingredients": {
    "egg": {
      "display_name": "Egg",
      "description": "Warm dungeon egg.",
      "color": "#ffd166",
      "shape": "oval",
      "on_collected": []
    },
    "slime_jelly": {
      "display_name": "Slime Jelly",
      "description": "Oddly appetizing green jelly.",
      "color": "#70e000",
      "shape": "circle",
      "on_collected": []
    },
    "mushroom": {
      "display_name": "Mushroom",
      "description": "A plump cave mushroom.",
      "color": "#c77dff",
      "shape": "triangle",
      "on_collected": []
    },
    "beast_meat": {
      "display_name": "Beast Meat",
      "description": "A hearty cut from a dungeon brute.",
      "color": "#d96c75",
      "shape": "diamond",
      "on_collected": []
    },
    "ember_pepper": {
      "display_name": "Ember Pepper",
      "description": "A pepper that stays pleasantly warm.",
      "color": "#ff4d00",
      "shape": "hexagon",
      "on_collected": []
    }
  },
  "attack_patterns": {
    "direct_contact": {
      "display_name": "Impact direct",
      "type": "direct_hit",
      "range": 40,
      "angle": 360,
      "windup": 0,
      "cooldown": 1.15,
      "active_duration": 0,
      "rotation_speed": 0,
      "tick_interval": 0,
      "color": "#ff4d6d"
    },
    "chicken_cone": {
      "display_name": "Coup de bec",
      "type": "burst",
      "range": 78,
      "angle": 72,
      "windup": 0.55,
      "cooldown": 1.65,
      "active_duration": 0,
      "rotation_speed": 0,
      "tick_interval": 0,
      "color": "#ff784f"
    },
    "fungling_wide_cone": {
      "display_name": "Souffle de spores",
      "type": "swipe",
      "range": 100,
      "angle": 360,
      "windup": 1.2,
      "cooldown": 5,
      "active_duration": 3,
      "rotation_speed": 1999,
      "tick_interval": 0.1,
      "color": "#c77dff"
    },
    "boar_circle": {
      "display_name": "Onde circulaire",
      "type": "burst",
      "range": 46,
      "angle": 360,
      "windup": 0.65,
      "cooldown": 1.8,
      "active_duration": 0,
      "rotation_speed": 0,
      "tick_interval": 0,
      "color": "#ff6b35"
    },
    "sticky_circle": {
      "display_name": "Cercle collant",
      "type": "sticky",
      "range": 48,
      "angle": 360,
      "windup": 0.9,
      "cooldown": 2.4,
      "active_duration": 0,
      "rotation_speed": 0,
      "tick_interval": 0,
      "color": "#f72585"
    },
    "orbit_swipe": {
      "display_name": "Balayage orbital",
      "type": "swipe",
      "range": 98,
      "angle": 58,
      "windup": 0.45,
      "cooldown": 1.6,
      "active_duration": 1.8,
      "rotation_speed": 210,
      "tick_interval": 0.35,
      "color": "#ff3c38"
    }
  },
  "movement_patterns": {
    "linear": {
      "display_name": "Linear",
      "type": "linear",
      "speed_multiplier": 1,
      "detected_speed_multiplier": 1,
      "move_duration": 0,
      "rest_duration": 0,
      "direction_change_min": 1.2,
      "direction_change_max": 3.2,
      "idle_chance": 0
    },
    "patrol": {
      "display_name": "Random Patrol",
      "type": "patrol",
      "speed_multiplier": 0.38,
      "detected_speed_multiplier": 0.72,
      "move_duration": 0,
      "rest_duration": 0,
      "direction_change_min": 1.2,
      "direction_change_max": 3.2,
      "idle_chance": 0.22
    },
    "big_leap": {
      "display_name": "Big Leap",
      "type": "hop",
      "speed_multiplier": 1.85,
      "detected_speed_multiplier": 1.85,
      "move_duration": 0.38,
      "rest_duration": 0.95,
      "direction_change_min": 1.2,
      "direction_change_max": 3.2,
      "idle_chance": 0
    },
    "small_hop": {
      "display_name": "Small Hop",
      "type": "hop",
      "speed_multiplier": 1.25,
      "detected_speed_multiplier": 1.25,
      "move_duration": 0.18,
      "rest_duration": 0.42,
      "direction_change_min": 1.2,
      "direction_change_max": 3.2,
      "idle_chance": 0
    },
    "static": {
      "display_name": "Static",
      "type": "static",
      "speed_multiplier": 0,
      "detected_speed_multiplier": 0,
      "move_duration": 0,
      "rest_duration": 0,
      "direction_change_min": 1.2,
      "direction_change_max": 3.2,
      "idle_chance": 0
    }
  },
  "enemies": {
    "slime": {
      "display_name": "Slime",
      "spawn_weight": 3,
      "spawn_min": 0,
      "spawn_max": 6,
      "shape": "circle",
      "health": 3,
      "speed": 72,
      "damage": 1,
      "damage_variance": 0.1,
      "detection_range": 500,
      "detection_angle": 230,
      "knockback": 340,
      "knockback_resistance": 0,
      "min_size": 1.5,
      "max_size": 2,
      "attack_pattern": "fungling_wide_cone",
      "undetected_movement": "small_hop",
      "detected_movement": "big_leap",
      "hero_response": "chase",
      "color": "#ef476f",
      "drops": {
        "slime_jelly": 1
      },
      "on_kill": [],
      "on_spawn": [],
      "on_damage_player": []
    },
    "chicken_beast": {
      "display_name": "Chicken Beast",
      "spawn_weight": 7,
      "spawn_min": 0,
      "spawn_max": 6,
      "shape": "triangle",
      "health": 2,
      "speed": 800,
      "damage": 1,
      "damage_variance": 0.1,
      "detection_range": 400,
      "detection_angle": 175,
      "knockback": 460,
      "knockback_resistance": 0.12,
      "min_size": 1.5,
      "max_size": 2,
      "attack_pattern": "chicken_cone",
      "undetected_movement": "patrol",
      "detected_movement": "small_hop",
      "hero_response": "chase",
      "color": "#ff7b00",
      "drops": {
        "egg": 1
      },
      "on_kill": [],
      "on_spawn": [],
      "on_damage_player": []
    },
    "fungling": {
      "display_name": "Fungling",
      "spawn_weight": 2,
      "spawn_min": 0,
      "spawn_max": 6,
      "shape": "hexagon",
      "health": 3,
      "speed": 82,
      "damage": 3,
      "damage_variance": 0.1,
      "detection_range": 210,
      "detection_angle": 205,
      "knockback": 400,
      "knockback_resistance": 0.05,
      "min_size": 1.5,
      "max_size": 2,
      "attack_pattern": "fungling_wide_cone",
      "undetected_movement": "small_hop",
      "detected_movement": "linear",
      "hero_response": "chase",
      "color": "#9d4edd",
      "drops": {
        "mushroom": 1
      },
      "on_kill": [],
      "on_spawn": [],
      "on_damage_player": []
    },
    "boar_brute": {
      "display_name": "Boar Brute",
      "spawn_weight": 2,
      "spawn_min": 0,
      "spawn_max": 6,
      "shape": "square",
      "health": 4,
      "speed": 94,
      "damage": 2,
      "damage_variance": 0.1,
      "detection_range": 220,
      "detection_angle": 145,
      "knockback": 580,
      "knockback_resistance": 0.3,
      "min_size": 1.5,
      "max_size": 2,
      "attack_pattern": "boar_circle",
      "undetected_movement": "linear",
      "detected_movement": "big_leap",
      "hero_response": "chase",
      "color": "#b5654d",
      "drops": {
        "beast_meat": 1
      },
      "on_kill": [],
      "on_spawn": [],
      "on_damage_player": []
    },
    "pepper_imp": {
      "display_name": "Pepper Imp",
      "spawn_weight": 2,
      "spawn_min": 0,
      "spawn_max": 6,
      "shape": "diamond",
      "health": 1,
      "speed": 116,
      "damage": 1,
      "damage_variance": 0.1,
      "detection_range": 255,
      "detection_angle": 125,
      "knockback": 370,
      "knockback_resistance": 0.08,
      "min_size": 1.5,
      "max_size": 2,
      "attack_pattern": "orbit_swipe",
      "undetected_movement": "patrol",
      "detected_movement": "small_hop",
      "hero_response": "chase",
      "color": "#ff3c38",
      "drops": {
        "ember_pepper": 1
      },
      "on_kill": [],
      "on_spawn": [],
      "on_damage_player": []
    }
  },
  "recipes": {
    "fried_egg": {
      "display_name": "Fried Egg",
      "ingredients": {
        "egg": 1
      },
      "cook_time": 2,
      "sale_price": 5,
      "on_cooked": [],
      "on_served": []
    },
    "slime_omelette": {
      "display_name": "Slime Omelette",
      "ingredients": {
        "egg": 1,
        "slime_jelly": 1
      },
      "cook_time": 3,
      "sale_price": 12,
      "on_cooked": [],
      "on_served": []
    },
    "mushroom_omelette": {
      "display_name": "Mushroom Omelette",
      "ingredients": {
        "egg": 1,
        "mushroom": 1
      },
      "cook_time": 3.5,
      "sale_price": 15,
      "on_cooked": [],
      "on_served": []
    },
    "beast_hash": {
      "display_name": "Beast Egg Hash",
      "ingredients": {
        "egg": 1,
        "beast_meat": 1
      },
      "cook_time": 4,
      "sale_price": 20,
      "on_cooked": [],
      "on_served": []
    },
    "pepper_scramble": {
      "display_name": "Pepper Jelly Scramble",
      "ingredients": {
        "egg": 1,
        "slime_jelly": 1,
        "ember_pepper": 1
      },
      "cook_time": 4.5,
      "sale_price": 26,
      "on_cooked": [],
      "on_served": []
    }
  },
  "customer_profiles": {
    "regular": {
      "display_name": "Regular",
      "color": "#06d6a0",
      "cash": 30,
      "appetite": 1,
      "speed": 180,
      "favorite_chance": 0.45,
      "patience": 60,
      "meal_consumption_speed": 1,
      "generosity": 0.15,
      "arrival_weight": 1,
      "hunger": 0.5,
      "queue_tolerance": 1,
      "favorite_meal": "fried_egg",
      "on_served": [],
      "on_left_unserved": []
    },
    "foodie": {
      "display_name": "Foodie",
      "color": "#ffd166",
      "cash": 65,
      "appetite": 3,
      "speed": 150,
      "favorite_chance": 0.7,
      "patience": 75,
      "meal_consumption_speed": 0.8,
      "generosity": 0.22,
      "arrival_weight": 0.55,
      "hunger": 0.5,
      "queue_tolerance": 1,
      "favorite_meal": "mushroom_omelette",
      "on_served": [],
      "on_left_unserved": []
    },
    "generous_guest": {
      "display_name": "Generous Guest",
      "color": "#c77dff",
      "cash": 90,
      "appetite": 2,
      "speed": 70,
      "favorite_chance": 0.65,
      "patience": 48,
      "meal_consumption_speed": 1.3,
      "generosity": 0.65,
      "arrival_weight": 0.3,
      "hunger": 0.5,
      "queue_tolerance": 1,
      "favorite_meal": "pepper_scramble",
      "on_served": [],
      "on_left_unserved": []
    }
  },
  "game_variables": {
    "attack_damage": {
      "display_name": "Attack Damage",
      "type": "float",
      "base_value": 0,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 1000000,
      "rounding": "none",
      "category": "combat",
      "description": "Final player attack damage; its base value comes from the active player profile."
    },
    "max_health": {
      "display_name": "Maximum Health",
      "type": "float",
      "base_value": 0,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 1,
      "maximum": 1000000,
      "rounding": "none",
      "category": "combat",
      "description": "Final player health; its base value comes from the active player profile."
    },
    "move_speed": {
      "display_name": "Movement Speed",
      "type": "float",
      "base_value": 0,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 10000,
      "rounding": "none",
      "category": "movement",
      "description": "Final player movement speed; its base value comes from the active player profile."
    },
    "cook_speed": {
      "display_name": "Cooking Duration Multiplier",
      "type": "float",
      "base_value": 1,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0.1,
      "maximum": 10,
      "rounding": "none",
      "category": "kitchen",
      "description": "Multiplier applied to recipe cooking duration. 0.70 means 30 percent shorter."
    },
    "payout": {
      "display_name": "Meal Payout Multiplier",
      "type": "float",
      "base_value": 1,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 100,
      "rounding": "none",
      "category": "restaurant",
      "description": "Multiplier applied to each meal payout."
    },
    "patience": {
      "display_name": "Customer Patience",
      "type": "float",
      "base_value": 0,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 100000,
      "rounding": "none",
      "category": "restaurant",
      "description": "Final patience; its base value comes from the customer profile."
    },
    "stamina": {
      "display_name": "Dungeon Stamina",
      "type": "float",
      "base_value": 0,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 100000,
      "rounding": "none",
      "category": "dungeon",
      "description": "Final stamina; its base value comes from the active player profile."
    },
    "plates": {
      "display_name": "Reusable Plates",
      "type": "int",
      "base_value": 1,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 1000,
      "rounding": "round",
      "category": "restaurant",
      "description": "Total reusable plate capacity."
    },
    "player_vision": {
      "display_name": "Player Vision",
      "type": "float",
      "base_value": 100,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 4000,
      "rounding": "none",
      "category": "restaurant",
      "description": "Distance in pixels within which the player can read a customer order."
    },
    "cook_idle_rate": {
      "display_name": "Unattended Cooking Rate",
      "type": "float",
      "base_value": 0,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 4,
      "rounding": "none",
      "category": "kitchen",
      "description": "Fraction de la vitesse manuelle que le four conserve quand personne ne tient le bouton. 0 = il a besoin du joueur."
    },
    "management_console": {
      "display_name": "Management Console",
      "description": "Set to 1 once the management console is installed. It carries the day's menu and the open/closed switch.",
      "category": "restaurant",
      "type": "int",
      "base_value": 0.0,
      "base_bonus": 0.0,
      "base_coefficient": 1.0,
      "coefficient_bonus": 0.0,
      "minimum": 0.0,
      "maximum": 1.0,
      "rounding": "round"
    },
    "stove_count": {
      "display_name": "Stoves",
      "description": "How many cooking stations run in parallel.",
      "category": "kitchen",
      "type": "int",
      "base_value": 1,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 1,
      "maximum": 4,
      "rounding": "round"
    },
    "order_memory_seconds": {
      "display_name": "Order Memory",
      "description": "Seconds a customer order stays readable after the player has moved out of vision range.",
      "category": "restaurant",
      "type": "float",
      "base_value": 8,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 3600,
      "rounding": "none"
    },
    "order_board_slots": {
      "display_name": "Order Board Slots",
      "description": "Orders the board can hold at once. Zero means the restaurant has no board and orders live in the player's memory.",
      "category": "restaurant",
      "type": "int",
      "base_value": 0,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 40,
      "rounding": "round"
    },
    "popularity_gain": {
      "display_name": "Gain de popularité",
      "type": "float",
      "base_value": 1,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 10000,
      "rounding": "none",
      "category": "restaurant",
      "description": "Popularité gagnée à chaque plat servi avec succès."
    },
    "popularity_loss": {
      "display_name": "Perte de popularité",
      "type": "float",
      "base_value": 2,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 10000,
      "rounding": "none",
      "category": "restaurant",
      "description": "Popularité perdue quand un client repart sans avoir été servi."
    },
    "menu_slots": {
      "display_name": "Places au menu",
      "type": "int",
      "base_value": 3,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 1,
      "maximum": 100,
      "rounding": "round",
      "category": "restaurant",
      "description": "Nombre de recettes pouvant être proposées aux clients en même temps."
    },
    "room_spawn_initial": {
      "display_name": "Population de salle",
      "type": "int",
      "base_value": 12,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 200,
      "rounding": "round",
      "category": "dungeon",
      "description": "Nombre de créatures présentes à l’ouverture d’une salle."
    },
    "room_spawn_reinforcement": {
      "display_name": "Renforts de salle",
      "type": "int",
      "base_value": 6,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 200,
      "rounding": "round",
      "category": "dungeon",
      "description": "Nombre de créatures supplémentaires qui arrivent quand la vague d’ouverture est presque tombée."
    },
    "reinforcement_trigger": {
      "display_name": "Seuil de renfort",
      "type": "float",
      "base_value": 0.35,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 1,
      "rounding": "none",
      "category": "dungeon",
      "description": "Fraction de la vague d’ouverture encore debout au moment où les renforts arrivent."
    },
    "reward_choices": {
      "display_name": "Choix de récompense",
      "type": "int",
      "base_value": 3,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 12,
      "rounding": "round",
      "category": "dungeon",
      "description": "Nombre de récompenses proposées après une salle nettoyée."
    },
    "insurance_rate": {
      "display_name": "Assurance de plongée",
      "type": "float",
      "base_value": 0,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 1,
      "rounding": "none",
      "category": "dungeon",
      "description": "Fraction des pièces et des matériaux amassés pendant la plongée qui survit à une mise hors service."
    },
    "sidewalk_traffic": {
      "display_name": "Trafic du trottoir",
      "type": "float",
      "base_value": 10,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 600,
      "rounding": "none",
      "category": "restaurant",
      "description": "Nombre de personnes qui passent devant le restaurant chaque minute."
    },
    "queue_capacity": {
      "display_name": "Capacité de la file",
      "type": "int",
      "base_value": 4,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 50,
      "rounding": "round",
      "category": "restaurant",
      "description": "Nombre de personnes qui peuvent attendre dehors avant que les suivants passent leur chemin."
    },
    "throughput_window": {
      "display_name": "Fenêtre de service",
      "type": "float",
      "base_value": 90,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 5,
      "maximum": 3600,
      "rounding": "none",
      "category": "restaurant",
      "description": "Secondes d’historique récent qu’un passant regarde pour juger la vitesse de service."
    },
    "popularity_loss_queue": {
      "display_name": "Réputation perdue en file",
      "type": "float",
      "base_value": 1,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 10000,
      "rounding": "none",
      "category": "restaurant",
      "description": "Réputation perdue quand quelqu’un renonce à attendre dans la file."
    },
    "table_count": {
      "display_name": "Tables ouvertes",
      "type": "int",
      "base_value": 2,
      "base_bonus": 0,
      "base_coefficient": 1,
      "coefficient_bonus": 0,
      "minimum": 0,
      "maximum": 25,
      "rounding": "round",
      "category": "restaurant",
      "description": "Nombre de tabourets ouverts au service."
    }
  },
  "game_facts": {
    "enemies_defeated": {
      "display_name": "Enemies Defeated",
      "type": "int",
      "default_value": 0,
      "category": "combat",
      "description": "Total defeated enemies.",
      "scope": "dimension"
    },
    "slime_kills": {
      "display_name": "Slimes Defeated",
      "type": "int",
      "default_value": 0,
      "category": "combat",
      "description": "Total defeated slimes.",
      "scope": "dimension"
    },
    "dishes_served": {
      "display_name": "Dishes Served",
      "type": "int",
      "default_value": 0,
      "category": "restaurant",
      "description": "Total meals delivered.",
      "scope": "dimension"
    },
    "dungeon_runs": {
      "display_name": "Dungeon Runs",
      "type": "int",
      "default_value": 0,
      "category": "dungeon",
      "description": "Total dungeon entries.",
      "scope": "dimension"
    },
    "boss_defeated": {
      "display_name": "Boss Defeated",
      "type": "bool",
      "default_value": false,
      "category": "boss",
      "description": "Set when the first boss is defeated.",
      "scope": "dimension"
    },
    "restaurant_popularity": {
      "display_name": "Popularité du restaurant",
      "type": "float",
      "default_value": 0,
      "category": "restaurant",
      "description": "Réputation courante du restaurant. Monte à chaque plat servi, descend à chaque client reparti sans être servi.",
      "scope": "dimension"
    },
    "master_fork_owned": {
      "display_name": "Fourchette maîtresse",
      "type": "bool",
      "default_value": false,
      "category": "dimension",
      "description": "Vrai une fois l’épreuve terminée et la fourchette maîtresse obtenue.",
      "scope": "meta"
    },
    "dimensions_cleared": {
      "display_name": "Dimensions terminées",
      "type": "int",
      "default_value": 0,
      "category": "dimension",
      "description": "Nombre de dimensions dont le boss final est tombé.",
      "scope": "meta"
    }
  },
  "upgrade_nodes": {
    "big_egg_core": {
      "display_name": "BIG EGG",
      "node_text": "BEGIN",
      "detailed_text": "The central idea. Purchase it for free to reveal every progression branch.",
      "category": "core",
      "parent": "",
      "direction": "N",
      "distance": 0,
      "cost": 0,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "max_health",
          "layer": "scaling",
          "operation": "add",
          "value": 0.5
        }
      ],
      "visibility_conditions": [],
      "reveal_conditions": [],
      "unlock_conditions": [],
      "appearance": {
        "shape": "circle",
        "background_color": "#164e63",
        "border_color": "#67e8f9",
        "text_color": "#ecfeff",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "sharp_fork": {
      "display_name": "Sharp Fork",
      "node_text": "+8 ATK",
      "detailed_text": "Sharpen the restaurant fork into a dungeon weapon. Adds 8 attack damage.",
      "category": "combat",
      "parent": "big_egg_core",
      "direction": "N",
      "distance": 175,
      "cost": 5,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "attack_damage",
          "layer": "flat",
          "operation": "add",
          "value": 8
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "diamond",
        "background_color": "#7f1d1d",
        "border_color": "#fb7185",
        "text_color": "#fff1f2",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "sturdy_shell": {
      "display_name": "Sturdy Shell",
      "node_text": "+30 HP",
      "detailed_text": "A defensive shell. Requires combat experience and adds 30 maximum health.",
      "category": "combat",
      "parent": "sharp_fork",
      "direction": "N",
      "distance": 165,
      "cost": 25,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "max_health",
          "layer": "flat",
          "operation": "add",
          "value": 30
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.sharp_fork.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [
        {
          "path": "fact.enemies_defeated",
          "operator": ">=",
          "value": 3
        }
      ],
      "unlock_conditions": [
        {
          "path": "fact.enemies_defeated",
          "operator": ">=",
          "value": 5
        }
      ],
      "appearance": {
        "shape": "hexagon",
        "background_color": "#7f1d1d",
        "border_color": "#fda4af",
        "text_color": "#fff1f2",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "quick_feet": {
      "display_name": "Quick Feet",
      "node_text": "+35 SPD",
      "detailed_text": "Move faster in the restaurant and dungeon.",
      "category": "movement",
      "parent": "big_egg_core",
      "direction": "W",
      "distance": 190,
      "cost": 30,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "move_speed",
          "layer": "flat",
          "operation": "add",
          "value": 35
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "circle",
        "background_color": "#1e3a8a",
        "border_color": "#60a5fa",
        "text_color": "#eff6ff",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "deep_breath": {
      "display_name": "Deep Breath",
      "node_text": "+20 STA",
      "detailed_text": "Carry 20 more seconds of stamina into each dungeon round.",
      "category": "dungeon",
      "parent": "quick_feet",
      "direction": "W",
      "distance": 170,
      "cost": 18,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "stamina",
          "layer": "flat",
          "operation": "add",
          "value": 20
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.quick_feet.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.quick_feet.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "circle",
        "background_color": "#312e81",
        "border_color": "#818cf8",
        "text_color": "#eef2ff",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "hot_pan": {
      "display_name": "Hot Pan",
      "node_text": "-30% COOK",
      "detailed_text": "A hotter pan reduces cooking duration by 30 percent.",
      "category": "kitchen",
      "parent": "big_egg_core",
      "direction": "E",
      "distance": 190,
      "cost": 25,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "cook_speed",
          "layer": "scaling",
          "operation": "add",
          "value": -0.3
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#78350f",
        "border_color": "#fbbf24",
        "text_color": "#fffbeb",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "fancy_plating": {
      "display_name": "Fancy Plating",
      "node_text": "+40% PAY",
      "detailed_text": "Presentation raises every meal payout by 40 percent through its coefficient.",
      "category": "kitchen",
      "parent": "hot_pan",
      "direction": "E",
      "distance": 170,
      "cost": 35,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "payout",
          "layer": "scaling",
          "operation": "add",
          "value": 0.4
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.hot_pan.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.hot_pan.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#713f12",
        "border_color": "#fde047",
        "text_color": "#fefce8",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "comfy_chairs": {
      "display_name": "Comfy Chairs",
      "node_text": "+30s PAT",
      "detailed_text": "Customers wait 30 seconds longer for each order.",
      "category": "service",
      "parent": "big_egg_core",
      "direction": "S",
      "distance": 175,
      "cost": 20,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "patience",
          "layer": "flat",
          "operation": "add",
          "value": 30
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "circle",
        "background_color": "#14532d",
        "border_color": "#4ade80",
        "text_color": "#f0fdf4",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "second_table": {
      "display_name": "Second Table",
      "node_text": "+1 TABLE",
      "detailed_text": "Unlock a second two-seat table after proving the restaurant can serve customers.",
      "category": "service",
      "parent": "comfy_chairs",
      "direction": "SW",
      "distance": 180,
      "cost": 30,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "table_count",
          "layer": "flat",
          "operation": "add",
          "value": 1
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.comfy_chairs.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [
        {
          "path": "fact.dishes_served",
          "operator": ">=",
          "value": 2
        }
      ],
      "unlock_conditions": [
        {
          "path": "fact.dishes_served",
          "operator": ">=",
          "value": 4
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#14532d",
        "border_color": "#86efac",
        "text_color": "#f0fdf4",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "third_table": {
      "display_name": "Third Table",
      "node_text": "+1 TABLE",
      "detailed_text": "Unlock the third two-seat table.",
      "category": "service",
      "parent": "second_table",
      "direction": "S",
      "distance": 170,
      "cost": 60,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "table_count",
          "layer": "flat",
          "operation": "add",
          "value": 1
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.second_table.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.second_table.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#14532d",
        "border_color": "#bbf7d0",
        "text_color": "#f0fdf4",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "second_plate": {
      "display_name": "Second Plate",
      "node_text": "PLATE II",
      "detailed_text": "Add a second reusable plate to the restaurant.",
      "category": "plates",
      "parent": "big_egg_core",
      "direction": "SE",
      "distance": 185,
      "cost": 15,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "plates",
          "layer": "flat",
          "operation": "add",
          "value": 1
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.big_egg_core.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "circle",
        "background_color": "#581c87",
        "border_color": "#c084fc",
        "text_color": "#faf5ff",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "third_plate": {
      "display_name": "Third Plate",
      "node_text": "PLATE III",
      "detailed_text": "Add a third reusable plate to the restaurant.",
      "category": "plates",
      "parent": "second_plate",
      "direction": "SE",
      "distance": 165,
      "cost": 35,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "plates",
          "layer": "flat",
          "operation": "add",
          "value": 1
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.second_plate.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.second_plate.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "circle",
        "background_color": "#581c87",
        "border_color": "#d8b4fe",
        "text_color": "#faf5ff",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "boss_trophy": {
      "display_name": "Boss Trophy",
      "node_text": "?",
      "detailed_text": "A secret payout upgrade revealed by defeating a boss.",
      "category": "boss",
      "parent": "sturdy_shell",
      "direction": "NE",
      "distance": 180,
      "cost": 75,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "payout",
          "layer": "flat",
          "operation": "add",
          "value": 0.2
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.sturdy_shell.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [
        {
          "path": "fact.boss_defeated",
          "operator": "truthy",
          "value": true
        }
      ],
      "unlock_conditions": [
        {
          "path": "fact.boss_defeated",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "diamond",
        "background_color": "#4c1d95",
        "border_color": "#f0abfc",
        "text_color": "#fdf4ff",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "auto_stove": {
      "display_name": "Four Autonome",
      "node_text": "AUTO FOUR",
      "detailed_text": "Le four continue de cuisiner seul a 40 pourcent de la vitesse manuelle. Tenir le bouton reste plus rapide.",
      "category": "kitchen",
      "parent": "hot_pan",
      "direction": "E",
      "distance": 170,
      "cost": 45,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "cook_idle_rate",
          "layer": "flat",
          "operation": "add",
          "value": 0.4
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.hot_pan.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.hot_pan.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#78350f",
        "border_color": "#fcd34d",
        "text_color": "#fffbeb",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "wider_menu": {
      "display_name": "Menu Élargi",
      "node_text": "+1 MENU",
      "detailed_text": "Une place de plus au menu: une recette supplémentaire peut être proposée aux clients.",
      "category": "restaurant",
      "parent": "comfy_chairs",
      "direction": "SE",
      "distance": 170,
      "cost": 40,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "menu_slots",
          "layer": "flat",
          "operation": "add",
          "value": 1
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.comfy_chairs.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.comfy_chairs.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#14532d",
        "border_color": "#86efac",
        "text_color": "#f0fdf4",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "order_board": {
      "display_name": "Ardoise des commandes",
      "node_text": "ARDOISE",
      "detailed_text": "Un tableau accroché en cuisine. Repérer une commande l'y inscrit définitivement: plus rien à mémoriser, et six commandes tiennent à l'affiche.",
      "category": "restaurant",
      "parent": "comfy_chairs",
      "direction": "SW",
      "distance": 170,
      "cost": 35,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "order_board_slots",
          "layer": "flat",
          "operation": "add",
          "value": 6
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.comfy_chairs.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.comfy_chairs.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#2e2415",
        "border_color": "#e8b855",
        "text_color": "#fff8e7",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "second_stove": {
      "display_name": "Second four",
      "node_text": "+1 FOUR",
      "detailed_text": "Un deuxième poste de cuisson: deux plats avancent en même temps.",
      "category": "kitchen",
      "parent": "hot_pan",
      "direction": "NW",
      "distance": 170,
      "cost": 55,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "stove_count",
          "layer": "flat",
          "operation": "add",
          "value": 1
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.hot_pan.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.hot_pan.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#3a2412",
        "border_color": "#ffbe0b",
        "text_color": "#fff4e0",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    },
    "management_console": {
      "display_name": "Console de gestion",
      "node_text": "CONSOLE",
      "detailed_text": "Un pupitre près de l'entrée: le menu du jour se règle là, et un interrupteur ouvre ou ferme le magasin quand tu le décides.",
      "category": "restaurant",
      "parent": "wider_menu",
      "direction": "SE",
      "distance": 170,
      "cost": 45,
      "cost_resource": "coins",
      "scope": "dimension",
      "modifiers": [
        {
          "variable": "management_console",
          "layer": "flat",
          "operation": "add",
          "value": 1
        }
      ],
      "visibility_conditions": [
        {
          "path": "upgrade_nodes.wider_menu.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "reveal_conditions": [],
      "unlock_conditions": [
        {
          "path": "upgrade_nodes.wider_menu.purchased",
          "operator": "truthy",
          "value": true
        }
      ],
      "appearance": {
        "shape": "square",
        "background_color": "#12292f",
        "border_color": "#6cc4da",
        "text_color": "#e6fbff",
        "image_path": ""
      },
      "state_styles": {},
      "on_purchase": []
    }
  },
  "biomes": {
    "mossy_cellar": {
      "display_name": "Cave moussue",
      "description": "La cave humide sous le restaurant.",
      "floor_color": "#18233a",
      "wall_color": "#53617b",
      "accent_color": "#31466f",
      "on_enter": []
    },
    "feather_roost": {
      "display_name": "Perchoir de plumes",
      "description": "Un nid qui ne dort jamais.",
      "floor_color": "#2a2118",
      "wall_color": "#7b6a53",
      "accent_color": "#6f5a31",
      "on_enter": []
    },
    "spore_gallery": {
      "display_name": "Galerie des spores",
      "description": "De longs tunnels éclairés par des chapeaux respirants.",
      "floor_color": "#21183a",
      "wall_color": "#6b537b",
      "accent_color": "#55316f",
      "on_enter": []
    },
    "ember_burrow": {
      "display_name": "Terrier de braise",
      "description": "La chaleur monte à travers la pierre fendue.",
      "floor_color": "#3a1818",
      "wall_color": "#7b5353",
      "accent_color": "#6f3131",
      "on_enter": []
    },
    "frozen_pantry": {
      "display_name": "Garde-manger gelé",
      "description": "Une réserve qui a survécu à ses cuisiniers.",
      "floor_color": "#18303a",
      "wall_color": "#53737b",
      "accent_color": "#316a6f",
      "on_enter": []
    },
    "void_kitchen": {
      "display_name": "Cuisine du vide",
      "description": "La dernière cuisine, au-delà du cinquième biome.",
      "floor_color": "#120c1c",
      "wall_color": "#3d3352",
      "accent_color": "#2b1f45",
      "on_enter": []
    },
    "fork_sanctum": {
      "display_name": "Sanctuaire de la fourchette",
      "description": "Un unique biome scellé qui garde la fourchette maîtresse.",
      "floor_color": "#1c1230",
      "wall_color": "#6d53a0",
      "accent_color": "#46318f",
      "on_enter": []
    }
  },
  "dimensions": {
    "dimension_one": {
      "display_name": "Première dimension",
      "description": "Là où commence toute cuisinière.",
      "order": 1,
      "on_enter": [],
      "on_complete": []
    },
    "dimension_two": {
      "display_name": "Deuxième dimension",
      "description": "Les mêmes recettes, des salles plus dures.",
      "order": 2,
      "on_enter": [],
      "on_complete": []
    },
    "dimension_three": {
      "display_name": "Troisième dimension",
      "description": "Sols froids et longs couloirs.",
      "order": 3,
      "on_enter": [],
      "on_complete": []
    },
    "dimension_four": {
      "display_name": "Quatrième dimension",
      "description": "Le dernier cycle. Son sixième biome reste scellé sans la fourchette maîtresse.",
      "order": 4,
      "on_enter": [],
      "on_complete": []
    },
    "fork_trial": {
      "display_name": "Épreuve de la fourchette",
      "description": "Un seul biome scellé. Son gardien détient la fourchette maîtresse.",
      "order": 0,
      "on_enter": [],
      "on_complete": [
        {
          "op": "set",
          "path": "fact.master_fork_owned",
          "value": true
        }
      ]
    }
  },
  "rewards": {
    "whetted_edge": {
      "display_name": "Tranchant affûté",
      "description": "+20 % de dégâts d’attaque pour le reste de la plongée.",
      "weight": 3,
      "modifiers": [
        {
          "variable": "attack_damage",
          "layer": "scaling",
          "operation": "add",
          "value": 0.2
        }
      ],
      "on_taken": []
    },
    "second_wind": {
      "display_name": "Second souffle",
      "description": "+25 d’endurance pour le reste de la plongée.",
      "weight": 3,
      "modifiers": [
        {
          "variable": "stamina",
          "layer": "flat",
          "operation": "add",
          "value": 25
        }
      ],
      "on_taken": []
    },
    "light_step": {
      "display_name": "Pas léger",
      "description": "+15 % de vitesse pour le reste de la plongée.",
      "weight": 3,
      "modifiers": [
        {
          "variable": "move_speed",
          "layer": "scaling",
          "operation": "add",
          "value": 0.15
        }
      ],
      "on_taken": []
    },
    "thick_hide": {
      "display_name": "Cuir épais",
      "description": "+30 points de vie maximum pour le reste de la plongée.",
      "weight": 3,
      "modifiers": [
        {
          "variable": "max_health",
          "layer": "flat",
          "operation": "add",
          "value": 30
        }
      ],
      "on_taken": []
    },
    "quiet_halls": {
      "display_name": "Couloirs calmes",
      "description": "Les salles contiennent 3 créatures de moins.",
      "weight": 2,
      "modifiers": [
        {
          "variable": "room_spawn_initial",
          "layer": "flat",
          "operation": "add",
          "value": -3
        }
      ],
      "on_taken": []
    },
    "crowded_halls": {
      "display_name": "Couloirs bondés",
      "description": "Les salles contiennent 4 créatures de plus, et chaque coup frappe 35 % plus fort.",
      "weight": 1,
      "modifiers": [
        {
          "variable": "room_spawn_initial",
          "layer": "flat",
          "operation": "add",
          "value": 4
        },
        {
          "variable": "attack_damage",
          "layer": "scaling",
          "operation": "add",
          "value": 0.35
        }
      ],
      "on_taken": []
    },
    "deep_pockets": {
      "display_name": "Poches profondes",
      "description": "L’assurance couvre 25 % de plus de la plongée.",
      "weight": 2,
      "modifiers": [
        {
          "variable": "insurance_rate",
          "layer": "flat",
          "operation": "add",
          "value": 0.25
        }
      ],
      "on_taken": []
    },
    "sharp_eyes": {
      "display_name": "Œil aiguisé",
      "description": "+120 de vision, utile de retour au restaurant.",
      "weight": 1,
      "modifiers": [
        {
          "variable": "player_vision",
          "layer": "flat",
          "operation": "add",
          "value": 120
        }
      ],
      "on_taken": []
    }
  },
  "room_elements": {
    "crate": {
      "display_name": "Caisse",
      "description": "Une caisse de ravitaillement qui se casse.",
      "kind": "destructible",
      "shape": "square",
      "color": "#8a6a3d",
      "size": 1,
      "health": 12,
      "damage": 0,
      "trigger_radius": 0,
      "rearm_delay": 0,
      "coins": 0,
      "solid": true,
      "drops": {
        "egg": 1
      },
      "on_destroyed": [],
      "on_triggered": []
    },
    "spore_pod": {
      "display_name": "Cosse à spores",
      "description": "Éclate en spores utilisables.",
      "kind": "destructible",
      "shape": "circle",
      "color": "#7d5ba6",
      "size": 0.9,
      "health": 8,
      "damage": 0,
      "trigger_radius": 0,
      "rearm_delay": 0,
      "coins": 0,
      "solid": false,
      "drops": {
        "mushroom": 1
      },
      "on_destroyed": [],
      "on_triggered": []
    },
    "floor_spike": {
      "display_name": "Pique au sol",
      "description": "Se déclenche quand on marche dessus.",
      "kind": "trap",
      "shape": "triangle",
      "color": "#b04a4a",
      "size": 0.8,
      "health": 0,
      "damage": 12,
      "trigger_radius": 34,
      "rearm_delay": 2.5,
      "coins": 0,
      "solid": false,
      "drops": {},
      "on_destroyed": [],
      "on_triggered": []
    },
    "supply_chest": {
      "display_name": "Coffre de ravitaillement",
      "description": "Contient des pièces et des matériaux.",
      "kind": "chest",
      "shape": "square",
      "color": "#d4a017",
      "size": 1.1,
      "health": 0,
      "damage": 0,
      "trigger_radius": 0,
      "rearm_delay": 0,
      "coins": 25,
      "solid": true,
      "drops": {
        "beast_meat": 1
      },
      "on_destroyed": [],
      "on_triggered": []
    },
    "wandering_cook": {
      "display_name": "Cuisinier errant",
      "description": "Un cuisinier qui a quelque chose à dire.",
      "kind": "npc",
      "shape": "hexagon",
      "color": "#6ec8a8",
      "size": 1,
      "health": 0,
      "damage": 0,
      "trigger_radius": 0,
      "rearm_delay": 0,
      "coins": 0,
      "solid": true,
      "drops": {},
      "on_destroyed": [],
      "on_triggered": []
    },
    "back_alley_stall": {
      "display_name": "Étal de ruelle",
      "description": "Vend ce qu’il a trouvé.",
      "kind": "shop",
      "shape": "square",
      "color": "#c77dff",
      "size": 1.3,
      "health": 0,
      "damage": 0,
      "trigger_radius": 0,
      "rearm_delay": 0,
      "coins": 0,
      "solid": true,
      "drops": {},
      "on_destroyed": [],
      "on_triggered": []
    }
  },
  "rooms": {
    "dimension_one_l1": {
      "display_name": "Cave moussue L1",
      "description": "",
      "dimension": "dimension_one",
      "level": 1,
      "biome": "mossy_cellar",
      "spawn_initial": 2,
      "spawn_reinforcement": 1,
      "reinforcement_waves": 3,
      "reward_choices": 0,
      "max_per_run": 0,
      "exit_offset": 1,
      "exit_level": 0,
      "reinforcement_duration": 5,
      "initial_enemies": {
        "chicken_beast": 1
      },
      "reinforcement_enemies": {
        "chicken_beast": 1
      },
      "rewards": {},
      "modifiers": [],
      "elements": {},
      "behaviours": [],
      "replaces": [],
      "conditions": [],
      "ends_dimension": false,
      "on_enter": [],
      "on_cleared": [],
      "on_blocked": []
    },
    "dimension_one_l2": {
      "display_name": "Cave moussue L2",
      "description": "",
      "dimension": "dimension_one",
      "level": 2,
      "biome": "mossy_cellar",
      "spawn_initial": 2,
      "spawn_reinforcement": 0,
      "reinforcement_waves": 1,
      "reward_choices": 0,
      "max_per_run": 0,
      "exit_offset": 1,
      "exit_level": 0,
      "reinforcement_duration": 0,
      "initial_enemies": {
        "slime": 1
      },
      "reinforcement_enemies": {},
      "rewards": {},
      "modifiers": [],
      "elements": {},
      "behaviours": [],
      "replaces": [],
      "conditions": [],
      "ends_dimension": false,
      "on_enter": [],
      "on_cleared": [],
      "on_blocked": []
    },
    "dimension_one_l3": {
      "display_name": "Cave moussue L3",
      "description": "",
      "dimension": "dimension_one",
      "level": 3,
      "biome": "mossy_cellar",
      "spawn_initial": 2,
      "spawn_reinforcement": 0,
      "reinforcement_waves": 1,
      "reward_choices": 0,
      "max_per_run": 0,
      "exit_offset": 1,
      "exit_level": 0,
      "reinforcement_duration": 0,
      "initial_enemies": {
        "fungling": 1
      },
      "reinforcement_enemies": {},
      "rewards": {},
      "modifiers": [],
      "elements": {},
      "behaviours": [],
      "replaces": [],
      "conditions": [],
      "ends_dimension": false,
      "on_enter": [],
      "on_cleared": [],
      "on_blocked": []
    },
    "dimension_one_l4": {
      "display_name": "Cave moussue L4",
      "description": "",
      "dimension": "dimension_one",
      "level": 4,
      "biome": "mossy_cellar",
      "spawn_initial": 2,
      "spawn_reinforcement": 0,
      "reinforcement_waves": 1,
      "reward_choices": 0,
      "max_per_run": 0,
      "exit_offset": 1,
      "exit_level": 0,
      "reinforcement_duration": 0,
      "initial_enemies": {
        "pepper_imp": 1
      },
      "reinforcement_enemies": {},
      "rewards": {},
      "modifiers": [],
      "elements": {},
      "behaviours": [],
      "replaces": [],
      "conditions": [],
      "ends_dimension": false,
      "on_enter": [],
      "on_cleared": [],
      "on_blocked": []
    }
  },
  "languages": [
    "fr",
    "en"
  ],
  "localization": {
    "attack_patterns.boar_circle.display_name": {
      "default": "Onde circulaire"
    },
    "attack_patterns.chicken_cone.display_name": {
      "default": "Coup de bec"
    },
    "attack_patterns.direct_contact.display_name": {
      "default": "Impact direct"
    },
    "attack_patterns.fungling_wide_cone.display_name": {
      "default": "Souffle de spores"
    },
    "attack_patterns.orbit_swipe.display_name": {
      "default": "Balayage orbital"
    },
    "attack_patterns.sticky_circle.display_name": {
      "default": "Cercle collant"
    },
    "biomes.ember_burrow.description": {
      "default": "La chaleur monte à travers la pierre fendue."
    },
    "biomes.ember_burrow.display_name": {
      "default": "Terrier de braise"
    },
    "biomes.feather_roost.description": {
      "default": "Un nid qui ne dort jamais."
    },
    "biomes.feather_roost.display_name": {
      "default": "Perchoir de plumes"
    },
    "biomes.fork_sanctum.description": {
      "default": "Un unique biome scellé qui garde la fourchette maîtresse."
    },
    "biomes.fork_sanctum.display_name": {
      "default": "Sanctuaire de la fourchette"
    },
    "biomes.frozen_pantry.description": {
      "default": "Une réserve qui a survécu à ses cuisiniers."
    },
    "biomes.frozen_pantry.display_name": {
      "default": "Garde-manger gelé"
    },
    "biomes.mossy_cellar.description": {
      "default": "La cave humide sous le restaurant."
    },
    "biomes.mossy_cellar.display_name": {
      "default": "Cave moussue"
    },
    "biomes.spore_gallery.description": {
      "default": "De longs tunnels éclairés par des chapeaux respirants."
    },
    "biomes.spore_gallery.display_name": {
      "default": "Galerie des spores"
    },
    "biomes.void_kitchen.description": {
      "default": "La dernière cuisine, au-delà du cinquième biome."
    },
    "biomes.void_kitchen.display_name": {
      "default": "Cuisine du vide"
    },
    "customer_profiles.foodie.display_name": {
      "default": "Foodie"
    },
    "customer_profiles.generous_guest.display_name": {
      "default": "Generous Guest"
    },
    "customer_profiles.regular.display_name": {
      "default": "Regular"
    },
    "dimensions.dimension_four.description": {
      "default": "Le dernier cycle. Son sixième biome reste scellé sans la fourchette maîtresse."
    },
    "dimensions.dimension_four.display_name": {
      "default": "Quatrième dimension"
    },
    "dimensions.dimension_one.description": {
      "default": "Là où commence toute cuisinière."
    },
    "dimensions.dimension_one.display_name": {
      "default": "Première dimension"
    },
    "dimensions.dimension_three.description": {
      "default": "Sols froids et longs couloirs."
    },
    "dimensions.dimension_three.display_name": {
      "default": "Troisième dimension"
    },
    "dimensions.dimension_two.description": {
      "default": "Les mêmes recettes, des salles plus dures."
    },
    "dimensions.dimension_two.display_name": {
      "default": "Deuxième dimension"
    },
    "dimensions.fork_trial.description": {
      "default": "Un seul biome scellé. Son gardien détient la fourchette maîtresse."
    },
    "dimensions.fork_trial.display_name": {
      "default": "Épreuve de la fourchette"
    },
    "enemies.boar_brute.display_name": {
      "default": "Boar Brute"
    },
    "enemies.chicken_beast.display_name": {
      "default": "Chicken Beast"
    },
    "enemies.fungling.display_name": {
      "default": "Fungling"
    },
    "enemies.pepper_imp.display_name": {
      "default": "Pepper Imp"
    },
    "enemies.slime.display_name": {
      "default": "Slime"
    },
    "fact.boss_defeated.description": {
      "default": "Set when the first boss is defeated."
    },
    "fact.boss_defeated.display_name": {
      "default": "Boss Defeated"
    },
    "fact.dimensions_cleared.description": {
      "default": "Nombre de dimensions dont le boss final est tombé."
    },
    "fact.dimensions_cleared.display_name": {
      "default": "Dimensions terminées"
    },
    "fact.dishes_served.description": {
      "default": "Total meals delivered."
    },
    "fact.dishes_served.display_name": {
      "default": "Dishes Served"
    },
    "fact.dungeon_runs.description": {
      "default": "Total dungeon entries."
    },
    "fact.dungeon_runs.display_name": {
      "default": "Dungeon Runs"
    },
    "fact.enemies_defeated.description": {
      "default": "Total defeated enemies."
    },
    "fact.enemies_defeated.display_name": {
      "default": "Enemies Defeated"
    },
    "fact.master_fork_owned.description": {
      "default": "Vrai une fois l’épreuve terminée et la fourchette maîtresse obtenue."
    },
    "fact.master_fork_owned.display_name": {
      "default": "Fourchette maîtresse"
    },
    "fact.restaurant_popularity.description": {
      "default": "Réputation courante du restaurant. Monte à chaque plat servi, descend à chaque client reparti sans être servi."
    },
    "fact.restaurant_popularity.display_name": {
      "default": "Popularité du restaurant"
    },
    "fact.slime_kills.description": {
      "default": "Total defeated slimes."
    },
    "fact.slime_kills.display_name": {
      "default": "Slimes Defeated"
    },
    "ingredients.beast_meat.description": {
      "default": "A hearty cut from a dungeon brute."
    },
    "ingredients.beast_meat.display_name": {
      "default": "Beast Meat"
    },
    "ingredients.egg.description": {
      "default": "Warm dungeon egg."
    },
    "ingredients.egg.display_name": {
      "default": "Egg"
    },
    "ingredients.ember_pepper.description": {
      "default": "A pepper that stays pleasantly warm."
    },
    "ingredients.ember_pepper.display_name": {
      "default": "Ember Pepper"
    },
    "ingredients.mushroom.description": {
      "default": "A plump cave mushroom."
    },
    "ingredients.mushroom.display_name": {
      "default": "Mushroom"
    },
    "ingredients.slime_jelly.description": {
      "default": "Oddly appetizing green jelly."
    },
    "ingredients.slime_jelly.display_name": {
      "default": "Slime Jelly"
    },
    "movement_patterns.big_leap.display_name": {
      "default": "Big Leap"
    },
    "movement_patterns.linear.display_name": {
      "default": "Linear"
    },
    "movement_patterns.patrol.display_name": {
      "default": "Random Patrol"
    },
    "movement_patterns.small_hop.display_name": {
      "default": "Small Hop"
    },
    "movement_patterns.static.display_name": {
      "default": "Static"
    },
    "player_configs.default_player.display_name": {
      "default": "Default Player"
    },
    "recipes.beast_hash.display_name": {
      "default": "Beast Egg Hash"
    },
    "recipes.fried_egg.display_name": {
      "default": "Fried Egg"
    },
    "recipes.mushroom_omelette.display_name": {
      "default": "Mushroom Omelette"
    },
    "recipes.pepper_scramble.display_name": {
      "default": "Pepper Jelly Scramble"
    },
    "recipes.slime_omelette.display_name": {
      "default": "Slime Omelette"
    },
    "rewards.crowded_halls.description": {
      "default": "Les salles contiennent 4 créatures de plus, et chaque coup frappe 35 % plus fort."
    },
    "rewards.crowded_halls.display_name": {
      "default": "Couloirs bondés"
    },
    "rewards.deep_pockets.description": {
      "default": "L’assurance couvre 25 % de plus de la plongée."
    },
    "rewards.deep_pockets.display_name": {
      "default": "Poches profondes"
    },
    "rewards.light_step.description": {
      "default": "+15 % de vitesse pour le reste de la plongée."
    },
    "rewards.light_step.display_name": {
      "default": "Pas léger"
    },
    "rewards.quiet_halls.description": {
      "default": "Les salles contiennent 3 créatures de moins."
    },
    "rewards.quiet_halls.display_name": {
      "default": "Couloirs calmes"
    },
    "rewards.second_wind.description": {
      "default": "+25 d’endurance pour le reste de la plongée."
    },
    "rewards.second_wind.display_name": {
      "default": "Second souffle"
    },
    "rewards.sharp_eyes.description": {
      "default": "+120 de vision, utile de retour au restaurant."
    },
    "rewards.sharp_eyes.display_name": {
      "default": "Œil aiguisé"
    },
    "rewards.thick_hide.description": {
      "default": "+30 points de vie maximum pour le reste de la plongée."
    },
    "rewards.thick_hide.display_name": {
      "default": "Cuir épais"
    },
    "rewards.whetted_edge.description": {
      "default": "+20 % de dégâts d’attaque pour le reste de la plongée."
    },
    "rewards.whetted_edge.display_name": {
      "default": "Tranchant affûté"
    },
    "room_elements.back_alley_stall.description": {
      "default": "Vend ce qu’il a trouvé."
    },
    "room_elements.back_alley_stall.display_name": {
      "default": "Étal de ruelle"
    },
    "room_elements.crate.description": {
      "default": "Une caisse de ravitaillement qui se casse."
    },
    "room_elements.crate.display_name": {
      "default": "Caisse"
    },
    "room_elements.floor_spike.description": {
      "default": "Se déclenche quand on marche dessus."
    },
    "room_elements.floor_spike.display_name": {
      "default": "Pique au sol"
    },
    "room_elements.spore_pod.description": {
      "default": "Éclate en spores utilisables."
    },
    "room_elements.spore_pod.display_name": {
      "default": "Cosse à spores"
    },
    "room_elements.supply_chest.description": {
      "default": "Contient des pièces et des matériaux."
    },
    "room_elements.supply_chest.display_name": {
      "default": "Coffre de ravitaillement"
    },
    "room_elements.wandering_cook.description": {
      "default": "Un cuisinier qui a quelque chose à dire."
    },
    "room_elements.wandering_cook.display_name": {
      "default": "Cuisinier errant"
    },
    "rooms.dimension_one_l1.display_name": {
      "default": "Cave moussue L1"
    },
    "rooms.dimension_one_l2.display_name": {
      "default": "Cave moussue L2"
    },
    "rooms.dimension_one_l3.display_name": {
      "default": "Cave moussue L3"
    },
    "rooms.dimension_one_l4.display_name": {
      "default": "Cave moussue L4"
    },
    "stat.attack_damage.description": {
      "default": "Final player attack damage; its base value comes from the active player profile."
    },
    "stat.attack_damage.display_name": {
      "default": "Attack Damage"
    },
    "stat.cook_idle_rate.description": {
      "default": "Fraction de la vitesse manuelle que le four conserve quand personne ne tient le bouton. 0 = il a besoin du joueur."
    },
    "stat.cook_idle_rate.display_name": {
      "default": "Unattended Cooking Rate"
    },
    "stat.cook_speed.description": {
      "default": "Multiplier applied to recipe cooking duration. 0.70 means 30 percent shorter."
    },
    "stat.cook_speed.display_name": {
      "default": "Cooking Duration Multiplier"
    },
    "stat.insurance_rate.description": {
      "default": "Fraction des pièces et des matériaux amassés pendant la plongée qui survit à une mise hors service."
    },
    "stat.insurance_rate.display_name": {
      "default": "Assurance de plongée"
    },
    "stat.max_health.description": {
      "default": "Final player health; its base value comes from the active player profile."
    },
    "stat.max_health.display_name": {
      "default": "Maximum Health"
    },
    "stat.menu_slots.description": {
      "default": "Nombre de recettes pouvant être proposées aux clients en même temps."
    },
    "stat.menu_slots.display_name": {
      "default": "Places au menu"
    },
    "stat.move_speed.description": {
      "default": "Final player movement speed; its base value comes from the active player profile."
    },
    "stat.move_speed.display_name": {
      "default": "Movement Speed"
    },
    "stat.patience.description": {
      "default": "Final patience; its base value comes from the customer profile."
    },
    "stat.patience.display_name": {
      "default": "Customer Patience"
    },
    "stat.payout.description": {
      "default": "Multiplier applied to each meal payout."
    },
    "stat.payout.display_name": {
      "default": "Meal Payout Multiplier"
    },
    "stat.plates.description": {
      "default": "Total reusable plate capacity."
    },
    "stat.plates.display_name": {
      "default": "Reusable Plates"
    },
    "stat.player_vision.description": {
      "default": "Distance in pixels within which the player can read a customer order."
    },
    "stat.player_vision.display_name": {
      "default": "Player Vision"
    },
    "stat.popularity_gain.description": {
      "default": "Popularité gagnée à chaque plat servi avec succès."
    },
    "stat.popularity_gain.display_name": {
      "default": "Gain de popularité"
    },
    "stat.popularity_loss.description": {
      "default": "Popularité perdue quand un client repart sans avoir été servi."
    },
    "stat.popularity_loss.display_name": {
      "default": "Perte de popularité"
    },
    "stat.popularity_loss_queue.description": {
      "default": "Réputation perdue quand quelqu’un renonce à attendre dans la file."
    },
    "stat.popularity_loss_queue.display_name": {
      "default": "Réputation perdue en file"
    },
    "stat.queue_capacity.description": {
      "default": "Nombre de personnes qui peuvent attendre dehors avant que les suivants passent leur chemin."
    },
    "stat.queue_capacity.display_name": {
      "default": "Capacité de la file"
    },
    "stat.reinforcement_trigger.description": {
      "default": "Fraction de la vague d’ouverture encore debout au moment où les renforts arrivent."
    },
    "stat.reinforcement_trigger.display_name": {
      "default": "Seuil de renfort"
    },
    "stat.reward_choices.description": {
      "default": "Nombre de récompenses proposées après une salle nettoyée."
    },
    "stat.reward_choices.display_name": {
      "default": "Choix de récompense"
    },
    "stat.room_spawn_initial.description": {
      "default": "Nombre de créatures présentes à l’ouverture d’une salle."
    },
    "stat.room_spawn_initial.display_name": {
      "default": "Population de salle"
    },
    "stat.room_spawn_reinforcement.description": {
      "default": "Nombre de créatures supplémentaires qui arrivent quand la vague d’ouverture est presque tombée."
    },
    "stat.room_spawn_reinforcement.display_name": {
      "default": "Renforts de salle"
    },
    "stat.sidewalk_traffic.description": {
      "default": "Nombre de personnes qui passent devant le restaurant chaque minute."
    },
    "stat.sidewalk_traffic.display_name": {
      "default": "Trafic du trottoir"
    },
    "stat.stamina.description": {
      "default": "Final stamina; its base value comes from the active player profile."
    },
    "stat.stamina.display_name": {
      "default": "Dungeon Stamina"
    },
    "stat.table_count.description": {
      "default": "Nombre de tabourets ouverts au service."
    },
    "stat.table_count.display_name": {
      "default": "Tables ouvertes"
    },
    "stat.throughput_window.description": {
      "default": "Secondes d’historique récent qu’un passant regarde pour juger la vitesse de service."
    },
    "stat.throughput_window.display_name": {
      "default": "Fenêtre de service"
    },
    "ui.customer.arriving": {
      "default": "%s is arriving"
    },
    "ui.customer.eating": {
      "default": "%s is eating"
    },
    "ui.customer.leaving": {
      "default": "%s is leaving"
    },
    "ui.customer.order": {
      "default": "Order: %s"
    },
    "ui.customer.serve": {
      "default": "Serve %s"
    },
    "ui.customer.step_closer": {
      "default": "%s is waiting — step closer to read the order"
    },
    "ui.dungeon.boss_ahead": {
      "default": "The keeper of this dimension is waiting beyond the door."
    },
    "ui.dungeon.boss_defeated": {
      "default": "%s falls. The dimension is yours."
    },
    "ui.dungeon.boss_room": {
      "default": "BOSS"
    },
    "ui.dungeon.cleared": {
      "default": "Room cleared! Collect the loot before moving on."
    },
    "ui.dungeon.dimension_complete": {
      "default": "%s cleared. Everything but your special upgrades resets — %s begins."
    },
    "ui.dungeon.dive_end": {
      "default": "This is the last room of the dive — take the exit on the left."
    },
    "ui.dungeon.door_blocked": {
      "default": "Defeat every creature first"
    },
    "ui.dungeon.door_end": {
      "default": "END"
    },
    "ui.dungeon.door_gated": {
      "default": "SEALED"
    },
    "ui.dungeon.door_open": {
      "default": "OPEN"
    },
    "ui.dungeon.door_prompt": {
      "default": "Enter the next room"
    },
    "ui.dungeon.door_sealed": {
      "default": "SEALED"
    },
    "ui.dungeon.entered_biome": {
      "default": "%s"
    },
    "ui.dungeon.entered_room": {
      "default": "Room %d — new creatures ahead"
    },
    "ui.dungeon.entered_special": {
      "default": "%s — this room is not on the usual path"
    },
    "ui.dungeon.exit_prompt": {
      "default": "Return to the restaurant"
    },
    "ui.dungeon.gate_blocked": {
      "default": "This door answers only to the master fork. A trial has opened."
    },
    "ui.dungeon.gate_trial_ready": {
      "default": "The trial is waiting: dive again to face it."
    },
    "ui.dungeon.insured": {
      "default": "Knocked out! Insurance saved %d%% of the dive: %d coins and %d materials."
    },
    "ui.dungeon.intro": {
      "default": "Clear every creature, then take the door on the right to go deeper."
    },
    "ui.dungeon.knocked_out": {
      "default": "Knocked out! Everything gathered on this dive was lost."
    },
    "ui.dungeon.objective_boss": {
      "default": "%s — the keeper still stands | Space/A attack | Q/B dash | R/X walk-run"
    },
    "ui.dungeon.objective_boss_cleared": {
      "default": "%s defeated — take the exit on the left to bank the dive"
    },
    "ui.dungeon.objective_cleared": {
      "default": "Room %d cleared — collect the drops, then the door on the right or the exit on the left"
    },
    "ui.dungeon.objective_cleared_biome": {
      "default": "%s — room %d/%d cleared, take the door on the right"
    },
    "ui.dungeon.objective_fighting": {
      "default": "Room %d — %d creatures left | Space/A attack | Q/B dash | R/X walk-run"
    },
    "ui.dungeon.objective_fighting_biome": {
      "default": "%s — room %d/%d, %d creatures left | Space/A attack | Q/B dash | R/X walk-run"
    },
    "ui.dungeon.objective_room": {
      "default": "%s — %d creatures left | Space/A attack | Q/B dash | R/X walk-run"
    },
    "ui.dungeon.objective_room_cleared": {
      "default": "%s cleared — take the door on the right"
    },
    "ui.dungeon.out_of_stamina": {
      "default": "Out of stamina! The dive ended and every collected material was kept."
    },
    "ui.dungeon.reinforcements": {
      "default": "Reinforcements! %d more creatures."
    },
    "ui.dungeon.returned": {
      "default": "Returned safely with the dungeon loot"
    },
    "ui.dungeon.reward_prompt": {
      "default": "Pick a reward before moving on"
    },
    "ui.dungeon.reward_skip": {
      "default": "Take nothing"
    },
    "ui.dungeon.reward_subtitle": {
      "default": "It lasts until you return to the restaurant."
    },
    "ui.dungeon.reward_taken": {
      "default": "Reward taken: %s"
    },
    "ui.dungeon.reward_title": {
      "default": "Choose a reward"
    },
    "ui.dungeon.room": {
      "default": "ROOM %d"
    },
    "ui.dungeon.room_sealed": {
      "default": "This door stays shut for now."
    },
    "ui.dungeon.shortcut": {
      "default": "A shortcut! %d rooms skipped."
    },
    "ui.dungeon.trial_complete": {
      "default": "The master fork is yours. The sealed door will open."
    },
    "ui.menu.cook_tooltip": {
      "default": "Cook this dish"
    },
    "ui.menu.count": {
      "default": "On menu %d/%d"
    },
    "ui.menu.missing_for": {
      "default": "Missing ingredients for %s"
    },
    "ui.menu.missing_tooltip": {
      "default": "Missing ingredients"
    },
    "ui.menu.off_menu": {
      "default": "WITHDRAWN"
    },
    "ui.menu.offer_tooltip": {
      "default": "Offer this dish to customers"
    },
    "ui.menu.on_menu": {
      "default": "ON MENU"
    },
    "ui.plate.being_eaten": {
      "default": "Meal being eaten"
    },
    "ui.plate.bring_order": {
      "default": "Bring %s a plate of %s"
    },
    "ui.plate.carry_somewhere": {
      "default": "Carry the plate to the shelf, a customer, the dishwasher or the trash"
    },
    "ui.plate.dirty": {
      "default": "dirty plate"
    },
    "ui.plate.pick_dirty": {
      "default": "Pick up dirty plate"
    },
    "ui.plate.pick_up": {
      "default": "Pick up %s"
    },
    "ui.plate.picked_up": {
      "default": "Picked up %s"
    },
    "ui.plate.serve_wrong": {
      "default": "Wrong plate — %s ordered %s"
    },
    "ui.prompt.cook": {
      "default": "Hold to cook %s"
    },
    "ui.prompt.dishwasher": {
      "default": "Dishwasher / plate closet"
    },
    "ui.prompt.no_plate": {
      "default": "No clean plate — use dishwasher"
    },
    "ui.prompt.shelf": {
      "default": "Plate shelf"
    },
    "ui.prompt.shelf_put": {
      "default": "Put the plate on the shelf"
    },
    "ui.prompt.trash": {
      "default": "Trash can"
    },
    "ui.prompt.trash_put": {
      "default": "Throw the carried plate away"
    },
    "ui.prompt.wash": {
      "default": "Wash carried dirty plate"
    },
    "ui.restaurant.bring_dirty_plate": {
      "default": "Bring a dirty plate to the dishwasher"
    },
    "ui.restaurant.cancelled": {
      "default": "Cancelled %s — ingredients returned"
    },
    "ui.restaurant.closed": {
      "default": "Restaurant closed for the day: no meals remain"
    },
    "ui.restaurant.cooking_started": {
      "default": "Cooking %s…"
    },
    "ui.restaurant.customer_left_hungry": {
      "default": "%s left hungry"
    },
    "ui.restaurant.customer_left_last_meal": {
      "default": "%s left: the last meal is gone"
    },
    "ui.restaurant.customer_left_nothing": {
      "default": "%s left: nothing affordable is available"
    },
    "ui.restaurant.dish_ready": {
      "default": "%s is ready on the stove"
    },
    "ui.restaurant.intro": {
      "default": "Customers enter from the north. Cook, serve, clear, and wash every plate."
    },
    "ui.restaurant.meal_served": {
      "default": "Meal served — clear and wash the plate to collect payment"
    },
    "ui.restaurant.menu_full": {
      "default": "Menu full — %d slots"
    },
    "ui.restaurant.missing_ingredients": {
      "default": "Missing ingredients"
    },
    "ui.restaurant.no_clean_plate": {
      "default": "No clean plate available — wash a dirty plate"
    },
    "ui.restaurant.no_clean_plate_short": {
      "default": "No clean plate available"
    },
    "ui.restaurant.payment": {
      "default": "Payment collected: +%d coins"
    },
    "ui.restaurant.payment_tip": {
      "default": "Payment collected: +%d coins, including a %d coin tip!"
    },
    "ui.restaurant.plate_stored": {
      "default": "Plate stored on the shelf"
    },
    "ui.restaurant.plate_washed": {
      "default": "Plate washed and returned to the closet"
    },
    "ui.restaurant.plates": {
      "default": "Plates %d/%d"
    },
    "ui.restaurant.queue_gave_up": {
      "default": "%s gave up waiting in line"
    },
    "ui.restaurant.queue_joined": {
      "default": "%s joined the line"
    },
    "ui.restaurant.reopened": {
      "default": "Restaurant reopened"
    },
    "ui.restaurant.shelf_full": {
      "default": "The shelf is full"
    },
    "ui.restaurant.shelf_holds": {
      "default": "The shelf holds plates you are carrying"
    },
    "ui.restaurant.snack": {
      "default": "You feel much better after a snack"
    },
    "ui.restaurant.trash_already_empty": {
      "default": "Nothing left to throw away — this plate is already dirty"
    },
    "ui.restaurant.trash_prompt_empty": {
      "default": "Carry a plate here to throw it away"
    },
    "ui.restaurant.trashed": {
      "default": "Threw away the %s — the plate stays in your hands, dirty"
    },
    "ui.station.shelf": {
      "default": "SHELF"
    },
    "ui.station.stove_auto": {
      "default": "AUTO x%.1f"
    },
    "ui.station.stove_cooking": {
      "default": "COOKING"
    },
    "ui.station.stove_hold": {
      "default": "HOLD ACTION"
    },
    "upgrade_nodes.auto_stove.detailed_text": {
      "default": "Le four continue de cuisiner seul a 40 pourcent de la vitesse manuelle. Tenir le bouton reste plus rapide."
    },
    "upgrade_nodes.auto_stove.display_name": {
      "default": "Four Autonome"
    },
    "upgrade_nodes.auto_stove.node_text": {
      "default": "AUTO FOUR"
    },
    "upgrade_nodes.big_egg_core.detailed_text": {
      "default": "The central idea. Purchase it for free to reveal every progression branch."
    },
    "upgrade_nodes.big_egg_core.display_name": {
      "default": "BIG EGG"
    },
    "upgrade_nodes.big_egg_core.node_text": {
      "default": "BEGIN"
    },
    "upgrade_nodes.boss_trophy.detailed_text": {
      "default": "A secret payout upgrade revealed by defeating a boss."
    },
    "upgrade_nodes.boss_trophy.display_name": {
      "default": "Boss Trophy"
    },
    "upgrade_nodes.boss_trophy.node_text": {
      "default": "?"
    },
    "upgrade_nodes.comfy_chairs.detailed_text": {
      "default": "Customers wait 30 seconds longer for each order."
    },
    "upgrade_nodes.comfy_chairs.display_name": {
      "default": "Comfy Chairs"
    },
    "upgrade_nodes.comfy_chairs.node_text": {
      "default": "+30s PAT"
    },
    "upgrade_nodes.deep_breath.detailed_text": {
      "default": "Carry 20 more seconds of stamina into each dungeon round."
    },
    "upgrade_nodes.deep_breath.display_name": {
      "default": "Deep Breath"
    },
    "upgrade_nodes.deep_breath.node_text": {
      "default": "+20 STA"
    },
    "upgrade_nodes.fancy_plating.detailed_text": {
      "default": "Presentation raises every meal payout by 40 percent through its coefficient."
    },
    "upgrade_nodes.fancy_plating.display_name": {
      "default": "Fancy Plating"
    },
    "upgrade_nodes.fancy_plating.node_text": {
      "default": "+40% PAY"
    },
    "upgrade_nodes.hot_pan.detailed_text": {
      "default": "A hotter pan reduces cooking duration by 30 percent."
    },
    "upgrade_nodes.hot_pan.display_name": {
      "default": "Hot Pan"
    },
    "upgrade_nodes.hot_pan.node_text": {
      "default": "-30% COOK"
    },
    "upgrade_nodes.quick_feet.detailed_text": {
      "default": "Move faster in the restaurant and dungeon."
    },
    "upgrade_nodes.quick_feet.display_name": {
      "default": "Quick Feet"
    },
    "upgrade_nodes.quick_feet.node_text": {
      "default": "+35 SPD"
    },
    "upgrade_nodes.second_plate.detailed_text": {
      "default": "Add a second reusable plate to the restaurant."
    },
    "upgrade_nodes.second_plate.display_name": {
      "default": "Second Plate"
    },
    "upgrade_nodes.second_plate.node_text": {
      "default": "PLATE II"
    },
    "upgrade_nodes.second_table.detailed_text": {
      "default": "Unlock a second two-seat table after proving the restaurant can serve customers."
    },
    "upgrade_nodes.second_table.display_name": {
      "default": "Second Table"
    },
    "upgrade_nodes.second_table.node_text": {
      "default": "+1 TABLE"
    },
    "upgrade_nodes.sharp_fork.detailed_text": {
      "default": "Sharpen the restaurant fork into a dungeon weapon. Adds 8 attack damage."
    },
    "upgrade_nodes.sharp_fork.display_name": {
      "default": "Sharp Fork"
    },
    "upgrade_nodes.sharp_fork.node_text": {
      "default": "+8 ATK"
    },
    "upgrade_nodes.sturdy_shell.detailed_text": {
      "default": "A defensive shell. Requires combat experience and adds 30 maximum health."
    },
    "upgrade_nodes.sturdy_shell.display_name": {
      "default": "Sturdy Shell"
    },
    "upgrade_nodes.sturdy_shell.node_text": {
      "default": "+30 HP"
    },
    "upgrade_nodes.third_plate.detailed_text": {
      "default": "Add a third reusable plate to the restaurant."
    },
    "upgrade_nodes.third_plate.display_name": {
      "default": "Third Plate"
    },
    "upgrade_nodes.third_plate.node_text": {
      "default": "PLATE III"
    },
    "upgrade_nodes.third_table.detailed_text": {
      "default": "Unlock the third two-seat table."
    },
    "upgrade_nodes.third_table.display_name": {
      "default": "Third Table"
    },
    "upgrade_nodes.third_table.node_text": {
      "default": "+1 TABLE"
    },
    "upgrade_nodes.wider_menu.detailed_text": {
      "default": "Une place de plus au menu: une recette supplémentaire peut être proposée aux clients."
    },
    "upgrade_nodes.wider_menu.display_name": {
      "default": "Menu Élargi"
    },
    "upgrade_nodes.wider_menu.node_text": {
      "default": "+1 MENU"
    },
    "ui.restaurant.customer_seated": {
      "default": "%s is ready to order"
    },
    "ui.board.title": {
      "default": "ORDERS  %d/%d"
    },
    "ui.board.empty": {
      "default": "Nothing on the board"
    },
    "ui.board.line": {
      "default": "T%d  %s"
    },
    "ui.prompt.console": {
      "default": "Manage the shop"
    },
    "ui.station.console": {
      "default": "DESK"
    },
    "ui.station.console_open": {
      "default": "OPEN"
    },
    "ui.station.console_closed": {
      "default": "CLOSED"
    },
    "ui.station.console_menu": {
      "default": "Menu %d/%d"
    },
    "ui.station.console_rate": {
      "default": "%.1f/min"
    },
    "ui.restaurant.closed_by_hand": {
      "default": "You closed the shop."
    },
    "ui.restaurant.opened_by_hand": {
      "default": "The shop is open again."
    }
  }
}
