Commit Graph

2166 Commits

Author SHA1 Message Date
SkyratBot
5209631c68 [MIRROR] Adds wibbles to certain anomalous entities [MDB IGNORE] (#24851)
* Adds wibbles to certain anomalous entities (#79549)

## About The Pull Request

Adds wibble animation to portals, some anomalies, and bluespace rifts.

https://github.com/tgstation/tgstation/assets/51863163/9355dc53-590e-4558-82a3-15145829ce16

## Why It's Good For The Game

It looks kinda cool.
Helps cement these as anomalous, wacky things that don't necessarily fit
in our plane of existence.

## Changelog

🆑 Melbert
add: Anomalies, portals, and bluespace rifts will now wibble a bit.
/🆑

* Adds wibbles to certain anomalous entities

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-07 21:03:44 -05:00
SkyratBot
6240c48600 [MIRROR] You can fish out of hydroponics trays [MDB IGNORE] (#24811)
* You can fish out of hydroponics trays (#79443)

## About The Pull Request

Adds a fishing spot to hydroponics trays.

Chances

- 33% nothing
- 33% grass
- 20% random seed (discludes rarer seeds, such as gatfruit and most
mutations)
- 10% grass seeds
- 1% strange seed
- 1% axolotl
- 1% frog

Lightly inspired by something (I think) is possible on Goon, but
obviously entirely new code.

## Why It's Good For The Game

Mostly just for laughs, they're basins of water so surely you can get
something out of it.

## Changelog

🆑 Melbert
add: Fishers can now try their luck at fishing out of hydroponics
basins.
/🆑

* You can fish out of hydroponics trays

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-06 01:11:07 -05:00
SkyratBot
596b2f050e [MIRROR] Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls [MDB IGNORE] (#24804)
* Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls

* Update supermatter.dm

* Modular

* More modular

* Update cortical_borer_egg.dm

---------

Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-05 22:01:17 -05:00
SkyratBot
467355d86e [MIRROR] Better feedback on fulton extraction [MDB IGNORE] (#24762)
* Better feedback on fulton extraction (#79452)

## About The Pull Request
Just playing issues roulette when I came across this gem of old code.
Granted, it's not fully rewritten to perfection, but it should at least
be better. Added feedback for both parties, sounds, documentation, and
swapped references for weakrefs.

Note: It looked like it was trying to put the target around the beacon,
but this didn't seem to be working. Fixed this, so now it places them in
an open spot around the beacon (unless its blocked)

## Why It's Good For The Game
Fixes #35783
Not cool for someone to just zip you up and send you away with no
feedback
The original issue might not even apply since most(?) only work indoors,
but this fixes any case
Might fix a hard del??
## Changelog
🆑
fix: Added feedback for both extractor and extractee while using fulton
extraction packs.
qol: Extraction packs now have better exam text.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Better feedback on fulton extraction

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2023-11-03 19:34:26 -04:00
SkyratBot
0ea0ede988 [MIRROR] Moves Flightpotion wings from species datum to chest bodypart, other flightpotion tweaks [MDB IGNORE] (#24702)
* Moves Flightpotion wings from species datum to chest bodypart, other flightpotion tweaks

* Update android.dm

* Revert "Update android.dm"

This reverts commit 0b569b85fb67471cbc2df951f88b7cf6c1b942ad.

* Update android.dm

* Update skeletons.dm

* This was supposed to be returning FALSE...

* Modularized this

* Modular changes

* More modular

---------

Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-31 20:15:20 -04:00
SkyratBot
e7a1ec5ba2 [MIRROR] Cuts the number of apply_damage copypaste procs from 3(.5) to 1, fixing a few bugs along the way [MDB IGNORE] (#24619)
* Cuts the number of `apply_damage` copypaste procs from 3(.5) to 1, fixing a few bugs along the way

* Update _species.dm

* Update damage_procs.dm

* Modular adjustments

* Update mutant_species.dm

* Update mutant_species.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-27 18:22:32 -04:00
SkyratBot
b3216469e3 [MIRROR] Completely deprecates reagents in protolathe/circuit imprinter/techfab designs [MDB IGNORE] (#24467)
* Completely deprecates reagents in protolathe/circuit imprinter/techfab designs (#78939)

## About The Pull Request

A long time ago, it was common for designs to cost reagents in addition
to normal materials. Every circuit board used to require sulfuric acid,
for example. However, these designs have slowly been whittled away, and
only two remain: the death syphon PKA modkit, which costs blood, and
paint remover in the service lathe, which costs acetone. Although these
two designs still use the old system, it is very outdated, and it shows.
TGUI doesn't take reagent costs into account at all. Reagent costs
aren't displayed on mouse over like material costs, and the design won't
be greyed out if there necessary reagents aren't present. If you try and
fail to print one of the two designs, the protolathe will tell you that
reagents are missing, but it won't say what reagents. In fact, there is
not way to find out what reagents are required without code diving.
## Why It's Good For The Game

In light of how outdated and unsupported this system is, I think it
makes sense to deprecate it almost entirely.* Now, protolathes, circuit
imprinters and techfabs will no longer take reagent costs into account
at all, even if a design does define reagent costs. The machines also no
longer need beakers to be built, and reagents can't be transferred into
them. The two remaining designs that did use reagent costs now don't,
and I've updated the designs unit test to fail if any non-limbgrower
design does set any reagent costs.

*Limb growers are the exception, as they're fully functional and work
fine.
## Changelog
🆑
del: Protolathe/circuit imprinter/techfab designs costing reagents is
now totally deprecated.
/🆑

* Completely deprecates reagents in protolathe/circuit imprinter/techfab designs

* medigun reagent removal

---------

Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-10-23 09:13:12 -07:00
SkyratBot
6348fa7cf8 [MIRROR] Adds a subtle ghost poll [MDB IGNORE] (#24503)
* Adds a subtle ghost poll (#79105)

## About The Pull Request
This makes a new ghost poll system which doesn't give TGUI popups -
instead, users are prompted to follow the POI and one of the orbiters is
chosen. The old system remains in place, so you can still prompt if you
want to.

This gives two things:
1. A deadchat notification:

![image](https://github.com/tgstation/tgstation/assets/42397676/073fcfff-b1ed-47c3-bae0-4abf9c599144)
2. A screen alert:

![image](https://github.com/tgstation/tgstation/assets/42397676/92a4e566-614a-43ca-8680-3cb4ff86ced9)

## Why It's Good For The Game
As stated in #76507, popups are pretty annoying. This is halfway between
a screen alert with no time limit and an event with more important
pings. This is better because:
1. Less popup fatigue
2. You can SEE how many you're competing with
4. DRY
## Changelog
🆑
add: Adds a subtle ghost poll. This pings in dead chat and gives a
screen alert, but no TGUI popup. Orbit the point of interest to be
selected for the role.
refactor: A number of ghost spawns now feature this alert. Write an
issue report if anything breaks.
/🆑

---------

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

* Adds a subtle ghost poll

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-10-21 18:23:55 -04:00
SkyratBot
529f827f90 [MIRROR] fixes gibtonite bomb [MDB IGNORE] (#24457)
* fixes gibtonite bomb (#79038)

## About The Pull Request

https://github.com/tgstation/tgstation/assets/70376633/8d15d7c9-51c2-4aeb-b1c6-4386168947da

i made it work slightly better too so
also this was in the code since like 2015 but it probably got broken
sometime

also 10 second detonation timer is pretty harmless anyway so

## Why It's Good For The Game

bug bad
fyi this was added in 2015
https://github.com/tgstation/tgstation/pull/8587

## Changelog
🆑
fix: making assembly activated bombs works again
/🆑

* fixes gibtonite bomb

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2023-10-20 02:54:43 -04:00
SkyratBot
b6da56408e [MIRROR] A comprehensive refactor / cleanup of bullet_hit and on_hit to cut out a single bad species / mob proc [MDB IGNORE] (#24430)
* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc (#79024)

## About The Pull Request

- Refactored `bullet_act`. Adds `should_call_parent` and refactors
associated children to support that.
   - Fixes silicons sparking off when hit by disabler fire.
- Desnowflakes firing range target integrity and cleans up its
bullet-hole code a bit.
- Cleans up changeling tentacle code a fair bit and fixes it not taking
off throw mode if you fail to catch something.
   - The Sleeping Carp deflection is now signalized
- Nightmare projectile dodging is now signalized and sourced from the
Nightmare's brain rather than species
- Refactored how cardboard cutouts get knocked over to be less
snowflaked / use integrity
- Also adds projectile `on_hit` `should_call_parent` and cleans up a bit
of that, particularly their arguments.
- On hit arguments were passed wrong this entire time, it's a good thing
nothing relied on that.

## Why It's Good For The Game

This is cringe.

1863eb2cd8/code/modules/mob/living/carbon/human/_species.dm (L1430-L1442)

Bullets should overall act more consistent across mob types and objects.

## Changelog

🆑 Melbert
fix: Silicons don't spark when shot by disablers
fix: Changelings who fail to catch something with a tencacle will have
throw mode disabled automatically
fix: Fixes occasions where you can reflect with Sleeping Carp when you
shouldn't be able to
fix: Fixes some projectiles causing like 20x less eye blur than they
should be
refactor: Refactored bullet-mob interactions
refactor: Nightmare "shadow dodge" projectile ability is now sourced
from their brain
/🆑

* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc

* Modular changes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-19 22:18:41 -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
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
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
ade3fb2813 [MIRROR] ice demon basic mobs [MDB IGNORE] (#24188)
* ice demon basic mobs

* Modular updates

* Modular updates

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-08 08:06:23 -04:00
SkyratBot
4d7c92c5d7 [MIRROR] Removes all spawn locations of the awakened plush except the bus ruin [MDB IGNORE] (#24033)
* Removes all spawn locations of the awakened plush except the bus ruin (#78559)

It's supposed to be a coderbus easter egg, stop putting it elsewhere. I
want it to stay rare enough that it confuses people when it makes it to
the station.

The secure closet had it on the loot table and due to how that's coded
it has to have something replace the slot (or rework the loot spawning
code there) so I put a live bomb in the slot instead.

🆑 ninjanomnom
del: An easter egg plushie that was spawning where it shouldn't has been
brought back home.
add: The secure closet can now spawn live gibtonite, enjoy your free
bomb.
/🆑

* Removes all spawn locations of the awakened plush except the bus ruin

---------

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
2023-09-30 02:48:36 -04:00
SkyratBot
37a8f73ae3 [MIRROR] Basic Legion & Hivelord [MDB IGNORE] (#23964)
* Basic Legion & Hivelord

* Update modular + fix diffs

* Fixing diffs

* More diffs

* Adds an AI behavior to replace the 'wander = 0' varedit for the hivelord gate guardians

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-09-27 22:30:02 -04:00
SkyratBot
62bc3b56ce [MIRROR] Fulton beacons can be renamed and redeployed [MDB IGNORE] (#23956)
* Fulton beacons can be renamed and redeployed (#78535)

## About The Pull Request

Lets players rename a deployed fulton beacon with a pen, changing its
name/decription. Also lets players click said beacon with an empty hand
to undeploy it after a short delay, which leaves a ready-to-use fulton
core kit.

## Why It's Good For The Game

Good QoL to let players move their beacons around. Renaming them also
allows players to shorten the name of the beacon, removing guesswork
like _where the fuck is **fulton beacon (666) (Cargo Bay)**_.

## Changelog

🆑
qol: you can undeploy fulton beacons by clicking them with an empty hand
qol: you can rename fulton beacons with a pen
/🆑

* Fulton beacons can be renamed and redeployed

---------

Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
2023-09-27 18:19:35 -04:00
SkyratBot
6c3749e333 [MIRROR] Fixes Multitool Buffer Clearing and Adds Multitool Linking Balloon Alerts [MDB IGNORE] (#23786)
* Fixes Multitool Buffer Clearing and Adds Multitool Linking Balloon Alerts (#78309)

## About The Pull Request
I was working on a feature that required the buffer of a multitool to be
cleared out after linking two devices, when I noticed it wasn't possible
to clear the multitool's buffer. The change to multitools in #77639 made
it impossible to set the buffer of a multitool to null without
destroying the stored object, yet many objects still tried to have the
multitool clear it's buffer after a successful linkage. This creates a
new proc, clear_buffer() dedicated just to clearing the buffer of a
multitool.

Also made all of the multitool linkage messages balloon alerts.

If there's any issues or things I can improve please let me know, I'm a
bit new to BYOND and DM but I'm working on learning so I can make some
more ambitious projects! _(I think I got the signaling right)_
## Why It's Good For The Game
Some objects aren't meant to be saved in the multitool's buffer after
the initial linking, this should fix that.
Also balloon alerts are nice.
## Changelog
🆑
fix: Nanotrasen has finally recalled their faulty multitools and
replaced them with working ones! The multitool's buffer now properly
clears itself.
qol: Moved multitool link messages to balloon alerts
/🆑

---------

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

* Fixes Multitool Buffer Clearing and Adds Multitool Linking Balloon Alerts

---------

Co-authored-by: Moose1002 <33578674+Moose1002@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-09-18 15:17:59 -04:00
SkyratBot
bf27e6c917 [MIRROR] Adds withdrawal multiplier to ORM [MDB IGNORE] (#23757)
* Adds withdrawal multiplier to ORM (#78404)

## About The Pull Request
Pulling an alloy stack from the ORM always counted as 1. No matter the
stack size

## Why It's Good For The Game

Sadly, no more infinite resources

* Adds withdrawal multiplier to ORM

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2023-09-17 15:35:48 -04:00
SkyratBot
673eb1ee1d [MIRROR] Ghosts can eat ghost burgers [MDB IGNORE] (#23746)
* Ghosts can eat ghost burgers (#78303)

## About The Pull Request

Every tick while a ghost is orbiting a ghost burger there is a 20%
chance per ghost (capping at 100% at 5 ghosts) that they will take a
bite out of the ghost burger, shrinking it and depleting its reagents
until it is completely consumed.
It leaves some ectoplasm behind which you could use to make another
burger.
Also ghost burgers can no longer decay or pick up floor germs, the
burger moves itself so this would happen reasonably often because it
doesn't stay on tables. Also: it is a ghost.

Also just before I posted this PR I noticed that "booberry muffins" also
exist so there was nothing for it but to componentise this behaviour and
attach it to both food items, so I guess admins can also make anything
with reagents edible to ghosts also.

## Why It's Good For The Game

I think the chef should be able to make food for ghosts. It's not fair
if only living people get to eat.

## Changelog

🆑
add: Ghosts (observers) can eat ghost burgers and booberry muffins.
balance: Ghost burgers will not decay or pick up germs due to the fact
that they moved themselves off a table.
/🆑

* Ghosts can eat ghost burgers

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-17 15:32:47 -04:00
SkyratBot
3f6b96e000 [MIRROR] second pass over the SC/FISHER code, incl. bitflags and PDAs [MDB IGNORE] (#23705)
* second pass over the SC/FISHER code, incl. bitflags and PDAs

* Update flashlight.dm

---------

Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-09-15 12:28:44 -04:00
SkyratBot
e45f17efae [MIRROR] John Splintercell: a gun that is only good for shooting out lights [MDB IGNORE] (#23650)
* John Splintercell: a gun that is only good for shooting out lights

* Removes this flashlight nonsense, we don't need copy pasted procs for something this simple

---------

Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-09-12 16:57:44 -04:00
SkyratBot
f537bb2097 [MIRROR] GAGS, recolorable and actually glowing glow shoes. [MDB IGNORE] (#23568)
* GAGS, recolorable and actually glowing glow shoes. (#78071)

## About The Pull Request
I've converted the gags_recolorable component into an element (it has no
var of its own) and the glow shoes icons to greyscale, added emissive
icon states for the shoes, both for its own sprite or when worn, and the
ability to recolor them with a spraycan (tbh a lot of clothing should be
recolorable with a spraycan in general but that's beyond the scope of
this PR)

Oh yeah, if you examine an item with the gags_recolorable element twice,
it now tells you can use a spraycan to recolor it.

## Why It's Good For The Game
They are called glow shoes yet don't glow, and the supposed glowing
stripes only come in a single flavor of blue. Truly the definition of
lame.

Overall, it looks as goofy as ever: I didn't put much effort into the
grayscale icons beyond the necessary:

![proofthatitworks](https://github.com/tgstation/tgstation/assets/42542238/93aa7701-122d-4214-a890-7f69df3cb309)

## Changelog

🆑
image: The glow shoes from the ClothesMate now actually glow and can be
recolored, even with a spraycan.
/🆑

---------

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

* GAGS, recolorable and actually glowing glow shoes.

* Modular stuff

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-09-07 20:25:08 -04:00
SkyratBot
71da4ca73f [MIRROR] Refactors the notransform variable into a trait. [MDB IGNORE] (#23566)
* Refactors the `notransform` variable into a trait.

* Update robot_upgrades.dm

* modular

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-07 20:24:59 -04:00
SkyratBot
16a9fb61cc [MIRROR] Worn Shirt Resprite (& GAGS Enhancement) [MDB IGNORE] (#23542)
* Worn Shirt Resprite (& GAGS Enhancement) (#78014)

## About The Pull Request
Hi! Sheets gave me some new sprites for the worn shirt, the Ian shirt,
and the gamer shirt you can find on MetaStation. These come in three
variants.

![image](https://github.com/tgstation/tgstation/assets/12636964/0111d5a5-5c78-4f59-912b-05184e9e06df)
Clean, worn out, and messy, for varying degrees of 'washedness.'

![image](https://github.com/tgstation/tgstation/assets/12636964/d083bd00-e272-467f-8c95-60f7f0168b64)
As seen here on these mobs.

They are now also GAGS grayscaled, which means

![image](https://github.com/tgstation/tgstation/assets/12636964/d099a459-a6cd-47d3-b5eb-915b7c5e3501)
they are highly recolorable; and look good to boot.

However, I have also elected to give them a variant for each version; a
'graphics' variant with either Ian, or Phanic the Weasel.

![image](https://github.com/tgstation/tgstation/assets/12636964/6fdb7dd8-9b04-46ab-bfc9-3711685401bd)
The gamer shirt and the Ian shirt retain their unique names and
descriptions, luckily.

Due to the Phanic shirt using an uncolorable third zone, this allows you
to make your very own Phanic OCs, seen here in the full vignette.

![image](https://github.com/tgstation/tgstation/assets/12636964/92d3f8ea-be3d-47d1-9e76-7d98dfa0b629)

## Why It's Good For The Game
Drip drip drip.

## Changelog
🆑 Sheets and Nerev4r
sprite: Complete redo of the worn shirt, Ian shirt, and gamer shirts;
now GAGS-compatible!
/🆑

---------

Co-authored-by: Snakebittenn <12636964+Snakebittenn@ users.noreply.github.com>

* Worn Shirt Resprite (& GAGS Enhancement)

* Modular & loadout

* Update loadout_datum_suit.dm

* This is a dupe

---------

Co-authored-by: Nerevar <12636964+Nerev4r@users.noreply.github.com>
Co-authored-by: Snakebittenn <12636964+Snakebittenn@ users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-09-06 09:23:14 -04:00
SkyratBot
18b0abe4b3 [MIRROR] minebots basic bots [MDB IGNORE] (#23529)
* minebots basic bots (#78032)

## About The Pull Request
Transforms the minebots into basic robots. You can now command these
minebots to extract minerals for you. To activate automated mining mode,
simply instruct them with the command "mine." They will then proceed to
autonomously mine walls and gather ores. If you wish to make the bot
deposit all the collected ores, use the command "drop." Alternatively,
you can leave it in collection mode, and it will gather all the ores you
mine. Additionally, the bot now responds to several more commands; you
can instruct it to follow you, toggle its lights on or off by saying
"lights." In attack mode, it refrains from mining or collecting ores but
will engage in combat alongside you. If it detects you as deceased or
unconscious, it will alert all miners, request assistance, and relay
your coordinates via the mining communication channel. to power it on u
will need to feed it any type of ore first so it may listen to ur
commands

## Why It's Good For The Game
makes the non sapiant minebots more useful

## Changelog
🆑
refactor: the minebots have been refactored please report any bugs
add: minebots can now mine walls and collect ores automatically and they
will alert everyone if they find u dead
/🆑

* minebots basic bots

* Modular

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-09-05 06:46:11 -04:00
SkyratBot
06cce1effb [MIRROR] replaces surgical and coroner duffels with surgery trays and medical carts, resprites razor [MDB IGNORE] (#23499)
* replaces surgical and coroner duffels with surgery trays and medical carts, resprites razor

* Update cosmetics.dm

* Update tramstation.dmm

---------

Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-09-04 12:44:08 -07:00
SkyratBot
449f86819f [MIRROR] Fixes implanted legion cores being available for use when dead/unconscious [MDB IGNORE] (#23461)
* Fixes implanted legion cores being available for use when dead/unconscious (#78042)

## About The Pull Request

Ever since #70546 implanted legion cores have become available for use
when the user is unconscious/dead, which was not the case before — it
was using an organ action, which checks for `AB_CHECK_CONSCIOUS`

#### cores before #70546

475a4ab7f5/code/modules/mining/equipment/regenerative_core.dm (L23-L34)

07fbdbb4e4/code/datums/actions/items/organ_action.dm (L1-L3)

## Why It's Good For The Game

Prevents this

https://user-images.githubusercontent.com/104979184/264586219-8cab1fef-d2ea-4e1c-af43-158865b42b23.mp4

## Changelog

🆑
fix: fixed implanted legion cores being available for use when
unconscious/dead.
/🆑

* Fixes implanted legion cores being available for use when dead/unconscious

---------

Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
2023-09-02 11:43:39 -04:00
SkyratBot
8fbe6e4137 [MIRROR] Fixes a typo [MDB IGNORE] (#23360)
* Fixes a typo

* Update order_computer.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-08-27 11:46:37 -07:00
SkyratBot
4d2196c7cc [MIRROR] New Backpack Type: Messenger Bags! [MDB IGNORE] (#23287)
* woo yeah baby

* i find myself of a potent dislike for the antichrist

* she was forced to do data entry

* lmao

* wew

* New Backpack Type: Messenger Bags!

* Update clothing.dm

* Update clothing.dm

---------

Co-authored-by: Snakebittenn <12636964+Snakebittenn@users.noreply.github.com>
Co-authored-by: Nerevar <12636964+Nerev4r@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-24 22:47:13 -04:00
OrionTheFox
dcd3fce15f Removes Obsolete, Unused, and Unmaintained overrides (#23232)
* Remove unused override comments and fix a few I found

* remove lighting icon overrides (obsolete)

* remove laz/borg overrides (obsolete)

* Remove the catch-all e-gun override, manually overrides the two severely out of date sprites that we ACTUALLY have updates for

* oop

* removes obsolete surgery table sprite (probably technically too close to Bay's to be using actually)

* Love un-updated pathing

* oop

* this back icon wasn't even on this gun ever was it

* didn't notice this override >:(
2023-08-22 13:15:24 -07:00
SkyratBot
867fa1cdc5 [MIRROR] General code maintenance for Mat container related stuff [MDB IGNORE] (#23251)
* General code maintenance for Mat container related stuff (#77671)

1. Removes `/obj/machinery/ore_silo/proc/remote_attackby()`. This proc
calls `datum/component/material_container/user_insert()` anyway which
performs all the checks necessary for inserting stuff into the ore silo
and `/obj/machinery/ore_silo/proc/remote_attackby()` was just repeating
its code & checks. So now inserting into the ore silo is directly
handled by the mat container without this proxy proc making the
operation slightly faster
2. Removed silo `attackby` code. Same operations can be done via
`screwdriver_act` & `crowbar_act` procs much cleaner
3. The ore silo now hooks onto signals
`COMSIG_MATCONTAINER_ITEM_CONSUMED` and
`COMSIG_MATCONTAINER_SHEETS_RETRIVED` and logs into silo when they are
triggered. This means when you insert/eject sheets from the silo the
connected machine performing the operation no longer has to do the
logging manually thus the proc `silo_log` has been removed from a lot of
places ,reducing overall code size
4. A lot of stuff that use materials from the ore silo follow this
pattern.

i.e. They first use the materials from the silo and then log it via
`silo_log` proc. This code pattern is repeated in a lot of places so
let's just merge these 2 lines with some extra sanity checks into a
single proc inside `remote_materials` itself. That's what was done and
the number of places where you log manually into the silo has been
removed further reducing code size everywhere.
5. Added auto doc & cleaned up some procs

Since logging is now done by the ore silo directly, we need a way to
pass the machine that is inserting items into the silo to the signal
handlers of the ore silo [via the `context` var]. So other code changes
elsewhere is because of this var

* General code maintenance for Mat container related stuff

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-08-21 23:43:04 -04:00
SkyratBot
5fd1f08b7e [MIRROR] Replaces the poster and graffiti objectives with assault and early steal & destroy ones. [MDB IGNORE] (#23235)
* Replaces the poster and graffiti objectives with assault and early steal & destroy ones.

* Update engineering.dm

* Update cargo.dm

* Update mapping_helpers.dm

* Update mapping_helpers.dm

---------

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-21 18:18:28 -04:00
SkyratBot
68f4deff40 [MIRROR] MODLink System (+ NWTLMM) [MDB IGNORE] (#23199)
* MODLink System (+ NWTLMM) (#77639)

## About The Pull Request
A pact made with `@ Kapu1178`
Small changes you should not care about:
RD MODsuit outfit (admin only) no longer has a beret that blocks the
activation of the suit
The beret used by death squad officers no longer is blocked from being
put on a hat stabilizer module
Admins can now Shear matrices of objects in Modify Transform
Multitool buffers have been a little refactored to use a setter proc
that saves them from causing hard dels
Cooler stuff:
A revival and remake of [Nobody Wants To Learn Matrix
Math](https://github.com/tgstation/tgstation/pull/59103), this time with
additional tooling for quick matrix calculations.

![image](https://github.com/tgstation/tgstation/assets/23585223/eb387738-0839-463a-aed8-4703d139b11a)
The MODLink system, available through every MODsuit and MODLink scryers
(a neck item obtainable from advanced modsuit research or
charliestation)
Let's you make a holographic call with any other MODLink user, where you
can chat in realtime and see what's up with em

![image](https://github.com/tgstation/tgstation/assets/23585223/5a822f9f-e823-497e-b766-40055f2fc0d6)
![image](https://github.com/tgstation/tgstation/assets/23585223/062983ee-6058-4e78-a3aa-bccda1a3e224)

## Why It's Good For The Game
Adds a fun way for the crew to communicate with each other that can be
done in real-time with relative privacy compared to radio.

## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑

* MODLink System (+ NWTLMM)

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-19 05:09:31 -04:00
SkyratBot
fdfe5a420b [MIRROR] the big slappy is now immutably slow [MDB IGNORE] (#23141)
* the big slappy is now immutably slow (#77655)

## About The Pull Request
the big slappy is now immutably slow, it cant be sped up by xenobio
speed potion (because of how red slime crossbreed works, you can still
avoid it with that bullshit, but at least that requires some effort for
the xenobiologist to specifically create you one)

## Why It's Good For The Game
30 force
30 block chance
double object damage
throws tha guy away
KNOCKS DOWN FOR 2 SECONDS
and then your ass can literally just walk with it for FREE if you visit
xenobio and they gloop out one potion with a slime and water (which if
xenobio is staffed at all they probably will have at the point you made
it)

![image](https://github.com/tgstation/tgstation/assets/23585223/00bba834-2944-4260-b26a-cf9608ee851d)
(also a bit sus that it was added by a xenobio powergamer but thats
beside the point)

## Changelog
🆑
balance: you cant speed up the big slappy with slime potion
/🆑

* the big slappy is now immutably slow

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-16 23:55:46 -04:00
SkyratBot
2644a9e37d [MIRROR] New Mech UI and equipment refactor [MDB IGNORE] (#23098)
* New Mech UI and equipment refactor

* Update mecha_defense.dm

* Update clothing.dm

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-15 19:59:50 -04:00
SkyratBot
d0a892d19c [MIRROR] Big Slappy | Giant Weapon DLC [MERGE READY!!!] [MDB IGNORE] (#23082)
* Big Slappy | Giant Weapon DLC [MERGE READY!!!] (#77273)

## About The Pull Request
Big Slappy is a new illegal shovel/wrench which can be obtained through
illegals means. Parts you need to craft it can be found on the black
market uplink for a low price, but if it is not there you can find it on
the imports page on your hacked cargo console for 4400 credits usually.
Big Slappy makes you slow and you will get 10 recoil damage everytime
you hit someone and you will knock down your opponent for two seconds
while throwing people back like a baseball bat. It deals 30 damage and
is the fastest shovel/wrench out there. It can be folded into its wrench
form which will change its typing and makes it look like a wrench. It
also deals more damage in the wrench state, but also deals more recoil
damage and your target will not get knocked down. This weapon will
probably only appear in a few rounds since it has recoil damage, is slow
and costs a lot to obtain. It also has a longer meele attack cooldown.

To craft it you need 4 wrenches, 1 drill, 5 plasteel, 10 rods and 1 big
slappy parts using tools.

![promo](https://github.com/tgstation/tgstation/assets/25363960/4d619283-832c-4ce0-b3b2-e6ddb3dbd988)
## Why It's Good For The Game
Cool new weapon.
## Changelog
🆑
add: Added big slappy
image: Added big slappy parts and big slappy sprites
/🆑

* Big Slappy | Giant Weapon DLC [MERGE READY!!!]

---------

Co-authored-by: Comxy <tijntensen@gmail.com>
2023-08-14 19:27:01 -04:00
SkyratBot
e80057fe96 [MIRROR] Adds Mining Weather Radios [MDB IGNORE] (#23048)
* Adds Mining Weather Radios

* Update cargo.dm

* Moves these edits to modular

---------

Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-12 23:45:56 -04:00
SkyratBot
fc4b15b830 [MIRROR] removes dextrous_hud_type and healable var [MDB IGNORE] (#22992)
* removes dextrous_hud_type and healable var (#77244)

## About The Pull Request

I was working on some basic mob stuff and noticed this is a little
messy, so I made these changes separately.
I removed ``dextrous_hud_type`` because ``hud_type`` exists and can just
be used instead.
I also removed the ``healable`` var, because it was incorrectly used
(with the expectation that basic mobs had it too). Instead it will rely
on the mob being Organic, the check right under it, and I gave mob
biotypes to mobs that were not healable and had no biotype already.
I made a new biotype for slimes because I didn't find any other ones
that fit it (and gave it to slimepeople), but it is not used anywhere
other than to prevent them from healing from sutures, as I didn't want
to just set it to NONE. Thought this may be useful for the future.

## Why It's Good For The Game

``healable`` is checked on simple animals and basic mobs, despite basic
mobs not having this var. I do not want to add this var to basic mobs
either, I think checking for them being organic makes much more sense
and avoids having to make basic mobs less basic.

## Changelog

Nothing player-facing.

* removes dextrous_hud_type and healable var

* Modular

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-10 13:19:53 -04:00
SkyratBot
511662fa78 [MIRROR] Fixes gibtonite explosions producing flames and flashes [MDB IGNORE] (#22964)
* Fixes gibtonite explosions producing flames and flashes (#77344)

* Fixes gibtonite explosions producing flames and flashes

---------

Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
2023-08-09 16:54:10 -04:00
SkyratBot
b4638e4326 [MIRROR] Portals now have a colorful glow [MDB IGNORE] (#22888)
* Portals now have a colorful glow (#77298)

## About The Pull Request

Most instances of /obj/effect/portal now faintly glow their respective
color.

![image](https://github.com/tgstation/tgstation/assets/28870487/3044b435-d4e7-4ba5-86f9-ca6f9e4415c1)

This was taken in the dark, the glow isn't as noticeable in the light.

Anomaly/jaunter/mech wormholes do not glow, since they use the
black-and-grey swirly sprite and don't look like they'd emit any kind of
light.

Also autodocs some portal related vars and changes one proc to not use
single char vars.

I also tried adding a soundloop but it sounded kind of crappy so I
decided against it.
## Why It's Good For The Game

Makes the portals a little bit prettier :)
## Changelog
🆑 Rhials
qol: Most of the colored oval-shaped portals faintly glow now. Cool!
/🆑

* Portals now have a colorful glow

---------

Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
2023-08-05 14:55:19 -04:00
SkyratBot
377bf92754 [MIRROR] Basic Lobstrosity [MDB IGNORE] (#22827)
* Basic Lobstrosity (#77253)

## About The Pull Request

I'm slowly chipping away at mining mobs. These ones also got some new
sprites because the old ones were a bit weird except when facing South.

![image](https://github.com/tgstation/tgstation/assets/7483112/015b8819-bab8-471a-86ae-70b1597ae327)
Arctic Lobstrosities are now hairy to give them a little more visual
distinction from Lavaland ones.

In terms of behaviour, they're now a little faster and can charge you
from further away.
They will _only_ attack players who are incapacitated in some way
(primarily from being hit by their charge, but could be from a Goliath
or something too) and will otherwise keep their distance until they can
charge again. They move slower for a short duration after charging
though, so you have time to slap them a bit.

If a Lobstrosity downs you then it will try to snip off one of your
arms, then retreat in order to eat it.
Obviously nobody likes losing an arm, but this does give you an
opportunity to get away while it is distracted? Funnily enough the way
our health system works means that sometimes losing that arm actually
takes you out of soft crit so you can stumble back to the station for a
replacement (or try to wrestle yours back?)

All of these things are achievable also by a player if you make one
sapient, they will pull arms off mobs they attack which are in crit and
can eat arms if they see them lying around if they want.
I added an element to let you dismember people with your bare hands,
maybe someone evil can use it to add a beheading attack some day.

Here's a video of their new behaviours:
https://www.youtube.com/watch?v=9eKxsH7hD7Q

## Why It's Good For The Game

Gives mobs more character.
Reduces our list of frozen simple mobs.
Replaces some ugly side sprites.
Medbay enrichment?

## Changelog

🆑
refactor: Lobstrosities are now basic mobs and have different AI
behaviour. Please report anything which seems like it shouldn't be
happening.
add: Lobstrosities will now only opportunistically attack things they
have knocked over with their charge, and are otherwise timid.
add: Lobstrosities are hungry for fingers and will steal one of your
arms if they defeat you in combat, although this gives you time to crawl
away.
sprite: New sprites for Lobstrosities.
/🆑

* Basic Lobstrosity

* Modular paths

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-01 21:00:44 -04:00
SkyratBot
41a653d9d6 [MIRROR] Fixes staff of lava working on space tiles [MDB IGNORE] (#22757)
* Fixes staff of lava working on space tiles (#77161)

This makes no sense

🆑
fix: Staff of laval no longer works on space
/🆑

---------

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

* Fixes staff of lava working on space tiles

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-07-29 00:26:57 -04:00
SkyratBot
7b4237c692 [MIRROR] Implements usage of the REVERSE_DIR macro throughout the code. [MDB IGNORE] (#22743)
* Implements usage of the REVERSE_DIR macro throughout the code. (#77122)

## About The Pull Request
Replaces a ton of `turn(dir, 180)` calls with the aforementioned macro.

## Why It's Good For The Game
Afaik, `REVERSE_DIR` was coded to be faster than the classic `turn(dir,
180)` call, being a simple set of binary operations. To sum it up, micro
optimization.

## Changelog

N/A

* Implements usage of the REVERSE_DIR macro throughout the code.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-07-28 14:32:01 -04:00
SkyratBot
6a4323c872 [MIRROR] [no gbp] Goliaths make less mess [MDB IGNORE] (#22725)
* [no gbp] Goliaths make less mess (#77141)

## About The Pull Request

In an earlier PR I made Goliaths dig when they are bored. I still like
this behaviour as an ambient thing for them to do, but the consequence
is that after 30 minutes there were huge piles of sand all over
lavaland.
While convenient for actually having miners bring glass back to the
station, it was an eyesore and too much.

To resolve this I have made two changes:
- Goliaths dig 1/3 as often as they did before.
- Sand (and snow) which are left outside during a storm gets blown away
if it's not inside someone's inventory.

Together these prevent the accumulation of hundreds of piles of sand.

## Why It's Good For The Game

Fixes an unintended consequence of my actions.

## Changelog

🆑
add: Uncollected sand and snow will be blown away by the wind when
storms happen (but don't worry, storms also allow those turfs to be
freshly dug up again).
/🆑

* [no gbp] Goliaths make less mess

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-07-27 16:24:48 -04:00
SkyratBot
2bd7b5706c [MIRROR] [NO GBP] Fixes active conveyor belts not moving movables spawned on top of them. [MDB IGNORE] (#22703)
* [NO GBP] Fixes active conveyor belts not moving movables spawned on top of them. (#77104)

There's one instance of the old signal I've missed from #76376, all
because lists treat undefined keys like text strings.

* [NO GBP] Fixes active conveyor belts not moving movables spawned on top of them.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-07-26 18:15:32 -04:00
SkyratBot
6a5f3c50c4 [MIRROR] Material container & related stuff ui refactors & clean-up [MDB IGNORE] (#22667)
* Material container & related stuff ui refactors & clean-up (#76220)

## About The Pull Request

**1. Material container clean-up & refactor**
- Replaced `total_amount` var with `total_amount()` proc, this var can
be easily computed by summing up all material amounts rather than
storing it as a var which is tedious to update & keep track of when
materials are added/removed
- Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`,
and `get_categories()`. These procs are not used anywhere in the
codebase so let's remove them & make some space.
- Callbacks are replaced with signals, the callbacks don't need to be
explicitly garbage collected & having macros & procs marked with
`SIGNAL_HANDLER` makes your intentions more readable & explicit.
- Fixes #76151
All material adding, removal, checking operations are "Integer"
operations, i.e. the final value is rounded & them made 1 if the final
value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better
name]. No more dealing with decimal value materials
The problem was after the protolathe was upgraded with better parts all
the design costs were multiplied with a decimal `efficiency_coeff`
value, this means even though in the UI the cost was displayed as 60
bluespace crystals its actual cost was `60.0001` something in the
backend causing this check for materials to fail & print the error
message.
- Replaced `GetComponent(/datum/component_material_container)` with just
a simple ref to the material container when adding the component, so we
can save some overhead from calling this proc
- Gave all procs a ton of documentation with documentation having
documentation
- Fixes #76506 RCD and other devices that uses the silo link upgrade now
have the correct material usages
- Fixes #72096. It wasn't just a problem with ancient protolathe but
with all machines that used `datum/component/remote_materials` the
problem was remote materials would add an instance of
`datum/remote/material_container` if it wanted to use local storage but
this component would get added before `datum/component/remote_materials`
could be registered i.e. it comes before remote_materials in the
component list. So when the machine is destroyed it will first destroy
`material_container` & then `remote_materials` therefore destroying the
materials before they could get ejected
- Silo link is established when parent is registered with remote
materials raher than adding an external timer which is faster
- Everything that uses a material container will auto eject their sheets
when destroyed
- Moved this & remote materials into its own folder for better
organization

**2. Material UI Changes**
- Removed the x25 & x50 print buttons from the autolathe, now they just
have x5 & x10 buttons like the protolathe, These buttons were of no use
since you could just type the exact amount you want to print in the
`[Max: <some amount>]` side bar. The code to compute these buttons was
just plain right nasty & some of it unused in the UI.
- The material eject button in the material bar does not gray out when
you can eject exactly one sheet
- All material cost are integer values rounded
- Fixes #76253 Exosuit Fabricator sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Component printer material bar sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Autolathe Material bars now display number of sheets available
- Max printable amount of items are now computed & updated correctly in
the UI. They were displaying wrong values & now get updated when items
are printed, materials are removed
- Silo hold actually works now. When a machine is put on hold it calls
this proc

e929cf39cd/code/datums/components/remote_materials.dm (L78-L87)
Notice how the key is `src` so we should be consistent during checking
if a machine is on hold using the same `src` var. But for some reason we
did dumb shit like this

e929cf39cd/code/datums/components/remote_materials.dm (L150-L153)
What is category? Why do we care for the area the machine is in? None of
it made sense so i removed all that junk and just made it check for
`src` like it should
- Removed redundant `removable` & `sheets` var from the material
container ui_data. These vars are unused in the UI
- If an item does not have the required materials then upon clicking
that item you will not get any error message but instead nothing happens

## Changelog
🆑
fix: items can be printed from autolathe & protolathe when the exact
material amounts are present in them after upgrading
fix: max printable amount now shows the correct value & updates when
items are printed, materials are removed in the autolathe & protolathe
fix: component printer material bar is not greyed out when there are
sufficient materials to eject
fix: rcd and other devices that uses the silo link upgrade now have the
correct material usages
fix: silo hold actually works
fix: machines using local storage to hold materials will eject it's
materials as sheets when deconstructed/destroyed
refactor: Autolathe Material bars now display number of sheets available
refactor: printing an item that does not have enough materials will fail
silently with no error messages
refactor: Drone dispenser will eject sheets upon deconstruction
refactor: all things that store materials will auto ejects its sheets(if
there is sufficient material) when destroyed
refactor: inserting an item into the material container will display the
units consumed as sheets not absolute units
refactor: removed x25 & x50 print buttons from the autolathe

* Material container & related stuff ui refactors & clean-up

* Update ammo_workbench.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-25 02:53:43 -04:00
SkyratBot
46ee262598 [MIRROR] made the bee a basic insect [MDB IGNORE] (#22652)
* made the bee a basic insect (#76971)

## About The Pull Request
the bee now a baisc insect he will now go to find his home and he will
go and pollinated the plants and helped the queen make children by
polliniting the plants and he will. the queen will leve the hive more
rarely than the normal bees so she can stay in the hive to make kids

## Why It's Good For The Game
the bee now is a basic insect so it means he have a better ai

## Changelog
🆑
balance: the bee now can fly over the machines so its easy for him to go
to the hydroponics machine
fix: player bees now will not be stuck inside the hive if he entered it,
they can now leave it
fix: fixed a har deleted when the hive is deleted all the bees still
have a refence to the hive now its fixed
fix: now when a player interacted with the bee hive the bees will now
leave the hive to defend the hive (it was glitched)
refactor: the bees now are a basic insect.
/🆑

* made the bee a basic insect

* Merge conflict

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-24 01:21:59 -04:00
SkyratBot
08c90f2116 [MIRROR] [MDB IGNORE] Angled Lights & Lighting Prototyping Tool [MDB IGNORE] (#22582)
* [MDB IGNORE] Angled Lights & Lighting Prototyping Tool  (#74365)

## About The Pull Request

Hello friends, I've been on a bit of a lighting kick recently, and I
decided I clearly do not have enough things to work on as it is.
This pr adds angle support to static lights, and a concepting/debug tool
for playing with lights on a map.

Let's start from first principles yeah?

### Why Angled Lights?

Mappers, since they can't actually see a light's effect in editor, tend
to go off gut.
That gut is based more off what "makes sense" then how things actually
work
This means they'll overplace light sources, and also they tend to treat
lights, particularly light "bars" (the bigger ones) as directional.
So you'll have two lights on either sides of a pillar, lights inside a
room with lights outside pointing out, etc.

![image](https://user-images.githubusercontent.com/58055496/228785032-63b86120-ea4c-4e52-b4e8-40a4b61e5bbc.png)

This has annoying side effects. A lot of our map is overlit, to the
point that knocking out a light does.... pretty much nothing.
I find this sad, and would like to work to prevent it. I think dark and
dim, while it does not suit the normal game, is amazing for vibes, and I
want it to be easier to see that.

Angled lights bring how lights work more in line with how mappers expect
lights work, and avoids bleedover into rooms that shouldn't be bled
into, working towards that goal of mine.

### How Angled Lights?

This is more complex then you'd first think so we'll go step by step

![image](https://user-images.githubusercontent.com/58055496/228786117-d937b408-9bc2-4066-9aee-aae21b047151.png)

Oh before we start, some catchup from the last time I touched lighting
code.
Instead of doing a lighting falloff calculation for each lighting corner
(a block that represents the resolution of our lights) in view we
instead generate cached lightsheets. These precalculate and store all
possible falloffs for x and y distances from a source.

This is very useful for angle work, since it makes it almost totally
free.

Atoms get 2 new values. light_angle and light_dir
Light angle is the angle the light uses, and light_dir is a cardinal
direction it displays in

We take these values, and inside sheetbuilding do some optional angle
work. getting the center angle, the angle of a pair of coords, and then
the delta between them.
This is then multiplied against the standard falloff formula, and job
done.

We do need some extra fenangling to make this all work nicely tho.

We currently use a pixel turf var stored on the light source to do
distance calculations.
This is the turf we pretend the light source is on for visuals, most
often used to make wall lights work nice.
The trouble is it's not very granular, and doesn't always have the
effect you might want.

So, instead of generating and storing a pixel turf to do our distance
calculations against, we store x and y offset variables.
We use them to expand our working range and sheet size to ensure things
visually make sense, and then offset any positions by them.

I've added a way for sources to have opinions on their offsets too, and
am using them for wall lights.
This ensures the angle calculations don't make the wall behind a light
fulldark, which would be silly.

### Debug Tool?

In the interest of helping with that core problem, lights being complex
to display, I've added a prototyping tool to the game.
It's locked behind mapping verbs, and works about like this.

Once the verb is activated, it iterates over all the sources in the
world (except turfs because those are kinda silly), outlining and
"freezing" them, preventing any future changes.
Then, it adds 3 buttons to the owners of a light source.

![image](https://user-images.githubusercontent.com/58055496/228776539-4b1d82af-1244-4ed6-8754-7f07e3e47cda.png)
The first button toggles the light on and off, as desired.
The third allows you to move the source around, with a little targeting
icon replacing your mouse
The second tho, that's more interesting.

The second button opens a debug menu for that light

![image](https://user-images.githubusercontent.com/58055496/228777811-ae620588-f08a-4b50-93a0-beea593aea77.png)
There's a lot here, let's go through it.

Bit on the left is a list of templates, which allow you to sample
existing light types (No I have no idea why the background is fullwhite,
need to work on that pre merge)
You can choose one by clicking it, and hitting the upload button.

This replaces your existing lighting values with the template's,
alongside replacing its icon and icon state so it looks right.
There are three types as of now, mostly for categorization. Bar, which
are the larger typically stronger lights, Bulb, which are well, bulbs,
and Misc which could be expanded, but currently just contains floor
lights.

Alongside that you can manually edit the power, range, color and angle
of the focused light.
I also have support for changing the direction of the light source,
since anything that uses directional lighting would also tie light dir
to it.
This isn't *always* done tho, so I should maybe find a way to edit light
dir too.

My hope is this tool will allow for better concepting of a room's
lights, and easier changing of individual object's light values to suit
the right visuals.

### Lemon No Why What

Ok so I applied angle lights to bars and bulbs, which means I am
changing the lighting of pretty much every map in the codebase.
I'm gonna uh, go check my work.

Alongside this I intend to give lighting some depth. So if there's room
to make a space warmer, or highlight light colors from other sources, I
will do that.

(Images as examples)

![image](https://user-images.githubusercontent.com/58055496/228786801-111b6493-c040-4199-ab99-ac1c914d034c.png)

I also want to work on that other goal of mine, making breaking lights
matter. So I'll be doing what I can to ensure you only need to break one
light to make a meaningful change in the scene.

This is semi complicated by one light source not ever actually reaching
fullbright on its own, but we do what we must because we can.

![image](https://user-images.githubusercontent.com/58055496/228786483-b7ad6ecd-874f-4d90-b5ca-6ef78cb70d2b.png)

I'm as I hope you know biased towards darker spaces, I think contrast
has vibes.
In particular I do not think strong lights really suit maintenance.

Most of what is used there are bulbs, so I'm planning on replacing most
uses with low power bulbs, to keep light impacts to rooms, alongside
reducing the amount of lights placed in the main tunnels

![image](https://user-images.githubusercontent.com/58055496/228786594-c6d7610c-611e-478b-bcba-173ebf4c4b12.png)

**If you take issue with this methodology please do so NOW**, I don't
want to have to do another pass over things.
Oh also I'm saving station maps for last since ruins are less likely to
get touched in mapping march and all.

### Misc + Finishing Thoughts

Light templates support mirroring vars off typepaths using a subtype,
which means all the templates added here do not require updating if the
source type changes somehow. I'd like to expand the template list at
some point, perhaps in future.

I've opened this as a draft to make my intentions to make my changes to
lights known, and to serve as motivation for all the map changes I need
to do.

### Farish Future

I'm unhappy with how we currently configure lights. I would like a
system that more directly matches the idea of drawing falloff curves,
along with allowing for different falloffs for different colors,
alongside extending the idea to angle falloff.
This would make out of engine lighting easier, allow for nicer looking
lights (red to pink, blue to purple, etc), and improve accessibility by
artists.

This is slightly far off, because I have other obligations and it's
kinda complicated, but I'd like to mention it cause it's one of my many
pipedreams.

## Changelog
🆑
add: Added angle lighting, applies it to most wall lights!
add: Adds a lighting prototyping tool, mappers go try it out (it's
locked behind the mapping verb)
/🆑

---------

Co-authored-by: MMMiracles <lolaccount1@ hotmail.com>

* [MDB IGNORE] Angled Lights & Lighting Prototyping Tool

* Update north_star.dmm

* Revert "Update north_star.dmm"

This reverts commit bb5b8b5a549f7edc3e23a369a147ed96bab41991.

* Updatepaths

* Update nukie_base.dmm

* Newer version of northstar with the penguins

* Update northstar_cryo.dmm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: MMMiracles <lolaccount1@ hotmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-21 00:43:21 -04:00
Pinta
4d7ba6ebcb [MANUAL MIRROR] Reworks Duffel Bags (Zippers) (#22363)
* Reworks Duffel Bags (Zippers)

* Update backpack.dm

* Duiffel Spotfix

* error fixes

* Update backpack.dm

* Update code/modules/antagonists/cult/cult.dm

* Update backpack.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-07-20 23:12:57 -04:00