https://wiki.beyondunreal.com/w/api.php?action=feedcontributions&user=Crusha&feedformat=atomUnreal Wiki - User contributions [en]2017-11-18T08:28:07ZUser contributionsMediaWiki 1.25.1https://wiki.beyondunreal.com/Compiler_errors_overview?diff=45266Compiler errors overview2012-11-16T10:14:29Z<p>Crusha: /* Functions */ Error, Code space for FUNCTION overflowed by n bytes :</p>
<hr />
<div>{{expand}}<br />
<br />
__NOTOC__<br />
{|style="width:100%;"<br />
|-valign="top"<br />
|<br />
==Preprocessor errors==<br />
{{main|preprocessor errors}}<br />
A description and solution to [[preprocessor]] errors.<br />
|<br />
==Subobjects errors==<br />
{{main|subobject errors}}<br />
A description and solution to [[subobjects]] errors.<br />
|<br />
==Interface errors==<br />
{{main|interface errors}}<br />
A description and solution to [[interface]] errors.<br />
|}<br />
<br />
==Other errors==<br />
{{Compiler error|id=0001|error=Could not load existing package file 'package path'|desc=}}<br />
<br />
{{Compiler error|id=0002|error='[[ForEach]]'<nowiki>:</nowiki> An iterator expression is required|desc=After the ForEach keyword a standard function call to an [[iterator]] function is required. That iterator function could be called in the context of the current code (e.g. "foreach AllActors(...)") or within the context of some other object (e.g. "foreach WorldInfo.AllPawns(...)" calls the AllPawns iterator of the WorldInfo)}}<br />
<br />
{{Compiler error|id=0003|error=Operator '!='<nowiki>:</nowiki> Comparison will always succeed|desc=You probably already ensured that the values you are trying to compare are really different. In that case it would be pointless to perform exactly the same comparison again}}<br />
<br />
{{Compiler error|id=0004|error=[[NameOf]] argument is not an identifier|desc=}}<br />
<br />
{{Compiler error|id=0005|error=Illegal character in name|desc=}}<br />
<br />
{{Compiler error|id=0006|error=Left type is incompatible with '[[Operator|OPERATERNAME]]'|desc=}}<br />
<br />
===Classes===<br />
;Error, 'class'<nowiki>:</nowiki> Limitor 'class name' is not a class name :<br />
<br />
;Error, Classes with [[config]]/[[globalconfig]] member variables need to specify config file. : You used a ''config'' modifier on a variable but forgot to add the class modifier ''config'' (resulting in the default INI file for your application) or ''config(*name of the INI*)''. <br />
<br />
;Error, Class '[[localized]]' keyword is no longer required : Self explanatory. The localized modifier was only necessary in early {{UE1}} games, in newer generations this is automatic implied.<br />
<br />
;Error, failed to find [[DependsOn]]/[[Implements]] class '[[Class]]' while parsing '[[Class]]' : Self explanatory. However it could be that you have made a typo or that you are referencing a [[struct]] rather than a [[class]].<br />
<br />
;Error, Script vs. class name mismatch (ClassName/FileName) : The name in the header of your class doesn't match the name of the UC file.<br />
<br />
===Variables===<br />
;Error, Instance variables are only allowed at class scope (use 'local'?) : [[Variables]] are declared using the keyword '''local''' inside functions. Variables cannot be declared at [[state]] scope.<br />
<br />
;Error, Not allowed to use '[[Variable#Modifiers_affecting_values|config]]' with object variables : Object variables cannot be made configurable. If you want to store a configurable class, material, sound, etc., consider storing it in a configurable string variable instead and using [[DynamicLoadObject]]() at runtime to load the configured object.<br />
<br />
;Error, Can't assign Const variables :<br />
<br />
;Error, Variable declaration<nowiki>:</nowiki> 'idx' already defined : trying to declare a local variable when one is defined as a function parameter. (Parameters are also local variables!)<br />
<br />
;Error, '[[RepRetry]]' is only allowed on struct properties :<br />
<br />
===States===<br />
;Error, '[[state]]'<nowiki>:</nowiki> expecting State, got Function : This was caused by calling a state '''sleep''' where sleep is a function of state. Im guessing any function previously defined can conflict with a state.<br />
<br />
;Error, '[[Ignores]]'<nowiki>:</nowiki> 'Function Name' is not a function : The Ignores statement only accepts existing functions. In other words, if you created the function within the state (instead of ignoring it), you would be able to call [[Super]].FunctionName(...) in it.<br />
<br />
===Functions===<br />
;Error, Calling a [[singular]] function within a singular function on the same object will always fail : A function with the ''singular'' modifier will only execute if the same object is not already executing another singular function, thus the compiler rejects direct calls to other singular functions.<br />
<br />
;Error, Bad function definition : This happens when you define a function with an object as the return but that object does not exist.<br />
<br />
;Error, Code space for [[function|FUNCTIONNAME]] overflowed by n bytes : There is a hard limit on the number of local variable allocations you can do per function call. When this error occurs, you stepped over that limit. You can fix it by moving some functionality and allocations to sub-function calls, but you should maybe start to question your code if you need that many allocations.<br />
<br />
===Arrays===<br />
;Error, Static arrays of dynamic arrays are not allowed : A variable has been declared with array<''type''> AND ''variablename''[n] at the same time.<br />
<br />
;Error, Invalid property or function call on a dynamic array : You might have omitted an array index expression in square brackets after the array reference. If not, see [[dynamic arrays]] for a list of (pseudo) functions and properties you can use on dynamic arrays themselves.<br />
<br />
===Typecasting===<br />
;Error, Cast from 'object name' to 'object name' is unnecessary :<br />
<br />
;Error, Cast from '[[class]]' to '[[class]]' will always fail : [[Typecasting]] from one class to another is only allowed to narrow a reference of one type to a subclass of that type. Casting to a class that is not a subclass of the current type would always return None and thus is rejected by the compiler.<br />
<br />
===Unrecognized===<br />
;Error, Unrecognized [[type]] 'class name' :<br />
<br />
;Error, Unrecognized member 'variable name' in class 'class name' : The variable does not exist in this class.<br />
<br />
===Unknown===<br />
;Error, Unknown member '[[variable]]' in struct '[[struct]]' : The variable is not declared. Check if you have forgot to declare it or if you have made a typo.<br />
<br />
;Error, Unknown Function 'function name' in 'Class package.class' :<br />
<br />
===Unexpected===<br />
;Error, Unexpected '[[defaultproperties]]' : This seems to occur when you have an end of multi-comment preceded by a line comment on the same line. See [[Compiler issues]]. Keep in mind that you can not specify default properties in code while using the UnrealEd internal script editor. Doing so will give you this error as well. To change the default properties of a class in UnrealEd, you need to type '''editdefault class=''classname''''' in the command line of the editor.<br />
{{CorrectWrong|<uscript>/* The quick brown fox jumps over the lazy dog */<br />
// ...</uscript>|<uscript>/* The quick brown fox jumps over the lazy dog */ // ...</uscript>}}<br />
<br />
;Error, Unexpected end of file at end of Class : Usually caused by an unmatched pair of braces, missing "}"<br />
<br />
;Error, Unexpected '.' following 'variable name' : accessor usage on a [[class]] scope [[variable]] that doesnt exist.<br />
<br />
===Replication===<br />
;Error, Unrecognized variable 'variable name' name in replication definition : A name in a [[replication condition]] does not correspond to any existing variable or (prior to {{UE3}}) function within the same class.<br />
<br />
===Conflicts===<br />
;Error, 'Function Name' conflicts with 'Function Package.Class<nowiki>:</nowiki>FunctionName' :<br />
<br />
;Error, Redefinition of '[[function]] FUNCNAME' differs from original in [[class|CLASSNAME]] : You either want to override a function but the number or type of parameters in the definition of the parent class differs from your redefinition, or you accidentally chose a name for your function that is already used by a super class, so you will wish to choose another unambiguous name.<br />
<br />
===Bad or missing expression===<br />
;Error, Bad or missing expression in parenthesis for '='<br />
<br />
;Error, Bad or missing expression in parenthesis for Following '&&'<br />
<br />
;Error, Bad or missing expression in '[[If]]' : a function in an if statement does not return a type.<br />
<br />
;Error, Bad or missing expression in Call to '[[Function]]', parameter ''number'' :<br />
<br />
;Error, Bad or missing expression for token<nowiki>:</nowiki> '[[Function]]', in '[[Return]]' :<br />
<br />
;Error, Bad or missing expression for token<nowiki>:</nowiki> '[[Variable]]', in '[[If]]' : To note in this case the variable was an actor reference.<br />
<br />
;Error, Bad or missing expression for token<nowiki>:</nowiki> '[[Variable]]', in Call to '[[Function]]', parameter X :<br />
<br />
;Error, Bad or missing expression after '[[Operator|OPERATORNAME]]'<br />
;Error, Bad or missing expression after '[[Operator|OPERATORNAME]]'<nowiki>:</nowiki> '[[Variable|VARIABLENAME]]' : + being an incorrect operator usage? '&&'<br />
<br />
;Error, '[[type]]' conversion<nowiki>:</nowiki> Bad or missing expression<br />
<br />
;Error, Bad or missing expression in '[[NameOf]]'<br />
<br />
;Error, 'class name'<nowiki>:</nowiki> Bad command or expression :<br />
<br />
===Missing===<br />
;Error, Missing 'function' : Declared a function modifier without a function, defined a function type before function.<br />
{{CorrectWrong|<uscript>final function int FuncName()</uscript>|<br />
<uscript>final int FuncName() or final int function FuncName()</uscript>}} <br />
<br />
;Error, Missing ')' in 'foreach array' : The variable inside the brackets of a foreach loop is not defined.<br />
<br />
;Error, Missing ';' before 'variable name' : The variable you are trying to access through a typecast is not defined.<br />
<br />
;Error, Missing ';' before ')' : End of line expected before the character.<br />
{{CorrectWrong|<uscript>...<br />
{<br />
a = b;<br />
}</uscript>|<uscript>...<br />
{<br />
a = b<br />
}</uscript>}} <br />
<br />
;Error, ImportText (''[[struct]]'')<nowiki>:</nowiki> Missing closing parenthesis<nowiki>:</nowiki>(''member1''='value',''member2='value'))<br />
<br />
;Error, Missing variable name : Pretty sure this is caused by using a class limitor on an interface like so, var interface<goo> foo;<br />
<br />
===Static Functions===<br />
;Error, Can't call instance functions from within static functions : [[Static Function|Static functions]] can only call other static functions directly. Additionally this can happen if you are trying to call a non-static function via the "Class.static.FunctionName" call modifier.<br />
<br />
;Error, You can only access default values of variables here : Tried to assign a non [[default variable]] a value, using a non [[default variable]] in a statement, assigning a variable a value from another that is not a default variable. There are instances where you can access non default variables in [[Static Function|Static functions]], if the variable is part of the function definition, a local variable.<br />
<br />
===Mismatch===<br />
;Error, Call to '[[function|FUNCTIONNAME]]'<nowiki>:</nowiki> type mismatch in parameter NUMBER<br />
;Error, Type mismatch in Call to '[[function|FUNCTIONNAME]]', parameter ''number'' : the [[type]] of [[variable]] being passed to the function <br />
parameter number specified is incorrect.<br />
<br />
;Error, Type mismatch in '=' : you probably wanted to make a [[bool]]ean compare "==" but ended up assigning something to a variable.<br />
<br />
;Error, [[Const]] mismatch with '+' :<br />
<br />
;Error, Type mismatch in array index :<br />
<br />
==Warnings==<br />
;Warning, Unresolved reference to Class 'class name' :<br />
<br />
;Warning, Unresolved reference to '''object'''<br />
<br />
;Warning, Function parameter<nowiki>:</nowiki> 'function name' conflicts with previously defined field in 'class name' :<br />
<br />
;Warning, ''[[function]]''<nowiki>:</nowiki> Missing return value : a function with a return type has no 'return' that could be reached, for example if the only return is in an if-block and thus can't be accessed in all cases.<br />
<br />
;Warning, Using a non-qualified name (would have) found<nowiki>:</nowiki> object package.group.group.name<br />
<br />
;Warning, '''friendly operator name'''_'''TypeNameTypeName'''<nowiki>:</nowiki> Missing return value : This is similar to function not having a return value but is the operator version, UScript supports operator overloading so the 'friendly operator name''' will be a reference to a table within the engine $ being Concat as an example.<br />
<br />
;Warning, Class ''ClassName'' can't bind to DLL ''DLLPath'' : The DLL that should be bound to either doesn't exist in the Win32\UserCode directory or was compiled wrong, for example on another system with debug settings (they only work on the system they were compiled on).<br />
<br />
;Warning, Variable declaration<nowiki>:</nowiki> 'VARIABLENAME' conflicts with previously defined field in 'CLASSNAME' : You should not redefine existing variables in subclasses using the ''var'' or ''local'' declaration since the variable is already available from the parent class.<br />
<br />
;Warning, 'identifier' obscures 'identifier' in base class 'OBJECTNAME' :<br />
<br />
;Warning, Variable is declared with '[[SerializeText]]' but this keyword only has meaning for [[Native]] variables :<br />
<br />
===Local Variables===<br />
;Warning, 'variable name' <nowiki>:</nowiki> unreferenced local variable : A variable is declared within a function and never assigned a value.<br />
<br />
;Warning, 'variable name'<nowiki>:</nowiki> unused local variable : A local variable was declared and maybe the function even assigns a value to it, but the value is never accessed elsewhere in the function. (Functions returning a value need not assign that value to a variable, in case you were wondering.)<br />
<br />
;Warning, 'variable name' <nowiki>:</nowiki> local variable used before assigned a value : A variable is referenced before it is assigned a value, which means it'll return the default value for that type, whether that is what you are looking for or not. This could be conditionally incorrect, the compiler doesn't check to see in which order things are carried out so it could in fact be wrong, hence only a warning.<br />
<br />
===Replication===<br />
;Warning, Reliabe/Unreliable keywords are no longer used in 'replication {}': Those keywords only apply to function replication and are function modifiers in {{UE3}}.<br />
<br />
===Default Properties===<br />
;Warning, Import failed for 'variable name'<nowiki>:</nowiki> property is config (Check to see if the property is listed in the DefaultProperties. It should only be listed in the specific .ini/.int file) : It was tried to assign a default value to a variable that was declared [[config]]. Such a variable is supposed to read it's value always from the associated [[udn3:ConfigurationFiles|INI]] file, so it doesn't make sense to assign it in code and not there.<br />
<br />
;Warning, Unknown property in defaults<nowiki>:</nowiki> 'line from defaultproperties block' : A property in the defaults is not a defined variable.<br />
<br />
;Warning, Invalid property value in defaults<nowiki>:</nowiki> ''property''=''value'' : A property in the defaults is not a defined variable.<br />
<br />
;Warning, redundant data<nowiki>:</nowiki> 'line from defaultproperties block' : There can only be one assignment for a property per class definition, so you probably have a duplicate in the DefaultProperties.<br />
<br />
;Warning, ObjectProperty package.class.property<nowiki>:</nowiki> unresolved reference to object'package.group.object' : The specified object could not be found in the package.<br />
<br />
;Warning, Unable to parse parameter value '(''member1''=''value''))' in defaultproperties array operation<nowiki>:</nowiki> ''array<struct>''.add((''member1''=''value'',''member2''=''value'')) : A value for one of the members in your struct causes an error. This error may be given later or earlier on in the compiler output. For example, if a member contains a class reference to a class that the compiler cannot find, it will give this warning but also an unresolved reference warning and a property import error.<br />
<br />
==Failure==<br />
;Failed to load 'object package.group.name'<nowiki>:</nowiki> Failed to find object 'object package.group.name'<br />
<br />
[[Category:Compiler]] [[Category:Compiler errors]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha?diff=45072User:Crusha2012-03-16T08:37:39Z<p>Crusha: </p>
<hr />
<div>=About Me=<br />
<br />
The full nickname would be Crusha K. Rool, derived from that crocodile-villain from "Donkey Kong", but I prefer Crusha after all.<br />
<br />
Since I am dedicated and addicted to UT2004's Onslaught gametype, I once started to get myself familiar with the Unreal Editor 3 and stuck with it down to the present day.<br />
<br />
<br />
<br />
I am studying computer science at the moment and work in my spare time as coder for UDK projects, currently for Firehazard Studio.<br />
<br />
Whenever I have some time between that, I try to improve my UltimateMappingTools (see below) or even do some mapping to help the UT2004 community to keep this marvelous game alive for more years to come.<br />
<br />
<br />
<br />
=Projects=<br />
<br />
==UE2==<br />
===UltimateMappingTools===<br />
<br />
UltimateMappingTools is a toolset started by me with the goal to gather all useful UT2k4-actors out there in one package to give level designers everything they could ever wish to do right at their hand. Several coders have contributed their work to it. I say "thank you" to all of them.<br />
<br />
See this page for a full reference: [[User:Crusha/UltimateMappingTools|UltimateMappingTools]]<br />
<br />
<br />
===DynamicWeather===<br />
<br />
DynamicWeather is a toolset by MarZer that contains a whole bunch of actors to put more atmosphere into maps by controlling the natural forces. It is also included in my UltimateMappingTools.<br />
<br />
I am '''NOT''' the creator of this actors, they are all done by '''Mark 'MarZer' Gillard'''. I just put the descriptions on my User page because User pages have some functionality for sub-pages that doesn't exist in other namespaces.<br />
<br />
See this page for a full reference: [[User:Crusha/DynamicWeather|DynamicWeather]]<br />
<br />
<br />
==UE3==<br />
===UltimateSaveSystem===<br />
<br />
UltimateSaveSystem is a ready-to-use solution for writing and reading variables from UnrealScript or Kismet into and from binary files, using unique names to find the value in the file. It is capable of saving Integer, Float, Boolean, Vector and String variables (with unlimited length).<br />
<br />
<br />
See this page for a full reference: [[User:Crusha/UltimateSaveSystem|UltimateSaveSystem]]<br />
<br />
Note: Epic provided their own solution in the meanwhile, so you should rather use their BasicSaveObject() and BasicLoadObject() as those are compatible with every platform the UDK deploys to and don't rely on DLLBind.<br />
<br />
<br />
===GUIFramework===<br />
<br />
This is a framework for creating menus, buttons and other components entirely in UnrealScript with the Canvas instead of having to rely on Scaleform, which requires expensive third-party tools such as Adobe Flash Professional.<br />
<br />
I started this on my own and turned it into an open source SVN repository to improve it with anyone in the community willing to contribute.<br />
<br />
<br />
You can download, contribute and find more information about it [http://code.google.com/p/unrealscript-gui-framework/ here].<br />
<br />
=Maps=<br />
I early specialized in technically and gameplay-related fine-tuning existing maps (with the author's permission) rather than creating much own stuff, so most of the maps in my "portfolio" owe their being to other guys.<br />
<br />
==UT2004==<br />
===ONS-Rail===<br />
[http://forums.epicgames.com/showthread.php?t=724229 Original Thread]<br />
<br />
This is a conversion of CTF-Rail to ONS, featuring a lot of NV-mayhem in a narrow corridor-like map with three different levels for Z-axis gameplay and toggleable doors at the Prime Nodes.<br />
<br />
===ONS-{DX}Ameliorate===<br />
[http://forums.epicgames.com/showthread.php?t=727952 Original Thread]<br />
<br />
This is a conversion of CTF-Ameliorate to ONS, featuring two opposed residences in a sunset scene with a central island surrounded by a canalization and 4 storage halls. The map is mainly NV, except four Mantas.<br />
<br />
===ONS-SavoIsland-K===<br />
[http://forums.epicgames.com/showthread.php?t=728055 Original Thread]<br />
<br />
This is a conversion of JB-SavoIsland to ONS and a co-production with Kentaro. The NV-match takes place on a beautiful South Sea island that allows to choose between a fight along the flat beaches or through the hilly inland.<br />
<br />
===ONS-Sektor9-Veni-Vidi-Vici===<br />
[http://www.gametracker.com/clan/freelancer/forum.php?thread=29819 Original Thread]<br />
<br />
This map was mainly created by VK especially for our ONS-server, but I put a lot of technical and visual fine-tuning into it, so I think it's worth being mentioned here.<br />
Gameplay is crazy, many )o(-vehicles and superweapons and narrow space.<br />
<br />
===ONS-Sektor8-The-Battle-Continues===<br />
[http://www.gametracker.com/clan/freelancer/forum.php?thread=32536 Original Thread]<br />
<br />
Again another map from VK for our server to which I contributed much fine-tuning. This one is not as narrow as the other one (actually it allows a lot of distance fights in vehicles and Z-axis gameplay), but is not less chaotic. ;)<br />
<br />
===ONS-Downtown===<br />
[http://forums.epicgames.com/showthread.php?t=737300 Original Thread]<br />
<br />
A rebuild of the UT3-map WAR-TankCrossing for ONS from scratch. The BSP was done by Sanch3z, following the original as accurately as possible, I was responsible for everything else (StaticMeshes, lighting, bot paths, pickups, etc.).<br />
<br />
The map uses UltimateDestructibleEnvironment from my MappingTools for destroyable barricades to achieve the same effect as in the original.<br />
<br />
===ONS-TankCrossing===<br />
[http://forums.epicgames.com/showthread.php?t=743195 Original Thread]<br />
<br />
A rebuild of the UT3-map WAR-TankCrossing for ONS from scratch. The map is still in alpha phase but will feature some intense fights about the control of the single Center Node and the escorting of a team's tank to the enemy PowerCore.<br />
<br />
===ONS-GlobeTrotter===<br />
An NV-map that currently only exists as concept. It will be one of the very few maps that makes excessive use of the Escher Physics Mutator (and thus won't work with any bots).<br />
<br />
<br />
This was only a small selection from the map's I've been working on, but the other's don't have that many noticeable changes or are not supposed <br />
<br />
<br />
<br />
=Contact=<br />
You can contact me in these forums:<br />
<br />
[http://www.gametracker.com/crusha_k_rool/ Gametracker]<br />
<br />
[http://www.unrealed.info/forum/member.php?u=2140 UnrealEd.info (German site)]<br />
<br />
[http://ut2004.titaninternet.co.uk/forums/member.php?u=1873 Titan Onslaught]<br />
<br />
[http://forum.omnipotents.com/member.php?u=1703 Omnip)o(tents]<br />
<br />
[http://www.vehiclemasters.co.uk/member.php?u=501 Vehicle Masters]<br />
<br />
[http://forums.epicgames.com/member.php?u=1387267 Epic Games Forums]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateONSFactory?diff=44753User:Crusha/UltimateMappingTools/UltimateONSFactory2011-11-14T20:02:04Z<p>Crusha: Fixed some red links.</p>
<hr />
<div>=UltimateONSFactory=<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work.<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail. Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially. Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
==Properties==<br />
===Property group 'Events'===<br />
====PreSpawnEvent====<br />
'''Type:''' [[name]]<br />
<br />
Event to trigger before spawn. Not activated when the vehicle was trigger-spawned.<br />
<br />
===Property group 'ONSVehicleFactory'===<br />
====BlueTeamRotation====<br />
'''Type:''' [[int]]<br />
<br />
If bReverseBlueTeamDirection, the Vehicle will not turn by 180 degrees but by this value.<br />
<br />
8192 = 45°; 16384 = 90°; 32768 = 180°; etc..<br />
Negative values will rotate in the opposite direction.<br />
<br />
===Property group 'UltimateONSFactory'===<br />
====bCrushable====<br />
'''Type:''' [[bool]]<br />
<br />
Allow spawning over colliding actors.<br />
<br />
====bEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Factory is triggered "on" at the beginning.<br />
<br />
'''Default value:''' True<br />
<br />
====bIndependentFactory====<br />
'''Type:''' [[bool]]<br />
<br />
PowerNode has no influence on the factory's activity or team number.<br />
<br />
====bRandomFlip====<br />
'''Type:''' [[bool]]<br />
<br />
Neutral vehicles may face in BlueTeamRotation.<br />
<br />
====bTriggeredSpawn====<br />
'''Type:''' [[bool]]<br />
<br />
If True, this factory will immediately spawn a vehicle when being triggered.<br />
<br />
If False, triggering will enable the factory and untriggering will disable it.<br />
<br />
====bUniqueVehicle====<br />
'''Type:''' [[bool]]<br />
<br />
Factory spawns only a limited number of vehicles, there will be no second one when they are destroyed.<br />
MaxVehicleCount determines the number of vehicles that can be spawned.<br />
<br />
====bUseStaticTeams====<br />
'''Type:''' [[bool]]<br />
<br />
Factory works only for one team.<br />
<br />
====NotLockedForTeam====<br />
'''Type:''' [[byte]]<br />
<br />
This will always lock the Vehicles for the TeamNum that is NOT entered here.<br />
255 is normal ONS, 0 will always lock this for Blue, 1 always for Red.<br />
<br />
(Hack for Minigun turrets - it makes pretty much only sense to use this with them at the team's Core)<br />
<br />
'''Default value:''' 255<br />
<br />
====PreSpawnTime====<br />
'''Type:''' [[float]]<br />
<br />
Time before spawn to trigger PrepSpawn-Event and -Effect.<br />
<br />
'''Default value:''' 2.0<br />
<br />
====RetrySpawnTime====<br />
'''Type:''' [[float]]<br />
<br />
Interval to wait if spawn area is blocked.<br />
<br />
'''Default value:''' 1.0<br />
<br />
====StaticTeamNum====<br />
'''Type:''' [[byte]]<br />
<br />
0= red, 1= blue, 255= neutral / none<br />
<br />
TeamNums are switched automatically on Reset, if necessary. This is primarily used in combination with bIndependentFactory.<br />
<br />
====VehicleListBlue====<br />
'''Type:''' [[array]]<{{tl|SpawnedVehicleProperties}}><br />
<br />
List for random vehicle spawn if blue has the factory<br />
<br />
====VehicleListRed====<br />
'''Type:''' [[array]]<{{tl|SpawnedVehicleProperties}}><br />
<br />
List for random vehicle spawn if red or neutral has the factory<br />
<br />
====VehicleSelectionType====<br />
'''Type:''' {{tl|EVehicleSelectionType}}<br />
<br />
Which method should be used to select the vehicle for spawning.<br />
<br />
===Internal variables===<br />
====bInitiallyEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Needed for Reset().<br />
<br />
====RadarRI====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateONSFactory#UltimateONSRadarHUDRI|UltimateONSRadarHUDRI]]<br />
<br />
Takes care of spawning the HUDOverlay on the client.<br />
<br />
====RandomArrayNumber====<br />
'''Type:''' [[int]]<br />
<br />
For accessing the properties of the individual vehicle<br />
<br />
====SequentialArrayNumberRed====<br />
'''Type:''' [[int]]<br />
<br />
Same, but in a sequential order.<br />
<br />
====SequentialArrayNumberBlue====<br />
'''Type:''' [[int]]<br />
<br />
Need seperate ones for Red and Blue.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor properties (UT2004)#DrawType|DrawType]]<br />
| [[UE2:Actor enums (UT2004)#EDrawType|DT_Sprite]]<br />
|}<br />
<br />
==Enums==<br />
====ESpawnSize====<br />
The size of the spawneffect particle ring around the vehicle to use.<br />
;SIZE_None :<br />
;SIZE_Scorpion :<br />
;SIZE_Manta :<br />
;SIZE_Raptor :<br />
;SIZE_Hellbender :<br />
;SIZE_Goliath :<br />
;SIZE_Leviathan :<br />
<br />
====EVehicleSelectionType====<br />
Which method should be used to select the vehicle for spawning.<br />
; VST_Random : Random from list, equal chances for everyone.<br />
; VST_Probability : Use Probability values of the vehicle, so some vehicles are more likely than others.<br />
; VST_Sequential : Always select the next entry from the list when spawning a new vehicle.<br />
; VST_OnceRandom : Random as above, just that the choice will be used for the whole match.<br />
; VST_OnceProbability : Use Probablity as above, just that the choice will be used for the whole match.<br />
<br />
==Structs==<br />
===SpawnedVehicleProperties===<br />
A load of customization and you need to do it for every entry in the list and for red and blue separately. But it pays out.<br />
; [[class]]<[[UE2:Vehicle (UT2004)|Vehicle]]> Vehicle : The vehicle that is spawned with this entry.<br />
; [[int]] Health : Give the spawned Vehicle a custom Health value. 0 will use the Vehicle's default.<br />
; [[float]] SpawnProbability : Used with bUseSpawnProbability. You can enter whatever you like, just the relative difference between the entries counts.<br />
; [[name]] VehicleSpawnedEvent : Tag to be triggered upon spawning of this particular vehicle (additionally to the one of the factory itself). The vehicle will be the instigator.<br />
; [[name]] VehicleDestroyedEvent : Tag to be triggered upon destruction of the vehicle. Vehicle must be a subclass of ONSVehicle for this to happen.<br />
; {{tl|ESpawnSize}} SpawnEffectSize : The size of the spawneffect around the vehicle to use.<br />
; [[bool]] bEjectDriver : Eject driver when vehicle gets destroyed instead of killing him.<br />
; [[bool]] bEnterringDoesNotUnlock : Vehicle is not unlocked when a player enters it.<br />
; [[float]] SpawnProtectionTime : The vehicle is shielded from any damage for this many seconds after spawn (spawn protection is lift immediately when a driver enters). 0 disables this, -1 means the vehicle is protected until someone enters it.<br />
; [[bool]] bChangeMaxDesireability : If True, use a custom MaxDesirability value to tell bots if they should use the vehicle or not.<br />
; [[float]] MaxDesireability : Default values are: Scorpion - 0.4; Hellbender - 0.5; Raptor, Cicada, Manta, SPMA, Paladin - 0.6; Goliath, Ion Tank - 0.8; Leviathan - 2.0. Go figure what matches your vehicle best.<br />
; [[bool]] bTrackVehicleOnRadar : The vehicle's location will be shown in realtime on the RadarMap.<br />
; [[bool]] bRadarVisibleToDriver : Should the vehicle be shown on the radar to it's driver? Only useful if you have a large delay between the updates and want to estimate where your team sees you on the radar.<br />
; [[bool]] bRadarNeutralWhenEmpty : If true, the vehicle is drawn with white team color when it's left.<br />
; [[bool]] bRadarHideWhenEmpty : If true, the vehicle is not drawn when it's empty.<br />
; [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI#ERadarVehicleVisibility|UltimateRadarVehicleLRI]] RadarVehicleVisibility : Here you set to which players the vehicle is shown on the RadarMap.<br />
; [[float]] RadarOwnerUpdateTime : How many seconds have to pass before the location of vehicle is updated for the owning team.<br />
; [[float]] RadarEnemyUpdateTime : Same as above, just for enemies.<br />
; [[bool]] bRadarFadeWithOwnerUpdateTime : If True, the icon on the radar map will interpolate between opaque and translucent as time passes between location updates on the radar.<br />
; [[bool]] bRadarFadeWithEnemyUpdateTime : If False, the icon will always stay fully opaque.<br />
; [[UE2:Material (UT2004)|Material]] RadarTexture : The texture that represents the vehicle on the radar. It should have an alpha channel and be set to TC_Clamp. A bunch of vehicle textures for the radar are delivered in the texture package that comes with this toolset.<br />
; [[float]] RadarTextureScale : The image will be scaled by this factor.<br />
; [[int]] RadarTextureRotationOffset : The image will be rotated by this (in Rotation Units), in case your texture doesn't face the right way (up is the direction the vehicle is driving to).<br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#PostBeginPlay|ONSVehicleFactory.PostBeginPlay]]<br />
<br />
Performs a check to notify the mapper if this actor is useless.<br />
References the one and only VehicleLRIMaster in the map. If it doesn't exist yet, a new one is spawned.<br />
Sets some inherited variables to the correct values, enables the factory if necessary and precaches all the vehicles in the array.<br />
<br />
====PostNetBeginPlay====<br />
{{code|event '''PostNetBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#PostNetBeginPlay|ONSVehicleFactory.PostNetBeginPlay]]<br />
<br />
Activates the factory, either according to the closest ONSPowerNode (uses super function) or with a fixed team number, making the factory effectively independent from a PowerNode.<br />
<br />
====SetInitialState====<br />
{{code|event '''SetInitialState''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#SetInitialState|Actor.SetInitialState]]<br />
<br />
Remove this factory from the PowerCore's dynamic 'CloseActors'-array.<br />
By doing this, destroying the closest Node will no longer disable this factory.<br />
Executing at this point makes sure that the PostNetBeginPlay() of the PowerCore has been called already.<br />
<br />
====Timer====<br />
{{code|event '''Timer''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#Timer|ONSVehicleFactory.Timer]]<br />
<br />
The main function of this actor. It handles when to call which other function.<br />
<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#Trigger|ONSVehicleFactory.Trigger]]<br />
<br />
Either enable or spawn directly if bTriggeredSpawn.<br />
<br />
====UnTrigger====<br />
{{code|event '''UnTrigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTrigger|Actor.UnTrigger]]<br />
<br />
Disable if not bTriggeredSpawn.<br />
<br />
====VehicleDestroyed====<br />
{{code|event '''VehicleDestroyed''' ([[UE2:Vehicle (UT2004)|Vehicle]]&nbsp;'''V''')}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#VehicleDestroyed|ONSVehicleFactory.VehicleDestroyed]]<br />
<br />
VehicleCount gets reduced (if wished) and the LinkedReplicationInfo for the radar is removed, if one for this vehicle existed.<br />
<br />
===Other instance functions===<br />
====Activate====<br />
{{code|function '''Activate''' ([[byte]]&nbsp;'''T''')}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#Activate|ONSVehicleFactory.Activate]]<br />
<br />
Activation depending on close Nodes.<br />
<br />
====ChooseVehicle====<br />
{{code|function '''ChooseVehicle''' ()}}<br />
<br />
Sets the VehicleClass to a Vehicle from the currently valid array. The class can be chosen randomly or sequential. In any case is RandomArrayNumber the index of the chosen entry in the array, so that we can find the matching properties for this vehicle when it's spawned.<br />
<br />
====Deactivate====<br />
{{code|function '''Deactivate''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#Deactivate|ONSVehicleFactory.Deactivate]]<br />
<br />
Deactivation depending on close Nodes.<br />
<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#Reset|Actor.Reset]]<br />
<br />
Adjust this actor if the sides are switched in ONS and deletes all remaining vehicles on the map.<br />
<br />
====SidesAreSwitched====<br />
{{code|function [[bool]]&nbsp;'''SidesAreSwitched''' ()}}<br />
<br />
Just to make the code more surveillable.<br />
<br />
====SpawnBuildEffect====<br />
{{code|function '''SpawnBuildEffect''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#SpawnBuildEffect|ONSVehicleFactory.SpawnBuildEffect]]<br />
<br />
Spawns the BuildEffect emitter.<br />
<br />
====SpawnVehicle====<br />
{{code|function '''SpawnVehicle''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#SpawnVehicle|ONSVehicleFactory.SpawnVehicle]]<br />
<br />
Spawns the chosen VehicleClass and applies the properties from the matching entry in the array. The creation of a LinkedReplicationInfo for the radar is also handled here, if necessary.<br />
<br />
If the ChooseVehicle function chose an entry with an empty vehicle class, then the Timer is set back to the length of a RespawnTime to try it again.<br />
<br />
====UpdatePrecacheMaterials====<br />
{{code|simulated function '''UpdatePrecacheMaterials''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#UpdatePrecacheMaterials|ONSVehicleFactory.UpdatePrecacheMaterials]]<br />
<br />
Loads all vehicles in the arrays into cache to have fast access during the game.<br />
<br />
====VehicleArrayPrecache====<br />
{{code|simulated function '''VehicleArrayPrecache''' ()}}<br />
<br />
Loads all vehicles in the arrays into cache to have fast access during the game.<br />
<br />
<br />
<br />
=UltimateONSRadarHUDRI=<br />
{{infobox class<br />
| class = UltimateONSRadarHUDRI<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
{{autogenerated}}<br />
<br />
Creates the HUDOverlay for the Ultimate ONS radar map. For the vehicle stuff<br />
and so on.<br />
<br />
==Properties==<br />
====bCreatedOverlay====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====bRadarMutatorEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Disable radar functionality in that case.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#NetUpdateFrequency|NetUpdateFrequency]]<br />
| 1.0<br />
|}<br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====HasRadarMutator====<br />
{{code|function [[bool]]&nbsp;'''HasRadarMutator''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
====HealDamage====<br />
{{code|function [[bool]]&nbsp;'''HealDamage''' ([[int]]&nbsp;'''Amount''', [[UE2:Controller (UT2004)|Controller]]&nbsp;'''Healer''', [[class]]<[[UE2:DamageType (UT2004)|DamageType]]>&nbsp;'''DamageType''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#HealDamage|Actor.HealDamage]]<br />
<br />
<!-- enter function description --><br />
<br />
<br />
<br />
=UltimateRadarVehicleHUDOverlay=<br />
{{infobox class<br />
| class = UltimateRadarVehicleHUDOverlay<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = HudOverlay<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
{{autogenerated}}<br />
HUDOverlay for UltimateONSFactory<br />
<br />
This Overlay displays the location of a Vehicle on the RadarMap in realtime.<br />
<br />
==Properties==<br />
====ONSHUD====<br />
'''Type:''' [[UE2:ONSHUDOnslaught (UT2004)|ONSHUDOnslaught]]<br />
<br />
<!-- enter variable description --><br />
<br />
====OnsIconScale====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====PCOwner====<br />
'''Type:''' [[UE2:PlayerController (UT2004)|PlayerController]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarPosX====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarPosY====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarRange====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarScale====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarTrans====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====VehicleLRIMaster====<br />
'''Type:''' {{cl|UltimateRadarVehicleLRIMaster}}<br />
<br />
<!-- enter variable description --><br />
<br />
==Functions==<br />
===Events===<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====bDrawRadar====<br />
{{code|simulated function [[bool]]&nbsp;'''bDrawRadar''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
====DrawRadar====<br />
{{code|simulated function '''DrawRadar''' ([[UE2:Canvas (UT2004)|Canvas]]&nbsp;'''C''', [[float]]&nbsp;'''CenterRadarPosX''', [[float]]&nbsp;'''CenterRadarPosY''', [[float]]&nbsp;'''RadarWidth''', [[UE2:Object structs (UT2004)#Vector|Object.Vector]]&nbsp;'''MapCenter''')}}<br />
<br />
<!-- enter function description --><br />
<br />
====Render====<br />
{{code|simulated function '''Render''' ([[UE2:Canvas (UT2004)|Canvas]]&nbsp;'''C''')}}<br />
<br />
'''Overrides:''' [[UE2:HudOverlay (UT2004)#Render|HudOverlay.Render]]<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha?diff=44742User:Crusha2011-11-11T12:44:06Z<p>Crusha: /* UE3 */ Added link to the GUIFramework project</p>
<hr />
<div>=About Me=<br />
<br />
The full nickname would be Crusha K. Rool, derived from that crocodile-villain from "Donkey Kong", but I prefer Crusha after all.<br />
<br />
Since I am dedicated and addicted to UT2004's Onslaught gametype, I once started to get myself familiar with the Unreal Editor 3 and stuck with it down to the present day.<br />
<br />
<br />
<br />
Currently I work with a small team on several projects. One is a yet unannounced medieval multiplayer game, another is the official sequel to a not quite unsuccessful arena-FPS from the year 2002 and the last is a small hobby project that I am doing on my own.<br />
<br />
Whenever I have some time between that, I try to finish my UltimateMappingTools (see below) to help the UT2004 community to keep this marvelous game alive for more years to come.<br />
<br />
<br />
<br />
=Projects=<br />
<br />
==UE2==<br />
===UltimateMappingTools===<br />
<br />
UltimateMappingTools is a toolset started by me with the goal to gather all useful UT2k4-actors out there in one package to give level designers everything they could ever wish to do right at their hand. Several coders have contributed their work to it. I say "thank you" to all of them.<br />
<br />
See this page for a full reference: [[User:Crusha/UltimateMappingTools|UltimateMappingTools]]<br />
<br />
<br />
===DynamicWeather===<br />
<br />
DynamicWeather is a toolset by MarZer that contains a whole bunch of actors to put more atmosphere into maps by controlling the natural forces. It is also included in my UltimateMappingTools.<br />
<br />
I am '''NOT''' the creator of this actors, they are all done by '''Mark 'MarZer' Gillard'''. I just put the descriptions on my User page because User pages have some functionality for sub-pages that doesn't exist in other namespaces.<br />
<br />
See this page for a full reference: [[User:Crusha/DynamicWeather|DynamicWeather]]<br />
<br />
<br />
==UE3==<br />
===UltimateSaveSystem===<br />
<br />
UltimateSaveSystem is a ready-to-use solution for writing and reading variables from UnrealScript or Kismet into and from binary files, using unique names to find the value in the file. It is capable of saving Integer, Float, Boolean, Vector and String variables (with unlimited length).<br />
<br />
<br />
See this page for a full reference: [[User:Crusha/UltimateSaveSystem|UltimateSaveSystem]]<br />
<br />
<br />
===GUIFramework===<br />
<br />
This is a framework for creating menus, buttons and other components entirely in UnrealScript with the Canvas instead of having to rely on Scaleform, which requires expensive third-party tools such as Adobe Flash Professional.<br />
<br />
I started this on my own and turned it into an open source SVN repository to improve it with anyone in the community willing to contribute.<br />
<br />
<br />
You can download, contribute and find more information about it [http://code.google.com/p/unrealscript-gui-framework/ here].<br />
<br />
=Maps=<br />
I early specialized in technically and gameplay-related fine-tuning existing maps (with the author's permission) rather than creating much own stuff, so most of the maps in my "portfolio" owe their being to other guys.<br />
<br />
==UT2004==<br />
===ONS-Rail===<br />
[http://forums.epicgames.com/showthread.php?t=724229 Original Thread]<br />
<br />
This is a conversion of CTF-Rail to ONS, featuring a lot of NV-mayhem in a narrow corridor-like map with three different levels for Z-axis gameplay and toggleable doors at the Prime Nodes.<br />
<br />
===ONS-{DX}Ameliorate===<br />
[http://forums.epicgames.com/showthread.php?t=727952 Original Thread]<br />
<br />
This is a conversion of CTF-Ameliorate to ONS, featuring two opposed residences in a sunset scene with a central island surrounded by a canalisation and 4 storage halls. The map is mainly NV, except four Mantas.<br />
<br />
===ONS-SavoIsland-K===<br />
[http://forums.epicgames.com/showthread.php?t=728055 Original Thread]<br />
<br />
This is a conversion of JB-SavoIsland to ONS and a co-production with Kentaro. The NV-match takes place on a beautiful South Sea island that allows to choose between a fight along the flat beaches or through the hilly inland.<br />
<br />
===ONS-Sektor9-Veni-Vidi-Vici===<br />
[http://www.gametracker.com/clan/freelancer/forum.php?thread=29819 Original Thread]<br />
<br />
This map was mainly created by VK especially for our ONS-server, but I put a lot of technical and visual fine-tuning into it, so I think it's worth being mentioned here.<br />
Gameplay is crazy, many )o(-vehicles and superweapons and narrow space.<br />
<br />
===ONS-Sektor8-The-Battle-Continues===<br />
[http://www.gametracker.com/clan/freelancer/forum.php?thread=32536 Original Thread]<br />
<br />
Again another map from VK for our server to which I contributed much fine-tuning. This one is not as narrow as the other one (actually it allows a lot of distance fights in vehicles and Z-axis gameplay), but is not less chaotic. ;)<br />
<br />
===ONS-Downtown===<br />
[http://forums.epicgames.com/showthread.php?t=737300 Original Thread]<br />
<br />
A rebuild of the UT3-map WAR-TankCrossing for ONS from scratch. The BSP was done by Sanch3z, following the original as accurately as possible, I was responsible for everything else (StaticMeshes, lighting, bot paths, pickups, etc.).<br />
<br />
The map uses UltimateDestructibleEnvironment from my MappingTools for destroyable barricades to achieve the same effect as in the original.<br />
<br />
===ONS-TankCrossing===<br />
[http://forums.epicgames.com/showthread.php?t=743195 Original Thread]<br />
<br />
A rebuild of the UT3-map WAR-TankCrossing for ONS from scratch. The map is still in alpha phase but will feature some intense fights about the control of the single Center Node and the escorting of a team's tank to the enemy PowerCore.<br />
<br />
===ONS-GlobeTrotter===<br />
An NV-map that currently only exists as concept. It will be one of the very few maps that makes excessive use of the Escher Physics Mutator (and thus won't work with any bots).<br />
<br />
<br />
This was only a small selection from the map's I've been working on, but the other's don't have that many noticeable changes or are not supposed <br />
<br />
<br />
<br />
=Contact=<br />
You can contact me in these forums:<br />
<br />
[http://www.gametracker.com/crusha_k_rool/ Gametracker]<br />
<br />
[http://www.unrealed.info/forum/member.php?u=2140 UnrealEd.info (German site)]<br />
<br />
[http://ut2004.titaninternet.co.uk/forums/member.php?u=1873 Titan Onslaught]<br />
<br />
[http://forum.omnipotents.com/member.php?u=1703 Omnip)o(tents]<br />
<br />
[http://www.vehiclemasters.co.uk/member.php?u=501 Vehicle Masters]<br />
<br />
[http://forums.epicgames.com/member.php?u=1387267 Epic Games Forums]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44730User:Crusha/UltimateMappingTools2011-10-23T15:00:05Z<p>Crusha: /* Download */ Added link to DWeather test map</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my extensive toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actor.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. But the discussion page can be used for feedback. Or simply post in one of the threads in the countless UT forums where I posted this. :)<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Download=<br />
==UltimateMappingTools==<br />
The compiled scripts and all necessary texture and mesh packages.<br />
<br />
[http://www.mediafire.com/?2aogafm2tggidc8 Download from Mediafire] (582.41 KB, Zip)<br />
<br />
==DWeather Wind Test==<br />
This is a small VCTF test arena created by MarZer in order to show off some dynamic weather effects that react to changing wind. In this example is the direction of the smoke from fireplaces influenced by the randomly changing wind direction, as well as the direction in which the twister is moving. Furthermore does the map feature Raptors that shoot powerful meteors (so you can get an idea of how devastating a real meteor hail is) as well as earthquakes that shake your view and throw you around and some weak ambient monsters and hail, which may hurt you if it happens to hit you (which is not all that likely after all).<br />
<br />
[http://www.mediafire.com/?pek49s741249548 Download from Mediafire] (588.65 KB, Zip)<br />
<br />
=Related=<br />
Not included are [[User:Wormbo/OnslaughtSpecials|Wormbo's OnslaughtSpecials]], since he maintains them himself. But they fit perfectly together with the UltimateMappingTools, so you should really get them as well. Unless you are not mapping for ONS. <br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileJumppad==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileJumppad<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UTJumpPad<br />
| parent2 = JumpPad<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can place grenades on a Jumppad and it bumps them up as well. This lets you specify projectile classes that are bumped the same way as players.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileJumppad|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileTeleporter==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can shoot through teleporters. This won't let instant hit weapons pass, but it's still nice to send rockets in to clear the other side or to shoot them after an enemy.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more information about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more information about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMapMarker==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMapMarker|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from this information. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more information about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Pickups=<br />
Some additional pickups that mappers can use.<br />
<br />
==SuperShockWeaponBase==<br />
{{infobox class<br />
| class = SuperShockWeaponBase<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = xWeaponBase<br />
| parent2 = xPickUpBase<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A simple xWeaponBase that has the SuperShockRifle set in the DefaultProperties<br />
because you can't select it just from the dropdown menu.<br />
Use and place it wisely, nobody likes unfair and frustrating maps. But ONS-BiggerBeerBattle would not nearly as fun and exciting without it.<br />
<br />
<br />
<br />
==MegaShieldPack==<br />
{{infobox class<br />
| class = MegaShieldPack<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = SuperShieldPack<br />
| parent2 = ShieldPickup<br />
| parent3 = TournamentPickup<br />
| parent4 = Pickup<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
Provides the player with 150 armor points instead of just 100.<br />
Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
It looks exactly like the SuperShieldPickup, just that it has a dark green shader instead of an orange one.<br />
<br />
<br />
<br />
==UDamagePack_Prolonged==<br />
{{infobox class<br />
| class = UDamagePack_Prolonged<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UDamagePack<br />
| parent2 = TournamentPickup<br />
| parent3 = Pickup<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Lasts 45 seconds instead of just 30 and uses a white-greyish shader for better<br />
distinction. Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Misc=<br />
Helper classes that are shared by some scripts. It's not relevant to mappers in any way.<br />
<br />
==UltimateMathAux==<br />
by Wormbo & Co.<br />
{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateMathAux|this page]] for a full reference.<br />
<br />
<br />
<br />
==UltimateRadarVehicleLRI==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A linked list of ReplicationInfos that tell the radar the position of tracked vehicles.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|this page]] for a full reference.<br />
<br />
<br />
<br />
==VehicleSpawnProtectionTimer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VehicleSpawnProtectionTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Disables spawn protection for the vehicle after a fixed amount of time after the vehicle was spawned.<br />
<br />
<br />
<br />
=TeamSpecificActors=<br />
by Jrubzjeknf (aka Nova^)<br />
<br />
These are modified versions of the default UT2k4 Actors that can be set to work for a specific team only. The associated team of the Actors is swapped in ONS on reset, if necessary. The Actors also have individual Actor icons to distinguish them from normal Actors.<br />
<br />
The latest version of these Actors is included in the UltimateMappingTools package.<br />
<br />
<br />
See [[User:Jrubzjeknf/TeamSpecificActors|Nova's User Page]] for a full reference.<br />
<br />
<br />
<br />
=DynamicWeather=<br />
by Mark 'MarZer' Gillard<br />
<br />
DynamicWeather is a toolset that contains a whole bunch of Actors to put more atmosphere into maps by controlling the natural forces.<br />
These tools are provided without support, but they are definitely awesome, so I included them. ;)<br />
<br />
<br />
See [[User:Crusha/DynamicWeather|this page]] for a full reference.<br />
<br />
<br />
<br />
=Assets=<br />
With this UltimateMappingTools.u file comes a UltimateMappingTools_Tex.utx file which holds some Actor symbols that make it easier to distinguish some of these Actors from the rest.<br />
It is automatically loaded with the .u file.<br />
<br />
Inside the UTX are also vehicle icons for the radar map that have been taken from UT3 and cleaned in GIMP, so if you hit the "Load Entire Package" button for the UltimateMappingTools_Tex.utx, you should get more icons for vehicles to be used with the radar tracking system than there are actually vehicles in UT2k4. But feel free to use your own textures if you prefer them. :)<br />
<br />
<br />
<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/UltimateMappingTools?diff=44729UltimateMappingTools2011-10-23T14:22:55Z<p>Crusha: Redirect link</p>
<hr />
<div>#REDIRECT [[User:Crusha/UltimateMappingTools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44721User:Crusha/UltimateMappingTools2011-10-14T16:02:02Z<p>Crusha: /* About this site */ It's not "upcoming" anymore. :)</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my extensive toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actor.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. But the discussion page can be used for feedback. Or simply post in one of the threads in the countless UT forums where I posted this. :)<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Download=<br />
[http://www.mediafire.com/?2aogafm2tggidc8 Download from Mediafire] (493.3 KB, Zip)<br />
<br />
<br />
<br />
=Related=<br />
Not included are [[User:Wormbo/OnslaughtSpecials|Wormbo's OnslaughtSpecials]], since he maintains them himself. But they fit perfectly together with the UltimateMappingTools, so you should really get them as well. Unless you are not mapping for ONS. <br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileJumppad==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileJumppad<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UTJumpPad<br />
| parent2 = JumpPad<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can place grenades on a Jumppad and it bumps them up as well. This lets you specify projectile classes that are bumped the same way as players.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileJumppad|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileTeleporter==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can shoot through teleporters. This won't let instant hit weapons pass, but it's still nice to send rockets in to clear the other side or to shoot them after an enemy.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more information about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more information about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMapMarker==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMapMarker|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from this information. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more information about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Pickups=<br />
Some additional pickups that mappers can use.<br />
<br />
==SuperShockWeaponBase==<br />
{{infobox class<br />
| class = SuperShockWeaponBase<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = xWeaponBase<br />
| parent2 = xPickUpBase<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A simple xWeaponBase that has the SuperShockRifle set in the DefaultProperties<br />
because you can't select it just from the dropdown menu.<br />
Use and place it wisely, nobody likes unfair and frustrating maps. But ONS-BiggerBeerBattle would not nearly as fun and exciting without it.<br />
<br />
<br />
<br />
==MegaShieldPack==<br />
{{infobox class<br />
| class = MegaShieldPack<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = SuperShieldPack<br />
| parent2 = ShieldPickup<br />
| parent3 = TournamentPickup<br />
| parent4 = Pickup<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
Provides the player with 150 armor points instead of just 100.<br />
Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
It looks exactly like the SuperShieldPickup, just that it has a dark green shader instead of an orange one.<br />
<br />
<br />
<br />
==UDamagePack_Prolonged==<br />
{{infobox class<br />
| class = UDamagePack_Prolonged<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UDamagePack<br />
| parent2 = TournamentPickup<br />
| parent3 = Pickup<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Lasts 45 seconds instead of just 30 and uses a white-greyish shader for better<br />
distinction. Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Misc=<br />
Helper classes that are shared by some scripts. It's not relevant to mappers in any way.<br />
<br />
==UltimateMathAux==<br />
by Wormbo & Co.<br />
{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateMathAux|this page]] for a full reference.<br />
<br />
<br />
<br />
==UltimateRadarVehicleLRI==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A linked list of ReplicationInfos that tell the radar the position of tracked vehicles.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|this page]] for a full reference.<br />
<br />
<br />
<br />
==VehicleSpawnProtectionTimer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VehicleSpawnProtectionTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Disables spawn protection for the vehicle after a fixed amount of time after the vehicle was spawned.<br />
<br />
<br />
<br />
=TeamSpecificActors=<br />
by Jrubzjeknf (aka Nova^)<br />
<br />
These are modified versions of the default UT2k4 Actors that can be set to work for a specific team only. The associated team of the Actors is swapped in ONS on reset, if necessary. The Actors also have individual Actor icons to distinguish them from normal Actors.<br />
<br />
The latest version of these Actors is included in the UltimateMappingTools package.<br />
<br />
<br />
See [[User:Jrubzjeknf/TeamSpecificActors|Nova's User Page]] for a full reference.<br />
<br />
<br />
<br />
=DynamicWeather=<br />
by Mark 'MarZer' Gillard<br />
<br />
DynamicWeather is a toolset that contains a whole bunch of Actors to put more atmosphere into maps by controlling the natural forces.<br />
These tools are provided without support, but they are definitely awesome, so I included them. ;)<br />
<br />
<br />
See [[User:Crusha/DynamicWeather|this page]] for a full reference.<br />
<br />
<br />
<br />
=Assets=<br />
With this UltimateMappingTools.u file comes a UltimateMappingTools_Tex.utx file which holds some Actor symbols that make it easier to distinguish some of these Actors from the rest.<br />
It is automatically loaded with the .u file.<br />
<br />
Inside the UTX are also vehicle icons for the radar map that have been taken from UT3 and cleaned in GIMP, so if you hit the "Load Entire Package" button for the UltimateMappingTools_Tex.utx, you should get more icons for vehicles to be used with the radar tracking system than there are actually vehicles in UT2k4. But feel free to use your own textures if you prefer them. :)<br />
<br />
<br />
<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44720User:Crusha/UltimateMappingTools2011-10-13T20:00:30Z<p>Crusha: Typo in a wormy cross-promotion. :></p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Download=<br />
[http://www.mediafire.com/?2aogafm2tggidc8 Download from Mediafire] (493.3 KB, Zip)<br />
<br />
<br />
<br />
=Related=<br />
Not included are [[User:Wormbo/OnslaughtSpecials|Wormbo's OnslaughtSpecials]], since he maintains them himself. But they fit perfectly together with the UltimateMappingTools, so you should really get them as well. Unless you are not mapping for ONS. <br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileJumppad==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileJumppad<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UTJumpPad<br />
| parent2 = JumpPad<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can place grenades on a Jumppad and it bumps them up as well. This lets you specify projectile classes that are bumped the same way as players.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileJumppad|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileTeleporter==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can shoot through teleporters. This won't let instant hit weapons pass, but it's still nice to send rockets in to clear the other side or to shoot them after an enemy.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more information about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more information about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMapMarker==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMapMarker|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from this information. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more information about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Pickups=<br />
Some additional pickups that mappers can use.<br />
<br />
==SuperShockWeaponBase==<br />
{{infobox class<br />
| class = SuperShockWeaponBase<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = xWeaponBase<br />
| parent2 = xPickUpBase<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A simple xWeaponBase that has the SuperShockRifle set in the DefaultProperties<br />
because you can't select it just from the dropdown menu.<br />
Use and place it wisely, nobody likes unfair and frustrating maps. But ONS-BiggerBeerBattle would not nearly as fun and exciting without it.<br />
<br />
<br />
<br />
==MegaShieldPack==<br />
{{infobox class<br />
| class = MegaShieldPack<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = SuperShieldPack<br />
| parent2 = ShieldPickup<br />
| parent3 = TournamentPickup<br />
| parent4 = Pickup<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
Provides the player with 150 armor points instead of just 100.<br />
Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
It looks exactly like the SuperShieldPickup, just that it has a dark green shader instead of an orange one.<br />
<br />
<br />
<br />
==UDamagePack_Prolonged==<br />
{{infobox class<br />
| class = UDamagePack_Prolonged<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UDamagePack<br />
| parent2 = TournamentPickup<br />
| parent3 = Pickup<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Lasts 45 seconds instead of just 30 and uses a white-greyish shader for better<br />
distinction. Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Misc=<br />
Helper classes that are shared by some scripts. It's not relevant to mappers in any way.<br />
<br />
==UltimateMathAux==<br />
by Wormbo & Co.<br />
{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateMathAux|this page]] for a full reference.<br />
<br />
<br />
<br />
==UltimateRadarVehicleLRI==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A linked list of ReplicationInfos that tell the radar the position of tracked vehicles.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|this page]] for a full reference.<br />
<br />
<br />
<br />
==VehicleSpawnProtectionTimer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VehicleSpawnProtectionTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Disables spawn protection for the vehicle after a fixed amount of time after the vehicle was spawned.<br />
<br />
<br />
<br />
=TeamSpecificActors=<br />
by Jrubzjeknf (aka Nova^)<br />
<br />
These are modified versions of the default UT2k4 Actors that can be set to work for a specific team only. The associated team of the Actors is swapped in ONS on reset, if necessary. The Actors also have individual Actor icons to distinguish them from normal Actors.<br />
<br />
The latest version of these Actors is included in the UltimateMappingTools package.<br />
<br />
<br />
See [[User:Jrubzjeknf/TeamSpecificActors|Nova's User Page]] for a full reference.<br />
<br />
<br />
<br />
=DynamicWeather=<br />
by Mark 'MarZer' Gillard<br />
<br />
DynamicWeather is a toolset that contains a whole bunch of Actors to put more atmosphere into maps by controlling the natural forces.<br />
These tools are provided without support, but they are definitely awesome, so I included them. ;)<br />
<br />
<br />
See [[User:Crusha/DynamicWeather|this page]] for a full reference.<br />
<br />
<br />
<br />
=Assets=<br />
With this UltimateMappingTools.u file comes a UltimateMappingTools_Tex.utx file which holds some Actor symbols that make it easier to distinguish some of these Actors from the rest.<br />
It is automatically loaded with the .u file.<br />
<br />
Inside the UTX are also vehicle icons for the radar map that have been taken from UT3 and cleaned in GIMP, so if you hit the "Load Entire Package" button for the UltimateMappingTools_Tex.utx, you should get more icons for vehicles to be used with the radar tracking system than there are actually vehicles in UT2k4. But feel free to use your own textures if you prefer them. :)<br />
<br />
<br />
<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44719User:Crusha/UltimateMappingTools2011-10-13T19:59:22Z<p>Crusha: Added download link (!!!!!) and links to TeamSpecificActors and DynamicWeatherActors. Also I get a warning that the page is bigger than 32 kB (33 kB), but I hope it will work out. :></p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Download=<br />
[http://www.mediafire.com/?2aogafm2tggidc8 Download from Mediafire] (493.3 KB, Zip)<br />
<br />
<br />
<br />
=Related=<br />
Not included are [[User:Wormbo/OnslaughtSpecialsWormbo's OnslaughtSpecials]], since he maintains them himself. But they fit perfectly together with the UltimateMappingTools, so you should really get them as well. Unless you are not mapping for ONS. <br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileJumppad==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileJumppad<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UTJumpPad<br />
| parent2 = JumpPad<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can place grenades on a Jumppad and it bumps them up as well. This lets you specify projectile classes that are bumped the same way as players.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileJumppad|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileTeleporter==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can shoot through teleporters. This won't let instant hit weapons pass, but it's still nice to send rockets in to clear the other side or to shoot them after an enemy.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more information about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more information about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMapMarker==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMapMarker|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from this information. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more information about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Pickups=<br />
Some additional pickups that mappers can use.<br />
<br />
==SuperShockWeaponBase==<br />
{{infobox class<br />
| class = SuperShockWeaponBase<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = xWeaponBase<br />
| parent2 = xPickUpBase<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A simple xWeaponBase that has the SuperShockRifle set in the DefaultProperties<br />
because you can't select it just from the dropdown menu.<br />
Use and place it wisely, nobody likes unfair and frustrating maps. But ONS-BiggerBeerBattle would not nearly as fun and exciting without it.<br />
<br />
<br />
<br />
==MegaShieldPack==<br />
{{infobox class<br />
| class = MegaShieldPack<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = SuperShieldPack<br />
| parent2 = ShieldPickup<br />
| parent3 = TournamentPickup<br />
| parent4 = Pickup<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
Provides the player with 150 armor points instead of just 100.<br />
Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
It looks exactly like the SuperShieldPickup, just that it has a dark green shader instead of an orange one.<br />
<br />
<br />
<br />
==UDamagePack_Prolonged==<br />
{{infobox class<br />
| class = UDamagePack_Prolonged<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UDamagePack<br />
| parent2 = TournamentPickup<br />
| parent3 = Pickup<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Lasts 45 seconds instead of just 30 and uses a white-greyish shader for better<br />
distinction. Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Misc=<br />
Helper classes that are shared by some scripts. It's not relevant to mappers in any way.<br />
<br />
==UltimateMathAux==<br />
by Wormbo & Co.<br />
{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateMathAux|this page]] for a full reference.<br />
<br />
<br />
<br />
==UltimateRadarVehicleLRI==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A linked list of ReplicationInfos that tell the radar the position of tracked vehicles.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|this page]] for a full reference.<br />
<br />
<br />
<br />
==VehicleSpawnProtectionTimer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VehicleSpawnProtectionTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Disables spawn protection for the vehicle after a fixed amount of time after the vehicle was spawned.<br />
<br />
<br />
<br />
=TeamSpecificActors=<br />
by Jrubzjeknf (aka Nova^)<br />
<br />
These are modified versions of the default UT2k4 Actors that can be set to work for a specific team only. The associated team of the Actors is swapped in ONS on reset, if necessary. The Actors also have individual Actor icons to distinguish them from normal Actors.<br />
<br />
The latest version of these Actors is included in the UltimateMappingTools package.<br />
<br />
<br />
See [[User:Jrubzjeknf/TeamSpecificActors|Nova's User Page]] for a full reference.<br />
<br />
<br />
<br />
=DynamicWeather=<br />
by Mark 'MarZer' Gillard<br />
<br />
DynamicWeather is a toolset that contains a whole bunch of Actors to put more atmosphere into maps by controlling the natural forces.<br />
These tools are provided without support, but they are definitely awesome, so I included them. ;)<br />
<br />
<br />
See [[User:Crusha/DynamicWeather|this page]] for a full reference.<br />
<br />
<br />
<br />
=Assets=<br />
With this UltimateMappingTools.u file comes a UltimateMappingTools_Tex.utx file which holds some Actor symbols that make it easier to distinguish some of these Actors from the rest.<br />
It is automatically loaded with the .u file.<br />
<br />
Inside the UTX are also vehicle icons for the radar map that have been taken from UT3 and cleaned in GIMP, so if you hit the "Load Entire Package" button for the UltimateMappingTools_Tex.utx, you should get more icons for vehicles to be used with the radar tracking system than there are actually vehicles in UT2k4. But feel free to use your own textures if you prefer them. :)<br />
<br />
<br />
<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44718User:Crusha/UltimateMappingTools2011-10-13T14:32:03Z<p>Crusha: Added asset description.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileJumppad==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileJumppad<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UTJumpPad<br />
| parent2 = JumpPad<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can place grenades on a Jumppad and it bumps them up as well. This lets you specify projectile classes that are bumped the same way as players.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileJumppad|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileTeleporter==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can shoot through teleporters. This won't let instant hit weapons pass, but it's still nice to send rockets in to clear the other side or to shoot them after an enemy.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more information about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more information about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMapMarker==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMapMarker|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from this information. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more information about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Pickups=<br />
Some additional pickups that mappers can use.<br />
<br />
==SuperShockWeaponBase==<br />
{{infobox class<br />
| class = SuperShockWeaponBase<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = xWeaponBase<br />
| parent2 = xPickUpBase<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A simple xWeaponBase that has the SuperShockRifle set in the DefaultProperties<br />
because you can't select it just from the dropdown menu.<br />
Use and place it wisely, nobody likes unfair and frustrating maps. But ONS-BiggerBeerBattle would not nearly as fun and exciting without it.<br />
<br />
<br />
<br />
==MegaShieldPack==<br />
{{infobox class<br />
| class = MegaShieldPack<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = SuperShieldPack<br />
| parent2 = ShieldPickup<br />
| parent3 = TournamentPickup<br />
| parent4 = Pickup<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
Provides the player with 150 armor points instead of just 100.<br />
Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
It looks exactly like the SuperShieldPickup, just that it has a dark green shader instead of an orange one.<br />
<br />
<br />
<br />
==UDamagePack_Prolonged==<br />
{{infobox class<br />
| class = UDamagePack_Prolonged<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UDamagePack<br />
| parent2 = TournamentPickup<br />
| parent3 = Pickup<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Lasts 45 seconds instead of just 30 and uses a white-greyish shader for better<br />
distinction. Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Misc=<br />
Helper classes that are shared by some scripts. It's not relevant to mappers in any way.<br />
<br />
==UltimateMathAux==<br />
by Wormbo & Co.<br />
{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateMathAux|this page]] for a full reference.<br />
<br />
<br />
<br />
==UltimateRadarVehicleLRI==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A linked list of ReplicationInfos that tell the radar the position of tracked vehicles.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|this page]] for a full reference.<br />
<br />
<br />
<br />
==VehicleSpawnProtectionTimer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VehicleSpawnProtectionTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Disables spawn protection for the vehicle after a fixed amount of time after the vehicle was spawned.<br />
<br />
<br />
<br />
=Assets=<br />
With this UltimateMappingTools.u file comes a UltimateMappingTools_Tex.utx file which holds some Actor symbols that make it easier to distinguish some of these Actors from the rest.<br />
It is automatically loaded with the .u file.<br />
<br />
Inside the UTX are also vehicle icons for the radar map that have been taken from UT3 and cleaned in GIMP, so if you hit the "Load Entire Package" button for the UltimateMappingTools_Tex.utx, you should get more icons for vehicles to be used with the radar tracking system than there are actually vehicles in UT2k4. But feel free to use your own textures if you prefer them. :)<br />
<br />
<br />
<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateMathAux?diff=44717User:Crusha/UltimateMappingTools/UltimateMathAux2011-10-13T14:25:55Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
==Static functions==<br />
====ArcTan====<br />
{{code|static final function [[float]]&nbsp;'''ArcTan''' ([[float]]&nbsp;'''A''')}}<br />
<br />
The one-parameter version. By Wormbo.<br />
<br />
====VSizeSq====<br />
{{code|static final function [[float]]&nbsp;'''VSizeSq''' ([[UE2:Object structs (UT2004)#Vector|Object.Vector]]&nbsp;'''A''')}}<br />
<br />
Returns the squared length of a vector. Cheaper than VSize().<br />
<br />
==Operators==<br />
====int % int====<br />
{{code|static final operator(18) [[int]]&nbsp;'''%''' ([[int]]&nbsp;'''A''', [[int]]&nbsp;'''B''')}}<br />
<br />
Modulo for integers. Courtesy of a Worm.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44716User:Crusha/UltimateMappingTools2011-10-13T14:23:16Z<p>Crusha: /* Fix */ Merged section for NIV and NLCV.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileJumppad==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileJumppad<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UTJumpPad<br />
| parent2 = JumpPad<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can place grenades on a Jumppad and it bumps them up as well. This lets you specify projectile classes that are bumped the same way as players.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileJumppad|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileTeleporter==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can shoot through teleporters. This won't let instant hit weapons pass, but it's still nice to send rockets in to clear the other side or to shoot them after an enemy.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more information about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more information about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMapMarker==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMapMarker|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from this information. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more information about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Pickups=<br />
Some additional pickups that mappers can use.<br />
<br />
==SuperShockWeaponBase==<br />
{{infobox class<br />
| class = SuperShockWeaponBase<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = xWeaponBase<br />
| parent2 = xPickUpBase<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A simple xWeaponBase that has the SuperShockRifle set in the DefaultProperties<br />
because you can't select it just from the dropdown menu.<br />
Use and place it wisely, nobody likes unfair and frustrating maps. But ONS-BiggerBeerBattle would not nearly as fun and exciting without it.<br />
<br />
<br />
<br />
==MegaShieldPack==<br />
{{infobox class<br />
| class = MegaShieldPack<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = SuperShieldPack<br />
| parent2 = ShieldPickup<br />
| parent3 = TournamentPickup<br />
| parent4 = Pickup<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
Provides the player with 150 armor points instead of just 100.<br />
Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
It looks exactly like the SuperShieldPickup, just that it has a dark green shader instead of an orange one.<br />
<br />
<br />
<br />
==UDamagePack_Prolonged==<br />
{{infobox class<br />
| class = UDamagePack_Prolonged<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UDamagePack<br />
| parent2 = TournamentPickup<br />
| parent3 = Pickup<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Lasts 45 seconds instead of just 30 and uses a white-greyish shader for better<br />
distinction. Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Misc=<br />
Helper classes that are shared by some scripts. It's not relevant to mappers in any way.<br />
<br />
==UltimateMathAux==<br />
by Wormbo & Co.<br />
{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateMathAux|this page]] for a full reference.<br />
<br />
<br />
<br />
==UltimateRadarVehicleLRI==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A linked list of ReplicationInfos that tell the radar the position of tracked vehicles.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|this page]] for a full reference.<br />
<br />
<br />
<br />
==VehicleSpawnProtectionTimer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VehicleSpawnProtectionTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Disables spawn protection for the vehicle after a fixed amount of time after the vehicle was spawned.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/NetworkImportanceVolume?diff=44715User:Crusha/UltimateMappingTools/NetworkImportanceVolume2011-10-13T14:21:57Z<p>Crusha: Fixed.</p>
<hr />
<div>=NetworkImportanceVolume=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Forces all Actors inside to be always relevant to network clients. Keep this<br />
Volume of a reasonable size.<br />
This should be used with an OnlineCameraTextureClient because it makes everything<br />
in it relevant to the player, also if he can actually only see the place<br />
through the camera.<br />
<br />
==Properties==<br />
===Property group 'NetworkImportanceVolume'===<br />
====bMakeInitialActorsAlwaysRelevant====<br />
'''Type:''' [[bool]]<br />
<br />
All Actors that are inside at the beginning of the match will be made relavant as well. This is just a fail-safe, in case Touch only gets called for stuff that enters new.<br />
<br />
====NetworkLinkedClientVolumeTag====<br />
'''Type:''' [[name]]<br />
<br />
Tag of all NetworkLinkedClientVolumes that are associated with this Volume.<br />
<br />
====RelevantClasses====<br />
'''Type:''' [[array]]<[[class]]<[[UE2:Actor (UT2004)|Actor]]> ><br />
<br />
Anything special you want to make relevant? Pawn and Projectile should be enough otherwise.<br />
<br />
===Internal variables===<br />
====bEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RelevantLinkedClientVolumes====<br />
'''Type:''' [[int]]<br />
<br />
<!-- enter variable description --><br />
<br />
====TemporaryRelevantActors====<br />
'''Type:''' [[array]]<[[UE2:Actor (UT2004)|Actor]]><br />
<br />
<!-- enter variable description --><br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Volume (UT2004)#PostBeginPlay|Volume.PostBeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====Touch====<br />
{{code|event '''Touch''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Touch|Actor.Touch]]<br />
<br />
<!-- enter event description --><br />
<br />
====UnTouch====<br />
{{code|event '''UnTouch''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTouch|Actor.UnTouch]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====CheckClassRelevance====<br />
{{code|function [[bool]]&nbsp;'''CheckClassRelevance''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''A''')}}<br />
<br />
<!-- enter function description --><br />
<br />
====UpdateVolume====<br />
{{code|singular function '''UpdateVolume''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
<br />
<br />
<br />
=NetworkLinkedClientVolume=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only<br />
active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an<br />
OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players.<br />
<br />
==Properties==<br />
===Property group 'NetworkLinkedClientVolume'===<br />
====UpdateTime====<br />
'''Type:''' [[float]]<br />
<br />
How often this checks for PlayerControllers in it.<br />
<br />
'''Default value:''' 5.0<br />
<br />
===Internal variables===<br />
====bHasRelevantPlayers====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====bOldRelevantPlayers====<br />
'''Type:''' [[bool]]<br />
<br />
Remember if we had players at the last check.<br />
<br />
====MyTimer====<br />
'''Type:''' [[UE2:VolumeTimer (UT2004)|VolumeTimer]]<br />
<br />
<!-- enter variable description --><br />
<br />
====ParentNIVolume====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|NetworkImportanceVolume]]<br />
<br />
<!-- enter variable description --><br />
<br />
==Functions==<br />
===Events===<br />
====SetInitialState====<br />
{{code|event '''SetInitialState''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#SetInitialState|Actor.SetInitialState]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====TimerPop====<br />
{{code|function '''TimerPop''' ([[UE2:VolumeTimer (UT2004)|VolumeTimer]]&nbsp;'''T''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#TimerPop|Actor.TimerPop]]<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/NetworkImportanceVolume?diff=44714User:Crusha/UltimateMappingTools/NetworkImportanceVolume2011-10-13T14:21:23Z<p>Crusha: First revision of page. Checked for correctness but still a lot autogenerated.</p>
<hr />
<div>=NetworkImportanceVolume=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Forces all Actors inside to be always relevant to network clients. Keep this<br />
Volume of a reasonable size.<br />
This should be used with an OnlineCameraTextureClient because it makes everything<br />
in it relevant to the player, also if he can actually only see the place<br />
through the camera.<br />
<br />
==Properties==<br />
===Property group 'NetworkImportanceVolume'===<br />
====bMakeInitialActorsAlwaysRelevant====<br />
'''Type:''' [[bool]]<br />
<br />
All Actors that are inside at the beginning of the match will be made relavant as well. This is just a fail-safe, in case Touch only gets called for stuff that enters new.<br />
<br />
====NetworkLinkedClientVolumeTag====<br />
'''Type:''' [[name]]<br />
<br />
Tag of all NetworkLinkedClientVolumes that are associated with this Volume.<br />
<br />
====RelevantClasses====<br />
'''Type:''' [[array]]<[[class]]<[[UE2:Actor (UT2004)|Actor]]> ><br />
<br />
Anything special you want to make relevant? Pawn and Projectile should be enough otherwise.<br />
<br />
===Internal variables===<br />
====bEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RelevantLinkedClientVolumes====<br />
'''Type:''' [[int]]<br />
<br />
<!-- enter variable description --><br />
<br />
====TemporaryRelevantActors====<br />
'''Type:''' [[array]]<[[UE2:Actor (UT2004)|Actor]]><br />
<br />
<!-- enter variable description --><br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Volume (UT2004)#PostBeginPlay|Volume.PostBeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====Touch====<br />
{{code|event '''Touch''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Touch|Actor.Touch]]<br />
<br />
<!-- enter event description --><br />
<br />
====UnTouch====<br />
{{code|event '''UnTouch''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTouch|Actor.UnTouch]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====CheckClassRelevance====<br />
{{code|function [[bool]]&nbsp;'''CheckClassRelevance''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''A''')}}<br />
<br />
<!-- enter function description --><br />
<br />
====UpdateVolume====<br />
{{code|singular function '''UpdateVolume''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
<br />
<br />
<br />
=NetworkLinkedClientVolume=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only<br />
active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an<br />
OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players.<br />
<br />
==Properties==<br />
===Property group 'NetworkLinkedClientVolume'===<br />
====UpdateTime====<br />
'''Type:''' [[float]]<br />
<br />
How often this checks for PlayerControllers in it.<br />
<br />
'''Default value:''' 5.0<br />
<br />
===Internal variables===<br />
====bHasRelevantPlayers====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====bOldRelevantPlayers====<br />
'''Type:''' [[bool]]<br />
<br />
Remember if we had players at the last check.<br />
<br />
====MyTimer====<br />
'''Type:''' [[UE2:VolumeTimer (UT2004)|VolumeTimer]]<br />
<br />
<!-- enter variable description --><br />
<br />
====ParentNIVolume====<br />
'''Type:''' {{cl|NetworkImportanceVolume}}<br />
<br />
<!-- enter variable description --><br />
<br />
==Functions==<br />
===Events===<br />
====SetInitialState====<br />
{{code|event '''SetInitialState''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#SetInitialState|Actor.SetInitialState]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====TimerPop====<br />
{{code|function '''TimerPop''' ([[UE2:VolumeTimer (UT2004)|VolumeTimer]]&nbsp;'''T''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#TimerPop|Actor.TimerPop]]<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/VIPlayerEventGate?diff=44713User:Crusha/UltimateMappingTools/VIPlayerEventGate2011-10-13T14:16:29Z<p>Crusha: Updated to newest version.</p>
<hr />
<div>=VIPlayerEventGate=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about<br />
the Instigator of this Event. It will (un)trigger the next Event, depending on<br />
what the result of the check is.<br />
<br />
==Properties==<br />
===Property group 'Events'===<br />
====BlacklistEvent====<br />
'''Type:''' [[name]]<br />
<br />
The optional event that is (un)triggered if the Instigator is in the BlackList.<br />
<br />
====NoMatchEvent====<br />
'''Type:''' [[name]]<br />
<br />
The optional event that is (un)triggered if the Instigator is not in the WhiteList.<br />
<br />
===Property group 'VIPlayerEventGate'===<br />
====bKillWarezPlayers====<br />
'''Type:''' [[bool]]<br />
<br />
Kill the Instigator immediately, if he's using a demo CD-key. Otherwise nothing happens, no Event will be triggered at all.<br />
<br />
====Blacklist====<br />
'''Type:''' [[array]]<{{tl|_PlayerProperties}}><br />
<br />
'''[[Variables#Modifiers|Modifiers]]:''' private<br />
<br />
The normal event will not be called for players matching these criteria. Instead will the BlacklistEvent be called.<br />
<br />
====Whitelist====<br />
'''Type:''' [[array]]<{{tl|_PlayerProperties}}><br />
<br />
'''[[Variables#Modifiers|Modifiers]]:''' private<br />
<br />
The Instigators with these criteria trigger the default Event.<br />
<br />
===Internal variables===<br />
====WAREZ_ID====<br />
'''Type:''' [[string]]<br />
<br />
'''[[Variables#Modifiers|Modifiers]]:''' const<br />
<br />
The hash of the demo key.<br />
<br />
'''Default value:''' "238c7dd4ec4a065e2314c1c8b4d41ca6"<br />
<br />
==Enums==<br />
====ECheckResult====<br />
What the result of the check can/must be to be valid.<br />
<br />
==Structs==<br />
===_PlayerProperties===<br />
All these criteria per array entry have to be valid at once.<br />
; [[string]] PlayerName : This string must be contained in the Instigator's name. Leaving this blank disables the criterium.<br />
; [[bool]] bCheckExactName : Instigator's name must be EXACTLY the one entered in the PlayerName-field. (Unless the field is blank)<br />
; {{tl|ECheckResult}} MustBeAdmin : Player must be logged in with server admin rights.<br />
; {{tl|ECheckResult}} MustBeBot : Player must be a bot.<br />
; [[bool]] bVehicleCheck : True to check whether the Instigator is in the RequiredVehicle, False to ignore this criteria.<br />
; [[class]]<[[UE2:Vehicle (UT2004)|Vehicle]]> RequiredVehicle : The Instigator must be in this vehicle. None = must go by foot ; Vehicle = can be any vehicle.<br />
; [[string]] PlayerID : Instigator needs to have this exact sequence of characters somewhere in his hash ID. The longer the sequence, the less the chance of a false-positive, but you should never ever put your full ID there. It's really hard if not nearly impossible to bruteforce the MD5 hash back into the original key but who knows what people do when they have too much time and bad intentions.<br />
; [[int]] MinimumRequiredScore : Instigator needs to have at least this much points. Enter a very low value to let everyone pass this check. ;)<br />
; [[int]] TeamIndex : Instigator needs to be in this specific team. 0= red, 1= blue, 255= disable check<br />
<br />
==Functions==<br />
===Events===<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Trigger|Actor.Trigger]]<br />
<br />
Let's call the check.<br />
<br />
====UnTrigger====<br />
{{code|event '''UnTrigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTrigger|Actor.UnTrigger]]<br />
<br />
Let's call the Check.<br />
<br />
===Other instance functions===<br />
====PerformCheck====<br />
{{code|function [[bool]]&nbsp;'''PerformCheck''' ([[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''Instigator''', [[bool]]&nbsp;'''bBlacklist''')}}<br />
<br />
Run all the criteria checks on the Instigator.<br />
<br />
<br />
<br />
=Author comments=<br />
This actor is supposed to allow authorized personnel like Admins, clan members or the mapper himself to cause certain Events in the map, what can become pretty handy in conjunction with other actors of my tool set.<br />
<br />
However, this actor is basically also a way to let the mapper do certain things to certain players which might not be fair, for example healing one kind of players and keeping the other kind of players from using a certain door, etc.<br />
<br />
There are many ways how such a thing can be abused, but I follow the rule that I just offer you the tools and it's about you what you do with them. Keep in mind that players won't play your map if they feel like you give certain players advantages over the others and there is nothing they can do about it.<br />
No Admin will put such a map up in which you abuse this tool, unless he can bear to become a pretty empty server quickly.<br />
<br />
<br />
I also added the restriction to distinguish players with the demo CD-key. Ok, killing them might be too hard, that's why I integrated it optionally, but I somehow found that it would be fair that those who paid for the game has the right to play it in it's full spectrum while the other guys have exceeded their testing time and shouldn't get all the features. Seriously, just buy the game if you haven't done yet.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/CountdownEventGate?diff=44712User:Crusha/UltimateMappingTools/CountdownEventGate2011-10-13T14:04:42Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>=CountdownEventGate=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
The condition mustn't be untriggered in that time, or the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again to<br />
continue the current countdown.<br />
<br />
==Properties==<br />
===Property group 'CountdownEventGate'===<br />
====bBroadcastCountdown====<br />
'''Type:''' [[bool]]<br />
<br />
Countdown will be broadcasted to the HUD.<br />
<br />
'''Default value:''' True<br />
<br />
====bLoopCountdown====<br />
'''Type:''' [[bool]]<br />
<br />
Triggers the Event all CountdownTime seconds until this gets untriggered.<br />
<br />
====BlueTeamMessages====<br />
'''Type:''' {{tl|TeamMessage}}<br />
<br />
Specific countdown messages for the blue team.<br />
<br />
====bNoUntrigger====<br />
'''Type:''' [[bool]]<br />
<br />
This will only trigger an event but never untrigger it.<br />
<br />
====bSubtileCounting====<br />
'''Type:''' [[bool]]<br />
<br />
If True, the timer will only appear in certain intervals. Otherwise it's always visible when the countdown is active.<br />
<br />
====bSwitchMessageTeamsAfterReset====<br />
'''Type:''' [[bool]]<br />
<br />
Use all RedTeamMessages on the blue team in swapped rounds and the other way around.<br />
<br />
'''Default value:''' True<br />
<br />
====CountdownPosX====<br />
'''Type:''' [[float]]<br />
<br />
The relative location of the countdown in the HUD.<br />
<br />
====CountdownPosY====<br />
'''Type:''' [[float]]<br />
<br />
Only the countdown - not the messages.<br />
<br />
====CountdownString====<br />
'''Type:''' [[string]]<br />
<br />
'''[[Variables#Modifiers|Modifiers]]:''' localized<br />
<br />
Displayed with the countdown. %c in the string will be replaced with a numerical representation of the countdown.<br />
<br />
====CountdownTime====<br />
'''Type:''' [[float]]<br />
<br />
Wait for the CountdownTime before triggering the Event.<br />
<br />
The Event will not get triggered if a part of the condition becomes False during the countdown. 0 disables this, but makes no sense.<br />
<br />
'''Default value:''' 60.0<br />
<br />
====MessageType====<br />
'''Type:''' {{tl|EMT_MessageType}}<br />
<br />
The place and font for all messages to use.<br />
<br />
'''Default value:''' {{tl|EMT_MessageType|||EMT_CriticalEvent}}<br />
<br />
====RedTeamMessages====<br />
'''Type:''' {{tl|TeamMessage}}<br />
<br />
Specific countdown messages for the red team.<br />
<br />
====ScoreFontSize====<br />
'''Type:''' [[int]]<br />
<br />
This int size controls how big the font is at different resolutions. -2 is normally quite good.<br />
<br />
====ToleranceTime====<br />
'''Type:''' [[float]]<br />
<br />
If the whole condition gets False after being true, then you have this much time to get it True again to keep your CountdownTime progress. Otherwise you start over again. 0 disables this.<br />
<br />
===Property group 'Events'===<br />
====CountdownStoppedEvent====<br />
'''Type:''' [[name]]<br />
<br />
This will be triggered when the condition gets untriggered.<br />
You can use it to do something when the ToleranceTime starts.<br />
<br />
====ToleranceStoppedEvent====<br />
'''Type:''' [[name]]<br />
<br />
This will be triggered when the condition gets triggered while the gate is in ToleranceTime.<br />
<br />
===Internal variables===<br />
====BlueTeam====<br />
'''Type:''' [[byte]]<br />
<br />
For Reset()<br />
<br />
====bMainCountdown====<br />
'''Type:''' [[bool]]<br />
<br />
Do the main thing, not the tolerance.<br />
<br />
====bWasTolerance====<br />
'''Type:''' [[bool]]<br />
<br />
Whether this actor was just in Tolerance, so write the ToleranceAbort-Msg.<br />
<br />
====CountdownProgress====<br />
'''Type:''' [[float]]<br />
<br />
Saves the last CountdownTime for later re-use.<br />
<br />
====CountdownProgressInt====<br />
'''Type:''' [[int]]<br />
<br />
Typecast it once to save performance.<br />
<br />
====MSGType====<br />
'''Type:''' [[name]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RedTeam====<br />
'''Type:''' [[byte]]<br />
<br />
For Reset()<br />
<br />
====TempInstigator====<br />
'''Type:''' [[UE2:Pawn (UT2004)|Pawn]]<br />
<br />
Remember, because of a gap to the next TriggerEvent.<br />
<br />
====ToleranceProgress====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#NetUpdateFrequency|NetUpdateFrequency]]<br />
| 2.0<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#RemoteRole|RemoteRole]]<br />
| [[UE2:Actor enums (UT2004)#ENetRole|Role_SimulatedProxy]]<br />
|}<br />
<br />
==Enums==<br />
====EMT_MessageType====<br />
<!-- enter enum description --><br />
; EMT_Default : Comment in chat window.<br />
; EMT_CriticalEvent : Big font on the center of the screen.<br />
; EMT_DeathMessage : Small in chat window.<br />
; EMT_Say : Small in chat window.<br />
; EMT_TeamSay : Small in chat window.<br />
<br />
==Structs==<br />
===TeamMessage===<br />
<!-- enter struct description --><br />
; [[string]] MsgCountdownStart : Message to display when the Countdown starts.<br />
; [[string]] MsgCountdownSuccess : Message to display when the Countdown runs out.<br />
; [[string]] MsgCountdownAbort : Message to display when the Countdown is aborted in time.<br />
; [[string]] MsgToleranceSuccess : Message to display when the ToleranceTime runs out.<br />
; [[string]] MsgToleranceAbort : Message to display when this is retriggered in the ToleranceTime.<br />
<br />
==Functions==<br />
===Events===<br />
====BeginPlay====<br />
{{code|event '''BeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#BeginPlay|Actor.BeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====SetInitialState====<br />
{{code|event '''SetInitialState''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#SetInitialState|Actor.SetInitialState]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====DisplayHUDMessage====<br />
{{code|function '''DisplayHUDMessage''' ([[string]]&nbsp;'''Message''', [[byte]]&nbsp;'''TeamNum''')}}<br />
<br />
<!-- enter function description --><br />
<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#Reset|Actor.Reset]]<br />
<br />
<!-- enter function description --><br />
<br />
==States==<br />
===ClientTick===<br />
<!-- enter state description --><br />
<br />
====ClientTick.Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]] ''(global)''<br />
<br />
<!-- enter event description --><br />
<br />
===ServerTick===<br />
<!-- enter state description --><br />
<br />
====ServerTick.Tick====<br />
{{code|event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]] ''(global)''<br />
<br />
<!-- enter event description --><br />
<br />
====ServerTick.Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Trigger|Actor.Trigger]] ''(global)''<br />
<br />
<!-- enter event description --><br />
<br />
====ServerTick.UnTrigger====<br />
{{code|event '''UnTrigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTrigger|Actor.UnTrigger]] ''(global)''<br />
<br />
<!-- enter event description --><br />
<br />
<br />
<br />
<br />
=CountdownHUDOverlay=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownHUDOverlay<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = HudOverlay<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Allows to specify a custom position to display the countdown in the HUD.<br />
<br />
==Properties==<br />
====CountdownProgressInt====<br />
'''Type:''' [[int]]<br />
<br />
Typecasted version of the countdown since floating points would be too confusing.<br />
<br />
====ParentCountdown====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/CountdownEventGate|CountdownEventGate]]<br />
<br />
The CountdownEventGate that we watch.<br />
<br />
====PCOwner====<br />
'''Type:''' [[UE2:PlayerController (UT2004)|PlayerController]]<br />
<br />
The PlayerController that owns this HUD.<br />
<br />
====ScoreFontSize====<br />
'''Type:''' [[int]]<br />
<br />
The font size we will be using.<br />
<br />
==Instance functions==<br />
====DisplayCountdown====<br />
{{code|function '''DisplayCountdown''' ([[UE2:Canvas (UT2004)|Canvas]]&nbsp;'''C''')}}<br />
<br />
<!-- enter function description --><br />
<br />
====Render====<br />
{{code|function '''Render''' ([[UE2:Canvas (UT2004)|Canvas]]&nbsp;'''C''')}}<br />
<br />
'''Overrides:''' [[UE2:HudOverlay (UT2004)#Render|HudOverlay.Render]]<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/RandomEventGate?diff=44711User:Crusha/UltimateMappingTools/RandomEventGate2011-10-13T13:50:50Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one<br />
is not chosen.<br />
<br />
==Properties==<br />
===Property group 'Events'===<br />
====AlternativeEvent====<br />
'''Type:''' [[name]]<br />
<br />
Event to trigger in other case.<br />
<br />
===Property group 'RandomEventGate'===<br />
====TriggerProbability====<br />
'''Type:''' [[float]]<br />
<br />
Value between 0 and 100. How likely it is to trigger the regular event. Otherwise the AlternativeEvent will be triggered.<br />
<br />
====UnTriggerProbability====<br />
'''Type:''' [[float]]<br />
<br />
Value between 0 and 100. How likely it is to untrigger the regular event. Otherwise the AlternativeEvent will be untriggered.<br />
<br />
==Events==<br />
====BeginPlay====<br />
{{code|event '''BeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#BeginPlay|Actor.BeginPlay]]<br />
<br />
Checking if it actually makes sense to use this Actor.<br />
<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Trigger|Actor.Trigger]]<br />
<br />
Some simple FRand() magic.<br />
<br />
====Untrigger====<br />
{{code|event '''Untrigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTrigger|Actor.UnTrigger]]<br />
<br />
More FRand().</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/PlayerCountTrigger?diff=44710User:Crusha/UltimateMappingTools/PlayerCountTrigger2011-10-13T13:46:36Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount.<br />
<br />
Hint: Use a LogicalNOT to make this thing work in the other direction,<br />
so that it triggers if less than x players are in the game.<br />
<br />
==Properties==<br />
===Property group 'PlayerCountTrigger'===<br />
====bCountHumansOnly====<br />
'''Type:''' [[bool]]<br />
<br />
Bots are not considered in the PlayerCount.<br />
<br />
====PlayerCount====<br />
'''Type:''' [[byte]]<br />
<br />
Triggers the Event when at least this much players are in the game.<br />
<br />
'''Default value:''' 16<br />
<br />
===Internal variables===<br />
====bHasTriggeredAlready====<br />
'''Type:''' [[bool]]<br />
<br />
So that we don't trigger again when another player joins although we are above PlayerCount already.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bCollideActors|bCollideActors]]<br />
| False<br />
|}<br />
<br />
==Functions==<br />
===Events===<br />
====SetInitialState====<br />
{{code|event '''SetInitialState''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#SetInitialState|Actor.SetInitialState]]<br />
<br />
Go to the appropriate state, either for humans only or also for bots. With states can we save more performance than with boolean checks.<br />
<br />
===Other instance functions===<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#Reset|Actor.Reset]]<br />
<br />
The Event will be untriggered and is allowed to trigger again in the next Tick.<br />
<br />
==States==<br />
===HumansAndBots===<br />
Counts bots too.<br />
<br />
====HumansAndBots.Tick====<br />
{{code|event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]] ''(global)''<br />
<br />
Checking Level.Game.NumPlayers + Level.Game.NumBots every Tick.<br />
<br />
===HumansOnly===<br />
Count only humans, bots can not be taken as serious players.<br />
<br />
====HumansOnly.Tick====<br />
{{code|event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]] ''(global)''<br />
<br />
Checking Level.Game.NumPlayers every Tick.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/ProjectileTeleporter?diff=44709User:Crusha/UltimateMappingTools/ProjectileTeleporter2011-10-13T13:38:58Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can shoot through teleporters. This won't let instant hit weapons pass, but it's still nice to send rockets in to clear the other side or to shoot them after an enemy.<br />
<br />
==Properties==<br />
===Property group 'Teleporter'===<br />
====AllowedProjectiles====<br />
'''Type:''' [[array]]<[[class]]<[[UE2:Projectile (UT2004)|Projectile]]> ><br />
<br />
Which projectiles are allowed to pass through. By default are all allowed.<br />
<br />
'''Default value:''' [[Types#Class|Class]]'[[UE2:Projectile (UT2004)|EngineProjectile]]'<br />
<br />
==Functions==<br />
===Events===<br />
====Touch====<br />
{{code|event '''Touch''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' [[UE2:Teleporter (UT2004)#Touch|Teleporter.Touch]]<br />
<br />
Teleport modified so that it also changes the location of projectiles.<br />
<br />
===Other instance functions===<br />
====IsValidProjectile====<br />
{{code|function [[bool]]&nbsp;'''IsValidProjectile''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
Is the incoming Actor a projectile from the array?</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/ProjectileJumppad?diff=44708User:Crusha/UltimateMappingTools/ProjectileJumppad2011-10-13T13:36:01Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileJumppad<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = UTJumpPad<br />
| parent2 = JumpPad<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can place grenades on a Jumppad and it<br />
bumps them up as well.<br />
<br />
==Properties==<br />
===Property group 'ProjectileJumppad'===<br />
====AllowedProjectiles====<br />
'''Type:''' [[array]]<[[class]]<[[UE2:Projectile (UT2004)|Projectile]]> ><br />
<br />
Which projectile classes are allowed. By default are only those allowed for which it makes logically sense to be bounced up and which don't explode on impact.<br />
<br />
'''Default value, index 0:''' [[Types#Class|Class]]'[[UE2:Grenade (UT2004)|XWeaponsGrenade]]'<br />
<br />
'''Default value, index 1:''' [[Types#Class|Class]]'[[UE2:ONSGrenadeProjectile (UT2004)|OnslaughtONSGrenadeProjectile]]'<br />
<br />
'''Default value, index 2:''' [[Types#Class|Class]]'[[UE2:ONSMineProjectile (UT2004)|OnslaughtONSMineProjectile]]'<br />
<br />
====bKeepOriginalPath====<br />
'''Type:''' [[bool]]<br />
<br />
If True, projectiles are influenced but not completely changed by the Jumppad. Adds more dynamic to the thing and makes it harder to exploit this mechanic.<br />
<br />
==Functions==<br />
===Events===<br />
====PostTouch====<br />
{{code|event '''PostTouch''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' [[UE2:UTJumpPad (UT2004)#PostTouch|UTJumpPad.PostTouch]]<br />
<br />
Adds special handling for projectiles.<br />
<br />
====Touch====<br />
{{code|event '''Touch''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' [[UE2:UTJumpPad (UT2004)#Touch|UTJumpPad.Touch]]<br />
<br />
Lets also valid projectiles pass the initial check.<br />
<br />
===Other instance functions===<br />
====IsValidProjectile====<br />
{{code|function [[bool]]&nbsp;'''IsValidProjectile''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
Returns true if the touching Actor is a projectile class from the array.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44707User:Crusha/UltimateMappingTools2011-10-13T13:29:21Z<p>Crusha: Added a few more Actors.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileJumppad==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileJumppad<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UTJumpPad<br />
| parent2 = JumpPad<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can place grenades on a Jumppad and it bumps them up as well. This lets you specify projectile classes that are bumped the same way as players.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileJumppad|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ProjectileTeleporter==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ProjectileTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Got inspired by Quake 4 where you can shoot through teleporters. This won't let instant hit weapons pass, but it's still nice to send rockets in to clear the other side or to shoot them after an enemy.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ProjectileTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more information about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more information about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMapMarker==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMapMarker|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from this information. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more information about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Pickups=<br />
Some additional pickups that mappers can use.<br />
<br />
==SuperShockWeaponBase==<br />
{{infobox class<br />
| class = SuperShockWeaponBase<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = xWeaponBase<br />
| parent2 = xPickUpBase<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A simple xWeaponBase that has the SuperShockRifle set in the DefaultProperties<br />
because you can't select it just from the dropdown menu.<br />
Use and place it wisely, nobody likes unfair and frustrating maps. But ONS-BiggerBeerBattle would not nearly as fun and exciting without it.<br />
<br />
<br />
<br />
==MegaShieldPack==<br />
{{infobox class<br />
| class = MegaShieldPack<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = SuperShieldPack<br />
| parent2 = ShieldPickup<br />
| parent3 = TournamentPickup<br />
| parent4 = Pickup<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
Provides the player with 150 armor points instead of just 100.<br />
Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
It looks exactly like the SuperShieldPickup, just that it has a dark green shader instead of an orange one.<br />
<br />
<br />
<br />
==UDamagePack_Prolonged==<br />
{{infobox class<br />
| class = UDamagePack_Prolonged<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UDamagePack<br />
| parent2 = TournamentPickup<br />
| parent3 = Pickup<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Lasts 45 seconds instead of just 30 and uses a white-greyish shader for better<br />
distinction. Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NetworkLinkedClientVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players or fairly small and if the area of the NetworkImportanceVolume is the opposite of that.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Misc=<br />
Helper classes that are shared by some scripts. It's not relevant to mappers in any way.<br />
<br />
==UltimateMathAux==<br />
by Wormbo & Co.<br />
{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateMathAux|this page]] for a full reference.<br />
<br />
<br />
<br />
==UltimateRadarVehicleLRI==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A linked list of ReplicationInfos that tell the radar the position of tracked vehicles.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|this page]] for a full reference.<br />
<br />
<br />
<br />
==VehicleSpawnProtectionTimer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VehicleSpawnProtectionTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Disables spawn protection for the vehicle after a fixed amount of time after the vehicle was spawned.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateVCTFFactory?diff=44706User:Crusha/UltimateMappingTools/UltimateVCTFFactory2011-10-13T10:18:23Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work.<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Ultimate Factory for VCTF, giving the mapper more control over vehicle balancing and the functionality of the vehicle itself. Vehicles can be tracked as well, if an [[User:Crusha/UltimateMappingTools/UltimateRadarMap|UltimateRadarMap Actor]] is placed in the map.<br />
<br />
==Properties==<br />
===Property group 'Events'===<br />
====PreSpawnEvent====<br />
'''Type:''' [[name]]<br />
<br />
Event to trigger before spawn. Not activated when the vehicle was trigger-spawned.<br />
<br />
===Property group 'UltimateVCTFFactory'===<br />
====bRandomFlip====<br />
'''Type:''' [[bool]]<br />
<br />
Vehicle may be rotated by the AlternativeRotation.<br />
<br />
====AlternativeRotation====<br />
'''Type:''' [[int]]<br />
<br />
If bRandomFlip, the Vehicle may spawn rotated by this value.<br />
<br />
8192 = 45°; 16384 = 90°; 32768 = 180°; etc..<br />
Negative values will rotate in the opposite direction.<br />
<br />
====bAutoTeam====<br />
'''Type:''' [[bool]]<br />
<br />
Uses the TeamNum of the closest GameObjective.<br />
<br />
====bCrushable====<br />
'''Type:''' [[bool]]<br />
<br />
Allow spawning over colliding actors.<br />
<br />
====bEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Factory is triggered "on" at the beginning.<br />
<br />
'''Default value:''' True<br />
<br />
====bTriggeredSpawn====<br />
'''Type:''' [[bool]]<br />
<br />
If True, this factory will immediately spawn a vehicle when being triggered.<br />
<br />
If False, triggering will enable the factory and untriggering will disable it.<br />
<br />
====bUniqueVehicle====<br />
'''Type:''' [[bool]]<br />
<br />
Factory spawns only a limited number of vehicles, there will be no second one when they are destroyed.<br />
MaxVehicleCount determines the number of vehicles that can be spawned.<br />
<br />
====NotLockedForTeam====<br />
'''Type:''' [[byte]]<br />
<br />
This will always lock the Vehicles for the TeamNum that is NOT entered here.<br />
255 is normal, 0 will always lock this for Blue, 1 always for Red.<br />
<br />
(Hack for Minigun turrets - it makes pretty much only sense to use this with them at the team's Core)<br />
<br />
'''Default value:''' 255<br />
<br />
====PreSpawnTime====<br />
'''Type:''' [[float]]<br />
<br />
Time before spawn to trigger PrepSpawn-Event and -Effect.<br />
<br />
'''Default value:''' 2.0<br />
<br />
====RetrySpawnTime====<br />
'''Type:''' [[float]]<br />
<br />
Interval to wait if spawn area is blocked.<br />
<br />
'''Default value:''' 1.0<br />
<br />
====TeamNum====<br />
'''Type:''' [[byte]]<br />
<br />
0= red, 1= blue, 255= neutral / none<br />
<br />
TeamNums are switched automatically on Reset, if necessary. This is primarily used in combination with bIndependentFactory.<br />
<br />
====VehicleList====<br />
'''Type:''' [[array]]<{{tl|SpawnedVehicleProperties}}><br />
<br />
List for random vehicle spawn.<br />
<br />
====VehicleSelectionType====<br />
'''Type:''' {{tl|EVehicleSelectionType}}<br />
<br />
Which method should be used to select the vehicle for spawning.<br />
<br />
===Internal variables===<br />
====bInitiallyEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Needed for Reset().<br />
<br />
====bPreSpawn====<br />
'''Type:''' [[bool]]<br />
<br />
Neither the vehicle or build effect have been spawned yet<br />
<br />
====LastSpawned====<br />
'''Type:''' [[UE2:Vehicle (UT2004)|Vehicle]]<br />
<br />
The last vehicle that has been spawned.<br />
<br />
====RandomArrayNumber====<br />
'''Type:''' [[int]]<br />
<br />
For accessing the properties of the individual vehicle<br />
<br />
====SequentialArrayNumber====<br />
'''Type:''' [[int]]<br />
<br />
Same, but in a sequential order.<br />
<br />
====URM====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateRadarMap|UltimateRadarMap]]<br />
<br />
The UltimateRadarMap Actor in the map. If none is there, no radar tracking is available.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor properties (UT2004)#DrawType|DrawType]]<br />
| [[UE2:Actor enums (UT2004)#EDrawType|DT_Sprite]]<br />
|}<br />
<br />
==Enums==<br />
====ESpawnSize====<br />
The size of the spawneffect particle ring around the vehicle to use.<br />
;SIZE_None :<br />
;SIZE_Scorpion :<br />
;SIZE_Manta :<br />
;SIZE_Raptor :<br />
;SIZE_Hellbender :<br />
;SIZE_Goliath :<br />
;SIZE_Leviathan :<br />
<br />
====EVehicleSelectionType====<br />
Which method should be used to select the vehicle for spawning.<br />
; VST_Random : Random from list, equal chances for everyone.<br />
; VST_Probability : Use Probability values of the vehicle, so some vehicles are more likely than others.<br />
; VST_Sequential : Always select the next entry from the list when spawning a new vehicle.<br />
; VST_OnceRandom : Random as above, just that the choice will be used for the whole match.<br />
; VST_OnceProbability : Use Probablity as above, just that the choice will be used for the whole match.<br />
<br />
==Structs==<br />
===SpawnedVehicleProperties===<br />
A load of customization and you need to do it for every entry in the list and for red and blue separately. But it pays out.<br />
; [[class]]<[[UE2:Vehicle (UT2004)|Vehicle]]> Vehicle : The vehicle that is spawned with this entry.<br />
; [[int]] Health : Give the spawned Vehicle a custom Health value. 0 will use the Vehicle's default.<br />
; [[float]] SpawnProbability : Used with bUseSpawnProbability. You can enter whatever you like, just the relative difference between the entries counts.<br />
; [[name]] VehicleSpawnedEvent : Tag to be triggered upon spawning of this particular vehicle (additionally to the one of the factory itself). The vehicle will be the instigator.<br />
; [[name]] VehicleDestroyedEvent : Tag to be triggered upon destruction of the vehicle. Vehicle must be a subclass of ONSVehicle for this to happen.<br />
; {{tl|ESpawnSize}} SpawnEffectSize : The size of the spawneffect around the vehicle to use.<br />
; [[bool]] bCanCarryFlag : This vehicle can carry the flag.<br />
; [[bool]] bEjectDriver : Eject driver when vehicle gets destroyed instead of killing him.<br />
; [[bool]] bEnterringDoesNotUnlock : Vehicle is not unlocked when a player enters it.<br />
; [[float]] SpawnProtectionTime : The vehicle is shielded from any damage for this many seconds after spawn (spawn protection is lift immediately when a driver enters). 0 disables this, -1 means the vehicle is protected until someone enters it.<br />
; [[bool]] bChangeMaxDesireability : If True, use a custom MaxDesirability value to tell bots if they should use the vehicle or not.<br />
; [[float]] MaxDesireability : Default values are: Scorpion - 0.4; Hellbender - 0.5; Raptor, Cicada, Manta, SPMA, Paladin - 0.6; Goliath, Ion Tank - 0.8; Leviathan - 2.0. Go figure what matches your vehicle best.<br />
; [[bool]] bTrackVehicleOnRadar : The vehicle's location will be shown in realtime on the RadarMap.<br />
; [[bool]] bRadarVisibleToDriver : Should the vehicle be shown on the radar to it's driver? Only useful if you have a large delay between the updates and want to estimate where your team sees you on the radar.<br />
; [[bool]] bRadarNeutralWhenEmpty : If true, the vehicle is drawn with white team color when it's left.<br />
; [[bool]] bRadarHideWhenEmpty : If true, the vehicle is not drawn when it's empty.<br />
; [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI#ERadarVehicleVisibility|UltimateRadarVehicleLRI.ERadarVehicleVisibility]] RadarVehicleVisibility : Here you set to which players the vehicle is shown on the RadarMap.<br />
; [[float]] RadarOwnerUpdateTime : How many seconds have to pass before the location of vehicle is updated for the owning team.<br />
; [[float]] RadarEnemyUpdateTime : Same as above, just for enemies.<br />
; [[bool]] bRadarFadeWithOwnerUpdateTime : If True, the icon on the radar map will interpolate between opaque and translucent as time passes between location updates on the radar.<br />
; [[bool]] bRadarFadeWithEnemyUpdateTime : If False, the icon will always stay fully opaque.<br />
; [[UE2:Material (UT2004)|Material]] RadarTexture : The texture that represents the vehicle on the radar. It should have an alpha channel and be set to TC_Clamp. A bunch of vehicle textures for the radar are delivered in the texture package that comes with this toolset.<br />
; [[float]] RadarTextureScale : The image will be scaled by this factor.<br />
; [[int]] RadarTextureRotationOffset : The image will be rotated by this (in Rotation Units), in case your texture doesn't face the right way (up is the direction the vehicle is driving to).<br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
Performs a check to notify the mapper if this actor is useless.<br />
References the UltimateRadarMap if it exists.<br />
Sets some inherited variables to the correct values, enables the factory if necessary and precaches all the vehicles in the array.<br />
<br />
====PostNetBeginPlay====<br />
{{code|event '''PostNetBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostNetBeginPlay|Actor.PostNetBeginPlay]]<br />
<br />
Activates the factory, either according to the closest GameObjective or with a fixed team number.<br />
<br />
====Timer====<br />
{{code|event '''Timer''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Timer|Actor.Timer]]<br />
<br />
The main function of this actor. It handles when to call which other function.<br />
<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:SVehicleFactory (UT2004)#Trigger|SVehicleFactory.Trigger]]<br />
<br />
Either enable or spawn directly if bTriggeredSpawn.<br />
<br />
====UnTrigger====<br />
{{code|event '''UnTrigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTrigger|Actor.UnTrigger]]<br />
<br />
Disable if not bTriggeredSpawn.<br />
<br />
====VehicleDestroyed====<br />
{{code|event '''VehicleDestroyed''' ([[UE2:Vehicle (UT2004)|Vehicle]]&nbsp;'''V''')}}<br />
<br />
'''Overrides:''' [[UE2:SVehicleFactory (UT2004)#VehicleDestroyed|SVehicleFactory.VehicleDestroyed]]<br />
<br />
VehicleCount gets reduced (if wished) and the LinkedReplicationInfo for the radar is removed, if one for this vehicle existed.<br />
<br />
===Other instance functions===<br />
====Activate====<br />
{{code|function '''Activate''' ([[byte]]&nbsp;'''T''')}}<br />
<br />
Activate the Factory.<br />
<br />
====ChooseVehicle====<br />
{{code|function '''ChooseVehicle''' ()}}<br />
<br />
Sets the VehicleClass to a Vehicle from the currently valid array. The class can be chosen randomly or sequential. In any case is RandomArrayNumber the index of the chosen entry in the array, so that we can find the matching properties for this vehicle when it's spawned.<br />
<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#Reset|Actor.Reset]]<br />
<br />
Adjust this actor if the sides are switched in ONS and deletes all remaining vehicles on the map.<br />
<br />
====SpawnBuildEffect====<br />
{{code|function '''SpawnBuildEffect''' ()}}<br />
<br />
Spawns the BuildEffect emitter.<br />
<br />
====SpawnVehicle====<br />
{{code|function '''SpawnVehicle''' ()}}<br />
<br />
Spawns the chosen VehicleClass and applies the properties from the matching entry in the array. The creation of a LinkedReplicationInfo for the radar is also handled here, if necessary.<br />
<br />
If the ChooseVehicle function chose an entry with an empty vehicle class, then the Timer is set back to the length of a RespawnTime to try it again.<br />
<br />
====UpdatePrecacheMaterials====<br />
{{code|simulated function '''UpdatePrecacheMaterials''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#UpdatePrecacheMaterials|Actor.UpdatePrecacheMaterials]]<br />
<br />
Loads all vehicles in the arrays into cache to have fast access during the game.<br />
<br />
====VehicleArrayPrecache====<br />
{{code|simulated function '''VehicleArrayPrecache''' ()}}<br />
<br />
Loads all vehicles in the arrays into cache to have fast access during the game.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateRadarMapMarker?diff=44705User:Crusha/UltimateMappingTools/UltimateRadarMapMarker2011-10-13T10:16:33Z<p>Crusha: First revision of page. Autogenerated.</p>
<hr />
<div>by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
==Properties==<br />
===Property group 'UltimateRadarMapMarker'===<br />
====bInitiallyEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Is active from the beginning.<br />
<br />
====bRadarFadeWithUpdateTime====<br />
'''Type:''' [[bool]]<br />
<br />
If True, the icon on the radar map will interpolate between opaque and translucent as time passes between location updates on the radar.<br />
<br />
If False, the icon will always stay fully opaque.<br />
<br />
====RadarMarkerVisibility====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI#ERadarVehicleVisibility|UltimateRadarVehicleLRI.ERadarVehicleVisibility]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarMaterial====<br />
'''Type:''' [[UE2:Material (UT2004)|Material]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarTextureRotationOffset====<br />
'''Type:''' [[int]]<br />
<br />
A base rotation that is added to the rotation of the texture.<br />
<br />
====RadarTextureScale====<br />
'''Type:''' [[float]]<br />
<br />
The image will be scaled by this factor.<br />
<br />
====RadarUpdateTime====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
===Internal variables===<br />
====LRI====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI#ERadarVehicleVisibility|UltimateRadarVehicleLRI]]<br />
<br />
Reference to the LRI that represents this texture.<br />
<br />
====OriginalLocation====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Vector|Object.Vector]]<br />
<br />
<!-- enter variable description --><br />
<br />
====OriginalRotation====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Rotator|Object.Rotator]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarRI====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateONSFactory#UltimateONSRadarHUDRI|UltimateONSRadarHUDRI]]<br />
<br />
<!-- enter variable description --><br />
<br />
====URM====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateRadarMap|UltimateRadarMap]]<br />
<br />
<!-- enter variable description --><br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====SetInitialState====<br />
{{code|event '''SetInitialState''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#SetInitialState|Actor.SetInitialState]]<br />
<br />
<!-- enter event description --><br />
<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Trigger|Actor.Trigger]]<br />
<br />
<!-- enter event description --><br />
<br />
====UnTrigger====<br />
{{code|event '''UnTrigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTrigger|Actor.UnTrigger]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====CreateLRI====<br />
{{code|function '''CreateLRI''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#Reset|Actor.Reset]]<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI?diff=44704User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI2011-10-13T10:13:19Z<p>Crusha: First revision of the page. Autogenerated.</p>
<hr />
<div>=UltimateRadarVehicleLRI=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
{{autogenerated}}<br />
ReplicationInfo for a Vehicle from the UltimateONSFactory<br />
<br />
Stores the radar-relevant values and updates and replicates the location of vehicle to the client so that it can be read by the UltimateRadarVehicleHUDOverlay.<br />
<br />
==Properties==<br />
====bAdded====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====bMarkerMode====<br />
'''Type:''' [[bool]]<br />
<br />
If True, this is used by the UltimateRadarMapMarker and thus doesn't require a vehicle.<br />
<br />
====bRadarFadeWithEnemyUpdateTime====<br />
'''Type:''' [[bool]]<br />
<br />
If False, the icon will always stay fully opaque.<br />
<br />
====bRadarFadeWithOwnerUpdateTime====<br />
'''Type:''' [[bool]]<br />
<br />
If True, the icon on the radar map will interpolate between opaque and translucent as time passes between location updates on the radar.<br />
<br />
====bRadarHideWhenEmpty====<br />
'''Type:''' [[bool]]<br />
<br />
If true, the vehicle is not drawn when it's empty.<br />
<br />
====bRadarNeutralWhenEmpty====<br />
'''Type:''' [[bool]]<br />
<br />
If true, the vehicle is drawn with white team color when it's left.<br />
<br />
====bRadarVisibleToDriver====<br />
'''Type:''' [[bool]]<br />
<br />
Should the vehicle be shown on the radar to it's driver?<br />
<br />
====NextVehicleLRI====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|UltimateRadarVehicleLRI]]<br />
<br />
The next ReplicationInfo. This way we create a dynamic linked list that can change at runtime.<br />
<br />
====OldOwnerTeam====<br />
'''Type:''' [[byte]]<br />
<br />
The original TeamNum that the vehicle had.<br />
<br />
====PassedTime====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====PassedTimeEnemy====<br />
'''Type:''' [[float]]<br />
<br />
The time that has passed since the location and rotation have been updated.<br />
<br />
====RadarEnemyUpdateTime====<br />
'''Type:''' [[float]]<br />
<br />
Same as above, just for enemies.<br />
<br />
====RadarMaterial====<br />
'''Type:''' [[UE2:Material (UT2004)|Material]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarOwnerUpdateTime====<br />
'''Type:''' [[float]]<br />
<br />
How many seconds have to pass before the location and rotation of the vehicle is updated for the owning team.<br />
<br />
====RadarTexRot====<br />
'''Type:''' [[UE2:TexRotator (UT2004)|TexRotator]]<br />
<br />
This image will represent the vehicle on the Radar.<br />
<br />
====RadarTextureRotationOffset====<br />
'''Type:''' [[int]]<br />
<br />
A base rotation that is added to the rotation of the texture.<br />
<br />
====RadarTextureScale====<br />
'''Type:''' [[float]]<br />
<br />
The image will be scaled by this factor.<br />
<br />
====RadarVehicleVisibility====<br />
'''Type:''' {{tl|ERadarVehicleVisibility}}<br />
<br />
<!-- enter variable description --><br />
<br />
====TrackedVehicle====<br />
'''Type:''' [[UE2:Vehicle (UT2004)|Vehicle]]<br />
<br />
The vehicle whose location and rotation is tracked.<br />
<br />
====VehicleLocation====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Vector|Object.Vector]]<br />
<br />
<!-- enter variable description --><br />
<br />
====VehicleLocationEnemy====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Vector|Object.Vector]]<br />
<br />
The location of the vehicle. (replicated)<br />
<br />
====VehicleLRIMaster====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI#UltimateRadarVehicleLRIMaster|UltimateRadarVehicleLRIMaster]]<br />
<br />
<!-- enter variable description --><br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#bSkipActorPropertyReplication|bSkipActorPropertyReplication]]<br />
| False<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#NetPriority|NetPriority]]<br />
| 2.0<br />
|}<br />
<br />
==Enums==<br />
====ERadarVehicleVisibility====<br />
<!-- enter enum description --><br />
; RVV_Always : Always to everyone.<br />
; RVV_DriverTeam : Always to the team that drives the vehicle.<br />
; RVV_DriverEnemy : Always to the enemy team of the driver.<br />
; RVV_OriginalTeam : Always to the team that originally owned the vehicle.<br />
; RVV_OriginalTeamAndHijacker : Always to the team that originally owned the vehicle and to the enemy when he hijacks.<br />
; RVV_OriginalEnemy : Always to the team that not originally owned the vehicle.<br />
; RVV_OriginalEnemyAndHijacker : Always to the team that not originally owned the vehicle and to the owners when it got hijacked.<br />
; RVV_OnlyWhenOwned : Only show to the team that originally owned the vehicle when it's not hijacked.<br />
; RVV_OnlyWhenHijacked : Only show to the team that originally owned the vehicle when it got hijacked.<br />
<br />
==Events==<br />
====BaseChange====<br />
{{code|simulated event '''BaseChange''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#BaseChange|Actor.BaseChange]]<br />
<br />
<!-- enter event description --><br />
<br />
====BeginPlay====<br />
{{code|event '''BeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#BeginPlay|Actor.BeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====Destroyed====<br />
{{code|simulated event '''Destroyed''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Destroyed|Actor.Destroyed]]<br />
<br />
<!-- enter event description --><br />
<br />
====PostBeginPlay====<br />
{{code|simulated event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
<!-- enter event description --><br />
<br />
<br />
<br />
=UltimateRadarVehicleLRIMaster=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRIMaster<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
{{autogenerated}}<br />
Master of the UltimateRadarVehicleLRIs<br />
<br />
Serves as anchor for the first node in the linked list of UltimateRadarVehicleLRIs.<br />
Contains functions to add or remove new nodes at the correct position in the list.<br />
<br />
==Properties==<br />
====FirstVehicleLRI====<br />
'''Type:''' [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|UltimateRadarVehicleLRI]]<br />
<br />
<!-- enter variable description --><br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#NetPriority|NetPriority]]<br />
| 2.0<br />
|}<br />
<br />
==Instance functions==<br />
====AddVehicleLRI====<br />
{{code|simulated function '''AddVehicleLRI''' ([[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|UltimateRadarVehicleLRI]]&nbsp;'''VehicleLRI''')}}<br />
<br />
<!-- enter function description --><br />
<br />
====RemoveVehicleLRI====<br />
{{code|simulated function '''RemoveVehicleLRI''' ([[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|UltimateRadarVehicleLRI]]&nbsp;'''U''')}}<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44703User:Crusha/UltimateMappingTools2011-10-13T10:02:28Z<p>Crusha: Added a bunch of additional Actors.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more information about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more information about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMapMarker==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMapMarker<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Draws a texture on the radar map, representing the location and rotation of this Actor.<br />
Can be turned on and off with triggering.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMapMarker|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==LinksetupEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LinksetupEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
When being triggered, this will only trigger the next Event, if the current Linksetup matches one of the ones specified in the array.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LinksetupEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from this information. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more information about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Pickups=<br />
Some additional pickups that mappers can use.<br />
<br />
==SuperShockWeaponBase==<br />
{{infobox class<br />
| class = SuperShockWeaponBase<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = xWeaponBase<br />
| parent2 = xPickUpBase<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A simple xWeaponBase that has the SuperShockRifle set in the DefaultProperties<br />
because you can't select it just from the dropdown menu.<br />
Use and place it wisely, nobody likes unfair and frustrating maps. But ONS-BiggerBeerBattle would not nearly as fun and exciting without it.<br />
<br />
<br />
<br />
==MegaShieldPack==<br />
{{infobox class<br />
| class = MegaShieldPack<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = SuperShieldPack<br />
| parent2 = ShieldPickup<br />
| parent3 = TournamentPickup<br />
| parent4 = Pickup<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
Provides the player with 150 armor points instead of just 100.<br />
Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
It looks exactly like the SuperShieldPickup, just that it has a dark green shader instead of an orange one.<br />
<br />
<br />
<br />
==UDamagePack_Prolonged==<br />
{{infobox class<br />
| class = UDamagePack_Prolonged<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = UDamagePack<br />
| parent2 = TournamentPickup<br />
| parent3 = Pickup<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Lasts 45 seconds instead of just 30 and uses a white-greyish shader for better<br />
distinction. Additionally it's directly placeable in a map, though a<br />
PickupBase is recommended to be used.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more information about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more information about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
==NetworkLinkedClientVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players or fairly small and if the area of the NetworkImportanceVolume is the opposite of that.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Misc=<br />
Helper classes that are shared by some scripts. It's not relevant to mappers in any way.<br />
<br />
==UltimateMathAux==<br />
by Wormbo & Co.<br />
{{infobox class<br />
| class = UltimateMathAux<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Object<br />
| custom = yes<br />
}}<br />
<br />
A very basic class that holds some static auxiliary math functions.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateMathAux|this page]] for a full reference.<br />
<br />
<br />
<br />
==UltimateRadarVehicleLRI==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarVehicleLRI<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A linked list of ReplicationInfos that tell the radar the position of tracked vehicles.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarVehicleLRI|this page]] for a full reference.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateVCTFFactory?diff=44702User:Crusha/UltimateMappingTools/UltimateVCTFFactory2011-10-13T09:37:03Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work.<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Ultimate Factory for VCTF, giving the mapper more control over vehicle balancing and the functionality of the vehicle itself. Vehicles can be tracked as well, if an [[User:Crusha/UltimateMappingTools/UltimateRadarMap|UltimateRadarMap Actor]] is placed in the map.<br />
<br />
==Properties==<br />
===Property group 'Events'===<br />
====PreSpawnEvent====<br />
'''Type:''' [[name]]<br />
<br />
Event to trigger before spawn. Not activated when the vehicle was trigger-spawned.<br />
<br />
===Property group 'UltimateVCTFFactory'===<br />
====bRandomFlip====<br />
'''Type:''' [[bool]]<br />
<br />
Vehicle may be rotated by the AlternativeRotation.<br />
<br />
====AlternativeRotation====<br />
'''Type:''' [[int]]<br />
<br />
If bRandomFlip, the Vehicle may spawn rotated by this value.<br />
<br />
8192 = 45°; 16384 = 90°; 32768 = 180°; etc..<br />
Negative values will rotate in the opposite direction.<br />
<br />
====bAutoTeam====<br />
'''Type:''' [[bool]]<br />
<br />
Uses the TeamNum of the closest GameObjective.<br />
<br />
====bCrushable====<br />
'''Type:''' [[bool]]<br />
<br />
Allow spawning over colliding actors.<br />
<br />
====bEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Factory is triggered "on" at the beginning.<br />
<br />
'''Default value:''' True<br />
<br />
====bTriggeredSpawn====<br />
'''Type:''' [[bool]]<br />
<br />
If True, this factory will immediately spawn a vehicle when being triggered.<br />
<br />
If False, triggering will enable the factory and untriggering will disable it.<br />
<br />
====bUniqueVehicle====<br />
'''Type:''' [[bool]]<br />
<br />
Factory spawns only a limited number of vehicles, there will be no second one when they are destroyed.<br />
MaxVehicleCount determines the number of vehicles that can be spawned.<br />
<br />
====NotLockedForTeam====<br />
'''Type:''' [[byte]]<br />
<br />
This will always lock the Vehicles for the TeamNum that is NOT entered here.<br />
255 is normal, 0 will always lock this for Blue, 1 always for Red.<br />
<br />
(Hack for Minigun turrets - it makes pretty much only sense to use this with them at the team's Core)<br />
<br />
'''Default value:''' 255<br />
<br />
====PreSpawnTime====<br />
'''Type:''' [[float]]<br />
<br />
Time before spawn to trigger PrepSpawn-Event and -Effect.<br />
<br />
'''Default value:''' 2.0<br />
<br />
====RetrySpawnTime====<br />
'''Type:''' [[float]]<br />
<br />
Interval to wait if spawn area is blocked.<br />
<br />
'''Default value:''' 1.0<br />
<br />
====TeamNum====<br />
'''Type:''' [[byte]]<br />
<br />
0= red, 1= blue, 255= neutral / none<br />
<br />
TeamNums are switched automatically on Reset, if necessary. This is primarily used in combination with bIndependentFactory.<br />
<br />
====VehicleList====<br />
'''Type:''' [[array]]<{{tl|SpawnedVehicleProperties}}><br />
<br />
List for random vehicle spawn.<br />
<br />
====VehicleSelectionType====<br />
'''Type:''' {{tl|EVehicleSelectionType}}<br />
<br />
Which method should be used to select the vehicle for spawning.<br />
<br />
===Internal variables===<br />
====bInitiallyEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Needed for Reset().<br />
<br />
====bPreSpawn====<br />
'''Type:''' [[bool]]<br />
<br />
Neither the vehicle or build effect have been spawned yet<br />
<br />
====LastSpawned====<br />
'''Type:''' [[UE2:Vehicle (UT2004)|Vehicle]]<br />
<br />
The last vehicle that has been spawned.<br />
<br />
====RandomArrayNumber====<br />
'''Type:''' [[int]]<br />
<br />
For accessing the properties of the individual vehicle<br />
<br />
====SequentialArrayNumber====<br />
'''Type:''' [[int]]<br />
<br />
Same, but in a sequential order.<br />
<br />
====URM====<br />
'''Type:''' {{cl|UltimateRadarMap}}<br />
<br />
The UltimateRadarMap Actor in the map. If none is there, no radar tracking is available.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor properties (UT2004)#DrawType|DrawType]]<br />
| [[UE2:Actor enums (UT2004)#EDrawType|DT_Sprite]]<br />
|}<br />
<br />
==Enums==<br />
====ESpawnSize====<br />
The size of the spawneffect particle ring around the vehicle to use.<br />
;SIZE_None :<br />
;SIZE_Scorpion :<br />
;SIZE_Manta :<br />
;SIZE_Raptor :<br />
;SIZE_Hellbender :<br />
;SIZE_Goliath :<br />
;SIZE_Leviathan :<br />
<br />
====EVehicleSelectionType====<br />
Which method should be used to select the vehicle for spawning.<br />
; VST_Random : Random from list, equal chances for everyone.<br />
; VST_Probability : Use Probability values of the vehicle, so some vehicles are more likely than others.<br />
; VST_Sequential : Always select the next entry from the list when spawning a new vehicle.<br />
; VST_OnceRandom : Random as above, just that the choice will be used for the whole match.<br />
; VST_OnceProbability : Use Probablity as above, just that the choice will be used for the whole match.<br />
<br />
==Structs==<br />
===SpawnedVehicleProperties===<br />
A load of customization and you need to do it for every entry in the list and for red and blue separately. But it pays out.<br />
; [[class]]<[[UE2:Vehicle (UT2004)|Vehicle]]> Vehicle : The vehicle that is spawned with this entry.<br />
; [[int]] Health : Give the spawned Vehicle a custom Health value. 0 will use the Vehicle's default.<br />
; [[float]] SpawnProbability : Used with bUseSpawnProbability. You can enter whatever you like, just the relative difference between the entries counts.<br />
; [[name]] VehicleSpawnedEvent : Tag to be triggered upon spawning of this particular vehicle (additionally to the one of the factory itself). The vehicle will be the instigator.<br />
; [[name]] VehicleDestroyedEvent : Tag to be triggered upon destruction of the vehicle. Vehicle must be a subclass of ONSVehicle for this to happen.<br />
; {{tl|ESpawnSize}} SpawnEffectSize : The size of the spawneffect around the vehicle to use.<br />
; [[bool]] bCanCarryFlag : This vehicle can carry the flag.<br />
; [[bool]] bEjectDriver : Eject driver when vehicle gets destroyed instead of killing him.<br />
; [[bool]] bEnterringDoesNotUnlock : Vehicle is not unlocked when a player enters it.<br />
; [[float]] SpawnProtectionTime : The vehicle is shielded from any damage for this many seconds after spawn (spawn protection is lift immediately when a driver enters). 0 disables this, -1 means the vehicle is protected until someone enters it.<br />
; [[bool]] bChangeMaxDesireability : If True, use a custom MaxDesirability value to tell bots if they should use the vehicle or not.<br />
; [[float]] MaxDesireability : Default values are: Scorpion - 0.4; Hellbender - 0.5; Raptor, Cicada, Manta, SPMA, Paladin - 0.6; Goliath, Ion Tank - 0.8; Leviathan - 2.0. Go figure what matches your vehicle best.<br />
; [[bool]] bTrackVehicleOnRadar : The vehicle's location will be shown in realtime on the RadarMap.<br />
; [[bool]] bRadarVisibleToDriver : Should the vehicle be shown on the radar to it's driver? Only useful if you have a large delay between the updates and want to estimate where your team sees you on the radar.<br />
; [[bool]] bRadarNeutralWhenEmpty : If true, the vehicle is drawn with white team color when it's left.<br />
; [[bool]] bRadarHideWhenEmpty : If true, the vehicle is not drawn when it's empty.<br />
; {{tl|ERadarVehicleVisibility|UltimateRadarVehicleLRI}} RadarVehicleVisibility : Here you set to which players the vehicle is shown on the RadarMap.<br />
; [[float]] RadarOwnerUpdateTime : How many seconds have to pass before the location of vehicle is updated for the owning team.<br />
; [[float]] RadarEnemyUpdateTime : Same as above, just for enemies.<br />
; [[bool]] bRadarFadeWithOwnerUpdateTime : If True, the icon on the radar map will interpolate between opaque and translucent as time passes between location updates on the radar.<br />
; [[bool]] bRadarFadeWithEnemyUpdateTime : If False, the icon will always stay fully opaque.<br />
; [[UE2:Material (UT2004)|Material]] RadarTexture : The texture that represents the vehicle on the radar. It should have an alpha channel and be set to TC_Clamp. A bunch of vehicle textures for the radar are delivered in the texture package that comes with this toolset.<br />
; [[float]] RadarTextureScale : The image will be scaled by this factor.<br />
; [[int]] RadarTextureRotationOffset : The image will be rotated by this (in Rotation Units), in case your texture doesn't face the right way (up is the direction the vehicle is driving to).<br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
Performs a check to notify the mapper if this actor is useless.<br />
References the UltimateRadarMap if it exists.<br />
Sets some inherited variables to the correct values, enables the factory if necessary and precaches all the vehicles in the array.<br />
<br />
====PostNetBeginPlay====<br />
{{code|event '''PostNetBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostNetBeginPlay|Actor.PostNetBeginPlay]]<br />
<br />
Activates the factory, either according to the closest GameObjective or with a fixed team number.<br />
<br />
====Timer====<br />
{{code|event '''Timer''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Timer|Actor.Timer]]<br />
<br />
The main function of this actor. It handles when to call which other function.<br />
<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:SVehicleFactory (UT2004)#Trigger|SVehicleFactory.Trigger]]<br />
<br />
Either enable or spawn directly if bTriggeredSpawn.<br />
<br />
====UnTrigger====<br />
{{code|event '''UnTrigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTrigger|Actor.UnTrigger]]<br />
<br />
Disable if not bTriggeredSpawn.<br />
<br />
====VehicleDestroyed====<br />
{{code|event '''VehicleDestroyed''' ([[UE2:Vehicle (UT2004)|Vehicle]]&nbsp;'''V''')}}<br />
<br />
'''Overrides:''' [[UE2:SVehicleFactory (UT2004)#VehicleDestroyed|SVehicleFactory.VehicleDestroyed]]<br />
<br />
VehicleCount gets reduced (if wished) and the LinkedReplicationInfo for the radar is removed, if one for this vehicle existed.<br />
<br />
===Other instance functions===<br />
====Activate====<br />
{{code|function '''Activate''' ([[byte]]&nbsp;'''T''')}}<br />
<br />
Activate the Factory.<br />
<br />
====ChooseVehicle====<br />
{{code|function '''ChooseVehicle''' ()}}<br />
<br />
Sets the VehicleClass to a Vehicle from the currently valid array. The class can be chosen randomly or sequential. In any case is RandomArrayNumber the index of the chosen entry in the array, so that we can find the matching properties for this vehicle when it's spawned.<br />
<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#Reset|Actor.Reset]]<br />
<br />
Adjust this actor if the sides are switched in ONS and deletes all remaining vehicles on the map.<br />
<br />
====SpawnBuildEffect====<br />
{{code|function '''SpawnBuildEffect''' ()}}<br />
<br />
Spawns the BuildEffect emitter.<br />
<br />
====SpawnVehicle====<br />
{{code|function '''SpawnVehicle''' ()}}<br />
<br />
Spawns the chosen VehicleClass and applies the properties from the matching entry in the array. The creation of a LinkedReplicationInfo for the radar is also handled here, if necessary.<br />
<br />
If the ChooseVehicle function chose an entry with an empty vehicle class, then the Timer is set back to the length of a RespawnTime to try it again.<br />
<br />
====UpdatePrecacheMaterials====<br />
{{code|simulated function '''UpdatePrecacheMaterials''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#UpdatePrecacheMaterials|Actor.UpdatePrecacheMaterials]]<br />
<br />
Loads all vehicles in the arrays into cache to have fast access during the game.<br />
<br />
====VehicleArrayPrecache====<br />
{{code|simulated function '''VehicleArrayPrecache''' ()}}<br />
<br />
Loads all vehicles in the arrays into cache to have fast access during the game.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/EnhancedLevelGameRules?diff=44701User:Crusha/UltimateMappingTools/EnhancedLevelGameRules2011-10-12T22:03:22Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>Original code idea by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map, even if the server has chosen them.<br />
<br />
For instance if you map would be exploited with the Stunt Mutator, you can disable it here completely.<br />
<br />
==Properties==<br />
===Property group 'EnhancedLevelGameRules'===<br />
====NotAllowedMutator====<br />
'''Type:''' [[array]]<[[name]]><br />
<br />
The class name of the Mutator that you want to forbid.<br />
<br />
==Instance functions==<br />
====UpdateGame====<br />
{{code|function '''UpdateGame''' ([[UE2:GameInfo (UT2004)|GameInfo]]&nbsp;'''G''')}}<br />
<br />
'''Overrides:''' [[UE2:LevelGameRules (UT2004)#UpdateGame|LevelGameRules.UpdateGame]]<br />
<br />
Iterate the Mutator list and check if there is a Mutator that we want to forbid. IsA(*Array Entry*) will be used to check for them. Mutators with GroupName "Security" are left alone, although really crucial ones won't even bother about that.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment?diff=44700User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment2011-10-12T21:58:32Z<p>Crusha: First revision of page, Checked for correctness.</p>
<hr />
<div>=UltimateDestroyableEnvironment=<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Allows to set up an actor that gets more and more destroyed when it takes<br />
damage. That is done by having multiple versions of the StaticMesh that are<br />
differently high damaged.<br />
<br />
==Properties==<br />
===Property group 'Events'===<br />
====ResetEvent====<br />
'''Type:''' [[name]]<br />
<br />
Triggered if bReset is True, so that you can potentially do some updates on other things as well when resetting this actor.<br />
<br />
====WrongDamageTypeEvent====<br />
'''Type:''' [[name]]<br />
<br />
Triggered when an invalid DamageType damaged this actor.<br />
<br />
===Property group 'UltimateDestroyableEnvironment'===<br />
====bBlackList====<br />
'''Type:''' [[bool]]<br />
<br />
If true, the DamageTypes in the array can NOT damage this actor.<br />
<br />
'''Default value:''' True<br />
<br />
====bReset====<br />
'''Type:''' [[bool]]<br />
<br />
Reset this actor after the round ended or keep destruction the whole match?<br />
<br />
====bResetEventOnlyWhenFinalDestruction====<br />
'''Type:''' [[bool]]<br />
<br />
If True, only fire off the ResetEvent if an LOD with bFinalDestruction has been reached in this round.<br />
<br />
====DamageTypes====<br />
'''Type:''' [[array]]<[[class]]<[[UE2:DamageType (UT2004)|DamageType]]> ><br />
<br />
Which DamageTypes can affect this actor?<br />
<br />
====LevelOfDestruction====<br />
'''Type:''' [[array]]<{{tl|_LevelOfDestruction}}><br />
<br />
Determines the appearance of the Actor at different health levels.<br />
<br />
====TotalHealth====<br />
'''Type:''' [[int]]<br />
<br />
The initial health of this actor.<br />
<br />
'''Default value:''' 2000<br />
<br />
====WrongDamageEventTreshold====<br />
'''Type:''' [[int]]<br />
<br />
Trigger an event every time this much damage has been caused by a "wrong" DamageType.<br />
<br />
'''Default value:''' 300<br />
<br />
===Internal variables===<br />
====AccumulatedWrongDamage====<br />
'''Type:''' [[int]]<br />
<br />
This much of the wrong damage has been accumulated already.<br />
<br />
====bFinalDestructionReached====<br />
'''Type:''' [[bool]]<br />
<br />
Used by bResetEventOnlyWhenFinalDestruction.<br />
<br />
====CurrentLOD====<br />
'''Type:''' [[int]]<br />
<br />
This tells players who join the match in progress how the Actor currently looks like.<br />
<br />
'''Default value:''' -1<br />
<br />
====i_temp====<br />
'''Type:''' [[int]]<br />
<br />
Counter.<br />
<br />
====j_temp====<br />
'''Type:''' [[int]]<br />
<br />
Remember the current array for use in GainedChild.<br />
<br />
====OldLOD====<br />
'''Type:''' [[int]]<br />
<br />
Only change appearance if we receive a LOD value that is not the same as the old one.<br />
<br />
'''Default value:''' -1<br />
<br />
====OriginalLocation====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Vector|Object.Vector]]<br />
<br />
Remember for calculating offset from default in each LOD.<br />
<br />
====OriginalRotation====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Rotator|Object.Rotator]]<br />
<br />
Remember for calculating rotation offset from default in each LOD.<br />
<br />
====OriginalScale====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Vector|Object.Vector]]<br />
<br />
Just remember this too.<br />
<br />
====OriginalStaticMesh====<br />
'''Type:''' {{cl|StaticMesh}}<br />
<br />
Remember for reset.<br />
<br />
====OriginalStyle====<br />
'''Type:''' [[UE2:Actor enums (UT2004)#ERenderStyle|Actor.ERenderStyle]]<br />
<br />
Don't ask.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#bAlwaysRelevant|bAlwaysRelevant]]<br />
| True<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bBlockActors|bBlockActors]]<br />
| True<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bBlockKarma|bBlockKarma]]<br />
| True<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bCollideActors|bCollideActors]]<br />
| True<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bEdShouldSnap|bEdShouldSnap]]<br />
| True<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#bNetNotify|bNetNotify]]<br />
| True<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bNoDelete|bNoDelete]]<br />
| True<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#bStatic|bStatic]]<br />
| False<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#bWorldGeometry|bWorldGeometry]]<br />
| True<br />
|-<br />
| [[UE2:Actor properties (UT2004)#DrawType|DrawType]]<br />
| [[UE2:Actor enums (UT2004)#EDrawType|DT_StaticMesh]]<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#RemoteRole|RemoteRole]]<br />
| [[UE2:Actor enums (UT2004)#ENetRole|ROLE_SimulatedProxy]]<br />
|-<br />
| [[UE2:Actor properties (UT2004)#StaticMesh|StaticMesh]]<br />
| {{cl|StaticMesh}}'Albatross_architecture.Alb_crate1'<br />
|}<br />
<br />
==Structs==<br />
===_DecoKActor===<br />
You can spawn real chunks that are physics calculated when you destroy this Actor step by step.<br />
; {{cl|StaticMesh}} KActorStaticMesh : This StaticMesh will be used by the KarmaThing that is spawned.<br />
; [[float]] KActorMaxNetUpdateInterval : How often is the KActor maximally updated per second for online games. Should be about 0.5<br />
; [[UE2:KarmaParams (UT2004)|KarmaParams]] KActorParameters : Set the parameters for the new Karma object.<br />
; [[UE2:Object structs (UT2004)#Vector|Object.Vector]] SpawnOffset : Where does the KActor spawn in relation to the location of the StaticMesh?<br />
; [[UE2:Object structs (UT2004)#Rotator|Object.Rotator]] RotationOffset : Which rotation does the KActor have in relation to the StaticMesh?<br />
; [[float]] KActorLifeSpan : <!-- enter variable description --><br />
<br />
===_LevelOfDestruction===<br />
Determines the appearance of the Actor at different health levels.<br />
; {{cl|StaticMesh}} DestroyedStaticMesh : The new StaticMesh that is used at this LOD.<br />
; [[int]] HealthLimit : This LOD becomes active if the actors health drops below this.<br />
; [[UE2:Object structs (UT2004)#Vector|Object.Vector]] StaticMeshScale : Scale the StaticMesh by this value. Values close to 0 are ignored.<br />
; [[UE2:Object structs (UT2004)#Vector|Object.Vector]] StaticMeshOffset : New location of the StaticMesh in relation to the original location.<br />
; [[UE2:Object structs (UT2004)#Rotator|Object.Rotator]] StaticMeshRotation : New rotation of the StaticMesh in relation to the original rotation.<br />
; [[array]]<{{tl|_DecoKActor}}> KarmaDeco : KActors to spawn at the destruction.<br />
; [[name]] TriggerEvent : Trigger this Event once this LOD has been reached.<br />
; [[bool]] bFinalDestruction : <!-- enter variable description --><br />
; [[bool]] bReached : True if this LOD has been executed already.<br />
<br />
==Functions==<br />
===Events===<br />
====GainedChild====<br />
{{code|simulated event '''GainedChild''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#GainedChild|Actor.GainedChild]]<br />
<br />
This is the only place where we can assign our custom KParam as KParam of the spawned KActor before the Karma physics are initilizing.<br />
<br />
====PostBeginPlay====<br />
{{code|simulated event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
Use the Health variable and keep TotalHealth as backup.<br />
<br />
====PostNetReceive====<br />
{{code|simulated event '''PostNetReceive''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostNetReceive|Actor.PostNetReceive]]<br />
<br />
This updates the visuals and collision on the client to the current LOD when the variable changes on the server or when the player just joined.<br />
<br />
====TakeDamage====<br />
{{code|event '''TakeDamage''' ([[int]]&nbsp;'''NDamage''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''instigatedBy''', [[UE2:Object structs (UT2004)#Vector|Object.Vector]]&nbsp;'''hitlocation''', [[UE2:Object structs (UT2004)#Vector|Object.Vector]]&nbsp;'''momentum''', [[class]]<[[UE2:DamageType (UT2004)|DamageType]]>&nbsp;'''damageType''')}}<br />
<br />
'''Overrides:''' [[UE2:Decoration (UT2004)#TakeDamage|Decoration.TakeDamage]]<br />
<br />
Process damage on this actor and change it's appearance if a DamageLimit is reached.<br />
<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Decoration (UT2004)#Trigger|Decoration.Trigger]]<br />
<br />
Triggering will cause the actor to lose all health that is the difference to the next lower LOD, i.e. cause it to active the next LOD.<br />
<br />
===Other instance functions===<br />
====AssignKarmaThingProperties====<br />
{{code|simulated function '''AssignKarmaThingProperties''' ([[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment#DynamicSpawnableKarmaThing|DynamicSpawnableKarmaThing]]&nbsp;'''KarmaThing''', [[float]]&nbsp;'''NewLifeSpan''', {{cl|StaticMesh}}&nbsp;'''NewStaticMesh''', [[float]]&nbsp;'''NewMaxNetUpdateInterval''')}}<br />
<br />
Small hack to get the KarmaThing set up on the client as well.<br />
<br />
====CheckDamageType====<br />
{{code|function [[bool]]&nbsp;'''CheckDamageType''' ([[class]]<[[UE2:DamageType (UT2004)|DamageType]]>&nbsp;'''DT''')}}<br />
<br />
Returns True if the DamageType is considered valid for this actor.<br />
<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#Reset|Actor.Reset]]<br />
<br />
Restore initial values if this actor should be reset.<br />
<br />
====UpdatePrecacheStaticMeshes====<br />
{{code|simulated function '''UpdatePrecacheStaticMeshes''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#UpdatePrecacheStaticMeshes|Actor.UpdatePrecacheStaticMeshes]]<br />
<br />
Load StaticMeshes into memory for faster access.<br />
<br />
<br />
<br />
=DynamicSpawnableKarmaThing=<br />
{{infobox class<br />
| class = DynamicSpawnableKarmaThing<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| customparent1 = KarmaThing<br />
| parent2 = KActor<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A dynamic (and not so network efficient) version of the KarmaThing that can<br />
be spawned at runtime. It's used by the UltimateDestroyableEnvironment and<br />
not supposed to be placed in the map by hand.<br />
<br />
==Default values==<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bNoDelete|bNoDelete]]<br />
| False<br />
|}</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateONSFactory?diff=44699User:Crusha/UltimateMappingTools/UltimateONSFactory2011-10-12T21:44:58Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>=UltimateONSFactory=<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work.<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail. Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially. Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
==Properties==<br />
===Property group 'Events'===<br />
====PreSpawnEvent====<br />
'''Type:''' [[name]]<br />
<br />
Event to trigger before spawn. Not activated when the vehicle was trigger-spawned.<br />
<br />
===Property group 'ONSVehicleFactory'===<br />
====BlueTeamRotation====<br />
'''Type:''' [[int]]<br />
<br />
If bReverseBlueTeamDirection, the Vehicle will not turn by 180 degrees but by this value.<br />
<br />
8192 = 45°; 16384 = 90°; 32768 = 180°; etc..<br />
Negative values will rotate in the opposite direction.<br />
<br />
===Property group 'UltimateONSFactory'===<br />
====bCrushable====<br />
'''Type:''' [[bool]]<br />
<br />
Allow spawning over colliding actors.<br />
<br />
====bEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Factory is triggered "on" at the beginning.<br />
<br />
'''Default value:''' True<br />
<br />
====bIndependentFactory====<br />
'''Type:''' [[bool]]<br />
<br />
PowerNode has no influence on the factory's activity or team number.<br />
<br />
====bRandomFlip====<br />
'''Type:''' [[bool]]<br />
<br />
Neutral vehicles may face in BlueTeamRotation.<br />
<br />
====bTriggeredSpawn====<br />
'''Type:''' [[bool]]<br />
<br />
If True, this factory will immediately spawn a vehicle when being triggered.<br />
<br />
If False, triggering will enable the factory and untriggering will disable it.<br />
<br />
====bUniqueVehicle====<br />
'''Type:''' [[bool]]<br />
<br />
Factory spawns only a limited number of vehicles, there will be no second one when they are destroyed.<br />
MaxVehicleCount determines the number of vehicles that can be spawned.<br />
<br />
====bUseStaticTeams====<br />
'''Type:''' [[bool]]<br />
<br />
Factory works only for one team.<br />
<br />
====NotLockedForTeam====<br />
'''Type:''' [[byte]]<br />
<br />
This will always lock the Vehicles for the TeamNum that is NOT entered here.<br />
255 is normal ONS, 0 will always lock this for Blue, 1 always for Red.<br />
<br />
(Hack for Minigun turrets - it makes pretty much only sense to use this with them at the team's Core)<br />
<br />
'''Default value:''' 255<br />
<br />
====PreSpawnTime====<br />
'''Type:''' [[float]]<br />
<br />
Time before spawn to trigger PrepSpawn-Event and -Effect.<br />
<br />
'''Default value:''' 2.0<br />
<br />
====RetrySpawnTime====<br />
'''Type:''' [[float]]<br />
<br />
Interval to wait if spawn area is blocked.<br />
<br />
'''Default value:''' 1.0<br />
<br />
====StaticTeamNum====<br />
'''Type:''' [[byte]]<br />
<br />
0= red, 1= blue, 255= neutral / none<br />
<br />
TeamNums are switched automatically on Reset, if necessary. This is primarily used in combination with bIndependentFactory.<br />
<br />
====VehicleListBlue====<br />
'''Type:''' [[array]]<{{tl|SpawnedVehicleProperties}}><br />
<br />
List for random vehicle spawn if blue has the factory<br />
<br />
====VehicleListRed====<br />
'''Type:''' [[array]]<{{tl|SpawnedVehicleProperties}}><br />
<br />
List for random vehicle spawn if red or neutral has the factory<br />
<br />
====VehicleSelectionType====<br />
'''Type:''' {{tl|EVehicleSelectionType}}<br />
<br />
Which method should be used to select the vehicle for spawning.<br />
<br />
===Internal variables===<br />
====bInitiallyEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Needed for Reset().<br />
<br />
====RadarRI====<br />
'''Type:''' {{cl|UltimateONSRadarHUDRI}}<br />
<br />
Takes care of spawning the HUDOverlay on the client.<br />
<br />
====RandomArrayNumber====<br />
'''Type:''' [[int]]<br />
<br />
For accessing the properties of the individual vehicle<br />
<br />
====SequentialArrayNumberRed====<br />
'''Type:''' [[int]]<br />
<br />
Same, but in a sequential order.<br />
<br />
====SequentialArrayNumberBlue====<br />
'''Type:''' [[int]]<br />
<br />
Need seperate ones for Red and Blue.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor properties (UT2004)#DrawType|DrawType]]<br />
| [[UE2:Actor enums (UT2004)#EDrawType|DT_Sprite]]<br />
|}<br />
<br />
==Enums==<br />
====ESpawnSize====<br />
The size of the spawneffect particle ring around the vehicle to use.<br />
;SIZE_None :<br />
;SIZE_Scorpion :<br />
;SIZE_Manta :<br />
;SIZE_Raptor :<br />
;SIZE_Hellbender :<br />
;SIZE_Goliath :<br />
;SIZE_Leviathan :<br />
<br />
====EVehicleSelectionType====<br />
Which method should be used to select the vehicle for spawning.<br />
; VST_Random : Random from list, equal chances for everyone.<br />
; VST_Probability : Use Probability values of the vehicle, so some vehicles are more likely than others.<br />
; VST_Sequential : Always select the next entry from the list when spawning a new vehicle.<br />
; VST_OnceRandom : Random as above, just that the choice will be used for the whole match.<br />
; VST_OnceProbability : Use Probablity as above, just that the choice will be used for the whole match.<br />
<br />
==Structs==<br />
===SpawnedVehicleProperties===<br />
A load of customization and you need to do it for every entry in the list and for red and blue separately. But it pays out.<br />
; [[class]]<[[UE2:Vehicle (UT2004)|Vehicle]]> Vehicle : The vehicle that is spawned with this entry.<br />
; [[int]] Health : Give the spawned Vehicle a custom Health value. 0 will use the Vehicle's default.<br />
; [[float]] SpawnProbability : Used with bUseSpawnProbability. You can enter whatever you like, just the relative difference between the entries counts.<br />
; [[name]] VehicleSpawnedEvent : Tag to be triggered upon spawning of this particular vehicle (additionally to the one of the factory itself). The vehicle will be the instigator.<br />
; [[name]] VehicleDestroyedEvent : Tag to be triggered upon destruction of the vehicle. Vehicle must be a subclass of ONSVehicle for this to happen.<br />
; {{tl|ESpawnSize}} SpawnEffectSize : The size of the spawneffect around the vehicle to use.<br />
; [[bool]] bEjectDriver : Eject driver when vehicle gets destroyed instead of killing him.<br />
; [[bool]] bEnterringDoesNotUnlock : Vehicle is not unlocked when a player enters it.<br />
; [[float]] SpawnProtectionTime : The vehicle is shielded from any damage for this many seconds after spawn (spawn protection is lift immediately when a driver enters). 0 disables this, -1 means the vehicle is protected until someone enters it.<br />
; [[bool]] bChangeMaxDesireability : If True, use a custom MaxDesirability value to tell bots if they should use the vehicle or not.<br />
; [[float]] MaxDesireability : Default values are: Scorpion - 0.4; Hellbender - 0.5; Raptor, Cicada, Manta, SPMA, Paladin - 0.6; Goliath, Ion Tank - 0.8; Leviathan - 2.0. Go figure what matches your vehicle best.<br />
; [[bool]] bTrackVehicleOnRadar : The vehicle's location will be shown in realtime on the RadarMap.<br />
; [[bool]] bRadarVisibleToDriver : Should the vehicle be shown on the radar to it's driver? Only useful if you have a large delay between the updates and want to estimate where your team sees you on the radar.<br />
; [[bool]] bRadarNeutralWhenEmpty : If true, the vehicle is drawn with white team color when it's left.<br />
; [[bool]] bRadarHideWhenEmpty : If true, the vehicle is not drawn when it's empty.<br />
; {{tl|ERadarVehicleVisibility|UltimateRadarVehicleLRI}} RadarVehicleVisibility : Here you set to which players the vehicle is shown on the RadarMap.<br />
; [[float]] RadarOwnerUpdateTime : How many seconds have to pass before the location of vehicle is updated for the owning team.<br />
; [[float]] RadarEnemyUpdateTime : Same as above, just for enemies.<br />
; [[bool]] bRadarFadeWithOwnerUpdateTime : If True, the icon on the radar map will interpolate between opaque and translucent as time passes between location updates on the radar.<br />
; [[bool]] bRadarFadeWithEnemyUpdateTime : If False, the icon will always stay fully opaque.<br />
; [[UE2:Material (UT2004)|Material]] RadarTexture : The texture that represents the vehicle on the radar. It should have an alpha channel and be set to TC_Clamp. A bunch of vehicle textures for the radar are delivered in the texture package that comes with this toolset.<br />
; [[float]] RadarTextureScale : The image will be scaled by this factor.<br />
; [[int]] RadarTextureRotationOffset : The image will be rotated by this (in Rotation Units), in case your texture doesn't face the right way (up is the direction the vehicle is driving to).<br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#PostBeginPlay|ONSVehicleFactory.PostBeginPlay]]<br />
<br />
Performs a check to notify the mapper if this actor is useless.<br />
References the one and only VehicleLRIMaster in the map. If it doesn't exist yet, a new one is spawned.<br />
Sets some inherited variables to the correct values, enables the factory if necessary and precaches all the vehicles in the array.<br />
<br />
====PostNetBeginPlay====<br />
{{code|event '''PostNetBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#PostNetBeginPlay|ONSVehicleFactory.PostNetBeginPlay]]<br />
<br />
Activates the factory, either according to the closest ONSPowerNode (uses super function) or with a fixed team number, making the factory effectively independent from a PowerNode.<br />
<br />
====SetInitialState====<br />
{{code|event '''SetInitialState''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#SetInitialState|Actor.SetInitialState]]<br />
<br />
Remove this factory from the PowerCore's dynamic 'CloseActors'-array.<br />
By doing this, destroying the closest Node will no longer disable this factory.<br />
Executing at this point makes sure that the PostNetBeginPlay() of the PowerCore has been called already.<br />
<br />
====Timer====<br />
{{code|event '''Timer''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#Timer|ONSVehicleFactory.Timer]]<br />
<br />
The main function of this actor. It handles when to call which other function.<br />
<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#Trigger|ONSVehicleFactory.Trigger]]<br />
<br />
Either enable or spawn directly if bTriggeredSpawn.<br />
<br />
====UnTrigger====<br />
{{code|event '''UnTrigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#UnTrigger|Actor.UnTrigger]]<br />
<br />
Disable if not bTriggeredSpawn.<br />
<br />
====VehicleDestroyed====<br />
{{code|event '''VehicleDestroyed''' ([[UE2:Vehicle (UT2004)|Vehicle]]&nbsp;'''V''')}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#VehicleDestroyed|ONSVehicleFactory.VehicleDestroyed]]<br />
<br />
VehicleCount gets reduced (if wished) and the LinkedReplicationInfo for the radar is removed, if one for this vehicle existed.<br />
<br />
===Other instance functions===<br />
====Activate====<br />
{{code|function '''Activate''' ([[byte]]&nbsp;'''T''')}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#Activate|ONSVehicleFactory.Activate]]<br />
<br />
Activation depending on close Nodes.<br />
<br />
====ChooseVehicle====<br />
{{code|function '''ChooseVehicle''' ()}}<br />
<br />
Sets the VehicleClass to a Vehicle from the currently valid array. The class can be chosen randomly or sequential. In any case is RandomArrayNumber the index of the chosen entry in the array, so that we can find the matching properties for this vehicle when it's spawned.<br />
<br />
====Deactivate====<br />
{{code|function '''Deactivate''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#Deactivate|ONSVehicleFactory.Deactivate]]<br />
<br />
Deactivation depending on close Nodes.<br />
<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#Reset|Actor.Reset]]<br />
<br />
Adjust this actor if the sides are switched in ONS and deletes all remaining vehicles on the map.<br />
<br />
====SidesAreSwitched====<br />
{{code|function [[bool]]&nbsp;'''SidesAreSwitched''' ()}}<br />
<br />
Just to make the code more surveillable.<br />
<br />
====SpawnBuildEffect====<br />
{{code|function '''SpawnBuildEffect''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#SpawnBuildEffect|ONSVehicleFactory.SpawnBuildEffect]]<br />
<br />
Spawns the BuildEffect emitter.<br />
<br />
====SpawnVehicle====<br />
{{code|function '''SpawnVehicle''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#SpawnVehicle|ONSVehicleFactory.SpawnVehicle]]<br />
<br />
Spawns the chosen VehicleClass and applies the properties from the matching entry in the array. The creation of a LinkedReplicationInfo for the radar is also handled here, if necessary.<br />
<br />
If the ChooseVehicle function chose an entry with an empty vehicle class, then the Timer is set back to the length of a RespawnTime to try it again.<br />
<br />
====UpdatePrecacheMaterials====<br />
{{code|simulated function '''UpdatePrecacheMaterials''' ()}}<br />
<br />
'''Overrides:''' [[UE2:ONSVehicleFactory (UT2004)#UpdatePrecacheMaterials|ONSVehicleFactory.UpdatePrecacheMaterials]]<br />
<br />
Loads all vehicles in the arrays into cache to have fast access during the game.<br />
<br />
====VehicleArrayPrecache====<br />
{{code|simulated function '''VehicleArrayPrecache''' ()}}<br />
<br />
Loads all vehicles in the arrays into cache to have fast access during the game.<br />
<br />
<br />
<br />
=UltimateONSRadarHUDRI=<br />
{{infobox class<br />
| class = UltimateONSRadarHUDRI<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = ReplicationInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
{{autogenerated}}<br />
<br />
Creates the HUDOverlay for the Ultimate ONS radar map. For the vehicle stuff<br />
and so on.<br />
<br />
==Properties==<br />
====bCreatedOverlay====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====bRadarMutatorEnabled====<br />
'''Type:''' [[bool]]<br />
<br />
Disable radar functionality in that case.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#NetUpdateFrequency|NetUpdateFrequency]]<br />
| 1.0<br />
|}<br />
<br />
==Functions==<br />
===Events===<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====HasRadarMutator====<br />
{{code|function [[bool]]&nbsp;'''HasRadarMutator''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
====HealDamage====<br />
{{code|function [[bool]]&nbsp;'''HealDamage''' ([[int]]&nbsp;'''Amount''', [[UE2:Controller (UT2004)|Controller]]&nbsp;'''Healer''', [[class]]<[[UE2:DamageType (UT2004)|DamageType]]>&nbsp;'''DamageType''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#HealDamage|Actor.HealDamage]]<br />
<br />
<!-- enter function description --><br />
<br />
<br />
<br />
=UltimateRadarVehicleHUDOverlay=<br />
{{infobox class<br />
| class = UltimateRadarVehicleHUDOverlay<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = HudOverlay<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
{{autogenerated}}<br />
HUDOverlay for UltimateONSFactory<br />
<br />
This Overlay displays the location of a Vehicle on the RadarMap in realtime.<br />
<br />
==Properties==<br />
====ONSHUD====<br />
'''Type:''' [[UE2:ONSHUDOnslaught (UT2004)|ONSHUDOnslaught]]<br />
<br />
<!-- enter variable description --><br />
<br />
====OnsIconScale====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====PCOwner====<br />
'''Type:''' [[UE2:PlayerController (UT2004)|PlayerController]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarPosX====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarPosY====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarRange====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarScale====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarTrans====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====VehicleLRIMaster====<br />
'''Type:''' {{cl|UltimateRadarVehicleLRIMaster}}<br />
<br />
<!-- enter variable description --><br />
<br />
==Functions==<br />
===Events===<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====bDrawRadar====<br />
{{code|simulated function [[bool]]&nbsp;'''bDrawRadar''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
====DrawRadar====<br />
{{code|simulated function '''DrawRadar''' ([[UE2:Canvas (UT2004)|Canvas]]&nbsp;'''C''', [[float]]&nbsp;'''CenterRadarPosX''', [[float]]&nbsp;'''CenterRadarPosY''', [[float]]&nbsp;'''RadarWidth''', [[UE2:Object structs (UT2004)#Vector|Object.Vector]]&nbsp;'''MapCenter''')}}<br />
<br />
<!-- enter function description --><br />
<br />
====Render====<br />
{{code|simulated function '''Render''' ([[UE2:Canvas (UT2004)|Canvas]]&nbsp;'''C''')}}<br />
<br />
'''Overrides:''' [[UE2:HudOverlay (UT2004)#Render|HudOverlay.Render]]<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo?diff=44698User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo2011-10-12T21:14:25Z<p>Crusha: First revision of page. Checked for correctness.</p>
<hr />
<div>by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
ParallaxSkyZoneInfo. Place this instead of a SkyZoneInfo in the skybox.<br />
<br />
==Properties==<br />
===Property group 'ParallaxSkyZoneInfo'===<br />
====SkyBoxRelativeOffset====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Vector|Object.Vector]]<br />
<br />
<!-- enter variable description --><br />
<br />
====SkyScale====<br />
'''Type:''' [[float]]<br />
<br />
The SkyZoneInfo is moved around relative to the player's location in the map. With this value do you scale how much movement is applied. You need to experiment with the value as it depends on the size of your map and skybox.<br />
<br />
'''Default value:''' 0.0625<br />
<br />
===Internal variables===<br />
====MyMover====<br />
'''Type:''' {{cl|ParallaxSkyboxMover}}<br />
<br />
The ClientMover that moves the SkyZoneInfo around.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#bStatic|bStatic]]<br />
| False<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#RemoteRole|RemoteRole]]<br />
| [[UE2:Actor enums (UT2004)#ENetRole|ROLE_None]]<br />
|-<br />
| [[UE2:Actor properties (UT2004)#Texture|Texture]]<br />
| [[UE2:Texture (UT2004)|Texture]]'UltimateMappingTools_Tex.Icons.ParallaxSkyZone_Icon'<br />
|}<br />
<br />
==Events==<br />
====PostBeginPlay====<br />
{{code|simulated event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
Create the SkyBoxMover and tell him what to do.<br />
<br />
<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyboxMover<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
SkyboxMover for the ParralaxSkyZoneInfo.<br />
<br />
==Properties==<br />
====CachedPlayer====<br />
'''Type:''' [[UE2:PlayerController (UT2004)|PlayerController]]<br />
<br />
The local PlayerController.<br />
<br />
====MovingSky====<br />
'''Type:''' [[UE2:Actor (UT2004)|Actor]]<br />
<br />
The ParallaxSkyZoneInfo that we are moving.<br />
<br />
====Offset====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Vector|Object.Vector]]<br />
<br />
<!-- enter variable description --><br />
<br />
====Scale====<br />
'''Type:''' [[float]]<br />
<br />
The SkyZoneInfo is moved around relative to the player's location in the map. With this value do you scale how much movement is applied. You need to experiment with the value as it depends on the size of your map and skybox.<br />
<br />
==Events==<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''Delta''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
Move the SkyZoneInfo to the new location relative to the player's location in the map.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateRadarMap?diff=44694User:Crusha/UltimateMappingTools/UltimateRadarMap2011-10-12T21:04:11Z<p>Crusha: Added related helper classes with autogenerated descriptions.</p>
<hr />
<div>{{infobox class<br />
| class = UltimateRadarMap<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
==Properties==<br />
===Property group 'UltimateRadarMap'===<br />
====bShowOwnObjectiveCarrier====<br />
'''Type:''' [[bool]]<br />
<br />
Shows the location of the own flag/bomb carrier (i.e. your teammember that stole the enemy flag) on radar.<br />
<br />
'''Default value:''' True<br />
<br />
====bShowEnemyObjectiveCarrier====<br />
'''Type:''' [[bool]]<br />
<br />
Shows the location of the enemy flag/bomb carrier on radar.<br />
<br />
====bShowNonClassifiedGameObjectives====<br />
'''Type:''' [[bool]]<br />
<br />
Shows GameObjectives on the radar that are neither Flags, nor DomintationPoints, nor Bombs, nor BombDeliveries.<br />
I.e. Assault Objectives.<br />
<br />
'''Default value:''' True<br />
<br />
<br />
====bUseActorLocationAsMapCenter====<br />
'''Type:''' [[bool]]<br />
<br />
If true, the map center is not assumed to be at 0,0,0 but at the location of this Actor.<br />
This way you don't have to adjust the entire rest of your map to match the center of the editor.<br />
<br />
'''Default value:''' True<br />
<br />
===Internal variables===<br />
====bAddedOverlay====<br />
'''Type:''' [[bool]]<br />
<br />
The HUDOverlay has been added by Tick() already.<br />
<br />
====bDisabled====<br />
'''Type:''' [[bool]]<br />
<br />
Some Mutator wants us disabled, so we obey.<br />
<br />
====bHasRadarVehicles====<br />
'''Type:''' [[bool]]<br />
<br />
If no UltimateVehicleFactories are in the match or none of them has a vehicle that should be shown on the radar, we can tell the HUDOverlay to save some performance by skipping that check.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bNoDelete|bNoDelete]]<br />
| True<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#NetUpdateFrequency|NetUpdateFrequency]]<br />
| 1.0<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#RemoteRole|RemoteRole]]<br />
| [[UE2:Actor enums (UT2004)#ENetRole|ROLE_SimulatedProxy]]<br />
|}<br />
<br />
==Functions==<br />
===Events===<br />
====BeginPlay====<br />
{{code|event '''BeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#BeginPlay|Actor.BeginPlay]]<br />
<br />
Check for Radar Mutators and disable us if one is found or if we are in an ONS map since that one already has a radar map.<br />
<br />
====PostBeginPlay====<br />
{{code|simulated event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
Check if there are vehicles that should be tracked on the radar.<br />
<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
Used on clients to spawn the HUDOverlay.<br />
<br />
===Other instance functions===<br />
====HealDamage====<br />
{{code|function [[bool]]&nbsp;'''HealDamage''' ([[int]]&nbsp;'''Amount''', [[UE2:Controller (UT2004)|Controller]]&nbsp;'''Healer''', [[class]]<[[UE2:DamageType (UT2004)|DamageType]]>&nbsp;'''DamageType''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#HealDamage|Actor.HealDamage]]<br />
<br />
Hack:<br />
<br />
If some Mutator knows about us but doesn't want to deal with our variables and functions in particular because he doesn't want to compile us with him, he can use this method.<br />
<br />
By calling this very basic function that exists in the Actor class, he can use a plain A.IsA('UltimateRadarMap') and then A.HealDamage() to disable the radar stuff.<br />
<br />
I simply assume that no code out there would ever attempt to heal damage on an unknown Info class for whatever reason. But to be absolutely sure, the Amount must be less than 0. ;)<br />
<br />
It's recommend to make this happen before PostBeginPlay().<br />
<br />
====MutatorCheck====<br />
{{code|function [[bool]]&nbsp;'''MutatorCheck''' ()}}<br />
<br />
Returns True if a loaded Mutator affects the radar and thus we should rather disable ourselves. It is only checked if "Radar" is in the GroupName of the Mutator.<br />
<br />
<br />
<br />
<br />
{{infobox class<br />
| class = UltimateRadarMapHUDOverlay<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = HudOverlay<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
{{autogenerated}}<br />
<br />
Shows the Radar Map in the player's HUD.<br />
<br />
==Properties==<br />
====bMapDisabled====<br />
'''Type:''' [[bool]]<br />
<br />
Can be toggled by the player.<br />
<br />
====bShowEnemyObjectiveCarrier====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====bShowNonClassifiedGameObjectives====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====bShowOwnObjectiveCarrier====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====bTrackVehiclesOnRadar====<br />
'''Type:''' [[bool]]<br />
<br />
<!-- enter variable description --><br />
<br />
====IconScale====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====MapCenterLocation====<br />
'''Type:''' [[UE2:Object structs (UT2004)#Vector|Object.Vector]]<br />
<br />
<!-- enter variable description --><br />
<br />
====Objectives====<br />
'''Type:''' [[array]]<[[UE2:GameObjective (UT2004)|GameObjective]]><br />
<br />
<!-- enter variable description --><br />
<br />
====PCOwner====<br />
'''Type:''' [[UE2:PlayerController (UT2004)|PlayerController]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarPosX====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarPosY====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarRange====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarScale====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====RadarTrans====<br />
'''Type:''' [[float]]<br />
<br />
<!-- enter variable description --><br />
<br />
====VehicleLRIMaster====<br />
'''Type:''' {{cl|UltimateRadarVehicleLRIMaster}}<br />
<br />
The manager of all radar-related vehicle replication. There should be only one at a time.<br />
<br />
==Functions==<br />
===Events===<br />
====BeginPlay====<br />
{{code|simulated event '''BeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#BeginPlay|Actor.BeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====PostBeginPlay====<br />
{{code|simulated event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
<!-- enter event description --><br />
<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====bDrawRadar====<br />
{{code|simulated function [[bool]]&nbsp;'''bDrawRadar''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
====DrawRadar====<br />
{{code|simulated function '''DrawRadar''' ([[UE2:Canvas (UT2004)|Canvas]]&nbsp;'''C''', [[float]]&nbsp;'''CenterRadarPosX''', [[float]]&nbsp;'''CenterRadarPosY''', [[float]]&nbsp;'''RadarWidth''', [[UE2:Object structs (UT2004)#Vector|Object.Vector]]&nbsp;'''MapCenter''')}}<br />
<br />
<!-- enter function description --><br />
<br />
====Render====<br />
{{code|simulated function '''Render''' ([[UE2:Canvas (UT2004)|Canvas]]&nbsp;'''C''')}}<br />
<br />
'''Overrides:''' [[UE2:HudOverlay (UT2004)#Render|HudOverlay.Render]]<br />
<br />
<!-- enter function description --><br />
<br />
====ToggleRadarMap====<br />
{{code|function '''ToggleRadarMap''' ()}}<br />
<br />
<!-- enter function description --><br />
<br />
<br />
<br />
<br />
{{infobox class<br />
| class = UltimateRadarMapInteraction<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Interaction<br />
| parent2 = Interactions<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
{{autogenerated}}<br />
<br />
Used by the UltimateRadarMapHUDOverlay to toggle the RadarMap on or off<br />
with F12.<br />
<br />
==Properties==<br />
====ParentRadarMapHUDOverlay====<br />
'''Type:''' {{cl|UltimateRadarMapHUDOverlay}}<br />
<br />
Set by the HUDOverlay that created us.<br />
<br />
==Functions==<br />
===Exec functions===<br />
====ToggleRadarMap====<br />
{{code|exec function '''ToggleRadarMap''' ()}}<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/UltimateRadarMap?diff=44693User:Crusha/UltimateMappingTools/UltimateRadarMap2011-10-12T20:56:33Z<p>Crusha: First revision of page, checked for correctness.</p>
<hr />
<div>{{infobox class<br />
| class = UltimateRadarMap<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
==Properties==<br />
===Property group 'UltimateRadarMap'===<br />
====bShowOwnObjectiveCarrier====<br />
'''Type:''' [[bool]]<br />
<br />
Shows the location of the own flag/bomb carrier (i.e. your teammember that stole the enemy flag) on radar.<br />
<br />
'''Default value:''' True<br />
<br />
====bShowEnemyObjectiveCarrier====<br />
'''Type:''' [[bool]]<br />
<br />
Shows the location of the enemy flag/bomb carrier on radar.<br />
<br />
====bShowNonClassifiedGameObjectives====<br />
'''Type:''' [[bool]]<br />
<br />
Shows GameObjectives on the radar that are neither Flags, nor DomintationPoints, nor Bombs, nor BombDeliveries.<br />
I.e. Assault Objectives.<br />
<br />
'''Default value:''' True<br />
<br />
<br />
====bUseActorLocationAsMapCenter====<br />
'''Type:''' [[bool]]<br />
<br />
If true, the map center is not assumed to be at 0,0,0 but at the location of this Actor.<br />
This way you don't have to adjust the entire rest of your map to match the center of the editor.<br />
<br />
'''Default value:''' True<br />
<br />
===Internal variables===<br />
====bAddedOverlay====<br />
'''Type:''' [[bool]]<br />
<br />
The HUDOverlay has been added by Tick() already.<br />
<br />
====bDisabled====<br />
'''Type:''' [[bool]]<br />
<br />
Some Mutator wants us disabled, so we obey.<br />
<br />
====bHasRadarVehicles====<br />
'''Type:''' [[bool]]<br />
<br />
If no UltimateVehicleFactories are in the match or none of them has a vehicle that should be shown on the radar, we can tell the HUDOverlay to save some performance by skipping that check.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| [[UE2:Actor properties (UT2004)#bNoDelete|bNoDelete]]<br />
| True<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#NetUpdateFrequency|NetUpdateFrequency]]<br />
| 1.0<br />
|-<br />
| [[UE2:Actor internal variables (UT2004)#RemoteRole|RemoteRole]]<br />
| [[UE2:Actor enums (UT2004)#ENetRole|ROLE_SimulatedProxy]]<br />
|}<br />
<br />
==Functions==<br />
===Events===<br />
====BeginPlay====<br />
{{code|event '''BeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#BeginPlay|Actor.BeginPlay]]<br />
<br />
Check for Radar Mutators and disable us if one is found or if we are in an ONS map since that one already has a radar map.<br />
<br />
====PostBeginPlay====<br />
{{code|simulated event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#PostBeginPlay|Actor.PostBeginPlay]]<br />
<br />
Check if there are vehicles that should be tracked on the radar.<br />
<br />
====Tick====<br />
{{code|simulated event '''Tick''' ([[float]]&nbsp;'''DeltaTime''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor events (UT2004)#Tick|Actor.Tick]]<br />
<br />
Used on clients to spawn the HUDOverlay.<br />
<br />
===Other instance functions===<br />
====HealDamage====<br />
{{code|function [[bool]]&nbsp;'''HealDamage''' ([[int]]&nbsp;'''Amount''', [[UE2:Controller (UT2004)|Controller]]&nbsp;'''Healer''', [[class]]<[[UE2:DamageType (UT2004)|DamageType]]>&nbsp;'''DamageType''')}}<br />
<br />
'''Overrides:''' [[UE2:Actor instance functions (UT2004)#HealDamage|Actor.HealDamage]]<br />
<br />
Hack:<br />
<br />
If some Mutator knows about us but doesn't want to deal with our variables and functions in particular because he doesn't want to compile us with him, he can use this method.<br />
<br />
By calling this very basic function that exists in the Actor class, he can use a plain A.IsA('UltimateRadarMap') and then A.HealDamage() to disable the radar stuff.<br />
<br />
I simply assume that no code out there would ever attempt to heal damage on an unknown Info class for whatever reason. But to be absolutely sure, the Amount must be less than 0. ;)<br />
<br />
It's recommend to make this happen before PostBeginPlay().<br />
<br />
====MutatorCheck====<br />
{{code|function [[bool]]&nbsp;'''MutatorCheck''' ()}}<br />
<br />
Returns True if a loaded Mutator affects the radar and thus we should rather disable ourselves. It is only checked if "Radar" is in the GroupName of the Mutator.</div>Crushahttps://wiki.beyondunreal.com/Structs?diff=44545Structs2011-08-17T12:02:00Z<p>Crusha: Beware of the fact that iterators will make a copy of the struct instead of a reference.</p>
<hr />
<div>A '''struct''' (or '''structure''') is a composite data type in [[UnrealScript]], that can contain multiple member variables of (almost) any type, including another struct type. Structs are ''not'' reference types, that means a variable of a struct type actually contains the struct data itself, not a reference to the struct data. This imposes an important restriction on struct types: a struct may not directly or indirectly contain a variable of that same struct type.<br />
<br />
'''Note:''' The compiler will probably not complain about a struct violating this restriction. However, if the struct type is used to declare any class or local variables or function parameters or return types, the compiler will likely crash as it attempts to allocate an infinite amount of memory!<br />
<br />
==Declaration syntax==<br />
The general syntax of a struct declaration is:<br />
'''struct''' [[#Modifiers|''[modifiers]'']] ''structname'' ['''[[extends]]''' ''parentstruct''] '''{'''<br />
...<br />
'''};'''<br />
Like [[enums]], struct declarations may appear either as standalone declaration, in which case they must be followed by a semicolon, or as inline declaration instead of the type specification in variable declarations. Struct declarations may be contained in other struct declarations, both standalone or in variable declarations. There is no difference between declaring a struct at the class level and within another struct or between a standalone and inline declaration, in all cases the struct is a direct member of the class.<br />
<br />
Remember that all members of an UnrealScript class share the same namespace. A struct declaration may hide any member of a parent class if it has the same name.<br />
<br />
==Modifiers==<br />
Struct modifiers are not available in [[Unreal Engine 1]]. Most struct modifiers are related to native code. <br />
* <sup>2</sup> &ndash; The modifier is available in [[Unreal Engine 2]].<br />
* <sup>3</sup> &ndash; The modifier is available in [[Unreal Engine 3]].<br />
* <sup>3+</sup> &ndash; The modifier is available in later [[Unreal Engine 3]] versions, such as the [[UDK]].<br />
<br />
===Modifiers affecting UnrealEd=== <br />
; Long<sup>2</sup>{{confirm}}: Specifies that the struct contains many members and should not be examined when generating a value string for struct variables in [[UnrealEd]]'s [[Actor properties window]]. Usually structs like [[Vector]] are displayed as "(X=1.2,Y=3.4,Z=5.6)", but with the ''long'' modifier only "(...)" is displayed.<br />
<br />
===Modifiers affecting values===<br />
; Immutable<sup>3</sup>, ImmutableWhenCooked<sup>3</sup> : The struct uses [[wp:Serialization|binary serialization]](in previous engine versions some structs used hardcoded binary serialization in c++ e.g. [[Vector]], [[Rotator]] and [[Color]] etc). Without this flag, each struct member will be saved with a ''nameindex'' followed by a ''packedbyte'', ''size'' and ''arrayindex'', then the value of the specific member, thus increases file size and slows down the serialization process.<br />
; Atomic<sup>3</sup>, AtomicWhenCooked<sup>3</sup> : Indicates that this struct should always be serialized as a single unit; if any property in the struct differs from its defaults, then all elements of the struct will be serialized.<br />
; StrictConfig<sup>3</sup> : When the struct variable is flagged with ''[[config]]/[[GlobalConfig|globalconfig]]'' then only members with the flag ''config/globalconfig'' will be readable from the .ini, instead of all members.<br />
; Transient<sup>2,3</sup> : See [[Variables#Modifiers_affecting_values|Transient]] but instead it applies to all the members of the struct.<br />
<br />
===Other modifiers===<br />
; Export<sup>2,3</sup> : The struct is supposed to be exported to native headers.<br />
; Init<sup>2,3</sup> : '''???'''<br />
; Native<sup>2,3</sup> : The struct includes native logic.<br />
; {''native type name''}<sup>3</sup> : The type to use in [[native]] code instead of this struct type. This is mainly a hack in Unreal Engine 3 to declare variables in UnrealScript with types the UnrealScript language does not provide. There are only three instances of this syntax in [[UT3]]. The structs [[UE3:Object (UT3)#qword|Object.qword]] and [[UE3:Object (UT3)#double|Object.double]] represent the native types [[wp:Qword#Dword_and_Qword|QWORD]] and [[wp:Double_precision_floating-point_format|DOUBLE]] respectively, and the struct [[UE3:UIEditorOptions (UT3)#ViewportDimension|UIEditorOptions.ViewportDimension]] represents the native type [http://docs.wxwidgets.org/trunk/classwx_rect.html WxRect].<br />
<br />
==Member declarations==<br />
Struct members are declared like class [[variables]]. A variable group name or certain [[Variables#Modifiers|variable modifiers]] don't make sense for struct members, though.<br />
<br />
Note that in order to refer to structs declared in other classes, you may need to use<br />
[[DependsOn|<code>dependson</code> modifier]].<br />
<br />
===Default member values===<br />
By default all struct member variables are initialized with the [[null value]] of the corresponding type.<br />
<br />
Starting with [[Unreal Engine 3]], struct members can also have a default value other than the corresponding null value. This can be defined in a [[structdefaultproperties]] block inside the struct declaration. See [[Defaultproperties#Default_struct_properties|structdefaultproperties]] for more details.<br />
<br />
==Native struct code==<br />
Like native [[class#Native class code|class]]es, some structs in [[Unreal Engine 2]] and 3 games may contain native code snippets([[cpptext]]) in UnrealScript. These declarations do not affect UnrealScript directly, but they are exported when auto-generating native headers while compiling UnrealScript classes. In [[Unreal Tournament 2004|UT2004]] there are only two struct like this, [[UE2:GUI (UT2004)#GUITreeNode|GUI.GUITreeNode]] and [[UE2:GUIMultiColumnList (UT2004)#MultiColumnSortData|GUIMultiColumnList.MultiColumnSortData]]. In Unreal Engine 3 games this is a much more common sight, especially in UI-related classes.<br />
<br />
In Unreal Engine 2 native struct code is enclosed in a '''cppstruct''' block. Unreal Engine 3 uses a '''structcpptext''' block instead.<br />
<br />
==Accessing structs==<br />
Accessing a struct is as easily as accessing a [[class]], here's an example.<br />
<uscript><br />
class A extends Actor;<br />
<br />
var() LinearColor RedColor;<br />
<br />
// Modify RedColor at Runtime rather than on defaultproperties.<br />
event PreBeginPlay()<br />
{<br />
super.PreBeginPlay(); // Call the parent(i.e. Actor) PreBeginPlay() event<br />
RedColor.R = 1.0; // Make RedColor really red, assuming A is 1.0 and G and B are 0.0.<br />
}<br />
</uscript><br />
<br />
===Accessing structs in arrays===<br />
When working with structs in arrays you need to be aware of the difference between an [[ForEach loop|iterator]] and a regular [[For loop|loop]].<br />
<br />
An iterator will create a copy of the actual struct while a loop will use references to the existing structs. That means that you can not change values of the original struct when using iterators.<br />
<uscript><br />
class A extends Actor;<br />
<br />
var() array<LinearColor> Colors;<br />
<br />
// Modify Colors at Runtime rather than on defaultproperties.<br />
event PreBeginPlay()<br />
{<br />
local int i;<br />
local LinearColor Iterator;<br />
<br />
super.PreBeginPlay(); // Call the parent(i.e. Actor) PreBeginPlay() event<br />
<br />
foreach Colors(Iterator)<br />
{<br />
if (Iterator.G == 0.0 && Iterator.B == 0.0)<br />
Iterator.R = 1.0; // This won't have any effect on the struct values in the array.<br />
}<br />
<br />
for (i = 0; i < Colors.Length; i++)<br />
{<br />
if (Iterator.G == 0.0 && Iterator.B == 0.0)<br />
Iterator.R = 1.0; // This effects the real struct values in the array.<br />
}<br />
}<br />
</uscript><br />
<br />
{{navbox unrealscript}}</div>Crushahttps://wiki.beyondunreal.com/User:Crusha?diff=44488User:Crusha2011-06-15T07:13:52Z<p>Crusha: </p>
<hr />
<div>=About Me=<br />
<br />
The full nickname would be Crusha K. Rool, derived from that crocodile-villain from "Donkey Kong", but I prefer Crusha after all.<br />
<br />
Since I am dedicated and addicted to UT2004's Onslaught gametype, I once started to get myself familiar with the Unreal Editor 3 and stuck with it down to the present day.<br />
<br />
<br />
<br />
Currently I work with a small team on several projects. One is a yet unannounced medieval multiplayer game, another is the official sequel to a not quite unsuccessful arena-FPS from the year 2002 and the last is a small hobby project that I am doing on my own.<br />
<br />
Whenever I have some time between that, I try to finish my UltimateMappingTools (see below) to help the UT2004 community to keep this marvelous game alive for more years to come.<br />
<br />
<br />
<br />
=Projects=<br />
<br />
==UE2==<br />
===UltimateMappingTools===<br />
<br />
UltimateMappingTools is a toolset started by me with the goal to gather all useful UT2k4-actors out there in one package to give level designers everything they could ever wish to do right at their hand. Several coders have contributed their work to it. I say "thank you" to all of them.<br />
<br />
See this page for a full reference: [[User:Crusha/UltimateMappingTools|UltimateMappingTools]]<br />
<br />
<br />
===DynamicWeather===<br />
<br />
DynamicWeather is a toolset by MarZer that contains a whole bunch of actors to put more atmosphere into maps by controlling the natural forces. It is also included in my UltimateMappingTools.<br />
<br />
I am '''NOT''' the creator of this actors, they are all done by '''Mark 'MarZer' Gillard'''. I just put the descriptions on my User page because User pages have some functionality for sub-pages that doesn't exist in other namespaces.<br />
<br />
See this page for a full reference: [[User:Crusha/DynamicWeather|DynamicWeather]]<br />
<br />
<br />
==UE3==<br />
===UltimateSaveSystem===<br />
<br />
UltimateSaveSystem is a ready-to-use solution for writing and reading variables from UnrealScript or Kismet into and from binary files, using unique names to find the value in the file. It is capable of saving Integer, Float, Boolean, Vector and String variables (with unlimited length).<br />
<br />
See this page for a full reference: [[User:Crusha/UltimateSaveSystem|UltimateSaveSystem]]<br />
<br />
<br />
<br />
=Maps=<br />
I early specialized in technically and gameplay-related fine-tuning existing maps (with the author's permission) rather than creating much own stuff, so most of the maps in my "portfolio" owe their being to other guys.<br />
<br />
==UT2004==<br />
===ONS-Rail===<br />
[http://forums.epicgames.com/showthread.php?t=724229 Original Thread]<br />
<br />
This is a conversion of CTF-Rail to ONS, featuring a lot of NV-mayhem in a narrow corridor-like map with three different levels for Z-axis gameplay and toggleable doors at the Prime Nodes.<br />
<br />
===ONS-{DX}Ameliorate===<br />
[http://forums.epicgames.com/showthread.php?t=727952 Original Thread]<br />
<br />
This is a conversion of CTF-Ameliorate to ONS, featuring two opposed residences in a sunset scene with a central island surrounded by a canalisation and 4 storage halls. The map is mainly NV, except four Mantas.<br />
<br />
===ONS-SavoIsland-K===<br />
[http://forums.epicgames.com/showthread.php?t=728055 Original Thread]<br />
<br />
This is a conversion of JB-SavoIsland to ONS and a co-production with Kentaro. The NV-match takes place on a beautiful South Sea island that allows to choose between a fight along the flat beaches or through the hilly inland.<br />
<br />
===ONS-Sektor9-Veni-Vidi-Vici===<br />
[http://www.gametracker.com/clan/freelancer/forum.php?thread=29819 Original Thread]<br />
<br />
This map was mainly created by VK especially for our ONS-server, but I put a lot of technical and visual fine-tuning into it, so I think it's worth being mentioned here.<br />
Gameplay is crazy, many )o(-vehicles and superweapons and narrow space.<br />
<br />
===ONS-Sektor8-The-Battle-Continues===<br />
[http://www.gametracker.com/clan/freelancer/forum.php?thread=32536 Original Thread]<br />
<br />
Again another map from VK for our server to which I contributed much fine-tuning. This one is not as narrow as the other one (actually it allows a lot of distance fights in vehicles and Z-axis gameplay), but is not less chaotic. ;)<br />
<br />
===ONS-Downtown===<br />
[http://forums.epicgames.com/showthread.php?t=737300 Original Thread]<br />
<br />
A rebuild of the UT3-map WAR-TankCrossing for ONS from scratch. The BSP was done by Sanch3z, following the original as accurately as possible, I was responsible for everything else (StaticMeshes, lighting, bot paths, pickups, etc.).<br />
<br />
The map uses UltimateDestructibleEnvironment from my MappingTools for destroyable barricades to achieve the same effect as in the original.<br />
<br />
===ONS-TankCrossing===<br />
[http://forums.epicgames.com/showthread.php?t=743195 Original Thread]<br />
<br />
A rebuild of the UT3-map WAR-TankCrossing for ONS from scratch. The map is still in alpha phase but will feature some intense fights about the control of the single Center Node and the escorting of a team's tank to the enemy PowerCore.<br />
<br />
===ONS-GlobeTrotter===<br />
An NV-map that currently only exists as concept. It will be one of the very few maps that makes excessive use of the Escher Physics Mutator (and thus won't work with any bots).<br />
<br />
<br />
This was only a small selection from the map's I've been working on, but the other's don't have that many noticeable changes or are not supposed <br />
<br />
<br />
<br />
=Contact=<br />
You can contact me in these forums:<br />
<br />
[http://www.gametracker.com/crusha_k_rool/ Gametracker]<br />
<br />
[http://www.unrealed.info/forum/member.php?u=2140 UnrealEd.info (German site)]<br />
<br />
[http://ut2004.titaninternet.co.uk/forums/member.php?u=1873 Titan Onslaught]<br />
<br />
[http://forum.omnipotents.com/member.php?u=1703 Omnip)o(tents]<br />
<br />
[http://www.vehiclemasters.co.uk/member.php?u=501 Vehicle Masters]<br />
<br />
[http://forums.epicgames.com/member.php?u=1387267 Epic Games Forums]</div>Crushahttps://wiki.beyondunreal.com/Legacy_talk:INT_File?diff=44485Legacy talk:INT File2011-06-12T13:42:45Z<p>Crusha: Here you go, but Czech is not correct.</p>
<hr />
<div>Retrieved the russian and czech working extensions. Does anybody know the extensions for : dutch, portuguese, finnish, hungarian, greek ?<br />
: I doubt that the Czech variant is correct. The Unreal Engine localization uses the two letters of the [http://www.loc.gov/standards/iso639-2/php/English_list.php ISO 639-1] and adds a 't' after that. So the Czech would be CST, Dutch would be NLT, Portuguese would be PTT, Finnish would be FIT, Hungarian would be HUT and Greek would be ELT. --[[User:Crusha|Crusha]] 13:42, 12 June 2011 (UTC)</div>Crushahttps://wiki.beyondunreal.com/Structs?diff=44445Structs2011-05-20T21:04:37Z<p>Crusha: Added description for modifiers "Atomic" and "AtomicWhenCooked".</p>
<hr />
<div>A '''struct''' (or '''structure''') is a composite data type in [[UnrealScript]], that can contain multiple member variables of (almost) any type, including another struct type. Structs are ''not'' reference types, that means a variable of a struct type actually contains the struct data itself, not a reference to the struct data. This imposes an important restriction on struct types: a struct may not directly or indirectly contain a variable of that same struct type.<br />
<br />
'''Note:''' The compiler will probably not complain about a struct violating this restriction. However, if the struct type is used to declare any class or local variables or function parameters or return types, the compiler will likely crash as it attempts to allocate an infinite amount of memory!<br />
<br />
==Declaration syntax==<br />
The general syntax of a struct declaration is:<br />
'''struct''' [[#Modifiers|''[modifiers]'']] ''structname'' ['''[[extends]]''' ''parentstruct''] '''{'''<br />
...<br />
'''};'''<br />
Like [[enums]], struct declarations may appear either as standalone declaration, in which case they must be followed by a semicolon, or as inline declaration instead of the type specification in variable declarations. Struct declarations may be contained in other struct declarations, both standalone or in variable declarations. There is no difference between declaring a struct at the class level and within another struct or between a standalone and inline declaration, in all cases the struct is a direct member of the class.<br />
<br />
Remember that all members of an UnrealScript class share the same namespace. A struct declaration may hide any member of a parent class if it has the same name.<br />
<br />
==Modifiers==<br />
Struct modifiers are not available in [[Unreal Engine 1]]. Most struct modifiers are related to native code. <br />
* <sup>2</sup> &ndash; The modifier is available in [[Unreal Engine 2]].<br />
* <sup>3</sup> &ndash; The modifier is available in [[Unreal Engine 3]].<br />
* <sup>3+</sup> &ndash; The modifier is available in later [[Unreal Engine 3]] versions, such as the [[UDK]].<br />
<br />
===Modifiers affecting UnrealEd=== <br />
; Long<sup>2</sup>{{confirm}}: Specifies that the struct contains many members and should not be examined when generating a value string for struct variables in [[UnrealEd]]'s [[Actor properties window]]. Usually structs like [[Vector]] are displayed as "(X=1.2,Y=3.4,Z=5.6)", but with the ''long'' modifier only "(...)" is displayed.<br />
<br />
===Modifiers affecting values===<br />
; Immutable<sup>3</sup>, ImmutableWhenCooked<sup>3</sup> : The struct uses [[wp:Serialization|binary serialization]](in previous engine versions some structs used hardcoded binary serialization in c++ e.g. [[Vector]], [[Rotator]] and [[Color]] etc). Without this flag, each struct member will be saved with a ''nameindex'' followed by a ''packedbyte'', ''size'' and ''arrayindex'', then the value of the specific member, thus increases file size and slows down the serialization process.<br />
; Atomic<sup>3</sup>, AtomicWhenCooked<sup>3</sup> : Indicates that this struct should always be serialized as a single unit; if any property in the struct differs from its defaults, then all elements of the struct will be serialized.<br />
; StrictConfig<sup>3</sup> : When the struct variable is flagged with ''[[config]]/[[GlobalConfig|globalconfig]]'' then only members with the flag ''config/globalconfig'' will be readable from the .ini, instead of all members.<br />
; Transient<sup>2,3</sup> : See [[Variables#Modifiers_affecting_values|Transient]] but instead it applies to all the members of the struct.<br />
<br />
===Other modifiers===<br />
; Export<sup>2,3</sup> : The struct is supposed to be exported to native headers.<br />
; Init<sup>2,3</sup> : '''???'''<br />
; Native<sup>2,3</sup> : The struct includes native logic.<br />
; {''native type name''}<sup>3</sup> : The type to use in [[native]] code instead of this struct type. This is mainly a hack in Unreal Engine 3 to declare variables in UnrealScript with types the UnrealScript language does not provide. There are only three instances of this syntax in [[UT3]]. The structs [[UE3:Object (UT3)#qword|Object.qword]] and [[UE3:Object (UT3)#double|Object.double]] represent the native types [[wp:Qword#Dword_and_Qword|QWORD]] and [[wp:Double_precision_floating-point_format|DOUBLE]] respectively, and the struct [[UE3:UIEditorOptions (UT3)#ViewportDimension|UIEditorOptions.ViewportDimension]] represents the native type [http://docs.wxwidgets.org/trunk/classwx_rect.html WxRect].<br />
<br />
==Member declarations==<br />
Struct members are declared like class [[variables]]. A variable group name or certain [[Variables#Modifiers|variable modifiers]] don't make sense for struct members, though.<br />
<br />
Note that in order to refer to structs declared in other classes, you may need to use<br />
[[DependsOn|<code>dependson</code> modifier]].<br />
<br />
===Default member values===<br />
By default all struct member variables are initialized with the [[null value]] of the corresponding type.<br />
<br />
Starting with [[Unreal Engine 3]], struct members can also have a default value other than the corresponding null value. This can be defined in a [[structdefaultproperties]] block inside the struct declaration. See [[Defaultproperties#Default_struct_properties|structdefaultproperties]] for more details.<br />
<br />
==Native struct code==<br />
Like native [[class#Native class code|class]]es, some structs in [[Unreal Engine 2]] and 3 games may contain native code snippets([[cpptext]]) in UnrealScript. These declarations do not affect UnrealScript directly, but they are exported when auto-generating native headers while compiling UnrealScript classes. In [[Unreal Tournament 2004|UT2004]] there are only two struct like this, [[UE2:GUI (UT2004)#GUITreeNode|GUI.GUITreeNode]] and [[UE2:GUIMultiColumnList (UT2004)#MultiColumnSortData|GUIMultiColumnList.MultiColumnSortData]]. In Unreal Engine 3 games this is a much more common sight, especially in UI-related classes.<br />
<br />
In Unreal Engine 2 native struct code is enclosed in a '''cppstruct''' block. Unreal Engine 3 uses a '''structcpptext''' block instead.<br />
<br />
==Accessing structs==<br />
Accessing a struct is as easily as accessing a [[class]], here's an example.<br />
<uscript><br />
class A extends Actor;<br />
<br />
var() LinearColor RedColor;<br />
<br />
// Modify RedColor at Runtime rather than on defaultproperties.<br />
event PreBeginPlay()<br />
{<br />
super.PreBeginPlay(); // Call the parent(i.e. Actor) PreBeginPlay() event<br />
RedColor.R = 1.0; // Make RedColor really red, assuming A is 1.0 and G and B are 0.0.<br />
}<br />
</uscript><br />
<br />
{{navbox unrealscript}}</div>Crushahttps://wiki.beyondunreal.com/Delegates?diff=44442Delegates2011-05-19T21:43:42Z<p>Crusha: Added a solution to a problem that made me angry for a few days. :(</p>
<hr />
<div>A '''delegate''' is a special kind of variable/function combination. Delegates were introduced in [[Unreal Engine 2]] and are declared similar to regular [[functions]]. The difference is, that instead of the keyword ''function'' or ''event'', delegate functions are declared with the keyword ''delegate''. In [[Unreal Engine 3]], delegate functions were accompanied by a delegate variable type, so delegates can now also be stored in structs or arrays and can be passed into or returned by a function.<br />
<br />
==Delegate functions==<br />
A delegate function declaration consists of the following parts:<br />
''[[Function#Modifiers|[modifiers]]]'' '''delegate''' ''[[types|[returntype]]]'' ''delegatename'' '''(''' ''[[Function#Parameters|[parameter declarations]]]'' ''')''' ''body_or_semicolon''<br />
Like regular functions, delegates can have a function body, which will be the default function associated with the delegate. If no body is defined, the delegate declaration must be terminated with a semicolon.<br />
<br />
Like for regular function declarations, the return type is optional. Similarly, parameter declarations are the same as for regular functions. When assigning a function to the delegate, the function's parameter and return types must match the delegate's. The compiler will make sure this is the case and otherwise throw an error. Parameter names must always be specified, even if the delegate does not have a body definition.<br />
<br />
Most function modifiers can be used for delegate functions, but some of them don't make much sense. For example, delegates can't be '''static''' and do not support the Unreal Engine 3 replication modifiers '''client''', '''server''' and '''reliable'''. Note that most modifiers, like '''simulated''', only apply to the delegate body and will not have any effect while other functions are assigned to the delegate.<br />
<br />
==Delegate variable type==<br />
The delegate type for variables, parameters and function return types in Unreal Engine 3 looks very similar to a class limiter:<br />
'''delegate <''' ''delegatename'' '''>'''<br />
Here, ''delegatename'' is the name of a delegate function, whose prototype (i.e. parameters and return type) will be used for the delegate variable. Only functions with the same parameter and return types as the referenced delegate function may be assigned to the variable.<br />
<br />
While it is possible to declare arrays of delegates, the compiler only allows calling referenced functions through non-array variables. The element of a delegate array first needs to be assigned to a non-array variable of the same delegate type, but can then be called like a normal function.<br />
<uscript><br />
function callRandomDelegate(array<delegate<X> > delegateList)<br />
{<br />
local delegate<X> selectedDelegate;<br />
<br />
// select a random delegate from the list<br />
selectedDelegate = delegateList[Rand(delegateList.Length)];<br />
// call that delegate<br />
selectedDelegate();<br />
}<br />
<br />
delegate X();<br />
</uscript><br />
This example also demonstrates, that the closing angle brackets in arrays of delegates need to be separated by whitespace, just like with class limiters.<br />
<br />
==Delegates in Default Properties==<br />
While the compiler won't complain about any assignment of functions to delegates in the default properties and this is also done in some of Epic's own code, it doesn't seem to work well for normal users. Calling a delegate that got assigned per default properties may lead to a crash of the whole engine with an access violation error.<br />
<br />
In such a case is it enough to perform the delegate assignment at runtime, for instance in PostBeginPlay().<br />
<br />
<br />
<br />
{{navbox unrealscript}}</div>Crushahttps://wiki.beyondunreal.com/User_talk:Crusha/UltimateMappingTools?diff=44423User talk:Crusha/UltimateMappingTools2011-05-11T14:19:45Z<p>Crusha: Arf, damn you!</p>
<hr />
<div>Hey, you might want to check the last example on [[Template:Infobox class]] for proper usage of the info box for custom classes. Also it might be a good idea to split up the page now. —[[User:Wormbo|Wormbo]] 09:21, 18 May 2010 (UTC)<br />
<br />
Will do that when I find some time, thanks. :)<br />
—[[User:Crusha|Crusha]] 02:04, 22 May 2010 (UTC)<br />
<br />
== Clones ==<br />
<br />
Just saying, LevelLoadedTrigger already exists in my mapping tool [[LevelConfigManager]] :), I'd say check out my tool before you end up cloning some more without knowing :P, though excuse me for not having a download link yet to the latest version! ----[[User:Eliot|Eliot]] 11:42, 8 May 2011 (UTC)<br />
<br />
Arf, damn you! It's a red link, though. But it's not like such a LevelLoaded thing would be that hard to code. ;)<br />
If yours is named exactly the same way, I will rename mine slightly to avoid confusion when using both packs at the same time. I kinda rely on it's reset functionality because I didn't implement it in some of the other Actors. --[[User:Crusha|Crusha]] 14:19, 11 May 2011 (UTC)</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart?diff=44419User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart2011-05-08T21:27:58Z<p>Crusha: Corrected Wikifier links</p>
<hr />
<div>=LockerWeaponsPlayerStart=<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest<br />
WeaponLocker in the specified range.<br />
The Event is triggered when the player spawns.<br />
<br />
==Properties==<br />
===Property group 'LockerWeaponsPlayerStart'===<br />
====AssignLocker====<br />
'''Type:''' [[UE2:WeaponLocker_(UT2004)|WeaponLocker]]<br />
<br />
'''[[Variables#Modifiers|Modifiers]]:''' edfindable<br />
<br />
Always use the locker that is specified here. Search for a locker in radius at runtime if none is specified. Overrides bAlwaysRefreshClosestLocker.<br />
<br />
====bAlwaysRefreshClosestLocker====<br />
'''Type:''' [[bool]]<br />
<br />
Enabling this will perform a check to find the closest Locker every time a player respawns.<br />
<br />
This allows to always use the closest Locker in case that this PlayerStart is attached to a Mover and moves away from it's initial location.<br />
However, performing the check is processing intense, so you should disable this if the PlayerStart is not attached to a Mover.<br />
<br />
====MaxWeaponLockerDistance====<br />
'''Type:''' [[float]]<br />
<br />
The player will spawn with the weapons from the closest WeaponLocker within this distance.<br />
<br />
'''Default value:''' 1000.0<br />
<br />
===Internal variables===<br />
====BestLocker====<br />
'''Type:''' [[UE2:WeaponLocker_(UT2004)|WeaponLocker]]<br />
<br />
The closest WeaponLocker found in proximity.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| Event<br />
| 'LWPSSN'<br />
|}<br />
<br />
==Instance functions==<br />
====BeginPlay====<br />
{{code|function '''BeginPlay''' ()}}<br />
<br />
Set up the SpawnNotifier.<br />
<br />
====EquipSpawnedPlayer====<br />
{{code|function '''EquipSpawnedPlayer''' ([[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''P''')}}<br />
<br />
Called by the SpawnNotifier.<br />
<br />
====FindClosestLocker====<br />
{{code|function [[UE2:WeaponLocker_(UT2004)|WeaponLocker]]&nbsp;'''FindClosestLocker''' ([[Vector]]&nbsp;'''StartLocation''', [[float]]&nbsp;'''SearchRadius''')}}<br />
<br />
Finds the closest locker. Obvious.<br />
<br />
====PostBeginPlay====<br />
{{code|function '''PostBeginPlay''' ()}}<br />
<br />
Find a WeaponLocker in range.<br />
<br />
<br />
<br />
=LockerWeaponsPlayerStartSpawnNotifier=<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStartSpawnNotifier<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Info<br />
| custom = yes<br />
}}<br />
<br />
This is a hack to get the LockerWeaponsPlayerStart to work.<br />
The PlayerStart itself doesn't get any notification when a player spawns there<br />
but the GameInfo triggers the Event of the PlayerStart where the player was<br />
spawned.<br />
<br />
So we simply let every LockerWeaponsPlayerStart trigger us and then re-route<br />
the necessary information to him, because that is given with the TriggerEvent.<br />
<br />
==Events==<br />
====Trigger====<br />
{{code|event '''Trigger''' ([[UE2:Actor (UT2004)|Actor]]&nbsp;'''Other''', [[UE2:Pawn (UT2004)|Pawn]]&nbsp;'''EventInstigator''')}}<br />
<br />
Call EquipSpawnPlayer() in the PlayerStart that triggered the Event and pass the Instigator as the spawned player.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44417User:Crusha/UltimateMappingTools2011-05-08T11:17:10Z<p>Crusha: Fixed class parents.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more informations about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| parent2 = PhysicsVolume<br />
| parent3 = Volume<br />
| parent4 = Brush<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| parent2 = Volume<br />
| parent3 = Brush<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more informations about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LinksetupEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LinksetupEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
When being triggered, this will only trigger the next Event, if the current Linksetup matches one of the ones specified in the array.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LinksetupEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from these informations. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more informations about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| parent2 = Object<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| parent2 = ScriptedAction<br />
| parent3 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| parent2 = LatentScriptedAction<br />
| parent3 = ScriptedAction<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| parent2 = Projector<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NetworkLinkedClientVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players or fairly small and if the area of the NetworkImportanceVolume is the opposite of that.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/VehicleTeleporter?diff=44416User:Crusha/UltimateMappingTools/VehicleTeleporter2011-05-08T11:09:12Z<p>Crusha: Removed links</p>
<hr />
<div>{{infobox class<br />
| class = VehicleTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
VehicleTeleporter v1.0 by KillBait!<br />
<br />
<br />
A Teleporter that can be used by players AND vehicles. Works with bots too.<br />
Tested on a dedicated (v3339) server and it runs O.K.<br />
<br />
''Goals''<br />
<br />
The aim was to have a teleport that was usable by both vehicles and players,<br />
and still used the normal teleporter functions, to make it as easy as possible<br />
for LD's to use, and required no extra work on server admins for them to<br />
support these new features.<br />
<br />
<br />
''Usage Restrictions''<br />
<br />
You are Free to use this actor in whatever type of Map/Mod/TC you want,<br />
BUT, please do not rip out/remove the notes and comments. I have learned<br />
a lot from looking at other peoples code, and i want to keep it here for<br />
others to look at. Maybe, even with my newbie coding skills, it will be<br />
of help to somebody.<br />
<br />
<br />
''Credits''<br />
<br />
- ROBO (UT2004ModList) Came up with the original SetPhysics workaround<br />
<br />
- Derek "HoMeRS}i{MpSoN" Altamirano for the hint on the velocity multipler code.<br />
<br />
- Steve Polge for the suggestion to widen the reachspec collision, stops bots bailing out just before teleporting, because they could not find a wide enough path.<br />
<br />
- UnrealWiki for it's invaluable documentation of some fuctions i've never used before this.<br />
<br />
- All other Code/bugs by Me (KillBait!)<br />
<br />
<br />
==Properties==<br />
===Property group 'VehicleTeleporter'===<br />
====bGroundVehiclesOnly====<br />
'''Type:''' [[bool]]<br />
<br />
The teleporter won't work on flying vehicles.<br />
<br />
====bTeleportVehiclesOnly====<br />
'''Type:''' [[bool]]<br />
<br />
No players are teleported.<br />
<br />
===Internal variables===<br />
====bKeepFlyingUpright====<br />
'''Type:''' [[bool]]<br />
<br />
For some reason is bKStayUpright set to False for vehicles that are teleported, but that would render any flying vehicle really unstable, so we remember the value and set it back afterwards.<br />
<br />
====ReachSpecCollHeight====<br />
'''Type:''' [[int]]<br />
<br />
Changes the collision height of the destination path to this. So bots don't bail.<br />
<br />
====ReachSpecCollRadius====<br />
'''Type:''' [[int]]<br />
<br />
Changes the collision radius of the destination path to this. So bots don't bail.<br />
<br />
==Functions==<br />
===Events===<br />
====Accept====<br />
{{code|simulated event [[bool]]&nbsp;'''Accept''' ({{cl|Actor}}&nbsp;'''Incoming''', {{cl|Actor}}&nbsp;'''Source''')}}<br />
<br />
'''Overrides:''' {{tl|Accept|Teleporter}}<br />
<br />
<!-- enter function description --><br />
<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' {{tl|PostBeginPlay|Teleporter}}<br />
<br />
<!-- enter function description --><br />
<br />
====PostTouch====<br />
{{code|simulated event '''PostTouch''' ({{cl|Actor}}&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' {{tl|PostTouch|Teleporter}}<br />
<br />
<!-- enter function description --><br />
<br />
====SpecialCost====<br />
{{code|event [[int]]&nbsp;'''SpecialCost''' ({{cl|Pawn}}&nbsp;'''Other''', {{cl|ReachSpec}}&nbsp;'''Path''')}}<br />
<br />
'''Overrides:''' {{tl|SpecialCost|Teleporter}}<br />
<br />
<!-- enter event description --><br />
<br />
====SpecialHandling====<br />
{{code|event {{cl|Actor}}&nbsp;'''SpecialHandling''' ({{cl|Pawn}}&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' {{tl|SpecialHandling|Teleporter}}<br />
<br />
<!-- enter function description --><br />
<br />
====Touch====<br />
{{code|event '''Touch''' ({{cl|Actor}}&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' {{tl|Touch|Teleporter}}<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====ClearDest====<br />
{{code|function '''ClearDest''' ({{cl|Actor}}&nbsp;'''Incoming''', {{cl|Actor}}&nbsp;'''Source''')}}<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/VehicleTeleporter?diff=44415User:Crusha/UltimateMappingTools/VehicleTeleporter2011-05-08T11:07:53Z<p>Crusha: First revision of the page. Autogenerated but checked for correctness.</p>
<hr />
<div>{{infobox class<br />
| class = VehicleTeleporter<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| custom = yes<br />
}}<br />
VehicleTeleporter v1.0 by KillBait!<br />
<br />
<br />
A Teleporter that can be used by players AND vehicles. Works with bots too.<br />
Tested on a dedicated (v3339) server and it runs O.K.<br />
<br />
''Goals''<br />
<br />
The aim was to have a teleport that was usable by both vehicles and players,<br />
and still used the normal teleporter functions, to make it as easy as possible<br />
for LD's to use, and required no extra work on server admins for them to<br />
support these new features.<br />
<br />
<br />
''Usage Restrictions''<br />
<br />
You are Free to use this actor in whatever type of Map/Mod/TC you want,<br />
BUT, please do not rip out/remove the notes and comments. I have learned<br />
a lot from looking at other peoples code, and i want to keep it here for<br />
others to look at. Maybe, even with my newbie coding skills, it will be<br />
of help to somebody.<br />
<br />
<br />
''Credits''<br />
<br />
- ROBO (UT2004ModList) Came up with the original SetPhysics workaround<br />
<br />
- Derek "HoMeRS}i{MpSoN" Altamirano (http://www.cyberrock.net) for the<br />
hint on the velocity multipler code.<br />
<br />
- Steve Polge for the suggestion to widen the reachspec collision, stops<br />
bots bailing out just before teleporting, because they could not find<br />
a wide enough path.<br />
<br />
- UnrealWiki (http://www.UnrealWiki.com) for it's invaluable documentation<br />
of some fuctions i've never used before this.<br />
<br />
- All other Code/bugs by Me (KillBait!)<br />
<br />
<br />
==Properties==<br />
===Property group 'VehicleTeleporter'===<br />
====bGroundVehiclesOnly====<br />
'''Type:''' [[bool]]<br />
<br />
The teleporter won't work on flying vehicles.<br />
<br />
====bTeleportVehiclesOnly====<br />
'''Type:''' [[bool]]<br />
<br />
No players are teleported.<br />
<br />
===Internal variables===<br />
====bKeepFlyingUpright====<br />
'''Type:''' [[bool]]<br />
<br />
For some reason is bKStayUpright set to False for vehicles that are teleported, but that would render any flying vehicle really unstable, so we remember the value and set it back afterwards.<br />
<br />
====ReachSpecCollHeight====<br />
'''Type:''' [[int]]<br />
<br />
Changes the collision height of the destination path to this. So bots don't bail.<br />
<br />
====ReachSpecCollRadius====<br />
'''Type:''' [[int]]<br />
<br />
Changes the collision radius of the destination path to this. So bots don't bail.<br />
<br />
==Functions==<br />
===Events===<br />
====Accept====<br />
{{code|simulated event [[bool]]&nbsp;'''Accept''' ({{cl|Actor}}&nbsp;'''Incoming''', {{cl|Actor}}&nbsp;'''Source''')}}<br />
<br />
'''Overrides:''' {{tl|Accept|Teleporter}}<br />
<br />
<!-- enter function description --><br />
<br />
====PostBeginPlay====<br />
{{code|event '''PostBeginPlay''' ()}}<br />
<br />
'''Overrides:''' {{tl|PostBeginPlay|Teleporter}}<br />
<br />
<!-- enter function description --><br />
<br />
====PostTouch====<br />
{{code|simulated event '''PostTouch''' ({{cl|Actor}}&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' {{tl|PostTouch|Teleporter}}<br />
<br />
<!-- enter function description --><br />
<br />
====SpecialCost====<br />
{{code|event [[int]]&nbsp;'''SpecialCost''' ({{cl|Pawn}}&nbsp;'''Other''', {{cl|ReachSpec}}&nbsp;'''Path''')}}<br />
<br />
'''Overrides:''' {{tl|SpecialCost|Teleporter}}<br />
<br />
<!-- enter event description --><br />
<br />
====SpecialHandling====<br />
{{code|event {{cl|Actor}}&nbsp;'''SpecialHandling''' ({{cl|Pawn}}&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' {{tl|SpecialHandling|Teleporter}}<br />
<br />
<!-- enter function description --><br />
<br />
====Touch====<br />
{{code|event '''Touch''' ({{cl|Actor}}&nbsp;'''Other''')}}<br />
<br />
'''Overrides:''' {{tl|Touch|Teleporter}}<br />
<br />
<!-- enter event description --><br />
<br />
===Other instance functions===<br />
====ClearDest====<br />
{{code|function '''ClearDest''' ({{cl|Actor}}&nbsp;'''Incoming''', {{cl|Actor}}&nbsp;'''Source''')}}<br />
<br />
<!-- enter function description --></div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44414User:Crusha/UltimateMappingTools2011-05-07T19:58:53Z<p>Crusha: /* UTAction_WaitOnlyForTimer */ The case of the superclass again... Wikifier is broken in that relation.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more informations about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more informations about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LinksetupEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LinksetupEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
When being triggered, this will only trigger the next Event, if the current Linksetup matches one of the ones specified in the array.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LinksetupEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from these informations. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more informations about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForTimer<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NetworkLinkedClientVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players or fairly small and if the area of the NetworkImportanceVolume is the opposite of that.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44413User:Crusha/UltimateMappingTools2011-05-07T19:57:52Z<p>Crusha: Some stuff was not matching.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more informations about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more informations about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LinksetupEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LinksetupEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
When being triggered, this will only trigger the next Event, if the current Linksetup matches one of the ones specified in the array.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LinksetupEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from these informations. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more informations about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the instigator of the Event belongs to the specified team.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForEvent==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitOnlyForTimer==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitOnlyForTimer<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Action_WaitForTimer<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NetworkLinkedClientVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players or fairly small and if the area of the NetworkImportanceVolume is the opposite of that.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart?diff=44412User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart2011-05-07T19:49:17Z<p>Crusha: First revision of the page. Autogenerated but checked for correctness.</p>
<hr />
<div>=LockerWeaponsPlayerStart=<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = TriggeredPlayerStart<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest<br />
WeaponLocker in the specified range.<br />
The Event is triggered when the player spawns.<br />
<br />
==Properties==<br />
===Property group 'LockerWeaponsPlayerStart'===<br />
====AssignLocker====<br />
'''Type:''' {{cl|WeaponLocker}}<br />
<br />
'''[[Variables#Modifiers|Modifiers]]:''' edfindable<br />
<br />
Always use the locker that is specified here. Search for a locker in radius at runtime if none is specified. Overrides bAlwaysRefreshClosestLocker.<br />
<br />
====bAlwaysRefreshClosestLocker====<br />
'''Type:''' [[bool]]<br />
<br />
Enabling this will perform a check to find the closest Locker every time a player respawns.<br />
<br />
This allows to always use the closest Locker in case that this PlayerStart is attached to a Mover and moves away from it's initial location.<br />
However, performing the check is processing intense, so you should disable this if the PlayerStart is not attached to a Mover.<br />
<br />
====MaxWeaponLockerDistance====<br />
'''Type:''' [[float]]<br />
<br />
The player will spawn with the weapons from the closest WeaponLocker within this distance.<br />
<br />
'''Default value:''' 1000.0<br />
<br />
===Internal variables===<br />
====BestLocker====<br />
'''Type:''' {{cl|WeaponLocker}}<br />
<br />
The closest WeaponLocker found in proximity.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| Event<br />
| 'LWPSSN'<br />
|}<br />
<br />
==Instance functions==<br />
====BeginPlay====<br />
{{code|function '''BeginPlay''' ()}}<br />
<br />
Set up the SpawnNotifier.<br />
<br />
====EquipSpawnedPlayer====<br />
{{code|function '''EquipSpawnedPlayer''' ({{cl|Pawn}}&nbsp;'''P''')}}<br />
<br />
Called by the SpawnNotifier.<br />
<br />
====FindClosestLocker====<br />
{{code|function {{cl|WeaponLocker}}&nbsp;'''FindClosestLocker''' ({{cl|vector}}&nbsp;'''StartLocation''', [[float]]&nbsp;'''SearchRadius''')}}<br />
<br />
Finds the closest locker. Obvious.<br />
<br />
====PostBeginPlay====<br />
{{code|function '''PostBeginPlay''' ()}}<br />
<br />
Find a WeaponLocker in range.<br />
<br />
<br />
<br />
=LockerWeaponsPlayerStartSpawnNotifier=<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStartSpawnNotifier<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Info<br />
| custom = yes<br />
}}<br />
<br />
This is a hack to get the LockerWeaponsPlayerStart to work.<br />
The PlayerStart itself doesn't get any notification when a player spawns there<br />
but the GameInfo triggers the Event of the PlayerStart where the player was<br />
spawned.<br />
<br />
So we simply let every LockerWeaponsPlayerStart trigger us and then re-route<br />
the necessary information to him, because that is given with the TriggerEvent.<br />
<br />
==Events==<br />
====Trigger====<br />
{{code|event '''Trigger''' ({{cl|Actor}}&nbsp;'''Other''', {{cl|Pawn}}&nbsp;'''EventInstigator''')}}<br />
<br />
Call EquipSpawnPlayer() in the PlayerStart that triggered the Event and pass the Instigator as the spawned player.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/BlockingVolumeToggleable?diff=44411User:Crusha/UltimateMappingTools/BlockingVolumeToggleable2011-05-07T12:56:41Z<p>Crusha: First revision of the page. Autogenerated but checked for correctness.</p>
<hr />
<div>{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
==Properties==<br />
===Property group 'BlockingVolumeToggleable'===<br />
====bChangeBlockActors====<br />
'''Type:''' [[bool]]<br />
<br />
This collision type is changed on triggering.<br />
<br />
'''Default value:''' True<br />
<br />
====bChangeBlockPlayers====<br />
'''Type:''' [[bool]]<br />
<br />
This collision type is changed on triggering.<br />
<br />
====bChangeCollideActors====<br />
'''Type:''' [[bool]]<br />
<br />
This collision type is changed on triggering.<br />
<br />
'''Default value:''' True<br />
<br />
====bTriggerControlled====<br />
'''Type:''' [[bool]]<br />
<br />
If True, untriggering will disable all collision and triggering will enable all.<br />
If False, triggering will toggle.<br />
<br />
'''Default value:''' True<br />
<br />
===Internal variables===<br />
====bBlockActorsCopy====<br />
'''Type:''' [[bool]]<br />
<br />
For replication.<br />
<br />
====bBlockPlayersCopy====<br />
'''Type:''' [[bool]]<br />
<br />
For replication.<br />
<br />
====bCollideActorsCopy====<br />
'''Type:''' [[bool]]<br />
<br />
For replication.<br />
<br />
===Default values===<br />
{| class="list defaults"<br />
! Property<br />
! Value<br />
|-<br />
| bNetNotify<br />
| <br />
|-<br />
| bNoDelete<br />
| <br />
|-<br />
| bStatic<br />
| <br />
|-<br />
| NetPriority<br />
| <br />
|-<br />
| NetUpdateFrequency<br />
| <br />
|-<br />
| RemoteRole<br />
| <br />
|}<br />
<br />
==Functions==<br />
===Events===<br />
====PostNetRecieve====<br />
{{code|simulated event '''PostNetRecieve''' ()}}<br />
<br />
Change client collision if the replicated values don't match the active ones.<br />
<br />
===Other instance functions===<br />
====Trigger====<br />
{{code|function '''Trigger''' ({{cl|Actor}}&nbsp;'''Other''', {{cl|Pawn}}&nbsp;'''EventInstigator''')}}<br />
<br />
Toggle the values or enable all, depending on mode.<br />
<br />
====UnTrigger====<br />
{{code|function '''UnTrigger''' ({{cl|Actor}}&nbsp;'''Other''', {{cl|Pawn}}&nbsp;'''EventInstigator''')}}<br />
<br />
Disable all values, if that mode is used.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44410User:Crusha/UltimateMappingTools2011-05-07T12:50:51Z<p>Crusha: /* BlockingVolumeToggleable */ Wrong infobox.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more informations about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = BlockingVolumeToggleable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = BlockingVolume<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more informations about this Actor.<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LinksetupEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LinksetupEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
When being triggered, this will only trigger the next Event, if the current Linksetup matches one of the ones specified in the array.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LinksetupEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from these informations. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more informations about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NetworkLinkedClientVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players or fairly small and if the area of the NetworkImportanceVolume is the opposite of that.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools/HealVolume?diff=44409User:Crusha/UltimateMappingTools/HealVolume2011-05-07T12:49:10Z<p>Crusha: First revision of the page. Autogenerated but checked for correctness.</p>
<hr />
<div>{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| package = UltimateMappingTools<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
==Properties==<br />
===Property group 'HealVolume'===<br />
====bActive====<br />
'''Type:''' [[bool]]<br />
<br />
If True, the Volume will heal from the beginning.<br />
<br />
====bSuperHeal====<br />
'''Type:''' [[bool]]<br />
Heals up to SuperHealth like Keg and Vials do.<br />
<br />
====bTriggerHeal====<br />
'''Type:''' [[bool]]<br />
<br />
If True, the health will only be added to pawns that are inside at the moment the Volume is triggered.<br />
If False, it will heal over time.<br />
<br />
====HealAmount====<br />
'''Type:''' [[int]]<br />
<br />
How much to heal per second or per triggering.<br />
<br />
====HealClass====<br />
'''Type:''' [[class]]<{{cl|Pawn}}><br />
<br />
Heal actors of the following class, including subclasses. For example choose "Vehicle" for vehicles, "xPawn" for players or "Pawn" for both.<br />
<br />
===Internal variables===<br />
====bOldActive====<br />
'''Type:''' [[bool]]<br />
<br />
For resetting.<br />
<br />
==Instance functions==<br />
====PostBeginPlay====<br />
{{code|function '''PostBeginPlay''' ()}}<br />
<br />
See if we use TriggerHeal or HealOverTime and put us in the right state.<br />
<br />
====Reset====<br />
{{code|function '''Reset''' ()}}<br />
<br />
Set bActive to what it was when the match was started.<br />
<br />
==States==<br />
===HealOverTime===<br />
<!-- enter state description --><br />
<br />
'''[[States#Modifiers|Modifiers]]:''' auto<br />
<br />
====HealOverTime.Timer====<br />
{{code|function '''Timer''' ()}}<br />
<br />
Heal every second.<br />
<br />
====HealOverTime.Trigger====<br />
{{code|function '''Trigger''' ({{cl|Actor}}&nbsp;'''Other''', {{cl|Pawn}}&nbsp;'''EventInstigator''')}}<br />
<br />
Start healing every second.<br />
<br />
====HealOverTime.UnTrigger====<br />
{{code|function '''UnTrigger''' ({{cl|Actor}}&nbsp;'''Other''', {{cl|Pawn}}&nbsp;'''EventInstigator''')}}<br />
<br />
Stop healing every second.<br />
<br />
===TriggerHeal===<br />
<!-- enter state description --><br />
<br />
====TriggerHeal.Trigger====<br />
{{code|function '''Trigger''' ({{cl|Actor}}&nbsp;'''Other''', {{cl|Pawn}}&nbsp;'''EventInstigator''')}}<br />
<br />
Heal on triggering.</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44408User:Crusha/UltimateMappingTools2011-05-07T12:31:53Z<p>Crusha: Added HealVolume, VolumeUnTrigger and LevelLoadedTrigger, BlockingVolumeToggleable, DynamicPhysicVolumes and CountdownEventGate</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more informations about this Actor.<br />
<br />
<br />
<br />
==DynamicPhysicsVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicPhysicsVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PhysicsVolume<br />
| custom = yes<br />
}}<br />
<br />
This is a movable PhysicsVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==DynamicWaterVolume==<br />
by Epic Games<br />
{{infobox class<br />
| class = DynamicWaterVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = WaterVolume<br />
| custom = yes<br />
}}<br />
<br />
This is a movable WaterVolume. It can be attached to dynamic objects.<br />
<br />
<br />
<br />
==HealVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = HealVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
Volume that allows to heal player or vehicles inside it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/HealVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==BlockingVolumeToggleable==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
The collision of this BlockingVolume can be toggled when it gets triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/BlockingVolumeToggleable|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==LevelLoadedTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LevelLoadedTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
Triggers the default Event as soon as the level is loaded and triggers the ResetEvent when the round ended and is reset.<br />
<br />
<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = VolumeTrigger<br />
| custom = yes<br />
}}<br />
<br />
Same functionality as VolumeTrigger, but can ADDITIONALLY untrigger<br />
a Volume when this gets untriggered.<br />
Only the BlockingVolumeToggleable and the HealVolume supports untriggering for now!<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LinksetupEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LinksetupEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
When being triggered, this will only trigger the next Event, if the current Linksetup matches one of the ones specified in the array.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LinksetupEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==CountdownEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = CountdownEventGate<br />
| game = UT2004<br />
| engine = UE2<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| custom = yes<br />
}}<br />
<br />
Waits a certain time before triggering the next Event.<br />
If the Actor gets untriggered in that time, the countdown stops.<br />
There is a ToleranceTime in which the event can be triggered again after being disabled to<br />
continue the current countdown.<br />
<br />
The current countdown state can be broadcasted to the HUD.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CountdownEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from these informations. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more informations about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NetworkLinkedClientVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players or fairly small and if the area of the NetworkImportanceVolume is the opposite of that.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crushahttps://wiki.beyondunreal.com/User:Crusha/UltimateMappingTools?diff=44407User:Crusha/UltimateMappingTools2011-05-06T18:33:08Z<p>Crusha: Omitted package references and fixed case-problem with autogenerated links to some ScriptedActions.</p>
<hr />
<div>=Introduction=<br />
<br />
==About this site==<br />
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as '''UltimateONSTools'''. It serves as a documentation to the tool set and will explain the effects of each variable in each Actors. A separate page gives some examples of how the contents of this set can be put to use.<br />
<br />
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.<br />
<br />
==Motivation==<br />
First I just wanted to create a VehicleFactory for ONS that allows the mapper to configure more than he can with the default one. It worked fine, but then I wanted to have even more control as a mapper about the game flow by considering which PowerNodes in ONS are captured by a team and which are not.<br />
The idea itself grew when I saw UT3's ''Kismet'' and decided to create something for all UT2004-mappers that gives them somewhat similar influence about what happens during the match.<br />
In the end I came to a point where I wanted to gather everything that a mapper could ever wish to use in map in this set - one single .u-file that every mapper should add to his EditPackages list and be happy. :)<br />
<br />
<br />
There would be no use in recreating something that has been done by other coders already. And because we are one big community, I asked other coders if I could use some of their work here, especially such things that exist not in their own .u-file.<br />
They were very friendly, especially Wormbo. Half of the things in this pack come from him!<br />
The Actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most Actors from Jailbreak have been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".<br />
<br />
<br />
'''Note''': In my Actors can "red" and "blue" be considered static on the map, that means the mapper only has to think in a way like he would map for gametypes where the teams won't switch sides after reset. If the sides are swapped in ONS, then my Actors will handle this automatically and work properly for the other team on that side of the map.<br />
<br />
<br />
<br />
=Enhanced Functionality=<br />
Tools in this section are highly improved versions of existing UT2004 versions and add a lot of new features.<br />
<br />
==UltimateONSFactory==<br />
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work<br />
{{infobox class<br />
| class = UltimateONSFactory<br />
| parent1 = ONSVehicleFactory<br />
| parent2 = SVehicleFactory<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An ONS-mapper's jack of all trades device. This allows the mapper to tweak the vehicle balance of the match right down to the last detail.<br />
Allows to specify an individual vehicle list for both teams from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateVCTFFactory==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateVCTFFactory<br />
| parent1 = SVehicleFactory<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The VCTF equivalent to the UltimateONSFactory. Allows to set up a list of vehicles from which the next vehicle can be chosen randomly or sequentially.<br />
Each individual vehicle entry in a list can be further modified, also with the ability to change if a vehicle can carry the flag or not. This has less options than the UltimateONSFactory but can be used in any gametype, even those where vehicles are disabled by default.<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateVCTFFactory|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateMover==<br />
by Wormbo, originally named JBMoverDualDestination in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UltimateMover<br />
| parent1 = Mover<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A mover with a multitude of improvements over standard movers:<br />
<br />
* can trigger an event when receiving damage (like Wormbo's custom [[User:Wormbo/DamageTriggerMover|DamageTriggerMover]])<br />
* can trigger/untrigger an event when someone stands in it (not only in StandOpenTimed state)<br />
* mapper can define two different movement paths with individual trigger tags, sounds and events<br />
* mapper can specify separate open and close times (like VitalOverdose's [[Legacy:VitalOverdose/VariableTimedMover|VariableTimedMover]])<br />
* mapper can specify individual move times for every key (like SuperApe's [[UE2:VariableTimedMover|VariableTimedMover]])<br />
<br />
<br />
See [[JDN:JBMoverDualDestination]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTNetworkProjectileSpawner==<br />
by Wormbo, originally named NetworkProjectileSpawner in the package 'NetworkProjectileSpawner'<br />
{{infobox class<br />
| class = UTNetworkProjectileSpawner<br />
| parent1 = Actor<br />
| parent2 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
An advanced network-compatible ProjectileSpawner alternative mappers can add to their levels.<br />
<br />
This features an incredible amount of options to create your own projectile in any way you like. And I will not list all those 70 properties here. Luckily the Worm itself documented it in all details.<br />
<br />
<br />
See [[User:Wormbo/NetworkProjectileSpawner|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LockerWeaponsPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LockerWeaponsPlayerStart<br />
| parent1 = TriggeredPlayerStart<br />
| parent2 = PlayerStart<br />
| parent3 = SmallNavigationPoint<br />
| parent4 = NavigationPoint<br />
| parent5 = Actor<br />
| parent6 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This PlayerStart equips the spawning player with the weapons from the closest WeaponLocker in the specified range.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LockerWeaponsPlayerStart|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTKickerTriggerable==<br />
by Wormbo, originally named JBKickerTriggerable in the package 'JBToolbox2'<br />
{{infobox class<br />
| class = UTKickerTriggerable<br />
| parent1 = xKicker<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A triggerable xKicker with several additional features:<br />
<br />
* can be trigger-toggled or trigger-controlled on/off<br />
* defines directions "in front" and "behind" by its location and rotation so it can ignore touches if touching Actor is behind and mirror the kick direction if the touching Actor is behind<br />
* can cause damage to kicked Actors<br />
* can play a sound on the kicked Actor<br />
<br />
<br />
See [[JDN:JBKickerTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VehicleTeleporter==<br />
by KillBait<br />
{{infobox class<br />
| class = VehicleTeleporter<br />
| parent1 = Teleporter<br />
| parent2 = SmallNavigationPoint<br />
| parent3 = NavigationPoint<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Teleporter that can also teleport vehicles. Works in online games and with bot support.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VehicleTeleporter|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateDestroyableEnvironment==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateDestroyableEnvironment<br />
| parent1 = Decoration<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A StaticMesh that can change it's appearance when taking a certain amount of damage. Additionally it can play sounds, spawn KActors and use Emitter effects when it reaches the next ''Level of Destruction''.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateDestructibleEnvironment|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTTunnelExitVolume==<br />
by Wormbo, originally named JBVolumeTunnelExit in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTTunnelExitVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Volume that allowes players to walk or crouch off ledges. Useful wherever a player has to get off a human ladder or exit a tunnel while crouching.<br />
<br />
<br />
See [[JDN:JBVolumeTunnelExit]] for more informations about this Actor.<br />
<br />
<br />
<br />
<br />
==UltimateSkyZoneInfo==<br />
by Wormbo and Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateSkyZoneInfo<br />
| parent1 = ZoneInfo<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Don't get confused by the name, this Actor is supposed to be used instead of a ZoneInfo and not instead of a SkyZoneInfo!<br />
<br />
This is an enhanced version Wormbo's [[User:Wormbo/SelectableSkyZoneInfo|SelectableSkyZoneInfo]]. It allows to choose which skybox can be seen from the current Zone (including the ability to have different skyboxes with different detail levels to choose from) and additionally to specify completely different skyboxes from which one is chosen randomly at the beginning of the match, resulting in the ability to play the same map in a completely different environment each time you play it.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ParallaxSkyZoneInfo==<br />
by Party Boy<br />
{{infobox class<br />
| class = ParallaxSkyZoneInfo<br />
| parent1 = SkyZoneInfo<br />
| parent2 = ZoneInfo<br />
| parent3 = Info<br />
| parent4 = Actor<br />
| parent5 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Moves the skybox around with the players view in order to simulate a distant environment like in UT3 instead of one that is static and infinitely far away. A skybox must be set up to match certain requirements since the actualy SkyZoneInfo is moving around in the skybox and thereby could pass through StaticMeshes (also fog rings) that are placed in traditional skyboxes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ParallaxSkyZoneInfo|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UltimateRadarMap==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UltimateRadarMap<br />
| parent1 = Info<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Place this Actor in the map to be able to display an ONSlaught-like RadarMap in the HUD in any gametype you wish.<br />
<br />
Supported are CTF gametypes (CTF, CTF4, VCTF), BR gametypes (BR, BR4, Bombing Spree Mutator), Domination (DOM, Triple Domination) and Assault. Supported means, that those will display the GameObjectives properly for that gametype. Unsupported gametypes can still be set to show all currently active GameObjectives or just simply show the RadarMap to give some feedback about your location.<br />
<br />
In order to display a RadarMap you have to set one up in the LevelProperties as you would do in ONS.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UltimateRadarMap|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==EnhancedLevelGameRules==<br />
created mainly by Wormbo<br />
{{infobox class<br />
| class = EnhancedLevelGameRules<br />
| parent1 = LevelGameRules<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Additionally to the functionality of the normal LevelGameRules, this one can also forbid certain Mutators in the map. That way can a leveldesigner override the Server Mutators completely.<br />
<br />
However, in order to prevent major abuse, this Actor will not disable Mutators with the GroupName 'Security', like Anti-TCC, UTSecure, etc.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/EnhancedLevelGameRules|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
=Trigger Systems=<br />
Tools in this section are used to add more functionality and control to the Trigger system of the Unreal Engine.<br />
<br />
==PlayerCountTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PlayerCountTrigger<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers an Event when at least so many players are in the game as specified here.<br />
Untriggers it when the PlayerCount shrinks below the specified amount again.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/PlayerCountTrigger|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==EventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = EventGate<br />
| parent1 = Triggers<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all custom Actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.<br />
<br />
<br />
<br />
==LogicGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LogicGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.<br />
<br />
<br />
The following subclasses exist:<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]<br />
<br />
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]<br />
<br />
<br />
<br />
==UnTriggerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = UnTriggerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This actor turns the incoming UnTriggerEvents into TriggerEvents or the other way around.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/UnTriggerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==LinksetupEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = LinksetupEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
When being triggered, this will only trigger the next Event, if the current Linksetup matches one of the ones specified in the array.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/LinksetupEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==RandomEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = RandomEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Triggers the next Event with a probability that can be defined by the mapper.<br />
You can also set an alternative Event that is used instead, if the other one is not chosen.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/RandomEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==VIPlayerEventGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = VIPlayerEventGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This receives an incoming (Un)TriggerEvent and performs several checks about the Instigator of this Event. It will (un)trigger the next Event, depending on what the result of the check is.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/VIPlayerEventGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NodeEventDirector==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeEventDirector<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor receives the three Events of an ONSPowerNode and interprets the current state of the node from these informations. The Actor can then fire Trigger- or UnTrigger-Events when the state of the Node changes.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeEventDirector|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==InstigatorModifier==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = InstigatorModifier<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Changes the properties of the Pawn that triggered the Event to the specified ones.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ScoreContainer==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ScoreContainer<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This section handles four Actors that are all related to implementing a custom score system in maps, allowing to create an RTS-like resource system or simply doing addition and subtraction based event triggering.<br />
<br />
See [[User:Crusha/UltimateMappingTools/ScoreContainer|this page]] for more informations about these Actors.<br />
<br />
<br />
<br />
=ScriptedActions=<br />
This section lists new ScriptedActions that are available in ScriptedTriggers when this toolset is used.<br />
<br />
==ACTION_IfInstigatorTeam==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfInstigatorTeam<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfInstigatorTeam|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfLinksetup==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfLinksetup<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if the currently active linksetup is specified in this Action's array<br />
and this is an ONS map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfLinksetup|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_IfPlayerCount==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_IfPlayerCount<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Enters the following section only if at least a specific number of players<br />
is in the match.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ACTION_IfPlayerCount|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ACTION_UnTriggerEvent==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = Action_UNTRIGGEREVENT<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_TriggerEvent<br />
| custom = yes<br />
}}<br />
<br />
Nothing special, really. Basically the same as ACTION_TriggerEvent, just that this untriggers the specified Event instead of triggering it.<br />
<br />
<br />
<br />
==ACTION_VolumeTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Isn't it much better to have this in a ScriptedTrigger instead of having a dedicated Actor just for the purpose of triggering Volumes?<br />
<br />
<br />
<br />
==ACTION_VolumeUnTrigger==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = ACTION_VolumeUnTrigger<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Do I have to say anything? Maybe that there is basically no Volume out there that reacts on untriggering, except for my BlockingVolumeToggleable. Maybe I'll add more.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForCondition<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = LatentScriptedAction<br />
| custom = yes<br />
}}<br />
<br />
Waits until a TriggeredCondition has a certain value. Completes either<br />
instantly when the condition is matched or waits until the condition stays in<br />
that state for a specified duration.<br />
<br />
<br />
<br />
=Fix=<br />
These are community fixes for original stuff from the game that is not properly working in some scenarios.<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| custom = yes<br />
}}<br />
<br />
Works around a bug in ScriptedController which causes the ScriptedSequence<br />
to skip over actions if the event of an Action_WaitForEvent is triggered<br />
more than once in the same tick.<br />
<br />
<br />
<br />
==UTAction_WaitForCondition==<br />
by Wormbo<br />
{{infobox class<br />
| class = UTAction_WaitForEvent<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ACTION_WaitForEvent<br />
| custom = yes<br />
}}<br />
<br />
Waits exclusively for timer and unlike its superclass NOT for triggering.<br />
<br />
<br />
<br />
==UTMaterialTrigger==<br />
by Wormbo, originally named JBMaterialTrigger in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTMaterialTrigger<br />
| parent1 = MaterialTrigger<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
MaterialTrigger that works properly in network games and also allows to reset materials.<br />
<br />
<br />
See [[JDN:JBMaterialTrigger]] for more informations about this Actor.<br />
<br />
<br />
<br />
==UTEmitterClientTriggerable==<br />
by Wormbo, originally named JBEmitterClientTriggerable in the package 'JBToolbox'<br />
{{infobox class<br />
| class = UTEmitterClientTriggerable<br />
| parent1 = Emitter<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Emitter that properly propagates Trigger() events to clients in network games. Otherwise it like a regular Emitter Actor.<br />
<br />
<br />
See [[JDN:JBEmitterClientTriggerable]] for more informations about this Actor.<br />
<br />
<br />
<br />
==ShadowProjectorPlaceable==<br />
{{infobox class<br />
| class = ShadowProjectorPlaceable<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = ShadowProjector<br />
| custom = yes<br />
}}<br />
<br />
A fixed version of the ShadowProjector that works when manually placed in a map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/ShadowProjectorPlaceable|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==KarmaThing==<br />
by unknown author<br />
{{infobox class<br />
| class = KarmaThing<br />
| parent1 = KActor<br />
| parent2 = Actor<br />
| parent3 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This is a fixed version of the KActor that works in online games.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/KarmaThing|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==OnlineCameraTextureClient==<br />
by Maabus<br />
{{infobox class<br />
| class = OnlineCameraTextureClient<br />
| parent1 = CameraTextureClient<br />
| parent2 = Info<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Works exactly the same way as a normal CameraTextureClient, just that this one will also display dynamic Actors in netplay.<br />
<br />
However, the camera will not change the way how an Actor is considered relevant to the local client, that means you can only see things on the camera that are relevant to you at that time. See [[udn2:ReplicationDeObfuscation|Relevant Actors]] to find out how an Actor gets relevant and [http://www.angelmapper.com/gamedev/tutorials/securitycamera.htm Angel Mapper's Tutorial] to find out how to set up a Security Cam.<br />
<br />
<br />
<br />
==NetworkImportanceVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkImportanceVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
A Volume that forces any Actor inside it to be always relevant to the client for replication. Once the Actor leaves the Volume it will use it's default settings to determine the relevancy. This allows OnlineCameraTextureClients to display Actors that the client actually don't know about.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NetworkImportanceVolume|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
==NetworkLinkedClientVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NetworkLinkedClientVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
Can be associated by a NetworkImportanceVolume to make that Volume only active if actual players are inside this Volume.<br />
<br />
This should be used in the area from which a player can see an OnlineCameraTextureClient.<br />
Makes only sense if that area is not very frequently visited by human players or fairly small and if the area of the NetworkImportanceVolume is the opposite of that.<br />
<br />
<br />
<br />
==KarmaWakingVolume==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = KarmaWakingVolume<br />
| parent1 = Volume<br />
| parent2 = Brush<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Volume causes every Pawn or KActor subclasses in Phys_Karma or Phys_KarmaRagdoll state to perform their Karma calculations on every Tick instead of falling "asleep" if they aren't occupied by a player or waked by damage.<br />
<br />
The purpose of this Volume is to enclose the area in which a Vehicle or KActor can be on a Mover, for example a vehicle lift. That will allow the lift to properly move the vehicle while it normally would simply stay at it's old location.<br />
<br />
Use this only where it's necessary as it adds a constant strain of all enclosed Karma objects on the performance instead of using the automatic optimization.<br />
<br />
<br />
<br />
=Mapping Assistance=<br />
These tools are not really noticeable ingame but make a mapper's life a bit easier.<br />
<br />
==PIEDPlayerStart==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = PIEDPlayerStart<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = PlayerStart<br />
| custom = yes<br />
}}<br />
<br />
Placing one of these in the map will force the player to spawn at it,<br />
disabling all other PlayerStarts in the meanwhile. That way can you quickly<br />
check a certain position ingame during mapping without needing to walk there<br />
from the regular startpoints all the time.<br />
Just make sure to remove this when you are done.<br />
<br />
<br />
<br />
==CullDistanceVolume==<br />
by Crusha K. Rool, inspired by Epic<br />
{{infobox class<br />
| class = CullDistanceVolume<br />
| game = UT2004<br />
| engine = UE2<br />
| parent1 = Volume<br />
| custom = yes<br />
}}<br />
<br />
This catches up the idea of the CullDistanceVolume from UT3: At the beginning<br />
of the match, all StaticMeshes are checked if their BoundingSphere's diameter<br />
is smaller than the values in this array. Then they automatically get the<br />
CullDistance set from these properties that match their size, thus allow to<br />
quickly set up performance enhancements for the whole map.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/CullDistanceVolume|this page]] for more information about this Actor.<br />
<br />
<br />
<br />
=Pending Delete=<br />
This stuff is no longer necessary since other toolsets have taken care of it already. (Blame the Worm, he can feel free to delete the linked pages of these sections as soon as he notices)<br />
<br />
==NodeDamageGate==<br />
by Crusha K. Rool<br />
{{infobox class<br />
| class = NodeDamageGate<br />
| customparent1 = EventGate<br />
| parent2 = Triggers<br />
| parent3 = Actor<br />
| parent4 = Object<br />
| game = UT2004<br />
| engine = UE2<br />
| custom = yes<br />
}}<br />
<br />
This Actor deals a certain amount of damage to a PowerCore or PowerNode when being triggered.<br />
<br />
<br />
See [[User:Crusha/UltimateMappingTools/NodeDamageGate|this page]] for more informations about this Actor.<br />
<br />
<br />
<br />
[[Category:Mapping tools]]</div>Crusha