Commit Graph

42277 Commits

Author SHA1 Message Date
SkyratBot
1f3e1c3753 [MIRROR] Fix APC cell removal runtime [MDB IGNORE] (#24427)
* Fix APC cell removal runtime (#79077)

## About The Pull Request

Someone implemented `Exited` but didn't remove this code, it's not
necessary and all it does is runtime now.

* Fix APC cell removal runtime

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-10-19 03:41:22 -04:00
SkyratBot
a26912050d [MIRROR] Heretic summon name fixes [MDB IGNORE] (#24432)
* Heretic summon name fixes (#79055)

## About The Pull Request

Fixes #79049.

The ghost poll for heretic summons used the `real_name` field to display
the mob's name. However, for some reason, a couple of the heretic
summons have jokey nicknames as their real names ("Ashy" for ash
walkers, "Rusty" for rust walkers). I've opted to take the simple option
of making the ghost text just use the `name` field instead - it's used
for the admin logs around summoning, so it should be fine for the poll
too.

Also, I've capitalized "Fire Shark" and set its real name to also be
"Fire Shark". For consistency.

Finally, I've made heretic summon names not proper nouns, so examining
them will display "That's a Rust Walker" rather than "That's Rust
Walker". The Lord of the Night did not receive this treatment due to
being a unique thing.
## Why It's Good For The Game

It's good when ghosts know what they're actually signing up to be.

Most heretic summons aren't unique entities, so it makes sense for them
to not be proper nouns.
## Changelog
🆑
fix: Heretic summons should now display the correct name when polling
ghosts to play as them.
/🆑

* Heretic summon name fixes

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
2023-10-19 03:36:16 -04:00
SkyratBot
55901e2469 [MIRROR] Clicking a bitrunning pod orbits its avatar [MDB IGNORE] (#24417)
* Clicking a bitrunning pod orbits its avatar (#79053)

* Clicking a bitrunning pod orbits its avatar

---------

Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
2023-10-18 21:30:31 -04:00
SkyratBot
1dd5011776 [MIRROR] Adds pathmaps, refactors pathfinding a bit [MDB IGNORE] (#24414)
* Adds pathmaps, refactors pathfinding a bit (#78684)

## About The Pull Request

Implements /datum/pathfind/sssp, which generates /datum/path_map

/datum/path_maps allow us to very efficently generate paths to any turf
they contain from their central point.

We're effectively running the single source shortest paths algorithm.
We expand from the center turf, adding turfs as they're found, and then
processing them in order of addition.
As we go, we remember what turf "found" us first. Reversing this chain
gives us the shortest possible path from the center turf to any turf in
its range (or the inverse).

This isn't all that useful on its own, outside of a few niche cases
(Like if we wanted to get the farthest reachable turf from the center)
but if we could reuse the map more then once, we'd be able to swarm
to/from a point very easily.

Reuse is a bit troublesome, reqiures a timeout system and a way to
compare different movables trying to get paths.
I've implemented it tho. I've refactored CanAStarPass to take a datum,
/datum/can_pass_info. This is built from a movable and a list of access,
and copies all the properties that would impact pathfinding over onto
itself.

There is one case where we don't do this, pathing over openspace
requires checking if we'd fall through the openspace, and the proc for
that takes an atom.
So instead we use the weakref to the owner that we hold onto, and hold
copies of all the values that would impact the check on the datum.

When someone requests a swarmed path their pass info is compared with
the pass info of all other path_maps centered on their target turf. If
it matches and their requested timeout isn't too short, we just reuse
the map.

Timeout is a tricky thing because the longer a map exists the more out
of date it gets.
I've added a few age defines that let you modulate your level of risk
here. We default to only allowing maps that are currently
being generated, or finished generating in our tick.
Hopefully this prevents falling into trouble, but consumers will need to
allow "failed" movements.

As a part of this datumized pass info, I've refactored pathfinding to
use access lists, rather then id cards directly. This also avoids some
dumbass harddel oppertunities, and prevents an idcard from changing mid
path.

Did a few things to the zPass procs, they took args that they did NOT
need, and I thought it'd be better to yeet em.

If you'd all like I could undo the caching/can_pass_info stuff if you'd
all like. I think it's useful generally because it avoids stuff changing
mid pathfind attempt, but if it's too clunky I could nuke it.

Oh also I added optional args to jps that constricts how it handles
diagonals. I've used this to fix bot paths.

## Why It's Good For The Game

Much of this is redundant currently. I'm adding it because it could have
saved hugglebippers, and because I get the feeling it'll be useful for
"grouping" mobs like bees and such.
We're doing more basic mob work currently and I want to provide extra
tools for that work.

https://github.com/tgstation/tgstation/assets/58055496/66aca1f9-c6e7-4173-9c38-c40516d6d853

## Changelog
🆑
add: Adds swarmed pathfinding, trading accuracy for potential
optimization of used correctly
fix: Bots will no longer take diagonal paths, preventing weirdo looking
path visuals
refactor: Refactored bits of pathfinding code, hopefully easier to add
new pathfinding strategies now
/🆑

* Adds pathmaps, refactors pathfinding a bit

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-10-18 03:31:21 -04:00
SkyratBot
17a7b8f2fb [MIRROR] Starlight Control (Aurora works now, space gas doesn't touch starlight, narsie ending effects) [MDB IGNORE] (#24406)
* Starlight Control (Aurora works now, space gas doesn't touch starlight, narsie ending effects) (#78877)

## About The Pull Request

[Implements a setter for starlight
variables](af34f06b41)

I want to start to modify starlight more, and that means I need a way to
hook into everything that uses it and update it, so we can modify it on
the fly.

This does that, alongside removing space overlays from nearspace (too
many false positives) and making the aurora modify all turfs projecting
starlight, rather then all turfs in an area.

Do still need to figure out handling for the starlight color usage in
turf underlays tho (I gave up, we just keep it static. I'll fix it
someday but the render_relay strategy just doesn't work with its masking
setup)

[Reworks how starlight overlays
work](9da4bc38e2)

Instead of setting color on the overlays directly, we instead store an
object with our current settings in every mob's screen, and
render_target it down onto our overlays.

This lets us update overlay colors VERY trivially. Just need to set
color on the overlay var. Makes modifying starlight a lot cheaper.

It doesn't work on area overlays, because suffering, and it MIGHT induce
extra cost on clients. if it does we can do something about that, we'll
play it by ear

[Removes parallax starlight
coloring.](5f701a1b13)

I'm sorta iffy on the color, the effect can be real oppressive in some
cases, and I'd like to use starlight color for more events in world, and
having it vary can make that looking nice hard.

[Adds some visual effects to narsie being
summoned](a423cfcb2b)

As the rune drawing progresses space (starlight and parallax) go from
normal to greyscale. Then, right about when narsie shows up, starlight
becomes vibrant red.

It's a nice effect. I wanna do more shit like this, I think it'll
improve vibes significantly.
## Why It's Good For The Game

Can't embed it because of github's upload limit, can show a
[link](https://cdn.discordapp.com/attachments/458452245256601615/1160821856358645860/2023-10-08_22-31-22.mp4?ex=65360e99&is=65239999&hm=680e33e4e0026b89e132afc50c04a648a24f869eb662f274a381a5de5c5a36f2&)
for the narsie stuff

Here's
[one](https://cdn.discordapp.com/attachments/326831214667235328/1160813747196141568/2023-10-08_22-34-10.mp4?ex=6536070c&is=6523920c&hm=f8d571d1013da89887f49f3fec99f632251eeeac83085aa7dde97009aee3922f&)
for the aurora too.

This gives us more pretty starlight shit, and the ABILITY to do more
pretty starlight shit. I'm pretty jazzed, and I hope people use this
proc more (keeping in mind that it's pretty hard on the lighting system,
and needs significant delay between changes)
## Changelog

🆑
add: Narsie summoning has had some effects added to space and starlight
del: Removes the link between spacegas color and starlight. It was a
slight bit too vibrant and I think impacted the vibe too wildly to be
incidental.
fix: The aurora event actually... works now. Space lights up and all
that
/🆑

* Starlight Control (Aurora works now, space gas doesn't touch starlight, narsie ending effects)

* Update space.dm

* Update shuttles.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-18 01:23:18 -04:00
SkyratBot
e197b087dd [MIRROR] Added more slapcraft recipes, improved its component, fixed base cowboy hat type [MDB IGNORE] (#24410)
* Added more slapcraft recipes, improved its component, fixed base cowboy hat type (#78854)

## About The Pull Request

Added slapcraft recipes for: Pillow suits, pillow helmets, bone and
sinew tailoring/weaponry, pipeguns, ghetto jetpacks, and pneumatic
cannons.

The base type of cowboy hats no longer looks and is named like a bounty
hunter hat, clarifying the recipe for the heroic laser musket.

Fixed an issue where if a slapcraft recipe required more than one
instance of its 'primary' slapcrafting item, it wouldn't show the
additional instance when examining its recipes.

## Why It's Good For The Game

Idk lol

## Changelog

🆑
qol: Added slapcraft recipes for: Pillow suits, pillow helmets, bone and
sinew tailoring/weaponry, pipeguns, ghetto jetpacks, and pneumatic
cannons.
code: The base type of cowboy hats no longer looks and is named like a
bounty hunter hat, clarifying the recipe for the heroic laser musket.
They need cowboy hats not bounty hats.
fix: Fixed an issue where if a slapcraft recipe required more than one
instance of its 'primary' slapcrafting item, it wouldn't show the
additional instance when examining its recipes.
/🆑

* Added more slapcraft recipes, improved its component, fixed base cowboy hat type

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-10-18 00:36:42 -04:00
SkyratBot
ac2a608f8b [MIRROR] Fixes a fishing balloon alert runtime [MDB IGNORE] (#24411)
* Fixes a fishing balloon alert runtime (#79050)

## About The Pull Request

![S8wPj0cMzd](https://github.com/tgstation/tgstation/assets/13398309/f06483c1-87c6-47a7-b907-043941bb2e53)

What it says on the tin. Runtime shown above, it was missing the user
arg.

## Why It's Good For The Game

Bugfix

## Changelog

🆑
fix: "line snapped" and "rod dropped" balloon alerts will now display
when they are supposed to while fishing
/🆑

* Fixes a fishing balloon alert runtime

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-18 00:36:24 -04:00
SkyratBot
6e677a2bbd [MIRROR] Invisibility refactor [MDB IGNORE] (#24405)
* Invisibility refactor (#78908)

This adds a tracker for sources of invisibility and a priority system. I
needed this for another thing so I'm doing this first since it touches a
lot of code. As for the bugs fixed in the changelog, it's only what I
noticed while going through everything and there's likely a few more
things fixed with this. This should be testmerged for a while, I'll
bring this out of draft when it feels safe.

🆑
admin: Invisimin can now be used on mobs that are already invisible,
whether through temporary or permanent effects.
fix: Monkeyize/Humanize mob transformations no longer permanently reveal
invisible mobs if they had effects making them invisible otherwise.
fix: Objects with the undertile element that have been made invisible
through other means are no longer revealed by being uncovered.
/🆑

* Invisibility refactor

---------

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
2023-10-18 00:36:09 -04:00
SkyratBot
8289cb6c0b [MIRROR] Revenants can use spirit boards [MDB IGNORE] (#24403)
* Revenants can use spirit boards (#79029)

## About The Pull Request

Allows Revenants to use Ouija boards.
Cleans up some code of Ouija boards in general.
Default Ouija boards now have some more options to select.
Admins can now VV Ouija board options.
Adds a 1% chance for a Ouija board to be called Luigi board.

## Why It's Good For The Game

Revenants being excluded from spirit board fun is kinda messed up, even
though they're telepaths.

## Changelog

🆑 Melbert
add: Revenants can now use Ouija Boards
add: Ouija Boards now have more options to select from by default (and
admins can VV it to even more options)
fix: Blind people are now worse at using Ouija Boards
/🆑

* Revenants can use spirit boards

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-10-17 16:35:18 -07:00
SkyratBot
27f070aafd [MIRROR] Fixes CI failure from AttackingTarget not passing the attacked_target in its args [MDB IGNORE] (#24402)
* Fixes CI failure from AttackingTarget not passing the attacked_target in its args (#79037)

## About The Pull Request

CI started spamming with runtimes.

![image](https://github.com/tgstation/tgstation/assets/13398309/507f7e1f-e6a3-4e3e-b0bd-9539929a819d)

`AttackingTarget()` wasn't passing the `target` as an arg. Fixes that.
Also added the arg in a bunch of its overrides because they were not
there. I know we're phasing out simple mobs but in the meantime broken
things bad.

## Why It's Good For The Game

Fixes bug

## Changelog

🆑
fix: fixed runtime caused by simple mobs AttackingTarget() missing an
arg
/🆑

* Fixes CI failure from AttackingTarget not passing the attacked_target in its args

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-17 16:34:58 -07:00
SkyratBot
41b466f8a9 [MIRROR] [NO GBP] fish analyzers can now be actually used for experiments. [MDB IGNORE] (#24408)
* [NO GBP] fish analyzers can now be actually used for experiments. (#79030)

## About The Pull Request
I've forgot that, for some reasons, both experiments and experiment
handlers have an experiment(or) whitelist var.

## Why It's Good For The Game
This will fix #78921

## Changelog

🆑
fix: Fish analyzers can now be actually used for experiments.
/🆑

* [NO GBP] fish analyzers can now be actually used for experiments.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-10-17 16:34:22 -07:00
SkyratBot
8b99727a69 [MIRROR] Distillation fixed [MDB IGNORE] (#24409)
* Distillation fixed (#79045)

## About The Pull Request

The recent changes to the food defines have broken the quality scaling
for the fruit wine. This PR fixes the regression.

## Why It's Good For The Game

Bug fix

## Changelog

🆑
fix: Distilled drink quality is fixed - can't give a mood debuff anymore
/🆑

* Distillation fixed

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-10-17 16:33:35 -07:00
SkyratBot
7cf7be4b7b [MIRROR] Tram v6/Transport Subsystem [MDB IGNORE] (#24399)
* Tram v6/Transport Subsystem

* Update icon_smoothing.dm

* Update utility.dm

* defines/icon

* Update airlock.dm

* Update door.dm

* Update airlock.dm

* Update airlock.dm

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-10-17 15:16:46 -07:00
SkyratBot
557d577cc3 [MIRROR] Fixes being able to punch yourself [MDB IGNORE] (#24401)
* Fixes being able to punch yourself (#79033)

## About The Pull Request

Fixes #79031

Fixes #79042

I forgot some logic here when making the human override.
Not the cleanest way to do it but it'll suffice.

## Changelog

🆑 Melbert
fix: You can punch yourself again
/🆑

* Fixes being able to punch yourself

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-10-17 16:07:27 -04:00
SkyratBot
b3e04ab8d2 [MIRROR] Fixes the ghost sheet's supports_variation_flags [MDB IGNORE] (#24390)
* Fixes the ghost sheet's supports_variation_flags (#78999)

## About The Pull Request

Tin.

## Why It's Good For The Game

Fixes a small oversight

## Changelog

🆑
fix: ghost sheets will now have the correct flags for digi sprites
/🆑

* Fixes the ghost sheet's supports_variation_flags

* No longer need this modular override now that it's upstreamed

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-16 21:42:24 -04:00
SkyratBot
88d792242f [MIRROR] adds your mother [MDB IGNORE] (#24391)
* adds your mother (#78998)

## About The Pull Request

adds a hallucination of the same rarity as a xeno leaping at you

https://github.com/tgstation/tgstation/assets/70376633/358dbf59-5add-40e6-ac53-693a971b2d61

your mother will have the same species as you

## Why It's Good For The Game

https://cddawiki.chezzo.com/cdda_wiki/index.php/Your_mother

## Changelog
🆑
add: added a new hallucination, your mother
/🆑

* adds your mother

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2023-10-16 21:42:03 -04:00
SkyratBot
1eef9b7c03 [MIRROR] Observers can now play CTF again. [MDB IGNORE] (#24387)
* Observers can now play CTF again.  (#79000)

## About The Pull Request

#78957 accidently made it so CTF could only be played by people with
mobs to return to after dying. I've made it so those who don't have mobs
to return to (e.g. roundstart observers) can play CTF again.
## Why It's Good For The Game

Everyone should be allowed to play CTF without needing to engage with
the space roleplay game we've strapped on.
## Changelog
🆑
fix: Players without bodies to return to can play CTF again.
/🆑

* Observers can now play CTF again.

---------

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
2023-10-16 21:41:31 -04:00
SkyratBot
fa31acc3ec [MIRROR] Fixes a runtime with AI targeting code, refactors faction checking to be at the atom/movable level [MDB IGNORE] (#24386)
* Fixes a runtime with AI targeting code, refactors faction checking to be at the atom/movable level (#78803)

## About The Pull Request

Saw this in CI.

![firefox_lCYnPMJIqm](https://github.com/tgstation/tgstation/assets/13398309/8ef309df-09b6-4096-b6aa-340b59f7446b)

~~Quick fix for it--because turrets are not mobs trying to call this
proc on them will runtime. So let's give them their own implementation
of the proc.~~ Just kidding, let's refactor faction checking entirely

## Why It's Good For The Game

Fixes an issue with basic mob AI targeting and turrets.

## Changelog

🆑
fix: basic mobs will no longer runtime when trying to check the faction
of a porta turret
refactor: faction checking is now done at the atom/movable level
/🆑

---------

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

* Fixes a runtime with AI targeting code, refactors faction checking to be at the atom/movable level

* Modular updates

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-10-16 21:41:24 -04:00
SkyratBot
34a9897b5d [MIRROR] reload savefile on pref assosciation [MDB IGNORE] (#24382)
* reload savefile on pref assosciation (#78984)

## About The Pull Request

Tells the preferences datum to reload the savefile when we associate to
an already existing one
## Why It's Good For The Game

This trolled me locally for a good hour wondering "why aren't my prefs
updating when I swap out the file"
## Changelog

* reload savefile on pref assosciation

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-10-16 17:35:55 -04:00
SkyratBot
ecea293961 [MIRROR] Fixes playing card hands displaying the wrong card at the top when there's more than five cards in the hand [MDB IGNORE] (#24377)
* Fixes playing card hands displaying the wrong card at the top when there's more than five cards in the hand (#78954)

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

It wasn't working right, because BYOND indexes start at 1 and not 0, so
when you had 6 cards, `cards.len - 5 = 1`, which is not what it was
meant to do.

## Why It's Good For The Game
Now hands of card can be used much more effectively for stuff like
discard piles where the top card is important.

(example of what placing down a full, unshuffled deck looks like. It
ends on a King, and as you can see, it displays the King now)

![image](https://github.com/tgstation/tgstation/assets/58045821/37da8d75-708a-48b6-a853-b5053632b4ca)

## Changelog

🆑 GoldenAlpharex
fix: Hands of cards will now properly display the last card added to the
hand all the time, even when there's more than five cards in that hand.
/🆑

* Fixes playing card hands displaying the wrong card at the top when there's more than five cards in the hand

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-10-16 17:35:05 -04:00
SkyratBot
22943b9449 [MIRROR] Refactors UnarmedAttack so we don't have like 4 Unarmed Attack signals, kills two more snowflake species procs [MDB IGNORE] (#24356)
* Refactors `UnarmedAttack` so we don't have like 4 Unarmed Attack signals, kills two more snowflake species procs

* Update chameleon.dm

* Update _species.dm

* Modular

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-16 12:37:49 -04:00
SkyratBot
772c48d05d [MIRROR] Microwave hotfixes [NO GBP] [MDB IGNORE] (#24368)
* Microwave hotfixes [NO GBP] (#78970)

## About The Pull Request

Microwave hotfixes for https://github.com/tgstation/tgstation/pull/78717

- Microwave will no longer get stuck turned on if the PDA has no cell.
- A message is now generated when a silicon changes the microwave mode.
- Eliminates a 2nd pass through the ingredient loop by checking for PDA
alongside edible food, sends a notification if it's going to explode.
- Show a context hint for both anchored and unanchored state

## Changelog

🆑 LT3
fix: Microwave will no longer get stuck turned on if a PDA has no cell
fix: Silicons can no longer silently change the microwave between cook
and charge
/🆑

* Microwave hotfixes [NO GBP]

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-10-16 08:45:59 -07:00
SkyratBot
a924d29501 [MIRROR] Fixes a bug with the plasma flower core MODsuit that would cause a butterfly murder scene wherever there were turrets [MDB IGNORE] (#24367)
* Fixes a bug with the plasma flower core MODsuit that would cause a butterfly murder scene wherever there were turrets (#78978)

## About The Pull Request

Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/24306

The butterfly effect.

The "MOD plasma flower core" spawns temporary butterflies using a
`/datum/component/spawner`, which is nice and cute. Until you start
getting shot at by turrets because spawners assign the faction of the
mob to `MOB_MINING` by default.

Fixes that.

## Why It's Good For The Game

No more being murdered by your butterflies.

![dreamseeker_bxeIGl84sS](https://github.com/tgstation/tgstation/assets/13398309/96690e19-c541-4209-85a0-3f3f667e5f2b)

## Changelog

🆑
fix: Fixes a bug with the plasma flower core MODsuit that would cause a
butterfly murder scene wherever there were turrets
/🆑

* Fixes a bug with the plasma flower core MODsuit that would cause a butterfly murder scene wherever there were turrets

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-16 11:36:04 -04:00
SkyratBot
85a1aeac0a [MIRROR] Fixes tgui say flash on load [MDB IGNORE] (#24361)
* Fixes tgui say flash on load (#78879)

## About The Pull Request
Hides the TGUI say window from popping up briefly during load
## Why It's Good For The Game
Just annoying for it to "jump scare" players
Fixes #75716
## Changelog
🆑
fix: TGUI Say should no longer flash during initialization
/🆑

* Fixes tgui say flash on load

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2023-10-16 11:34:03 -04:00
SkyratBot
f9281dbbaf [MIRROR] Universal Scanners Now Make a Noise When Scanning [MDB IGNORE] (#24363)
* Universal Scanners Now Make a Noise When Scanning (#78911)

## About The Pull Request
The universal scanner will now make a sound when scanning any item of
value. Items that have no value do not make any noise when scanned. The
lack of a sound for no-value items is intentional, as I couldn't find a
good middle-ground noise that sounded neutral for items with no value.

## Why It's Good For The Game

More audio feedback for scanning stuff with an export scanner. Nearly
all item interactions make a noise of some sort.

## Demonstration

https://github.com/tgstation/tgstation/assets/45489195/f1bf9538-7cf6-44cc-9def-2c7c5af676b9

Here you can see (from left to right of the viewer) the sounds that play
for positive, no value, and negative value items scanned with an export
scanner. The scanner making the same noise for positive or negative
valued items is intentional as
https://github.com/tgstation/tgstation/pull/78923 will be fixing that.

## Changelog

🆑
sound: added sounds for scanning valued items with an export scanner
/🆑

* Universal Scanners Now Make a Noise When Scanning

---------

Co-authored-by: RedBaronFlyer <45489195+RedBaronFlyer@users.noreply.github.com>
2023-10-16 11:33:52 -04:00
SkyratBot
2f90410e7a [MIRROR] Fixes announcements font scaling [MDB IGNORE] (#24357)
* Fixes announcements font scaling (#78995)

## About The Pull Request

Creates CSS spans for priority announcement and minor announcement so
they scale properly with the player's chosen font size

![image](https://github.com/tgstation/tgstation/assets/83487515/0706891d-05e9-4f00-b24f-ebf37efdd18d)

## Why It's Good For The Game

Fixes https://github.com/tgstation/tgstation/issues/78875

## Changelog

🆑 LT3
fix: Fixed font scaling for announcements
/🆑

* Fixes announcements font scaling

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-10-15 23:05:15 -07:00
SkyratBot
2767693434 [MIRROR] Makes fuel tanks explode again [MDB IGNORE] (#24358)
* Makes fuel tanks explode again (#78976)

## About The Pull Request

Fixes fuel tanks so they explode again. Very weird bug which I will walk
through below using the old code for reference.

```
/obj/structure/reagent_dispensers/proc/boom()
	if(QDELETED(src))
		return // little bit of sanity sauce before we wreck ourselves somehow
	var/datum/reagent/fuel/volatiles = reagents.has_reagent(/datum/reagent/fuel)
	var/fuel_amt = 0
	if(istype(volatiles) && volatiles.volume >= 25)
		fuel_amt = volatiles.volume
		reagents.del_reagent(/datum/reagent/fuel) // not actually used for the explosion
	if(reagents.total_volume)
		if(!fuel_amt)
			visible_message(span_danger("\The [src] ruptures!"))
		// Leave it up to future terrorists to figure out the best way to mix reagents with fuel for a useful boom here
		chem_splash(loc, null, 2 + (reagents.total_volume + fuel_amt) / 1000, list(reagents), extra_heat=(fuel_amt / 50),adminlog=(fuel_amt<25))

	if(fuel_amt) // with that done, actually explode
		visible_message(span_danger("\The [src] explodes!"))
		// old code for reference:
		// standard fuel tank = 1000 units = heavy_impact_range = 1, light_impact_range = 5, flame_range = 5
		// big fuel tank = 5000 units = devastation_range = 1, heavy_impact_range = 2, light_impact_range = 7, flame_range = 12
		// It did not account for how much fuel was actually in the tank at all, just the size of the tank.
		// I encourage others to better scale these numbers in the future.
		// As it stands this is a minor nerf in exchange for an easy bombing technique working that has been broken for a while.
		switch(volatiles.volume)
			if(25 to 150)
				explosion(src, light_impact_range = 1, flame_range = 2)
			if(150 to 300)
				explosion(src, light_impact_range = 2, flame_range = 3)
			if(300 to 750)
				explosion(src, heavy_impact_range = 1, light_impact_range = 3, flame_range = 5)
			if(750 to 1500)
				explosion(src, heavy_impact_range = 1, light_impact_range = 4, flame_range = 6)
			if(1500 to INFINITY)
				explosion(src, devastation_range = 1, heavy_impact_range = 2, light_impact_range = 6, flame_range = 8)
	qdel(src)
```

The fuel in the tank is converted into `volatiles`
```
var/datum/reagent/fuel/volatiles = reagents.has_reagent(/datum/reagent/fuel)
```

The `fuel_amt` var is zeroed out, we will recalculate this below
```
var/fuel_amt = 0
```

If there's enough for the tank to explode, this is converted back into
`fuel_amt` and the actual reagent is deleted.
```
if(istype(volatiles) && volatiles.volume >= 25)
		fuel_amt = volatiles.volume
		reagents.del_reagent(/datum/reagent/fuel) // not actually used for the explosion
```

If there was fuel in the tank, select the appropriate explosion size
depending on the volume of volatiles. As of recently this
`volatiles.volume` became zero by this point due to the deletion of the
fuel reagent above. Investigation of why this behaviour changed is still
ongoing.
```
	if(fuel_amt) // with that done, actually explode
		visible_message(span_danger("\The [src] explodes!"))
		switch(volatiles.volume)
			if(25 to 150)
				explosion(src, light_impact_range = 1, flame_range = 2)
                        if(...
```

Going forward, replacing the switch statement with one checking
`fuel_amt` is safer as it's not relying on something we already tried to
delete, and is guaranteed to have the same effect as `fuel_amt =
volatiles.volume`

Fixes #78975

## Why It's Good For The Game

Fuel tanks should explode.

## Changelog
🆑
fix: Fuel tanks are explosive again
/🆑

* Makes fuel tanks explode again

---------

Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
2023-10-15 23:04:09 -07:00
SkyratBot
abb2bcde43 [MIRROR] Miscellaneous Robotic Limb Fixes [MDB IGNORE] (#24339)
* Miscellaneous Robotic Limb Fixes

* Update android.dm

* Apply suggestions from code review

* Update robot_bodyparts.dm

---------

Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-15 19:53:52 -07:00
SkyratBot
10fb927883 [MIRROR] Added a larger afro hairstyle [MDB IGNORE] (#24344)
* Added a larger afro hairstyle

* Update head_hair_and_lips.dm

---------

Co-authored-by: Cruix <ianjturk@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-15 20:00:20 -04:00
SkyratBot
00b8a76a6d [MIRROR] Makes the active sonar stop destroying the game [MDB IGNORE] (#24353)
* Makes the active sonar stop destroying the game (#79006)

## About The Pull Request
Hey did you know the active sonar would just repeatedly add mobs to its
internal list no matter if they were there already or not?

Yea.

Anyways that's fixed now, overtime is saved
## Why It's Good For The Game

![image](https://github.com/tgstation/tgstation/assets/66052067/dea57189-034a-46a4-bee3-5d2a1f9eec61)

![kylo-kylo-ren](https://github.com/tgstation/tgstation/assets/66052067/8cbeca30-fd8b-451e-ab61-a91c7192f873)
## Changelog
🆑 Wallem
fix: The active sonar module won't attempt to create 6000000 new pings
per process cycle anymore
/🆑

* Makes the active sonar stop destroying the game

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2023-10-15 19:54:51 -04:00
SkyratBot
f57e279447 [MIRROR] [NO GBP]Fixes plumbing for good(hopefully) & more reagent code [MDB IGNORE] (#24347)
* [NO GBP]Fixes plumbing for good(hopefully) & more reagent code (#78947)

## About The Pull Request
1. This should be the end of all problems related to plumbing and I
swear if another issue popes up I'm goanna delete my GitHub account. Or
to be more realistic just ping me and I'll be back :D

   - Fixes #78945

And this time I am **100%**(if I'm wrong then fuck me) sure that
reagents will not flow in excess amounts into reaction
chambers/synthesizers or whatever plumbing component you can think off.

Reagents flowing in excess amounts is what caused the factory to grind
to a halt as the components will stop processing if they detect excess
amounts of reagents (which is why plunging them with a plunger would
clear them of their reagents and help them resume processing again which
obviously is not an ideal solution)

Also, now it's no longer required to see reagent volumes in 4 decimal
places so I rounded it back to just 2 places again so values like 0.999
or 1.001 will become just 1 again.

Also plumbing reaction chamber was doing too much work so I fixed that.

2. Made defines for min & max ph. any change to ph values of any reagent
will be confined between these values i.e., 0 & 14. Also converted some
vars into defines. Using a variable makes sense if it's value changes
but if it doesn't then just define it as a constant so you can save
memory. Made synthesizer lists static to further save memory.

3. Significantly boosted the ph balancing mechanism for reaction
chamber. You will be surprised.

## Changelog
🆑
fix: plumbing setups should(hopefully) no longer grind to a halt nor
will overflow with excess volume of reagents.
code: created defines for min & max ph. Improved some reaction_reagent
code. Made synthesizer dispensable reagent list values static to save
memory.
refactor: ph balancing mechanism for reaction chamber is significantly
improved. Optimized it's code overall
refactor: examining each individual reagent will display their results
back to 2 decimal places again and not 4 for easy readability.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>

* [NO GBP]Fixes plumbing for good(hopefully) & more reagent code

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-10-15 17:59:17 -04:00
SkyratBot
2be190fba4 [MIRROR] Bladists can now use silver *or* titanium while creating their blades [MDB IGNORE] (#24342)
* Bladists can now use silver *or* titanium while creating their blades (#78701)

## About The Pull Request

Blade Heretics can now use silver *or* titanium while creating their
blades.

## Why It's Good For The Game

Silver quite literally *only* exists on surgery tables. Being a blade
heretic with shit miners/roundstart means one of several things.

1. Wait for miners to come back with enough silver (They might never
come back or they might have not gotten any silver)

2. Go to lavaland to dig your own silver (Extremely time-consuming on
the antagonist role that has most downtime, death knell for latejoin
heretics)

All that is not even to mention that for some reason it takes two sheets
rather than one, and surgery tables give one silver when scavenged.

This all combined makes obtaining blades super annoying as the BLADE
path.

Now we can farm titanium off shuttles if the miners are jacking off or
dead, or if we joined 9 minutes to roundend.

## Changelog

🆑
qol: Bladists can now use silver *or* titanium while creating their
blades
/🆑

* Bladists can now use silver *or* titanium while creating their blades

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-10-14 21:07:29 -04:00
SkyratBot
4181be9e5a [MIRROR] Fixes leaning runtiming from non-carbon mobs, adds a slight animation to the effect [MDB IGNORE] (#24341)
* Fixes leaning runtiming from non-carbon mobs, adds a slight animation to the effect (#78847)

* Fixes leaning runtiming from non-carbon mobs, adds a slight animation to the effect

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-10-14 19:35:40 -04:00
SkyratBot
af9ed1ee04 [MIRROR] Basic Space Dragon [MDB IGNORE] (#24340)
* Basic Space Dragon (#78979)

* Basic Space Dragon

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-14 19:35:25 -04:00
SkyratBot
cbd419bed8 [MIRROR] Improved documentation and message for the dcs_check_list_arguments unit test. [MDB IGNORE] (#24338)
* Improved documentation and message for the dcs_check_list_arguments unit test. (#78903)

## About The Pull Request
I've been contacted recently by san7890 regarding an opened issue report
about the aforementioned unit test. I've told them it's mainly an issue
about the lack of clarity and the bad choice of words in both
documentation and fail messages, and that I'd get to it soon.

I don't repute myself a good writer. The renewed doc and messages may
contain a few grammar issues, but I'm optimistic that it explains it way
more thoroughfully than before.

## Why It's Good For The Game
Better documentation for one of the few unit tests that might tell you
to "fix" stuff you're not directly responsible of. Suggestions are
welcome. This closes #78896.

## Changelog
N/A

* Improved documentation and message for the dcs_check_list_arguments unit test.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-10-14 19:03:16 -04:00
SkyratBot
203f6c8fb5 [MIRROR] Allows spacemen to use age-appropriate drugs by making it so you can now huff N2O to get high. [MDB IGNORE] (#24336)
* Allows spacemen to use age-appropriate drugs by making it so you can now huff N2O to get high.  (#78809)

## About The Pull Request

Allows spacemen to use age-appropriate drugs by making it so you can now
huff N2O to get high.

## Why It's Good For The Game

please do not do whippets IRL

## Changelog

🆑
balance: Allows spacemen to use age-appropriate drugs by making it so
you can now huff N2O to get high.
/🆑

* Allows spacemen to use age-appropriate drugs by making it so you can now huff N2O to get high.

---------

Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
2023-10-14 19:03:03 -04:00
SkyratBot
e4894f9357 [MIRROR] Fixes Monkey's Delight recipe no good boy point [MDB IGNORE] (#24331)
* Fixes Monkey's Delight recipe  no good boy point (#78972)

## About The Pull Request

Fixes onkeys delight recipe ti had salt and water but you cant do that
now it turns into aslt water

this pr is untestsed

## Why It's Good For The Game
iots not this is monkey abuse

## Changelog

🆑
fix: Fixes Monkey's Delight recipe
/🆑

* Fixes Monkey's Delight recipe  no good boy point

* Update paper.dm

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-14 14:31:26 +00:00
SkyratBot
bc53a6f350 [MIRROR] Makes riot helmet more consistent with other sec helmets [MDB IGNORE] (#24332)
* Makes riot helmet more consistent with other sec helmets (#78914)

## About The Pull Request

Makes Riot Helmet hide hair
No Helmet:

![image](https://github.com/tgstation/tgstation/assets/139372157/6a6a5cad-f9cf-44d2-bfa2-5eb005f49322)
Helmet (Before):

![image](https://github.com/tgstation/tgstation/assets/139372157/a4f7eb92-84d6-42b6-b764-e8c3e3f116fd)
Helmet (After):

![image](https://github.com/tgstation/tgstation/assets/139372157/2b2c88e9-ec5f-4e23-b0e8-fd0362983eda)

## Why It's Good For The Game

More consistent with other sec helmets

## Changelog
🆑

fix: makes the riot helmet hide hair like other sec helmets

/🆑

* Makes riot helmet more consistent with other sec helmets

---------

Co-authored-by: starrm4nn <139372157+starrm4nn@users.noreply.github.com>
2023-10-14 10:26:14 -04:00
SkyratBot
e9c9b1e4c9 [MIRROR] Overclocked Vent Pumps [MDB IGNORE] (#24330)
* Overclocked Vent Pumps (#78583)

## About The Pull Request

Adds in the capability for vent pumps to be overclocked, which allows
them to ignore pressure differentials and move their entire air contents
each process. Doing this causes them to take damage over time however
which causes them to be less effective in normal operation.
**the penalty for low integrity does not apply to fans which are
overclocked, however reaching 0 integrity will still disable them**
## Why It's Good For The Game

Engineers got used to vent pumps being stupid and ignoring pressure, now
its a feature not a bug.
## Changelog
🆑
add: Vent Pumps can now be overclocked, do some light reading in the air
alarm to figure out what this means.
balance: Vent Pumps now have fan integrity, the damaging of which
reduces their ability to move air.
sound: Overclocking sounds, including spool, stop, and loop
/🆑

---------

Co-authored-by: Emmett Gaines <ninjanomnom@ gmail.com>

* Overclocked Vent Pumps

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Emmett Gaines <ninjanomnom@ gmail.com>
2023-10-14 10:23:01 -04:00
SkyratBot
08c99f9478 [MIRROR] Improves code for power usage of energy weapons [MDB IGNORE] (#24323)
* Improves code for power usage of energy weapons

* Modular update

* This comment was wrong, it was 10 before

* One last modular

---------

Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-14 01:35:36 +00:00
SkyratBot
4a65407534 [MIRROR] Saggy fax [MDB IGNORE] (#24322)
* Saggy fax (#78962)

![image](https://github.com/tgstation/tgstation/assets/3625094/a635a4d3-ca3a-442b-8f58-98c60461713f)

## About The Pull Request

Makes faxes display with vertical offset when on a table.

## Why It's Good For The Game

Looks nice

## Changelog

🆑
fix: The crew is instructed to place fax machines properly in the center
of a table without hanging.
/🆑

* Saggy fax

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-10-13 15:13:00 -04:00
SkyratBot
c45f49fae8 [MIRROR] Modsuits can no longer be deepfried [MDB IGNORE] (#24320)
* Modsuits can no longer be deepfried (#78950)

## About The Pull Request

Adds modsuit control unit to deepfry blacklist.

Fixes #78928

## Why It's Good For The Game

You aren't supposed to be able to deepfry storage items like backpacks
since it causes issues. However modsuits start out with no storage, and
can have storage added later, allowing them to bypass this. Therefore
you shouldn't be able to deepfry modsuits since they can become a
storage item.

It's also inconsistent that you can fry modsuits without storage, but
modsuits with storage can't be fried. It's simpler that no modsuits can
be fried at all.

## Changelog

🆑
fix: Modsuits can no longer be deepfried
/🆑

* Modsuits can no longer be deepfried

---------

Co-authored-by: BlueMemesauce <47338680+BlueMemesauce@users.noreply.github.com>
2023-10-13 15:12:26 -04:00
SkyratBot
450212c846 [MIRROR] VV Upgrades [MDB IGNORE] (#24319)
* VV Upgrades (#78948)

## About The Pull Request

* Makes special byond lists display properly
* Makes images get a preview in the header
* Makes filters display properly
* Make variable value display a bit more robust to errors
* Kills single char vars

## Changelog

🆑
admin: VV can now display the contents of special byond lists like
filters, or client.images
admin: VV on images now displays the image in the header
admin: VV can now display filters and includes their type
/🆑

* VV Upgrades

---------

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
2023-10-13 15:12:08 -04:00
SkyratBot
202bc087ac [MIRROR] [no gbp] Don't give every heretic mob mirror walk [MDB IGNORE] (#24318)
* [no gbp] Don't give every heretic mob mirror walk (#78949)

## About The Pull Request

Fixes #78942

Don't give every heretic mob mirror walk
Also restores their spaceproofing.

The causes of this were respectively:
- I didn't type out the full typepath.
- I forgot.

## Changelog

🆑
fix: "Mirror Walk" is once more the domain of the Maid in the Mirror
rather than "every heretic summon"
fix: Heretic mobs can once again survive space
/🆑

* [no gbp] Don't give every heretic mob mirror walk

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-13 15:11:44 -04:00
SkyratBot
05a3d03258 [MIRROR] sdql readout now displays location of turfs properly [MDB IGNORE] (#24317)
* sdql readout now displays location of turfs properly (#78951)

## About The Pull Request

previously

![image](https://github.com/tgstation/tgstation/assets/70376633/d365430a-7775-417d-893a-1e559601de8f)

now

![image](https://github.com/tgstation/tgstation/assets/70376633/636eac5f-175e-4983-a096-bffa7181bd48)

## Why It's Good For The Game

bug or something bad

## Changelog
🆑
fix: sqdl2 query readout displays location of turfs properly
/🆑

* sdql readout now displays location of turfs properly

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2023-10-13 15:11:35 -04:00
SkyratBot
d11d194bfe [MIRROR] Gas canister colors update [MDB IGNORE] (#24313)
* Gas canister colors update (#78898)

* Gas canister colors update

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-10-13 10:42:48 -07:00
SkyratBot
05fed1ce8f [MIRROR] Manifest Rune/Capture the Flag no longer DNR you. Blocks suicides in CTF areas [MDB IGNORE] (#24316)
* Manifest Rune/Capture the Flag no longer DNR you. Blocks suicides in CTF areas (#78957)

## About The Pull Request

You can return to your old body after playing CTF or being summoned as a
manifest rune cult ghost. This is done by slapping the temporary_body
component onto cult rune summons and CTF bodies. This also extends to
Medisim Shuttle knights.

This also blocks suicides from being performed in CTF areas. Ghosting
and "manually" suiciding is, of course, still an option.
## Why It's Good For The Game

There's no reason these two cases should lock you out of being revived.
They both also dust bodies on death or after their job is done, making
them a perfect fit for this component.

Blocking suicides ensures that all bodies are properly "cleaned up" by
the death dusting process. Gun suicides, for instance, would remove the
brain from the body and bypass cleanup. This not only prevents the user
from being returned to their old body, but likely has other unforeseen
problems that leaving a body behind might cause.
## Changelog
🆑 Rhials
qol: You can now return to your old body after being summoned by a
manifest rune.
qol: You can now return to your old body after dying in CTF.
qol: You can now return to your old body after dying in the Medisim
Shuttle battle area.
qol: You can no longer suicide in CTF areas, for integrity purposes.
/🆑

* Manifest Rune/Capture the Flag no longer DNR you. Blocks suicides in CTF areas

---------

Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
2023-10-13 16:32:49 +00:00
SkyratBot
3bc191272a [MIRROR] Fixes Space Dragon Attacking [MDB IGNORE] (#24315)
* Fixes Space Dragon Attacking (#78964)

Fixes #78953

## About The Pull Request

Basically the gist is that Space Dragon's special attack code was on
`AttackingTarget()` rather than whatever the hell simple animals
controlled by clients use (I didn't bother enough to look into the chain
to remember this). This was the complete wrong proc to use, and it NEVER
got executed. Anyways, we just hook into the signal for whatever the
simple animal proc is as well as clean up all the code, make everything
pretty, and most importantly:

MAKE THE DAMN CODE WORK
## Why It's Good For The Game

Either someone did not test their code at all, or some weird esoteric
change in the attack chain changed this somehow? I'm not sure when or
why this happened but it is guaranteed to be fixed now.

The code cleanup and tinkering I did means that it's gonna be about 10%
easier to port this over to a basic mob eventually (not doing a full
refactor when this shit is this broken, the code added here is modular
enough to the point where it's plug-n-play).
## Changelog
🆑
fix: Space Dragons can now, once again, tear down walls and eat corpses.
They also have regained their special damage modifier when attacking
mechs.
/🆑

* Fixes Space Dragon Attacking

---------

Co-authored-by: san7890 <the@san7890.com>
2023-10-13 12:12:12 -04:00
SkyratBot
a381b656e0 [MIRROR] Adds on_mob_life SHOULD_CALL_PARENT, fixes holy water metabolizing at double rate [MDB IGNORE] (#24309)
* Adds `on_mob_life` `SHOULD_CALL_PARENT`, fixes holy water metabolizing at double rate (#78932)

## About The Pull Request

- Fixes #78919

- Adds `SHOULD_CALL_PARENT` to reagent `on_mob_life`, fixes a few places
which didn't call parent

- Off the top of my head I remembered holy water purposefully didn't
call parent to get a static metabolism rate. However #78657 added a
parent call to holy water, meaning it's been metabolizing out twice,
incredibly fast. Fixes that.

## Why It's Good For The Game

Reagent parent is fairly important as it handles removing the reagent
from the mob.

## Changelog

🆑 Melbert
fix: Fixes Mauna Loa, Monover, Silibinin, Granibitaluri not exiting your
system on metabolism
fix: Fixes holy water exiting your system at double the rate on
metabolism
fix: Holy Water no longer spams cultists with big text every time, it's
much more tame now
/🆑

* Adds `on_mob_life` `SHOULD_CALL_PARENT`, fixes holy water metabolizing at double rate

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-10-13 09:55:09 -04:00
SkyratBot
06467afb92 [MIRROR] Laser Carbine sprite and sound improvement [MDB IGNORE] (#24305)
* Laser Carbine sprite and sound improvement (#78831)

## About The Pull Request
Changes the laser carbine sprite and makes the orange laser sprite
brighter (the laser carbine shot orange lasers from the start). Changes
the laser2.ogg to a new sound that is now used by the laser carbine (can
be heard in the video):

https://github.com/tgstation/tgstation/assets/42353186/cfaff327-335f-4e6b-9773-b1ce62600212

**NEW SPRITE:**
![laser carbine
big](https://github.com/tgstation/tgstation/assets/42353186/5e0b1c90-527c-47ae-9747-7f833a84c880)

**OLD SPRITE:**
![old
carbine](https://github.com/tgstation/tgstation/assets/42353186/5d2eb35c-9ddb-49db-99b3-e1631a1db8dd)
## Why It's Good For The Game
The laser carbine sprite must be improved, as in the original PR people
wanted it to be "polished" so I did it. Polished the sprite without
changing the core design.

![image](https://github.com/tgstation/tgstation/assets/42353186/0c6f73a3-0dd0-4ba5-9cf8-dd34cade2fd1)

New sounds give it a unique sound to distinguish it from other guns,
it's also less noise-polluting than normal laser gun sound which is long
and too beefy for a 10-burn damage gun.
## Changelog
🆑
sound: laser2.ogg sound has been changed. Now laser carbine uses it.
image: Laser carbine and orange laser sprite have been improved.
/🆑

* Laser Carbine sprite and sound improvement

---------

Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
2023-10-13 00:31:26 -07:00