{
    "schema_version": 8,
    "metadata": {
        "project": "BIG EGG",
        "modified_at": "2026-08-16T12:10:03-04:00",
        "published_at": "2026-08-16T12:10:03-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"
        },
        "slime_jelly": {
            "display_name": "Slime Jelly",
            "description": "Oddly appetizing green jelly.",
            "color": "#70e000",
            "shape": "circle"
        },
        "mushroom": {
            "display_name": "Mushroom",
            "description": "A plump cave mushroom.",
            "color": "#c77dff",
            "shape": "triangle"
        },
        "beast_meat": {
            "display_name": "Beast Meat",
            "description": "A hearty cut from a dungeon brute.",
            "color": "#d96c75",
            "shape": "diamond"
        },
        "ember_pepper": {
            "display_name": "Ember Pepper",
            "description": "A pepper that stays pleasantly warm.",
            "color": "#ff4d00",
            "shape": "hexagon"
        }
    },
    "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_count": 3,
            "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
            }
        },
        "chicken_beast": {
            "display_name": "Chicken Beast",
            "spawn_count": 7,
            "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
            }
        },
        "fungling": {
            "display_name": "Fungling",
            "spawn_count": 2,
            "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
            }
        },
        "boar_brute": {
            "display_name": "Boar Brute",
            "spawn_count": 2,
            "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
            }
        },
        "pepper_imp": {
            "display_name": "Pepper Imp",
            "spawn_count": 2,
            "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
            }
        }
    },
    "recipes": {
        "fried_egg": {
            "display_name": "Fried Egg",
            "ingredients": {
                "egg": 1
            },
            "cook_time": 2,
            "sale_price": 5
        },
        "slime_omelette": {
            "display_name": "Slime Omelette",
            "ingredients": {
                "egg": 1,
                "slime_jelly": 1
            },
            "cook_time": 3,
            "sale_price": 12
        },
        "mushroom_omelette": {
            "display_name": "Mushroom Omelette",
            "ingredients": {
                "egg": 1,
                "mushroom": 1
            },
            "cook_time": 3.5,
            "sale_price": 15
        },
        "beast_hash": {
            "display_name": "Beast Egg Hash",
            "ingredients": {
                "egg": 1,
                "beast_meat": 1
            },
            "cook_time": 4,
            "sale_price": 20
        },
        "pepper_scramble": {
            "display_name": "Pepper Jelly Scramble",
            "ingredients": {
                "egg": 1,
                "slime_jelly": 1,
                "ember_pepper": 1
            },
            "cook_time": 4.5,
            "sale_price": 26
        }
    },
    "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,
            "favorite_meal": "fried_egg"
        },
        "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,
            "favorite_meal": "mushroom_omelette"
        },
        "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,
            "favorite_meal": "pepper_scramble"
        }
    },
    "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": 320,
            "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."
        }
    },
    "game_facts": {
        "enemies_defeated": {
            "display_name": "Enemies Defeated",
            "type": "int",
            "default_value": 0,
            "category": "combat",
            "description": "Total defeated enemies.",
            "persistent": true
        },
        "slime_kills": {
            "display_name": "Slimes Defeated",
            "type": "int",
            "default_value": 0,
            "category": "combat",
            "description": "Total defeated slimes.",
            "persistent": true
        },
        "dishes_served": {
            "display_name": "Dishes Served",
            "type": "int",
            "default_value": 0,
            "category": "restaurant",
            "description": "Total meals delivered.",
            "persistent": true
        },
        "dungeon_runs": {
            "display_name": "Dungeon Runs",
            "type": "int",
            "default_value": 0,
            "category": "dungeon",
            "description": "Total dungeon entries.",
            "persistent": true
        },
        "boss_defeated": {
            "display_name": "Boss Defeated",
            "type": "bool",
            "default_value": false,
            "category": "boss",
            "description": "Set when the first boss is defeated.",
            "persistent": true
        }
    },
    "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",
            "modifiers": [
                {
                    "variable": "max_health",
                    "operation": "add",
                    "value": 0.5,
                    "layer": "scaling"
                }
            ],
            "visibility_conditions": [],
            "reveal_conditions": [],
            "unlock_conditions": [],
            "appearance": {
                "shape": "circle",
                "background_color": "#164e63",
                "border_color": "#67e8f9",
                "text_color": "#ecfeff",
                "image_path": ""
            },
            "state_styles": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "attack_damage",
                    "operation": "add",
                    "value": 8,
                    "layer": "flat"
                }
            ],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "max_health",
                    "operation": "add",
                    "value": 30,
                    "layer": "flat"
                }
            ],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "move_speed",
                    "operation": "add",
                    "value": 35,
                    "layer": "flat"
                }
            ],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "stamina",
                    "operation": "add",
                    "value": 20,
                    "layer": "flat"
                }
            ],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "cook_speed",
                    "operation": "add",
                    "value": -0.3,
                    "layer": "scaling"
                }
            ],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "payout",
                    "operation": "add",
                    "value": 0.4,
                    "layer": "scaling"
                }
            ],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "patience",
                    "operation": "add",
                    "value": 30,
                    "layer": "flat"
                }
            ],
            "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": {}
        },
        "second_table": {
            "display_name": "Second Table",
            "node_text": "TABLE II",
            "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",
            "modifiers": [],
            "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": {}
        },
        "third_table": {
            "display_name": "Third Table",
            "node_text": "TABLE III",
            "detailed_text": "Unlock the third two-seat table.",
            "category": "service",
            "parent": "second_table",
            "direction": "S",
            "distance": 170,
            "cost": 60,
            "cost_resource": "coins",
            "modifiers": [],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "plates",
                    "operation": "add",
                    "value": 1,
                    "layer": "flat"
                }
            ],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "plates",
                    "operation": "add",
                    "value": 1,
                    "layer": "flat"
                }
            ],
            "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": {}
        },
        "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",
            "modifiers": [
                {
                    "variable": "payout",
                    "operation": "add",
                    "value": 0.2,
                    "layer": "flat"
                }
            ],
            "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": {}
        }
    }
}
