Good to know they are gamers on the list... I myself am working on my
object/class library just to work on a D&D program on which I've been
working a lot in the past few years... but not really started coding
yet. 

Good luck with your project... once I finish Recoil, maybe we could join
effort... but my view may be too much rule-driven for your taste ;)

chris

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
Of Maxim Olivier-Adlhoch
Sent: Monday, February 09, 2004 7:20 PM
To: Rebol-List (E-mail)
Subject: [REBOL] [OT] Announcement, new application in the making...
stone & blood


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.

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

Reply via email to