Basic Roleplaying Forum |
|
Home Forum Downloads Reviews Wiki Gallery Links |
|
|||||||
| Register | Gallery | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|
![]() |
|
|
LinkBack | Thread Tools | Display Modes |
|
|||
|
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
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
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. |
|
|||
|
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 |
|
|||
|
Quote:
Code:
16 (-2 size, +1 Dex, +7 natural), touch 9, flat-footed 15 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
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. |
|
|||
|
That's good, then!
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 |
|
|||
|
Quote:
|
|
|||
|
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 |
|
|||
|
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. |
|
|||
|
Quote:
![]() 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 |
|
|||
|
Quote:
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. |