Basic Roleplaying Forum

Home Forum Downloads Reviews Wiki Gallery Links

Go Back   BRP Central > The Basic Roleplaying Forum > Basic Roleplaying
Register Gallery FAQ Members List Calendar Search Today's Posts Mark Forums Read


d20 creature conversion

Post New Thread  Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old May 14th, 2008
Member
 
Join Date: Jan 2008
Location: Lidingö, Sweden
Posts: 76
Default d20 creature conversion

I’ve been fiddling with a conversion of creatures from the d20 SRD (i.e. from the DnD Monster Manual) to BRP. I need the data for my Creature Generator spreadsheet. Since the data is available in XML and DB formats it’s not that difficult to do a translation. I’ve chosen the quick and dirty route and imported all data into Excel and now I’m almost done with the translation scripts.

When I’m done, creating a word document and a PDF printout of all the creatures won’t be that much trouble, in fact it will just be a matter of writing a VBA script in Word that merges the all the information from the Excel spreadsheets per each creature and stores that as a creature description in a Word document. Before I do that I’d like to see if anyone has any objections to my transformation algorithms.

1) Stats
I base the conversion on the average given in the SRD. The stat is divided by the average dice value and the reminder is added as a dice bonus. The choice of dice is based on the average value.

Code:
'---------------------------------------------------------------------------------------
' Procedure : getDiceString
' Author    : Peter Brink
' Date      : 2008-05-10
' Purpose   : The average stat value / 6 would give you the number of dices used. But
'             we dont use more than a handfull dices. We first need to analyze the
'             average value and decide how many dices we will use. We then use the
'             remainder as a point bonus.
'---------------------------------------------------------------------------------------
'
Public Function getDiceString(averageVal As Integer) As String
    
    Dim noDice As Integer
    Dim diceType As Integer
    Dim diceMod As Integer
    
    diceType = 6
    
    Select Case averageVal
        Case 1 To 4 'split in number of d3 and add reminder as +p
            noDice = CInt(averageVal / 1.5)
            diceMod = averageVal Mod 1.5
            diceType = 3
        Case 5 To 10 'split in number of d4 and add reminder as +p
            noDice = CInt(averageVal / 2.5)
            diceMod = averageVal Mod 2.5
            diceType = 4
        Case 11 To 17 'split in 3d6 and add reminder as +p
            noDice = 3
            diceMod = averageVal - 11
        Case 11 To 20 'split in 4d6 and add reminder as +p
            noDice = 4
            diceMod = averageVal - 14
        Case 21 To 40 'split in 6d6 and add reminder as +p
            noDice = 6
            diceMod = averageVal - 21
        Case 41 To 60 'split in 8d6 and add reminder as +p
            noDice = 8
            diceMod = averageVal - 28
        Case 61 To 80 'split in 10d6 and add reminder as +p
            noDice = 10
            diceMod = averageVal - 35
        Case Else 'split in 10d10 and add reminder as +p
            noDice = 10
            diceMod = averageVal - 55
            diceType = 10
    End Select
    
    If averageVal = 0 Then
        getDiceString = "0"
    ElseIf Not diceMod = 0 Then
        getDiceString = noDice & "d" & diceType & "+" & diceMod
    Else
        getDiceString = noDice & "d" & diceType
    End If
    
End Function
SIZ is a little bit different matter as it's not given in the SRD. I base the conversion on the broad size category and the STR stat value.

Code:
'---------------------------------------------------------------------------------------
' Procedure : getSizDice
' Author    : Peter Brink
' Date      : 2008-05-10
' Purpose   : Uses the STR dice and the Size value of a creature to create it's SIZ dice
'---------------------------------------------------------------------------------------
'
Public Function getSizDice(creatureSize As String, strDice As String) As String
    
    Select Case LCase(creatureSize)
        Case "fine" 'SIZ 1
            getSizDice = "1"
        Case "diminutive" 'SIZ 1-2
            getSizDice = "1d2"
        Case "tiny" 'SIZ 2-4
            getSizDice = "1d3+1"
        Case Else
            getSizDice = parseStrDice(strDice, creatureSize)
    End Select
    
End Function
2) Move
I divide the d20 move rate by 10 and drop all reminders, this gives a reliable translation to BRP, IMO.

3) Armour
Here I just parses the armour record and uses the natural AC bonus as a AP value.

4) Skills
I wrote a skill conversion function for the Creature Creator and I use it here to convert a d20 skill to an equivalent BRP skill. The skill ranks are multiplied by 5 and this gives a first rudimentary conversion. However, the skill levels seems a bit high so I'm wondering if I don't need to write a more intelligent conversion routine.

5) Weapons
Same as with skills, the skill rank is converted. This can lead to quite high base chances. But some creatures in RQ also had high base chances. A more general conversion algorithm is probably needed here... The weapon type checked against those I have in the Creator.

6) Hit Locations
I use the categories of hit locations from RQ Creatures. I also need to create a few new ones. No problems here as far as I can see.

7) Description
The description contains of a few sections. The first is just a short description of the creature and that only needs to be extracted. The second is a very brief note on the creature's combat tactics, also only needs to be extracted. Then there are notes about special powers and the like. I don't really plan to keep those - but I haven't decided yet. There are also notes on the creatures skills, or what skills the creature has any racial bonuses in. I'm wondering if one perhaps should use these notes when assessing the average skill values and perhaps that will lead to a better choice of base skill levels.
Reply With Quote
  #2 (permalink)  
Old May 17th, 2008
Junior Member
 
Join Date: Mar 2008
Posts: 9
Default

That's a great idea. DnD has great monsters.
Reply With Quote
  #3 (permalink)  
Old May 17th, 2008
Senior Member
 
Join Date: Oct 2007
Location: Bingley, Yorkshire
Posts: 566
Default

I'm not very familiar with the 3.x monster stats. (Still struggling to find a good way to convert the old MM ones!)

Does your method distinguish AC factors that are due to DEX-type bonuses? They should add to parry and/or dodge skills somehow.

Once you know their CON, how about using their HPs to calculate SIZ?
__________________
280/420
Reply With Quote
  #4 (permalink)  
Old May 17th, 2008
Member
 
Join Date: Jan 2008
Location: Lidingö, Sweden
Posts: 76
Default

Quote:
Originally Posted by frogspawner View Post
Does your method distinguish AC factors that are due to DEX-type bonuses? They should add to parry and/or dodge skills somehow.
The d20 SRD has been translated into XML and from there into various DB formats, that's my source. The armour class record for an Aboleth, for example, looks like this:

Code:
16 (-2 size, +1 Dex, +7 natural), touch 9, flat-footed 15
This function parses that string and returns the natural AC bonus, which I use as natural AP.
Code:
Public Function parseAC(armourString As String) As Integer
    Dim armour As Variant
    Dim tempStr As Variant
    Dim natural As Variant
    Dim cleanedStr As Variant
    Dim apValue As Variant
    
    armour = Split(armourString, ",")
    apValue = 0
    
    For Each tempStr In armour
        If InStr(LCase(tempStr), "natural") > 0 Then
            cleanedStr = Trim(tempStr)
            natural = Split(cleanedStr, " ")
            apValue = natural(0)
            apValue = CInt(Right(apValue, Len(apValue) - InStr(apValue, "+")))
        End If
    Next
    
    parseAC = apValue
    
End Function
So, no I don't use the DEX bonuses in my calculation.

Quote:
Originally Posted by frogspawner View Post
Once you know their CON, how about using their HPs to calculate SIZ?
But HP in DnD does not reflect CON + SIZ, at least I have not been able to any such relationship. In 3E all creatures are sorted into a set of Size categories. I base my calculation on that plus the STR value of the creature. SIZ and STR are often somewhat related in BRP.

Last edited by peterb : May 17th, 2008 at 12:11.
Reply With Quote
  #5 (permalink)  
Old May 17th, 2008
Senior Member
 
Join Date: Oct 2007
Location: Bingley, Yorkshire
Posts: 566
Default

Quote:
Originally Posted by peterb View Post
So, no I don't use the DEX bonuses in my calculation.
That's good, then!

Quote:
Originally Posted by peterb View Post
But HP in DnD does not reflect CON + SIZ, at least I have not been able to any such relationship.
I think HP is very important for the 'character' of a monster, and should be kept close to the D&D HPs where reasonable. Knowing HP and CON, SIZ would then be defined. Obviously it doesn't work for all D&D creatures: some have more HP/HD than they should from Size alone. So I'd apply some sort of 'cap', according to size category (the extra HD/HP giving extra Dodge capability, say). Or are you taking the view that D&D HPs need to change, being generally too high for BRP?
__________________
280/420
Reply With Quote
  #6 (permalink)  
Old May 17th, 2008
Member
 
Join Date: Jan 2008
Location: Lidingö, Sweden
Posts: 76
Default

Quote:
Originally Posted by frogspawner View Post
I think HP is very important for the 'character' of a monster, and should be kept close to the D&D HPs where reasonable. Knowing HP and CON, SIZ would then be defined. Obviously it doesn't work for all D&D creatures: some have more HP/HD than they should from Size alone. So I'd apply some sort of 'cap', according to size category (the extra HD/HP giving extra Dodge capability, say). Or are you taking the view that D&D HPs need to change, being generally too high for BRP?
I try to convert the creatures so that they conform to the normal scale of powers in d100 games. From this follows that I change the HP value of the creatures - so yes I do think the HPs needs to change, they are too high for BRP, IMO.
Reply With Quote
  #7 (permalink)  
Old May 17th, 2008
Senior Member
 
Join Date: Oct 2007
Location: Bingley, Yorkshire
Posts: 566
Default

Yes, you're probably right. I prefer to keep the D&D HP values, but that's non-standard and may be too much.

Does your algorithm match creatures already published in BRP well? For example (dragons are too variable)...
T.Rex: STR 10D6+32 (av.67); CON 4D6+21 (av.35); SIZ 6D6+32 (av.53); HP 44; AP 10; Bite 50% 2d6+db; Claw 35% d4+db/2; Kick 45% D6+db.

My way would give 'em 80-90hp (from MM, not sure how many HD they have in 3.x). How about yours?
__________________
280/420
Reply With Quote
  #8 (permalink)  
Old May 17th, 2008
Senior Member
 
Join Date: Apr 2008
Posts: 104
Default

I ran 5 or 6 sessions of BRP&D, a fast and dirty conversion to classless d100.

I loved the simplicity of size in D&D. I pretty much doubled HP for each category larger than Medium. Im not sure if I used the same progression in the reverse direction.

Sure, it wasn't as granular as having an actual Size score, but no one semed to mind.
Reply With Quote
  #9 (permalink)  
Old May 17th, 2008
Senior Member
 
Join Date: Oct 2007
Location: Bingley, Yorkshire
Posts: 566
Default

Quote:
Originally Posted by Harshax View Post
I ran 5 or 6 sessions of BRP&D, a fast and dirty conversion to classless d100. ... I pretty much doubled HP for each category larger than Medium.
And a 'slow and dirty' conversion is all I usually run!
But I don't quite understand the conversion you used - how many HP would an 18 HD T.Rex have had in yours?
__________________
280/420
Reply With Quote
  #10 (permalink)  
Old May 17th, 2008
Member
 
Join Date: Jan 2008
Location: Lidingö, Sweden
Posts: 76
Default

Quote:
Originally Posted by frogspawner View Post
Yes, you're probably right. I prefer to keep the D&D HP values, but that's non-standard and may be too much.

Does your algorithm match creatures already published in BRP well? For example (dragons are too variable)...
T.Rex: STR 10D6+32 (av.67); CON 4D6+21 (av.35); SIZ 6D6+32 (av.53); HP 44; AP 10; Bite 50% 2d6+db; Claw 35% d4+db/2; Kick 45% D6+db.

My way would give 'em 80-90hp (from MM, not sure how many HD they have in 3.x). How about yours?
From the data in the SRD a Tyranosaurus would have:
STR 10d6+32, CON 6d6+14, SIZ 10d6+48, HP 59, AP 5, Bite 55%.

Because I decided to use the STR value as a base for SIZ some inconsistencies with existing creatures will happen. I figure that most large creatures have more SIZ than STR, but that might be a false assumption on my part... Maybe one should use the average of the average values of STR and CON instead and possibly add or subtract a few points based on size class.

Last edited by peterb : May 17th, 2008 at 19:29.
Reply With Quote
Reply Post New Thread



Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.1.0
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC