Mostly Harmless

Difference between revisions of "User:Crusha/UltimateMappingTools"

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
m
(Moved complex parts of this page to sub pages)
Line 22: Line 22:
 
=The Tools=
 
=The Tools=
 
==UltimateONSFactory==
 
==UltimateONSFactory==
by Crusha K. Rool
+
by Crusha K. Rool, thanks to iwanpompier for help at getting the radar to work
 
{{infobox class
 
{{infobox class
 
| class  = UltimateONSFactory
 
| class  = UltimateONSFactory
| custom  = yes
 
 
| parent1 = ONSVehicleFactory
 
| parent1 = ONSVehicleFactory
 
| parent2 = SVehicleFactory
 
| parent2 = SVehicleFactory
 
| parent3 = Actor
 
| parent3 = Actor
 
| parent4 = Object
 
| parent4 = Object
 +
| game    = UT2004
 +
| engine  = UE2
 +
| custom  = yes
 
}}
 
}}
  
Line 37: Line 39:
  
  
===Property group 'Events'===
+
Go to [[User:Crusha/UltimateMappingTools/UltimateONSFactory|this page]] for a detailed description.
====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====
+
'''Type:''' [[array]]<[[String]]>
+
 
+
Enter the name of a [[UE2:ONSPowerLinkOfficialSetup (UT2004)|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====
+
'''Type:''' [[class]]<[[UE2:Vehicle (UT2004)|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:''' [[UE2:Material (UT2004)|Material]]
+
 
+
This image will represent the vehicle on the Radar.
+
 
+
====RadarTextureScale====
+
'''Type:''' [[float]]
+
 
+
The image will be scaled by this factor.
+
 
+
 
+
  
  
Line 247: Line 46:
 
{{infobox class
 
{{infobox class
 
| class  = EventGate
 
| class  = EventGate
| custom  = yes
 
 
| parent1 = Triggers
 
| parent1 = Triggers
 
| parent2 = Actor
 
| parent2 = Actor
 
| parent3 = Object
 
| parent3 = Object
 +
| game    = UT2004
 +
| engine  = UE2
 +
| custom  = yes
 
}}
 
}}
  
Line 261: Line 62:
 
{{infobox class
 
{{infobox class
 
| class  = LogicGate
 
| class  = LogicGate
| custom  = yes
+
| customparent1 = EventGate
| parent1 = EventGate
+
 
| parent2 = Triggers
 
| parent2 = Triggers
 
| parent3 = Actor
 
| parent3 = Actor
 
| parent4 = Object
 
| parent4 = Object
 +
| game    = UT2004
 +
| engine  = UE2
 +
| custom  = yes
 
}}
 
}}
  
 
The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.
 
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 "False". The output depends on the gate as described in the following actors.
 
  
 +
The following subclasses exist:
  
Each '''subclass''' has the following properties:
+
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOT|LogicalNOT]]
  
===Property group 'Events'===
+
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalOR|LogicalOR]]
====Tag====
+
'''Type:''' [[name]]
+
  
Triggering the Event with this name will toggle the first condition True.
+
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalAND|LogicalAND]]
UnTriggering it will toggle the condition False.
+
  
====SecondTag====
+
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNOR|LogicalNOR]]
'''Type:''' [[name]]
+
  
Triggering the Event with this name will toggle the second condition True.
+
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalNAND|LogicalNAND]]
UnTriggering it will toggle the condition False.
+
 
+
====Event====
+
'''Type:''' [[name]]
+
 
+
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==
+
by Crusha K. Rool
+
{{infobox class
+
| class  = LogicalAND
+
| custom  = yes
+
| parent1 = LogicGate
+
| parent2 = EventGate
+
| parent3 = Triggers
+
| parent4 = Actor
+
| parent5 = Object
+
}}
+
 
+
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
+
{{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 True.
+
 
+
 
+
==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 True.
+
 
+
 
+
 
+
==LogicalXOR==
+
by Crusha K. Rool
+
{{infobox class
+
| class  = LogicalXOR
+
| custom  = yes
+
| parent1 = LogicGate
+
| 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.
+
  
 +
[[User:Crusha/UltimateMappingTools/LogicGate#LogicalXOR|LogicalXOR]]
  
  
Line 400: Line 93:
 
{{infobox class
 
{{infobox class
 
| class  = LinksetupEventGate
 
| class  = LinksetupEventGate
| custom  = yes
+
| customparent1 = EventGate
| parent1 = EventGate
+
 
| parent2 = Triggers
 
| parent2 = Triggers
 
| parent3 = Actor
 
| parent3 = Actor
 
| parent4 = Object
 
| parent4 = Object
 +
| game    = UT2004
 +
| engine  = UE2
 +
| custom  = yes
 
}}
 
}}
  
When being triggered, this will only trigger the next Event, if the current linksetup matches one of the ones specified in the array.
+
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'===
 
===Property group 'LinksetupEventGate'===
Line 421: Line 116:
 
{{infobox class
 
{{infobox class
 
| class  = RandomEventGate
 
| class  = RandomEventGate
| custom  = yes
+
| customparent1 = EventGate
| parent1 = EventGate
+
 
| parent2 = Triggers
 
| parent2 = Triggers
 
| parent3 = Actor
 
| parent3 = Actor
 
| parent4 = Object
 
| parent4 = Object
 +
| game    = UT2004
 +
| engine  = UE2
 +
| custom  = yes
 
}}
 
}}
  
Line 454: Line 151:
 
{{infobox class
 
{{infobox class
 
| class  = InstigatorModifier
 
| class  = InstigatorModifier
| custom  = yes
+
| customparent1 = EventGate
| parent1 = EventGate
+
 
| parent2 = Triggers
 
| parent2 = Triggers
 
| parent3 = Actor
 
| parent3 = Actor
 
| parent4 = Object
 
| parent4 = Object
 +
| game    = UT2004
 +
| engine  = UE2
 +
| custom  = yes
 
}}
 
}}
  
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.
+
Changes the properties of the Pawn that triggered the Event to the specified ones.
 
+
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.
 
  
 +
See [[User:Crusha/UltimateMappingTools/InstigatorModifier|this page]] for more informations about this actor.
  
  
  
 
[[Category:Mapping tools]]
 
[[Category:Mapping tools]]

Revision as of 14:17, 8 June 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, thanks to iwanpompier for help at getting the radar to work

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


Go to this page for a detailed description.


EventGate

by Crusha K. Rool

UT2004 Object >> Actor >> Triggers >> EventGate (custom)
Known custom subclasses:
Crusha/UltimateMappingTools/LogicGate, Crusha/UltimateMappingTools/InstigatorModifier, Crusha/UltimateMappingTools/VIPlayerEventGate, Crusha/UltimateMappingTools/NodeDamageGate, Crusha/UltimateMappingTools/NodeEventDirector, Crusha/UltimateMappingTools/UnTriggerEventGate, Crusha/UltimateMappingTools/ScoreContainer, Crusha/UltimateMappingTools/RandomEventGate, Crusha/UltimateMappingTools/CountdownEventGate

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

UT2004 Object >> Actor >> Triggers >> EventGate >> LogicGate (custom)
Known custom subclass:
Crusha/UltimateMappingTools/LogicGate

The abstract base class of all logic gates. The only purpose of this class is to group the subclasses.


The following subclasses exist:

LogicalNOT

LogicalOR

LogicalAND

LogicalNOR

LogicalNAND

LogicalXOR


LinksetupEventGate

by Crusha K. Rool

UT2004 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

Type: array<String>

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

UT2004 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

UT2004 Object >> Actor >> Triggers >> EventGate >> InstigatorModifier (custom)

Changes the properties of the Pawn that triggered the Event to the specified ones.


See this page for more informations about this actor.