User:Crusha/UltimateMappingTools: Difference between revisions
mNo edit summary |
Added a few more actors and changed my organisation of actors. |
||
Line 14: | Line 14: | ||
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. | 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. | ||
They were very friendly, especially Wormbo. Half of the things in this pack come from him! | They were very friendly, especially Wormbo. Half of the things in this pack come from him! | ||
The actors from other coders have been renamed for this toolset to avoid conflicts with the originals. | The actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most actors from Jailbreak has been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate". | ||
Line 22: | Line 22: | ||
=The Tools= | =The Tools= | ||
==UltimateONSFactory== | ==UltimateONSFactory== | ||
by Crusha K. Rool | |||
{{infobox class | {{infobox class | ||
| class = UltimateONSFactory | | class = UltimateONSFactory | ||
Line 240: | Line 241: | ||
== | |||
==EventGate== | |||
by Crusha K. Rool | |||
{{infobox class | {{infobox class | ||
| class = | | class = EventGate | ||
| custom = yes | | custom = yes | ||
| parent1 = Triggers | | parent1 = Triggers | ||
Line 249: | Line 253: | ||
}} | }} | ||
The abstract base class of all | The abstract base class of all custom actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering. | ||
== | ==LogicGate== | ||
by Crusha K. Rool | |||
{{infobox class | {{infobox class | ||
| class = | | class = LogicGate | ||
| custom = yes | | custom = yes | ||
| parent1 = | | parent1 = EventGate | ||
| parent2 = Triggers | | parent2 = Triggers | ||
| parent3 = Actor | | parent3 = Actor | ||
Line 263: | Line 268: | ||
}} | }} | ||
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses. | |||
LogicGates work the same way like their real life pendants: A TriggerEvent is considered "True", an UnTriggerEvent a "False". The output depends on the gate as described in the following actors. | |||
Each '''subclass''' has the following properties: | |||
===Property group 'Events'=== | ===Property group 'Events'=== | ||
Line 309: | Line 292: | ||
The output Event that will be triggered. | The output Event that will be triggered. | ||
==LogicalNOT== | |||
by Crusha K. Rool | |||
{{infobox class | |||
| class = LogicalNOT | |||
| custom = yes | |||
| parent1 = LogicGate | |||
| parent2 = EventGate | |||
| parent3 = Triggers | |||
| parent4 = Actor | |||
| parent5 = Object | |||
}} | |||
Toggles the boolean value of an incoming Event and forwards it. | |||
If the Event was an Untrigger-Event, then it will become a Trigger-Event and the other way around. | |||
This is the only subclass of '''LogicGate''' that doesn't have a SecondTag because only the first Tag is considered and immediately transformed into the complement. | |||
==LogicalOR== | |||
by Crusha K. Rool | |||
{{infobox class | |||
| class = LogicalOR | |||
| custom = yes | |||
| parent1 = LogicGate | |||
| parent2 = EventGate | |||
| parent3 = Triggers | |||
| parent4 = Actor | |||
| parent5 = Object | |||
}} | |||
Triggers an Event if AT LEAST ONE condition is True. | |||
Untriggers it, if an Event had been triggered and both conditions became False again. | |||
==LogicalAND== | ==LogicalAND== | ||
by Crusha K. Rool | |||
{{infobox class | {{infobox class | ||
| class = LogicalAND | | class = LogicalAND | ||
| custom = yes | | custom = yes | ||
| parent1 = | | parent1 = LogicGate | ||
| parent2 = Triggers | | parent2 = EventGate | ||
| | | parent3 = Triggers | ||
| | | parent4 = Actor | ||
| parent5 = Object | |||
}} | }} | ||
Line 324: | Line 343: | ||
Untriggers it, if an Event had been triggered and one condition became False again. | Untriggers it, if an Event had been triggered and one condition became False again. | ||
==LogicalNOR== | |||
by Crusha K. Rool | |||
{{infobox class | |||
| class = LogicalNOR | |||
| custom = yes | |||
| parent1 = LogicalOR | |||
| parent2 = LogicGate | |||
| parent3 = EventGate | |||
| parent4 = Triggers | |||
| parent5 = Actor | |||
| parent6 = Object | |||
}} | |||
Does exactly the opposite of the Logical OR. | |||
That means that it triggers an Event if none of the conditions is True and untriggers the Event if one or both conditions are False. | |||
==LogicalNAND== | |||
by Crusha K. Rool | |||
{{infobox class | |||
| class = LogicalNAND | |||
| custom = yes | |||
| parent1 = LogicalAND | |||
| parent2 = LogicGate | |||
| parent3 = EventGate | |||
| parent4 = Triggers | |||
| parent5 = Actor | |||
| parent6 = Object | |||
}} | |||
Does exactly the opposite of the LogicalAND. | |||
That means that it triggers an Event if only one or none of the conditions is True and untriggers the Event if both conditions are False. | |||
== | ==LogicalXOR== | ||
by Crusha K. Rool | |||
{{infobox class | {{infobox class | ||
| class = | | class = LogicalXOR | ||
| custom = yes | | custom = yes | ||
| parent1 = | | parent1 = LogicGate | ||
| parent2 = Triggers | | parent2 = EventGate | ||
| | | parent3 = Triggers | ||
| | | parent4 = Actor | ||
| parent5 = Object | |||
}} | }} | ||
Triggers an Event if EXACTLY ONE OF TWO conditions is True. | |||
Untriggers it, if an Event had been triggered and both conditions became False or True. | |||
==== | ==LinksetupEventGate== | ||
by Crusha K. Rool | |||
{{infobox class | |||
| class = LinksetupEventGate | |||
| custom = yes | |||
| parent1 = EventGate | |||
| parent2 = Triggers | |||
| parent3 = Actor | |||
| parent4 = Object | |||
}} | |||
When being triggered, this will only trigger the next Event, if the current linksetup matches one of the ones specified in the array. | |||
==== | ===Property group 'LinksetupEventGate'=== | ||
'''Type:''' [[ | ====AllowedLinksetups==== | ||
'''Type:''' [[array]]<[[String]]> | |||
The | Add names of Linksetups to this list. The next Event will only get (un)triggered when the current Linksetup is equal to one in this list. | ||
== | ==RandomEventGate== | ||
by Crusha K. Rool | |||
{{infobox class | {{infobox class | ||
| class = | | class = RandomEventGate | ||
| custom = yes | | custom = yes | ||
| parent1 = | | parent1 = EventGate | ||
| parent2 = Triggers | | parent2 = Triggers | ||
| parent3 = Actor | | parent3 = Actor | ||
Line 386: | Line 428: | ||
}} | }} | ||
Triggers the next Event with a probability that can be defined by the mapper. | |||
You can also set an alternative Event that is used instead, if the other one is not chosen. | |||
===Property group 'Events'=== | ===Property group 'Events'=== | ||
==== | ====AlternativeEvent==== | ||
'''Type:''' [[name]] | '''Type:''' [[name]] | ||
If this is set, then it will be (un)triggered if the normal Event fails. | |||
===Property group 'RandomEventGate'=== | |||
====TriggerProbability==== | |||
'''Type:''' [[float]] | |||
Enter the probability in percent with that the normal Event shall be triggered. (That means this percentage is used if the actor gets triggered) | |||
====UnTriggerProbability==== | |||
'''Type:''' [[float]] | |||
Enter the probability in percent with that the normal Event shall be untriggered. (That means this percentage is used if the actor gets untriggered) | |||
== | ==InstigatorModifier== | ||
by Crusha K. Rool | |||
{{infobox class | {{infobox class | ||
| class = | | class = InstigatorModifier | ||
| custom = yes | | custom = yes | ||
| parent1 = | | parent1 = EventGate | ||
| parent2 = Triggers | | parent2 = Triggers | ||
| parent3 = Actor | | parent3 = Actor | ||
Line 418: | Line 461: | ||
}} | }} | ||
Changes the properties of the Pawn that triggered the Event to the specified ones. Leave a value at 0 to keep the pawn's own value. | |||
The pawn must be a subclass of [[UE2:XPawn (UT2004)|xPawn]], so vehicles can't be modified by this (use a UltimateONSFactory to modify a vehicle at spawn time). However, if the instigator is a vehicle, then it's driver can be modified. | |||
===Property group 'InstigatorModifier'=== | |||
====bAddValues==== | |||
'''Type:''' [[bool]] | |||
Considers the pawn's old health and shield when applying the new values, so he doesn't get full health when damaged already. | |||
The maximum values are not affected by that. | |||
====Health==== | |||
'''Type:''' [[int]] | |||
The new health of the pawn. | |||
====Shield==== | |||
'''Type:''' [[int]] | |||
The new shield of the pawn. | |||
====bChangeMaxHealth==== | |||
'''Type:''' [[bool]] | |||
The pawn's health can be refilled up to the new health-value. SuperHealthMax is twice the health-value. | |||
====bChangeMaxShield==== | |||
'''Type:''' [[bool]] | |||
The pawn's shield can be refilled up to the new shield-value. ShieldStrengthMax is three times the shield-value. | |||
====GroundSpeed==== | |||
'''Type:''' [[float]] | |||
The maximum ground speed. | |||
====WaterSpeed==== | |||
'''Type:''' [[float]] | |||
The maximum swimming speed. | |||
====AirSpeed==== | |||
'''Type:''' [[float]] | |||
The maximum flying speed. | |||
====LadderSpeed==== | |||
'''Type:''' [[float]] | |||
Ladder climbing speed. | |||
====AccelRate==== | |||
'''Type:''' [[float]] | |||
Maximum acceleration rate. | |||
====JumpZ==== | |||
'''Type:''' [[float]] | |||
Vertical acceleration with jump. | |||
====AirControl==== | |||
'''Type:''' [[float]] | |||
Amount of AirControl available to the pawn. That means how good you can steer when you are not touching the ground. | |||
====MaxFallSpeed==== | |||
'''Type:''' [[float]] | |||
Maximum speed a pawn can land without taking damage (also limits what paths AI can use). | |||
====MaxMultiJump==== | |||
'''Type:''' [[int]] | |||
How often this pawn can multijump (negative values use default setting). | |||
====UnderWaterTime==== | |||
'''Type:''' [[float]] | |||
How much time a pawn can go without air (in seconds). | |||
====bRemovePowerUps==== | |||
'''Type:''' [[bool]] | |||
Remove any powerup from instigator. | |||
====bModifyVehicleDrivers==== | |||
'''Type:''' [[bool]] | |||
If True, this will also modify the driver of a vehicle. | |||
[[Category:Mapping tools]] | [[Category:Mapping tools]] |
Revision as of 13:52, 20 May 2010
Introduction
About this site
This site is dedicated to my upcoming toolset for Unreal Tournament 2004, formerly known as UltimateONSTools. It serves as a documentation to the toolset 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.
Please do not apply any changes on this site, I will maintain it on my own. Use the discussion page for feedback.
Motivation
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 gameflow by considering which PowerNodes in ONS are captured by a team and which are not. 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 gameflow. 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. :)
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.
They were very friendly, especially Wormbo. Half of the things in this pack come from him!
The actors from other coders have been renamed for this toolset to avoid conflicts with the originals. Most actors from Jailbreak has been renamed from "JBxyz" to "UTxyz" (because UT stands for UltimateTools :P), only a few remained "Ultimate".
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.
The Tools
UltimateONSFactory
by Crusha K. Rool
Template:User | Object >> Actor >> SVehicleFactory >> ONSVehicleFactory >> UltimateONSFactory (custom) |
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. Each individual vehicle entry in a list can be further modified, also with the ability to track the vehicle on the RadarMap.
Property group 'Events'
Tag
Type: name
Triggering the factory will enable it, i.e. set bEnabled to True.
UnTriggering it will disable it, i.e. setting it to False.
Event
Type: name
The default event is triggered whenever a vehicle is spawned by this factory.
PreSpawnEvent
Type: name
This is triggered before the vehicle spawns, when the SpawnBuildEffect is played. (see PreSpawnTime)
VehicleDestroyedEvent
Type: name
Triggered whenever a vehicle that was spawned by this factory gets destroyed.
Property group 'ONSVehicleFactory'
BlueTeamRotation
Type: int
If bReverseBlueTeamDirection, the vehicle will not turn by 180° for the blue team, but by this value. Negative values will rotate in the opposite direction.
8192 = 45°; 16384 = 90°; 32768 = 180°; etc..
Property group 'UltimateVehicleFactory'
bUseStaticTeams
Type: bool
The factory will not belong to the team that controls the closest team, but to the predefined team. If the other team holds the node, then this factory won't spawn any vehicles for that team.
StaticTeamNum
Type: byte
The factory will only work for this team.
0= red, 1= blue, 255= neutral/none
bIndependentFactory
Type: bool
The closest PowerNode or Core has no influence on this factory's activity or teamnumber. It will spawn the vehicles right away, even if the closest Node is disabled. The teamnumber of the vehicle will be the StaticTeamNum. Neutral vehicles are possible too.
This property overrides bUseStaticTeams.
bRandomFlip
Type: bool
If the spawned vehicle is neutral (because of bIndependentFactory), then there is a 50:50 chance that the spawned vehicle uses the BlueTeamRotation.
NotLockedForTeam
Type: byte
The spawned vehicle is ALWAYS locked for the team that is NOT entered here. This is mainly a hack for AS_MinigunTurrets, use this with them to keep them closed.
255 is normal ONS, 0 will always lock this for Blue, 1 always for Red
Default value: 255
bEnabled
Type: bool
Whether the factory is enabled at the beginning or not.
bToggleTrigger
Type: bool
Instead of the Trigger/UnTrigger-functionality will this only react to TriggerEvents, which will toggle the factory between enabled and disabled.
bUniqueVehicle
Type: bool
The factory spawns only a limited number of vehicles, then it stops working for the rest of the round. The number of vehicles that can be spawned can be set via MaxVehicleCount.
PreSpawnTime
Type: float
How many seconds before the vehicle spawn the SpawnBuildEffect and PreSpawnEvent is triggered.
Default value: 2.0
bCrushable
Type: bool
Allows spawning over colliding actors. Means any player that is in the collision radius of the vehicle when the RespawnTime is over will be crushed.
RetrySpawnTime
Type: float
If not bCrushable and the spawn location is blocked, then try to spawn again after this many seconds.
Default value: 1.0
LinksetupException
Enter the name of a Linksetup to disable this factory when that Linksetup is active. Leave this array empty to enable the factory for all Linksetups.
VehicleListRed
Type: array<SpawnedVehicleProperties>
List of vehicles that are available for spawn if the red team has the factory or it's a neutral independent factory.
VehicleListBlue
Type: array<SpawnedVehicleProperties>
List of vehicles that are available for spawn if the blue team has the factory.
Struct 'SpawnedVehicleProperties'
Vehicle
The class of the vehicle to spawn.
SpawnEffectSize
Type: enum<ESpawnSize>
Size of the SpawnEffect to use with this vehicle.
Health
Type: int
Health value that the spawned vehicle should have. 0 uses the vehicle's default health.
GroundSpeed
Type: float
The maximum ground speed. 0 = default
WaterSpeed
Type: float
The maximum water speed. 0 = default
AirSpeed
Type: float
The maximum flying speed. 0 = default
AccelRate
Type: float
Max acceleration rate. 0 = default
bEjectDriver
Type: bool
Eject the driver when the vehicle gets destroyed instead of killing him.
bSpawnProtected
Type: bool
Vehicle can't be damaged before it has been possessed.
bEnterringDoesNotUnlock
Type: bool
Vehicle is not unlocked to enemies when a player enters it.
bTrackVehicleOnRadar
Type: bool
The vehicle's location will be shown in realtime on the RadarMap.
RadarVisibleToTeam
Type: byte
The vehicle will be shown on the Radar to 255= both teams; 0= own team; 1= enemy team
RadarVisibleToHijack
Type: byte
When being hijacked, vehicle will be shown on the Radar to 255= both teams; 0= old owner team; 1= hijacker team
RadarOwnerUpdateTime
Type: float
How many seconds have to pass before the location of vehicle is updated for the owning team.
RadarEnemyUpdateTime
Type: float
Same as above, just for enemies.
RadarTexture
Type: Material
This image will represent the vehicle on the Radar.
RadarTextureScale
Type: float
The image will be scaled by this factor.
EventGate
by Crusha K. Rool
Template:User | Object >> Actor >> Triggers >> EventGate (custom) |
The abstract base class of all custom actors that handle TriggerEvents and UnTriggerEvents. All subclasses have collision disabled because they only depend on triggering.
LogicGate
by Crusha K. Rool
Template:User | Object >> Actor >> Triggers >> EventGate >> LogicGate (custom) |
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.
LogicGates work the same way like their real life pendants: A TriggerEvent is considered "True", an UnTriggerEvent a "False". The output depends on the gate as described in the following actors.
Each subclass has the following properties:
Property group 'Events'
Tag
Type: name
Triggering the Event with this name will toggle the first condition True. UnTriggering it will toggle the condition False.
SecondTag
Type: name
Triggering the Event with this name will toggle the second condition True. UnTriggering it will toggle the condition False.
Event
Type: name
The output Event that will be triggered.
LogicalNOT
by Crusha K. Rool
Toggles the boolean value of an incoming Event and forwards it. If the Event was an Untrigger-Event, then it will become a Trigger-Event and the other way around.
This is the only subclass of LogicGate that doesn't have a SecondTag because only the first Tag is considered and immediately transformed into the complement.
LogicalOR
by Crusha K. Rool
Triggers an Event if AT LEAST ONE condition is True. Untriggers it, if an Event had been triggered and both conditions became False again.
LogicalAND
by Crusha K. Rool
Triggers an Event if BOTH conditions are True. Untriggers it, if an Event had been triggered and one condition became False again.
LogicalNOR
by Crusha K. Rool
Template:User | Object >> Actor >> Triggers >> EventGate >> LogicGate >> LogicalOR >> LogicalNOR (custom) |
Does exactly the opposite of the Logical OR. That means that it triggers an Event if none of the conditions is True and untriggers the Event if one or both conditions are False.
LogicalNAND
by Crusha K. Rool
Template:User | Object >> Actor >> Triggers >> EventGate >> LogicGate >> LogicalAND >> LogicalNAND (custom) |
Does exactly the opposite of the LogicalAND. That means that it triggers an Event if only one or none of the conditions is True and untriggers the Event if both conditions are False.
LogicalXOR
by Crusha K. Rool
Triggers an Event if EXACTLY ONE OF TWO conditions is True. Untriggers it, if an Event had been triggered and both conditions became False or True.
LinksetupEventGate
by Crusha K. Rool
Template:User | Object >> Actor >> Triggers >> EventGate >> LinksetupEventGate (custom) |
When being triggered, this will only trigger the next Event, if the current linksetup matches one of the ones specified in the array.
Property group 'LinksetupEventGate'
AllowedLinksetups
Add names of Linksetups to this list. The next Event will only get (un)triggered when the current Linksetup is equal to one in this list.
RandomEventGate
by Crusha K. Rool
Template:User | Object >> Actor >> Triggers >> EventGate >> RandomEventGate (custom) |
Triggers the next Event with a probability that can be defined by the mapper. You can also set an alternative Event that is used instead, if the other one is not chosen.
Property group 'Events'
AlternativeEvent
Type: name
If this is set, then it will be (un)triggered if the normal Event fails.
Property group 'RandomEventGate'
TriggerProbability
Type: float
Enter the probability in percent with that the normal Event shall be triggered. (That means this percentage is used if the actor gets triggered)
UnTriggerProbability
Type: float
Enter the probability in percent with that the normal Event shall be untriggered. (That means this percentage is used if the actor gets untriggered)
InstigatorModifier
by Crusha K. Rool
Template:User | Object >> Actor >> Triggers >> EventGate >> InstigatorModifier (custom) |
Changes the properties of the Pawn that triggered the Event to the specified ones. Leave a value at 0 to keep the pawn's own value.
The pawn must be a subclass of xPawn, so vehicles can't be modified by this (use a UltimateONSFactory to modify a vehicle at spawn time). However, if the instigator is a vehicle, then it's driver can be modified.
Property group 'InstigatorModifier'
bAddValues
Type: bool
Considers the pawn's old health and shield when applying the new values, so he doesn't get full health when damaged already. The maximum values are not affected by that.
Health
Type: int
The new health of the pawn.
Shield
Type: int
The new shield of the pawn.
bChangeMaxHealth
Type: bool
The pawn's health can be refilled up to the new health-value. SuperHealthMax is twice the health-value.
bChangeMaxShield
Type: bool
The pawn's shield can be refilled up to the new shield-value. ShieldStrengthMax is three times the shield-value.
GroundSpeed
Type: float
The maximum ground speed.
WaterSpeed
Type: float
The maximum swimming speed.
AirSpeed
Type: float
The maximum flying speed.
LadderSpeed
Type: float
Ladder climbing speed.
AccelRate
Type: float
Maximum acceleration rate.
JumpZ
Type: float
Vertical acceleration with jump.
AirControl
Type: float
Amount of AirControl available to the pawn. That means how good you can steer when you are not touching the ground.
MaxFallSpeed
Type: float
Maximum speed a pawn can land without taking damage (also limits what paths AI can use).
MaxMultiJump
Type: int
How often this pawn can multijump (negative values use default setting).
UnderWaterTime
Type: float
How much time a pawn can go without air (in seconds).
bRemovePowerUps
Type: bool
Remove any powerup from instigator.
bModifyVehicleDrivers
Type: bool
If True, this will also modify the driver of a vehicle.