So you want to make your own mutator for Proelium
You've come to the right page. Here we'll go into what makes Proelium's base mutator class different, what functions are new, and what to avoid in order for your mutator to play nice with not just Proelium, but other mutators as well. Let's get on with it.
In order to make a mutator that does things for powerups or when players level, you will need to subclass ProeliumMutator. It isn't necessary to subclass ProeliumMutator to make a mutator that works with Proelium, though be forewarned - mutators that use CheckReplacement or ReplaceWith to modify weapons will break Proelium. Read further to learn how to properly change combat level loadouts.
The following lists the functions defined in ProeliumMutator and how they're used. Note that when you override any of these in your mutator class, be very sure you call the Super version in order to allow other mutators to do things with the mutator call.
You are probably noting how brief that was. If you require further assistance or explanation with mutators, or even UnrealScript coding in general, you will have to reference such handy docs as UDN's UnrealScript Language Reference and UnrealWiki, and to go into the basics on UnrealScript coding would be far outside the scope of this site, let alone page.
- function bool ModifyCombatLevelLoadout(Pawn PlayerPawn, int LevelState) - return True to prevent the standard combat level loadout method from being called. LevelState will either be 0 (indicating that Player has respawned and is in the process of being given all his/her loadout) or the new combat level of Player. The reason for this is to be able to tell when to give Player a particular per-combat-level perk, such as increased health, that you wouldn't want to improperly be given to a player who has leveled beyond the point where it's given.
- function AddPowerups(out array< class<ProeliumPowerupPickup> > Powerups) - allows you to modify the powerups available in the game by adding or removing their pickup class from the passed dynamic array.
- function bool QueryPickupPowerup(Pawn PlayerPawn, ProeliumPowerupPickup PP) - return True to allow PlayerPawn to pick up the powerup pickup passed as PP
- function bool HandlePowerupUse(Pawn PlayerPawn) - return True to prevent the standard powerup use handling method from being called. This is called immediately after ModifyCombatLevelLoadout.
- function ModifyExperience(Controller Player, out float Exp) - provides a method for you to modify the experience gained by Player before the experience is awarded.