Domination Rework
From what I've seen, Domination in Zandronum is currently not much of a popular mode. In addition, whenever it is played, it's typically through custom ACS implementations as opposed to using the engine's version. Every game seems to handle this mode's ruleset a little bit differently, so I don't think it's feasible to satisfy all groups with the out of the box Domination.
With that in mind, this MR aims to make generally agreeable changes to the stock mode, mainly allowing players to contest a point that they own and some changes to the HUD to address ticket 0004367. However, the remainder of the changes are new features intended to allow modders to define their own Domination ruleset via use of event scripts and new ACS functions. Notable changes are listed below:
- Players can no longer capture control points which are being contested by other players.
- Added a
sv_dominationscorerate
CVar which defaults to3
. This can be used to make the score rate match Unreal Tournament or other games. -
GetControlPointInfo
is a new ACS function that takes an index of a control point and a type parameter to return information about that control point. Valid types of info are the following:-
POINTINFO_NAME
: The name of the point. -
POINTINFO_OWNER
: The team which currently owns the point. 255 means no owner. -
POINTINFO_DISABLED
: Whether or not the control point has been disabled.
-
-
SetControlPointInfo
is a new ACS function that takes the index, a type, and a value to set information about that control point. This can only be used with typesPOINTINFO_OWNER
andPOINTINFO_DISABLED
. This function allows modders to create maps where the control points rotate as opposed to always being active. -
IsPlayerContestingControlPoint
is a new ACS function that takes a player number and a control point index and returns whether or not the player is currently contesting the point. -
GAMEEVENT_DOMINATION_CONTROL
andGAMEEVENT_DOMINATION_POINT
have been updated to give the index of the control point as opposed to the name. - Added a new
GAMEEVENT_DOMINATION_CAPTURING
event that fires before the capture has occurred.arg1
is the index of the team attempting the capture andarg2
is the index of the control point. Modders can useSetResultValue(false)
to deny the capture going through based on their own logic. - With that in mind,
GAMEEVENT_DOMINATION_CONTROL
has been renamed toGAMEEVENT_DOMINATION_CAPTURED
. - Also added a new
GAMEEVENT_DOMINATION_CONTEST
event that fires for each player contesting a point. The activator is the player andarg1
is the index of the relevant control point. Modders can useSetResultValue(false)
to disregard that player's contesting status. This event can be useful for denying invisible players from contesting or giving players healing if they're in their own control points. -
GetActorSectorLocation
now returns the index of the control point when using thepoint
parameter.