NPC Generator...

Vascant said:
I have 2 attachments to this, screen shots.

Are you using the usual static step through the character design process or is it more free-form?

Once a character is built how easy would it be to change the race, skills, feats, levels, classes etc?
 

log in or register to remove this ad

smetzger said:
Are you using the usual static step through the character design process or is it more free-form?

Once a character is built how easy would it be to change the race, skills, feats, levels, classes etc?

This is not for PC's, it is for NPC's. If you mean change the options to create a new NPC, about 5 seconds?


To answer your question about scripts over DB.
Your idea of the long run and short run are not even remotely practical, if you wish an example of what you are talking about try out Etools. D20 Data is far to dynamic to be stuck in any kind of structure and expect it to hold water for very long.
This code handled all the functionality for a Ring of Jumping

Function ringofjumping()
Call equipment.SkillBonus("Competence", "Jumping", 5, "Ring of jumping")
ringofjumping = true
End Function

"Call equipment.SkillBonus" = The function that handles skill bonus
Type of bonus, Skill, Ranks, Item Name
"Competence", "Jumping", 5, "Ring of jumping"

"ringofjumping = true" = This returns true to add the item to your possessions or false to not add.

A scripting langauge is not a limitation but more an extention of functionality, if in ETools you wanted to change the way a weapon's plus was generated, you can't and when you ask CMP to code that in for you.. well I am sure you get the picture. NPC Designer not only gives you the base system for generation, also a easy screen to set your own plus, AND the capability to code your own method for your own game. Every piece of RPG Software tells you how you are going to play the game, reminds me of the 1ed war, "Are the books guidelines or rules" (*Laughs* yes I just dated myself), I know I do not like others telling me how to run my game so I won't tell anyone else how to run theirs.
When I started coding the items and such, I realized I couldn't nail down a template function where all I did was plug in data and it ran, I found countless items that would break the mold or be to little to fit in it. D20 and the English langauge have one thing in common, for every rule there is an exception. Makes for some interesting coding to say the least.
 

The last few days have been solely working on the Equipment Engine and I think it is finally starting to shapen up nicely...There are a few new things I need to tie into the stat block functionality that it is not aware of, like bracers of archery and such that give a bonus to a category of weapons rather then a single weapon and are not actually a weapon themselves and the spell system needs to know about Ring of Wizardry type items. Not including weapons and armor, I added 160 magic items to the system, pretty much anything that wasn't misc and was a body slot. Also not yet using factors to determine if a magic item is rare, uncommon or common yet, I think I will code it but have an option to be turned off by the user.

*chuckles* I also need to double check that each section is handling subtraction of gold correctly too. I think it is but hey, I who knows. Also need to work on things like the Vest body slot, since their are only 2 of them, it seems to result in every high level char having it, so I need to figure out a checks and balance system there I think. Maybe certain body slots will have a factor to determine the likelyhood of a magic item in that slot. This would reflect that cloaks are far more common then a vest or mantle.

I am open to ideas on this..

Anyways, here is the latest stat block results.


<Name> human Sorcerer 12: CR 12; Medium Humanoid; HD 12d4 (HP 30); Init 0; Spd 30 ft.; AC 10, touch 10, flat-footed 10; Base Atk +6; Grp +9; Atk +11 melee (1d8+6, +2 Spear); Full Atk +11/+6 melee (1d8+6, +2 Spear); Space/Reach 5 ft./5 ft.; SA ; SQ ; AL N; SV Fort +4, Ref +4, Will +7; Str 16, Dex 10, Con 11, Int 14, Wis 9, Cha 19.

Skills: Bluff +14 (+3 Cha), Concentration +10, Gather Information +3 (+3 Cha), Knowledge (Arcana) +18 (+2 Int), Knowledge (Local) +2 (+2 Int), Listen +4 (-1 Wis), Search +9 (+2 Int), Spellcraft +8 (+2 Int), Spot -1 (-1 Wis).

Feats: Blind-Fight, Enlarge Spell, Extend Spell, Quick Draw, Shield Proficiency, Still Spell.

Sorcerer Spells Known (6/7/7/7/6/5/3, base DC = 13 + spell level): 0 -- arcane mark, daze, detect poison, flare, ghost sound, light, message, ray of frost, resistance; 1st -- chill touch, disguise self, magic missile, mount, reduce person; 2nd -- arcane lock, blindness/deafness, bull's strength, darkness, hypnotic pattern, touch of idiocy; 3rd -- explosive runes, flame arrow, nondetection, phantom steed, slow; 4th -- animate dead, resilient sphere, secure shelter, wall of fire; 5th -- cloudkill, secret chest, telepathic bond; 6th -- move earth, permanent image.
Possessions: +2 spear, cloak of charisma +2, ring of improved climbing, ring of wizardry iii, robe of bones, vest of escape, potion of nondetection, oil of flame arrow, potion of gaseous form, 77750 gp,
 

Vascant said:
This code handled all the functionality for a Ring of Jumping

Function ringofjumping()
Call equipment.SkillBonus("Competence", "Jumping", 5, "Ring of jumping")
ringofjumping = true
End Function

"Call equipment.SkillBonus" = The function that handles skill bonus
Type of bonus, Skill, Ranks, Item Name
"Competence", "Jumping", 5, "Ring of jumping"

"ringofjumping = true" = This returns true to add the item to your possessions or false to not add.

That can be done in a DB.

Your scripting example is pretty simple. Perhaps a GUI could build the script.

One other thing I thought of is the possibility of using a one handed weapon in two hands as this changes the strength modifier for damage.

Does your random weapon selection take into account the feats a character has? Or vice versa?
Does Race and Class have an effect on weapons chosen? For example, is it more likely for a Dwarf to weild an axe or a hammer than a sword? If so, can the user change the 'randomness' of this?
 
Last edited:

smetzger said:
That can be done in a DB.

Your scripting example is pretty simple. Perhaps a GUI could build the script.

One other thing I thought of is the possibility of using a one handed weapon in two hands as this changes the strength modifier for damage.

Does your random weapon selection take into account the feats a character has? Or vice versa?
Does Race and Class have an effect on weapons chosen? For example, is it more likely for a Dwarf to weild an axe or a hammer than a sword? If so, can the user change the 'randomness' of this?

Can it be done, sure. Anything can be done.. just not worth it. Everytime I change the table structure either I have to figure out how to migrate user data to the new structure or not care who loses what data. Even in beta thats not a very user friendly move and does waste ALOT of time. The scripts method does what I want, handles the data even when it changes and gives user more power over how things are selected and handled. You cannot do that in a DB because the code is in the core exe then and not accessable to the user. I think you would be surprized at just how it really couldn't be done if you tried coding this yourself, I don't even like vbscript.. *laughs* but it is the best tool to accomplish the goal. When I tested XML, I ran into some small glitches which I could find work arounds for but they were not pretty. Who knows, maybe this tool is not for you. I admit initially when I started coding this I had a DB and kept banging my head because I was being locked into things and not extending functionality. Granted, can there be work arounds and make a DB work, yes I am sure of it but I end up spending more time on GUI's and DB Management then working on a NPC Gen. My goal is not manage to a DB but to build a NPC Gen that creates stat blocks that need no further editing. I could have even used a DB to store the script functions, but why?

The NPC Gen system is pretty cut and dry until you add equipment into the system, even if normal and not magical equipment. Now you are apply all the combat rules and a vast array of stat block modifications. *chuckles* I have coded Two Weapon Fighting rules 4 times so now modifiers are automatically applied now and are correct. I used to wonder why no one had created a full blown NPC Generator(And get it right) before or why Jamie didn't add equipment or prestige classes, now I know. Heck, Jamie even gave out his source code and no one managed to do it and it is 100% cleaner then mine. It took andargor to update it for 3.5e and again, the source code is still out for that version. When I first started this, it took me only a week to have fighters and rogues with a basic stat block, I realized then I wanted more out of this. I looked at the NPC's on WotC website and said, I want that. I want to be able to envision a NPC and have a stat block for it in under a minute, with setting up designer options, equipment and such. If there are any designers that read this, how much time do you spend on your NPC's stat blocks you have in your sourcebooks or for a Dungeon submission. Sometime tells me it is longer then a minute.

1.5 strength mod for damage when using 1 handed weapons, with 2 hands. The code is there for it I just need to figure out how I want to put it into the system. I will probably just have a check box in the Designer Option screen and have an event for it so you can code your own random method of determining if a NPC is using this rule. Using this flow:

Determine if NPC has a single 1 handed weapon:
Check DesignerOptions.BruteForce = Yes|No
Run NPC.Event.BruceForce = Yes|No
Apply modifier if results = yes.

The events always have the last say in matters, if you choose not to code an event then it will simply stay with the Designer Options screen results. An example is with Two Handed Weapon feat, after the system has determined all the feats and if he has "Two Handed Weapon", the system will automatically make sure he has the weapons to use this feat to his best advantage.

All weapons selections at this moment are based off class only but this will change when I move more of the system outside of the core exe. It only makes more sense of races to have the greatest chance to have racial weapons.
 

Vascant said:
Can it be done, sure. Anything can be done.. just not worth it. Everytime I change the table structure either I have to figure out how to migrate user data to the new structure or not care who loses what data. Even in beta thats not a very user friendly move and does waste ALOT of time. The scripts method does what I want, handles the data even when it changes and gives user more power over how things are selected and handled. You cannot do that in a DB because the code is in the core exe then and not accessable to the user. I think you would be surprized at just how it really couldn't be done if you tried coding this yourself, I don't even like vbscript.. *laughs* but it is the best tool to accomplish the goal.

Actually I have done alot of the work and its all in the Database.

Here is how your ring of jumping would look in a database...
<Name> Ring of Jumping
<KeyName> SkillBonus
<SubKeyName> Competence
<Value1> Jump
<Value2> 5

The table may need a few more fields to accomodate other items, but that is the basics of it.

I agree that scripting is very flexible. The drawback is that it is more complex for the user to use. Because of this I feel that scripting is a first generation solution.
 

I think users are smarter then you give them credit.

I started this for me because no one had done what I needed. I need something better then whats available today and rather then wait for someone else to do it, I was coding it myself.

If you think you can do better, then by all means.. prove it. I will release mine the same day you do, charge the samething you do and lets see.

I have a Ph.D in AI and a Masters in Application Design, being called first generation is the AI field.. is like saying you are to stupid to have a thought and commonly used as a title for junior programmers. I am not going to throw insults back.. So have a nice day please.

<Topic Closed>
 
Last edited:

DM Genie, a popular DnD management suite, utilizes vbscript quite effectively. By nature, any user that searches out and purchases DMG, or similar product, must have some proficiency with using computers that extends beyond opening a browser and/or checking e-mail. Thus, it would seem that these users would be capable of learning a scripting language to support the app. Additionally, if this NPC Gen is half as good as it looks thus far, what user wouldn't want the capability of extending the functionality with scripts? Rewriting a script vs rebuilding a db....yeah, I'm with Vascant on this one...
 

Vascant said:
I have a Ph.D in AI and a Masters in Application Design, being called first generation is the AI field.. is like saying you are to stupid to have a thought and commonly used as a title for junior programmers. I am not going to throw insults back.. So have a nice day please.

I am sorry if you felt insulted. I did not intend to come across that way. You asked for comments in the Software Forum, I presumed that you wanted to discuss more than just the accuracy of your statblock.

I have done a fair amount of work on the problems that you are describing. I do agree that scripts are very powerful and flexible and are a good way to tackle the problems of a character generator. However, I still believe that the best design would be a flexible datastructure. I think that if it was done correctly one would not need to alter the db structure for special cases and the code could key off the db and wouldn't need to be altered.

Unfortunately at the moment I do not have the spare time to continue my own development. Your work does show good promise and your objectives line up very closely to my own objectives.

Once again I am sorry if you felt insulted.

Thank You,
Scott Metzger
 


Remove ads

Top