Files
puzzle-design-kb/src/inspiration/quest-for-glory-ii-chart.mmd

265 lines
16 KiB
Plaintext

flowchart TD
%% =============================================================================
%% FONT SIZE & CONFIGURATION
%% =============================================================================
node[fontsize=18]
START["**START**"] --> A_ARRIVE_SHAPEIR
START --> A_CHECK_DAY_COUNTER
%% =============================================================================
%% SHAPEIR TOWN - Initial Setup (area_1 - light blue)
%% =============================================================================
subgraph area_1["**SHAPEIR TOWN**"]
A_ARRIVE_SHAPEIR["A: Arrive in Shapeir"] --> C1["C1: Day 1 Begins"]
C1 --> P_MEET_AZIZA["P: Meet Aziza the Enchantress"]
P_MEET_AZIZA --> A_VISIT_AZIZA["A: Visit Aziza in Castle Keep"]
A_VISIT_AZIZA --> O_LEARN_ELEMENTALS["O: Learn About Elemental Threats"]
C1 --> P_NEED_GOLD["P: Need Gold for Purchases"]
P_NEED_GOLD --> A_BEG_FOR_MONEY["A: Beg for Money in Square"]
A_BEG_FOR_MONEY --> O_RECEIVE_INN_COIN["O: Receive 50 Dinar for Inn"]
C1 --> P_GET_WATERSKIN["P: Need Waterskin for Puzzles"]
P_GET_WATERSKIN --> A_VISIT_AL_HAJJAJ["A: Visit Al Hajjaj the Thirsty"]
A_VISIT_AL_HAJJAJ --> O_LEARN_WATERSKIN_TIP["O: Learn About Waterskin Need"]
O_LEARN_ELEMENTALS --> UNLOCK_DESERT_QUESTS["**UNLOCK: Elemental Quests**"]
end
style area_1 fill:#E3F2FD,stroke:#1976D2,stroke-width:3px
%% =============================================================================
%% WIZARD ACADEMY - CLASS-SPECIFIC (area_wiz - light purple)
%% =============================================================================
subgraph area_wiz["**WIZARDS' INSTITUTE OF TECHNOLOGY**"]
UNLOCK_DESERT_QUESTS -.-> P_MAGIC_USER_QUALIFY["P: Magic User Must Qualify for Wizard Status"]
P_MAGIC_USER_QUALIFY --> A_BUY_MAGIC_SHOP_ITEMS["A: Buy Spells from Keapon's Magic Shop"]
A_BUY_MAGIC_SHOP_ITEMS --> O_HAVE_SPELLS["O: Have All Required Spells"]
O_HAVE_SPELLS & O_LEARN_WATERSKIN_TIP --> A_DETECT_HIDDEN_DOOR["A: Use Detect Magic to Find W.I.T. Entrance"]
A_DETECT_HIDDEN_DOOR --> C2["C2: Hidden Door Revealed"]
C2 --> A_ENTER_WITH_ERASMUS["A: Enter Institute with Erasmus as Sponsor"]
A_ENTER_WITH_ERASMUS --> P_PRE_TEST_BELLS["P: Pre-Test - Three Bells"]
P_PRE_TEST_BELLS --> A_DETECT_CORRECT_BELL["A: Cast Detect on Bell (identifies correct one)"]
A_DETECT_CORRECT_BELL --> A_FETCH_TO_STAND["A: Fetch Bell to Stand"]
A_FETCH_TO_STAND --> A_TRIGGER_RING["A: Trigger to Ring Bell"]
A_TRIGGER_RING --> P_AIR_TRIAL["P: Air Trial - Spinning Staff"]
P_AIR_TRIAL --> A_LEVITATE_OVER_STAFF["A: Fetch Staff Toward, Then Levitate Until Passes"]
A_LEVITATE_OVER_STAFF --> P_EARTH_TRIAL["P: Earth Trial - Stone Beast Wall"]
P_EARTH_TRIAL --> A_TRIGGER_WALL["A: Trigger to Awaken Earth Beast"]
A_TRIGGER_WALL --> A_CALM_TWICE["A: Calm Beast Twice (before & after crossing)"]
A_CALM_TWICE --> P_WATER_TRIAL["P: Water Trial - Ice Hoarfrost"]
P_WATER_TRIAL --> A_FLAME_DART_ICE["A: Flame Dart to Melt Ice"]
A_FLAME_DART_ICE --> A_FORCE_BOLT_CRACK["A: Force Bolt on Crack Repeatedly"]
A_FORCE_BOLT_CRACK --> A_OPEN_HALVES["A: Open Door Splits Hailfist"]
A_OPEN_HALVES --> P_FIRE_TRIAL["P: Fire Trial - Fiery Obstacle"]
P_FIRE_TRIAL --> A_OPEN_DOOR_FIRE["A: Open Fire Door"]
A_OPEN_DOOR_FIRE --> A_CALM_FLAMES_HOLE["A: Calm Flames Leaves Hole"]
A_CALM_FLAMES_HOLE --> A_FETCH_DOOR_CLOSE["A: Fetch Door Closed"]
A_FETCH_DOOR_CLOSE --> A_FORCE_BOLT_PUSH["A: Force Bolt Pushes Door Onto Hole"]
A_FORCE_BOLT_PUSH --> C3["C3: Pass Fire Trial - Graduate Wizard"]
C3 --> A_REFUSE_OATH["A: Refuse Oath to Join Institute"]
A_REFUSE_OATH --> O_RECEIVE_REVERSAL["O: Receive REVERSAL Spell for Graduation"]
end
style area_wiz fill:#F3E5F5,stroke:#7B1FA2,stroke-width:3px
%% =============================================================================
%% ELEMENTAL CAPTURES - TIME-BASED (area_elem - light orange)
%% =============================================================================
subgraph area_elem["**ELEMENTAL CAPTURES - HARD DEADLINES**"]
UNLOCK_DESERT_QUESTS --> P_BUY_INCENSE_LAMP["P: Buy Lure & Container"]
P_BUY_INCENSE_LAMP --> A_VISIT_HARIK["A: Visit Harik Attar Apothecary"]
A_VISIT_HARIK --> A_BARGAIN_INCENSE["A: Bargain for Incense (free with correct negotiation)"]
A_BARGAIN_INCENSE --> O_RECEIVE_INCENSE["O: Receive Incense"]
P_BUY_INCENSE_LAMP --> A_VISIT_TASHTARI["A: Visit Tashtari's Brass Stand Fountain Plaza"]
A_VISIT_TASHTARI --> A_BARGAIN_BRASS_LAMP["A: Bargain for Brass Lamp (10 dinars)"]
A_BARGAIN_BRASS_LAMP --> O_RECEIVE_BRASS_LAMP["O: Receive Brass Lamp"]
C1 --> C_DAY5["C_DAY5: Day 5 - Fire Elemental Appears"]
C_DAY5 --> P_FIRE_ELEMENTAL_CAPTURE["P: Capture Fire Elemental Before Day 7"]
P_FIRE_ELEMENTAL_CAPTURE --> A_USE_INCENSE_ALLEY["A: Use Incense Away From Plaza into Alley"]
A_USE_INCENSE_ALLEY --> A_LURE_FOLLOW["O: Elemental Follows You"]
A_LURE_FOLLOW --> A_PUT_DOWN_LAMP["A: Put Down/Drop Lamp on Ground"]
A_PUT_DOWN_LAMP --> A_POUR_WATER_REPEATEDLY["A: Use Water on Fire Elemental Multiple Times"]
A_POUR_WATER_REPEATEDLY --> C4["C4: Fire Elemental Captured in Magic Lamp"]
C4 --> O_CITY_SAVED_FIre["O: City Saved - Day 7 Disaster Avoided"]
end
style area_elem fill:#FFF3E0,stroke:#F57C00,stroke-width:3px
%% =============================================================================
%% JULANAR TREE WOMAN (area_jul - light green)
%% =============================================================================
subgraph area_jul["**JULANAR THE TREE WOMAN**"]
UNLOCK_DESERT_QUESTS -.-> P_SEE_STRANGE_TREE["P: Strange Tree in Desert Looks Like Woman"]
P_SEE_STRANGE_TREE --> A_ASK_AZIZA_TREE["A: Ask Aziza About the Tree"]
A_ASK_AZIZA_TREE --> O_LEARN_JULANAR_STORY["O: Learn Julanar Cursed Story - No Direct Solution"]
UNLOCK_DESERT_QUESTS -.-> P_CATCH_EARTH_ELEMENTAL["P: Capture Earth Elemental First"]
P_CATCH_EARTH_ELEMENTAL --> A_WEAKEN_WITH_FLAME_DART["A: Weaken with Flame Dart or Soulforge Sword"]
A_WEAKEN_WITH_FLAME_DART --> A_GATHER_DUST_BAG["A: Gather Dust into Cloth Bag"]
A_GATHER_DUST_BAG --> O_RECEIVE_EARTH_ELEMENTAL["O: Receive Earth Elemental in Bag"]
C1 --> C_DAY8["C_DAY8: Day 8+ - Air Trial Available"]
C_DAY8 -.-> P_AIR_ELEMENTAL_BEFORE_JULANAR["P: Optionally Catch Air Elemental First (not required)"]
O_HAVE_SPELLS & O_RECEIVE_EARTH_ELEMENTAL --> A_TRAVEL_TO_TREE["A: Travel East from Shapeir Overlook to Desert Tree"]
A_TRAVEL_TO_TREE --> P_GIFT_SEQUENCE["P: Give Three Gifts in Sequence"]
P_GIFT_SEQUENCE --> A_GIVE_WATER_KINDNESS["A: Gift 1 - Give Water (Gift of Kindness)"]
A_GIVE_WATER_KINDNESS --> A_TELL_ABOUT_YOURSELF["A: Tell About Yourself"]
A_TELL_ABOUT_YOURSELF --> O_KINDNESS_RECEIVED["O: Gift of Kindness Accepted"]
O_KINDNESS_RECEIVED & O_RECEIVE_EARTH_ELEMENTAL --> A_GIVE_EARTH_MAGIC["A: Gift 2 - Give Earth (Gift of Magic)"]
A_GIVE_EARTH_MAGIC --> A_TELL_ABOUT_EARTH["A: Tell About Earth"]
A_TELL_ABOUT_EARTH --> O_MAGIC_RECEIVED["O: Gift of Magic Accepted"]
O_MAGIC_RECEIVED --> A_HUG_TREE["A: Gift 3 - Hug Tree (Gift of Love)"]
A_HUG_TREE --> A_TYPE_JULANAR["A: Type JULANAR as Name (Recognition)"]
A_TYPE_JULANAR --> O_LOVE_RECEIVED["O: Gift of Love Accepted"]
O_LOVE_RECEIVED --> C5["C5: Tree Restored - Blooms with Flowers"]
C5 --> A_TAKE_FRUIT_COMPASSION["A: Take Fruit of Compassion from Branch"]
A_TAKE_FRUIT_COMPASSION --> O_RECEIVE_FRUIT_COMPASSION["O: Receive Fruit of Compassion"]
end
style area_jul fill:#E8F5E9,stroke:#388E3C,stroke-width:3px
%% =============================================================================
%% ADDITIONAL ELEMENTAL CAPTURES (area_elem2 - light orange)
%% =============================================================================
subgraph area_elem2["**MORE ELEMENTAL DEADLINES**"]
UNLOCK_DESERT_QUESTS --> C_DAY8_AIR["C_DAY8: Day 8-11 - Air Elemental"]
C_DAY8_AIR --> P_AIR_TRIAL_CAPTURE["P: Capture Air Elemental Before Day 11"]
P_AIR_TRIAL_CAPTURE --> A_LEVITATE_ABOVE_WHIRLWIND["A: Levitate Above Whirlwind Center"]
A_LEVITATE_ABOVE_WHIRLWIND --> A_DROP_EARTH_CENTER["A: Drop Earth in Center to Slow Spinning"]
A_DROP_EARTH_CENTER --> A_USE_BELLOWS_SUCK["A: Use Bellows to Blow Elemental Into Container"]
A_USE_BELLOWS_SUCK --> C6["C6: Air Elemental Captured in Bellows"]
UNLOCK_DESERT_QUESTS --> C_DAY12["C_DAY12: Day 12-14 - Earth Element"]
C_DAY12 --> P_EARTH_CAPTURE["P: Capture Earth Before Day 14"]
P_EARTH_CAPTURE -.-> A_WEAKEN_WITH_FLAME_DART
UNLOCK_DESERT_QUESTS --> C_DAY14_W["C_DAY14: Day 14-16 - Water Elemental"]
C_DAY14_W --> P_WATER_CAPTURE["P: Capture Water Before Day 16"]
P_WATER_CAPTURE --> A_DROP_WATERSKIN_FOUNTAIN["A: Drop Waterskin at Fountain Base"]
A_DROP_WATERSKIN_FOUNTAIN --> A_BLOWER_ELEMENTAL_IN["A: Use Bellows to Blow Elemental Into Tank"]
A_BLOWER_ELEMENTAL_IN --> C7["C7: Water Elemental Captured"]
end
style area_elem2 fill:#FFF8E1,stroke:#F57F17,stroke-width:3px
%% =============================================================================
%% MID-GAME PUZZLES (area_mid - light yellow)
%% =============================================================================
subgraph area_mid["**MID-GAME QUESTS**"]
UNLOCK_DESERT_QUESTS -.-> P_DERVISH_FIVE_WS["P: Dervish's Five Ws Riddle"]
P_DERVISH_FIVE_WS --> A_COLLECT_FIVE_OBJECTS["A: Collect Whatever/Whenever/Wherewith/Wherever/Whereby Objects"]
A_COLLECT_FIVE_OBJECTS --> O_RIDDLE_SOLVED["O: Present to Dervish for Reward"]
UNLOCK_DESERT_QUESTS -.-> P_SULEIMAN_TOMB["P: Suleiman the Djinn's Ring"]
P_SULEIMAN_TOMB --> A_ENTER_TOMB_DOOR["A: Enter Tomb - See Name at Door"]
A_ENTER_TOMB_DOOR --> A_TYPE_SULEIMAN["A: Type SULEIMAN at Door (Observation Replay)"]
A_TYPE_SULEIMAN --> O_DOOR_OPENS["O: Door Opens"]
O_DOOR_OPENS --> A_SEARCH_FOR_RING["A: Search Tomb Contents for Ring"]
A_SEARCH_FOR_RING --> O_RECEIVE_MAGIC_RING["O: Receive Magic Ring - Grant 3 Wishes Later"]
end
style area_mid fill:#FFF9C4,stroke:#FBC02D,stroke-width:3px
%% =============================================================================
%% FINAL PUZZLES (area_final - light amber)
%% =============================================================================
subgraph area_final["**FINAL PHASE - DAY 23+**"]
C1 --> C_DAY23["C_DAY23: Day 23+ - Final Quests Available"]
C_DAY23 --> P_CAGED_BEAST_POTION["P: Cure Caged Beast Al Scurva"]
P_CAGED_BEAST_POTION --> A_GET_GRIFIN_FEATHER["A: Get Griffin Feather (from Desert Hunt)"]
A_GET_GRIFIN_FEATHER --> A_GET_BEAST_HAIR["A: Cut Hair from Caged Beast"]
A_GET_BEAST_HAIR & O_RECEIVE_FRUIT_COMPASSION --> A_VISIT_APOTHECARY["A: Visit Harik Apothecary with All 3 Ingredients"]
A_VISIT_APOTHECARY --> A_COMBINE_POTION["A: Combine Griffin Feather + Fruit of Compassion + Beast Hair"]
A_COMBINE_POTION --> O_RECEIVE_DISPILL_POTION["O: Receive Dispel Potion"]
O_RECEIVE_DISPILL_POTION --> A_GIVE_TO_AL_SCURVA["A: Give to Al Scurva the Caged Beast"]
A_GIVE_TO_AL_SCURVA --> C8["C8: Beast Cured - Freed of Curse"]
UNLOCK_DESERT_QUESTS -.-> P_SHARAP_PIN["P: Sharaf Katta Needs Pin for Secret Passage"]
P_SHARAP_PIN --> A_FIND_SAPPHIRE_PIN["A: Find Sapphire Pin in Shapeir"]
A_FIND_SAPPHIRE_PIN --> A_SHOW_TO_SHARAF_DAY29["A: Show to Sharaf the Katta on Day 29+ Dungeon Escape"]
A_SHOW_TO_SHARAF_DAY29 --> O_SECRET_PASSAGE_ACTIVE["O: Secret Passage Activates"]
O_SECRET_PASSAGE_ACTIVE --> C9["C9: Dungeon Escape Route Open"]
end
style area_final fill:#FFECB3,stroke:#F57F17,stroke-width:3px
%% =============================================================================
%% CLASS-SPECIFIC ALTERNATIVES (area_class - light purple)
%% =============================================================================
subgraph area_class["**CLASS-SPECIFIC ROUTES**"]
START -.-> A_THIEF_PICKPOCKET_ROUTE["A: Thief Path - Pickpocket for Gold/Items"]
START -.-> A_FIGHTER_COMBAT_ROUTE["A: Fighter Route - Combat Solutions"]
A_THIEF_PICKPOCKET_ROUTE --> O_THF_GOLD["O: Alternative Gold Acquisition"]
A_FIGHTER_COMBAT_ROUTE --> O_FT_WEAKENS_ENEMIES["O: Combat Can Weaken Some Bosses"]
O_THF_GOLD -.-> P_NEED_GOLD
O_FT_WEAKENS_ENEMIES -.-> A_WEAKEN_WITH_FLAME_DART
end
style area_class fill:#E1BEE7,stroke:#8E24AA,stroke-width:3px
%% =============================================================================
%% END GAME (area_end - light red)
%% =============================================================================
subgraph area_end["**CATA COMPLETION**"]
C8 & O_SECRET_PASSAGE_ACTIVE --> P_FIGHT_ZARKOFF["P: Final Boss - Zarkoff the Dark Sorcerer"]
P_FIGHT_ZARKOFF --> A_USE_MAGIC_RING_WISHES["A: Use Magic Ring 3 Wishes Strategically"]
A_USE_MAGIC_RING_WISHES -.-> O_WIN_COMBAT["O: Win Battle Against Zarkoff"]
C4 & C6 & C7 -.-> P_FIGHT_ZARKOFF
O_WIN_COMBAT --> END["**END - KARR-MAR DEFEATED**"]
end
style area_end fill:#FFCDD2,stroke:#B71C1C,stroke-width:3px
%% =============================================================================
%% CLASS DEFINITIONS
%% =============================================================================
classDef start_end fill:#FFD700,stroke:#996600,stroke-width:3px,color:#000000,font-weight:bold
classDef problem fill:#FFB3B3,stroke:#8B0000,stroke-width:2px,color:#8B0000
classDef action fill:#B3FFB3,stroke:#006400,stroke-width:2px,color:#006400
classDef outcome fill:#B3D9FF,stroke:#004080,stroke-width:2px,color:#004080
classDef unlock fill:#FFE4B5,stroke:#8B4513,stroke-width:3px,color:#8B4513,font-weight:bold
classDef consequence fill:#E8E8E8,stroke:#333333,stroke-width:2px,color:#333333
classDef area_1 fill:#E3F2FD,stroke:#1976D2,stroke-width:3px
classDef area_wiz fill:#F3E5F5,stroke:#7B1FA2,stroke-width:3px
classDef area_elem fill:#FFF3E0,stroke:#F57C00,stroke-width:3px
classDef area_jul fill:#E8F5E9,stroke:#388E3C,stroke-width:3px
classDef area_elem2 fill:#FFF8E1,stroke:#F57F17,stroke-width:3px
classDef area_mid fill:#FFF9C4,stroke:#FBC02D,stroke-width:3px
classDef area_final fill:#FFECB3,stroke:#F57F17,stroke-width:3px
classDef area_class fill:#E1BEE7,stroke:#8E24AA,stroke-width:3px
classDef area_end fill:#FFCDD2,stroke:#B71C1C,stroke-width:3px
class START,END,C1,C2,C3,C4,C5,C6,C7,C8,C9,C_DAY5,C_DAY8,C_DAY12,C_DAY14_W,C_DAY23 start_end
class UNLOCK_DESERT_QUESTS unlock
class O_LEARN_ELEMENTALS,O_HAVE_SPELLS,RECEIVE_EARTH_ELEMENTAL consequence