Description

This package for Unreal Tournament (UT99) contains the Mutator SBQueenSaver and a modified Queen.

Mutator

This Mutator runs once when a map is loaded and replaces all existing Queens with the new Queen. Also Actors that can spawn other Actors are checked if the spawn class is a Queen and if so, the spawn class is changed to the new Queen. Queens coming into game later are also replaced.

All Mutator's parameters in a nut shell:
NameValuesDefaultDescription
bActivetrue | falsetrueSet to FALSE to deactivate the mutator. Use it to disable this mutator temporarily.
bReplaceQueenSubClassesAlsotrue | falsetrueReplace also sub classes of Queens or class'Queen' only?
bUseStaticQueenDestsCounttrue | falsetrueIf true, function QueenDestsHave() will cache the result of first QueenDests search and so only one attempt of teleporting is done if there are no QueenDests. Code will run faster by this, but later added QueenDests are neglected. But: Have you ever seen a QueenDest coming in after game has started?
Does not affect Queens that are spawned by factories.
LogLevelsee LogLevelLOG_Infosee LogLevel
bUseLogTimeStamptrue | falsetrueAdd a time stamp in front of every log message?
SpawnersA list of maximum 16 spawner entries. Details see Replacement in Spawning Actors
DontTreatTheseActorsA list of maximum 32 Actors that should be ignored. Details see Replacement Exceptions

LogLevel

Play with the Log level to see what is going on. Possible values and their meanings are:
LOG_NoneDon't log anything. Not recommended.
LOG_ErrorLog errors only. (An error prevents the code to continue.)
LOG_WarningLog warnings also. (A warning is issued when an unexpected circumstance occur but the operation will not being compromised.)
LOG_InfoAdditional information of what has happend is logged.
LOG_DebugAdditional information of what has NOT happend is logged. Use this to track down bugs.
LOG_AllAll logging is send to the log file. For example if a special code block is entered or left.

Replacing Queens

Replacement Exceptions

Sometimes it is not desired to do a replacement, for example if that Queen has custom code or is placed at a special location. You can prevent single Actors from treatment by putting the map and Actor name into the list DontTreatTheseActors in the INI file. All Actors given in this list with maximum 32 entries will be ignored by the Mutator.
Don't mess up the Actor name with the class name — what is needed here, is the Actor name. To find out the name of specific Actors in a map you can use UnrealEd (see window Actor Properties>Actor>Object>Name) or set the LogLevel to LOG_Debug and have a look at your UnrealTournament.log.

Some other notes:

The default values are:
DontTreatTheseActors[0]=(MapName="MH-TowerOfDeath2",ActorName="Queen0")
DontTreatTheseActors[1]=(MapName="MH-Invasion_4+SBMod1",ActorName="FrozenQueen0")

Example explanation of the first entry: In map MH-TowerOfDeath2 the Actor named Queen0 will be skipped by the Mutator.

Replacement in Spawning Actors

When a map is loaded the Mutator also inspects ThingFactories and their sub classes if their Prototype is equal to the Queen of the package UnrealI. If so, the prototype will be changed to the new Queen.
Because there are other actor spawners than the well known ThingFactories, you can define up to 16 Actor classes that can spawn other Actors in the list Spawners. Additionally you have to define the property name and the value of the property. If those three matches, the property value will be changed to the new Queen.

The default values are:
Spawners[0]=(ClassName="PW_ThingSpawner",PropertyName="ThingToSpawn",PropertyValue="Class'UnrealI.Queen'")
Spawners[1]=(ClassName="B_MonsterSpawner",PropertyName="CreatureType",PropertyValue="Class'UnrealI.Queen'")
Spawners[2]=(ClassName="B_MonsterLoopSpawner",PropertyName="CreatureType",PropertyValue="Class'UnrealI.Queen'")

Example explanation of the first entry: All Actors of the class PW_ThingSpawner are checked, if the property ThingToSpawn contains the value Class'UnrealI.Queen'. If so, the value is changed to the new Queen. (PW_ThingSpawner is from package Password.u; the B_Monster-things from package BBoyShare.u.)

New Queen

The differences of the new Queen to the stock Queen of package UnrealI are: All new Queen's parameters:
NameValuesDefaultDescription
LogLevelsee LogLevelLOG_Infosee LogLevel
bUseLogTimeStamptrue | falsetrueAdd a time stamp in front of every log message?
MinDurationSecondsBetweenTeleportsfloat3.0How many seconds should at least pass between two teleports?

Installation (Client and Server)

Put the files
.\System\SBQueenSaver.int
.\System\SBQueenSaver-V1.u
.\System\SBQueenSaver.ini
into the System directory of your UT installation. Change the values in SBQueenSaver.ini to your needs. Documentation can also be found in there.

All other files in this package are optional.

Installation on a Server

Installation on a Client

Start UT and choose the Mutator "SBQueenSaver V1" for a local game.

About

This package was created by Barbie.
Contact: SeriousBarbie at googlemail dot com

Copyright

This package is copyleft - do whatever you want.

Changelog

SBQueenSaver-V1, 02 Oct 2018

Filelist:
NameSizeDateMD5 sum
./Help/SBQueenSaver.htm104622018-10-02(this file)
./redirect/SBQueenSaver-V1.u.uz248772018-09-099a2727a8806502a784984215874072d9
./Sourcecode/Classes/SBQueenSaver.uc148672018-09-1628c0c6219af2f2ec23d9b56770bdeab9
./Sourcecode/Classes/SBQueen.uc156842018-08-270759cd7a58c01687221c1941c9efda12
./Sourcecode/Classes/SharedCode.uc121582018-08-084838b31cc6b2c5bb2c1f15ae674b1d40
./Sourcecode/copyleft.txt972015-10-02ae5e178649b00957f4fe7af70b13bc75
./Sourcecode/make.ini3392018-08-06cd0ccc518051351da3f818a14d5dff0b
./Sourcecode/readme.txt822016-08-213d0bc407500120b372804d5452b0601f
./System/SBQueenSaver.ini27152018-09-1670c59f2fbd159113c0e4ddf3fbf102ad
./System/SBQueenSaver.int1532018-08-27d4fe90ad598706da19b37ff9b203ea7e
./System/SBQueenSaver-V1.u759642018-09-094c94bc31d2d2b4e4248bd87f50cdc817