Jump to content


Sign In or Register to gain full access to our forums.

- - - - -

Blog Post - Duende - 1/5/18

  • Please log in to reply
No replies to this topic

#1 Duende


    Advanced Member

  • Administrators
  • 1613 posts

Posted 06 January 2018 - 01:06 AM

Happy New Year, Alyrians! We had a relatively uneventful December, more full of traveling and family (and so many new babies) than a lot of new code- but it's a fresh, cold January, and we're back with a featureset full of vengeance. In one of our last communications, we noted that Umlaut had been helping identify the cause of the lag spikes- we're thrilled to announce the lag spikes have indeed gone away, and we owe Umlaut a debt of gratitude for the help.

We're still very early in the testing stage for the next reboot, but there are enough interesting changes slated that we wanted to give everyone proper notice. These changes are all new and sort of unheralded, because they came out of left field, even to us. Things have a funny, circuitous way of emerging from unexpected places, even if they've been on our minds for years or decades.


I was flying home from Florida from visiting Omnis when I got a vision of the next area I want to work on- a postindustrial gnomish hellscape. Not uncoincidentally, I was going through a layover in Houston at the time. I'm still not sure whether this is a joke, but regardless, something of that magnitude would necessitate finishing up Arien'dyth, so we have that to look forward to in the near future.


Someone sent me a parchment full of a dozen bug reports, and one of the earliest things involved a fight I didn't really remember. As i was testing the fight, it breathed fire on me, which burned the parchment before I was done dealing with it. It turns out the bug report was inaccurate, but I was annoyed by my mail exploding, so the outcome of that bug report wasn't a bugfix, but the 'insulated' and 'wont-fuse' flags are going away, and no equipment will spontaneously explode anymore. We're adding new flags to replicate that functionality for the
occasional circumstance where that would be desirable behavior, but it will be explicitly flagged as such, and we can remove those flags from the 99.9% of items where that isn't the case. While we were in there, we'll also be removing the 'identified' flag, as that's no longer necessary due to everyone always being able to identify everything. These aren't huge changes, but a good indicator of the simplification process and "why didn't we do this 20 years ago" direction we're aiming for in 2018.

Spell schools

I was working on some bugfixes for skill analyze, and lamented that 'skill spell <argument>' filtered by school, rather than by matching damtype, or targetability, or name, or anything more useful than schools. The weird distribution of spell schools in certain classes is sort of necessary, due to the implicit assumption that evocations/invocations/elemental schools will go almost entirely to druid, and though-school spells will belong almost entirely to psionics. most of the other 10 schools correlate roughtly to the different cosmological planes (http://output.jsbin.com/ruwubulote, from NEWS 248), and the remainder is so few that the justifications are thin and weird and the school doesn't signify anything meaningful. For next reboot, we've replaced the existing spell schools with a new set of schools, which will focus less on how the magic is being performed and more on what it's doing. This will have minimal impact, as nothing actually uses spell schools right now, since it's sort of a silly system. A few items that rely on schools will be updated, and Cancellation can get buffed since it no long single-handedly disables specific classes. While I was in there, psionics are getting a number of other buffs, and skill analyze is getting some new features, to be announced later.

Word of Recall

Lastly, someone was complaining about 'word of recall' sucking, specifically how scrolls no longer work as they used to. That's accurate, and something on our list to fix by reboot. However, the democratization of word of recall and utility spells also took away a tiny bit of priest's class identity. When WoR was given to everyone, we anticipated that response and wrote 2 new spells that might be interesting additions to the class, enlighten and radiant prayer. We didn't really see a need to add them, and more to the point, we couldn't have if we'd wanted to. About 15 years ago, when we had ~300 skills, 550 skills was set as the maximum number of skills that could exist, as a sanity check for efficiency's sake. This value got baked into the player database, implying that no skill state above 550 would be recorded for characters- the 550 maximum is easy to change on the skill side, but nearly impossible to change in the player database. As it turns out, this inflexibility and the issues it causes (tons) was the topic of the first blog post (NEWS 237).

A few years later, it was clear that with the addition of version 4.1 and my onslaught of new code, we would want to increase the 550 skills to 2000, and work started on that happen... and over 10 years, didn't finish. When he was here, Hezkezl recognized the value of such a change, and took another stab at it... and didn't finish. The relevant code is full of comments like "it turns out this is really complicated, and if we make any of these extremely easy mistakes, we're breathtakingly f*****."  Hesitation around changing this stuff was natural, and making the change was hard and scary and fraught with peril.

After thinking about it for years, last night I took a stab at it and the early results are promising. Skills save differently now, which has no gameplay impact, except for the fact that we can add new skills to players and actually have them save. Many of the new skills we've added in the past few years have behaved weirdly, getting auto-granted at 100% with no scrolls or trainers, as a result of the restrictions imposed by the old way- but we'll be able to treat new skills like old skills, supported by the normal magic system. This doesn't mean much now, but will have significant potential implications in the future.

The most important part is that while I was working on that code, I took a stab at other nearby code, and figured out how to save inactive skills. This means it is possible to set skills so that when your player changes in a way that would ordinarily result in losing skills and getting some practices reimbursed on the investment, instead your skills will simply hibernate instead of being reset. If you should change your character in the future such that would result in you having access to those skills again, you'll have those skills at the learned% and usage they were when they went away. We'll add an option to respeccing, so that when you respec you can choose whether to get reimbursed for lost skills, which will reduce the barrier to entry when switching to a new path, or whether to send your lost skills into hibernation, to be reactivated when you respec back. This will allow people to be freer to experiment with classpaths and to be able to use Glacius tokens on niche skills without fear of losing valuable skill progress.

I'm sure there'll be a lot of conversation and questions and concerns about these changes, and look forward to talking about and answering anything that comes up. As always, prays and #troll are best.

A quick note: the immortal-for-a-day nominations will close in less than a week, at 11:59 system time 1/10/18, so if you have lackluster wish lamps or immortal wish lamps you'd like to use, make sure you do so soon.