Install: Drop BerserkMonsters.ini, BerserkMonsters.int & BerserkMonsters.u into your UnrealTournament/System folder. (No need for serverpackage or uz file on servers...)
v3.0 - Update Changes:
1. Monsters will now attack bots much more often.
2. Added considerable debugging info. 2 independent levels controlled by ini variables.
If bDebug is set True, mutator will log and broadcast info regarding current number of monsters being adjusted, current HateRadius, and when it changes from Fast Check or Slow Check mode.
If bExtDebug is set True, mutator will log detailed information regarding every monster being checked, and if it was able to locate an enemy. (Only turn this on if you plan on checking the logs. Won't effect performance much to have it on, but LOTS of log file entries get made...)
3. Added a "Reporting Mode". If you set MaxChecks=0 and bExtDebug=True, the mutator will switch modes and adjust nothing. It will dump a list of ALL monsters on a map and their current enemy into the log file at intervals specified by the current InsanityRate. (Actually, it will do it at InsanityRate*4, as it will enter Slow Check mode after 3 checks...) It will also broadcast and log a current count of monsters on the map.
4. Mutator will automatically adjust between 2 speeds of operation. (Fast and Slow Checks) If it does 3 checks, and no adjustments are made to the current HateRadius, it will basically slow down and get out of the way. The next checks will be done at InsanityRate * 4. Soon as some monsters get killed/spawned or move around enough to trigger another adjustment to the HateRadius, the mutator switches back into checks at the InsanityRate you have set in the ini file.
5. This might be the most significant change. Mutator can now traverse the current UT list of scripted pawns in 2 different ways.
If bSeqCheck=True, it will always start at the begining of the list and attempt to adjust the number you have set in MaxChecks.
Would recommend using this if you know you are playing games that will never have huge numbers of monsters on them. Then just set MaxChecks=32 or 64 or 128, and bSeqCheck=True.
If you are using this with maps/gametypes that have LOTS of monsters, set bSeqCheck=False. (Or if you have any lag/performance issues while running with bSeqCheck=True...)
Setting bSeqCheck=False puts it into "Progressive" mode.
The mutator will now traverse the entire scripted pawn list a bit at a time, attempting to adjust the number you have set in MaxChecks each time. When it gets to the end, it will reset the offset it is using to zero and start again. You can set it to check 2 at a time, or as many as your machine will handle before things bog down. Recommend testing this with a number of values in your ini, as it gives you a LOT of control over the rate at which this mutator turns the monsters loose.
It was a lot of fun getting that code to work right, as the list is constantly changing as monsters get killed, or spawned into the game either via the map itself, a mutator or other methods. Seems to be doing what I want at this point,.
Keep in mind, if you are on a map with hundreds of monsters on it, and you set half or all of them to start attacking all at the same time, you are very likely to have some performance issues until a bunch of them get killed. (Your cpu will get slammed...)
For maps like that, a InsanityRate in the 10-30 range, and MaxChecks in the 8-32 range seems to work well.
I tried to make this very adjustable, but use a bit of common sense and try a few settings out before reporting errors.
If you tell me you set InsanityRate=2 and MaxChecks=1024 and bSeqCheck=True and it made your UT crash, my answer will be, "I bet it did."
v2.0 - Update Changes:
1. Fixed a bug that was causing lag on maps with more than 100 monsters. Performance has been improved considerably.
2. Made some optimizations to the code that automatically adjusts the search radius.
----------------------- v1.1 - Update Changes:
1. Eliminated several of the configuration variables.
2. Mutator will now automatically adjust the radius used when searching for the next victim.
3. Added an option to exclude a specific class from being modified by this mutator.
This mutator attempts to make monsters in games more active.
I was initially looking for a way to make monsters fight with each other and interact with bots more.
I was hoping to find a way to make this work for all scripted pawns, including the default Unreali monsters.
It does this by periodically checking all monsters in the game and then adjusting any who are not currently engaged with another pawn or player so they attack a nearby monster, bot or player.
By adjusting the configuration file, this should work with most any game or gametype where monsters show up.
Did a bit of testing with Oldskool and EXU2 in both SP and Coop modes, and it seemed to function the way I intended.
This WILL NOT result in total chaos, even on maps with huge amounts of monsters unless you have the InsanityRate set lower than recommended and the MaxChecks value fairly high.
If you are using this in games that have large numbers of monsters and things start getting laggy, increase the InsanityRate value, and/or decrease the MaxChecks value as needed. Set bSeqCheck=False for games like that.
BerserkMonsters.ini contains the following configuration variables:
InsanityRate=15.0 // How often the mutator will check monsters // Recommended Range 10-120+. (60 = approx. once a minute...)
MaxChecks=16 // Max number of monsters to check each Insanity rate // Range 2-300+
bAdjustBosses=False // If False, Boss monsters will be excluded from being modified or attacked
bAttackKin=False // If False, monsters will not attack others of the same class
bSeqCheck=False // If True, UT's monster list processed sequentially. Recommend False. // See above v3.0 Update Changes for more info.
bDebug=False // If True, a message will be logged and broadcast each time the mutator does its check
bExtDebug=False // If True detailed info will be dumped into the UnrealTounrnament.log file // This dumps a bit of info into the log. Recommend False once you have the settings you want
ExcludeClass // Allows you to exclude a class from being checked. Subclasses of the Exclude class will also be skipped // i.e. ExcludeClass=UnrealI.Pupae -- Pupae will not look for other creatures to attack
* Current recommended ranges above are just my best guesses. Other values may work better for your maps and mutator combos. No checks are performed to prevent you from testing other values.
Note. This will not work with U1. I compiled it with Botpack as an edit package. DERP!!!!
RC2, will work with U1 and UT. It will most likely also fix the errors inherited from the Fly code that occasionally cause the warnings in the log. (State TacticalMove. Function PickDestination craps....)
The default sightradius for the zombies is set at 8200, but if you use the SwarmSpawner mutator instead of the mutator included in the Zombies5 package, I think you can adjust that. (Haven't testing adjusting that specific setting yet,....)