Maraiah/doc/data/1-terminal.md

332 lines
7.5 KiB
Markdown
Raw Permalink Normal View History

2019-07-24 19:14:02 -07:00
# TERMINAL CODE ###############################################################
The terminal definition format is extremely straightforward. Terminal commands
begin lines and are in the format:
```
#COMMAND_NAME parameters
```
In Forge and Maraiah, commands need not be uppercase. Atque does require all
commands to be uppercase.
Comments also begin lines (they can't be after the beginning of one) and will
disable any text proceeding them. They are formed like:
```
; comment content here
```
Terminals are numbered, and this is used in the map to determine which terminal
to display when a computer is used.
## Blocks ##
### Terminal Blocks ###
The number for the terminal being currently defined is set with the `#TERMINAL`
and `#ENDTERMINAL` commands. These are formed as:
```
#TERMINAL number
#ENDTERMINAL number
```
For example, defining a terminal numbered "1" would be:
```
#TERMINAL 1
; terminal's contents here
#ENDTERMINAL 1
```
### Sections ###
There are four possible sections in a terminal, which are between the
`#TERMINAL` and `#ENDTERMINAL` blocks:
```
#UNFINISHED
#FINISHED
#FAILURE
#SUCCESS
```
These all mark the start of where the terminal will display, depending on the
current status of your mission.
| Name | Will display when |
| ---- | ----------------- |
| `UNFINISHED` | your objective has not been met or no other block exists |
| `FINISHED` | you have succeeded or failed |
| `FAILURE` | you have failed your objective |
| `SUCCESS` | you have succeeded in your objective |
Sections must have an end, which is defined with:
```
#END
```
Between sections may be any amount of regular commands. There are two kinds of
these normal commands: Text commands, and interactive commands.
## Text Commands ##
All text commands may have (but do not require) text following them, which may
be formatted.
Line breaks will break in-game, but unbroken lines will automatically wrap. It
is generally best to just put all of your text onto one line, even if this
destroys your sanity. Use a text editor with line wrapping for this.
Example:
```
#PICT 10007
~text interface terminal malfunction error ~2992dud
welcome to mabmap i am durandal the most pretty ai in ever i made the pfhor ded and won all the everything you should go shoot some things I put here because reasons
```
### Formatting ###
Text effects are designated by a '$' and then one of the following:
| $-code | Effect |
| ------ | ------ |
| `I/i` | enables/disables italic text |
| `B/b` | enables/disables bold text |
| `U/u` | enables/disables underlined text |
| `Cn` | changes the text color, where "n" is a number 0 through 9 |
For more information on colors, see section ENUMERATIONS, Terminal Color.
Example:
```
$C1$BoOooO$IooOOoo$i$b$C0 ... $C6did I $Uspook$u you?$C0
```
### Text Command Overview ###
Text commands include:
```
#PICT pict_id alignment
#LOGON pict_id
#LOGOFF pict_id
#INFORMATION
#CHECKPOINT goal_id
#BRIEFING level_number
```
### `#PICT` ###
```
#PICT pict_id alignment
```
`#PICT` is the most basic and most used command throughout Marathon 2.
It displays a picture to the specified alignment and text to the other side.
It will:
- Wait for input before proceeding.
- Display 45 characters per line, and display up to 22 lines on one page.
- Display text aligned to the left on the right side of the screen.
If alignment is specified as RIGHT, text is aligned to the right on the left of
the screen. If alignment is specified as CENTER, no text may be displayed, only
an image. If no alignment is specified, it will default to an image on the left
and text on the right.
Example:
```
#PICT 10007
~text interface terminal malfunction error ~2992dud
hellote this is example text from durnadle prettiest ai in ever thank u for reading goodbye
```
### `#LOGON`, `#LOGOFF` ###
```
#LOGON pict_id
#LOGOFF pict_id
```
`#LOGON` and `#LOGOFF` are generally used first and last in a terminal.
These two display a PICT in the middle of the screen and text below the image if
you supply it. They both do things to the screen borders.
They will:
- Automatically continue, an input will interrupt it.
- Only display one line of text, at most 72 characters.
- Display text aligned to the center in the middle of the screen.
Example:
```
#LOGON 1600
<CMND PRAMA &681g1>
; ... content ...
#LOGOFF 1600
ehhg.431.4122//<PFGR ZNE6 &49c2>
```
### `#INFORMATION` ###
```
#INFORMATION
```
`#INFORMATION` will just display text, and is mostly used in Marathon 1.
It will:
- Wait for input before proceeding.
- Display 72 characters per line, and display up to 22 lines on one page.
- Display text aligned to the left on the left side of the screen.
Example:
```
#INFORMATION
you suck at videogames love durandal
p.s. if you don't win i'm erasing your home planet from existence
```
### `#CHECKPOINT` ###
```
#CHECKPOINT goal_id
```
`#CHECKPOINT` may only be used in Marathon 1, unless you're using Aleph One
version 1.1 or higher.
This shows a map centered on the specified goal point, with the goal circled, on
the left of the screen.
The map will only show polygons connected to the polygon the goal is in, so if
you have a separated area where the goal point is, it will only display that. It
will also not display secret areas and any polygons proceeding them.
It will:
- Wait for input before proceeding.
- Display 45 characters per line, and display up to 22 lines on one page.
- Display text aligned to the left on the right side of the screen.
Example:
```
#CHECKPOINT 7
go shoot these things so i can claim this victory as mine forever and tell you about the things that i totally shot for approximately 200 years
```
### `#BRIEFING` ###
```
#BRIEFING level_number
```
BRIEFING may only be used in Marathon 1. It is identical to INFORMATION, but
after you're done reading, it will teleport you to the specified level.
## Interactive Commands ##
Interactive commands are all actions carried out by the game that do not all
effect the active terminal.
### Interactive Command Overview ###
Interactive commands include:
```
#INTERLEVEL TELEPORT level_number
#INTRALEVEL TELEPORT polygon_tag
#TAG tag
#SOUND sound_number
#STATIC duration
```
### `#INTERLEVEL TELEPORT` ###
```
#INTERLEVEL TELEPORT level_number
```
`#INTERLEVEL TELEPORT` exits the terminal and teleports you to the specified
level. If the level number is "256", this ends the game.
Example:
```
#INTERLEVEL TELEPORT 7
```
### `#INTRALEVEL TELEPORT` ###
```
#INTRALEVEL TELEPORT polygon_tag
```
`#INTRALEVEL TELEPORT` exits the terminal and teleports you to the centroid of
the specified polygon within the map.
Example:
```
#INTRALEVEL TELEPORT 77
```
### `#TAG` ###
```
#TAG tag
```
`#TAG` activates all lights and platforms with the specified tag.
Example:
```
#TAG 77
```
### `#SOUND` ###
```
#SOUND sound_number
```
`#SOUND` plays the specified sound from the Sounds file or from the scenario and
then goes to the next level.
Example:
```
#SOUND 77
```
### `#STATIC` ###
```
#STATIC duration
```
`#STATIC` fills the terminal with TV static for the specified duration in
1/30ths seconds. Aleph One only.
Example:
```
#STATIC 60
```
<!-- EOF -->