import os
import yaml
import re
-import pprint
test_dir = "."
yaml_name = "../adventure.yaml"
obj["descriptions"][j] = True
objects[i] = (obj_name, obj)
-
def hint_coverage(hints, text):
for name, hint in hints:
if hint["question"] != True:
if hint["hint"] != True:
if search(hint["hint"], text):
hint["hint"] = True
- continue
+
+def special_coverage(specials, text):
+ for name, special in specials:
+ if special["message"] == None:
+ special["message"] = True
+ if special["message"] != True:
+ if search(special["message"], text):
+ special["message"] = True
def threshold_coverage(classes, text):
for i, msg in enumerate(classes):
hintsraw = db["hints"]
classes = db["classes"]
turn_thresholds = db["turn_thresholds"]
+ specials = db["specials"]
hints = []
for hint in hintsraw:
hint_coverage(hints, text)
threshold_coverage(classes, text)
threshold_coverage(turn_thresholds, text)
+ special_coverage(specials, text)
location_html = ""
location_total = len(locations) * 2
turn_html += arb_msg_row.format(msg["threshold"], success)
turn_percent = round((turn_covered / float(turn_total)) * 100, 1)
+ special_html = ""
+ special_total = len(specials)
+ special_covered = 0
+ for name, special in specials:
+ if special["message"] != True:
+ success = "uncovered"
+ else:
+ success = "covered"
+ special_covered += 1
+ special_html += arb_msg_row.format(name, success)
+ special_percent = round((special_covered / float(special_total)) * 100, 1)
+
# output some quick report stats
print("\nadventure.yaml coverage rate:")
print(" locations..........: {}% covered ({} of {})".format(location_percent, location_covered, location_total))
print(" hints..............: {}% covered ({} of {})".format(hints_percent, hints_covered, hints_total))
print(" classes............: {}% covered ({} of {})".format(class_percent, class_covered, class_total))
print(" turn_thresholds....: {}% covered ({} of {})".format(turn_percent, turn_covered, turn_total))
+ print(" specials...........: {}% covered ({} of {})".format(special_percent, special_covered, special_total))
# render HTML report
with open(html_output_path, "w") as f:
hints_total, hints_covered, hints_percent,
class_total, class_covered, class_percent,
turn_total, turn_covered, turn_percent,
- location_html, arb_msg_html, object_html, hints_html, class_html, turn_html
+ special_total, special_covered, special_percent,
+ location_html, arb_msg_html, object_html, hints_html,
+ class_html, turn_html, special_html
))
--- /dev/null
+
+Welcome to Adventure!! Would you like instructions?
+
+> n
+
+You are standing at the end of a road before a small brick building.
+Around you is a forest. A small stream flows out of the building and
+down a gully.
+
+> thank
+
+You're quite welcome.
+
+> shazam
+
+Good try, but that is an old worn-out magic word.
+
+> help
+
+I know of places, actions, and things. Most of my vocabulary
+describes places and is used to move you there. To move, try words
+like forest, building, downstream, enter, east, west, north, south,
+up, or down. I know about a few special objects, like a black rod
+hidden in the cave. These objects can be manipulated using some of
+the action words that I know. Usually you will need to give both the
+object and action words (in either order), but sometimes I can infer
+the object from the verb alone. Some objects also imply verbs; in
+particular, "inventory" implies "take inventory", which causes me to
+give you a list of what you're carrying. Some objects have unexpected
+effects; the effects are not always desirable! Usually people having
+trouble moving just need to try a few more words. Usually people
+trying unsuccessfully to manipulate an object are attempting something
+beyond their (or my!) capabilities and should try a completely
+different tack. One point often confusing to beginners is that, when
+there are several ways to go in a certain direction (e.g., if there
+are several holes in a wall), choosing that direction in effect
+chooses one of the ways at random; often, though, by specifying the
+place you want to reach you can guarantee choosing the right path.
+Also, to speed the game you can sometimes move long distances with a
+single word. For example, "building" usually gets you to the building
+from anywhere above ground except when lost in the forest. Also, note
+that cave passages and forest paths turn a lot, so leaving one place
+heading north doesn't guarantee entering the next from the south.
+However (another important point), except when you've used a "long
+distance" word such as "building", there is always a way to go back
+where you just came from unless I warn you to the contrary, even
+though the direction that takes you back might not be the reverse of
+what got you here. Good luck, and have fun!
+
+> no
+
+OK
+
+> tree
+
+The trees of the forest are large hardwood oak and maple, with an
+occasional grove of pine or spruce. There is quite a bit of under-
+growth, largely birch and ash saplings plus nondescript bushes of
+various sorts. This time of year visibility is quite restricted by
+all the leaves, but travel is quite easy if you detour around the
+spruce and berry bushes.
+
+> dig
+
+Digging without a shovel is quite impractical. Even with a shovel
+progress is unlikely.
+
+> lost
+
+I'm as confused as you are.
+
+> mist
+
+Mist is a white vapor, usually water, seen from time to time in
+caverns. It can be found anywhere but is frequently a sign of a deep
+pit leading down to water.'
+
+> fuck
+
+Watch it!
+
+> stop
+
+I don't know the word "stop". Use "quit" if you want to give up.
+
+> info
+
+For a summary of the most recent changes to the game, say "news".
+If you want to end your adventure early, say "quit". To suspend your
+adventure such that you can continue later, say "suspend" (or "pause"
+or "save"). To see how well you're doing, say "score". To get full
+credit for a treasure, you must have left it safely in the building,
+though you get partial credit just for locating it. You lose points
+for getting killed, or for quitting, though the former costs you more.
+There are also points based on how much (if any) of the cave you've
+managed to explore; in particular, there is a large bonus just for
+getting in (to distinguish the beginners from the rest of the pack),
+and there are other ways to determine whether you've been through some
+of the more harrowing sections. If you think you've found all the
+treasures, just keep exploring for a while. If nothing interesting
+happens, you haven't found them all yet. If something interesting
+*DOES* happen (incidentally, there *ARE* ways to hasten things along),
+it means you're getting a bonus and have an opportunity to garner many
+more points in the Master's section. I may occasionally offer hints
+if you seem to be having trouble. If I do, I'll warn you in advance
+how much it will affect your score to accept the hints. Finally, to
+save time, you may specify "brief", which tells me never to repeat the
+full description of a place unless you explicitly ask me to.
+
+> swim
+
+I don't know how.
+
+> wizard
+
+Wizards are not to be disturbed by such as you.
+
+> yes
+
+Guess again.
+
+> news
+
+Open Adventure is an author-approved open-source release of
+Version 2.5 with, as yet, no gameplay changes.
+Version 2.5 was essentially the same as Version II; the cave and the
+hazards therein are unchanged, and top score is still 430 points.
+There are a few more hints, especially for some of the more obscure
+puzzles. There are a few minor bugfixes and cosmetic changes. You
+can now save a game and resume it at once (formerly you had to wait a
+while first), but it now costs you a few points each time you save the
+game. Saved games are now stored in much smaller files than before.
+
+> version
+
+There is a puff of orange smoke; within it, fiery runes spell out:
+
+ Open Adventure 1.2 - http://www.catb.org/esr/open-adventure/
+
+
+You scored 32 out of a possible 430, using 16 turns.
+
+You are obviously a rank amateur. Better luck next time.
+
+To achieve the next higher rating, you need 14 more points.