Skip to content

Commit

Permalink
Merge branch 'SkyRatMaster' into upstreammaint
Browse files Browse the repository at this point in the history
  • Loading branch information
RogueStationAI committed May 31, 2024
2 parents 76036d1 + 3990805 commit 00d2da3
Show file tree
Hide file tree
Showing 2,518 changed files with 81,047 additions and 53,153 deletions.
12 changes: 6 additions & 6 deletions .github/guides/HARDDELETES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Hard Deletes

> Garbage collection is pretty gothic when you think about it.
> Garbage collection is pretty gothic when you think about it.
>
>An object in code is like a ghost, clinging to its former life, and especially to the people it knew. It can only pass on and truly die when it has dealt with its unfinished business. And only when its been forgotten by everyone who ever knew it. If even one other object remembers it, it has a connection to the living world that lets it keep hanging on
>
Expand Down Expand Up @@ -52,7 +52,7 @@ This of course means they can store that location in memory in another object's
/proc/someshit(mem_location)
var/datum/some_obj = new()
some_obj.reference = mem_location
some_obj.reference = mem_location
```

But what happens when you get rid of the object we're passing around references to? If we just cleared it out from memory, everything that holds a reference to it would suddenly be pointing to nowhere, or worse, something totally different!
Expand Down Expand Up @@ -135,13 +135,13 @@ If that fails, search the object's typepath, and look and see if anything is hol
BYOND currently doesn't have the capability to give us information about where a hard delete is. Fortunately we can search for most all of then ourselves.
The procs to perform this search are hidden behind compile time defines, since they'd be way too risky to expose to admin button pressing

If you're having issues solving a harddel and want to perform this check yourself, go to `_compile_options.dm` and uncomment `TESTING`, `REFERENCE_TRACKING`, and `GC_FAILURE_HARD_LOOKUP`
If you're having issues solving a harddel and want to perform this check yourself, go to `_compile_options.dm` and uncomment `REFERENCE_TRACKING_STANDARD`.

You can read more about what each of these do in that file, but the long and short of it is if something would hard delete our code will search for the reference (This will look like your game crashing, just hold out) and print information about anything it finds to the runtime log, which you can find inside the round folder inside `/data/logs/year/month/day`
You can read more about what each of these do in that file, but the long and short of it is if something would hard delete our code will search for the reference (This will look like your game crashing, just hold out) and print information about anything it finds to [log_dir]/harddels.log, which you can find inside the round folder inside `/data/logs/year/month/day`

It'll tell you what object is holding the ref if it's in an object, or what pattern of list transversal was required to find the ref if it's hiding in a list of some sort
It'll tell you what object is holding the ref if it's in an object, or what pattern of list transversal was required to find the ref if it's hiding in a list of some sort, alongside the references remaining.

## Techniques For Fixing Hard Deletes
## Techniques For Fixing Hard Deletes

Once you've found the issue, it becomes a matter of making sure the ref is cleared as a part of Destroy(). I'm gonna walk you through a few patterns and discuss how you might go about fixing them

Expand Down
234 changes: 118 additions & 116 deletions .github/guides/VISUALS.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/max_required_byond_client.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
# (Requiring clients update to connect to the game server is not something we like to spring on them with no notice,
# especially for beta builds where the pager/updater won't let them update without additional configuration.)

514
515
2 changes: 1 addition & 1 deletion .tgs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
version: 1
# The BYOND version to use (kept in sync with dependencies.sh by the "TGS Test Suite" CI job)
# Must be interpreted as a string, keep quoted
byond: "515.1633"
byond: "515.1637"
# Folders to create in "<instance_path>/Configuration/GameStaticFiles/"
static_files:
# Config directory should be static
Expand Down
2 changes: 2 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
},
"files.eol": "\n",
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true,
"editor.insertSpaces": false,
"git.branchProtection": ["master"],
"gitlens.advanced.blame.customArguments": ["-w"],
"tgstationTestExplorer.project.resultsType": "json",
Expand Down
2 changes: 2 additions & 0 deletions RUN_SERVER.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
@echo off
call "%~dp0\tools\build\build.bat" --wait-on-error server %*
23 changes: 18 additions & 5 deletions SQL/database_changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,34 @@ Any time you make a change to the schema files, remember to increment the databa

Make sure to also update `DB_MAJOR_VERSION` and `DB_MINOR_VERSION`, which can be found in `code/__DEFINES/subsystem.dm`.

The latest database version is 5.29 (5.26 for /tg/); The query to update the schema revision table is:
The latest database version is 5.30 (5.27 for /tg/); The query to update the schema revision table is:

```sql
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 29);
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 30);
```
or

```sql
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 29);
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 30);
```

In any query remember to add a prefix to the table names if you use one.

-----------------------------------------------------
Version 5.29, 08 January 2024, by distributivgesetz
Version 5.30, 26 April 2024, by zephyrtfa
Add the ip intel whitelist table
```sql
DROP TABLE IF EXISTS `ipintel_whitelist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ipintel_whitelist` (
`ckey` varchar(32) NOT NULL,
`admin_ckey` varchar(32) NOT NULL,
PRIMARY KEY (`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
```
-----------------------------------------------------
Version 5.29, 08 January 2024, by Useroth
Add a new table for age-checking purposes. Optional if you don't ever intend to use the age prompt.

```sql
Expand Down
14 changes: 14 additions & 0 deletions SQL/tgstation_schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,20 @@ CREATE TABLE `ipintel` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `ipintel_whitelist`
--

DROP TABLE IF EXISTS `ipintel_whitelist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ipintel_whitelist` (
`ckey` varchar(32) NOT NULL,
`admin_ckey` varchar(32) NOT NULL,
PRIMARY KEY (`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `legacy_population`
--
Expand Down
13 changes: 13 additions & 0 deletions SQL/tgstation_schema_prefixed.sql
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,19 @@ CREATE TABLE `SS13_ipintel` (
KEY `idx_ipintel` (`ip`,`intel`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `ipintel_whitelist`
--

DROP TABLE IF EXISTS `SS13_ipintel_whitelist`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `SS13_ipintel_whitelist` (
`ckey` varchar(32) NOT NULL,
`admin_ckey` varchar(32) NOT NULL,
PRIMARY KEY (`ckey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `SS13_legacy_population`
Expand Down
2 changes: 1 addition & 1 deletion _maps/RandomRuins/AnywhereRuins/golem_ship.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@
/area/ruin/powered/golem_ship)
"un" = (
/obj/structure/table/wood,
/obj/item/areaeditor/blueprints/golem{
/obj/item/blueprints/golem{
pixel_y = 3;
pixel_x = -2
},
Expand Down
2 changes: 1 addition & 1 deletion _maps/RandomRuins/IceRuins/icemoon_underground_hermit.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
/turf/open/floor/grass/fairy,
/area/ruin/powered/hermit)
"wf" = (
/obj/item/gun/ballistic/rifle/boltaction/pipegun/prime,
/obj/item/gun/energy/laser/musket/prime,
/obj/structure/table/wood,
/obj/item/flashlight/lantern,
/turf/open/floor/wood,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3592,7 +3592,7 @@
},
/obj/item/paper/fluff/ruins/interdyne/note_1{
name = "Forcefield Generator Maintenance";
default_raw_text = "To activate a deployable laboratory forcefield, open maintenance hatches of Generator itself, Relay, Well and Charger nodes with a screwdriver and upgrade them with provided parts by using rapid parts exchange device. Then close all hatches and activate every module of generator, by starting with closer to generator nodes in chain-like way. When preparations are done, set generator radius at maximum and press power button. If shield will recieve overwhelm damage, it requires some time to recharge and have to be turned back on manually."
default_raw_text = "To activate a deployable laboratory forcefield, open maintenance hatches of Generator itself, Relay, Well and Charger nodes with a screwdriver and upgrade them with provided parts by using rapid parts exchange device. Then close all hatches and activate every module of generator, by starting with closer to generator nodes in chain-like way. When preparations are done, set generator radius at maximum and press power button. If shield will receive overwhelm damage, it requires some time to recharge and have to be turned back on manually."
},
/obj/effect/turf_decal/trimline/dark/filled/corner{
dir = 8
Expand Down
Loading

0 comments on commit 00d2da3

Please sign in to comment.