Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/cmss13-devs/cmss13 into n…
Browse files Browse the repository at this point in the history
…ew_uniforms
  • Loading branch information
Misttyy committed Jul 22, 2023
2 parents 6f4c7c0 + 7a6d966 commit 65c4877
Show file tree
Hide file tree
Showing 3,188 changed files with 290,644 additions and 316,367 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
52 changes: 40 additions & 12 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,18 +1,46 @@
# dmm map merger hook
# needs additional setup, see tools/mapmerge/install.txt
*.dmm merge=merge-dmm
* text=auto

# dmi icon merger hook
# needs additional setup, see tools/dmitool/merging.txt
*.dmi merge=merge-dmi

# force changelog merging to use union
html/changelog.html merge=union

# Declare files that will always have LF line endings on checkout.
## Enforce text mode and LF line breaks
*.bat text eol=lf
*.cjs text eol=lf
*.css text eol=lf
*.dm text eol=lf
*.dmm text eol=lf
*.dme text eol=lf
*.dmf text eol=lf
*.htm text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.jsx text eol=lf
*.md text eol=lf
*.ps1 text eol=lf
*.py text eol=lf
*.scss text eol=lf
*.sql text eol=lf
*.svg text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.txt text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.sh text eol=lf
Dockerfile eol=lf

## Enforce binary mode
*.bmp binary
*.dll binary
*.dmb binary
*.exe binary
*.gif binary
*.jpg binary
*.png binary
*.so binary

## Merger hooks, run tools/hooks/install.bat or install.sh to set up
*.dmm text eol=lf merge=dmm
*.dmi binary merge=dmi

## Force tab indents on dm files
*.dm whitespace=indent-with-non-tab


9 changes: 3 additions & 6 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,9 @@
/tools/docker/ @Fira
/Dockerfile @Fira

# Stan_Albatross
# MorrowWolf

/code/modules/projectiles/guns/lever_action.dm @stanalbatross
/code/game/objects/items/backpack_sprayers.dm @stanalbatross
/code/game/objects/items/tools/experimental_tools.dm @stanalbatross
/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @morrowwolf
/code/modules/gear_presets/survivors.dm @morrowwolf

# MULTIPLE OWNERS
/icons/ @Agameofscones @Monkeysfist101 @nauticall
/maps/ @Agameofscones @nauticall @Nanu308
32 changes: 23 additions & 9 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- [Introduction](#introduction)
- [Getting Started](#getting-started)
- [Meet the Team](#meet-the-team)
- [Head Maintainer and Project Manager](#head-maintainer-and-project-manager)
- [Head Maintainer and Maintainer Managers](#head-maintainer-and-maintainer-managers)
- [Maintainers](#maintainers)
- [Staff Tools and Major Rule changing PR’s](#staff-tools-and-major-rule-changing-prs)
- [Issue Managers](#issue-managers)
Expand All @@ -16,6 +16,7 @@
- [Writing understandable code](#writing-understandable-code)
- [Misc](#misc)
- [Pull Request Process](#pull-request-process)
- [A note on balance impacting PRs](#a-note-on-balance-impacting-prs)
- [Good Boy Points](#good-boy-points)
- [Porting features/sprites/sounds/tools from other codebases](#porting-featuresspritessoundstools-from-other-codebases)
- [Things you can work on](#things-you-can-work-on)
Expand Down Expand Up @@ -52,9 +53,9 @@ You can of course, as always, ask for help on the Discord channels or the forums

## Meet the Team

### Head Maintainer and Project Manager
### Head Maintainer and Maintainer Managers

The Head Maintainer and Project Manager are responsible for controlling, adding, and removing maintainers from the project. In addition to filling the role of a normal maintainer, they have sole authority on who becomes a maintainer, as well as who remains a maintainer and who does not.
The Head Maintainer and Maintainer Managers are responsible for controlling, adding, and removing maintainers from the project. In addition to filling the role of a normal maintainer, they have sole authority on who becomes a maintainer, as well as who remains a maintainer and who does not.

### Maintainers

Expand All @@ -73,10 +74,10 @@ These are the few directives we have for project maintainers.
- Try to get secondary maintainer approval before merging if you are able to.
- PRs with empty commits intended to generate a changelog.
- Do not merge PRs that contain content from the [banned content list](./CONTRIBUTING.md#banned-content).
- Do not merge PRs that contain balance changes without GA approval. Exceptions include:
- Any PR that has been un-reviewed by a GA for 7 days.
- Do not merge PRs that contain balance changes without Maintainer Manager approval. Exceptions include:
- Any PR that has been un-reviewed by a Maintainer Manager for 7 days.
- Do not remove the DNM label that another Maintainer has applied. Exceptions include:
- GAs removing a DNM label placed by a Maintainer for Balance/Design reasons
- Maintainer Managers removing a DNM label placed by a Maintainer for Balance/Design reasons

These are not steadfast rules as maintainers are expected to use their best judgement when operating.

Expand Down Expand Up @@ -156,7 +157,15 @@ There is no strict process when it comes to merging pull requests. Pull requests

* While we have no issue helping contributors (and especially new contributors) bring reasonably sized contributions up to standards via the pull request review process, larger contributions are expected to pass a higher bar of completeness and code quality *before* you open a pull request. Maintainers may close such pull requests that are deemed to be substantially flawed. You should take some time to discuss with maintainers or other contributors on how to improve the changes.

* After leaving reviews on an open pull request, maintainers may convert it to a draft. Once you have addressed all their comments to the best of your ability, feel free to mark the pull as `Ready for Review` again.
* After leaving reviews on an open pull request, maintainers should convert it to a draft. Once you have addressed all their comments to the best of your ability, feel free to mark the pull as `Ready for Review` again.

### A note on balance impacting PRs

Certain PRs, such as those which directly change number values (i.e. health, recoil, damage) or add large pieces of content to the game (i.e. a new gun, a new dropship weapon, or a new xeno structure) can have the potential to highly impact game balance or gameflow.

* If a Maintainer Manager or Head Maintainer has not reviewed a pull request that impacts balance in 7 days, maintainers may review and merge the PR themselves.

* We understand that having something you have worked on for quite some time being denied can be frustrating. Therefore, it is recommended that you check with a maintainer before beginning to code your PR if you have any doubts that it will be accepted. This will save everyone's time and energy.

## Good Boy Points

Expand Down Expand Up @@ -212,12 +221,13 @@ Entirely new maps are generally considered to be stepping stones into the Develo
- Latency optimizations and improvements
- Backend system refactors that improve server stability or performance
- Minor features that don’t impact the overall round loop
- Content for jobs currently lacking in it
- Anything on the public task-board
- New Alien strains
- New Marine and Alien tech options
- Bay12 legacy feature removal (such as wizard backend, laser eyes, etc)
- Map specific survivor loadouts
- Bug fixes and inconsistency fixes
- New TGUI

## What we don't want
The following list is non-exhaustive, but should give you a good idea of what the dev team don't want to see in Pull Requests.
Expand All @@ -231,10 +241,14 @@ The following list is non-exhaustive, but should give you a good idea of what th
### Mapping
- Nightmare inserts with ridiculous loot or ones that are out of place (don’t put snow on LV, for example)
- Additional detailing that degrades arena space or hinders gameplay in any sort of way
- Event or unused maps

### Coding
- Only direct changes to balance numbers on an PR (damage, recoil, health, armor, movespeed, etc), with nothing else to add to the game (without prior approval)
- No additional species or races, even Arcturians
- No new whitelists
- NanoUI
- Player-facing HTML UIs
- Prior denied content/PRs (without approval)

Remember that the following lists are not exhaustive. And you can freely contribute an PR with content that can be shuffled into the “What we don’t want” category, and still get it merged. It is just unlikely without prior talk/approval from a maintainer.

Expand Down
9 changes: 6 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,16 @@ del: Removed old things
qol: made something easier to use
balance: rebalanced something
fix: fixed a few things
spellcheck: fixed a few typos
ui: changed something relating to user interfaces
code: changed some code
refactor: refactored some code
soundadd: added a new sound thingy
sounddel: removed an old sound thingy
imageadd: added some icons and images
imagedel: deleted some icons and images
spellcheck: fixed a few typos
code: changed some code
refactor: refactored some code
mapadd: added a new map or section to a map
maptweak: tweaked a map
config: changed some config setting
admin: messed with admin stuff
server: something server ops should know
Expand Down
10 changes: 9 additions & 1 deletion .github/add_labels.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,20 @@
'refactor': ["Refactor", ["refactored some code"]],
'config': ["Config", ["changed some config setting"]],
'admin': ["Admin", ["messed with admin stuff"]],
'server': ["Server", ["something server ops should know"]]
'server': ["Server", ["something server ops should know"]],
'soundadd': ["Sound", ["added a new sound thingy"]],
'sounddel': ["Sound", ["removed an old sound thingy"]],
'imageadd': ["Sprites", ["added some icons and images"]],
'imagedel': ["Sprites", ["deleted some icons and images"]],
'mapadd': ["Mapping", ["added a new map or section to a map"]],
'maptweak': ["Mapping", ["tweaked a map"]],
'ui' : ["UI", ["changed something relating to user interfaces"]]
}

fileToPrefix = {
'wav': 'Sound',
'ogg': 'Sound',
'mp3': 'Sound', ## Can't believe they forgot about the best sound format
'dmm': 'Mapping',

'js': 'UI',
Expand Down
9 changes: 9 additions & 0 deletions .github/alternate_byond_versions.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# This file contains extra tests to run for specific BYOND versions.
# This is useful for making sure we maintain compatibility with both older and newer versions,
# while still having our main tests run on a guaranteed pinned version.

# Format is version: map
# Example:
# 500.1337: runtimestation

515.1603: lv624
4 changes: 3 additions & 1 deletion .github/gbp.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ reset_label = "GBP: Reset"
"Priority: CRITICAL" = 20
"Priority: High" = 15
"Quality of Life" = 1
"Refactor" = 10
"Refactor" = 6
"Roadmap" = 15
"Sound" = 3
"Sprites" = 3
"UI" = 3
91 changes: 81 additions & 10 deletions .github/guides/STANDARDS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,39 @@ These are our code standards. They include information about how to properly wor

As with the style guide, you are expected to follow these specifications in order to make everyone's lives easier. It'll save both your time and ours, by making sure you don't have to make any changes and we don't have to ask you to. Thank you for reading this file!

1. [General](#general)
2. [Structural](#structural)
3. [Optimization](#optimization)
4. [BYOND Quirks](#dream-maker-quirks/tricks)
5. [SQL](#sql)
- [Code Standards](#code-standards)
- [General](#general)
- [Object Oriented Code](#object-oriented-code)
- [Avoid hacky code](#avoid-hacky-code)
- [Develop Secure Code](#develop-secure-code)
- [User Interfaces](#user-interfaces)
- [Dont override type safety checks](#dont-override-type-safety-checks)
- [Do not use text/string based type paths](#do-not-use-textstring-based-type-paths)
- [Other Notes](#other-notes)
- [Structural](#structural)
- [No duplicated code (Don't repeat yourself)](#no-duplicated-code-dont-repeat-yourself)
- [Prefer `Initialize()` over `New()` for atoms](#prefer-initialize-over-new-for-atoms)
- [Files](#files)
- [Use of `.proc/xyz` format for callback timers](#use-of-procxyz-format-for-callback-timers)
- [PROC\_REF Macros](#proc_ref-macros)
- [Signal Handlers](#signal-handlers)
- [Enforcing parent calling](#enforcing-parent-calling)
- [Avoid unnecessary type checks and obscuring nulls in lists](#avoid-unnecessary-type-checks-and-obscuring-nulls-in-lists)
- [All `process` procs need to make use of delta-time and be frame independent](#all-process-procs-need-to-make-use-of-delta-time-and-be-frame-independent)
- [Optimization](#optimization)
- [Startup/Runtime tradeoffs with lists and the "hidden" init proc](#startupruntime-tradeoffs-with-lists-and-the-hidden-init-proc)
- [Icons are for image manipulation and defining an obj's `.icon` var, appearances are for everything else.](#icons-are-for-image-manipulation-and-defining-an-objs-icon-var-appearances-are-for-everything-else)
- [Do not abuse associated lists.](#do-not-abuse-associated-lists)
- [Dream Maker Quirks/Tricks](#dream-maker-quirkstricks)
- [Loops](#loops)
- [In-To for-loops](#in-to-for-loops)
- [`for(var/A in list)` versus `for(var/i in 1 to list.len)`](#forvara-in-list-versus-forvari-in-1-to-listlen)
- [Dot variable (`.`)](#dot-variable-)
- [Exception: `. = ..()`](#exception---)
- [Exception: Runtime resilience](#exception-runtime-resilience)
- [The BYOND walk procs](#the-byond-walk-procs)
- [BYOND hellspawn](#byond-hellspawn)
- [Icon hell](#icon-hell)

## General

Expand Down Expand Up @@ -94,6 +122,54 @@ While we normally encourage (and in some cases, even require) bringing out of da

* Files and path accessed and referenced by code above simply being #included should be strictly lowercase to avoid issues on filesystems where case matters.

### Use of `.proc/xyz` format for callback timers
This is a simple one - as we will eventually move to 515, we will need to ditch this kind of callback. So please don't add any new ones. Make our lives easier.

### PROC_REF Macros
When referencing procs in RegisterSignal, Callback and other procs you should use PROC_REF, TYPE_PROC_REF and GLOBAL_PROC_REF macros.
They ensure compilation fails if the reffered to procs change names or get removed.
The macro to be used depends on how the proc you're in relates to the proc you want to use:

PROC_REF if the proc you want to use is defined on the current proc type or any of it's ancestor types.
Example:
```
/mob/proc/funny()
to_chat(world,"knock knock")
/mob/subtype/proc/very_funny()
to_chat(world,"who's there?")
/mob/subtype/proc/do_something()
// Proc on our own type
RegisterSignal(x, COMSIG_OTHER_FAKE, PROC_REF(very_funny))
// Proc on ancestor type, /mob is parent type of /mob/subtype
RegisterSignal(x, COMSIG_FAKE, PROC_REF(funny))
```

TYPE_PROC_REF if the proc you want to use is defined on a different unrelated type
Example:
```
/obj/thing/proc/funny()
to_chat(world,"knock knock")
/mob/subtype/proc/do_something()
var/obj/thing/x = new()
// we're referring to /obj/thing proc inside /mob/subtype proc
RegisterSignal(x, COMSIG_FAKE, TYPE_PROC_REF(/obj/thing, funny))
```

GLOBAL_PROC_REF if the proc you want to use is a global proc.
Example:
```
/proc/funny()
to_chat(world,"knock knock")
/mob/subtype/proc/do_something()
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(funny)), 100))
```

Note that the same rules go for verbs too! We have VERB_REF() and TYPE_VERB_REF() as you need it in these same cases. GLOBAL_VERB_REF() isn't a thing however, as verbs are not global.

### Signal Handlers

All procs that are registered to listen for signals using `RegisterSignal()` must contain at the start of the proc `SIGNAL_HANDLER` eg;
Expand Down Expand Up @@ -175,11 +251,6 @@ In the above example, we made our health_loss variable a per second value rather

For example, if SSmobs is set to run once every 4 seconds, it would call process once every 4 seconds and multiply your health_loss var by 4 before subtracting it. Ensuring that your code is frame independent.


### Use of `.proc/xyz` format for callback timers

This is a simple one - as we will eventually move to 515, we will need to ditch this kind of callback. So please don't add any new ones. Make our lives easier.

## Optimization
### Startup/Runtime tradeoffs with lists and the "hidden" init proc

Expand Down
5 changes: 4 additions & 1 deletion .github/ss13_genchangelog.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,10 @@
'refactor',
'config',
'admin',
'server'
'server',
'ui',
'mapadd',
'maptweak'
]

def dictToTuples(inp):
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto_changelog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ jobs:
script: |
const { processAutoChangelog } = await import('${{ github.workspace }}/tools/pull_request_hooks/autoChangelog.js')
await processAutoChangelog({ github, context })
github-token: ${{ secrets.GITHUB_TOKEN }}
github-token: ${{ secrets.BOT_TOKEN_CM || secrets.GITHUB_TOKEN }}
Loading

0 comments on commit 65c4877

Please sign in to comment.