Over the past few months, ever since we released Lurker and Hydross we have been working on multiple projects at the same time. While last year was more about the bulk of things, this year is mostly about fine tuning so far, if I skip trash works in SSC. As you all have noticed, we have released 3 bosses in SSC - Leotheras the Blind, Fathom-Lord Karathress and Morogrim Tidewalker. These three bosses have shown us much more core issues than was previously anticipated. Here is why:
Leotheras the Blind required rudimentary caster movement, which changed based on phase. The main problem was the customary stutter step, which needs to be eliminated from all casters. I was able to circumvent this particular limitation in this script, and in the near future the goal will be to generically extend this to all casters. The other limitation is Possess AI, i.e. when boss charms player at the end of Inner demon. So far players only melee, but thats a point where we can write a nice AI for each player. This will also be a focus in the near future.
Morogrim Tidewalker wasn't particularly challenging. This was just some spell work, and we were able to reverse engineer proper Murloc spawn spell behaviour.
Fathom-Lord Karathress was only challenging due to the sheer number of different spells and interactions. This boss currently has one bug that we know about, and that is pet not being affected by Bestial Wrath 50% increase. This is a global issue and will soon be fixed for all mobs generically.
Most of these issues outline one big problem mangos AI system. There have been two flags that blizzard uses that have been wrongly implemented for 7+ years and that is immune to npc and immune to pc (player character). This issue was discovered last year when trying to script Seer's Relic, but it was too much of a humongous task at that time. Since then it has become more and more of an issue, when we wanted to use 1:1 retail data values in order to produce scripts. That's why I started a huge rewrite with Warlockbugs which reworks these two flags, removes 33% of redundant AI code (duplicity) and also reworks relations. Relations are functions, which determine your relationship with a mob/player - friend/foe/neutral, if its assistable or attackable (for example u can heal escort mobs) or whether it aids other monsters or attacks you on sight. As you can see, this has very deep ramafications, and during the removal of duplicitous code, I also spotted a huge amount of issues due to code copy paste.
That being said, this code doesn't do too many shiny things, it does not generalize caster movement fixes, it doesn't add Possess AI to players so that they cast properly. Then "what does it actually do?". It provides a start for implementing all those things generically for all AIs, be it Database managed or C++ managed AIs. The whole AI system in mangos had a big stigma of "noone wants to work on it" and this is the first step for it to be manageable and debuggable as any modern system should be. Currently we aren't even able to see the state of a given AI without writing particular code too often.
What does this mean? I deployed a huge branch we were working on for 2+ months now onto PTR and it needs to be tested as quickly as possible. It likely breaks a lot of scripts due to the wrong misuse of those flags, but those issues should be fairly easy to fix once discovered. It affects dungeons/raids/quests/escorts/random mobs in the world, so testing anything on the PTR is essential. This system when merged to voa, will be immediately exported to cmangos due to its importance. Byproduct of this effort should be much fewer combat issues with invisible mobs and much fewer griefing causes. This work effectively blocks Vashj and Kael scripting progress.
Albeit huge, this is only a part of what we have been doing. To enable fixing stuff much more quickly, we (mainly me and Trugge) have been gathering insane amount of data on scripts, dungeons, bosses and any sort of important thing for our server. From this we were able to successfully add over 90 immunities to different mobs and this is only first stage of our efforts. Right now we have documented and on video all quests on a horde character with aldor reputation. In near future the plan is to extend this to all alliance quests with scryers as well, so that we can square away on those unscripted quests in outland. This also ties in into fixing all dungeons/heroics/T4 dungeons up to par with Eye and SSC, which have used different scripting procedures. (more in-depth)
The cooperation with cmangos is still bearing fruit, and our vanilla and tbc world is receiving fixes on that front as well daily. On that note, we also released a big fixup of https://github.com/cmangos/tbc-db which is being maintained by me and MantisLord. A lot of things we exported enabled us to go back and increase the quality of scripting and polish what we have exported. A good example are BEM quests that were fixed last year, and the new core tools added since then enabled us to shrink them down or at least make them more foolproof.
Last but not least, we are perpetually working on generic mechanics. Over the past few months we fixed a few class bugs, like for example the infamous hunter macros or hunter steady shot doing too much damage. I have also been reviewing distance calculations, which were using a wrong value from creature models, causing the creatures to run into the texture of the player, disregarding their size. This is still a work in progress and we are continually adding proper data to creatures.
Over the last month, we have made a list of critical things that need to be done, in order to finish 2.0.3 content. This is and will be our focus for the near future. We already started squaring off some of these, and will try to keep you guys updated.
The reason why we haven't had a changelog, is because the sites where we have been pulling tooltips from were shut down. Hopefully we resume business as usual in the coming months.
Should anything change radically, we will keep everyone up to date. Cheers.