Loading ...
Sorry, an error occurred while loading the content.

Re: [pcgen_developers] Experimenting with a generic rules engine

Expand Messages
  • Chris Dolan
    I hit a milestone tonight. I can now parse the following PC and auto-compute several combat-related values for him. Note: the XML syntax is *far* from set in
    Message 1 of 8 , Jun 22, 2013
      I hit a milestone tonight. I can now parse the following PC and auto-compute several combat-related values for him. Note: the XML syntax is *far* from set in stone. I just threw something together that described the bare minimum of player choices. Also, my rules do no validation of the PC. You could easily cheat and give him 100 extra feats and the code won't care.

      <pc xmlns="http://chrisdolan.net/pcgen/drools/input">
      <ruleset name="pathfinder"/>
      <property name="CharacterName" value="Aarn"/>
      <property name="PlayerName" value="Chris Dolan"/>

      <alignment name="LawfulEvil"/>

      <stat value="14" name="Strength"/>
      <stat value="14" name="Dexterity"/>
      <stat value="12" name="Constitution"/>
      <stat value="10" name="Intelligence"/>
      <stat value="14" name="Wisdom"/>
      <stat value="8" name="Charisma"/>

      <race name="Human" age="24">
      <favoredclass name="Monk"/>
      <statbonus name="Strength"/>
      <trait name="Suspicious"/>

      <level class="Monk">
      <archetype class="Monk" name="HungryGhost"/>
      <hitpoints value="8"/>
      <skill ranks="1" name="Acrobatics"/>
      <skill ranks="1" name="Climb"/>
      <skill ranks="1" name="EscapeArtist"/>
      <skill ranks="1" name="Perception"/>
      <skill ranks="1" name="SenseMotive"/>
      <favoredclassbonus name="Hitpoint"/>
      <feat source="class" name="CombatReflexes"/>
      <feat name="Toughness"/>
      <feat name="ViciousStomp"/>

      The current output of the rules engine looks like the following (abbreviated).
      Known flaws:
      * hit points are wrong

      BAB( value=0 )
      CMB( type=Base, value=2 )
      CMB( type=BullRush, value=2 )
      CMB( type=Disarm, value=2 )
      CMB( type=Grapple, value=2 )
      CMB( type=Overrun, value=2 )
      CMB( type=Sunder, value=2 )
      CMB( type=Trip, value=2 )
      CMD( type=Base, value=14 )
      CMD( type=BullRush, value=14 )
      CMD( type=Disarm, value=14 )
      CMD( type=Grapple, value=14 )
      CMD( type=Overrun, value=14 )
      CMD( type=Sunder, value=14 )
      CMD( type=Trip, value=14 )
      CurrentHitpoints( type=Lethal, value=1 )
      CurrentHitpoints( type=Nonlethal, value=1 )
      CurrentHitpoints( type=Temporary, value=0 )
      CurrentSpeed( value=30 )
      Hitpoints( value=1 )
      Language( name=Common )
      Property[PlayerName=Chris Dolan]
      Race( name=Human )
      Size( type=Medium )
      Speed( value=30 )
      Stat( name=Charisma, value=8 )
      Stat( name=Constitution, value=12 )
      Stat( name=Dexterity, value=14 )
      Stat( name=Intelligence, value=10 )
      Stat( name=Strength, value=14 )
      Stat( name=Wisdom, value=14 )
      StatBonus( name=Charisma, value=-1 )
      StatBonus( name=Constitution, value=1 )
      StatBonus( name=Dexterity, value=2 )
      StatBonus( name=Intelligence, value=0 )
      StatBonus( name=Strength, value=2 )
      StatBonus( name=Wisdom, value=2 )

      On Jun 18, 2013, at 12:21 PM, Chris Dolan <chris@...> wrote:

      > Thanks for the positive feedback. I recommend that you do NOT get excited
      > about the web presentation layer for Drools. :-) As for rules editing, I'm
      > just using the Drools plugin for Eclipse.
      > Lately I'm working on porting my experiment to Android. I expect it to
      > fail because I believe Drools compiles down to Java bytecode instead of
      > Dalvik bytecode, but I might be surprised. If it does fail, I'm going to
      > experiment with pre-compiled rulesets, which will make homebrew rules much
      > harder to implement in an Android-compatible way.
      > All this started because I wanted to apply Rage to my Barbarian at the
      > tabletop instead of swapping between two PDFs on my Nexus tablet...
      > Chris
      > On Tue, June 18, 2013 11:00 am, Eric Jarman wrote:
      >> Poking around on the drools website reveals a gui rule editor (often
      >> requested), web presentation interface (occasionally requested), and an
      >> event processing interface (makes me think gmgen).
      >> I echo the sentiment of exciting.
      >> On Sat, Jun 15, 2013 at 1:15 PM, Andrew <drew0500@...> wrote:
      >>> Looks nice and exciting.
      >>> On 6/15/2013 10:20 AM, Chris Dolan wrote:
      >>>> I've posted my initial code on Github.
      >>>> https://github.com/chrisdolan/pcgen-drools
      >>>> Again, this is just a fun experiment right now. Who knows where this
      >>> will lead...
      >>>> I've implemented Pathfinder ability scores, AC, saves, initiative,
      >>> encumbrance and conditions. I've added support for alternative rule
      >>> systems, but haven't built any.
      >>>> The rule files are at this URL. The size.drl is one of the easiest to
      >>> read.
      >>> https://github.com/chrisdolan/pcgen-drools/tree/master/net.chrisdolan.pcgen.drools/src/main/resources/net/chrisdolan/pcgen/drools/pathfinder
      >>>> Chris
      >>>> On Jun 13, 2013, at 9:32 PM, Chris Dolan <chris@...> wrote:
      >>>>> Hi all. Here's something to distract you from the hard work of
      >>> putting
      >>> out another release. :-)
      >>>>> Ever since I halted work on my Android port of PCGen, I've been
      >>> contemplating alternative ways of representing RPG rules and data. In
      >>> that
      >>> time, I failed to come up with a good plan that didn't require a massive
      >>> rewrite of the LST files and/or th
      > ------------------------------------
      > Yahoo! Groups Links
    Your message has been successfully submitted and would be delivered to recipients shortly.