From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/rpg-module/LICENSE | 415 ++++++++ macros/latex/contrib/rpg-module/README | 41 + macros/latex/contrib/rpg-module/basic-stats.def | 373 +++++++ macros/latex/contrib/rpg-module/basic-stats.sty | 399 +++++++ macros/latex/contrib/rpg-module/doc/rpg-module.tex | 734 +++++++++++++ .../rpg-module/doc/rpg_module_cover_art.png | Bin 0 -> 770708 bytes .../rpg-module/doc/rpg_module_interior_art.png | Bin 0 -> 1795730 bytes .../contrib/rpg-module/doc/rpg_module_logo.pdf | Bin 0 -> 2432 bytes .../contrib/rpg-module/doc/rpg_module_map.png | Bin 0 -> 767754 bytes .../contrib/rpg-module/examples/README.examples | 23 + macros/latex/contrib/rpg-module/examples/b1.pdf | Bin 0 -> 37696 bytes macros/latex/contrib/rpg-module/examples/b1.tex | 301 ++++++ macros/latex/contrib/rpg-module/examples/b3.pdf | Bin 0 -> 548133 bytes macros/latex/contrib/rpg-module/examples/b3.tex | 240 +++++ macros/latex/contrib/rpg-module/examples/basic.pdf | Bin 0 -> 314028 bytes macros/latex/contrib/rpg-module/examples/basic.tex | 234 ++++ .../contrib/rpg-module/examples/monster_manual.pdf | Bin 0 -> 229154 bytes .../contrib/rpg-module/examples/monster_manual.tex | 1115 ++++++++++++++++++++ macros/latex/contrib/rpg-module/examples/x2.pdf | Bin 0 -> 977552 bytes macros/latex/contrib/rpg-module/examples/x2.tex | 178 ++++ macros/latex/contrib/rpg-module/rpg-module.cls | 650 ++++++++++++ macros/latex/contrib/rpg-module/rpg-module.pdf | Bin 0 -> 3322064 bytes 22 files changed, 4703 insertions(+) create mode 100644 macros/latex/contrib/rpg-module/LICENSE create mode 100644 macros/latex/contrib/rpg-module/README create mode 100644 macros/latex/contrib/rpg-module/basic-stats.def create mode 100644 macros/latex/contrib/rpg-module/basic-stats.sty create mode 100644 macros/latex/contrib/rpg-module/doc/rpg-module.tex create mode 100644 macros/latex/contrib/rpg-module/doc/rpg_module_cover_art.png create mode 100644 macros/latex/contrib/rpg-module/doc/rpg_module_interior_art.png create mode 100644 macros/latex/contrib/rpg-module/doc/rpg_module_logo.pdf create mode 100644 macros/latex/contrib/rpg-module/doc/rpg_module_map.png create mode 100644 macros/latex/contrib/rpg-module/examples/README.examples create mode 100644 macros/latex/contrib/rpg-module/examples/b1.pdf create mode 100644 macros/latex/contrib/rpg-module/examples/b1.tex create mode 100644 macros/latex/contrib/rpg-module/examples/b3.pdf create mode 100644 macros/latex/contrib/rpg-module/examples/b3.tex create mode 100644 macros/latex/contrib/rpg-module/examples/basic.pdf create mode 100644 macros/latex/contrib/rpg-module/examples/basic.tex create mode 100644 macros/latex/contrib/rpg-module/examples/monster_manual.pdf create mode 100644 macros/latex/contrib/rpg-module/examples/monster_manual.tex create mode 100644 macros/latex/contrib/rpg-module/examples/x2.pdf create mode 100644 macros/latex/contrib/rpg-module/examples/x2.tex create mode 100644 macros/latex/contrib/rpg-module/rpg-module.cls create mode 100644 macros/latex/contrib/rpg-module/rpg-module.pdf (limited to 'macros/latex/contrib/rpg-module') diff --git a/macros/latex/contrib/rpg-module/LICENSE b/macros/latex/contrib/rpg-module/LICENSE new file mode 100644 index 0000000000..4db9b5af29 --- /dev/null +++ b/macros/latex/contrib/rpg-module/LICENSE @@ -0,0 +1,415 @@ +The LaTeX Project Public License +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +LPPL Version 1.3c 2008-05-04 + +Copyright 1999 2002-2008 LaTeX3 Project + Everyone is allowed to distribute verbatim copies of this + license document, but modification of it is not allowed. + + +PREAMBLE +======== + +The LaTeX Project Public License (LPPL) is the primary license under +which the LaTeX kernel and the base LaTeX packages are distributed. + +You may use this license for any work of which you hold the copyright +and which you wish to distribute. This license may be particularly +suitable if your work is TeX-related (such as a LaTeX package), but +it is written in such a way that you can use it even if your work is +unrelated to TeX. + +The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', +below, gives instructions, examples, and recommendations for authors +who are considering distributing their works under this license. + +This license gives conditions under which a work may be distributed +and modified, as well as conditions under which modified versions of +that work may be distributed. + +We, the LaTeX3 Project, believe that the conditions below give you +the freedom to make and distribute modified versions of your work +that conform with whatever technical specifications you wish while +maintaining the availability, integrity, and reliability of +that work. If you do not see how to achieve your goal while +meeting these conditions, then read the document `cfgguide.tex' +and `modguide.tex' in the base LaTeX distribution for suggestions. + + +DEFINITIONS +=========== + +In this license document the following terms are used: + + `Work' + Any work being distributed under this License. + + `Derived Work' + Any work that under any applicable law is derived from the Work. + + `Modification' + Any procedure that produces a Derived Work under any applicable + law -- for example, the production of a file containing an + original file associated with the Work or a significant portion of + such a file, either verbatim or with modifications and/or + translated into another language. + + `Modify' + To apply any procedure that produces a Derived Work under any + applicable law. + + `Distribution' + Making copies of the Work available from one person to another, in + whole or in part. Distribution includes (but is not limited to) + making any electronic components of the Work accessible by + file transfer protocols such as FTP or HTTP or by shared file + systems such as Sun's Network File System (NFS). + + `Compiled Work' + A version of the Work that has been processed into a form where it + is directly usable on a computer system. This processing may + include using installation facilities provided by the Work, + transformations of the Work, copying of components of the Work, or + other activities. Note that modification of any installation + facilities provided by the Work constitutes modification of the Work. + + `Current Maintainer' + A person or persons nominated as such within the Work. If there is + no such explicit nomination then it is the `Copyright Holder' under + any applicable law. + + `Base Interpreter' + A program or process that is normally needed for running or + interpreting a part or the whole of the Work. + + A Base Interpreter may depend on external components but these + are not considered part of the Base Interpreter provided that each + external component clearly identifies itself whenever it is used + interactively. Unless explicitly specified when applying the + license to the Work, the only applicable Base Interpreter is a + `LaTeX-Format' or in the case of files belonging to the + `LaTeX-format' a program implementing the `TeX language'. + + + +CONDITIONS ON DISTRIBUTION AND MODIFICATION +=========================================== + +1. Activities other than distribution and/or modification of the Work +are not covered by this license; they are outside its scope. In +particular, the act of running the Work is not restricted and no +requirements are made concerning any offers of support for the Work. + +2. You may distribute a complete, unmodified copy of the Work as you +received it. Distribution of only part of the Work is considered +modification of the Work, and no right to distribute such a Derived +Work may be assumed under the terms of this clause. + +3. You may distribute a Compiled Work that has been generated from a +complete, unmodified copy of the Work as distributed under Clause 2 +above, as long as that Compiled Work is distributed in such a way that +the recipients may install the Compiled Work on their system exactly +as it would have been installed if they generated a Compiled Work +directly from the Work. + +4. If you are the Current Maintainer of the Work, you may, without +restriction, modify the Work, thus creating a Derived Work. You may +also distribute the Derived Work without restriction, including +Compiled Works generated from the Derived Work. Derived Works +distributed in this manner by the Current Maintainer are considered to +be updated versions of the Work. + +5. If you are not the Current Maintainer of the Work, you may modify +your copy of the Work, thus creating a Derived Work based on the Work, +and compile this Derived Work, thus creating a Compiled Work based on +the Derived Work. + +6. If you are not the Current Maintainer of the Work, you may +distribute a Derived Work provided the following conditions are met +for every component of the Work unless that component clearly states +in the copyright notice that it is exempt from that condition. Only +the Current Maintainer is allowed to add such statements of exemption +to a component of the Work. + + a. If a component of this Derived Work can be a direct replacement + for a component of the Work when that component is used with the + Base Interpreter, then, wherever this component of the Work + identifies itself to the user when used interactively with that + Base Interpreter, the replacement component of this Derived Work + clearly and unambiguously identifies itself as a modified version + of this component to the user when used interactively with that + Base Interpreter. + + b. Every component of the Derived Work contains prominent notices + detailing the nature of the changes to that component, or a + prominent reference to another file that is distributed as part + of the Derived Work and that contains a complete and accurate log + of the changes. + + c. No information in the Derived Work implies that any persons, + including (but not limited to) the authors of the original version + of the Work, provide any support, including (but not limited to) + the reporting and handling of errors, to recipients of the + Derived Work unless those persons have stated explicitly that + they do provide such support for the Derived Work. + + d. You distribute at least one of the following with the Derived Work: + + 1. A complete, unmodified copy of the Work; + if your distribution of a modified component is made by + offering access to copy the modified component from a + designated place, then offering equivalent access to copy + the Work from the same or some similar place meets this + condition, even though third parties are not compelled to + copy the Work along with the modified component; + + 2. Information that is sufficient to obtain a complete, + unmodified copy of the Work. + +7. If you are not the Current Maintainer of the Work, you may +distribute a Compiled Work generated from a Derived Work, as long as +the Derived Work is distributed to all recipients of the Compiled +Work, and as long as the conditions of Clause 6, above, are met with +regard to the Derived Work. + +8. The conditions above are not intended to prohibit, and hence do not +apply to, the modification, by any method, of any component so that it +becomes identical to an updated version of that component of the Work as +it is distributed by the Current Maintainer under Clause 4, above. + +9. Distribution of the Work or any Derived Work in an alternative +format, where the Work or that Derived Work (in whole or in part) is +then produced by applying some process to that format, does not relax or +nullify any sections of this license as they pertain to the results of +applying that process. + +10. a. A Derived Work may be distributed under a different license + provided that license itself honors the conditions listed in + Clause 6 above, in regard to the Work, though it does not have + to honor the rest of the conditions in this license. + + b. If a Derived Work is distributed under a different license, that + Derived Work must provide sufficient documentation as part of + itself to allow each recipient of that Derived Work to honor the + restrictions in Clause 6 above, concerning changes from the Work. + +11. This license places no restrictions on works that are unrelated to +the Work, nor does this license place any restrictions on aggregating +such works with the Work by any means. + +12. Nothing in this license is intended to, or may be used to, prevent +complete compliance by all parties with all applicable laws. + + +NO WARRANTY +=========== + +There is no warranty for the Work. Except when otherwise stated in +writing, the Copyright Holder provides the Work `as is', without +warranty of any kind, either expressed or implied, including, but not +limited to, the implied warranties of merchantability and fitness for a +particular purpose. The entire risk as to the quality and performance +of the Work is with you. Should the Work prove defective, you assume +the cost of all necessary servicing, repair, or correction. + +In no event unless required by applicable law or agreed to in writing +will The Copyright Holder, or any author named in the components of the +Work, or any other party who may distribute and/or modify the Work as +permitted above, be liable to you for damages, including any general, +special, incidental or consequential damages arising out of any use of +the Work or out of inability to use the Work (including, but not limited +to, loss of data, data being rendered inaccurate, or losses sustained by +anyone as a result of any failure of the Work to operate with any other +programs), even if the Copyright Holder or said author or said other +party has been advised of the possibility of such damages. + + +MAINTENANCE OF THE WORK +======================= + +The Work has the status `author-maintained' if the Copyright Holder +explicitly and prominently states near the primary copyright notice in +the Work that the Work can only be maintained by the Copyright Holder +or simply that it is `author-maintained'. + +The Work has the status `maintained' if there is a Current Maintainer +who has indicated in the Work that they are willing to receive error +reports for the Work (for example, by supplying a valid e-mail +address). It is not required for the Current Maintainer to acknowledge +or act upon these error reports. + +The Work changes from status `maintained' to `unmaintained' if there +is no Current Maintainer, or the person stated to be Current +Maintainer of the work cannot be reached through the indicated means +of communication for a period of six months, and there are no other +significant signs of active maintenance. + +You can become the Current Maintainer of the Work by agreement with +any existing Current Maintainer to take over this role. + +If the Work is unmaintained, you can become the Current Maintainer of +the Work through the following steps: + + 1. Make a reasonable attempt to trace the Current Maintainer (and + the Copyright Holder, if the two differ) through the means of + an Internet or similar search. + + 2. If this search is successful, then enquire whether the Work + is still maintained. + + a. If it is being maintained, then ask the Current Maintainer + to update their communication data within one month. + + b. If the search is unsuccessful or no action to resume active + maintenance is taken by the Current Maintainer, then announce + within the pertinent community your intention to take over + maintenance. (If the Work is a LaTeX work, this could be + done, for example, by posting to comp.text.tex.) + + 3a. If the Current Maintainer is reachable and agrees to pass + maintenance of the Work to you, then this takes effect + immediately upon announcement. + + b. If the Current Maintainer is not reachable and the Copyright + Holder agrees that maintenance of the Work be passed to you, + then this takes effect immediately upon announcement. + + 4. If you make an `intention announcement' as described in 2b. above + and after three months your intention is challenged neither by + the Current Maintainer nor by the Copyright Holder nor by other + people, then you may arrange for the Work to be changed so as + to name you as the (new) Current Maintainer. + + 5. If the previously unreachable Current Maintainer becomes + reachable once more within three months of a change completed + under the terms of 3b) or 4), then that Current Maintainer must + become or remain the Current Maintainer upon request provided + they then update their communication data within one month. + +A change in the Current Maintainer does not, of itself, alter the fact +that the Work is distributed under the LPPL license. + +If you become the Current Maintainer of the Work, you should +immediately provide, within the Work, a prominent and unambiguous +statement of your status as Current Maintainer. You should also +announce your new status to the same pertinent community as +in 2b) above. + + +WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE +====================================================== + +This section contains important instructions, examples, and +recommendations for authors who are considering distributing their +works under this license. These authors are addressed as `you' in +this section. + +Choosing This License or Another License +---------------------------------------- + +If for any part of your work you want or need to use *distribution* +conditions that differ significantly from those in this license, then +do not refer to this license anywhere in your work but, instead, +distribute your work under a different license. You may use the text +of this license as a model for your own license, but your license +should not refer to the LPPL or otherwise give the impression that +your work is distributed under the LPPL. + +The document `modguide.tex' in the base LaTeX distribution explains +the motivation behind the conditions of this license. It explains, +for example, why distributing LaTeX under the GNU General Public +License (GPL) was considered inappropriate. Even if your work is +unrelated to LaTeX, the discussion in `modguide.tex' may still be +relevant, and authors intending to distribute their works under any +license are encouraged to read it. + +A Recommendation on Modification Without Distribution +----------------------------------------------------- + +It is wise never to modify a component of the Work, even for your own +personal use, without also meeting the above conditions for +distributing the modified component. While you might intend that such +modifications will never be distributed, often this will happen by +accident -- you may forget that you have modified that component; or +it may not occur to you when allowing others to access the modified +version that you are thus distributing it and violating the conditions +of this license in ways that could have legal implications and, worse, +cause problems for the community. It is therefore usually in your +best interest to keep your copy of the Work identical with the public +one. Many works provide ways to control the behavior of that work +without altering any of its licensed components. + +How to Use This License +----------------------- + +To use this license, place in each of the components of your work both +an explicit copyright notice including your name and the year the work +was authored and/or last substantially modified. Include also a +statement that the distribution and/or modification of that +component is constrained by the conditions in this license. + +Here is an example of such a notice and statement: + + %% pig.dtx + %% Copyright 2005 M. Y. Name + % + % This work may be distributed and/or modified under the + % conditions of the LaTeX Project Public License, either version 1.3 + % of this license or (at your option) any later version. + % The latest version of this license is in + % http://www.latex-project.org/lppl.txt + % and version 1.3 or later is part of all distributions of LaTeX + % version 2005/12/01 or later. + % + % This work has the LPPL maintenance status `maintained'. + % + % The Current Maintainer of this work is M. Y. Name. + % + % This work consists of the files pig.dtx and pig.ins + % and the derived file pig.sty. + +Given such a notice and statement in a file, the conditions +given in this license document would apply, with the `Work' referring +to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being +generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' +referring to any `LaTeX-Format', and both `Copyright Holder' and +`Current Maintainer' referring to the person `M. Y. Name'. + +If you do not want the Maintenance section of LPPL to apply to your +Work, change `maintained' above into `author-maintained'. +However, we recommend that you use `maintained', as the Maintenance +section was added in order to ensure that your Work remains useful to +the community even when you can no longer maintain and support it +yourself. + +Derived Works That Are Not Replacements +--------------------------------------- + +Several clauses of the LPPL specify means to provide reliability and +stability for the user community. They therefore concern themselves +with the case that a Derived Work is intended to be used as a +(compatible or incompatible) replacement of the original Work. If +this is not the case (e.g., if a few lines of code are reused for a +completely different task), then clauses 6b and 6d shall not apply. + + +Important Recommendations +------------------------- + + Defining What Constitutes the Work + + The LPPL requires that distributions of the Work contain all the + files of the Work. It is therefore important that you provide a + way for the licensee to determine which files constitute the Work. + This could, for example, be achieved by explicitly listing all the + files of the Work near the copyright notice of each file or by + using a line such as: + + % This work consists of all files listed in manifest.txt. + + in that place. In the absence of an unequivocal list it might be + impossible for the licensee to determine what is considered by you + to comprise the Work and, in such a case, the licensee would be + entitled to make reasonable conjectures as to which files comprise + the Work. diff --git a/macros/latex/contrib/rpg-module/README b/macros/latex/contrib/rpg-module/README new file mode 100644 index 0000000000..1c582dd764 --- /dev/null +++ b/macros/latex/contrib/rpg-module/README @@ -0,0 +1,41 @@ +-------------------------------------------------------------------------------- +rpg_module: A Role-Playing Game Module document class for LaTeX + +Version 1.0 2016/04/25 + +Includes basic_stats.sty, a package to typeset monster stat blocks from the +1981 Basic/Expert version of Dungeons and Dragons (Moldvay/Cook/Marsh) +-------------------------------------------------------------------------------- + +Copyright 2016 Michael C. Davis + +This work may be distributed and/or modified under the conditions of the LaTeX +Project Public License version 1.3 or later. The Basic Stats style contains +material which is licensed under the Open Gaming License version 1.0A. + + +The rpg_module class is inspired by the old-school Dungeons and Dragons modules +of the 1980s and attempts to recapture the look and feel of those classic +adventures. In the examples directory, you will find several pages from D&D +modules from 1981 which have been typeset with this class and which you can +compare to the original documents. + +This package also includes the Basic Stats style, which contains stat blocks +for every monster from the Moldvay/Cook/Marsh Basic/Expert version of the +game. A future version of this class will include monster stats for Advanced +Dungeons & Dragons/OSRIC. + + +Usage: \documentclass[options]{rpg-module} + +See rpg_module.pdf for detailed documentation and a worked example. See +the examples directory for further examples. + + +The author can be contacted at Dragonsfoot, user: slithy + +http://www.dragonsfoot.org/forums/memberlist.php?mode=viewprofile&u=7317 + +Technical support is provided on Dragonsfoot Forums: + +http://www.dragonsfoot.org/forums/viewtopic.php?f=87&t=73823 diff --git a/macros/latex/contrib/rpg-module/basic-stats.def b/macros/latex/contrib/rpg-module/basic-stats.def new file mode 100644 index 0000000000..ca62938886 --- /dev/null +++ b/macros/latex/contrib/rpg-module/basic-stats.def @@ -0,0 +1,373 @@ +%% basic-stats.def +% +% Basic stats for the Role-Playing Game Module class +% +% Copyright 2016 Michael C. Davis +% +% LICENSE FOR THE WORK +% +% This work consists of the following files: +% rpg-module.cls +% basic-stats.sty +% basic-stats.def +% doc/rpg-module.tex +% +% This work may be distributed and/or modified under the conditions of the LaTeX +% Project Public License, either version 1.3 of this license or (at your option) +% any later version. The latest version of this license can be found at: +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX version +% 2005/12/01 or later. +% +% This work has the LPPL maintenance status `author-maintained'. +% +% The Author and Maintainer of this work is Michael C. Davis +% +% +% OPEN GAME LICENSE +% +% The monster stats in this file are copyright 2000, Wizards of the Coast, Inc. +% and are distributed with permission under the terms of the Open Game License v 1.0. +% See the file rpg-module.cls or the compiled documentation file rpg-module.pdf for +% the full text of the license. +% +% +% LICENSE FOR COMPILED WORKS +% +% You may distribute compiled works generated using the work as specified in +% Clause 3 of the LaTeX Project Public License. If you incorporate Open Gaming +% Content into the compiled work, you must also comply with the terms of that +% license. +% +% +% USAGE +% +% See the file rpg-module.pdf (source file doc/rpg-module.tex) for documentation. +% There are a number of worked examples in the examples/ directory. +% +% Technical support is provided on Dragonsfoot Forums: +% +% http://www.dragonsfoot.org/forums/viewtopic.php?f=87&t=73823 + + +\monster{ant}{Driver Ant}{Ant||3|4*|180'|60'||||1|1 mandibles|2d6|2d6|Fighter: 2|7 (12)|Neutral|2--8|4--24|U or special|125} +\monster{white_ape}{White Ape}{Ape||6|4|120'|40'||||2|2 claws|1d4\x 2|1d4\?1d4|Fighter: 2|7|Neutral|1--6|2--8|Nil|75} +\monster{basilisk}{Basilisk}{||4|6+1**|60'|20'||||1+gaze|1 bite\+gaze|1d10+special|1d10\+petrification|Fighter: 6|9|Neutral|1--6|1--6|F|950} +\monster{bat}{Bat}{Bat||6|1 hp|9'|3'|Fly|120'|40'|special|Confusion|Nil|Nil|Normal Man|6|Neutral|1--100|1--100|Nil|5} +\monster{giant_bat}{Giant Bat}{Bat||6|2|30'|10'|Fly|180'|60'|1|1 bite|1d4|1d4|Fighter: 1|8|Neutral|1--10|1--10|Nil|20} +\monster{vampire_bat}{Giant Vampire Bat}{Bat||6|2|30'|10'|Fly|180'|60'|1|1 bite|1d4+special|1d4\+blood drain|Fighter: 1|8|Neutral|1--10|1--10|Nil|20} +\monster{black_bear}{Black Bear}{Bear||6|4|120'|40'||||3|2 claws\?1 bite|1d3\x 2/1d6|1d3\?1d3\?1d6|Fighter: 2|7|Neutral|1--4|1--4|U|75} +\monster{cave_bear}{Cave Bear}{Bear||5|7|120'|40'||||3|2 claws\?1 bite|1d8\x 2/2d6|1d8\?1d8\?2d6|Fighter: 3|9|Neutral|1--2|1--2|V|450} +\monster{grizzly_bear}{Grizzly Bear}{Bear||6|5|120'|40'||||3|2 claws\?1 bite|1d4\x 2/1d8|1d4\?1d4\?1d8|Fighter: 2|8|Neutral|1|1--4|U|175} +\monster{polar_bear}{Polar Bear}{Bear||6|6|120'|40'||||3|2 claws\?1 bite|1d6\x 2/1d10|1d6\?1d6\?1d10|Fighter: 3|8|Neutral|1|1--2|U|275} +\monster{bee}{Killer Bee}{Bee||7|\half*|150'|50'||||1|1 sting|1d3+special|1d3\+special|Fighter: 1|9|Neutral|1--6|5--30|Special|6} +\monster{fire_beetle}{Giant Fire Beetle}{Beetle||4|1+2|120'|40'||||1|1 bite|2d4|2d4|Fighter: 1|7|Neutral|1--8|2--12|Nil|15} +\monster{oil_beetle}{Giant Oil Beetle}{Beetle||4|2*|120'|40'||||1+special|1~bite\+special|1d6+special|1d6\+special|Fighter: 1|8|Neutral|1--8|2--12|Nil|25} +\monster{tiger_beetle}{Giant Tiger Beetle}{Beetle||3|3+1|150'|50'||||1|1 bite|2d6|2d6|Fighter: 1|9|Neutral|1--6|2--8|U|50} +\monster{black_pudding}{Black Pudding}{|*|6|10*|60'|20'||||1|1|3d8|3d8|Fighter: 5|12|Neutral|1|0|Nil|1600} +\monster{blink_dog}{Blink Dog}{||5|4*|120'|40'||||1|1 bite|1d6|1d6|Fighter: 4|6|Lawful|1--6|1--6|C|125} +\monster{boar}{Boar}{||7|3|150'|50'||||1|1 tusk|2d4|2d4|Fighter: 2|9|Neutral|1--6|1--6|Nil|35} +\monster{bugbear}{Bugbear}{||5|3+1|90'|30'||||1|1 weapon|2d4|2d4 or by weapon\+1|Fighter: 3|9|Chaotic|2--8|5--20|B|50} +\monster[Caeciliae]{caecilia}{Caecilia}{||6|6*|60'|20'||||1|1 bite|1d8|1d8|Fighter: 3|9|Neutral|1--3|1--3|B|500} +\monster{camel}{Camel}{||7|2|150'|50'||||2|1 bite\?1 hoof|1/1d4|1\?1d4|Fighter: 1|7|Neutral|0|2--8|Nil|20} +\monster{carrion_crawler}{Carrion Crawler}{||7|3+1*|120'|40'||||8|8 tentacles|paralysis|Paralysis|Fighter: 2|9|Neutral|1--3|1--3|B|75} +\monster{lion}{Lion}{Cat, Great||6|5|150'|50'||||3|2 claws\?1 bite|1d4+1\x 2/1d10|1d4+1\?1d4+1\?1d10|Fighter: 3|9|Neutral|1--4|1--8|U|175} +\monster{mountain_lion}{Mountain Lion}{Cat, Great||6|3+2|150'|50'||||3|2 claws\?1 bite|1d3\x 2/1d6|1d3\?1d3\?1d6|Fighter: 2|8|Neutral|1--4|1--4|U|50} +\monster{panther}{Panther}{Cat, Great||4|4|210'|70'||||3|2 claws\?1 bite|1d4\x 2/1d8|1d4\?1d4\?1d8|Fighter: 2|8|Neutral|1--2|1--6|U|75} +\monster{sabre_tooth_tiger}{Sabre-tooth Tiger}{Cat, Great||6|8|150'|50'||||3|2 claws\?1 bite|1d8\x 2/2d8|1d8\?1d8\?2d8|Fighter: 4|10|Neutral|1--4|1--4|V|650} +\monster{tiger}{Tiger}{Cat, Great||6|6|150'|50'||||3|2 claws\?1 bite|1d6\x 2/2d6|1d6\?1d6\?2d6|Fighter: 3|9|Neutral|1|1--3|U|275} +\monster{cave_locust}{Cave Locust}{||4|2|60'|20'|Fly|180'|60'|1/1/1|1 bite or 1 bump or 1 spit|1d2/1d4/special|1d2 or 1d4 or special|Fighter: 2|5|Neutral|2--20|1--10|Nil|20} +\monster{centaur}{Centaur}{||5|4|180'|60'||||3|2 hooves\?1 weapon|1d6\x 3|1d6\?1d6\?1d6 or by weapon|Fighter: 4|8|Neutral|0|2--20|A|75} +\monster{centipede}{Giant Centipede}{Centipede||9|\half*|60'|20'||||1|1 bite|poison|Poison|Normal Man|7|Neutral|2--8|1--8|Nil|6} +\monster[Chimerae]{chimera}{Chimera}{||4|9**|120'|40'|Fly|180'|60'|5+breath|2 claws\?3 heads\+special|1d3\x 2/2d4\x 2/3d4|1d3\?1d3\?2d4\?2d4\?3d4\+special|Fighter: 9|9|Chaotic|1--2|1--4|F|2300} +\monster{cockatrice}{Cockatrice}{||6|5**|90'|30'|Fly|180'|60'|1|1 beak\+special|1d6+special|1d6\+petrification|Fighter: 5|7|Neutral|1--4|1--8|D|45} +\monster{crab}{Giant Crab}{Crab||2|3|60'|20'||||2|2 pincers|2d6\x 2|2d6\?2d6|Fighter: 2|7|Neutral|1--2|1--6|Nil|35} +\monster{crocodile}{Crocodile}{Crocodile||5|2|90'|30'|Swim|90'|30'|1|1 bite|1d8|1d8|Fighter: 1|7|Neutral|0|1--8|Nil|20} +\monster{large_crocodile}{Large Crocodile}{Crocodile||3|6|90'|30'|Swim|90'|30'|1|1 bite|2d8|2d8|Fighter: 3|7|Neutral|0|1--4|Nil|275} +\monster{giant_crocodile}{Giant Crocodile}{Crocodile||1|15|90'|30'|Swim|90'|30'|1|1 bite|3d8|3d8|Fighter: 8|9|Neutral|0|1--3|Nil|1350} +\monster[Cyclopes]{cyclops}{Cyclops}{||5|13*|90'|30'||||1/1|1 club or hurl rocks|3d10/3d6|3d10 or 3d6|Fighter: 13|9|Chaotic|1|1--4|E\+5,000gp|2300} +\monster{stegosaurus}{Stegosaurus}{Dinosaur||3|11|60'|20'||||1/1|tail or trample|2d8|2d8 or 2d8|Fighter: 6|7|Neutral|0|1--4|Nil|1100} +\monster[Triceratops]{triceratops}{Triceratops}{Dinosaur||2|11|90'|30'||||1/1|gore or trample|3d6|3d6 or 3d6|Fighter: 6|8|Neutral|0|1--4|Nil|1100} +\monster[Tyrannosaurus Rexes]{tyrannosaurus_rex}{Tyrannosaurus Rex}{Dinosaur||3|20|120'|40'||||1|1 bite|6d6|6d6|Fighter: 10|11|Neutral|0|1|V\,(\x 3)|2} +\monster{displacer_beast}{Displacer Beast}{||4|6*|150'|50'||||2|2 tentacles|2d4\x 2|2d4\?2d4|Fighter: 6|8|Neutral|1--4|1--4|D|500} +\monster[Lesser Djinn]{djinni}{Lesser Djinni}{Djinni|*|5|7+1|90'|30'|Fly|240'|80'|1+special|1\+special|2d8/2d6|2d8 (fists) or 2d6 (whirlwind)|Fighter: 14|12|Neutral|1|1|Nil|450} +\monster{doppleganger}{Doppleganger}{||5|4*|90'|30'||||1|1|1d12|1d12|Fighter: 10|10|Chaotic|1--6|1--6|E|125} +\monster{dragon_turtle}{Dragon Turtle}{||\minus 2|30|30'|10'|Swim|90'|30'|3|2 claws\?1 bite|1d8\x 2/10d6|1d8\?1d8\?10d6|Fighter: 15|10|Chaotic|0|1|H|4750} +\monster{black_dragon}{Black Dragon}{Dragon||2|7**|90'|30'|Fly|240'|80'|3+breath|2 claws\?1 bite\+breath|1d4+1\x 2/2d10|1d4+1\?1d4+1\?2d10|Fighter: 7|8|Chaotic|1--4|1--4|H|1250} +\monster{blue_dragon}{Blue Dragon}{Dragon||0|9**|90'|30'|Fly|240'|80'|3+breath|2 claws\?1 bite\+breath|1d6+1\x 2/3d10|1d6+1\?1d6+1\?3d10|Fighter: 9|9|Neutral|1--4|1--4|H|2300} +\monster{gold_dragon}{Gold Dragon}{Dragon||\minus 2|11**|90'|30'|Fly|240'|80'|3+breath|2 claws\?1 bite\+breath|2d4\x 2/6d6|2d4\?2d4\?6d6|Fighter: 11|10|Lawful|1--4|1--4|H|2700} +\monster{green_dragon}{Green Dragon}{Dragon||1|8**|90'|30'|Fly|240'|80'|3+breath|2 claws\?1 bite\+breath|1d6\x 2/3d8|1d6\?1d6\?3d8|Fighter: 8|9|Chaotic|1--4|1--4|H|1750} +\monster{red_dragon}{Red Dragon}{Dragon||\minus 1|10**|90'|30'|Fly|240'|80'|3+breath|2 claws\?1 bite\+breath|1d8\x 2/4d8|1d8\?1d8\?4d8|Fighter: 10|10|Chaotic|1--4|1--4|H|2300} +\monster{white_dragon}{White Dragon}{Dragon||3|6**|90'|30'|Fly|240'|80'|3+breath|2 claws\?1 bite\+breath|1d4\x 2/2d8|1d4\?1d4\?2d8|Fighter: 6|8|Neutral|1--4|1--4|H|725} +\monster{dryad}{Dryad}{||5|2*|120'|40'||||charm|Charm|Nil|Nil|Fighter: 4|6|Neutral|0|1--6|D|25} +\monster[Dwarves]{dwarf}{Dwarf}{||4|1|60'|20'||||1|1 weapon|1d8|1d8 or by weapon|Dwarf: 1|8|Any|1--6|5--40|G|10} +\monster[Lesser Efreet]{efreeti}{Lesser Efreeti}{Efreeti|*|3|10*|90'|30'|Fly|240'|80'|1|flame|2d8|2d8|Fighter: 15|12|Chaotic|1|1|Nil|1600} +\monster{air_elemental}{Air Elemental}{Elemental|*|0|12|Fly 360'|120'||||1|whirlwind|2d8|2d8|Fighter: 12|10|Neutral|1|1|Nil|1100} +\monster{earth_elemental}{Earth Elemental}{Elemental|*|0|12|60'|20'||||1|fists|2d8|2d8|Fighter: 12|10|Neutral|1|1|Nil|1100} +\monster{fire_elemental}{Fire Elemental}{Elemental|*|0|12|120'|40'||||1|flame|2d8|2d8|Fighter: 12|10|Neutral|1|1|Nil|1100} +\monster{water_elemental}{Water Elemental}{Elemental|*|0|12|60'|20'|Swim|180'|60'|1|wave|2d8|2d8|Fighter: 12|10|Neutral|1|1|Nil|1100} +\monster{greater_air_elemental}{Greater Air Elemental}{Elemental|*|\minus 2|16|Fly 360'|120'||||1|whirlwind|3d8|3d8|Fighter: 16|10|Neutral|1|1|Nil|1350} +\monster{greater_earth_elemental}{Greater Earth Elemental}{Elemental|*|\minus 2|16|60'|20'||||1|fists|3d8|3d8|Fighter: 16|10|Neutral|1|1|Nil|1350} +\monster{greater_fire_elemental}{Greater Fire Elemental}{Elemental|*|\minus 2|16|120'|40'||||1|flame|3d8|3d8|Fighter: 16|10|Neutral|1|1|Nil|1350} +\monster{greater_water_elemental}{Greater Water Elemental}{Elemental|*|\minus 2|16|60'|20'|Swim|180'|60'|1|wave|3d8|3d8|Fighter: 16|10|Neutral|1|1|Nil|1350} +\monster{lesser_air_elemental}{Lesser Air Elemental}{Elemental|*|2|8|Fly 360'|120'||||1|whirlwind|1d8|1d8|Fighter: 8|10|Neutral|1|1|Nil|650} +\monster{lesser_earth_elemental}{Lesser Earth Elemental}{Elemental|*|2|8|60'|20'||||1|fists|1d8|1d8|Fighter: 8|10|Neutral|1|1|Nil|650} +\monster{lesser_fire_elemental}{Lesser Fire Elemental}{Elemental|*|2|8|120'|40'||||1|flame|1d8|1d8|Fighter: 8|10|Neutral|1|1|Nil|650} +\monster{lesser_water_elemental}{Lesser Water Elemental}{Elemental|*|2|8|60'|20'|Swim|180'|60'|1|wave|1d8|1d8|Fighter: 8|10|Neutral|1|1|Nil|650} +\monster{elephant}{Elephant}{||5|9|120'|40'||||2/1|2 tusks or 1 trample|2d4\x 2/4d8|2d4\?2d4 or 4d8|Fighter: 5|8|Neutral|0|1--20|Special|900} +\monster[Elves]{elf}{Elf}{||5|1+1*|120'|40'||||1|1 weapon|1d8|1d8 or by weapon|Elf: 1|8|Neutral|1--4|2--24|E|19} +\monster{ferret}{Giant Ferret}{Ferret||5|1+1|150'|50'||||1|1 bite|1d8|1d8|Fighter: 1|8|Neutral|1--8|1--12|Nil|15} +\monster[Giant Catfish]{catfish}{Giant Catfish}{Fish||4|8+3*|Swim 90'|30'||||5|1 bite\?4 feelers|2d8/1d4\x 4|2d8\?1d4\x 4|Fighter: 4|8|Neutral|0|1--2|Nil|1200} +\monster{piranha}{Giant Piranha}{Fish||6|3+3|Swim 150'|50'||||1|1 bite|1d8|1d8|Fighter: 2|7|Neutral|0|2--8|Nil|50} +\monster[Giant Rockfish]{rockfish}{Giant Rockfish}{Fish||7|5+5|Swim 180'|60'||||4|4 spines+poison|1d4\x 4+poison|1d4\x 4\+poison|Fighter: 3|8|Neutral|0|2--8|Nil|225} +\monster[Giant Sturgeon]{sturgeon}{Giant Sturgeon}{Fish||0|10+2*|Swim 180'|60'||||1|1 bite|2d10+swallow|2d10\+swallow whole|Fighter: 5|9|Neutral|0|1|Nil|1600} +\monster{gargoyle}{Gargoyle}{|*|5|4|90'|30'|Fly|150'|50'|4|2 claws\?1 bite\?1 horn|1d3\x 2/1d6/1d4|1d3\?1d3\?1d6\?1d4|Fighter: 8|11|Chaotic|1--6|2--8|C|75} +\monster{gelatinous_cube}{Gelatinous Cube}{||8|4*|60'|20'||||1|1|2d4+special|2d4\+special|Fighter: 2|12|Neutral|1|0|V|125} +\monster{ghoul}{Ghoul}{||6|2*|90'|30'||||3|2 claws\?1 bite|1d3\x 3+special|1d3\?1d3\?1d3\+special|Fighter: 2|9|Chaotic|1--6|2--16|B|25} +\monster{cloud_giant}{Cloud Giant}{Giant||4|12+3|120'|40'||||1|1|6d6|6d6|Fighter: 12|10|Neutral|1--2|1--3|E\+5,000gp|1100} +\monster{fire_giant}{Fire Giant}{Giant||4|11+2|120'|40'||||1|1|5d6|5d6|Fighter: 11|9|Chaotic|1--2|1--3|E\+5,000gp|1100} +\monster{frost_giant}{Frost Giant}{Giant||4|10+1|120'|40'||||1|1|4d6|4d6|Fighter: 10|9|Chaotic|1--2|1--4|E\+5,000gp|900} +\monster{hill_giant}{Hill Giant}{Giant||4|8|120'|40'||||1|1|2d8|2d8|Fighter: 8|8|Chaotic|1--4|2--8|E\+5,000gp|650} +\monster{stone_giant}{Stone Giant}{Giant||4|9|120'|40'||||1|1|3d6|3d6|Fighter: 9|9|Neutral|1--2|1--6|E\+5,000gp|900} +\monster{storm_giant}{Storm Giant}{Giant||2|15|150'|50'||||1+special|1+special|8d6+special|8d6\+special|Fighter: 15|10|Lawful|1|1--3|E\+5,000gp|1350} +\monster{gnoll}{Gnoll}{||5|2|90'|30'||||1|1 weapon|2d4|2d4 or by weapon\+1|Fighter: 2|8|Chaotic|1--6|3--18|D|20} +\monster{gnome}{Gnome}{||5|1|60'|20'||||1|1 weapon|1d6|1d6 or by weapon|Dwarf: 1|8 (10)|Any|1--8|5--40|C|10} +\monster{goblin}{Goblin}{||6|1\minus 1|60'|20'||||1|1 weapon|1d6|1d6 or by weapon|Normal Man|7 (9)|Chaotic|2--8|6--60|R (C)|5} +\monster{amber_golem}{Amber Golem}{Golem|*|6|10**|180'|60'||||3|2 claws\?1 bite|2d6\x 2/2d10|2d6\?2d6\?2d10|Fighter: 5|12|Neutral|1|1|Nil|2300} +\monster{bone_golem}{Bone Golem}{Golem|*|2|8|120'|40'||||4|4 weapons|1d8\x 4|1d8\x 4 or by weapons|Fighter: 4|12|Neutral|1|1|Nil|650} +\monster{bronze_golem}{Bronze Golem}{Golem|*|0|20**|240'|80'||||1+special|1 fist+special|3d10+special|3d10\+special|Fighter: 10|12|Neutral|1|1|Nil|4300} +\monster{wood_golem}{Wood Golem}{Golem|*|7|2+2|120'|40'||||1|1 fist|1d8|1d8|Fighter: 1|12|Neutral|1|1|Nil|25} +\monster{gorgon}{Gorgon}{||2|8*|120'|40'||||1+breath|1 gore or breath|2d6/special|2d6 or petrification|Fighter: 8|8|Chaotic|1--2|1--4|E|1200} +\monster{gray_ooze}{Gray Ooze}{||8|3*|10'|3'||||1|1|2d8|2d8|Fighter: 2|12|Neutral|1|1|Nil|50} +\monster{green_slime}{Green Slime}{|*|---|2*|3'|1'||||1|1|special|Special|Fighter: 1|12|Neutral|1|0|Nil|25} +\monster{grey_ooze}{Grey Ooze}{||8|3*|10'|3'||||1|1|2d8|2d8|Fighter: 2|12|Neutral|1|1|Nil|50} +\monster{griffon}{Griffon}{||5|7|120'|40'|Fly|360'|120'|3|2 claws\?1 bite|1d4\x 2/2d8|1d4\?1d4\?2d8|Fighter: 4|8|Neutral|0|2--16|E|450} +\monster{halfling}{Halfling}{||7|1\minus 1|90'|30'||||1|1 weapon|1d6|1d6 or by weapon|Halfling: 1|7|Lawful|3--18|5--40|V (B)|5} +\monster{harpy}{Harpy}{||7|3*|60'|20'|Fly|150'|50'|3+charm|2 claws\?1 weapon\+charm|1d4\x 2/1d6|1d4\?1d4\?1d6|Fighter: 3|7|Chaotic|1--6|2--8|C|50} +\monster{hawk_giant}{Giant Hawk}{Hawk||6|3+3|450'|150'||||1|1|1d6|1d6|Fighter: 2|8|Neutral|0|1--3|Nil|50} +\monster{hawk}{Hawk}{Hawk||8|\half|480'|160'||||1|1|1d2|1d2|Normal Man|7|Neutral|0|1--6|Nil|5} +\monster{hellhound}{Hellhound}{Hellhound||4|3*|120'|40'||||1+breath|bite or breath|1d6/3d6|1d6 or 3d6|Fighter: 3|9|Chaotic|2--8|2--8|C|50} +\monster{hellhound_3}{Minor Hellhound}{Hellhound||4|3*|120'|40'||||1+breath|bite or breath|1d6/3d6|1d6 or 3d6|Fighter: 3|9|Chaotic|2--8|2--8|C|50} +\monster{hellhound_4}{Lesser Hellhound}{Hellhound||4|4*|120'|40'||||1+breath|bite or breath|1d6/4d6|1d6 or 4d6|Fighter: 4|9|Chaotic|2--8|2--8|C|125} +\monster{hellhound_5}{Hellhound}{Hellhound||4|5*|120'|40'||||1+breath|bite or breath|1d6/5d6|1d6 or 5d6|Fighter: 5|9|Chaotic|2--8|2--8|C|300} +\monster{hellhound_6}{Greater Hellhound}{Hellhound||4|6*|120'|40'||||1+breath|bite or breath|1d6/6d6|1d6 or 6d6|Fighter: 6|9|Chaotic|2--8|2--8|C|500} +\monster{hellhound_7}{Monstrous Hellhound}{Hellhound||4|7*|120'|40'||||1+breath|bite or breath|1d6/7d6|1d6 or 7d6|Fighter: 7|9|Chaotic|2--8|2--8|C|850} +\monster{antelope}{Antelope}{Herd Animal||7|1|240'|80'||||1|1 butt|1d4|1d4|Fighter: 1|5|Neutral|0|3--30|Nil|10} +\monster{goat}{Goat}{Herd Animal||7|1|240'|80'||||1|1 butt|1d6|1d6|Fighter: 1|5|Neutral|0|3--30|Nil|10} +\monster[Deer]{deer}{Deer}{Herd Animal||7|2|240'|80'||||1|1 butt|1d4|1d4|Fighter: 2|5|Neutral|0|3--30|Nil|20} +\monster[Caribou]{caribou}{Caribou}{Herd Animal||7|3|240'|80'||||1|1 butt|1d6|1d6|Fighter: 2|5|Neutral|0|3--30|Nil|35} +\monster[Oxen]{ox}{Ox}{Herd Animal||7|3|240'|80'||||1|1 butt|1d8|1d8|Fighter: 2|5|Neutral|0|3--30|Nil|35} +\monster[Elk]{elk}{Elk}{Herd Animal||7|4|240'|80'||||1|1 butt|1d8|1d8|Fighter: 2|5|Neutral|0|3--30|Nil|75} +\monster[Moose]{moose}{Moose}{Herd Animal||7|4|240'|80'||||1|1 butt|1d8|1d8|Fighter: 2|5|Neutral|0|3--30|Nil|75} +\monster{hippogriff}{Hippogriff}{||5|3+1|180'|60'|Fly|360'|120'|3|2 claws\?1 bite|1d6\x 2/1d10|1d6\?1d6\?1d10|Fighter: 2|8|Neutral|0|2--16|Nil|50} +\monster{hobgoblin}{Hobgoblin}{||6|1+1|90'|30'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 1|8 (10)|Chaotic|1--6|4--24|D|15} +\monster{draft_horse}{Draft Horse}{Horse||7|3|90'|30'||||0|Nil|Nil|Nil|Fighter: 2|6|Neutral|0|domestic only|Nil|35} +\monster{riding_horse}{Riding Horse}{Horse||7|2|240'|80'||||2|2 hooves|1d4\x 2|1d4\?1d4|Fighter: 1|7|Neutral|0|10--100|Nil|20} +\monster{war_horse}{War Horse}{Horse||7|3|120'|40'||||2|2 hooves|1d6\x 2|1d6\?1d6|Fighter: 2|9|Neutral|0|domestic only|Nil|35} +\monster[Five-Headed Hydrae]{hydra}{Five-Headed Hydra}{Hydra||5|5|120'|40'||||5|5 heads|1d10\x 5|1d10 each|Fighter: 5|9|Neutral|1|1|B|175} +\monster[Five-Headed Hydrae]{hydra_5}{Five-Headed Hydra}{Hydra||5|5|120'|40'||||5|5 heads|1d10\x 5|1d10 each|Fighter: 5|9|Neutral|1|1|B|175} +\monster[Six-Headed Hydrae]{hydra_6}{Six-Headed Hydra}{Hydra||5|6|120'|40'||||6|6 heads|1d10\x 6|1d10 each|Fighter: 6|9|Neutral|1|1|B|275} +\monster[Seven-Headed Hydrae]{hydra_7}{Seven-Headed Hydra}{Hydra||5|7|120'|40'||||7|7 heads|1d10\x 7|1d10 each|Fighter: 7|9|Neutral|1|1|B|450} +\monster[Eight-Headed Hydrae]{hydra_8}{Eight-Headed Hydra}{Hydra||5|8|120'|40'||||8|8 heads|1d10\x 8|1d10 each|Fighter: 8|9|Neutral|1|1|B|650} +\monster[Nine-Headed Hydrae]{hydra_9}{Nine-Headed Hydra}{Hydra||5|9|120'|40'||||9|9 heads|1d10\x 9|1d10 each|Fighter: 9|9|Neutral|1|1|B|900} +\monster[Ten-Headed Hydrae]{hydra_10}{Ten-Headed Hydra}{Hydra||5|10|120'|40'||||10|10 heads|1d10\x 10|1d10 each|Fighter: 10|9|Neutral|1|1|B|900} +\monster[Eleven-Headed Hydrae]{hydra_11}{Eleven-Headed Hydra}{Hydra||5|11|120'|40'||||11|11 heads|1d10\x 11|1d10 each|Fighter: 11|9|Neutral|1|1|B|1100} +\monster[Twelve-Headed Hydrae]{hydra_12}{Twelve-Headed Hydra}{Hydra||5|12|120'|40'||||12|12 heads|1d10\x 12|1d10 each|Fighter: 12|9|Neutral|1|1|B|1100} +\monster{insect_swarm}{Insect Swarm}{Insect Swarm||7|2|30'|10'|Fly|60'|20'|swarm|1 swarm|2|2 points|Normal Man|11|Neutral|1|1--3|Nil|20} +\monster{insect_swarm_2}{Small Insect Swarm}{Insect Swarm||7|2|30'|10'|Fly|60'|20'|swarm|1 swarm|2|2 points|Normal Man|11|Neutral|1|1--3|Nil|20} +\monster{insect_swarm_3}{Insect Swarm}{Insect Swarm||7|3|30'|10'|Fly|60'|20'|swarm|1 swarm|2|2 points|Normal Man|11|Neutral|1|1--3|Nil|35} +\monster{insect_swarm_4}{Large Insect Swarm}{Insect Swarm||7|4|30'|10'|Fly|60'|20'|swarm|1 swarm|2|2 points|Normal Man|11|Neutral|1|1--3|Nil|75} +\monster{invisible_stalker}{Invisible Stalker}{||3|8*|120'|40'||||1|1|4d4|4d4|Fighter: 8|12|Neutral|1|1|Nil|1200} +\monster{kobold}{Kobold}{||7|\half|60'|20'||||1|1 weapon|1d4|1d4 or by weapon\minus 1|Normal Man|6 (8)|Chaotic|4--16|6--60|P (J)|5} +\monster[Giant Leeches]{leech}{Giant Leech}{Leech||7|6|90'|30'||||1|blood suck|1d6+special|1d6\+blood drain|Fighter: 3|10|Neutral|0|1--4|Nil|275} +\monster{living_crystal_statue}{Crystal Living Statue}{Living Statue||4|3|90'|30'||||2|2 fists|1d6\x 2|1d6\?1d6|Fighter: 3|11|Lawful|1--6|1--6|Nil|35} +\monster{living_iron_statue}{Iron Living Statue}{Living Statue||2|4|30'|10'||||2|2 fists|1d8\x 2+special|1d8\?1d8\+special|Fighter: 4|11|Neutral|1--4|1--4|Nil|75} +\monster{living_rock_statue}{Rock Living Statue}{Living Statue||4|5**|60'|20'||||2|2 magma|2d6\x 2|2d6\?2d6|Fighter: 5|11|Chaotic|1--3|1--3|Nil|45} +\monster[Lizard Men]{lizard_man}{Lizard Man}{||5|2+1|60'|20'|Swim|120'|40'|1|1 weapon|1d6+1|1d6+1 or by weapon\+1|Fighter: 2|12|Neutral|2--8|6--36|D|25} +\monster{draco}{Giant Draco}{Lizard||5|4+2|120'|40'|Fly|210'|70'|1|1 bite|1d10|1d10|Fighter: 3|7|Neutral|1--4|1--8|U|125} +\monster{gecko}{Giant Gecko}{Lizard||5|3+1|120'|40'||||1|1 bite|1d8|1d8|Fighter: 2|7|Neutral|1--6|1--10|U|50} +\monster{horned_chameleon}{Giant Horned Chameleon}{Lizard||2|5*|120'|40'||||2|1 bite\?1 horn|2d4/1d6|2d4\?1d6|Fighter: 3|7|Neutral|1--3|1--6|U|35} +\monster{tuatara}{Giant Tuatara}{Lizard||4|6|90'|30'||||3|2 claws\?1 bite|1d4\x 2/2d6|1d4\?1d4\?2d6|Fighter: 4|6|Neutral|1--2|1--4|V|275} +\monster[Devil Swine]{devil_swine}{Devil Swine}{Lycanthrope|*|3\,(9)|9*|180'|60'|as human|120'|40'|1/1+charm|1 gore or weapon\+charm|2d6/1d8|2d6 or by weapon|Fighter: 9|10|Chaotic|1--3|1--4|C|1600} +\monster{werebear}{Werebear}{Lycanthrope|*|2\,(8)|6*|120'|40'||||3|2 claws\?1 bite|2d4\x 2/2d8|2d4\?2d4\?2d8|Fighter: 6|10|Neutral|1--4|1--4|C|500} +\monster{wereboar}{Wereboar}{Lycanthrope|*|4\,(9)|4+1*|150'|50'||||1|1 tusk-bite|2d6|2d6|Fighter: 4|9|Neutral|1--4|2--8|C|200} +\monster{wererat}{Wererat}{Lycanthrope|*|7\,(9)|3*|120'|40'||||1/1|1 bite or weapon|1d4/1d6|1d4 or by weapon|Fighter: 3|8|Chaotic|1--8|2--16|C|50} +\monster{weretiger}{Weretiger}{Lycanthrope|*|3\,(9)|5*|150'|50'||||3|2 claws\?1 bite|1d6\x 2/2d6|1d6\?1d6\?2d6|Fighter: 5|9|Neutral|1--4|1--4|C|35} +\monster[Werewolves]{werewolf}{Werewolf}{Lycanthrope|*|5\,(9)|4*|180'|60'||||1|1 bite|2d4|2d4|Fighter: 4|8|Chaotic|1--6|2--12|C|125} +\monster{manticore}{Manticore}{||4|6+1|120'|40'|Fly|180'|60'|3/1|2 claws\?1 bite or spikes|1d4\x 2/2d4/special|1d4\?1d4\?2d4 or special|Fighter: 6|9|Chaotic|1--2|1--4|D|350} +\monster{mastodon}{Mastodon}{||3|15|120'|40'||||2/1|2 tusks or 1 trample|2d6\x 2/4d8|2d6\?2d6 or 4d8|Fighter: 8|8|Neutral|0|2--16|Special|1350} +\monster[Medusae]{medusa}{Medusa}{||8|4**|90'|30'||||1+special|1 snakebite\+special|1d6+poison|1d6\+poison|Fighter: 4|8|Chaotic|1--3|1--4|F|175} +\monster{acolyte}{Acolyte}{Men||2|1|60'|20'||||1|1 mace|1d6|1d6|Cleric: 1|7|Any|1--8|1--20|U|10} +\monster{bandit}{Bandit}{Men||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Thief: 1|8|Neutral|1--8|3--30|U (A)|10} +\monster{berserker}{Berserker}{Men||7|1+1*|120'|40'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 1|12|Neutral|1--6|3--30|P (B)|19} +\monster{brigand}{Brigand}{Men||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|8|Chaotic|0|10--40|A|10} +\monster{brigand_chain}{Brigand}{Men||4|1|90'|30'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|8|Chaotic|0|10--40|A|10} +\monster{buccaneer}{Buccaneer}{Men||7|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|6|Neutral|0|special|A|10} +\monster{buccaneer_chain}{Buccaneer}{Men||5|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|6|Neutral|0|special|A|10} +\monster[Dervishes]{dervish}{Dervish}{Men||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|10|Lawful|0|20--70|A|10} +\monster[Dervishes]{dervish_chain}{Dervish}{Men||4|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|10|Lawful|0|20--70|A|10} +\monster{medium}{Medium}{Men||9|1**|120'|40'||||1/spell|1 dagger or spell|1d4|1d4 or spell|Magic-User: 1|7|Any|1--4|1--12|V|16} +\monster{merchant}{Merchant}{Men||5|1|90'|30'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|6 or variable|Neutral|0|1--20|A|10} +\monster{noble}{Noble}{Men||2|3|60'|20'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 3|8|Any|2--12|2--12|V\,(\x 3)|35} +\monster{nomad}{Nomad}{Men||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|8|Neutral|0|10--40|A|10} +\monster{nomad_chain}{Nomad}{Men||4|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|8|Neutral|0|10--40|A|10} +\monster{normal_human}{Normal Human}{Men||9|\half|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Normal Man|6|Any|1--4|1--20|U|5} +\monster{pirate}{Pirate}{Men||7|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|7|Chaotic|0|special|A|10} +\monster{pirate_chain}{Pirate}{Men||5|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|7|Chaotic|0|special|A|10} +\monster{trader}{Trader}{Men||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|7|Any|1--8|3--18|U, V|10} +\monster{veteran}{Veteran}{Men||2|1|60'|20'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 1|9 or variable|Any|2--8|2--12|V|10} +\monster{veteran_1}{Veteran}{Men||2|1|60'|20'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 1|9 or variable|Any|2--8|2--12|V|10} +\monster{veteran_2}{Veteran}{Men||2|2|60'|20'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 2|9 or variable|Any|2--8|2--12|V|20} +\monster{veteran_3}{Veteran}{Men||2|3|60'|20'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 3|9 or variable|Any|2--8|2--12|V|35} +\monster[Mermen]{merman}{Merman}{||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|8|Neutral|0|1--20|A|10} +\monster[Mermen]{merman_1}{Merman}{||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|8|Neutral|0|1--20|A|10} +\monster[Mermen]{merman_2}{Merman}{||6|2|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 2|8|Neutral|0|1--20|A|20} +\monster[Mermen]{merman_3}{Merman}{||6|3|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 3|8|Neutral|0|1--20|A|35} +\monster[Mermen]{merman_4}{Merman}{||6|4|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 4|8|Neutral|0|1--20|A|75} +\monster{minotaur}{Minotaur}{||6|6|120'|40'||||2/1|1 gore\?1 bite or weapon|1d6\x 2/1d6+2|1d6\?1d6 or by weapon\+2|Fighter: 6|12|Chaotic|1--6|1--8|C|275} +\monster{mule}{Mule}{||7|2|120'|40'||||1/1|1 kick or 1 bite|1d4/1d3|1d4 or 1d3|Normal Man|8|Neutral|1--8|2--12|Nil|20} +\monster{mummy}{Mummy}{|*|3|5+1*|60'|20'||||1|1 touch|1d12+disease|1d12\+disease|Fighter: 5|12|Chaotic|1--4|1--12|D|400} +\monster{neanderthal}{Neanderthal}{||8|2|120'|40'||||1|1 weapon|2d4|2d4 or by weapon\+1|Fighter: 2|7|Lawful|1--10|10--40|C|20} +\monster{nixie}{Nixie}{||7|1|120'|40'||||1|1|1d4|1d4|Elf: 1|6|Neutral|0|2--40|B|10} +\monster{ochre_jelly}{Ochre Jelly}{|*|8|5*|30'|10'||||1|1|2d6|2d6|Fighter: 3|12|Neutral|1|0|Nil|35} +\monster[Giant Octopodes]{octopus}{Giant Octopus}{Octopus||7|8|90'|30'||||9|8 tentacles\?1 bite|1d3\x 8/1d6|1d3\x 8\?1d6|Fighter: 4|7|Neutral|0|1--2|Nil|650} +\monster{ogre}{Ogre}{||5|4+1|90'|30'||||1|1 club|1d10|1d10|Fighter: 4|10|Chaotic|1--6|2--12|C\+1,000gp|125} +\monster{orc}{Orc}{||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|8 (6)|Chaotic|2--8|10--60|D|10} +\monster{owl_bear}{Owl Bear}{||5|5|120'|40'||||3|2 claws\?1 bite|1d8\x 3|1d8\?1d8\?1d8|Fighter: 3|9|Neutral|1--4|1--4|C|175} +\monster[Pegasi]{pegasus}{Pegasus}{||6|2+2|240'|80'|Fly|480'|160'|2|2 hooves|1d6\x 2|1d6\?1d6|Fighter: 2|8|Lawful|0|1--12|Nil|25} +\monster{pixie}{Pixie}{||3|1*|90'|30'|Fly|180'|60'|1|1 dagger|1d4|1d4|Elf: 1|7|Neutral|2--8|10--40|R, S|13} +\monster{pteranodon}{Pteranodon}{Pterodactyl||6|5|Fly 240'|120'||||1|1|1d12|1d12|Fighter: 3|8|Neutral|0|1--4|V|175} +\monster{pterodactyl}{Pterodactyl}{Pterodactyl||7|1|Fly 180'|60'||||1|1|1d3|1d3|Fighter: 1|7|Neutral|0|2--8|Nil|10} +\monster{purple_worm}{Purple Worm}{||6|15*|60'|20'||||2|1 bite\?1 sting|2d8/1d8+poison|2d8\?1d8\+poison|Fighter: 8|10|Neutral|1--2|1--4|D|2300} +\monster{giant_rat}{Giant Rat}{Rat||7|\half|120'|40'|Swim|60'|20'|1|1 bite|1d3+disease|1d3\+disease|Fighter: 1|8|Neutral|3--18|3--30|C|5} +\monster{rat}{Rat}{Rat||9|1 hp|60'|20'|Swim|30'|10'|1/pack|1 bite per pack|1d6+disease|1d6\+disease|Normal Man|5|Neutral|5--50|2--20|L|5} +\monster[Rhagodessae]{rhagodessa}{Rhagodessa}{||5|4+2|150'|50'||||2|1 leg\?1 bite|0/2d8|0\?2d8|Fighter: 2|9|Neutral|1--4|1--6|U|125} +\monster{rhinoceros}{Rhinoceros}{Rhinoceros||5|6|120'|40'||||1|butt or trample|2d4/2d8|2d4 or 2d8|Fighter: 3|6|Neutral|0|1--12|Nil|275} +\monster{wooly_rhinoceros}{Woolly Rhinoceros}{Rhinoceros||4|8|120'|40'||||1|butt or trample|2d6/2d12|2d6 or 2d12|Fighter: 4|6|Neutral|0|1--8|Nil|650} +\monster{robber_fly}{Robber Fly}{||6|2|90'|30'|Fly|180'|60'|1|1 bite|1d8|1d8|Fighter: 1|8|Neutral|1--6|2--12|U|20} +\monster{rock_baboon}{Rock Baboon}{||6|2|120'|40'||||2|1 club\?1 bite|1d6/1d3|1d6\?1d3|Fighter: 2|8|Neutral|2--12|5--30|U|20} +\monster{small_roc}{Small Roc}{Roc||4|6|60'|20'|Fly|480'|160'|3|2 claws\?1 bite|1d4+1\x 2/2d6|1d4+1\?1d4+1\?2d6|Fighter: 6|8|Lawful|0|1--12|I|275} +\monster{large_roc}{Large Roc}{Roc||2|12|60'|20'|Fly|480'|160'|3|2 claws\?1 bite|1d8\x 2/2d10|1d8\?1d8\?2d10|Fighter: 12|9|Lawful|0|1--8|I|1100} +\monster{giant_roc}{Giant Roc}{Roc||0|36|60'|20'|Fly|480'|160'|3|2 claws\?1 bite|3d6\x 2/8d6|3d6\?3d6\?8d6|Fighter: 15|10|Lawful|0|1|I|6250} +\monster{rust_monster}{Rust Monster}{|*|2|5|120'|40'||||1|1|Special|Special|Fighter: 3|7|Neutral|1--4|1--4|Nil|175} +\monster{flame_salamander}{Flame Salamander}{Salamander|*|2|8*|120'|40'||||3|2 claws\?1 bite|1d4\x 2/1d8|1d4\?1d4\?1d8|Fighter: 8|8|Neutral|2--5|2--8|F|1200} +\monster{frost_salamander}{Frost Salamander}{Salamander|*|3|12*|120'|40'||||5|4 claws\?1 bite|1d6\x 4/2d6|1d6\x 4\?2d6|Fighter: 12|9|Chaotic|1--3|1--3|E|1900} +\monster{scorpion}{Giant Scorpion}{Scorpion||2|4*|150'|50'||||3|2 claws\?1 sting|1d10\x 2/1d4+poison|1d10\?1d10\?1d4\+poison|Fighter: 2|11|Chaotic|1--6|1--6|V|125} +\monster{sea_dragon}{Sea Dragon}{||1|8**|Swim 180'|60'|Fly|180'|60'|1/1|1 bite or 1 spit|3d8/poison|3d8 or poison|Fighter: 8|9|Neutral|0|1--4|H|1750} +\monster{sea_dragon_5}{Sea Dragon}{||1|5**|Swim 180'|60'|Fly|180'|60'|1/1|1 bite or 1 spit|3d8/poison|3d8 or poison|Fighter: 5|9|Neutral|0|1--4|H|425} +\monster{sea_dragon_6}{Sea Dragon}{||1|6**|Swim 180'|60'|Fly|180'|60'|1/1|1 bite or 1 spit|3d8/poison|3d8 or poison|Fighter: 6|9|Neutral|0|1--4|H|775} +\monster{sea_dragon_7}{Sea Dragon}{||1|7**|Swim 180'|60'|Fly|180'|60'|1/1|1 bite or 1 spit|3d8/poison|3d8 or poison|Fighter: 7|9|Neutral|0|1--4|H|1250} +\monster{sea_dragon_8}{Sea Dragon}{||1|8**|Swim 180'|60'|Fly|180'|60'|1/1|1 bite or 1 spit|3d8/poison|3d8 or poison|Fighter: 8|9|Neutral|0|1--4|H|1750} +\monster{sea_dragon_9}{Sea Dragon}{||1|9**|Swim 180'|60'|Fly|180'|60'|1/1|1 bite or 1 spit|3d8/poison|3d8 or poison|Fighter: 9|9|Neutral|0|1--4|H|2300} +\monster{sea_dragon_10}{Sea Dragon}{||1|10**|Swim 180'|60'|Fly|180'|60'|1/1|1 bite or 1 spit|3d8/poison|3d8 or poison|Fighter: 10|9|Neutral|0|1--4|H|2300} +\monster{sea_dragon_11}{Sea Dragon}{||1|11**|Swim 180'|60'|Fly|180'|60'|1/1|1 bite or 1 spit|3d8/poison|3d8 or poison|Fighter: 11|9|Neutral|0|1--4|H|2700} +\monster{sea_serpent}{Lesser Sea Serpent}{Sea Serpent||5|6|150'|50'||||1/1|1 bite or squeeze|2d6|2d6|Fighter: 3|8|Neutral|0|2--12|Nil|275} +\monster{shadow}{Shadow}{|*|7|2+2*|90'|30'||||1|1|1d4+special|1d4\+special|Fighter: 2|12|Chaotic|1--8|1--12|F|35} +\monster{bull_shark}{Bull Shark}{Shark||4|2|180'|60'||||1|1 bite|2d4|2d4|Fighter: 1|7|Neutral|0|3--18|Nil|20} +\monster{great_white_shark}{Great White Shark}{Shark||4|8|180'|60'||||1|1 bite|2d10|2d10|Fighter: 4|7|Neutral|0|1--4|Nil|650} +\monster{mako_shark}{Mako Shark}{Shark||4|4|180'|60'||||1|1 bite|2d6|2d6|Fighter: 2|7|Neutral|0|2--12|Nil|75} +\monster{shrew}{Giant Shrew}{Shrew||4|1|180'|60'||||2|2 bites|1d6\x 2|1d6\?1d6|Fighter: 1|10|Neutral|1--4|1--8|Nil|10} +\monster{shrieker}{Shrieker}{||7|3|9'|3'||||shriek|Shriek|Nil|Nil|Fighter: 1|12|Neutral|1--8|0|Nil|35} +\monster{skeleton}{Skeleton}{||7|1|60'|20'||||1|1|1d6|1d6 or by weapon|Fighter: 1|12|Chaotic|3--12|3--30|Nil|10} +\monster{rattlesnake}{Giant Rattlesnake}{Snake||5|4*|120'|40'||||2|2 bites|1d4\x 2+poison|1d4\?1d4\+poison|Fighter: 2|8|Neutral|1--4|1--4|U|125} +\monster{pit_viper}{Pit Viper}{Snake||6|2*|90'|30'||||1|1 bite|1d4+poison|1d4\+poison|Fighter: 1|7|Neutral|1--8|1--8|Nil|25} +\monster{rock_python}{Rock Python}{Snake||6|5*|90'|30'||||2|1 bite\?1 squeeze|1d4/2d4|1d4\?2d4|Fighter: 3|8|Neutral|1--3|1--3|U|35} +\monster{sea_snake}{Sea Snake}{Snake||6|3*|90'|30'||||1|1 bite|1+poison|1\+poison|Fighter: 2|7|Neutral|1--8|1--8|Nil|50} +\monster{spitting_cobra}{Spitting Cobra}{Snake||7|1*|90'|30'||||1/1|1 bite or spit|1d3+poison/special|1d3\+poison\?blindness|Fighter: 1|7|Neutral|1--6|1--6|Nil|13} +\monster{spectre}{Spectre}{|*|2|6**|150'|50'|Fly|300'|100'|1|1 touch|1d8+energy drain|1d8\+drain 2 levels|Fighter: 6|11|Chaotic|1--4|1--8|E|725} +\monster{black_widow}{Giant Black Widow Spider}{Spider||6|3*|60'|20'|Web|120'|40'|1|1 bite|2d6+poison|2d6\+poison|Fighter: 2|8|Neutral|1--3|1--3|U|50} +\monster{crab_spider}{Giant Crab Spider}{Spider||7|2*|120'|40'||||1|1 bite|1d8+poison|1d8\+poison|Fighter: 1|7|Neutral|1--4|1--4|U|25} +\monster{tarantella}{Giant Tarantella}{Spider||5|4*|120'|40'||||1|1 bite|1d8+poison|1d8\+poison|Fighter: 2|8|Neutral|1--3|1--3|U|125} +\monster{sprite}{Sprite}{||5|\half*|60'|20'|Fly|180'|60'|spell|1 spell|Special|Special|Elf: 1|7|Neutral|3--18|5--40|S|6} +\monster{squid}{Giant Squid}{Squid||7|6|120'|40'||||9|8 tentacles\?1 beak|1d4\x 8/1d10|1d4\x 8\?1d10|Fighter: 3|7 (9)|Neutral|0|1--4|V|275} +\monster{stirge}{Stirge}{||7|1*|30'|10'|Fly|180'|60'|1|1|1d3+special|1d3\+blood drain|Fighter: 2|9|Neutral|1--10|3--36|L|13} +\monster{swamp_termite}{Swamp Termite}{Termite||4|1+1|90'|30'||||1/1/1|1 bite or spray or ink|1d3/special|1d3 or stun or blindness|Fighter: 1|10|Neutral|0|1--4|Nil|15} +\monster{freshwater_termite}{Freshwater Termite}{Termite||6|2+1|120'|40'||||1/1/1|1 bite or spray or ink|1d4/special|1d4 or stun or blindness|Fighter: 2|8|Neutral|0|1--3|Nil|25} +\monster{sea_termite}{Sea Termite}{Termite||5|4|180'|60'||||1/1/1|1 bite or spray or ink|1d6/special|1d6 or stun or blindness|Fighter: 3|11|Neutral|0|2--7|Nil|75} +\monster{thoul}{Thoul}{||6|3**|120'|40'||||2/1|2 claws or weapon|1d3\x 2/1d8|1d3\?1d3 or by weapon|Fighter: 3|10|Chaotic|1--6|1--10|C|65} +\monster{titanothere}{Titanothere}{||5|12|120'|40'||||1/1|butt or trample|2d6/3d8|2d6\?3d8|Fighter: 6|7|Neutral|0|1--6|Nil|1100} +\monster{toad}{Giant Toad}{Toad||7|2+2|90'|30'||||1|1 bite|1d4+1|1d4+1|Fighter: 1|6|Neutral|1--4|1--4|Nil|25} +\monster{treant}{Treant}{||2|8|60'|20'||||2|2 blows|2d6\x 2|2d6\?2d6|Fighter: 8|9|Lawful|0|1--8|C|650} +\monster{troglodyte}{Troglodyte}{||5|2*|120'|40'||||3|2 claws\?1 bite|1d4\x 3|1d4\?1d4\?1d4|Fighter: 2|9|Chaotic|1--8|5--40|A|25} +\monster{troll}{Troll}{||4|6+3|120'|40'||||3|2 claws\?1 bite|1d6\x 2/1d10|1d6\?1d6\?1d10|Fighter: 6|10 (8)|Chaotic|1--8|1--8|D|350} +\monster{unicorn}{Unicorn}{||2|4*|240'|80'||||3|2 hooves\?1 horn|1d8\x 3|1d8\?1d8\?1d8|Fighter: 8|7|Lawful|1--6|1--8|Nil|125} +\monster{vampire}{Vampire}{|*|2|7**|120'|40'|Fly|180'|60'|1|1 touch|1d10+energy drain|1d10\+drain 2 levels|Fighter: 7|11|Chaotic|1--4|1--6|F|1250} +\monster{vampire_7}{Vampire}{|*|2|7**|120'|40'|Fly|180'|60'|1|1 touch|1d10+energy drain|1d10\+drain 2 levels|Fighter: 7|11|Chaotic|1--4|1--6|F|1250} +\monster{vampire_8}{Vampire}{|*|2|8**|120'|40'|Fly|180'|60'|1|1 touch|1d10+energy drain|1d10\+drain 2 levels|Fighter: 8|11|Chaotic|1--4|1--6|F|1750} +\monster{vampire_9}{Vampire}{|*|2|9**|120'|40'|Fly|180'|60'|1|1 touch|1d10+energy drain|1d10\+drain 2 levels|Fighter: 9|11|Chaotic|1--4|1--6|F|2300} +\monster{weasel}{Giant Weasel}{Weasel||7|4+4|150'|50'||||1|1 bite|2d4+special|2d4\+special|Fighter: 3|8|Neutral|1--4|1--6|V|125} +\monster{killer_whale}{Killer Whale}{Whale||6|6|240'|80'||||1|1 bite|1d20|1d20|Fighter: 3|10|Neutral|0|1--6|V|275} +\monster{narwhal}{Narwhal}{Whale||7|12|180'|60'||||2|1 horn\?1 bite|2d6/1d8|2d6\?1d8|Fighter: 12|8|Lawful|0|1--4|Special|1100} +\monster{sperm_whale}{Sperm Whale}{Whale||6|36|180'|60'||||1|1 bite|3d20|3d20|Fighter: 15|7|Neutral|0|1--3|V|6250} +\monster{wight}{Wight}{|*|5|3*|90'|30'||||1|1|energy drain|Drain 1 level|Fighter: 3|12|Chaotic|1--6|1--8|B|50} +\monster[Dire Wolves]{dire_wolf}{Dire Wolf}{Wolf||6|4+1|150'|50'||||1|1 bite|2d4|2d4|Fighter: 2|8|Neutral|1--4|2--8|Nil|125} +\monster[Wolves]{wolf}{Wolf}{Wolf||7|2+2|180'|60'||||1|1 bite|1d6|1d6|Fighter: 1|8 (6)|Neutral|2--12|3--18|Nil|25} +\monster{wraith}{Wraith}{|*|3|4**|120'|40'|Fly|240'|80'|1|1 touch|1d6+energy drain|1d6\+drain 1 level|Fighter: 4|12|Chaotic|1--4|1--6|E|175} +\monster{wyvern}{Wyvern}{||3|7*|90'|30'|Fly|240'|80'|2|1 bite\?1 sting|2d8/1d6+poison|2d8\?1d6\+poison|Fighter: 4|9|Chaotic|1--2|1--6|E|850} +\monster[Patches of Yellow Mold]{yellow_mold}{Yellow Mold}{|*|---|2|Nil|Nil||||1|Spores|1d6+special|1d6\+special|Fighter: 2|---|Neutral|1--8|1--4|Nil|20} +\monster[Patches of Yellow Mould]{yellow_mould}{Yellow Mould}{|*|---|2|Nil|Nil||||1|Spores|1d6+special|1d6\+special|Fighter: 2|---|Neutral|1--8|1--4|Nil|20} +\monster{zombie}{Zombie}{||8|2|120'|40'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 1|12|Chaotic|2--8|4--24|Nil|20} +\monster[Archer Bushes]{archer_bush_orange}{Archer Bush}{||9|1|Nil|Nil||||1|1 thorn spray|1d4|1d4|Fighter: 1|12|Neutral|0|1--100|Nil|10} +\monster[Archer Bushes]{archer_bush}{Archer Bush}{||7|2|3'|1'||||1|1 thorn spray|1d4|1d4|Fighter: 1|12|Neutral|0|1--20|V|20} +\monster{baric}{Baric}{||7|5|120'|40'||||3|2 claws\?1 bite|1d4\x 2/1d10|1d4\?1d4\?1d10|Fighter: 5|8|Neutral|1--8|1--8|Nil|175} +\monster{bubble}{Bubble}{||9|\half*|90'|30'||||1|1|1d4+special|1d4\+paralysis|Fighter: 1|9|Neutral|0|3--18|J|6} +\monster{decapus_orange}{Decapus}{||5|3*|12'|4'||||9|9 tentacles|1d6\x 9|1d6 each|Fighter: 3|9|Chaotic|1|1|B|50} +\monster{decapus}{Decapus}{||5|4|3'|1'|Brachiation|90'|30'|9|9 tentacles|1d6\x 9|1d6 each|Fighter: 2|9|Chaotic|1|1|C|75} +\monster{diger}{Diger}{||9|2*|9'|3'|Fly/Swim|90'/120'|30'/40'|1|1 touch|paralysis|Paralysis|Magic-User: 2|8|Neutral|0|1|O|25} +\monster{ghost}{Ghost}{|*|1|5*|50'|15'|Fly|150'|50'|1|1 touch|1d6+aging|1d6\+aging|Fighter: 5|12|Chaotic|1--4|1--4|C|300} +\monster{marble_snake}{Giant Marble Snake}{Snake||8|3*|150'|50'||||1+charm|1+charm|1d6|1d6|Fighter: 3|8|Neutral|1--4|1--4|C|50} +\monster{jupiter_blood_sucker}{Jupiter Blood Sucker}{||5|3|9'|3'||||1|1|1d6+special|1d6\+blood drain|Fighter: 3|12|Neutral|0|1--10|Nil|35} +\monster{vampire_rose}{Vampire Rose}{||7|4|30'|10'||||1|1 thorn|1d8+special|1d8\+blood drain|Fighter: 2|12|Chaotic|0|1--8|Nil|75} +\monster{marmoset}{Giant Marmoset}{Monkey||5|3|180'|60'||||4|4|1d6\x 2/1d8/1d4|1d6\?1d6\?1d8\?1d4|Fighter: 3|8|Neutral|2--8|2--8|J|35} +\monster{protector}{Protector}{||2|7|210'|70'||||1|1|1d6|1d6|Magic-User: 7|10|Lawful|0|1--10|B|450} +\monster[Patches of Purple Moss]{purple_moss}{Purple Moss}{||9|1*|9'|3'||||1|1|special|Special|Fighter: 1|12|Neutral|0|1--8|Nil|13} +\monster{ubue}{Ubue}{||7|3|60'|20'||||3|3|1d6\x 2/1d4|1d6\?1d6\?1d4|Fighter: 3|3|Chaotic|3--30|3--30|Q, U, V|35} +\monster{banshee}{Banshee}{|*|3|5*|150'|50'||||wail|wail|1d4/rd|1d4\?round|Fighter: 5|12|Neutral|1|1|C|300} +\monster{cynidicean}{Cynidicean}{||9|1|120'|40'||||1|1|1d6|1d6|Fighter: 1|7 (special)|Chaotic|1--6|1--6|A|10} +\monster[Werefoxes]{werefox}{Werefox}{Lycanthrope||6\,(9)|3+2*|180'|60'||||1+charm|1\+charm|1d6|1d6|Fighter: 3|8|Neutral|1--4|1--6|C|75} +\monster{polymar}{Polymar}{||9|10*|60'|20'||||3|3|1d6\x 3|1d6\?1d6\?1d6|Fighter: 5|10|Chaotic|1--2|1--3|B|1600} +\monster{zargon}{Zargon}{||0|12*|90'|30'||||7|7|1d8\x 6/3d8|1d8\x 6\?3d8|Fighter: 12|12|Chaotic|0|1|Special|1900} +\monster{allosaurus}{Allosaurus}{Dinosaur||5|13|150'|50'||||1|1 bite|4d6|4d6|Fighter: 7|9|Neutral|0|1--4|V|1350} +\monster{ankylosaurus}{Ankylosaurus}{Dinosaur||0|7|60'|20'||||1|1 tail|2d6|2d6|Fighter: 4|6|Neutral|0|1--8|Nil|450} +\monster[Araneae]{aranea}{Aranea}{||7|3**|60'|20'|Web|120'|40'|1|1 bite|1d6+poison|1d6\+poison|Magic-User: 3|7|Chaotic|1--3|1--6|D|65} +\monster{brontosaurus}{Brontosaurus}{Dinosaur||5|26|60'|20'||||2|1 bite\?1tail|2d6/3d6|2d6\?3d6|Fighter: 13|8|Neutral|0|1--3|Nil|3750} +\monster{dimetrodon}{Dimetrodon}{Dinosaur||5|7|120'|40'||||1|1 bite|2d8|2d8|Fighter: 4|8|Neutral|0|1--6|V|450} +\monster{giant_elk}{Giant Elk}{Elk||6|8|120'|40'||||1|1 butt|1d12|1d12|Fighter: 4|7|Neutral|0|1--6|Nil|650} +\monster[Grangeri]{grangeri}{Grangeri}{||5|13|120'|40'||||1/1|1 bite or trample|2d6/3d6|2d6 or 3d6|Fighter: 7|7|Neutral|0|1--6|Nil|1350} +\monster[Kopru]{kopru}{Kopru}{||3|8+4|30'|10'|Swim|150'|50'|2+charm|1 bite\?1 tail or charm|1d4/3d6|1d4\?3d6|Fighter: 9|9|Chaotic|1--3|1--3|I, N|650} +\monster[Megatheria]{megatherium}{Megatherium}{||6|11|90'|30'||||2|2 claws|2d6\x 2|2d6\?2d6|Fighter: 6|7|Neutral|0|1--6|Nil|1100} +\monster{native}{Native}{Men||9|1\minus 1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|7|Any|0|3--30, village 30--300|A|5} +\monster{oyster}{Giant Oyster}{Oyster||5\,(\minus 2)|10|Nil|Nil||||1|1 shell|4d6|4d6|Fighter: 5|---|Neutral|0|1--4|E|900} +\monster{phanaton}{Phanaton}{||7|1\minus 1|90'|30'|Glide|150'|50'|1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|7|Lawful|0|3--30, village 30--300|Nil|5} +\monster{phororhacos}{Phororhacos}{||6|3|150'|50'||||1|1 bite|1d8|1d8|Fighter: 2|8|Neutral|0|1--8|U|35} +\monster{plesiosaurus}{Plesiosaurus}{Dinosaur||6|16|Swim 150'|50'||||1|1 bite|4d6|4d6|Fighter: 8|9|Neutral|0|1--3|Nil|1350} +\monster[Rakasta]{rakasta}{Rakasta}{||6|2+1|90'|30'||||3|2 claws\?1 bite|1d4\x 3|1d4\?1d4\?1d4|Fighter: 2|9|Neutral|0|3--30|M (special)|25} +\monster{trachodon}{Trachodon}{Dinosaur||5|14|120'|40'||||1|1 tail|2d6|2d6|Fighter: 7|6|Neutral|0|1--6|Nil|1350} +\monster{amber_lotus_flower}{Amber Lotus Flower}{||9|\half|Nil|Nil||||1|Pollen cloud|sleep|Sleep|Normal Man|12|Neutral|0|3--18|Nil|5} +\monster[Giant Amoebae]{amoeba}{Giant Amoeba}{Amoeba||9|10|30'|10'||||1|envelop|2d6\?rd|acid 2d6\?round|Fighter: 7|10|Neutral|1|1|Nil|900} +\monster[Giant Amoebae]{amoeba_10}{Giant Amoeba}{Amoeba||9|10|30'|10'||||1|envelop|2d6\?rd|acid 2d6\?round|Fighter: 7|10|Neutral|1|1|Nil|900} +\monster[Giant Amoebae]{amoeba_11}{Giant Amoeba}{Amoeba||9|11|30'|10'||||1|envelop|2d6\?rd|acid 2d6\?round|Fighter: 7|10|Neutral|1|1|Nil|1100} +\monster[Giant Amoebae]{amoeba_12}{Giant Amoeba}{Amoeba||9|12|30'|10'||||1|envelop|2d6\?rd|acid 2d6\?round|Fighter: 7|10|Neutral|1|1|Nil|1100} +\monster[Giant Amoebae]{amoeba_13}{Giant Amoeba}{Amoeba||9|13|30'|10'||||1|envelop|2d6\?rd|acid 2d6\?round|Fighter: 7|10|Neutral|1|1|Nil|1350} +\monster[Giant Amoebae]{amoeba_14}{Giant Amoeba}{Amoeba||9|14|30'|10'||||1|envelop|2d6\?rd|acid 2d6\?round|Fighter: 7|10|Neutral|1|1|Nil|1350} +\monster[Giant Amoebae]{amoeba_15}{Giant Amoeba}{Amoeba||9|15|30'|10'||||1|envelop|2d6\?rd|acid 2d6\?round|Fighter: 7|10|Neutral|1|1|Nil|1350} +\monster{brain_collector}{Brain Collector}{||2|10*|180'|60'||||1+spells|1 bite\+spells|1d10|1d10|Fighter: 10|10|Chaotic|1|1|C|1600} +\monster{death_demon}{Death Demon}{Demon||4|7**|90'|30'|Fly|180'|60'|3|2 claws\?1 bite|1d4\x 2/2d4+special|1d4\?1d4\?2d8\+special|Fighter: 7|10|Chaotic|1--4|1--4|E|1250} +\monster{mud_golem}{Mud Golem}{Golem||9|8*|90'|30'||||1|1 hug|2d12+special|2d12\+smothering|Fighter: 8|12|Neutral|1|1|Nil|1200} +\monster[Patches of Grab Grass]{grab_grass}{Grab Grass}{||9|1|Nil|Nil||||1|Grab|special|Special|Normal Man|12|Neutral|0|special|Nil|10} +\monster{gremlin}{Gremlin}{||7|1**|120'|40'||||special|Special|special|Special|Elf: 1|12|Chaotic|1--6|1--6|Nil|16} +\monster{killer_tree}{Killer Tree}{Tree||5|6|Nil|Nil||||5|4 limbs\?1 mouth|0\x 4/3d6|Grab\x 4\?3d6|Fighter: 3|12|Neutral|0|2--12|Nil|275} +\monster{lupin}{Lupin}{||6|2|120'|40'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 2|8|Lawful|2--12|'5--40|C|20} +\monster[Hypnos Magen]{hypnos_magen}{Hypnos Magen}{Magen||7|2*|120'|40'||||1|1|charm|Charm|Magic-User: 2|12|Neutral|1|0|U|25} +\monster[Demos Magen]{demos_magen}{Demos Magen}{Magen||7|3+2|120'|40'||||1|1 weapon|1d8|1d8 or by weapon|Fighter: 4|12|Neutral|2d6|0|C|50} +\monster[Caldron Magen]{caldron_magen}{Caldron Magen}{Magen||5|4*|120'|40'||||1|1|1d10/rd|Acid 1d10\?round|Fighter: 4|12|Neutral|1d4|0|V|125} +\monster[Galvan Magen]{galvan_magen}{Galvan Magen}{Magen||3|5*|120'|40'||||1/special|1 weapon or lightning bolt|1d8/3d6|by weapon or 3d6 (lightning)|Fighter: 5|12|Neutral|1d3|0|C|300} +\monster{pagan}{Pagan}{||6|1|120'|40'||||1|1 weapon|1d6|1d6 or by weapon|Fighter: 1|8|Neutral|0|'3--30|A|10} +\monster{phantom}{Phantom}{|*|9|6*|120'|40'|Fly|240'|80'|1|1|1d4+special|1d4\+special|Fighter: 6|6|Chaotic|1--3|1--4|C|500} +\monster{slime_worm}{Slime Worm}{Worm||5|10|60'|20'||||1|1 bite|2d6|2d6|Fighter: 5|9|Neutral|1|1|D|900} +\monster{sun_brother}{Sun Brother}{||0|10*|120'|40'||||1|1 weapon|1d8+3|1d8\+3 or weapon\+3|Fighter: 10|9 (12)|Lawful|1|1|Nil|1600} +\monster{sun_brother_10}{Sun Brother}{||0|10*|120'|40'||||1|1 weapon|1d8+3|1d8\+3 or weapon\+3|Fighter: 10|9 (12)|Lawful|1|1|Nil|1600} +\monster{sun_brother_11}{Sun Brother}{||0|11*|120'|40'||||1|1 weapon|1d8+3|1d8\+3 or weapon\+3|Fighter: 11|9 (12)|Lawful|1|1|Nil|1900} +\monster{sun_brother_12}{Sun Brother}{||0|12*|120'|40'||||1|1 weapon|1d8+3|1d8\+3 or weapon\+3|Fighter: 12|9 (12)|Lawful|1|1|Nil|1900} +\monster{sun_brother_13}{Sun Brother}{||0|13*|120'|40'||||1|1 weapon|1d8+3|1d8\+3 or weapon\+3|Fighter: 13|9 (12)|Lawful|1|1|Nil|2300} +\monster{sun_brother_14}{Sun Brother}{||0|14*|120'|40'||||1|1 weapon|1d8+3|1d8\+3 or weapon\+3|Fighter: 14|9 (12)|Lawful|1|1|Nil|2300} diff --git a/macros/latex/contrib/rpg-module/basic-stats.sty b/macros/latex/contrib/rpg-module/basic-stats.sty new file mode 100644 index 0000000000..a2f2fb134d --- /dev/null +++ b/macros/latex/contrib/rpg-module/basic-stats.sty @@ -0,0 +1,399 @@ +%% basic-stats.sty +% +% Basic stat blocks for the Role-Playing Game Module class +% +% Copyright 2016 Michael C. Davis +% +% LICENSE FOR THE WORK +% +% This work consists of the following files: +% rpg-module.cls +% basic-stats.sty +% basic-stats.def +% doc/rpg-module.tex +% +% This work may be distributed and/or modified under the conditions of the LaTeX +% Project Public License, either version 1.3 of this license or (at your option) +% any later version. The latest version of this license can be found at: +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX version +% 2005/12/01 or later. +% +% This work has the LPPL maintenance status `author-maintained'. +% +% The Author and Maintainer of this work is Michael C. Davis +% +% +% LICENSE FOR COMPILED WORKS +% +% You may distribute compiled works generated using the work as specified in +% Clause 3 of the LaTeX Project Public License. If you incorporate Open Gaming +% Content into the compiled work, you must also comply with the terms of that +% license. +% +% +% USAGE +% +% See the file rpg-module.pdf (source file doc/rpg-module.tex) for documentation. +% There are a number of worked examples in the examples/ directory. +% +% Technical support is provided on Dragonsfoot Forums: +% +% http://www.dragonsfoot.org/forums/viewtopic.php?f=87&t=73823 + +\ProvidesPackage{basic-stats}[2016/04/25 Basic Stat Blocks for the Role-Playing Game Module class] + +\RequirePackage{tabularx} + + + +% Redefine which environment will be displayed +\includecomment{ifbasicstats} + +% Armour class macro +% +% The default for Basic stats is to use the same descending AC that is used in +% the Basic rulebook. However, three alternative styles are defined: ascending +% AC style, B1 style and Swords & Wizardry style. Thanks to Zenopus archives +% for pointing out that the B1 style is an early form of ascending AC, see: +% +% http://zenopusarchives.blogspot.com/2014/02/ascending-ac-in-holmes-basic.html + +\newcounter{acasc@module} % Counter for AC calculations + +\newcommand\ac@module[1]{% + \@ifundefined{acstyle@module}{\gdef\acstyle@module{desc}}{}% % Default AC style is descending + \ifnum\pdfstrcmp{\acstyle@module}{desc}=\z@ % Display descending AC + #1\ignorespaces + \else\ifnum\pdfstrcmp{#1}{---}=\z@ + #1\ignorespaces + \else% + \setcounter{acasc@module}{19}% + \IfSubStr{#1}{\,}{\StrBefore{#1}{\,}[\tmpac]}{\def\tmpac{#1}}% + \IfBeginWith{\tmpac}{\minus}{% + \StrBehind{\tmpac}{\minus}[\tmpac]% + \addtocounter{acasc@module}{\tmpac}% + }{% + \addtocounter{acasc@module}{-\tmpac}% + }% + \ifnum\pdfstrcmp{\acstyle@module}{asc}=\z@ % Display ascending AC + \theacasc@module\ignorespaces + \else\ifnum\pdfstrcmp{\acstyle@module}{b1}=\z@ % Display AC using B1 notation + #1/\theacasc@module\ignorespaces + \else\ifnum\pdfstrcmp{\acstyle@module}{sw}=\z@ % Display AC using Swords & Wizardry notation + #1\,(\theacasc@module)\ignorespaces + \else + Unknown AC style \acstyle@module + \fi\fi\fi + \fi\fi +} + +% Hit Dice : convert short form to long form for stat blocks + +\newcommand\hd@module[1]{\IfBeginWith{#1}{\half}{#1 (1-4 hp)}{#1}} + +% Saving throws : convert long form to short form for stat blocks + +\newcommand\sv@module[1]{\StrLeft{#1}{1}[\first]\StrBehind{#1}{ }[\second]\IfInteger{\second}{}{\StrLeft{\second}{1}[\second]}\first\second} + +% Morale macro : convert long form to short form for stat blocks + +\newcommand\ml@module[1]{\IfSubStr{#1}{ }{\StrBefore{#1}{ }}{#1}} + +% Alignment macro : convert long form to short form for stat blocks + +\newcommand\al@module[1]{% + \ifnum\pdfstrcmp{\pgfkeysvalueof{/#1/AL}}{Any}=\z@ + N % For monsters with variable alignment, assume Neutral unless we specify with changealignment + \else + \StrLeft{\pgfkeysvalueof{/#1/AL}}{1} + \fi +} + +% Change alignment macro, for monsters with Alignment ``Any'' or ``Variable'' + +\newcommand{\changealignment}[2]{\pgfkeys{/#1/AL = {#2}}} + + + +% Basic stat block key-value pairs + +\newcommand{\setstatbasic}[2]{% + \ifcase\thecurrentstat + \pgfkeys{/#1/Type/.initial = {#2}} + \or + \pgfkeys{/#1/SilverMagic/.initial = {#2}} + \or + \pgfkeys{/#1/AC/.initial = \ac@module{#2}} + \or + \pgfkeys{/#1/HD/.initial = {#2}} + \pgfkeys{/#1/HDlong/.initial = \hd@module{#2}} + \or + \pgfkeys{/#1/MVturn/.initial = {#2}} + \or + \pgfkeys{/#1/MVrd/.initial = {#2}} + \or + \pgfkeys{/#1/MVspec/.initial = {#2}} + \or + \pgfkeys{/#1/MVspec_turn/.initial = {#2}} + \or + \pgfkeys{/#1/MVspec_rd/.initial = {#2}} + \or + \pgfkeys{/#1/Attshort/.initial = {#2}} + \or + \pgfkeys{/#1/Attlong/.initial = {#2}} + \or + \pgfkeys{/#1/Dmg/.initial = {#2}} + \or + \pgfkeys{/#1/Dmglong/.initial = {#2}} + \or + \pgfkeys{/#1/SV/.initial = \sv@module{#2}} + \pgfkeys{/#1/SVlong/.initial = {#2}} + \or + \pgfkeys{/#1/ML/.initial = \ml@module{#2}} + \pgfkeys{/#1/MLlong/.initial = {#2}} + \or + \pgfkeys{/#1/AL/.initial = {#2}} + \or + \pgfkeys{/#1/NoAppear/.initial = {#2}} + \or + \pgfkeys{/#1/NoInLair/.initial = {#2}} + \or + \pgfkeys{/#1/TT/.initial = {#2}} + \or + \pgfkeys{/#1/XP/.initial = {#2}} + \fi +} + +% Define monsters using \setstatbasic + +\def\scan@stats#1|{% + \ifnum\pdfstrcmp{#1}{\relax}=\z@ + \let\next\relax + \else + \setstatbasic{\currentmonster}{#1}\let\next\scan@stats + \stepcounter{currentstat} + \fi\next +} + + + +% Display monster stats inline +% +% Usage: \stats[monster name]{monster key}{no. appearing}{hit points} + +\newcommand{\stats}[4][default]{% + \ifnum\pdfstrcmp{#1}{default}=\z@ + \ifnum\pdfstrcmp{#3}{1}=\z@ + \pgfkeys{/#2/SingleName}: % Use the generic name defined for this monster (single instance) + \else + \pgfkeys{/#2/PluralName} (#3): % Use the generic name defined for this monster (plural + number appearing) + \fi + \else + #1 % Override the generic name with the optional argument + \fi + AC~\pgfkeys{/#2/AC}, + HD~\pgfkeys{/#2/HD}, + hp~#4, + MV~\pgfkeys{/#2/MVturn}\thinspacebrk(\pgfkeys{/#2/MVrd}), +\ifnum\pdfstrcmp{\pgfkeysvalueof{/#2/MVspec}}{}=\z@\else + \pgfkeys{/#2/MVspec}~\pgfkeys{/#2/MVspec_turn}\thinspacebrk(\pgfkeys{/#2/MVspec_rd}), +\fi + Att~\pgfkeys{/#2/Attlong}, + D~\pgfkeys{/#2/Dmglong}, + Save~\pgfkeys{/#2/SV}, + ML~\pgfkeys{/#2/ML}, + AL~\al@module{#2}, + XP~\pgfkeys{/#2/XP}% +} + +% Display monster stats in a stat block +% +% Usage: \statblock[monster name]{monster key}{no. appearing}{hit points} + +\newcommand{\statblock}[4][default]{% + \begin{statblockfreestyle} + \stats[#1]{#2}{#3}{#4} + \end{statblockfreestyle} +} + + + +% Table display format for wandering monsters + +\newcounter{wandering@module} + + +\newenvironment{wanderingmonsters}[1][c]{\begin{center}\begin{tabular}{clccccccccc} +\setcounter{wandering@module}{0}% +\tableheader[#1]{Die Roll & Wandering Monster & No. & AC & HD & MV & Attacks & Damage & Save & ML & AL}} +{\end{tabular}\end{center}} + +% Usage: \wanderitem[die roll]{monster key}{no. appearing} +% +% Leave no. appearing blank to use the value from the monster stats + +\newcommand{\wanderitem}[3][default]{% + \ifnum\pdfstrcmp{#1}{default}=\z@ + \stepcounter{wandering@module}\thewandering@module + \else + \IfInteger{#1}{\setcounter{wandering@module}{#1}\thewandering@module}{#1} + \fi & + \IfStrEq{#3}{}{% + \if\pgfkeysvalueof{/#2/NoAppear}\string 1\pgfkeys{/#2/SingleName}\else\pgfkeys{/#2/PluralName}\fi & \pgfkeys{/#2/NoAppear} & + }{% + \ifnum\pdfstrcmp{#3}{1}=\z@\pgfkeys{/#2/SingleName}\else\pgfkeys{/#2/PluralName}\fi & #3 & + } + \pgfkeys{/#2/AC} & \pgfkeys{/#2/HD} & \pgfkeys{/#2/MVrd}% +\ifnum\pdfstrcmp{\pgfkeysvalueof{/#2/MVspec}}{}=\z@\else + /\pgfkeys{/#2/MVspec_rd}% +\fi + & \pgfkeys{/#2/Attshort} & \pgfkeys{/#2/Dmg} & \pgfkeys{/#2/SV} & \pgfkeys{/#2/ML} & \al@module{#2}\\ +} + + + +% Table display format for monster roster + +\newenvironment{monsterroster}[1][c]{\begin{center}\begin{tabular}{clcccccccccc} +\tableheader[#1]{Room & Monster & No. & AC & HD & hp & MV & Attacks & Damage & Save & ML & AL}} +{\end{tabular}\end{center}} + +% Usage: \rosteritem{room key}{monster key}{no. appearing}{hit points} +% +% If the room key is provided as a reference, the class will create a hyperlink from the monster +% roster to the room description + +\newcommand{\rosteritem}[4]{% + #1 & + \ifnum\pdfstrcmp{#3}{1}=\z@ + \pgfkeys{/#2/SingleName} & + \else + \pgfkeys{/#2/PluralName} & + \fi + #3 & \pgfkeys{/#2/AC} & \pgfkeys{/#2/HD} & #4 & \pgfkeys{/#2/MVrd}% +\ifnum\pdfstrcmp{\pgfkeysvalueof{/#2/MVspec}}{}=\z@\else + /\pgfkeys{/#2/MVspec_rd}% +\fi + & \pgfkeys{/#2/Attshort} & \pgfkeys{/#2/Dmg} & \pgfkeys{/#2/SV} & \pgfkeys{/#2/ML} & \al@module{#2}\\ +} + + + +% +% New Monster environment +% + +\newcommand{\newmonsterfont}{\Large\bfseries} +\newcommand{\newmonsterbottomskip}{\topskip} + +\newcommand{\longname}[1]{% + \ifnum\pdfstrcmp{\pgfkeysvalueof{/#1/Type}}{}=\z@ + \pgfkeysvalueof{/#1/SingleName}% + \else\ifnum\pdfstrcmp{\pgfkeysvalueof{/#1/Type}}{\pgfkeysvalueof{/#1/SingleName}}=\z@ + \pgfkeysvalueof{/#1/SingleName}% + \else + \pgfkeysvalueof{/#1/Type}, \texorpdfstring{\protect\StrDel{\pgfkeysvalueof{/#1/SingleName}}{ \pgfkeysvalueof{/#1/Type}}}{}% + \fi\fi +} + +\newenvironment{newmonster}[1]{% +\@afterindentfalse\@afterheading\vspace{\topskip} +\begin{tabularx}{\linewidth}{@{}l>{\raggedright\arraybackslash}Xl>{\raggedright\arraybackslash}X@{}} +\multicolumn{4}{l}{\hspace{-\tabcolsep}\newmonsterfont\longname{#1}\pgfkeys{/#1/SilverMagic}% +\phantomsection\addcontentsline{toc}{section}{\longname{#1}}}\\[\topskip] +\ArmourClass: & \pgfkeys{/#1/AC} & No. Appearing: & \pgfkeys{/#1/NoAppear} (\pgfkeys{/#1/NoInLair})\\ +Hit Dice: & \pgfkeys{/#1/HDlong} & Save As: & \pgfkeys{/#1/SVlong}\\ +Move: & \pgfkeys{/#1/MVturn} (\pgfkeys{/#1/MVrd}) & Morale: & \pgfkeys{/#1/MLlong}\\ +\ifnum\pdfstrcmp{\pgfkeysvalueof{/#1/MVspec}}{}=\z@\else +\hspace{1em}\pgfkeys{/#1/MVspec}: & \pgfkeys{/#1/MVspec_turn} (\pgfkeys{/#1/MVspec_rd})\\ +\fi +Attacks: & \pgfkeys{/#1/Attlong} & Treasure Type: & \pgfkeys{/#1/TT}\\ +Damage: & \pgfkeys{/#1/Dmglong} & Alignment: & \pgfkeys{/#1/AL}\\ +\end{tabularx}\par\vspace{\newmonsterbottomskip}\noindent\ignorespaces}{\vspace{\newmonsterbottomskip}\par\aftergroup\@afterindentfalse\aftergroup\@afterheading} + +% Two-column version + +\newenvironment{newmonster2*}[4]{% +\@afterindentfalse\@afterheading\vspace{\topskip} +\begin{tabularx}{\linewidth}{@{}X>{\raggedright\arraybackslash}>{\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X@{}} +\ifnum\pdfstrcmp{#3}{}=\z@\else +\multicolumn{3}{l}{\hspace{-\tabcolsep}\newmonsterfont#3#4% +\phantomsection\addcontentsline{toc}{section}{#3}}\\[\newmonsterbottomskip] +\fi + & \ifnum\pdfstrcmp{\pgfkeysvalueof{/#1/Type}}{\pgfkeysvalueof{/#1/SingleName}}=\z@ + Normal +\fi\pgfkeys{/#1/SingleName} & \pgfkeys{/#2/SingleName}\\ +\cmidrule(l{\tabcolsep}r{\tabcolsep}){2-2} +\cmidrule(l{\tabcolsep}r{\tabcolsep}){3-3} +\ArmourClass: & \pgfkeys{/#1/AC} & \pgfkeys{/#2/AC}\\ +Hit Dice: & \pgfkeys{/#1/HDlong} & \pgfkeys{/#2/HDlong}\\ +Move: & \pgfkeys{/#1/MVturn} (\pgfkeys{/#1/MVrd}) & \pgfkeys{/#2/MVturn} (\pgfkeys{/#2/MVrd})\\ +\ifnum\pdfstrcmp{\pgfkeysvalueof{/#1/MVspec}}{}=\z@\else +\hspace{1em}\pgfkeys{/#1/MVspec}: & \pgfkeys{/#1/MVspec_turn} (\pgfkeys{/#1/MVspec_rd}) & \pgfkeys{/#2/MVspec_turn} (\pgfkeys{/#2/MVspec_rd})\\ +\fi +Attacks: & \pgfkeys{/#1/Attlong} & \pgfkeys{/#2/Attlong}\\ +Damage: & \pgfkeys{/#1/Dmglong} & \pgfkeys{/#2/Dmglong}\\ +No. Appearing: & \pgfkeys{/#1/NoAppear} (\pgfkeys{/#1/NoInLair}) & \pgfkeys{/#2/NoAppear} (\pgfkeys{/#2/NoInLair})\\ +Save As: & \pgfkeys{/#1/SVlong} & \pgfkeys{/#2/SVlong}\\ +Morale: & \pgfkeys{/#1/MLlong} & \pgfkeys{/#2/MLlong}\\ +Treasure Type: & \pgfkeys{/#1/TT} & \pgfkeys{/#2/TT}\\ +Alignment: & \pgfkeys{/#1/AL} & \pgfkeys{/#2/AL}\\ +\end{tabularx}\par\vspace{\newmonsterbottomskip}\noindent\ignorespaces}{\vspace{\newmonsterbottomskip}\par\aftergroup\@afterindentfalse\aftergroup\@afterheading} + +\newenvironment{newmonster2}[2]{\begin{newmonster2*}{#1}{#2}{\pgfkeysvalueof{/#1/Type}}{\pgfkeysvalueof{/#1/SilverMagic}}}{\end{newmonster2*}} + +% Three-column version + +\newenvironment{newmonster3*}[5]{% +\@afterindentfalse\@afterheading\vspace{\topskip} +\begin{tabularx}{\linewidth}{@{}>{\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X@{}} +\ifnum\pdfstrcmp{#4}{}=\z@\else +\multicolumn{4}{l}{\hspace{-\tabcolsep}\newmonsterfont#4#5% +\phantomsection\addcontentsline{toc}{section}{#4}}\\[\newmonsterbottomskip] +\fi + & \ifnum\pdfstrcmp{\pgfkeysvalueof{/#1/Type}}{\pgfkeysvalueof{/#1/SingleName}}=\z@ + Normal +\fi\pgfkeys{/#1/SingleName} & \pgfkeys{/#2/SingleName} & \pgfkeys{/#3/SingleName}\\ +\cmidrule(l{\tabcolsep}r{\tabcolsep}){2-2} +\cmidrule(l{\tabcolsep}r{\tabcolsep}){3-3} +\cmidrule(l{\tabcolsep}r{\tabcolsep}){4-4} +\ArmourClass: & \pgfkeys{/#1/AC} & \pgfkeys{/#2/AC} & \pgfkeys{/#3/AC}\\ +Hit Dice: & \pgfkeys{/#1/HDlong} & \pgfkeys{/#2/HDlong} & \pgfkeys{/#3/HDlong}\\ +Move: & \pgfkeys{/#1/MVturn} (\pgfkeys{/#1/MVrd}) + & \pgfkeys{/#2/MVturn} (\pgfkeys{/#2/MVrd}) + & \pgfkeys{/#3/MVturn} (\pgfkeys{/#3/MVrd})\\ +\ifnum\pdfstrcmp{\pgfkeysvalueof{/#1/MVspec}}{}=\z@\else +\hspace{1em}\pgfkeys{/#1/MVspec}: & \pgfkeys{/#1/MVspec_turn} (\pgfkeys{/#1/MVspec_rd}) + & \pgfkeys{/#2/MVspec_turn} (\pgfkeys{/#2/MVspec_rd}) + & \pgfkeys{/#3/MVspec_turn} (\pgfkeys{/#3/MVspec_rd})\\ +\fi +Attacks: & \pgfkeys{/#1/Attlong} & \pgfkeys{/#2/Attlong} & \pgfkeys{/#3/Attlong}\\ +Damage: & \pgfkeys{/#1/Dmglong} & \pgfkeys{/#2/Dmglong} & \pgfkeys{/#3/Dmglong}\\ +No. Appearing: & \pgfkeys{/#1/NoAppear} (\pgfkeys{/#1/NoInLair}) + & \pgfkeys{/#2/NoAppear} (\pgfkeys{/#2/NoInLair}) + & \pgfkeys{/#3/NoAppear} (\pgfkeys{/#3/NoInLair})\\ +Save As: & \pgfkeys{/#1/SVlong} & \pgfkeys{/#2/SVlong} & \pgfkeys{/#3/SVlong}\\ +Morale: & \pgfkeys{/#1/MLlong} & \pgfkeys{/#2/MLlong} & \pgfkeys{/#3/MLlong}\\ +Treasure Type: & \pgfkeys{/#1/TT} & \pgfkeys{/#2/TT} & \pgfkeys{/#3/TT}\\ +Alignment: & \pgfkeys{/#1/AL} & \pgfkeys{/#2/AL} & \pgfkeys{/#3/AL}\\ +\end{tabularx}\par\vspace{\newmonsterbottomskip}\noindent\ignorespaces}{\vspace{\newmonsterbottomskip}\par\aftergroup\@afterindentfalse\aftergroup\@afterheading} + +\newenvironment{newmonster3}[3]{\begin{newmonster3*}{#1}{#2}{#3}{\pgfkeysvalueof{/#1/Type}}{\pgfkeysvalueof{/#1/SilverMagic}}}{\end{newmonster3*}} + + + +% A few special macros for stat blocks + +\newcommand\x{$\times$} % Text-mode multiplication symbol +\newcommand\minus{$-$} % Text-mode minus sign +\newcommand{\?}{\discretionary{/}{}{/}} % Breaking slash +\newcommand{\+}{\discretionary{\,+}{}{\,+\,}} % Breaking + with 1/6 em space either side + + + +% +% Load pre-defined monster stats +% + +\input{basic-stats.def} diff --git a/macros/latex/contrib/rpg-module/doc/rpg-module.tex b/macros/latex/contrib/rpg-module/doc/rpg-module.tex new file mode 100644 index 0000000000..8c3dfcad32 --- /dev/null +++ b/macros/latex/contrib/rpg-module/doc/rpg-module.tex @@ -0,0 +1,734 @@ +%% rpg-module.tex +% +% Documentation and worked example for the Role-Playing Game Module class +% +% Copyright 2016 Michael C. Davis +% +% LICENSE FOR THE WORK +% +% This work consists of the following files: +% rpg-module.cls +% basic-stats.sty +% basic-stats.def +% doc/rpg-module.tex +% +% This work may be distributed and/or modified under the conditions of the LaTeX +% Project Public License, either version 1.3 of this license or (at your option) +% any later version. The latest version of this license can be found at: +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX version +% 2005/12/01 or later. +% +% This work has the LPPL maintenance status `author-maintained'. +% +% The Author and Maintainer of this work is Michael C. Davis +% +% +% OPEN GAME LICENSE +% +% The monster stats in this file are copyright 2000, Wizards of the Coast, Inc. +% and are distributed with permission under the terms of the Open Game License v 1.0. +% See the file rpg-module.cls or the compiled documentation file rpg-module.pdf for +% the full text of the license. +% +% +% LICENSE FOR COMPILED WORKS +% +% You may distribute compiled works generated using the work as specified in +% Clause 3 of the LaTeX Project Public License. If you incorporate Open Gaming +% Content into the compiled work, you must also comply with the terms of that +% license. +% +% +% USAGE +% +% In addition to this documentation, there are a number of worked examples in the +% examples/ directory. +% +% Technical support is provided on Dragonsfoot Forums: +% +% http://www.dragonsfoot.org/forums/viewtopic.php?f=87&t=73823 + +%% Start here! +% +% Load the rpg-module class. The following options are available: +% +% a4paper Use A4 paper size (default) +% letterpaper Use US letter paper size +% sansserif Use URW Gothic font (similar to ITC Avant Garde Gothic) (default) +% serif Use ITC Souvenir if available, fall back to URW Bookman if not available +% acdesc Use descending AC in stat blocks +% acasc Use ascending AC in stat blocks +% acb1 Use B1-style AC in stat blocks (inspired by http://zenopusarchives.blogspot.com/2014/02/ascending-ac-in-holmes-basic.html) +% acsw Use Swords & Wizardry style AC in stat blocks +% basic Use Basic stat blocks (default) +% advanced Use Advanced stat blocks (not currently implemented, planned for a future release) +% +% In principle, stat blocks can be defined for any RPG system by defining the appropriate style file. +% In this release of the class, only basic-stats.sty is defined. + +\documentclass[a4paper,serif]{rpg-module} + +\usepackage{lipsum} % This package generates filler text for + % the example file, not needed in a real project + +%\usepackage{parskip} % add spacing between paras instead of indents + + + +\begin{document} + +%% TITLE PAGE %% +% +% If you want a title page, define the elements you want, then use \maketitle (see below). +% +% It is required to define \title, even without a title page, as it is used for running heads for A4 paper size. + +\title{Dungeon Module X2$\varepsilon$\\ +An Adventure Module Class and Template} + +% The rest of the title page elements are optional + +\author{Michael C. Davis} + +\titlerunning{Dungeon Module X2$\varepsilon$ : Module Class} % Shorter title for running heads (A4 paper option only) + +\subtitle{Introductory module for character levels 1--3} + +\coverimage{rpg_module_cover_art.png} + +\abstract{This template is inspired by the old-school modules of the 1980s. It is an attempt to recapture the look and feel +of those classic adventures using the power and beauty of the \LaTeX~typesetting system. The template is designed to allow +authors to typeset their adventures with a minimum of effort. Write your adventure, add some simple markup notation as shown +in the example file, and in a few clicks you will have a beautifully-formatted PDF.} + +\copyrightblock{The \LaTeX~rpg-module class is Copyright \copyright 2016 Michael Davis and is distributed under the terms +of the \href{http://www.latex-project.org/lppl.txt}{LaTeX Project Public License} (LPPL) Version 1.3c. You are free to use this +class to generate works for distribution, for free or commercially, as detailed in Clause 3 of the license. + +Some parts of the template are Copyright \copyright 2000--2003 Wizards of the Coast and are distributed under the +\hyperref[ogl]{Open Game License (OGL)} Version 1.0A. + +The images and maps in this example template are not covered by the LPPL. See the license for each work.} + +% The contact block is to typeset your logo(s), company name and/or contact details. It consists of three columns; you +% can use any or all of them. By default the columns are top-aligned and of equal width, but you can redefine this in the +% optional argument. See the documentation of the LaTeX tabular environment for details. + +\contactblock[p{2.9cm} p{5.0cm} p{9.8cm}]{% column 1 : logo +\begin{center} +\includegraphics[width=1.5cm]{rpg_module_logo.pdf} +\end{center} +}{% column 2 : empty in this example +}{% column 3 : contact details +\vspace{0.4cm} +\begin{flushright} +The author can be contacted on Dragonsfoot (user: +\href{http://www.dragonsfoot.org/forums/ucp.php?i=pm&mode=compose&u=7317}{slithy}).\\[0.5em] + +Support for the rpg-module class and this template will be provided on the +\href{http://www.dragonsfoot.org/forums/viewtopic.php?f=87&t=73823}{Dragonsfoot Computer Gaming \& Utilities} forum. +\end{flushright} +} + +% Typeset the title page from the elements above. Remove \maketitle if you don't want a title page. + +\maketitle + + + +%% START OF PAGE 1 %% +% +% Display the title text again at the top of the first column. +% Or, use \showtitle[newtext] to use newtext in place of the previously-defined title. + +\showtitle + +This file is a tutorial and example of how to use the rpg-module class to typeset your fantasy role-playing game adventure. + +\part{Introduction} + +The rpg-module class is a free resource for authors of adventure modules for fantasy roleplaying games. +It is inspired by the look and feel of the 1981 ``Red Book'' Basic incarnation of the world's most popular FRPG. + +To prepare your work using this class, you will need \LaTeX, a free document preparation system for high-quality +typesetting. The rpg-module class was developed and tested using \TeX Live, which you can download from +\href{https://latex-project.org/ftp.html}{the \LaTeX~Project website}. + +Unlike a conventional word processor, the \LaTeX~philosophy is to separate the job of writing and editing content +from the job of typesetting it for publication. Authors can concentrate on writing their text without fussing +about what fonts to choose or what size the page margins or table columns should be. The rpg-module class takes care +of all that. Another advantage is that all documents produced using this template will have a similar look and +feel, so if you want to publish a series of works they will appear consistent. + +\LaTeX~uses a markup language in order to describe document structure and presentation. This +file---\verb|rpg-module.pdf|---was created from the markup file \verb|rpg_module.tex|. If you open \verb|rpg_module.tex| +in an ordinary text editor, you will see the markup commands and some explanatory comments (prefixed by \%). +\LaTeX~converts your source text, combined with the markup and the rpg-module class, into a high quality PDF document. + +You can find numerous tutorials online to get you started with the basics of document preparation using \LaTeX. +Part~\ref{using_the_module_class} of this document explains the features of the rpg-module class. Part~\ref{example_dungeon} +is an example of how to create a dungeon module using the class. + +\part{Using the Module Class} +\label{using_the_module_class} + +\section{Class Options} + +At the beginning of your document, load the rpg-module class with \verb|\documentclass[]{rpg_module}|. You can +specify the following options: + +\begin{tabularx}{\linewidth}{lX} +\verb|a4paper| & Use A4 paper size (default)\\ +\verb|letterpaper| & Use US letter paper size\\ +\verb|sansserif| & Use a sans-serif font, URW Gothic (default).\\ +\verb|serif| & Use a serifed font. This option will use ITC Souvenir if available, URW Bookman otherwise.\\ +\verb|tightsqueeze| & Reduce the spacing between table rows and around headings for a more compact layout.\\ +\verb|acdesc| & Use descending AC in stat blocks (default for Basic stats)\\ +\verb|acasc| & Use ascending AC in stat blocks\\ +\verb|acb1| & Use \href{http://zenopusarchives.blogspot.com/2014/02/ascending-ac-in-holmes-basic.html}{the B1 AC style} in stat blocks\\ +\verb|acsw| & Use \href{http://www.swordsandwizardry.com/}{Swords \& Wizardry} AC style in stat blocks\\ +\verb|basic| & Use Basic monster stat blocks (default)\\ +\verb|advanced| & Use Advanced monster stat blocks (not yet implemented, planned for a future release)\\ +\end{tabularx} + +\subsection*{Paper Size} + +rpg-module supports the letter paper size (used in USA) and A4 (used in Europe and the rest of the world). Changing the paper size +does not scale the text on the page; rather it adjusts the margins so the pages will be typeset identically regardless +of which size is selected. This allows module writers to easily create two almost identical PDFs for use in different regions. + +As A4 pages are slightly taller, you have the option of a running header if you select \verb|a4paper|. This option is not available +in Letter paper size. + +\subsection*{Fonts} + +You can select a serifed or sans-serif font. The default font is URW Gothic (sans-serif), a free font which is similar to +ITC Avant Garde Gothic. Avant Garde was used in many early TSR modules, including B1 and B2. + +If you choose the serif option, the rpg-module class will try to use ITC Souvenir. Souvenir is used for the 1981 Basic rulebook +and modules including B3 (Green cover), X1 and X2. However, it is a commercial font which is +not distributed with \LaTeX. If you don't have Souvenir installed, the rpg-module class will use URW Bookman instead, which is +included in the standard \TeX Live distribution. + +If you want to obtain the Souvenir font, note that it was bundled with some versions of CorelDraw. It is more economical to buy +CorelDraw with its bundled font license than to buy the font directly from the foundry. +To configure the font for use with \LaTeX, you need the Adobe Type 1 font definitions (.pfb and .afm files) from CorelDraw +and the corresponding LaTeX .tfm and .vf files, which you can obtain from the \href{https://www.ctan.org/pkg/corelpak}{Corelpak} package. The +\href{https://www.ctan.org/pkg/corelpak-contrib}{Corelpak-contrib} package may also be useful to help with installation. + +\subsection*{Stat Blocks} + +The rpg-module class is designed to be extensible. This version of the class includes Basic-style monster stat blocks +(\verb|basic|). See p.\pageref{stat_blocks} for more detail. + +\verb|advanced| stat blocks are planned for the next version of the class. In principle it is possible to define a new stat +block format for any RPG system. If several systems are defined, authors can compile the same work with stats for different +systems simply by changing the option passed to \verb|documentclass|. + +\section{Layout Options} + +\subsection*{Headings} + +The defined heading styles are listed in Table~\ref{tab:heading_styles}. +If you want a table of contents in your document, simply place a \verb|\tableofcontents| command where you would like it to appear. + +\begin{table}[ht] +\begin{tabularx}{\linewidth}{lp{0.25\linewidth}>{\raggedright\arraybackslash}X} +\tableheader{Style & Description & Features} +\texttt{\textbackslash part} & Chapter heading & Numbered, included in table of contents (ToC)\\ +\texttt{\textbackslash section} & Section heading & Not numbered, left justified, upper case, included in ToC\\ +\texttt{\textbackslash section*} & Section heading (alternate) & Not numbered, centred, included in ToC\\ +\texttt{\textbackslash subsection} & Location key & Numbered, not included in ToC\\ +\texttt{\textbackslash subsection*} & Subheading/Table heading & Not numbered, not included in ToC\\ +\texttt{\textbackslash subsubsection} & Sub-location key & Numbered with number and letter: ``7a.'' Not included in ToC\\ +\texttt{\textbackslash subsubsection*} & Sub-location key & Not numbered, not included in ToC\\ +\end{tabularx} +\caption{Heading Styles} +\label{tab:heading_styles} +\end{table} + +Location keys are numbered automatically starting from 1, and numbering is restarted after each section heading. You can override +the default numbering using the \verb|\setcounter| macro. For example, to continue the location key numbering starting at 20 on the +second level of your dungeon, insert \verb|\setcounter{subsection}{19}| before the first subsection heading on level 2. + +\subsection*{Boxed Text} + +To draw a box around any text, enclose it in the \verb|boxtext| environment: + +\begin{boxtext} +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut +purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. +Curabitur dictum gravida mauris. Nam arcu libero, nonummy +\end{boxtext} + +\subsection*{Tables} + +The rpg-module class uses the standard \verb|tabular| environment for tables. It defines a new \verb|\tableheader| macro which centres +the table headings and writes a horizontal rule of the correct width under each one, in the same style as the Basic rulebook. + +You need to specify the number and format of each column in your table as usual: \verb|l| for left-aligned, \verb|c| for centred +and \verb|r| for right-aligned. The class also provides a new \verb|b| column type for bold, centred headings. + +Here is an example. The table below has two columns: one centred and one left-aligned. So the table format +is defined using \verb|\begin{tabular}{cl}|. The heading rows are defined as bold and centred: \verb|\tableheader[b]{Damage & Weapon Type}|. + +\section*{New Weapon Damage Table} + +\begin{center} +\begin{tabular}{cl} +\tableheader[b]{Damage & Weapon Type} +1-4 (1d4) & Throwing Stick\\ +1-6 (1d6) & Composite Bow\\ +1-4 (1d4) & Cutting Axe\\ +1-6 (1d6) & Piercing Axe\\ +1-8 (1d8) & Khopesh\\ +6-36 (6d6) & Chariot\\ +\end{tabular} +\end{center} + +If you need to squeeze wide tables into a text column, you can control the inter-column spacing using \verb|\tabcolsep|, +like this: + +\section*{Character Attacks} + +\begin{center} +\addtolength{\tabcolsep}{-4.1pt} +\begin{tabular}{lccccccccccccc} +\tableheader{Attacker's Level & 9 & 8 & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 & -1 & -2 & -3} +Normal man & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 20 & 20 & 20\\ +1st to 3rd & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 20 & 20\\ +4th + higher & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20\\ +\end{tabular} +\addtolength{\tabcolsep}{4.1pt} +\end{center} + +\vspace{1ex}\noindent The rpg-module class also defines two special-purpose tables: the Wandering Monster table and Monster Roster table. These tables +have pre-defined headings and each line is populated using a monster stat block (see the next section). + +\noindent Wandering Monster tables are defined with: +\begin{quote} +\verb|\begin| \verb|{wanderingmonsters}[style]| +\end{quote} +The optional \verb|[style]| argument specifies the column type for headers. The \verb|[b]| style uses the same bold, +centred style used for the New Weapon Damage Table above. Each line of the Wandering Monster table is defined using: +\begin{quote} +\verb|\wanderitem[die roll]{monstername}{no. appearing}| +\end{quote} +\verb|[die roll]| is optional; if you omit it, each row will be numbered consecutively starting at 1. If you want to +roll 2d6 for wandering monster determination, then put \verb|[2]| on the first row and the following rows will be numbered +consecutively. Or if you want to use ranges, you can specify the range for each line like this: \verb|[01--10]|. +(A point of typographic pedantry: in \LaTeX, two hyphens will be typeset as an en-dash, ``--'', which is the correct length +of dash to use for numeric ranges. For parenthetical dashes use three hyphens to get the longer em-dash, ``---''). + +\verb|{monstername}| is the key for the stat block; see the next section for an explanation. +\verb|{no. appearing}| is optional; if you leave it empty, the rpg-module class will use the default number appearing as defined in the stat block. + +The Monster Roster table is similar, but the table headings are slightly different. Define the table with: +\begin{quote} +\verb|\begin{monsterroster}[style]| +\end{quote} +The first column is the location key, and there is an extra column for hit points. Each line in +the table is defined using: +\begin{quote} +\hspace{-2em}\verb|\rosteritem{locationkey}{monstername}{number}{hitpoints}| +\end{quote} +If the location key is defined as a \LaTeX~reference, the class will generate the correct location number and create a hyperlink to that section. + +You can see examples of Wandering Monster and Monster Roster tables on p.\pageref{wanderingmonsters}. + +\section{Monster Stat Blocks} +\label{stat_blocks} + +The Basic stats style included with the rpg-module class has stats for all of the monsters in the Basic and Expert rulebooks. +To typeset a statblock, simply use: +\begin{quote} +\verb|\statblock{monstername}{noappearing}{hitpoints}| +\end{quote} +The rpg-module class will work out the correct singular or plural forms automatically, so +\verb|\statblock{gnoll}{1}{10}| gives: +\statblock{gnoll}{1}{10} +while \verb|\statblock{gnoll}{5}{16,14,12,9,8}| gives: +\statblock{gnoll}{5}{16,14,12,9,8} +If you prefer, there is also an inline style: +\begin{quote} +\hspace{-2em}\verb|\stats[description]{monstername}{noappearing}{hitpoints}| +\end{quote} +where the optional \verb|[description]| overrides the default name of the monster. +For example:\\[0.1em] + +\noindent You find yourself face to face with the \stats[Gnoll Chieftain!]{gnoll}{1}{16}. He is flanked +by \stats[12 bodyguards: ]{gnoll}{12}{10 each}.\\[0.1em] + +\noindent You can of course also define new monsters beyond those in the Basic and Expert rulebooks. Define the new +monster once at the beginning of your document, and then you can use it in the same way as the predefined +monsters above. The format for a new monster definition is: +\begin{quote} +\verb|\monster[pluralname]{label}{name}{stats}| +\end{quote} +where \verb|label| is the key you want to use for the monster (\verb|gnoll| in the examples above) and +\verb|name| is the (singular) name of the monster that will be displayed in the text, ``Gnoll''. The rpg-module +class can usually work out the plural form by following some simple rules, but if the plural is unusual, +you can specify it in the optional \verb|pluralname| field. For example, if you define: +\begin{quote} +\verb|\monster{octopus}{Octopus}{|\ldots +\end{quote} +you will get the default plural, ``Octopuses''. If you decide that the plural should instead be ``Octopodes'', you can override the default definition: +\begin{quote} +\verb|\monster[Octopodes]{octopus}{Octopus}{|\ldots +\end{quote} + +\noindent The \verb|stats| field is a list of the monster stats, separated by ``\verb:|:''. It should contain the following items in order: +\renewcommand{\labelitemi}{$\bullet$} +\begin{itemize}\setlength{\itemsep}{0pt} +\item Type. This is only required where the monster is a subspecies of a general type, e.g. ``Dragon'', ``Lycanthrope'' or ``Man''. In all other cases +it should be left blank. +\item Put an asterisk (*) in this column if the monster requires silver, magic or special weapons to hit it. Leave empty otherwise. +\item \ArmourClass. This should be in descending AC format; use the \verb|acasc| option to the class if you want to convert it to ascending AC. +\item Hit Dice (including * or ** if applicable) +\item Movement per Turn +\item Movement per Round +\item Special Movement class, e.g. ``Fly'' or ``Swim''. Leave blank in most cases. +\item Special Movement per Turn +\item Special Movement per Round +\item Attacks (short form). Usually just the number of attacks, or ``3+special''. This format is used only in Wandering Monster and Monster Roster tables. +\item Attacks (long form). More verbose description of attacks, used in New Monster listing and stat blocks, e.g. ``2 claws\?bite\+breath''. +\footnote{Note that the slash character \texttt{/} is non-breaking (\LaTeX~will not place a line break after \texttt{/}). The rpg-module class provides a breaking +slash \texttt{\textbackslash ?} to overcome this problem. The class also provides \texttt{\textbackslash +}, which is a breaking version of +. Use of +\texttt{\textbackslash ?} and \texttt{\textbackslash +} in the long attack and damage fields prevents awkward line breaks in stat blocks.} +\item Damage (short form). Used in Wandering Monster and Monster Roster tables. +\item Damage (long form). Used in New Monster listing and stat blocks. +\item Save As. List the long form, e.g. ``Fighter: 3''. The short form is computed where required. +\item Morale +\item Alignment. List the long form, e.g. ``Chaotic''. The short form is computed where required. In case of monsters with variable alignment, specify ``Any'' +here, and use the \verb|\changealignment| macro to specify as needed in the text. (For example, the Acolyte is defined with alignment Any but is given a specific +alignment in the Wandering Monster table on p.\pageref{wanderingmonsters}.) + +\item No. Appearing. List the range when encountered as a wandering monster. +\item No. Appearing in Lair. List the range when encountered in the monster's lair or in the wilderness. +\item Treasure Type +\item XP +\end{itemize} + +\noindent For example, suppose we create the following definition:\\[0.1em] + +\monster[Minions of Set]{minion_set}{Minion of Set}{||0|5**|120'|40'||||1/1|weapon or bite or by form|1d8/1d12+poison|1d8 or 1d12+poison or by form|Fighter: 10|12|Chaotic|1--6|1--20|Nil|425} + +\noindent\texttt{\textbackslash monster[Minions~of~Set]\{minion\_set\}\{Minion~of~Set\}\{||0| +5**|120'|40'||||1/1|weapon~or~bite~or~by~form| +1d8/1d12+poison|1d8~or~1d12+poison~or~by~form| +Fighter:~10|12|Chaotic|1--6|1--20|Nil|425\}}\\[0.1em] + +\noindent Now any time we want to put stats for a Minion of Set in our text, we can use a definition like this: +\begin{quote} +\verb|\statblock{minion_set}{4}{25 each}| +\end{quote} +which produces a stat block like this: +\statblock{minion_set}{4}{25 each} +You can add details of your new monster with the environment: +\begin{quote} +\verb|\begin{newmonster}{minion_set}| +\verb|Text description of your monster here|\ldots\\ +\verb|\end{newmonster}| +\end{quote} +You can see an example of what this looks like on p.\pageref{minion_set}. + +If you want to redefine an existing monster, you can do so using exactly the same commands. + +Finally, there is the \verb|statblockfreestyle| environment. This should be used sparingly; for most monsters, you should use +the standard macros to ensure consistency. However, sometimes you may want to include extra information which does not +fit into the standard stat blocks, such as the attributes of NPCs or spell lists: + +% Define the standard stat block as well for use in tables + +\monster{snefru_hotep}{Snefru-Hotep}{||5|C5|90'|30'||||1|mace or spell|1d6/spell|1d6 or spell|Cleric: 5|11|Chaotic|1|1|Nil|300} + +\begin{statblockfreestyle} +\begin{ifbasicstats} +Snefru-hotep, Cleric of Set, S9 I15 W17 D10 C8 Ch15. AC 5 (chain mail), C5, hp 21, MV 90'\,(30'), Att mace, D 1--6, Save C5, ML 11, AL C. +He can cast the following spells: Protection from Good, Cause Fear, Snake Charm, Hold Person. +\end{ifbasicstats} +\begin{ifadvancedstats} +Snefru-hotep, Cleric of Set, S9 I15 W17 D10 C8 Ch15. AC 5 (chain mail), C5, hp 21, MV 9", Att mace, D 2--7, AL LE. +He can cast the following spells: Protection from Good, Cause Fear, Cause Light Wounds ($\times 2$), Darkness, +Snake Charm, Hold Person, Slow Poison, Spiritual Hammer, Speak with Animals, Animate Dead, Curse. +\end{ifadvancedstats} +\end{statblockfreestyle} + +\noindent When using \verb|statblockfreestyle|, the rpg-module class provides \verb|ifbasicstats| and \verb|ifadvancedstats| macros to specify separate +stat blocks for different RPG systems. + +The rest of this document shows a full example of how an adventure can be typeset using the rpg-module class. + +\newpage + +%%%%% Level One %%%%% + +% Float the map on a page on its own + +\begin{figure*}[p] +\centering +\includegraphics[width=0.75\textwidth]{rpg_module_map.png} +\vspace{5ex} +\caption*{Map Copyright \copyright 2008, 2016 Tim Hartin of +\href{http://paratime.ca}{Paratime Design}. Used with permission. All rights reserved.} +\label{img:map} +\end{figure*} + +\part{First Dungeon Level} +\label{example_dungeon} + +\section*{Key to Dungeon Level One} + +\subsection*{Start} + +\begin{boxtext} +You have traveled across the desert for many days. Ahead in the distance you can see a large stone +structure rising above the sand. +\end{boxtext} + +The structure is the fabled Temple of Set. Within, the evil priests of Set plan world domination. +A tribe of gnolls revere the site and guard the outer precincts. + +\subsection{The Portico} % Key 1 +\label{portico} + +The gnolls do not live within the temple; their settlement is a short distance away. But every day they +send a small delegation to petition the priests and seek the power of Set. They will be hostile towards +strangers. + +\begin{boxtext} +The building is made of cyclopean blocks of granite rising above the desert sands. You wonder how such +an edifice could have been constructed here, so far from any obvious habitation. Surely thousands of +workers---slaves in all probability---must have been employed in building it. + +The facade of the edifice is some 150' across. Huge stone steps lead up to a portico, which is flanked +by six immense pillars. +\end{boxtext} + +There are 13 steps, each 3' tall and thus difficult to climb. The pillars are embossed with heiroglyphs +which (could the players read them), tell the story of Set's rise to power, his conquests and the +bitter enmity which exists between him and his brother Osiris. + +On the porch at the top of the stairs, a group of Gnoll petitioners keep watch. When they perceive +the party from afar, they will hide behind the pillars. As the party begin to mount the steps, they will +spring out and hurl their javelins (1d6+1 dmg). They are also armed with spiked clubs: +\statblock{gnoll}{6}{9 each} +The gnolls each carry 1d4 ep and 2d10 cp. + +On the porch, behind the pillars and not visible from below, are eight statues\ldots + +\subsection{Vestibule} % Key 2 + +\begin{boxtext} +\lipsum[1] +\end{boxtext} + +\lipsum[2] + +\subsection{Central Aisle} % Key area 3 + +\begin{boxtext} +\lipsum[3] +\end{boxtext} + +\lipsum[4] + +\subsection{East Court} % Key area 4 + +\lipsum[5] + +\subsection{West Court} % Key area 5 + +\lipsum[6] + +\subsection{Great Hypostyle Hall} % Key area 6 +\label{hypostyle_hall} + +% Floating image + +\begin{figure}[t] +\includegraphics[width=\columnwidth]{rpg_module_interior_art.png} +\center{Tomb It May Concern.\\ +Image Copyright \copyright 1987, 2016 Michael Davis. All rights reserved.} +\label{img:tomb} +\end{figure} + +\lipsum[7-8] + +\subsection{The Court of Set's Wives} % Key area 7 + +\lipsum[9] + +\subsubsection{Statue of Nephthys} % Key area 7a +\label{west_court} + +The statue of Nephthys, Set's first wife, is 20' tall. She is styled as a very beautiful woman dressed in the +style of Egyptian royalty\ldots + +\subsubsection{Statue of Taweret} % Key area 7b + +The statue of Taweret, another of Set's wives, appears as a hippo-headed humanoid. Her upper torso is bare\ldots + +\vdots + +\setcounter{subsection}{13} % Skip areas 8-13 + +\subsection{Inner Sanctuary} % Key area 14 +\label{inner_sanctuary} + +This area is guarded by the priest of Set, Snefru-hotep, and four Minions of Set! +\begin{statblockfreestyle} +\begin{ifbasicstats} +Snefru-hotep, Cleric of Set, S9 I15 W17 D10 C8 Ch15. AC 5 (chain mail), C5, hp 21, MV 90'\,(30'), Att mace, D 1--6, Save C5, ML 11, AL C. +He can cast the following spells: Protection from Good, Cause Fear, Snake Charm, Hold Person. +\end{ifbasicstats} +\begin{ifadvancedstats} +Snefru-hotep, Cleric of Set, S9 I15 W17 D10 C8 Ch15. AC 5 (chain mail), C5, hp 21, MV 9", Att mace, D 2--7, AL LE. +He can cast the following spells: Protection from Good, Cause Fear, Cause Light Wounds ($\times 2$), Darkness, +Snake Charm, Hold Person, Slow Poison, Spiritual Hammer, Speak with Animals, Animate Dead, Curse. +\end{ifadvancedstats} +\end{statblockfreestyle} +\statblock{minion_set}{4}{25 each} +\lipsum[10-11] + +%%%%% Page break and switch to one-column mode %%%%% + +\onecolumninline{\part{Second Dungeon Level} + +The rpg-module class allows you to switch between double- and single- column modes within your document. The +\texttt{\textbackslash onecolumn} command will cause a page break and switch to one-column mode. Likewise, +the \texttt{\textbackslash twocolumn} command will cause a page break and switch back to two-column mode. + +To mix one- and two-column text on the same page, you have two options. The \texttt{\textbackslash onecolumninline} +command takes one parameter, which is the text to typeset in single-column mode. This command causes a page +break, typesets the single-column text at the top of the page, then continues in two-column mode as before. This +text has been set using \texttt{\textbackslash onecolumninline}. + +The second option is to use the \texttt{onecolumnfloat} environment, which creates a \LaTeX~float the full width +of a page. This can be positioned using the usual float parameters, e.g. \texttt{[t]} for the top of the page +and \texttt{[b]} for the bottom. This option is most suitable where you want to have a table or ``sidebar'' text +which is separate from your main text body. You can float graphics in the same way using the +\texttt{figure*} environment, as we do for the map on p.\pageref{img:map}. + +It is not possible to mix \texttt{\textbackslash onecolumninline} and \texttt{\textbackslash onecolumnfloat} on +the same page. + +\section*{Wandering Monsters} +\label{wanderingmonsters} + +% Change the alignment of Acolytes from ``Any'' to ``Chaotic'' + +\changealignment{acolyte}{Chaotic} + +\begin{wanderingmonsters}[b] +\wanderitem{crocodile}{1--2} +\wanderitem{rock_baboon}{} +\wanderitem{pit_viper}{} +\wanderitem[4-6]{gnoll}{} +\wanderitem[7-8]{acolyte}{} +\wanderitem[9]{minion_set}{1} +\wanderitem{snefru_hotep}{} +\end{wanderingmonsters} + +\section*{Monster Roster} + +\begin{monsterroster} +\rosteritem{\ref{portico}}{gnoll}{6}{9 each} +\rosteritem{\ref{inner_sanctuary}}{snefru_hotep}{1}{21} +\rosteritem{\ref{inner_sanctuary}}{minion_set}{4}{25 each} +\end{monsterroster} +} % end of \onecolumninline + +\noindent\lipsum[12-14] + +\section{Concluding the Adventure} + +\lipsum[12-13] + +\newpage + +% +% New Monsters part +% + +\part{New Monsters} + +% If you had a picture of a minion of set you could include it here +%\includegraphics[width=\linewidth]{minion_of_set.jpg} + +\begin{newmonster}{minion_set}\label{minion_set}% +Minions of Set serve their master, the god of evil and the night, with unswerving devotion. In combat, they +never need to check morale. They are the implacable enemies of the servants of Osiris and Horus. + +In human form, the Minions of Set wear scaly black plate armour and weild curved khopesh swords. Once per +day, they can polymorph themselves into the form of a giant snake with a poisonous bite. Some minions can +transform themselves into cave bears, giant crocodiles or giant scorpions. +\end{newmonster} + +\part{License Information} + +The \LaTeX~rpg-module class is Copyright \copyright 2016 Michael Davis and is distributed under the terms of the +\href{http://www.latex-project.org/lppl.txt}{LaTeX Project Public License} (LPPL) Version 1.3c. + +You are free to use the class to generate works for your own private use and/or for distribution as detailed in +Clause 3 of the license. There is no restriction on commercial use. + +An acknowledgement is much appreciated: you can use the \verb|\modulecopyright| macro to insert an acknowledgement +block. No payment is required or expected, but if you become extremely wealthy from the sales of a module +you typeset using this class and wish to express your appreciation you are welcome to do so via +\href{https://paypal.me/slithy}{PayPal}. + +% +% License section +% + +\section{Open Game Content} +\label{ogl} + +The template includes three macros to make it easy to distribute your work under the Open Game License +from Wizards of the Coast: \verb|\ogl|, \verb|\productidentity| and \verb|\opengamecontent|. These three +macros produce the license text below: + +\begin{ogl} +% This environment includes the complete text of the OGL v1.0A. Within the environment, you should include +% the exact text of the COPYRIGHT NOTICE of any other OGL text you are copying, modifying or distributing. +% Usually this will include the title, copyright date and copyright holder's name(s). Example: +\item System Reference Document, Copyright \copyright 2000--2003, Wizards of the Coast, Inc., by Jonathan Tweet, Monte Cook, +Skip Williams, Rich Baker, Andy Collins, David Noonan, Rich Redman, Bruce R. Cordell, John D. Rateliff, Thomas Reid, James +Wyatt, based on original material by E. Gary Gygax and Dave Arneson. +\end{ogl} + +\begin{productidentity} +\item The text of this \LaTeX~rpg-module class and example template, which comprises all typesetting elements and all text which +is not explitly Open Game Content, is Product Identity. +\modulecopyright + +\item All photographs, artwork and maps in this template are Product Identity. + +\item The cover image is adapted from an original image on +\href{https://commons.wikimedia.org/wiki/File:Karnak_Tempel_Vorhof_05.jpg}{Wikimedia Commons}, copyright \copyright 2009 Olaf +Tausch. Used with permission under the terms of the +\href{https://creativecommons.org/licenses/by/3.0/deed.en}{Creative Commons Attribution 3.0 Unported} license. + +\item The map on p.\pageref{img:map} is copyright \copyright 2008, 2016 Tim Hartin of \href{http://paratime.ca}{Paratime Design}. +Used with permission. All rights reserved. + +\item The drawing on p.\pageref{img:tomb} is copyright \copyright 1987, 2016 Michael Davis. All rights reserved. +\end{productidentity} + +\begin{opengamecontent} +\item The monster statistics from the SRD are Open Game Content. +\end{opengamecontent} + +\newpage + +% +% Table of Contents +% + +\tableofcontents + +% If you would also like to include an index for your document, see the LaTeX makeidx package + +\end{document} diff --git a/macros/latex/contrib/rpg-module/doc/rpg_module_cover_art.png b/macros/latex/contrib/rpg-module/doc/rpg_module_cover_art.png new file mode 100644 index 0000000000..2f8cef2645 Binary files /dev/null and b/macros/latex/contrib/rpg-module/doc/rpg_module_cover_art.png differ diff --git a/macros/latex/contrib/rpg-module/doc/rpg_module_interior_art.png b/macros/latex/contrib/rpg-module/doc/rpg_module_interior_art.png new file mode 100644 index 0000000000..26ce36a906 Binary files /dev/null and b/macros/latex/contrib/rpg-module/doc/rpg_module_interior_art.png differ diff --git a/macros/latex/contrib/rpg-module/doc/rpg_module_logo.pdf b/macros/latex/contrib/rpg-module/doc/rpg_module_logo.pdf new file mode 100644 index 0000000000..0a08e75f3b Binary files /dev/null and b/macros/latex/contrib/rpg-module/doc/rpg_module_logo.pdf differ diff --git a/macros/latex/contrib/rpg-module/doc/rpg_module_map.png b/macros/latex/contrib/rpg-module/doc/rpg_module_map.png new file mode 100644 index 0000000000..467cda729a Binary files /dev/null and b/macros/latex/contrib/rpg-module/doc/rpg_module_map.png differ diff --git a/macros/latex/contrib/rpg-module/examples/README.examples b/macros/latex/contrib/rpg-module/examples/README.examples new file mode 100644 index 0000000000..ef535f3b4a --- /dev/null +++ b/macros/latex/contrib/rpg-module/examples/README.examples @@ -0,0 +1,23 @@ +This directory contains the following examples of how to use the rpg_module class: + +monster_manual.tex A complete listing of all the monsters from basic_stats.sty, + in new monster format, stat block format and wandering monster + table format. + +b1.tex Reproduction of p.21-22 of B1: In Search of the Unknown, by + Mike Carr. Copyright 1979, 1981 TSR Hobbies, Inc. + +b3.tex Reproduction of p.22-23 of B3: Palace of the Silver Princess, + by Jean Wells and Tom Moldvay. Copyright 1981 TSR Hobbies, Inc. + +x2.tex Reproduction of p.1-2 of X2: Castle Amber by Tom Moldvay. + Copyright 1981 TSR Hobbies, Inc. + +basic.tex Reproduction of p.B45-B46 of the Dungeons & Dragons Basic + Rulebook by Tom Moldvay. Copyright 1981 TSR Hobbies, Inc. + +Copyright for the original works reproduced above originally belonged to TSR Hobbies, Inc. +and now belongs to Wizards of the Coast, Inc. The text and artwork in these examples is +reproduced under "fair use" copyright terms, for the purpose of comparing typographic +styles. The original works can be purchased in PDF format from Wizards of the Coast at +www.dndclassics.com. diff --git a/macros/latex/contrib/rpg-module/examples/b1.pdf b/macros/latex/contrib/rpg-module/examples/b1.pdf new file mode 100644 index 0000000000..c4cc827497 Binary files /dev/null and b/macros/latex/contrib/rpg-module/examples/b1.pdf differ diff --git a/macros/latex/contrib/rpg-module/examples/b1.tex b/macros/latex/contrib/rpg-module/examples/b1.tex new file mode 100644 index 0000000000..0274f3bedd --- /dev/null +++ b/macros/latex/contrib/rpg-module/examples/b1.tex @@ -0,0 +1,301 @@ +\documentclass[letterpaper,sansserif,tightsqueeze]{rpg-module} + +\usepackage{parskip} % Add spacing between paras instead of indents + +\title{B1: In Search of the Unknown} + +% Compress title spacing compared to default + +\addtolength{\topmargin}{-0.3cm} +\addtolength{\textheight}{0.7cm} + +% Initialise counters + +\setcounter{page}{20} + +\begin{document} + +\onecolumn + +\begin{center} +Page intentionally left blank. +\end{center} + +\twocolumn + +\section*{KEY TO THE LOWER LEVEL} + +The lower level of the complex is rough and unfinished. The +walls are irregular and coarse, not at all like the more finished +walls of the level above (except for the two rooms on +this level which are more like those in the upper portion and +in a state of relative completion). The corridors are roughly +10' wide, and they are irregular and rough, making mapping +difficult. The floors are uneven, and in some cases rock +chips and debris cover the pathways between rooms and +chambers. The doors are as in the upper level, but the secret +doors are either rock or disguised by rock so as to appear +unnoticeable. + +\section{WANDERING MONSTERS} + +Check every second turn; 1 in 6 (roll a 6-sided die). If a monster +is indicated, roll a six-sided die again and compare to +the list below to determine what type of monster appears. +Then check for surprise. The abbreviations which follow are +the same as used and explained in the section entitled MONSTER +LIST. +\begin{enumerate} +\item\stats{troglodyte}{1--4}{9,8,5,4} +\item\stats{crab_spider}{1}{12} +\item\stats{kobold}{2--7}{4,4,3,3,2,2,1} +\item\stats{orc}{1--8}{6,5,5,4,4,3,3,2} +\item\stats{zombie}{1--2}{8,7} +\item\stats{goblin}{2--7}{5,5,4,4,3,2,1} +\end{enumerate} + +\section{ENCOUNTER AREAS} + +\setcounter{subsection}{37} + +\subsection{ACCESS ROOM} +This room is filled with piles of rock and +rubble, as well as mining equipment: rock carts, mining +jacks, timbers, pickaxes, etc. It is apparent that there has +been no mining activity for quite some time. + +Monster: + +Treasure \& Location: + +\subsection{MUSEUM} +This room is an unfinished museum, a special +monument to the achievements of the stronghold's most illustrious +inhabitants. + +The west wall is a sectioned fresco showing various events +and deeds from the life of Rogahn, and the several views +pictured are: a young boy raising a sword, a young man +slaying a wild boar, a warrior carrying off a dead barbarian, +and a hero in the midst of a large battle hacking barbarian +foes to pieces. + +The east wall is a similar sectioned fresco showing cameos +from the life of Zelligar: a boy gazing upward at a starry night +sky, a young man diligently studying a great tome, an earnest +magician changing water to wine before a delighted +audience, and a powerful wizard casting a type of death +fog over an enemy army from a hilltop. + +The north wall section is unfinished, but several sections of +frescoes show the two great men together: shaking hands for +the first time in younger days, winning a great battle against +barbarians in a hill pass, gazing upward together from the +wilderness to a craggy rock outcropping (recognizable to +the adventurers as the place where the stronghold was built), +with a fourth space blank. Next to the frescoes are other mementoes +from the past: a parchment letter of thanks for help +in the war against the barbarians from a prominent landowner, +a barbarian curved sword, and a skeleton of the barbarian +chief (so identified by a wall plaque in the common +language). There is more blank space on the wall, apparently +for further additions to the room's collection of items. + +The frescoes are painted and they cannot be removed. +None of the mementoes is of any particular worth or value. + +Monster: + +Treasure \& Location: + +\section{40--56. CAVERNS OF QUASQUETON} + +\setcounter{subsection}{39} + +The bulk of the lower +level of the complex is a series of unfinished caves and caverns, +which are mostly devoid of special detail—all being +characterized by irregular walls of rough rock. Uneven floors +strewn with bits of rock and rubble, and joined by winding +corridors. The majority of the rooms are empty of furnishings. + +\subsection{SECRET CAVERN} + +Monster: + +Treasure \& Location: + +\subsection{CAVERN} + +Monster: + +Treasure \& Location: + +\subsection{WEBBED CAVE} + +The entrance to this room is covered +with silky but sticky webs, which must be cut or burned +through to gain access to it. See web spell for details in D\&D +Basic booklet. + +Monster: + +Treasure \& Location: + +\subsection{CAVERN} + +Monster: + +Treasure \& Location: + +\subsection{CAVERN} + +Monster: + +Treasure \& Location: + +\subsection{CAVERN OF THE MYSTICAL STONE} +This ante-chamber is +the resting place for a large, glowing chunk of rock which +appears to be mica. The stone radiates magic strongly. + +The stone rests permanently in its place and is not removable. +Although chips can easily be broken off the rock by +hand, only one chip at a time may be broken away; until +anything is done with it, the rest of the rock will remain impervious +to breaking. + +Once a chip is removed, its glow will begin to fade, and after +three rounds (thirty seconds) it will be a normal piece of mica +with no magical properties (as will be the case if it is removed +from this room). The chip's magical properties are manifested +only if it is consumed (or placed in the mouth) by any +character before three rounds have passed after breaking +off from the chunk. The magical effects are highly variable +and each individual can only be once affected—even if a +future return to the rock is made at a later time. If any character +places a chip within his or her mouth, a 20-sided die is +rolled to determine the effect according to the following table: + +\begin{enumerate} +\item Immediately teleports the character and his gear to the +webbed cave (room 42) +\item Immediately blinds the character for 1--6 hours of game +time (no combat, must be led by other adventurers) +\item Raises strength rating permanently by 1 point +\item Raises charisma rating permanently by 1 point +\item Raises wisdom rating permanently by 1 point +\item Raises intelligence rating permanently by 1 point +\item Raises dexterity rating permanently by 1 point +\item Lowers strength rating permanently by 1 point +\item Lowers charisma rating permanently by \ point +\item Lowers intelligence rating permanently by 1 point +\item Cures all damage on one character +\item Causes invisibility for 1--6 hours of game time (subject to +normal restrictions) +\item Poison (saving throw at +1) +\item Makes a 500 g.p. gem (pearl) appear in character's +hand +\item Gives a permanent +1 to any single weapon carried by +character (if more than one now carried, roll randomly to +determine which) +\item Heals all lost hit points of character (if any) +\item Causes idiocy for 1--4 hours (unable to function intelligently +or fight, must be led by other adventurers) +\item Gives a special one-time bonus of 1--6 hit points to the +character (these are the first ones lost the next time damage +or injury is taken) +\item Gives a curse: the character will sleep for 72 hours +straight each month, beginning one day before and +ending one day after each new moon (can only be removed +by a remove curse spell) +\item Has no effect +\end{enumerate} + +Monster: + +Treasure \& Location: + +\subsection{SUNKEN CAVERN} +This small cavern lies at the bottom of +a short, sloping corridor. The walls are wet with moisture, and +glisten in any reflected light. + +Monster: + +Treasure \& Location: + +\subsection{CAVERN} + +Monster: + +Treasure \& Location: + +\subsection{ARENA CAVERN} +This cavern, designed as a small theatre +or arena, is unfinished. The center portion of the room is +sunken about 15' below the floor level, and the sides slope +downward from the surrounding walls to form a small amphitheatre. + +Monster: + +Treasure \& Location: + +\subsection{PHOSPHORESCENT CAVE} +This medium-sized cavern +and its irregularly-shaped eastern arm present an eerie sight +to explorers. A soft phosphorescent glow bathes the entire +area independent of any other illumination, and the strange +light is caused by the widespread growth (on walls, ceiling, +and even parts of the floor) of a light purplish mold. The mold +itself is harmless. + +Monster: + +Treasure \& Location: + +\subsection{WATER PIT} +This room contains the 8' deep pool of water +into which any unwary adventurers are precipitated from the +trap on the upper level (see the special description of the +trap under the description of room 36). As described there, +the water is extremely cold. Anyone entering the water +(whether voluntarily or not) must spend a full hour recovering +from its chilly effects. +The pool is about 20' across and is filled by a cold spring. + +Monster: + +Treasure \& Location: + +\subsection{SIDE CAVERN} +This cavern is unusual only in that its eastern +rock wall is striated with irregular diagonal streaks of a +bluish ore (of no unusual use or value to the adventurers). + +Monster: + +Treasure \& Location: + +\subsection{RAISED CAVERN} +This room, off the southeast corner of +the grand cavern, is accessible by climbing four upward +steps. Its eastern wall also shows diagonal streaks of the +same bluish ore noticeable in room 51. The room has a low +ceiling (only 5'), so some humans may find it difficult to stand +fully erect. + +% Monster: +% +% Treasure \& Location: +% +% \subsection{GRAND CAVERN OF THE BATS} +% This majestic cave is the +% largest in the complex, and is impressive due to its size and +% volume, for the ceiling is almost 60' above. A corridor sloping +% downward into the cavern (noticeable even by nondwarves) +% gives primary access to the room on its south wall. +% A secondary entrance/exit is via a secret door to the west, +% while steps to the southeast lead up to room 52. + +\end{document} diff --git a/macros/latex/contrib/rpg-module/examples/b3.pdf b/macros/latex/contrib/rpg-module/examples/b3.pdf new file mode 100644 index 0000000000..7f6c32e5ea Binary files /dev/null and b/macros/latex/contrib/rpg-module/examples/b3.pdf differ diff --git a/macros/latex/contrib/rpg-module/examples/b3.tex b/macros/latex/contrib/rpg-module/examples/b3.tex new file mode 100644 index 0000000000..261073c0a5 --- /dev/null +++ b/macros/latex/contrib/rpg-module/examples/b3.tex @@ -0,0 +1,240 @@ +\documentclass[letterpaper,serif,tightsqueeze]{rpg-module} + +\usepackage{parskip} % Add spacing between paras instead of indents + +\title{B3: Palace of the Silver Princess} + +% Compress title spacing compared to default + +\addtolength{\topmargin}{-0.3cm} +\addtolength{\textheight}{0.7cm} + +% Initialise counters + +\setcounter{page}{21} +\setcounter{part}{3} +\setcounter{subsection}{44} + +\begin{document} + +\onecolumn + +\begin{center} +Page intentionally left blank. +\end{center} + +\twocolumn + +locusts are stone gray and may not be noticed until they move or +until the party approaches within 20. They are very nervous and +will flee most of the time rather than fight. They flee by jumping up +to 60. Unfortunately, when they panic their only thought is to +escape. There is a 50\% chance that they will try to flee by jumping +right through the party. If they try to jump through the party, +choose a character at random and roll to see if that character has +been hit. If so, the character takes 1--4 points of damage from being +battered. The locust then flies away. + +Cave locusts can also attack and bite for 1--2 points (but not when +they are fleeing). When frightened or attacked, cave locusts make +a loud shrieking noise to warn their fellows. This shriek has a 20\% +chance per round of attracting wandering monsters to investigate. + +If cornered, a cave locust will spit a brown gooey substance up to +10' at its attackers. To hit a character, the locust need only make +an attack against armor class 9, no matter what type of armor the +individual is wearing. A character hit by cave locust spittle must +save vs. Poison or be unable to do anything for 1 turn due to the +awful smell. After this time he or she will be used to the smell, but +any character approaching within 5' of the victim must also save or +be violently ill. This effect will last until the spittle is washed off. + +The blue glow of the stalactites and stalagmites is caused by a type +of moss. The moss is harmless. It can be used as a weak light +source, casting light up to 10'. If the players search the cave they +will find a small silver statuette of a dragon readying for flight. The +statuette is in a niche along the north wall. The statuette looks the +same as the one found in room 33 (for more details see room 33). + +\includegraphics[width=\linewidth]{CaveLocust.png} + +\subsection{CAVE POOL} +\begin{boxtext} +A large pool of pitch black water fills the room. You see the glint +of gold coming from the far side of the pool. A hot wind blows +through the cave. Moisture fills the air and tiny beads of water +form on clothing, skin, and hair. The floor is damp and slick. +\end{boxtext} +Once the characters have entered the cave they will be able to see +the crowned head of a large statue of a man. The statue seems to +be made of bronze. The eyes of the statue are small rubies (value +50 gp each). The glint of gold comes from a crown on top of the +statue's head. The crown appears to be made of gold. The statue +really is bronze, but the crown is only gold paint. + +The liquid in the pool is a kind of ink. The water of the pool is heated +by hot springs. The hot water absorbs color from a particular kind +of mineral lining the pool. The result is a deep purple ink. Anything +which comes in contact with the ink will be stained purple. Since +the ink is permanent it will have to wear off naturally (1--6 days). It +will not stain non-porous surfaces which do not absorb water very +well (such as steel). The ink will not harm characters. + +Once the characters reach the statue they will find that the rubies +can be pried out easily. If the party carefully examines the statue, +there is a 50\% chance they will discover that the head of the statue +can be unscrewed. Hidden inside the head, packed in a protective +oilskin bag, is a \textbf{ring of protection +1}. +\subsection{BLADE TRAP} +At the corner of the corridor is a trap. When a character walks over +a pressure plate in the floor the trap might be sprung. Roll ld6. The +trap will be sprung on a roll of 1. Roll separately for each character +that walks around the corner. If the trap is sprung, a weighted +blade (like a guillotine blade) will fall from the ceiling causing 1--10 +points of damage to the person who sprung the trap. The blade is +hidden in the ceiling. +\subsection{TROGLODYTE ROOM} +\begin{boxtext} +In the center of the room you see three human-like reptiles with +short tails, long legs, and a spiny ``comb'' on their heads and +arms. They block the way out. +\end{boxtext} +The human-like reptiles are \stats{troglodyte}{3}{9 each}. +Troglodytes are intelligent. They hate most other creatures and will try to kill +anyone they meet. Hence they will attack on sight. Troglodytes +have a chameleon-like power to blend into their surroundings +(normally they surprise on 1--4 on ld6), but they are not using the +ability at the moment. Troglodytes secrete an oil when fighting +which smells so bad that characters will be nauseated unless they +save vs. Poison. Nauseated characters have a penalty of \minus 2 on their +``to hit'' rolls while in melee combat with the troglodytes. +\subsection{WATCH ROOM} +\begin{boxtext} +This room is higher than the surrounding countryside so that +guards could look out on the surrounding land when standing +watch. There are windows in the west and south walls. You +notice that the red glow still surrounds the palace. In the center +of the room is an iron ladder. The ladder leads to a trap door in +the ceiling. By the south wall you see a statue that looks like a +cleric. He looks frightened and had apparently just finished +scratching a message into the wall. The inscription reads: +\begin{quote} +Evil red eye, malefaction!\\ +Sweet music from strings;\\ +Priceless Blade of Destruction,\\ +Salvation rides on dragon's wings! +\end{quote} +\end{boxtext} +The chief palace cleric had divined the evil intent of Arik when +disaster struck. He hurriedly left the inscription\,---\,clues as to how +to destroy the ruby\,---\,in the faint hope that it might help rescuers. + +This trap door is the only way the party can reach the second level +of the dungeon. It is important that the party reach the second level +and finish their mission, but it is also important that they encounter +a number of monsters and traps before reaching the second level. +If they reached the second level too easily the adventure would not +be a challenge. On the other hand, since they must reach the +second level, the DM might consider sending the vision of a Protector +to the party if they cannot find the way to this trap door leading +to the second level. + +\onecolumninline{\part{Second Dungeon Level} +\textbf{Wandering Monsters} + +The second dungeon level has its own wandering monster table. Check for wandering monsters every other turn. Roll ld6: the party will +encounter a wandering monster if a 1 is rolled. The wandering monster will be first seen 20--120 feet (2d6\x 10') away from the party when +encountered, in any direction and doing anything the DM chooses. To determine exactly which monster is encountered, use the Wandering +Monster Table: Level 2 below: +\begin{center} +\textbf{Wandering Monster Table: Level 2} (Roll ld6) +\end{center} +\begin{wanderingmonsters} +\wanderitem{ghoul}{} +\wanderitem{goblin}{} +\wanderitem{harpy}{1--3} +\wanderitem{hobgoblin}{} +\wanderitem{medusa}{1} +\wanderitem{zombie}{} +\end{wanderingmonsters} + +It is suggested that the monsters Harpy and Medusa be encountered no more than once as wandering monsters. If the DM rolls a wandering +monster encounter with a second Harpy or Medusa the DM should choose a wandering monster from the table for Level One instead. This is +because both monsters are very difficult challenges. If encountered too many times, the encounters might upset the play balance. + +All the monsters on the second level wandering monster table appear in both editions of the D\&D\registered Basic rules. Only those monsters with +unusual powers are described below. + +\textbf{Ghoul}\,---\,A successful attack by a ghoul will paralyze any creature of ogre-size or smaller, except elves, unless the victim saves vs. Paralysis. +Elves are immune to the paralysis, but still take normal damage from a ghoul's attacks. Paralysis lasts for 2--8 turns. + +\textbf{Harpy}\,---\,Any character hearing the harpy's song must save vs. Spells or be charmed. Charmed individuals will move toward the harpy, +resisting any attempt to stop them, but not otherwise attacking. If a character successfully saves the character will not be affected by the harpy +song for that encounter. Harpies are resistant to magic and have a +2 on all their saves. + +\textbf{Medusa}\,---\,Looking at a medusa will turn a character to stone unless the victim saves vs. Turn to Stone. A medusa can also attack with her +snaky hair. The bite of the snakes is poisonous (save vs. Poison or die in one turn) and when the snakes hit they cause 1-6 points of damage. +Anyone who tries to attack a medusa without looking at it must subtract 4 from their ``to hit'' roll. A medusa is resistant to magic and gains +2 on +saves vs. Spells only, other saving throws are normal.\vspace{-1ex} + +\hrulefill +\begin{center} +\textbf{Key to Dungeon Level Two} +\end{center}} +\subsection{WATCH TOWER} +\begin{boxtext} +This watch tower has 6 windows overlooking the surrounding +lands. There is a trap door in the center of the floor. A stone +statue of a guard stands looking out each window. Except for +the statues the room looks empty. +\end{boxtext} +The room is empty except for the statues. +\subsection{PASSAGEWAY} +\begin{boxtext} +As soon as you open the door, bright lights flood the hallway. +You see three swords fighting each other, as if being held by +invisible men. +\end{boxtext} +The fighting swords and bright light is.an illusion pIaced there by +the palace magic-user to frighten intruders who might enter the +palace through the tower. The illusion is triggered by the door +opening without the password ``Argenta'' being spoken. If any +character touches the illusion it will be dispelled. +\subsection{LABORATORY} +\begin{boxtext} +You see a room filled with stuffed animals, shelves filled with +books and scrolls, and jars of powders and herbs. Strange +symbols* are painted on the walls. An iron statue of a warrior +stands in the southeast corner of the room. A polishing cloth is +draped over the warrior's shield. +\end{boxtext} +This room was the palace magic-user's laboratory. The iron statue +is actually a \stats{living_iron_statue}{1}{18}. +Living iron statues have bodies which can absorb iron and steel. When hit, they will take normal +damage, but if a non-magical metal weapon is used, the attacker +must save vs. Spells or the weapon will become stuck in the body of +the living iron statue, and can only be removed if the statue is killed. +\subsection{STOREROOM} +\begin{boxtext} +This small room appears to be empty. +\end{boxtext} +The room once held stores of various sorts but has recently been +cleaned out. +\subsection{MIRABILIS' ROOM} +\begin{boxtext} +A plain bed and a huge wooden desk dominate this sparsely +furnished bedchamber. A broom lies in one corner near a pile of +dirt. A tattered pair of silk bedroom slippers lie on the floor near +the bed. A small nightstand has been overturned. While you +watch, a small black kitten races out from under the bed, bats +one of the slippers around, then runs back under the bed. +\end{boxtext} +\changealignment{panther}{Lawful} +The room is the bedroom of the palace magic-user. The black +kitten is his familiar and pet. Three times a day the kitten can +transform itself into a \stats{panther}{1}{18}. +The transformation lasts 10 rounds. When in kitten form the creature is harmless. Note that +while panthers are usually neutral in alignment, the kitten/panther is lawful because this magical animal is the familiar of a +lawful magic-user. + +\end{document} diff --git a/macros/latex/contrib/rpg-module/examples/basic.pdf b/macros/latex/contrib/rpg-module/examples/basic.pdf new file mode 100644 index 0000000000..2fb4a72445 Binary files /dev/null and b/macros/latex/contrib/rpg-module/examples/basic.pdf differ diff --git a/macros/latex/contrib/rpg-module/examples/basic.tex b/macros/latex/contrib/rpg-module/examples/basic.tex new file mode 100644 index 0000000000..f3cf4a2de5 --- /dev/null +++ b/macros/latex/contrib/rpg-module/examples/basic.tex @@ -0,0 +1,234 @@ +\documentclass[letterpaper,serif,tightsqueeze]{rpg-module} + +\usepackage{parskip} % Add spacing between paras instead of indents +\usepackage{enumitem} % Control spacing in description list + +\renewcommand{\newmonsterfont}{\bfseries} % Redefine new monster headings to use a smaller font +\renewcommand{\newmonsterbottomskip}{0ex} % Reduce the space below New Monster sections + +\setcounter{page}{44} % Page and section numbers +\setcounter{part}{6} + +\RequirePackage{fancyhdr} % Change page numbering style +\fancypagestyle{plain}{% + \fancyhf{} % clear all header and footer fields + \fancyfoot[C]{B\thepage} % page numbering + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} +} +\pagestyle{plain} + +% Redefine troglodyte/zombie so damage fits on one line + +\monster{troglodyte}{Troglodyte}{||5|2*|120'|40'||||3|2 claws\?1 bite|1d4\x 3|1d4 each|Fighter: 2|9|Chaotic|1--8|5--40|A|25} +\monster{zombie}{Zombie}{||8|2|120'|40'||||1|1 weapon|1d8|1d8~or~weapon|Fighter: 1|12|Chaotic|2--8|4--24|Nil|20} + +% Redefine veteran to be more generic for New Monster block + +\monster{veteran}{Veteran}{||2|1--3|60'|20'||||1|1 weapon|1d8|1d8~or~weapon|Fighter: 1--3|9 (varies)|Any|2--8|2--12|V|10} + +% 3/4 symbol + +\newcommand{\threequarters}{{\usefont{T1}{lmr}{m}{n}\sfrac{3}{4}} } + + + +\begin{document} + +\onecolumn + +\begin{center} +Page intentionally left blank +\end{center} + +\twocolumn + +\begin{newmonster}{troglodyte} +A troglodyte is an intelligent human-like reptile with a short tail, +long legs, and a spiny ``comb'' on its head and arms. Troglodytes +walk upright and use their hands as well as humans. They hate +most other creatures, and will try to kill anyone they meet. They +have a chameleon-like ability to change colors, and use it to hide +by rock walls, surprising on a roll of 1--4 (on 1d6). They secrete an +oil which produces a stench that will nauseate humans and demihumans +unless the victims save vs. Poison. Nauseated characters +will have a penalty of \minus 2 on their ``to hit'' rolls while in hand-to-hand +combat with the troglodytes. + +\includegraphics[width=\linewidth]{troglodyte.png} +\end{newmonster} +\vspace{-3ex}\textbf{Undead:} (see \textbf{Ghoul}, \textbf{Skeleton}, \textbf{Wight} and \textbf{Zombie}) + +Undead are evil creatures who have been created through dark +magic. They are unaffected by things that affect living creatures, +such as poison, and are not affected by spells which affect the +mind, such as \textbf{sleep} and \textbf{charm person}. They do not make noise. + +\begin{newmonster}{veteran} +Veterans are low-level fighters, usually returning from or going to a +war. To determine each veteran's level and alignment, use the +method outlined under \textbf{Creating an NPC Party} (page B52). A +party of veterans may be of mixed levels and alignments, or the +DM may wish to give all members the same levels. +\end{newmonster} +\textbf{Were-creature} (werebear, wearboar, wererat, weretiger, or werewolf); see \textbf{Lycanthropes}.\\[1ex] +\begin{newmonster}{wight} +A wight is an \textbf{undead} spirit living in the body of a dead human or +demi-human. It can only be hit by silvered or magical weapons. +Wights are greatly feared, as they drain life energy when striking a +victim. Each hit drains one level of experience or hit die (life +energy, see page B29). EXAMPLE: A 3rd level fighter struck by a +wight becomes a 2nd level fighter, keeping only enough experience +points to be at the midpoint of 2nd level, and losing 1 hit die +of hit points. Any person totally drained of life energy by a wight +will become a wight in 1--4 days, and will be under control of the +wight who drained him or her. +\end{newmonster} +\begin{newmonster2}{wolf}{dire_wolf} +\textbf{Wolves:} Wolves are meat-eaters and hunt in packs. Though +wolves prefer the wilderness, they will occasionally be found in +caves. Captured wolf cubs can be trained like dogs (if the DM permits), +but it is difficult. If 3 wolves or less are encountered, or if a +pack is reduced to less than 50\% of its original numbers, their +morale score is 6 rather than 8. + +\textbf{Dire Wolves:} Dire wolves may be found in caves, woods, or +mountains. They are larger and more ferocious than normal +wolves, and are semi-intelligent. They are fierce enemies and +usually hunt in packs. They are sometimes trained by goblins to be +used as mounts. Captured dire wolf cubs can be trained like dogs +(if the DM permits), but they are even more savage than normal +wolves. +\end{newmonster2} +\begin{newmonster}{yellow_mold} +This deadly fungus covers an area of 10 square feet (2' by 5', for +example), though many are sometimes found together. Yellow +mold can only be killed by fire; a torch will do 1--4 points of damage +to it each round. It will eat through wood and leather but does not +harm metal or stone. It does not actually attack, but if it is touched +(by a torch, for. example) the touch may cause the mold to squirt +out a 10'\x 10'\x 10' cloud of spores. There is a 50\% chance per hit +that the mold will squirt out this cloud. Anyone caught within the +cloud must save vs. Death Ray or choke to death within 6 rounds. +\end{newmonster} +\begin{newmonster}{zombie} +Zombies are undead humans or demi-humans animated by some +evil cleric or magic-user. As all undead, they may be ``Turned'' by +a cleric but are not affected by sleep or charm spells or any form +of mind reading. They are often placed to guard treasures, since +they make no noise until they attack. Zombies will always attack on +sight, but can be destroyed by normal weapons. They are slow +fighters, and always strike last (no initiative roll needed). +\end{newmonster} + +\begin{onecolumnfloat}[t] +\part{Treasure} +\end{onecolumnfloat} +\begin{onecolumnfloat}[hb!] +\begin{center} +\textbf{TREASURE TYPES} +\end{center} +\vspace{1ex} +\addtolength{\tabcolsep}{0.6mm} +\begin{tabularx}{\linewidth}{clllll>{\raggedright\arraybackslash\hsize=1.9cm}X>{\raggedright\arraybackslash\hsize=4.5cm}X} +% Need a bit of a hack to get table headers spanning 2 rows unfortunately +& \multicolumn{1}{b}{1000's of} & \multicolumn{1}{b}{1000's of} & \multicolumn{1}{b}{1000's of} & + \multicolumn{1}{b}{1000's of} & \multicolumn{1}{b}{1000's of} & \multicolumn{1}{b}{*Gems and}\\[-0.7ex] +\tableheader[b]{Type & Copper & Silver & Electrum & Gold & Platinum & Jewelry & Magic Items} +A & 25\% 1--6 & 30\% 1--6 & 20\% 1--4 & 35\% 2--12 & 25\% 1--2 & 50\% 6--36 & 30\% Any 3\\ +B & 50\% 1--8 & 25\% 1--6 & 25\% 1--4 & 25\% 1--3 & Nil & 25\% 1--6 & 10\% 1 sword, armor, or weapon\\ +C & 20\% 1--12 & 30\% 1--4 & 10\% 1--4 & Nil & Nil & 25\% 1--4 & 10\% Any 2\\ +D & 10\% 1--8 & 15\% 1--12 & Nil & 60\% 1--6 & Nil & 30\% 1--8 & 15\% Any 2 + 1 potion\\ +E & 5\% 1--10 & 30\% 1--12 & 25\% 1--4 & 25\% 1--8 & Nil & 10\% 1--10 & 25\% Any 3 + 1 scroll\\ +F & Nil & 10\% 2--20 & 20\% 1--8 & 45\% 1--12 & 30\% 1--3 & 20\% 2--24\?10\%~1--12 & 30\% Any 3 except weapons + 1 potion + 1 scroll\\ +G & Nil & Nil & Nil & 50\% 10--40 & 50\% 1--6 & 25\% 3--18\?25\%~1--10 & 35\% Any 4 + 1 scroll\\ +H & 25\% 3--24 & 50\% 1--100 & 50\% 10--40 & 50\% 10--60 & 25\% 5--20 & 50\% 1--100\?50\%~10--40 & 15\% Any 4 + 1 potion + 1 scroll\\ +I & Nil & Nil & Nil & Nil & 30\% 1--8 & 50\% 2--12 & 15\% Any 1\\ +J & 25\% 1--4 & 10\% 1--3 & Nil & Nil & Nil & Nil & Nil\\ +K & Nil & 30\% 1--6 & 10\% 1--2 & Nil & Nil & Nil & Nil\\ +L & Nil & Nil & Nil & Nil & Nil & 50\% 1--4\?Nil & Nil\\ +M & Nil & Nil & Nil & 40\% 2--8 & 50\% 5--30 & 55\% 5--20\?45\%~2--12 & Nil\\ +N & Nil & Nil & Nil & Nil & Nil & Nil & 40\% 2--8 potions\\ +O & Nil & Nil & Nil & Nil & Nil & Nil & 50\% 1--4 scrolls\\ +\end{tabularx} +% Can't have a footnote inside a float, here is a workaround +\begin{enumerate}[leftmargin=5cm,rightmargin=5cm] +\item[*] Roll twice, once for each category (Gems and Jewelry). The chances are the same unless two notations are made, in which case the order given is for ``Gems/Jewelry''. +\end{enumerate} +\end{onecolumnfloat} + +The coins, gems, jewelry and magic items that a party finds during +an adventure is known as \textbf{treasure}. Wealth (coins, gems, jewelry +and other items of value) is worth experience points to the player +and allows the player to pay for better equipment, hire more retainers, +and purchase special services (from higher level spell +casters, for example). Magic items will usually give a character +abilities not normally possessed and are useful on later adventures. +Treasure is normally found in the lairs of monsters, but may be +paid to a character by a high level NPC for performing a mission or +job. Treasures are determined randomly or chosen by the DM. The +DM should always determine the contents of a large treasure +hoard before play in order to determine how best to hide and protect +the treasure from theft, and if magic items are present, the DM +may want to allow the monsters to use the items, such as a bugbear +using a \textbf{sword\+1}. + +RANDOM TREASURES: To determine a monster's treasure at +random, the DM uses the following step-by-step procedure: +%\begin{description}[labelindent=1em,leftmargin=1em] +\begin{enumerate} +\item Find the Treasure Type in the monster description. Find the +same letter on the Treasure Types table hereafter; that +line will be used to find the actual treasure. +\item Read across the Treasure Type line to find which types of +treasure may be present. Each type will have a percentage +and a range. If the DM rolls (on d\%) a number equal to or +less than the percentage given, that type of treasure is +present. The DM should roll for each percentage and +make a note of what types are present. +\item Roll dice (the type depends on the range given) to find the +amount of each type of treasure (found in step 2, above) which is present. +\item If any magic items are present, the magic item subtables (page B46) +must be used to find the actual types. +\end{enumerate} + +PLACED TREASURES: The DM may choose treasures instead of +rolling for them randomly, or may choose a result if rolls give too +much or too little treasure. The choices should be made carefully, +since most of the experience the characters will get will be from +treasure (usually \threequarters or more). It will often be easier for the DM to +decide how much experience to give out (considering the size and +levels of experience in the party) and place the treasures to give +this result. However, the monsters should be tough enough to +make sure that the characters earn their treasure! + +ADJUSTMENTS TO TREASURE: Treasures A through O are +large, and generally only for use when large numbers or fairly difficult +monsters are encountered. The lairs of most human-like +monsters contain at least the number of creatures given as the +wilderness ``No. Appearing'' (the number in parentheses). An encounter +with less than a full lair should yield less treasure. On the +other hand if 1--4 is the ``No. Appearing'', even one will have the +normal amount of treasure, and no adjustment is necessary. + +The DM may create Treasure Types other than the ones listed. +Some other valuable items could be rugs, wall hangings, rare +wines, silverware and other kitchen items, or even animal skins. +The DM should give each special item a value, in gold pieces (and, +if the optional encumbrance rules are used, an encumbrance). + +To aid the DM, the average values (in gold pieces) of each treasure +type are given below. These averages do not include the possible +magic in the treasures. After rolling for treasures, the DM may refer +to this list to see whether the treasure is larger or smaller than +average and may then adjust the treasure as desired. + +\begin{tabular}{p{0.25cm} c r p{0.25cm} c r p{0.25cm} c r} +& A & 17,000 & & F & 5,000 & & J & 25\\ +& B & 2,000 & & G & 25,000 & & K & 125\\ +& C & 1,000 & & H & 50,000 & & L & 250\\ +& D & 4,000 & & I & 8,000 & & M & 15,000\\ +& E & 2,500\\ +\end{tabular} + +\end{document} diff --git a/macros/latex/contrib/rpg-module/examples/monster_manual.pdf b/macros/latex/contrib/rpg-module/examples/monster_manual.pdf new file mode 100644 index 0000000000..71b7fd9695 Binary files /dev/null and b/macros/latex/contrib/rpg-module/examples/monster_manual.pdf differ diff --git a/macros/latex/contrib/rpg-module/examples/monster_manual.tex b/macros/latex/contrib/rpg-module/examples/monster_manual.tex new file mode 100644 index 0000000000..af2d46c450 --- /dev/null +++ b/macros/latex/contrib/rpg-module/examples/monster_manual.tex @@ -0,0 +1,1115 @@ +%% monster_manual.tex +% +% Example file showing typesetting of all Basic statblocks for the Adventure Module class + +\documentclass[a4paper,serif]{rpg-module} + +\usepackage{lipsum} + +\begin{document} +\raggedbottom + +\title{Monster Manual} + +\showtitle + +This document shows how to list all of the monsters from the Basic Stats style (\verb|basic-stats.sty|). +Each monster is listed first in the ``New Monster'' format, then underneath as a statblock. In +Part~\ref{wandering_monsters}, the monsters are listed again in tabular format. + +\part{Monsters from the Basic/Expert Rulebooks} + +\begin{newmonster}{ant} +\lipsum[1] +\end{newmonster} +\statblock{ant}{3}{4 each} + +\begin{newmonster}{white_ape}\end{newmonster} +\statblock{white_ape}{3}{4 each} + +\begin{newmonster}{basilisk}\end{newmonster} +\statblock{basilisk}{3}{4 each} + +% Bat + +% Shorten the Vampire Bat name so it fits in the tabular format +\pgfkeys{/vampire_bat/SingleName/.initial = {Vampire Bat}} + +\begin{newmonster3}{bat}{giant_bat}{vampire_bat} +\lipsum[1] +\end{newmonster3} +% Restore the name to Giant Vampire Bat +\pgfkeys{/vampire_bat/SingleName/.initial = {Giant Vampire Bat}} +\statblock{bat}{3}{4 each} +\statblock{giant_bat}{3}{4 each} +\statblock{vampire_bat}{3}{4 each} + +% Bear + +\begin{newmonster2}{black_bear}{grizzly_bear}\end{newmonster2} +\begin{newmonster2*}{polar_bear}{cave_bear}{}{}\lipsum[2]\end{newmonster2*} +\statblock{black_bear}{3}{4 each} +\statblock{grizzly_bear}{3}{4 each} +\statblock{polar_bear}{3}{4 each} +\statblock{cave_bear}{3}{4 each} + +\begin{newmonster}{bee}\end{newmonster} +\statblock{bee}{3}{4 each} + +% Beetle + +\begin{newmonster3}{fire_beetle}{oil_beetle}{tiger_beetle}\lipsum[3]\end{newmonster3} +\statblock{fire_beetle}{3}{4 each} +\statblock{oil_beetle}{3}{4 each} +\statblock{tiger_beetle}{3}{4 each} + +\begin{newmonster}{black_pudding}\end{newmonster} +\statblock{black_pudding}{3}{4 each} + +\begin{newmonster}{blink_dog}\end{newmonster} +\statblock{blink_dog}{3}{4 each} + +\begin{newmonster}{boar}\end{newmonster} +\statblock{boar}{3}{4 each} + +\begin{newmonster}{bugbear}\end{newmonster} +\statblock{bugbear}{3}{4 each} + +\begin{newmonster}{caecilia}\end{newmonster} +\statblock{caecilia}{3}{4 each} + +\begin{newmonster}{camel}\end{newmonster} +\statblock{camel}{3}{4 each} + +\begin{newmonster}{carrion_crawler}\end{newmonster} +\statblock{carrion_crawler}{3}{4 each} + +% Great Cat + +\begin{newmonster3}{mountain_lion}{panther}{lion}\end{newmonster3} +\begin{newmonster2*}{tiger}{sabre_tooth_tiger}{}{}\lipsum[4]\end{newmonster2*} +\statblock{mountain_lion}{3}{4 each} +\statblock{panther}{3}{4 each} +\statblock{lion}{3}{4 each} +\statblock{tiger}{3}{4 each} +\statblock{sabre_tooth_tiger}{3}{4 each} + +\begin{newmonster}{cave_locust}\end{newmonster} +\statblock{cave_locust}{3}{4 each} + +\begin{newmonster}{centaur}\end{newmonster} +\statblock{centaur}{3}{4 each} + +\begin{newmonster}{centipede}\end{newmonster} +\statblock{centipede}{3}{4 each} + +\begin{newmonster}{chimera}\end{newmonster} +\statblock{chimera}{3}{4 each} + +\begin{newmonster}{cockatrice}\end{newmonster} +\statblock{cockatrice}{3}{4 each} + +\begin{newmonster}{crab}\end{newmonster} +\statblock{crab}{3}{4 each} + +% Crocodile + +\begin{newmonster3}{crocodile}{large_crocodile}{giant_crocodile}\end{newmonster3} +\statblock{crocodile}{3}{4 each} +\statblock{large_crocodile}{3}{4 each} +\statblock{giant_crocodile}{3}{4 each} + +\begin{newmonster}{cyclops}\end{newmonster} +\statblock{cyclops}{3}{4 each} + +% Dinosaur + +\begin{newmonster3}{stegosaurus}{triceratops}{tyrannosaurus_rex}\end{newmonster3} +\statblock{stegosaurus}{3}{4 each} +\statblock{triceratops}{3}{4 each} +\statblock{tyrannosaurus_rex}{3}{4 each} + +\begin{newmonster}{displacer_beast}\end{newmonster} +\statblock{displacer_beast}{3}{4 each} + +\begin{newmonster}{djinni}\end{newmonster} +\statblock{djinni}{3}{4 each} + +\begin{newmonster}{doppleganger}\end{newmonster} +\statblock{doppleganger}{3}{4 each} + +% Dragon + +\begin{newmonster}{white_dragon}\end{newmonster} +\statblock{white_dragon}{3}{4 each} + +\begin{newmonster}{black_dragon}\end{newmonster} +\statblock{black_dragon}{3}{4 each} + +\begin{newmonster}{green_dragon}\end{newmonster} +\statblock{green_dragon}{3}{4 each} + +\begin{newmonster}{blue_dragon}\end{newmonster} +\statblock{blue_dragon}{3}{4 each} + +\begin{newmonster}{red_dragon}\end{newmonster} +\statblock{red_dragon}{3}{4 each} + +\begin{newmonster}{gold_dragon}\end{newmonster} +\statblock{gold_dragon}{3}{4 each} + +\begin{newmonster}{dragon_turtle}\end{newmonster} +\statblock{dragon_turtle}{3}{4 each} + +\begin{newmonster}{dryad}\end{newmonster} +\statblock{dryad}{3}{4 each} + +\begin{newmonster}{dwarf}\end{newmonster} +\statblock{dwarf}{3}{4 each} + +\begin{newmonster}{efreeti}\end{newmonster} +\statblock{efreeti}{3}{4 each} + +% Elemental + +\begin{newmonster2}{air_elemental}{earth_elemental}\end{newmonster2} +\begin{newmonster2*}{fire_elemental}{water_elemental}{}{}\end{newmonster2*} +\statblock{lesser_air_elemental}{3}{4 each} +\statblock{air_elemental}{3}{4 each} +\statblock{greater_air_elemental}{3}{4 each} +\statblock{lesser_earth_elemental}{3}{4 each} +\statblock{earth_elemental}{3}{4 each} +\statblock{greater_earth_elemental}{3}{4 each} +\statblock{lesser_fire_elemental}{3}{4 each} +\statblock{fire_elemental}{3}{4 each} +\statblock{greater_fire_elemental}{3}{4 each} +\statblock{lesser_water_elemental}{3}{4 each} +\statblock{water_elemental}{3}{4 each} +\statblock{greater_water_elemental}{3}{4 each} + +\begin{newmonster}{elephant}\end{newmonster} +\statblock{elephant}{3}{4 each} + +\begin{newmonster}{elf}\end{newmonster} +\statblock{elf}{3}{4 each} + +\begin{newmonster}{ferret}\end{newmonster} +\statblock{ferret}{3}{4 each} + +% Giant Fish + +\begin{newmonster2}{piranha}{rockfish}\end{newmonster2} +\begin{newmonster2*}{catfish}{sturgeon}{}{}\end{newmonster2*} +\statblock{piranha}{3}{4 each} +\statblock{rockfish}{3}{4 each} +\statblock{catfish}{3}{4 each} +\statblock{sturgeon}{3}{4 each} + +\begin{newmonster}{gargoyle}\end{newmonster} +\statblock{gargoyle}{3}{4 each} + +\begin{newmonster}{gelatinous_cube}\end{newmonster} +\statblock{gelatinous_cube}{3}{4 each} + +\begin{newmonster}{ghoul}\end{newmonster} +\statblock{ghoul}{3}{4 each} + +% Giant + +\begin{newmonster3}{hill_giant}{stone_giant}{frost_giant}\end{newmonster3} +\begin{newmonster3*}{fire_giant}{cloud_giant}{storm_giant}{}{}\end{newmonster3*} +\statblock{hill_giant}{3}{4 each} +\statblock{stone_giant}{3}{4 each} +\statblock{frost_giant}{3}{4 each} +\statblock{fire_giant}{3}{4 each} +\statblock{cloud_giant}{3}{4 each} +\statblock{storm_giant}{3}{4 each} + +\begin{newmonster}{gnoll}\end{newmonster} +\statblock{gnoll}{3}{4 each} + +\begin{newmonster}{gnome}\end{newmonster} +\statblock{gnome}{3}{4 each} + +\begin{newmonster}{goblin}\end{newmonster} +\statblock{goblin}{3}{4 each} + +% Golem + +\begin{newmonster2}{wood_golem}{bone_golem}\end{newmonster2} +\begin{newmonster2*}{amber_golem}{bronze_golem}{}{}\end{newmonster2*} +\statblock{wood_golem}{3}{4 each} +\statblock{bone_golem}{3}{4 each} +\statblock{amber_golem}{3}{4 each} +\statblock{bronze_golem}{3}{4 each} + +\begin{newmonster}{gorgon}\end{newmonster} +\statblock{gorgon}{3}{4 each} + +\begin{newmonster}{gray_ooze}\end{newmonster} +\statblock{gray_ooze}{3}{4 each} +\statblock{grey_ooze}{3}{4 each} + +\begin{newmonster}{green_slime}\end{newmonster} +\statblock{green_slime}{3}{4 each} + +\begin{newmonster}{griffon}\end{newmonster} +\statblock{griffon}{3}{4 each} + +\begin{newmonster}{halfling}\end{newmonster} +\statblock{halfling}{3}{4 each} + +\begin{newmonster}{harpy}\end{newmonster} +\statblock{harpy}{3}{4 each} + +% Hawk + +\begin{newmonster2}{hawk}{hawk_giant}\end{newmonster2} +\statblock{hawk}{3}{4 each} +\statblock{hawk_giant}{3}{4 each} + +% Herd Animal + +\begin{newmonster3}{antelope}{goat}{deer}\end{newmonster3} +\begin{newmonster2*}{caribou}{ox}{}{}\end{newmonster2*} +\begin{newmonster2*}{elk}{moose}{}{}\end{newmonster2*} +\statblock{antelope}{3}{4 each} +\statblock{goat}{3}{4 each} +\statblock{deer}{3}{4 each} +\statblock{caribou}{3}{4 each} +\statblock{ox}{3}{4 each} +\statblock{elk}{3}{4 each} +\statblock{moose}{3}{4 each} + +% Hellhound + +\begin{newmonster}{hellhound}\end{newmonster} +\statblock{hellhound_3}{3}{4 each} +\statblock{hellhound_4}{3}{4 each} +\statblock{hellhound_5}{3}{4 each} +\statblock{hellhound_6}{3}{4 each} +\statblock{hellhound_7}{3}{4 each} + +\begin{newmonster}{hippogriff}\end{newmonster} +\statblock{hippogriff}{3}{4 each} + +\begin{newmonster}{hobgoblin}\end{newmonster} +\statblock{hobgoblin}{3}{4 each} + +% Horse + +\begin{newmonster3}{riding_horse}{war_horse}{draft_horse}\end{newmonster3} +\statblock{riding_horse}{3}{4 each} +\statblock{war_horse}{3}{4 each} +\statblock{draft_horse}{3}{4 each} + +% Hydra + +\begin{newmonster}{hydra}\end{newmonster} +\statblock{hydra_5}{3}{4 each} +\statblock{hydra_6}{3}{4 each} +\statblock{hydra_7}{3}{4 each} +\statblock{hydra_8}{3}{4 each} +\statblock{hydra_9}{3}{4 each} +\statblock{hydra_10}{3}{4 each} +\statblock{hydra_11}{3}{4 each} +\statblock{hydra_12}{3}{4 each} + +% Insect Swarm + +\begin{newmonster}{insect_swarm}\end{newmonster} +\statblock{insect_swarm_2}{3}{4 each} +\statblock{insect_swarm_3}{3}{4 each} +\statblock{insect_swarm_4}{3}{4 each} + +\begin{newmonster}{invisible_stalker}\end{newmonster} +\statblock{invisible_stalker}{3}{4 each} + +\begin{newmonster}{kobold}\end{newmonster} +\statblock{kobold}{3}{4 each} + +\begin{newmonster}{leech}\end{newmonster} +\statblock{leech}{3}{4 each} + +% Living Statue + +\begin{newmonster3}{living_crystal_statue}{living_iron_statue}{living_rock_statue}\end{newmonster3} +\statblock{living_crystal_statue}{3}{4 each} +\statblock{living_iron_statue}{3}{4 each} +\statblock{living_rock_statue}{3}{4 each} + +% Giant Lizard + +\begin{newmonster2}{gecko}{draco}\end{newmonster2} +\begin{newmonster2*}{horned_chameleon}{tuatara}{}{}\end{newmonster2*} +\statblock{gecko}{3}{4 each} +\statblock{draco}{3}{4 each} +\statblock{horned_chameleon}{3}{4 each} +\statblock{tuatara}{3}{4 each} + +\begin{newmonster}{lizard_man}\end{newmonster} +\statblock{lizard_man}{3}{4 each} + +% Lycanthrope + +\begin{newmonster3}{wererat}{werewolf}{wereboar}\end{newmonster3} +\begin{newmonster3*}{weretiger}{werebear}{devil_swine}{}{}\end{newmonster3*} +\statblock{wererat}{3}{4 each} +\statblock{werewolf}{3}{4 each} +\statblock{wereboar}{3}{4 each} +\statblock{weretiger}{3}{4 each} +\statblock{werebear}{3}{4 each} +\statblock{devil_swine}{3}{4 each} + +\begin{newmonster}{manticore}\end{newmonster} +\statblock{manticore}{3}{4 each} + +\begin{newmonster}{mastodon}\end{newmonster} +\statblock{mastodon}{3}{4 each} + +\begin{newmonster}{medusa}\end{newmonster} +\statblock{medusa}{3}{4 each} + +% Men + +\begin{newmonster3}{normal_human}{acolyte}{medium}\end{newmonster3} +\begin{newmonster3*}{veteran}{berserker}{bandit}{}{}\end{newmonster3*} +\begin{newmonster3*}{brigand}{buccaneer}{pirate}{}{}\end{newmonster3*} +\begin{newmonster3*}{nomad}{dervish}{merchant}{}{}\end{newmonster3*} +\begin{newmonster2*}{trader}{noble}{}{}\end{newmonster2*} +\statblock{normal_human}{3}{4 each} +\statblock{acolyte}{3}{4 each} +\statblock{medium}{3}{4 each} +\statblock{veteran_1}{3}{4 each} +\statblock{veteran_2}{3}{4 each} +\statblock{veteran_3}{3}{4 each} +\statblock{berserker}{3}{4 each} +\statblock{bandit}{3}{4 each} +\statblock{brigand}{3}{4 each} +\statblock{brigand_chain}{3}{4 each} +\statblock{buccaneer}{3}{4 each} +\statblock{buccaneer_chain}{3}{4 each} +\statblock{pirate}{3}{4 each} +\statblock{pirate_chain}{3}{4 each} +\statblock{nomad}{3}{4 each} +\statblock{nomad_chain}{3}{4 each} +\statblock{dervish}{3}{4 each} +\statblock{dervish_chain}{3}{4 each} +\statblock{merchant}{3}{4 each} +\statblock{trader}{3}{4 each} +\statblock{noble}{3}{4 each} + +\begin{newmonster}{merman}\end{newmonster} +\statblock{merman_1}{3}{4 each} +\statblock{merman_2}{3}{4 each} +\statblock{merman_3}{3}{4 each} +\statblock{merman_4}{3}{4 each} + +\begin{newmonster}{minotaur}\end{newmonster} +\statblock{minotaur}{3}{4 each} + +\begin{newmonster}{mule}\end{newmonster} +\statblock{mule}{3}{4 each} + +\begin{newmonster}{mummy}\end{newmonster} +\statblock{mummy}{3}{4 each} + +\begin{newmonster}{neanderthal}\end{newmonster} +\statblock{neanderthal}{3}{4 each} + +\begin{newmonster}{nixie}\end{newmonster} +\statblock{nixie}{3}{4 each} + +\begin{newmonster}{ochre_jelly}\end{newmonster} +\statblock{ochre_jelly}{3}{4 each} + +\begin{newmonster}{octopus}\end{newmonster} +\statblock{octopus}{3}{4 each} + +\begin{newmonster}{ogre}\end{newmonster} +\statblock{ogre}{3}{4 each} + +\begin{newmonster}{orc}\end{newmonster} +\statblock{orc}{3}{4 each} + +\begin{newmonster}{owl_bear}\end{newmonster} +\statblock{owl_bear}{3}{4 each} + +\begin{newmonster}{pegasus}\end{newmonster} +\statblock{pegasus}{3}{4 each} + +\begin{newmonster}{pixie}\end{newmonster} +\statblock{pixie}{3}{4 each} + +% Pterodactyl + +\begin{newmonster2}{pterodactyl}{pteranodon}\end{newmonster2} +\statblock{pterodactyl}{3}{4 each} +\statblock{pteranodon}{3}{4 each} + +\begin{newmonster}{purple_worm}\end{newmonster} +\statblock{purple_worm}{3}{4 each} + +% Rat + +\begin{newmonster2}{rat}{giant_rat} +\lipsum[1] +\end{newmonster2} +\statblock{rat}{3}{4 each} +\statblock{giant_rat}{3}{4 each} + +\begin{newmonster}{rhagodessa}\end{newmonster} +\statblock{rhagodessa}{3}{4 each} + +% Rhinoceros + +\begin{newmonster2}{rhinoceros}{wooly_rhinoceros}\end{newmonster2} +\statblock{rhinoceros}{3}{4 each} +\statblock{wooly_rhinoceros}{3}{4 each} + +\begin{newmonster}{robber_fly}\end{newmonster} +\statblock{robber_fly}{3}{4 each} + +% Roc + +\begin{newmonster3}{small_roc}{large_roc}{giant_roc}\end{newmonster3} +\statblock{small_roc}{3}{4 each} +\statblock{large_roc}{3}{4 each} +\statblock{giant_roc}{3}{4 each} + +\begin{newmonster}{rock_baboon}\end{newmonster} +\statblock{rock_baboon}{3}{4 each} + +\begin{newmonster}{rust_monster}\end{newmonster} +\statblock{rust_monster}{3}{4 each} + +% Salamander + +\begin{newmonster2}{flame_salamander}{frost_salamander}\end{newmonster2} +\statblock{flame_salamander}{3}{4 each} +\statblock{frost_salamander}{3}{4 each} + +\begin{newmonster}{scorpion}\end{newmonster} +\statblock{scorpion}{3}{4 each} + +\begin{newmonster}{sea_dragon}\end{newmonster} +\statblock{sea_dragon_5}{3}{4 each} +\statblock{sea_dragon_6}{3}{4 each} +\statblock{sea_dragon_7}{3}{4 each} +\statblock{sea_dragon_8}{3}{4 each} +\statblock{sea_dragon_9}{3}{4 each} +\statblock{sea_dragon_10}{3}{4 each} +\statblock{sea_dragon_11}{3}{4 each} + +\begin{newmonster}{sea_serpent}\end{newmonster} +\statblock{sea_serpent}{3}{4 each} + +\begin{newmonster}{shadow}\end{newmonster} +\statblock{shadow}{3}{4 each} + +% Shark + +\begin{newmonster3}{bull_shark}{mako_shark}{great_white_shark}\end{newmonster3} +\statblock{bull_shark}{3}{4 each} +\statblock{mako_shark}{3}{4 each} +\statblock{great_white_shark}{3}{4 each} + +\begin{newmonster}{shrew}\end{newmonster} +\statblock{shrew}{3}{4 each} + +\begin{newmonster}{shrieker}\end{newmonster} +\statblock{shrieker}{3}{4 each} + +\begin{newmonster}{skeleton}\end{newmonster} +\statblock{skeleton}{3}{4 each} + +% Snake + +\begin{newmonster3}{spitting_cobra}{pit_viper}{sea_snake}\end{newmonster3} +\begin{newmonster2*}{rattlesnake}{rock_python}{}{}\end{newmonster2*} +\statblock{spitting_cobra}{3}{4 each} +\statblock{pit_viper}{3}{4 each} +\statblock{sea_snake}{3}{4 each} +\statblock{rattlesnake}{3}{4 each} +\statblock{rock_python}{3}{4 each} + +\begin{newmonster}{spectre}\end{newmonster} +\statblock{spectre}{3}{4 each} + +% Spider + +\begin{newmonster3}{crab_spider}{black_widow}{tarantella}\end{newmonster3} +\statblock{crab_spider}{3}{4 each} +\statblock{black_widow}{3}{4 each} +\statblock{tarantella}{3}{4 each} + +\begin{newmonster}{sprite}\end{newmonster} +\statblock{sprite}{3}{4 each} + +\begin{newmonster}{squid}\end{newmonster} +\statblock{squid}{3}{4 each} + +\begin{newmonster}{stirge}\end{newmonster} +\statblock{stirge}{3}{4 each} + +% Termite + +\begin{newmonster3}{swamp_termite}{freshwater_termite}{sea_termite}\end{newmonster3} +\statblock{swamp_termite}{3}{4 each} +\statblock{freshwater_termite}{3}{4 each} +\statblock{sea_termite}{3}{4 each} + +\begin{newmonster}{thoul}\end{newmonster} +\statblock{thoul}{3}{4 each} + +\begin{newmonster}{titanothere}\end{newmonster} +\statblock{titanothere}{3}{4 each} + +\begin{newmonster}{toad}\end{newmonster} +\statblock{toad}{3}{4 each} + +\begin{newmonster}{treant}\end{newmonster} +\statblock{treant}{3}{4 each} + +\begin{newmonster}{troglodyte}\end{newmonster} +\statblock{troglodyte}{3}{4 each} + +\begin{newmonster}{troll}\end{newmonster} +\statblock{troll}{3}{4 each} + +\begin{newmonster}{unicorn}\end{newmonster} +\statblock{unicorn}{3}{4 each} + +\begin{newmonster}{vampire}\end{newmonster} +\statblock{vampire_7}{3}{4 each} +\statblock{vampire_8}{3}{4 each} +\statblock{vampire_9}{3}{4 each} + +\begin{newmonster}{weasel}\end{newmonster} +\statblock{weasel}{3}{4 each} + +% Whale + +\begin{newmonster3}{killer_whale}{narwhal}{sperm_whale}\end{newmonster3} +\statblock{killer_whale}{3}{4 each} +\statblock{narwhal}{3}{4 each} +\statblock{sperm_whale}{3}{4 each} + +\begin{newmonster}{wight}\end{newmonster} +\statblock{wight}{3}{4 each} + +% Wolf + +\begin{newmonster2}{wolf}{dire_wolf}\end{newmonster2} +\statblock{wolf}{3}{4 each} +\statblock{dire_wolf}{3}{4 each} + +\begin{newmonster}{wraith}\end{newmonster} +\statblock{wraith}{3}{4 each} + +\begin{newmonster}{wyvern}\end{newmonster} +\statblock{wyvern}{3}{4 each} + +\begin{newmonster}{yellow_mold}\end{newmonster} +\statblock{yellow_mold}{3}{4 each} +\statblock{yellow_mould}{3}{4 each} + +\begin{newmonster}{zombie}\end{newmonster} +\statblock{zombie}{3}{4 each} + +\part{Monsters from B3: Palace of the Silver Princess} + +\begin{newmonster}{archer_bush_orange} +This is the Archer Bush from the 1st edition of B3, with the orange cover. +\end{newmonster} +\statblock{archer_bush_orange}{3}{4 each} +\begin{newmonster}{archer_bush} +This is the Archer Bush from the 2nd edition of B3, with the green cover. +\end{newmonster} +\statblock{archer_bush}{3}{4 each} +\begin{newmonster}{baric}\end{newmonster} +\statblock{baric}{3}{4 each} +\begin{newmonster}{bubble}\end{newmonster} +\statblock{bubble}{3}{4 each} +\begin{newmonster}{decapus_orange} +This is the Decapus from the 1st (orange) edition of B3. +\end{newmonster} +\statblock{decapus_orange}{3}{4 each} +\begin{newmonster}{decapus} +This is the Decapus from the 2nd (green) edition of B3. +\end{newmonster} +\statblock{decapus}{3}{4 each} +\begin{newmonster}{diger}\end{newmonster} +\statblock{diger}{3}{4 each} +\begin{newmonster}{ghost}\end{newmonster} +\statblock{ghost}{3}{4 each} +\begin{newmonster}{marble_snake}\end{newmonster} +\statblock{marble_snake}{3}{4 each} +\begin{newmonster}{jupiter_blood_sucker} +The Jupiter Blood Sucker appeared in the 1st edition of B3, and was replaced by the Vampire Rose in the 2nd edition. +\end{newmonster} +\statblock{jupiter_blood_sucker}{3}{4 each} +\begin{newmonster}{marmoset}\end{newmonster} +\statblock{marmoset}{3}{4 each} +\begin{newmonster}{protector}\end{newmonster} +\statblock{protector}{3}{4 each} +\begin{newmonster}{purple_moss}\end{newmonster} +\statblock{purple_moss}{3}{4 each} +\begin{newmonster}{ubue}\end{newmonster} +\statblock{ubue}{3}{4 each} +\begin{newmonster}{vampire_rose} +Appeared in the 2nd edition of B3 and also in X2 (Castle Amber). Supplanted the Jupiter Blood Sucker from the 1st edition of B3. +\end{newmonster} +\statblock{vampire_rose}{3}{4 each} + +\part{Monsters from B4: The Lost City} + +\begin{newmonster}{banshee}\end{newmonster} +\statblock{banshee}{3}{4 each} +\begin{newmonster}{cynidicean}\end{newmonster} +\statblock{cynidicean}{3}{4 each} +\begin{newmonster}{werefox}\end{newmonster} +\statblock{werefox}{3}{4 each} +\begin{newmonster}{polymar}\end{newmonster} +\statblock{polymar}{3}{4 each} +\begin{newmonster}{zargon}\end{newmonster} +\statblock{zargon}{1}{80} + +\part{Monsters from X1: Isle of Dread} + +\begin{newmonster3}{allosaurus}{ankylosaurus}{brontosaurus}\end{newmonster3} +\begin{newmonster3*}{dimetrodon}{plesiosaurus}{trachodon}{}{}\end{newmonster3*} +\statblock{allosaurus}{3}{4 each} +\statblock{ankylosaurus}{3}{4 each} +\statblock{brontosaurus}{3}{4 each} +\statblock{dimetrodon}{3}{4 each} +\statblock{plesiosaurus}{3}{4 each} +\statblock{trachodon}{3}{4 each} + +\begin{newmonster}{aranea} +Appeared in X1 and also in X2 (Castle Amber). +\end{newmonster} +\statblock{aranea}{3}{4 each} +\begin{newmonster}{giant_elk}\end{newmonster} +\statblock{giant_elk}{3}{4 each} +\begin{newmonster}{grangeri}\end{newmonster} +\statblock{grangeri}{3}{4 each} +\begin{newmonster}{kopru}\end{newmonster} +\statblock{kopru}{3}{4 each} +\begin{newmonster}{megatherium}\end{newmonster} +\statblock{megatherium}{3}{4 each} +\begin{newmonster}{native}\end{newmonster} +\statblock{native}{3}{4 each} +\begin{newmonster}{oyster}\end{newmonster} +\statblock{oyster}{3}{4 each} +\begin{newmonster}{phanaton}\end{newmonster} +\statblock{phanaton}{3}{4 each} +\begin{newmonster}{phororhacos}\end{newmonster} +\statblock{phororhacos}{3}{4 each} +\begin{newmonster}{rakasta} +Appeared in X1 and also in X2 (Castle Amber). +\end{newmonster} +\statblock{rakasta}{3}{4 each} + +\part{Monsters from X2: Castle Amber} + +\begin{newmonster}{amber_lotus_flower}\end{newmonster} +\statblock{amber_lotus_flower}{3}{4 each} + +\begin{newmonster}{amoeba}\end{newmonster} +\statblock{amoeba_10}{3}{4 each} +\statblock{amoeba_11}{3}{4 each} +\statblock{amoeba_12}{3}{4 each} +\statblock{amoeba_13}{3}{4 each} +\statblock{amoeba_14}{3}{4 each} +\statblock{amoeba_15}{3}{4 each} + +\begin{newmonster}{brain_collector}\end{newmonster} +\statblock{brain_collector}{3}{4 each} +\begin{newmonster}{death_demon}\end{newmonster} +\statblock{death_demon}{3}{4 each} +\begin{newmonster}{mud_golem}\end{newmonster} +\statblock{mud_golem}{3}{4 each} +\begin{newmonster}{grab_grass}\end{newmonster} +\statblock{grab_grass}{3}{4 each} +\begin{newmonster}{gremlin}\end{newmonster} +\statblock{gremlin}{3}{4 each} +\begin{newmonster}{killer_tree}\end{newmonster} +\statblock{killer_tree}{3}{4 each} +\begin{newmonster}{lupin}\end{newmonster} +\statblock{lupin}{3}{4 each} + +\begin{newmonster2}{hypnos_magen}{demos_magen}\end{newmonster2} +\begin{newmonster2*}{caldron_magen}{galvan_magen}{}{}\end{newmonster2*} +\statblock{hypnos_magen}{3}{4 each} +\statblock{demos_magen}{3}{4 each} +\statblock{caldron_magen}{3}{4 each} +\statblock{galvan_magen}{3}{4 each} + +\begin{newmonster}{pagan}\end{newmonster} +\statblock{pagan}{3}{4 each} +\begin{newmonster}{phantom}\end{newmonster} +\statblock{phantom}{3}{4 each} +\begin{newmonster}{slime_worm}\end{newmonster} +\statblock{slime_worm}{3}{4 each} + +\begin{newmonster}{sun_brother}\end{newmonster} +\statblock{sun_brother_10}{3}{4 each} +\statblock{sun_brother_11}{3}{4 each} +\statblock{sun_brother_12}{3}{4 each} +\statblock{sun_brother_13}{3}{4 each} +\statblock{sun_brother_14}{3}{4 each} + +\onecolumn + +\part{Monsters Listed in Tabular Form} +\label{wandering_monsters} +\begin{wanderingmonsters} +\wanderitem{acolyte}{} +\wanderitem{air_elemental}{} +\wanderitem{allosaurus}{} +\wanderitem{amber_golem}{} +\wanderitem{amber_lotus_flower}{} +\wanderitem{amoeba_10}{} +\wanderitem{amoeba_11}{} +\wanderitem{amoeba_12}{} +\wanderitem{amoeba_13}{} +\wanderitem{amoeba_14}{} +\wanderitem{amoeba_15}{} +\wanderitem{ankylosaurus}{} +\wanderitem{ant}{} +\wanderitem{antelope}{} +\wanderitem{aranea}{} +\wanderitem{archer_bush}{} +\wanderitem{archer_bush_orange}{} +\wanderitem{bandit}{} +\wanderitem{banshee}{} +\wanderitem{baric}{} +\wanderitem{basilisk}{} +\wanderitem{bat}{} +\wanderitem{bee}{} +\wanderitem{berserker}{} +\wanderitem{black_bear}{} +\wanderitem{black_dragon}{} +\wanderitem{black_pudding}{} +\wanderitem{black_widow}{} +\wanderitem{blink_dog}{} +\wanderitem{blue_dragon}{} +\wanderitem{boar}{} +\wanderitem{bone_golem}{} +\wanderitem{brain_collector}{} +\wanderitem{brigand}{} +\wanderitem{brigand_chain}{} +\wanderitem{brontosaurus}{} +\wanderitem{bronze_golem}{} +\wanderitem{bubble}{} +\wanderitem{buccaneer}{} +\wanderitem{buccaneer_chain}{} +\wanderitem{bugbear}{} +\wanderitem{bull_shark}{} +\wanderitem{caecilia}{} +\wanderitem{caldron_magen}{} +\wanderitem{camel}{} +\wanderitem{caribou}{} +\wanderitem{carrion_crawler}{} +\wanderitem{catfish}{} +\wanderitem{cave_bear}{} +\end{wanderingmonsters} +\begin{wanderingmonsters} +\wanderitem[50]{cave_locust}{} +\wanderitem{centaur}{} +\wanderitem{centipede}{} +\wanderitem{chimera}{} +\wanderitem{cloud_giant}{} +\wanderitem{cockatrice}{} +\wanderitem{crab}{} +\wanderitem{crab_spider}{} +\wanderitem{crocodile}{} +\wanderitem{cyclops}{} +\wanderitem{cynidicean}{} +\wanderitem{death_demon}{} +\wanderitem{decapus}{} +\wanderitem{decapus_orange}{} +\wanderitem{deer}{} +\wanderitem{demos_magen}{} +\wanderitem{dervish}{} +\wanderitem{dervish_chain}{} +\wanderitem{devil_swine}{} +\wanderitem{diger}{} +\wanderitem{dimetrodon}{} +\wanderitem{dire_wolf}{} +\wanderitem{displacer_beast}{} +\wanderitem{djinni}{} +\wanderitem{doppleganger}{} +\wanderitem{draco}{} +\wanderitem{draft_horse}{} +\wanderitem{dragon_turtle}{} +\wanderitem{dryad}{} +\wanderitem{dwarf}{} +\wanderitem{earth_elemental}{} +\wanderitem{efreeti}{} +\wanderitem{elephant}{} +\wanderitem{elf}{} +\wanderitem{elk}{} +\wanderitem{ferret}{} +\wanderitem{fire_beetle}{} +\wanderitem{fire_elemental}{} +\wanderitem{fire_giant}{} +\wanderitem{flame_salamander}{} +\wanderitem{freshwater_termite}{} +\wanderitem{frost_giant}{} +\wanderitem{frost_salamander}{} +\wanderitem{galvan_magen}{} +\wanderitem{gargoyle}{} +\wanderitem{gecko}{} +\wanderitem{gelatinous_cube}{} +\wanderitem{ghost}{} +\wanderitem{ghoul}{} +\wanderitem{giant_bat}{} +\wanderitem{giant_crocodile}{} +\wanderitem{giant_elk}{} +\wanderitem{giant_rat}{} +\wanderitem{giant_roc}{} +\end{wanderingmonsters} +\begin{wanderingmonsters} +\wanderitem[104]{gnoll}{} +\wanderitem{gnome}{} +\wanderitem{goat}{} +\wanderitem{goblin}{} +\wanderitem{gold_dragon}{} +\wanderitem{gorgon}{} +\wanderitem{grab_grass}{} +\wanderitem{grangeri}{} +\wanderitem{gray_ooze}{} +\wanderitem{greater_air_elemental}{} +\wanderitem{greater_earth_elemental}{} +\wanderitem{greater_fire_elemental}{} +\wanderitem{greater_water_elemental}{} +\wanderitem{great_white_shark}{} +\wanderitem{green_dragon}{} +\wanderitem{green_slime}{} +\wanderitem{gremlin}{} +\wanderitem{grey_ooze}{} +\wanderitem{griffon}{} +\wanderitem{grizzly_bear}{} +\wanderitem{halfling}{} +\wanderitem{harpy}{} +\wanderitem{hawk}{} +\wanderitem{hawk_giant}{} +\wanderitem{hellhound_3}{} +\wanderitem{hellhound_4}{} +\wanderitem{hellhound_5}{} +\wanderitem{hellhound_6}{} +\wanderitem{hellhound_7}{} +\wanderitem{hill_giant}{} +\wanderitem{hippogriff}{} +\wanderitem{hobgoblin}{} +\wanderitem{horned_chameleon}{} +\wanderitem{hydra_10}{} +\wanderitem{hydra_11}{} +\wanderitem{hydra_12}{} +\wanderitem{hydra_5}{} +\wanderitem{hydra_6}{} +\wanderitem{hydra_7}{} +\wanderitem{hydra_8}{} +\wanderitem{hydra_9}{} +\wanderitem{hypnos_magen}{} +\wanderitem{insect_swarm_2}{} +\wanderitem{insect_swarm_3}{} +\wanderitem{insect_swarm_4}{} +\wanderitem{invisible_stalker}{} +\wanderitem{jupiter_blood_sucker}{} +\wanderitem{killer_tree}{} +\wanderitem{killer_whale}{} +\wanderitem{kobold}{} +\wanderitem{kopru}{} +\wanderitem{large_crocodile}{} +\wanderitem{large_roc}{} +\wanderitem{leech}{} +\end{wanderingmonsters} +\begin{wanderingmonsters} +\wanderitem[158]{lesser_air_elemental}{} +\wanderitem{lesser_earth_elemental}{} +\wanderitem{lesser_fire_elemental}{} +\wanderitem{lesser_water_elemental}{} +\wanderitem{lion}{} +\wanderitem{living_crystal_statue}{} +\wanderitem{living_iron_statue}{} +\wanderitem{living_rock_statue}{} +\wanderitem{lizard_man}{} +\wanderitem{lupin}{} +\wanderitem{mako_shark}{} +\wanderitem{manticore}{} +\wanderitem{marble_snake}{} +\wanderitem{marmoset}{} +\wanderitem{mastodon}{} +\wanderitem{medium}{} +\wanderitem{medusa}{} +\wanderitem{megatherium}{} +\wanderitem{merchant}{} +\wanderitem{merman_1}{} +\wanderitem{merman_2}{} +\wanderitem{merman_3}{} +\wanderitem{merman_4}{} +\wanderitem{minotaur}{} +\wanderitem{moose}{} +\wanderitem{mountain_lion}{} +\wanderitem{mud_golem}{} +\wanderitem{mule}{} +\wanderitem{mummy}{} +\wanderitem{narwhal}{} +\wanderitem{native}{} +\wanderitem{neanderthal}{} +\wanderitem{nixie}{} +\wanderitem{noble}{} +\wanderitem{nomad}{} +\wanderitem{nomad_chain}{} +\wanderitem{normal_human}{} +\wanderitem{ochre_jelly}{} +\wanderitem{octopus}{} +\wanderitem{ogre}{} +\wanderitem{oil_beetle}{} +\wanderitem{orc}{} +\wanderitem{owl_bear}{} +\wanderitem{ox}{} +\wanderitem{oyster}{} +\wanderitem{pagan}{} +\wanderitem{panther}{} +\wanderitem{pegasus}{} +\wanderitem{phanaton}{} +\wanderitem{phantom}{} +\wanderitem{phororhacos}{} +\wanderitem{piranha}{} +\wanderitem{pirate}{} +\wanderitem{pirate_chain}{} +\end{wanderingmonsters} +\begin{wanderingmonsters} +\wanderitem[212]{pit_viper}{} +\wanderitem{pixie}{} +\wanderitem{plesiosaurus}{} +\wanderitem{polar_bear}{} +\wanderitem{polymar}{} +\wanderitem{protector}{} +\wanderitem{pteranodon}{} +\wanderitem{pterodactyl}{} +\wanderitem{purple_moss}{} +\wanderitem{purple_worm}{} +\wanderitem{rakasta}{} +\wanderitem{rat}{} +\wanderitem{rattlesnake}{} +\wanderitem{red_dragon}{} +\wanderitem{rhagodessa}{} +\wanderitem{rhinoceros}{} +\wanderitem{riding_horse}{} +\wanderitem{robber_fly}{} +\wanderitem{rock_baboon}{} +\wanderitem{rockfish}{} +\wanderitem{rock_python}{} +\wanderitem{rust_monster}{} +\wanderitem{sabre_tooth_tiger}{} +\wanderitem{scorpion}{} +\wanderitem{sea_dragon_10}{} +\wanderitem{sea_dragon_11}{} +\wanderitem{sea_dragon_5}{} +\wanderitem{sea_dragon_6}{} +\wanderitem{sea_dragon_7}{} +\wanderitem{sea_dragon_8}{} +\wanderitem{sea_dragon_9}{} +\wanderitem{sea_serpent}{} +\wanderitem{sea_snake}{} +\wanderitem{sea_termite}{} +\wanderitem{shadow}{} +\wanderitem{shrew}{} +\wanderitem{shrieker}{} +\wanderitem{skeleton}{} +\wanderitem{slime_worm}{} +\wanderitem{small_roc}{} +\wanderitem{spectre}{} +\wanderitem{sperm_whale}{} +\wanderitem{spitting_cobra}{} +\wanderitem{sprite}{} +\wanderitem{squid}{} +\wanderitem{stegosaurus}{} +\wanderitem{stirge}{} +\wanderitem{stone_giant}{} +\wanderitem{storm_giant}{} +\wanderitem{sturgeon}{} +\wanderitem{sun_brother_10}{} +\wanderitem{sun_brother_11}{} +\wanderitem{sun_brother_12}{} +\wanderitem{sun_brother_13}{} +\end{wanderingmonsters} +\begin{wanderingmonsters} +\wanderitem[266]{sun_brother_14}{} +\wanderitem{swamp_termite}{} +\wanderitem{tarantella}{} +\wanderitem{thoul}{} +\wanderitem{tiger}{} +\wanderitem{tiger_beetle}{} +\wanderitem{titanothere}{} +\wanderitem{toad}{} +\wanderitem{trachodon}{} +\wanderitem{trader}{} +\wanderitem{treant}{} +\wanderitem{triceratops}{} +\wanderitem{troglodyte}{} +\wanderitem{troll}{} +\wanderitem{tuatara}{} +\wanderitem{tyrannosaurus_rex}{} +\wanderitem{ubue}{} +\wanderitem{unicorn}{} +\wanderitem{vampire_7}{} +\wanderitem{vampire_8}{} +\wanderitem{vampire_9}{} +\wanderitem{vampire_bat}{} +\wanderitem{vampire_rose}{} +\wanderitem{veteran_1}{} +\wanderitem{veteran_2}{} +\wanderitem{veteran_3}{} +\wanderitem{war_horse}{} +\wanderitem{water_elemental}{} +\wanderitem{weasel}{} +\wanderitem{werebear}{} +\wanderitem{wereboar}{} +\wanderitem{werefox}{} +\wanderitem{wererat}{} +\wanderitem{weretiger}{} +\wanderitem{werewolf}{} +\wanderitem{white_ape}{} +\wanderitem{white_dragon}{} +\wanderitem{wight}{} +\wanderitem{wolf}{} +\wanderitem{wood_golem}{} +\wanderitem{wooly_rhinoceros}{} +\wanderitem{wraith}{} +\wanderitem{wyvern}{} +\wanderitem{yellow_mold}{} +\wanderitem{yellow_mould}{} +\wanderitem{zombie}{} +\wanderitem{zargon}{1} +\end{wanderingmonsters} + +\twocolumn + +% +% License section +% + +\part{Open Game Content} +\label{ogl} + +\begin{ogl} +\item System Reference Document, Copyright \copyright 2000--2003, Wizards of the Coast, Inc., by Jonathan Tweet, Monte Cook, +Skip Williams, Rich Baker, Andy Collins, David Noonan, Rich Redman, Bruce R. Cordell, John D. Rateliff, Thomas Reid, James +Wyatt, based on original material by E. Gary Gygax and Dave Arneson. +\end{ogl} + +% +% Table of Contents +% + +\newpage + +\tableofcontents + +\end{document} diff --git a/macros/latex/contrib/rpg-module/examples/x2.pdf b/macros/latex/contrib/rpg-module/examples/x2.pdf new file mode 100644 index 0000000000..99884c7eb9 Binary files /dev/null and b/macros/latex/contrib/rpg-module/examples/x2.pdf differ diff --git a/macros/latex/contrib/rpg-module/examples/x2.tex b/macros/latex/contrib/rpg-module/examples/x2.tex new file mode 100644 index 0000000000..c0669c2933 --- /dev/null +++ b/macros/latex/contrib/rpg-module/examples/x2.tex @@ -0,0 +1,178 @@ +\documentclass[letterpaper,serif]{rpg-module} + +\usepackage{parskip} % Add spacing between paras instead of indents +\usepackage{enumitem} % Control spacing in description list + +\begin{document} + +\onecolumn + +\begin{center} +Page intentionally left blank. +\end{center} + +\twocolumn + +\title{Dungeon Module X2\\ +Castle Amber\\ +(Ch\^{a}teau d'Amberville)} + +\subtitle{An Adventure for Character Levels 3--6} + +\coverimage{X2_CoverImage.png} + +\abstract{Trapped in the mysterious Castle Amber, you find yourselves cut off from the world you know. +The castle is fraught with peril. Members of the strange Amber family, some insane, some merely deadly, +lurk around every corner. Somewhere in the castle is the key to your escape, but can you survive long +enough to find it? + +This module contains referee notes, background information, maps, and exploration keys intended for +use with the D\&D Expert rules. Be sure to look for other D\&D modules from TSR, the Game Wizards!} + +\copyrightblock{\vspace{3ex}Distributed to the book trade in the United States by Random House, Inc. +and in Canada by Random House of Canada. Ltd. + +Distributed to the toy and hobby trade by regional distributors. + +\copyright 1981 TSR Hobbies, Inc. All Rights Reserved. + +DUNGEONS \& DRAGONS and D\&D are registered trademarks owned by TSR Hobbies, Inc.\vspace{1ex}} + +\contactblock[p{4.5cm} p{6.0cm} p{7.2cm}]{% +\vspace{-24pt} +PRINTED IN U.S.A. + +ISBN 0--935696--51--2 +}{\includegraphics[width=4cm]{TSR_Logo.png}}{% +\vspace{-36pt} +TSR Hobbies, Inc. + +POB 756 + +Lake Geneva, WI 53147 +\vspace{-11pt} +\begin{flushright} +\textbf{\large 9051} +\end{flushright} +} + +\maketitle + + + +%% START OF PAGE 1 %% + +\showtitle[DUNGEONS \& DRAGONS\registered~Expert Set\\ +Dungeon Module X2\\ +CASTLE AMBER\\ +(CH\^{A}TEAU D'AMBERVILLE)] + +Castle Amber is intended for use with the DUNGEONS \& \mbox{DRAGONS} Expert Set, which continues and expands the +D\&D\registered~Basic rules. This module cannot be used without the D\&D Basic and Expert rules. + +\part{Introduction} +The information in this module is only for the Dungeon Master who +will guide the players through the adventure. Knowledge of the +contents of this module will spoil the surprise and excitement for +players. If you plan to participate in this module as a player, please +stop reading now. + +\section*{Notes for the Dungeon Master} +Before beginning to play, the DM should read the module thoroughly +to become familiar with it in detail. The information that is +boxed is to be read aloud to the players at the appropriate time. +The material that is not boxed is for the DM's use and should only +be revealed to the players at the DM's discretion. + +This module has been designed for a party of 6 to 10 characters, +between the 3rd and 6th levels of experience. The total of the +party's experience levels should be from 26 to 34, with a total of 30 +being best. For example: a party might be made up of a 4th level +fighter, a 6th level cleric, a 5th level magic-user, a 3rd level thief, a +5th level dwarf, a 4th level elf and a 3rd level halfling for a total of +30\,---\,(4\+6\+5\+3\+5\+4\+3 $=$ 30). If the party has a strength of less +than 26 levels or more than 34, the DM may wish to adjust the +strength of the monsters in this module\,---\,either making them +smaller and less numerous or larger and more numerous. Each +party should have at least 1 magic-user or elf and 1 cleric. + +Castle Amber (Ch\^{a}teau D'Amberville) is made up of 9 parts\,---\,some provide wilderness adventures and +some provide dungeonlike adventures. +\begin{description}[labelindent=1em,leftmargin=1em] +\item[Part One] (this section) outlines the scope of the adventure and describes the family of Amber (D'Amberville). +\item[Part Two] details the West Wing of the Amber family mansion (dungeon adventure). +\item[Part Three] describes the Indoor Forest in the central part of the mansion, which is built like a greenhouse (wilderness adventure). +\item[Part Four] is a description of the family Chapel (dungeon adventure). +\item[Part Five] describes the plan of the East Wing (dungeon adventure). +\item[Part Six] details the dungeon under the mansion (dungeon adventure). +\item[Part Seven] is a description of Averoigne, based on a fantasy world created by the author Clark +Ashton Smith\footnote{Permission to base Part Seven on the Averoigne stories of Clark Ashton Smith was +graciously granted by CASiana Literary Enterprises, Inc.} (wilderness adventure). +\item[Part Eight] describes the Tomb of Stephen Amber (La Tombe \'{E}tienne D'Amberville)\,---\,(dungeon adventure). +\item[Part Nine] gives details on the new monsters introduced in this module. +\end{description} +During the adventures the DM should be careful to give the player +characters a reasonable chance for survival. The emphasis is on +reasonable. Try to be impartial and fair, but if players persist at +taking unreasonable risks, or if bravery turns into foolhardiness, +the DM should make it clear that the characters will die unless they +act more intelligently. Everyone should cooperate to make the +adventure fun and exciting. + +When describing monster encounters, the DM should not describe +them only by what they look like. After all, there are four +other senses as well\,---\,smell, sound, taste and feelings of heat, +cold, wetness and so forth. The DM should try to vary the approach +to encounters whenever possible. For example: the party +might first hear a monster coming before actually meeting the +monster. Such advance warnings are also a good way to warn a +party that an encounter might be too difficult to handle. The DM +should try to avoid letting unplanned wandering monsters ruin the +balance of the adventure, making it too tough for the party. +The descriptions of each room give only a minimum of detail. The +DM should feel free to add any additional details, such as the +dimensions of the room, so long as this does not alter the challenge +of the encounter. Additional detail is not necessary, but it may +strengthen the atmosphere of the adventure. + +This module is not designed to be played completely in a single +session; a number of gaming sessions will be needed to finish it. If +the party tries to complete the entire module without stopping +periodically to regain lost hit points and restore spells, they are all +quite likely to die. The party has an unknown powerful ally looking +after them. Prince Stephen Amber (described in detail in a later +section) will send a cloud of amber light to encircle the party at the +end of a gaming session. This light will protect the party from all +wandering monsters and provides nourishment. The amber light +will also restore all lost hit points to wounded characters and allows +magic-users, elves and clerics a chance to regain their spells. Time +outside the amber light stops while it continues for those within the +light. Thus, if characters gain enough experience to reach higher +experience levels they may train and study between gaming sessions +and rise in experience levels. Those characters who gain +experience levels may use the abilities gained at the new level the +next time they play. In general, the DM will find that a single part of +the module is equaf to one gaming session. + +For the convenience of the DM, whenever a monster or NPC is +described in the text, the game statistics will be listed in parentheses +in the following order: + +\textbf{Monster Name} (Armor Class; Hit Dice or Class/Level; hit points; +Number of Attacks per round; Damage per attack; Movement per +turn (round); Save As: Class/Level; Morale; Alignment; and Abilities +for NPCs, if necessary.) + +Abbreviations which are used are: + +Armor Class = \textbf{AC}, Hit Dice = \textbf{HD}, Cleric = \textbf{C}, Dwarf = \textbf{D}, Elf = \textbf{E}, +Fighter = \textbf{F}, Halfling = \textbf{H}, Magic-User = \textbf{M}, Thief = \textbf{T}, +Normal Man = \textbf{NM}; Level = \textbf{\#}, hit points = \textbf{hp}, Number of Attacks = \textbf{\#AT}; +Damage = \textbf{D}, Movement = \textbf{MV}, Save As = \textbf{Save}, Morale = \textbf{ML}; Alignment = \textbf{AL}; +Strength = \textbf{S}, Intelligence = \textbf{I}, Wisdom = \textbf{W}, Dexterity = \textbf{D}, +Constitution = \textbf{C}, Charisma = \textbf{Ch}. + +Class/Level is only used for NPCs, while Hit Dice is used for all other monsters. It should be noted +that movement in a game turn is three times the movement rate per round. + +\end{document} diff --git a/macros/latex/contrib/rpg-module/rpg-module.cls b/macros/latex/contrib/rpg-module/rpg-module.cls new file mode 100644 index 0000000000..5c75e4f74d --- /dev/null +++ b/macros/latex/contrib/rpg-module/rpg-module.cls @@ -0,0 +1,650 @@ +%% rpg-module.cls +% +% A Role-Playing Game Module class for LaTeX +% +% Copyright 2016 Michael C. Davis +% +% LICENSE FOR THE WORK +% +% This work consists of the following files: +% rpg-module.cls +% basic-stats.sty +% basic-stats.def +% doc/rpg-module.tex +% +% This work may be distributed and/or modified under the conditions of the LaTeX +% Project Public License, either version 1.3 of this license or (at your option) +% any later version. The latest version of this license can be found at: +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX version +% 2005/12/01 or later. +% +% This work has the LPPL maintenance status `author-maintained'. +% +% The Author and Maintainer of this work is Michael C. Davis +% +% +% LICENSE FOR COMPILED WORKS +% +% You may distribute compiled works generated using the work as specified in +% Clause 3 of the LaTeX Project Public License. If you incorporate Open Gaming +% Content into the compiled work, you must also comply with the terms of that +% license. +% +% +% USAGE +% +% See the file rpg-module.pdf (source file doc/rpg-module.tex) for documentation. +% There are a number of worked examples in the examples/ directory. +% +% Technical support is provided on Dragonsfoot Forums: +% +% http://www.dragonsfoot.org/forums/viewtopic.php?f=87&t=73823 +% +% +% KNOWN BUGS +% +% 1. Special movement doesn't appear correctly in multi-column New Monster listings +% if not all monsters share that movement type +% 2. S&W AC format doesn't handle Lycanthrope ACs very well +% +% +% TO DO +% +% 1. Advanced edition stat block options +% 2. Holmes Basic stat block options + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{rpg-module}[2016/04/25 Role-Playing Game Module document class] + + + +% Define which stat block systems are recognised. ONE of these environments should be redefined in +% the system-specific stat block package. + +\RequirePackage{comment} % Allow some sections to conditionally appear or not +\excludecomment{ifbasicstats} +\excludecomment{ifadvancedstats} +% \excludecomment{next_system}{... + + + +% Process class options + +\newcounter{papersizeoption} +\newcounter{fontoption} +\newcounter{statsoption} +\newcounter{acoption} + +\newif\ifmodule@letterpaper +\newif\ifmodule@seriffont +\newif\ifmodule@tightsqueeze + +\DeclareOption{letterpaper}{\module@letterpapertrue\stepcounter{papersizeoption}} +\DeclareOption{a4paper}{\module@letterpaperfalse\stepcounter{papersizeoption}} + +\DeclareOption{tightsqueeze}{\module@tightsqueezetrue} + +\DeclareOption{serif}{\module@seriffonttrue\stepcounter{fontoption}} +\DeclareOption{sansserif}{\module@seriffontfalse\stepcounter{fontoption}} + +\DeclareOption{basic}{\def\statstyle@module{basic-stats.sty}\stepcounter{statsoption}} +\DeclareOption{advanced}{\def\statstyle@module{advanced-stats.sty}\stepcounter{statsoption}} +% \DeclareOption{next_system}{... + +% Note: the class does not define a default AC display option. The default is handled by the +% \ac@module macro which is defined in the style file selected by the previous option. + +\DeclareOption{acdesc}{\def\acstyle@module{desc}\stepcounter{acoption}} +\DeclareOption{acasc}{\def\acstyle@module{asc}\stepcounter{acoption}} +\DeclareOption{acb1}{\def\acstyle@module{b1}\stepcounter{acoption}} +\DeclareOption{acsw}{\def\acstyle@module{sw}\stepcounter{acoption}} + +\DeclareOption*{ + \ClassError{rpg-module}{Unrecognised option '\CurrentOption'}{Valid options are:\MessageBreak + a4paper,letterpaper,tightsqueeze\MessageBreak serif,sansserif,\MessageBreak basic,advanced,\MessageBreak acdesc,acac,acb1,acsw} +} + +\ExecuteOptions{a4paper} % default paper size is A4 +\ExecuteOptions{sansserif} % default font option is sans serif +\ExecuteOptions{basic} % default stat block style is basic + +\ProcessOptions\relax + +\ifcase\thepapersizeoption\or\or\else + \ClassError{rpg-module}{a4paper and letterpaper options are mutually exclusive} + {The input file contains a statement like:\MessageBreak + \protect\documentclass[letterpaper,a4paper]{rpg-module}\MessageBreak + You can only select one paper size, either letterpaper or a4paper.\MessageBreak + The default is a4paper.} +\fi + +\ifcase\thefontoption\or\or\else + \ClassError{rpg-module}{serif and sanserif options are mutually exclusive} + {The input file contains a statement like:\MessageBreak + \protect\documentclass[serif,sansserif]{rpg-module}.\MessageBreak + You can only select one font style, either serif or sans serif.\MessageBreak + The default is sans serif.} +\fi + +\ifcase\thestatsoption\or\or\else + \ClassError{rpg-module}{you can only select one style} + {The input file contains a statement like: + \protect\documentclass[basic,advanced]{rpg-module}. + You can only select one style for stat blocks.\MessageBreak + The recognised styles are basic and advanced.\MessageBreak + The default is basic. Advanced will be defined in a future version of the rpg-module class.} +\fi + +\ifcase\theacoption\or\else + \ClassError{rpg-module}{you can only select one AC style} + {The input file contains a statement like:\MessageBreak + \protect\documentclass[acasc,acdesc]{rpg-module}.\MessageBreak + You can only select one style for armour class.\MessageBreak + The recognised styles are acasc, acdesc, acb1 and acsw.} +\fi + + + +% Process paper size options + +\setlength\voffset{-1in} +\setlength\hoffset{-1in} + +\ifmodule@letterpaper + \PassOptionsToClass{letterpaper}{article} + \addtolength\voffset{-17.6mm} + \addtolength\hoffset{2.95mm} + \newcommand{\ArmourClass}{Armor Class} % Concession to US spelling of Armour +\else + \PassOptionsToClass{a4paper}{article} + \PassOptionsToClass{twoside}{article} + \newcommand{\ArmourClass}{Armour Class} +\fi + + + +% Load the standard LaTeX 'article' document class that module is based on + +\LoadClass[twocolumn]{article} + + + +% Set page margins + +\setlength{\oddsidemargin}{0.8cm} +\setlength{\evensidemargin}{0.8cm} + +\setlength{\topmargin}{2.6cm} + +\setlength{\textheight}{25.4cm} +\setlength{\textwidth}{19.4cm} + +\setlength{\marginparsep}{0cm} +\setlength{\marginparwidth}{0cm} + +\setlength{\footskip}{0.7cm} + +\setlength{\columnsep}{1.15cm} + +\pagenumbering{arabic} + +\ifmodule@letterpaper + \setlength{\headheight}{0cm} + \setlength{\headsep}{0cm} +\else + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} + \RequirePackage{fancyhdr} % Add headers and footers + \fancypagestyle{plain}{% + \fancyhf{} % clear all header and footer fields + \fancyhead[LO,RE]{\slshape \leftmark} + \fancyhead[RO,LE]{\slshape \rightmark} + \fancyfoot[C]{\thepage} % except the center + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + \pagestyle{plain} +\fi + + + +% Float placement options +% See p.199-200 of Lamport's "LaTeX" book for details and p.105 of "TeX Unbound" for suggested values + +\renewcommand{\topfraction}{0.9} % max fraction of floats at top +\renewcommand{\bottomfraction}{0.8} % max fraction of floats at bottom + +% Parameters for TEXT pages (not float pages) + +\setcounter{topnumber}{2} +\setcounter{bottomnumber}{2} +\setcounter{totalnumber}{4} +\setcounter{dbltopnumber}{2} % for 2-column pages +\renewcommand{\dbltopfraction}{0.9} % fit big float above 2-column text +\renewcommand{\textfraction}{0.07} % allow minimal text + +% Parameters for FLOAT pages (not text pages) +% +% Note: \floatpagefraction must be less than \topfraction above + +\renewcommand{\floatpagefraction}{0.7} % require fuller float pages +\renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages + + + +% Process font options + +\RequirePackage[T1]{fontenc} % Use T1 (8-bit) font encoding +\RequirePackage{lmodern} % Use Latin Modern instead of Computer Modern for symbols etc. +\RequirePackage{xfrac} % Get a good-looking 1/2 symbol + +\newcommand\half{\sfrac{1}{2}} % Get a good-looking 1/2 symbol + +\ifmodule@seriffont + \IfFileExists{souvenir.sty}{ % If ITC Souvenir font is installed in this LaTeX distribution + \RequirePackage{souvenir} % Use ITC Souvenir as serifed font + \renewcommand{\bfdefault}{d} % Use demi-bold instead of bold + \renewcommand*\copyright{{\usefont{T1}{lmr}{m}{n}\textcopyright}} % Get a good-looking copyright (C) symbol + \newcommand*\registered{{\usefont{T1}{lmr}{m}{n}\textregistered}} % Registered trademark (R) symbol + \renewcommand\half{{\usefont{T1}{lmr}{m}{n}\sfrac{1}{2}}} % Redefine font for 1/2 symbol + }{ + \ClassWarning{rpg-module}{% + ITC Souvenir not detected, substituting Bookman as default serifed font.} + \RequirePackage{bookman} % Use Bookman as serifed font + } + \renewcommand*\familydefault{\rmdefault} % Default to serifed font +\else + \RequirePackage{avant} % Use URW Gothic as default sans-serif font (similar to ITC Avant Garde Gothic) + \renewcommand*\familydefault{\sfdefault} % Default to sans-serif font +\fi + +\renewcommand{\tiny} {\fontsize {4pt} {4.8pt}\selectfont} +\renewcommand{\scriptsize} {\fontsize {5pt} {6.0pt}\selectfont} +\renewcommand{\footnotesize}{\fontsize {7pt} {8.4pt}\selectfont} +\renewcommand{\small} {\fontsize {8pt} {9.6pt}\selectfont} +\renewcommand{\normalsize} {\fontsize {9pt}{10.8pt}\selectfont} +\renewcommand{\large} {\fontsize{10pt}{12.0pt}\selectfont} +\renewcommand{\Large} {\fontsize{11pt}{13.2pt}\selectfont} +\renewcommand{\LARGE} {\fontsize{13pt}{15.6pt}\selectfont} +\renewcommand{\huge} {\fontsize{16pt}{19.2pt}\selectfont} +\renewcommand{\Huge} {\fontsize{17.28pt}{20.74pt}\selectfont} + + + +% Load the rest of the required packages + +\RequirePackage[pass,paperwidth=\paperwidth,paperheight=\paperheight]{geometry} % Page size +\RequirePackage[explicit,newparttoc]{titlesec} % Redefine section headings +\RequirePackage{titletoc} % Redefine table of contents +\RequirePackage{array} % Format table headings +\RequirePackage{booktabs} % Underline table headings +\RequirePackage{caption} % Allow non-numbered figure and table captions +\RequirePackage{framed} % Boxed text +\RequirePackage{graphicx} % Allow images and text across two columns +\RequirePackage{dblfloatfix} % Allow positioning of figure* at bottom of page +\RequirePackage{xstring} % Manipulate strings + +% Hyperlinks + +\RequirePackage[linktocpage]{hyperref} % Allow hyperlinks, only page numbers in TOC are clickable +\RequirePackage[dvipsnames]{xcolor} % Pre-defined colour names +\hypersetup{colorlinks=true, + urlcolor=MidnightBlue, % Colour for external links + linkcolor=MidnightBlue, % Colour for internal links (including Table of Contents) + citecolor=MidnightBlue} % Colour for references + +% Key-value pairs, used for stat blocks + +\RequirePackage{pgfkeys} +\input{pgfutil-common} +\input{pgfmath.code} + +% Define a narrow breaking space + +\newcommand*{\thinspacebrk}{\hskip0.16667em\relax} + +% Tightsqueeze option for reduced spacing + +\ifmodule@tightsqueeze + \titlespacing*{\part}{0pt}{0pt}{0pt} + \titlespacing*{\section}{0pt}{0.5ex plus .2ex}{0.5ex plus .2ex} + \titlespacing*{\subsection}{0pt}{0.5ex plus .2ex}{0.5ex plus .2ex} + \FrameSep5pt + \renewcommand{\arraystretch}{1} +\else + \renewcommand{\arraystretch}{1.2} % Default: increase the table row spacing a little +\fi + +% Footnote options + +\renewcommand*{\thefootnote}{\fnsymbol{footnote}} % Use footnote symbols instead of numbers +\renewcommand\@makefntext[1]{\leftskip=0.5em\hskip-0.5em\makebox[0.5em]{\@makefnmark}#1} % Footnote indentation + +% The freestyle (system-independent) stat block +% +% Other stat-block styles depend on the RPG system option chosen and are defined in the appropriate .sty file + +\newenvironment{statblockfreestyle}{\begin{list}{}{\leftmargin=1em\rightmargin=1em}\item}{\end{list}} + +% Define monsters + +\newcounter{currentstat} % Counter for setting up key-value pairs + +\newcommand{\monster}[4][default]{ + \pgfkeys{/#2/SingleName/.initial = {#3}} + \ifnum\pdfstrcmp{#1}{default}=\z@ + \IfEndWith{#3}{y} + {\pgfkeys{/#2/PluralName/.initial = \StrGobbleRight{#3}{1}ies}} % Plural names ending in -y change to -ies + { + \IfEndWith{#3}{s} + {\pgfkeys{/#2/PluralName/.initial = #3es}} % Plural names ending in -s change to -ses + {\pgfkeys{/#2/PluralName/.initial = #3s}} % Default case, plurals where we add -s + } + \else + \pgfkeys{/#2/PluralName/.initial = #1} % Override for irregular plurals + \fi + \setcounter{currentstat}{0} + \def\currentmonster{#2} + \scan@stats#4|\relax| +} + +% Load system-specific stat blocks + +\InputIfFileExists{\statstyle@module}{% + \ClassInfo{rpg-module}{Loading monster stats from \statstyle@module} +}{% + \ClassWarning{rpg-module}{Monster stats style \statstyle@module\space not found,\MessageBreak + defaulting to basic-stats.sty} + \input{basic-stats.sty} +} + +% Title Page + +\renewcommand\maketitle{\hypersetup{pageanchor=false}% No internal links to title page allowed +\begin{titlepage} +\vspace*{\fill} +\begin{center} +\Huge \textbf{\@title} \par +\@author +\@subtitle +\@coverimg +\end{center} +\@abstract +\@copyright +\@contact +\vfill +\end{titlepage} +\hypersetup{pageanchor=true} +\global\let\maketitle\relax +\global\let\@author\@empty +\global\let\@subtitle\@empty +\global\let\@coverimg\@empty +\global\let\@abstract\@empty +\global\let\@copyright\@empty +\global\let\@contact\@empty +\global\let\title\relax +\global\let\author\relax +} + +\newcommand\showtitle[1][\@title]{\begin{center} +\LARGE\textbf{#1} +\end{center} +\let\if@afterindentfalse} + +\renewcommand\@author{\relax} +\renewcommand{\author}[1]{\gdef\@author{\vskip 0.5em\LARGE \textbf{by #1}}} + +\newcommand\@subtitle{\relax} +\newcommand\@coverimg{\relax} +\newcommand\@abstract{\relax} +\newcommand\@copyright{\relax} +\newcommand\@contact{\relax} + +\newcommand{\subtitle}[1]{\gdef\@subtitle{\vskip 0.5em \LARGE \textbf{\MakeUppercase{#1}}}} +\newcommand{\coverimage}[1]{\gdef\@coverimg{\vskip 1em \includegraphics[width=\textwidth]{#1} \par}} +\renewcommand{\abstract}[1]{\gdef\@abstract{\vskip 0.5em #1 \par}} + +\newcommand{\copyrightblock}[1]{\gdef\@copyright{\vskip 0.5em +\begin{quote} +\centering +#1 +\end{quote}}} + +\newcommand{\contactblock}[4][p{5.9cm} p{5.9cm} p{5.9cm}]{\gdef\@contact{\vskip 0.5em +\begin{tabular}{#1} +{#2} & {#3} & {#4} +\end{tabular} +}} + + + +% Running heads (used on A4 paper size only) + +\newcommand\titlerunning[1]{% + \gdef\runningtitle{\MakeUppercase{#1}} +} + +\ifmodule@letterpaper\else + \renewcommand{\partmark}[1]{\markright{\MakeUppercase{#1}}{}} + \renewcommand{\sectionmark}[1]{} + \renewcommand{\subsectionmark}[1]{} + \renewcommand{\leftmark}{\runningtitle} + \titlerunning{\@title} +\fi + + +% Headings + +\renewcommand\thepart{\arabic{part}} +\renewcommand\thesection{} +\renewcommand\thesubsection{\arabic{subsection}} +\renewcommand\thesubsubsection{\arabic{subsection}\alph{subsubsection}} + +\titleformat{\part}[block] +{\LARGE\bfseries\filcenter} +{\LARGE PART \thepart:}{0.5em}{\MakeUppercase{#1}} + +\titleformat{\section}[hang] +{\Large\bfseries\filright} +{}{0em}{\MakeUppercase{#1}} + +\titleformat{name=\section,numberless}[block] % how to handle \section* +{\Large\bfseries\filcenter} +{}{0em}{#1\phantomsection\addcontentsline{toc}{section}{#1}} + +\titleformat{\subsection}[hang] +{\normalfont\bfseries\filright} +{\thesubsection.}{0.5em}{\MakeUppercase{#1}} + +\titleformat{\subsubsection}[hang] % \subsubsection is indentical to \subsection except for the numbering +{\normalfont\bfseries\filright} +{\thesubsubsection.}{0.5em}{\MakeUppercase{#1}} + +% Default section spacing, for reference +% +%\titlespacing*{\chapter} {0pt}{50pt}{40pt} +%\titlespacing*{\section} {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex} +%\titlespacing*{\subsection} {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex} +%\titlespacing*{\subsubsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex} +%\titlespacing*{\paragraph} {0pt}{3.25ex plus 1ex minus .2ex}{1em} +%\titlespacing*{\subparagraph} {\parindent}{3.25ex plus 1ex minus .2ex}{1em} + +% Table of Contents + +\renewcommand\tableofcontents{% + \noindent\Large\textbf{\MakeUppercase\contentsname}\vspace{1em}\@starttoc{toc} +} + + +\addtocontents{toc}{\protect\setcounter{tocdepth}{1}} +\titlecontents{part}[0em]{\normalsize\bfseries}{PART \thecontentslabel : \MakeUppercase}{}{\quad\thecontentspage}[\vspace{1.5ex plus .2ex}] +\titlecontents*{section}[0em]{\normalsize}{}{}{~\thecontentspage}[\unskip, ][.\vspace{1.5ex plus .2ex}] +\titlecontents*{subsection}[0em]{\normalsize}{}{}{~\thecontentspage}[\unskip, ][.\vspace{1.5ex plus .2ex}] +\titlecontents*{subsubsection}[0em]{\normalsize}{}{}{~\thecontentspage}[\unskip, ][.\vspace{1.5ex plus .2ex}] + + + +% Boxed text + +\newenvironment{boxtext}{% +\if@nobreak + \vspace{-\topsep} +\fi +\begin{framed}\@afterheading}{\end{framed}\aftergroup\@afterindentfalse\aftergroup\@afterheading} + + + +% Single-column text + +\newcommand\onecolumninline[1]{% +\newlength{\tmpparindent} +\newlength{\tmpparskip} +\setlength{\tmpparindent}{\parindent} +\setlength{\tmpparskip}{\parskip} +\twocolumn[{ +\setlength{\parindent}{\tmpparindent} +\setlength{\parskip}{\tmpparskip} +\fussy +#1 +\vspace{2ex} +}] +} + +\newenvironment{onecolumnfloat}[1][t]{% +\let\@floatboxreset\relax% +\let\@parboxrestore\relax% +\begin{table*}[#1]\unskip}{\end{table*}} + + + +% Tables + +\newcolumntype{b}{>{\bfseries}c} % New column type 'b' for bold, centred headings +\newcounter{numcols@module} % Counter to keep track of how many columns are in the table + +% Underline table headers + +\newtoks\module@tableul +\newcommand{\tableul}[1]{% + \noalign{% + \global\module@tableul={}% + \toks@={\cmidrule(l{\tabcolsep}r{\tabcolsep})}% + \count@=\z@ + \loop\ifnum\count@<#1\relax + \advance\count@\@ne + \edef\module@temp{\the\toks@{\the\count@-\the\count@}}% + \global\module@tableul\expandafter{\the\expandafter\module@tableul\module@temp}% + \repeat + }% + \the\module@tableul +} + +% Typeset the table heading +% Takes a column type as an optional argument (defaults to 'c' for centred text) + +\newcommand\tableheader[2][c]{{% + \edef\lbracetoken{\string{} + \edef\rbracetoken{\string}} + \StrCount{#2}{&}[\numamps]\global\setcounter{numcols@module}{\numamps}\stepcounter{numcols@module} + \newcommand\source{\string\multicolumn\lbracetoken 1\rbracetoken\lbracetoken#1\rbracetoken\lbracetoken#2\rbracetoken} + \newcommand\replace{\rbracetoken&\string\multicolumn\lbracetoken 1\rbracetoken\lbracetoken#1\rbracetoken\lbracetoken} + \StrSubstitute{\source}{ & }{\replace}[\tmptblhdr] + \StrExpand{\tmptblhdr}{\tmptblhdrexpand} + \tokenize{\tmptbltok}{\tmptblhdr} + \global\let\tableheader@module\tmptbltok +}\\[-2ex] % hack to get around the fact that it's not allowed to have non-expandable text in the same cell as \multicolumn +\tableheader@module\\ +\tableul{\thenumcols@module} +} + + + +% Copyright and license macros + +\newcommand{\modulecopyright}{% +The \LaTeX~rpg-module class is copyright \copyright 2016 Michael Davis and is distributed under the conditions of the +\href{http://www.latex-project.org/lppl.txt}{LaTeX Project Public License}, either version 1.3 or (at your option) +any later version. Compiled Works generated using the rpg-module class can be distributed as specified in Clause 3 of the license.} + +\newenvironment{ogl}{% +\footnotesize +\subsection*{OPEN GAME LICENSE Version 1.0a} +The following text is the property of Wizards of the Coast, Inc. and is Copyright 2000 Wizards of the Coast, Inc (``Wizards''). All Rights Reserved. +\begin{enumerate} +\item Definitions: (a) ``Contributors'' means the copyright and/or trademark owners who have contributed Open Game Content; (b) ``Derivative Material'' +means copyrighted material including derivative works and translations (including into other computer languages), potation, modification, correction, +addition, extension, upgrade, improvement, compilation, abridgment or other form in which an existing work may be recast, transformed or adapted; (c) +``Distribute'' means to reproduce, license, rent, lease, sell, broadcast, publicly display, transmit or otherwise distribute; (d) ``Open Game Content'' +means the game mechanic and includes the methods, procedures, processes and routines to the extent such content does not embody the Product Identity +and is an enhancement over the prior art and any additional content clearly identified as Open Game Content by the Contributor, and means any work +covered by this License, including translations and derivative works under copyright law, but specifically excludes Product Identity. (e) ``Product +Identity'' means product and product line names, logos and identifying marks including trade dress; artifacts; creatures characters; stories, +storylines, plots, thematic elements, dialogue, incidents, language, artwork, symbols, designs, depictions, likenesses, formats, poses, concepts, +themes and graphic, photographic and other visual or audio representations; names and descriptions of characters, spells, enchantments, personalities, +teams, personas, likenesses and special abilities; places, locations, environments, creatures, equipment, magical or supernatural abilities or effects, +logos, symbols, or graphic designs; and any other trademark or registered trademark clearly identified as Product identity by the owner of the Product +Identity, and which specifically excludes the Open Game Content; (f) ``Trademark'' means the logos, names, mark, sign, motto, designs that are used by +a Contributor to identify itself or its products or the associated products contributed to the Open Game License by the Contributor (g) ``Use'', +``Used'' or ``Using'' means to use, Distribute, copy, edit, format, modify, translate and otherwise create Derivative Material of Open Game Content. +(h) ``You'' or ``Your'' means the licensee in terms of this agreement. + +\item The License: This License applies to any Open Game Content that contains a notice indicating that the Open Game Content may only be Used under and +in terms of this License. You must affix such a notice to any Open Game Content that you Use. No terms may be added to or subtracted from this License +except as described by the License itself. No other terms or conditions may be applied to any Open Game Content distributed using this License. + +\item Offer and Acceptance: By Using the Open Game Content You indicate Your acceptance of the terms of this License. + +\item Grant and Consideration: In consideration for agreeing to use this License, the Contributors grant You a perpetual, worldwide, royalty-free, +non-exclusive license with the exact terms of this License to Use, the Open Game Content. + +\item Representation of Authority to Contribute: If You are contributing original material as Open Game Content, You represent that Your Contributions are +Your original creation and/or You have sufficient rights to grant the rights conveyed by this License. + +\item Notice of License Copyright: You must update the COPYRIGHT NOTICE portion of this License to include the exact text of the COPYRIGHT NOTICE of any +Open Game Content You are copying, modifying or distributing, and You must add the title, the copyright date, and the copyright holder's name to the +COPYRIGHT NOTICE of any original Open Game Content you Distribute. + +\item Use of Product Identity: You agree not to Use any Product Identity, including as an indication as to compatibility, except as expressly licensed in +another, independent Agreement with the owner of each element of that Product Identity. You agree not to indicate compatibility or co-adaptability with any +Trademark or Registered Trademark in conjunction with a work containing Open Game Content except as expressly licensed in another, independent Agreement with +the owner of such Trademark or Registered Trademark. The use of any Product Identity in Open Game Content does not constitute a challenge to the ownership of +that Product Identity. The owner of any Product Identity used in Open Game Content shall retain all rights, title and interest in and to that Product Identity. + +\item Identification: If you distribute Open Game Content You must clearly indicate which portions of the work that you are distributing are Open Game Content. + +\item Updating the License: Wizards or its designated Agents may publish updated versions of this License. You may use any authorized version of this License +to copy, modify and distribute any Open Game Content originally distributed under any version of this License. + +\item Copy of this License: You MUST include a copy of this License with every copy of the Open Game Content You Distribute. + +\item Use of Contributor Credits: You may not market or advertise the Open Game Content using the name of any Contributor unless You have written permission +from the Contributor to do so. + +\item Inability to Comply: If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Open Game Content +due to statute, judicial order, or governmental regulation then You may not Use any Open Game Material so affected. + +\item Termination: This License will terminate automatically if You fail to comply with all terms herein and fail to cure such breach within 30 days of becoming +aware of the breach. All sublicenses shall survive the termination of this License. + +\item Reformation: If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it +enforceable. + +\item COPYRIGHT NOTICE +\end{enumerate} +\begin{list}{}{} +\item Open Game License v 1.0 Copyright 2000, Wizards of the Coast, Inc. +}{\end{list}} + +\newenvironment{productidentity}{% +\footnotesize +\subsection*{Designation of Product Identity} +\begin{list}{}{\leftmargin=0cm} +}{\end{list}} + +\newenvironment{opengamecontent}{% +\footnotesize +\subsection*{Designation of Open Game Content} +\begin{list}{}{\leftmargin=0cm} +}{\end{list}} + diff --git a/macros/latex/contrib/rpg-module/rpg-module.pdf b/macros/latex/contrib/rpg-module/rpg-module.pdf new file mode 100644 index 0000000000..69d90ae2d2 Binary files /dev/null and b/macros/latex/contrib/rpg-module/rpg-module.pdf differ -- cgit v1.2.3