hello guys,

I just thought that I'd let you all know that I am working on a very flexible Dungeons 
& Dragons campaign manager, it is called stone & blood (not very subtle, I know, but 
its better than tunnels and trolls ;-)  .

Yess its ALL being done in rebol.

The name is not final, I just don't know how to call it! any ideas !?

I was starting a new campaign, then looked at some tools on the web (including the 
excellent and java-based PCGEN) and they all have the same problem.  They stick to the 
rules too much and when you are an experienced DM and you start having your own house 
rules, then, they all break up.

SO I built the engine to be completely open, and you should be able to change many 
things on a character without any programming skills.


Here are the current modules:
------------------------------

RAISE dialect (in-development 50% done):
--------------
A dialect which creates characters.  It allows you to break ALL the standard D&D 
rules.  It will eventually allow you to add your own stats.  The dialect is meant to 
be used by non programmers, so relies on practically NO syntax.    The data is 
included in the resulting creature as it handles each aspect.  specifying aspects in 
any order is legal, but might change the end character, because some statistics in D&D 
don't stack up the same if you have them at a low level or at a higher level (like the 
number of skills based on int).

RAISE is uber simple to use, because most aspects can be transcribed directly as 
character stats ex:

RAISE [
        "Torgar Battlestar"  ; first unnamed string is character name
         "Hunter of evil"    ; second is the title
        17 13 16 9 15 8
        dwarf
        male
        fighter 2
        cleric
        fighter
        vampire
        two-weapon-style
        armorsmith 4
        bullrush
        refl 4
        will 3
      fort 6
        con 1
]

Most aspects can be specified multiple times, and if they can be stacked, they will!  
so specifying:
[fighter 2] or [fighter fighter] are EXACTLY the same.  

Some datatypes are handled right in the base block without preceding aspect words, 
these will be documented, and generally set the most basic stats like description and 
abilities.

Raise keeps a history of every thing you throw at it and eventually, you'll be able to 
edit some things in the history and "resurect" (rebuild) your character.

Another cool thing about raise is that some aspects actually are macros for the basic 
aspects.  for example, class levels (fighter, cleric, etc) will call raise with 
whatever aspects change at that level.  The same thing for monstrous templates (like 
vampire above). So if you want to create your own templates (like monsters ;-)  just 
add an aspect block to the raise engine, give it a name, and you can then include it 
in a raise spec, from now on. :-)

Some were wondering where SLIM can be usefull... this is such a case.  Since there 
will be some hooks for external data (races, classes and whatever), then just 
supplying slims with the appropriate functions in them, will allow the external data 
to link right in the application.

Raise will have an aliasing mechanism, which lets you extend any aspects (even those 
comming from external sources).  Add aspects in another language, or supply 
alternative names so that they are more intuitive to you.  Note that you can have any 
number or aliases for each aspect.  Also note that any aspect macros will also be able 
to use the aliases, so if you create external modules in spanish, then just giving 
access to the top-level aspects in english, will allow your spanish system, to work in 
english too.

Raise, returns a CREATURE! object.  This object contains all the calculated statistics 
of your character/creature.  It is then easy to use it in another tool, like an 
encounter manager or whatever.




TABLES (90% done):
-------
I have already finished a table engine, which lets you create tables (either by row & 
columns of data) or by algorythm. 

It has an automatic viewer (even for algorythimic based tables!). You can look at your 
table in console(print), as an html table or in a view face. Amongst other things, It 
supports tabs specs (for column width), to allow you to properly layout the table.

You can also lookup data by row or column AND you can add refinements for your own 
tables (many of the ones in the rules already will have).  the refinements allow you 
to lookup the tables using more approriate identifers. like:

table/lookup/mod 17  ; this looks up a table and goes to column 
                              ; 'mod and retreives row 17 of it.



CHAOS (90% done):
---------
This module is used to roll virtual dice.  The chaos dialect reads a string of text 
and rolls any combination of dice for you.  For any rpg gamers, the notation is pretty 
standard.

chaos "4d6+3"       ; roll four six-sided dice and add 3
chaos "3/4d6"       ; roll four six-sided dice, keep the 3 best rolls 
                    ; (no other engine I know of does this ;-)
chaos "d20+5+2+1"   ; roll a twenty sided die and add several modifiers
chaos "2d4*2+1"     ; add-up two four-sided die, multiply by 2 then add 1

in a later release, you will be able to merge a table reference to a chaos spec, in 
order for you to look up die specs and roll them:

chaos "table(PHB:weapons/damage sword)" ; lookup weapon damage for a sword and roll it

Eventually, chaos will be usable right in RAISE, so that it generates random creatures 
based on templates.



Here are upcomming modules (any gamers want to help? especially in xml area):
--------------------------------------------------
-STONE:  The gui which includes the other modules.  It might be built using prototype 
of glass!
-BLOOD: Interface to RAISE dialect, which lets you buildup a creature, picking stuff 
in lists as the character advances in levels.
-Chaos GUI
-Encounter manager (initiative, assign opponents, auto rolls of attacks, damage, all 
keyboard enabled for speed.)
-Campaign editor (put all your campaign notes, and location descriptions. Create 
vector/tile maps, multi-level maps browsing from world, to room tile! create 
encounters in advance and assign them to locations on the maps. print maps to 
browser... includes user-set scaling to create in-game room printouts used by Player's 
figurines)
-XML export of data so that anyone can create his own forms, printouts.
-XML layout dialect, which would allow output in pdf or html of S&B XML datat.


This being said, I've temporarily suspended forge development (which HAS started, and 
is so complex, it needs a lot of analysis).  in a few weeks, I'll have enough 
large-scale development done on S&B (Stone and Blood) to approach STEEL|forge with a 
real-world scenario to support.  So forge, will more rapidly evolve, into an 
application which solves real-world programming problems.  

Stone & Blood will thus become the official STEEL|forge test application and forge 
won't be just a toy, even in its first release. :-)


-MAx
---
"You can either be part of the problem or part of the solution, but in the end, being 
part of the problem is much more fun."
 

-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to