1.6 boss changes
This reverts the NPC autolevel change for randbosses and reintroduces a significantly adjusted version of the 1.5 and lower system. The autolevel system is too dramatic a change to shove into 1.6 and doesn't seem to be working well for randbosses. It is kept for fixedbosses (though the parameters are modified a bit) so we can test the system and potentially implement a version of it fully for 1.7.
I didn't even try to get my changes merged into the new class functions (not necessary for fixedbosses anyway) but I'll need to if we go with that system in the future. The following is my old description of the randboss adjustments:
This started as an adjustment to adjust the Insane+ early game to work without overpowered shops and drowning but after some investigation early game randbosses are causing problems in general. I've seen plenty of new player deaths in Norgos/etc to things with 20+ armor, or 8+ flat damage reduction, and various other scenarios that can be essentially unwinnable. I suspect a fair number of players have quit the game after running into an early game rare that takes 0 damage from them a few times in a row.
The randboss system breaks numbers early game. It is inherently frontloaded because it gives gear to things that otherwise wouldn't have it, the first ~5 talent levels have the best scaling, hard disables like stun are given very often, and so on. Starting around mid game when players have assembled their toolkits it starts to work very well and provides a lot of threat diversity.
The first part of this adds a standard_rnd_boss_adjust function that all generated randbosses use by default. This only effects things under level 20 and reduces all damage dealt as well as checking for various "problem" cases and reducing stats accordingly without caring about where they came from. This is applied after sustains are activated.
The second part adds new ways to modify randboss generation:
ActorTalent.rnd_boss_restrict(base npc, talent, randboss data): Return true to reject learning of the talent.
NPC.rnd_boss_init(base, data): Called at the start of createRandboss. This lets an NPC base modify what happens when it gets turned into a randboss. This is useful for NPC bases that have very extreme stats because of other deficiencies. Ie, the high global speed on Midges+low base damage turns into high global speed+no damage downside at all when randbossed.. Which is a problem. You can also use this to modify what classes or talents can be applied and so on directly without playing with power sources or whatever.
These aren't meant to be widely used. NPC bases being abnormally strong is fine. This is all about smoothing out the problematic edge cases.