Commit Graph

4602 Commits

Author SHA1 Message Date
Zonespace
8fabd54ad6 Mirrors #72354 (#18654)
* [no gbp] removes all duplicate armor datums (#72354)

closes #72348
Title

My bad

Heres the script I used this time if you want to
```cs
var baseDir = Environment.CurrentDirectory;

var allFiles = Directory.EnumerateFiles($@"{baseDir}\code", "*.dm", SearchOption.AllDirectories).ToList();
var known = new Dictionary<string, List<KeyValuePair<string, int>>>();

foreach (var file in allFiles)
{
	var fileLines = File.ReadAllLines(file);
	for (var i = 0; i < fileLines.Length; i++)
	{
		var line = fileLines[i];
		if (line.StartsWith("/datum/armor/"))
		{
			var armorName = line.Replace("/datum/armor/", "").Trim();
			if (!known.ContainsKey(armorName))
				known[armorName] = new List<KeyValuePair<string, int>>();
			var knownList = known[armorName];
			knownList.Add(new KeyValuePair<string, int>(file, i));
		}
	}
}

Console.WriteLine($"There are {known.Sum(d => d.Value.Count)} duplicate armor datums.");

var duplicates = new Dictionary<string, List<int>>();
foreach (var (_, entries) in known)
{
	var actuals = entries.Skip(1).ToList();
	foreach (var actual in actuals)
	{
		if (!duplicates.ContainsKey(actual.Key))
			duplicates[actual.Key] = new List<int>();
		duplicates[actual.Key].Add(actual.Value);
	}
}

Console.WriteLine($"There are {duplicates.Count} files to update.");

foreach (var (file, idxes) in duplicates)
{
	var fileContents = File.ReadAllLines(file).ToList();
	foreach (var idx in idxes.OrderByDescending(i => i))
	{
		string line;
		do
		{
			line = fileContents[idx];
			fileContents.RemoveAt(idx);
		}
		while (!String.IsNullOrWhiteSpace(line));
	}
	File.WriteAllLines(file, fileContents);
}
```

* modular

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-01-13 18:05:12 -05:00
SkyratBot
85b56a310d [MIRROR] Fix JSON description for solo bench and tram [NO GBP] [MDB IGNORE] (#18661) 2023-01-12 13:58:59 -08:00
SkyratBot
9e4a277cfd [MIRROR] Adds the Cursed quirk [MDB IGNORE] (#18492)
* Adds the Cursed quirk

* Update negative_quirks.dm

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-12 15:21:21 -05:00
YakumoChen
ba5403c3ab Makes department guard gear consistent (#18161)
* makes department guard gear consistent

* forgot cuffs

* does it right this time

* Update security.dm

* Update security.dm
2023-01-12 17:16:01 +00:00
SkyratBot
5a18ff0bbb [MIRROR] Completely Culls req_access_txt/req_one_access_txt [MDB IGNORE] (#18458)
* Completely Culls req_access_txt/req_one_access_txt (#72281)

Hey there,

Now that every instance of `req_access` and `req_one_access` is a list
of strings, there is absolutely no reason for
req_access_txt/req_access_one_txt to exist. In fact, any instance where
they were still used in the codebase was very convoluted and was very
broken! Don't worry, I fixed it all out, and life is good.

I also dmdoc the surviving access variables, because those were missing.
I went on the side of caution and made a more verbose documentation with
an example just to have people really grasp this (it took me a while to
actually get it)

I believe that we changed _everything_ over to the
req_access/req_one_access system earlier this year in VV, but the
problem is that _new mappers don't understand the difference between the
two systems_. In fact, the "txt" system is completely redundant since
all it does is transition stuff to the "base" system. So, let's just
completely cull the one that's all but deprecated and ensure this
confusion no longer arises. The whole purpose of "txt" seemed to be to
convert the access, but it's all pointless now that we can just read the
list directly.

I'm also 99% certain that the "access check" on vending machines broke
(and didn't seem to have correct logic in the first place? I
legitimately couldn't find a case where it could fail in testing, so I
changed that up), and that's fixed up now. Let me know if I was clueless
there. I know it's short-circuiting now as opposed to "all must be
true", but it just didn't work.

* Completely Culls req_access_txt/req_one_access_txt

* oh the misery

* makes them use the thing that actually works

* test to see if engineering access is breaking it

* Revert "test to see if engineering access is breaking it"

This reverts commit 3cc2c554ff18f435a51601782e64c76193298db7.

* Fix access checks when req_access is null (#72458)

## About The Pull Request
Fixes #72450 - This seems to be an oversight in some of the access
refactors we've been through recently. When there was an assumption in
`check_access_list()` that `req_access` would always be a list, and that
if it was not something terrible had gone wrong and the door should
default to public access.

With the cleanup of the _txt access vars and the introduction of mapping
access helpers, this assumption is no longer true. `req_access` will be
null when multiple helpers are painted onto the same door, so we need to
handle that properly. Thanks to @MrMelbert for spitting out the attached
fix in mapping general and letting me PR it after testing.

This really needs a suite of unit tests around it. San has helpfully
volunteered to work on that for three hours before getting frustrated.

## Why It's Good For The Game
No more public access to engineering lobby, lathe, etc.


## Changelog
🆑 Vire, MrMelbert
fix: The engineering lobby and lathe are no longer public access
fix: Doors will no longer be treated as public access when they have
multiple accesses set on them
/🆑

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
Co-authored-by: Vire <66576896+Maurukas@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2023-01-12 11:43:52 -05:00
Zonespace
1135ac5e2c Mirror #72280 (#18648)
Add lints for idiomatic balloon alert usage (#72280)

Adds lints for `balloon_alert(span_xxx(...))` (which is always wrong),
and balloon alert where the first letter is a capital (which is usually
wrong). Fixes everything that failed them. As a reminder, abbreviations
like "AI" and "GPS" shouldn't be capitalized in a balloon alert.

In cases where this is intentional for flavor (there was one case), you
can `UNLINT` like so:

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-01-12 08:48:06 -05:00
SkyratBot
bbedb5d2a2 [MIRROR] Headpikes now use proper grammar when referencing their spear type [MDB IGNORE] (#18644)
* Headpikes now use proper grammar when referencing their spear type (#72626)

## About The Pull Request

When creating a name for the headpike structure, the spear name is now
used, rather than just a reference to the spear itself. This led to
funky grammar and ruined immersion etc etc.
## Why It's Good For The Game

Closes #72583.
## Changelog
🆑
spellcheck: Head-spears are now named properly when using alternate
spear types.
/🆑

* Headpikes now use proper grammar when referencing their spear type

Co-authored-by: Rhials <Datguy33456@gmail.com>
2023-01-11 22:30:12 -08:00
lessthanthree
280460bab8 [MANUAL MIRROR] [NO GBP] Side mounted tram controls (#18636)
* Side mounted tram controls (#72193)

Continuation of https://github.com/tgstation/tgstation/pull/72047 this
part was left out until it could be done using directional map helpers.
- Side mounts the tram controls freeing up the middle space for
shenanigans or whatever, and you can hit the controls faster from either
side of the tram.
- Emergency exit feature, doors can be forced open when the tram has
lost power.
- Accessible spots for wheelchairs (Ian's injured, you know!)

![image](https://user-images.githubusercontent.com/83487515/210920404-150f394b-4263-45d4-82ef-12eda0cfedb7.png)

- Looks like a tram direction sign instead of an awkward center placed
computer. Build an ice cream or illicit drugs shop or something in the
middle. Frees up space.
- You don't get stuck on an unpowered tram if you don't have a crowbar.
🆑 LT3
imageadd: Tram controls are now side mounted, freeing up space. Even
better, you now have two of them!
imageadd: Added a new accessible space on the tram for wheelchairs
fix: Removed duplicate tram plate/platforms
code: Tram has its own floor subtype for the walls and windows
add: Emergency exit feature added for people who are silly enough to not
carry a crowbar
/🆑

* floors.dmi
2023-01-11 08:14:12 -08:00
SkyratBot
b44967501c [MIRROR] Optimizes explosions (very slightly) [MDB IGNORE] (#18624)
* Optimizes explosions (very slightly)

* Update explosions.dm

* Update atoms_movable.dm

* Update dungeon.dm

* Update stone.dm

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-10 12:34:26 -08:00
SkyratBot
be18901411 [MIRROR] [ready] unit tests all worn icons [MDB IGNORE] (#18491)
* [ready] unit tests all worn icons (#72370)

Fixes #71692

🆑 ShizCalev
code: Added a unit test for ALL worn icons.
fix: Fixed a bunch of broken worn icons!
/🆑

* [ready] unit tests all worn icons

* Should have fixed most of the failures now

* Here, hopefully that should fix what was left

* Okay maybe it just hadn't been fixed yet

* I can be a bit dumb sometimes

* Okay, now it's going to work, I promise

* I'm so tired of this

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-01-09 21:10:28 -05:00
SkyratBot
8e8002b555 [MIRROR] Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars [MDB IGNORE] (#18348)
* Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars

* merge conflicts

* adjust_eye_blur and set_eye_blur_if_lower

* adjust drowsiness overdoses

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-09 13:14:47 -05:00
SkyratBot
ae3b1e78a4 [MIRROR] Dogs become tamed when given bones [MDB IGNORE] (#18549)
* Dogs become tamed when given bones

* skew

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-09 08:38:01 -05:00
SkyratBot
36bc850a11 [MIRROR] fixes silly stuff about basic mobs [MDB IGNORE] (#18368)
* fixes silly stuff about basic mobs

* merge conflicts, also apply upstream 72120

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-09 06:00:48 -05:00
SkyratBot
7ee524f748 [MIRROR] Basic Mob Carp Part VIII: Basic Mob Carp [MDB IGNORE] (#18344)
* Basic Mob Carp Part VIII: Basic Mob Carp

* maps

* missed killing main carp file

* shorki and ocean biomes

* shorki 2: pet-a-boogaloo

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-09 05:48:50 -05:00
SkyratBot
ae713bf18a [MIRROR] Crafting/Cooking menu update [MDB IGNORE] (#18334)
* Crafting/Cooking menu update

* Yeeted away all of the merge conflicts, time to fix the code

* Okay, now it compiles, and after testing, it seems to work just fine

* Actually, early addition of an upstream fix, so those that don't have hunger can still open the cooking menu

* Fixes the units tests by removing the extra comma in the Stuffed Muli Pod recipe

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-01-08 15:02:18 -05:00
SkyratBot
31b8a6eef1 [MIRROR] Tram collision counter hazard lights [MDB IGNORE] (#18579)
* Tram collision counter hazard lights (#72406)

## About The Pull Request
To the best of Nanotrasen's ability, valuable crew members are still
getting hit by the tram. To further encourage safe practices, a new
indicator with hazard lights has been installed outside medbay. It will
flash when tram collisions are occurring during times of lax safety for
extra visibility.

![counterflash](https://user-images.githubusercontent.com/83487515/210483631-5443b4a2-57cf-4b27-8464-53855b59b2ca.gif)

## Why It's Good For The Game
Go for the high score.
## Changelog
🆑 LT3
imageadd: Hazard lights added to the tram collision counter
/🆑

* Tram collision counter hazard lights

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-01-07 22:34:07 -08:00
SkyratBot
011fefdd81 [MIRROR] Refactors armor into dedicated subtypes [MDB IGNORE] (#18291)
* Refactors armor into dedicated subtypes

* start

* most tg things

* pain (#18584)

* shit

* non-mod changes

* compile

Co-authored-by: John Doe <gamingskeleton3@gmail.com>

* #18291

* compile fix

* ???

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-07 20:06:16 -08:00
SkyratBot
002ab78d9b [MIRROR] useless update_appearance reduction, emissive_blocker micro optimization (saves a second of init) [MDB IGNORE] (#18243)
* useless update_appearance reduction, emissive_blocker micro optimization (saves a second of init)

* merge conflict

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-07 18:45:54 -05:00
SkyratBot
537837bef3 [MIRROR] Fixes being able to instantly create dense grilles [MDB IGNORE] (#18569)
* Fixes being able to instantly create dense grilles (#72449)

🆑
fix: Fixes being able to instantly create dense grilles
/🆑

Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>

* Fixes being able to instantly create dense grilles

Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
2023-01-07 08:28:28 -08:00
SkyratBot
2b9eba0fe0 [MIRROR] Smoothing groups optimization, save 265ms with configs, more on production & w/ space ruins [MDB IGNORE] (#18189)
* Smoothing groups optimization, save 265ms with configs, more on production & w/ space ruins (#71989)

This one is fun.

On every /turf/Initialize and /atom/Initialize, we try to set
`smoothing_groups` and `canSmoothWith` to a cached list of bitfields. At
the type level, these are specified as lists of IDs, which are then
`Join`ed in Initialize, and retrieved from the cache (or built from
there).

The problem is that the cache only misses about 60 times, but the cache
hits more than a hundred thousand times. This means we eat the cost of
`Join` (which is very very slow, because strings + BYOND), as well as
the preliminary `length` checks, for every single atom.

Furthermore, as you might remember, if you have any list variable set on
a type, it'll create a hidden `(init)` proc to create the list. On
turfs, that costs us about 60ms.

This PR does a cool trick where we can completely eliminate the `Join`
*and* the lists at the cost of a little more work when building the
cache.

The trick is that we replace the current type definitions with this:

```patch
- smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_ASH)
- canSmoothWith = list(SMOOTH_GROUP_FLOOR_ASH, SMOOTH_GROUP_CLOSED_TURFS)
+ smoothing_groups = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_FLOOR_ASH
+ canSmoothWith = SMOOTH_GROUP_FLOOR_ASH + SMOOTH_GROUP_CLOSED_TURFS
```

These defines, instead of being numbers, are now segments of a string,
delimited by commas.

For instance, if ASH used to be 13, and CLOSED_TURFS used to be 37, this
used to equal `list(13, 37)`. Now, it equals `"13,37,"`.

Then, when the cache misses, we take that string, and treat it as part
of a JSON list, and decode it from there. Meaning:

```java
// Starting value
"13,37,"

// We have a trailing comma, so add a dummy value
"13,37,0"

// Make it an array
"[13,37,0]"

// Decode
list(13, 37, 0)

// Chop off the dummy value
list(13, 37) // Done!
```

This on its own eliminates 265ms *without space ruins*, with the
combined savings of turf/Initialize, atom/Initialize, and the hidden
(init) procs that no longer exist.

Furthermore, there's some other fun stuff we gain from this approach
emergently.

We previously had a difference between `S_TURF` and `S_OBJ`. The idea is
that if you have any smoothing groups with `S_OBJ`, then you will gain
the `SMOOTH_OBJ` bitflag (though note to self, I need to check that the
cost of adding this is actually worth it). This is achieved by the fact
that `S_OBJ` simply takes the last turf, and adds onto that, meaning
that if the biggest value in the sorting groups is greater than that,
then we know we're going to be smoothing to objects.

This new method provides a limitation here. BYOND has no way of
converting a number to a string at compile time, meaning that we can't
evaluate `MAX_S_TURF + offset` into a string. Instead, in order to
preserve the nice UX, `S_OBJ` now instead opts to make the numbers
negative. This means that what used to be something like:

```dm
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WEEDS)
```

...which may have been represented as

```dm
smoothing_groups = list(15, MAX_S_TURF + 3)
```

...will now become, at compile time:

```dm
smoothing_groups = "15,-3,"
```

Except! Because we guarantee smoothing groups are sorted through unit
testing, this is actually going to look like:

```dm
smoothing_groups = "-3,15,"
```

Meaning that we can now check if we're smoothing with objects just by
checking if `smoothing_groups[1] == "-"`, as that's the only way that is
possible. Neat!

Furthermore, though much simpler, what used to be `if
(length(smoothing_groups))` (and canSmoothWith) on every single
atom/Initialize and turf/Initialize can now be `if (smoothing_groups)`,
since empty strings are falsy. `length` is about 15% slower than doing
nothing, so in procs as hot as this, this gives some nice gains just on
its own.

For developers, very little changes. Instead of using `list`, you now
use `+`. The order might change, as `S_OBJ` now needs to come first, but
unit tests will catch you if you mess up. Also, you will notice that all
`S_OBJ` have been increased by one. This is because we used to have
`S_TURF(0)` and `S_OBJ(0)`, but with this new trick, -0 == 0, and so
they conflicted and needed to be changed.

* Sorting how did I miss it

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2023-01-07 23:51:36 +13:00
SkyratBot
bccf824a6c [MIRROR] Turned most syndicate mobs (+ viscerators) into basicmobs [MDB IGNORE] (#18270)
* Turned most syndicate mobs (+ viscerators) into basicmobs (#71871)

## About The Pull Request
Turns the syndicate simpleanimals into basicmobs: (+ stormtrooper, +
space variants) Base Mob, Knife syndies, pistol syndies, SMG
syndies,shotgun syndies, viscerators
also changes some instances of the simple_animal path into the basicmob
ones
Removes civillian syndicates which were useless and also completely
unused
Also removes mech pilots:
![2022-12-09
20_02_18-Window](https://user-images.githubusercontent.com/70376633/206777829-2e49e445-3532-4e8e-8e7c-8d9b0a3a14d0.png)

Also,
makes the basic targetting datums health check configurable
basic attack behavior can now fire in bursts

https://user-images.githubusercontent.com/70376633/206766607-cf2e3659-0c5e-4117-9af7-e573e35bdf80.mp4

https://user-images.githubusercontent.com/70376633/206766630-15b4469f-68be-44c7-9394-1f2b6fe07811.mp4

https://user-images.githubusercontent.com/70376633/206766613-69b42457-a03b-449d-a1b8-a5aa556c76e5.mp4

https://user-images.githubusercontent.com/70376633/206766619-5560a178-8d2f-4b22-adf1-22ace6f63a51.mp4

https://user-images.githubusercontent.com/70376633/206766627-e671d064-fd9e-4204-b823-aa2e07f7fc26.mp4

https://user-images.githubusercontent.com/70376633/206766633-108c1574-3554-4bc1-a9ac-8faed0ec4062.mp4
## Why It's Good For The Game

simpleanimal stinks basic mob good
syndicate AI was really bad to begin with so here we are

## Changelog
🆑
code: Turned most syndicate mobs into basicmobs, making their AI better
and (possibly) more deadlier!
del: Removed syndicate mech pilots and syndicate civvies
/🆑

Co-authored-by: kawoppi <94711066+kawoppi@ users.noreply.github.com>

* Turned most syndicate mobs (+ viscerators) into basicmobs

* map

* code

* Update syndibase.dmm

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
Co-authored-by: kawoppi <94711066+kawoppi@ users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2023-01-07 02:48:07 -05:00
SkyratBot
650d64f6d4 [MIRROR] afterattack now returns a flag if it's reasonable to suspect the user intends to act on an item [MDB IGNORE] (#18519)
* afterattack now returns a flag if it's reasonable to suspect the user intends to act on an item

* Update _neck.dm

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-07 06:55:38 +00:00
SkyratBot
b80abedb59 [MIRROR] refreshes syndi-kits and syndicate surplus crates, introduces shared limited stock [MDB IGNORE] (#18209)
* refreshes syndi-kits and syndicate surplus crates, introduces shared limited stock

* merge conflict

* Surplus balance, Consolidated our surplus crate and the new tg one to just use our stats

* use upstream surplus loot crates

* syndicrate

Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-07 01:42:14 -05:00
SkyratBot
f1ceee89dd [MIRROR] QM has a garment bag now [MDB IGNORE] (#18258)
* QM has a garment bag now

* Update garment.dm

Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-06 17:32:12 +00:00
SkyratBot
d2cac47fba [MIRROR] Alien closets deconstruct into alien alloy [MDB IGNORE] (#18522)
* Alien closets deconstruct into alien alloy (#72452)

## About The Pull Request
The other day I found a rare alien locker in maint, hooray!
Deconstructed it to get the alloy, and was instead met with iron. Booo.
## Why It's Good For The Game
Alien lockers should deconstruct into the mineral used to craft them.
## Changelog
🆑 Tattle
fix: alien closets now deconstruct into alien alloy
/🆑

Co-authored-by: tattle <article.disaster@ gmail.com>

* Alien closets deconstruct into alien alloy

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
2023-01-06 08:29:48 -08:00
lessthanthree
8244d7b043 [MANUAL MIRROR] Fixes a bunch of sidemap/plane cube issues [NO GBP] (#18427)
Fixes a bunch of sidemap/plane cube issues (#72178)

## About The Pull Request

[fixes solor trackers offsetting wrong, and panels not using plane
offsets](8f461ab8ec)

[fixes cyborg hats offsetting phyiscally over their
head](5fd5b4240e)

[fixes reflector parts z fighting with their neighbors. if we physically
offset them, they'll have nothing to fight
with](088dcfe91f)

[fixes burgers layering wrong. uses a combo of pixel z to do the visual
offsets, and pixel_y to modify
layering](ec39e2bcd3)

[fixes signs, needed to use pixel_w instead of x, I think we may be
living under iso rules? I'm not totally sure I need to investigate
more](560d152fd7)

[fixes paperbin
rendering](e6c57ec00e)

## Why It's Good For The Game

Closes #72094
Closes #72035

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-12-31 06:11:17 -05:00
SkyratBot
2327e445d2 [MIRROR] Gatfruit will no longer drop from ice portals. [MDB IGNORE] (#18202)
* Gatfruit will no longer drop from ice portals. (#72048)

## About The Pull Request

For some god-forsaken reason, somebody decided that ice portals should
be able to drop one of the most disruptive items in the game. This PR
amends this by removing it from the drop pool.

## Why It's Good For The Game

In 2013 gatfruit was introduced in the following PR #2000 . This was
almost a decade ago at this point, repeatedly through the PR the creator
states his belief that this item should only ever be obtainable through
admin intervention due to its ridiculous capabilities. At the time
everyone in the PR agreed it was a reasonable item to add **as it was
unobtainable without admin intervention**. Over the years, it has crept
its way to become more prevalent and openly obtainable, the most
offensive of these options is the ice moon portal. As is, there is a 1
in 28 chance of obtaining the seeds, this sounds pretty inoffensive
right? That's just 3.44% probability. Now, let us search the instances
of the portal that spawns this.

![image](https://user-images.githubusercontent.com/16896032/208220173-bbefe604-0885-44a5-9add-b5f0c62067cc.png)

That is a big number, a lot of chances to get that seed packet and other
gamer looters. Now, let's take a look at the probability of being able
to get these seeds, assuming you wipe out all of the portals.

![image](https://user-images.githubusercontent.com/16896032/208220460-3f59a2ac-d936-4f3a-aa14-9c637af6a9d7.png)

92.8% chance to be able to get these seeds each shift if you focus
entirely on gaming the portals. That's a pretty insane probability of
being able to obtain the gatfruit seeds.

While I dislike people who sprint to the seed vault, there is at least
the possibility of a pod person telling them to fuck off when they
demand their _free_ gamer seed. There is also the fact that the ruin
isn't a guaranteed spawn every shift.

## Changelog

🆑
balance: Gatfruit seeds will no longer drop from ice portals.
/🆑

* Gatfruit will no longer drop from ice portals.

Co-authored-by: carshalash <carshalash@gmail.com>
2022-12-28 23:27:40 -08:00
SkyratBot
1575b2ee5d [MIRROR] Ghosts cant mess with RCD & Plumbing RCD [MDB IGNORE] (#18244)
* Ghosts cant mess with RCD & Plumbing RCD (#72069)

## About The Pull Request
Fixes #72036

## Changelog
🆑
fix: ghosts cant mess with RCD & PLumbing RCD
/🆑

* Ghosts cant mess with RCD & Plumbing RCD

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2022-12-28 23:26:27 -08:00
SkyratBot
5c6c91144c [MIRROR] Changes the missing food icon test to cover ALL /obj's [MDB IGNORE] (#18139)
* Changes the missing food icon test to cover ALL /obj's

* Update implant.dm

* Hopefully fixes all the failing integration tests!

* Fixes more missing icons

* Even more icon fixes

* Hopefully that was all of them

* Okay now SURELY that's all of them

* I'm tired of this shit man

* Hopefully that's all, for real this time!

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2022-12-28 19:30:05 -05:00
SkyratBot
b57e0595ef [MIRROR] Fixes racks not crafting properly and deleting themselves [MDB IGNORE] (#18310)
* Fixes racks not crafting properly and deleting themselves (#72164)

## About The Pull Request

Rack parts now use get_turf instead of loc when being constructed from
your hands. Loc would be the user rather than a valid location, and the
rack parts would be consumed, meaning you lose your rack parts and get
no rack. Loc is used in a few other places in the racks/tables file, but
they all appear to be working fine other than this one instance.
## Why It's Good For The Game

We've gotta keep our stuff organized somehow, right?

Closes #72155
## Changelog
🆑 Rhials
fix: Racks now properly construct again
/🆑

* Fixes racks not crafting properly and deleting themselves

Co-authored-by: Rhials <Datguy33456@gmail.com>
2022-12-26 07:46:32 -08:00
SkyratBot
b7f41c74b6 [MIRROR] Locker shoving logging / grammar fixes [MDB IGNORE] (#18217)
* Locker shoving logging / grammar fixes (#72061)

Fixes #72060

🆑 ShizCalev
spellcheck: Corrected some grammar issues with messages displayed when
shoving people into lockers.
admin: Fixed shoving people into a locker not being combat logged
properly.
/🆑

* Locker shoving logging / grammar fixes

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-12-24 21:59:29 -08:00
SkyratBot
b31fed9c82 [MIRROR] Fixes runtime when plastiflaps move z/get deleted [MDB IGNORE] (#18215)
* Fixes runtime when plastiflaps move z/get deleted (#72059)

What it says on the tin.

* Fixes runtime when plastiflaps move z/get deleted

Co-authored-by: AnturK <AnturK@users.noreply.github.com>
2022-12-24 21:59:13 -08:00
SkyratBot
063c50d5e7 [MIRROR] Shuffles bedsheet attack actions a wee bit [MDB IGNORE] (#18246)
* Shuffles bedsheet attack actions a wee bit (#71865)

## About The Pull Request
my friends been doing makeshift surgery and gets mad about having to do
harm intent to start surgery and then having to turn it off to do every
single other surgery step and i agree, thats silly

~~instead, now, the bedsheet attack does not check for harm and ALWAYS
COVERS with left mouse button and ALWAYS PREPARES SURGERY with right
mouse button~~

to be more consistent all surgery initiators now work on left mouse
click and covering with your bedsheet is the right mouse button

![image](https://user-images.githubusercontent.com/116288367/206871963-3a9bd092-49ea-4867-a47c-3b5a74c960e3.png)

## Why It's Good For The Game

while obviously a lot of the time makeshift surgery IS about harming
someone else its inconsistent with how all other surgery tools function
and also isn't very clear at all. the screentip in addition to having
them be separate buttons means that bedsheets two functions are overall
much clearer and its surgery drape function will no longer lead to an
assistant accidentally knifing someone when theyre trying to save
someones life

## Changelog

🆑
qol: added makeshift surgery screentip
qol: you no longer have to go in and out of harm intent to do surgery
with a bedsheet
/🆑

* Shuffles bedsheet attack actions a wee bit

Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
2022-12-24 21:56:54 -08:00
SkyratBot
f4aa02ce03 [MIRROR] Takes the Tram off of the game plane, to make everything on it look a lot less flat [MDB IGNORE] (#18122)
* Takes the Tram off of the game plane, to make everything on it look a lot less flat (#71858)

## About The Pull Request
That's about it. It being on the game plane sadly had the inherent issue
of "no more ambient occlusion for anything that goes in it", which made
it look jarring.

Sadly, because of this, I had to put regular iron floor tiles over the
pipes/wires/disposals pipes on those crossings, but that's just further
motivation for LT3 and I to work on some new glass plating and actual
glass tiles so we can make this work properly again.

## Why It's Good For The Game
Muh ambient occlusion.

Seriously, it just looks *SO* much better.

## Changelog

🆑 GoldenAlpharex
fix: Everything that goes on the tram should look a lot less flat now!
/🆑

* Takes the Tram off of the game plane, to make everything on it look a lot less flat

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-12-23 12:08:55 -05:00
SkyratBot
2f081bf216 [MIRROR] Fixes Unwrenched Signs Having An Error Sign [MDB IGNORE] (#18201)
* Fixes Unwrenched Signs Having An Error Sign (#72027)

## About The Pull Request

I think this code was first made with the assumption that every sign
would be in the same DMI? Anyways, let's just ensure that it now works
in modern code by also passing in a valid icon file as well to the
non-descript "item sign".
## Why It's Good For The Game

Fixes #71920.
## Changelog
🆑
fix: When you unwrench a flag, you should now no longer see the big
flashy red ERROR sign.
/🆑

* Fixes Unwrenched Signs Having An Error Sign

Co-authored-by: san7890 <the@san7890.com>
2022-12-20 14:18:06 +13:00
SkyratBot
1712c3436b [MIRROR] TGUI for RCD , Radial menu for RLD & Silo Link for RLD & Plumbing RCD [MDB IGNORE] (#18104)
TGUI for RCD , Radial menu for RLD & Silo Link for RLD & Plumbing RCD (#71710)

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2022-12-19 23:07:46 +13:00
SkyratBot
0790b8fcb2 [MIRROR] shipping containers go above mobs [MDB IGNORE] (#18177)
* shipping containers go above mobs (#72005)

## About The Pull Request

![image](https://user-images.githubusercontent.com/23585223/207670501-ce9dbfba-0730-4c5c-81e9-e62490414257.png)
shipping containers no longer do this

## Why It's Good For The Game
refer to #71259

## Changelog
🆑
fix: shipping containers go above mobs
/🆑

* shipping containers go above mobs

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-12-17 03:29:45 +00:00
SkyratBot
43897d9555 [MIRROR] Adds logging for stuffing people in crates/lockers/bodybags [MDB IGNORE] (#18181)
* Adds logging for stuffing people in crates/lockers/bodybags (#72015)

## About The Pull Request

Stuffing people inside of thigs was unlogged, now it is.
## Why It's Good For The Game

Useful for admins so they actually know who hid a corpse in a locker for
example.
## Changelog
🆑
admin: Stuffing people inside lockers is now logged.
/🆑

* Adds logging for stuffing people in crates/lockers/bodybags

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
2022-12-17 03:27:04 +00:00
SkyratBot
15faaa54f5 [MIRROR] Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons. [MDB IGNORE] (#17907)
* Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons.

* conflicts

* Modular!

* update modular

* icon icon icon icon icon

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2022-12-16 16:01:41 +00:00
SkyratBot
fb6c9f7fe3 [MIRROR] Removes ++ and -- in conditionals [MDB IGNORE] (#18108)
* Removes ++ and -- in conditionals (#71925)

* Removes ++ and -- in conditionals

* sad

Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-12-12 18:02:57 -05:00
SkyratBot
565af6876b [MIRROR] Makes dog a basic mob [MDB IGNORE] [MDB IGNORE] (#17930)
* Makes dog a basic mob [MDB IGNORE]

* conflict

* map updatepaths

* minor banana spider improvement

* unnecessary SR edit, minor path stuff

* chadian, borgi

* tram conflict

* fixes after testing

Co-authored-by: Tastyfish <crazychris32@gmail.com>
2022-12-12 16:45:23 -05:00
SkyratBot
b08e6d24b2 [MIRROR] 3/4ths-ify some wall mount sprites (by Kryson and Viro) [MDB IGNORE] (#18039)
* 3/4ths-ify some wall mount sprites (by Kryson and Viro) (#71788)

posters are now 24px tall, new sprites for nanomeds, emergency safes, and ticket machines
(by Kryson)

* 3/4ths-ify some wall mount sprites (by Kryson and Viro)

* DON'T INCLUDE FUCKING OVERRIDES IF THEY DON'T DO ANYTHING HHHNGH MY CI IS FAILING CODERS

* FUCK

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
2022-12-12 13:56:40 -05:00
SkyratBot
7c1595bb18 [MIRROR] More sign subtypes [MDB IGNORE] (#18042)
* More sign subtypes (#71794)

## About The Pull Request
Adds new sign subtypes for use with in-game sign customization and the
object tree while mapping. This expansion does not add new icons, it
only adds subtypes for existing icons that are neglected.

An alternative telecomms sign subtype was given a `sign_change_name`
variable so that it could be customized in-game.

Erased the "alt" from a "yes smoking" sign variable since there is only
one type.

Variable sanitization in places where it would already inherit from the
parent object.

The following sign subtypes have been added:
- Chemistry (alt)
- Xenobio (alt)
- Botany (alt1 and alt2)
- Warning: Blast Doors

## Why It's Good For The Game
The icons are already present, but now the signs are available to
mappers without having to manually edit the `icon_state`.
Players have more options when editing signs in-game.

## Changelog

🆑
add: More options are now available when creating and editing signs.
/🆑

* More sign subtypes

Co-authored-by: SpaceSmithers <105393050+SpaceSmithers@users.noreply.github.com>
2022-12-11 19:02:05 +00:00
SkyratBot
ab7ef33dcf [MIRROR] New Interdyne Shipping Container - with fixes to old sprites [MDB IGNORE] (#18087)
* New Interdyne Shipping Container - with fixes to old sprites (#71844)

Adds 1 (2) new sprite to the Containers list to include also a default
icon so it's no longer a checkerbox for the default. Mostly doing this
for a mapping project and needed Interdyne added in, but hey why not
bring it here and fix some of the blemishes as well.

I also alphabetized them in the dmi and code block because OCD.

* New Interdyne Shipping Container - with fixes to old sprites

Co-authored-by: Zergspower <Griffinj88@yahoo.com>
2022-12-11 18:57:54 +00:00
SkyratBot
8f9b3b686e [MIRROR] Fixes teleporting rack with telekinesis [MDB IGNORE] (#18086)
* Fixes teleporting rack with telekinesis (#71851)

Building racks with telekinesis will now build them where the racks are, rather than teleporting to where the user is.

* Fixes teleporting rack with telekinesis

Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
2022-12-11 18:57:04 +00:00
SkyratBot
23081c8ca9 [MIRROR] Petrified human statues now drop a (stone) brain on destruction [MDB IGNORE] (#18026)
* Petrified human statues now drop a (stone) brain on destruction (#71816)

## About The Pull Request
Destroying a petrified human statue will now drop their brain, albeit a
little more statue-like.

![image](https://user-images.githubusercontent.com/41448081/206316168-e902d6e4-1cb8-4498-80c8-891c59ae638b.png)

Changed from original PR after talking w/ Fikou about it

## Why It's Good For The Game
While the combo *does* step on the toes of Smite, the statue+rod combo
is capable of fully removing you from the round without a way back very
quickly. This keeps the strength of the combo while not making it
entirely impossible to get back into the round.

## Changelog
🆑
balance: Destroying a petrified human statue will now drop their brain.
/🆑

* Petrified human statues now drop a (stone) brain on destruction

Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2022-12-09 18:07:48 +00:00
SkyratBot
3e8d1e750e [MIRROR] Grey Tide event light behavior changes and code tidiness [MDB IGNORE] (#18009)
* Grey Tide event light behavior changes and code tidiness (#71230)

## About The Pull Request

Makes a number of changes to the Grey Tide event, some of which are and
some of which aren't player facing.

Player facing bits:

- The lights will once again turn off when the event ends and the doors
begin opening. Originally, the lights would all shatter when the event
hit, providing a cover of darkness for opportunists to sneak around
under. Unfortunately this would prevent the AI from fixing the doors
until the lights were replaced, leading to headaches and the removal of
this functionality in #43159. Now, the lights are simply turned off at
the APC instead of shattered.
- The lights now flicker at certain intervals as the event is running,
rather than just right at the start.
- Announcement has been slightly modified to indicate that the event
hits more than just airlocks.
- Event runs way faster. Doors open all at once, rather than
one-at-a-time.

And now for the non player-facing bits:

- The filename is now grey_tide.dm instead of prison_break.dm. The event
was effectively re-branded to the Grey Tide event six years ago, but the
filename was unchaged.
- potential_areas is now a part of setup instead of a var on the
round_event.
- Cleans up instances of single-character varnames and stuff not in
snake case.
- The event now checks if it has any valid areas (will it work or not)
at the start, rather than at the end.
- The event now sends a global signal when run, rather than checking
everything in the entire world. It should run faster now.
- Everything that can be affected by the grey tide event now stores its
functionality on a signal handler, including the light flickers

## Why It's Good For The Game

Makes the grey tide event a bit more interesting and easier to take
advantage of. Cleans up the backend code a bit.

## Changelog
🆑 Rhials
balance: The lights will now flicker more frequently before a Grey Tide
event
balance: The lights will now be shut off via the APC when the Grey Tide
event opens up a department.
code: Makes some miscellaneous code improvements to the Grey Tide event
code: Grey tide event runs much faster
code: Renames prison_break.dm to grey_tide.dm
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* Grey Tide event light behavior changes and code tidiness

Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2022-12-09 03:44:51 +00:00
SkyratBot
cf67304574 [MIRROR] Refactors Pirates into Pirate Gangs, Adds the Psyker-gang as new pirates [MDB IGNORE] (#17920)
* Refactors Pirates into Pirate Gangs, Adds the Psyker-gang as new pirates

* [PR to PR] NRI raider de-conflicting (#17921)

* sosig

Update revolver.dm

* Update nri_raiders.dm

* Apply suggestions from code review

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>

* Update nri_raiders.dm

* uhuh

* Update nri_raiders.dm

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Stalkeros2 <42087567+Stalkeros2@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-12-08 09:43:43 -08:00
SkyratBot
c07a1ab0ce [MIRROR] Adds nest sustenance status effect, halves xenomorph nest escape time [MDB IGNORE] (#17973)
* Adds nest sustenance status effect, halves xenomorph nest escape time (#71691)

## About The Pull Request

Hosts who are buckled to a xenomorph nests will gestate their xenomorph
egg 20% faster (4 minutes in a nest, 5 without) as long as they are
trapped. To keep them alive in the nest, they will recieve temperature
stabilization and be healed until they are pulled (or break) free.

To ensure the gift of life is not wasted by captured humans, they can
now break free from resin nests after one minute of struggling, down
from two.
## Why It's Good For The Game

There's currently no incentive to not kill facehugger infectees
immediately after they're impregnated. Dead bodies can't run away,
gestate at the same speed, and hives are often breached from space
making them deadly to live captures regardless. This serves the dual
purpose of incentivizing live captures, while also making them a
feasible option, without removing the ability to infect dead bodies and
seriously impacting the xenomorph playstyle.

Cutting the escape timer in half (while also ensuring that captured
humans are alive enough to break out) means there will be many more
opportunities for live captures to escape. Additionally, the xeno
players will have to spare manpower to actively defend hosts and if they
wish to ensure they do not escape. Hopefully it should give more reason
to play defensively and set up a proper hive, instead of the
hypermobile-hyperviolent playstyle you sometimes encounter.
## Changelog
🆑 Rhials
balance: Xenomorph nests will now sustain humans that are buckled to
them, and gestate xenomorph eggs slightly faster.
balance: Xenomorph nests evolved healing capabilities in exchange for
some of their grip. They now take only one minute to escape from.
/🆑

* Adds nest sustenance status effect, halves xenomorph nest escape time

Co-authored-by: Rhials <Datguy33456@gmail.com>
2022-12-08 07:49:41 -08:00
SkyratBot
f12c3ff6c3 [MIRROR] Fixes being able to get to centcomm and move through floors when in mechs/boxes [MDB IGNORE] (#17738)
* Fixes being able to get to centcomm and move through floors when in mechs/boxes (#71486)

## About The Pull Request
Fixes #71484 - Adds a check to the down verb to make sure a z level
exists below before trying to move.
Changes some step() in relay_move procs to use zMove instead if they
have a direction of up/down, as this was causing you to be able to phase
through floors if you were in a cardboard box/mech/etc
## Why It's Good For The Game

![dreamseeker_LuXqZUhvNg](https://user-images.githubusercontent.com/22856555/203672877-6b7da56c-494a-49dc-a8c8-13b15c2133eb.gif)
## Changelog
🆑
fix: Fixed being able to move through floors and get to centcomm when
moving up/down while inside mechs and similar movable objects.
/🆑

* Fixes being able to get to centcomm and move through floors when in mechs/boxes

* update modular

Co-authored-by: GoblinBackwards <22856555+GoblinBackwards@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-12-07 15:44:43 +00:00