Berserk Monsters v3.0 by Mr.Loathsome
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
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
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:
- Code: Select all
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.