It would be useful to have a way to block missions from being created without having to edit the OnCreate logic for every mission we want to block. For example, if the Kronosaurus is hunting the player we might want to stop any Korolov missions from being created.

This can be almost done by creating an "empty" mission with:

  • high priority
  • appropriate "missions unavailable" text in the Intro element
  • destroying the mission after accept/decline

The problems with this approach

  • dsRPGMission will show Intro, Briefing, Accept/DeclineReply screens when we may only want to display one. (Intro can be skipped by setting 'isIntroShown in <OnCreate>)
  • Have to show accept/decline options, or force accept which also undocks the player.

Possible improvements:

  • Add noAccept option (opposite of noDecline)
  • Skip DeclineReply pane if the mission does not define one
  • Allow a way for the Intro screen to abort - e.g. make 'exitScreen a valid option which overrides (@ options 'onExitPane) in rpgPagePaneInit so we can skip the Briefing pane
  • https://ministry.kronosaur.com/record.hexm?id=70375

It is possible to get the "Unavailable" text to display by calling msnSetUnavailable in OnCreate but:

  • makes it harder to clean up the mission objects afterwards
  • rpgMissionAssignment does not recognise non-player missions so we can easily end up with lots of non-player mission objects
  • the dsRPGMission Unavailable pane only supports a single pane display as it does not use rpgPagePane etc.
xephyr 9 Apr 2017:

You could just disable the dockscreen pane.

That has problems as well but its a functional solution.

giantcabbage 11 May 2017:

Actually it is possible to create decline only missions with:

<Text id="Briefing">
	(list
		{
			desc: "Briefing Text"
			actions: (list
				{
					label: "[D]ecline"
					nextPage: 'missionDecline
					}
				)
			}
		Nil
		)
</Text>

The Nil is required as rpgPagePaneInit ignores the actions list on the last page of the Briefing screen.
This is probably acceptable as this should not be a very common use case.

So the only change needed is to make the ReplyDecline pane optional

giantcabbage 1 Sep 2017:

PR 58 makes ReplyDecline optional:

  • Used for the Dantallion settlement mission (informant + rumors about CSC Antarctica)
  • Used for the Lamplighter testing mission where Decker only has a sinlge pane of text (e.g. NotPlayer, Come back when Captain etc)
george moromisato 20 Dec 2018:

PR has been merged, so I think I can close this.