2:47 PM 8/5/2011

Dropper RC9.0 for Unreal Tournament by Mr.Loathsome.  aka Scott Armitage

Spawns Actors when players or monsters are killed.

Features seperate 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 Bots.
(*Use of bots with this for actual gameplay is not recommended....)


Install:

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.

2 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)

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, however the packages that contain any 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.

Configuration variables:

Default settings:

     [Dropper.Drop]
     NumItems=2
     NumDrops=1
     SPNumItems=2
     SPNumDrops=1
     bRandMode=True
     bSPRandMode=True
     bSuicideDrop=False
     bMvsMspawn=True
     bAnnounceSP=True
     bRandMSizes=True
     bDebugMode=True
     DropFreq=0.5
     SPDropFreq=0.5
     MaxMSize=1.5
     MinMSize=0.33
     DropList(0)="Unreali.SearchLight"
     DropList(1)="UnrealShare.Seaweed"
     DLFreq(0)=1.0
     DLFreq(1)=1.0
     DWK(0)=""
     DWK(1)=""
     FRotate(0)=0
     FRotate(1)=0
     LSpan(0)=0.0
     LSpan(1)=0.0
     HMult(0)=0.0
     HMult(1)=0.0
     SPDropList(0)="Unreali.SearchLight"
     SPDropList(1)="UnrealShare.Seaweed"
     SPDLFreq(0)=1.0
     SPDLFreq(1)=1.0
     SPDWK(0)=""
     SPDWK(1)=""
     SPFRotate(0)=0
     SPFRotate(1)=0
     SPLSpan(0)=0.0
     SPLSpan(1)=0.0
     SPHMult(0)=0.0
     SPHMult(1)=0.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 1.0 will be used. 


NumItems:  Total Number of classes in the DropList array used by Players and Bots.

NumDrops:  Number of items from the list to drop.

SPNumItems:  Same as NumItems above, but for the SPDropList array used by ScriptedPawns. (Monsters)

SPNumDrops:  Ditto.

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 [0].

bSPRandMode:  Same as above but for the SPDropList.

bSuicideDrop:

  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 size of spawned monsters.

bDebugMode:

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 8 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.

DropFreq:

   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

SPDropFreq:

   Same as above, but for scriptedpawns.  (Monsters)

MaxMSize:   Max size for spawned monsters.   (1.5 = 1.5x default size.  etc)

MinMSize:   Min size for spawned monsters.

DropList[0..255]:

   List of Actor classes to be spawned when a player or bot is killed.

SPDropList[0..255]:   Same as above, but for scriptedpawns.  (Monsters)

DLFreq[0..255]:

   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 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.

SPDWK[0..255]:     Same as above, but for SPDropList

FRotate[0..255]:

  If 1, the spawned item will rotate if their class allows that, if 0, they wont....
Note, settings in the gametype and/or class itself may override this in some cases.
If absent from the ini file, default value False will be used.
Only valid for inventory items.

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

Note, if nothing spawns but SearchLights, Seaweed, Dispersion Pistols or ImpactHammers, this
indicates your Dropper.ini file is either missing or borked up beyond comprehension.

The Dropper can't help you if you lose or bork up your ini file.... 

Enjoy !


You may use and modify this code for your own personal use.
Any modifications for redistribution or commercial use require permission of the author.

(c) 2011 Scott A. Armitage