Difference between revisions of "OpenRPG/Flexinode"

From David's Notebook
Jump to navigationJump to search
(Rounding policy is per collection)
Line 4: Line 4:
   
 
* a name (as displayed in the tree)
 
* a name (as displayed in the tree)
* a 'right click action' (text and one or more dice rolls to be sent to the chat)
 
   
 
And may also have:
 
And may also have:
   
  +
* one or more variables.
* a value
 
 
* a 'double click action' (text which may contain one or more dice rolls to be sent to the chat)
* a tag (a short name, used to uniquely identify the node)
 
* a description of the node.
+
* a longer description for the action.
   
  +
Flexinodes can be nested arbitrarily.
Many nodes can be includes in folders and sub-folders to form hierarchical collections.
 
   
Actions can include dice rolls which reference the value of the node and of other nodes. This means that tags must be unique within a flexinode collection.
+
Actions can include dice rolls which can include variable references. Variables are searched for in this order:
   
  +
# current node
A collection has a number of global properties. These are:
 
  +
# child nodes
  +
# parent node
  +
# parent's children
  +
# parent's children's children (etc.)
  +
# grandparent
  +
# grandparent's children
  +
# etc.
   
  +
This means a flexinode can contain several complete flexinode character trees and each subtree will use its own variables.
* Rounding policy: round down (as in d20), round nearest.
 
  +
  +
The longer action description will be presented as a tooltip in the chat window.
   
 
== Examples ==
 
== Examples ==
Line 28: Line 36:
 
Abilities (folder)
 
Abilities (folder)
 
:Strength
 
:Strength
::value = 15
+
::strength = 15
  +
::str = (strength - 10) / 2
::tag = str
 
::action = [1d20 + str.d20.ability_mod()]
+
::action: [1d20 + str]
 
...
 
...
   
 
Attacks (folder)
 
Attacks (folder)
 
:Longsword
 
:Longsword
::action = [1d20 + str.d20.ability_mod()] Damage: [1d8 + str.d20.ability_mod()]
+
::action: [1d20 + str] ===> [1d8 + str]
::description = One-handed, primary attack
+
::description: One-handed, primary attack
   
 
Right clicking the longsword node would produce:
 
Right clicking the longsword node would produce:
   
<b title="One-handed, primary attack">Longsword</b>: [1d20 + 3] ==> (15) = 18 Damage: [1d8 + 3] ==> (3) = 6
+
<b title="One-handed, primary attack">Longsword</b>: [1d20 + 3] => (15) = 18 ===> [1d8 + 3] ==> (3) = 6
   
 
=== 4e ===
 
=== 4e ===
Line 46: Line 54:
 
A 4e node for a power might look like:
 
A 4e node for a power might look like:
   
  +
Character
Level
 
:value = 3
+
:level = 3
:tag = level
 
 
...
 
...
   
 
Abilities (folder)
 
Abilities (folder)
 
:Intelligence
 
:Intelligence
::value = 15
+
::intelligence = 15
  +
::int = (intelligence - 10 / 2
::tag = int
 
::action = : [1d20 + level/2 + int.d20.ability_mod()]
+
::action = : [1d20 + level/2 + int]
 
...
 
...
   
 
Powers (folder)
 
Powers (folder)
 
:Magic Missile
 
:Magic Missile
::action = vs Reflex: [1d20 + level/2 + int.d20.ability_mod()] Damage: [1d4 + int.d20.ability_mod()]
+
::action: [1d20 + level/2 + int] (vs Ref) ===> [1d4 + int]
::description = At will power
+
::description: At will power
   
 
Right clicking the Magic Missile node would produce:
 
Right clicking the Magic Missile node would produce:
   
<b title="At will power">Magic Missile</b> vs Reflex: [1d20 + 4] ==> (13) = 17 Damage: [1d4 + 3] ==> (3) = 6
+
<b title="At will power">Magic Missile:</b> [1d20 + 4] => (13) = 17 (vs Ref) ===> [1d4 + 3] => (3) = 6

Revision as of 01:39, 1 June 2009

A flexinode is an OpenRPG game tree node that can used used for any rule system.

They have:

  • a name (as displayed in the tree)

And may also have:

  • one or more variables.
  • a 'double click action' (text which may contain one or more dice rolls to be sent to the chat)
  • a longer description for the action.

Flexinodes can be nested arbitrarily.

Actions can include dice rolls which can include variable references. Variables are searched for in this order:

  1. current node
  2. child nodes
  3. parent node
  4. parent's children
  5. parent's children's children (etc.)
  6. grandparent
  7. grandparent's children
  8. etc.

This means a flexinode can contain several complete flexinode character trees and each subtree will use its own variables.

The longer action description will be presented as a tooltip in the chat window.

Examples

d20

A subset of a d20 node for a simple attack might look like:

Abilities (folder)

Strength
strength = 15
str = (strength - 10) / 2
action: [1d20 + str]

...

Attacks (folder)

Longsword
action: [1d20 + str] ===> [1d8 + str]
description: One-handed, primary attack

Right clicking the longsword node would produce:

Longsword: [1d20 + 3] => (15) = 18 ===> [1d8 + 3] ==> (3) = 6

4e

A 4e node for a power might look like:

Character

level = 3

...

Abilities (folder)

Intelligence
intelligence = 15
int = (intelligence - 10 / 2
action = : [1d20 + level/2 + int]

...

Powers (folder)

Magic Missile
action: [1d20 + level/2 + int] (vs Ref) ===> [1d4 + int]
description: At will power

Right clicking the Magic Missile node would produce:

Magic Missile: [1d20 + 4] => (13) = 17 (vs Ref) ===> [1d4 + 3] => (3) = 6