opencompletion.com/research/activity17-choose-adventure.yaml
Russell Ballestrini 51b74be7d9 Fix YAML validator and activity file validation errors
- Updated validator terminal step detection to only flag truly terminal steps
- Fixed validator to accept integers and booleans in buckets (as supported by app.py)
- Fixed metadata_remove format in activity17 from dictionary to list of strings
- Added proper terminal section to activity3.yaml without questions/buckets
- Fixed missing restart transition and bucket in activity28
- Removed unused game_end transitions from battleship files
- Updated exit transitions to go directly to step_4 (goodbye step)
- Applied black formatting to validator code

All 30 activity YAML files now validate successfully with 0 errors and 0 warnings.
2025-08-10 19:38:50 -04:00

332 lines
13 KiB
YAML

default_max_attempts_per_step: 30
tokens_for_ai_rubric: |
You are a master storyteller. Your task is to create a coherent and engaging story based on the following chat history. The story should seamlessly integrate the user's responses and the AI's feedback, ensuring that the narrative flows naturally. Pay special attention to the user's choices and how they shape the story. Use descriptive language to bring the scenes to life and make the story immersive. The story should have a clear beginning, middle, and end, reflecting the user's journey and the outcomes of their decisions. Here is the chat history.
sections:
- section_id: "section_1"
title: "The Prize Room"
steps:
- step_id: "step_1"
title: "Receive Your Prize"
content_blocks:
- "You have entered the prize room! 🎁"
- "A prize is randomly selected for you from the room."
- "You can also go to the temple pit from here."
tokens_for_ai: "DO NOT select go_back unless the users says 'go back' in their message."
question: "You have received a prize! Guess what it could be? 🤔"
buckets:
- random_prize_guess
- go_to_temple_pit
- go_back
transitions:
random_prize_guess:
ai_feedback:
tokens_for_ai: "cheer for the player, they got a new item. list them all from metadata. now make a joke about their guess!"
content_blocks:
- "You received a random prize! 🎲"
next_section_and_step: "section_1:step_1"
metadata_random:
golden_keychain: true
mysterious_amulet: true
rare_gemstone: true
ancient_scroll: true
magical_wand: true
treasure_map: true
silver_coin: true
mystical_ring: true
rare_book: true
magical_potion: true
shadow_charm: true
flame_charm: true
go_to_temple_pit:
content_blocks:
- "You chose to go to the temple pit room. 🏛"
next_section_and_step: "section_2:step_1"
go_back:
content_blocks:
- "You chose to go back to the temple pit room. 🏛"
next_section_and_step: "section_2:step_1"
- section_id: "section_2"
title: "The Temple Pit"
steps:
- step_id: "step_1"
title: "Offer to the God"
content_blocks:
- "You have entered the temple pit. 🏛"
- "You can offer an item to the god to receive a new item."
tokens_for_ai: "Guide the user to make a choice between offering different items."
question: "Which item do you offer to the god? 🤔"
buckets:
- offer_golden_keychain
- offer_mysterious_amulet
- offer_rare_gemstone
- offer_ancient_scroll
- offer_magical_wand
- offer_treasure_map
- offer_silver_coin
- offer_mystical_ring
- offer_rare_book
- offer_magical_potion
- offer_shadow_charm
- offer_flame_charm
- go_back
- off_topic
transitions:
offer_golden_keychain:
metadata_conditions:
golden_keychain: true
content_blocks:
- "You offered the golden keychain to the god. 🗝"
- "The god grants you a mystical amulet. 🧿"
next_section_and_step: "section_2:step_1"
metadata_add:
mystical_amulet: true
metadata_remove:
- golden_keychain
offer_mysterious_amulet:
metadata_conditions:
mysterious_amulet: true
content_blocks:
- "You offered the mysterious amulet to the god. 🧿"
- "The god grants you a rare gemstone. 💎"
next_section_and_step: "section_2:step_1"
metadata_add:
rare_gemstone: true
metadata_remove:
- mysterious_amulet
offer_rare_gemstone:
metadata_conditions:
rare_gemstone: true
content_blocks:
- "You offered the rare gemstone to the god. 💎"
- "The god grants you an ancient scroll. 📜"
next_section_and_step: "section_2:step_1"
metadata_add:
ancient_scroll: true
metadata_remove:
- rare_gemstone
offer_ancient_scroll:
metadata_conditions:
ancient_scroll: true
content_blocks:
- "You offered the ancient scroll to the god. 📜"
- "The god grants you a magical wand. 🪄"
next_section_and_step: "section_2:step_1"
metadata_add:
magical_wand: true
metadata_remove:
- ancient_scroll
offer_magical_wand:
metadata_conditions:
magical_wand: true
content_blocks:
- "You offered the magical wand to the god. 🪄"
- "The god grants you a treasure map. 🗺"
next_section_and_step: "section_2:step_1"
metadata_add:
treasure_map: true
metadata_remove:
- magical_wand
offer_treasure_map:
metadata_conditions:
treasure_map: true
content_blocks:
- "You offered the treasure map to the god. 🗺"
- "The god grants you a silver coin. 🪙"
next_section_and_step: "section_2:step_1"
metadata_add:
silver_coin: true
metadata_remove:
- treasure_map
offer_silver_coin:
metadata_conditions:
silver_coin: true
content_blocks:
- "You offered the silver coin to the god. 🪙"
- "The god grants you a mystical ring. 💍"
next_section_and_step: "section_2:step_1"
metadata_add:
mystical_ring: true
metadata_remove:
- silver_coin
offer_mystical_ring:
metadata_conditions:
mystical_ring: true
content_blocks:
- "You offered the mystical ring to the god. 💍"
- "The god grants you a rare book. 📚"
next_section_and_step: "section_2:step_1"
metadata_add:
rare_book: true
metadata_remove:
- mystical_ring
offer_rare_book:
metadata_conditions:
rare_book: true
content_blocks:
- "You offered the rare book to the god. 📚"
- "The god grants you a magical potion. 🧪"
next_section_and_step: "section_2:step_1"
metadata_add:
magical_potion: true
metadata_remove:
- rare_book
offer_magical_potion:
metadata_conditions:
magical_potion: true
content_blocks:
- "You offered the magical potion to the god. 🧪"
- "The god grants you a golden keychain. 🗝"
next_section_and_step: "section_2:step_1"
metadata_add:
golden_keychain: true
metadata_remove:
- magical_potion
offer_shadow_charm:
metadata_conditions:
shadow_charm: true
metadata_remove:
- shadow_charm
content_blocks:
- "You offered the Shadow Charm to the god. 🖤"
- "The god summons the Shadow Beast! Prepare for battle!"
next_section_and_step: "section_3:step_1"
offer_flame_charm:
metadata_conditions:
flame_charm: true
metadata_remove:
- flame_charm
content_blocks:
- "You offered the Flame Charm to the god. 🔥"
- "The god summons the Fire Drake! Prepare for battle!"
next_section_and_step: "section_4:step_1"
go_back:
content_blocks:
- "You chose to go back to the prize room. 🎁"
next_section_and_step: "section_1:step_1"
off_topic:
ai_feedback:
tokens_for_ai: "Gently guide the user back to the story in a supportive manner. DO NOT ask any questions. Use emojis like 🔄 and 🧭."
next_section_and_step: "section_2:step_1"
- section_id: "section_3"
title: "The Dark Cavern"
steps:
- step_id: "step_1"
title: "Battle the Shadow Beast"
content_blocks:
- "You have entered the Dark Cavern. The air is thick with darkness, and a menacing growl echoes around you."
- "A Shadow Beast emerges from the shadows, ready to attack!"
tokens_for_ai: "Guide the user to choose their action based on their items."
question: "Do you fight the Shadow Beast? (You need the Magical Wand or Mystical Ring to win!)"
buckets:
- fight_with_wand
- fight_with_ring
- flee
transitions:
fight_with_wand:
metadata_conditions:
magical_wand: true
content_blocks:
- "You wield the Magical Wand and unleash a powerful spell!"
- "The Shadow Beast is defeated! You find a Shadow Crystal. 💎"
next_section_and_step: "section_5:step_1"
metadata_add:
shadow_crystal: true
fight_with_ring:
metadata_conditions:
mystical_ring: true
content_blocks:
- "You use the Mystical Ring to channel your inner light!"
- "The Shadow Beast is defeated! You find a Shadow Crystal. 💎"
next_section_and_step: "section_5:step_1"
metadata_add:
shadow_crystal: true
flee:
content_blocks:
- "You attempt to flee, but the Shadow Beast catches you. You have met your end. 💀"
next_section_and_step: "death_ending:step_1"
- section_id: "section_4"
title: "The Fiery Lair"
steps:
- step_id: "step_1"
title: "Battle the Fire Drake"
content_blocks:
- "You have entered the Fiery Lair. The heat is intense, and flames flicker around you."
- "A Fire Drake roars, ready to defend its territory!"
tokens_for_ai: "Guide the user to choose their action based on their items."
question: "Do you fight the Fire Drake? (You need the Treasure Map or Ancient Scroll to win!)"
buckets:
- fight_with_map
- fight_with_scroll
- flee
transitions:
fight_with_map:
metadata_conditions:
treasure_map: true
content_blocks:
- "You use the Treasure Map to find the Drake's weak spot!"
- "The Fire Drake is defeated! You find a Flame Pendant. 🔥"
next_section_and_step: "section_5:step_1"
metadata_add:
flame_pendant: true
fight_with_scroll:
metadata_conditions:
ancient_scroll: true
content_blocks:
- "You read the Ancient Scroll and summon a powerful fire shield!"
- "The Fire Drake is defeated! You find a Flame Pendant. 🔥"
next_section_and_step: "section_5:step_1"
metadata_add:
flame_pendant: true
flee:
content_blocks:
- "You attempt to flee, but the Fire Drake incinerates you. You have met your end. 💀"
next_section_and_step: "death_ending_fire:step_1"
- section_id: "section_5"
title: "The Final Path"
steps:
- step_id: "step_1"
title: "The Final Path"
content_blocks:
- "You have defeated the monster and continue on your journey."
- "You see a path leading to the final destination."
tokens_for_ai: "Guide the user to the final victory."
question: "Do you continue on the path to victory? 🤔"
buckets:
- continue_to_victory
transitions:
continue_to_victory:
content_blocks:
- "You walk down the path and reach the final destination. You are victorious! 🏆"
next_section_and_step: "victory:step_1"
- section_id: "death_ending"
title: "The Abyss of Shadows"
steps:
- step_id: "step_1"
title: "Death Ending"
content_blocks:
- "Game Over."
- section_id: "death_ending_fire"
title: "The Ashen Wastes"
steps:
- step_id: "step_1"
title: "Death Ending"
content_blocks:
- "Game Over."
- section_id: "victory"
title: "Victory"
steps:
- step_id: "step_1"
title: "Victory"
content_blocks:
- "Thank you for playing!"