git-svn-id: https://projectaon.org/data/trunk@231 f6f3e2d7-ff33-0410-aaf5-b4bee2cdac11
authorJonathan Blake <jonathan.blake@projectaon.org>
Fri, 29 Jun 2007 02:43:28 +0000 (02:43 +0000)
committerJonathan Blake <jonathan.blake@projectaon.org>
Fri, 29 Jun 2007 02:43:28 +0000 (02:43 +0000)
95 files changed:
scripts/README-jon.txt [deleted file]
scripts/addcorr.pl [deleted file]
scripts/aon.el [deleted file]
scripts/checkerrata.pl [deleted file]
scripts/checkill.pl [deleted file]
scripts/corrtohtml.pl [deleted file]
scripts/create-css-xhtml-single.pl [deleted file]
scripts/create-css.pl [deleted file]
scripts/create-pdacss.pl [deleted file]
scripts/frontfilter.pl [deleted file]
scripts/gb-convert-entities.pl [deleted file]
scripts/gbfixencoding.pl [deleted file]
scripts/gbfixquotes.pl [deleted file]
scripts/gblint.pl [deleted file]
scripts/gbtodot.pl [deleted file]
scripts/gbtolatex.pl [deleted file]
scripts/gbtopdaxhtml.pl [deleted file]
scripts/gbtopml.pl [deleted file]
scripts/gbtoxhtml-all.pl [deleted file]
scripts/gbtoxhtml-single.pl [deleted file]
scripts/gbtoxhtml.pl [deleted file]
scripts/make-editor.pl [deleted file]
scripts/mergecorrhtml.pl [deleted file]
scripts/sortcorrhtml.pl [deleted file]
scripts/xmlize.pl [deleted file]
xml-es/01hdlo.xml [deleted file]
xml-es/bwbiolw.inc [deleted file]
xml-es/endowmnt.inc [deleted file]
xml-es/gamebook.dtd [deleted file]
xml-es/gcbiolw.inc [deleted file]
xml-es/geninc.mod [deleted file]
xml-es/genlink.mod [deleted file]
xml-es/htmlchar.mod [deleted file]
xml-es/htmllink.mod [deleted file]
xml-es/ipbiogs.inc [deleted file]
xml-es/jdbiogs.inc [deleted file]
xml-es/jdbiolw.inc [deleted file]
xml-es/license.inc [deleted file]
xml-es/ltexchar.mod [deleted file]
xml-es/pbbiogs.inc [deleted file]
xml-es/pmlchar.mod [deleted file]
xml/01fftd.xml [deleted file]
xml/01gstw.xml [deleted file]
xml/01hh.xml [deleted file]
xml/02fotw.xml [deleted file]
xml/02smr.xml [deleted file]
xml/02tfc.xml [deleted file]
xml/03btng.xml [deleted file]
xml/03tcok.xml [deleted file]
xml/03toz.xml [deleted file]
xml/04cc.xml [deleted file]
xml/04tcod.xml [deleted file]
xml/04wotw.xml [deleted file]
xml/05sots.xml [deleted file]
xml/06tkot.xml [deleted file]
xml/07cd.xml [deleted file]
xml/08tjoh.xml [deleted file]
xml/09tcof.xml [deleted file]
xml/10tdot.xml [deleted file]
xml/11tpot.xml [deleted file]
xml/12tmod.xml [deleted file]
xml/13tplor.xml [deleted file]
xml/14tcok.xml [deleted file]
xml/15tdc.xml [deleted file]
xml/16tlov.xml [deleted file]
xml/17tdoi.xml [deleted file]
xml/18dotd.xml [deleted file]
xml/19wb.xml [deleted file]
xml/bwbiolw.inc [deleted file]
xml/dotd.xml [deleted file]
xml/endowmnt.inc [deleted file]
xml/gamebook.dtd [deleted file]
xml/gcbiolw.inc [deleted file]
xml/geninc.mod [deleted file]
xml/genlink.mod [deleted file]
xml/htmlchar.mod [deleted file]
xml/htmllink.mod [deleted file]
xml/ipbiogs.inc [deleted file]
xml/jcalvarez.xml [deleted file]
xml/jdbiofw.inc [deleted file]
xml/jdbiogs.inc [deleted file]
xml/jdbiolw.inc [deleted file]
xml/latex.xsl [deleted file]
xml/license.inc [deleted file]
xml/ltexchar.mod [deleted file]
xml/mgbiofw.inc [deleted file]
xml/mhahn.xml [deleted file]
xml/pbbiogs.inc [deleted file]
xml/pml.xsl [deleted file]
xml/pmlchar.mod [deleted file]
xml/rh.xml [deleted file]
xml/tmc.xml [deleted file]
xml/xhtml-mongoose.xsl [deleted file]
xml/xhtml-pda.xsl [deleted file]
xml/xhtml.xsl [deleted file]

diff --git a/scripts/README-jon.txt b/scripts/README-jon.txt
deleted file mode 100755 (executable)
index f68ee19..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-This file describes how to use the scripts included in this archive.
-Yes, it desperately needs updating and expansion.
-
-corrtohtml.pl: translates the standard Project Aon correction report
-format into HTML corresponding to the changes log used with the 
-Editor's Companion.
-
-  corrtohtml.pl [correctionFile1 [correctionFile2 . . .]]
-
-create-css.pl: used by gbtoxhtml.pl to create a CSS file for use by
-the XHTML files.
-
-  [not used from the command line]
-
-create-css-xhtml-single.pl: used by gbtoxhtml-single.pl to create a
-CSS file for use by the single file version of the XHTML.
-
-  [not used from the command line]
-
-create-pdacss.pl: used by gbtopdaxhtml.pl to create a CSS file for
-use by the PDA version of the XHTML.
-
-  [not used from the command line]
-
-frontfilter.pl: filters frontmatter files for links and common
-characters.
-
-  frontfilter.pl frontmatterFile1 [frontmatterFile2 . . .]
-
-gbfixencoding.pl: interactively fix encoding errors in gamebook XML
-  (requires ANSI escape sequences - tested on CYGWIN)
-
-  gbfixencoding.pl inputXML outputXML
-
-gbfixquotes.pl: interactively encode quotation marks
-  (requires ANSI escape sequences - tested on CYGWIN)
-
-  gbfixquotes.pl inputXML outputXML
-
-gblint.pl: find common errors in gamebook XML - does not validate XML
-
-  gblint.pl inputXML > errorList
-    -s LINES         skip first LINES
-    -e MAX_ERRORS 
-
-gbtodot.pl: converts an XML file to DOT graph representation of the 
-choices.
-
-  gbtodot.pl inputXML outputDOT baseURL
-
-gbtolatex.pl: creates a LaTeX file for conversion to PDF using
-pdflatex.
-
-  gbtolatex.pl bookCode
-
-gbtopdaxhtml.pl: creates simplified XHTML for use by PDA utilities.
-
-  gbtopdaxhtml.pl bookCode
-
-gbtopml.pl: creates PML version of the XML.
-
-  gbtopml.pl bookCode
-
-gbtoxhtml.pl: processes an XML file into XHTML.
-
-  gbtoxhtml.pl bookCode
-
-gbtoxhtml-all.pl: creates all of the books in XHTML. Uses
-gbtoxhtml.pl.
-
-  gbtoxhtml-all.pl
-
-gbtoxhtml-single.pl: creates a single XHTML file.
-
-  gbtoxhtml-single.pl bookCode
-
-mergecorrhtml.pl: merges correction log HTML into a preexisting file.
-
-  mergecorrhtml.pl [options] inputHTML [correctionFiles]
-    -b    bookCode
-    -u    include corrections with unspecified title
-
-sortcorrhtml.pl: sorts correction log HTML into book order.
-
-  sortcorrhtml.pl [correctionFiles]
-
-xmlize.pl: converts the proofread text format into a gamebook XML file.
-
-  xmlize.pl numberOfSections
diff --git a/scripts/addcorr.pl b/scripts/addcorr.pl
deleted file mode 100755 (executable)
index 1bb017c..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/perl -w
-#
-# addcorr.pl
-#
-# addcorr.pl [inputCorrections HTMLfile(s)]
-#
-# Combines the operations of corrtohtml.pl, sortcorrhtml.pl, and
-# mergecorrhtml.pl into one simple command line. Anything that needs
-# to do anything more complex than this should use the three utilities
-# separately.
-#
-# The book code will be obtained from the input HTML filename. E.g.
-# 01fftd-changes.html provides the book code 01fftd. If for some reason
-# the input HTML filename doesn't hold the book code in the first
-# characters before the hyphen, use the three separate utilities.
-#
-# Anything that isn't specified on the command line will be prompted for.
-#
-# This program uses the most used pattern of using these three utilities.
-#
-# corrtohtml.pl -v -b bookCode inputCorrections
-#   | sortcorrhtml.pl -v -s -b bookCode
-#   | mergecorrhtml.pl inputHTML
-#   > outputHTML
-#
-# This utility also has the side effect of creating a backup copy of
-# the inputHTML file.
-#
-######################################################################
-use strict;
-
-my $programName = "addcorr";
-my $usage = "$programName [inputCorrections HTMLfile(s)]\n";
-
-unless( -d $ENV{AONPATH} ) { die "\$AONPATH environment variable doesn't point to a directory"; }
-
-my $convert = $ENV{AONPATH} . "/bin/corrtohtml.pl";
-die( "Cannot find executable file \"$convert\"" ) unless( -x $convert );
-my $sort = $ENV{AONPATH} . "/bin/sortcorrhtml.pl";
-die( "Cannot find executable file \"$sort\"" ) unless( -x $sort );
-my $merge = $ENV{AONPATH} . "/bin/mergecorrhtml.pl"; 
-die( "Cannot find executable file \"$merge\"" ) unless( -x $merge );
-my $copy = "/bin/cp";
-die( "Cannot find executable file \"$copy\"" ) unless( -x $copy );
-
-my $optsProcessed = 0;
-my $bookCode = "";
-my $inCorr = "";
-my $inHTML = "";
-my $outHTML = "";
-my $verbose = 0;
-
-my %books = (
-    '01fftd' => 1,
-    '02fotw' => 1,
-    '03tcok' => 1,
-    '04tcod' => 1,
-    '05sots' => 1,
-    '06tkot' => 1,
-    '07cd' => 1,
-    '08tjoh' => 1,
-    '09tcof' => 1,
-    '10tdot' => 1,
-    '11tpot' => 1,
-    '12tmod' => 1,
-    '13tplor' => 1,
-    '14tcok' => 1,
-    '15tdc' => 1,
-    '16tlov' => 1,
-    '17tdoi' => 1,
-    '18dotd' => 1,
-    '19wb' => 1,
-    '20tcon' => 1,
-    '21votm' => 1,
-    '22tbos' => 1,
-    '23mh' => 1,
-    '24rw' => 1,
-    '25totw' => 1,
-    '26tfobm' => 1,
-    '27v' => 1,
-    '28thos' => 1,
-    '01gstw' => 1,
-    '02tfc' => 1,
-    '03btng' => 1,
-    '04wotw' => 1,
-    '01hh' => 1,
-    '02smr' => 1,
-    '03toz' => 1,
-    '04cc' => 1,
-    'tmc' => 1,
-    'rh' => 1
-);
-
-######################################################################
-
-while( $#ARGV > -1 && not $optsProcessed ) {
-  my $commandLineItem = shift @ARGV;
-  if( $commandLineItem eq "--help" ) {
-    print $usage and exit;
-  }
-  elsif( $commandLineItem eq "-v" ) {
-    $verbose = 1;
-  }
-  else {
-    unshift @ARGV, $commandLineItem;
-    $optsProcessed = 1;
-  }
-}
-
-if( $#ARGV > -1 ) {
-    $inCorr = shift @ARGV or die "Couldn't get input corrections\n$usage";
-    $inHTML = shift @ARGV or die "Couldn't get input HTML\n$usage";
-}
-else {
-    while( $inCorr eq "" ) {
-       print "Corrections File: ";
-       $inCorr = <>;
-       chomp( $inCorr );
-    }
-    while( $inHTML eq "" ) {
-       print "Input HTML File: ";
-       $inHTML = <>;
-       chomp( $inHTML );
-    }
-}
-
-while( $inHTML ne "" ) {
-    die( "Cannot find corrections file \"$inCorr\"" ) unless( -f $inCorr );
-    die( "Cannot read corrections file \"$inCorr\"" ) unless( -r $inCorr );
-    die( "Cannot find HTML file \"$inHTML\"" ) unless( -f $inHTML );
-    die( "Cannot read HTML file \"$inHTML\"" ) unless( -r $inHTML );
-    die( "Cannot write to HTML file \"$inHTML\"" ) if( -f $inHTML && ! -w $inHTML );
-
-    $bookCode = $inHTML;
-    $bookCode =~ s{^([[:lower:][:digit:]]+)-.*$}{$1};
-    die( "Unknown book code \"$bookCode\" (obtained from \"$inHTML\")" ) unless( exists $books{ $bookCode } );
-
-    print "Bookcode: $bookCode\n" if( $verbose );
-    # leave backup untouched while putting output in original filename
-    print qx{$copy $inHTML $inHTML.backup};
-    $outHTML = $inHTML;
-    $inHTML = "$inHTML.backup";
-
-    print qx{ $convert -v -b $bookCode $inCorr | $sort -v -s -b $bookCode | $merge $inHTML >$outHTML };
-
-    $inHTML = "";
-    $inHTML = shift @ARGV if( $#ARGV > -1 );
-}
diff --git a/scripts/aon.el b/scripts/aon.el
deleted file mode 100755 (executable)
index b4a19b2..0000000
+++ /dev/null
@@ -1,672 +0,0 @@
-;;; aon.el --- utilities for implementing Project Aon errata
-
-;; Copyright (C) 2003, 2004, 2005 Thomas Wolmer & Project Aon
-
-;; Author: Thomas Wolmer <thomas@powerpuff.org>
-;; Created: 17 Aug 2003
-;; Version: 0.13
-;; Keywords: aon 
-
-;;; Commentary:
-
-;; This code provides support for implementing errata in the XML files
-;; Project Aon uses as "single sources" for the books it publishes. For
-;; more information on Project Aon, see http://www.projectaon.org/.
-
-;;; Change Log:
-
-;; 2003-08-17: 0.01: First nicely formatted version.
-;; 2003-08-24: 0.02: Fixed bugs in aon-find-errata-entry and aon-fix-markup,
-;;                   implemented aon-errata-jump and support functions.
-;; 2003-08-31: 0.03: Added default section id and title, and modified
-;;                   aon-get-sect-id and aon-get-sect-title, so that errata
-;;                   in the blurb gets listed correctly. Fixed some major
-;;                   problems in aon-errata-replace-all.
-;; 2003-09-07: 0.04: Improved usability: aon-errata-replace[-all] presents
-;;                   better prompt and a default text, and checks for "same"
-;;                   and null replacements. aon-errata-add also checks null
-;;                   input. All four user functions take an optional comment.
-;; 2003-09-14: 0.05: Now saves all input to the interactive functions to avoid
-;;                   losing them if the user changes the selection/point while
-;;                   answering the interactive questions. Fixed bug in
-;;                   aon-errata-add which asked you for a comment twice.
-;;                   Extended aon-fix-markup.
-;; 2003-10-12: 0.06: XEmacs does not put mouse-selected region in kill ring by
-;;                   default and does not have match-string-no-properties.
-;;                   Oops. Now things work in XEmacs, but regressions tests
-;;                   with GNU Emacs should probably be done too.
-;; 2003-10-31: 0.07: Used defconst to define some of the constants.
-;; 2003-11-12: 0.08: Flesh out the aon-nonindexed-sects definition
-;; 2004-05-09: 0.09: Fixed too greedy anchor tag regexp in aon-fix-markup &
-;;                   added more 04wotw sections to aon-nonindexed-sects
-;; 2005-02-05: 0.10: Added a function for inserting large illustrations
-;; 2005-05-06: 0.11: Added a function for inserting inline illustrations
-;; 2005-05-23: 0.12: Fixed bug in aon-re-get-errata-entry-id.
-;; 2005-05-29: 0.13: Introduced full footnote support.
-
-;; A slight limitation: We can only handle one illustrator at a time.
-
-(defvar aon-illustrator-name "Paul Bonner"
-  "*")
-(defvar aon-large-illustration-width "386"
-  "*")
-
-
-;;; Code:
-
-(defconst aon-nonindexed-sects
-  (list
-   ;; kai disciplines
-   "camflage" "hunting" "sixthsns" "tracking" "healing" "wepnskll" "wepnskll"
-   "mndblst" "anmlknsp" "mindomtr"
-   ;; magnakai disciplines
-   "wpnmstry" "anmlctrl" "curing" "invsblty" "hntmstry" "pthmnshp" "psisurge"
-   "psiscrn" "nexus" "dvnation" "lcbonus"
-   ;; magnakai improved disciplines
-   "primate" "tutelary" "prncpln" "mentora" "scion" "archmstr"
-   ;; grandmaster disciplines
-   "mksumary" "wpnmstry" "anmlmstr" "deliver" "assimila" "hntmstry" "pthmnshp"
-   "kaisurge" "kaiscrn" "nexus" "gnosis" "magi" "alchemy"
-   ;; grandmaster improved disciplines
-   "guardian" "sunkght" "sunlord" "sunthane"
-   ;; gs lesser magicks
-   "lessmcks" "sorcery" "enchant" "elementl" "alchemy" "prophecy" "psycmncy"
-   "evcation" "staff"
-   ;; gs higher magicks
-   "highmcks" "thamtrgy" "telergy" "physirgy" "theurgy" "visionry" "necrmncy"
-   ;; general
-   "toc" "credits" "howcarry" "howmuch" "howuse" "evasion" "smevazn" "errintro"
-   "errerr" "primill" "secill")
-  "These sections are ignored for errata entries; the enclosing section is
-used instead (unless it is also 'nonindexed').")
-
-(defconst aon-default-sect-id "title"
-  "The default section to assign an erratum to if none is found.")
-(defconst aon-default-sect-title "Title Page"
-  "The title of the 'default section' (see `aon-default-sect-id').")
-
-;; Commonly used search regexps
-(defconst aon-re-errerr-sect "<section.*id=\"errerr\".*>"
-  "Regexp used to locate the start of the errata entry list.")
-(defconst aon-re-get-sect-id "<section.*id=\"\\(.+?\\)\".*>"
-  "Regexp used to find the id of asection.")
-(defconst aon-re-get-errata-entry-id "<p>(<a idref=\"\\(.+?\\)\".*>)"
-  "Regexp used to find the id of an errata list entry.") ; and footnotes too!
-(defconst aon-re-get-title "<title>\\(.+?\\)</title>"
-  "Regexp used to find the title of a section.")
-(defconst aon-re-get-footnote-num
-  "<footnote id=\".+?\" idref=\".+?-\\([0-9]+\\)\">"
-  "Regexp used to locate the sequence number of a footnote.")
-
-;; The errata item texts (as templates to be fed to 'format')
-;; These are only (hardcoded) reader-visible texts inserted by this hack!
-;; TODO: rename these variabled. defconst?
-(setq replaceditemtext " Replaced <quote>%s</quote> with <quote>%s</quote>%s.")
-(setq addeditemtext " Added <quote>%s</quote>%s.")
-(setq deleteditemtext " Deleted <quote>%s</quote>%s.")
-(setq replacedallitemtext (concat " Replaced all occurrences of <quote>%s"
-                                  "</quote> with <quote>%s</quote>%s."))
-
-;; TODO: an optional second argument should be where the search starts,
-;; instead of at the beginning of the file
-(defun aon-get-sect-pos (sect)
-  "Returns the start position of the named section.
-Useful for comparing the order of sections."
-  (save-excursion
-    (goto-char (point-min))
-    (re-search-forward (format "<section.*id=\"%s\".*>" sect) nil t)
-    (match-beginning 0)))
-
-;; TODO: rewrite this property fetching stuff, it is way too inefficient
-
-(defun aon-get-sect-property (regexp)
-  "Returns a property, as selected by regexp, of the current indexed section."
-  (save-excursion
-    ;; if we're in an ignored section, go to its beginning and repeat search
-    (if (member (aon-get-unchecked-sect-id) aon-nonindexed-sects)
-        (progn
-          (search-backward "<section" nil t)
-          (aon-get-sect-property regexp))
-      (aon-get-unchecked-sect-property regexp))))
-
-(defun aon-get-unchecked-sect-property (regexp)
-  "Returns a property, as selected by regexp, of the current section.
-Unlike aon-get-sect-property, it does not checked if it is indexed."
-  (save-excursion
-    (and (re-search-backward regexp nil t)
-        ;;(match-string-no-properties 1)))) ; Doesn't work in XEmacs
-        (match-string 1))))
-
-(defun aon-get-unchecked-sect-id ()
-  "Returns the id of the current section.
-Unlike aon-get-sect-id, it does not check if it is indexed."
-  (or (aon-get-unchecked-sect-property aon-re-get-sect-id)
-      aon-default-sect-id)) ; workaround for the blurb and such
-
-(defun aon-get-sect-id ()
-  "Returns the id of the current indexed section."
-  (or (aon-get-sect-property aon-re-get-sect-id)
-      aon-default-sect-id)) ; workaround for the blurb and such
-
-(defun aon-get-sect-title ()
-  "Returns the title of the current indexed section."
-  (if (string= (aon-get-sect-id) "title")
-      aon-default-sect-title ; workaround for the blurb and such
-    (aon-get-sect-property aon-re-get-title)))
-
-(defun aon-find-errata-entry ()
-  "Finds the insertion position in the errata entry for the current section.
-If no errata entry exists, returns nil."
-  (save-excursion
-    (let ((id (aon-get-sect-id)))
-      (re-search-forward aon-re-errerr-sect)
-      ;; locate the end of the errata list so that we don't search too far and
-      ;; start finding footnotes instead
-      (when (search-forward (format "<p>(<a idref=\"%s\">" id)
-                            (save-excursion (search-forward "</section>"))
-                            t)
-        (search-forward "</p>") ; place position last in entry
-        (match-beginning 0)))))
-
-(defun aon-create-errata-entry ()
-  "Creates an errata entry for the current section.
-Returns the errata item insertion point in the new entry."
-  (interactive) ;; for testing only
-  (setq newerrataentry (format "<p>(<a idref=\"%s\">%s</a>)</p>\n"
-                               (aon-get-sect-id) (aon-get-sect-title)))
-  (save-excursion
-    (aon-goto-new-errata-list-entry-pos (point))
-    (insert newerrataentry)
-    (search-backward "</p>")
-    (indent-according-to-mode)
-    (point))) ; goto insertion point and make it be returned
-
-;; This function is HORRIBLY slow due to the calls to aon-get-sect-pos
-(defun aon-goto-new-errata-list-entry-pos (sectpos)
-  "Places the point at the position where a new errata entry shall be created."
-  (re-search-forward aon-re-errerr-sect)
-  (search-forward "<data>")
-  (setq endoferrata (save-excursion
-                      (if (search-forward "</data>")
-                          (point)
-                        (error "Could not find the end of the errata list!"))))
-  (while (let ((id (save-excursion
-                     (if (re-search-forward aon-re-get-errata-entry-id
-                                            endoferrata
-                                            t)
-                         ;;(match-string-no-properties 1) ; Boohoo XEmacs
-                        (match-string 1)
-                       "footnotz" ; hack warning! to avoid getting too far
-                       ))))
-           (unless (setq thissectpos (aon-get-sect-pos id))
-             (error "Section %s has an errata entry but does not exist!" id))
-           (< thissectpos sectpos))
-    (forward-line 1)))
-
-;; TODO: Figure out some way not to create an errata entry before we know that
-;; it will work OK. As it is now, an empty errata entry may be left behind
-;; if an error occurs. But maybe that's not a problem??
-(defun aon-insert-errata-entry (errataentry id)
-  "Adds an errata item to the current indexed section's errata entry.
-An errata entry is created if it does not exist."
-  (save-excursion
-    (goto-char (or (aon-find-errata-entry) ; if it is not found...
-                   (aon-create-errata-entry))) ; ...create the entry
-    (insert (aon-format-errata-item id errataentry))))
-
-(defun aon-format-errata-item (id errataentry)
-  ""
-  (format "<!--%s-ITEM-->%s<!--/%s-ITEM-->" id errataentry id))
-
-(defun aon-format-erratum (id newtext)
-  ""
-  (format "<!--%s-->%s<!--/%s-->" id newtext id))
-
-(defun aon-format-erratum-empty (id)
-  ""
-  (format "<!--%s/-->" id))
-
-(defun aon-errata-replace (beg end newtext oldtext &optional comment)
-  "Replaces the current region and records the replacement."
-  (interactive
-   ;; save all positions and string as the user may change the selection!
-   (let* ((xbeg (region-beginning))
-          (xend (region-end))
-          ;;(xoldtext (car kill-ring-yank-pointer)) ; Boohoo Xemacs
-         (xoldtext (buffer-substring-no-properties xbeg xend))
-          (xnewtext (read-string (format "Replace '%s' with: " xoldtext)
-                                 xoldtext))
-          (cmnt (read-string "Additional comment (optional): ")))
-     (list xbeg xend xnewtext xoldtext cmnt)))
-  (cond ((string= newtext "")
-         (error "No replacement! To delete text, use 'aon-errata-delete'."))
-        ((string= newtext oldtext)
-         (error "The replacement is the same as the original!")))
-  (let* ((id (aon-get-new-errata-id "RE"))
-         (errataentry (format replaceditemtext
-                              (aon-fix-markup oldtext)
-                              (aon-fix-markup newtext)
-                              comment)))
-    (kill-region beg end)
-    (insert (aon-format-erratum id newtext))
-    (aon-insert-errata-entry errataentry id)))
-
-(defun aon-errata-delete (beg end oldtext &optional comment)
-  "Deletes the current region and records the deletion."
-  (interactive
-   ;; save all positions and string as the user may change the selection!
-   (let* ((xbeg (region-beginning))
-         (xend (region-end))
-          ;;(xoldtext (car kill-ring-yank-pointer)) ; Boohoo Xemacs
-         (xoldtext (buffer-substring-no-properties xbeg xend))
-         (cmnt (read-string "Additional comment (optional): ")))
-     (list xbeg xend xoldtext cmnt)))
-  (let* ((id (aon-get-new-errata-id "DE"))
-         (errataentry (format deleteditemtext
-                              (aon-fix-markup oldtext)
-                              comment)))
-    (kill-region beg end)
-    (insert (aon-format-erratum-empty id))
-    (aon-insert-errata-entry errataentry id)))
-
-(defun aon-errata-add (pos newtext &optional comment)
-  "Adds text in the current position and records the addition."
-  (interactive
-   (let ((xpos (point))
-         (string (read-string "Insert text: "))
-         (cmnt (read-string "Additional comment (optional): ")))
-     (list xpos string cmnt)))
-  (if (string= newtext "")
-      (error "No text to add!"))
-  (let* ((id (aon-get-new-errata-id "AD"))
-         (errataentry (format addeditemtext
-                              (aon-fix-markup newtext)
-                              comment)))
-    (insert (aon-format-erratum id newtext))
-    (aon-insert-errata-entry errataentry id)))
-
-(defun aon-errata-replace-all (beg end newtext oldtext &optional comment)
-  "Replaces all occurrences of the current region and records the replacements.
-Stretches all over one indexed section, so it might affect text before the
-selected region as well! It is NOT very intelligent about abstaining from
-replacing text in markup that should not be touch, so don't even think about
-replacing, say, 'class'."
-  (interactive
-   ;; save all positions and string as the user may change the selection!
-   (let* ((xbeg (region-beginning))
-          (xend (region-end))
-          ;;(xoldtext (car kill-ring-yank-pointer)) ; Boohoo Xemacs
-         (xoldtext (buffer-substring-no-properties xbeg xend))
-          (xnewtext (read-string (format
-                                  "Replace all occurrences of '%s' with: "
-                                  xoldtext)
-                                 xoldtext))
-          (cmnt (read-string "Additional comment (optional): ")))
-     (list xbeg xend xnewtext xoldtext cmnt)))
-  (if (string= newtext oldtext)
-      (error "The replacement text is the same as the original!"))
-  (let* ((id (aon-get-new-errata-id "RA"))
-         (errataentry (format replacedallitemtext
-                              (aon-fix-markup oldtext)
-                              (aon-fix-markup newtext)
-                              comment))
-         (saved-case-fold-search case-fold-search))
-    (save-excursion
-      (aon-goto-sect-start)
-      (forward-line 1) ; workaround to avoid matching this section start
-      (setq sectend (aon-get-sect-end))
-      (setq case-fold-search nil) ; No case folded false matches thank you
-      (while (re-search-forward (format "[^\"]\\\(%s\\\)[^\"]" oldtext) sectend t)
-        (replace-match (aon-format-erratum id newtext) t t nil 1))
-      (setq case-fold-search saved-case-fold-search)) ; Reset case folding
-    (aon-insert-errata-entry errataentry id)))
-
-;; SLOW!!! And doesn't need to be recursive. Rewrite.
-(defun aon-goto-sect-start ()
-  "Places the point at the start of the current indexed section."
-  (interactive) ; for test purposes
-  (if (member (aon-get-unchecked-sect-id) aon-nonindexed-sects)
-        (progn
-          (search-backward "<section" nil t)
-          (aon-goto-sect-start)) 
-    (search-backward "<section" nil t)))
-
-(defun aon-get-sect-end ()
-  "Returns the end position of this section."
-  (let ((nextopensect (save-excursion
-                        (search-forward "<section")))
-        (nextclosesect (save-excursion
-                         (search-forward "</section>"))))
-    (if (< nextclosesect nextopensect)
-        nextclosesect ; return the end of this section
-      (save-excursion
-        (goto-char nextopensect) ; place inside nested section
-        (goto-char (aon-get-sect-end)) ; goto end of that section
-        (aon-get-sect-end))))) ; continue search for this section's end
-
-(defun aon-get-new-errata-id (type)
-  "Returns a new unique errata item id."
-  (let ((id (format "ERRTAG-%s-%s" type (point))))
-    (save-excursion
-      (while (search-forward (format "%s-" id) nil t)
-        (setq id (format "%s1" id)))) ; append '1' and try again
-    id))
-
-(defun aon-fix-markup (string)
-  "Converts some markup in text from section to fit in an errata item."
-  ;; Quotes - assume it is single quotes, double must be handled manually
-  (while (string-match "<quote>" string)
-    (setq string (replace-match "&lsquot;" nil nil string)))
-  (while (string-match "</quote>" string)
-    (setq string (replace-match "&rsquot;" nil nil string)))
-  ;; TODO: Except for tags that shall become entities, maybe the rest can be
-  ;; handled by a general transformation?
-  ;; Link texts
-  (while (string-match "<link-text>" string)
-    (setq string (replace-match "<!--link-text-->" nil nil string)))
-  (while (string-match "</link-text>" string)
-    (setq string (replace-match "<!--/link-text-->" nil nil string)))
-  ;; idrefs and similar
-  ;; TODO: a complete idref does not need to be replaced!
-  (while (string-match "<\\(a .*?\\)>" string)
-    (setq string (replace-match (format "<!--%s-->" (match-string 1 string))
-                                nil nil string)))
-  (while (string-match "</a>" string)
-    (setq string (replace-match "<!--/a-->" nil nil string)))  string)
-
-;; (defun aon-refix-markup (string)
-;;   "Converts some 'fixed' markup in an errata item text to fit in a section.
-;; To be used when an erratum is undone and the replaced or deleted text from
-;; an errata item shall be re-inserted in the section."
-;;   (while (or (string-match "&lsquot;" string)
-;;              (string-match "&ldquot;" string))
-;;     (setq string (replace-match "<quote>" nil nil string)))
-;;   (while (or (string-match "&rsquot;" string)
-;;              (string-match "&rdquot;" string))
-;;     (setq string (replace-match "</quote>" nil nil string)))
-;;   string)
-
-(defun aon-locate-errata-item-start ()
-  "Return the starting position of the errata block the point is in.
-Currently, the point may not be within a comment start or end tag.
-Returns an error message if the point is not within an errata tag or if
-the errata structure is corrupt."
-  (save-excursion
-    (let ((prevcommentend (save-excursion (search-backward "-->" nil t)))
-          (prevcommentstart (save-excursion (search-backward "<!--" nil t)))
-          (nextcommentend (save-excursion (search-forward "-->" nil t))))
-      (unless (and prevcommentstart nextcommentend)
-        (error "Point is not within an errata item!"))
-      (goto-char prevcommentstart)
-      (cond
-       ;; if we are at the start of an opening tag, it is OK
-       ((looking-at "<!--ERRTAG-..-[0-9]+\\(-ITEM\\)?-->")
-        (point))
-       ;; if we are at the start of a content-free tag, we must check that
-       ;; we were not outside that tag when we started.
-       ((looking-at "<!--ERRTAG-..-[0-9]+/-->")
-        (if (> prevcommentend prevcommentstart)
-            (error "Point is not within an errata item!")
-          (point)))
-       ;; if we are at the start of a closing tag, we must check that we were
-       ;; not outside that tag when we started, and then find the opening tag
-       ((looking-at "<!--/\\(ERRTAG-..-[0-9]+\\(-ITEM\\)?\\)-->")
-        (if (> prevcommentend prevcommentstart)
-            (error "Point is not within an errata item!")
-          (search-backward (format "<!--%s-->" (match-string 1)))))
-       ;; if the comment was not an errata tag
-       (t (error "Point is not within an errata item!"))))))
-
-(defun aon-errata-jump ()
-  "If the point is within tags, jump to the corresponding erratum/errata item.
-In the case of a \"replace all\" erratum, jumps to the first location."
-  (interactive)
-  (let ((pos
-         (save-excursion
-           (goto-char (aon-locate-errata-item-start)) ; inefficient!
-           (cond ((looking-at "<!--\\(ERRTAG-..-[0-9]+\\)-ITEM-->")
-                  (goto-char (point-min))
-                  (re-search-forward (format "<!--%s/?-->" (match-string 1)))
-                  (match-beginning 0))
-                 ((looking-at "<!--\\(ERRTAG-..-[0-9]+\\)/?-->")
-                  (goto-char (point-min))
-                  (search-forward (format "<!--%s-ITEM-->" (match-string 1)))
-                  (match-beginning 0))
-                 (t (error "This code can not be reached!"))))))
-    (if pos (goto-char pos)
-      (error "This code can not be reached!")))) ; should have received error
-
-;; TODO: Make the illustration functions add entries in the illustrations list
-
-(defun aon-illustration-large (number height caption)
-  "Adds a large illustration at the insertion point.
-The illustrations list is not updated (TBD)."
-  (interactive
-   (let ((xnum (read-string "Illustration number: "))
-         (xheight (read-string "Pixel height: "))
-         (xcaption (read-string "Caption: ")))
-     (list xnum xheight xcaption)))
-  (let ((startpos (point))
-        (endpos (save-excursion
-                  (insert (format "<illustration class=\"float\">\n<meta>\n<creator>%s</creator>\n<description>%s</description>\n</meta>\n<instance class=\"html\" src=\"ill%s.gif\" width=\"%s\" height=\"%s\"/>\n<instance class=\"pdf\" src=\"ill%s.pdf\" width=\"%s\" height=\"%s\"/>\n</illustration>"
-                                  aon-illustrator-name caption number
-                                  aon-large-illustration-width height number
-                                  aon-large-illustration-width height))
-                  (point))))
-    (aon-indent-block startpos endpos)))
-
-(defun aon-illustration-inline (filename height)
-  "Adds an inline illustration at the insertion point.
-The illustrations list is not updated (TBD)."
-  (interactive
-   (let ((xfilename (read-string "File name: "))
-         (xheight (read-string "Pixel height: ")))
-     (list xfilename xheight)))
-  (let ((startpos (point))
-        (endpos (save-excursion
-                  (insert (format "<illustration class=\"inline\">\n<meta>\n<creator>%s</creator>\n</meta>\n<instance class=\"html\" src=\"%s.gif\" width=\"%s\" height=\"%s\" mime-type=\"image/gif\" />\n</illustration>"
-                                  aon-illustrator-name filename
-                                  aon-large-illustration-width height))
-                  (point))))
-    (aon-indent-block startpos endpos)))
-
-;; TODO: Create a method that takes a function which adds text, and then
-;; indents the added text. Now each caller of this function must add some
-;; codes to handle start and end positions.
-
-(defun aon-indent-block (startpos endpos)
-  "Indents the text between startpos and endpos.
-The positions need not be start or end of lines. Leaves point at end of block."
-  (dotimes (i (count-lines startpos endpos))
-    (indent-according-to-mode)
-    (forward-line 1)))
-
-;; TODO: Clean up the whole footnote code, it is a mess.
-
-(defun aon-footnote-add (pos text)
-  "Adds a footnote at the current position.
-Note that the footnote text must contain all <p>aragraph tags, and that line
-breaks are not allowed."
-  (interactive
-   (let ((xpos (point))
-         (xtext (read-string "Footnote text: ")))
-     (list xpos xtext)))
-  (if (string= text "")
-      (error "No footnote text!"))
-  (let ((tpos (string-match "<p>" text)))
-    (unless (and tpos (= 0 tpos))
-      (error "Footnotes must contain <p>aragraph start and end tags!")))
-  (save-excursion
-    (let*
-        ((sectid (aon-get-sect-id))
-         (fblockstart (aon-find-footnote-block sectid))
-         (fnum (if fblockstart
-                    (aon-get-next-footnote-num fblockstart)
-                 1))
-         (fid (format "%s-%s" sectid fnum))
-         (fentry
-          (format "\n<footnote id=\"%s-foot\" idref=\"%s\">%s</footnote>"
-                  fid fid text))
-         (fref
-          (format "<a id=\"%s\" idref=\"%s-foot\" class=\"footnote\" />" 
-                  fid fid))
-         (fnth (1+ (aon-count-previous-footnotes sectid)))
-         (flistref
-          (format "(<a idref=\"%s\">%s</a>)" sectid (aon-get-sect-title)))
-         (flistinsertpos
-          (aon-find-footnote-list-insert-pos sectid flistref fnth)))
-      ;; First insert errata list entry
-      (goto-char flistinsertpos)
-      (let ((startpos (point))
-            (endpos (save-excursion
-                      (insert "\n" text)
-                      (point))))
-        (aon-indent-block startpos endpos))
-      (goto-char flistinsertpos)
-      (search-forward "<p>") ; no line-end-position in xemacs
-      (insert flistref " ")
-      ;; Then errata ref
-      (goto-char pos)
-      (insert fref)
-      ;; And last errata entry in section errata block (which may be created)
-      (if fblockstart
-          (progn ; block exists, go to the right position in it 
-            (goto-char fblockstart)
-            (dotimes (i (1- fnth))
-              (search-forward "</footnote>"
-                              (save-excursion
-                                (goto-char fblockstart)
-                                (search-forward "</footnotes>")))))
-        (goto-char (aon-create-footnote-block sectid)))
-      (let ((startpos (point))
-            (endpos (save-excursion
-                      (insert fentry)
-                      (point))))
-        (aon-indent-block startpos endpos)))))
-
-(defun aon-create-footnote-block (sect)
-  "Creates a footnote block and returns insertion point."
-  (save-excursion
-    (goto-char (aon-get-sect-pos sect))
-    (search-forward "</meta>")
-    (save-excursion
-      (let ((spos (point))
-            (endpos (save-excursion
-                      (insert "\n\n<footnotes>\n</footnotes>")
-                      (point))))
-        (aon-indent-block spos endpos)))
-    (search-forward "<footnotes>")))
-
-(defun aon-find-footnote-block (sect)
-  "Returns the start of the footnote block of the current section, or nil."
-  (save-excursion
-    (goto-char (aon-get-sect-pos sect))
-    (search-forward "</meta>")
-    (let*
-        ((datastart (save-excursion
-                      (search-forward "<data>")))
-         (footstart (save-excursion
-                      (search-forward "<footnotes>" datastart t))))
-      footstart)))
-
-(defun aon-get-footnote-num (pos)
-  "Return the numerical sequence number of the footnote on the current line.
-If there are no more footnotes defined here, it returns nil."
-  (interactive "p")
-  (let ((fend (save-excursion
-                (search-forward "</footnotes>"))))
-    (save-excursion
-      (and
-       (re-search-forward aon-re-get-footnote-num fend t)
-       (string-to-number (match-string 1))))))
-
-(defun aon-get-next-footnote-num (pos)
-  "Returns the next footnote id number.
-This will always be the previously highest number plus one."
-  (let ((seq '()))
-    (save-excursion
-      (goto-char pos)
-      (while (setq x (aon-get-footnote-num (point)))
-        (setq seq (cons x seq))
-        (search-forward "</footnote>")
-        (forward-line 1)))
-    (if seq
-        (1+ (car (sort seq '>))) ; prior highest + 1
-      1))) ; the first
-
-(defun aon-count-previous-footnotes (sect)
-  "Based on the current position, counts the number of footnotes before..."
-  (save-excursion
-    (let ((sectstart (aon-get-sect-pos sect))
-          (count 0))
-      (while (re-search-backward
-              "<a.+?idref=\".+?-foot\".+?class=\"footnote\".*?/>" sectstart t)
-        (setq count (1+ count)))
-      count)))
-
-(defun aon-find-footnote-list-insert-pos (sect ref nth)
-  ""
-  (save-excursion
-    (let ((flistsectpos (aon-get-sect-pos "footnotz")))
-      (if (= nth 1)
-          (aon-find-new-footnote-list-entry-pos (aon-get-sect-pos sect))
-        (progn
-          (goto-char flistsectpos)
-          (dotimes (i (1- nth))
-            (search-forward ref))
-          (end-of-line)
-          (point))))))
-
-;; TODO: This code is mostly copied from the errata code. Merge them?
-
-(defun aon-find-new-footnote-list-entry-pos (sectpos)
-  "Return the position where a new footnote list entry shall be created."
-  (save-excursion
-    (goto-char (aon-get-sect-pos "footnotz"))
-    (search-forward "<data>")
-    (forward-line 1) ; pos is now on the line of the first <p> (if it exists)
-    (let ((endofflist
-           (save-excursion
-             (if (search-forward "</data>")
-                 (point)
-               (error "Could not find the end of the footnotes list!")))))
-      (while (let ((id (save-excursion
-                         (if (re-search-forward aon-re-get-errata-entry-id
-                                                endofflist
-                                                t)
-                             (match-string 1)
-                           "illstrat" ; hack warning! to avoid getting too far
-                           ))))
-               (unless (setq thissectpos (aon-get-sect-pos id))
-                 (error
-                  "Section %s has a footnote list entry, but does not exist!"
-                  id))
-               (< thissectpos sectpos))
-        (forward-line 1)))
-    (forward-line -1)
-    (end-of-line)
-    (point)))
-
-(global-set-key "\C-cr" 'aon-errata-replace)
-(global-set-key "\C-cd" 'aon-errata-delete)
-(global-set-key "\C-ca" 'aon-errata-add)
-(global-set-key "\C-cR" 'aon-errata-replace-all)
-(global-set-key "\C-cj" 'aon-errata-jump)
-;;(global-set-key "\C-cu" 'aon-errata-revert)
-
-(global-set-key "\C-cl" 'aon-illustration-large)
-(global-set-key "\C-ci" 'aon-illustration-inline)
-
-(global-set-key "\C-cf" 'aon-footnote-add)
-
-;; Errata examples
-;; <!--ERRTAG-RE-123--> <!--/ERRTAG-RE-123-->
-;; <!--ERRTAG-DE-456/-->
-;; Errata item
-;; <!--ERRTAG-RE-123-ITEM--> <!--/ERRTAG-RE-123-ITEM-->
-;; RE - replace
-;; DE - delete
-;; AD - add
-;; RA - replace all
-
-;;; aon.el ends here
\ No newline at end of file
diff --git a/scripts/checkerrata.pl b/scripts/checkerrata.pl
deleted file mode 100755 (executable)
index 258ce2d..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/perl -w
-# This script parses the errata list of a book in XML form and tries to
-# locate the added or replaced strings in the sections where they are now
-# supposed to exist. Things that are not found by the simple errata list
-# parsing code are just skipped. Nesting frontmatter sections are also
-# skipped.
-
-# Old History:
-#  2005-08-23 Tried to improve handling of <link-text> tags
-#  2005-03-12 Treat &thinspace; correctly.
-#  2003-03-16 Fixed reporting of false positived due to <link-text> tags
-#  2003-03-15 First version.
-
-$xmlfile = shift @ARGV;
-$xmlfile || die("usage: $0 <xml file>\n");
-$invalid = shift @ARGV;
-$invalid && die("usage: $0 <xml file>\n");
-
-open(ERRATA, $xmlfile) || die("Cannot read input file $xmlfile\n");
-open(SECTIONS, $xmlfile) || die("Cannot read input file $xmlfile\n");
-
-while(<ERRATA>) { # find errata list
-  last if m/<section.*id="errerr".*>/;
-}
-die("No errata section!? Aborting.\n") if eof(ERRATA);
-while(<ERRATA>) { # find start of actual list
-  last if m/<data>/;
-}
-die("No data in the errata section!? Aborting.\n") if eof(ERRATA);
-
-print("No matches for these errata entries were found:\n");
-
-# Now pick each paragraph (= errata) line
-ERRATALOOP: while(<ERRATA>) {
-  next unless m/^\s*<p>/; # no paragraph = not an errata line
-  last if m|</data>|; # end of the errata list
-  ($sect) = m|\(<a (?:id="\w+?" )?idref="(\w+?)">.*</a>\)|;
-  @reps = m|<quote>.*?</quote> with <quote>(.*?)</quote>|g;
-  @adds = m|[Aa]dded <quote>(.*?(?=</quote>))</quote>|g;
-  next unless @reps || @adds;
-
-  # Now find section and append all contents into one string
-  while(<SECTIONS>) { # locate section
-    last if m/<section.*id=\"$sect\">/;
-  }
-  die("Could not find section $sect!? (This might be because the errata\nentry for it is not placed in the correct section order.) Aborting.\n") if eof(SECTIONS);
-  while(<SECTIONS>) { # locate data
-    last if m/<data>/;
-  }
-  die("Could not find any data in $sect!? Aborting.\n") if eof(SECTIONS);
-  $text = "";
-  while(<SECTIONS>) { # grab all section contents
-    last if m|</data>|;
-    if (m/<section/) { # oh no, nested sections - we cannot handle this well
-      seek(SECTIONS, -length(), 1); # give the next section a chance
-      next ERRATALOOP; # give up on this section
-    }
-    # Before adding the text to the section blob, modify <link-text> tags
-    # since they are commented out in the errata entries
-    s|<(/?)link-text>|<!--${1}link-text-->|g;
-    $text .= $_;
-  }
-  die("Could not find the end of $sect!? Aborting.\n") if eof(SECTIONS);
-
-  # The replacement may contain &[lr][sd]quot; which in the sections are
-  # <quote> thingies. Translate these. Also ignore &thinspace; first and
-  # last in the replacements.
-  # Refactor the duplicated code below some day!
-  foreach $rep (@reps) {
-    $rep =~ s/\&l[sd]quot;/<quote>/g;
-    $rep =~ s/\&r[sd]quot;/<\/quote>/g;
-    $rep =~ s/^\&thinspace;//g;
-    $rep =~ s/\&thinspace;$//g;
-    if ($text !~ m/\Q$rep\E/) {
-      print("Replacement \"$rep\" in $sect\n");
-    }
-  }
-  foreach $add (@adds) {
-    $add =~ s/\&l[sd]quot;/<quote>/g;
-    $add =~ s/\&r[sd]quot;/<\/quote>/g;
-    $add =~ s/^\&thinspace;//g;
-    $add =~ s/\&thinspace;$//g;
-    if ($text !~ m/\Q$add\E/) {
-      print("Addition    \"$add\" in $sect\n");
-    }
-  }
-}
-print("Checking finished!\n");
diff --git a/scripts/checkill.pl b/scripts/checkill.pl
deleted file mode 100755 (executable)
index b91b73c..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/perl -w
-# This script parses the illustrations list of a book in XML form and checks
-# that the referred sections contain an illustration of the correct type, and
-# that the section titles are correct.
-
-# $Id$
-
-# $Log$
-# Revision 1.1  2005/08/23 19:32:28  angantyr
-# First checked in version.
-#
-
-# Old History:
-#  2005-08-22 Implemented handling of multiple instances of an illustration
-#  2005-04-02 Fixed a bad regexp for section ids.
-#  2003-03-23 First version.
-
-
-($xmlfile = shift @ARGV) || die("usage: $0 <xml file>\n");
-shift @ARGV && die("usage: $0 <xml file>\n");
-
-foreach $illtype ("primill", "secill") {
-  open(ILL, $xmlfile) || die("Cannot read input file $xmlfile\n");
-  open(SECTIONS, $xmlfile) || die("Cannot read input file $xmlfile\n");
-
-  while(<ILL>) { # find illustrations list
-    last if (m/<section.*id="$illtype".*>/i);
-  }
-  die("No illustrations section!? Aborting.\n") if eof(ILL);
-  while(<ILL>) { # find start of actual list
-    last if m/<data>/;
-  }
-  die("No data in the illustrations section!? Aborting.\n")
-    if eof(ILL);
-  print("No matches for these $illtype entries were found:\n");
-
-  $lastref = "";
-  $repeated = 0;
-  # Now pick each paragraph (= illustrations) line
- ILLLOOP: while(<ILL>) {
-    last if m|</data>|; # end of the illustrations list
-    next unless m/^\s*<li>/; # no list item = not an illustrations line
-
-    @refpairs = m|<a idref="(\w*)">(.*?)</a>|g;
-
-    $i = 0;
-  REFLOOP: while((@refpairn = @refpairs[$i++, $i++]) && (($sect, $title) = @refpairn) && $sect && $title) {
-      if ($lastref eq $sect) { # Multiple illustrations in one section
-        seek(SECTIONS, 0, 0);
-        $repeated++;
-      }
-      else {
-        $repeated = 0;
-      }
-
-      # Now find section
-    FINDSEC: foreach $tryagain (1, 0) {
-        while(<SECTIONS>) { # locate section
-          if (m/<section.*id="$sect">/) {
-            ($class) = m/class="(\S+)"/;
-            last FINDSEC; # Don't try again
-          }
-        }
-
-        # Start over
-        seek(SECTIONS, 0, 0);
-        if ($tryagain) {
-          print("$title ($sect) appears not to be in correct order!\n");
-        }
-        else {
-          print("Could not find $title ($sect) at all!\n");
-          next REFLOOP;
-        }
-      }
-
-      $lastref = $sect;
-
-      my $secttitle;
-      while(<SECTIONS>) { # locate data
-        if (m/<title>/) {
-          my $sectnumber;
-          ($sectnumber) = m|<title>(.+)</title>|;
-          if ($class =~ m/numbered/i) {
-            $secttitle = "Section $sectnumber"
-          }
-          else {
-            $secttitle = $sectnumber;
-          }
-
-          print("Illustrations entry section name '$title' does not match the\nsection name '$secttitle' of section with id $sect!\n")
-            if (("$secttitle" ne "$title") && ("$sectnumber" ne "$title"));
-          last;
-        }
-      }
-
-      while(<SECTIONS>) { # locate data
-        last if m/<data>/;
-      }
-      die("Could not find any data in $title!? Aborting.\n") if eof(SECTIONS);
-
-      $foundit = 0;
-      while(<SECTIONS>) { # find the illustration
-        last if m|</data>|;
-        #if (m/<section/) { # oh no, nested sections - we cannot handle this well
-        #  seek(SECTIONS, -length(), 1); # give the next section a chance
-        #  next REFLOOP; # give up on this section
-        #}
-
-        $foundit++
-          if ($illtype eq "primill" && m/<illustration>/ || # Map
-              $illtype eq "primill" && m/<illustration.+class="float".*>/ || # Normal large
-              $illtype eq "primill" && m/<illustration.+class="inline".*>/ || # Action Chart
-              $illtype eq "secill" && m/<illustration.+class="inline".*>/ || # Normal small
-              $illtype eq "secill" && m/<illustration.+class="accent".*>/); # In use still?
-      }
-      die("Could not find the end of $title!? Aborting.\n") if eof(SECTIONS);
-      if (!$repeated && !$foundit) {
-        print("$secttitle ($sect) does not contain any matching illustration!\n");
-      }
-      elsif ($repeated >= $foundit) {
-        print("$secttitle ($sect) contains too few matching illustrations!\n");
-      }
-    } # REFLOOP
-    if (@refpairs > 2) { # This illustration appears multiple times
-      seek(SECTIONS, 0, 0); # Do not warn if next illustration is not in order
-    }
-  } # ILLOOP
-  close(SECTIONS) || die("What's this?");
-  close(ILL) || die("What's this?");
-}
-print("Checking finished!\n");
diff --git a/scripts/corrtohtml.pl b/scripts/corrtohtml.pl
deleted file mode 100755 (executable)
index 2d64606..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-my $programName = 'corrtohtml';
-my $usage = "$programName [options] [inputFile [inputFile2 ...]]\n" .
-            "\t-b bookCode          convert unspecified corrections to this book\n" .
-            "\t-o outputFile\n" .
-            "\t-i editorsInitials\n" .
-
-            "\t-s                   strips book information\n" .
-            "\t-v                   verbose reporting\n";
-
-my $optsProcessed = 0;
-my $outFile = "";
-my $editorInitials = "";
-my $stripBookInfo = 0;
-my $verbose = 0;
-my $bookCode = "";
-my $bookCodeReport = "";
-
-while( $#ARGV > -1 && not $optsProcessed ) {
-  my $commandLineItem = shift @ARGV;
-  if( $commandLineItem eq "-b" ) {
-    $bookCode = shift @ARGV or die $usage;
-    &validateBookCode( $bookCode ) or die( "Error ($programName): unrecognized bookcode on command line \"$bookCode\"" );
-  }
-  elsif( $commandLineItem eq "-o" ) {
-    $outFile = shift @ARGV or die $usage;
-  }
-  elsif( $commandLineItem eq "-i" ) {
-    $editorInitials = shift @ARGV or die $usage;
-  }
-  elsif( $commandLineItem eq "-s" ) {
-    $stripBookInfo = 1;
-  }
-  elsif( $commandLineItem eq "-v" ) {
-    $verbose = 1;
-  }
-  elsif( $commandLineItem eq "--help" ) {
-    print $usage and exit;
-  }
-  else {
-    unshift @ARGV, $commandLineItem;
-    $optsProcessed = 1;
-  }
-}
-
-my @lines = <>;
-my $document = "";
-my %sectionDocLookup = (
-  '_unknown' => '_unknown',
-  'toc'      => 'toc',
-  'title'    => 'title',
-  'dedicate' => 'dedicate',
-  'acknwldg' => 'acknwldg',
-  'credits'  => 'acknwldg',
-  'coming'   => 'coming',
-  'tssf'     => 'tssf',
-  'gamerulz' => 'gamerulz',
-  'discplnz' => 'discplnz',
-  'camflage' => 'discplnz',
-  'hunting'  => 'discplnz',
-  'sixthsns' => 'discplnz',
-  'tracking' => 'discplnz',
-  'healing'  => 'discplnz',
-  'wepnskll' => 'discplnz',
-  'mndshld'  => 'discplnz',
-  'mndblst'  => 'discplnz',
-  'anmlknsp' => 'discplnz',
-  'mindomtr' => 'discplnz',
-  'mksumary' => 'discplnz',
-  'anmlctrl' => 'discplnz',
-  'curing'   => 'discplnz',
-  'invsblty' => 'discplnz',
-  'psisurge' => 'discplnz',
-  'psiscrn'  => 'discplnz',
-  'dvnation' => 'discplnz',
-  'wpnmstry' => 'discplnz',
-  'anmlmstr' => 'discplnz',
-  'deliver'  => 'discplnz',
-  'assimila' => 'discplnz',
-  'hntmstry' => 'discplnz',
-  'pthmnshp' => 'discplnz',
-  'kaisurge' => 'discplnz',
-  'kaiscrn'  => 'discplnz',
-  'nexus'    => 'discplnz',
-  'gnosis'   => 'discplnz',
-  'magi'     => 'discplnz',
-  'kalchemy' => 'discplnz',
-  'powers'   => 'powers',
-  'lessmcks' => 'powers',
-  'alchemy'  => 'powers',
-  'sorcery'  => 'powers',
-  'enchant'  => 'powers',
-  'elementl' => 'powers',
-  'prophecy' => 'powers',
-  'psycmncy' => 'powers',
-  'evcation' => 'powers',
-  'highmcks' => 'powers',
-  'thamtrgy' => 'powers',
-  'telergy'  => 'powers',
-  'physirgy' => 'powers',
-  'theurgy'  => 'powers',
-  'visionry' => 'powers',
-  'necrmncy' => 'powers',
-  'staff'    => 'powers',
-  'moonston' => 'powers',
-  'equipmnt' => 'equipmnt',
-  'howcarry' => 'equipmnt',
-  'howmuch'  => 'equipmnt',
-  'howuse'   => 'equipmnt',
-  'cmbtrulz' => 'cmbtrulz',
-  'evasion'  => 'cmbtrulz',
-  'lorecrcl' => 'lorecrcl',
-  'lcbonus'  => 'lorecrcl',
-  'levels'   => 'levels',
-  'primate'  => 'levels',
-  'tutelary' => 'levels',
-  'mentora'  => 'levels',
-  'scion'    => 'levels',
-  'archmstr' => 'levels',
-  'prncpln'  => 'levels',
-  'imprvdsc' => 'imprvdsc',
-  'guardian' => 'imprvdsc',
-  'sunkght'  => 'imprvdsc',
-  'sunlord'  => 'imprvdsc',
-  'kaiwisdm' => 'kaiwisdm',
-  'sage'     => 'sage',
-  'numbered' => 'numbered',
-  'part1'    => 'part1',
-  'part2'    => 'part2',
-  'ill1'     => 'ill1',
-  'ill2'     => 'ill2',
-  'ill3'     => 'ill3',
-  'ill4'     => 'ill4',
-  'ill5'     => 'ill5',
-  'ill6'     => 'ill6',
-  'ill7'     => 'ill7',
-  'ill8'     => 'ill8',
-  'ill9'     => 'ill9',
-  'ill10'    => 'ill10',
-  'ill11'    => 'ill11',
-  'ill12'    => 'ill12',
-  'ill13'    => 'ill13',
-  'ill14'    => 'ill14',
-  'ill15'    => 'ill15',
-  'ill16'    => 'ill16',
-  'ill17'    => 'ill17',
-  'ill18'    => 'ill18',
-  'ill19'    => 'ill19',
-  'ill20'    => 'ill20',
-  'passing'  => 'passing',
-  'map'      => 'map',
-  'action'   => 'action',
-  'crsumary' => 'crsumary',
-  'smevazn'  => 'crsumary',
-  'crtable'  => 'crtable',
-  'random'   => 'random',
-  'errata'   => 'errata',
-  'errintro' => 'errata',
-  'errerr'   => 'errata',
-  'footnotz' => 'footnotz',
-  'illstrat' => 'illstrat',
-  'primill'  => 'illstrat',
-  'secill'   => 'illstrat',
-  'license'  => 'license',
-  'lic-pre'  => 'license',
-  'lic-1'    => 'license',
-  'lic-1-0'  => 'license',
-  'lic-1-1'  => 'license',
-  'lic-1-2'  => 'license',
-  'lic-1-3'  => 'license',
-  'lic-1-4'  => 'license',
-  'lic-1-5'  => 'license',
-  'lic-1-6'  => 'license',
-  'lic-1-7'  => 'license',
-  'lic-2'    => 'license',
-  'lic-2-0'  => 'license',
-  'lic-2-1'  => 'license',
-  'lic-2-2'  => 'license',
-  'lic-2-3'  => 'license',
-  'lic-2-4'  => 'license',
-  'lic-2-5'  => 'license',
-  'lic-3'    => 'license',
-  'lic-3-0'  => 'license',
-  'lic-3-1'  => 'license',
-  'lic-4'    => 'license',
-  'lic-4-0'  => 'license',
-  'lic-5'    => 'license',
-  'lic-5-0'  => 'license',
-  'lic-6'    => 'license',
-  'lic-6-0'  => 'license',
-  'lic-6-1'  => 'license'
-);
-
-my %sectionTitleLookup = (
-  '_unknown' => '_unknown',
-  'toc'      => 'Table of Contents',
-  'title'    => 'Title Page',
-  'dedicate' => 'Dedication',
-  'acknwldg' => 'Acknowledgements',
-  'coming'   => 'Of the Coming of Grey Star',
-  'tssf'     => 'The Story So Far . . .',
-  'gamerulz' => 'The Game Rules',
-  'discplnz' => '. . . Disciplines',
-  'powers'   => 'Magical Powers',
-  'equipmnt' => 'Equipment',
-  'cmbtrulz' => 'Rules for Combat',
-  'lorecrcl' => 'Lore-circles of the Magnakai',
-  'levels'   => 'Levels of . . . Mastery',
-  'imprvdsc' => 'Improved . . . Disciplines',
-  'kaiwisdm' => '. . . Wisdom',
-  'sage'     => 'Sage Advice',
-  'numbered' => 'Numbered Sections',
-  'part1'    => 'Part I',
-  'part2'    => 'Part II',
-  'ill1'     => 'Illustration 1',
-  'ill2'     => 'Illustration 2',
-  'ill3'     => 'Illustration 3',
-  'ill4'     => 'Illustration 4',
-  'ill5'     => 'Illustration 5',
-  'ill6'     => 'Illustration 6',
-  'ill7'     => 'Illustration 7',
-  'ill8'     => 'Illustration 8',
-  'ill9'     => 'Illustration 9',
-  'ill10'    => 'Illustration 10',
-  'ill11'    => 'Illustration 11',
-  'ill12'    => 'Illustration 12',
-  'ill13'    => 'Illustration 13',
-  'ill14'    => 'Illustration 14',
-  'ill15'    => 'Illustration 15',
-  'ill16'    => 'Illustration 16',
-  'ill17'    => 'Illustration 17',
-  'ill18'    => 'Illustration 18',
-  'ill19'    => 'Illustration 19',
-  'ill20'    => 'Illustration 20',
-  'passing'  => 'Passing of the Shianti',
-  'map'      => 'map',
-  'action'   => 'Action Chart',
-  'crsumary' => 'Combat Rules Summary',
-  'crtable'  => 'Combat Results Table',
-  'random'   => 'Random Number Table',
-  'errata'   => 'Errata',
-  'footnotz' => 'Footnotes',
-  'illstrat' => 'Table of Illustrations',
-  'license'  => 'Project Aon License'
-);
-
-if( $bookCode ne "" ) {
-    $bookCodeReport = " [$bookCode]";
-}
-################################################################################
-# Normalize Lines and Whitespace
-
-foreach my $line (@lines) {
-  $line =~ tr/\n\r/ /;
-  $document .= $line;
-}
-$document =~ s/[[:space:]]{2,}/ /g;                        # collapse spaces
-$document =~ s/(\(er?\)|\(ne?\)|\(ft?\)|\(ce\)|\(cn\)|\(cf\)|\(re\)|\(rn\)|\(rf\)|\(\?\??\))/\n$1/g; # break lines
-$document =~ s/^[[:space:]]*\n//g;                         # remove blank lines
-@lines = split( m/ *\n/, $document );
-
-################################################################################
-# Translate
-
-my $commentRegex       = qr{\[[[:space:]]*(([^[:space:]:]*)[[:space:]]*:)?[[:space:]]*([^]]*)\]};
-my $sectionNumberRegex = qr{^\(([^)][^)])*\)                       # type: $1
-                            [[:space:]]*
-                            ([[:digit:]]*[[:alpha:]]+[[:space:]]+)? # book: $2
-                            ([[:digit:]]+)                          # section: $3
-                            (?:[[:space:]]+
-                            \#([[:digit:]]+))?                      # issue: $4
-                            [[:space:]]*:
-                            (.*?)                                   # correction: $5
-                            [[:space:]]*$}x;
-my $sectionIDRegex     = qr{^\(([^)][^)])*\)                        # type: $1
-                            [[:space:]]*
-                            ([[:digit:]]*[[:alpha:]]+[[:space:]]+)? # book: $2
-                            ([^:[:space:]]*)                        # section: $3
-                            (?:[[:space:]]+
-                            \#([[:digit:]]+))?                      # issue: $4
-                            [[:space:]]*:
-                            (.*?)                                   # correction: $5
-                            [[:space:]]*$}x;
-
-foreach my $line (@lines) {
-  $line =~ s{&} {&amp;}g;  # escape for HTML
-  $line =~ s{<} {&lt;}g;   #   "
-  $line =~ s{>} {&gt;}g;   #   "
-
-  while( $line =~ m{$commentRegex} ) {
-    if( (not defined( $2 )) || $2 eq "" ) {
-      $line =~ s{$commentRegex}{<div class="cm $editorInitials">$3</div>};
-    } else {
-      my $initials = lc( $2 );
-      $line =~ s{$commentRegex}{<div class="cm $initials">$3</div>};
-    }
-    if( $3 =~ m/^[[:space:]]*$/ ) {
-      warn( "Warning ($programName)$bookCodeReport: empty comment found\n" );
-    }
-  }
-
-  if( $line =~ m{$sectionNumberRegex} ) {
-    my $book = "";
-    if( defined $2 ) {
-      $book = lc( $2 );
-      &validateBookCode( $book ) or die( "Error ($programName)$bookCodeReport: unrecognized bookcode in input corrections \"$book\"" );
-    }
-    elsif( $bookCode ) {
-      $book = $bookCode;
-      warn( "Warning ($programName)$bookCodeReport: entry with unspecified book coerced to $bookCode: $line\n" );
-    }
-
-    my $issue = "";
-    if( defined $4 ) { $issue = $4; }
-    my $caseFoldSection = lc( $3 );
-    if( $book ne "" && not $stripBookInfo ) {
-      $line =~ s{$sectionNumberRegex}{<div class="$1"><!-- $book--><a href="sect$caseFoldSection.htm">$caseFoldSection</a> #$issue:$5</div>\n};
-    }
-    else {
-      $line =~ s{$sectionNumberRegex}{<div class="$1"><a href="sect$caseFoldSection.htm">$caseFoldSection</a> #$issue:$5</div>\n};
-    }
-  }
-  elsif( $line =~ m{$sectionIDRegex} ) {
-    my $caseFoldSection = lc( $3 );
-    exists $sectionDocLookup{$caseFoldSection} && defined $sectionDocLookup{$caseFoldSection}
-      or die( "Error ($programName)$bookCodeReport: don\'t understand section ID \"$caseFoldSection\" in $line" );
-    exists $sectionTitleLookup{$sectionDocLookup{$caseFoldSection}} && defined $sectionTitleLookup{$sectionDocLookup{$caseFoldSection}}
-      or die( "Error ($programName)$bookCodeReport: section ID \"$caseFoldSection\" doesn\'t have an associated title" );
-
-    my $book = "";
-    if( defined $2 ) {
-      $book = $2;
-      chomp( $book );
-      &validateBookCode( $book ) or die( "Error ($programName)$bookCodeReport: unrecognized bookcode in input corrections \"$book\"" );
-    }
-    elsif( $bookCode ) {
-      $book = $bookCode;
-      warn( "Warning ($programName)$bookCodeReport: entry with unspecified book coerced to $bookCode: $line\n" );
-    }
-
-    my $issue = "";
-    if( defined $4 ) { $issue = $4; }
-
-    if( $book ne "" && not $stripBookInfo ) {
-      $line =~ s{$sectionIDRegex}{<div class="$1"><!-- $book--><a href="$sectionDocLookup{$caseFoldSection}.htm">$sectionTitleLookup{$sectionDocLookup{$caseFoldSection}}</a> \#$issue:$5</div>\n};
-    }
-    else {
-      $line =~ s{$sectionIDRegex}{<div class="$1"><a href="$sectionDocLookup{$caseFoldSection}.htm">$sectionTitleLookup{$sectionDocLookup{$caseFoldSection}}</a> \#$issue:$5</div>\n};
-    }
-  }
-  else {
-    die( "Error ($programName)$bookCodeReport: unable to parse line: $line\n" );
-  }
-
-  $line =~ s{class="\?\??"} {class="u"};
-  $line =~ s{class="er"} {class="e"};
-  $line =~ s{class="ne"} {class="n"};
-  $line =~ s{class="ft"} {class="f"};
-
-  if( $line =~ m/(\(.{,4}\))|(\[.{,4}\])/ ) {
-    warn( "Warning ($programName)$bookCodeReport: possible malformed correction entry: $line\n" );
-  }
-}
-
-################################################################################
-# Output Results
-
-if( $outFile ne "" ) {
-  open( OUTFILE, ">$outFile" ) or die( "Error ($programName)$bookCodeReport: Unable to open output file \"$outFile\" for writing: $!" );
-  print OUTFILE @lines;
-  close( OUTFILE );
-}
-else {
-  print @lines;
-}
-
-################################################################################
-# Subroutines
-
-sub validateBookCode {
-    my ($bookCode) = @_;
-
-    # bookCode typically has some space after real data
-    $bookCode =~ s{[[:space:]]+}{}g;
-
-    my %books = (
-        '01fftd' => 1,
-        '02fotw' => 1,
-        '03tcok' => 1,
-        '04tcod' => 1,
-        '05sots' => 1,
-        '06tkot' => 1,
-        '07cd' => 1,
-        '08tjoh' => 1,
-        '09tcof' => 1,
-        '10tdot' => 1,
-        '11tpot' => 1,
-        '12tmod' => 1,
-        '13tplor' => 1,
-        '14tcok' => 1,
-        '15tdc' => 1,
-        '16tlov' => 1,
-        '17tdoi' => 1,
-        '18dotd' => 1,
-        '19wb' => 1,
-        '20tcon' => 1,
-        '21votm' => 1,
-        '22tbos' => 1,
-        '23mh' => 1,
-        '24rw' => 1,
-        '25totw' => 1,
-        '26tfobm' => 1,
-        '27v' => 1,
-        '28thos' => 1,
-        '01gstw' => 1,
-        '02tfc' => 1,
-        '03btng' => 1,
-        '04wotw' => 1,
-        '01hh' => 1,
-        '02smr' => 1,
-        '03toz' => 1,
-        '04cc' => 1,
-        'tmc' => 1,
-        'rh' => 1
-    );
-
-    return exists $books{ $bookCode };
-}
diff --git a/scripts/create-css-xhtml-single.pl b/scripts/create-css-xhtml-single.pl
deleted file mode 100755 (executable)
index 051c3ad..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/usr/local/bin/perl -w
-
-# See the following about font-size-adjust:
-# http://www.w3.org/TR/REC-CSS2/fonts.html#font-size-props
-
-#"Verdana, Arial, Helvetica", "Georgia, Times New Roman, Times", "Courier New, Courier". 
-
-#Commonly-installed typefaces on Macs and PCs
-# (Windows then Mac)
-#
-# Serif:
-#  Georgia
-#  MS Serif
-#  Book Antiqua
-#  Times New Roman 
-#
-#  Georgia*
-#  New York
-#  Palatino
-#  Times  
-#
-# Sans-serif:
-#  Verdana
-#  MS Sans Serif
-#  Arial
-#  Trebuchet
-#
-#  Verdana*
-#  Geneva
-#  Helvetica
-#  Chicago 
-#
-# Monospace:
-#  Courier New
-#  Courier 
-
-( $bookPath, $textColor, $backgroundColor, $scrollbarBaseColor, $scrollbarTrackColor, $scrollbarArrowColor, $linkColor, $alinkColor, $hlinkBackgroundColor, $hlinkColor ) = @ARGV;
-
-open( CSSFILE, ">${bookPath}/main.css" ) or die( "Can\'t output to file: \"${bookPath}/main.css\"\n\t$!" );
-
-print CSSFILE << "(END OF CSS)";
-html {
- /* scrollbar properties are currently IE specific (24 Aug 2002) */
- scrollbar-base-color: ${scrollbarBaseColor};
- scrollbar-track-color: ${scrollbarTrackColor};
- scrollbar-arrow-color: ${scrollbarArrowColor};
-}
-
-html, body {
- background-color: ${backgroundColor};
- color: ${textColor};
- font-family: Souvenir, Georgia, "Times New Roman", Times, serif;
-}
-
-#footnotes {
- font-size: 0.8em;
-}
-
-hr { margin-left: 0px; }
-
-ul.unbulleted { list-style-type: none }
-/* ul { list-style-type: none } */
-
-b { font-weight: bold }
-
-h1, h2, h3, h4, h5, h6 {
- margin-top: 0px;
- border: 0px none;
- padding: 0px;
- text-align: left;
-}
-
-div.numbered h3 {
- text-align: center;
-}
-
-div.glossary h3 {
- text-align: center;
-}
-
-:link:focus, :visited:focus { 
-}
-
-:link, :visited {
- background-color: transparent;
- color: ${linkColor};
- text-decoration: none;
- font-weight: bold;
-}
-
-:link:hover, :visited:hover {
- background-color: ${hlinkBackgroundColor};
- color: ${hlinkColor};
- text-decoration: none;
- font-weight: bold;
-}
-
-:link:active, :visited:active {
- background-color: transparent;
- color: ${alinkColor};
- text-decoration: none;
- font-weight: bold;
-}
-
-dt {
- font-weight: bold;
-}
-
-.navigation, .signpost, .illustraion, .caption, .center {
- text-align: center;
-}
-
-.author {
- text-align: center;
- font-weight: bold;
-}
-
-.dedication { 
- text-align: center;
- font-style: italic;
- font-weight: bold;
- margin-top: 15ex;
- margin-bottom: 15ex;
-}
-
-.copyright {
- text-align: center;
- font-style: italic;
-}
-
-.choice, .combat {
- text-align: left;
- margin-left: 15px;
-}
-
-.smallcaps {
- font-size: 0.8em;
-}
-
-(END OF CSS)
-
-close CSSFILE;
diff --git a/scripts/create-css.pl b/scripts/create-css.pl
deleted file mode 100755 (executable)
index 2fd3bc7..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-#!/usr/bin/perl -w
-
-# See the following about font-size-adjust:
-# http://www.w3.org/TR/REC-CSS2/fonts.html#font-size-props
-
-#"Verdana, Arial, Helvetica", "Georgia, Times New Roman, Times", "Courier New, Courier". 
-
-#Commonly-installed typefaces on Macs and PCs
-# (Windows then Mac)
-#
-# Serif:
-#  Georgia
-#  MS Serif
-#  Book Antiqua
-#  Times New Roman 
-#
-#  Georgia*
-#  New York
-#  Palatino
-#  Times  
-#
-# Sans-serif:
-#  Verdana
-#  MS Sans Serif
-#  Arial
-#  Trebuchet
-#
-#  Verdana*
-#  Geneva
-#  Helvetica
-#  Chicago 
-#
-# Monospace:
-#  Courier New
-#  Courier 
-
-#( $bookPath, $textColor, $backgroundColor, $scrollbarBaseColor, $scrollbarTrackColor, $scrollbarArrowColor, $linkColor, $alinkColor, $hlinkBackgroundColor, $hlinkColor, $hlinkLightBorderColor, $hlinkDarkBorderColor ) = @ARGV;
-
-( $bookPath, $textColor, $backgroundColor, $linkColor, $alinkColor, $hlinkBackgroundColor, $hlinkColor ) = @ARGV;
-
-open( CSSFILE, ">${bookPath}/main.css" ) or die( "Can\'t output to file: \"${bookPath}/main.css\"\n\t$!" );
-
-print CSSFILE << "(END OF CSS)";
-\@import url( more.css );
-
-html, body {
- background-color: ${backgroundColor};
- color: ${textColor};
- font-family: Souvenir, Georgia, "Times New Roman", Times, serif;
-}
-
-#title {
- position: absolute;
- top: 0px;
- left: 0px;
- width: 550px;
- height: 100px;
- padding: 0px;
- border: 0px none;
- margin: 0px;
-}
-
-#body {
- position: absolute;
- top: 95px;
- left: 100px;
- width: 450px;
- padding: 0px;
- border: 0px none;
- margin: 0px;
-}
-
-#footnotes {
- font-size: 0.8em;
-}
-
-hr { margin-left: 0px; }
-
-p, ol, ul, dl, blockquote { text-align: justify }
-
-ul.unbulleted { list-style-type: none }
-
-b { font-weight: bold }
-
-h1, h2, h3, h4, h5, h6 {
- margin-top: 0px;
- border: 0px none;
- padding: 0px;
- clear: left;
- text-align: left;
-}
-
-:link:focus, :visited:focus {
-}
-
-:link, :visited {
- background-color: transparent;
- color: ${linkColor};
- text-decoration: none;
- font-weight: bold;
-}
-
-:link:hover, :visited:hover {
- background-color: ${hlinkBackgroundColor};
- color: ${hlinkColor};
- text-decoration: none;
- font-weight: bold;
-}
-
-.navigation :link:hover, .navigation :visited:hover {
- background-color: transparent;
- color: ${hlinkColor};
- text-decoration: none;
- font-weight: bold;
-}
-
-:link:active, :visited:active {
- background-color: transparent;
- color: ${alinkColor};
- text-decoration: none;
- font-weight: bold;
-}
-
-dt {
- font-weight: bold;
-}
-
-.navigation, .signpost, .illustraion, .caption, .center {
- text-align: center;
-}
-
-.author {
- text-align: center;
- font-weight: bold;
-}
-
-.dedication {
- text-align: center;
- font-style: italic;
- font-weight: bold;
- margin-top: 15ex;
- margin-bottom: 15ex;
-}
-
-.copyright {
- text-align: center;
- font-style: italic;
-}
-
-.choice, .combat {
- text-align: left;
- margin-left: 15px;
- width: 435px;
-}
-
-.smallcaps {
- font-size: 0.8em;
-}
-(END OF CSS)
-
-close CSSFILE;
-
-open( CSSFILE, ">${bookPath}/more.css" ) or die( "Can\'t output to file: \"${bookPath}/more.css\"\n\t$!" );
-
-print CSSFILE << "(END OF MORE CSS)";
-p {
-  padding-top: 1px;
-  padding-bottom: 1px;
-}
-
-div.numbered h3 {
- position: absolute;
- top: -56px;
- left: 404px;
- width: 39px;
- height: 18pt;
- margin: 0px;
- border: 0px none;
- padding: 0px;
- font-size: 14pt;
- background-color: transparent;
- text-align: center;
- vertical-align: middle;
-}
-
-div.glossary h3 {
- position: absolute;
- top: -56px;
- left: 404px;
- width: 39px;
- height: 18pt;
- margin: 0px;
- border: 0px none;
- padding: 0px;
- font-size: 14pt;
- background-color: transparent;
- text-align: center;
- vertical-align: middle;
-}
-
-img.accent {
-  margin-top: 5px;
-  margin-right: 10px;
-  margin-bottom: 5px;
-}
-(END OF MORE CSS)
-
-close CSSFILE;
diff --git a/scripts/create-pdacss.pl b/scripts/create-pdacss.pl
deleted file mode 100755 (executable)
index 47c2a24..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/local/bin/perl -w
-
-( $bookPath, $textColor, $backgroundColor, $linkColor, $alinkColor ) = @ARGV;
-
-open( CSSFILE, ">${bookPath}/main.css" ) or die( "Can\'t output to file: \"${bookPath}/main.css\"\n\t$!" );
-
-print CSSFILE << "(END OF CSS)";
-html, body {
- background-color: ${backgroundColor};
- color: ${textColor};
- font-family: Souvenir, Times, serif;
-}
-
-#footnotes {
- font-size: 0.8em;
-}
-
-p, ol, ul, dl, blockquote { text-align: justify }
-
-ul.unbulleted { list-style-type: none }
-
-b { font-weight: bold }
-
-h1, h2, h3, h4, h5, h6 {
- margin-top: 0px;
- border: 0px none;
- padding: 0px;
- text-align: left;
-}
-
-:link:focus, :visited:focus { 
-}
-
-:link, :visited {
- background-color: transparent;
- color: ${linkColor};
-/* text-decoration: none;*/
- font-weight: bold;
-}
-
-:link:hover, :visited:hover {
-}
-
-:link:active, :visited:active {
- background-color: transparent;
- color: ${alinkColor};
-/* text-decoration: none;*/
- font-weight: bold;
-}
-
-dt {
- font-weight: bold;
-}
-
-.navigation, .signpost, .illustraion, .caption, .center {
- text-align: center;
-}
-
-.author {
- text-align: center;
- font-weight: bold;
-}
-
-.dedication { 
- text-align: center;
- font-style: italic;
- font-weight: bold;
- margin-top: 15ex;
- margin-bottom: 15ex;
-}
-
-.copyright {
- text-align: center;
- font-style: italic;
-}
-
-.choice, .combat {
- text-align: left;
- margin-left: 5%;
-}
-
-.smallcaps {
- font-size: 0.8em;
-}
-
-(END OF CSS)
-
-close CSSFILE;
diff --git a/scripts/frontfilter.pl b/scripts/frontfilter.pl
deleted file mode 100755 (executable)
index 61b0184..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/perl
-
-while( $ARGV[ 0 ] ) {
-    $infile = shift @ARGV;
-
-    @lines = ( );
-    open( INFILE, "<$infile" ) or die "Bad input file \"$infile.\": $!";
-    @lines = <INFILE>;
-    close INFILE;
-
-    foreach $line (@lines) {
-       my $oldline = $line;
-        $line =~ s/(\.\.\.|\.\s\.\s\.)/\&ellips\;/g;
-        $line =~ tr/\t/ /;
-        $line =~ s/\s{2,}/ /g;
-        $line =~ s/\&\s/\&amp\; /g;
-        $line =~ tr/\"\`\222\221/\'/;
-        $line =~ s/(Random\sNumber\sTable)/<a idref=\"random\">$1<\/a>/gi;
-        $line =~ s/(COMBAT\sSKILL|CLOSE\sCOMBAT\sSKILL|ENDURANCE|WILLPOWER|\bCS\b|\bEP\b)([^<])/<typ class="attribute">$1<\/typ>$2/g;
-        $line =~ s/(Action\sCharts?)/<a idref=\"action\">$1<\/a>/gi;
-        # \222 and \221 are some form of funky right and
-        # left quotes not present in ascii (of course) 
-        $line =~ tr/\227/-/;
-        # \227 is an em or en dash
-
-        $line =~ s/^\s*(.*)\s*$/$1\n/;
-    }
-
-    print @lines;
-}
diff --git a/scripts/gb-convert-entities.pl b/scripts/gb-convert-entities.pl
deleted file mode 100755 (executable)
index f83cc3c..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/perl
-
-while( <> ) {
-    if( /"[^">]*&([^;]+);/ && $1 !~ /^link/ ) {
-        warn "Entity $1 in attribute";
-    }
-    s{\&(apos|nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|ampersand|lsquot|rsquot|ldquot|rdquot|minus|endash|emdash|ellips|lellips|blankline|percent|thinspace|frac116|plus);}{<ch.$1/>}g;
-
-    s{\240}{<ch.nbsp/>}g;
-    s{\241}{<ch.iexcl/>}g;
-    s{\242}{<ch.cent/>}g;
-    s{\243}{<ch.pound/>}g;
-    s{\244}{<ch.curren/>}g;
-    s{\245}{<ch.yen/>}g;
-    s{\246}{<ch.brvbar/>}g;
-    s{\247}{<ch.sect/>}g;
-    s{\250}{<ch.uml/>}g;
-    s{\251}{<ch.copy/>}g;
-    s{\252}{<ch.ordf/>}g;
-    s{\253}{<ch.laquo/>}g;
-    s{\254}{<ch.not/>}g;
-    s{\255}{<ch.shy/>}g;
-    s{\256}{<ch.reg/>}g;
-    s{\257}{<ch.macr/>}g;
-    s{\260}{<ch.deg/>}g;
-    s{\261}{<ch.plusmn/>}g;
-    s{\262}{<ch.sup2/>}g;
-    s{\263}{<ch.sup3/>}g;
-    s{\264}{<ch.acute/>}g;
-    s{\265}{<ch.micro/>}g;
-    s{\266}{<ch.para/>}g;
-    s{\267}{<ch.middot/>}g;
-    s{\270}{<ch.cedil/>}g;
-    s{\271}{<ch.sup1/>}g;
-    s{\272}{<ch.ordm/>}g;
-    s{\273}{<ch.raquo/>}g;
-    s{\274}{<ch.frac14/>}g;
-    s{\275}{<ch.frac12/>}g;
-    s{\276}{<ch.frac34/>}g;
-    s{\277}{<ch.iquest/>}g;
-    s{\300}{<ch.Agrave/>}g;
-    s{\301}{<ch.Aacute/>}g;
-    s{\302}{<ch.Acirc/>}g;
-    s{\303}{<ch.Atilde/>}g;
-    s{\304}{<ch.Auml/>}g;
-    s{\305}{<ch.Aring/>}g;
-    s{\306}{<ch.AElig/>}g;
-    s{\307}{<ch.Ccedil/>}g;
-    s{\310}{<ch.Egrave/>}g;
-    s{\311}{<ch.Eacute/>}g;
-    s{\312}{<ch.Ecirc/>}g;
-    s{\313}{<ch.Euml/>}g;
-    s{\314}{<ch.Igrave/>}g;
-    s{\315}{<ch.Iacute/>}g;
-    s{\316}{<ch.Icirc/>}g;
-    s{\317}{<ch.Iuml/>}g;
-    s{\320}{<ch.ETH/>}g;
-    s{\321}{<ch.Ntilde/>}g;
-    s{\322}{<ch.Ograve/>}g;
-    s{\323}{<ch.Oacute/>}g;
-    s{\324}{<ch.Ocirc/>}g;
-    s{\325}{<ch.Otilde/>}g;
-    s{\326}{<ch.Ouml/>}g;
-    s{\327}{<ch.times/>}g;
-    s{\330}{<ch.Oslash/>}g;
-    s{\331}{<ch.Ugrave/>}g;
-    s{\332}{<ch.Uacute/>}g;
-    s{\333}{<ch.Ucirc/>}g;
-    s{\334}{<ch.Uuml/>}g;
-    s{\335}{<ch.Yacute/>}g;
-    s{\336}{<ch.THORN/>}g;
-    s{\337}{<ch.szlig/>}g;
-    s{\340}{<ch.agrave/>}g;
-    s{\341}{<ch.aacute/>}g;
-    s{\342}{<ch.acirc/>}g;
-    s{\343}{<ch.atilde/>}g;
-    s{\344}{<ch.auml/>}g;
-    s{\345}{<ch.aring/>}g;
-    s{\346}{<ch.aelig/>}g;
-    s{\347}{<ch.ccedil/>}g;
-    s{\350}{<ch.egrave/>}g;
-    s{\351}{<ch.eacute/>}g;
-    s{\352}{<ch.ecirc/>}g;
-    s{\353}{<ch.euml/>}g;
-    s{\354}{<ch.igrave/>}g;
-    s{\355}{<ch.iacute/>}g;
-    s{\356}{<ch.icirc/>}g;
-    s{\357}{<ch.iuml/>}g;
-    s{\360}{<ch.eth/>}g;
-    s{\361}{<ch.ntilde/>}g;
-    s{\362}{<ch.ograve/>}g;
-    s{\363}{<ch.oacute/>}g;
-    s{\364}{<ch.ocirc/>}g;
-    s{\365}{<ch.otilde/>}g;
-    s{\366}{<ch.ouml/>}g;
-    s{\367}{<ch.divide/>}g;
-    s{\370}{<ch.oslash/>}g;
-    s{\371}{<ch.ugrave/>}g;
-    s{\372}{<ch.uacute/>}g;
-    s{\373}{<ch.ucirc/>}g;
-    s{\374}{<ch.uuml/>}g;
-    s{\375}{<ch.yacute/>}g;
-    s{\376}{<ch.thorn/>}g;
-    s{\377}{<ch.yuml/>}g;
-
-    print;
-}
diff --git a/scripts/gbfixencoding.pl b/scripts/gbfixencoding.pl
deleted file mode 100755 (executable)
index e12c290..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/perl -Tw
-#
-# Uses ANSI color escapes to highlight text and for cursor movement
-#
-
-use strict;
-
-my $usage = "Usage:\n\tgbfixquotes.pl INFILE OUTFILE\n";
-
-my $lineNumber = 1;
-
-my ($infile, $outfile);
-
-if( $#ARGV == 1 ) {
-  $infile = shift @ARGV;
-  $outfile = shift @ARGV;
-}
-else {
-  die $usage;
-}
-
-if( $infile =~ m{(^.*$)} && -f $1 ) {
-  open( INFILE, "<$1" ) or die "Error: unable to read from \"$infile\": $!\n";
-}
-else {
-  die "Error: bad input file\n";
-}
-
-if( $outfile =~ m{(^.*$)} ) {
-  open( OUTFILE, ">$1" ) or die "Error: unable to write to \"$outfile\": $!\n";
-}
-else {
-  die "Error: bad output file\n";
-}
-
-while( my $line = <INFILE> ) {
-  $line = &encodify( $line );
-
-  print OUTFILE $line;
-  ++$lineNumber;
-}
-
-close OUTFILE;
-close INFILE;
-
-################################################################################
-
-sub encodify {
-  my ($line) = @_;
-  my $modified = $line;
-  my $replacements = 0;
-
-  if( $modified =~ s{ ([[:space:]]) \& ([[:space:]]) }{$1<ch.ampersand/>$2}xg ) { $replacements = 1; }
-  if( $modified =~ s{ [[:space:]]+ - [[:space:]]+ }{<ch.emdash/>}xg ) { $replacements = 1; }
-  if( $modified =~ s{ (?<!\!) ([[:space:]])* -- ([[:space:]])* (?!>) }{$1<ch.emdash/>$2}xg ) { $replacements = 1; }
-  if( $modified =~ s{ [[:space:]]* \227 [[:space:]]* }{<ch.emdash/>}xg ) { $replacements = 1; }
-  if( $modified =~ s{ ([[:digit:]]) - ([[:digit:]]) }{$1<ch.endash/>$2}xg ) { $replacements = 1; }
-  if( $modified =~ s{ [[:space:]]* \227 [[:space:]]* }{<ch.endash/>}xg ) { $replacements = 1; }
-  if( $modified =~ s{ > [[:space:]]* \. [[:space:]]* \. ([[:space:]]* \.)? }{><ch.lellips/>}xg ) { $replacements = 1; }
-  if( $modified =~ s{ [[:space:]]* \. [[:space:]]* \. ([[:space:]]* \.)? }{<ch.ellips/>}xg ) { $replacements = 1; }
-  if( $modified =~ s{ (</?quote>) \1 }{<ch.thinspace/>}xg ) { $replacements = 1; }
-  if( $modified =~ s{ <quote> \&apos; }{<quote><ch.thinspace/><ch.apos/>}xg ) { $replacements = 1; }
-  if( $modified =~ s{ \&apos; </quote> }{<ch.apos/><ch.thinspace/></quote>}xg ) { $replacements = 1; }
-  if( $modified =~ s{ __+ }{<ch.blankline/>}xg ) { $replacements = 1; }
-  if( $modified =~ s{\%}{<ch.percent/>}xg ) { $replacements = 1; }
-
-  if( $replacements ) {
-    print "\033[2J";
-    print &highlight( $line ) . "\n";
-    print &highlight( $modified );
-    print "\033[7m    (a)ccept, (r)eject, (q)uit: [accept]\033[0m >> ";
-
-    my $response = <STDIN>;
-    chomp $response;
-    if( $response =~ m/^[aA]$/ || $response eq "" ) { $line = $modified; }
-    elsif( $response =~ m/^[qQ]$/ ) {
-      print OUTFILE $line;
-      while( $line = <INFILE> ) {
-        print OUTFILE $line;
-      }
-      exit( 0 );
-    }
-    return $line;
-  }
-  else { return $line; }
-}
-
-sub highlight {
-  my ($text) = @_;
-
-  my $start = "\033[45;30m";
-  my $encodedStart = "\033[40;35m";
-  my $dashStart = "\033[46;30m";
-  my $encodedDashStart = "\033[40;36m";
-  my $stop  = "\033[0m";
-
-  $text =~ s{^[[:space:]]+}{}g;
-  $text =~ s{ ([[:space:]]) \& ([[:space:]]) }{$1$start\&$stop$2}xg;
-  $text =~ s{(<ch.ampersand/>)}{$encodedStart$1$stop}g;
-  $text =~ s{(<ch.emdash/>)}{$encodedDashStart$1$stop}g;
-  $text =~ s{ [[:space:]] (\&) [[:space:]] }{$dashStart$1$stop}xg;
-  $text =~ s{ ([[:space:]]+ - [[:space:]]+) }{$dashStart$1$stop}xg;
-  $text =~ s{ (?<!\!) ([[:space:]]* -- [[:space:]]*) }{$dashStart$1$stop}xg;
-  $text =~ s{ ([[:space:]]* \227 [[:space:]]*) }{$dashStart$1$stop}xg;
-  $text =~ s{(<ch.endash/>)}{$encodedDashStart$1$stop}g;
-  $text =~ s{ ([[:digit:]]) - ([[:digit:]]) }{$1$dashStart-$stop$2}xg;
-  $text =~ s{ ([[:space:]]* \226 [[:space:]]*) }{$dashStart$1$stop}xg;
-  $text =~ s{(<ch.lellips/>)}{$encodedStart$1$stop}g;
-  $text =~ s{ > ([[:space:]]* \. [[:space:]]* \. ([[:space:]]* \.)?) }{>$start$1$stop}xg;
-  $text =~ s{(<ch.ellips/>)}{$encodedStart$1$stop}g;
-  $text =~ s{ ([[:space:]]* \. [[:space:]]* \. ([[:space:]]* \.)?) }{$start$1$stop}xg;
-  $text =~ s{(<ch.thinspace/>)}{$encodedStart$1$stop}g;
-  $text =~ s{ (</?quote> \1) }{$start$1$stop}xg;
-  $text =~ s{ (<quote> <ch.apos/>) }{$start$1$stop}xg;
-  $text =~ s{ (<ch.apos/> </quote>) }{$start$1$stop}xg;
-  $text =~ s{(<ch.blankline/>)}{$encodedStart$1$stop}g;
-  $text =~ s{ (__+) }{$start$1$stop}xg;
-  $text =~ s{(<ch.percent/>)}{$encodedStart$1$stop}g;
-  $text =~ s{(\%)}{$start$1$stop}xg;
-
-  return $text;
-}
diff --git a/scripts/gbfixquotes.pl b/scripts/gbfixquotes.pl
deleted file mode 100755 (executable)
index 22e08d4..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-#!/usr/bin/perl -Tw
-#
-# Uses ANSI color escapes to highlight text and for cursor movement
-#
-
-use strict;
-
-my $usage = "Usage:\n  gbfixquotes.pl [options] INFILE OUTFILE\n\t-f      \tforce attempted fixes in malformed places\n\t-s LINES\tskip lines\n";
-
-my $lineNumber = 1;
-my $skipLines = 1;
-
-my $tags = qr{(p)|(choice)};
-my $quoteMarks = qr{['`\221-\224]};
-my $notQuoteMarks = qr{[^'`\221-\224]};
-my $terminalPunctuation = qr{[.?!,]};
-my $notTerminalPunctuation = qr{[^.?!,]};
-
-my $spellNames = qr{(lightning[[:space:]]+hand)|(splinter)|(flameshaft)|(halt[[:space:]]+missile)|(strength)|(penetrate)|(energy[[:space:]]+grasp)|(slow[[:space:]]+fall)|(breathe[[:space:]]+water)|(power[[:space:]]+glyph)|(hold[[:space:]]+enemy)|(teleport)|(see[[:space:]]+illusion)|(mind[[:space:]]+charm)|(net)|(counterspell)|(sense[[:space:]]+evil)|(invisible[[:space:]]+fist)|(levitation)}i;
-
-my ($infile, $outfile);
-
-my $optsProcessed = 0;
-my $forced = 0;
-
-while( $#ARGV > -1 && not $optsProcessed ) {
-  my $commandLineItem = shift @ARGV;
-  if( $commandLineItem eq "-f" ) {
-    $forced = 1;
-  }
-  elsif( $commandLineItem eq "-s" ) {
-    $skipLines = shift @ARGV or die $usage;
-  }
-  else {
-    unshift @ARGV, $commandLineItem;
-    $optsProcessed = 1;
-  }
-}
-
-if( $#ARGV == 1 ) {
-  $infile = shift @ARGV;
-  $outfile = shift @ARGV;
-}
-else {
-  die $usage;
-}
-
-if( $infile =~ m{(^.*$)} && -f $1 ) {
-  open( INFILE, "<$1" ) or die "Error: unable to read from \"$infile\": $!\n";
-}
-else {
-  die "Error: bad input file\n";
-}
-
-if( $outfile =~ m{(^.*$)} ) {
-  open( OUTFILE, ">$1" ) or die "Error: unable to write to \"$outfile\": $!\n";
-}
-else {
-  die "Error: bad output file\n";
-}
-
-while( my $line = <INFILE> ) {
-  if( $skipLines > $lineNumber ) { }
-  elsif( $line =~ m{<($tags)[[:space:]>]} ) {
-    my $tagName = $1;
-    unless( $line =~ m{</$tagName>} ) {
-      printWarning( "Warning ($lineNumber): <$tagName> found without </$tagName>, skipping tests for current line\n", $line );
-    }
-    elsif( $line =~ m{${quoteMarks}} ) {
-      $line = &quotify( $line );
-    }
-  }
-  elsif( $forced && $line =~ m{${quoteMarks}} ) {
-      $line = &quotify( $line );
-  }
-  elsif( $line =~ m{</($tags)>} ) {
-    printWarning( "Warning ($lineNumber): </$1> found without <$1>\n", $line );
-  }
-  elsif( $line =~ m{($quoteMarks)}x ) {
-    printWarning( "Warning ($lineNumber): unescaped quotation character \"$1\" found outside tested context\n", $line );
-  }
-
-  print OUTFILE $line;
-  ++$lineNumber;
-}
-
-close OUTFILE;
-close INFILE;
-
-################################################################################
-
-sub quotify {
-  my ($line) = @_;
-  my $modified = $line;
-  $modified =~ s{
-                 $quoteMarks
-                 ($spellNames)
-                 $quoteMarks
-                }
-                {<spell>$1</spell>}xg;
-  $modified =~ s{
-                 ([[:space:]])
-                 $quoteMarks
-                 ([[:alpha:]]+)
-                 $quoteMarks
-                 ([[:space:]])
-                }
-                {$1<quote>$2</quote>$3}xg;
-  $modified =~ s{
-                 ([[:alpha:]][[:space:]]*)
-                 $quoteMarks
-                 ([[:space:]]*[[:alpha:]])
-                }
-                {$1\&apos;$2}xg;
-  $modified =~ s{
-                 ${quoteMarks}
-                 (${notTerminalPunctuation}+?
-                 ${terminalPunctuation})
-                 ${quoteMarks}
-                }
-                {<quote>$1</quote>}xg;
-  $modified =~ s{
-                 ${quoteMarks}
-                 (${notQuoteMarks}+?)
-                 ${quoteMarks}
-                }
-                {<quote>$1</quote>}xg;
-  print "\033[2J";
-  print &highlight( $line ) . "\n";
-  print &highlight( $modified );
-  print "\033[7m    (a)ccept, (r)eject, (q)uit: [accept]\033[0m >> ";
-  my $response = <STDIN>;
-  chomp $response;
-  if( $response =~ m/^[aA]$/ || $response eq "" ) { $line = $modified; }
-  elsif( $response =~ m/^[qQ]$/ ) {
-    print OUTFILE $line;
-    while( $line = <INFILE> ) {
-      print OUTFILE $line;
-    }
-    exit( 0 );
-  }
-  return $line;
-}
-
-sub highlight {
-  my ($text) = @_;
-
-  $text =~ s{^[[:space:]]+}{};
-  $text =~ s{(<quote>)}{\033[1;36m$1\033[0m}g;
-  $text =~ s{(</quote>)}{\033[1;34m$1\033[0m}g;
-  $text =~ s{(</?spell>)}{\033[1;35m$1\033[0m}g;
-  $text =~ s{(\&apos;)}{\033[1;32m$1\033[0m}g;
-  $text =~ s{($quoteMarks)}{\033[1m\033[43m$1\033[0m}g;
-
-  return $text;
-}
-
-sub printWarning {
-    my ($message, $line) = @_;
-    print "\033[2J";
-    print "$message\n";
-    print &highlight( $line ) . "\n";
-    print "\033[7m    [continue]\033[0m >> ";
-    my $response = <STDIN>;
-}
diff --git a/scripts/gblint.pl b/scripts/gblint.pl
deleted file mode 100755 (executable)
index 2a98dc2..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-#!/usr/bin/perl -Tw
-#
-# Each new section id requires adding it to the list (e.g. improved
-# disciplines).
-#
-###############################################################################
-use strict;
-
-my $endOfDTD = 0;
-
-my %sectionDocLookup = (
-  '_unknown' => '_unknown',
-  'toc'      => 'toc',
-  'title'    => 'title',
-  'dedicate' => 'dedicate',
-  'acknwldg' => 'acknwldg',
-  'credits'  => 'acknwldg',
-  'coming'   => 'coming',
-  'tssf'     => 'tssf',
-  'gamerulz' => 'gamerulz',
-  'discplnz' => 'discplnz',
-  'camflage' => 'discplnz',
-  'hunting'  => 'discplnz',
-  'sixthsns' => 'discplnz',
-  'tracking' => 'discplnz',
-  'healing'  => 'discplnz',
-  'wepnskll' => 'discplnz',
-  'mndshld'  => 'discplnz',
-  'mndblst'  => 'discplnz',
-  'anmlknsp' => 'discplnz',
-  'mindomtr' => 'discplnz',
-  'mksumary' => 'discplnz',
-  'anmlctrl' => 'discplnz',
-  'curing'   => 'discplnz',
-  'invsblty' => 'discplnz',
-  'psisurge' => 'discplnz',
-  'psiscrn'  => 'discplnz',
-  'dvnation' => 'discplnz',
-  'wpnmstry' => 'discplnz',
-  'anmlmstr' => 'discplnz',
-  'deliver'  => 'discplnz',
-  'assimila' => 'discplnz',
-  'hntmstry' => 'discplnz',
-  'pthmnshp' => 'discplnz',
-  'kaisurge' => 'discplnz',
-  'kaiscrn'  => 'discplnz',
-  'nexus'    => 'discplnz',
-  'gnosis'   => 'discplnz',
-  'magi'     => 'discplnz',
-  'kalchemy' => 'discplnz',
-  'powers'   => 'powers',
-  'lessmcks' => 'powers',
-  'alchemy'  => 'powers',
-  'sorcery'  => 'powers',
-  'enchant'  => 'powers',
-  'elementl' => 'powers',
-  'prophecy' => 'powers',
-  'psycmncy' => 'powers',
-  'evcation' => 'powers',
-  'highmcks' => 'powers',
-  'thamtrgy' => 'powers',
-  'telergy'  => 'powers',
-  'physirgy' => 'powers',
-  'theurgy'  => 'powers',
-  'visionry' => 'powers',
-  'necrmncy' => 'powers',
-  'staff'    => 'powers',
-  'moonston' => 'powers',
-  'equipmnt' => 'equipmnt',
-  'howcarry' => 'equipmnt',
-  'howmuch'  => 'equipmnt',
-  'howuse'   => 'equipmnt',
-  'cmbtrulz' => 'cmbtrulz',
-  'evasion'  => 'cmbtrulz',
-  'lorecrcl' => 'lorecrcl',
-  'lcbonus'  => 'lorecrcl',
-  'levels'   => 'levels',
-  'primate'  => 'levels',
-  'tutelary' => 'levels',
-  'mentora'  => 'levels',
-  'scion'    => 'levels',
-  'archmstr' => 'levels',
-  'prncpln'  => 'levels',
-  'imprvdsc' => 'imprvdsc',
-  'guardian' => 'imprvdsc',
-  'sunkght'  => 'imprvdsc',
-  'sunlord'  => 'imprvdsc',
-  'kaiwisdm' => 'kaiwisdm',
-  'sage'     => 'sage',
-  'numbered' => 'numbered',
-  'passing'  => 'passing',
-  'part1'    => 'part1',
-  'part2'    => 'part2',
-  'map'      => 'map',
-  'action'   => 'action',
-  'crsumary' => 'crsumary',
-  'smevazn'  => 'crsumary',
-  'crtable'  => 'crtable',
-  'random'   => 'random',
-  'errata'   => 'errata',
-  'errintro' => 'errata',
-  'errerr'   => 'errata',
-  'footnotz' => 'footnotz',
-  'illstrat' => 'illstrat',
-  'primill'  => 'illstrat',
-  'secill'   => 'illstrat',
-  'license'  => 'license',
-  'lic-pre'  => 'license',
-  'lic-1'    => 'license',
-  'lic-1-0'  => 'license',
-  'lic-1-1'  => 'license',
-  'lic-1-2'  => 'license',
-  'lic-1-3'  => 'license',
-  'lic-1-4'  => 'license',
-  'lic-1-5'  => 'license',
-  'lic-1-6'  => 'license',
-  'lic-1-7'  => 'license',
-  'lic-2'    => 'license',
-  'lic-2-0'  => 'license',
-  'lic-2-1'  => 'license',
-  'lic-2-2'  => 'license',
-  'lic-2-3'  => 'license',
-  'lic-2-4'  => 'license',
-  'lic-2-5'  => 'license',
-  'lic-3'    => 'license',
-  'lic-3-0'  => 'license',
-  'lic-3-1'  => 'license',
-  'lic-4'    => 'license',
-  'lic-4-0'  => 'license',
-  'lic-5'    => 'license',
-  'lic-5-0'  => 'license',
-  'lic-6'    => 'license',
-  'lic-6-0'  => 'license',
-  'lic-6-1'  => 'license',
-);
-
-my $errorCount = 0;
-my $maxErrorCount = 0;
-my $skipLines = 0;
-my $initials = "??";
-my $useCorr = 0;
-my $checkNonASCII = 1;
-my $language = 'en';
-
-while( $#ARGV > -1 && $ARGV[ 0 ] =~ /^-/ ) {
-  if( $ARGV[ 0 ] eq "-e" && $#ARGV > 0 ) {
-    shift @ARGV;
-    $maxErrorCount = shift @ARGV;
-  }
-  elsif( $ARGV[ 0 ] eq "-s" && $#ARGV > 0 ) {
-    shift @ARGV;
-    $skipLines = shift @ARGV;
-  }
-  elsif( $ARGV[ 0 ] eq "-i" && $#ARGV > 0 ) {
-    shift @ARGV;
-    $initials = shift @ARGV;
-  }
-  elsif( $ARGV[ 0 ] eq "--use-corr" ) {
-    shift @ARGV;
-    $useCorr = 1;
-  }
-  elsif( $ARGV[ 0 ] eq '--skip-ASCII-check' ) {
-    shift @ARGV;
-    $checkNonASCII = 0;
-  }
-  elsif( $ARGV[ 0 ] eq '--language' ) {
-    shift @ARGV;
-    $language = shift @ARGV;
-  }
-}
-
-my $lineNumber = 1;
-my $currentSection = "_unknown";
-
-while( my $line = <> ) {
-  my @section = ( $line =~ /<section[^>]+id="([^"]*)"/g );
-  if( $#section > 0 ) { die( "Multiple sections begin at line $lineNumber\n" ); }
-  elsif( $#section == 0 ) {
-    if( $section[ 0 ] =~ /^sect[[:digit:]]+$/ ) {
-      $currentSection = $section[ 0 ];
-    }
-    else {
-      $currentSection = $sectionDocLookup{$section[ 0 ]};
-    }
-  }
-
-  if( $skipLines >= $lineNumber ) {
-    ++$lineNumber;
-    next;
-  }
-
-  ##### Unescaped Characters
-  if( $line =~ /[\200-\377]/ ) {
-    if( $line =~ /\221/ ) { &printError( "ne", $currentSection, $lineNumber, "unescaped left single quotation mark(s)", "\221", "<quote>...</quote> or \&apos;" ); }
-    if( $line =~ /\222/ ) { &printError( "ne", $currentSection, $lineNumber, "unescaped right single quotation mark(s)", "\222", "<quote>...</quote> or \&apos;" ); }
-    if( $line =~ /\223/ ) { &printError( "ne", $currentSection, $lineNumber, "unescaped left double quotation mark(s)", "\223", "<quote>...</quote>" ); }
-    if( $line =~ /\224/ ) { &printError( "ne", $currentSection, $lineNumber, "unescaped right double quotation mark(s)", "\224", "<quote>...</quote>" ); }
-    if( $line =~ /\226/ ) { &printError( "ne", $currentSection, $lineNumber, "unescaped endash(es)", "\226", "&endash;" ); }
-    if( $line =~ /\227/ ) { &printError( "ne", $currentSection, $lineNumber, "unescaped emdash(es)", "\227", "&emdash;" ); }
-#    if( $checkNonASCII && $line =~ /(.{0,4}?)?([\x80-\xff])(.{0,4})?/ ) {
-#      &printError( "ne", $currentSection, $lineNumber, "unescaped non-ASCII character(s) in \"${1}[[HERE]]${3}\"; first found only", "$2" );
-#    }
-    if( $line =~ /(.{0,4}?)?([\x80-\x9f])(.{0,4})?/ ) {
-      &printError( "ne", $currentSection, $lineNumber, "unsafe non-ASCII character(s) in \"${1}[[HERE]]${3}\"; first found only", "$2" );
-    }
-}
-  if( $line =~ /'/ ) { &printError( "ne", $currentSection, $lineNumber, "unescaped apostrophe(s)", "'", "\&apos; or <quote>...</quote>" ); }
-  if( $line =~ /`/ ) { &printError( "ne", $currentSection, $lineNumber, "backtick(s)", "`", "\&apos; or <quote>...</quote>" ); }
-
-  # tab
-
-  if( $line =~ /\t/ ) { &printError( "ne", $currentSection, $lineNumber, "TAB character found; convert to equivalent SPACEs" ); }
-
-  # ampersand
-  if( $line =~ /\&\s/ ) { &printError( "ne", $currentSection, $lineNumber, "possible malformed ampersand or escape sequence", "&", "&ampersand;" ); }
-
-  # emdash
-  if( $line =~ /\s-\s/ ) { &printError( "ne", $currentSection, $lineNumber, "probable malformed emdash", " - ", "\&emdash;" ); }
-  if( $line =~ /(?<!\!)--(?!>)/ ) { &printError( "ne", $currentSection, $lineNumber, "probable malformed emdash", "--", "\&emdash;" ); }
-
-  # endash
-  if( $line =~ /([0-9])-([0-9]+)(?![^<]+>)/ ) { &printError( "ne", $currentSection, $lineNumber, "possible malformed endash", "$1-$2", "$1\&endash;$2" ); }
-
-  # ellipsis
-  if( $line =~ /(\.\s*\.(\s*\.)?)/ ) { &printError( "ne", $currentSection, $lineNumber, "possible malformed ellipsis", "$1", "\&ellips; or \&lellips;" ); }
-  if( $line =~ /(\&ellips;)([^<[:space:]])/ ) { &printError( "ne", $currentSection, $lineNumber, "\&ellips; without space afterwards", "$1$2", "\&ellips; $2" ); }
-  if( $line =~ /([[:space:]]\&ellips;)/ ) { &printError( "ne", $currentSection, $lineNumber, "\&ellips; with preceding space", "$1", "\&ellips;" ); }
-  if( $line =~ /([^>])(\&lellips;)/ ) { &printError( "ne", $currentSection, $lineNumber, "possible \&lellips; used in place of \&ellips;", "$1$2", "$1\&ellips;" ); }
-  if( $line =~ /(>\&ellips;)/ ) { &printError( "ne", $currentSection, $lineNumber, "possible \&ellips; used in place of \&lellips;", "$1", ">\&lellips;" ); }
-
-  # thinspace
-  if( $line =~ m{(</?quote>)\1} ) { &printError( "ne", $currentSection, $lineNumber, "probable candidate for thinspace", "$1$1", "$1\&thinspace;$1" ); }
-  if( $line =~ m{(<quote>)(\&apos;)} || $line =~ m{(\&apos;)(</quote>)} ) { &printError( "ne", $currentSection, $lineNumber, "probable canidate for thinspace", "$1$2", "$1\&thinspace;$2" ); }
-
-  # blankline
-  if( $line =~ /(__+)/ ) { &printError( "ne", $currentSection, $lineNumber, "probable candidate for blankline", "$1", "\&blankline;" ); }
-
-  # percent
-  #  It should be safe to assume that there will be a "]>" at the end of
-  #  internal DTD subset. Previous to the end of the internal DTD subset
-  #  "%" has special meaning and shouldn't be detected.
-  if( $line =~ /]>/ ) { $endOfDTD = 1; }
-  if( $endOfDTD && $line =~ /\%/ ) { &printError( "ne", $currentSection, $lineNumber, "possible candidate for percent", "\%", "\&percent;" ); }
-
-  ##### OCR Errors
-
-  if( $line =~ m{([^.?!:);>]</((p)|(choice))>)} ) { &printError( "??", $currentSection, $lineNumber, "possible missing punctuation", "$1" ); }
-  if( $line =~ /((?<![iIeE]\.[eg])[.?!]\s+[a-z])/ ) { &printError( "??", $currentSection, $lineNumber, "possible bad initial capitalization", "$1" ); }
-  if( $line =~ /([a-zA-Z][0-9][a-zA-Z])/ ) { &printError( "??", $currentSection, $lineNumber, "probable replacement of number for letter", "$1" ); }
-  if( $line =~ />[^<]*-[[:space:]]/ ) { &printError( "??", $currentSection, $lineNumber, "possible retained end-of-line hyphen(s)" ); }
-
-  ##### Obsolete Markup
-
-  if( $line =~ /\&lsquot;/ ) { &printError( "ne", $currentSection, $lineNumber, "probable obsolete markup", "\&lsquot;", "<quote>" ); }
-  if( $line =~ /\&rsquot;/ ) { &printError( "ne", $currentSection, $lineNumber, "probable obsolete markup", "\&rsquot;", "</quote>" ); }
-  if( $line =~ /\&ldquot;/ ) { &printError( "ne", $currentSection, $lineNumber, "probable obsolete markup", "\&ldquot;", "<quote>" ); }
-  if( $line =~ /\&rdquot;/ ) { &printError( "ne", $currentSection, $lineNumber, "probable obsolete markup", "\&rdquot;", "</quote>" ); }
-  if( $line =~ /\&quot;/ ) { &printError( "ne", $currentSection, $lineNumber, "possible obsolete markup", "\&quot;", "<quote> or </quote>" ); }
-  if( $line =~ /(\&link.[^;]+;)/ ) { &printError( "ne", $currentSection, $lineNumber, "probable obsolete markup", "$1", "use <bookref.../> instead" ); }
-  if( $line =~ /\&([^[:space:]]+);/ ) {
-    unless( $1 =~ /^(?:link|inclusion)/ ) {
-      &printError( "ne", $currentSection, $lineNumber, "possible obsolete markup", "\&$1\;", "<ch.$1/>" );
-    }
-  }
-  if( $line =~ /(<a([^>]*) class="footnote"(.*?)>)/ )  { &printError( "ne", $currentSection, $lineNumber, "obsolete markup", "$1", "<footref$2$3>" ); }
-
-  ##### Character Attributes
-  if( $line =~ /[^>]((CLOSE\s+)?COMBAT\sSKILL)/ || $line =~ /((CLOSE\s+)?COMBAT\sSKILL)[^<]/ ) {
-    &printError( "ne", $currentSection, $lineNumber, "possible missing markup", "$1", "<typ class=\"attribute\">$1</typ>" );
-  }
-  if( $line =~ /[^>](ENDURANCE)/ || $line =~ /(ENDURANCE)[^<]/ ) {
-    &printError( "ne", $currentSection, $lineNumber, "possible missing markup", "ENDURANCE", "<typ class=\"attribute\">ENDURANCE</typ>" );
-  }
-  if( $line =~ /[^>](WILLPOWER)/ || $line =~ /(WILLPOWER)[^<]/ ) {
-    &printError( "ne", $currentSection, $lineNumber, "possible missing markup", "WILLPOWER", "<typ class=\"attribute\">WILLPOWER</typ>" );
-  }
-
-  ##### Links
-  if( $line =~ /[^>](random[[:space:]]+number[[:space:]]+table)/i ) {
-    &printError( "ne", $currentSection, $lineNumber, "possible missing markup", "$1", "<a idref=\"random\">$1</a>" );
-  }
-  if( $line =~ /[^>](action[[:space:]]+charts?)/i ) {
-    &printError( "ne", $currentSection, $lineNumber, "possible missing markup", "$1", "<a idref=\"action\">$1</a>" );
-  }
-
-  ##### Others
-  if( $line =~ m{<!--(?!/?ERRTAG)} ) { &printError( "ne", $currentSection, $lineNumber, "XML comment found (check for editor comments)" ); }
-  if( $line =~ /([[:upper:]]{5,})/ &&
-      $` !~ /<signpost>$/ &&
-      (($language eq 'en' && 
-        $1 ne "ENDURANCE" &&
-        $1 ne "COMBAT" &&
-        $1 ne "WILLPOWER" &&
-        $1 ne "CLOSE") ||
-       ($language eq 'es' &&
-        $1 ne 'DESTREZA' &&
-        $1 ne 'RESISTENCIA')) &&
-        $1 ne "DOCTYPE" &&
-        $1 ne "ENTITY" &&
-        $1 ne "XVIII" &&
-        $1 ne "ERRTAG" )
-      { &printError( "ne", $currentSection, $lineNumber, "possible <signpost> needed", "$1", "<signpost>$1</signpost>" ); }
-
-  #####
-  ++$lineNumber;
-}
-
-unless( $endOfDTD || $skipLines > 0 ) { print "End of document reached without finding end of internal DTD subset \"]>\".\n"; }
-
-################################################################################
-
-sub printError {
-  my ($type, $section, $line, $message, $original, $corrected) = @_;
-  my $report = "";
-
-  if( $useCorr ) {
-    $report = "($type) $section: ";
-    if( defined $original ) { $report .= "$original "; }
-    if( defined $corrected ) { $report .= "-> $corrected "; }
-    $report .= "[$initials: $message <line $line>]\n";
-  }
-  else {
-    $report = "line $line ($section): $message";
-    if( defined $original ) { $report .= " \"$original\""; }
-    if( defined $corrected ) { $report .= " ($corrected)"; }
-    $report .= "\n";
-  }
-
-  print $report;
-
-  ++$errorCount;
-  if( $maxErrorCount > 0 && $errorCount > $maxErrorCount ) { die "Maximum number of errors ($maxErrorCount) exceeded. Quitting.\n"; }
-}
diff --git a/scripts/gbtodot.pl b/scripts/gbtodot.pl
deleted file mode 100755 (executable)
index 76f1e4f..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Created from gengraph.pl by Thomas Wolmer
-# 19 December 2002
-#
-# This program makes assumptions about the input XML file:
-#
-#  * the title of the numbered sections is a simple number
-#  * the title appears on a line by itself
-#  * the numbered sections are followed by sections of class "backmatter"
-#
-################################################################################
-
-use strict;
-
-die( "gbtodot inputXMLfile outputDOTfile\n" ) if( $#ARGV + 1 < 2 );
-
-my $infile = shift @ARGV;
-my $outfile = shift @ARGV;
-my $baseURL = shift @ARGV;
-
-die( "Input file and output file the same: \"$infile\" \"$outfile\"\n" ) if( $infile eq $outfile );
-
-open( INFILE, "<$infile" ) or die( "Cannot read $infile: $!\n" );
-my @inlines = <INFILE>;
-close INFILE;
-
-my $graphName = $infile;
-$graphName =~ s/\.xml$//;
-
-open( OUTFILE, ">$outfile" ) or die( "Cannot write to $outfile: $!\n" );
-print( OUTFILE "digraph theGraph {\n  nodesep=.1; \n  ranksep=.2;\n  ratio=auto;\n");
-print( OUTFILE "  node [height=.3,width=.3,shape=ellipse,fixedsize=true,fontname=Arial,fontsize=8]\n");
-print( OUTFILE "  edge [arrowsize=.7]\n");
-
-my $section = -1;
-my $combat = 0;
-my $smallIll = 0;
-my $ill = 0;
-my @attributes = ();
-my $backmatterFound;
-
-foreach my $line (@inlines) {
-    if( $line =~ m|class="backmatter"| ) {
-        last;
-    }
-    if( $line =~ m|<title>(\d+)</title>| ) {
-        # Visualize the previous section's attributes
-        if( $combat ) {
-            push( @attributes, ( "color=firebrick1", "style=filled" ) );
-          }
-        # Assume that small and large illustrations never appear together
-        if( $smallIll ) {
-            push( @attributes, ( "fontcolor=DarkGreen", "label=\"s$smallIll\\n$section\"" ) );
-        }
-        if( $ill ) {
-            push( @attributes, ( "fontcolor=blue", "label=\"i$ill\\n$section\"" ) );
-        }
-        if( defined( $baseURL ) ) {
-            push( @attributes, ( "URL=\"${baseURL}sect${section}.htm\"", "" ) );
-        }
-
-        # Print out extra section data if needed
-        if( $#attributes > 0 && $section != -1 ) {
-#            print( OUTFILE "  $section [", join( ',', @attributes ), "];\n");
-            printf( OUTFILE "  %03d [%s];\n", $section, join( ',', @attributes ) );
-        }
-        $combat = 0;
-        $smallIll = 0;
-        $ill = 0;
-        @attributes = ();
-        $section = $1;
-    }
-    elsif( $line =~ m|<choice\sidref="sect(\d+)">| ) {
-#        print( OUTFILE "  $section -> $1;\n" );
-        printf( OUTFILE "  %03d -> %03d;\n", $section, $1 );
-    }
-    elsif( $line =~ m|idref="sect(\d+)"| && $section != -1 ) { # misc links (should be pruned later)
-        printf( OUTFILE "  %03d -> %03d [style=dotted,dir=none];\n", $1, $section );
-    }
-
-    if( $line =~ m|<combat>| ) {
-        $combat = 1;
-    }
-
-    if( $line =~ m|src=\"ill(\d+)| ) {
-        $ill = $1;
-    }
-
-    if( $line =~ m/src=\"s(mall|ect)(\d+)/ ) {
-        $smallIll = $2;
-    }
-}
-
-print( OUTFILE "}\n" );
-close OUTFILE;
diff --git a/scripts/gbtolatex.pl b/scripts/gbtolatex.pl
deleted file mode 100755 (executable)
index 0f32b70..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-#!/bin/perl -w
-#
-# gbtolatex.pl
-# 10 April 2002
-#
-# Creates LaTeX gamebook from XML source. This should subsequently be
-# used to create a PDF or PostScript version.
-#####
-
-use strict;
-
-my $PROGRAM_NAME      = "gbtolatex";
-my $XML_PATH          = "xml";
-my $XML_SOURCE        = "";
-my $PWD               = `pwd`;
-chomp($PWD);
-my $BOOK_PATH         = $PWD."/latex";
-my $TITLE_COLOR       = "";
-my $USE_ILLUSTRATORS  = "";
-
-# Programs
-#
-my $XMLPROC = "xalan";
-# my $XMLPROC = "/usr/local/bin/xmlto";
-
-# Check AONPATH
-my $DATADIR=$ENV{'AONDATA'} || $ENV{'AONPATH'}."/data";
-if ( ! -d "$DATADIR" ) {
-       if ( ! defined($ENV{'AONPATH'}) && ! defined ($ENV{'AONDATA'}) ) {
-               print STDERR "AONPATH environment variable not set, it should be defined to\n";
-               print STDERR "wherever the AON files are.\n";
-       } else {
-               print STDERR "Cannot find $DATADIR !\n";
-       }
-       exit 1;
-}
-##
-
-unless( $ARGV[ 0 ] ) { die "Usage:\n\t${PROGRAM_NAME} book-code [LANGUAGE]\n"; }
-
-print "Reminder:\n\tDid you uncomment the LaTeX special character\n\tdeclarations in the book's XML file?\n";
-
-my $bookCode = $ARGV[ 0 ];
-my $language = $ARGV[ 1 ] || "";
-
-# TODO:
-# - convert the bookcode's if then else to a hash array
-# - allow usage of unknown book codes
-
-if( $bookCode eq "01fftd" ) {
-    $XML_SOURCE        = "01fftd.xml";
-    $BOOK_PATH         .= "/lw/01fftd";
-    $TITLE_COLOR       = "0.0,0.4,0.2";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "02fotw" ) {
-    $XML_SOURCE        = "02fotw.xml";
-    $BOOK_PATH         .= "/lw/02fotw";
-    $TITLE_COLOR       = "0.0,0.6,0.6";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "03tcok" ) {
-    $XML_SOURCE        = "03tcok.xml";
-    $BOOK_PATH         .= "/lw/03tcok";
-    $TITLE_COLOR       = "0.0,0.6,0.8";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "04tcod" ) {
-    $XML_SOURCE        = "04tcod.xml";
-    $BOOK_PATH         .= "/lw/04tcod";
-    $TITLE_COLOR       = "0.0,0.0,0.6";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "05sots" ) {
-    $XML_SOURCE        = "05sots.xml";
-    $BOOK_PATH         .= "/lw/05sots";
-    $TITLE_COLOR       = "0.8,0.6,0.0";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "06tkot" ) {
-    $XML_SOURCE        = "06tkot.xml";
-    $BOOK_PATH         .= "/lw/06tkot";
-    $TITLE_COLOR       = "0.6,0.6,0.0";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "07cd" ) {
-    $XML_SOURCE        = "07cd.xml";
-    $BOOK_PATH         .= "/lw/07cd";
-    $TITLE_COLOR       = "0.0,0.8,0.4";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "08tjoh" ) {
-    $XML_SOURCE        = "08tjoh.xml";
-    $BOOK_PATH         .= "/lw/08tjoh";
-    $TITLE_COLOR       = "0.4,0.6,0.4";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "09tcof" ) {
-    $XML_SOURCE        = "09tcof.xml";
-    $BOOK_PATH         .= "/lw/09tcof";
-    $TITLE_COLOR       = "1.0,0.6,0.0";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "10tdot" ) {
-    $XML_SOURCE        = "10tdot.xml";
-    $BOOK_PATH         .= "/lw/10tdot";
-    $TITLE_COLOR       = "1.0,0.0,0.0";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "11tpot" ) {
-    $XML_SOURCE        = "11tpot.xml";
-    $BOOK_PATH         .= "/lw/11tpot";
-    $TITLE_COLOR       = "0.5,0.5,0.4";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "12tmod" ) {
-    $XML_SOURCE        = "12tmod.xml";
-    $BOOK_PATH         .= "/lw/12tmod";
-    $TITLE_COLOR       = "0.6,0.0,0.0";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-else{ die "Error:\n\tUknown book code.\n"; }
-
-chdir( "$DATADIR" ) or die( "Cannot open Project Aon data directory \"$DATADIR\": $!" );
-
-# If there is a LANGUAGE set use it
-if ( $language ne "" ) {
-# Languages are prefixes to the booknames in the files
-       $XML_SOURCE =~ s/\.xml$/\.${language}.xml/;
-}
-
-# Check that the XML file is there
-if ( ! -r $DATADIR."/".$XML_SOURCE ) {
-       die "Could not find source file $XML_SOURCE in $DATADIR!";
-}
-if ( ! -r $DATADIR."/latex.xsl" ) {
-       die "Could not find LaTeX stylesheet (latex.xsl) in $DATADIR!";
-}
-
-
-# Create the output directory if it does not exist already
-print "Checking directory $BOOK_PATH...";
-if ( ! -d "$BOOK_PATH" ) {
-       print "...creating";
-       `mkdir -p "$BOOK_PATH"` || die "Could not create output directory $BOOK_PATH: $!";
-}
-print "..done.\n";
-
-my $OUTPUTFILE="$BOOK_PATH/$bookCode.tex";
-if ( $language ne "" ) {
-# Languages are prefixes to the booknames in the files
-       $OUTPUTFILE =~ s/\.tex$/\.${language}.tex/;
-}
-
-# Run the XML preprocessor
-# TODO: use system() properly here and check return value
-print "Processing book $bookCode and storing result in $OUTPUTFILE...";
-# For Xmlto, which uses xsltproc:
-# (Does not work)
-# `$XMLPROC -v -o $BOOK_PATH -x ${DATADIR}/latex.xsl dvi ${DATADIR}/${XML_SOURCE}`;
-# Apache's Xalan:
-`$XMLPROC  -xsl ${DATADIR}/latex.xsl -in  ${DATADIR}/${XML_SOURCE} -out $OUTPUTFILE`;
-# Apache Xalan, Java version:
-# print qx{$JAVA org.apache.xalan.xslt.Process -IN $XML_PATH/$XML_SOURCE -XSL $XML_PATH/latex.xsl -OUT $BOOK_PATH/$bookCode.tex -PARAM title-color \"$TITLE_COLOR\" -PARAM use-illustrators \"$USE_ILLUSTRATORS\"};
-#
-print "...done\n";
-
-
-# End of script
-exit 0;
-
diff --git a/scripts/gbtopdaxhtml.pl b/scripts/gbtopdaxhtml.pl
deleted file mode 100755 (executable)
index 8db2f8b..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-#!/bin/perl -w
-#
-# gbtoxhtml.pl
-# 10 April 2002
-#
-# Creates XHTML gamebook from XML source.
-#
-# $Id$
-#
-# $Log$
-# Revision 1.1  2005/04/26 04:47:54  jonathan.blake
-# Initial revision
-#
-# Revision 1.1  2002/10/22 16:20:26  jblake
-# Initial revision
-#
-#
-# Revision 1.3  2002/10/20 05:47:50  jblake
-# Added Highway Holocaust to the book list.
-#
-# Revision 1.2  2002/10/18 15:42:25  jblake
-# Added Grey Star the Wizard to the book list.
-#
-# Revision 1.1  2002/10/18 15:38:41  jblake
-# Initial revision
-#
-#####
-
-use strict;
-
-##
-
-my $PROGRAM_NAME    = "gbtoxhtml";
-my $PATH_PREFIX     = "$ENV{'HOME'}/aon/data";
-my $XML_PATH        = "xml";
-my $BOOK_PATH       = "xhtml-pda";
-
-##
-
-my $CREATE_CSS = "$ENV{'HOME'}/aon/bin/create-pdacss.pl";
-my $RXP        = "$ENV{'HOME'}/aon/bin/rxp";
-my $CP         = "/bin/cp";
-my $MV         = "/bin/mv";
-my $TAR        = "/usr/local/bin/tar";
-my $ZIP        = "/bin/zip";
-my $BZIP2      = "/bin/bzip2";
-my $JAVA       = "/usr/j2sdk1_3_0_02/bin/java";
-my $RM         = "/bin/rm";
-
-##
-
-my $XML_SOURCE        = "";
-my $TEXT_COLOR        = "";
-my $LINK_COLOR        = "";
-my $SCROLL_BASE_COLOR = "";
-my $USE_ILLUSTRATORS  = "";
-
-##
-
-unless( $ARGV[ 0 ] ) { die "Usage:\n\t${PROGRAM_NAME} BOOK_CODE\n"; }
-
-print "Reminder:\n\tDid you comment out the LaTeX special character\n\tdeclarations in the book's XML file?\n";
-
-my( $bookCode ) = @ARGV;
-
-if( $bookCode eq "01fftd" ) {
-    $XML_SOURCE        = "01fftd.xml";
-    $BOOK_PATH         .= "/lw/01fftd";
-    $TEXT_COLOR        = "#003300";
-    $LINK_COLOR        = "#006633";
-    $SCROLL_BASE_COLOR = "#003300";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "02fotw" ) {
-    $XML_SOURCE        = "02fotw.xml";
-    $BOOK_PATH         .= "/lw/02fotw";
-    $TEXT_COLOR        = "#003333";
-    $LINK_COLOR        = "#009999";
-    $SCROLL_BASE_COLOR = "#003333";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "03tcok" ) {
-    $XML_SOURCE        = "03tcok.xml";
-    $BOOK_PATH         .= "/lw/03tcok";
-    $TEXT_COLOR        = "#003366";
-    $LINK_COLOR        = "#0099cc";
-    $SCROLL_BASE_COLOR = "#003366";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "04tcod" ) {
-    $XML_SOURCE        = "04tcod.xml";
-    $BOOK_PATH         .= "/lw/04tcod";
-    $TEXT_COLOR        = "#000033";
-    $LINK_COLOR        = "#000099";
-    $SCROLL_BASE_COLOR = "#000033";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "05sots" ) {
-    $XML_SOURCE        = "05sots.xml";
-    $BOOK_PATH         .= "/lw/05sots";
-    $TEXT_COLOR        = "#330000";
-    $LINK_COLOR        = "#cc9900";
-    $SCROLL_BASE_COLOR = "#330000";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "06tkot" ) {
-    $XML_SOURCE        = "06tkot.xml";
-    $BOOK_PATH         .= "/lw/06tkot";
-    $TEXT_COLOR        = "#404000";
-    $LINK_COLOR        = "#999900";
-    $SCROLL_BASE_COLOR = "#404000";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "07cd" ) {
-    $XML_SOURCE        = "07cd.xml";
-    $BOOK_PATH         .= "/lw/07cd";
-    $TEXT_COLOR        = "#003300";
-    $LINK_COLOR        = "#00cc66";
-    $SCROLL_BASE_COLOR = "#003300";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "08tjoh" ) {
-    $XML_SOURCE        = "08tjoh.xml";
-    $BOOK_PATH         .= "/lw/08tjoh";
-    $TEXT_COLOR        = "#334033";
-    $LINK_COLOR        = "#669966";
-    $SCROLL_BASE_COLOR = "#334033";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "09tcof" ) {
-    $XML_SOURCE        = "09tcof.xml";
-    $BOOK_PATH         .= "/lw/09tcof";
-    $TEXT_COLOR        = "#330000";
-    $LINK_COLOR        = "#ff9900";
-    $SCROLL_BASE_COLOR = "#330000";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "10tdot" ) {
-    $XML_SOURCE        = "10tdot.xml";
-    $BOOK_PATH         .= "/lw/10tdot";
-    $TEXT_COLOR        = "#330000";
-    $LINK_COLOR        = "#ff0000";
-    $SCROLL_BASE_COLOR = "#330000";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "11tpot" ) {
-    $XML_SOURCE        = "11tpot.xml";
-    $BOOK_PATH         .= "/lw/11tpot";
-    $TEXT_COLOR        = "#333300";
-    $LINK_COLOR        = "#808066";
-    $SCROLL_BASE_COLOR = "#333300";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "12tmod" ) {
-    $XML_SOURCE        = "12tmod.xml";
-    $BOOK_PATH         .= "/lw/12tmod";
-    $TEXT_COLOR        = "#330000";
-    $LINK_COLOR        = "#990000";
-    $SCROLL_BASE_COLOR = "#330000";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "13tplor" ) {
-    $XML_SOURCE        = "13tplor.xml";
-    $BOOK_PATH         .= "/lw/13tplor";
-    $TEXT_COLOR        = "#333300";
-    $LINK_COLOR        = "#666633";
-    $SCROLL_BASE_COLOR = "#333300";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "15tdc" ) {
-    $XML_SOURCE        = "15tdc.xml";
-    $BOOK_PATH         .= "/lw/15tdc";
-    $TEXT_COLOR        = "#000033";
-    $LINK_COLOR        = "#6699cc";
-    $SCROLL_BASE_COLOR = "#000033";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "01gstw" ) {
-    $XML_SOURCE        = "01gstw.xml";
-    $BOOK_PATH         .= "/gs/01gstw";
-    $TEXT_COLOR        = "#330066";
-    $LINK_COLOR        = "#9900ff";
-    $SCROLL_BASE_COLOR = "#330066";
-}
-elsif( $bookCode eq "01hh" ) {
-    $XML_SOURCE        = "01hh.xml";
-    $BOOK_PATH         .= "/fw/01hh";
-    $TEXT_COLOR        = "#330066";
-    $LINK_COLOR        = "#9900ff";
-    $SCROLL_BASE_COLOR = "#330066";
-}
-elsif( $bookCode eq "rh" ) {
-    $XML_SOURCE        = "rh.xml";
-    $BOOK_PATH         .= "/misc/rh";
-    $TEXT_COLOR        = "#400000";
-    $LINK_COLOR        = "#339933";
-    $SCROLL_BASE_COLOR = "#400000";
-}
-else{ die "Error:\n\tUknown book code ($bookCode).\n"; }
-
-chdir( "$PATH_PREFIX" ) or die( "Cannot open Project Aon data directory \"$PATH_PREFIX\": $!" );
-print STDERR "Validating XML... ";
-system( "$RXP", "-Vs", "$XML_PATH/$XML_SOURCE" ) == 0 or die( "failed\n" );
-print STDERR "succeeded\n";
-
--d "$BOOK_PATH" or die( "Book directory does not exist or isn't a directory: $!\n" );
-
-print STDERR "Removing previous files in \"$PATH_PREFIX/$BOOK_PATH/\"...\n";
-qx{$RM $BOOK_PATH/*};
-print STDERR "Processing XSL Transformation...\n";
-print STDERR "Warning:\n\tdiscarding top-level output of transformation\n";
-print qx{$JAVA org.apache.xalan.xslt.Process -IN $XML_PATH/$XML_SOURCE -XSL $XML_PATH/xhtml-pda.xsl -OUT /dev/null -PARAM book-path \"$PATH_PREFIX/$BOOK_PATH\" -PARAM text-color \"$TEXT_COLOR\" -PARAM link-color \"$LINK_COLOR\" -PARAM use-illustrators \"$USE_ILLUSTRATORS\"};
-
-print STDERR "Creating CSS\n";
-print qx{$CREATE_CSS $BOOK_PATH \"$TEXT_COLOR\" \"\#ffffe6\" \"$SCROLL_BASE_COLOR\" \"\#e6e6cc\" \"\#ffffe6\" \"$LINK_COLOR\" \"$LINK_COLOR\" \"\#e6e6cc\" \"$LINK_COLOR\"};
-
-print STDERR "Copying archived image files...\n";
-qx{$CP images/$BOOK_PATH/*gif images/$BOOK_PATH/*jpg $BOOK_PATH};
diff --git a/scripts/gbtopml.pl b/scripts/gbtopml.pl
deleted file mode 100755 (executable)
index c8a87c2..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/local/bin/perl -w
-#
-# gbtolatex.pl
-# 10 April 2002
-#
-# Creates LaTeX gamebook from XML source. This should subsequently be
-# used to create a PDF or PostScript version.
-#####
-
-use strict;
-
-my $PROGRAM_NAME = "gbtopml";
-my $PATH_PREFIX  = "$ENV{'HOME'}/aon/data";
-my $XML_PATH = "$PATH_PREFIX/xml";
-my $PML_PATH = "$PATH_PREFIX/pml";
-
-##
-
-unless( $ARGV[ 0 ] ) { die "Usage:\n\t${PROGRAM_NAME} book-code\n"; }
-
-print STDERR "Reminder:\n\tDid you declare the PML character entities in the XML?\n";
-
-my $bookCode         = $ARGV[ 0 ];
-my $XML_SOURCE       = "";
-my $BOOK_PATH        = "";
-my $USE_ILLUSTRATORS = "";
-
-if( $bookCode eq "01fftd" ) {
-    $XML_SOURCE        = "01fftd.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "02fotw" ) {
-    $XML_SOURCE        = "02fotw.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "03tcok" ) {
-    $XML_SOURCE        = "03tcok.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "04tcod" ) {
-    $XML_SOURCE        = "04tcod.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "05sots" ) {
-    $XML_SOURCE        = "05sots.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "06tkot" ) {
-    $XML_SOURCE        = "06tkot.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "07cd" ) {
-    $XML_SOURCE        = "07cd.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "08tjoh" ) {
-    $XML_SOURCE        = "08tjoh.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "09tcof" ) {
-    $XML_SOURCE        = "09tcof.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "10tdot" ) {
-    $XML_SOURCE        = "10tdot.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "11tpot" ) {
-    $XML_SOURCE        = "11tpot.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-elsif( $bookCode eq "12tmod" ) {
-    $XML_SOURCE        = "12tmod.xml";
-    $BOOK_PATH         = "lw/";
-    $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
-}
-else{ die "Error:\n\tUknown book code.\n"; }
-
-print qx{java org.apache.xalan.xslt.Process -IN $XML_PATH/$XML_SOURCE -XSL $XML_PATH/pml.xsl -OUT $PML_PATH/$BOOK_PATH/$bookCode.txt -PARAM use-illustrators \"$USE_ILLUSTRATORS\"};
diff --git a/scripts/gbtoxhtml-all.pl b/scripts/gbtoxhtml-all.pl
deleted file mode 100755 (executable)
index ebb11f4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-my $gbtoxhtml = "$ENV{AONPATH}/bin/gbtoxhtml.pl";
-my @bookCodes = qw{ 01fftd  02fotw  03tcok  04tcod
-                    05sots  06tkot  07cd    08tjoh
-                    09tcof  10tdot  11tpot  12tmod
-                    13tplor 14tcok  15tdc
-                    01gstw  02tfc   03btng
-                    rh
-                };
-
-foreach my $bookCode (@bookCodes) {
-    print "\n" . ('~' x 10) . " $bookCode " . ('~' x 10) . "\n\n";
-    print qx{$gbtoxhtml $bookCode};
-}
diff --git a/scripts/gbtoxhtml-single.pl b/scripts/gbtoxhtml-single.pl
deleted file mode 100755 (executable)
index ff19731..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-#!/usr/local/bin/perl -w
-#
-# gbtoxhtml-single.pl
-# 10 April 2002
-#
-# Creates XHTML gamebook from XML source.
-#####
-
-use strict;
-
-my $PROGRAM_NAME = "gbtoxhtml-single";
-my $PATH_PREFIX  = "$ENV{'HOME'}/aon/data";
-my $XML_PATH = "$PATH_PREFIX/xml";
-my $XHTML_PATH = "$PATH_PREFIX/xhtml-single";
-
-##
-
-unless( $ARGV[ 0 ] ) { die "Usage:\n\t${PROGRAM_NAME} book-code\n"; }
-
-my $CREATE_CSS = "$ENV{'HOME'}/aon/bin/create-css-xhtml-single.pl";
-my $RXP        = "$ENV{'HOME'}/aon/bin/rxp";
-my $JAVA       = "/usr/j2sdk1_3_0_02/bin/java";
-
-##
-
-my $BOOK_PATH         = "";
-my $XML_SOURCE        = "";
-my $TEXT_COLOR        = "";
-my $LINK_COLOR        = "";
-my $SCROLL_BASE_COLOR = "";
-my $USE_ILLUSTRATORS  = "";
-
-##
-
-unless( $ARGV[ 0 ] ) { die "Usage:\n\t${PROGRAM_NAME} BOOK_CODE\n"; }
-
-print "Reminder:\n\tDid you comment out the LaTeX special character\n\tdeclarations in the book's XML file?\n";
-
-my( $bookCode ) = @ARGV;
-
-if( $bookCode eq "01fftd" ) {
-    $XML_SOURCE        = "01fftd.xml";
-    $BOOK_PATH         .= "/lw/01fftd";
-    $TEXT_COLOR        = "#003300";
-    $LINK_COLOR        = "#006633";
-    $SCROLL_BASE_COLOR = "#003300";
-}
-elsif( $bookCode eq "02fotw" ) {
-    $XML_SOURCE        = "02fotw.xml";
-    $BOOK_PATH         .= "/lw/02fotw";
-    $TEXT_COLOR        = "#003333";
-    $LINK_COLOR        = "#009999";
-    $SCROLL_BASE_COLOR = "#003333";
-}
-elsif( $bookCode eq "03tcok" ) {
-    $XML_SOURCE        = "03tcok.xml";
-    $BOOK_PATH         .= "/lw/03tcok";
-    $TEXT_COLOR        = "#003366";
-    $LINK_COLOR        = "#0099cc";
-    $SCROLL_BASE_COLOR = "#003366";
-}
-elsif( $bookCode eq "04tcod" ) {
-    $XML_SOURCE        = "04tcod.xml";
-    $BOOK_PATH         .= "/lw/04tcod";
-    $TEXT_COLOR        = "#000033";
-    $LINK_COLOR        = "#000099";
-    $SCROLL_BASE_COLOR = "#000033";
-}
-elsif( $bookCode eq "05sots" ) {
-    $XML_SOURCE        = "05sots.xml";
-    $BOOK_PATH         .= "/lw/05sots";
-    $TEXT_COLOR        = "#330000";
-    $LINK_COLOR        = "#cc9900";
-    $SCROLL_BASE_COLOR = "#330000";
-}
-elsif( $bookCode eq "06tkot" ) {
-    $XML_SOURCE        = "06tkot.xml";
-    $BOOK_PATH         .= "/lw/06tkot";
-    $TEXT_COLOR        = "#404000";
-    $LINK_COLOR        = "#999900";
-    $SCROLL_BASE_COLOR = "#404000";
-}
-elsif( $bookCode eq "07cd" ) {
-    $XML_SOURCE        = "07cd.xml";
-    $BOOK_PATH         .= "/lw/07cd";
-    $TEXT_COLOR        = "#003300";
-    $LINK_COLOR        = "#00cc66";
-    $SCROLL_BASE_COLOR = "#003300";
-}
-elsif( $bookCode eq "08tjoh" ) {
-    $XML_SOURCE        = "08tjoh.xml";
-    $BOOK_PATH         .= "/lw/08tjoh";
-    $TEXT_COLOR        = "#334033";
-    $LINK_COLOR        = "#669966";
-    $SCROLL_BASE_COLOR = "#334033";
-}
-elsif( $bookCode eq "09tcof" ) {
-    $XML_SOURCE        = "09tcof.xml";
-    $BOOK_PATH         .= "/lw/09tcof";
-    $TEXT_COLOR        = "#330000";
-    $LINK_COLOR        = "#ff9900";
-    $SCROLL_BASE_COLOR = "#330000";
-}
-elsif( $bookCode eq "10tdot" ) {
-    $XML_SOURCE        = "10tdot.xml";
-    $BOOK_PATH         .= "/lw/10tdot";
-    $TEXT_COLOR        = "#330000";
-    $LINK_COLOR        = "#ff0000";
-    $SCROLL_BASE_COLOR = "#330000";
-}
-elsif( $bookCode eq "11tpot" ) {
-    $XML_SOURCE        = "11tpot.xml";
-    $BOOK_PATH         .= "/lw/11tpot";
-    $TEXT_COLOR        = "#333300";
-    $LINK_COLOR        = "#808066";
-    $SCROLL_BASE_COLOR = "#333300";
-}
-elsif( $bookCode eq "12tmod" ) {
-    $XML_SOURCE        = "12tmod.xml";
-    $BOOK_PATH         .= "/lw/12tmod";
-    $TEXT_COLOR        = "#330000";
-    $LINK_COLOR        = "#990000";
-    $SCROLL_BASE_COLOR = "#330000";
-}
-elsif( $bookCode eq "13tplor" ) {
-    $XML_SOURCE        = "13tplor.xml";
-    $BOOK_PATH         .= "/lw/13tplor";
-    $TEXT_COLOR        = "#333300";
-    $LINK_COLOR        = "#666633";
-    $SCROLL_BASE_COLOR = "#333300";
-}
-elsif( $bookCode eq "15tdc" ) {
-    $XML_SOURCE        = "15tdc.xml";
-    $BOOK_PATH         .= "/lw/15tdc";
-    $TEXT_COLOR        = "#000033";
-    $LINK_COLOR        = "#6699cc";
-    $SCROLL_BASE_COLOR = "#000033";
-}
-elsif( $bookCode eq "01gstw" ) {
-    $XML_SOURCE        = "01gstw.xml";
-    $BOOK_PATH         .= "/gs/01gstw";
-    $TEXT_COLOR        = "#330066";
-    $LINK_COLOR        = "#9900ff";
-    $SCROLL_BASE_COLOR = "#330066";
-}
-elsif( $bookCode eq "01hh" ) {
-    $XML_SOURCE        = "01hh.xml";
-    $BOOK_PATH         .= "/fw/01hh";
-    $TEXT_COLOR        = "#330066";
-    $LINK_COLOR        = "#9900ff";
-    $SCROLL_BASE_COLOR = "#330066";
-}
-elsif( $bookCode eq "rh" ) {
-    $XML_SOURCE        = "rh.xml";
-    $BOOK_PATH         .= "/misc/rh";
-    $TEXT_COLOR        = "#400000";
-    $LINK_COLOR        = "#339933";
-    $SCROLL_BASE_COLOR = "#400000";
-}
-else{ die "Error:\n\tUknown book code ($bookCode).\n"; }
-
-qx{$JAVA org.apache.xalan.xslt.Process -IN $XML_PATH/$XML_SOURCE -XSL $XML_PATH/xhtml-single.xsl -OUT $XHTML_PATH/$BOOK_PATH/$bookCode.html -PARAM use-illustrators \"$USE_ILLUSTRATORS\"};
-qx{$CREATE_CSS $XHTML_PATH/$BOOK_PATH \"$TEXT_COLOR\" \"\#ffffe6\" \"$SCROLL_BASE_COLOR\" \"\#e6e6cc\" \"\#ffffe6\" \"$LINK_COLOR\" \"$LINK_COLOR\" \"\#e6e6cc\" \"$LINK_COLOR\"};
diff --git a/scripts/gbtoxhtml.pl b/scripts/gbtoxhtml.pl
deleted file mode 100755 (executable)
index d34f123..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/usr/bin/perl -w
-#
-# gbtoxhtml.pl
-#
-# Creates XHTML gamebook from XML source.
-#
-# $Id$
-#
-# $Log$
-# Revision 2.1  2006/03/04 01:07:43  jonathan.blake
-# Added parameter to pass the language of the document to the transformation.
-#
-# Revision 2.0  2006/02/28 23:50:54  jonathan.blake
-# Extensive overhaul and changed command line interface
-#
-# Revision 1.2  2005/10/13 00:48:47  angantyr
-# Put Paul Bonner as illustrator of the GS books.
-#
-# Revision 1.1.1.1  2005/04/26 04:47:33  jonathan.blake
-# Imported scripts
-#
-# Revision 1.8  2003/07/14 17:20:09  jblake
-# Modified for Xalan 2.5.1, added support for AONPATH
-# environment variable, commented out RXP validation.
-#
-# Revision 1.7  2002/11/10 07:52:15  jblake
-# Added more books.
-#
-# Revision 1.6  2002/11/10 03:57:50  jblake
-# Added some missing semicolons.
-#
-# Revision 1.5  2002/11/07 18:43:14  jblake
-# Added books (02fotw, 13tplor, and 15tdc) and added an illustrator to the list.
-#
-# Revision 1.4  2002/10/23 18:58:34  jblake
-# Added Flight from the Dark to the valid book list, and made
-# a change to the working directory in order to work with
-# Xalan-J 2.4.0.
-#
-# Revision 1.3  2002/10/20 05:47:50  jblake
-# Added Highway Holocaust to the book list.
-#
-# Revision 1.2  2002/10/18 15:42:25  jblake
-# Added Grey Star the Wizard to the book list.
-#
-# Revision 1.1  2002/10/18 15:38:41  jblake
-# Initial revision
-#
-# ///// To Do
-# * make the transformation more generic by using an xslt-params rule
-# 
-#####
-
-use strict;
-
-delete @ENV{qw(PATH IFS CDPATH ENV BASH_ENV)}; # clean house for taint mode
-
-my $PROGRAM_NAME    = 'gbtoxhtml';
-my $USAGE           = "$PROGRAM_NAME [options]\n\t--book=[book code]\n\t--meta=[metadata file]\n\t--xml=[book XML]\n\t--xsl=[XSL transformation]\n";
-
-my $FILENAME_SEPARATOR = '/';
-
-my $RXP        = '/home/projectaon/bin/rxp';
-my $CP         = '/bin/cp';
-my $MV         = '/bin/mv';
-my $TAR        = '/bin/tar';
-my $ZIP        = '/usr/bin/zip';
-my $BZIP2      = '/usr/bin/bzip2';
-my $JAVA       = '/usr/bin/java';
-my $XALAN_JAR  = '/home/projectaon/bin/xalan.jar';
-my $RM         = '/bin/rm';
-my $CHMOD      = '/bin/chmod';
-
-###
-
-my $bookCode     = '';
-my $metaFile     = '';
-my $bookXML      = '';
-my $xhtmlXSL     = '';
-
-my $verbose = 0;
-
-while( $#ARGV > -1 ) {
-    my $cmdLineItem = shift @ARGV;
-    if( $cmdLineItem =~ /^--book=(.+)$/ ) {
-       $bookCode = $1;
-    }
-    elsif( $cmdLineItem =~ /^--meta=(.+)$/ ) {
-       $metaFile = $1;
-    }
-    elsif( $cmdLineItem =~ /^--xml=(.+)$/ ) {
-       $bookXML = $1;
-    }
-    elsif( $cmdLineItem =~ /^--xsl=(.+)$/ ) {
-       $xhtmlXSL = $1;
-    }
-    elsif( $cmdLineItem =~ /^--verbose/ ) {
-       $verbose = 1;
-    }
-    else { die $USAGE; }
-}
-
-if( $bookCode eq '' ) { die "Unspecified book code\n$USAGE"; }
-if( $metaFile eq '' ) { die "Unspecified metadata file\n$USAGE"; }
-if( $bookXML eq '' ) { die "Unspecified book XML file\n$USAGE"; }
-if( $xhtmlXSL eq '' ) { die "Unspecified XSL transformation file\n$USAGE"; }
-
-if( -e $metaFile && -f $metaFile && -r $metaFile ) {
-    open( META, '<', $metaFile ) or die qq{Unable to open metadata file ($metaFile): $!\n};
-}
-else { die qq{Improper metadata file ($metaFile)\n}; }
-
-my $meta = '';
-while( my $line = <META> ) {
-    $meta .= $line if $line !~ /^[[:space:]]*#/;
-}
-close META;
-
-my $rulesString = '';
-if( $meta =~ /^[[:space:]]*$bookCode[[:space:]]*{([^}]*)}/sm ) {
-    $rulesString = $1;
-}
-else {
-    die "Book code ($bookCode) not found in metadata file or invalid file syntax\n";
-}
-
-my @rules = split( /[[:space:]\n]*;[[:space:]\n]*/, $rulesString );
-my %rulesHash;
-foreach my $rule (@rules) {
-    if( $rule =~ /[[:space:]]*([^:]+)[[:space:]]*:[[:space:]]*(.+)$/s ) {
-       $rulesHash{ $1 } = $2;
-    }
-    else {
-       die "Unrecognized rule syntax:\n$rule\n";
-    }
-}
-
-if( $bookXML =~ m{^([-\w\@./]+)$} ) {
-    $bookXML = $1;
-    if( -e $bookXML && -f $bookXML && -r $bookXML ) {
-       system( $RXP, '-Vs', $bookXML ) == 0 or die( "XML validation failed\n" );
-    }
-    unless( defined $rulesHash{'book-path'} ) { die "Metadata file leaves output path unspecified\n"; }
-    unless( -e $rulesHash{'book-path'} && -d $rulesHash{'book-path'} ) {
-       my @dirs = split ( /$FILENAME_SEPARATOR/, $rulesHash{'book-path'} );
-       my $dirPath = '';
-       for( my $i = 0; $i <= $#dirs; ++$i ) {
-           $dirPath .= $dirs[$i] . $FILENAME_SEPARATOR;
-           if( -e $dirPath && ! -d $dirPath ) { die "Output directory name exists and is not a directory\n"; }
-           unless( -e $dirPath ) {
-               mkdir $dirPath or die( "Unable to create output directory ($rulesHash{'book-path'}): $!\n" );
-           }
-       }
-    }
-    unless( -e $rulesHash{'book-path'} && -d $rulesHash{'book-path'} ) {
-       die "Unknown error creating output directory\n";
-    }
-
-    print qx{$RM $rulesHash{'book-path'}$FILENAME_SEPARATOR*};
-    print qx{$JAVA -classpath "$XALAN_JAR" org.apache.xalan.xslt.Process -IN "$bookXML" -XSL "$xhtmlXSL" -OUT "$rulesHash{'book-path'}${FILENAME_SEPARATOR}foo.xml" -PARAM background-color "$rulesHash{'background-color'}" -PARAM text-color "$rulesHash{'text-color'}" -PARAM link-color "$rulesHash{'link-color'}" -PARAM use-illustrators "$rulesHash{'use-illustrators'}" -PARAM language "$rulesHash{'language'}"};
-    print qx{$RM $rulesHash{'book-path'}${FILENAME_SEPARATOR}foo.xml};
-
-    foreach my $cssTemplate (split( /:/, $rulesHash{'csst'} )) {
-       $cssTemplate =~ m/([^${FILENAME_SEPARATOR}]+)t$/;
-       my $templateFilename = $1;
-       open( TEMPLATE, '<', $cssTemplate ) or die "Unable to open CSS template file ($cssTemplate): $!\n";
-       open( STYLESHEET, '>', "$rulesHash{'book-path'}${FILENAME_SEPARATOR}${templateFilename}" ) or die "Unable to open stylesheet file ($rulesHash{'book-path'}${FILENAME_SEPARATOR}${templateFilename}) for writing: $!\n";
-        while( my $templateLine = <TEMPLATE> ) {
-            while( $templateLine =~ /%%([^%[:space:]]+)%%/ ) {
-               my $name = $1;
-               $templateLine =~ s/%%${name}%%/$rulesHash{$name}/g;
-            }
-            print STYLESHEET $templateLine;
-        }
-    }
-    close TEMPLATE;
-    close STYLESHEET;
-
-    foreach my $imagePath (split( /:/, $rulesHash{'images'} )) {
-        unless( -e $imagePath && -d $imagePath ) {
-           die "Image path ($imagePath) does not exist or is not a directory\n";
-       }
-        print qx{$CP $imagePath${FILENAME_SEPARATOR}* $rulesHash{'book-path'}};
-    }
-
-    print qx{$TAR cf ${bookCode}.tar $rulesHash{'book-path'}${FILENAME_SEPARATOR}*};
-    print qx{$ZIP -8 -q ${bookCode}.zip $rulesHash{'book-path'}${FILENAME_SEPARATOR}*};
-    print qx{$BZIP2 -9 ${bookCode}.tar};
-    print qx{$MV ${bookCode}* $rulesHash{'book-path'}${FILENAME_SEPARATOR}};
-}
-
-print "Success\n" if $verbose;
diff --git a/scripts/make-editor.pl b/scripts/make-editor.pl
deleted file mode 100755 (executable)
index 7eb3938..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/perl -w
-#
-# make-editor.pl
-#
-# Creates Editor Pack
-#
-#
-#####
-
-use strict;
-
-##
-
-if( $ENV{'AONPATH'} eq "" ) { die "Please set the AONPATH environment variable."; }
-
-my $PROGRAM_NAME     = "make-editor";
-my $PATH_PREFIX      = "$ENV{'AONPATH'}/data";
-my $XML_PATH         = "xml";
-my $GRAPH_PATH       = "svg";
-my $EDITOR_PATH      = "editor";
-my $CHANGES_PATH     = "$EDITOR_PATH/changes/data";
-my @EDITOR_INC       = qw{*.* scripts/* style/* images/* changes/index.html changes/controls.html changes/scripts/* changes/style/*};
-
-##
-
-my $CP         = "/bin/cp";
-my $MV         = "/bin/mv";
-my $TAR        = "/bin/tar";
-my $ZIP        = "/usr/bin/zip";
-my $BZIP2      = "/usr/bin/bzip2";
-my $RM         = "/usr/bin/rm";
-
-##
-
-my $verbose = 0;
-my $book = "";
-
-while( $#ARGV > -1 ) {
- if( $ARGV[0] eq "-v" ) { $verbose = 1; shift @ARGV; }
- else { $book = shift @ARGV; }
-}
-
-chdir( "$PATH_PREFIX" ) or die( "Cannot open Project Aon data directory \"$PATH_PREFIX\": $!" );
-if( $book ne "" ) {
-  print "Tarring SVG\n" if $verbose;
-  print qx{$TAR cf editor-$book.tar $GRAPH_PATH/$book.svg};
-  print "Zipping SVG\n" if $verbose;
-  print qx{$ZIP -8 -q editor-$book.zip $GRAPH_PATH/$book.svg};
-  print "Tarring Changes\n" if $verbose;
-  print qx{$TAR uf editor-$book.tar $CHANGES_PATH/$book-changes.html};
-  print "Zipping Changes\n" if $verbose;
-  print qx{$ZIP -8 -q editor-$book.zip $CHANGES_PATH/$book-changes.html};
-  print "BZIP2ing tar archive\n" if $verbose;
-  print qx{$BZIP2 -9 editor-$book.tar};
-}
-else {
-  print "Tarring Editor Companion\n" if $verbose;
-  foreach my $item (@EDITOR_INC) {
-    print qx{$TAR uf editor.tar $EDITOR_PATH/$item};
-  }
-  print "Zipping Editor Companion\n" if $verbose;
-  foreach my $item (@EDITOR_INC) {
-    print qx{$ZIP -g -q -8 editor.zip $EDITOR_PATH/$item};
-  }
-  print "BZIP2ing tar archive\n" if $verbose;
-  print qx{$BZIP2 -9 editor.tar};
-}
diff --git a/scripts/mergecorrhtml.pl b/scripts/mergecorrhtml.pl
deleted file mode 100755 (executable)
index b4b6b21..0000000
+++ /dev/null
@@ -1,631 +0,0 @@
-#!/usr/bin/perl -w
-#
-# mergecorrhtml.pl
-#
-# mergecorrhtml [options] -i inputHTML [inputCorrections]
-#            -b bookcode
-#            -u include with unspecified bookcode
-#            -v verbose reporting
-#
-# Merges _sorted_ HTML correction lists: one in a HTML file, one bare list. It
-# will dump any remaining corrections in the lists after completion. The chief
-# reasons that this should happen is if the lists aren't sorted. The correction
-# list in the input HTML should be surrounded by the following markers on lines
-# by themselves:
-#
-#  <!--mergecorrhtml:BEGIN-->
-#  [list goes here]
-#  <!--mergecorrhtml:END-->
-#
-# Typical usage would be in concert with corrtohtml and sortcorrhtml:
-#
-#  corrtohtml <correctionFile> | sorcorrhtml | mergecorrhtml -b <book> <html>
-#
-# Output will appear on standard out which would usually be redirected to file.
-#
-################################################################################
-
-use strict;
-
-my $programName = 'mergecorrhtml';
-my $usage = "$programName [options] inputHTML\n" .
-            "\t-b bookcode\n" .
-            "\t-u include unspecified book\n" .
-            "\t-v verbose reporting\n";
-
-my $htmlRegex;
-my $corrRegex;
-my $issueRegex;
-my $markerRegex;
-
-################################################################################
-# Process command line
-
-my $optsProcessed = 0;
-my $inFile;
-my $bookCode = "";
-my $bookCodeReport = "";
-my $includeUnspecifiedBook = 0;
-my $verbose = 0;
-
-while( $#ARGV > -1 && not $optsProcessed ) {
-  my $commandLineItem = shift @ARGV;
-  if( $commandLineItem eq "-b" ) {
-    $bookCode = shift @ARGV or die $usage;
-  }
-  elsif( $commandLineItem eq "-u" ) {
-    $includeUnspecifiedBook = 1;
-  }
-  elsif( $commandLineItem eq "-v" ) {
-    $verbose = 1;
-  }
-  elsif( $commandLineItem eq "--help" ) {
-    print $usage and exit;
-  }
-  else {
-    unshift @ARGV, $commandLineItem;
-    $optsProcessed = 1;
-  }
-}
-
-if( $verbose ) {
-    $bookCodeReport = " [$bookCode]";
-}
-
-$inFile = shift @ARGV or die $usage;
-
-$issueRegex = qr{[^#]+?(?:#([[:digit:]]+))};
-
-$htmlRegex = qr{^(<div.*?>)()<a(.*?)href="}; # unused capture to match other regex below
-if( $bookCode eq "" ) {
-  $corrRegex = $htmlRegex;
-}
-elsif( $includeUnspecifiedBook ) {
-  $corrRegex = qr{^(<div.*?>)(<!--[[:space:]]*${bookCode}[[:space:]]*-->)?<a(.*?)href="};
-}
-else {
-  $corrRegex = qr{^(<div.*?>)(<!--[[:space:]]*${bookCode}[[:space:]]*-->)<a(.*?)href="};
-}
-$markerRegex = qr{^<div[[:space:]]+?class="section".*$};
-
-################################################################################
-# Read in HTML into which we're merging and correction HTML
-
-open( INFILE, "<$inFile" ) or die( "Error ($programName)$bookCodeReport: unable to open \"$inFile\" for read: $!\n" );
-my @lines = <INFILE>;
-close INFILE;
-
-#### Consume preamble
-
-while( $#lines > -1 && $lines[ 0 ] !~ m{^[[:space:]]*<!--mergecorrhtml:BEGIN-->[[:space:]]*$} ) {
-  print shift @lines;
-}
-print shift @lines if( $#lines > -1 );
-
-my @inHTML;
-
-#### Get good stuff
-
-while( $#lines > -1 && $lines[ 0 ] !~ m{^[[:space:]]*<!--mergecorrhtml:END-->[[:space:]]*$} ) {
-  if( $lines[ 0 ] =~ m/$htmlRegex/ ) {
-    push( @inHTML, shift @lines );
-  }
-  elsif( $lines[ 0 ] =~ m/$markerRegex/ ) {
-    shift @lines;
-  }
-  elsif( $lines[ 0 ] =~ m/^[[:space:]]*$/ ) {
-    shift @lines;
-  }
-  else {
-    die( "Error ($programName)$bookCodeReport: unrecognized input HTML: " . $lines[ 0 ] . "\n" );
-  }
-}
-
-my @inCorr;
-while( my $corr = <> ) {
-  push( @inCorr, $corr ) if( $corr =~ m{$corrRegex} );
-}
-
-################################################################################
-# Merge!
-
-my @sectSortOrder = &getSectSortOrder( );
-
-foreach my $section (@sectSortOrder) {
-  my $issue;
-  print "<div class=\"section\"><a name=\"$section\">$section</a></div>\n";
-  while( $#inHTML > -1 && $inHTML[ 0 ] =~ m/$htmlRegex$section\.htm${issueRegex}/ ) {
-    $issue = $4;
-    while( $#inCorr > -1 && $inCorr[ 0 ] =~ m/$corrRegex$section\.htm${issueRegex}/ && $issue eq $4 ) {
-      my $corr = shift @inCorr;
-      my $comm = "";
-      if( $corr !~ m{^.+?:[[:space:]]*<div[^>]+?class="[^"]*cm} ) { warn( "Warning ($programName)$bookCodeReport: discarding data in issue comment: $corr" ); }
-      while( $corr =~ s{^.*?(<div[^>]+?class="[^"]*cm[^>]+>.*?</div>)}{} ) {
-        $comm .= $1;
-      }
-      $inHTML[ 0 ] =~ s{</div>$}{$comm</div>}
-    }
-    print shift @inHTML;
-  }
-  while( $#inCorr > -1 && $inCorr[ 0 ] =~ m/$corrRegex$section\.htm/ ) {
-    my $corr = shift @inCorr;
-    $corr =~ s{$corrRegex}{$1<a$3href="};
-    ++$issue;
-    $corr =~ s{#:}{#$issue:};
-    print $corr;
-  }
-}
-
-################################################################################
-# Print the remainder of the input HTML and corrections
-
-if( $#inHTML > -1 ) {
-  warn( "Warning ($programName)$bookCodeReport: input HTML probably out of order\n\tor unrecognized section--error near:\n\t" . $inHTML[ 0 ] . "\n" );
-  print @inHTML;
-}
-if( $#inCorr > -1 ) {
-  warn( "Warning ($programName)$bookCodeReport: input corrections probably out of order\n\tor unrecognized section--error near:\n\t" . $inCorr[ 0 ] . "\n" );
-  print @inCorr;
-}
-
-print @lines;
-
-
-################################################################################
-################################################################################
-# Subroutines
-
-sub getSectSortOrder {
-  return qw{
-    _unknown
-    toc
-    title
-    dedicate
-    acknwldg
-    coming
-    tssf
-    gamerulz
-    discplnz
-    powers
-    equipmnt
-    cmbtrulz
-    lorecrcl
-    levels
-    imprvdsc
-    kaiwisdm
-    sage
-    numbered
-    part1
-    sect1
-    sect2
-    sect3
-    sect4
-    sect5
-    sect6
-    sect7
-    sect8
-    sect9
-    sect10
-    sect11
-    sect12
-    sect13
-    sect14
-    sect15
-    sect16
-    sect17
-    sect18
-    sect19
-    sect20
-    sect21
-    sect22
-    sect23
-    sect24
-    sect25
-    sect26
-    sect27
-    sect28
-    sect29
-    sect30
-    sect31
-    sect32
-    sect33
-    sect34
-    sect35
-    sect36
-    sect37
-    sect38
-    sect39
-    sect40
-    sect41
-    sect42
-    sect43
-    sect44
-    sect45
-    sect46
-    sect47
-    sect48
-    sect49
-    sect50
-    sect51
-    sect52
-    sect53
-    sect54
-    sect55
-    sect56
-    sect57
-    sect58
-    sect59
-    sect60
-    sect61
-    sect62
-    sect63
-    sect64
-    sect65
-    sect66
-    sect67
-    sect68
-    sect69
-    sect70
-    sect71
-    sect72
-    sect73
-    sect74
-    sect75
-    sect76
-    sect77
-    sect78
-    sect79
-    sect80
-    sect81
-    sect82
-    sect83
-    sect84
-    sect85
-    sect86
-    sect87
-    sect88
-    sect89
-    sect90
-    sect91
-    sect92
-    sect93
-    sect94
-    sect95
-    sect96
-    sect97
-    sect98
-    sect99
-    sect100
-    sect101
-    sect102
-    sect103
-    sect104
-    sect105
-    sect106
-    sect107
-    sect108
-    sect109
-    sect110
-    sect111
-    sect112
-    sect113
-    sect114
-    sect115
-    sect116
-    sect117
-    sect118
-    sect119
-    sect120
-    sect121
-    sect122
-    sect123
-    sect124
-    sect125
-    sect126
-    sect127
-    sect128
-    sect129
-    sect130
-    sect131
-    sect132
-    sect133
-    sect134
-    sect135
-    sect136
-    sect137
-    sect138
-    sect139
-    sect140
-    sect141
-    sect142
-    sect143
-    sect144
-    sect145
-    sect146
-    sect147
-    sect148
-    sect149
-    sect150
-    sect151
-    sect152
-    sect153
-    sect154
-    sect155
-    sect156
-    sect157
-    sect158
-    sect159
-    sect160
-    sect161
-    sect162
-    sect163
-    sect164
-    sect165
-    sect166
-    sect167
-    sect168
-    sect169
-    sect170
-    sect171
-    sect172
-    sect173
-    sect174
-    sect175
-    sect176
-    sect177
-    sect178
-    sect179
-    sect180
-    sect181
-    sect182
-    sect183
-    sect184
-    sect185
-    sect186
-    sect187
-    sect188
-    sect189
-    sect190
-    sect191
-    sect192
-    sect193
-    sect194
-    sect195
-    sect196
-    sect197
-    sect198
-    sect199
-    part2
-    sect200
-    sect201
-    sect202
-    sect203
-    sect204
-    sect205
-    sect206
-    sect207
-    sect208
-    sect209
-    sect210
-    sect211
-    sect212
-    sect213
-    sect214
-    sect215
-    sect216
-    sect217
-    sect218
-    sect219
-    sect220
-    sect221
-    sect222
-    sect223
-    sect224
-    sect225
-    sect226
-    sect227
-    sect228
-    sect229
-    sect230
-    sect231
-    sect232
-    sect233
-    sect234
-    sect235
-    sect236
-    sect237
-    sect238
-    sect239
-    sect240
-    sect241
-    sect242
-    sect243
-    sect244
-    sect245
-    sect246
-    sect247
-    sect248
-    sect249
-    sect250
-    sect251
-    sect252
-    sect253
-    sect254
-    sect255
-    sect256
-    sect257
-    sect258
-    sect259
-    sect260
-    sect261
-    sect262
-    sect263
-    sect264
-    sect265
-    sect266
-    sect267
-    sect268
-    sect269
-    sect270
-    sect271
-    sect272
-    sect273
-    sect274
-    sect275
-    sect276
-    sect277
-    sect278
-    sect279
-    sect280
-    sect281
-    sect282
-    sect283
-    sect284
-    sect285
-    sect286
-    sect287
-    sect288
-    sect289
-    sect290
-    sect291
-    sect292
-    sect293
-    sect294
-    sect295
-    sect296
-    sect297
-    sect298
-    sect299
-    sect300
-    sect301
-    sect302
-    sect303
-    sect304
-    sect305
-    sect306
-    sect307
-    sect308
-    sect309
-    sect310
-    sect311
-    sect312
-    sect313
-    sect314
-    sect315
-    sect316
-    sect317
-    sect318
-    sect319
-    sect320
-    sect321
-    sect322
-    sect323
-    sect324
-    sect325
-    sect326
-    sect327
-    sect328
-    sect329
-    sect330
-    sect331
-    sect332
-    sect333
-    sect334
-    sect335
-    sect336
-    sect337
-    sect338
-    sect339
-    sect340
-    sect341
-    sect342
-    sect343
-    sect344
-    sect345
-    sect346
-    sect347
-    sect348
-    sect349
-    sect350
-    sect351
-    sect352
-    sect353
-    sect354
-    sect355
-    sect356
-    sect357
-    sect358
-    sect359
-    sect360
-    sect361
-    sect362
-    sect363
-    sect364
-    sect365
-    sect366
-    sect367
-    sect368
-    sect369
-    sect370
-    sect371
-    sect372
-    sect373
-    sect374
-    sect375
-    sect376
-    sect377
-    sect378
-    sect379
-    sect380
-    sect381
-    sect382
-    sect383
-    sect384
-    sect385
-    sect386
-    sect387
-    sect388
-    sect389
-    sect390
-    sect391
-    sect392
-    sect393
-    sect394
-    sect395
-    sect396
-    sect397
-    sect398
-    sect399
-    sect400
-    ill1
-    ill2
-    ill3
-    ill4
-    ill5
-    ill6
-    ill7
-    ill8
-    ill9
-    ill10
-    ill11
-    ill12
-    ill13
-    ill14
-    ill15
-    ill16
-    ill17
-    ill18
-    ill19
-    ill20
-    passing
-    map
-    action
-    crsumary
-    crtable
-    random
-    errata
-    footnotz
-    illstrat
-    license
-  };
-}
diff --git a/scripts/sortcorrhtml.pl b/scripts/sortcorrhtml.pl
deleted file mode 100755 (executable)
index 5537824..0000000
+++ /dev/null
@@ -1,625 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Sort Correction HTML
-#
-# Sorts input correction HTML. Can also filter out corrections for undesired
-# books.
-#
-# Assumes that corrections appear one per line. Good practice would be to pipe
-# the output of corrtohtml.pl to this function:
-#
-#   corrtohtml.pl corrections | sortcorrhtml.pl
-#
-################################################################################
-
-use strict;
-
-my $progName = "sortcorrhtml";
-my $usage = "$progName [options]\n" .
-            "\t-b bookcode   exclude corrections specified for other books\n" .
-            "\t-s            strip book tags\n" .
-            "\t-v            verbose reporting\n";
-
-my $optsProcessed = 0;
-my $bookCode = "";
-my $bookCodeReport = "";
-my $stripBookInfo = 0;
-my $includeUnspecifiedBook = 0;
-my $verbose = 0;
-
-while( $#ARGV > -1 && not $optsProcessed ) {
-  my $commandLineItem = shift @ARGV;
-  if( $commandLineItem eq "-b" ) {
-    $bookCode = shift @ARGV or die $usage;
-  }
-  elsif( $commandLineItem eq "-s" ) {
-    $stripBookInfo = 1;
-  }
-  elsif( $commandLineItem eq "-v" ) {
-    $verbose = 1;
-  }
-  elsif( $commandLineItem eq "--help" ) {
-    print $usage and exit;
-  }
-  else {
-    unshift @ARGV, $commandLineItem;
-    $optsProcessed = 1;
-  }
-}
-
-if( $verbose ) {
-    $bookCodeReport = " [$bookCode]";
-}
-
-my @bookSortOrder = &getBookSortOrder( );
-my @sectSortOrder = &getSectSortOrder( );
-
-my %buckets = ( );
-
-my $corrRegex = qr{^.+?(<!--[[:space:]]*([^-]+?)[[:space:]]*-->)?<a href="([^.]+)[^#]+#([[:digit:]]*)};
-
-my $bookRegex;
-if( $bookCode ne "" ) {
-  $bookRegex = qr{^.+?(<!--[[:space:]]*($bookCode)[[:space:]]*-->)<a href="([^.]+).htm};
-}
-
-my $stripRegex;
-if( $bookCode ne "" ) {
-  $stripRegex = qr{<!--[[:space:]]*$bookCode[[:space:]]*-->}; 
-}
-else {
-  $stripRegex = qr{<!--[[:space:]]*[^-]+?[[:space:]]*-->};
-}
-
-my @lines = <>;
-my $maxIssue = 0;
-
-foreach my $line (@lines) {
-  if( $bookCode ne "" ) {
-    ($line =~ m{$bookRegex}) or next; # skip other books
-  }
-
-  ($line =~ m{$corrRegex}) or die( "Error ($progName)$bookCodeReport: unrecognized correction: $line\n" );
-  my( $book, $sect, $issue ) = ($2, $3, $4);
-  $book = "unknown" unless defined $book;
-  $issue = "unassigned" unless defined $issue && $issue ne "";
-  $buckets{$book} = { } unless exists $buckets{$book};
-  $buckets{$book}->{$sect} = { } unless exists $buckets{$book}->{$sect};
-  $buckets{$book}->{$sect}->{$issue} = [ ] unless exists $buckets{$book}->{$sect}->{$issue};
-
-  if( $stripBookInfo ) {
-    $line =~ s/$stripRegex//;
-  }
-
-  if( $issue ne "unassigned" && $issue > $maxIssue ) { $maxIssue = $issue; }
-
-  push @{$buckets{$book}->{$sect}->{$issue}}, $line;
-}
-
-foreach my $bookKey (keys %buckets) {
-  my $found = 0;
-  foreach my $book (@bookSortOrder) {
-    if( $bookKey eq $book ) { $found = 1; }
-  }
-  unless( $found ) { die( "Error ($progName)$bookCodeReport: unknown book code: $bookKey\n" ); }
-
-  foreach my $sectKey (keys %{$buckets{$bookKey}}) {
-    $found = 0;
-    foreach my $sect (@sectSortOrder) {
-      if( $sectKey eq $sect ) { $found = 1; }
-    }
-    unless( $found ) { die( "Error ($progName)$bookCodeReport: unknown section: $sectKey\n" ); }
-  }
-}
-
-for( my $i = 0; $i <= $#bookSortOrder; ++$i ) {
-  for( my $j = 0; $j <= $#sectSortOrder; ++$j ) {
-    for( my $k = 0; $k <= $maxIssue; ++$k ) {
-      print @{$buckets{$bookSortOrder[$i]}->{$sectSortOrder[$j]}->{$k}} if exists $buckets{$bookSortOrder[$i]} && exists $buckets{$bookSortOrder[$i]}->{$sectSortOrder[$j]} && exists $buckets{$bookSortOrder[$i]}->{$sectSortOrder[$j]}->{$k};
-    }
-    while( $#{$buckets{$bookSortOrder[$i]}->{$sectSortOrder[$j]}->{'unassigned'}} > -1 ) {
-      print shift @{$buckets{$bookSortOrder[$i]}->{$sectSortOrder[$j]}->{'unassigned'}};
-    }
-  }
-}
-
-################################################################################
-
-sub getBookSortOrder {
-  return qw{
-    unknown
-    01fftd
-    02fotw
-    03tcok
-    04tcod
-    05sots
-    06tkot
-    07cd
-    08tjoh
-    09tcof
-    10tdot
-    11tpot
-    12tmod
-    13tplor
-    14tcok
-    15tdc
-    16tlov
-    17tdoi
-    18dotd
-    19wb
-    20tcon
-    21votm
-    22tbos
-    23mh
-    24rw
-    25totw
-    26tfobm
-    27v
-    28thos
-    01gstw
-    02tfc
-    03btng
-    04wotw
-    01hh
-    02smr
-    03toz
-    04cc
-    tmc
-    rh
-  };
-}
-
-sub getSectSortOrder {
-  return qw{
-    _unknown
-    toc
-    title
-    dedicate
-    acknwldg
-    coming
-    tssf
-    gamerulz
-    discplnz
-    powers
-    equipmnt
-    cmbtrulz
-    lorecrcl
-    levels
-    imprvdsc
-    kaiwisdm
-    sage
-    numbered
-    part1
-    sect1
-    sect2
-    sect3
-    sect4
-    sect5
-    sect6
-    sect7
-    sect8
-    sect9
-    sect10
-    sect11
-    sect12
-    sect13
-    sect14
-    sect15
-    sect16
-    sect17
-    sect18
-    sect19
-    sect20
-    sect21
-    sect22
-    sect23
-    sect24
-    sect25
-    sect26
-    sect27
-    sect28
-    sect29
-    sect30
-    sect31
-    sect32
-    sect33
-    sect34
-    sect35
-    sect36
-    sect37
-    sect38
-    sect39
-    sect40
-    sect41
-    sect42
-    sect43
-    sect44
-    sect45
-    sect46
-    sect47
-    sect48
-    sect49
-    sect50
-    sect51
-    sect52
-    sect53
-    sect54
-    sect55
-    sect56
-    sect57
-    sect58
-    sect59
-    sect60
-    sect61
-    sect62
-    sect63
-    sect64
-    sect65
-    sect66
-    sect67
-    sect68
-    sect69
-    sect70
-    sect71
-    sect72
-    sect73
-    sect74
-    sect75
-    sect76
-    sect77
-    sect78
-    sect79
-    sect80
-    sect81
-    sect82
-    sect83
-    sect84
-    sect85
-    sect86
-    sect87
-    sect88
-    sect89
-    sect90
-    sect91
-    sect92
-    sect93
-    sect94
-    sect95
-    sect96
-    sect97
-    sect98
-    sect99
-    sect100
-    sect101
-    sect102
-    sect103
-    sect104
-    sect105
-    sect106
-    sect107
-    sect108
-    sect109
-    sect110
-    sect111
-    sect112
-    sect113
-    sect114
-    sect115
-    sect116
-    sect117
-    sect118
-    sect119
-    sect120
-    sect121
-    sect122
-    sect123
-    sect124
-    sect125
-    sect126
-    sect127
-    sect128
-    sect129
-    sect130
-    sect131
-    sect132
-    sect133
-    sect134
-    sect135
-    sect136
-    sect137
-    sect138
-    sect139
-    sect140
-    sect141
-    sect142
-    sect143
-    sect144
-    sect145
-    sect146
-    sect147
-    sect148
-    sect149
-    sect150
-    sect151
-    sect152
-    sect153
-    sect154
-    sect155
-    sect156
-    sect157
-    sect158
-    sect159
-    sect160
-    sect161
-    sect162
-    sect163
-    sect164
-    sect165
-    sect166
-    sect167
-    sect168
-    sect169
-    sect170
-    sect171
-    sect172
-    sect173
-    sect174
-    sect175
-    sect176
-    sect177
-    sect178
-    sect179
-    sect180
-    sect181
-    sect182
-    sect183
-    sect184
-    sect185
-    sect186
-    sect187
-    sect188
-    sect189
-    sect190
-    sect191
-    sect192
-    sect193
-    sect194
-    sect195
-    sect196
-    sect197
-    sect198
-    sect199
-    part2
-    sect200
-    sect201
-    sect202
-    sect203
-    sect204
-    sect205
-    sect206
-    sect207
-    sect208
-    sect209
-    sect210
-    sect211
-    sect212
-    sect213
-    sect214
-    sect215
-    sect216
-    sect217
-    sect218
-    sect219
-    sect220
-    sect221
-    sect222
-    sect223
-    sect224
-    sect225
-    sect226
-    sect227
-    sect228
-    sect229
-    sect230
-    sect231
-    sect232
-    sect233
-    sect234
-    sect235
-    sect236
-    sect237
-    sect238
-    sect239
-    sect240
-    sect241
-    sect242
-    sect243
-    sect244
-    sect245
-    sect246
-    sect247
-    sect248
-    sect249
-    sect250
-    sect251
-    sect252
-    sect253
-    sect254
-    sect255
-    sect256
-    sect257
-    sect258
-    sect259
-    sect260
-    sect261
-    sect262
-    sect263
-    sect264
-    sect265
-    sect266
-    sect267
-    sect268
-    sect269
-    sect270
-    sect271
-    sect272
-    sect273
-    sect274
-    sect275
-    sect276
-    sect277
-    sect278
-    sect279
-    sect280
-    sect281
-    sect282
-    sect283
-    sect284
-    sect285
-    sect286
-    sect287
-    sect288
-    sect289
-    sect290
-    sect291
-    sect292
-    sect293
-    sect294
-    sect295
-    sect296
-    sect297
-    sect298
-    sect299
-    sect300
-    sect301
-    sect302
-    sect303
-    sect304
-    sect305
-    sect306
-    sect307
-    sect308
-    sect309
-    sect310
-    sect311
-    sect312
-    sect313
-    sect314
-    sect315
-    sect316
-    sect317
-    sect318
-    sect319
-    sect320
-    sect321
-    sect322
-    sect323
-    sect324
-    sect325
-    sect326
-    sect327
-    sect328
-    sect329
-    sect330
-    sect331
-    sect332
-    sect333
-    sect334
-    sect335
-    sect336
-    sect337
-    sect338
-    sect339
-    sect340
-    sect341
-    sect342
-    sect343
-    sect344
-    sect345
-    sect346
-    sect347
-    sect348
-    sect349
-    sect350
-    sect351
-    sect352
-    sect353
-    sect354
-    sect355
-    sect356
-    sect357
-    sect358
-    sect359
-    sect360
-    sect361
-    sect362
-    sect363
-    sect364
-    sect365
-    sect366
-    sect367
-    sect368
-    sect369
-    sect370
-    sect371
-    sect372
-    sect373
-    sect374
-    sect375
-    sect376
-    sect377
-    sect378
-    sect379
-    sect380
-    sect381
-    sect382
-    sect383
-    sect384
-    sect385
-    sect386
-    sect387
-    sect388
-    sect389
-    sect390
-    sect391
-    sect392
-    sect393
-    sect394
-    sect395
-    sect396
-    sect397
-    sect398
-    sect399
-    sect400
-    ill1
-    ill2
-    ill3
-    ill4
-    ill5
-    ill6
-    ill7
-    ill8
-    ill9
-    ill10
-    ill11
-    ill12
-    ill13
-    ill14
-    ill15
-    ill16
-    ill17
-    ill18
-    ill19
-    ill20
-    passing
-    map
-    action
-    crsumary
-    crtable
-    random
-    errata
-    footnotz
-    illstrat
-    license
-  };
-}
diff --git a/scripts/xmlize.pl b/scripts/xmlize.pl
deleted file mode 100755 (executable)
index 5befc7f..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-#!/usr/bin/perl
-#
-# xmlize.pl
-#
-# $Id$
-#
-# $Log$
-# Revision 1.1  2005/04/26 04:48:03  jonathan.blake
-# Initial revision
-#
-# Revision 1.2  2002/10/20 05:46:31  jblake
-# Fixed a couple of bugs in the handling of carriage returns and
-# added support for Freeway Warrior's CLOSE COMBAT SKILL.
-#
-# Revision 1.1  2002/10/20 03:18:35  jblake
-# Initial revision
-#
-#
-# 21 Jun 2002 - Fixed bug in tagging of character-attributes
-# 06 May 2002 - Incorporated funcionality of xmlize-all
-# 20 Oct 2001 - Added more spaces to xmlized lines to make 'em purty
-#               in the final product
-# 19 May 2001 - Updated to conform to new gamebook DTD
-# 17 Apr 2001 - Repurposed as XMLizer
-# 24 Feb 2001 - Commented out some of the filtering in favor of
-#               placing it in a separate script
-# 22 Feb 2000 - Added filtering for &
-#               Padding ENDURANCE in combat <p> with spaces
-# 21 Feb 2000 - Added filtering for \t
-# 05 Feb 2000 - Added Action Chart linking
-#               Added [] centering
-#               Fixed the "A Giak" caps problem
-#
-######################################################################
-
-#use strict;
-
-#### Subroutines
-
-sub xmlize {
-    my( $inline, $infile ) = @_;
-
-    $inline =~ s/(\.\.\.|\.\s\.\s\.)/\&ellips\;/g;
-    $inline =~ tr/\t/ /;
-    $inline =~ s/\s{2,}/ /g;
-    $inline =~ s/\s+$//;
-    $inline =~ s/\&\s/\&amp\; /g;
-    $inline =~ tr/\"\`\222\221/\'/;
-    $inline =~ s/(Random\sNumber\sTable)/<a idref=\"random\">$1<\/a>/gi;
-    $inline =~ s/(Action\sCharts?)/<a idref=\"action\">$1<\/a>/gi;
-    # \222 and \221 are some form of funky right and
-    # left quotes not present in ascii (of course) 
-    $inline =~ tr/\227/-/;
-    # \227 is an em or en dash
-
-    $inline =~ s/^\s*(.*)\s*$/$1/;
-
-    if( $inline =~ /^\*/ ) {
-        $inline =~ s/^\*\s*/       <ul>\n        <li>/;
-        $inline =~ s/\s*\*\s*/<\/li>\n        <li>/g;
-        $inline .= "</li>\n       </ul>";
-    }
-    elsif( $inline =~ /^\d+\)\s/ ) {
-        $inline =~ s/^\d+\)\s+/       <ol>\n        <li>/;
-        $inline =~ s/\s*\d+\)\s+/<\/li>\n        <li>/g;
-        $inline .= "</li>\n       </ol>";
-    }
-    elsif( $inline =~ /^\<\!\-\-\spre\s\-\-\>/ ) {
-        $inline =~ s/^\<\!\-\-\spre\s\-\-\>//;
-        warn( "Warning: preformatted text in \"$infile\"\n" );
-    }
-    elsif( $inline =~ /^.+:\s+CLOSE\sCOMBAT\sSKILL/ ) {
-        $inline =~ s/^(.+):\s+CLOSE\sCOMBAT\sSKILL\s+([0-9]+)\s+ENDURANCE\s+([0-9]+)/       <combat><enemy>$1<\/enemy><enemy-attribute class=\"closecombatskill\">$2<\/enemy-attribute><enemy-attribute class=\"endurance\">$3<\/enemy-attribute><\/combat>/g;
-    }
-    elsif( $inline =~ /^.+:\s+COMBAT\sSKILL/ ) {
-        $inline =~ s/^(.+):\s+COMBAT\sSKILL\s+([0-9]+)\s+ENDURANCE\s+([0-9]+)/       <combat><enemy>$1<\/enemy><enemy-attribute class=\"combatskill\">$2<\/enemy-attribute><enemy-attribute class=\"endurance\">$3<\/enemy-attribute><\/combat>/;
-    }
-    elsif( $inline =~ /^(.*)\b(return|turn|go)([a-zA-Z\s]+?to )(\d{1,3})/i ) {
-        $inline =~ s/^(.*)\b(return|turn|go)([a-zA-Z\s]+?to )(\d{1,3})(.*)/       <choice idref=\"sect$4\">$1<link-text>$2$3$4<\/link-text>$5<\/choice>/i;
-        $inline =~ s/\s+<\/choice>/<\/choice>/;
-    }
-    elsif( $inline =~ /^\[/ ) {
-        $inline =~ s/\[(.*)\]/$1/;
-        $inline = "       <signpost>$inline</signpost>";
-        $inline =~ s/\s+<\/signpost>/<\/signpost>/;
-    }
-    elsif( $inline eq "" ) {
-    }
-    elsif( $inline =~ /^<!--(.*)-->/ ) {
-        warn( "Warning: unknown comment \"$1\" in \"$infile\"\n" );
-    }
-    else {
-        $inline = "       <p>$inline</p>";
-        $inline =~ s/\s+<\/p>/<\/p>/;
-    }
-
-# Interferes with selecting a combat paragraph if done earlier
-    $inline =~ s/(COMBAT\sSKILL|CLOSE\sCOMBAT\sSKILL|ENDURANCE|WILLPOWER|\bCS\b|\bEP\b)([^<])/<typ class="attribute">$1<\/typ>$2/g;
-
-    return $inline;
-}
-
-#### Main Routine
-
-my $numberOfSections = shift @ARGV;
-
-print << "(End of XML Header)";
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE gamebook SYSTEM "gamebook.dtd" [
- <!ENTITY % xhtml.characters SYSTEM "htmlchar.mod">
- <!ENTITY % latex.characters SYSTEM "ltexchar.mod">
- %xhtml.characters;
-
- <!ENTITY % general.links SYSTEM "genlink.mod">
- %general.links;
- <!ENTITY % xhtml.links   SYSTEM "htmllink.mod">
- %xhtml.links;
-
- <!ENTITY % general.inclusions SYSTEM "geninc.mod">
- %general.inclusions;
-]>
-
-<gamebook xml:lang="en-UK" version="0.10">
-
-<!--
-
-\$Id\$
-
-\$Log\$
-
--->
- <meta>
-  <title>[Insert Title]</title>
- </meta>
-
- <section id="toc">
-  <meta />
-  <data />
- </section>
-
- <section id="title">
-  <meta>
-   <title>Title Page</title>
-   <link class="next" idref="dedicate" />
-  </meta>
-
-  <data>
-
-   <!-- Frontmatter -->
-
-   <section class="numbered" id="numbered">
-    <meta><title>Numbered Sections</title></meta>
-
-    <data>
-(End of XML Header)
-
-for( my $sectionNumber = 1; $sectionNumber <= $numberOfSections; ++$sectionNumber ) {
-
-    my $infile = "${sectionNumber}.txt";
-
-    open( INFILE, "<$infile" ) or die "Input file \"$infile\" is not readable.\n";
-
-    my @oldlines = ( );
-    @oldlines = <INFILE>;
-
-    close INFILE;
-
-    my $title = shift @oldlines;
-    my $section = shift @oldlines;
-    my $illustration = shift @oldlines;
-    chomp $illustration;
-    $illustration =~ s/^Illustration\s+(\d+)\s+/$1/;
-    $illustration =~ s/\r//g;
-    shift @oldlines if( $illustration ne "" );
-
-    my @newlines = ( "" );
-    my $newline;
-
-    # Parsing waits for an empty line to XMLize and store
-    # the preceding lines. 
-    push( @oldlines, "" ) if( @oldlines[ $#oldlines ] ne "" );
-
-    foreach my $oldline (@oldlines) {
-        $oldline =~ s/\r|\n/ /g;
-       $oldline =~ s/^\s*(\S*)\s*$/$1/;
-       $oldline =~ s/\s\s/ /;
-       if( $oldline ne "" ) {
-           $newline .= (" " . $oldline);
-       }
-       else {
-            $newline = &xmlize( $newline, $infile );
-            $newline .= "\n" if( $newline ne "" );
-           push( @newlines, $newline );
-            $newline = "";
-       }
-    }
-
-    print "\n\n    <section class=\"numbered\" id=\"sect$sectionNumber\">\n     <meta><title>$sectionNumber</title></meta>\n\n     <data>\n";
-    print @newlines;
-    print "     </data>\n    </section>";
-}
-
-print << "(End of XML footer)";
-
-    </data>
-   </section>
-
-   <!-- Backmatter -->
-
-  </data>
- </section>
-</gamebook>
-(End of XML footer)
diff --git a/xml-es/01hdlo.xml b/xml-es/01hdlo.xml
deleted file mode 100644 (file)
index 4d9cf95..0000000
+++ /dev/null
@@ -1,5366 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE gamebook SYSTEM "gamebook.dtd" [
- <!ENTITY % general.links SYSTEM "genlink.mod">
- %general.links;
- <!ENTITY % xhtml.links   SYSTEM "htmllink.mod">
- %xhtml.links;
-
- <!ENTITY % general.inclusions SYSTEM "geninc.mod">
- %general.inclusions;
-]>
-
-<gamebook xml:lang="en-UK" version="0.11">
-
-<!--
-
-$Id$
-
-$Log$
-Revision 2.0  2006/03/27 19:20:27  jonathan.blake
-Minor change
-
-Revision 1.4  2006/03/24 20:05:31  jonathan.blake
-Fixed small transcription errors.
-
-Revision 1.3  2006/03/24 00:24:49  jonathan.blake
-Corrected some XML usage issues and tidied it up for publication.
-
-Revision 1.2  2006/03/15 22:06:47  jonathan.blake
-Changed all character entities to <ch.*/> although they should probably be written encoded characters
-
-Revision 1.1  2006/03/13 18:30:13  cvsuser
-Add new file
-
-Revision 1.15  2003/01/27 22:11:39  jblake
-Checkin prior to global footnote change
-
-Revision 1.14  2003/01/04 17:15:05  jblake
-Published
-
-Revision 1.13  2002/12/04 06:20:29  jblake
-Cleanup.
-
-Revision 1.12  2002/11/17 04:22:21  jblake
-Fixed standardization issues.
-
-Revision 1.11  2002/11/14 17:42:48  jblake
-Corrected illustration dimensions, updated wording of
-footnotes, and changed some pending errata.
-
-Revision 1.10  2002/11/12 18:48:27  jblake
-Revision of illustration placement and fix of
-interbook links.
-
-Revision 1.9  2002/11/10 04:35:31  jblake
-Fixed issues with the markup of the illustrations.
-
-Revision 1.8  2002/10/27 00:57:43  jblake
-Fixed minor validity problems.
-
-Revision 1.7  2002/10/27 00:26:52  jblake
-jdougan - added secondary illustrations in front matter and text.
-Sizes standardized to 180x180 and need correction.
-
-Revision 1.6  2002/10/24 17:56:23  jblake
-Fixed a the previous log entry that made the comment end
-prematurely.
-
-Revision 1.5  2002/10/24 16:22:27  jblake
-Added an XML acknowledgement and corrected a misspelling: "Summerlund".
-
-Revision 1.4  2002/10/24 15:50:47  jblake
-Removed references to the Rules Clarifications - now obsolete.
-
-Revision 1.3  2002/10/24 15:23:49  jblake
-* Corrected lack of paragraphs in paragraphed lists
-* Renamed Section Clarifications to Footnotes and corrected
-  the associated links
-* Indented the numbered sections
-
-Revision 1.2  2002/10/23 05:22:17  jblake
-Standardized the references to JC Alvarez.
-
-Revision 1.1  2002/10/15 23:19:33  jblake
-Initial revision
-
--->
-
-<!--
-
-Todo:
-
-* Create alternate table of illustrations for Alvarez
-* so far, Alvarez illustrations included only in HTML
-
--->
-
-<meta>
- <title>Huida de la Oscuridad</title>
- <creator class="short">Joe Dever y Gary Chalk</creator>
- <creator class="medium">Joe Dever<br />Ilustrado por Gary Chalk</creator>
- <creator class="long">
-  &inclusion.joe.dever.bio.lw;
-  &inclusion.gary.chalk.bio.lw;
- </creator>
- <publisher>Proyecto Aon Español</publisher>
- <date class="publication"><year>2006</year><month>3</month><day>26</day></date>
- <description class="blurb">
-  <p>Eres Lobo Solitario. En un devastador ataque los señores de la Oscuridad han destruído el monasterio donde aprendías las disciplinas de los señores del Kai.</p>
-  <p>Eres ahora el único superviviente.</p>
-  <p>Juras tomar venganza de esa destrucción. Pero primero debes ir a Holmgard para prevenir al Rey del inminente peligro. Los señores de la Oscuridad te persiguen sin darte tregua por todo el país y en cada página del libro tienes que enfrentarte a nuevos retos. Elige cuidadosamente tus disciplinas y tus armas, pues pueden ayudarte a triunfar en el viaje más fantástico y terrorífico de tu vida.</p>
-  <p>Lobo Solitario es una apasionante serie de aventuras en las que tú eres el protagonista, tú tomas las decisiones y tú libras los combates utilizando únicamente los métodos que se indican en los libros.</p>
- </description>
- <description class="publication">
-  <p>Edición de Internet publicada por <a href="&link.project.website;">Proyecto Aon Español</a>. Esta edición trata de reflejar fielmente el texto completo de la versión original. Allí donde se han hecho mínimas correcciones, viene notificado en las <a idref="errata">Erratas</a>.</p>
- </description>
- <rights class="copyrights">Copyright del texto <ch.copy/> 1984 Joe Dever.<br />Copyright de las ilustraciones <ch.copy/> 1984 Gary Chalk.</rights>
- <rights class="license-notification">
-  <p>Copyright del texto <ch.copy/> 1984 Joe Dever.<br />Copyright de las ilustraciones <ch.copy/> 1984 Gary Chalk.<br />La distribución de esta Edición de Internet está restringida bajo los términos de la <a idref="license">Licencia del Proyecto Aon</a>.</p>
- </rights>
-</meta>
-
-<section id="toc">
- <meta />
- <data />
-</section>
-
-<section id="title">
- <meta>
-  <title>Índice</title>
-  <link class="next" idref="dedicate" />
- </meta>
-
- <data>
-
-  <section class="frontmatter" id="dedicate">
-   <meta>
-    <title>Dedicatoria</title>
-    <link class="prev" idref="title" />
-    <link class="next" idref="acknwldg" />
-   </meta>
-
-   <data>
-
-    <p class="dedication">A Mel y Yin</p>
-
-   </data>
-  </section>
-
-  <section class="frontmatter" id="acknwldg">
-   <meta>
-    <title>Agradecimientos</title>
-    <link class="prev" idref="dedicate" />
-    <link class="next" idref="tssf" />
-   </meta>
-
-   <data>
-    <p><quote>Estaría especialmente encantado si la cesión de los derechos para distribuir mis libros a través de este medio se entendiera como mi <quote>regalo del milenio</quote> para todos aquellos devotos lectores que han mantenido la bandera del Kai ondeando alto, a través de todos los buenos momentos, y también en los no tan buenos. Me haría sentir muy orgulloso si esta inciativa pusiera los cimientos de una herencia duradera, asegurando la longevidad de Lobo Solitario haciendo mi creación libre y accesible fácilmente en la red para las actuales y futuras genereaciones. Por ellos, por nosotros, por Sommerlund y el Kai<ch.ellips/></quote> <strong>Joe Dever</strong></p>
-    <p>Proyecto Aon quiere, en primer lugar, agradecer a Joe Dever el hecho de ofrecernos generosamente los libros que tanto hemos amado desde su comienzo. También queremos mostrar nuestro agradecimiento y reconocimiento a los siguientes miembros del Proyecto Aon por su exhaustivo trabajo:</p>
-
-    <section class="frontmatter" id="credits">
-     <meta><title>Créditos</title></meta>
-
-     <data>
-
-      <dl>
-       <dt>Transcripción</dt>
-        <dd>Raúl Moreno</dd>
-       <dt>Edición de ilustraciones</dt>
-        <dd>Jonathan Blake<br />Simon Osborne</dd>
-       <dt>Edición XML</dt>
-        <dd>Raúl Moreno</dd>
-       <dt>Ilustraciones alternativas</dt>
-        <dd>Alejandro Colucci (ilustraciones de la reedición de Timun Mas)<br />JC Álvarez (ilustraciones del texto y Carta de Acción)<br />Jonathan Blake (otros gráficos y tablas)<br />Michael Hahn (mapa)</dd>
-       <dt>Lectores de prueba</dt>
-        <dd>Juan Pablo Fernández (Lectura general del libro)<br />José Daniel Casado (Lectura general del libro)</dd>
-       <dt>Edición PDF</dt>
-        <dd>Javier Fernández-Sanguino</dd>
-       <dt>Coordinación general</dt>
-        <dd>Raúl Moreno</dd>
-       <dt>Agradecimientos especiales</dt>
-        <dd>Jonathan Blake (y por extensión al resto de Proyecto Aon)</dd>
-      </dl>
-     </data>
-    </section>
-   </data>
-  </section>
-
-  <section class="frontmatter" id="tssf">
-   <meta>
-    <title>El Principio de la Historia</title>
-    <link class="prev" idref="acknwldg" />
-    <link class="next" idref="gamerulz" />
-   </meta>
-
-   <data>
-    <p>En el país nórdico de Sommerlund, durante siglos ha sido costumbre de los señores guerreros enviar a sus hijos al monasterio del Kai. Allí éstos son instruidos en las destrezas y disciplinas de sus nobles padres.</p>
-    <p>Los monjes del Kai son maestros en su arte y los niños a su cargo les aman y respetan a pesar de la dureza de su adiestramiento. Pues un día, cuando hayan aprendido las especialidades secretas del Kai, volverán a sus casas equipados en cuerpo y mente para defenderse de la constante amenaza de guerra de los señores de la Oscuridad de Occidente.</p>
-    <p>En tiempos pasados, durante la Edad de la Luna Negra, los señores de la Oscuridad hicieron la guerra contra Sommerlund. El conflicto fue una larga y encarnizada prueba de fuerza que concluyó con la victoria de Sommerlund en la gran batalla de la garganta de Maaken. El rey Ulnar y sus aliados de Durenor derrotaron a los ejércitos de los señores de la Oscuridad en el desfiladero de Moytura y les obligaron a retroceder hacia el abismo insondable de la garganta de Maaken. Vashna, el más poderoso de los señores de la Oscuridad, fue muerto por la espada del rey Ulnar, llamada Sommerswerd, la espada del sol. Desde entonces, los señores de la Oscuridad han jurado venganza contra Sommerlund y la dinastía de Ulnar.</p>
-    <p>Hoy es el día de la fiesta de Fehmarh, cuando todos los señores del Kai se reúnen en el monasterio para asistir a la celebración. Es por la mañana. De repente una gran nube negra aparece en el horizonte por el oeste. Innumerables bestias de alas negras llenan el cielo hasta tal punto que el sol queda oculto por completo. Los señores de la Oscuridad, los inveterados enemigos de Sommerlund, atacan. La guerra ha comenzado.</p>
-    <p>En esa mañana aciaga, tú, Lobo Silencioso (nombre que te ha sido puesto por el Kai), has sido enviado al bosque a recoger leña en castigo por tu falta de atención en clase. Cuando te dispones a regresar, descubres con horror una enorme y oscura nube de criaturas aladas que se precipitan sobre el monasterio.</p>
-    <p>Arrojas al suelo la carga de leña y corres hacia la batalla que ya se ha entablado. Pero en la oscuridad artificial tropiezas y te golpeas la cabeza con la rama baja de un árbol. Al perder el conocimiento, lo último que ves a esa escasa luz son los muros del monasterio desplomándose.</p>
-    <p>Permaneces muchas horas sin sentido antes de despertar. Ahora, con lágrimas en los ojos, contemplas la escena de destrucción. Alzando el rostro hacia el cielo azul juras vengarte de los Señores de la Oscuridad por la matanza de los guerreros del Kai. De pronto comprendes con toda claridad lo que debes hacer. Debes emprender un peligroso viaje a la capital para avisar al Rey de la terrible amenaza que se cierne sobre su pueblo. Pues ahora tú eres el último de los guerreros del Kai, ahora eres Lobo Solitario.</p>
-    <illustration class="float">
-     <meta>
-      <creator>JC Alvarez</creator>
-     </meta>
-     <instance class="html" src="tssf.gif" width="386" height="300" />
-    </illustration>
-   </data>    
-  </section>
-
-  <section class="frontmatter" id="gamerulz">
-   <meta>
-    <title>Las Reglas del Juego</title>
-    <link class="prev" idref="tssf" />
-    <link class="next" idref="discplnz" />
-   </meta>
-
-   <data>
-    <p>Anotarás los resultados de tu aventura en la <a idref="action">Carta de Acción</a>.</p>
-    <p>Durante tu instrucción como señor del Kai has adquirido pericia para la lucha, <typ class="attribute">DESTREZA EN EL COMBATE</typ>, y aguante fisico, <typ class="attribute">RESISTENCIA</typ>. Antes de iniciar la aventura necesitas medir el grado de efectividad de tu aprendizaje. Para realizar esta evaluación toma un lápiz y, con los ojos cerrados, coloca el extremo no afilado sobre la <a idref="random">Tabla de la Suerte</a>. Si el lápiz señala 0, no cuenta.</p>
-    <p>El primer número que obtengas de este modo representa tu <typ class="attribute">DESTREZA EN EL COMBATE</typ>. Suma 10 a ese número y escribe el total en la casilla <typ class="attribute">DESTREZA EN EL COMBATE</typ> de tu <a idref="action">Carta de Acción</a> (por ejemplo, si el lápiz apunta al 4 en la <a idref="random">Tabla de la Suerte</a>, anota 14 en el recuadro <typ class="attribute">DESTREZA EN EL COMBATE</typ>). Cuando tengas que luchar, tu <typ class="attribute">DESTREZA EN EL COMBATE</typ> se opondrá a la de tu enemigo. Por eso es deseable tener una elevada puntuación en este apartado.</p>
-    <p>El segundo número que elegirás en la <a idref="random">Tabla de la Suerte</a> representa tu capacidad de <typ class="attribute">RESISTENCIA</typ>. Suma 20 a ese número y escribe el total en la casilla <typ class="attribute">RESISTENCIA</typ> de la <a idref="action">Carta de Acción</a> (por ejemplo, si el lápiz señala el número 6 de la <a idref="random">Tabla de la Suerte</a>, tendrás 26 puntos de <typ class="attribute">RESISTENCIA</typ>).</p>
-    <p>Si eres herido en el combate, pierdes puntos de <typ class="attribute">RESISTENCIA</typ>. Si en algún momento tus puntos de <typ class="attribute">RESISTENCIA</typ> descienden hasta cero, habrás muerto y la aventura habrá terminado. Los puntos de <typ class="attribute">RESISTENCIA</typ> perdidos pueden ser recuperados en el transcurso de la aventura, pero la suma de dichos puntos nunca puede exceder del número total con el que has comenzado esta aventura.</p>
-
-    <section class="frontmatter-separate" id="discplnz">
-     <meta>
-      <title>Disciplinas del Kai</title>
-      <link class="prev" idref="gamerulz" />
-      <link class="next" idref="equipmnt" />
-     </meta>
-
-     <data>
-      <p>Durante siglos los monjes del Kai han sido maestros en las artes marciales. Estas artes reciben el nombre de disciplinas del Kai y se enseñan a todos los señores del Kai. Tú sólo has aprendido cinco de las disciplinas que se enumeran a continuación. La elección de las mismas puedes hacerla tú. Dado que todas estas disciplinas te serán de utilidad en algún momento de tu peligroso viaje, elígelas con cuidado. La correcta aplicación de una disciplina en el momento adecuado puede salvarte la vida.</p>
-      <p>Cuando hayas escogido tus cinco disciplinas, anótalas en el recuadro DISCIPLINAS DEL KAI de tu <a idref="action">Carta de Acción</a>.</p>
-
-      <section class="frontmatter" id="camflage">
-       <meta><title>Camuflaje</title></meta>
-
-       <data>
-        <p>Esta disciplina posibilita a un señor del Kai confundirse con el medio que le rodea. En el campo puede ocultarse entre los árboles sin ser descubierto y pasar cerca de un enemigo sin ser visto. En una aldea o ciudad le permite parecer y hablar como un nativo de esa región y puede ayudarle a encontrar refugio o un lugar seguro donde esconderse.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Camuflaje</quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="hunting">
-       <meta><title>Caza</title></meta>
-
-       <data>
-        <p>Esta disciplina garantiza a un señor del Kai que nunca morirá de hambre en el bosque. Siempre será capaz de cazar para obtener alimento, excepto en tierras yermas o desiertas. Esta habilidad también capacita a un señor del Kai para moverse con precaución cuando persigue a su presa. Si eliges esta disciplina, no tendrás necesidad de buscar comida cuando se ordena comer.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Caza: no hay necesidad de buscar comida cuando se ordena comer</quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="sixthsns">
-       <meta><title>Sexto sentido</title></meta>
-
-       <data>
-        <p>Esta disciplina avisa a un señor del Kai del inminente peligro. También le revela el verdadero propósito de un extranjero o de un objeto extraño encontrado en su aventura.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Sexto sentido</quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="tracking">
-       <meta><title>Rastreo</title></meta>
-
-       <data>
-        <p>Gracias a esta disciplina, un señor del Kai toma el sendero más conveniente en el bosque, localiza a una persona u objeto en una aldea o ciudad y descifra huellas y rastros.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Rastreo</quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="healing">
-       <meta><title>Curación</title></meta>
-
-       <data>
-        <p>Esta disciplina puede utilizarse para reponer los puntos de <typ class="attribute">RESISTENCIA</typ> perdidos en combate. Si posees esta destreza, puedes recuperar un punto de <typ class="attribute">RESISTENCIA</typ> cada vez que pases por una sección del libro sin entrar en combate. Pero sólo puede ser usada si tus puntos de <typ class="attribute">RESISTENCIA</typ> han disminuido con respecto al número inicial. Recuerda que nunca pueden sobrepasarlo.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Curación: +1 punto de <typ class="attribute">RESISTENCIA</typ> por cada sección sin combate</quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="wepnskll">
-       <meta><title>Dominio en el manejo de armas</title></meta>
-
-       <data>
-        <p>En el monasterio del Kai, cada iniciado aprende a dominar un tipo de arma. Si este dominio ha de ser una de tus disciplinas, elige al azar un número en la <a idref="random">Tabla de la Suerte</a>. El arma de las representadas a continuación a la que corresponda ese número será la que tú domines. Cada vez que luches llevando ese arma, sumarás 2 puntos a tu <typ class="attribute">DESTREZA EN EL COMBATE</typ>.</p>
-        <p>El hecho de que domines un arma no quiere decir que inicies la aventura llevando ese arma concreta. Sin embargo, tendrás oportunidad de adquirir armas a lo largo de tu aventura. Si te toca el hacha, habrás tenido mucha suerte, pues ésta es la única arma que Lobo Solitario lleva desde el comienzo de la aventura, como se explica más detalladamente en el apartado dedicado al <a idref="equipmnt">equipo</a>.</p>
-        <illustration class="inline">
-         <meta>
-          <creator>Gary Chalk</creator>
-         </meta>
-         <instance class="html" src="weapons.gif" width="386" height="278" />
-         <instance class="pdf" src="weapons.pdf" width="386" height="278" />
-         <instance class="text">
-          <ul class="unbulleted">
-           <li>0 = DAGA</li>
-           <li>1 = LANZA</li>
-           <li>2 = MAZA</li>
-           <li>3 = ESPADA CORTA</li>
-           <li>4 = MARTILLO DE GUERRA</li>
-           <li>5 = ESPADA</li>
-           <li>6 = HACHA</li>
-           <li>7 = ESPADA</li>
-           <li>8 = ESTACA</li>
-           <li>9 = ESPADÓN</li>
-          </ul>
-         </instance>
-        </illustration>
-        <p>No puedes llevar más de 2 armas. Si eliges esta disciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Dominio en el manejo de<ch.ellips/>: +2 puntos de <typ class="attribute">DESTREZA EN EL COMBATE</typ> si se lleva este arma</quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="mindshld">
-       <meta><title>Defensa psíquica</title></meta>
-
-       <data>
-        <p>Los señores de la Oscuridad y muchas de las malvadas criaturas a sus órdenes tienen la habilidad de atacarte usando la fuerza de su mente. La disciplina del Kai de defensa psíquica te libra de perder puntos de <typ class="attribute">RESISTENCIA</typ> cuando sufras este tipo de ataques.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Defensa psíquica: no se pierden puntos al ser atacado con acometidas mentales</quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="mndblst">
-       <meta><title>Ataque psíquico</title></meta>
-
-       <data>
-        <p>Esta disciplina permite a un señor del Kai atacar al enemigo con la fuerza de su mente. Puede usarse al mismo tiempo que las armas normales y suma 2 puntos a tu <typ class="attribute">DESTREZA EN EL COMBATE</typ>. No todas las criaturas con las que te encontrarás en tu aventura pueden ser dañadas por el ataque psíquico. Cuando una criatura es inmune a este tipo de ataque, se te hace saber.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Ataque psíquico: +2 puntos de <typ class="attribute">DESTREZA EN EL COMBATE</typ></quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="anmlknsp">
-       <meta><title>Afinidad animal</title></meta>
-
-       <data>
-        <p>Esta disciplina capacita a un señor del Kai para comunicarse con algunos animales y para adivinar las intenciones de otros.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Afinidad animal</quote>.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="mindomtr">
-       <meta><title>Poder mental sobre la materia</title></meta>
-
-       <data>
-        <p>Cuando un señor del Kai domina esta disciplina puede mover pequeños objetos con los poderes de concentración de su mente.</p>
-        <p>Si eliges esta diciplina, escribe en tu <a idref="action">Carta de Acción</a>: <quote>Poder mental sobre la materia</quote>.</p>
-       </data>
-      </section>
-
-      <p>Si llevas a cabo con éxito la misión propuesta a Lobo Solitario en este primer libro, puedes añadir en tu <a idref="action">Carta de Acción</a> del <bookref series="ls" book="02fsea" section="title">libro segundo</bookref> otra disciplina del Kai que tú mismo elijas. Esta disciplina adicional, junto con tus otras cinco destrezas y otros objetos especiales que hayas obtenido en el primer libro puedes usarlos en la próxima aventura de Lobo Solitario, que se titula <cite><bookref series="ls" book="02fsea" section="title">Fuego sobre el agua</bookref></cite>.</p>
-     </data>
-    </section>
-
-    <section class="frontmatter-separate" id="equipmnt">
-     <meta>
-      <title>Equipo</title>
-      <link class="prev" idref="discplnz" />
-      <link class="next" idref="cmbtrulz" />
-     </meta>
-
-     <data>
-      <p>Vas vestido con el jubón y la capa verdes de un iniciado del Kai. Tienes pocas cosas con las que poder equiparte para sobrevivir.</p>
-      <p>Todo lo que posees es un hacha (anótalo bajo el epígrafe Armas en tu <a idref="action">Carta de Acción</a>) y una mochila conteniendo una comida (anótalo bajo el epígrafe Comidas en tu <a idref="action">Carta de Acción</a>).</p>
-      <p>Colgada del cinturón llevas una bolsa de cuero que contiene Coronas de oro. Para averiguar cuántas tienes, elige un número al azar de la <a idref="random">Tabla de la Suerte</a>. Este número te indica la cantidad de Coronas de oro que posees al comienzo de la aventura (anota el número en la casilla Bolsa de la <a idref="action">Carta de Acción</a>).</p>
-      <p>Entre las humeantes ruinas del monasterio descubres un <a idref="map">mapa de Sommerlund</a> (anótalo entre los Objetos especiales en la <a idref="action">Carta de Acción</a>) en el que figuran Holmgard, la capital, y muy al este el país de Durenor. Guarda el <a idref="map">mapa</a> dentro de tu jubón por razones de seguridad.</p>
-      <p>También encuentras uno de los siguientes objetos:</p>
-      <ul class="paragraphed">
-       <li><p>1 = ESPADA (Armas)</p></li>
-       <li>
-        <p>2 = CASCO (Objetos especiales). Suma 2 puntos de <typ class="attribute">RESISTENCIA</typ> a tu total.</p>
-        <illustration class="inline">
-         <meta>
-          <creator>Gary Chalk</creator>
-         </meta>
-         <instance class="html" src="helmet.gif" width="150" height="46" />
-         <instance class="pdf" src="helmet.pdf" width="150" height="46" />
-        </illustration>
-       </li>
-       <li>
-        <p>3 = Dos COMIDAS (Comidas)</p>
-        <illustration class="inline">
-         <meta>
-          <creator>Gary Chalk</creator>
-         </meta>
-         <instance class="html" src="food.gif" width="178" height="41" />
-         <instance class="pdf" src="food.pdf" width="178" height="41" />
-        </illustration>
-       </li>
-       <li>
-        <p>4 = COTA DE MALLA (Objetos especiales). Suma 4 puntos de <typ class="attribute">RESISTENCIA</typ> a tu total.</p>
-        <illustration class="inline">
-         <meta>
-          <creator>Gary Chalk</creator>
-         </meta>
-         <instance class="html" src="mail.gif" width="95" height="121" />
-         <instance class="pdf" src="mail.pdf" width="95" height="121" />
-        </illustration>
-       </li>
-       <li><p>5 = MAZA (Armas)</p></li>
-       <li>
-        <p>6 = POCIÓN CURATIVA (Objeto de la mochila). Puede hacerte recuperar 4 puntos de <typ class="attribute">RESISTENCIA</typ> de los que hayas perdido en combate. Sólo tienes
-cantidad suficiente para una dosis.</p>
-        <illustration class="inline">
-         <meta>
-          <creator>Gary Chalk</creator>
-         </meta>
-         <instance class="html" src="potion.gif" width="150" height="62" />
-         <instance class="pdf" src="potion.pdf" width="150" height="62" />
-        </illustration>
-       </li>
-       <li><p>7 = ESTACA (Armas)</p></li>
-       <li><p>8 = LANZA (Armas)</p></li>
-       <li>
-        <p>9 = 12 CORONAS DE ORO (Bolsa)</p>
-        <illustration class="inline">
-         <meta>
-          <creator>Gary Chalk</creator>
-         </meta>
-         <instance class="html" src="pouch.gif" width="150" height="38" />
-         <instance class="pdf" src="pouch.pdf" width="150" height="38" />
-        </illustration>
-       </li>
-       <li><p>0 = ESPADON (Armas)</p></li>
-      </ul>
-      <p>Para descubrir cuál de ellos encuentras, debes elegir un número al azar de la <a idref="random">Tabla de la Suerte</a> y localizar el artículo correspondiente en la lista. Anótalo en tu <a idref="action">Carta de Acción</a>, bajo el epígrafe indicado entre paréntesis, y toma nota de cualquier efecto que pueda tener sobre tus puntos de <typ class="attribute">RESISTENCIA</typ>.</p>
-
-      <section class="frontmatter" id="howcarry">
-       <meta><title>Cómo llevar el equipo</title></meta>
-
-       <data>
-        <p>Una vez que tienes tu equipo completo, la siguiente lista te indica cómo has de llevarlo. No necesitas tomar notas, pero puedes volver a consultar esta lista en el transcurso de la aventura.</p>
-        <ul>
-         <li>1 = ESPADA: se lleva en la mano.</li>
-         <li>2 = CASCO: se lleva puesto en la cabeza.</li>
-         <li>3 = COMIDA: va guardada en la mochila.</li>
-         <li>4 = COTA DE MALLA: se lleva puesta alrededor del pecho.</li>
-         <li>5 = MAZA: se lleva en la mano.</li>
-         <li>6 = POCIÓN CURATIVA: va guardada en la mochila.</li>
-         <li>7 = ESTACA: se lleva en la mano.</li>
-         <li>8 = LANZA: se lleva en la mano.</li>
-         <li>9 = CORONAS DE ORO: se guardan en la bolsa.</li>
-         <li>0 = ESPADÓN: se lleva en la mano.</li>
-        </ul>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="howmuch">
-       <meta><title>Cuántos objetos puedes llevar</title></meta>
-
-       <data>
-        <dl>
-         <dt>Armas</dt>
-          <dd>El número máximo de armas que puedes llevar es 2.</dd>
-         <dt>Objetos de la mochila</dt>
-          <dd>Como la cabida de la mochila es reducida, sólo puedes guardar en ella a la vez un máximo de 8 artículos, incluidas las comidas.</dd>
-         <dt>Objetos especiales</dt>
-          <dd>Los objetos especiales no se guardan en la mochila. Cuando encuentres alguno, se te indicará cómo has de llevarlo.</dd>
-         <dt>Coronas de oro</dt>
-          <dd>Se llevan siempre en la bolsa, que no puede contener más de 50 Coronas.</dd>
-         <dt>Comida</dt>
-          <dd>La comida se guarda en la mochila. Cada comida cuenta como 1 objeto.</dd>
-        </dl>
-        <p>Cualquier objeto que pueda serte de utilidad y del que puedas apoderarte durante la aventura y anotarlo en tu <a idref="action">Carta de Acción</a>, en el texto aparecerá escrito con la inicial en mayúscula. Y a no ser que expresamente se diga que es un objeto especial, lo llevarás en la mochila.</p>
-       </data>
-      </section>
-
-      <section class="frontmatter" id="howuse">
-       <meta><title>Cómo utilizar tu equipo</title></meta>
-
-       <data>
-        <dl>
-         <dt>Armas</dt>
-          <dd>Las armas te ayudan en los combates. Si tienes la dísciplina del Kai de dominio en el manejo de armas y el arma adecuada, sumarás 2 puntos a tu <typ class="attribute">DESTREZA EN EL COMBATE</typ>. Si entablas combate sin armas, restarás 4 puntos de tu <typ class="attribute">DESTREZA EN EL COMBATE</typ> y tendrás que luchar con las manos. Si durante la acción encuentras un arma, puedes apoderarte de ella y usarla. (Recuerda que sólo puedes llevar 2 armas a la vez).</dd>
-         <dt>Objetos de la mochila</dt>
-          <dd>Durante tu viaje descubrirás diversos objetos útiles que puedes querer conservar. (Recuerda que sólo puedes cargar 8 objetos a la vez en la mochila). En cualquier momento en que no estés en combate tienes la posibilidad de cambiarlos o desecharlos.</dd>
-         <dt>Objetos especiales</dt>
-          <dd>Cada objeto especial tiene una finalidad o un efecto determinados. Unas veces esto se te dirá cuando descubras el objeto, otras te será revelado más adelante conforme avanza la aventura.</dd>
-         <dt>Coronas de oro</dt>
-          <dd>La moneda de curso legal en Sommerlund es la Corona, una pequeña moneda de oro. Puedes utilizar las Coronas de oro para pagar el transporte o la comida y hasta puedes usarlas como soborno. Muchas de las criaturas con las que te encontrarás poseen Coronas de oro o las tienen escondidas en sus guaridas. Cada vez que mates a una de estas criaturas puedes apropiarte las Coronas de oro que tenga y guardarlas en tu bolsa.</dd>
-         <dt>Comida</dt>
-          <dd>Necesitarás comer regularmente durante tu aventura. Si no tienes comida cuando se te ordene comer perderás 3 puntos de <typ class="attribute">RESISTENCIA</typ>. Si has elegido la disciplina del Kai de la caza como una de tus cinco destrezas, no tienes necesidad de sacar una comida cuando se te dé la orden de comer.</dd>
-         <dt>Poción curativa</dt>
-          <dd>Esta poción puede devolverte 4 puntos de <typ class="attribute">RESISTENCIA</typ> de los que hayas perdido en combate. Sólo tienes cantidad suficiente para una dosis. Si durante la aventura encuentras otras pociones curativas, se te informará de cuáles son sus efectos. Todas las pociones curativas son objetos de la mochila.</dd>
-        </dl>
-       </data>
-      </section>
-     </data>
-    </section>
-
-    <section class="frontmatter-separate" id="cmbtrulz">
-     <meta>
-      <title>Reglas para los Combates</title>
-      <link class="prev" idref="equipmnt" />
-      <link class="next" idref="levels" />
-     </meta>
-
-     <data>
-      <p>Habrá ocasiones durante tu aventura en que tendrás que luchar con algún enemigo. La <typ class="attribute">DESTREZA EN EL COMBATE</typ> y los puntos de <typ class="attribute">RESISTENCIA</typ> del enemigo se indican en el texto. La finalidad de Lobo Solitario en los combates es matar al enemigo reduciendo a cero sus puntos de <typ class="attribute">RESISTENCIA</typ> y perdiendo él mismo los menos puntos de <typ class="attribute">RESISTENCIA</typ> posible.</p>
-      <p>Al comienzo del combate, anota los puntos de <typ class="attribute">RESISTENCIA</typ> de Lobo Solitario y de su enemigo en las casillas correspondientes a resultados de los combates en la <a idref="action">Carta de Acción</a>.</p>
-      <p>La secuencia de un combate es la siguiente:</p>
-      <ol class="paragraphed">
-       <li><p>Suma los puntos que hayas ganado gracias a tus disciplinas del Kai al total de tu actual <typ class="attribute">DESTREZA EN EL COMBATE</typ>.</p></li>
-       <li>
-        <p>Resta de ese total la <typ class="attribute">DESTREZA EN EL COMBATE</typ> de tu enemigo. El resultado es tu puntuación en el combate. Anótala en la <a idref="action">Carta de Acción</a>.</p>
-        <p>Ejemplo</p>
-        <p>Lobo Solitario (<typ class="attribute">DESTREZA EN EL COMBATE</typ> 15) cae en una emboscada que le tiende Diablo Alado (<typ class="attribute">DESTREZA EN EL COMBATE</typ> 20). No existe la posibilidad de que Lobo Solitario eluda el combate. Por tanto debe resistir y luchar cuando la mencionada criatura se precipita sobre él. Lobo Solitario posee la disciplina del Kai de ataque psíquico, así que suma 2 puntos a su <typ class="attribute">DESTREZA EN EL COMBATE</typ>, cuyo total será por consiguiente 17.</p>
-        <p>De ese total resta la <typ class="attribute">DESTREZA EN EL COMBATE</typ> de Diablo Alado, con lo que resulta una puntuación de -3 (17<ch.endash/>20 = -3), que es anotada en la <a idref="action">Carta de Acción</a>.</p>
-       </li>
-       <li><p><a id="stage3">Una vez que has obtenido tu puntuación en el combate</a>, elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p></li>
-       <li>
-        <p>Consulta la <a idref="crtable">Tabla de resultados de los combates</a>. En la hilera superior de recuadros figuran las distintas puntuaciones posibles de los combates. En la primera columna de la izquierda y en la última de la derecha aparecen los números correspondientes al que has elegido al azar en la <a idref="random">Tabla de la Suerte</a>. Busca la casilla en la que se crucen la línea vertical trazada desde el recuadro superior donde aparezca tu puntuación en el combate y la línea horizontal trazada desde el número que hayas elegido al azar en la <a idref="random">Tabla de la Suerte</a>. En esa casilla encontrarás los puntos de <typ class="attribute">RESISTENCIA</typ> que han perdido Lobo Solitario y su enemigo en este asalto. (E representa los puntos perdidos por el enemigo; LS, los puntos perdidos por Lobo Solitario).</p>
-        <p>Ejemplo</p>
-        <p>La puntuación en el combate entre Lobo Solitario y Diablo Alado ha quedado fijada en -3. Si el número sacado en la <a idref="random">Tabla de la Suerte</a> es un 6, entonces el resultado del primer asalto del combate es:</p>
-        <ul>
-         <li>Lobo Solitario pierde 3 puntos de <typ class="attribute">RESISTENCIA</typ>.</li>
-         <li>Diablo Alado pierde 6 puntos de <typ class="attribute">RESISTENCIA</typ>.</li>
-        </ul>
-       </li>
-       <li><p>Anota en la <a idref="action">Carta de Acción</a> los cambios experimentados por los puntos de <typ class="attribute">RESISTENCIA</typ> de los participantes en el combate.</p></li>
-       <li><p>A no ser que se te den otras instrucciones o que tengas la opción de eludir el combate, ahora comienza el próximo asalto.</p></li>
-       <li><p>Repite la secuencia desde el <a idref="stage3">apartado 3</a>.</p></li>
-      </ol>
-      <p>Este proceso de combates continúa hasta que los puntos de <typ class="attribute">RESISTENCIA</typ> del enemigo o de Lobo Solitario queden reducidos a cero. En ese momento el que tenga cero puntos es declarado muerto. Si el muerto es Lobo Solitario, la aventura habrá terminado. Si el muerto es el enemigo, Lobo Solitario continúa la aventura, pero con sus puntos de <typ class="attribute">RESISTENCIA</typ> disminuidos.</p>
-      <p>En la página siguiente a la <a idref="random">Tabla de la Suerte</a> aparece un <a idref="crsumary">resumen de las reglas para los combates</a>.</p>
-
-      <section class="frontmatter" id="evasion">
-       <meta><title>Eludir el combate</title></meta>
-
-       <data>
-        <p>Durante la aventura se te dará a veces la oportunidad de eludir el combate. Si ya has comenzado un asalto y decides rehuirlo, calcula el resultado de la forma habitual. Los puntos perdidos por el enemigo a consecuencia de ese asalto no se contabilizan si tú te evades.
-Únicamente Lobo Solitario puede perder puntos de <typ class="attribute">RESISTENCIA</typ> durante ese asalto, pero ése es el riesgo que implica escaparse. Sólo podrás huir si el texto de la sección correspondiente te permite hacerlo.</p>
-       </data>
-      </section>
-     </data>
-    </section>
-
-    <section class="frontmatter-separate" id="levels">
-     <meta>
-      <title>Niveles de Entrenamiento Kai</title>
-      <link class="prev" idref="cmbtrulz" />
-      <link class="next" idref="kaiwisdm" />
-     </meta>
-
-     <data>
-      <p>El cuadro de más abajo indica los distintos rangos y títulos otorgados a los señores del Kai en cada etapa de su entrenamiento. Cada vez que hayas completado con éxito una aventura de la serie LOBO SOLITARIO, conseguirás una Disciplina Kai suplementaria y así podrás ascender progresivamente hacia el dominio completo de las diez Disciplinas Kai.</p>
-      <ol>
-       <li>Postulante</li>
-       <li>Novicio</li>
-       <li>Aprendiz</li>
-       <li>Discípulo</li>
-       <li>Iniciado<ch.emdash/>Es el rango con el que emprendiste por primera vez una aventura de Lobo Solitario</li>
-       <li>Aspirante</li>
-       <li>Guardián</li>
-       <li>Guerrero o Viajero</li>
-       <li>Sabio</li>
-       <li>Maestro</li>
-      </ol>
-      <p>Tras estas diez disciplinas Kai básicas existen otras Disciplinas Kai secretas, de orden superior, llamadas Magnakai. Adquiriendo la sabiduría del Magnakai, un señor del Kai puede progresar hacia el dominio supremo y convertirse en un Gran Señor del Kai.</p>
-     </data>
-    </section>
-   </data>
-  </section>
-
-  <section class="frontmatter" id="kaiwisdm">
-   <meta>
-    <title>La Sabiduría del Kai</title>
-    <link class="prev" idref="levels" />
-    <link class="next" idref="sect1" />
-   </meta>
-
-   <data>
-    <p>Tu misión será muy peligrosa, pues los señores de la Oscuridad y sus servidores son enemigos crueles y feroces que no conceden ni esperan clemencia. Utiliza el mapa para orientarte y seguir el camino más directo hacia la capital. Toma notas conforme vas avanzando a lo largo de la historia porque te serán de gran utilidad en futuras aventuras.</p>
-    <p>Muchos objetos que encontrarás te ayudarán durante la aventura. Algunos objetos especiales te serán útiles en próximas aventuras de Lobo Solitario, mientras que otros no tendrán ninguna utilidad real. Por tanto, deberás elegir con mucho cuidado los que decides conservar.</p>
-    <p>Hay muchas rutas que conducen hasta el Rey, pero sólo una implica un mínimo de peligros. Con una sabia elección de las disciplinas del Kai y una buena dosis de valor, cualquier jugador será capaz de llevar a cabo la misión, por reducidos que sean su inicial <typ class="attribute">DESTREZA EN EL COMBATE</typ> o sus puntos de <typ class="attribute">RESISTENCIA</typ>.</p>
-    <p>El honor y la memoria de los señores del Kai te acompañarán en tu arriesgado viaje.</p>
-    <p>¡Buena suerte!</p>
-   </data>
-  </section>
-
-  <section class="numbered" id="numbered">
-   <meta><title>Secciones Numeradas</title></meta>
-
-   <data>
-
-    <section class="numbered" id="sect1">
-     <meta><title>1</title></meta>
-
-     <data>
-      <p>Debes apresurarte, pues comprendes que es arriesgado permanecer entre los restos humeantes del derruido monasterio. Las bestias de alas negras pueden volver en cualquier momento. Tienes que partir hacia Holmgard, la capital de Sommerlund, e informar al Rey de la terrible matanza: que todos los guerreros más cualificados del Kai, a excepción de ti mismo, han perecido. Sin los señores del Kai para dirigir sus ejércitos, Sommerlund está a merced de sus antiguos enemigos, los señores de la Oscuridad.</p>
-      <p>Conteniendo las lágrimas te despides de tus camaradas muertos. En silencio prometes que sus muertes serán vengadas. Te alejas de las ruinas y precavidamente desciendes por la abrupta pendiente.</p>
-      <p>Al pie de la colina, el sendero se divide en dos direcciones, pero ambas conducen a un gran bosque.</p>
-      <choice idref="sect141">Si deseas utilizar la disciplina del Sexto sentido, <link-text>pasa al 141</link-text>.</choice>
-      <choice idref="sect85">Si deseas tomar el camino de la derecha, <link-text>pasa al número 85</link-text>.</choice>
-      <choice idref="sect275">Si deseas seguir el camino de la izquierda, <link-text>pasa al 275</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect2">
-     <meta><title>2</title></meta>
-
-     <data>
-      <p>Mientras corres entre los árboles que cada vez se van haciendo más espesos, los gritos de los giaks empiezan a extinguirse a lo lejos. Cuando ya casi has dejado atrás a tus perseguidores, chocas de frente contra una maraña de ramas bajas.</p>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect343">Si te sale un número entre el 0 y el 4, <link-text>pasa al 343</link-text>.</choice>
-      <choice idref="sect276">Si te sale un número entre el 5 y el 9, <link-text>pasa al 276</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect3">
-     <meta><title>3</title></meta>
-
-     <data>
-      <p>Siguiendo de cerca al oficial, atraviesas una puerta enmarcada por un arco y subes un corto tramo de escaleras que conduce a un gran vestíbulo. Allí entran y salen soldados llevando órdenes en adornados pergaminos a los oficiales que están estacionados junto a las murallas de la ciudad.</p>
-      <p>Un hombre macilento y con el rostro surcado de cicatrices, vestido con la túnica blanca y púrpura de los cortesanos del Rey, se acerca a ti y te invita a que le sigas hasta la ciudadela.</p>
-      <choice idref="sect196">Si deseas seguir a este hombre, <link-text>pasa al número 196</link-text>.</choice>
-      <choice idref="sect144">Si deseas rehusar su invitación y volver a las calles atestadas de gente, <link-text>pasa al 144</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect4">
-     <meta><title>4</title></meta>
-
-     <data>
-      <p>El pequeño bote se encuentra en muy mal estado. La madera está astillada y el fondo hace agua por varios lugares. Rápidamente tapas con un poco de barro los agujeros más grandes y achicas el agua. Esto parece mantener de momento la embarcación a flote. Cargas en ella tu equipo y empiezas a navegar río abajo usando como remo una rama que has recogido de la corriente.</p>
-      <p>Al cabo de un rato oyes el sonido de caballos que galopan hacia ti por la orilla izquierda.</p>
-      <choice idref="sect218">Si deseas utilizar la disciplina del Sexto sentido, <link-text>pasa al 218</link-text>.</choice>
-      <choice idref="sect75">Si deseas esconderte en el fondo de la barca, <link-text>pasa al número 75</link-text>.</choice>
-      <choice idref="sect175">Si deseas llamar la atención de los jinetes, <link-text>pasa al 175</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect5">
-     <meta><title>5</title></meta>
-
-     <data>
-      <p>Después de caminar durante una hora por el sendero, éste tuerce poco a poco hacia el este. Llegas a una hondonada por donde corre hacia el sur, entre escarpados peñascos, un rápido arroyo. Al otro lado del vado que lo atraviesa, el sendero desemboca en un camino más ancho que va de norte a sur. Comprendiendo que si te diriges al norte te alejarás de la capital, doblas a la derecha del cruce y te encaminas hacia el sur.</p>
-      <choice idref="sect111"><link-text>Pasa al número 111</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect6">
-     <meta><title>6</title></meta>
-
-     <data>
-      <p>Oyes el ruido lejano de caballos al galope. El sonido aumenta. Te escondes detrás de un árbol y esperas a que los jinetes se acerquen. Son la caballería de la Guardia Real, que llevan los uniformes blancos del ejército de Su Majestad.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="228" width="320" src="6.gif" />
-      </illustration>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small6.gif" width="386" height="150" />
-       <instance class="pdf" src="small6.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect183">Si deseas llamarles, <link-text>dirígete al número 183</link-text>.</choice>
-      <choice idref="sect200">Si deseas dejarles pasar de largo y luego continuar tu camino a través del bosque, <link-text>dirígete al número 200</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect7">
-     <meta><title>7</title></meta>
-
-     <data>
-      <p>Durante un tiempo que te parece una eternidad, la muchedumbre desbandada te arrastra como una hoja en los rápidos de una corriente. Luchas desesperadamente por mantenerte en pie, pero te encuentras débil y aturdido después de tantas penalidades y las piernas te pesan como si fueran de plomo. De repente divisas unas escaleras largas y estrechas que conducen al tejado de una taberna.</p>
-      <p>Reuniendo tus últimas fuerzas te lanzas escaleras arriba y subes al tejado. Desde allí puedes contemplar una magnífica vista de las torres y agujas de Holmgard y las altas murallas de piedra de la ciudadela, resplandecientes a la luz del sol.</p>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>Desde all<ch.iacute/> puedes contemplar una magn<ch.iacute/>fica vista de las torres y agujas de  Holmgard y las altas murallas de piedra de la ciudadela</description>
-       </meta>
-       <instance class="html" src="ill1.gif" width="386" height="673" />
-       <instance class="pdf" src="ill1.pdf" width="386" height="673" />
-      </illustration>
-      <p>Las casas y demás edificios de la capital están construidos muy cerca unos de otros y es posible saltar de un tejado al siguiente. De hecho, muchos ciudadanos de Holmgard solían usar «el camino de los tejados» (como lo llamaban) cuando las intensas lluvias del otoño dejaban las zonas no pavimentadas de las calles convertidas en lodazales intransitables.</p>
-      <p>Pero como sucedieron numerosos accidentes, un real decreto prohibió semejante costumbre. Después de reflexionar detenidamente, decides utilizar «el camino de los tejados», pues es tu única posibilidad de llegar hasta el Rey. Saltas y brincas por encima de varias calles y ya sólo una calle te separa de la ciudadela cuando te detienes al final de una hilera de tejados.</p>
-      <p>La distancia que hay hasta la siguiente hilera es mucho mayor que las que has salvado hasta ese momento y sientes en el estómago una extraña sensación, como si lo tuvieras lleno de mariposas. Decidido a alcanzar la ciudadela, retrocedes unos pasos para tomar impulso y, con la sangre golpeándote en las sienes, das un salto desde el borde del tejado, volando sobre el vacío, fija la mirada en el tejado de enfrente.</p>
-      <p>Escoge al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect108">Si te sale un número comprendido entre el 0 y el 2, <link-text>pasa al 108</link-text>.</choice>
-      <choice idref="sect25">Si te sale un número entre el 3 y el 9, <link-text>pasa al 25</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect8">
-     <meta><title>8</title></meta>
-
-     <data>
-      <p>Tu Sexto sentido te avisa de que al sur se libra una encarnizada batalla. Pero tu sentido común te dice también que el sur es la ruta más rápida hacia la capital.</p>
-      <choice idref="sect70"><link-text>Pasa al número 70</link-text> y elige tu ruta.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect9">
-     <meta><title>9</title></meta>
-
-     <data>
-      <p>No puedes moverte. Una fuerza poderosa te sujeta y te deja rígido. Tienes los ojos fijos en la boca del esqueleto. Desde las profundidades de la tierra llega hasta tus oídos un zumbido sordo, como de millones de abejas enfurecidas. Un resplandor rojizo aparece en las cuencas de los ojos del rey muerto y el zumbido aumenta hasta convertirse en un rugido ensordecedor. Estás en presencia de un antiguo mal, mucho más viejo y más potente que los mismos Señores de la Oscuridad.</p>
-      <choice idref="sect236">Si posees una gema vordak, <link-text>pasa al número 236</link-text>.</choice>
-      <choice idref="sect292">Si no la posees, <link-text>pasa al 292</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect10">
-     <meta><title>10</title></meta>
-
-     <data>
-      <p>Estás sudando y te duelen las piernas. A media distancia ves un grupo de cabañas.</p>
-      <choice idref="sect115">Si deseas entrar en una de ellas y descansar un rato, <link-text>pasa al número 115</link-text>.</choice>
-      <choice idref="sect83">Si deseas continuar tu viaje, <link-text>pasa el número 83</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect11">
-     <meta><title>11</title></meta>
-
-     <data>
-      <p>Rápidamente atraviesas la puerta de una cuadra y escondes la bata de cirujano entre la paja, pues es mejor ser reconocido como Señor del Kai que ser tomado por un curandero.</p>
-      <p>Sin perder un segundo, sales en dirección hacia el Gran Salón, que se encuentra al otro lado del patio.</p>
-      <choice idref="sect139"><link-text>Pasa al número 139</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect12">
-     <meta><title>12</title></meta>
-
-     <data>
-      <p>El guardaespaldas te mira con gesto de sospecha y cierra la puerta de golpe. Oyes voces dentro del carruaje. De repente la puerta se abre y aparece el rostro de un rico mercader.</p>
-      <p>Te pide 10 Coronas de oro como pago por el viaje.</p>
-      <choice idref="sect262">Si tienes 10 Coronas de oro y quieres pagarle, <link-text>pasa al número 262</link-text>.</choice>
-      <choice idref="sect247">Si no tienes suficientes Coronas de oro o no quieres pagárselas, <link-text>pasa al 247</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect13">
-     <meta><title>13</title></meta>
-
-     <data>
-      <p>El sendero termina pronto en un gran claro. En medio del claro hay un árbol mucho más alto y más grueso que los que has visto en el bosque.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small1.gif" width="386" height="150" />
-       <instance class="pdf" src="small1.pdf" width="386" height="150" />
-      </illustration>
-      <p>Entre las frondosas ramas puedes ver una casita a una altura entre veinticinco y treinta pies. No hay ninguna escala para subir a ella, pero el tronco nudoso del árbol te ofrece muchos salientes donde apoyar los pies.</p>
-      <choice idref="sect307">Si deseas trepar al árbol y explorar la casita, <link-text>pasa al número 307</link-text>.</choice>
-      <choice idref="sect213">Si deseas proseguir tu camino, <link-text>pasa al 213</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect14">
-     <meta><title>14</title></meta>
-
-     <data>
-      <p>Alcanzas la cima de una pequeña colina cubierta de árboles, en la que varias piedras forman un tosco círculo. De repente oyes un fuerte gruñido que parece provenir de detrás de una roca a tu izquierda.</p>
-      <choice idref="sect43">Si deseas empuñar el arma y disponerte a luchar, <link-text>pasa al número 43</link-text>.</choice>
-      <choice idref="sect106">Si prefieres evadirte corriendo lo más deprisa que puedas colina abajo, <link-text>pasa al 106</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect15">
-     <meta><title>15</title></meta>
-
-     <data>
-      <p>Atraviesas un largo y oscuro túnel de ramas colgantes que aquí y allá se abre en amplios claros. En el centro de uno de esos claros, encima de una roca, hay una espada, envainada en una funda de piel negra. Una nota manuscrita ha sido atada a la empuñadura, pero está escrita en un lenguaje que tú desconoces.</p>
-      <p>Puedes quedarte con la espada si así lo deseas y anotarla en tu <a idref="action">Carta de Acción</a>.</p>
-      <p>Hay tres salidas del claro.</p>
-      <choice idref="sect207">Si decides ir hacia el este, <link-text>pasa al número 207</link-text>.</choice>
-      <choice idref="sect201">Si decides ir hacia el oeste, <link-text>pasa al 201</link-text>.</choice>
-      <choice idref="sect35">Si decides ir hacia el sur, <link-text>pasa al 35</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect16">
-     <meta><title>16</title></meta>
-
-     <data>
-      <p>Consigues desatar un caballo de las correas que lo atan al carruaje. Está aterrado por el olor de los lobos fatídicos que se aproximan y por los gritos de sus malvados jinetes, los giaks.</p>
-      <p>Preparando tu arma, espoleas al asustadizo caballo en dirección hacia las bestias. Los giaks están a menos de cincuenta yardas de distancia y, conforme se acercan, blanden sus lanzas contra ti.</p>
-      <p>Tú cargas contra ellos.</p>
-      <choice idref="sect192"><link-text>Pasa al número 192</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect17">
-     <meta><title>17</title></meta>
-
-     <data>
-      <p>Levantas tu arma para atacar a la bestia, pero ésta, con sus colmillos afilados como cuchillas, te tira un bocado que está a punto de rebanarte la cabeza. Sacudido por el batir de sus alas, tienes dificultad para mantenerte en pie.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="532" width="386" src="17.gif" />
-      </illustration>
-      <p>Deduce un punto de tu <typ class="attribute">DESTREZA EN EL COMBATE</typ> y pelea con el kraan.</p>
-      <combat><enemy>Kraan</enemy><enemy-attribute class="combatskill">16</enemy-attribute><enemy-attribute class="endurance">24</enemy-attribute></combat> 
-      <p>Si matas a la bestia, desciende rápidamente de la colina para eludir a los giaks.</p>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect53">Si sacas un 0, <link-text>pasa al 53</link-text>.</choice>
-      <choice idref="sect274">Si sacas un 1 o un 2, <link-text>pasa al 274</link-text>.</choice>
-      <choice idref="sect316">Si sacas un número entre el 3 y el 9, <link-text>pasa al 316</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect18">
-     <meta><title>18</title></meta>
-
-     <data>
-      <p>Te despierta el ruido de tropas distantes. Ves al otro lado del lago las figuras con negras capas de los drakkarim y una manada de lobos fatídicos montados por sus jinetes. Encima de los árboles aparece un kraan, que se posa en el tejado de una choza de madera.</p>
-      <p>Sobre el kraan cabalga una criatura vestida de negro. El kraan alza el vuelo y atraviesa el lago hacia el lugar donde tú estás escondido.</p>
-      <choice idref="sect114">Si deseas utilizar la disciplina del Camuflaje, <link-text>pasa al 114</link-text>.</choice>
-      <choice idref="sect239">Si deseas penetrar más en el interior del bosque, <link-text>pasa al número 239</link-text>.</choice>
-      <choice idref="sect29">Si deseas luchar contra esa criatura, <link-text>pasa al 29</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect19">
-     <meta><title>19</title></meta>
-
-     <data>
-      <p>Delante de ti, entre los altos árboles, divisas unos grupos de matorrales de color rojo oscuro: son zarzas provistas de punzantes espinas carmesí. El nombre vulgar de esas zarzas es el de adormideras, pues si alguien se pincha con sus agudas púas se debilita y adormece.</p>
-      <choice idref="sect69">Si posees la disciplina del Rastreo, <link-text>pasa al 69</link-text>.</choice>
-      <choice idref="sect272">Puedes evitar las adormideras volviendo al camino. <link-text>Pasa entonces al número 272</link-text>.</choice>
-      <choice idref="sect119">O puedes cruzar entre las zarzas e internarte más en el bosque. <link-text>Pasa en ese caso al número 119</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect20">
-     <meta><title>20</title></meta>
-
-     <data>
-      <p>Quienquiera que viviese allí, debió de salir precipitadamente y hace muy poco tiempo. Sobre la mesa quedan aún restos de comida y, al tocar una taza, notas que aún está caliente.</p>
-      <p>Registras un arca y un pequeño armario y encuentras una Mochila, alimentos (suficientes para 2 Comidas) y una Daga.</p>
-      <p>Si deseas apropiarte esos objetos, recuerda anotarlos en tu <a idref="action">Carta de Acción</a>. Luego continúa tu misión.</p>
-      <choice idref="sect273"><link-text>Pasa al número 273</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect21">
-     <meta><title>21</title></meta>
-
-     <data>
-      <p>Después de cabalgar unas dos millas por el enmarañado bosque, adviertes que el terreno se vuelve pantanoso.</p>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect189">Si es inferior al 5, el caballo se hunde de improviso en el espeso fango hasta el vientre. Si el número es el 5 o superior al 5, logras salir del pantano y <link-text>pasas al 189</link-text>.</choice>
-      <choice idref="sect189">Si estás atollado en el lodo, elige al azar otro número de la <a idref="random">Tabla de la Suerte</a>. Si esta vez el número es un 7 o inferior al 7, te sumerges en el lodo hasta los sobacos. El caballo lanza un último relincho desesperado cuando su hocico desaparece en el burbujeante fango. Si el número que has sacado es mayor que 7, logras librarte del lodo y pisar terreno firme y <link-text>pasas al 189</link-text>.</choice>
-      <choice idref="sect312">De lo contrario, tienes una última oportunidad. Elige de nuevo un número al azar. Si no es el 9, la ciénaga putrefacta te engulle por completo cobrándose una nueva víctima. Tu vida y tu misión acaban aquí. Si el número que te ha salido es el 9, <link-text>pasa al 312</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect22">
-     <meta><title>22</title></meta>
-
-     <data>
-      <p>Apartando de un golpe al jefe, echas a correr por el camino real. Entonces, detrás de ti, el chasquido funesto de una ballesta al ser tensada hace que un escalofrío te recorra la espina dorsal.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small20.gif" width="386" height="150" />
-       <instance class="pdf" src="small20.pdf" width="386" height="150" />
-      </illustration>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect181">Si sacas un número entre el 0 y el 4, <link-text>pasa al 181</link-text>.</choice>
-      <choice idref="sect145">Si sacas un número entre el 5 y el 9, <link-text>pasa al 145</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect23">
-     <meta><title>23</title></meta>
-
-     <data>
-      <p>El corredor pronto se ensancha en un amplio vestíbulo. En el otro extremo, unas escaleras de piedra llevan a una enorme puerta. Dos velas negras a ambos lados de las escaleras alumbran débilmente el cuarto. Observas que la cera no se derrite y, al acercarte, notas que las velas no dan calor. Antiguos grabados cubren las paredes de piedra.</p>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>An ornate pin appears to lock the door, but<br />there is also a keyhole in the lockplate</description>
-       </meta>
-       <instance class="html" src="ill2.gif" width="386" height="715" />
-       <instance class="pdf" src="ill2.pdf" width="386" height="715" />
-      </illustration>
-      <p>Ansioso por salir de aquella tumba aciaga, examinas la puerta buscando un picaporte. Un alfiler adornado parece servir de pestillo a la puerta, pero en la chapa de la cerradura hay también un agujero para una llave.</p>
-      <choice idref="sect326">Si tienes una Llave de oro y quieres usarla, <link-text>pasa al 326</link-text>.</choice>
-      <choice idref="sect151">Si posees la disciplina de Dominio mental sobre la materia, <link-text>pasa al 151</link-text>.</choice>
-      <choice idref="sect337">Si deseas quitar el alfiler, <link-text>pasa al número 337</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect24">
-     <meta><title>24</title></meta>
-
-     <data>
-      <p>El mercader grita al cochero del carruaje que salte.</p>
-      <p><quote>-¡Nos atacan!</quote> -exclama, desapareciendo por la ventana circular.</p>
-      <choice idref="sect234">Si decides saltar detrás de él, <link-text>pasa al número 234</link-text>.</choice>
-      <choice idref="sect184">Si decides ocupar el puesto del cochero y tomar las riendas del tiro de caballos, <link-text>pasa al número 184</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect25">
-     <meta><title>25</title></meta>
-
-     <data>
-      <p>Aterrizas en el tejado de enfrente con tal encontronazo que te quedas sin aliento y caes de espaldas torciéndote el cuello.</p>
-      <p>Al cabo de un minuto más o menos, te das cuenta de que has conseguido cruzar la calle y estás sano y salvo. Al convencerte de ello, te pones en pie de un salto y lanzas un grito de alegría por tu habilidad y valor.</p>
-      <p>En seguida recorres el tejado y desciendes por un canalón de desagüe a la calle. Ves los portones de la ciudadela abiertos y un carro tirado por dos grandes caballos que trata de salir. Los caballos están asustados a causa de los gritos de la multitud y ambos se encabritan haciendo que el carro choque contra el portón destrozando una de las ruedas delanteras. En la confusión que se origina ves una oportunidad de entrar sin ser advertido y rápidamente te deslizas en el interior antes de que los guardias cierren de golpe los portones.</p>
-      <choice idref="sect139"><link-text>Pasa al número 139</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect26">
-     <meta><title>26</title></meta>
-
-     <data>
-      <p>Con mucha precaución avanzas por el corredor hasta que llegas a un recodo que tuerce hacia el este. Una extraña luz verde se divisa a lo lejos.</p>
-      <choice idref="sect249">Si deseas continuar, <link-text>pasa al número 249</link-text>.</choice>
-      <choice idref="sect100">Si deseas retroceder y probar por la ruta hacia el sur, <link-text>pasa al número 100</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect27">
-     <meta><title>27</title></meta>
-
-     <data>
-      <p>Caminas por el sendero durante más de una hora, observando precavidamente el cielo por si el kraan te ataca de nuevo. Delante de ti, un gran árbol caído está atravesado en el sendero. A medida que te acercas, oyes voces que proceden del otro lado del enorme tronco.</p>
-      <choice idref="sect250">Si eliges atacar, <link-text>pasa al número 250</link-text>.</choice>
-      <choice idref="sect52">Si prefieres escuchar lo que dicen esas voces, <link-text>pasa al número 52</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect28">
-     <meta><title>28</title></meta>
-
-     <data>
-      <p>Al cabo de unos pocos cientos de yardas, el sendero se une con otro que va de norte a sur.</p>
-      <choice idref="sect130">Si deseas ir hacia el norte, <link-text>pasa al número 130</link-text>.</choice>
-      <choice idref="sect147">Si deseas ir hacia el sur, <link-text>pasa al 147</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect29">
-     <meta><title>29</title></meta>
-
-     <data>
-      <p>A grandes zancadas te diriges al borde del agua y te preparas para combatir. El kraan y su jinete te han descubierto y cruzan el lago a toda velocidad, apenas unas pulgadas sobre la superficie del agua.</p>
-      <p>El jinete lanza un alarido que te hiela la sangre. Es un vordak, un feroz lugarteniente de los señores de la Oscuridad.</p>
-      <p>Se encuentra ya encima de ti y debes luchar contra él. Resta 2 puntos de tu <typ class="attribute">DESTREZA EN EL COMBATE</typ> a no ser que tengas la disciplina de Defensa psíquica, pues el vordak te está atacando con su fuerza mental y con una enorme maza negra.</p>
-      <combat><enemy>Vordak</enemy><enemy-attribute class="combatskill">17</enemy-attribute><enemy-attribute class="endurance">25</enemy-attribute></combat> 
-      <choice idref="sect270">Si vences en la lucha, <link-text>pasa al número 270</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect30">
-     <meta><title>30</title></meta>
-
-     <data>
-      <p>La gente está cansada y hambrienta. Han recorrido muchas millas desde que abandonaron su ciudad en llamas. De pronto oyes el batir de gigantescas alas. El sonido proviene del norte.</p>
-      <p><quote>-¡Son kraans, kraans! Escondeos.</quote></p>
-      <p>El clamor se extiende a lo largo del camino.</p>
-      <p>Enfrente de ti, a un carro en el que van unos niños se le atasca una rueda en un surco del camino y se rompe. Los niños chillan aterrados.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="271" width="386" src="30.gif"/>
-      </illustration>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small2.gif" width="386" height="150" />
-       <instance class="pdf" src="small2.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect194">Si deseas ayudar a los niños, <link-text>pasa al número 194</link-text>.</choice>
-      <choice idref="sect261">Si quieres salir corriendo y refugiarte entre los árboles, <link-text>pasa al 261</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect31">
-     <meta><title>31</title></meta>
-
-     <data>
-      <p>Tratas de confortar al herido lo mejor que puedes, pero sus heridas son graves y pronto vuelve a perder el conocimiento. Le cubres con su capa, te das media vuelta y te internas rápidamente en la espesura del bosque.</p>
-      <choice idref="sect264"><link-text>Pasa al número 264</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect32">
-     <meta><title>32</title></meta>
-
-     <data>
-      <p>Después de cabalgar unas tres millas, ves a lo lejos las inconfundibles siluetas de cinco grandes lobos fatídicos. A lomos de ellos van los giaks. Parecen dirigirse hacia adelante, donde el sendero desciende hasta una pradera abierta. De repente, uno de los giaks se separa de los otros y retrocede por el camino en dirección hacia ti.</p>
-      <choice idref="sect176">Si deseas esconderte entre la maleza y dejarle pasar de largo, <link-text>vete al número 176</link-text>.</choice>
-      <choice idref="sect340">Si deseas combatir contra él, <link-text>pasa al número 340</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect33">
-     <meta><title>33</title></meta>
-
-     <data>
-      <p>El suelo de la cueva está completamente seco y cubierto de polvo. Al explorar más hacia el interior, percibes el olor apestoso de carne podrida. Esparcidos en una grieta están los huesos, la piel y los dientes de varios animalitos. Entre esos restos descubres una pequeña bolsa de tela. La abres y encuentras 3 Coronas de oro que te guardas en el bolsillo. Después sales de la que parece ser la guarida de un gato montés y desciendes precavidamente de la colina.</p>
-      <choice idref="sect248"><link-text>Pasa al número 248</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect34">
-     <meta><title>34</title></meta>
-
-     <data>
-      <p>De improviso, una terrible aparición vestida de rojo se lanza sobre ti desde lo alto del cielo a lomos de un kraan. Su aullido te hiela la sangre. La bestia es un vordak, un feroz lugarteniente de los señores de la Oscuridad.</p>
-      <p>Está encima de ti y debes luchar contra él.</p>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>A terrible apparition in red robes swoops down<br />from the sky on the back of a Kraan</description>
-       </meta>
-       <instance class="html" src="ill3.gif" width="386" height="694" />
-       <instance class="pdf" src="ill3.pdf" width="386" height="694" />
-      </illustration>
-      <p>Resta 2 puntos de tu <typ class="attribute">DESTREZA EN EL COMBATE</typ> a menos que poseas la disciplina de Defensa psíquica, pues la criatura te ataca con el poder de su Fuerza mental y a la vez con una enorme maza negra.</p>
-      <combat><enemy>Vordak</enemy><enemy-attribute class="combatskill">17</enemy-attribute><enemy-attribute class="endurance">25</enemy-attribute></combat> 
-      <choice idref="sect328">Si vences, <link-text>pasa al número 328</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect35">
-     <meta><title>35</title></meta>
-
-     <data>
-      <p>El bosque se va volviendo más denso y la senda más enmarañada de zarzas espinosas. Descubres otra senda, que está casi completamente oculta por la maleza y se dirige hacia el este. Tu ruta actual parece que acaba entre los matorrales, así que decides seguir la nueva senda en dirección este.</p>
-      <choice idref="sect207"><link-text>Pasa al número 207</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect36">
-     <meta><title>36</title></meta>
-
-     <data>
-      <p>La escala que conduce a la vieja atalaya está carcomida y, al subir por ella, se rompen varios escalones. Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect140">Si el número es un 4 o está por debajo de 4, caes al suelo, pierdes 2 puntos de <typ class="attribute">RESISTENCIA</typ> y <link-text>pasas al 140</link-text>.</choice>
-      <choice idref="sect323">Si el número es un 5 o está por encima del 5, no te caes y <link-text>pasas al 323</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect37">
-     <meta><title>37</title></meta>
-
-     <data>
-      <p>Te sientes cansado y hambriento y debes detenerte para comer. Después de hacerlo, vuelves sobre tus pasos a la ciudadela y empiezas a caminar alrededor de la alta e infranqueable muralla de piedra.</p>
-      <p>Por el lado oriental descubres otra entrada, vigilada también por dos soldados con armaduras.</p>
-      <choice idref="sect282">Si deseas utilizar la disciplina de Camuflaje, <link-text>pasa al 282</link-text>.</choice>
-      <choice idref="sect289">Si deseas acercarte a ellos y contarles tu historia, <link-text>pasa al número 289</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect38">
-     <meta><title>38</title></meta>
-
-     <data>
-      <p>Durante una hora o más sigues andando por el bosque a través de la rica vegetación de árboles y matorrales. Llegas a la orilla de un claro arroyo donde te detienes unos minutos para lavarte la cara y beber un poco de agua fresca.</p>
-      <p>Sintiéndote revitalizado, cruzas la corriente y continúas adelante. Pronto percibes olor de humo de leña que parece provenir del norte.</p>
-      <choice idref="sect128">Si quieres investigar el lugar de donde viene el olor, <link-text>pasa al número 128</link-text>.</choice>
-      <choice idref="sect347">Si prefieres evitar el sitio de donde llega el humo, <link-text>pasa al 347</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect39">
-     <meta><title>39</title></meta>
-
-     <data>
-      <p>Unos segundos después, dos caritas peludas se asoman nerviosas por encima del tronco. Te dicen que son kakarmis y que los kraans están por todas partes. Al oeste quedan los restos de su poblado, que apenas son más que un montón de ruinas. Están buscando a los supervivientes de su tribu, que escaparon al bosque cuando los "alas negras" atacaron. Señalan detrás de ellos, al este del sendero, y te informan de que éste parece terminar allí, pero que si sigues a través de la maleza unas pocas yardas más, encontrarás una atalaya junto a la cual el camino se divide en tres direcciones. Toma la del este, que te conducirá al camino real que une la capital, Holmgard, con el puerto del norte, Toran.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small18.gif" width="386" height="150" />
-       <instance class="pdf" src="small18.pdf" width="386" height="150" />
-      </illustration>
-      <p>Das las gracias a los kakarmis y les dices adiós.</p>
-      <choice idref="sect228"><link-text>Pasa al número 228</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect40">
-     <meta><title>40</title></meta>
-
-     <data>
-      <p>Observando cuidadosamente las cabañas por si descubres alguna señal de la presencia de enemigos, rodeas el claro escondiéndote entre los árboles y matorrales. Vuelves al camino y te alejas a toda prisa de Fogwood.</p>
-      <choice idref="sect105"><link-text>Pasa al número 105</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect41">
-     <meta><title>41</title></meta>
-
-     <data>
-      <p>Tres guardabosques pasan al galope por la orilla del río, seguidos de cerca por giaks montados en sus rugientes lobos fatídicos.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="533" width="386" src="41.gif" />
-      </illustration>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>The Giak leader orders five of his troops<br />to open fire at you with their bows</description>
-       </meta>
-       <instance class="html" src="ill4.gif" width="386" height="701" />
-       <instance class="pdf" src="ill4.pdf" width="386" height="701" />
-      </illustration>
-      <p>La orilla es escarpada y te divisa el jefe de los giaks, que ordena a cinco de sus guerreros que disparen contra ti sus arcos. Una lluvia de flechas negras cae sobre ti.</p>
-      <choice idref="sect174">Si decides remar río arriba lo más deprisa que puedas, <link-text>pasa al número 174</link-text>.</choice>
-      <choice idref="sect116">Si decides esconderte entre los árboles de la orilla opuesta, <link-text>pasa al número 116</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect42">
-     <meta><title>42</title></meta>
-
-     <data>
-      <p>Sigues el camino durante casi una hora hasta que llegas a una encrucijada.</p>
-      <choice idref="sect86">Si deseas continuar hacia el este, <link-text>pasa al número 86</link-text>.</choice>
-      <choice idref="sect238">Si prefieres dirigirte hacia el norte, <link-text>pasa al 238</link-text>.</choice>
-      <choice idref="sect157">Si decides aventurarte hacia el sur, <link-text>pasa al 157</link-text>.</choice>
-      <choice idref="sect147">Si escoges ir hacia el oeste, <link-text>pasa al 147</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect43">
-     <meta><title>43</title></meta>
-
-     <data>
-      <p>De detrás de la roca surge un enorme oso negro. Avanza despacio hacia ti, con la boca abierta y el rostro desfigurado por la cólera y el dolor.</p>
-      <p>Adviertes que está malherido y que sangra por el pescuezo y el lomo. Debes luchar contra él.</p>
-      <combat><enemy>Oso negro</enemy><enemy-attribute class="combatskill">16</enemy-attribute><enemy-attribute class="endurance">10</enemy-attribute></combat> 
-      <choice idref="sect195">Si vences, <link-text>pasa al número 195</link-text>.</choice>
-      <choice idref="sect106">Después de tres asaltos, tu posición te permite salir corriendo colina abajo. Si en este momento deseas evadirte del combate, <link-text>pasa al número 106</link-text> afrontando el riesgo de ser herido en la huida.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect44">
-     <meta><title>44</title></meta>
-
-     <data>
-      <p>De repente, el viejo sendero termina bruscamente junto al borde de una abrupta pendiente. En ésta el terreno es muy movedizo e inestable. Pierdes pie y caes de cabeza por el declive.</p>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect277">Si el número está entre el 0 y el 4, <link-text>pasa al 277</link-text>.</choice>
-      <choice idref="sect338">Si el número está entre el 5 y el 9, <link-text>pasa al 338</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect45">
-     <meta><title>45</title></meta>
-
-     <data>
-      <p>Aquellos hombres no son lo que parecen. El jubón del jefe es auténtico, pero está manchado de sangre en el cuello, como si a su verdadero dueño le hubieran matado. Sus armas no pertenecen al ejército, sino que están costosa y profusamente adornadas como las armas fabricadas por los armeros de Durenor.</p>
-      <p>El jefe lleva una ballesta colgada de su mochila. Intentar huir corriendo sería suicida de tu parte. Comprendes que debes combatir o de lo contrario te matarán tan pronto como bajes el arma.</p>
-      <choice idref="sect180"><link-text>Pasa al número 180</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect46">
-     <meta><title>46</title></meta>
-
-     <data>
-      <p>Has recorrido unas dos millas y los árboles empiezan a estar más espaciados. Puedes ver una pequeña choza de madera a la orilla de un lago. Un hombre vestido con capa se acerca a ti y te ofrece llevaros en una balsa a ti y a tu caballo a través del lago por el precio de 2 Coronas de oro.</p>
-      <choice idref="sect296">Si posees la disciplina de Sexto sentido, <link-text>pasa al 296</link-text>.</choice>
-      <choice idref="sect246">Si aceptas el ofrecimiento, <link-text>pasa al número 246</link-text>.</choice>
-      <choice idref="sect90">Si rehúsas e intentas rodear el lago a caballo, <link-text>pasa al 90</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect47">
-     <meta><title>47</title></meta>
-
-     <data>
-      <p>Sin aliento y sudando, trepas hacia la cima de la colina. De pronto, una gran sombra alada cruza la ladera. Miras hacia arriba y ves un kraan que describe círculos en el aire sobre la cumbre. Detrás de ti los giaks están ganando terreno.</p>
-      <choice idref="sect136">¿Te quedas donde estás y combates desde allí a los giaks, aprovechando la ventaja que te da el encontrarte en una posición más alta que ellos? Si eliges esta alternativa, <link-text>pasa al número 136</link-text>.</choice>
-      <choice idref="sect322">¿O, rechinando los dientes, sigues ascendiendo hacia la cumbre de la colina? <link-text>Pasa entonces al número 322</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect48">
-     <meta><title>48</title></meta>
-
-     <data>
-      <p>Tu Sexto sentido te avisa de que esas tropas no son lo que parecen. Detectas un aura de maldad alrededor de ellas. Están al servicio de los señores de la Oscuridad.</p>
-      <choice idref="sect243">Debes abandonar el lugar lo más rápidamente posible antes de que te descubran. <link-text>Pasa al número 243</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect49">
-     <meta><title>49</title></meta>
-
-     <data>
-      <p>Al comenzar a leer la inscripción, observas una sombra que avanza hacia ti desde detrás del biombo.</p>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect339">Si sacas un número comprendido entre el 0 y el 4, <link-text>pasa al 339</link-text>.</choice>
-      <choice idref="sect60">Si el número se encuentra entre el 5 y el 9, <link-text>pasa al 60</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect50">
-     <meta><title>50</title></meta>
-
-     <data>
-      <p>El fragor de la batalla puede ser oído desde muy lejos.</p>
-      <choice idref="sect97">Si deseas dirigirte hacia el campo de batalla, <link-text>pasa al número 97</link-text>.</choice>
-      <choice idref="sect243">Si deseas eludir el combate, cambia de dirección y <link-text>pasa al 243</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect51">
-     <meta><title>51</title></meta>
-
-     <data>
-      <p>Subes por la orilla del río cubierta de árboles y divisas las empalizadas de unas fortificaciones que se pierden en la lejanía.</p>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>La empalizada está derruida en varios lugares,<br />por donde los señores de la Oscuridad atacan</description>
-       </meta>
-       <instance class="html" src="ill5.gif" width="386" height="668" />
-       <instance class="pdf" src="ill5.pdf" width="386" height="668" />
-      </illustration>
-      <p>A una distancia de unas dos millas se libra una batalla y la empalizada está derruida en varios lugares, por donde los señores de la Oscuridad atacan.</p>
-      <p>La mayor parte de las fortificaciones permanecen desguarnecidas, pues los soldados han ido a prestar apoyo a los combatientes.</p>
-      <choice idref="sect288">Hay una puerta en la empalizada. Si deseas aproximarte a ella, <link-text>pasa al número 288</link-text>.</choice>
-      <choice idref="sect221">Si prefieres escalar la empalizada, <link-text>pasa al 221</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect52">
-     <meta><title>52</title></meta>
-
-     <data>
-      <p>Ahora que estás más cerca, te das cuenta de que las voces no son humanas. El sonido se asemeja más a una especie de gruñido o de chirrido.</p>
-      <choice idref="sect225">Si posees la disciplina de Afinidad animal, <link-text>pasa al número 225</link-text>.</choice>
-      <choice idref="sect250">Si no, debes trepar al tronco y enfrentarte con lo que pueda ocultarse al otro lado. <link-text>Pasa al 250</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect53">
-     <meta><title>53</title></meta>
-
-     <data>
-      <p>Un dolor punzante te lacera la pierna derecha, retorcida y aplastada por el peso de tu cuerpo. Desciendes tambaleándote hasta que al fin vas a caer en una zanja al pie de la colina, con tal fuerza que te quedas sin aliento y pierdes el sentido.</p>
-      <p>Te despierta el agudo dolor de algo que se te hinca en el pecho y que resulta ser la punta de la lanza de un giak. Éste te saluda con un malicioso visaje de burla y desprecio, mientras te sujeta el brazo izquierdo contra el suelo. Instintivamente tratas de sacar tu arma, pero ésta no se encuentra en su lugar.</p>
-      <p>Indefenso frente a los crueles giaks, lo último que ves antes de que toda luz se apague para ti es la punta afilada de una lanza giak que ha sido arrojada con violencia hacia tu cuello.</p>
-      <p>Tu misión termina aquí.</p>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect54">
-     <meta><title>54</title></meta>
-
-     <data>
-      <p>Parece como si el cielo no escuchara tus plegarias. Una lanza pasa rozándote la cabeza y va a clavarse en el pescuezo de tu caballo. Lanzando un aullido de dolor, éste vuelca hacia adelante y los dos rodáis por el suelo, enredados en informe montón.</p>
-      <p>Aturdido e inmovilizado por el peso del caballo muerto, lo último que recuerdas son las agudas y penetrantes puntas de las lanzas giaks.</p>
-      <p>Has fracasado en tu misión.</p>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect55">
-     <meta><title>55</title></meta>
-
-     <data>
-      <p>En el momento mismo en que el giak salta, te abalanzas sobre él y le atacas con tu arma, apartándole de la espalda del joven hechicero.</p>
-      <p>De un salto vuelves a la carga golpeando al giak, que lucha denodadamente. Debido a la sorpresa de tu ataque, suma 4 puntos a tu <typ class="attribute">DESTREZA EN EL COMBATE</typ> mientras dure la pelea, pero recuerda restarlos otra vez tan pronto como ésta termine.</p>
-      <combat><enemy>Giak</enemy><enemy-attribute class="combatskill">9</enemy-attribute><enemy-attribute class="endurance">9</enemy-attribute></combat> 
-      <choice idref="sect325">Si vences, <link-text>pasa al número 325</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect56">
-     <meta><title>56</title></meta>
-
-     <data>
-      <p>Oyes el graznido de una enorme bestia alada que sobrevuela los árboles. Es un kraan, servidor mortífero de los señores de la Oscuridad. Rápidamente te escondes bajo unos espesos matorrales hasta que los horribles graznidos se pierden en la lejanía.</p>
-      <choice idref="sect222">Ahora <link-text>pasa al número 222</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect57">
-     <meta><title>57</title></meta>
-
-     <data>
-      <p>La cabaña tiene sólo una habitación. En ella ves una mesa de madera y dos banquetas, una cama hecha de fardos de paja atados, varias botellas de líquidos de colores y una alfombra recamada en el centro del suelo.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small3.gif" width="386" height="150" />
-       <instance class="pdf" src="small3.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect164">Si eliges examinar las botellas, <link-text>pasa al número 164</link-text>.</choice>
-      <choice idref="sect109">Si prefieres levantar la alfombra, <link-text>pasa al 109</link-text>.</choice>
-      <choice idref="sect308">Si optas por salir de la habitación e investigar en el establo, <link-text>pasa al 308</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect58">
-     <meta><title>58</title></meta>
-
-     <data>
-      <p>Echas a correr y bajas a buen ritmo por la ladera. Al oeste, el ejército de los señores de la Oscuridad parece una gigantesca mancha de tinta negra derramada entre las montañas y desparramándose por el valle.</p>
-      <p>Después de correr durante veinte minutos divisas una manada de lobos fatídicos que descienden por una suave pendiente a tu derecha.</p>
-      <choice idref="sect251">Si decides tenderte entre las rocas al lado del camino y esperar a que pasen de largo, <link-text>dirígete al número 251</link-text>.</choice>
-      <choice idref="sect160">Si decides seguir corriendo, pero con el arma lista por si las bestias te atacan, <link-text>pasa al 160</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect59">
-     <meta><title>59</title></meta>
-
-     <data>
-      <p>Escudriñando en la oscuridad, adviertes que unos toscos escalones han sido excavados en la tierra y que la boca de la cueva es de hecho la entrada de un túnel.</p>
-      <p>Desciendes con cuidado por la resbaladiza escalera y al pie de la misma descubres en un rincón una cajita de plata.</p>
-      <choice idref="sect124">Si deseas abrir la cajita, <link-text>pasa al número 124</link-text>.</choice>
-      <choice idref="sect106">Si deseas volver a la superficie y continuar tu camino, <link-text>pasa al 106</link-text>.</choice>
-      <choice idref="sect211">Si deseas seguir explorando el túnel, <link-text>pasa al 211</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect60">
-     <meta><title>60</title></meta>
-
-     <data>
-      <p>Lo último que se te graba en la memoria antes de que la oscuridad te trague es el resplandor de un gran cuchillo curvo. Eres otra víctima del mago y de su hijo el salteador, el mismo que ahora te corta el cuello.</p>
-      <p>Tu búsqueda acaba aquí.</p>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect61">
-     <meta><title>61</title></meta>
-
-     <data>
-      <p>Al fin llegas a las fortificaciones de madera que rodean la ciudad. Mientras corres hacia un puesto de centinela, oyes los gritos excitados de los guardias que te animan. Gracias a los dioses te han reconocido a pesar de tu aspecto harapiento y sospechoso. La capa está desgarrada y hecha jirones, tienes la cara llena de arañazos y manchada de sangre, y el polvo del cementerio te cubre de la cabeza a los pies.</p>
-      <p>Atraviesas chapoteando un arroyo poco profundo y avanzas tambaleándote hasta la puerta del campamento. Todo el horror del encuentro que has sufrido en el cementerio empieza a hacer mella en ti. Lo último que recuerdas antes de que el cansancio te haga perder el sentido es que te desplomas en los brazos tendidos de dos soldados que han acudido corriendo a ayudarte.</p>
-      <choice idref="sect268"><link-text>Pasa al número 268</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect62">
-     <meta><title>62</title></meta>
-
-     <data>
-      <p>Los «soldados» yacen muertos a tus pies. Eran bandidos que se dedicaban a robar a los refugiados de Toran y en las casas y granjas abandonadas de la región.</p>
-      <p>Al registrarlos encuentras 28 Coronas de oro y dos Mochilas que contienen provisiones suficientes para 3 Comidas. Los bandidos iban armados con una ballesta y tres Espadas. La ballesta ha quedado inutilizada en el combate, pero las Espadas están intactas y puedes quedarte con ellas si lo deseas.</p>
-      <p>Arreglas el equipo, diriges una mirada cautelosa hacia el oeste y prosigues tu marcha hacia las defensas exteriores de la capital.</p>
-      <choice idref="sect288"><link-text>Pasa al número 288</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect63">
-     <meta><title>63</title></meta>
-
-     <data>
-      <p>El anciano te grita enfurecido. Te echa la culpa de la guerra y maldice a los señores del Kai, a los que acusa de ser agentes de los señores de la Oscuridad. Como no atiende a razones, tienes que luchar con él.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="520" width="386" src="63.gif" />
-      </illustration>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>El anciano te grita enfurecido</description>
-       </meta>
-       <instance class="html" src="ill6.gif" width="386" height="677" />
-       <instance class="pdf" src="ill6.pdf" width="386" height="677" />
-      </illustration>
-      <combat><enemy>Loco</enemy><enemy-attribute class="combatskill">11</enemy-attribute><enemy-attribute class="endurance">10</enemy-attribute></combat> 
-      <choice idref="sect269">Si vences, <link-text>pasa al número 269</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect64">
-     <meta><title>64</title></meta>
-
-     <data>
-      <p>Te despiertan los graznidos de un kraan que vuela en círculo sobre el carruaje. Es por la mañana temprano y el cielo está despejado y radiante. Divisas una manada de lobos fatídicos a menos de un cuarto de milla delante de ti, en el camino real. Se están preparando para atacar. Debes actuar con toda rapidez.</p>
-      <choice idref="sect188">Si decides recoger tu equipo y correr a refugiarte en el bosque, <link-text>pasa al número 188</link-text>.</choice>
-      <choice idref="sect16">Si decides soltar uno de los caballos y tratar de atravesar la formación de los lobos atacantes para ganar el camino libre al otro lado de la manada, <link-text>pasa al número 16</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect65">
-     <meta><title>65</title></meta>
-
-     <data>
-      <p>Tus sentidos te avisan de que ese lugar es maligno y debes abandonarlo lo antes posible.</p>
-      <choice idref="sect104"><link-text>Pasa al número 104</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect66">
-     <meta><title>66</title></meta>
-
-     <data>
-      <p>Sobresaltado, te das la vuelta y ves a un fornido sargento y a dos soldados que corren hacia ti blandiendo sus espadas.</p>
-      <p>Te aprestas a defenderte, pues parece que ellos están dispuestos a atacar primero y preguntar después. Pero de repente el sargento ordena a sus hombres que se detengan. Ha reconocido tu capa. Enfundan las espadas y te piden disculpas por su equivocación. El sargento manda a uno de sus hombres a buscar al capitán de la Guardia mientras te conduce hacia la puerta del Gran Salón.</p>
-      <p>Allí te recibe un apuesto guerrero que escucha atentamente tu relato. Al acabar la narración de tu peligroso viaje a la capital, observas lágrimas en los ojos del valiente guerrero, quien te ruega que le sigas. Atraviesas espléndidos salones y corredores dentro del palacio. Su riqueza y grandiosidad admiran al que los contempla. En esto llegáis ante una gran puerta labrada, delante de la cual hacen guardia dos soldados con armaduras de plata.</p>
-      <p>Estás a punto de ver al Rey.</p>
-      <choice idref="sect350"><link-text>Pasa al número 350</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect67">
-     <meta><title>67</title></meta>
-
-     <data>
-      <p>La disciplina de Rastreo te revela unas huellas recientes que recorren el sendero del sur.</p>
-      <p>Son las huellas de un oso negro, animal famoso por su ferocidad. Decides que es mucho más seguro tomar la ruta del este.</p>
-      <choice idref="sect252"><link-text>Pasa al número 252</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect68">
-     <meta><title>68</title></meta>
-
-     <data>
-      <p>Después de caminar un rato, llegas a un punto donde un sendero que va de oeste a este cruza tu presente ruta.</p>
-      <choice idref="sect130">Si deseas torcer al oeste, <link-text>pasa al número 130</link-text>.</choice>
-      <choice idref="sect15">Si deseas dirigirte hacia el este, <link-text>pasa al 15</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect69">
-     <meta><title>69</title></meta>
-
-     <data>
-      <p>Estás muy cerca de un poblado amigo.</p>
-      <choice idref="sect272">Evita los espinos y <link-text>pasa al número 272</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect70">
-     <meta><title>70</title></meta>
-
-     <data>
-      <p>Te encuentras ante un puentecillo. Un camino bordea la corriente hacia el este. Y otro sendero mucho más estrecho se interna en el espeso bosque hacia el sur.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small4.gif" width="386" height="150" />
-       <instance class="pdf" src="small4.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect8">Si deseas utilizar la disciplina de Sexto sentido, <link-text>pasa al 8</link-text>.</choice>
-      <choice idref="sect28">Si deseas ir hacia el este, <link-text>pasa al número 28</link-text>.</choice>
-      <choice idref="sect157">Si deseas ir hacia el sur, <link-text>pasa al 157</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect71">
-     <meta><title>71</title></meta>
-
-     <data>
-      <p>Estás sin aliento, pero no herido. Has caído unos quince pies desde el techo de una tumba subterránea. Las paredes son verticales y lisas y no puedes trepar por ellas. Un túnel abovedado sale de la tumba hacia el este. Delante de él está el sarcófago de un antiguo noble.</p>
-      <choice idref="sect65">Si deseas utilizar la disciplina de Sexto sentido, <link-text>pasa al 65</link-text>.</choice>
-      <choice idref="sect242">Si quieres abrir el sarcófago para ver si encierra algún tesoro, <link-text>pasa al número 242</link-text>.</choice>
-      <choice idref="sect104">Si prefieres salir de la tumba por el túnel, <link-text>pasa al 104</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect72">
-     <meta><title>72</title></meta>
-
-     <data>
-      <p>Al volverte, ves a un giak que te mira despectivo y abre sus mandíbulas afiladas como navajas. Debes pelear con él, pues es tu enemigo.</p>
-      <combat><enemy>Giak + lobo fatídico</enemy><enemy-attribute class="combatskill">15</enemy-attribute><enemy-attribute class="endurance">24</enemy-attribute></combat> 
-      <choice idref="sect265">Si vences, <link-text>pasa al número 265</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect73">
-     <meta><title>73</title></meta>
-
-     <data>
-      <p>Te envuelves en tu verde capa para camuflarte entre el follaje y las rocas. Escudriñando atentamente el sendero, ves con gran sorpresa que los hombres no son soldados del Rey.</p>
-      <p>Son drakkarim, que se cuentan entre los guerreros más crueles de los señores de la Oscuridad. Han debido de disfrazarse de soldados del Rey para poder llegar hasta esa zona del bosque. Agradeciendo a tu adiestramiento en el Kai el haberte salvado la vida, te alejas sigilosamente de la corriente y te adentras en el bosque.</p>
-      <choice idref="sect243"><link-text>Pasa al número 243</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect74">
-     <meta><title>74</title></meta>
-
-     <data>
-      <p>Los kraans y sus jinetes aterrizan en el camino a escasos diez pies del lugar donde tú estás escondido.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="532" width="386" src="74.gif" />
-      </illustration>
-      <p>Los giaks desmontan de los escamosos lomos de los kraans y se dírigen hacia ti con las lanzas en alto y listas para atacar. Te han descubierto.</p>
-      <choice idref="sect138">Si decides luchar contra ellos, <link-text>pasa al número 138</link-text>.</choice>
-      <choice idref="sect281">Si decides huir sin demora, corriendo hacia el interior del bosque, <link-text>pasa al 281</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect75">
-     <meta><title>75</title></meta>
-
-     <data>
-      <p>Inspeccionando cuidadosamente la orilla, divisas a tres hombres que van vestidos de verde y montan en veloces caballos. Reconoces en ellos a los guardabosques fronterizos, un regimiento del ejército real que vigila las fronteras occidentales. Uno de ellos está herido y cabalga echado sobre el pescuezo de su caballo.</p>
-      <p>Les persiguen de cerca una manada de veinte lobos fatídicos. Los jinetes giaks disparan sus flechas contra los guardabosques, que van cayendo alrededor de ellos. Uno es derribado de su caballo y rueda por la orilla del río, con una flecha atravesándole la pierna derecha.</p>
-      <choice idref="sect260">Si deseas ayudar al guardabosques, <link-text>pasa al número 260</link-text>.</choice>
-      <choice idref="sect163">Si deseas permanecer oculto y dejarte llevar por la corriente río abajo, <link-text>pasa al 163</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect76">
-     <meta><title>76</title></meta>
-
-     <footnotes>
-      <footnote id="sect76-1-foot" idref="sect76-1">
-       <p>Guarda este objeto como una Gema Vordak. Aunque en principio el texto dice que la guardas en tu jubón, eso lo haces de forma temporal hasta que la echas más tarde en tu mochila. No es un Objeto Especial. (cf. <a idref="sect304">Sección 304</a>)</p>
-      </footnote>
-     </footnotes>
-
-     <data>
-      <p>La Gema desprende un intenso calor y te quema la mano. Pierdes 2 puntos de <typ class="attribute">RESISTENCIA</typ>. Rápidamente la agarras con el borde de la capa y <footref id="sect76-1" idref="sect76-1-foot">la introduces en el bolsillo de tu jubón.</footref> ¡Una Gema de ese tamaño debe de valer cientos de Coronas!</p>
-      <p>Sonríes por tu buena fortuna, montas a caballo y partes por la senda del sur.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small5.gif" width="386" height="150" />
-       <instance class="pdf" src="small5.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect118"><link-text>Pasa al número 118</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect77">
-     <meta><title>77</title></meta>
-
-     <data>
-      <p>Los giaks de las montañas no están acostumbrados a perseguir a sus presas a través de bosques y pronto los dejas atrás, hasta que finalmente el sonido de sus gruñidos y maldiciones desaparece por completo.</p>
-      <p>Cuando estás convencido de que han desistido de darte caza, te detienes unos minutos para recobrar el aliento y examinar tu equipo. Con las imágenes del monasterio derruido aún vivas en tu memoria, vuelves a meter en la mochila tus escasas pertenencias y sigues adelante.</p>
-      <choice idref="sect19"><link-text>Pasa al número 19</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect78">
-     <meta><title>78</title></meta>
-
-     <data>
-      <p>Cuando el carruaje pasa velozmente junto a ti, saltas a la escalerilla de la parte posterior y logras asirte a ella. Te incorporas afianzando los pies sobre el peldaño más bajo de la escalerilla, que sirve de acceso a la puerta trasera del carruaje. De repente la hoja superior de la puerta se abre y te encuentras ante un enfurecido guardaespaldas.</p>
-      <choice idref="sect132">Si decides informarle de que eres un señor del Kai y que tienes un mensaje urgente para el Rey, <link-text>pasa al número 132</link-text>.</choice>
-      <choice idref="sect12">Si decides ofrecerle Coronas de oro para que te lleve sano y salvo a la capital, <link-text>pasa al 12</link-text>.</choice>
-      <choice idref="sect220">Si decides atacar al guardaespaldas con tu arma, <link-text>pasa al 220</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect79">
-     <meta><title>79</title></meta>
-
-     <data>
-      <p>Llegas a un puentecillo que cruza una rápida corriente. Al otro lado del puente, el sendero tuerce hacia el sur. Atraviesas el puente y sigues el sendero.</p>
-      <choice idref="sect204"><link-text>Pasa al número 204</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect80">
-     <meta><title>80</title></meta>
-
-     <data>
-      <p>Tambaleándote hacia atrás cruzas la puerta delantera, agarrándote con las dos manos el pecho quemado. De la tienda salen oleadas de humo y debes huir corríendo antes de que el mago o su hijo el salteador te atrapen.</p>
-      <p>Vuelves a la calle principal y te pierdes entre el tropel de la muchedumbre.</p>
-      <choice idref="sect7"><link-text>Pasa al número 7</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect81">
-     <meta><title>81</title></meta>
-
-     <data>
-      <p>Al cabo de casi una hora, los kraans y sus crueles jinetes se desvanecen por el oeste. Cuando los asustados refugiados empiezan a salir del bosque, oyes a lo lejos un galopar de caballos. El sonido se acerca. Permaneces escondido y esperas a que los jinetes se aproximen más. Son de la caballería de la Guardia Real, con los uniformes blancos del ejército de Su Majestad.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="228" width="320" src="6.gif" />
-      </illustration>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small6.gif" width="386" height="150" />
-       <instance class="pdf" src="small6.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect183">Si deseas llamarles, <link-text>pasa al número 183</link-text>.</choice>
-      <choice idref="sect200">Si prefieres continuar tu marcha por la linde del bosque hacia el sur, <link-text>pasa al número 200</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect82">
-     <meta><title>82</title></meta>
-
-     <data>
-      <p>El gigante gourgaz yace muerto a tus pies. Sus malvados seguidores disparan sus dardos contra ti y después se repliegan detrás del puente. Los soldados del Príncipe forman con sus escudos una barrera protectora alrededor de ti y del jefe muerto de los gourgaz. Negras flechas pasan silbando junto a tu cabeza.</p>
-      <p>El Príncipe moribundo te mira a los ojos y dice:</p>
-      <p>-Señor del Kai, debes llevar un mensaje a mi padre. El enemigo es demasiado poderoso para que podamos detener su avance. El Rey debe mandar a buscar lo que se encuentra en Durenor o todo estará perdido. Toma mi caballo y cabalga hacia la capital. Que los dioses y la buena suerte te acompañen.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="288" width="288" src="82.gif" />
-      </illustration>
-      <p>Te despides del Príncipe, montas en su blanco corcel y te diriges hacia el sur por el sendero del bosque. La batalla aún prosigue a tus espaldas, pues los soldados del Príncipe rechazan otro asalto en el puente.</p>
-      <choice idref="sect235"><link-text>Pasa al número 235</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect83">
-     <meta><title>83</title></meta>
-
-     <data>
-      <p>Llevas recorrida una milla aproximadamente cuando tres soldados surgen de debajo de un puentecillo. Te ordenan parar y tirar al suelo tus armas y tu equipo.</p>
-      <p>Los soldados están manchados de sangre y sin afeitar. Su jefe lleva el jubón de un soldado de la guarnición de Toran.</p>
-      <choice idref="sect45">Si posees la disciplina de Sexto sentido, <link-text>pasa al número 45</link-text>.</choice>
-      <choice idref="sect205">Si aceptas hacer lo que te ordenan, <link-text>pasa al número 205</link-text>.</choice>
-      <choice idref="sect180">Si deseas disponerte a luchar contra ellos, <link-text>pasa al 180</link-text>.</choice>
-      <choice idref="sect232">Si les pides que te digan lo que quieren, <link-text>pasa al número 232</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect84">
-     <meta><title>84</title></meta>
-
-     <data>
-      <p>En el momento en que sientes que el aire agitado por las alas del kraan te sacude la espalda, saltas del caballo y, rodando por el suelo, vas a parar a una zanja fangosa al lado del camino.</p>
-      <p>Estás ileso y rápidamente te pones de pie y corres a buscar refugio entre los árboles. Pero cuando has recorrido un pequeño trozo de terreno, ves que el kraan vuela en círculo sobre tu cabeza preparándose para otro ataque en picado.</p>
-      <choice idref="sect188"><link-text>Pasa al número 188</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect85">
-     <meta><title>85</title></meta>
-
-     <data>
-      <p>La senda es ancha y va derecha hacia una gran espesura. Allí los árboles son muy altos y están insólitamente quietos. Caminas más de una milla y de pronto oyes un siniestro aleteo sobre tu cabeza. Miras hacia arriba y descubres sobresaltado la negra silueta de un kraan, que se lanza en picado para atacarte.</p>
-      <choice idref="sect229">Si empuñas tu arma y te aprestas a luchar, <link-text>pasa al número 229</link-text>.</choice>
-      <choice idref="sect99">Si eludes el combate y te internas en el bosque hacia el sur, <link-text>pasa al número 99</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect86">
-     <meta><title>86</title></meta>
-
-     <data>
-      <p>Pronto llegas a otro cruce de caminos.</p>
-      <choice idref="sect6">Si deseas proseguir viaje hacia el este, <link-text>pasa al número 6</link-text>.</choice>
-      <choice idref="sect35">Si quieres dirigirte hacia el norte, <link-text>pasa al 35</link-text>.</choice>
-      <choice idref="sect167">Si prefieres ir hacia el sur, <link-text>pasa al 167</link-text>.</choice>
-      <choice idref="sect42">Si eliges el camino hacia el oeste, <link-text>pasa al 42</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect87">
-     <meta><title>87</title></meta>
-
-     <data>
-      <p>Centrando tus poderes en la cerradura, tratas de visualizar el mecanismo interno. Poco a poco su imagen aparece en tu mente. Está viejo y herrumbroso, pero aún funciona. Te amenaza el peligro de perder tu concentración cuando un ligero «clic» te confirma que tu esfuerzo no ha sido inútil.</p>
-      <p>Quitar el alfiler es una tarea más sencilla. Lo levantas fácilmente de la cerradura y lo dejas caer al suelo. La puerta de granito gira sobre sus ocultos goznes hacia ti y la luz mortecina y grisácea del cementerio penetra en la tumba.</p>
-      <p>La salida está cubierta de hierbajos y sufres muchas pequeñas cortaduras en la cara y en las manos al abrirte paso hacia la superficie. Te sobresalta un ruido repentino. Te vuelves y ves la calavera de un esqueleto que se ríe de ti.</p>
-      <p>Ciego de pánico, corres por la horripilante necrópolis hacia la puerta meridional.</p>
-      <choice idref="sect61"><link-text>Pasa al número 61</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect88">
-     <meta><title>88</title></meta>
-
-     <data>
-      <p>Con gran cautela exploras los alrededores de la roca. Descubres a un soldado que está tendido de espaldas. A su lado hay una lanza y un escudo. El escudo lleva pintado un pegaso blanco, el emblema del Príncipe de Sommerlund. Es un soldado del Príncipe y apenas sí está consciente. Su uniforme se encuentra hecho jirones y puedes apreciar una profunda herida en su brazo izquierdo. Al acercarte a él, parpadea y abre los ojos.</p>
-      <p>-Cúreme, señor -implora-. Casi no siento el brazo izquierdo.</p>
-      <choice idref="sect216">Si posees la disciplina de Curación y deseas utilizarla con este hombre, <link-text>pasa al número 216</link-text>.</choice>
-      <choice idref="sect31">Si no posees esa destreza o no quieres usarla, <link-text>pasa al 31</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect89">
-     <meta><title>89</title></meta>
-
-     <data>
-      <p>Envuelto en una nube de polvo y rocas sueltas, desciendes a la carrera por la abrupta ladera de la colina. El kraan aún vuela en círculo sobre tu cabeza como si quisiera dirigir a los giaks contra ti.</p>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect53">Si el número es un 0 o un 1, <link-text>pasa al 53</link-text>.</choice>
-      <choice idref="sect274">Si está entre el 2 y el 4, <link-text>pasa al 274</link-text>.</choice>
-      <choice idref="sect316">Si está entre el 5 y el 9, <link-text>pasa al 316</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect90">
-     <meta><title>90</title></meta>
-
-     <data>
-      <p>Se hace de noche y pronto te encuentras inmerso en la más total oscuridad. Tratar de proseguir caminando sería inútil, pues a buen seguro te perderías. Después de atar el caballo a un árbol, te envuelves en la verde capa del Kai y caes en un sueño desasosegado.</p>
-      <choice idref="sect18"><link-text>Pasa al número 18</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect91">
-     <meta><title>91</title></meta>
-
-     <data>
-      <p>La pequeña tienda está a oscuras y huele a humedad. Libros y botellas de todos los tamaños y colores llenan los numerosos anaqueles. Cuando cierras la puerta, un perrillo negro empieza a ladrarte. Un hombre calvo aparece por detrás de un gran biombo y te da la bienvenida. Cortésmente te pregunta por el objeto de tu visita y te ofrece algunos de sus artículos desde el mostrador de cristal.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="288" width="288" src="91.gif" />
-      </illustration>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small7.gif" width="386" height="150" />
-       <instance class="pdf" src="small7.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect198">Si posees la disciplina de Sexto sentido, <link-text>pasa al 198</link-text>.</choice>
-      <choice idref="sect152">Si deseas examinar esos artículos, <link-text>pasa al número 152</link-text>.</choice>
-      <choice idref="sect7">Si prefieres declinar su ofrecimiento y volver a la calle, <link-text>pasa al número 7</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect92">
-     <meta><title>92</title></meta>
-
-     <data>
-      <p>Te tiras en plancha entre unos matorrales justo a tiempo, pues una lluvia de negras flechas procedente de un grupo de árboles acribilla el lugar donde tú estabas unos segundos antes. Cubriéndote con tu capa para confundirte con los espesos arbustos, corres por el bosque como alma que lleva el diablo, tratando de huir lo más rápidamente posible de los hombres emboscados. Toda la zona está infestada de giaks y debes escapar a la mayor velocidad. Continúas corriendo sin descansar durante más de una hora hasta que encuentras un camino forestal bastante recto que conduce hacia el este. Sigues por ese camino, atento a cualquier señal que pueda revelarte la presencia de enemigos.</p>
-      <choice idref="sect13"><link-text>Pasa al número 13</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect93">
-     <meta><title>93</title></meta>
-
-     <data>
-      <p>Te das la vuelta y corres hacia las escaleras en el preciso momento en que un enorme bloque cae con gran estruendo detrás de ti. La cámara en la que estabas queda completamente bloqueada. Al salir a la luz del día, vislumbras a tu espalda la figura encorvada de un viejo druida que levanta su bastón. Un segundo más tarde, un rayo relampagueante estalla a tus pies. Sin perder un segundo echas a correr colina abajo, maldiciendo por aquel retraso, pero dando gracias a tu Sexto sentido.</p>
-      <choice idref="sect106"><link-text>Pasa al número 106</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect94">
-     <meta><title>94</title></meta>
-
-     <data>
-      <p>El mago, al ver que has matado a su hijo, se vuelve y sale corriendo por la puerta trasera.</p>
-      <p>En la bolsa del salteador encuentras 12 Coronas de oro y otras 4 en una caja de madera debajo del mostrador. Examinas detenidamente las pociones y la varita mágica y pronto compruebas que no son más que falsificaciones baratas. De hecho la tienda está llena de imitaciones. Moviendo la cabeza con gesto de desagrado, regresas a la calle principal.</p>
-      <choice idref="sect7"><link-text>Pasa al número 7</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect95">
-     <meta><title>95</title></meta>
-
-     <data>
-      <p>Pronto tropiezas con un estrecho sendero que atraviesa el bosque de norte a sur.</p>
-      <choice idref="sect240">Si deseas seguir el sendero en dirección hacia el norte, <link-text>pasa al número 240</link-text>.</choice>
-      <choice idref="sect5">Si deseas ir hacia el sur, <link-text>pasa al número 5</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect96">
-     <meta><title>96</title></meta>
-
-     <data>
-      <p>Conteniendo la respiración, aprietas el puño alrededor de tu arma y te dispones a atacar. La tensión es insoportable. Los giaks están tan cerca que el hedor de sus cuerpos sucios te apesta. Les oyes maldecir en su extraño lenguaje de alienígenas. Después dejan el repecho y empiezan a trepar hacia la cumbre. Cuando estás seguro de que se han marchado, respiras al fin libremente y te limpias el sudor de la frente.</p>
-      <choice idref="sect33">Si deseas seguir explorando la cueva, <link-text>pasa al número 33</link-text>.</choice>
-      <choice idref="sect248">Si deseas abandonar la cueva y bajar de la colina por si los giaks vuelven, <link-text>pasa al 248</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect97">
-     <meta><title>97</title></meta>
-
-     <data>
-      <p>Ante tus ojos una feroz batalla tiene lugar sobre un puente de piedra. El choque metálico de las armas y los alaridos de hombres y bestias resuenan a través del bosque. En medio del combate ves al Príncipe Pelathar, el hijo del Rey. Lucha contra un gigantesco gourgaz gris que blande un hacha negra sobre su escamosa cabeza. De repente el Príncipe cae herido por una flecha negra que le atraviesa el costado.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="532" width="386" src="97.gif"/>
-      </illustration>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>El choque metálico de las armas y los alaridos de hombres<br />y bestias resuenan a través del bosque</description>
-       </meta>
-       <instance class="html" src="ill7.gif" width="386" height="689" />
-       <instance class="pdf" src="ill7.pdf" width="386" height="689" />
-      </illustration>
-      <choice idref="sect255">Si deseas defender al Príncipe caído, <link-text>pasa al número 255</link-text>.</choice>
-      <choice idref="sect306">Si deseas echar a correr hacia el bosque, <link-text>pasa al 306</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect98">
-     <meta><title>98</title></meta>
-
-     <data>
-      <p>Los guardias parecen creer tu historia y se inclinan an te ti por respeto a tu rango de señor del Kai. Uno de ellos tira de un cordón oculto que hace sonar una campana y los enormes portones se abren suavemente. Te invitan a entrar y oyes cómo la puerta se cierra detrás de ti.</p>
-      <choice idref="sect139"><link-text>Pasa al número 139</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect99">
-     <meta><title>99</title></meta>
-
-     <data>
-      <p>Te lanzas en plancha hacia la maleza en el mismo instante en que la bestia pasa rozándote la cabeza. Te vuelves rápidamente y ves cómo el kraan gira en el aire disponiéndose a atacar de nuevo. Te incorporas y corres a ínternarte en la espesura del bosque en busca de una mayor seguridad.</p>
-      <choice idref="sect222"><link-text>Pasa al número 222</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect100">
-     <meta><title>100</title></meta>
-
-     <data>
-      <p>El frío corredor dobla de repente hacia el este. Percibes un resplandor verdoso que ilumina el túnel a lo lejos. Al acercarte a rastras, ves que el corredor desemboca en una gran cámara.</p>
-      <p>La extraña luz parece emanar de un enorme cuenco situado en lo alto de un trono de granito. Sobre una columna enfrente del trono se alza una estatua. Semeja una serpiente alada curvada en forma de S.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="288" width="288" src="100.gif" />
-      </illustration>
-      <choice idref="sect161">Si deseas sentarte en el trono, <link-text>pasa al número 161</link-text>.</choice>
-      <choice idref="sect133">Si quieres examinar la estatua, <link-text>pasa al número 133</link-text>.</choice>
-      <choice idref="sect257">Si prefieres buscar la salida de la cámara, <link-text>pasa al 257</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect101">
-     <meta><title>101</title></meta>
-
-     <data>
-      <p>El estruendo de la batalla se extingue pronto a tus espaldas, pero el silencio que le sigue se ve turbado por una voz dentro de ti que te acusa de ser un cobarde al haber abandonado a un ser humano, a un semejante en peligro. Tratas de desechar esos remordimientos de conciencia diciéndote a ti mismo que tu misión es con mucho lo más importante y que no sólo la vida del joven hechicero, sino las vidas de todos tus paisanos dependen de que tú llegues vivo a la capital.</p>
-      <p>De repente ves a lo lejos un grupo de guerreros giaks y rápidamente buscas refugio y te escondes. Pero es demasiado tarde. Los giaks te han localizado y debes correr lo más velozmente que puedas.</p>
-      <choice idref="sect281"><link-text>Pasa al número 281</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect102">
-     <meta><title>102</title></meta>
-
-     <data>
-      <p>A medida que desciendes por la rocosa pendiente hacia el cementerio de los antepasados, percibes una extraña neblina que se adensa sobre ese lugar gris y prohibido, ocultando el sol y cubriendo el cementerio con una perenne oscuridad. Al acercarte, un escalofrío te recorre el cuerpo.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="520" width="386" src="102.gif" />
-      </illustration>
-      <p>Con un sentimiento de profundo pavor entras en la espeluznante necrópolis.</p>
-      <choice idref="sect284"><link-text>Pasa al número 284</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect103">
-     <meta><title>103</title></meta>
-
-     <data>
-      <p>El sendero, que se ha ido cubriendo de maleza, conduce a una confluencia donde enlaza con otro ramal que se dirige hacia el este.</p>
-      <choice idref="sect13">Si deseas tomar este ramal, <link-text>pasa al número 13</link-text>.</choice>
-      <choice idref="sect287">Si prefieres continuar hacia el nordeste, <link-text>pasa al 287</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect104">
-     <meta><title>104</title></meta>
-
-     <data>
-      <p>Los muros están húmedos y llenos de limo. El aire rancio te produce ahogo y telas de araña te rozan el rostro. Una sensación de pánico te atenaza el estómago conforme el túnel se va volviendo cada vez más tenebroso.</p>
-      <p>Llegas a un lugar donde el túnel se cruza con un corredor que va en dirección norte-sur.</p>
-      <choice idref="sect26">Si deseas torcer hacia el norte, <link-text>pasa al número 26</link-text>.</choice>
-      <choice idref="sect100">Si quieres ir hacia el sur, <link-text>pasa al 100</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect105">
-     <meta><title>105</title></meta>
-
-     <data>
-      <p>A lo lejos, posado sobre la rama de un viejo roble, hay un cuervo negro.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small8.gif" width="386" height="150" />
-       <instance class="pdf" src="small8.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect298">Si posees la disciplina de Afinidad animal puedes llamar a este pájaro y <link-text>pasa al número 298</link-text>.</choice>
-      <choice idref="sect335">Si no posees esa destreza o no quieres utilizarla, <link-text>pasa al 335</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect106">
-     <meta><title>106</title></meta>
-
-     <data>
-      <p>Entre tanto, llegas a la orilla de un arroyo de aguas heladas y rápidas. La blanca corriente cae en cascada sobre las rocas musgosas y desaparece hacia el este.</p>
-      <choice idref="sect263">Si deseas seguir el curso del arroyo hacia el este, <link-text>pasa al número 263</link-text>.</choice>
-      <choice idref="sect334">Si prefieres explorar aguas arriba, <link-text>pasa al 334</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect107">
-     <meta><title>107</title></meta>
-
-     <data>
-      <p>Al atravesar corriendo la cámara, tropiezas con las calaveras haciéndolas pedazos. Adviertes que dentro de cada calavera hay una burbujeante jalea gris que bulle y cambia de forma. De esa masa reluciente parecen brotar unas alas y hocicos semejantes a los de los murciélagos. Con horror y repugnancia te precipitas hacia el corredor de salida y logras escapar en el preciso momento en que un pesado rastrillo cae con estrépito cerrando completamente la cámara.</p>
-      <choice idref="sect23"><link-text>Pasa al número 23</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect108">
-     <meta><title>108</title></meta>
-
-     <data>
-      <p>Vuelas por el aire describiendo un arco hacia el tejado de enfrente. Todo parece desarrollarse a un ritmo muy lento. Divisas abajo, en la calle, el hervidero humano, y a tu derecha, en el alero de un tejado, un nido de gorriones. Oyes sus gorjeos sobresaltados cuando aterrizas con gran estrépito en el otro lado. Pero ése es el último sonido que oirás jamás. Las tejas saltan en pedazos y tú caes atravesando los cuatro pisos de la taberna «La zapatilla verde» y rompiéndote la columna vertebral por varios sitios.</p>
-      <choice>Tu misión y tu vida terminan aquí.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect109">
-     <meta><title>109</title></meta>
-
-     <data>
-      <p>Lo único que hay debajo de la alfombra es polvo.</p>
-      <choice idref="sect164">Puedes examinar más de cerca las botellas <link-text>pasando al número 164</link-text>.</choice>
-      <choice idref="sect308">O puedes salir de la cabaña y explorar el establo <link-text>pasando al 308</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect110">
-     <meta><title>110</title></meta>
-
-     <data>
-      <p>Apuntas rápidamente y lanzas la roca a la cabeza del giak con todas tus fuerzas. Pero observas con espanto que el giak se agacha y la roca pasa sobre su cabeza sin hacerle ningún daño. Debes actuar inmediatamente si quieres salvar al hechicero.</p>
-      <choice idref="sect55"><link-text>Pasa al número 55</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect111">
-     <meta><title>111</title></meta>
-
-     <data>
-      <p>Unos pocos minutos después de alejarte del cruce, ves a lo lejos una pequeña cabaña de madera con un establo. Al llegar inspeccionas el interior a través de una ventana lateral. La cabaña parece abandonada.</p>
-      <choice idref="sect57">Si deseas entrar en la cabaña, <link-text>pasa al número 57</link-text>.</choice>
-      <choice idref="sect308">Si deseas explorar el establo, <link-text>pasa al 308</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect112">
-     <meta><title>112</title></meta>
-
-     <data>
-      <p>De repente la enorme roca detrás de la cual estás escondido rueda hacia un lado y te encuentras frente a dos giaks que profieren sonoros gruñidos e intentan matarte. La boca de la cueva es muy estrecha, por lo que sólo puedes luchar contra los giaks de uno en uno.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small9.gif" width="386" height="150" />
-       <instance class="pdf" src="small9.pdf" width="386" height="150" />
-      </illustration>
-      <combat><enemy>Giak 1</enemy><enemy-attribute class="combatskill">13</enemy-attribute><enemy-attribute class="endurance">10</enemy-attribute></combat> 
-      <combat><enemy>Giak 2</enemy><enemy-attribute class="combatskill">12</enemy-attribute><enemy-attribute class="endurance">10</enemy-attribute></combat> 
-      <choice idref="sect33">Si vences, puedes seguir examinando la cueva. Para ello <link-text>pasa al número 33</link-text>.</choice>
-      <choice idref="sect248">También puedes salir de la cueva y descender de la colina. Para ello <link-text>pasa al número 248</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect113">
-     <meta><title>113</title></meta>
-
-     <footnotes>
-      <footnote id="sect113-1-foot" idref="sect113-1">
-       <p>Cada Comida de Laumspur puede ser consumida cuando se te pida hacer una comida, en cuyo caso debes realizar una comida o perder 3 puntos de <typ class="attribute">RESISTENCIA</typ>. El Laumspur también puede ser consumido en cualquier otro momento para restaurar <typ class="attribute">RESISTENCIA</typ> sin tener el significado de hacer una comida.</p>
-      </footnote>
-     </footnotes>
-
-     <data>
-      <p>Después de caminar durante más de una hora, atraen tu mirada unas flores rojas y brillantes que crecen junto a unas matas de musgo. Reconoces la planta: se trata del laumspur, una hierba rara y hermosa, muy apreciada por sus propiedades curativas.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="288" width="288" src="113.gif" />
-      </illustration>
-      <p>Te arrodillas, arrancas un puñado de laumspur y lo guardas en la mochila. Puedes comer de esa hierba para recuperar puntos perdidos de <typ class="attribute">RESISTENCIA</typ>. Cada comida de laumspur te devuelve 3 puntos de <typ class="attribute">RESISTENCIA</typ> y has recogido hierba <footref id="sect113-1" idref="sect113-1-foot">suficiente para 2 comidas.</footref> Después de cerrar la mochila, continúas tu misión.</p>
-      <choice idref="sect347">Si deseas dirigirte al nordeste, <link-text>pasa al número 347</link-text>.</choice>
-      <choice idref="sect295">Si deseas dirigirte al este, <link-text>pasa al 295</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect114">
-     <meta><title>114</title></meta>
-
-     <data>
-      <p>Logras persuadir al caballo para que se eche en el suelo y empiezas a cubriros a los dos con ramas y hojas secas. Oyes el aleteo del kraan cuando éste pasa volando por encima de los árboles. Vuelve de nuevo y describe círculos sobre el lugar donde tú estás, pero pronto se retira a través del lago.</p>
-      <p>Entonces tú decides partir también, no sea que el kraan vuelva con refuerzos.</p>
-      <choice idref="sect239"><link-text>Pasa al número 239</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect115">
-     <meta><title>115</title></meta>
-
-     <data>
-      <p>Al entrar en una de las cabañas tropiezas y caes rendido en el suelo. Huele como si algo estuviera puesto a cocer. Ves una olla que cuelga sobre unos rescoldos medio apagados y una gran mesa de madera preparada para la comida. Quienquiera que viviese en la cabaña debió de abandonarla precipitadamente aquella misma mañana. En una jarra hay agua y sobre la mesa una hogaza de pan tierno.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small10.gif" width="386" height="150" />
-       <instance class="pdf" src="small10.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect150">Si decides tomar un rápido almuerzo, <link-text>pasa al número 150</link-text>.</choice>
-      <choice idref="sect177">Si decides explorar la cabaña, <link-text>pasa al 177</link-text>.</choice>
-      <choice idref="sect83">Si prefieres salir y continuar tu camino, <link-text>pasa al 83</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect116">
-     <meta><title>116</title></meta>
-
-     <data>
-      <p>Al salir del agua fangosa te recibe una andanada de negras flechas. Corres a refugiarte entre los árboles y esperas a que los giaks se alejen de la orilla opuesta para proseguir a pie tu camino hacia la capital.</p>
-      <choice idref="sect321"><link-text>Pasa al número 321</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect117">
-     <meta><title>117</title></meta>
-
-     <data>
-      <p>El hombre está malherido y a punto de morir. Si posees la disciplina de Curación, puedes aliviar el dolor de sus heridas, pero éstas son tan graves que tú no eres capaz de curarlas sólo con tus conocimientos. El soldado pierde el sentido. Procuras acomodarle lo mejor posible al pie de un gran roble antes de partir. Luego reemprendes tu marcha hacia el nordeste a través del espeso bosque.</p>
-      <choice idref="sect330"><link-text>Pasa al número 330</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect118">
-     <meta><title>118</title></meta>
-
-     <data>
-      <p>Espoleas al caballo para que descienda al galope por el largo y recto sendero. A lo lejos divisas la silueta de Holmgard recortada contra el horizonte, con sus altas murallas y agujas resplandeciendo al sol de la mañana. El sendero por el que avanzas empalma con un camino que va de norte a sur. Es la principal calzada de portazgo que une el puerto nórdico de Toran con la capital. Te diriges hacia Holmgard, siempre vigilante por si aparece algún kraan en el claro cielo de la mañana.</p>
-      <choice idref="sect224"><link-text>Pasa al número 224</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect119">
-     <meta><title>119</title></meta>
-
-     <data>
-      <p>Al abrirte camino penosamente entre las zarzas, las espinas te desgarran la capa y te hacen profundos arañazos en los brazos y en las piernas. Unos quince minutos más tarde logras salir de los zarzales y tambaleándote sigues andando entre los árboles.</p>
-      <p>Resta 2 puntos de <typ class="attribute">RESISTENCIA</typ> de los que tengas actualmente, por las heridas que has sufrido.</p>
-      <p>Te sientes algo aturdido y los párpados te pesan como losas. De pronto te encuentras al borde de una empinada pendiente cubierta de árboles.</p>
-      <choice idref="sect226">Si deseas bajar por la pendiente con el mayor cuidado posible, <link-text>pasa al número 226</link-text>.</choice>
-      <choice idref="sect38">Si consideras que en tu actual estado de somnolencia no te encuentras en condiciones de arriesgarte a efectuar ese difícil descenso, camina por el borde de la pendiente <link-text>pasando al número 38</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect120">
-     <meta><title>120</title></meta>
-
-     <data>
-      <p>Oyes detrás de ti el estruendo de los sanguinarios giaks que están matando a los caballos que tiran del carruaje. Te arriesgas a echar un rápido vistazo por encima del hombro y ves un kraan que alza el vuelo. ¿Va a atacarte a ti o su interés se centra en otra presa? La sombra que cada vez se agranda más sobre tu cabeza te indica que tú eres la víctima pretendida por el kraan. Éste se lanza en veloz picado hacia ti.</p>
-      <choice idref="sect84">Si esperas a que el kraan te ataque para saltar de la silla, <link-text>pasa al número 84</link-text>.</choice>
-      <choice idref="sect171">Si te diriges hacia el bosque a la mayor rapidez posible, <link-text>pasa al 171</link-text>.</choice>
-      <choice idref="sect54">Si agachas la cabeza, rezas al cielo pidiéndole buena suerte y sigues galopando a pesar de todo, <link-text>pasa al 54</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect121">
-     <meta><title>121</title></meta>
-
-     <data>
-      <p>Después de andar durante unos pocos minutos ves a un extraño personaje vestido de rojo, que permanece de pie delante de ti en medio del camino. Te vuelve la espalda. Su cabeza está cubierta con una capucha. Sobre su brazo derecho extendido se encuentra posado el cuervo negro que viste anteriormente.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="520" width="386" src="121.gif" />
-      </illustration>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>Sobre su brazo derecho extendido se encuentra posado el<br />cuervo negro que viste anteriormente</description>
-       </meta>
-       <instance class="html" src="ill8.gif" width="386" height="674" />
-       <instance class="pdf" src="ill8.pdf" width="386" height="674" />
-      </illustration>
-      <choice idref="sect342">Si deseas llamar a este personaje, <link-text>pasa al número 342</link-text>.</choice>
-      <choice idref="sect309">Si quieres aproximarte a él cautelosamente, <link-text>pasa al 309</link-text>.</choice>
-      <choice idref="sect283">Si prefieres empuñar tu arma y atacarle, <link-text>pasa al 283</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect122">
-     <meta><title>122</title></meta>
-
-     <data>
-      <p>Inmediatamente el caballo percibe tu comunicación y se tranquiliza. Te diriges hacia el hermoso animal y le acaricias la cabeza para calmarle. Notas que está asustado y confuso. Montas en él y le conduces al camino, reanudando tu marcha hacia el sur.</p>
-      <choice idref="sect206"><link-text>Pasa al número 206</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect123">
-     <meta><title>123</title></meta>
-
-     <data>
-      <p>Al morir la criatura, su cuerpo se disuelve poco a poco en un repugnante líquido verde. Observas que la hierba y las plantas sobre las que se esparce el humeante fluido se marchitan y mueren. En el suelo, junto al cuerpo caído, hay una Gema que parece valiosa.</p>
-      <p>Un poco más adelante, en el mismo sendero, divisas un gran destacamento de giaks que corren hacia ti.</p>
-      <choice idref="sect304">Si deseas tomar la Gema, <link-text>pasa al número 304</link-text>.</choice>
-      <choice idref="sect2">Si prefieres alejarte de allí a toda prisa, <link-text>pasa al número 2</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect124">
-     <meta><title>124</title></meta>
-
-     <data>
-      <p>Dentro de la caja encuentras 15 Coronas de oro y una Llave de plata. Si deseas conservar la Llave, acuérdate de anotarlo en tu <a idref="action">Carta de Acción</a>.</p>
-      <choice idref="sect211">Puedes continuar explorando el túnel si <link-text>pasas al número 211</link-text>.</choice>
-      <choice idref="sect106">O puedes salir de él y descender de la colina <link-text>pasando al 106</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect125">
-     <meta><title>125</title></meta>
-
-     <data>
-      <p>El sendero desemboca en un gran claro. Descubres en la tierra unas extrañas huellas de garras. Son huellas de kraans. Por el número de las huellas y la extensión del terreno hollado estimas que han debido de posarse allí, en las últimas doce horas, por lo menos cinco de esas malignas criaturas.</p>
-      <p>En el otro extremo del claro ves dos salidas. Una conduce al oeste, la otra al sur.</p>
-      <choice idref="sect301">Si posees la disciplina de Rastreo, <link-text>pasa al 301</link-text>.</choice>
-      <choice idref="sect27">Si deseas tomar el sendero del sur, <link-text>pasa al número 27</link-text>.</choice>
-      <choice idref="sect214">Si deseas ir hacia el oeste, <link-text>pasa al 214</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect126">
-     <meta><title>126</title></meta>
-
-     <data>
-      <p>Cabalgas internándote con rapidez en el bosque. En silencio das las gracias al Príncipe por tan buen caballo, pues aunque el terreno es una maraña de zarzas y raíces no ha tropezado una sola vez. Pronto dejas atrás a los lobos fatídicos y concedes un descanso al caballo. Ha oscurecido rápidamente y es casi de noche.</p>
-      <choice idref="sect46">Si deseas seguir de frente, <link-text>pasa al número 46</link-text>.</choice>
-      <choice idref="sect143">Si prefIeres torcer a la izquierda (en la dirección del sendero que dejaste mucho más atrás), <link-text>pasa al 143</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect127">
-     <meta><title>127</title></meta>
-
-     <data>
-      <p>Después de una hora de marcha, los drakkarim se detienen de repente al ver acercarse por el sendero a una enorme criatura recubierta de grises escamas. La bestia se aproxima y tú puedes percibir su fétido aliento. Lanzando un rugido te atenaza la cabeza con sus poderosas manos palmeadas. Lo último que oyes es el agudo chasquido de tu cuello al romperse.</p>
-      <p>Tu búsqueda y tu vida acaban aquí.</p>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect128">
-     <meta><title>128</title></meta>
-
-     <data>
-      <p>Al apartar precavidamente el denso follaje, te horrorizas ante lo que contemplan tus ojos. En un pequeño claro delante de ti, tres giaks han atado a un hombre a una estaca y están prendiendo fuego a un montón de matorrales que han apilado a sus pies. Por su jubón le reconoces: es un guardabosques de la frontera, uno de los hombres del Rey que vigilan el reino cerca de las montañas de Durncrag en el oeste. Han debido de golpearle con saña y está casi inconsciente.</p>
-      <choice idref="sect297">Si posees la disciplina de Caza, <link-text>pasa al número 297</link-text>.</choice>
-      <choice idref="sect336">Si no la posees, debes atacar ahora a los giaks para salvar la vida al guardabosques. <link-text>Pasa al número 336</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect129">
-     <meta><title>129</title></meta>
-
-     <data>
-      <p>Llegáis a las puertas principales de la capital y tú contemplas asombrado las altas murallas de la ciudad. Con sus doscientos pies de altura, las murallas de Holmgard han resistido los estragos del tiempo y los ataques de los señores de la Oscuridad. El oficial y tú atravesáis corriendo el túnel, de unas cien yardas de longitud, que cruza la entrada y finalmente os detenéis delante de la atalaya principal. Multitudes de soldados y civiles entran y salen precipitadamente de ella.</p>
-      <choice idref="sect3">Si deseas seguir aún al oficial, <link-text>pasa al número 3</link-text>.</choice>
-      <choice idref="sect144">Si crees que tienes más posibilidades de llegar por tu propia cuenta a la ciudadela del Rey, <link-text>pasa al número 144</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect130">
-     <meta><title>130</title></meta>
-
-     <data>
-      <p>Pronto alcanzas un pequeño claro en medio del bosque. En el centro del claro hay un banco, que ha sido tallado en el tronco de un árbol. Estás hambriento y tienes que tomar ahora una comida.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small11.gif" width="386" height="150" />
-       <instance class="pdf" src="small11.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect28">Cuando hayas acabado, si decides abandonar el claro por el camino del sur, <link-text>pasa al número 28</link-text>.</choice>
-      <choice idref="sect201">Si eliges el sendero más estrecho que conduce hacia el este, al interior del bosque, <link-text>pasa al 201</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect131">
-     <meta><title>131</title></meta>
-
-     <data>
-      <p>Después de recorrer aproximadamente un cuarto de milla, oyes gritos y ruidos como truenos delante de ti. Al acercarte distingues un claro en el que reconoces las ruinas de Raumas, un antiguo templo en el bosque.</p>
-      <p>Un destacamento de giaks compuesto por unos veinte o treinta poderosos guerreros está atacando las ruinas desde todos los lados. La mayoría de los giaks están ya muertos o agonizan entre los restos de las columnas de mármol, pero los restantes aún asaltan a los que pueden esconderse en el interior. De repente, un rayo azul relampagueante desbarata la primera fila de giaks, dispersando en todas direcciones a los guerreros que se tambalean bajo el peso de sus armaduras. Un giak más alto que los demás y vestido con una malla negra de pies a cabeza maldice a sus soldados y los fustiga con un látigo de púas.</p>
-      <p>Aprestando tu arma avanzas hasta el borde del claro y, escondiéndote en el denso follaje, tratas de avistar a los defensores. Con gran asombro descubres que las ruinas son defendidas por un joven, más o menos de tu misma edad. Reconoces su túnica de color azul celeste, recamada de estrellas. Es un joven teúrgo del gremio de magos de Toran: un aprendiz de brujo.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="532" width="386" src="131.gif" />
-      </illustration>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>Es un joven teúrgo del gremio de magos de Toran: un aprendiz de brujo</description>
-       </meta>
-       <instance class="html" src="ill9.gif" width="386" height="674" />
-       <instance class="pdf" src="ill9.pdf" width="386" height="674" />
-      </illustration>
-      <p>Cinco giaks cargan contra el aprendiz enarbolando sus lanzas y el joven retrocede apresuradamente entre las ruinas. Luego se vuelve y levanta la mano izquierda, de cuyos dedos brota un rayo de llamas azules que bate a los rugientes giaks. Cerca de donde tú estás escondido pasa corriendo un giak que va a subirse a una de las columnas del templo. Lleva entre los dientes una larga daga de hoja curvada y se dispone a saltar sobre el joven brujo, que permanece en pie de espaldas a él.</p>
-      <choice idref="sect241">Si deseas lanzar un grito para poner en guardia al joven hechicero, <link-text>pasa al número 241</link-text>.</choice>
-      <choice idref="sect55">Si quieres salir de tu escondite y atacar al giak antes de que salte, <link-text>pasa al número 55</link-text>.</choice>
-      <choice idref="sect302">Si decides agarrar un trozo de mármol y arrojárselo a la cabeza al giak, <link-text>pasa al número 302</link-text>.</choice>
-      <choice idref="sect101">Si prefieres dar media vuelta y alejarte del campo de batalla retrocediendo hacia el interior del bosque, <link-text>pasa al número 101</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect132">
-     <meta><title>132</title></meta>
-
-     <data>
-      <p>El guardaespaldas te mira con gesto de sospecha y cierra de golpe la puerta. Oyes voces que parlotean dentro del carruaje. De repente la puerta vuelve a abrirse y aparece la cara de un rico mercader. Reconoce tu capa del Kai y te pide disculpas por el comportamiento de su servidor.</p>
-      <p>Te dice que han sido atacados varias veces desde que salieron de Toran: por los kraans, por los bandidos y salteadores. Creían que tú podías ser otro bandido. El interior del carruaje está lleno de sedas y especias. El mercader te invita a comer y tú aceptas agradecido. Después de la suntuosa comida, la fatiga de tan penosas experiencias acaba venciéndote y sumiéndote en un profundo sueño.</p>
-      <choice idref="sect64"><link-text>Pasa al número 64</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect133">
-     <meta><title>133</title></meta>
-
-     <data>
-      <p>Al aproximarte a la estatua, en su superficie de piedra aparecen varias grietas. De repente la estatua estalla: una auténtica serpiente alada se libera de su manto pétreo y te ataca.</p>
-      <p>Debes combatir a esa criatura.</p>
-      <combat><enemy>Serpiente alada</enemy><enemy-attribute class="combatskill">16</enemy-attribute><enemy-attribute class="endurance">18</enemy-attribute></combat> 
-      <p>(El animal es inmune al Ataque psíquico.)</p>
-      <choice idref="sect266">Si ganas la pelea, <link-text>pasa al número 266</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect134">
-     <meta><title>134</title></meta>
-
-     <data>
-      <p>Utilizando tus destrezas detectas huellas de giak alrededor del perímetro del claro. Las huellas son recientes y de ellas deduces que esos crueles servidores de los señores de la Oscuridad han estado en esa zona hace menos de dos horas.</p>
-      <choice idref="sect305">Prevenido por este conocimiento, si decides explorar las cabañas, <link-text>pasa al número 305</link-text>.</choice>
-      <choice idref="sect40">Si prefieres evitar el claro, <link-text>pasa al número 40</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect135">
-     <meta><title>135</title></meta>
-
-     <data>
-      <p>Oteando por encima de la abrupta orilla del río ves junto al borde del agua ramas que ha arrastrado la corriente. Un enorme tronco de árbol está varado en el barro de la ribera al lado de una barquilla.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small12.gif" width="386" height="150" />
-       <instance class="pdf" src="small12.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect223">Si deseas servirte del tronco para flotar río abajo, <link-text>pasa al número 223</link-text>.</choice>
-      <choice idref="sect4">Si quieres usar la barquilla, <link-text>pasa al número 4</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect136">
-     <meta><title>136</title></meta>
-
-     <data>
-      <p>Los giaks se van acercando y después se arrastran por el suelo como si se dispusieran a atacar súbitamente. Ves las afiladas puntas de sus lanzas y oyes su lenguaje grave y gutural. El más corpulento de los dos giaks grita:</p>
-      <p>-¡Orgadak taag! ¡Nogjat aga ok!</p>
-      <p>Y te ataca.</p>
-      <p>Debes luchar sucesivamente contra los dos giaks. Suma 1 punto a tu <typ class="attribute">DESTREZA EN EL COMBATE</typ> durante esta pelea, ya que tienes a tu favor la ventaja de estar en una posición más elevada.</p>
-      <combat><enemy>Giak 1</enemy><enemy-attribute class="combatskill">13</enemy-attribute><enemy-attribute class="endurance">10</enemy-attribute></combat> 
-      <combat><enemy>Giak 2</enemy><enemy-attribute class="combatskill">12</enemy-attribute><enemy-attribute class="endurance">10</enemy-attribute></combat> 
-      <choice idref="sect313">Si vences, <link-text>pasa al número 313</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect137">
-     <meta><title>137</title></meta>
-
-     <footnotes>
-      <footnote id="sect137-1-foot" idref="sect137-1">
-       <p>Cuenta las 20 Gemas como un Objeto Especial.</p>
-      </footnote>
-     </footnotes>
-
-     <data>
-      <p>Cuando la ú1tima de esas sucias criaturas muere, la luz verdosa empieza a extinguirse. Descubres que dentro de cada una de las calaveras rotas hay una Gema. Tomas <footref id="sect137-1" idref="sect137-1-foot">20 de esas Gemas</footref> antes de que la cámara se sumerja en la más completa oscuridad. Recuerda anotarlas en tu <a idref="action">Carta de Acción</a>.</p>
-      <p>Rápidamente abandonas a los bichos muertos de la cripta y prosigues tu camino.</p>
-      <choice idref="sect23"><link-text>Pasa al número 23</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect138">
-     <meta><title>138</title></meta>
-
-     <data>
-      <p>Preparas tu arma y sales al encuentro del enemigo. Son dos giaks de las montañas y debes luchar contra ellos de uno en uno.</p>
-      <combat><enemy>Giak 1</enemy><enemy-attribute class="combatskill">13</enemy-attribute><enemy-attribute class="endurance">10</enemy-attribute></combat> 
-      <combat><enemy>Giak 2</enemy><enemy-attribute class="combatskill">12</enemy-attribute><enemy-attribute class="endurance">10</enemy-attribute></combat> 
-      <choice idref="sect291">Si vences, <link-text>pasa al número 291</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect139">
-     <meta><title>139</title></meta>
-
-     <data>
-      <p>El patio interior bulle de actividad. Los soldados de caballería esperan junto a sus inquietos caballos las órdenes que les transmiten los comandantes de sus unidades reunidos en el Gran Salón. A su vez ellos llevan esas órdenes con gran rapidez a los defensores de las fortificaciones exteriores. Tan pronto como unos parten, otros regresan, a menudo sin aliento y heridos.</p>
-      <p>Apenas si has dado media docena de pasos a través del patio cuando oyes una voz grave que retumba:</p>
-      <p>-¡Detengan a ese hombre!</p>
-      <choice idref="sect66"><link-text>Pasa al número 66</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect140">
-     <meta><title>140</title></meta>
-
-     <data>
-      <p>Estás en un claro en el que han sido talados varios árboles y con ellos se ha construido una tosca atalaya. Del pie de la torre tres caminos parten en diferentes direcciones.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="532" width="386" src="140.gif" />
-      </illustration>
-      <choice idref="sect14">Si tomas el sendero del sur, <link-text>pasa al número 14</link-text>.</choice>
-      <choice idref="sect252">Si eliges el sendero del este, <link-text>pasa al 252</link-text>.</choice>
-      <choice idref="sect215">Si prefieres seguir el sendero del sudoeste, <link-text>pasa al 215</link-text>.</choice>
-      <choice idref="sect36">Si decides trepar a la atalaya, <link-text>pasa al 36</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect141">
-     <meta><title>141</title></meta>
-
-     <data>
-      <p>Tu Sexto sentido te avisa de que algunas de las criaturas que atacaron el monasterio están registrando los dos caminos en busca de supervivientes de su ataque. Sin embargo, tú puedes evitar esos dos caminos atravesando la espesura del bosque.</p>
-      <choice idref="sect56">Si deseas encaminarte hacia el sur, <link-text>pasa al número 56</link-text>.</choice>
-      <choice idref="sect333">Si quieres atajar a través del denso follaje en dirección nordeste, <link-text>pasa al 333</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect142">
-     <meta><title>142</title></meta>
-
-     <data>
-      <p>Divisas las altas murallas blancas y grises y las resplandecientes torres de Holmgard, sus banderas ondeando desde las almenas a la fresca brisa de la mañana. El río Eledil, que nace en las montañas occidentales de la cordillera Durncrag, sigue su curso atravesando la capital hasta ir a desembocar en el golfo Holm. Un gran ejército negro desciende de los picos de las montañas y avanza implacable hacia la ciudad.</p>
-      <p>A tu derecha puedes ver el camino real que a través de la ondulada llanura conduce a Holmgard. Yendo por él puedes alcanzar en una hora las fortificaciones externas de las defensas de la ciudad, pero la mayor parte del tiempo estarías al descubierto y serías vulnerable al ataque de los kraans. En cambio, delante de ti, un ancho y fangoso río fluye perezosamente hacia el Eledil. Podrías nadar por él hasta la capital, amparado por la vegetación de las orillas del río. Por último, a tu izquierda se halla el cementerio de los antepasados. Esas tumbas y monumentos ruinosos de una edad olvidada ocultarían tu avance, pero se trata de una zona prohibida. Innumerables horrores sin nombre duermen impacientes entre esas ruinas. esperando hacer presa en el imprudente intruso.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small13.gif" width="386" height="150" />
-       <instance class="pdf" src="small13.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect58">Si quieres probar suerte por el camino real, <link-text>pasa al número 58</link-text>.</choice>
-      <choice idref="sect135">Si consideras que tienes más probabilidades de llegar a la capital por el río, <link-text>pasa al número 135</link-text>.</choice>
-      <choice idref="sect102">Si eres tan valiente como para afrontar los peligros desconocidos que te acechan en el cementerio de los antepasados, <link-text>pasa al número 102</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect143">
-     <meta><title>143</title></meta>
-
-     <data>
-      <p>Pronto emerges del bosque y encuentras un importante camino real. Como puedes reconocer, es la calzada principal que une el puerto de Toran al norte con la capital al sur. Calculas que, espoleando al caballo, puedes llegar a la capital al día siguiente por la mañana.</p>
-      <choice idref="sect149"><link-text>Pasa al número 149</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect144">
-     <meta><title>144</title></meta>
-
-     <data>
-      <p>Con gran esfuerzo te abres camino entre aquella aglomeración de gente a lo largo de la calle principal hacia la ciudadela que se divisa a lo lejos. La multitud corre a la desbandada de un lado a otro, aterrada al oír los graznidos de los kraans que vuelan en círculo sobre sus cabezas.</p>
-      <p>En aquellas apreturas te roban un objeto de la mochila. Si ya no tienes mochila, pierdes un arma. Acuérdate de anotarlo en tu <a idref="action">Carta de Acción</a>.</p>
-      <p>Un caballo desbocado que tira de un carro pasa a la carrera junto a ti y te arroja contra una puerta. Quedas aturdido y pierdes 2 puntos de <typ class="attribute">RESISTENCIA</typ>. Al ponerte en pie tambaleándote, la puerta se abre de súbito y te ataca un anciano decrépito con una cuchilla de carnicero. Está completamente loco y debes luchar contra él o emprender la huida.</p>
-      <choice idref="sect63">Si eliges luchar, <link-text>pasa al número 63</link-text>.</choice>
-      <choice idref="sect217">Si deseas eludir el combate, <link-text>pasa al 217</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect145">
-     <meta><title>145</title></meta>
-
-     <data>
-      <p>Sientes como si te atropellara un carro o una carreta. Al caer de bruces, lo último que recuerdas antes de sumirte en la oscuridad es el sabor a polvo del camino y el terrible dolor de la espalda.</p>
-      <choice idref="sect165"><link-text>Pasa al número 165</link-text>.</choice>
-
-
-     </data>
-    </section>
-
-    <section class="numbered" id="sect146">
-     <meta><title>146</title></meta>
-
-     <data>
-      <p>Después de cabalgar aproximadamente una milla te derriba del caballo una flecha que pasa rozándote la frente. Pierdes 3 puntos de <typ class="attribute">RESISTENCIA</typ>.</p>
-      <p>Al ponerte de pie, ves una patrulla de drakkarim que sale del bosque a ambos lados del camino. Has caído en una emboscada y debes escapar hacia el interior del bosque lo más rápidamente posible.</p>
-      <choice idref="sect154"><link-text>Pasa al número 154</link-text>.</choice>
-
-
-     </data>
-    </section>
-
-    <section class="numbered" id="sect147">
-     <meta><title>147</title></meta>
-
-     <footnotes>
-      <footnote id="sect147-1-foot" idref="sect147-1">
-       <p>La formulación del texto de esta sección da por hecho que llegas a ella desde la <a idref="sect28">Sección 28</a>. Únicamente si has llegado a esta sección desde la <a idref="sect42">Sección 42</a>, lee la última frase y las opciones como sigue: <quote><ch.lellips/>Mientras comes, observas que el camino comienza a torcer hacie el norte. Si deseas seguirlo, <a idref="sect28">pasa al número 28</a>. Si quieres deshacer el camino andado, <a idref="sect42">pasa al número 42</a>.</quote></p>
-      </footnote>
-     </footnotes>
-
-     <data>
-      <p>Llevas caminando unos pocos minutos cuando descubres una musgosa cabaña algo alejada del camino. Tienes hambre y debes tomar aquí una comida o perderás 3 puntos de <typ class="attribute">RESISTENCIA</typ>. Mientras comes, observas que el camino comienza a torcer hacia el este. <footref id="sect147-1" idref="sect147-1-foot"/></p>
-      <choice idref="sect42">Si deseas seguirlo, <link-text>pasa al número 42</link-text>.</choice>
-      <choice idref="sect28">Si quieres deshacer el camino andado, <link-text>pasa al número 28</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect148">
-     <meta><title>148</title></meta>
-
-     <data>
-      <p>Abriendo la puerta de una patada, entras como una tromba en la casa de labor. Un kraan planea en el cielo sobre el edificio, lanzando un graznido de victoria, pues de sus garras pende una víctima. Te pones en pie y compruebas que estás solo. Pero apoyado contra el hogar hay un martillo de guerra. Puedes tomarlo si quieres.</p>
-      <choice idref="sect81">Si deseas permanecer en la casa, <link-text>pasa al número 81</link-text>.</choice>
-      <choice idref="sect320">Si crees que es más seguro internarte en el bosque, puedes aventurarte a salir corriendo y <link-text>pasar al número 320</link-text>.</choice>
-      <choice idref="sect199">Si decides explorar la habitación en la que te encuentras, <link-text>pasa al número 199</link-text>.</choice>
-
-
-
-     </data>
-    </section>
-
-    <section class="numbered" id="sect149">
-     <meta><title>149</title></meta>
-
-     <data>
-      <p>Mientras cabalgas por el camino real, notas que está empezando a oscurecer. Pronto se hará completamente de noche y será imposible ver los peligros que pueden acecharte. Decides ocultarte y descansar a orillas del bosque hasta que amanezca.</p>
-      <p>Cuando te convences de que nadie puede descubrirte, te arropas con la verde capa y al poco tiempo te duermes con un sueño intranquilo.</p>
-      <choice idref="sect256"><link-text>Pasa al número 256</link-text>.</choice>
-
-
-
-
-     </data>
-    </section>
-
-    <section class="numbered" id="sect150">
-     <meta><title>150</title></meta>
-
-     <data>
-      <p>Aunque un poco quemado, el guiso sabe bien (pero no es suficiente para una comida) y el agua fresca te calma la sed. Cuando llevas más de media hora descansando en aquella cabaña, caes en la cuenta de repente del retraso que ello supone para tu viaje.</p>
-      <choice idref="sect83">Prepara tu equipo y ponte en marcha. <link-text>Pasa al número 83</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect151">
-     <meta><title>151</title></meta>
-
-     <data>
-      <p>Si te concentraras en la cerradura, podrías mover el mecanismo y abrir la puerta. Luego podrías levantar con tu fuerza psíquica el alfiler y sacarlo de la chapa para no ser presa de las posibles trampas que pueden accionarse cuando la puerta se abra.</p>
-      <choice idref="sect87">Si deseas utilizar la disciplina de Poder mental sobre la materia para abrir esa cerradura y levantar el alfiler, <link-text>pasa al número 87</link-text>.</choice>
-      <choice idref="sect337">Si deseas quitar el alfiler, <link-text>pasa al número 337</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect152">
-     <meta><title>152</title></meta>
-
-     <data>
-      <p>El herbolario te ofrece una selección de pociones especiales. Unas sirven para aumentar las fuerzas, otras vuelven invisible al que las bebe, otras otorgan el don de la cautela y otras comunican el poder de convertirse en forma gaseosa. El hombre abre el cajón inferior del mostrador para enseñarte una magnífica vara mágica. Dice que es una poderosa arma contra todas las criaturas del mal y que te hará invulnerable en la batalla. Te señala la misteriosa inscripción que cubre la negra vara.</p>
-      <illustration class="float">
-       <meta>
-        <creator>Gary Chalk</creator>
-        <description>El herbolario te ofrece una selección de pociones especiales</description>
-       </meta>
-       <instance class="html" src="ill10.gif" width="386" height="656" />
-       <instance class="pdf" src="ill10.pdf" width="386" height="656" />
-      </illustration>
-      <choice idref="sect49">Si quieres inclinarte sobre el mostrador para leer la extraña inscripción, <link-text>pasa al número 49</link-text>.</choice>
-      <choice idref="sect231">Si te interesan más las pociones, <link-text>pasa al 231</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect153">
-     <meta><title>153</title></meta>
-
-     <data>
-      <p>Ante ti se alzan las altas murallas blancas y grises y las resplandecientes torres de Holmgard, con las banderas de la ciudad ondeando desde las almenas a la fresca brisa de la mañana. El río Eledil, que nace en las montañas occidentales de la cordillera Durncrag, sigue su curso hasta ir a desembocar en el golfo Holm. De los picos de las montañas desciende un gran ejército negro que avanza implacable hacia la capital.</p>
-      <illustration class="float">
-       <meta>
-        <creator>JC Alvarez</creator>
-       </meta>
-       <instance class="html" height="532" width="386" src="153.gif" />
-      </illustration>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small13.gif" width="386" height="150" />
-      </illustration>
-      <p>Puedes ver a tu derecha el camino real que por la ondulada llanura conduce a Holmgard. Yendo por él al galope puedes alcanzar en menos de una hora las fortificaciones exteriores de las defensas de la ciudad, pero la mayor parte del tiempo estarías al descubierto y serías vulnerable al ataque de los kraans. Enfrente de ti, un ancho río fluye perezosamente hacia el Eledil. Si abandonas el caballo podrias nadar por ese afluente hasta las fortificaciones exteriores, amparándote en la vegetación de las orillas. A tu izquierda se halla el cementerio de los antepasados. Esas tumbas y monumentos en ruinas de una edad olvidada ocultarían tu avance, pero se trata de una zona prohibida. Horrores innumerables y sin nombre duermen impacientes en ese lugar esperando atacar al imprudente que se atreva a entrar en él.</p>
-      <choice idref="sect202">Si quieres probar suerte por el camino real, <link-text>pasa al número 202</link-text>.</choice>
-      <choice idref="sect135">Si crees que tienes más probabilidades de llegar a la capital por el río, <link-text>pasa al número 135</link-text>.</choice>
-      <choice idref="sect329">Si tienes el valor de afrontar los riesgos desconocidos del cementerio de los antepasados, <link-text>pasa al número 329</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect154">
-     <meta><title>154</title></meta>
-
-     <data>
-      <p>Estás conmocionado por la herida y caminas tambaleándote entre los árboles como un ciego.</p>
-      <p>De repente caes hacia adelante como si te hubieran arrebatado el suelo bajo los pies. Has caído en la trampa de un cazador. Al mirar hacia arriba ves a cuatro drakkarim que te apuntan con sus arcos. Sus feos rostros te hacen visajes de burla y desprecio.</p>
-      <p>Mientras todo oscurece, lo último que sientes son las negras flechas de sus arcos penetrando profundamente en tu pecho.</p>
-      <p>Has fracasado en tu misión.</p>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect155">
-     <meta><title>155</title></meta>
-
-     <data>
-      <p>Cuando tú te acercas, el grupo de gente cesa de hablar. Deduces de sus expresiones que han reconocido tu verde capa del Kai. Muy despacio, uno de los hombres te tiende la mano en señal de amistad y dice:</p>
-      <p>-Señor, hemos oído el rumor de que el Kai ha sido destruido. Que los cielos sean alabados si no es así. Temíamos que todo estaba perdido.</p>
-      <p>Tú no les dices nada acerca de la destrucción del monasterio, pues son refugiados procedentes de Toran y han perdido todo cuanto poseían. Ahora su única esperanza es que los señores del Kai dirijan el ejército a la victoria. Te enteras de que el puerto del norte fue atacado por mar y aire y de que las fuerzas de los señores de la Oscuridad eran mucho más numerosas que la valiente guarnición del Rey. Les aseguras que Sommerlund no será vencido y les deseas suerte en su viaje.</p>
-      <choice idref="sect70"><link-text>Pasa al número 70</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect156">
-     <meta><title>156</title></meta>
-
-     <data>
-      <p>Negras flechas se clavan en el barro a tu alrededor. En la inclinada pendiente de la orilla del río aparecen más giaks que disparan contra ti. No hay donde refugiarse en esa orilla del río.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small14.gif" width="386" height="150" />
-       <instance class="pdf" src="small14.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect294">Si deseas tirarte al agua y nadar a favor de la corriente, <link-text>pasa al número 294</link-text>.</choice>
-      <choice idref="sect245">Si quieres atravesar el río a nado para buscar refugio entre los árboles de la otra orilla, <link-text>pasa al 245</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect157">
-     <meta><title>157</title></meta>
-
-     <data>
-      <p>El bosque empieza a aclararse hasta que finalmente descubres ante ti un camino entre los árboles. El camino está lleno de gente que se dirige hacia el sur. Muchos empujan carros de mano en los que transportan sus posesiones.</p>
-      <choice idref="sect30">Si deseas unirte a los refugiados y enterarte tal vez de más cosas sobre lo que ha sucedido en el norte, <link-text>pasa al número 30</link-text>.</choice>
-      <choice idref="sect167">Si prefieres continuar hacia el sur, pero bajo el amparo de los árboles del bosque, <link-text>pasa al 167</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect158">
-     <meta><title>158</title></meta>
-
-     <data>
-      <p>La Llave encaja y la cerradura se abre. Empujas la puerta y te encuentras frente a un extraño anciano. En su mano derecha tiene un bastón. De repente, un rayo relampagueante sale disparado del bastón y te hiere en el pecho. Pierdes 6 puntos de <typ class="attribute">RESISTENCIA</typ>. Gritando de dolor apartas de un golpe al anciano y subes corriendo las escaleras hacia la luz del día. Estás a la mitad de la subida cuando el viejo te lanza otro rayo.</p>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <p>Si el número está entre el 0 y el 5, el rayo no te da y se estrella contra la pared.</p>
-      <p>Si el número se encuentra entre el 6 y el 9, el rayo te alcanza en la espalda y pierdes otros 4 puntos de <typ class="attribute">RESISTENCIA</typ>.</p>
-      <p>Si sobrevives, llegas al exterior dando tumbos y maldiciendo tu mala suerte. Pues fue mala suerte descubrir por casualidad el templo secreto de la secta de malvados druidas. Pero eres afortunado de haber escapado con vida. Rápidamente vuelves al camino, que ahora se pierde al otro lado de la colina.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small15.gif" width="386" height="150" />
-       <instance class="pdf" src="small15.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect106"><link-text>Pasa al número 106</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect159">
-     <meta><title>159</title></meta>
-
-     <data>
-      <p>Tu plan no da resultado, pues el mercader no te permite entrar en su carruaje. De pronto da un chasquido con los dedos y el guardaespaldas echa mano de su cimitarra.</p>
-      <choice idref="sect191">Si quieres luchar con él, <link-text>pasa al número 191</link-text>.</choice>
-      <choice idref="sect234">Si decides saltar del carruaje en marcha y escapar corriendo, <link-text>pasa al 234</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect160">
-     <meta><title>160</title></meta>
-
-     <data>
-      <p>Elige al azar un número de la <a idref="random">Tabla de la Suerte</a>.</p>
-      <choice idref="sect286">Si está entre el 0 y el 4, eres descubierto y <link-text>pasas al número 286</link-text>.</choice>
-      <choice idref="sect10">Si el número está entre el 5 y el 9, los lobos fatídicos no te descubren y se alejan lentamente por el otro extremo de la pendiente. <link-text>Pasa al número 10</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect161">
-     <meta><title>161</title></meta>
-
-     <data>
-      <p>Cuando te sientas en el trono, la serpiente de piedra avanza despacio sobre su columna. De repente un frío sudor comienza a recorrerte el cuerpo. Empuñas el arma con mano temblorosa por si la serpiente te ataca. De la cabeza de esa extraña estatua surge una roja lengua bífida que se hunde en el cuenco de luz verde encima de tu cabeza. Lentamente la lengua emerge sujetando una Llave de oro que, con gran sorpresa tuya, deja caer en tu regazo. Un panel en la pared oriental se abre con un ruido metálico poniendo al descubierto una salida.</p>
-      <p>Tomas la Llave y sales de la cámara lo más rápidamente posible.</p>
-      <illustration class="inline">
-       <meta>
-        <creator>Gary Chalk</creator>
-       </meta>
-       <instance class="html" src="small16.gif" width="386" height="150" />
-       <instance class="pdf" src="small16.pdf" width="386" height="150" />
-      </illustration>
-      <choice idref="sect209"><link-text>Pasa al número 209</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect162">
-     <meta><title>162</title></meta>
-
-     <data>
-      <p>Al aproximarte a los hombres, les llamas. Ellos se vuelven para mirarte y tu sientes un escalofrío y el corazón comienza a latirte con violencia: son drakkarim disfrazados que de repente cargan contra ti. Te derriban al suelo, te atan con cuerdas y te arrastran tras ellos a lo largo del camino. Te han quitado la mochila y las armas, pero no te han registrado la ropa ni despojado de las Coronas de oro. Se ríen amenazadoramente y comentan con todo detalle las torturas que te esperan en su campamento.</p>
-      <choice idref="sect258">Si posees la disciplina de Poder mental sobre la materia, <link-text>pasa al número 258</link-text>.</choice>
-      <choice idref="sect127">Si no posees esa habilidad, <link-text>pasa al 127</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect163">
-     <meta><title>163</title></meta>
-
-     <data>
-      <p>Al cabo de casi media hora notas que la corriente se vuelve más impetuosa. Alzando la cabeza para mirar sobre la superficie del agua, descubres que te estás acercando a un remolino en medio de una gran curva del río. Si te atrapa, es seguro que te ahogarás, así que nadas raudamente hacia la orilla derecha y continúas tu misión a pie, cargando con todo tu equipo.</p>
-      <choice idref="sect321"><link-text>Pasa al número 321</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect164">
-     <meta><title>164</title></meta>
-
-     <data>
-      <p>Después de abrir con cuidado los tapones de las botellas hueles su contenido. Parece que son diferentes clases de vinos. De pronto te fijas en una botellita que estaba medio oculta por las otras. Le quitas el tapón y por el olor reconoces que es aléter, una poción vigorizante de color anaranjado.</p>
-      <p>Puedes quedarte con esta poción y beberla antes de alguna pelea. Aumentará en 2 puntos tu <typ class="attribute">DESTREZA EN EL COMBATE</typ> mientras dure la lucha. No te olvides de anotarla en tu <a idref="action">Carta de Acción</a> y de tacharla cuando la hayas usado.</p>
-      <choice idref="sect308">Después decides explorar el establo <link-text>pasando al número 308</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect165">
-     <meta><title>165</title></meta>
-
-     <data>
-      <p>Te despiertas con fiebre. Ante tus ojos desfilan imágenes que en seguida se desvanecen. El dolor de la espalda es muy intenso y te hace gritar para desahogarte. Sientes sobre tu frente un paño frío y húmedo y vislumbras el rostro preocupado de una joven. Un anciano le susurra algo al oído y luego desaparece de tu vista. La muchacha se arrodilla a tu lado y te conforta con palabras amables y tranquilizadoras. Pero la luz vuelve a extinguirse rápidamente y de nuevo te hundes en una total oscuridad.</p>
-      <choice idref="sect212"><link-text>Pasa al número 212</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect166">
-     <meta><title>166</title></meta>
-
-     <data>
-      <p>Estás en presencia de un gran mal. Tu mente es sometida a prueba por un ser poderoso e intemporal y debes defenderte. La lucha ha comenzado y tu cordura está en peligro. Se trata de una prueba larga y tortuosa durante la cual experimentas muchas apariciones fantásticas y terribles que te tientan y espantan. Después de ella pierdes 4 puntos de <typ class="attribute">RESISTENCIA</typ> y caminas vacilante hacia el túnel.</p>
-      <choice idref="sect104"><link-text>Pasa al número 104</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect167">
-     <meta><title>167</title></meta>
-
-     <data>
-      <p>Llevas recorrida aproximadamente una milla cuando divisas dos piernas que asoman por detrás de una gran roca.</p>
-      <choice idref="sect178">Si posees y decides utilizar la disciplina de Sexto sentido, <link-text>pasa al número 178</link-text>.</choice>
-      <choice idref="sect88">Si deseas examinarlas más de cerca, <link-text>pasa al número 88</link-text>.</choice>
-      <choice idref="sect264">Si prefieres evitar el encuentro con la persona a quien pertenezcan esas piernas y seguir tu camino por el bosque, <link-text>pasa al número 264</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect168">
-     <meta><title>168</title></meta>
-
-     <data>
-      <p>Trepas al techo del opulento carruaje y te acurrucas entre los baúles y fardos del equipaje. La noche pronto cubrirá con su oscuridad el camino. Un viento frío sopla del oeste y te arropas en la capa para resguardarte de él. Escuchas voces debajo de ti en el carruaje y percibes un aroma de carne adobada que te hace la boca agua. Eso te recuerda que estás hambriento y que debes comer ahora.</p>
-      <p>La fatiga de tantas peripecias acaba por vencerte y te duermes con un sueño intranquilo.</p>
-      <choice idref="sect64"><link-text>Pasa al número 64</link-text>.</choice>
-     </data>
-    </section>
-
-    <section class="numbered" id="sect169">
-     <meta><title>169</title></meta>
-
-     <data>
-      <p>Al pasar junto a las calaveras, cada una de ellas gira lentamente como para vigilar todos tus movimientos. Has atravesado media cámara cuando oyes el agudo crujido de huesos que se rompen. En esto ves unas formas horribles que asoman por el interior de las calaveras y extienden sus alas.</p>
-      <p>Diez criaturas aladas y viscosas te atacan y debes combatir contra ellas como si fueran un único enemigo.</p>
-