Skip to content

Commit

Permalink
merge with master
Browse files Browse the repository at this point in the history
  • Loading branch information
pa.pecherskij committed Sep 10, 2024
2 parents 1698ce0 + 922ed93 commit 5c90f49
Show file tree
Hide file tree
Showing 14 changed files with 876 additions and 130 deletions.
8 changes: 5 additions & 3 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ General Development
- [Codebase Organization](en/general-development/codebase-info/codebase-organization.md)
- [Acronyms & Nomenclature](en/general-development/codebase-info/acronyms-and-nomenclature.md)
- [Tips](en/general-development/tips.md)
- [Beginner FAQ](en/general-development/tips/beginner-faq.md)
- [Beginner FAQ](en/general-development/tips/beginner-faq.md)
- [Troubleshooting FAQ](en/general-development/tips/troubleshooting-faq.md)
- [Debugging Tools](en/general-development/tips/debugging-tools.md)
- [PRs With Engine Changes](en/general-development/tips/prs-with-engine-changes.md)
Expand All @@ -51,7 +51,7 @@ SS14 By Example
- [Porting Appearance Visualizers](en/ss14-by-example/making-a-sprite-dynamic/porting-appearance-visualizers.md)
- [Basic Networking and You](en/ss14-by-example/basic-networking-and-you.md)
- [Fluent and Localization](en/ss14-by-example/fluent-and-localization.md)
- [UI Survival Guide](en/ss14-by-example/ui-survival-guide.md)
- [UI Survival Guide](en/ss14-by-example/ui-survival-guide.md)


Robust Toolbox
Expand All @@ -77,6 +77,7 @@ Robust Toolbox
- [Entities](en/robust-toolbox/toolshed/commands/entity-control.md)
- [General](en/robust-toolbox/toolshed/commands/general.md)
- [Miscellaneous](en/robust-toolbox/toolshed/commands/misc.md)
- [Toolshed Examples](en/robust-toolbox/toolshed/toolshed-examples.md)
- [User Interface](en/robust-toolbox/user-interface.md)
- [IoC](en/robust-toolbox/ioc.md)
- [Rendering]()
Expand Down Expand Up @@ -113,6 +114,7 @@ Space Station 14
- [Displacement Maps](en/space-station-14/art/displacement-maps.md)
- [Device Network](en/space-station-14/core-tech/device-network.md)
- [NPCs](en/space-station-14/core-tech/npcs.md)
- [Entity Tables](en/space-station-14/core-tech/entity-tables.md)
- [Chemistry](en/space-station-14/core-tech/chemistry.md)
- [Metabolism](en/space-station-14/core-tech/chemistry/metabolism.md)
- [Reactions](en/space-station-14/core-tech/chemistry/reactions.md)
Expand Down Expand Up @@ -185,6 +187,7 @@ Space Station 14
- [Pizza Delivery Critter](en/space-station-14/round-flow/proposals/pizza-delivery-critter.md)
- [Rogue Drones](en/space-station-14/round-flow/proposals/rogue-drones.md)
- [Turf War](en/space-station-14/round-flow/proposals/turf-war.md)
- [Changeling](en/space-station-14/round-flow/proposals/changeling.md)

- [User Interface](en/space-station-14/user-interface.md)
- [PR Guidelines](en/space-station-14/user-interface/guidelines.md)
Expand Down Expand Up @@ -303,7 +306,6 @@ Community
- [Discord Rich Presence Repository](en/community/discord-rich-presence-repository.md)
- [Project Manager](en/community/projectmanager.md)
- [Maintainer](en/community/maintainer.md)
- [Maintainer Policy](en/community/maintainer/wizards-den-maintainer-policy.md)
- [Review Policy](en/community/maintainer/wizards-den-review-policy.md)
- [Admin](en/community/admin.md)
- [Admin Tooling](en/community/admin/admin-tooling.md)
Expand Down
222 changes: 106 additions & 116 deletions src/en/assets/misc/role_hierarchy.xml

Large diffs are not rendered by default.

5 changes: 0 additions & 5 deletions src/en/community/maintainer/wizards-den-maintainer-policy.md

This file was deleted.

3 changes: 2 additions & 1 deletion src/en/community/space-wizards-maintainer-list.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ Content Maintainers:
- [TheShuEd](https://github.com/TheShuEd) - @eshhhed (267327466060775425)
- [EmoGarbage404](https://github.com/EmoGarbage404) - @emogarbage (500128901805244436)
- [LankLTE](https://github.com/LankLTE) - @lanklte (328292818265047041)
- [Plykiya](https://github.com/Plykiya) - @plykiya (126071710712594432)
- [slarticodefast](https://github.com/slarticodefast) - @sebseb5071 (578191477839101967)
- [UbaserB](https://github.com/UbaserB) - @ubaser (578881480386805771)

Engine maintainers:
No one maintains only engine :p
4 changes: 2 additions & 2 deletions src/en/community/space-wizards-role-hierarchy.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,34 @@ Each entry is either an `add`, `remove`, `tweak`, or `fix`. There can be multipl

Maintainers may, at their discretion, add, modify, or remove a change log entry that you suggest.

#### Admin changelog

Putting `ADMIN:` in the changelog will place all changelogs below it into the admin changelog category instead of the main changelog category.

Note: The category is case-insensitive, but if it is not alphabetical ending with a colon, it will fail parsing the category and will fall back to placing the changelogs in the previous category or the main changelog category.

```
:cl:
ADMIN:
- add: Added fun!
- remove: Removed fun!
- tweak: Changed fun!
- fix: Fixed fun!
```
or
```
:cl:
- add: Added fun!
- remove: Removed fun!
- tweak: Changed fun!
- fix: Fixed fun!
ADMIN:
- add: Added fun!
- remove: Removed fun!
- tweak: Changed fun!
- fix: Fixed fun!
```

## Writing An Effective Changelog
The Changelog is for *players* to be aware of new features and changes that could affect how they play the game. It is *not* designed for maintainers, admins, or server operators (these should be in the PR description).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ While you're here, install `Python 3.7+` as well if you don't have it already. Y

<hr>

```admonish danger "Name and Email privacy"
When [setting up your `user.name` and `user.email`](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup#_your_identity), know that these are publicly displayed on all commits that you create. If you want to keep your information private, you can set `user.name` to your username instead of your real name, and `user.email` to the one provided by GitHub when the [`Keep my email addresses private`](https://github.com/settings/emails#toggle_visibility) setting is checked in [GitHub Email Settings](https://github.com/settings/emails#primary_email_select_label).
```

Now that you have Git installed, I recommend you read up a bit on the basics of it first and get acquainted with whatever git client you're working with, whether its just command-line (Git Bash) or anything else.

We're going to run through the process of setting up a Git environment for Space Station 14 so that you can **contribute code through pull requests, create your own codebase**, or just **check out the history of the project.**
Expand Down
8 changes: 8 additions & 0 deletions src/en/general-development/setup/server-hosting-tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,14 @@ The server needs network ports to be forwarded so that people can connect. By de

For more information about how to forward your ports, see: [Port Forwarding](../../server-hosting/port-forwarding.md)

After you have port forwarded, you can use [this site](https://www.whatismyip.com/) to retrieve your public IP address. If you have both an IPV4 and IPV6 try both if one fails.

Give this to your friends and tell them to direct connect to it. If port forwarding was done correctly they should be able to connect.

```admonish info
If have an IPV6 address (looks kinda like this ``fd11:5ee:bad:c0de::ab3:3d03``) make sure to include square brackets (``[fd11:5ee:bad:c0de::ab3:3d03]``) when in the direct connect menu.
```

### Configure Your Server

You can configure settings in the server by editing the config file, `server_config.toml`. The config file is TOML which is basically INI ~~except better specified, somewhat more powerful, easier to misuse, and more annoyingly opinionated (comments NEED their own line)~~.
Expand Down
10 changes: 8 additions & 2 deletions src/en/robust-toolbox/toolshed.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Toolshed is one of the three primary built-in debug tools (alongside `scsi` and View Variables.) for RobustToolbox, functioning as the game's development console. To use Toolshed, open the debug console or use the debug console in `devwindow`.

```admonish warning
Toolshed is not yet available on the client, so you need to use the `>` prefix command on the client in order to run its commands server-side.
Toolshed is not yet available on the client, so you need to use the `>` prefix command on the client in order to run its commands server-side. Ommiting this will often result in an error stating that you lack permission to run the command even if this is not the case.
```

Toolshed is a **pipeline shell**, and the primary method of performing complex actions is composition of commands. You can simply write multiple commands one after the other and as long as they are compatible, they will have their inputs successively fed to one another. For example, take the following **command run**:
Expand All @@ -14,7 +14,7 @@ Toolshed is a **pipeline shell**, and the primary method of performing complex a
entities with Item count
```

This is three commands, `entities`, `with`, and `count`. They together form a **command run**, a set of successive commands. You can use the `explain` command to provide information about a command run's flow. It's highly recommended you `explain` command runs you don't understand to get an idea of their flow.
This is three commands, `entities`, `with`, and `count`. They together form a **command run**, a set of successive commands. You can use the `explain` command to provide information about a command run's flow. It's highly recommended you `explain` command runs you don't understand to get an idea of their flow. Note that unlike other pipeline based shells, toolshed's pipeing is *implicit*; you do not need to include a special pipe symbol for commands to be joined into a pipeline. Simply writing them one after another is enough.

```
{{#include toolshed/explain_example_1.txt}}
Expand All @@ -32,3 +32,9 @@ Toolshed also supports variables in which you can store values. You can use the
```
{{#include toolshed/explain_example_3.txt}}
```

```admonish note
Toolshed often spits out lengthy stacktraces upon a command being used incorrectly. Typically, there is a more clear error above the stacktrace in your console.
```

For examples of how to string toolshead commands together see [toolshead examples](./toolshed/toolshed-examples.md)
192 changes: 192 additions & 0 deletions src/en/robust-toolbox/toolshed/toolshed-examples.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
# Toolshed Examples

This guide covers some basic examples of Toolshed commands.

## Interacting with entities

Most of the time that you are interacting with toolshead you are manipulating entities in some way.

### Basics
`ent` is a toolshed command that allows us to return an entity with the provided ENTID. By pipeing the output of the command, we can use it to various things on the entity. Some examples include:

```
> ent 12345 delete
```
Will delete the provided entity.

```
> ent 12345 replace PlushieBee
```
Will repalce the entity with the provided prototype, for example, turn it into a bee plushie.

```
> ent 12345 comp:ensure Mindshield comp:rm Electrified comp:rm Airtight
```
Will check if the entity has the "Mindshield" component and add it if needed, then remove the Electrified and Airtight components.

### Targeting yourself

`self` will always return the entity currently controlled by you.

```
> self rejuvenate / Will heal your character
```

### Entity Queries and Filters

`entities` and `nearby` will return either all entities that exist on the server or entities within a provided tile radius of the input entity. Keep in mind that these require the QUERY permission.

```
> entities
```
Will return a list of all entities on the server.

```
> self nearby 20
```
Will return all entities in the 20 tile radius of your character.

```
> ent 12345 nearby 3
```
Will return all entities in the 3 tile radius of entity 12345.

```
> entities with ZombifyOnDeath visualize
```
Will open an UI with all of the infected people on the station, from which you can either VV or TP to them.

```
> self nearby 20 replace PlushieBee
```
Will replace every entity in a 20 tile radius with the provided prototype (in this case `PlushieBee`).

```
> entities prototyped CableApcExtension delete
```
Will delete all LV power cables on the server.

The most important commands for filtering the output are as follows:

```
named "STRING"
```
Takes in a list of entities and will filter entities based on their name, this command is compatible with the wildcard `.*`.

```
> entities named ".*cable"
```
Will return all entities that end their name with the string "cable".

```
> entities named ".*power.*"
```
Will return all entities that contain the string "power" in their name.

```
with [component]
```
Takes a list of entities and only returns entities that have the specified component.

```
> entities with MobState
```
Will return all mobs on the server.

```
actor:controlled
```
Takes in a list of entities and will return all entities that are currently controlled by a player.

```
> entities actor:controlled tp:to self
```
`self` can also be used as an argument - this will teleport all players to your location.

```
select [N]
```
Takes in a list of entities and will randomly select n entities from the input.

```
select [N%]
```
Takes in a list of entities and will select a percentage of the input.

Combining filters together we can do as follows:
```
> entities actor:controlled select 5 tp:to self
```
Will teleport 5 randomly selected players to the entity you are currently controlling.

## Fun commands

### THE BEES WILL CONTINUE UNTIL MORALE IMPROVES:
```
> self rep 10 spawn:on "MobAngryBee" nearby 10 prototyped MobAngryBee select 1 tag:add "DoorBumpOpener" do "makeghostrole $ID \"Queen Bee\" \"Lead the bees!\"" do "rename $ID \"Queen Bee\"" nearby 10 protoyped MobAngryBee not with GhostRole do "makeghostrole $ID \"Angry Bee\" \"You are an angry bee and you want some pizza.\""
```
This command can be split into multiple parts for easier understanding:

- We start off by getting our current character with `self`.
- Then for that character we execute the command `spawn:on` 10 times: `rep 10 spawn:on "MobAngryBee"`.
- The `rep 10` part repeats the command ten times, and the `spawn:on` command will spawn a provided prototype MobAngryBee on the provided entity - here that's self.
- Then we want to fetch everything in a ten tile radius and filter off the bees we spawned with `nearby 10 prototyped MobAngryBee`.
- Once we have all of our bees, we select one of them using `select 1` and add the tag `DoorBumpOpener` using the command `tag:add`.
- Tags are like components that contain no data, `DoorBumpOpener` allows for opening airlocks by walking into them, just like a player would.
- Next, for the same one bee, we execute the legacy command `makeghostrole` - the first argument is the ID, the second one is the name, the third one is the description. It's important to use the \ symbol before the quotation mark to ensure it is escaped properly.
- Finally, we rename our bee to "Queen Bee".
- Then we fetch all nine other bees and also turn them into ghost roles, just like we did with the Queen Bee.

Now, a way more efficient way to do this would be to have two separate commands, one for the Queen Bee and one for the Angry Bees. This is just a demo of how complex toolshed can get.

### GHOSTULARITY:
```
> entities with Singularity comp:ensure MobState comp:ensure MovementIgnoreGravity comp:ensure InputMover comp:ensure MobMover do "makeghostrole $ID \"Singularity\" \"FUCK\""
```

This command will turn all singulos on the server into player controlled ghost roles.

### Bee plushie grenade

Have you ever wanted a bee plushie grenade? You can have one with this simple command!
```
> self spawn:on "GrenadeStinger" do "rename $ID \"bee plushie grenade\"" do "vvwrite /entity/$ID/ClusterGrenade/FillPrototype \"PlushieBee\""
```
You can replace the `FillPrototype` of cluster grenades with any valid Prototype. Keep in mind that any explosives you spawn this way will be activated by default, so you might not want to use it to spawn thirty Holy Hand Grenades.

### Put the station into debt

Salvage keeps powergaming? Put the station in debt with this one simple solution!
```
> stations:get do "vvwrite /entity/$ID/StationBankAccount/Balance 1000"
```
Make sure to replace the 1000 with the balance you want to set.

Alternatively, you could go into F7 > Objects > Stations, check the stations ENTID and then do:
```
vv /entity/ENTID/StationBankAccount
```

## Scripts and You

Scripts can be used to automate certain tasks or commands. To create a new script, you will need to create a new file in your Space Station 14 [client data directory](../user-data-directory.md#Client).

The file name should be whatever you want the script to be called. You can edit it with any text editor, just make sure to save it as a file with no extension.

Admins will often have a script to customize their ghosts. Here is an example of one:

```
> self not prototyped AdminObserver do "aghost"
> self comp:ensure ShowCriminalRecordIcons comp:ensure ShowJobIcons comp:ensure ShowMindShieldIcons comp:ensure ShowSyndicateIcons comp:ensure Grammar comp:ensure Identity
> self do "vvwrite entity/$ID/Ghost/color '#00D2AD'"
> self do "vvwrite entity/$ID/Description \"GHOST GANG!!\""
> self do "vvwrite entity/$ID/Grammar/Attributes[gender] Male"
```

- The first line makes sure you are an admin observer.
- Next, we make sure to add any of the components that are helpful for admining if needed. These show up the job icons, antag icons, mindshields. The `Grammar` and `Identity` components are used later for customizing the aghost.
- The third and fourth line set the ghost color and description using `vvwrite` with a path and a value.
- The last line changes the pronouns to show up as He whenever someone inspects the ghost.

When you want to run the script in game, all you have to do is use the exec command. If you called the above script "admin", you would run the command `exec /admin`.
2 changes: 2 additions & 0 deletions src/en/server-hosting/setting-up-ss14-watchdog.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ Assuming you've followed the structure laid out above, you simply need to have a

## Watchdog Configuration

Watchdog's config file is ``appsettings.yml``

The watchdog configuration is split into two major sections:

+ Global elements, shared across all instances (servers).
Expand Down
Loading

0 comments on commit 5c90f49

Please sign in to comment.