Dropper v2.0 for Unreal Tournament by Mr.Loathsome.
Change List for v2.0:
1. Eliminated the need for The NumItems and SPNumItems config variables. The mutator just counts those up when it Precaches/Validates your lists on startup now.
2. Spawned Actors will no longer "fall out of the world".*
3. Issues with Spawned Actors "floating" or getting stuck to walls nearly eliminated. In online use you may still see some of this, but it should be temporary. After a brief period of time, or if you leave the area and come back, the item should have landed correctly.
4. Can now spawn Decoration classes. If the class you are spawning supports it, the item will be pushable and destructible. If it is a destructible class you can adjust its Health value via the HMult() or SPHMult() variables. Most destructible Decoration classes such as Barrels, Wooden boxes/chests, Vases ect. can be set to contain 1 Inventory item, (Weapon/Pickup), via the DWK() or SPDWK() config variables.
5. Fixed glitch with LSpan/SPLSpan variables where picked up items would "expire" while in the players possession. Mutator now resets the LifeSpan to 0.0 when items are picked up.
6. Added extra mode(s) for Rotation of spawned items. Items can now be set to rotate at random rates on all 3 axis if desired. Works for Decoration classes as well. More details below.
7. Adjusted Actor Pre-cache routines so that all classes in the DropList(), SPDropList(), DWK(), and SPDWK() arrays will be precached before the match starts.
8. Monsters spawned by the Dropper will now immediately attack the first thing they see.
*On rare occasions, if a spawned Decoration lands on top of a moving actor before the velocity's get adjusted, it may still fall out of the world.... This happens very infrequently and only if you have multiple items spawning at once. (I think.)
Note to users of previous versions:
You may need to lower the values you have set for the DropFreq, SPDropFreq, DLFreq() and SPDLFreq() variables. Due to the fixes and improvements to the spawning functions, you will get more things actually showing up on the map.
Removal of the NumItems and SPNumItems lines from your existing Dropper.ini file is optional. They will just be ignored by the new version if present.
Other than that, your existing Dropper.ini files should work fine.
--------------------- Spawns Actors when players or monsters are killed.
Features separate lists for players and Monsters. Supports up to 255 Actor classes per list.
Allows for setting % of time Actors will be dropped, as well as the individual odds for each individual Actor.
Tested with Inventory items, Weapons, ScriptedPawns, Flockpawns and Decorations.
1. Drop Dropper.int and Dropper.u into your UnrealTournament\System folder.
2. Read this entire file.
3. Read this entire file again, then edit the Dropper.ini file to suit your needs.
WARNING !!!!!! This is a very powerful and dangerous mutator.
If used incorrectly, you can add way too many items and ruin gameplay, or generate enormous log files full of warnings that The Dropper will not be held accountable for. Or crash your game at an amazing rate of speed.
Example, try setting things up so that when a bot is killed, another bot is spawned. Leave the DropFreq at 1.0 Start up a nice DM practice match with a bot or 2. When I tested that, the map filled and crashed the game within 1 minute.
Same would happen if you had monsters spawning more than 1 monster when they die. However via use of the DropFreq and SPDropFreq vars and also the DLFreq and SPDLFreq tables, you can indeed have monsters spawning monsters if you wish and plan your ini file carefully.
The Dropper cannot be held responsible for errors caused by any ini misconfigurations.
If you configure the file to reference classes that are not available, or cause a confict with either the gametype you have selected or other mutators being used, those classes are likely to generate warnings and errors in your log file, and things may or may not work as you had intended. This seems to happen most often with weapons.
The Dropper will not be held repsonsible for your poor choice of classes.
If used correctly, The Dropper seems to perform very well.
Several example ini files are included.
1. Dropper_UnrealSP.ini - Add Unreal Monsters to your games. Note, this file uses the default UnrealI monsters. If you have EXU2 or MonsterSpawn installed, recommend using those classes instead.
2. Dropper_EXU.ini - Add more Exu Battle Flares as well as extra monsters, items and guns to your games. (Requires EXU2 demo4, Jurassic, Napali103 and MegaTitan packages)
+ Others. Look at them, try them.
Copy one of those to your System folder, rename it Dropper.ini and edit as you wish.
Note the drop frequency variables in the examples are probably set a bit high for tesing.
Dedicated servers add Dropper.Drop to the mutators= section of your server line.
The Dropper mutator is not needed in the ServerPackages section of your UnrealTournament.ini or on your redirect site, however the packages that contain any 3rd party classes you are having the Dropper spawn do need to be included there.
Note: Other that at least having 1 item in 1 of the 2 lists, all the other config variables are optional. Only include them in your ini if you need to change the default value for that item.
DropList(0)="" // Main array of actor classes to drop on Player or Bot deaths DLFreq(0)=1.0 DWK(0)="" FRotate(0)=0 LSpan(0)=0.0 HMult(0)=1.0
SPDropList(0)="" // Main array of actor classes to drop on ScriptedPawn/Monster deaths SPExclude(0)="" SPDLFreq(0)=1.0 SPDWK(0)="" SPFRotate(0)=0 SPLSpan(0)=0.0 SPHMult(0)=1.0
*The DropList and SPDropList arrays are the classes to be spawned and the DLFreq and SPDLFreq arrays contain the individual odds of each class to spawn. If DLFreq or SPDLFreq are absent from the ini, default of 0.50 will be used. (50% chance of a spawn occuring on each death)
NumDrops: Number of items from the DropList() array to drop when a Player or Bot is killed.
SPNumDrops: Number of items from the SPDropList array to drop when a ScriptedPawn (Monster) is killed.
bRandMode: If True, items will be randomly selected from the list. Dups are possible if NumDrops > 1. If False the mutator will drop items sequentially starting with element .
bSPRandMode: Same as above but for the SPDropList.
If True spawning will occur when a player or scriptedpawn kills himself. Recommend False.
bMvsMspawn: True = spawn items when both Killed and Killer are monsters.
bAnnounceSP: Broadcast a message when monsters are spawned.
bRandMSizes: True = randomize the size of spawned monsters.
If True debug information logged when an item is spawned, and you will also get a line when a item is unable to spawn for whatever reason.
The mutator will make 20 attempts to spawn an item before it moves onto the next. (Bork !) If you are spawning large actors. Titans for example, you may see a number of failed attempts when there is no room to spawn at that location. Most items spawn in the first few tries.
Recommend True until you are sure the Dropper.ini is working the way you want. Then set it to False.
Percentage of player/bot deaths that will result in Actors being spawned.
1.0 = Every death will drop. 0.5 = 1/2 will drop. 0.1 = 1 out of 10 0.01 = 1 out of 100
Same as above, but for scriptedpawns. (Monsters)
Next 2 variables only in effect if option bRandMSizes=True:
MaxMSize: Max size for spawned monsters. (1.5 = 1.5x default size)
MinMSize: Min size for spawned monsters. (0.5 = 50% default size)
List of Actor classes to be spawned when a player or bot is killed.
SPDropList[0..255]: Same as above, but for scriptedpawns. (Monsters)
Odds that the corresponding element in the DropList array will be spawned.
SPDLFreq[0..255]: Same as above, but for SPDropList
DWK[0..255]: If the corresponding element in the DropList is a ScriptedPawn, you can set a class name in the DWK array. This class will be dropped when the spawned pawn is killed. Note, not all monsters can drop things, and not all things can be dropped by a monster. This can also be used to specify an Inventory class that should be the contents if the corresponding element in the DropList is a destructible Decoration class that can contain items.
SPDWK[0..255]: Same as above, but for SPDropList
FRotate[0..255]: Rotation options for the spawned actors.
0 = No Rotation 1 = Item will rotate in the "usual" default way. Speed will be randomized a bit however. 2 = Item will rotate randomly in the most random ways I could come up with. Sometimes on all 3 axis at once.
Note, settings in the gametype and/or class itself may override this in some cases. If absent from the ini file, default value 0 will be used.
SPFRotate[0..255]: Same as above, but for SPDropList
LSPan[0..255]: Will set a lifespan variable for dropped items if applicable.
SPLSPan[0..255]: Same as above, but for SPDropList
HMult[0..255]: Health multiplier for any spawned monsters. 0.5 = 1/2 default health. 3.0 = 3x default health
SPHMult[0..255]: Same as above, but for SPDropList
You may use and modify this code for your own personal use. Any modifications for redistribution or commercial use require permission of the author.
Credits to Dr.Flay over at UT99.org for the int file tweak to enable editing of the options via the Advanced Options menu.
Post any questions or bug reports etc. here. Lets get some sorta activity on this forum.
Note, there may be an update to this soon.
Have added a couple of config variables that will let you specify scriptedpawns that should be excluded from dropping items on death, which enables you to add those classes to the drop list for scriptedpawns without running into exponential spawning issues.
Next update will include that, and possibly a way to process more than one config file...
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,....)