I'm a doctor, not a mechanic

Legacy:ControlPoint

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
UT :: Actor (UT) >> NavigationPoint (UT) >> ControlPoint

This type of actor is used as the most GameRelevant actor in the Domination gametype. There are various properties of ControlPoints that mappers can take advantage of.

Properties[edit]

PointName 
This variable is used to define the name of the ControlPoint. For example, the ControlPoint names in DOM-Sesmar are "Blue Ankh", "Red Ankh", and "Hall of Pillars".
bSelfDisplayed 
If a ControlPoint is used in a gametype other than Domination, then this is used to keep the point from being hidden. Even when the ControlPoint is not hidden, it will still have no functionality outside of a Domination gametype, but it will still change color and shape according to the team of the last player to touch it.
bScoreReady 
If a ControlPoint is held by one team long enough, this flag is set and the player and team owning this ControlPoint get points added to their score.
ControlSound 
When the ControlPoint is taken by another team, it makes this sound.
RedEvent, BlueEvent, GreenEvent, GoldEvent 
When this ControlPoint is taken by a member of another team, it will trigger one of these events, according to which team just took the ControlPoint. (Doesn't work; explained below.)

Discussion[edit]

Ticalion I cant seem to get anything to happen with the RedEvent, BlueEvent, GreenEvent, GoldEvent properties, has anyone else had any luck in using this as a trigger??

Techno_JF: Why didn't I see this before? Look at the code for this actor, just at the end of the UpdateStatus function:

	if ( E != '' )
		foreach AllActors(class'Actor', A, E )
		 Trigger(self, Controller);
}

Earlier in this function, E was set to be whichever of RedEvent, etc. applied, and then the mesh and lighting changed to reflect the team of the point's new controller. However, it's this last set of statements that doesn't work, because the ControlPoint is trying to trigger itself instead of another actor. For it to work properly, it should have been written like this:

	if ( E != '' )
		foreach AllActors(class'Actor', A, E )
		 A.Trigger(self, Controller);
}

So somebody at Epic missed a letter and a period, and an entire mapping feature is never realized. Let this be a lesson to others who write code for the Unreal engine!

Related Topics[edit]