No really, I promise that the sensitizes will be cureable by remove curse soon. It made it to code review on the evening of April 1st after another full day of cleanup.
Slicing The Scope Creep
I originally intended to fix curses and elemental debuffs in one pass. It fell off the rails almost immediately in the face of the massive technical debt hidden in the curse spells. I saved all of that into a work in progress and cut over to a new working environment with just the core curse framework code in the user object.
The codebase has a lot of eclectic flair from dozens of independent developers working on it over the past twenty years. We have been cleaning it up as we go and, unlike most other files, the user object is huge. It took roughly a day to clean it up and get it ready for a style update review. It's not exactly in the scope but it needed to happen and I was in the neighborhood.
Double Dog Debuffs
Tuesday morning I noticed extra resistance on my test character. It seems that code I wrote managed to remove the elemental debuff twice when the phobia spell simply wore off over time. It took a couple more evenings to iron all of that out of the system and keep the interface for spell creators simple to use. The hardest part of creating frameworks is keeping them powerful enough to be worth having around and easy enough that developers will want to use them.
Psionicists may find their debuffs stack differently after this change takes effect. It seems that, at some point, they got three unique stackable debuffs. My code work allows two of them to stack. Kereth and I are talking through how these should stack and the outcome is still subject to change. We'll post the exact details to news when this update clears review and gets installed.
I also discovered that a couple of NPCs copy and pasted parts of the debuff spell code. It took another evening to sort out the intention and update them to be resilient to change. I hope you're seeing a pattern to this work the more we talk about it.
Code Resilience
Someone asked me this week on channels to post up how long all this work took in real hours. The answer is roughly 85-90 hours of keyboard time to review the old code, fix it, work up two frameworks, and then all the work on curses that got thrown away. Honestly the hours flew - and I absolutely love writing code. It's also a great example of why a simple feature request isn't actually all that simple.
The most important non-feature work we do is cleaning up the codebase. Code cleanup covers everything from whitespace standardization to refactoring variable names. It also covers re-writing entire functions to be more efficient or at the very least more predictable. The more of it we do the faster we can take care of future requests in that same part of the mudlib.
That about does it for today and remember - the spring freeinc ends on May 10th. You can read more about it this post if this is the first you've heard about the event.