Qsp - 1.9

#forest *PL "Dark trees surround you." ACTIONS: "Search" : gosub 'forest_search' "Return home" : goto 'main_room' END ACTIONS

#cave *PL "You see a troll." if %troll_hp>0: *PL "Troll is angry." "Attack" : gosub 'attack_troll' Good (use subroutines for repeated logic): qsp 1.9

#proc_rest %player_hp = %player_max_hp *PL "You recover fully." return #forest *PL "Dark trees surround you

#proc_combat %damage = %player_str - %enemy_armor if %damage < 0: %damage = 0 %enemy_hp -= %damage *PL "You deal <<%damage>> damage." return gosub 'proc_combat' Note: gosub executes the location code and returns to the line after the call. goto replaces the current location permanently. Part 5: Advanced QSP Features (1.9) 5.1 Objects Objects are like named structs/dictionaries: #cave *PL "You see a troll

#proc_forest_search %found = rand(1,100) if %found <= 30: %player_gold += 5 *PL "You find 5 gold!" elseif %found <= 60: %damage = rand(1,6) %player_hp -= %damage *PL "A wolf bites you for <<%damage>> damage!" else: *PL "You find nothing." endif

Happy questing!

#cave *PL "You see a troll." gosub 'display_troll_status' "Attack" : gosub 'attack_troll' QSP automatically saves all variables & current location. Use savegame / loadgame :