so that they would be useful on a server where I am adding a bunch of extra overpowered guns and overpowered monsters with
too much health.
RC2 Changes:
1. Eliminate bBruteForce config variable.
2. Improved detection of weapons damage variables.*
3. Added "ChunkDamage" config variable for FlakCannon Primary Fire.
4. Added Delete Button to Mod Menu. Allows weapons to be deleted from the list.
5. Supports 254 unique weapons classes in the list. (#255 reserved for Delete function)
6. Number of code optimizations. No longer spawns/destroys anything when loading the list.
7. Slightly improved formatting on log file lines for bDebug mode.
--------------------
So here it is: All new info regarding RC2 is in the ReadMe.txt file.
The ReadMe.txt file. (READ IT!!! )
Spoiler
9:35 PM 6/27/2018
RC2 Changes:
1. Eliminate bBruteForce config variable.
2. Improved detection of weapons damage variables.*
3. Added "ChunkDamage" config variable for FlakCannon Primary Fire.
4. Added Delete Button to Mod Menu. Allows weapons to be deleted from the list.
5. Supports 254 unique weapons classes in the list. (#255 reserved for Delete function)
6. Number of code optimizations. No longer spawns/destroys anything when loading the list.
7. Slightly improved formatting on log file lines for bDebug mode.
Loathsome's Weapon Tweak Instructions.
This mutator attempts to give full control over weapons, projectile and scriptedpawn damage.
The intent is to provide a way to balance all the weapons/damage without altering the default
properties or behaviors other than the damage done.
No need to track down the exact weapons/projectiles class names, damage amounts etc. as this will
automatically build the list of weapons as they are picked up by the players/bots/monsters.
After the list is built, you may edit each weapons damage via the Mod Menu with new values
that will be used next time you run it.
*You can adjust the other options at the menu before actually running it and building your list.
Having weapons in the list that are not on your current map/config is no issue.
The list gets loaded once at level start. Weapons in the list not currently being used
will be ignored. The classes do not even need to be available in your current game/config.
This only modifies weapons/chunks in the map as they are spawned.
If you want the list to be 'optimized', get the weapons that will be spawning the most
often in your games at the front of the list.
The Config Variables:
bDebug=False
DamageMult=1.000000
SPDamMult=1.000000
ChunkDamage=16.000000
MaxAdjVal=15
bDebug:
Enables extra info in the log file.
Will list all the weapons in the list and the damage values for each when map loads and also
output a log file line when a new weapons class is detected and added to the ini file list.
Also will log a line for all damage done by players/bots and/or by most scripted pawns to players/bots.
Some 3rd party monster packages such as AKcoop2 bypass the default MutatorTakeDamage and other code.
Damage done to such pawns will not get logged by this mutator.
This can result in a very large log file if you play a long time or are running the mutator on a server.
Recommended setting is False after you have things adjusted the way you want.
DamageMult/MaxAdjVal:
These 2 variables are used to adjust damage done by high fire-rate weapons that have no adjustable Primary, Secondary or
HitDamage variables. Which is pretty much just the MiniGuns, SniperRifles and variants.
The mutator will multiply the actual damage done by DamageMult if the actual damage done is below the MaxAdjVal.
Recommended setting for DamageMult 2-20 ? For MaxAdjVal 12-41 ?
You will have to test with bDebug on a bit and determine the best number here for your needs.
The exact amount of damage done varies depending upon difficulty settings, bot skill settings, aim, weapons being used,
are monsters on the maps, etc etc.
You want to keep DamageMult a bit below the lowest damage value you have set for other weapons that are adjustable
in the weapons list. (Unless you WANT the overlap, and have adjusted the damage values with that in mind...)
You can set it higher, but be aware that ANY "AcutalDamage" done by players/bots that is below the MaxAdjVal will get
multiplied by this DamageMult variable.
If you want to scale EVERYTHING by a fixed amount, set MaxAdjVal higher than the max damage value any of the weapons in your list
show. Remember, if you adjust any adjustable damages for a weapon and are still below the MaxAdjVal setting, those will be multiplied by
the DamageMult setting.
SPDamMult:
This variable can be used to scale ALL damage done to players/bots by scripted pawns. (Monsters)
Set at 2 for 2x damage. Set at 0.50 for 50% damage. Set lower than 0.10 to make the monsters weak and useless.
0.50 - 0.20 range seems to work good if you have Skaarj or other monsters using the same weapons as you are.
Just leave it at 1.0 if you have no monsters in your games or want them to not be adjusted.
ChunkDamage:
This variable was added to give more adjustability to the FlakCannon Primary Fire.
Due to the way the U1/UT Flakcannons handle the "Chunks" they fire, RC1 of this mutator would
only adjust them if the MaxAdjVal was greater than 16. (16-24?) Then they would be adjusted
via the DamageMult setting. Changing the detected FlakCannon Primary Damage value had no effect.
I added this ChunkDamage variable to support Chunks spawned by the default BotPack.UT_FlakCannon and the
Unreali.Flakcannon. This should work with any other FlakCannons that also spawn chunks that extend either
the UT or U1 chunks. (Tested with OLweapons.OLFlakCannon, but no others...)
I coded this bit in a way so it should also work with any other weapons that might fire those Chunks, although I know
of none.
You should set the FlakCannon Primary Fire value to 0 in the config menu when setting things up.
Then you will remember to use the ChunkDamage variable for any future Flak Primary Damage adjustments.
Note: The default FlakCannon Secondary fire also spawns a number of these chunks in addition to its default Secondary Damage amount.
They will also be adjusted to your ChunkDamage setting.
-----------------------------
Recommended Usage Notes:
First you should do a practice match with the mutator running to get the weapons list populated.
Weapons get added in the order they are spawned/picked up, so pick up the ones that are going
to be used/respawn the most often first. (Set game for 0 bots if you want a specific order...)
You can just summon them in order if you do know the class names.
You will then have a list of those weapons in the ini with their original default values.
(Might want to make a backup copy of the ini at that point.)
Then you are ready to adjust the DamageMult and MaxAdjVal for the MiniGuns and other low-damage/high fire rate
weapons so that they are working how you want for your games.
Next, you should set the adjustments for any individual weapons that have adjustable Primary, Secondary or Hitdamage values
available in the Mod Menu configuration window. If the value is 0 it is not adjustable or editable by the Mod Menu. (Mostly)
Note, if you are using the Advanced Preferences or editing the ini with Notepad, changing any values with a 0 default value
wont help you any. (Will get ignored...) You can only adjust values that have a non-zero number.
If you have multiple guns in the list that share the same projectile class, the last one in the list will override
the previous guns settings. Also any monsters that use a projectile class that has been adjusted by this will get the
same settings for that projectile as set for the players weapon that uses that projectile. (Before the SPDamMult kicks in)
Re: SniperRifles/Miniguns + ?
These and other weapons that have damage hardcoded will only be adjustable via playing with the DamageMult and MaxAdjVal variables.
Best fix for the SniperRifles is to use a SniperRifle class that is doing the amount of damage that your games require.
Then set your DamageMult and MaxAdjVal at what works best for the minigun(s) you might be using, and tweak the other weapons
as needed to balance things how you want.
Note: I ran a test were I set the DamageMult at 3x, and set MaxAdjVal at 200 or higher. (Default Sniper does 150 damage on headshot...)
I then set the adjustable damage values to 1/3 of the default setting for all the other weapons.
This gave me a nice bot match where Minigun and Sniper did 3x damage, but all other weapons were pretty much at default.
Just an example of how configurable this thing is now.
Couple of extra configuration/usage notes:
If you have the Advanced Options menus enabled, you can use that to adjust the settings. Keep in mind you must not have
any blank elements in the weapons array. It will stop loading the list when it encounters the first empty spot in the list.
Same applies if you are using Notepad to edit the ini.
Recommend using the Mod Menu to delete weapons from the list if needed.
If you regret any settings you have made for a weapon, or just want to reset that specific weapon to its default values and start
over with it, just use the new Delete button in the menu. Next time the mutator detects that weapon, it will be added to the end
of the list with its original default values.
Once you set any of the weapons damage values to zero, the menu will force you to ignore it in the future. Only way to reset that
is to delete it and let the mutator add it back next time it spawns. (Or use notepad/Adv Options to edit it...)
Some weapons might be detected with Damage values the weapon does not actually use.
For Example: "Botpack.SuperShockRifle"
It only uses the HDamage(hitdamage) variable for the actual damage it does from either Primary or Secondary Fire buttons.
But it inherits a Secondary Damage value of 40 from its parent class which this mutator detects.
You could adjust that via the menu, but it would do nothing for you at all as the weapon does not use it.
Either ignore it OR set it to zero.
---
You must restart your game/practice match after making any changes to the settings via the Mod Menu for your changes to take effect.
Enjoy!
*Credit to sektor211@UT99.org for reminding me of a better way to detect some of the weapons damage values.
RC2 Changes:
1. Eliminate bBruteForce config variable.
2. Improved detection of weapons damage variables.*
3. Added "ChunkDamage" config variable for FlakCannon Primary Fire.
4. Added Delete Button to Mod Menu. Allows weapons to be deleted from the list.
5. Supports 254 unique weapons classes in the list. (#255 reserved for Delete function)
6. Number of code optimizations. No longer spawns/destroys anything when loading the list.
7. Slightly improved formatting on log file lines for bDebug mode.
Loathsome's Weapon Tweak Instructions.
This mutator attempts to give full control over weapons, projectile and scriptedpawn damage.
The intent is to provide a way to balance all the weapons/damage without altering the default
properties or behaviors other than the damage done.
No need to track down the exact weapons/projectiles class names, damage amounts etc. as this will
automatically build the list of weapons as they are picked up by the players/bots/monsters.
After the list is built, you may edit each weapons damage via the Mod Menu with new values
that will be used next time you run it.
*You can adjust the other options at the menu before actually running it and building your list.
Having weapons in the list that are not on your current map/config is no issue.
The list gets loaded once at level start. Weapons in the list not currently being used
will be ignored. The classes do not even need to be available in your current game/config.
This only modifies weapons/chunks in the map as they are spawned.
If you want the list to be 'optimized', get the weapons that will be spawning the most
often in your games at the front of the list.
The Config Variables:
bDebug=False
DamageMult=1.000000
SPDamMult=1.000000
ChunkDamage=16.000000
MaxAdjVal=15
bDebug:
Enables extra info in the log file.
Will list all the weapons in the list and the damage values for each when map loads and also
output a log file line when a new weapons class is detected and added to the ini file list.
Also will log a line for all damage done by players/bots and/or by most scripted pawns to players/bots.
Some 3rd party monster packages such as AKcoop2 bypass the default MutatorTakeDamage and other code.
Damage done to such pawns will not get logged by this mutator.
This can result in a very large log file if you play a long time or are running the mutator on a server.
Recommended setting is False after you have things adjusted the way you want.
DamageMult/MaxAdjVal:
These 2 variables are used to adjust damage done by high fire-rate weapons that have no adjustable Primary, Secondary or
HitDamage variables. Which is pretty much just the MiniGuns, SniperRifles and variants.
The mutator will multiply the actual damage done by DamageMult if the actual damage done is below the MaxAdjVal.
Recommended setting for DamageMult 2-20 ? For MaxAdjVal 12-41 ?
You will have to test with bDebug on a bit and determine the best number here for your needs.
The exact amount of damage done varies depending upon difficulty settings, bot skill settings, aim, weapons being used,
are monsters on the maps, etc etc.
You want to keep DamageMult a bit below the lowest damage value you have set for other weapons that are adjustable
in the weapons list. (Unless you WANT the overlap, and have adjusted the damage values with that in mind...)
You can set it higher, but be aware that ANY "AcutalDamage" done by players/bots that is below the MaxAdjVal will get
multiplied by this DamageMult variable.
If you want to scale EVERYTHING by a fixed amount, set MaxAdjVal higher than the max damage value any of the weapons in your list
show. Remember, if you adjust any adjustable damages for a weapon and are still below the MaxAdjVal setting, those will be multiplied by
the DamageMult setting.
SPDamMult:
This variable can be used to scale ALL damage done to players/bots by scripted pawns. (Monsters)
Set at 2 for 2x damage. Set at 0.50 for 50% damage. Set lower than 0.10 to make the monsters weak and useless.
0.50 - 0.20 range seems to work good if you have Skaarj or other monsters using the same weapons as you are.
Just leave it at 1.0 if you have no monsters in your games or want them to not be adjusted.
ChunkDamage:
This variable was added to give more adjustability to the FlakCannon Primary Fire.
Due to the way the U1/UT Flakcannons handle the "Chunks" they fire, RC1 of this mutator would
only adjust them if the MaxAdjVal was greater than 16. (16-24?) Then they would be adjusted
via the DamageMult setting. Changing the detected FlakCannon Primary Damage value had no effect.
I added this ChunkDamage variable to support Chunks spawned by the default BotPack.UT_FlakCannon and the
Unreali.Flakcannon. This should work with any other FlakCannons that also spawn chunks that extend either
the UT or U1 chunks. (Tested with OLweapons.OLFlakCannon, but no others...)
I coded this bit in a way so it should also work with any other weapons that might fire those Chunks, although I know
of none.
You should set the FlakCannon Primary Fire value to 0 in the config menu when setting things up.
Then you will remember to use the ChunkDamage variable for any future Flak Primary Damage adjustments.
Note: The default FlakCannon Secondary fire also spawns a number of these chunks in addition to its default Secondary Damage amount.
They will also be adjusted to your ChunkDamage setting.
-----------------------------
Recommended Usage Notes:
First you should do a practice match with the mutator running to get the weapons list populated.
Weapons get added in the order they are spawned/picked up, so pick up the ones that are going
to be used/respawn the most often first. (Set game for 0 bots if you want a specific order...)
You can just summon them in order if you do know the class names.
You will then have a list of those weapons in the ini with their original default values.
(Might want to make a backup copy of the ini at that point.)
Then you are ready to adjust the DamageMult and MaxAdjVal for the MiniGuns and other low-damage/high fire rate
weapons so that they are working how you want for your games.
Next, you should set the adjustments for any individual weapons that have adjustable Primary, Secondary or Hitdamage values
available in the Mod Menu configuration window. If the value is 0 it is not adjustable or editable by the Mod Menu. (Mostly)
Note, if you are using the Advanced Preferences or editing the ini with Notepad, changing any values with a 0 default value
wont help you any. (Will get ignored...) You can only adjust values that have a non-zero number.
If you have multiple guns in the list that share the same projectile class, the last one in the list will override
the previous guns settings. Also any monsters that use a projectile class that has been adjusted by this will get the
same settings for that projectile as set for the players weapon that uses that projectile. (Before the SPDamMult kicks in)
Re: SniperRifles/Miniguns + ?
These and other weapons that have damage hardcoded will only be adjustable via playing with the DamageMult and MaxAdjVal variables.
Best fix for the SniperRifles is to use a SniperRifle class that is doing the amount of damage that your games require.
Then set your DamageMult and MaxAdjVal at what works best for the minigun(s) you might be using, and tweak the other weapons
as needed to balance things how you want.
Note: I ran a test were I set the DamageMult at 3x, and set MaxAdjVal at 200 or higher. (Default Sniper does 150 damage on headshot...)
I then set the adjustable damage values to 1/3 of the default setting for all the other weapons.
This gave me a nice bot match where Minigun and Sniper did 3x damage, but all other weapons were pretty much at default.
Just an example of how configurable this thing is now.
Couple of extra configuration/usage notes:
If you have the Advanced Options menus enabled, you can use that to adjust the settings. Keep in mind you must not have
any blank elements in the weapons array. It will stop loading the list when it encounters the first empty spot in the list.
Same applies if you are using Notepad to edit the ini.
Recommend using the Mod Menu to delete weapons from the list if needed.
If you regret any settings you have made for a weapon, or just want to reset that specific weapon to its default values and start
over with it, just use the new Delete button in the menu. Next time the mutator detects that weapon, it will be added to the end
of the list with its original default values.
Once you set any of the weapons damage values to zero, the menu will force you to ignore it in the future. Only way to reset that
is to delete it and let the mutator add it back next time it spawns. (Or use notepad/Adv Options to edit it...)
Some weapons might be detected with Damage values the weapon does not actually use.
For Example: "Botpack.SuperShockRifle"
It only uses the HDamage(hitdamage) variable for the actual damage it does from either Primary or Secondary Fire buttons.
But it inherits a Secondary Damage value of 40 from its parent class which this mutator detects.
You could adjust that via the menu, but it would do nothing for you at all as the weapon does not use it.
Either ignore it OR set it to zero.
---
You must restart your game/practice match after making any changes to the settings via the Mod Menu for your changes to take effect.
Enjoy!
*Credit to sektor211@UT99.org for reminding me of a better way to detect some of the weapons damage values.
Post any questions or bug reports in this thread. (Does it work with MH? )
As always, full source included. This time I actually attempted to put useful comments in it.
If anybody looks at that, let me know if you see anything horrible, redundant or left out.
Had to come up with some new methods for some of this as I was unable to find good examples of what I needed to do.
(New to me anyway. Tell me if I am re-inventing the wheel here. And if so, does it roll faster? )
*I am testing an alpha version of a Monster Tweaker that uses the same methods. (Builds the list automagically etc...)
Currently it only lets you adjust Health and DamageScaling. May post that also if there is any interest.