AFTN.Objectivetype 'a goal = {goal_name : string;This goal's name
*)kind : 'a;What kind of goal
*)min_chars : int;Number of required characters
*)}Abstract type for named goals
type objective_kind = | BringItemToLocation of Item.item * stringBring item to room designated by string
| CrewAtLocationWithMinimumScrap of string * intGather all crew at room designated by string with int scrap
| DropCoolant of int * stringDrop int coolant canisters in the room designated by string
Classes of objectives
type objective = objective_kind goalObjective goals
val string_of_objective : objective -> stringGet string representation of objective
type final_mission_kind = | HurtAsh of int * int * boolDeal int damage to Ash, who tracks the Crew. If Ash meets a character without a CoolantCanister to damage him, lose int morale. If bool, then use an incinerator on the xenomorph after Ash has been defeated to win, otherwise the game ends when Ash is defeated
| DropItemsAndAssemble of (Item.item * string) list * Item.item list * stringDrop an item in the room designated by string for each member of the first list for each crew member. The crew must cumulatively have the items corresponding to members of the second list. Then they must assemble at the room designated by string to end the game
| AlienCrewLocationsEncounter of string
* string list
* (Encounter.encounter ->
bool)
* stringThe xenomorph must be in the room designated by string. At least one character must be in each of the rooms desginated by the members of string list. The game ends when a drawn encounter satisfies encounter -> bool. This condition is described by string.
| SelfDestructAssemble of int * string * Item.item * intStart the self-destruct timer with int counters. A counter is removed at the start of the turn of the character who drew the final mission. The game is lost when all counters are gone. The game is won when characters assemble in the room designated by string holding an item and int scrap each
| SelfDestructClear of intStart the self-destruct timer with int counters as in SelfDestructAssemble. The game is instead won by clearing the events which have been placed at every room.
Classes of final missions
type final_mission = final_mission_kind goalval string_of_final_mission :
final_mission ->
int ->
int ->
int ->
Map.room list ->
stringval objectives_stack : objective listList of objectives to pull from
val final_mission_stack : final_mission listval get_objectives : int -> objective listGet a random list of n objectives
val get_final_mission : unit -> final_missionGet a random final mission