Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

A tool to simulate combat in AD&D 2nd Edition

Project Description


The AD&D Second edition Combat Simulator will run simple simulated battles to determine the statistical likelyhood of success or failure by the party. The simulator does not account for player creativity and uses a very simple method to determine how the battle will go.


First create a combatants.yaml file with the players and monsters information. The example combatants.example.yaml file included in the package is a good place to start.

Next simulate the war

battle [BATTLES]

The BATTLES argument indicates how many times to simulate the battle. Default is 1.


Add all details about the combatants into the combatants.yaml file. The example combatants.example.yaml illustrates the syntax


The values in the AC dictionary are added together to detemrine the AC. For example a shield would have an AC value of 1 because it reduces AC by 1. Studded leather would have a value of 3 because it gives AC 7. If a combatant had both (3 + 1), their AC would be 6. Default is no modifier or AC 10.


This list enumerates the attacks that the combatant will use. The values are the names of the attacks in the attacks section. Each combatant uses all of their attacks each round. For example a monster with an attack list of “claw”, “claw”, “bite” would make all 3 attacks in a single round.


This list contains all the possible attacks a combatant might use.


This can either be a string or a dictionary. If it’s a string it applies to targets of all sizes. If it’s a dictionary the size of the target is mapped to a damage string.


The values in the To Hit dictionary are added together to determine the total modifier for the to hit role. For example if a fighter specialized in a bastard sword and had a magical bastard sword +1, the 1 from specialization and 1 from magic would be added to the d20 die roll. Default is no modifier.


Rate of fire can be a number of attacks/shots per round (e.g. 2 or 3) or a ratio of attacks/shots per round (2/1 or 3/2). Default is 1/1.


The number of the given type of monster to include in the battle.


The hit dice of the monster. This can be a traditional Hit Die number (e.g. 3) which is the number of 1d8 dice to roll to determine the monsters hit points, or it can be a traditional Hit Die number with a modifier (e.g. 3 + 2), or it can just be a description of dice and modifiers (e.g. 1d6 + 2 or 2d8)

Release History

This version
History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(8.3 kB) Copy SHA256 Hash SHA256
Wheel py2 Sep 2, 2016
(5.6 kB) Copy SHA256 Hash SHA256
Source None Sep 2, 2016

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers DreamHost DreamHost Log Hosting