Aller au contenu

Photo

Random character generator for BG 1 using Easy Tutu or BG 2


  • Veuillez vous connecter pour répondre
70 réponses à ce sujet

#26
corey_russell

corey_russell
  • Members
  • 5 289 messages

Gate70 wrote...

corey_russell wrote...
Ran into something strange. It's either a bug, or maybe some rule we don't know about. To interpret the class minimums I was initially just going to look for a keyword -- such as "illusionist" then apply the class minimum. But I found out I can't do that, e.g., if I create a cleric/illusionist, the dexterity minimum is 3, even though for a standard illusionist the minimum DEX is 16. So then I thought ok, perhaps the rule is you take the lowest minimum for multis. But that isn't the case either, as I then created a fighter/thief (gnome) and it enforced the STR 9 DEX 9 rules for fighters and thieves. Did I find a bug? Or is this 2nd ed. rule I haven't a clue about?

Anyone know anything about this?

I suppose we ought to check each combination out.

Gnome illusionist/thief and illusionist/fighter also reduce dexterity to 9 and 3 respectively. They also allow a wisdom of 2 (illusionist/cleric forces 9 wisdom so it looks like the rules are inconsistently applied).



I'm just gonig to operate on the assumption I found a bug, I will enforce the class minimums regardless if multi or not.

#27
Grond0

Grond0
  • Members
  • 6 487 messages
I think it's just that the game is treating illusionists as standard mages for the purpose of stats - I agree that should be treated as a bug.

#28
Gate70

Gate70
  • Members
  • 3 208 messages
I tried rolling a party of five as below, actually looks reasonably balanced but the stats show how much I usually powergame them. Now thinking how to deal with the sub-75's.

Female Elf Transmuter Chaotic Good 10 18 6 13 14 15 (76)
Female Halfling Cleric Neutral Evil 8 16 13 6 13 15 (71)
Female Half Elf Thief True Neutral 7 11 8 17 15 14 (72)
Male Halfling Berserker Lawful Evil 12 18 14 18 12 15 (89)
Female Dwarf Priest of Helm Neutral Good 17 16 19 15 13 16 (96)

#29
corey_russell

corey_russell
  • Members
  • 5 289 messages

Gate70 wrote...

I tried rolling a party of five as below, actually looks reasonably balanced but the stats show how much I usually powergame them. Now thinking how to deal with the sub-75's.

Female Elf Transmuter Chaotic Good 10 18 6 13 14 15 (76)
Female Halfling Cleric Neutral Evil 8 16 13 6 13 15 (71)
Female Half Elf Thief True Neutral 7 11 8 17 15 14 (72)
Male Halfling Berserker Lawful Evil 12 18 14 18 12 15 (89)
Female Dwarf Priest of Helm Neutral Good 17 16 19 15 13 16 (96)


You didn't say Gate70, but is this using the worksheet you made up? And did you get a chance to try my program?

#30
Gate70

Gate70
  • Members
  • 3 208 messages
Yes, was with the spreadsheet.

I haven't tried your program yet. Will have a look now.

EDIT. Tried it in Wine, using Windows 98 settings.
winevdm: Cannot start DOS application H:\\rndmchar\\RNDMCHAR.EXE
         because the DOS memory range is unavailable.
         Try running this application with DOSBox.

Then tried DOSBox setting the C drive to the folder you sent (not familiar with DOSBox).
Path not found in line 1000 of module RNDMCHAR at address 01A2:2097

OK, dropped DOSBox and set the C drive to one level above that location so I could CD into the RNDMCHAR folder, and that works.
Posted Image

Are you going to add the /nn strength modifier for fighter/ranger/paladin/barbarian? I suppose I'd better have a look at your code now...doesn't look great in a text editor though.
Posted Image

Modifié par Gate70, 23 février 2012 - 10:15 .


#31
corey_russell

corey_russell
  • Members
  • 5 289 messages

Gate70 wrote...

Yes, was with the spreadsheet.

I haven't tried your program yet. Will have a look now.

EDIT. Tried it in Wine, using Windows 98 settings.
winevdm: Cannot start DOS application H:rndmcharRNDMCHAR.EXE
         because the DOS memory range is unavailable.
         Try running this application with DOSBox.

Then tried DOSBox setting the C drive to the folder you sent (not familiar with DOSBox).
Path not found in line 1000 of module RNDMCHAR at address 01A2:2097

OK, dropped DOSBox and set the C drive to one level above that location so I could CD into the RNDMCHAR folder, and that works.
Posted Image

Are you going to add the /nn strength modifier for fighter/ranger/paladin/barbarian? I suppose I'd better have a look at your code now...doesn't look great in a text editor though.
Posted Image


Yes, it needs to be run from C:\\rndmchar folder.

This is a QuickBasic file not a text file. I believe there's an option in QuickBasic to save it as a text file, however. I'll e-mail you text one tonight. By the way, you will get your answer to you question if you keep generating until you get any warrior type with strength 18. (an explanation appears on screen)  I could certainly easily add that, but then that means using shadow keeper to transfer that result, and the BG 2 engine could generate it just as well.

I still have to add class minimums, doing that tonight.

#32
corey_russell

corey_russell
  • Members
  • 5 289 messages
I've updated my program. It now includes the class minimums (thanks Gate70 for your research on that, sped up coding qutie a bit). It also generates the strength modifiers for fighters that get 18 STR. It does Ranger Racial enemies as well. Screenshot below.

Posted Image

Is there any other features that anyone would need/want to see? the idea is to use this anytime a random party/character is needing to be generated.

#33
Grond0

Grond0
  • Members
  • 6 487 messages
What % chances have you used to get each stat value?

#34
corey_russell

corey_russell
  • Members
  • 5 289 messages
There's equal chance for all values, e.g., 1 out of 18 in most cases. But the minimum 75 requirement, plus the minimums for classes/races bumps up the values a bit. I check for 75 BEFORE upping the class minimums, the results seem close what you would get doing it in BG 2/EasyTutu.

#35
Grond0

Grond0
  • Members
  • 6 487 messages

corey_russell wrote...
Is there any other features that anyone would need/want to see? the idea is to use this anytime a random party/character is needing to be generated.

Have you tried to implement random proficiencies / thief points?  If might be nice to have that available as an option.  Also possibly a parameter for size of party as another option.

#36
corey_russell

corey_russell
  • Members
  • 5 289 messages

Grond0 wrote...

corey_russell wrote...
Is there any other features that anyone would need/want to see? the idea is to use this anytime a random party/character is needing to be generated.

Have you tried to implement random proficiencies / thief points?  If might be nice to have that available as an option.  Also possibly a parameter for size of party as another option.


Grond0, that's good input, so let me just respond to each one:

1) Thief points -- how many thief points to distribute depends on level (e.g., level 1 easytutu, but levels 7/8 in BG 2), dexterity, and also class/kit. I do NOT have the formulas for these 3 things, and nor it is easy to get this info from the interface, unlike legal alignments, for example. BUT, if someone else gathered the formulas/info, certainly then I could code it.

2) Random proficiencies - I was afraid you were going to ask about this. : ) There's a lot of variation here between the kits/classes (archers can only be proficient in melee, but allowed grandmastery in bows, bards normally only can be proficient, but blades can get ** in two weapon style, berserkers can't specialize in range weapons, etc.). I don't have this information either. Note that this also would depend on generating for a level 1 character or SoA character. So it's basically the same as #1 -- if someone can gather the information for me, I'll gladly code it. : ). Also, it would be super unfair to make the proficiencies for an unmodded EasyTutu - you might get a proficiency for a weapon that doesn't exist in BG 1! It would probably need to be a setting, for what version you are using and then distribute the proficiencies appropriately.

3) Size of Party - I could certainly do this. However, the effect is the same, e.g. I show one character on screen at a time, you would press <Enter> after creating each one. Each one gets put to a file which you can print and use to enter into the BG2/EasyTutu. Nevertheless, if this would provide some kind of focus, I can certainly ask the question how many to generate and generate that many only. I could also change the description e.g, Random Party Member #1, which could be helpful. I'll look into doing this tonight.

Modifié par corey_russell, 24 février 2012 - 05:32 .


#37
After5CST

After5CST
  • Members
  • 171 messages
Corey: Have you looked at the relevant 2DA files inside Near Infinity or the like? I was planning on using them for my own random character generator ( generate stats, and from there determine class / race / etc ), since they list many of rule details that the BG2 engine itself uses.

(One glaring omission AFAIK: the restrictions on class by race are not in a table I could find, and presumably are hard-coded into the engine. Which I haven't sit down and mapped yet).

#38
After5CST

After5CST
  • Members
  • 171 messages
As an example, from ABRACE.2DA:
2DA V1.0
0
            MOD_STR MOD_DEX MOD_CON MOD_INT MOD_WIS MOD_CHR
HUMAN       0       0       0       0       0       0
DWARF       0       0       1       0       0       -1
ELF         0       1       -1      0       0       0
GNOME       0       0       0       1       -1      0
HALF_ELF    0       0       0       0       0       0
HALFLING    -1      1       0       0       0       0
HALFORC     1       0       1       -2      0       0
This shows the mods to attributes by race.  A lot of the AB*.2DA files deal with character generation.

Modifié par After5CST, 24 février 2012 - 05:49 .


#39
Gate70

Gate70
  • Members
  • 3 208 messages
I did wonder about the 2DA's, looks like that may be safer than trial and error (quicker too). I've only used NI once so don't want to volunteer on this one.

Interesting to see the variable names too, I'd use the same in a program rather than having to make my own up.

#40
corey_russell

corey_russell
  • Members
  • 5 289 messages

After5CST wrote...

Corey: Have you looked at the relevant 2DA files inside Near Infinity or the like? I was planning on using them for my own random character generator ( generate stats, and from there determine class / race / etc ), since they list many of rule details that the BG2 engine itself uses.

(One glaring omission AFAIK: the restrictions on class by race are not in a table I could find, and presumably are hard-coded into the engine. Which I haven't sit down and mapped yet).


After5CST: No, while I have heard of Near Infinity I have never used it. While I have lots of programming exeperience, I have zero mod experience. If you know of a file that can answer my questions above, if you could e-mail the contents (e.g. in a usable form) to coreypajajosh AT hotmail DOT com that would be great.

#41
Grond0

Grond0
  • Members
  • 6 487 messages
I'm happy to pull together information on thief proficiencies and weapon proficiencies.

#42
corey_russell

corey_russell
  • Members
  • 5 289 messages
Sounds great Grond0 - you know where to send them! Gate70 has looked at my EXE, and he says it looks good so far. It's a bit picky where you put it though, but I'm going to see if I can't it make less picky tonight.

#43
After5CST

After5CST
  • Members
  • 171 messages
EDITS: Abbreviated column titles (PICK_POCKETS to PP) in order to make the columns narrow enough to be nicely readable in the browser... also fixed miscellaneous spacing issues.

corey_russell wrote...1) Thief points -- how many thief points to distribute...

Initial skill levels are set via RACE (from SKILLRAC.2DA):
            PP  OL  FT  MS HiS  DI  ST
HUMAN       15  10   5  10   5   0   0
DWARF       15  20  20  10   5   5  10
ELF         20   5   5  15  15   0   0
GNOME       15  15  15  15  10  10   5
HALF_ELF    25  10   5  10  10   0   0
HALFLING    20  15  10  20  20   0   0
HALFORC     15  10  10  10   5   0   0

They are modified by DEX (from SKILLDEX.2DA):
DEX         PP  OL  FT  MS HiS  DI  ST
1          -15 -10 -10 -20 -10   0 -10
2          -15 -10 -10 -20 -10   0 -10
3          -15 -10 -10 -20 -10   0 -10
4          -15 -10 -10 -20 -10   0 -10
5          -15 -10 -10 -20 -10   0 -10
6          -15 -10 -10 -20 -10   0 -10
7          -15 -10 -10 -20 -10   0 -10
8          -15 -10 -10 -20 -10   0 -10
9          -15 -10 -10 -20 -10   0 -10
10         -10  -5 -10 -15  -5   0 -10
11          -5   0  -5 -10   0   0  -5
12           0   0   0  -5   0   0   0 
13           0   0   0   0   0   0   0 
14           0   0   0   0   0   0   0 
15           0   0   0   0   0   0   0 
16           0   5   0   0   0   0   0 
17           5  10   0   5   5   0   0 
18          10  15   5  10  10   0   5  
19          15  20  10  15  15   0  10 
20          20  25  15  18  18   0  15 
21          25  30  20  20  20   0  20 
22          30  35  25  23  23   0  25 
23          35  40  30  25  25   0  30 
24          40  45  35  30  30   0  35 
25          45  50  40  35  35   0  40 

Bard skills are set each level per SKILLBRD.2DA:
            PICK_POCKETS
1           25
2           30
3           35
4           40
5           45
6           50
7           55
8           60
9           65
10          70
11          75
12          80
13          85
14          90
15          95
16          100

Ranger skill is set each level per SKILLRNG.2DA:
            MOVE_SILENTLY
1           15
2           21
3           27
4           33
5           40
6           47
7           55
8           62
9           70
10          78
11          86
12          94
13          99

I was unable to find the "skill points per level for thieves and thief variants", but I'm quite certain it's spelled out easily during the kit descriptions (IIRC it's 40 pts at 1st level, and then 25 pts/lvl for thieves & swashys, 15 pts/lvl for bounty hunters and assassins... I'm sure somebody will be by to correct me).








BUT, if someone else gathered the formulas/info, certainly then I could code it.

It's not email, but I hope it helps.  I'm killing a couple of hours in an airport at the moment.

Modifié par After5CST, 24 février 2012 - 10:51 .


#44
corey_russell

corey_russell
  • Members
  • 5 289 messages
@After5CST: yes that info does help. I thought I'd mention this, but as only pick pockets and hide in shadows benefit from having a score higher than 100, I will make sure the program doesn't try to assign more than 100 to the the other skills. I don't want the program to annoy you guys by putting points uselessly in a skill...

#45
After5CST

After5CST
  • Members
  • 171 messages
I would suggest you come up with some way to weight the initial skill point selections as well. I know a 1st level Dex 15 Half-Orc Cleric could have skills 15/13/13/13/12/12/12 : while a "well balanced" mess of thieving skills, all of them are so low as to be basically useless.

I'd rather the random number generator pick 2 skills (for first level characters) or 2-4 skills (for BG2 characters) and split the points among the subset... you may not get the skill you want, but at least you have something with enough development to use.

#46
corey_russell

corey_russell
  • Members
  • 5 289 messages
@After5CST - I certainly see your reasoning. A few comments: 1) I do not think it's likely that the points would be perfectly distributed, at least one will get more than others. 2) I am already planning on asking if user is BG 2 or BG 1 so this would be easy to implement I think -- I guess I could make it an "option".

What are other's thoughts on this? Should it truly be "random" (which of course can easily mean useless - though 2 levels should make at least one skill somewhat useful), or should it be simply random skills but focused so not to be useless as After5CST suggests.

#47
Gate70

Gate70
  • Members
  • 3 208 messages
If you added it I'd probably ignore that bit. If you want to assign weapon and thieving skills you'd potentially need to do the same to spell selection. Sorceror would be fun eh!

If you go that route remember the monk has 3 skills too.

#48
corey_russell

corey_russell
  • Members
  • 5 289 messages
I don't think random spells makes much sense. After all, for the entire game after character selection, spells are a very conscious decision. Random proficiencies could be interesting though (avoids power-gaming for the Celestial Fury, for example). Possibly the thieve's random selection may or may not make sense to bother with either, since player can undo the "damage" after a few levels presumably.

3 monk skills Gate70: what can you select? They just come automatically with the right levels don't they?

#49
Grond0

Grond0
  • Members
  • 6 487 messages
The monk skills are on the spreadsheet I sent you - the 2 stealth skills and find traps. There are no points to add on initial character creation in BG1, but you then get 10 points per level to distribute.

I think random proficiencies is a worthwhile option to push you into gameplay variety. I never use detect illusions for instance, on the grounds that I don't want to put that many points into it early in the game. However, if it started with a high figure from random selection I could easily imagine adding some more.

Personally I would be quite happy to see a random selection for starting spells for similar reasons, but then I would expect to be starting in BG1 anyway. I agree that random selection for a BG2 sorceror would be a bit hairy.

#50
Shadow_Leech07

Shadow_Leech07
  • Members
  • 553 messages
I think that it really isn't important to roll random spells and random thief profiencies for Baldur's Gate 1 at least. In my games however, I only rolled them for purity reasons, as I wanted a pure randomly generated game. If anyone is interested, I rolled the thief skills by having two rolls(using an excel random number generator) in BG1 there are n skills to place points in(I can't remember this number), and next I took the entire sample size of thief points to distribute and had excel randomly generate a number between 1-sample size. I then repeated the process.