Skip to content

Domination Rework

Trillster requested to merge topic/default/domination-rework into branch/default

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 to 3. 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 types POINTINFO_OWNER and POINTINFO_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 and GAMEEVENT_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 and arg2 is the index of the control point. Modders can use SetResultValue(false) to deny the capture going through based on their own logic.
  • With that in mind, GAMEEVENT_DOMINATION_CONTROL has been renamed to GAMEEVENT_DOMINATION_CAPTURED.
  • Also added a new GAMEEVENT_DOMINATION_CONTEST event that fires for each player contesting a point. The activator is the player and arg1 is the index of the relevant control point. Modders can use SetResultValue(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 the point parameter.
Edited by Trillster

Merge request reports