Commit Graph

8116 Commits

Author SHA1 Message Date
SkyratBot
e6f66d3a4a [MIRROR] Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes [MDB IGNORE] (#20719)
* Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes (#74791)

## About The Pull Request

Replaces weakref usage in AI blackboards with deleting signals

All blackboard var setting must go through setters rather than directly

## Why It's Good For The Game

This both makes it a ton easier to develop AI for, and also makes it
harder for hard deletes to sneak in, as has been seen with recent 515
prs showing hard deletes in AI blackboards

(To quantify "making it easier to develop AI", I found multiple bugs in
existing AI code due to the usage of weakrefs.)

I'm looking for `@ Jacquerel` `@ tralezab` 's opinions on the matter, also
maybe `@ LemonInTheDark` if they're interested

## Changelog

🆑 Melbert
refactor: Mob ai refactored once again
/🆑

* Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-04-26 21:17:15 +01:00
Tom
6435018ba7 Add logging for manually changing your targeted zone (#72814) (#20787)
* Add logging for manually changing your targeted zone (#72814)

See title.
Surgery hud is exempt from this.

Requested by @Mothblocks

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>

* Delete 

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
2023-04-26 10:44:01 -07:00
SkyratBot
2293301235 [MIRROR] Burning and acid components fixes and improvements [MDB IGNORE] (#20731)
* Burning and acid components fixes and improvements

* conflicts

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-04-25 20:02:05 -07:00
SkyratBot
fc1c3d4bea [MIRROR] Mafia notes are no longer automatically written for you & new UI [MDB IGNORE] (#20765)
* Mafia notes are no longer automatically written for you & new UI (#74819)

## About The Pull Request

Notes in Mafia are no longer written for you, you instead write it
yourself and save.
Also adds a button to automatically say out your notes for other
players.

Hides the judgment buttons when it's not time to judge
Makes the UI autoupdate and makes use of ui_data / ui_static_data

Video of it in action: https://www.youtube.com/watch?v=NDUSuIUqQv8

## Why It's Good For The Game

A downside to notes currently is that it's very easy to confirm yourself
as a role against players who don't code-dive to know exactly how notes
should be formatted for any role, this makes it easier, as everyone will
type out their own notes, and can send it directly to chat when needed.

## Changelog

🆑
balance: [Mafia] Notes are no longer written out for you.
qol: [Mafia] You can now send your notes to chat whenever.
qol: [Mafia] Roundend has changed. Solos will win over others in a 1v1,
but a HoP can keep a round going in case they can solo lynch.
/🆑

* Mafia notes are no longer automatically written for you & new UI

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-04-25 18:43:11 +01:00
SkyratBot
81d99e727f [MIRROR] Adds a phonebooth ruin to icebox, space, and lavaland [MDB IGNORE] (#20754)
Adds a phonebooth ruin to icebox, space, and lavaland

Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
2023-04-25 17:41:50 +01:00
SkyratBot
60b7a685ea [MIRROR] Fixes spawners being forcemoved during crafting [MDB IGNORE] (#20758)
* Fixes spawners being forcemoved during crafting (#74946)

## About The Pull Request

Lizard skin boots create a spawner as their crafting result. The spawner
works fine and creates the boots, but then then the crafting system
moves the spawner into the world after it has been marked for deletion.
So you end up with both the boots and the spawner, with the spawner
covering up the boots and being non-interactive.

![dreamseeker_0l714SdfxT](https://user-images.githubusercontent.com/13398309/233877092-98831311-3b3d-4df8-ae74-788470ed4f55.png)

This PR just adds a check for spawners to ensure that doesn't happen.

Closes https://github.com/Skyrat-SS13/Skyrat-tg/issues/20728

## Why It's Good For The Game

Fixes some jank. It's a pain to craft these, so having this be the
payoff is disappointing.

## Changelog
🆑
fix: crafting lizard skin cowboy boots no longer places a spawner object
over the created boot item
/🆑

* Fixes spawners being forcemoved during crafting

---------

Co-authored-by: Bloop <vinylspiders@gmail.com>
2023-04-25 17:41:03 +01:00
SkyratBot
5322e96e69 [MIRROR] Minor Major Space Dust update, Dust Stormfront station trait [MDB IGNORE] (#20736)
* Minor Major Space Dust update, Dust Stormfront station trait (#74901)

## About The Pull Request

This makes three changes regarding the Major Space Dust event.

The first reverts it back to a meteor_wave subtype (rather than a
space_dust subtype), a choice I made in #69866 that feels really stupid
in retrospect.

The second set of changes pertain to the event's numbers. It increases
the weight (8 -> 14) and reduces the earliest_start time (25 MINUTES ->
15 MINUTES). The announce_chance has been reduced (100 -> 85), and there
are a few more announcement messages in the pool.

Lastly, this adds a quick random_event_weight_modifier station trait
that makes the Major Space Dust more common. Let's hope it doesn't
scratch the hull!

This also removes an outdated comment from the revolutionary fervor
station trait, because I was near it.
## Why It's Good For The Game

It's way more sane to handle this event as a meteor_wave. It walks and
talks like a meteor wave, why shouldn't it be one?

Major Space Dust works as a nice fluff event. It's low-impact and might
give engineering something to fix every now and then. It's not
particularly special either, so I don't think it would hurt to make the
event bit more frequent.

New station trait for people (presumably engineering players) to work
around.
## Changelog
🆑 Rhials
add: New event weight station trait -- Dust Stormfront.
balance: Space Weather Forecast -- Expect more frequent Major Space Dust
storms in the foreseeable future.
code: The Major Space Dust event is once again returned to being a
meteor_wave event instead of a Space Dust subtype.
/🆑

* Minor Major Space Dust update, Dust Stormfront station trait

---------

Co-authored-by: Rhials <Datguy33456@gmail.com>
2023-04-24 23:39:23 +01:00
SkyratBot
33961776ce [MIRROR] Wintercoats can now be zipped and unzipped through alt-click and separates the hood sprites from the jacket sprites [MDB IGNORE] (#20718)
* Wintercoats can now be zipped and unzipped through alt-click and separates the hood sprites from the jacket sprites (#74886)

## About The Pull Request
The title says it all, really.

~~Initially, I was only going to do it for all wintercoats, but then I
figured I might as well bring it down to all of `/hooded`, just so other
suits could benefit from it, since that behavior came from there anyway.
Does that mean that it does nothing for some of them? Yes, it does. Does
that justify having another variable to tell whether or not that should
be possible? In my humble opinion, not really, but I'm not against it if
it's requested.~~

~~That functionality was intentionally removed from the Void Cloak, as
there would be balance implications (since bringing up the hood makes
the whole cloak invisible, which you could skirt by just "zipping" it,
which also makes it invisible.~~

~~The sprites were already there, so this change was very simple to do.
Simply unties the zipped up look from the fact that the hood is up.
However, toggling the hood forces the zipping/unzipping, just so there's
no balance implications involved. It's just simpler that way.~~

So, I ended up going back and changing the sprites so that the hoods
would no longer be baked into the jacket's sprites, so that they could
be done as overlays instead, which ended up solving my problem with
hoods not being there on zipped-up versions.

For now, it's been made on winter coats only, but it shouldn't be that
difficult to bring it back down to the `/hooded` level. I just didn't
want to bother touching up the sprites down there, as it already took me
like 2-3 hours touching up the sprites of the winter coats alone.

I also took the decision to make it so EVA winter coats used the regular
winter coat's sprites, because they had special ones that just looked
like worse versions of the original, without anything special going on
for them. It was just a straight downgrade compared to the base sprite,
in my opinion.

There's still issues with the custom winter coat, in that the hood isn't
made into an overlay for it yet (and that'll require an extra bit of
logic to make it work, too), but it was already an issue before, the
hood is always present on the current version of the custom winter coat.

There's still a handful (sadly, most) of the winter coats that don't
properly reflect on their obj sprites when they're opened versus when
they're closed, but that's due to an initial spriter oversight, and not
to my doing. The open versions were just left as closed on many of them,
and I simply don't have the patience nor the appropriate skills to edit
that many coats that way.

## Why It's Good For The Game
Now you can be stylish with or without the hoodie!

![image](https://user-images.githubusercontent.com/58045821/233544697-cc821c3a-d965-4d96-af44-c44ff866496f.png)

![image](https://user-images.githubusercontent.com/58045821/233544711-da956b6b-44c4-4903-a34f-4d2890abc781.png)

![image](https://user-images.githubusercontent.com/58045821/233544717-b5221b04-0e6d-4931-83d0-d56fdac60ec3.png)

According to ChatGPT, with one small tweak (thanks Opera GX for the
suggestion):

> Zipped and unzipped through alt-click, winter coats can now be. Hmm,
stylishly warm, you shall be. Feel like a Spaceman, you will. Use the
Force, to zip and unzip, you must. Look cool, you will. Yes, hmmm.

## Changelog

🆑 GoldenAlpharex, ChatGPT for the first changelog entry (slightly
edited)
qol: Zipped and unzipped through alt-click, winter coats can now be.
Hmm, stylishly warm, you shall be. Feel like a Spaceman, you will. Use
the Force, to zip and unzip, you must. Look cool, you will. Yes, hmmm.
image: Winter coats no longer have their hood baked into their jacket's
sprite, both in item form and when worn.
fix: Updated the Icebox EVA winter coats (the Endotherm winter coats) to
use the same sprites as the regular winter coats.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Wintercoats can now be zipped and unzipped through alt-click and separates the hood sprites from the jacket sprites

* update modular wintercoat.dmi

* forgot

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-04-24 17:20:33 +02:00
SkyratBot
fd79c7c9d5 [MIRROR] Makes ruin budget proportional to amount of space ruin z-levels [MDB IGNORE] (#20725)
* Makes ruin budget proportional to amount of space ruin z-levels (#74841)

## About The Pull Request
Adds global define for DEFAULT_SPACE_RUIN_LEVELS and
DEFAULT_SPACE_EMPTY_LEVELS

### Proportional budget
Adds proportional budget to setup_ruins
The budget is multiplied by the current amount of ruin levels over the
default amount
Smaller amounts will have less ruins, while bigger maps will have more
ruins
Should maintain the same amount of ruins per z-level

### Z-levels spawning fix
Z-levels didn't seem to spawn their intended amount of ruins
This was because the for loop added the count variable before doing the
spawning. So for example if there was only 1 level, it would count to 1
and end the loop without spawning the level.
Also removed a loop that seemed to just make the process more complex
for no reason. It even had a note to remove it. However, if it has a use
then you should tell me.

## Why It's Good For The Game

Maps with a smaller amount of ruin levels won't be completely filled
The amount of ruins will be consistent per z-level
The creator of North Star won't allow space exploration unless there's a
way to proportionally reduce the space budget see #74719
## Changelog
🆑
fix: Maps now spawn the correct amount of space levels. The bug caused
them to spawn 1 less in each category
code: The space ruins budget is now proportional to the amount of ruin
levels. This has no effect on the current default maps, but added maps
with less than the default amount of ruin levels will see less ruins.
/🆑

* Makes ruin budget proportional to amount of space ruin z-levels

---------

Co-authored-by: BlueMemesauce <47338680+BlueMemesauce@users.noreply.github.com>
2023-04-23 21:48:37 -04:00
SkyratBot
28e53c240e [MIRROR] Tcomms Soundloop Comes From One Source And Is Less Awful [MDB IGNORE] (#20713)
* Tcomms Soundloop Comes From One Source And Is Less Awful (#74908)

## About The Pull Request

The ``soundloop/server`` now only comes from the server hub, so it
doesn't have stacking audio sources. The sound has been made more
uniform when up close, but is overall quieter. Additionally, all the
files have been run through a low pass filter to remove the highest of
it's pitches.
## Why It's Good For The Game

I'm sick of not wanting to be around telecomms because of how bad every
single machine sounds. Now, things are significantly easier on the ear,
quieter, more uniform, and better for everyone's sanity. I asked the
maintainers in the coding channel if I could just remove it and they
said no.

I can't get a video recording, I've tried with win+G, OBS, and sharex
and it's just fucked.
## Changelog
🆑
qol: telecomms is quieter and less ear-damaging.
sound: modified tcomms sound to remove high-tones.
fix: the telecomms sound only comes from the server hub machine.
/🆑

---------

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

* Tcomms Soundloop Comes From One Source And Is Less Awful

---------

Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-04-23 16:56:27 -04:00
SkyratBot
8164175aa2 [MIRROR] Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles [MDB IGNORE] (#20711)
* Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles (#74784)

## About The Pull Request

deers only show up in the BEPIS but i decided that they would be easy
enough to turn into a basic mob (they were). it was so easy in fact that
i decided to dip my toes into coding AI behavior, and made them freeze
up whenever they see a vehicle. this required a lot of code in a bunch
of places that i was quite unfamiliar with before starting this project,
so do let me know if i glonked up anywhere and i can work on smoothing
it out.
## Why It's Good For The Game

one less simple animal on the list. deers staring at headlights is
pretty cool i think, neato interaction for when you do get them beyond
the joke the bepis makes

i'm also amenable to dropping the whole "deer in headlights" code if you
don't like that for w/e reason- just wanted to make them basic at the
very least
## Changelog
🆑
add: If you ever happen upon a wild deer, try not to ride your fancy
vehicles too close to it as it'll freeze up like a... you know where I'm
going with this.
/🆑

---------

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

* Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-04-23 14:01:36 -04:00
SkyratBot
5b19e5d0e3 [MIRROR] Actually anti glow [MDB IGNORE] (#20709)
* Actually anti glow (#74733)

## About The Pull Request
Now that I've realized I can fix things that's bugging me, a personal
pet peeve, anti-glow weren't actually doing as advertised, instead just
making it a light grey.

This is anti-glow in it's current state

![image](https://user-images.githubusercontent.com/126404225/232171576-48584926-a47f-49c7-b0f3-449687bb1d47.png)

And this is anti-glow as it probably should be.

![image](https://user-images.githubusercontent.com/126404225/232171605-70fa6da1-841e-438f-a302-911517b95a52.png)
## Why It's Good For The Game
Anti-glow does as advertised.
## Changelog
🆑
fix: Anti-glow actually bringing some darkness instead of just a light
glow.
/🆑

* Actually anti glow

---------

Co-authored-by: Dawnseer <126404225+Dawnseer@users.noreply.github.com>
2023-04-23 09:27:30 -07:00
SkyratBot
7cd65785c5 [MIRROR] Farm Sounds DLC (basic mobs can make sounds when speaking) [MDB IGNORE] (#20704)
* Farm Sounds DLC (basic mobs can make sounds when speaking) (#74906)

## About The Pull Request

https://user-images.githubusercontent.com/66640614/233747544-aac153b9-a100-486c-9a7a-4a436b8303b8.mov

Cows, pigs, and sheep make noise when their AI makes them speak.
~~Also House Flipper Farm DLC came out but that's incidental.~~

## Why It's Good For The Game
It's funny, also more sound effects are fun. Gives basic mob creators
more customizability.

## Changelog
🆑 Tattle
qol: basicmobs can now make sounds when their speech is triggered
qol: pigs will now make sounds and emote on their own
sound: cows, pigs, and sheep have new sound effects!
/🆑

---------

Co-authored-by: tattle <article.disaster@ gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Farm Sounds DLC (basic mobs can make sounds when speaking)

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-04-23 00:08:24 +01:00
SkyratBot
9ad30cd3aa [MIRROR] Only checks for greyscale json config folder [MDB IGNORE] (#20639)
* Only checks for greyscale json config folder

* Update _greyscale_config.dm

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-04-21 16:41:50 -07:00
SkyratBot
410979bb6a [MIRROR] Microing var/static times (~0.015 seconds of init) [MDB IGNORE] (#20688)
* Microing var/static times (~0.015 seconds of init) (#74769)

## About The Pull Request

Moth and I came up with an affront to god and man, and used it to track
the time spent creating /static (and in theory /global) variables (this
happens right at the start of init)
They cost as a sum about 0.05 seconds btw, at least currently.

```
/datum/timer
    var/key

/datum/timer/New(file, line)
    src.key = "[file]:[line]"

/datum/timer/proc/operator*(x)
    rustg_time_reset(key)
    return x

/datum/timer/proc/operator+(x)
    var/time = rustg_time_microseconds(key)
    world.log << "TIMER: [key]: [time]"
    return x

Regex:
var/static/([\w/]+) =
-> var/static/$1 = (new /datum/timer(__FILE__, __LINE__)) * (new /datum/timer(__FILE__, __LINE__)) +
```

Output on moth's pc looks like this, time in microseconds

[output_sorted.csv](https://github.com/tgstation/tgstation/files/11241900/output_sorted.csv)

Most of this is either icon_states() memes (which appears to be cached
btw, that's interesting), or a variation on typecacheof()
There is one get_asset_datum call, but that is ALREADY cached and so is
just redundant. That's a good 0.01 seconds saved.

The rest of the time here is slightly more interesting.

The majority of typecacheof() is iterating the output of typesof(), a
byond internal proc that returns a list of types that either are or are
the child of the passed in type.
A decent chunk of time here (0.005 seconds, or 10% of the proc) can be
saved by unrolling the arguments to the proc.
It takes an arbitrary amount of typepaths as input, but we can't like
use arglist() here (cause this is an internal "proc"), so instead we try
a window of args, passing in null if we start to try and take in too
much.
Window size matters, zebra fits better into 4 then 5, especially because
of how grouping needs to work to make this effect happen.
We save about 0.001 for zebra btw, which is around about 7%. It's lower
cause we need to group the paths beforehand I think.

The speedup is minor, but it DOES exist. Plus it's fun.

## Why It's Good For The Game

Microing is a hell of a drug

* Microing var/static times (~0.015 seconds of init)

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-04-21 17:25:57 -04:00
SkyratBot
59b73c3d65 [MIRROR] Cleans up thermite component code [MDB IGNORE] (#20686)
* Cleans up thermite component code (#74825)

## About The Pull Request

Nothing too interesting to be quite honest, just cleans up the thermite
component code a bit because it was a bit weird.

## Why It's Good For The Game

This probably fixes a few rare bugs where the thermite overlay
disappears due to an update_icon call. Slightly neater code.
Also, adds an examine message to thermite walls because small QoL stuff
is neat.

## Changelog

🆑
qol: Thermited walls now get an examine message telling you they are, in
fact, thermited.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Cleans up thermite component code

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-04-21 17:21:21 -04:00
SkyratBot
1a0cdfac66 [MIRROR] Hologram Touchup (Init savings edition) [MDB IGNORE] (#20638)
* Hologram Touchup (Init savings edition)

* Update hologram.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 03:53:09 +01:00
SkyratBot
8cb96fad58 [MIRROR] Fixes body purist headrevs from getting mad at their implant by making them unaware of it [MDB IGNORE] (#20616)
* Fixes body purist headrevs from getting mad at their implant by making them unaware of it

* Update surgery.dm

---------

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 03:53:01 +01:00
SkyratBot
9a20271ee5 [MIRROR] Adds helpers for apc. [MDB IGNORE] (#20589)
* Adds helpers for apc. (#74651)

## About The Pull Request
I asked someone in discord if it was worth it, they said it was, from
what i remember at least.

## Why It's Good For The Game
More comfort with apc's for mappers.

---------

Co-authored-by: san7890 <the@ san7890.com>

* Adds helpers for apc.

* wew

* wew

---------

Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 03:35:53 +01:00
SkyratBot
fe47d6ba35 [MIRROR] Refactors sheet crafting to better support directional construction [MDB IGNORE] (#20594)
* Refactors sheet crafting to better support directional construction (#74572)

## About The Pull Request

0426f7ddba/code/game/objects/items/stacks/stack.dm (L449)

Ok, but can we not?

This PR refactors sheet crafting to generalize all the cases that were
previously locked behind grille/window type checks and such. In their
stead there are bitflags that can be set to achieve certain behaviors.

All the behavior from before should be preserved, but now it can be
extended to other items. E.g. if you want a railing that can be crafted
underneath directional windows, or an item that behaves like a grille
does--it's just a matter of setting the right obj_flags for it now.

This makes it very simple and painless to add new recipes that use
directional crafting! It's all modular now.

<details><summary>Details</summary>

---

### What I've done:

-Eliminated all the type checks, instead it will now be handled by
object flags and recipe vars, making for a much more configurable
system.

-Added two new obj_flags: `BLOCKS_CONSTRUCTION_DIR` and
`IGNORE_DENSITY`.
-Additionally, I renamed the existing flag `NO_BUILD` to
`BLOCKS_CONSTRUCTION`.

-Changes the proc `valid_window_location` to `valid_build_direction`,
and makes it work for things other than windows.

-Removed a deprecated `window_checks` var from the stack_recipe datum.
-Added three more vars to the stack_recipe datum: `check_direction` and
`check_density`, `is_fulltile`

-Decoupled `on_solid_ground` from the object density check. Now you can
set those separately, allowing you to make recipes that forbid/allow
building things over other things while in space.

---

### What the new flags do:

`BLOCKS_CONSTRUCTION` works as before---prevents objects from being
built on the object. I felt that the previous name was not descriptive
enough, you should know exactly what it does just from looking at the
name.
_example: dna scanner_

`BLOCKS_CONSTRUCTION_DIR` -- setting this on an object will prevent
objects from being built on it when their directions are the same.
_example: directional windows, windoors, railings_

`IGNORE_DENSITY` -- setting this on an object will cause its density to
be ignored when performing the construction density check. This could
have other potential uses as well in the future.
_example: grilles, directional windows, tables_

These three flags cover all the bases for the types of items that are
currently craftable, so there is no more need for any type checking or
weird snowflake window checks. Simply set the appropriate flag and it'll
work as you would expect.

---

### What the recipe vars do:
`check_direction` tells the recipe to check if there's something in that
direction with the `BLOCKS_CONSTRUCTION_DIR` flag set.

`check_density` tells the recipe to run the density check when set. This
is true by default. There are very few items in the game that currently
have this set to false--namely grilles. Setting this to false will make
it so that the object can be constructed regardless of what is in that
tile (unless `one_per_turf` is also set, which will make it so that you
can't craft the same thing twice in the same turf).

`is_fulltile` is used for fulltile windows, but it doesn't necessarily
have to be--you can give this to any recipe and it will adopt the same
properties as that of the fulltile window. Basically they have a special
case where they shouldn't be able to be built over directional
constructions, where normally things would be able to be. Setting this
makes check_direction true as well.

---

### In summary:

Sheet crafting still works just as it did before. But the backend of it
has gotten a glow up and will be able to more easily support new
behaviors.

</details>

## Why It's Good For The Game

This makes the crafting system much more flexible to add recipes to, and
will prevent bad code practices of stacking more conditionals down the
line whenever someone wants to add an item that behaves like grilles or
directional windows in how they are constructed.

It had to be done. Those window checks were a mess.

## Changelog

🆑
qol: added fifty stack versions of remaining glass sheet stacks for ease
of debugging
refactor: refactored sheet crafting to better support directional
constructions that aren't windows
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Refactors sheet crafting to better support directional construction

* fex

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/20636

---------

Co-authored-by: Bloop <vinylspiders@gmail.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 02:14:10 +01:00
SkyratBot
013658e1a5 [MIRROR] Cleanup 1 letter var names in martial arts files [MDB IGNORE] (#20597)
* Cleanup 1 letter var names in martial arts files

* Update boxing.dm

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 02:12:27 +01:00
SkyratBot
fcfcc2f9d9 [MIRROR] Implanted foreign bodyparts will resist being removed on species change [MDB IGNORE] (#20555)
* Implanted foreign bodyparts will resist being removed on species change (#74701)

## About The Pull Request

Title.
Also, to make bodypart code slightly nicer, I retooled some variables to
be part of a new bitfield called bodypart_flags.

## Why It's Good For The Game

We've been trying to move away from the species datum for limb stuff
precisely because of funny shenanigans like this, no?

## Changelog

🆑
refactor: Implanted foreign limbs will no longer be wiped by species
change.
/🆑

* Implanted foreign bodyparts will resist being removed on species change

* fex

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 01:57:46 +01:00
SkyratBot
374d002403 [MIRROR] Unit Test Font Awesome icons and Quirk icons [MDB IGNORE] (#20442)
* Unit Test Font Awesome icons and Quirk icons

* skyrat edits

* icons

* fex

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 01:57:33 +01:00
SkyratBot
8e54d3d026 [MIRROR] Emergency Shuttle - Hug Relaxation Shuttle [MDB IGNORE] (#20660)
* Emergency Shuttle - Hug Relaxation Shuttle (#74642)

## About The Pull Request
adds this thing
![2023 04 10-14 12
51](https://user-images.githubusercontent.com/70376633/230899694-6d540acd-f16d-4e3e-a57b-2dc412d0ddb2.png)
This is shuttle contains a pillow fight box, no violence, and a large
cozy heart-shaped area for spacemen to sleep in.
Has a medical bay, brig, command. Tons of plushies, instruments,
pillows, general cutesy stuff. Contains one (1) pax pill bottle.
Has an oxygen canister for quick repressurization.

Also adds it commented out to the Emergency Shuttle Blacklist, in an
alphabetically-correct position

Costs 3200
## Why It's Good For The Game

Has an unique emergency shuttle shape, does not promote violence, looks
cozy. And I heard some people like this shuttle so its probably good
enough?
## Changelog
🆑
add: Adds the Hug Relaxation Shuttle as an emergency shuttle
/🆑

* Emergency Shuttle - Hug Relaxation Shuttle

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2023-04-21 01:44:35 +01:00
SkyratBot
dad84df983 [MIRROR] Makes a whole bunch of wooden objects flammable [MDB IGNORE] (#20670)
* Makes a whole bunch of wooden objects flammable (#74827)

## About The Pull Request

This whole PR started because I realized that baseball bats are not
actually flammable which I found weird, then I looked at a whole bunch
of other stuff that really should be flammable but also isn't.

## Why It's Good For The Game

Makes wooden objects behave slightly more consistently? Honestly, most
of these seem like oversights to me.

## Changelog

🆑
balance: The following structures are now flammable: Picture frame,
fermenting barrel, drying rack, sandals, painting frames, paintings,
spirit board, notice board, dresser, displaycase chassis, wooden
barricade
balance: The following items are now flammable: Baseball bat, rolling
pin, mortar, coffee condiments display, sandals, wooden hatchet, gohei,
popsicle stick, rifle stock
/🆑

* Makes a whole bunch of wooden objects flammable

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
2023-04-21 01:42:34 +01:00
SkyratBot
d5f9f5bff1 [MIRROR] Refactors genetic damage component to be a status effect [MDB IGNORE] (#20671)
* Refactors genetic damage component to be a status effect (#74799)

## About The Pull Request

The genetic damage component looked like a status effect, swam like a
status effect, quacked like a status effect, but wasn't a status effect.

Irradiated component is also guilty of this, but it has the excuse of
also getting applied to items. This one only applies to mobs though,
so...

## Why It's Good For The Game

Easier to maintain code, that's about it.

## Changelog

Not player facing.

* Refactors genetic damage component to be a status effect

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
2023-04-21 01:42:25 +01:00
SkyratBot
0558e6ef8e [MIRROR] Fixes runtime with Spontaneous Combustion feedback text [MDB IGNORE] (#20673)
* Fixes runtime with Spontaneous Combustion feedback text (#74848)

## About The Pull Request

![image](https://user-images.githubusercontent.com/51863163/233008669-f7d206d8-50a3-4987-b4b0-c632747a6f3a.png)

Our string macros do string concatenation, which can cause issues if
you're trying to be fancy

`"A" + 1 ? "B" : C" + "D"` Does not give you `"ABD"` (`("A") + (1 ? "B"
: "C") + ("D")`),
but rather it will try to do `(("A" + 1) ? "B" : "C") + "D"`

Use macros carefully

![image](https://user-images.githubusercontent.com/51863163/233006373-cfbf1940-699b-4fec-9850-63f715e58421.png)

## Why It's Good For The Game

Runtime

## Changelog

🆑 Melbert
fix: Fixes a runtime with Spontaneous Combustion
/🆑

Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>

* Fixes runtime with Spontaneous Combustion feedback text

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>
2023-04-21 01:40:37 +01:00
SkyratBot
f8dd53d80c [MIRROR] Fixes AIs having incorrect laws and being useless on nations [MDB IGNORE] (#20676)
* Fixes AIs having incorrect laws and being useless on nations (#74843)

## About The Pull Request

Fixes #74842

So this issue is multi-part

1. Separatist antag datum used the wrong mob for applying laws to.
`mob_override` is not passed usually and should default to the antag
datum owner's mob if not passed

Fixes this by passing the right mob. AI still doesn't get law datums,
the issue is deeper - they don't even become separatists!

2. Separatists only iterates over human mobs, and not silicon mobs

Okay, fixes this by iterating over all living players. Still not
entirely fixed, new AIs don't have UN laws!

3. Changes the default law datum when nations executes to United Nations
so new unlinked silicons gain the lawset

Closer, would you believe it if this still doesn't fix everything, but
going further is out of scope.
Changing the round default lawset as a part of roundstart execution does
not update anything that set it from atom initialize. If we wanted we
could hook signals into "default lawset changed" and then update it
conditionally to circumvent ALL of these issues but whatever, someone
can do that later.

## Why It's Good For The Game

AIs stop crying on nations

## Changelog

🆑 Melbert
fix: AIs now get their proper lawset, and an objective related to said
lawset, on Nations
/🆑

* Fixes AIs having incorrect laws and being useless on nations

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-04-21 01:40:22 +01:00
SkyratBot
92f3327227 [MIRROR] refactors poles and trees into basic mobs [MDB IGNORE] (#20649)
* refactors poles and trees into basic mobs (#74812)

## About The Pull Request
refactors poles and trees into basic mobs. If trees now see you holding
a chainsaw, hatchet, or some wood they will get angry and knock you out
for longer. Poles will run around giving some of their charge to APCs
they find along the way. i did them both in this PR coz poles were a
subtype of trees.

## Why It's Good For The Game
refactor

## Changelog
🆑
refactor: refactors trees into basic mobs
refactor: refactors poles into basic mobs
add: If trees now see you holding a chainsaw, hatchet, or some wood they
will get angry and knock you out for longer
add: Poles will run around giving some of their charge to APCs they find
along the way
fix: cells charged by the pole will now have their icon correctly
updated to reflect their charge
/🆑

---------

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

* refactors poles and trees into basic mobs

---------

Co-authored-by: SMOSMOSMOSMOSMO <95004236+SmoSmoSmoSmok@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-04-20 02:24:29 +01:00
SkyratBot
8f4f46cad9 [MIRROR] New Space Ruin: The All-American Diner! [MDB IGNORE] (#20642)
* New Space Ruin: The All-American Diner! (#74460)

* New Space Ruin: The All-American Diner!

---------

Co-authored-by: Singul0 <127663818+Singul0@users.noreply.github.com>
2023-04-20 02:24:01 +01:00
SkyratBot
bad4c9168c [MIRROR] Mafia rebalance and backend refactor [MDB IGNORE] (#20631)
* Mafia rebalance and backend refactor (#74640)

## About The Pull Request

Turns all Mafia abilities into datums, instead of being a bunch of
shitcode on every single job.
This means it's easier to add new roles
Gives new names to some defines (such as the signal order, to make it
easier to tell when something is fired)
Adds support for modular Mafia jobs with their abilities being in a
certain order (Escort is now properly first).
De-snowflakes Changeling killing abilities and day voting, they're now
actions that are tallied when necessary.

Turns time vars into defines
Generalizes a lot of behavior for abilities, now all abilities can
properly undo their action at night

Fixes problems with the UI (Thoughtfeeder had 2 buttons during night and
they overlapped with names, that's been fixed).

### Behavior changes

- Doctor/Officer can now protect themselves 1 night, because it gives
them a way to protect themselves.
- Lawyer/Warden/Ect now choose their abilities at night, rather than the
day before. The suspense building up towards the end of the night is
part of the game, telling you that it happened at the very start is
quite lame (in the case of Lawyer, anyway).
- Admin setup now uses TGUI instead of html inputs.
- Cut night time by like, 5 seconds, because I found it a little long
lol.
- HoP doesn't count as votes to win until they reveal, because it makes
no sense an unrevealed HoP has their unrevealed votes tallied. I also
like those 1v1 Mayor V. Evil scenarios where dead chat goes crazy, and
hope to replicate that here.
- Mafia now needs 6 people to start instead of 4, because 4 players is
just not enough to play a Mafia round that will do anything but annoy
people.
- The game no longer ends if it's in a standoff with 1 Town, 1 Mafia,
and 1 Neutral, as you've got a kingmaker and they should decide who
wins.

### Things I want to change in the future
Every time night starts/ends, it checks the entire ``GLOB.airlocks`` for
doors with the "mafia" ID. This is stupid.
Rework ``check_victory()`` to make it make more sense, and be more fun
for players.
A visible death animation?
I want to use something similar to admin popup for messages about people
being on stand, and decluttering the UI in general
Also more use of balloon alerts instead of to chat messages for
everything.
Also also, making the UI more responsive to players. Button should be
red when a player is selected, so they know that's who they've selected,
if they want to unselect.
Are votes public when you first cast them? They shouldn't be wtf.
Can we also make the description for roles not be a to chat message? It
can just say when you hover over the '?' come on.
User-written wills instead of auto-generated, and able to send them in
chat
Add support for roleblock-immune roles

## Why It's Good For The Game

Updates a lot of old code to modern standards
Makes it considerably easier to work with Mafia and add new roles
Makes things less prone to breaking as easily.
Code also looks a lot cleaner now.

## Changelog

🆑
refactor: [Mafia] All Mafia abilities have been overhauled in the
backend, it's now much easier to understand what each role's ability can
do and how it works.
admin: [Mafia] Admin setup of Mafia is now in TGUI
balance: [Mafia] Doctors/Officers can protect themselves once per game.
Be careful around them!
fix: [Mafia] Thoughtfeeder's UI buttons at night won't overlap with
eachother.
fix: [Mafia] HoP's votes now actually matter, instead of being purely
visual.
qol: [Mafia] Lawyers, Wardens, etc. now perform their night ability at
night, instead of the day prior.
qol: [Mafia] Night time now lasts 40 seconds instead of 45.
/🆑

* Mafia rebalance and backend refactor

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-04-17 22:00:53 -07:00
SkyratBot
934f816c24 [MIRROR] Shoe storage can now fit box cutters, pills, and toy pistol magazines. [MDB IGNORE] (#20630)
* Shoe storage can now fit box cutters, pills, and toy pistol magazines. (#74762)

## About The Pull Request

Shoe storage can now fit box cutters, pills, and toy pistol magazines.

All of these have better-or-equal similar items that can already be
fitted in.

Box cutters - Switchblades (Better in every way)
Pills - Syringes and Medipens (Mostly sidegrades)
Toy magazines - Actual pistol magazines
## Why It's Good For The Game

More stuff you can shove into your shoes, consistency with similar
items. Honestly I'm not too fond of this strange whitelist system,
wouldn't a blacklist be better and more intuitive?

If there's any items you want me to add, comment below with them.
## Changelog
🆑
qol: Shoe storage can now fit box cutters, pills, and toy pistol
magazines.
/🆑

* Shoe storage can now fit box cutters, pills, and toy pistol magazines.

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-04-17 21:52:40 -07:00
SkyratBot
0a1fbbd258 [MIRROR] Turns loomable component into a bespoke element [MDB IGNORE] (#20618)
* Turns loomable component into a bespoke element (#74685)

## About The Pull Request

Thought https://github.com/tgstation/tgstation/pull/74552 was good?

YOU WON'T BE READY FOR THIS ONE...

## Why It's Good For The Game

free miniscule amount of performance by getting rid of some silly
component datums

## Changelog

player dont care

---------

Co-authored-by: san7890 <the@ san7890.com>

* Turns loomable component into a bespoke element

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-04-17 21:52:01 -07:00
SkyratBot
312cd4b211 [MIRROR] Turns space bat into a basic mob & moves retalate mobs to retaliate folder [MDB IGNORE] (#20593)
* Turns space bat into a basic mob & moves retaliate mobs to retaliate folder (#74747)

## About The Pull Request

Turns Space Bats into a basic mob, why not.

I also noticed some retaliate mobs weren't in the retaliate folder, and
moved them over. I didn't move goats over because they're in a large
file and didn't want to really expand much on this PR that I just wanted
to focus on just bats.

## Why It's Good For The Game

I was just messing around with some bat stuff and thought I might as
well make them basic mobs.

## Changelog

🆑
code: Space Bats are now Basic mobs.
/🆑

* Turns space bat into a basic mob & moves retalate mobs to retaliate folder

* Update spacehotel_skyrat.dmm

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-04-17 15:34:41 -07:00
SkyratBot
0d5e4e4ec9 [MIRROR] Basic pollen-particles for plants pollenating. [MDB IGNORE] (#20592)
* Basic pollen-particles for plants pollenating. (#74675)

Legally endorsed nightcode 👍

## About The Pull Request

When 2 plants are adjacent to each other, they will begin to
cross-pollenate, sharing their potency, instability, and yield values
between the two. This has been in the game since #50001 , however we
never added a more clear visual tell that cross-pollenation exists.
Thanks to the magic of *barticles*, now you can!

![image](https://user-images.githubusercontent.com/41715314/231359363-07c7f354-d2f6-4d5e-8b59-5f968781135f.png)
_pictured: wheat and tomatoes pollenating_

Adds a simple particle effect, largely lifted from bonfires, that
indicates that two plants are sharing stats at minimum.

## Why It's Good For The Game

Following discussion from #74621, it was decided we needed and preferred
a more visual cue to the mechanic. As a general point I think that's a
longer term fix to the issue, and this adds more visual clarity to an
otherwise arcane mechanic (heh).

Looking for feedback on how to improve the look of the particles but for
fast nightcode I think I did okay for a first try

## Changelog

🆑
imageadd: Hydroponics trays now have pollen particles that they generate
when they share stats and chems. Non-allergenic!
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Basic pollen-particles for plants pollenating.

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-04-17 17:53:30 +01:00
SkyratBot
156f9e33ec [MIRROR] Fixes eigen lockers bypassing TP protection [MDB IGNORE] (#20609)
* Fixes eigen lockers bypassing TP protection (#74722)

## About The Pull Request
Fixes eigenlockers bypassing teleport protections.

![image](https://user-images.githubusercontent.com/41448081/231939450-42287185-48f4-4a3b-ac7a-38adc0600633.png)

Tested w/ one and multiple lockers, prevents entering or exiting from a
tp-prot eigenlocker

## Why It's Good For The Game
This came up in an away mission designed to be a "one-way-trip", the
only exit being at the very end of the away mission. However, people are
able to bypass this with eigenlockers, thanks to them performing no
teleportation checks, which I believe is an oversight.

## Changelog
🆑
fix: Eigenstasium lockers no longer bypass teleport protection
/🆑

---------

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

* Fixes eigen lockers bypassing TP protection

---------

Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-04-17 17:52:43 +01:00
SkyratBot
f4aee43e79 [MIRROR] Tones down the power of nitrous oxide, the reagent. Makes heparin a bit harder to fix to compensate [MDB IGNORE] (#20610)
* Tones down the power of nitrous oxide, the reagent. Makes heparin a bit harder to fix to compensate (#74703)

## About The Pull Request

Nitrous Oxide, rather than directly subtracting blood volume per tick,
instead applies the anticoagulant trait ''TRAIT_BLOODY_MESS''. It shares
this with heparin.

However, unlike, heparin, coagulants like Sanguirite will remove the
trait and allow for continued clotting while the reagent is present,
neutering the nitrous oxide's anticoagulant effects (but not the other
parts)

Heparin, on the other hand, will purge Sanguirite while it is in you
system. You must remove the heparin before you can apply an
anticoagulant.

## Why It's Good For The Game

Nitrous Oxide, on top of being a knockout chem that causes you to
suffocate and become drowsy, just starts deleting blood rapidly. About
15 units of it, standard in a syringe, will kill you in about a minute,
but you'll be unconscious for most of it (you'll be at around 50%-60%
blood by the time it is out of your system, so as good as dead). It
doesn't matter that it metabolizes quickly either, since because it
isn't a toxin, it doesn't get purged by livers/improved livers, so you
will probably metabolize all of the chem that enters your system.

Blood is one of those 'hidden damage types', a bit like brain damage.
Once you start losing it _directly,_ you probably don't have a lot of
options to resolve it (unlike a bleed, which you do in various manners),
and the means of causing blood loss has been mostly pretty well
controlled as of late. Heparin directly interacts with wounds as a good
example.

Blood loss is also tied into oxyloss, which is another very mean damage
type in that it causes you to fall into unconsciousness at 50 damage, so
significantly more lethal than normal damage, kept in check by the fact
that breathing restores some of it. Nitrous oxide, you might note,
causes you to stop breathing.

It's cheaper to make than either heparin or lexorin, and since it isn't
a toxin like those chems, it is able to circumvent a few game mechanics
to simply just start killing you. It does the work of chloral hydrate,
lexorin and heparin while it has a remarkably easy recipe.

Following the example of how lexorin was pulled into line, and
consistency with heparin, I've made nitrous oxide an anticoagulant that
may or may not come into play as one. I think this is more up to date
with the state of toxins and chem warefare as a whole, and works with
the relative ease in making nitrous oxide. And it has been this way for
about 5 years, before we got wounds.

(did I mention that nitrous oxide is also an explosive if it gets hot
enough?)

## TL;DR

I think a chem with a pretty basic recipe shouldn't be doing the work of
5 other, more complicated, chemicals while also not being a toxin and
also not interacting with the wounds system or purity system whatsoever.
And being an explosive.

## Changelog
🆑
balance: Nitrous oxide, the reagent, increases bleed rate from wounds
rather than directly subtracting blood. It can be counteracted using
coagulants (such as those in epipens).
balance: Heparin purges coagulants. You have to remove heparin from
someone's system before you can use coagulants.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Tones down the power of nitrous oxide, the reagent. Makes heparin a bit harder to fix to compensate

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-04-17 01:26:08 +01:00
SkyratBot
9cee4ee779 [MIRROR] Optimizes particle holders [MDB IGNORE] (#20599)
* Optimizes particle holders (#74524)

## About The Pull Request

It isn't really an issue now, but these will be used more in future, so
let's start off strong.

There's a lot of work going on here that doesn't really need to be
happening, mostly off not knowing a trickTM.

Biggest one is vis_locs and vis_contents are linked lists, being in one
requires being in another. Atoms clear out their vis_locs on Destroy, so
we do not need to "own" references to things that have us in their
vis_contents.

This combined with knowing our old loc's loc off Moved made the use of
weakrefs here unneeded. Similarly, atoms inside atom movables qdel on
when the upper layer is deleted, so most cases of the qdeleting signal
were unneeded.

Also, we only cared about movement if we were an item (speaking of
which, I swapped out the isitem stuff with a flag that gets passed into
the new() call)

## Why It's Good For The Game

Speed

* Optimizes particle holders

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-04-16 23:59:20 +01:00
SkyratBot
86adc2d878 [MIRROR] [no gbp] Simple animals can't catch on fire [MDB IGNORE] (#20583)
* [no gbp] Simple animals can't catch on fire (#74736)

## About The Pull Request

Fixes #74633
FIxes #74739

I probably broke this when I refactored spiders and it became apparent
because someone added particles to it.
Simple animals didn't really do anything as a result of being on fire
except perhaps invisibly pass it on to other people, but it was wasteful
to apply the status effect.

## Why It's Good For The Game

No mostly-invisible fire hazards.

## Changelog

🆑
fix: Renault and other simple animals are now correctly fireproof.
/🆑

* [no gbp] Simple animals can't catch on fire

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-04-16 23:56:56 +01:00
SkyratBot
7463f2e2d1 [MIRROR] The North Star Expeditionary Vessel - A Second Wind [MDB IGNORE] (#20535)
* The North Star Expeditionary Vessel - A Second Wind (#74371)

## About The Pull Request
A new map for TGstation, in the works! It has 4 fucking Z levels, a
massive expansive maintenance with unique designs, and some unique code
features in the works.

To Do:
- [x] Update the Map to Modern TG
- [x] Local Tests
- [x] Work on Map Optimizations
- [x] Run Live Tests

Fikou has greatly helped with creating an important flavour aspect of
this map, Trek Uniforms on anyone who joins! See the forum thread for
more. This includes the framework for innate station traits, station
traits loaded as long as it's in a map's json

Here's the forum dev thread there are screenshots there.
https://tgstation13.org/phpBB/viewtopic.php?p=657252#p657252

### Mapping March
Ckey to receive rewards: Cheshify

## Why It's Good For The Game
So, this is the North Star. An effort taking multiple mappers and of 9~
months of hard work. This map was not initially designed for TGstation,
but always designed for TGstation code. The process of retooling the map
for TGstation was an absolute joy and I feel like the map definitely has
it's niche as a massive and unique experience for it's players.

I adore this map, it's gorgeous, has a unique aesthetic, and a number of
very funny interactions with multi-Z. The PR comes packed with unique
mechanics for future mappers (innate station traits!), a number of
map-fitting shuttles, and a fun spacefaring uniform gimmick for the
crew.

**This is my second attempt at bringing this map into rotation. It was
initially closed due to concerns about maptick and performance, as I
wasn't willing to push for a map to be added to the repository if it
didn't function to my own standards. I've been informed by a number of
coders far better than I that optimizations are arriving and enroute, so
I think it's time to dust her off and set sail for another journey.**

**Quick Disclaimer: Due to some design decisions disagreed upon by the
headcoder team and myself, the map will not be featuring unique
roundstart uniforms, and despite my design intentions, the innate
station trait features will be shelved for now.**

## Changelog
🆑 Cheshify, Fikou, Blue-Berry, Zytolg, InfiniteGalaxies, Striders,
Sylphet, Riggle, Soal, Andry, Crit, Deranging, and Pumpkin0.
add: Nanotrasen's Newest Exploratory Vessel is now available! Meet the
North Star!
add: More landmines, and a landmine random spawner.
add: energy barriers now have a regenerative subtype, fit for permanent
installations.
code: Raised the number of possible level render to 4, check your
preferences if needed to be reduced.
/🆑

---------

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

* The North Star Expeditionary Vessel - A Second Wind

---------

Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-15 00:00:17 +01:00
SkyratBot
327ebcb31c [MIRROR] Reworks burning objects to be a component [MDB IGNORE] (#20543)
* Reworks burning objects to be a component (#74688)

## About The Pull Request

Title.

## Why It's Good For The Game

Simply put, allows for atoms which are not /obj but use atom_integrity
to burn up too, which is nice and good.
But also, it allows for neat behavior like burning particle effects
(only structures use that right now to spawn smoke)

![image](https://user-images.githubusercontent.com/82850673/231595051-2a8d0574-33cc-4cd9-9d61-65566decf4ef.png)

## Changelog

🆑
add: Burning structures spawn smoke particles. Sick.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Reworks burning objects to be a component

* modular

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2023-04-14 23:44:14 +01:00
SkyratBot
82f5bf7af2 [MIRROR] Fixes omen component door crushing failing, fixes tilted vendors double dipping on omen people [MDB IGNORE] (#20540)
* Fixes omen component door crushing failing, fixes tilted vendors double dipping on omen people (#74692)

## About The Pull Request

- Fixed door crush always failing.
- It passed `forced = TRUE` and not `force_crush = TRUE`, so it just did
a limp close -> re-open. Fixed that

- Fixed tilted vendor double dip
- It checked for tiltable but not already tilted, meaning you can get
crushed -> move -> get crushed by the same vendor. Fixes that

## Why It's Good For The Game

Curses

## Changelog

🆑 Melbert
fix: Omen Component door crush works
fix: Omen Component vendors will no longer double dip (double tip)
/🆑

* Fixes omen component door crushing failing, fixes tilted vendors double dipping on omen people

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-04-13 22:13:16 -07:00
SkyratBot
e8ae838401 [MIRROR] March into Mapness - The abandoned Mime Outpost [MDB IGNORE] (#20523)
* March into Mapness - The abandoned Mime Outpost

* Update spaceruinblacklist.txt

---------

Co-authored-by: kinnebian <75904284+kinneb@users.noreply.github.com>
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
2023-04-13 23:07:04 +00:00
SkyratBot
451b34e7e0 [MIRROR] Fixes two bugs with removing cards from a tgc deck. [MDB IGNORE] (#20526)
* Fixes two bugs with removing cards from a tgc deck. (#74658)

## About The Pull Request

Fixes: #72697

Fixes transferring cards to a binder resulting in zero card decks.
Fixes transferring cards to the floor not working at all.
## Why It's Good For The Game

Bugfixes!
## Changelog
🆑
fix: Removing cards from TGC decks by pouring them on the floor/into
binders should now function correctly.
/🆑

* Fixes two bugs with removing cards from a tgc deck.

---------

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
2023-04-12 21:37:10 -07:00
SkyratBot
9a594755f3 [MIRROR] Renames delta time to be a more obvious name [MDB IGNORE] (#20507)
* Renames delta time to be a more obvious name

* updates to our code

---------

Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-12 20:45:43 +01:00
SkyratBot
3a5a1d4058 [MIRROR] Imports and Contraband: Different! Cargo crates without locks! MEAT! [MDB IGNORE] (#20423)
* Imports and Contraband: Different! Cargo crates without locks! MEAT!

* helping make 20423 a little more mergeable (commits to a nonmaster branch) (#20434)

* regal condor my beloved

* damn ok

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>

* [merges to pr 20423, get this first] more nitpicks in regards to the imports pr (#20497)

missed mirror and a nitpick i forgot

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-12 20:03:30 +01:00
SkyratBot
fe8fc4d010 [MIRROR] Split weapons_and_items.dmi icons into their own categories [MDB IGNORE] (#20360)
* Split weapons_and_items.dmi icons into their own categories

* update modular

* I hate the dme

* random ass define removal fix

* missing icons fix

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-12 19:53:43 +01:00
SkyratBot
ba88487b5c [MIRROR] Labels security equipment as being lethal, nonlethal, less-than-lethal or highly destructive. [MDB IGNORE] (#20487)
* Labels security equipment as being lethal, nonlethal, less-than-lethal or highly destructive.

* skyrat edits

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
2023-04-11 20:07:06 -07:00
SkyratBot
93a8095c08 [MIRROR] New inhand icons for light tubes, makes latex balloons craftable, and various other fixes/improvements [MDB IGNORE] (#20462)
* New inhand icons for light tubes, makes latex balloons craftable, and various other fixes/improvements

* resolve conflict

* Update VoidRaptor.dmm

---------

Co-authored-by: Bloop <vinylspiders@gmail.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
2023-04-10 18:37:55 -07:00
SkyratBot
8b7ebae0b7 [MIRROR] Material Container screentips [MDB IGNORE] (#20472)
* Material Container screentips (#74626)

## About The Pull Request

The material_container component now also grants whatever it is added to
a simple screentip of "Insert" on items that it can accept, if it is a
material container that can accept held items.

## Why It's Good For The Game

Now when a traitor feeds their 13 TC revolver into the autolathe they
will see a screentip for a few blissful seconds before pressing left
click anyway and sending an ahelp begging for their revolver back.

## Changelog

🆑
qol: material components (such as autolathes) have contextual screentips
if you can put an item inside of it
/🆑

* Material Container screentips

---------

Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
2023-04-10 18:00:35 -07:00