Names, Version & Release Numbers - How Do They Interact?
Hi Guys,
Sorry for the long post but I wanted to spell things out explicitly - there's a Summary at the end to speed things up, if you like. :)
I've had a search through the Forums can I can't seem to find anything on this. If it already exists, could someone please point me to the relevant thread(s).
In the start of each Ruleset's base.xml file we'll find a line such as (these are from v3.0.9 of the CoreRPG, 3.5E & Pathfinder Rulesets, respectively):
Code:
<root version="3.0" release="3" logo="logo.png">
<root version="3.0" release="14" logo="logo.png">
<root version="3.0" release="1" logo="logo.png">
I understand that the "version" refers to the version of FG and that the "release" refers to the version of the Ruleset.
Further down in a Cascaded or Child Ruleset we'll find lines such as (these are from v3.0.9 of the 3.5E & Pathfinder Rulesets, respectively):
Code:
<importinfo>
<acceptfrom ruleset="d20" />
</importinfo>
<importruleset source="CoreRPG" />
<importinfo>
<acceptfrom ruleset="d20" />
<acceptfrom ruleset="3.5E" />
</importinfo>
<importruleset source="3.5E" />
So I understand that because the Pathfinder Ruleset has the <importruleset source="3.5E" /> line it will "Cascade" down from the 3.5E Ruleset - in other words (in Pseudo-Code):
Code:
Rule 1:
If Ruleset X has <importruleset source="Y" /> then
Ruleset X will Cascade from (be a Child of) Ruleset Y
Endif
In an Extension we may find lines such as (these are from the Wiki):
Code:
<root version="2.0">
<name>d20</name>
<minrelease>12</minrelease>
<maxrelease>12</maxrelease>
I understand that the "version" in an Extension is the version of the Extension - the same as the "release" of a Ruleset.
I also understand that the "name" in an Extension refers to the name of a Ruleset or another Extension and that the "minrelease" and "maxrelese" refer to the Ruleset or Extension version - in other words (in Pseudo-Code):
Code:
Rule 2:
If Extension A has <name>Y</name>then
Extension A will interact with Ruleset Y (as per which Tag the "name" Tag is a child of)
Endif
Rule 3:
If Extension A has <minrelease>nRelease1</minrelease> and
Ruleset Y has <root version="nVersion" release="nRelease2"> and
nRelease1 >= nRelease2 then
Extension A will interact with Ruleset Y (as per which Tag the "name" Tag is a child of)
Endif
Rule 4:
If Extension A has <maxrelease>nRelease1</maxrelease> and
Ruleset Y has <root version="nVersion" release="nRelease2"> and
nRelease1 <= nRelease2 then
Extension A will interact with Ruleset Y (as per which Tag the "name" Tag is a child of)
Endif
Rule 5:
If Extension A has <name>B</name> then
Extension A will interact with Extension B (as per which Tag the "name" Tag is a child of)
Endif
Rule 6:
If Extension A has <minrelease>nRelease</minrelease> and
Extension B has <root version="nVersion"> and
nRelease >= nVersion then
Extension A will interact with Extension B (as per which Tag the "name" Tag is a child of)
Endif
Rule 7:
If Extension A has <maxrelease>nRelease</maxrelease> and
Extension B has <root release="nVersion"> and
nRelease <= nVersion then
Extension A will interact with Extension B (as per which Tag the "name" Tag is a child of)
Endif
In a Module we'll find a line such as (these are from v3.0.9 of the 3.5E-basicrules & CSRDbasicrules Modules, respectively):
Code:
<ruleset>3.5E</ruleset>
<ruleset>d20</ruleset>
Now, I understand that both of these Modules can be loaded into the Pathfinder Ruleset because the Pathfinder Ruleset has the <acceptfrom ruleset="d20" /> and <acceptfrom ruleset="3.5E" /> lines and the 3.5E-basicrules Module has the <ruleset>3.5E</ruleset> line and the CSRDbasicrules Module has the <ruleset>d20</ruleset> line - in other words (in Pseudo-Code):
Code:
Rule 8:
If Ruleset X has <acceptfrom ruleset="S-String" /> and
Module L has <ruleset>S-String</ruleset> then
Ruleset X will be able to open Module L
Endif
So, have I missed anything?
Is all the above correct?
If so, why is the 3.5E Ruleset able to open the 3.5E-basicrules Module: they DON'T follow Rule 8, nor is there anything I can find in the CoreRPG Ruleset which would allow this to occur (the CoreRPG can't open the 3.5E-basicrules Module, btw)?
Summary
Interaction Rules for Rulesets, Extensions and Modules
Code:
Rule 1:
If Ruleset X has <importruleset source="Y" /> then
Ruleset X will Cascade from (be a Child of) Ruleset Y
Endif
Rule 2:
If Extension A has <name>Y</name> then
Extension A will interact with Ruleset Y (as per which Tag the "name" Tag is a child of)
Endif
Rule 3:
If Extension A has <minrelease>nRelease1</minrelease> and
Ruleset Y has <root version="nVersion" release="nRelease2"> and
nRelease1 >= nRelease2 then
Extension A will interact with Ruleset Y (as per which Tag the "name" Tag is a child of)
Endif
Rule 4:
If Extension A has <maxrelease>nRelease1</maxrelease> and
Ruleset Y has <root version="nVersion" release="nRelease2"> and
nRelease1 <= nRelease2 then
Extension A will interact with Ruleset Y (as per which Tag the "name" Tag is a child of)
Endif
Rule 5:
If Extension A has <name>B</name> then
Extension A will interact with Extension B (as per which Tag the "name" Tag is a child of)
Endif
Rule 6:
If Extension A has <minrelease>nRelease</minrelease> and
Extension B has <root version="nVersion"> and
nRelease >= nVersion then
Extension A will interact with Extension B (as per which Tag the "name" Tag is a child of)
Endif
Rule 7:
If Extension A has <maxrelease>nRelease</maxrelease> and
Extension B has <root release="nVersion"> and
nRelease <= nVersion then
Extension A will interact with Extension B (as per which Tag the "name" Tag is a child of)
Endif
Rule 8:
If Ruleset X has <acceptfrom ruleset="S-String" /> and
Module L has <ruleset>S-String</ruleset> then
Ruleset X will be able to open Module L
Endif
My Questions
(Briefly Repeated)
So, have I missed anything?
Are the Rules as I've stated them correct?
If so, why is the 3.5E Ruleset able to open the 3.5E-basicrules Module: they DON'T follow Rule 8?
Cheers