For around a year now I have been working on an implementation of what people refer to as the "5th edition" D&D ruleset for Neverwinter Nights: EE. Development is reasonably far along, but as I begin to make a push to try and get it into a release-worthy position, there is a key design decision I've made that I'm second guessing and I'd like some feedback on to try and make sure I get right. Apologies for the block of text I'm about to spew out; I'm trying to get opinions as best informed as I am able.
It revolves around the basic mechanic of making an attack roll. Anybody who is familiar with the ruleset will be aware that attacks in 5e work similarly, but not identically, to 3rd edition attack rolls. This means that its possible to make facsimile of the 5e ruleset using NWN's base implementation, but with some problems...
- Critical hits : Critical hits do not work the same in 5e. They only occur on a nat 20, which is no problem at all, but they also no longer have a confirmation roll, and their damage is calculated differently. This is problematic. The confirmation roll in NWN is unavoidably hard-coded and I am unaware of any way to make it automatic. The damage calculation could be resolved using scripting, except there is no way I am aware of to detect when a critical hit has taken place to run a script.
- Advantage/Disadvantage : 5e does not generally use numerical modifiers for temporary effects. Instead, it uses a system where an attack or ability check might have an "advantage" or a "disadvantage" in a given situation. In these cases, the d20 is rolled twice and either the best or the worst result is selected, depending on if its an advantage or a disadvantage. There is no way to implement this in NWN's base system.
- Special Cases : There are a myriad little special cases that will be difficult to implement without workarounds. For example, sneak attacks can only trigger once per round, great weapon fighting allows you to reroll bad dice rolls, goblin leaders can redirect attacks onto their minions...
I have a working solution to these issues: I hijack the entire attack process using the OnAttacked event. I stealthily give every single creature and PC in the game 100% Concealment so that every single attack misses. I can then use the OnAttacked event to register the attack and I use scripting to do whatever I want. Essentially, I reprogram the entire combat system from scratch.
This approach has enabled me to resolve every single one of the above issues. However, it does produce some unresolvable problems itself. As I begin to contemplate putting the meat on the functioning bones of my system, I'm at a point of no return if I want to make a change to my core attack mechanic. There's two possible approaches I can take; continue with my hack-y workaround to hijack NWN's combat system, or retooling NWN's combat system to create a system that tries to implement the spirit of the rules, rather than being a direct translation. I'll set out what I consider to be the advantages and disadvantages of each approach; if anybody is kind enough to give me a considered opinion on which approach will be better for the player, I will be grateful.Option 1: Using OnAttacked events to produce a faithful translation of the ruleset
Using every trick and hack-y method in the book, the current implementation bloody-mindedly tries to represent 5E rules in NWN as faithfully as possible. Exploiting glitches, tweaking 2das that nobody ever has reason to tweak to promote strange behaviors that work in my favour; it might be a clunky in places, but its probably a more direct interpretation of 5E rules than base NWN was an interpretation of 3E rules.
- Extreme fidelity to the ruleset. Crits, advantage, disadvantage and exotic rules will work exactly as intended.
- Because I have complete control over everything displayed (with one key exception, see disadvantages), I am able to give nice clean, clear feedback in the combat log when attack rolls are modified by events in the system. For example, you can cleanly see when an attack has an advantage. I also have implemented a working cover system and a light/darkness system, and these can be flagged in the combat log when you end up making an attack that, say, has massive penalties to it because the goblin that can see in the dark is hidden behind 3/4 cover.
- Because of the faithfulness of the rules, anyone familiar with the ruleset will happily understand everything that is going on.
- The system can be used as a perfect substitute for the tabletop. My original conception of the project was because of my experiences DM-ing 5th edition in a school with kids in my old job as a teacher. With short sessions and a perpetual churn of new players, sometimes with extremely large parties, combat often ground to a crawl as people struggled to keep up. A particularly memorable and complex fight in White Plume Mountain took 8 hours of real life time to resolve! The idea was that, if I could translate the combat rules to NWN, I could DM a game of D&D as normal, then use NWN to resolve combats very quickly, perhaps even in realtime, so that we were able to spend more time roleplaying and exploring dungeons, rather than spending 10-30 minutes on a single fight.
Option 2: Re-imagining the ruleset to promote compatibility with Neverwinter Nights' native combat system
- There is no way I know to remove the original attack roll text. This produces a clutter in NWN's text read-out, where every single attack roll has a meaningless miss roll just before it. See below: The topline is meaningless, meaning that about half of the feed is filled with useless junk.
- Every single attack roll is accompanied by a relatively substantial piece of code running. This may produce a difficult to resolve issue in combats with large numbers of creatures, or if anybody ever tried to make a persistent world based on this ruleset, where the game would lock up and lag as too many commands are attempted to be processed at once. This is a problem in default NWN when somebody tries to give a complex custom OnHit effect to high-level characters with a bajillion attacks, but is mitigated slightly here by the fact that 5e characters generally have way, way less attacks per round.
- In doing this, I've also had to customize the opportunity attack system, essentially attempting to delete opportunity attacks from the game and implementing my own system. One of the ways this is done is by giving every single character Spring Attack. Sadly, the spring attack feat is bugged and doesn't work consistently in NWN:EE. Presumably this will be fixed at some point. Until then, I have a mechanism for detecting when a character has made more attacks per round than they are capable of performing and ignoring any extra, but this still leads to some bizarre attacks that look like opportunity attacks that are actually not opportunity attacks in game.
- Animation and sound errors. As far as the game is concerned, every single attack misses and it behaves accordingly. In time, many of these issues can likely be worked around; for example, I have used 2das to disable all of NWN's default combat sounds and use the core combat scripts to play hit sounds instead. More work will be needed to get these perfect. Similar tricks might be possible with animation as well, but it will require a lot of development time to get it working perfectly.
- There will be bugs. Some of these systems are fairly difficult to diagnose problems with. Though the system works fairly well in my prototype, it is almost inevitable that there will be unexpected bugs all over the place that will take me by my lonesome ages to resolve. The new opportunity attack system is a particular headache for me in this regard.
This option would abandon the idea that the mod is a direct implementation of 5th edition rules, and instead be a custom set of rules that is inspired by the 5th edition ruleset. The "spirit" of the rules would be translated rather than the exact mechanics. For example, in the majority of reasonable cases, rerolling a d20 dice and taking the highest roll gives roughly the same chance of success as adding +4 to a single d20. There might be a better way of handling it, but that's one way of resolving the problem with advantage.
Lots of the more problematic mechanics to implement (such as re-rolling dice) were introduced into 5th edition in order to simplify how the rules work on the tabletop (e.g. rather than having to remember you get a +2 bonus from this and a +1 bonus from that to add, just roll the dice twice and take the best result instead). This isn't such a big concern when the computer does it for you, so we have a different design space to work with than the original tabletop game.
This is not exactly a foreign idea: NWN itself is not exactly a perfectly faithful interpretation of 3rd edition rules!Advantages:
- Lightweight and robust: Because the combat system would not quite be so dependent on custom scripts that trigger on every hit, the ruleset would have less difficulties scaling up to handle larger combats and (potentially) persistent worlds. There would also be less places for things to break, so there would likely be less bugs introduced on my end.
- Faster to produce: Whilst I would have to throw out a bunch of my existing code to take this approach, it would still likely be far quicker for me to produce, so the mod ends up getting released faster.
- More user-friendly: Reinterpreting the rules will enable me to make some choices to make the ruleset work more intuitively with NWN and its UI. For example, instead of having to select how many hitdice you want to spend on yourself and each of your companions using a clunky conversation-based interface whenever you want to heal yourself over a short rest, I could instead implement a Pillars of Eternity-style pool of "endurance" that is automatically spent to top up your hitpoints whenever you take a short rest.
- Less likely to upset WotC: Whilst I have made a good faith attempt not to breach WotC's copyright and abide by the Fan Content policy (including rewriting/reinterpreting ever single spell/class/race/feature description), if WotC didn't like what I was doing here, I'd crumble like a goblin hit with a disintegrate spell if they threw me a cease-and-desist for breaching the PHB copyright. This approach would prevent that.
- More likely to be future-proof: I'm not holding my breath, but there's some changes that Beamdog could make to the game that would be EXTREMELY helpful to me (*cough* CUSTOM SPELLBOOKS/SPELLCASTING *coughs*). Its entirely possible that some update to the game could make approach one redundant at some point, though it seems unlikely at this stage.
- You have to trust me: I'm effectively now making balance decisions, which are open to being questioned. In addition, the whole project would no longer have the straightforward "authenticity" of being a straight conversion, its now just "some guy on the internet's" set of house rules to make 3rd edition play much more closely to 5th edition. That's presumably less appealing as a concept.
- Link broken with PnP: Whilst I still very much intend to produce a package to allow people to run PnP-style campaigns using NWN and Discord the way that people use things like Roll20 and Fantasy Grounds, and I still intend that you could take a 5e module and run it with my system with minimal modification, the direct link between the rulesets is now lost.
- Everybody has to learn the rules: Whilst I can do things to educate, like rewrite the loading hints, produce a quick reference PDF document of the rules changes and perhaps a tutorial, everybody now has to learn a new set of rules, not just the folks who try out the module who are unfamiliar with the 5e ruleset. Whilst they'll be familiar, its still a barrier to entry.
If you've read down this far, thank you for doing so. I'm extremely thankful for any opinions you might want to share. In some way, shape or form this *will* get released, and I'm convinced, from my prototype, that there's some interesting and novel gameplay to be had from running NwN with a 5E-style ruleset, that folks will appreciate.