Commit Graph

2079 Commits

Author SHA1 Message Date
ChungusGamer666
3ec8bd669e Food gets stink lines when about to go rotten (#76038)
## About The Pull Request

Title says it all, food that decomposes gets stink lines halfway
through.

![image](https://github.com/tgstation/tgstation/assets/82850673/ae90220c-4b27-49dd-873a-6f349055f891)

![image](https://github.com/tgstation/tgstation/assets/82850673/c982055d-ed69-4935-bda5-7851836fad2c)

Moldy messes always gets stink lines.

## Why It's Good For The Game

1. It's funny
2. It's a visual indicator for food going bad which is kinda nice

## Changelog

🆑
add: Food now gets stink lines when going bad. Uh oh, stinky.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-06-18 18:29:29 -06:00
Youtubeboy139
9a6ccf3631 The Forbidden Tuna Can (#76064)
## About The Pull Request

This PR was made to replace the well known uglymine sprite with
something that doesn't look like a coder-sprite filler and instead looks
like an actual landmine. Simple as that, there's not really anymore meat
to this PR.

![Screenshot 2023-06-14
214904](https://github.com/tgstation/tgstation/assets/609886/b5f89661-b28f-4339-904a-db6f5c3bd5ed)
## Why It's Good For The Game

Replaces an older, depreciated sprite with something that has needed an
upgrade for quite a long time now.
## Changelog
🆑
image: Added a new Land Mine sprite
/🆑
2023-06-16 15:06:03 +02:00
ChungusGamer666
1bede4dcff Acid particles (+unsorted acid/burning/thermite component changes) (#75248)
This PR is way less than the file changes make it seem like it is.
Okay, first, the boring part:
- Picking up burning items is now a signal registered on the burning
component itself, instead of being a direct /obj/item/attack_hand()
check
- Sear sound now has an SFX define for convenience, since it is very
commonly used
- Fire stacks when extinguished on mobs will no longer clean acid on
items (WTF?)
2023-06-16 06:39:24 +00:00
ChungusGamer666
1d9d2fba69 Stops particle holders from appearing on context menu (#76006)
## About The Pull Request

Basically, due to carbons using KEEP_TOGETHER, particles were appearing
on the context menu which is annoying. I have no idea why it behaves
like this.
Buuut, giving particle holders the KEEP_APART flag does fix this.

closes https://github.com/tgstation/tgstation/issues/75641

## Why It's Good For The Game

Bugfix good

## Changelog

no
2023-06-15 19:55:23 -06:00
John Willard
b5975bd915 Unit tests now catch decals in walls/space (#75189)
## About The Pull Request

Unit tests will now fail if there's a decal in a wall or open space
turf. Open space turf could be limiting to mappers but I don't think it
makes sense for decals (like dirt, glass shards, etc) to be floating
around in space in the exact same spot.

If there's a decal you want to put in space, decals have a
``turf_loc_check`` var that will bypass this.

**Important note: This is not changing existing behavior. Decals already
delete themselves when they spawn in these incorrect locations, we're
just avoiding them from spawning in the first place.**

### Changes I made

- Ash flora are now lava immune, rivers spawn after flora does, so I
decided that it would be easiest (and more flavorful) to have them be
lava-immune rather than to not have them spawn at all.
- Decals can now be spawned in non-turf locations. This is currently
done by mail, which can give you bones as part of the mail. Currently it
will just delete itself instead.
- Trading Card button is now on the same tile as their display, which
now uses an offset. Before it would spawn it on the tile next to it,
which could be a wall in some instances.
- Mirrors now have floating movement type. They ARE floating since
they're attached to the wall, and it prevents them from burning up due
to lava in the Pride ruin.
- I also added a broken mirror subtype because I thought the icon_state
check was terrible.
- Bubblegum called ``DestroySurroundings`` several times on the same
thing, I hopefully fixed some of that. Their charge ability also
registered ``COMSIG_MOB_STATCHANGE`` despite ``/datum/action`` doing it
by default, so I fixed that too.

## Why It's Good For The Game

Decals in walls is already a bad idea, but currently all it does is
delete it on Initialize. It would be better if we ensured they wouldn't
spawn in the first place.

## Changelog

🆑
fix: Lava will no longer burn 6 of the mirrors in pride ruin
fix: Lava will no longer burn plants that spawn in them.
/🆑
2023-06-15 16:39:22 -07:00
Ghom
2bb4dfe76c Expanding the Experimental MODsuit Bepis Node with three new modules. (#75801)
## About The Pull Request
So, I've had this idea to make a contribution to the Bepis feature with
some modsuit stuff. The gimmicky stuff is ok and a good way to even out
the better content since it has game of chance design it has (you can
find those disks in space anyway so...). However, the Experimental
MODsuit node feels very underwhelming right now, compared to how big
that feature is.

This PR adds three MOD modules to the Experimental MODsuit node, plus
two more:
- Magneto Charger: While the Modsuit is activated, each step the user
takes will charge the installed power cell by a tiny bit, enough to
sustain a standard modsuit of generic slow speed with only a few, easy
modules installed. It won't work in zero G, while flying, pulled by
someone else, on a conveyor belt, riding a vehicle or crawling on the
floor, though.
- Recycler: It collects (most) garbage and casings off the ground and
recycles them into material sheets that can be dispensed on an adjacent
location or storage with with Middle Mouse Button. Doesn't clean debris,
and scuffed because most trash doesn't yield material anyway.
- - It also has two subtypes, unbound from the node: one that dispenses
riot foam darts and can be found on the black market, and another that
dispenses the more innocuous foam darts, rarely found in maints.
- Shooting Assistant: A configurable module. On Stormtrooper mode, it
will give the user a faster fire rate (the double tap trait) at the cost
of accuracy. On Sharpshooter mode, it will improve the user accuracy and
make their shots ricochet against walls at least once (if the hit atom
allows that, that is, e.g. lasers don't ricochet against iron walls), at
the cost of movement speed. Both modes also prevent the user from dual
wielding guns.

To make the Stormtrooper mode stackable with the poor aim quirk and
refrain from making a new trait for the sharpshooter mode, the gun
spread code in gun.dm has also received a little refactor and cleanup.
Also, it's been tested.

## Why It's Good For The Game
The Experimental MODsuit node is quite shabby and could use something
extra to make it more appealing to MODsuit enjoyers.

Also doubles down as a small addition to the black market and maint
loot, and code cleanup, since gun code gives off some garbled vibes.

## Changelog

🆑
add: Expanded the Experimental MODsuit Bepis node with three new
modules: Magneto Charger, Recycler and Shooting Assistant.
add: Added a Riot Foam Recycler module to the black market, as well a
more innocuous version as maint loot.
/🆑
2023-06-14 23:00:05 -04:00
MrMelbert
b69e3ce0ac Fixes hungover closet spawner? (#76003)
## About The Pull Request

I don't have proof this is bugged, but does anyone have any memory of
this actually working?

`in contents` doesn't work? It's a landmark? There are no closets in the
contents of the landmark? Surely it should be looking at the contents of
the turf?

## Why It's Good For The Game

Makes this thing work? 

## Changelog

🆑 Melbert
fix: Fix hungover people never spawning stuck in closets
/🆑
2023-06-14 19:30:00 -07:00
Zephyr
22c682af52 Removes old palm tree and coconut overlay effects (#75966)
## About The Pull Request

Title.
## Why It's Good For The Game

Fixes https://github.com/tgstation/tgstation/issues/73827
## Changelog
🆑
fix: Trees and Coconuts are no longer immune to singularities.
/🆑
2023-06-14 02:06:50 +02:00
LemonInTheDark
ae5a4f955d Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request

Signals were initially only usable with component listeners, which while
no longer the case has lead to outdated documentation, names, and a
similar location in code.

This pr pulls the two apart. Partially because mso thinks we should, but
also because they really aren't directly linked anymore, and having them
in this midstate just confuses people.

[Renames comp_lookup to listen_lookup, since that's what it
does](102b79694f)

[Moves signal procs over to their own
file](33d07d01fd)

[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](335ea4ad08)

[Does something similar to the attackby comsigs (PARENT ->
ATOM)](210e57051d)

[And finally passes over the examine
signals](65917658fb)

## Why It's Good For The Game

Code makes more sense, things are better teased apart, s just good imo

## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
2023-06-09 06:14:31 +00:00
Andrew
2e5806626c Proper broken tiles (#75623)
![before-export](https://github.com/tgstation/tgstation/assets/3625094/505eaed3-b429-45c4-ab65-6c92d1c9e20e)

## About The Pull Request

The current broken tiles have some visual issues:

- There is an ambient occlusion shade when it touches normal tile
- It has a layer higher than it should be which leads to things that are
normally above the floor layer, render below it. Such as atmos
machinery, cleanable overlays, etc.

This PR makes the render on a proper layer and work like a partially
destroyed floor tile that can be reclaimed with crowbar.

Also, the cleanables are now on FLOOR_CLEAN_LAYER to make dirt appear
above catwalks and these new tiles.

And the flat dirt now has 4 variants of sprites, while dust uses the old
dirt sprite. It seems like dust was just dirt with different description
before.

## Why It's Good For The Game

A broken tiling with no visual bugs and proper floor-like logic.

## Changelog

🆑 MTandi, Borbop
fix: Dust now has dust icon, instead of dirt icon. Dust on all maps
replaced with dirt
image: Flat dirt now picks from 4 new sprites
refactor: Made broken tiling work more like tiling and have
corresponding visuals. Added directional mapping variants.
fix: Cleanables now use FLOOR_CLEAN_LAYER to make sure that trash is
visible above catwalks
/🆑
2023-06-09 09:50:21 +12:00
lessthanthree
f97830c982 Change pride tiles to generic holiday tiles, add Tramstation support (#75665)
## About The Pull Request

- Rewrites the Pride Week rainbow tiles coloring into a more generic
'Holiday' tile coloring proc so that it can be used by any holiday
- Adds support for different color patterns
- Adds support for the trimline decal subtype Tramstation uses
- Adds stack types for tram tiles so that if you pull them up you can
put them back
- Fixes naming of tile decals

## Why It's Good For The Game

- The generic proc allows us to specify a different color set for each
holiday (think red white blue for July 4, or red/white/green for
Christmas)
- Players now have a way to put back tram platform tiles that have been
pulled up
- Tramstation gets colored tiles like the other maps


![image](https://github.com/tgstation/tgstation/assets/83487515/0b6ebf5e-43f1-4453-b680-6a4573392b10)

## Changelog

🆑 LT3
fix: Tram platform tiles now have proper stack types
refactor: Pride week tile coloring refactored into a generic holiday
decal system
spellcheck: Tile decals are no longer all named 'corner'
/🆑
2023-06-07 11:06:00 +12:00
Jolly
eb5e81fcb7 Sorts out posters.dm into its own files (where applicable) (#75757)
## About The Pull Request
Title.

## Why It's Good For The Game
Yeah, uhh, posters.dm was over 1k lines long.
I cut it put, put it in its own folder, and now everything is split
between contraband.dm, official.dm, and whatever misc/code was left in
posters.dm and moved to the folder.

## Changelog

🆑 Jolly
code: The code for posters has been split among three files. If you see
something weird, please report it.
fix: Fixed the single tank poster using the wrong typepath for its
mapping dir.
/🆑
2023-06-01 17:07:57 -07:00
FlufflesTheDog
e8376bfef8 No more un-pulsable syndicate anomalies (#75723)
## About The Pull Request
Prevents anomalies from spawning with the frequency 121.3, which you
can't select using signalers since it's a syndicate frequency. Switches
to using the sanitize_frequency proc since it covers this and the "only
uneven frequencies" check.

Alternatively, it might make sense to remove the frequency limitation
with signalers, as I don't believe there's any non-radio devices that
rely on signals on the syndicate frequency, and it's rather unintuitive
to have a frequency that just can't be selected without any feedback.
But I don't know enough about the relevant functionality to know if that
might break something.
## Why It's Good For The Game
Fix bugs. We can't let the syndicate keep getting away with this.
## Changelog
🆑
fix: Anomalies shouldn't spawn with frequencies that can't be selected
on signalers anymore
/🆑
2023-05-30 14:20:44 -04:00
Kubisopplay
9ba14f5fd0 Adds a variable that allows invisible portals (#75712)
## About The Pull Request
Adds simple var that allows a portal to be without the spark effect
## Why It's Good For The Game
Because I am going to make an noneuclidean station with portals, and
sparks make it too obvious
## Changelog
🆑
qol: Admins can make a portal not spark when teleporting
/🆑
2023-05-29 22:46:53 -04:00
Hoolny
419dd2b754 Spider Infestation Balance Rebalance Expansion Part 1 (#75204)
## About The Pull Request
https://hackmd.io/dxhPOOdRRKW7siqPbpfmYQ?view The HackMD goes in-depth
into what this PR is about

## Content
### Ambush Spider

![image](https://user-images.githubusercontent.com/84478872/236697303-16fb5fee-7862-457f-a053-9e634873f205.png)

![image](https://user-images.githubusercontent.com/84478872/236697338-7908e9ba-07d2-4af6-9e0a-583e74d96634.png)
### Scout Spider

![image](https://user-images.githubusercontent.com/84478872/236697485-91560e01-365d-4a9e-8401-a52b412d865f.png)

![image](https://user-images.githubusercontent.com/84478872/236697489-a9f1d46d-1e65-4e9d-995e-335e4cf40f8c.png)

![dreamseeker_JtR1iVptrV](https://user-images.githubusercontent.com/84478872/236697538-4e9ac1a4-b2b7-463a-b4ff-75f8ae2d266a.png)
## Tangle

![image](https://github.com/tgstation/tgstation/assets/84478872/756de834-5470-4a2a-9e8e-55d6a3ca770d)

![TkK4NHc](https://github.com/tgstation/tgstation/assets/84478872/4fa15fa6-db11-46a5-9b56-8e5fce4bc1c0)

![XxcLU0z](https://github.com/tgstation/tgstation/assets/84478872/7a007a94-e9a4-4700-9a0e-f5e2a178c924)

### Spiderlings

![ruCweIc](https://user-images.githubusercontent.com/84478872/236697721-b96469df-e68b-47b7-9316-ec152629e9aa.png)

![SWE0bgo](https://user-images.githubusercontent.com/84478872/236697726-7753f363-99db-46b1-8181-0dc755c1804e.png)

![BYNLUQa](https://user-images.githubusercontent.com/84478872/236697753-48c1c5b0-064a-45e9-bf19-ad2e29cdb426.png)


## Why It's Good For The Game
Currently, spiders have plenty of issues that make them a very 2d
mentional antag they kill,die, and respawn which is boring and leads to
a bunch of balance issues for their current design this PR both fixes
the current issues spiders have and adds more depth into the antag.
## Changelog
🆑
add: Added 3 new spider types
add: Added more spider abilities
balance: Rebalanced spiders
fix: Fixes spiderlings having density
/🆑

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-05-28 16:45:42 -07:00
Sealed101
1c60848edb Removes poseur tag graffiti (it's been dead for ~6 years Edition) (#75689)
## About The Pull Request
The _poseur tag_ graffiti option was not removed in the gang gamemode
removal back in #30056. Back then it would have chosen one of the gangs'
tags to mimic. Now, if selected, it will create an empty graffiti. This
will also apply to any mapped/generated graffiti. This sucks and this
derailed me from my other thing I was doing in the crayons.dm vicinity.

## Why It's Good For The Game
Removes a 6-year-old non-functioning graffiti option.

## Changelog
🆑
fix: exorcised a ghost of the gang gamemode from graffiti
/🆑
2023-05-28 12:31:05 -06:00
Jolly
be2b5f9e74 [MDB IGNORE] Adds a map lint against using non-dir helper posters (#75620)
## About The Pull Request
Title.


## Why It's Good For The Game
Similar to #75610.
Gets our posters on the mapping directional helpers where needed.

## Changelog

🆑 Jolly
code: The code for posters internally has been tweaked slightly. If you
see posters floating in hallways, please report them ASAP!!
/🆑
2023-05-27 19:47:45 -04:00
John Willard
0c99bd28f4 Makes gasses use defines (#75542)
## About The Pull Request

Adds defines for gasses and replaces uses I've found to instead use the
defines.

Can you believe I made this PR while trying to work with Xenos? This
sucks!

## Why It's Good For The Game

There's a lot of different uses of things like "o2" and "plasma", and
they are pretty inconsistent. In some places, it's "hydrogen", in others
it's "h2". In some it's "plasma", others "plasm". This unifies it all
under defines so it has a less chance of breaking in the future.

## Changelog

Nothing player-facing.
2023-05-27 19:45:22 -04:00
KingkumaArt
b7fb33ab00 Adds Ethereal Drinks (#75487)
## About The Pull Request
Adds 3 new electric-themed drinks for ethereals. They count as food for
etherials, (not much, one glass is about equivelant to a plasma burger),
but humans can drink them as well, among other effects.
## Why It's Good For The Game
As an ethereal player, I do feel while our food is convenient, that we
miss out on the RP other species get from going to the bar. This allows
for etherials to order drinks from the bartender. All effects work on
all races, with the hunger satiation as the exception.
## Changelog
🆑
add: Voltaic Yellow Wine - New "base" drink, found in booze-o-mat. No
special effects besides acting as a weak ethereal food. Not very potent
in terms of alcohol.

add: Telepole - New mixed drink themed after thunderstorms, gives the
same shock-resist grey bull does. Made from 1 part Voltaic Wine, 1 Part
Sake, and 2 parts Dark & Stormy. Moderately potent.

add: Pod Tesla - New mixed drink, themed after the old removed tesla
engine (the singulo gets a cocktail, it should too!) Grants a brave -
bull phobia resist, and a stronger grey bull shock resist allowing you
to (temporarily) resist tesla arcs from reactive armor and the SM's
tesla coils. Gives a pleasant thought to whoever drank it, because this
thing is a pain to make. Made from 5 parts admiralty, 5 parts telepole,
and 3 parts brave bull. Highly potent.

qol: Unsure if this counts as QOL or balance, but the fact sol dry is in
3 different cocktails but the bartender has to buy 30u cans of it made
me feel it deserved being added to the soda dispenser.

image: Added graphics for the above drinks, shown below, from left to
right: Pod tesla, Voltaic Yellow wine, Telepole, Voltaic Wine (bottle)
<img width="171" alt="image"
src="https://github.com/tgstation/tgstation/assets/69398298/901b2f64-1723-44b6-8f78-ef21bd477d96">


/🆑

---------

Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>
2023-05-27 19:00:55 -04:00
LemonInTheDark
b64a76ea56 Fixes moveloop shit (#75675)
## About The Pull Request

I was using the step_x procs when I should have been using get_step_x
and Move()
This was causing some mob behavior to not properly respect things like
gravity or potentially entered/exited signals.

Also ensures we pass direction into Move consistently, and deletes a
function that was meant to like, use step_to but with directions? Was
never actually used properly

I forgot to properly respect the "don't change dir" flag

Closes #75673

🆑
fix: Mobs will fly around space... less
/🆑
2023-05-27 15:33:28 -06:00
Ghom
e1052fc62a Massive Spraycan and Crayon Powercreep: smaller graffiti cost less to draw. (#75588)
## About The Pull Request
Currently, drawing a small circle on the floor consumes as much charge
as any other drawable but the larger horizontal ones that cost five
times as much, which is a bit dull for non-cyborg players, having to
burn through a ton of spraycans just to cover the floor in several small
dots if ever attempting to do some floor art.

This PR aims to reduce the cost of some of the smaller drawables, like
"shortline", "smallbrush", "pawprints" etc., in virtue of the smaller
area they cover. The balances changes may seem bit of an arbitrary and
not include ones that are a bit on the edge between "small" and not
"small", but I'd rather keep it simple than have other values such like
"semi-small" integrated and snowball this balance PR into a more
finnicky, disputable or not agreeable with version of itself.

This also covers re-coloring and existent graffiti. Currently it always
costs 2 charges to change its color regardless if it costed 1 or 5 to
spray in the first place. With this PR, the costs should match that of
when they were drawn. To boot, It also takes into account the tagger
quirk now.

Code had to be cleaned up and improved a bit for a smoother
implementation of these changes.
A fairly unrelated but small change: Trying to suicide with an empty
spraycan will now fail, because it's empty. It's that simple.

## Why It's Good For The Game
Enables non-cyborg players to engage in jolly floor-vandalizing-art in a
more consistent, slightly more enjoyable way.

## Changelog

🆑
balance: Drawing small graffiti like paw/foot/claw prints, small brush
dots and short lines should cost half as many charges off your spraycan
or crayon.
balance: The cost of recoloring graffiti decals is now consistent with
that of drawing them.
balance: Trying to suicide with an empty spraycan will now fail, because
it's empty. It's just that simple.
/🆑
2023-05-24 12:06:33 -06:00
Thunder12345
75537b97a5 GAGSifies Plushies (#75442)
image: Space lizard, carp, slime and snake plushies have been resprited and set up to support GAGS.
2023-05-20 04:16:45 -04:00
Hoolny
12fdd1f0bc Fixed sealed webs not stopping any atmos gas from passing through them (#75293)
## About The Pull Request

![image](https://user-images.githubusercontent.com/84478872/236974451-e764f1c2-f5ca-4c74-90ad-54c1fc929903.png)
Three lines of coder later

![image](https://user-images.githubusercontent.com/84478872/236974479-94961e2d-c0e6-4c6b-bc83-67a03f6874f4.png)
works good
## Why It's Good For The Game
## Changelog
🆑
fix: fixed sealed webs not stopping active atmos
/🆑
2023-05-14 15:41:17 -04:00
Jacquerel
adc010275f Spiderlings can cross webs (#75404)
## About The Pull Request

Reliable web traversal is now governed by a trait instead of a type
check.
Spiderlings have that trait.

## Why It's Good For The Game

Spiderlings are spiders and shouldn't get stuck in webs.
Turning this into a trait means that we can make more things apply the
trait in future if we want, without having to expand a list of allowed
mobs.

## Changelog

🆑
fix: Spiderlings no longer get stuck in webs
/🆑
2023-05-14 15:31:23 -04:00
YehnBeep
ad34d5341e Fixes posters not fitting in the boxes they spawn in (#75366)
## About The Pull Request

This makes posters, such as from the Poster Boy quirk or the syndicate
objective, able to fit back into the boxes the spawn in.

## Why It's Good For The Game

It just seems odd that posters can't fit back into the boxes they come
in, particularly when every other art supply fits just fine (and can
even be placed in the same boxes as the posters before you've taken them
out).

If it's this way for balance reasons then I don't want to argue that
change and will close the PR (or feel free to close it for me). But it
feels like it's just an oversight and I don't think it really has
balance implications?

## Changelog

🆑
qol: Posters can now fit back into the boxes they come in.
/🆑
2023-05-13 14:32:45 +01:00
MrMelbert
209ffe90d0 Fixes a runtime with stable / "hollow" anomalies (#75334)
## About The Pull Request

Setting `aSignal = null` wasn't the most proper way to make an anomaly
not drop a core, `drops_core` should've also been set to `FALSE`.

Changed it to set `drops_core = FALSE`. Also changed it to `QDEL_NULL`
the core rather than just null it. Adds a better stack trace and did a
minor cleanup thing.


![image](https://github.com/tgstation/tgstation/assets/51863163/96bdeba8-18c4-434d-9f25-7bb279b6b301)


## Why It's Good For The Game

Runtimes

## Changelog

🆑 Melbert
fix: Runtime from neutralizing "hollow" anomalies
/🆑
2023-05-12 02:27:41 +00:00
ShizCalev
5c2d3da4af Fixes ghosts & AI's detonating landmines, and jaunting mobs setting them off without first stepping on them (#75362)
Fixes #75049

🆑 ShizCalev
fix: Ghosts & camera mobs (ie blobs & AI's) will no longer set off
landmines.
fix: Jaunting mobs will now only set off landmines if they stepped on
them BEFORE jaunting.
fix: Flying mobs will no longer detonate landmines that were not first
stepped on.
/🆑
2023-05-11 20:18:29 -06:00
DrTuxedo
a4822c165b Now blocking is more noticeable! New blocking and parrying sounds (#74998)
## About The Pull Request
Now whenever an attack is blocked, the sound will play and deflection
with the item now plays sound too:


https://github.com/tgstation/tgstation/assets/42353186/1a0cc5b7-f2af-4d72-88d7-57cc11f5baa3

The parry.ogg was updated to a better-sounding one


https://github.com/tgstation/tgstation/assets/42353186/5ffc53d8-0b3c-4e6b-9256-b7b9735918bc

Every item now has a "block_sound" that can be set, it determines what
sound is played when you block an attack with it.
Cult items no longer have their own way of fuckery to play parry sounds,
now they use this system as well.

Now shield bash sound is 80% smaller after cutting out all of its noise
and silence.
## Why It's Good For The Game
Adds feedback on whether the attack was blocked or not, signalling both
to the attacker and defender that it didn't go through even if the
animation played, which is a great QoL. Same with the deflection sound
(although deflection is still pretty visible, the sound would not hurt)

New sounds add more flavour to the weapons, especially the energy sword,
giving it even more badassery.

Cutting down the noise from the shield bash sound has made it better to
listen and saved some kilobytes of information. And making every item
use the universal system for blocking sounds, removing cultist items'
own code for playing parrying sounds.
## Changelog
🆑 DrDiasyl aka DrTuxedo#0931
qol: Now blocking an attack will play a sound and display a spark
effect, giving back feedback
sound: parry.ogg was updated to a better-sounding version
sound: shieldbash.ogg no longer has noise and unnecessary silence
sound: New block_shield.ogg and block_blade.ogg for shields and energy
swords
code: Cultists items no longer have their own code for playing parrying
sounds
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-05-11 17:53:46 +00:00
MrMelbert
f209c7a604 Fixes a runtime from foam in a weird loc / improves the stack trace (somewhat) (#75281)
## About The Pull Request

- Fixes a runtime from foam being created inside plasmamen, instead of
at the plasmamen's loc, from the clown plasmaman suit


![image](https://user-images.githubusercontent.com/51863163/236899740-1d5ccca3-43c4-455b-9bb2-3206ce433df8.png)

- Adds a stack trace for mobs having foam created inside of them
- So, in the past foam would runtime if created in a non-turf at all,
mobs or otherwise. I changed it so it creates a more helpful stack
trace.
- While tackling this, however, I realized that we may want to support
foam in non-turf, non-mob locs? Like closets? That is to say, if you
release a foam reaction while stuck in a locker and it floods the
locker, it would stay in the locker until it is opened, and affect other
people in the locker itself? Unsure, so I left it as an option, albeit
it may not function entirely correctly.
- This may also false-positive in some places, such as a mob within mob.
I'm unsure if it should have its own case, or of it should act like
closets are implied to do above? But that may produce some silent
errors. So eh.

## Why It's Good For The Game

Less runtimes, more intended code. 

## Changelog

🆑 Melbert
fix: Fixes a runtime with plasmaman clown suit lube spray
/🆑
2023-05-09 14:07:58 -06:00
Helg2
bf880f553a Makes industrial gold and regenerative gold spawn random coins. Also adds chococoin to coin spawner. (#75199)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
So they just had list from 6 coins and not random picking of coins, so
now its random.
It will also spawn chococoin because it's a coin too.
But won't spawn `coin/gold/debug` because it's debug and eldritch coin
because comxy asked about it.

Added chococoin to `/obj/effect/spawner/random/entertainment/coin` and
holdables list of wallet.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
Random is funny.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
add: Indusrial Gold and Regenerative Gold extracts now spawn random
coins and not just list of 6 coins. But no mythril as it has miserable
chance to have summoning effect which have even more miserable chance to
spawn something dangerous and not just mice.
add: Chococoin now has a chance to spawn wherever the coins are used to
spawn (wallets, greed ruins, deltastation bar)
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-05-08 17:40:13 -07:00
Wallem
ceff62c6a9 Mildly buffs Active Sonar module (#75174)
Lowers the cooldown from 25 seconds to 15 seconds
Lowers the power drain from 25 to 20
Sonar visuals now move for the duration of their existence (see below)
2023-05-08 13:46:53 -05:00
Time-Green
e4c45dcdfd Makes stable bluyespace anomaloes only teleport on bump (#75223)
The anomaly research ruin spawns bluespace anomalies, but those
anomalies can teleport without bumping if you just walk past them. This,
combined with the ruins plasma river, makes them unfairly lethal for
explorers
2023-05-08 13:44:01 -05:00
SyncIt21
2068ea9ab5 Crate, Closet Refactors & Access Secured Stuff (#74754)
## About The Pull Request
This PR is actually 2 parts, one that fixes runtimes with crates & the
other that allows secured closets to be crafted
along with a secured suit storage unit

**Crate Fixes**

Fixes #74708

The problem starts here

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L31-L34)
Not only does this if condition look ugly but it's highly error prone
because one single call to `update_appearance()` can cause this to fail,
and sure enough if you look at the parent `Initialize()` proc it calls
just that

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L81-L88)
Since we know the appearance is guaranteed to be changed in some way
before the if condition gets executed let's check what the final state
of the crate would be before this if check

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L54-L56)
We see that the final icon state depends on the variable `opened` so if
we want to place/spawn a crate that is opened at round start we have to
ensure that `opened = TRUE` so the `if(icon_state ==
"[initial(icon_state)]open")` succeeds and does its job correctly.
Sadly we did dum shit like this
```
/obj/structure/closet/crate{
	icon_state = "crateopen"
}
```
throughout the entire code base, we thought backwards and were only
concerned in making the closet look open rather than setting its correct
variables to actually say that it is opened. because none of these
crates actually set `opened = TRUE` the final icon state becomes just
"crate" NOT "crateopen" therefore the if condition fails and we add the
component

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L36-L37)
with the wrong parameters, so when closing the closet after_close()
removes the component with the wrong arguments

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L81-L84)
that is does not unregister the signals and readds the component i.e.
re-registers the signals causing runtime.

The solution just do this
```
/obj/structure/closet/crate/open[mapping helper]
```
To clearly state that you want the closet to be open, that way you don't
have to memorize the icon_state for each different type of crate, it's
consistent across all crates & you don't get runtimes.

And that's exactly what i did everywhere

Another issue that is fixed is "Houdini crates" i.e. crates which are
open & appear empty but when you close & reopen them magical loot
appears, Go ahead walk upto to cargo and find any empty crate that is
open and do this

Fixes #69779


https://user-images.githubusercontent.com/110812394/232234489-0193acde-22c8-4c19-af89-e897f3c23d53.mp4

You will be surprised, This is seriously harmful to players because they
can just walk by a crate that appears to be open & empty only to realize
later that it had some awesome loot. Just mean

The reason this happens is because of the Late Initialization inside
closets

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L85-L86)

What late initialization does is suck up all stuff on its turf

f117834208/code/game/objects/structures/crates_lockers/closets.dm (L97-L100)

In theory this is supposed to work perfectly, if the closet is closed
move everything on the turf into the closet and so when the player opens
it, they all pop back out.
But what happens if the closet is opened before ` LateInitialize()` is
called? This breaking behaviour is caused by object spawners

f117834208/code/game/objects/effects/spawners/random/structure.dm (L94-L100)
And maint crates

f117834208/code/game/objects/structures/crates_lockers/crates.dm (L141-L143)
These 2 spawners open up the crate based on random probability before `
LateInitialize()` is called on the crate and so what happens is the
crate is first opened and then stuff on the turf is sucked in causing an
open but empty crate to appear.

The solution is simple just check again in ` LateInitialize()` if our
crate is still closed before we proceed.That's fixed now too

**Code Refactors**
1. Introduced 2 new signals COMSIG_CLOSET_PRE/POST CLOSE which are the
counter parts for the open signals. hook into them if you ever need to
do stuff before & after closing the closet while return BLOCK_CLOSE for
COMSIG_CLOSET_PRE_CLOSE if you want to block closing the closet for some
reason
2. 2 new procs `before_open()` & `before_close()` which are the counter
parts for `after_open()` & `after_close()`. If you need to write checks
and do actions before opening the closet or before closing the closet
override these procs & not the `open()` & `close()` procs directly

**Secured Craftables** 
This is just a reopened version of #74115 after i accidently merged
another branch without resolving the conflicts first so i'll just
repaste everything here, since crates & closets are related might as
well do all in one

1. **Access secured closets**
   
   - **What about them?**
          **1. Existing System**
If you wanted to create a access secured closet with the existing system
its an 4 step process
            - First construct a normal closet
            - Weld it shut so you can install the airlock electronics
            - Install the electronics [4 seconds]
            - Unweld
This is a 4 step process which takes time & requires a welding tool
         **2. New system**
Combine the 4 steps into 1 by crafting the secure closet directly
                    
![Screenshot
(184)](https://user-images.githubusercontent.com/110812394/235904926-c2ea231c-eba7-45d0-a5af-e0456fdd40bc.png)

    - **Bonus Features**
              **1. Card reader**
The card reader acts as an interface between the airlock electronics &
the player. Usually if you want to change access on a locker you have to
                  - Weld the closet shut
                  - Screw driver out the electronics
                  - Change the settings
                  - Install it back
                  - Unweld
With a card reader there is no need of a welder & screwdriver. You can
change the access of the locker while its operational

        **How do i install the card reader?**
             1. Weld the closet shut
             3. Insert card reader with hand
4. To remove the card reader use crowbar or just deconstruct the whole
closet with a welding tool
             5. Unweld closet

         **How to change its access?**
This will overwrite the settings on your airlock electronics. To do this
1. make sure the closet is first unlocked. This is important so that no
random person who doesn't have access to the closet can change its
access while its locked. It would be like giving the privilege of
changing your current password without first confirming if you know the
old password
2. attack/swipe the closet with your PDA. Make sure your ID card is
inside the PDA for this to work. You can also just use your ID card
directly without a PDA
         3. You will get 3 options to decide the new access levels
           
![Screenshot
(174)](https://user-images.githubusercontent.com/110812394/233454364-d99a2fb6-9f26-4db3-9fac-a10689955484.png)


        They work as follows
- **Personal**: As the name implies only you can access this locker and
no one else. Make sure to have your ID on you at all times cause if you
loose it then no one can open it
- **Departmental**: This copies the access levels of your ID and will
allow people having those exact same access levels. Say you want to
create a closet accessible to only miners. Then have an miner choose
this option and now only miners can open this closet. If the Hop sets
custom access on your ID then only people with those specific access
levels can open this closet
         - **None**: No access, free for all just like a normal closet

**Security:** After you have set the access level it is important to
lock the access panel with a "multi-tool", so no one else can change it.
Unlock the panel again with the "multi-tool" to set the new access type

       **2. Give your own name & description**
To rename the closet or change its description you must first make the
closet access type as personel i.e. make it yours, then use an pen to
complete the job. You cannot change names of departmental or no access
closets because that's vandelism

       **3. Custom Paint Job**
    Use airlock painter. Not intuitive but does the job. 
   
![Screenshot
(181)](https://user-images.githubusercontent.com/110812394/234202905-00946b88-2513-489d-b0a2-d618a72f3e49.png)

      **4. Personal closets**
Round start personal closets can have their access overridden by a new
ID when in it's unlocked state. This is useful if the last person has no
use for the closet & someone else wants to use it.


    - **Why its good for the game?**      
1. Having your own personal closet with your own name & description
gives you more privacy & security for your belongings so people don't
steal your stuff. Personal access is more secure because it requires you
to have the physical ID card you used to set this access and not an ID
which has the same access levels as your previous ID
2. Make secure closets faster without an welding tool & screw driver
3. Bug fix where electronics could be screwed out from round start
secured closets countless times spawning a new airlock electronic each
time
      
2. **Access secured freezers**

    - **What about them?**
The craftable freezer from #73942 has been modified to support secure
access. These can be deconstructed with welders just as before

![Screenshot
(185)](https://user-images.githubusercontent.com/110812394/235905000-ba165feb-4384-4759-b46b-dba77c9e6ba3.png)


    - **How does it work?**
The access stuff works exactly the same as secure closets described
above. You can rename & change description with pen just like the above
described secure closets. No paint job for this. Install card reader
with the same steps described above.

    - **Why it's good for the game?**
1. Make access secured freezers faster without a welder and screwdriver
2. Your own personally named & locked freezer for storing dead bodies is
always a good thing

4. **Access secured suit storage unit**
   - **What about them?**
Suit storage units now require airlock electronics for construction. The
access levels you set on it will be used to decide
       1. If a player can unlock the unit
       2. If the player can open the unit after unlocking
       3. If the player can disinfect whatever is inside
       
      By default all round start suit storage units have free access

   - **Install card reader**
Provides the same functionality as secured closets described above. To
install it
     1. Open its panel with a screw driver
     2. Add a card reader to it with hand
     3. Close the panel
     
     When you deconstruct the machine the card reader pops back out

   - **Why it's good for the game?**
1. Having your own access protected and named suit storage unit so
random people don't steal your mod suits? Who wouldn't want that.?
Provides security for department storage units.
2. If you have the unit locked then you cannot deconstruct the machine
with a crowbar providing additional security
3. Fixes #70552 , random people can't open/unlock the suit storage unit
without access. You can set personal access to make sure only you can
access the unit

## Changelog
🆑
add: Access secured closets. Personal closets can have their access
overwritten by an new id in it's unlocked state
add: Access secured freezers.
add: Access secured suit storage units.
fix: Suit storage unit not having access restrictions.
fix: airlock electronics not properly getting removed after screwing
them out from round start lockers
fix: round spawned open crates run timing when closed
fix: open crates hiding stuff in plain sight
fix: open closets/crates sucking up contents during late initialize
causing them appear empty & open
/🆑

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
2023-05-08 10:42:54 -07:00
Andrew
8f885edff6 Single Tank Guide contraband poster (#75167)
## About The Pull Request

Adds a contraband poster with a guide for high quality single tank
bombs.


![image](https://user-images.githubusercontent.com/3625094/236284514-226b1ea7-d584-4c53-89b6-334c42659ec4.png)

## Why It's Good For The Game

Nice poster for the contraband pool.

## Changelog

🆑
image: added single tank bomb guide contraband poster
/🆑
2023-05-08 10:37:33 -07:00
John Willard
1674f25725 New Medical job: The Coroner (#75065)
## About The Pull Request

HackMD: https://hackmd.io/RE9uRwSYSjCch17-OQ4pjQ?view

Feedback link: https://tgstation13.org/phpBB/viewtopic.php?f=10&t=33972

Adds a Coroner job to the game, they work in the Medical department and
have their office in the Morgue.
I was inspired to make this after I had played my first round on
Paradise and messed around in there. The analyzer is copied from there
(https://github.com/ParadiseSS13/Paradise/pull/20957), and their
jumpsuit is also mostly stolen from it (i just copied the color scheme
onto our own suits).

Coroners can perform autopsies on people to see their stats, like this

![image](https://user-images.githubusercontent.com/53777086/235369225-805d482c-56c0-441c-9ef8-a42d0a0192bc.png)

They have access to Medbay, and on lowpop will get Pharmacy (to make
their own formaldehyde). They also have their own Secure Morgue access
for their office (doubles as a surgery room because they are edgelords
or whatever) and the secure morgue trays.

Secure Morgue trays spawn with their beepers off and is only accessible
by them, the CMO, and HoS. It's used to morgue Antagonists. Security's
own morgue trays have been removed.

The job in action


https://cdn.discordapp.com/attachments/950489581151735849/1102297675669442570/2023-04-30_14-16-06.mp4

### Surgery changes

Autopsies are a Surgery, and I tried to intertwine this with the
Dissection surgery.
Dissections and Autopsies both require the Autopsy scanner to perform
them, however you can only perform one on any given body. Dissections
are for experiments, Autopsies is for the paper of information.

Dissected bodies now also give a ~20% surgery speed boost, this was
added at the request of Fikou as a way to encourage Doctors to let the
Coroner do their job before reviving a body.
I also remember the Medical skill, which allowed Doctors to do surgery
faster on people, and I hope that this can do something like that
WITHOUT adding the potential for exploiting, which led to the skill's
downfall.

### Morgue Improvements

Morgue trays are no longer named with pens, they instead will steal the
name of the last bodybag to be put in them.

Morgue trays are also removed from Brig Medical areas and Robotics, now
they have to bring their corpses to the Morgue where the Coroner can
keep track and ensure records are properly updated.

### Sprite credits

I can't fit it all in the Changelog, so this is who made what

McRamon
- Autopsy scanner

Tattax 
- Table clock sprites and in-hands

CoiledLamb
- Coroner jumpsuits & labcoats (inhand, on sprite, and their respective
alternatives)
- Coroner gloves
- CoronerDrobe (the vending machine)

## Why It's Good For The Game

This is mostly explained in the hackmd, but the goal of this is:

1. Increase the use of the Medical Records console.
2. Add a new and interesting way for Detectives to uncover mysteries.
3. Add a more RP-flavored role in Medical that still has mechanics tied
behind it.

## Changelog

🆑 JohnFulpWillard, sprites by McRamon, tattax, and Lamb
add: The Coroner, a new Medical role revolving around dead corpses and
autopsies.
add: The Coroner's Autopsy Scanner, used for discovering the cause for
someone's death, listing their wounds, the causes of them, their
reagents, and diseases (including stealth ones!)
qol: Morgue Trays are now named after the bodybags inside of them.
balance: The morgue now has 'Secure' morgue trays which by default don't
beep.
balance: Security Medical area and Robotics no longer have their own
morgue trays.
balance: Dissected bodies now have faster surgery speed. Autopsies also
count as dissections, however they're mutually exclusive.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-05-05 21:31:28 -04:00
MrMelbert
aacc85964a Adds a unit test that all roundstart spawnable jobs have a landmark to spawn at (#74995)
## About The Pull Request


https://github.com/tgstation/tgstation/pull/74985#issuecomment-1523773626

Tests that all jobs that have `spawn_position > 0` at roundstart have a
location to spawn at.

Also changes the failure message for
`get_default_roundstart_spawn_point` to send to `log_mapping` rather
than `log_world`, as it is a map error and log world doesn't really help
anyone. This would've been sufficient for the existing unit test
`log_mapping`, but that unit test expects that the log has an areacoord
supplied, which we can't really do, given we're reporting a _lack_ of
something.

## Why It's Good For The Game

Stops maps from regressing and dumping people on the latejoin shuttle
roundstart.

## Changelog

~~Not necessary unless I find a map which forgot a landmark~~

🆑 Melbert
fix: Tramstation Robotics and RD now spawn in their departments
roundstart
fix: Birdboat detective now spawns in their office
/🆑
2023-05-04 14:03:49 -06:00
san7890
1b5c0489a4 ex_act() will work on basic mobs again (lol) + Unit Test (#74953)
basically ex_act's implementation on basic mobs would call parent and
then react to it's value, this is presumably to do the first check about
space vine mutations and whatever. the problem is that the `/mob/living`
implementation would itself also call parent, and that would always
return null because `/atom/proc/ex_act` doesn't have a set return value.
So, this simply would _always_ early return, with ex_act presumably
*never* working on basic mobs for at least four months now.

I decided to then change up the return values for pretty much all
implementations of `ex_act()` since there was no rhyme or reason to
returning null/FALSE/TRUE, and documenting why it's like that.

Just to make sure I wasn't breaking anything doing this (at least on
base implementations), I wrote a unit test for all of the three major
physical types in game (objs, mobs, turfs) because i am a paranoid
fuckar. we should be good to go now though.
## Why It's Good For The Game

i noticed this because placing c4's on sargeant araneus wouldn't
actually damage it whatsoever. now it actually does the stated 30
damage, but araneus has like 250 health so it doesn't actually matter in
the long run. whatever at least it does the damn 30 now.

also adds a unit test for this specific case as well as a range of other
cases to ensure this stuff doesn't silently break in this way anymore
2023-05-03 14:56:46 +00:00
ArcaneMusic
f2fd69a49a Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. (#75052)
Ladies, Gentlemen, Gamers. You're probably wondering why I've called you
all here (through the automatic reviewer request system). So, mineral
balance! Mineral balance is less a balance and more of a nervous white
dude juggling spinning plates on a high-wire on his first day. The fact
it hasn't failed after going on this long is a miracle in and of itself.

This PR does not change mineral balance. What this does is moves over
every individual cost, both in crafting recipes attached to an object
over to a define based system. We have 3 defines:

`sheet_material_amount=2000` . Stock standard mineral sheet. This being
our central mineral unit, this is used for all costs 2000+.
`half_sheet_material_amount=1000` . Same as above, but using iron rods
as our inbetween for costs of 1000-1999.
`small_material_amount=100` . This hits 1-999. This covers... a
startlingly large amount of the codebase. It's feast or famine out here
in terms of mineral costs as a result, items are either sheets upon
sheets, or some fraction of small mats.

Shout out to riot darts for being the worst material cost in the game. I
will not elaborate.

Regardless, this has no functional change, but it sets the groundwork
for making future changes to material costs much, MUCH easier, and moves
over to a single, standardized set of units to help enforce coding
standards on new items, and will bring up lots of uncomfortable balance
questions down the line.

For now though, this serves as some rough boundaries on how items costs
are related, and will make adjusting these values easier going forward.

Except for foam darts.

I did round up foam darts.

Adjusting mineral balance on the macro scale will be as simple as
changing the aforementioned mineral defines, where the alternative is a
rats nest of magic number defines. ~~No seriously, 11.25 iron for a foam
dart are you kidding me what is the POINT WHY NOT JUST MAKE IT 11~~

Items individual numbers have not been adjusted yet, but we can
standardize how the conversation can be held and actually GET SOMEWHERE
on material balance as opposed to throwing our hands up or ignoring it
for another 10 years.
2023-05-03 14:44:51 +00:00
san7890
fa0225b05c Converts Spiderlings from Structures to Basic Mobs (#75001)
If I could've made this more atomic, I would have in a heartbeat, trust
me.

## About The Pull Request

Hey there. People were mocking us for having spiderlings still be a
subtype of `/obj/structure`. I decided to take a lot of time to fix
that. A lot of behavior it was implementing was just pseudo-mob stuff,
so it was actually easier than it looked for the raw conversion. A lot
of the footwork on spider stuff in the basic framework was already done
previously by Jacquerel, so that was pretty nice.

However, there are two new things that weren't introduced in the code
that had to be put in.

A) A component to handle growth and differentiation into a mob. This may
have already existed, no clue. If it does (and it's NOT
evolutionary_leap), let me know.
B) AI Behavior to handle seeking out a vent, entering a vent, and then
exiting out of a different vent. I may have gone a bit wacky on the
code, but it certainly works as expected (spiderling goes in one vent,
exits the other). Let me know if you can think of a way it can be better
optimized, but it was deliberately written to be very failsafey in case
shit goes yonkers.

One fundamental difference between structure spiderlings and basic mob
spiderlings (beyond the AI and not just a random prob() check for
movement) is the fact that they had vent movement coded in... but we
_really_ don't need stuff like that for our intents and purposes. If the
range turns out to be too OP in the current framework, we can always
change it up a bit, but also there's a _lot_ of vents we can end up in
the station (my testing had one spiderling end up in the AI sat to get
obliterated).
## Why It's Good For The Game

Spiderlings aren't structures! They behave like a mob should! Players
can possess spiderlings! They work seamlessly with differentiating into
a giant spider! Better AI! More room for people to add into this very
under-utilized buggers!
## Changelog
🆑
refactor: Spiderlings are now basic mobs, report any complete
weirdness/deviation from known behavior. They should be a lot more
intelligent now though.
add: AI Spiderlings are super fragile, but they're also super fast,
especially when they get into a vent. Once they're in circulation, they
could end up everywhere! Maybe in the armory, maybe in a locked closet
in maintenance. Be sure to be vigilant and splat them whenever you can
to save the station from a whole lotta heartache!
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-04-30 14:17:02 +01:00
ArcaneMusic
a49af57567 March into Mapness - Moon Base 19 (#74067) 2023-04-24 16:31:53 -07:00
ChungusGamer666
b093b12e03 Burning and acid components fixes and improvements (#74803)
## About The Pull Request

Generally cleans up code on both components.
Moves burn proc back to /obj level, I'm not sure why I moved it to /atom
level, it was unnecessary.
Acid component generalized so it can be used on any atom that uses
atom_integrity.
Fixes a bug where objects that stopped burning didn't update their burn
overlay properly due to bad removal logic and leftover code.
Standardizes examine messages on burning items by just slapping an
examine signal registration on the component.
Adds fire particles to items thanks to Lemon's PR:
https://github.com/tgstation/tgstation/pull/74524

## Why It's Good For The Game

Particles look cool

![image](https://user-images.githubusercontent.com/82850673/232605615-6e3bc804-bc68-4f09-8615-5e5946acbc10.png)

![image](https://user-images.githubusercontent.com/82850673/232664951-e0474331-495f-4717-8b0f-a647aedc4d9f.png)

Bugfixes are good
Code improvements are good

## Changelog

🆑
add: Burning items now get (small) smoke particles. Sick.
fix: Burning objects now clear their burning overlay properly.
qol: Examining burning objects will always tell you that they are
burning.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-04-23 17:50:58 -06:00
Bloop
b8f03c5e9a Stops the base random poster spawner from spawning traitor posters (#74868)
## About The Pull Request

When the syndicate posters were added, they were intended to be a
traitor objective. To quote from the original PR:

>"If you start seeing red posters then you know there are traitors
somewhere."

As an unintended consequence of how poster randomization works however
they are able to spawn from the base random poster mapping object,
defeating the purpose. They should only be able to be placed by actual
player traitors (or a deliberate mapping decision).

This PR just removes them from the pool of posters to select from when
using `/obj/structure/sign/poster/random`. You can still use
`/obj/structure/sign/poster/traitor/random` to spawn random traitor
posters both when mapping or ingame via commands.

This will close https://github.com/Skyrat-SS13/Skyrat-tg/issues/17956.

## Why It's Good For The Game

More control over mapping poster placement.

## Changelog

🆑
fix: traitor objective posters will no longer be able to spawn from
general random poster spawners.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-04-20 20:02:19 -06:00
tattle
77aebb4c29 Audio File Cleanup (#74863)
## About The Pull Request
Removes a bunch of sound files that we don't use and moves some sound
files into better locations. I'm hoping to get an archive repo for
sounds going, much like the
[map_depot](https://github.com/tgstation/map_depot) and
[SS13-sprites](https://github.com/tgstation/SS13-sprites).

EDIT: The old sound files are being moved here:
https://github.com/tgstation/SS13-sounds

Also increased the volume of the clownana rustle sound and clipped off
some dead air from shockwave_explosion

## Why It's Good For The Game
Removes a total of 1.95MB worth of unused sound files from the codebase.

## Changelog
🆑 Tattle
soundadd: increased the volume of the clownana rustle
/🆑

---------

Co-authored-by: tattle <article.disaster@gmail.com>
2023-04-20 17:22:08 -06:00
Zonespace
fa644f7aee 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>
2023-04-16 16:03:19 -06:00
LemonInTheDark
9219ca33f9 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
2023-04-16 10:12:14 +02:00
ArcaneMusic
d0441464fb 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>
2023-04-15 21:42:27 -06:00
ChungusGamer666
a0e368930f 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>
2023-04-13 22:19:25 -06:00
Cheshify
b1716732b0 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>
2023-04-14 06:59:00 +12:00
oranges
4c48966ff8 Renames delta time to be a more obvious name (#74654)
This tracks the seconds per tick of a subsystem, however note that it is
not completely accurate, as subsystems can be delayed, however it's
useful to have this number as a multiplier or ratio, so that if in
future someone changes the subsystem wait time code correctly adjusts
how fast it applies effects

regexes used

git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i
's/DT_PROB/SPT_PROB/g'
git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i
's/delta_time/seconds_per_tick/g'
2023-04-11 21:31:07 -07:00
Jolly
9b401a87be [MDB IGNORE] UpdatePaths to convert directional pane windows to their proper subtypes, also creates the /south spawner for consistency (#74517)
## About The Pull Request
Title.

## Why It's Good For The Game
1. This nukes a lot of silly var edits, and cleans up maps
2. The south spawner *isn't* really needed, but having it is nice for
consistency and clarity
3. Sometime ago I forget which map but one of them had var edited
directional subtypes and that made me cry

## Changelog

🆑 Jolly
fix: Maps internally had the code for the "directional" windows altered
a bit. If you see stacked window panes or things look incorrectly,
please file a bug report as that isn't intentional!!
/🆑
2023-04-10 00:20:04 +00:00