Skip to content

Commit

Permalink
Add initial marks documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
matr1x-hackmud committed Nov 24, 2024
1 parent 47c4853 commit fa669fc
Show file tree
Hide file tree
Showing 6 changed files with 254 additions and 0 deletions.
60 changes: 60 additions & 0 deletions docs/guides/new_players/marks.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
title: Intro to the Marks System
---

The ((%QMarks System%)) is a means of tracking your progression through hackmud. This guide will aim to explain what the ((%QMarks System%)) is, what to expect and how to progress through ((%Qmarks%)).

### What Are Marks?

((%QMarks%)) (known also as '((%Qprotocol certification marks%))') are an indicator of sentience quality. The earliest '*Required Marks*' function as hackmud's tutorial and early-game content, gating access to a number of Trust scripts - as well as arbitrary user script execution - until you establish and demonstrate a strong understanding of Trust's domain.

### How do I access locked scripts?

Many scripts in [[scripts.trust:((scripts.trust))]] - as well as all other scripts uploaded by users - will be locked behind completing a relevant mark challenge. Currently, the ((%Qcontext%)) mark gates the execution of arbitrary user scripts, plus Trust scripts that are not otherwise unlocked during Required Marks.

Running a locked script will inform you of what challenge you must complete to unlock it, including ones which you may not yet have access to.

```
>>accts.balance
:::TRUST COMMUNICATION::: You must complete marks.accts to access this functionality.
```

### What Marks can I do?

Marks that you are currently able to start will be displayed in [[marks.available:((marks.available))]]:

```
>>marks.available
Top level marks are available to earn now, run marks.<mark_name> to begin a mark
To view progress see marks.protocol
> marks.input
|
\---- kiddie_pool
```

### How do I see my progress?

Progress through the Marks System is displayed through your ((%Qprotocol%)), which can be viewed at any time with [[marks.protocol:((marks.protocol))]]:

<img src="/images/marks_protocol_example.png" />

### How do I skip the Marks System?

Required marks can be skipped at any time by running [[marks.sync:((marks.sync))]]. This will fast-forward through every required mark, unlocking all Trust scripts as well as arbitrary user script execution.

Users which had already migrated out of the vLAN before the introduction of the Marks System will be treated as having completed the Required Marks progression already.

### Hidden Marks

An unknown amount of hidden marks are available to be achieved. These are typically for completing challenges in high-tier content, solving puzzles or performing other obscure actions. Hidden marks are not revealed in [[marks.available:((marks.available))]] before being earned.

Currently, hidden marks do not explain how they were obtained, or when they were obtained, inside [[marks.protocol:((marks.protocol))]].

### Trust Script Info

Documentation for ((%Qmark%))-related Trust scripts are available below:

* [[marks.protocol:((marks.protocol))]]
* [[marks.available:((marks.available))]]
* [[marks.sync:((marks.sync))]]
57 changes: 57 additions & 0 deletions docs/scripting/trust_scripts/marks.available.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
title: marks.available
description: "Displays recommended Marks the caller can achieve"
---

((marks.available)) displays all currently-available [[marks:((%Qmarks%))]] for the user to achieve. This initially consists of Required Marks, but can become Suggested Marks and eventually Optional Marks.

### Security Level

HIGHSEC

## Syntax

### CLI

```
marks.available
```

### Script

```
#hs.marks.available()
```

### Parameters

No known parameters.

### Return

Returns a string.

#### CLI

```
>>marks.available
Top level marks are available to earn now, run marks.<mark_name> to begin a mark
To view progress see marks.protocol
> marks.input
|
\---- kiddie_pool
```

#### Script

Same as CLI.

## Example

```js
function(context, args)
{
return #hs.marks.available()
}
```
80 changes: 80 additions & 0 deletions docs/scripting/trust_scripts/marks.protocol.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: marks.protocol
description: "Displays the caller's protocol"
---

((marks.protocol)) displays the [[marks:((%Qmarks%))]] obtained by the caller, visualised through their ((%Qprotocol%)) grid.

### Security Level

HIGHSEC

## Syntax

### CLI

```
marks.protocol
```

### Script

```
#hs.marks.protocol()
```

### Parameters

#### pos (optional)

The '((%Npos%))' argument allows users to provide a co-ordinate as a 2-item array [x,y]. If a mark is lit at this co-ordinate, the mark name and the date it was earned will be displayed.

### Return

Returns a string.

#### CLI

```
>>marks.protocol
-- initiate protocol certification mark display --
012345678
0 █████████
1 █████████
2 █████████
3 █████████
4 █████████
```

Completed marks are lit with the color ((%QQ%)); incomplete marks use the color ((%bb%))

```
>>marks.protocol {pos:[0,0]}
012345678
0 o████████
1 █████████
2 █████████
3 █████████
4 █████████
mark: scratch
earned_at: YYMMDD
```

#### Script

Same as CLI.

## Example

```js
function(context, args)
{
return #hs.marks.protocol({ pos:[2,4] })
}
```
56 changes: 56 additions & 0 deletions docs/scripting/trust_scripts/marks.sync.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: marks.sync
description: "Skips all Required Marks"
---

((marks.sync)) skips all required/tutorial [[marks:((%Qmarks%))]] for the user - functioning as an equivalent to ((sys.migrate)) for the Marks System.

### Security Level

NULLSEC

## Syntax

### CLI

```
marks.sync
```

### Script

```
#ns.marks.sync()
```

### Parameters

No known parameters.

### Return

Returns a string.

#### CLI

```
>>marks.sync
You have fast-forwarded to the end of the marks progression.
Mark :::not_yet_obtained_required_mark::: earned - view further training with marks.available
Mark :::not_yet_obtained_required_mark::: earned - view further training with marks.available
```

#### Script

Same as CLI.

## Example

```js
function(context, args)
{
return #ns.marks.sync()
}
```
1 change: 1 addition & 0 deletions src/plugins/rehype/autocolor.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const trustUsers = [
"sys",
"trust",
"users",
"marks"
];

// Matches (( <content > ))
Expand Down
Binary file added static/images/marks_protocol_example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit fa669fc

Please sign in to comment.