Skip to content

Custom Content Plausibility

So I just have a few ideas that i have been thinking about for creating an extremely freeform leveling system, but I'm not sure if everything that i have in mind is actually possible. So let me just ask a few questions.

1. can you modify existing classes in the classes.2da (such as HD, and what tables they use for AB, Feats, Skills, exc...
2. can you duplicate existing classes in the classes.2da
3. can you remove existing classes in the classes.2da
3. can you swap/add spells from class to class in the spells.2da
4. can you swap/add feats from class to class in the cls_feat_*.2da

I'm hoping to create a single class that has as much to choose from as possible when the player gains a level. Something similar to maybe combining the fighter and wizard classes together and expanding what spells are normally available to sorc/wiz in the spells.2da. to include all base class spells.

Comments

  • ShadooowShadooow Member Posts: 402
    spellbooks are hardcoded, besides that, with newest update almost everything you can think of is doable
  • XzanosXzanos Member Posts: 11
    So these columns in the spells.2da have no effect?

    iwm752nx2it3.png
  • FreshLemonBunFreshLemonBun Member Posts: 909
    The new update doesn't change anything in this regard, it has no effect one way or the other. Spells are not hardcoded, the UI for spellbooks in the game are hardcoded to specific row numbers in classes.2da, you can add and remove spells to a spellcasting class as you like. So you should build your gestalt class override on top of a spellcasting class like wizard. The class associated cls_feat_*.2da's contain the class feats and how they're acquired and accessed, cls_bfeat_*.2da's contain the pattern of bonus feats you can choose on level up.

    Some other things are also hardcoded such as the movement speed behavior of monk.
  • themazingnessthemazingness Member, Mobile Tester Posts: 702
    You may want to talk to the guys working on the Player Resource Consortium. They've done lots of work with character classes. That link goes to the Steam Workshop page for it, but they have the links to their Discord server and forums.
  • FreshLemonBunFreshLemonBun Member Posts: 909
    I mean you could go around all over asking people for advice, or you could just edit the files. Most of the changes mentioned will take you 2 minutes tops. I think it's good to get used to trying things out rather than asking if it will work, it's a lot easier than people probably think it is.
  • CaomhCaomh Member Posts: 40
    Hi @Xzanos,

    Welcome aboard and keep asking those question. One thing my professors at University always mentioned about programming (which modding is a part of) is hours of planning saves weeks of programming. Learn the system and what it can do and you won't waste time with something which cannot be done or implement it in away which will take even longer later (some of which applies Beamdog themselves commented on).

    Shadooow is correct the spells are coded. Even though you see the spells as displayed in the file you posted they cannot be altered by any new classes. If you notice there are now spell casting prestige classes in the game. This is a limitation in the engine. The work around has been by adding feats (epic spells, and the way classes such as assassin has added spells). On the Trello board there is a request to fix spellbooks in order to add spells which is listed as a project being looked into/worked on. It is not implemented.

    The most efficient work around is NWNX (badly documented and not user friendly) which is a tool that alters the game code as a script injector. This will allow new spell casting classes. Less pretty, more user friendly is the route the PRC took which does have an active community that answers questions and will help get you started.


    Links:
    Beamdog's Trello Board:
    Roadmap... https://trello.com/b/K0C0i8wF/neverwinter-nights-enhanced-edition
    Input......... https://trello.com/b/Lb79bbgy/neverwinter-nights-input
  • FreshLemonBunFreshLemonBun Member Posts: 909
    15 minutes work, 9 of which was making the character and screenshot, image editing, and uploading. Discussion is great though, but I hope this answers some of the actual questions that were asked.

    zm0q63fe3vp0.png
  • XzanosXzanos Member Posts: 11
    edited December 2019
    15 minutes work, 9 of which was making the character and screenshot, image editing, and uploading. Discussion is great though, but I hope this answers some of the actual questions that were asked.

    zm0q63fe3vp0.png

    Thank you for taking time out of you day to do this as an example. From what I see in the screenshot its seems you were at least able to add the spells to the file so that they are indeed learn able by the player and will show up in the players spell book to be memorized.
    Have you tested the off class spells to see if they function?

    I'm completely brand new to what is required to implement this into a module after editing the needed files so I apologize for not jumping right in to it myself.

    Could you expand a bit more on "Spells are not hardcoded, the UI for spellbooks in the game are hardcoded to specific row numbers in classes.2da, you can add and remove spells to a spellcasting class as you like."

    what do you mean exactly by the UI for spellbooks? does this refer to the known spells list above or the spell list that you have to choose from when you level up? Also you stated that its hardcoded to a number of rows in classes.2da meaning that you cant add rows? or that you just need to increase that number to the number of rows needed.

    Thank you for all the help so far.
  • FreshLemonBunFreshLemonBun Member Posts: 909
    In classes.2da as you have probably seen each row is a class, spellcasting only happens for existing spellcasting classes, it's attached to the row not the values in the row. You CAN adjust those classes that already cast spells, you CAN add spells to them in spells.2da for their class, under Wiz_Sorc change it to 1 and it will be available to learn at level 1. It's as simple as that.

    What I said means you can have a spellcasting class but you must modify either bard, cleric, druid, ranger, wizard, or sorcerer. Try to make barbarian into a spellcaster, it doesn't work, try to make a brand new class into a spellcaster, it doesn't work. That's fine because you can achieve your single class by modifying an existing spellcasting class and disabling the others.

    The screenshot also shows fighter attack bonus, monk saves, and barbarian hp. It does not show fighter feats and rogue skills but I did add those too.

    You can set the existing classes to 0 on the column "PlayerClass" of classes.2da and it will remove classes from selection, so your intuition is correct. This screenshot shows I quickly disabled all but 3 classes.

    so46yyq77u74.png

    If you do it like that then what you asked can be achieved. The boring part is as I said above with the cls_feat_*.2da files, you'll need to open them up and copy/paste their content to the cls_feat_*.2da file for the class you're using. Then reset the row numbers, remove duplicates, and so on.

    Don't get daunted by modding, because a lot of it is quite simple and not as mysterious and complicated as people make it seem.
  • XzanosXzanos Member Posts: 11
    In classes.2da as you have probably seen each row is a class, spellcasting only happens for existing spellcasting classes, it's attached to the row not the values in the row. You CAN adjust those classes that already cast spells, you CAN add spells to them in spells.2da for their class, under Wiz_Sorc change it to 1 and it will be available to learn at level 1. It's as simple as that.

    What I said means you can have a spellcasting class but you must modify either bard, cleric, druid, ranger, wizard, or sorcerer. Try to make barbarian into a spellcaster, it doesn't work, try to make a brand new class into a spellcaster, it doesn't work. That's fine because you can achieve your single class by modifying an existing spellcasting class and disabling the others.

    You can set the existing classes to 0 on the column "PlayerClass" of classes.2da and it will remove classes from selection, so your intuition is correct.

    If you do it like that then what you asked can be achieved. The boring part is as I said above with the cls_feat_*.2da files, you'll need to open them up and copy/paste their content to the cls_feat_*.2da file for the class you're using. Then reset the row numbers, remove duplicates, and so on.

    Don't get daunted by modding, because a lot of it is quite simple and not as mysterious and complicated as people make it seem.

    So now that I have been researching and thinking about the concept, thank you again for all your help thus far, I think I may have one other question that you hopefully have dealt with in the past.
    In the spirit of the class, it seems sorcerer has the better "spell per day" casting system with just a set # per day per lvl rather than the memorization system from the wizard.

    Is it possible to allow sorcerers to learn spells from scrolls the way wizards do?
  • CaomhCaomh Member Posts: 40
    Hi Xzanos,

    Because it is hard coded, you can rename the class, add in new spells, remove spells, even make some feats to make the class itself behave differently, but the way the spell casting itself functions that is not possible without the extra tools I mentioned in my post.
  • FreshLemonBunFreshLemonBun Member Posts: 909
    Xzanos wrote: »
    Is it possible to allow sorcerers to learn spells from scrolls the way wizards do?

    It is not possible, the "learn" option on spells will only show up for wizard. Last I remember you can alter the spgn and spkn tables for some things, so if you want the class to know more spells or have more spells per day look at those 2da's. Beyond that then you need to get into more complicated things than 2da editing just to try and mimic the same functionality.

    Work arounds for that always get clumsy and receive a lot of criticism so ask yourself if you want to go down that path or if you just want to let sorcerer know more spells.
  • FreshLemonBunFreshLemonBun Member Posts: 909
    With the latest development update you should be able to add a new column to spells.2da for example "TestClass" is what I used, and then copy and paste a casting class row in classes.2da and in the column "SpellTableColumn" with the new update add "TestClass" in the field for your new class. It will now use that new column in spells.2da to select spells for each level just like it does for Bard/Cleric/Wiz_Sorc and the other casters.

    For learning scrolls there is currently an issue where the game freezes when you try to learn scrolls on a non wizard.

    So wait for a couple of updates and hotfixes for them to fix things and then you should have everything you wanted without any work around.
Sign In or Register to comment.