Commit Graph

9043 Commits

Author SHA1 Message Date
SkyratBot
24afc641c5 [MIRROR] hygeienbots basic bots [MDB IGNORE] (#25923)
* hygeienbots basic bots (#80435)

## About The Pull Request
turns hygenic bots into basic bots. also now PAIs and people can play as
hygeinebots. and they can wear hats

## Why It's Good For The Game
transforms hyginebots into basic bots. their old AI used to handle all
the logic. i moved some of the logic to the mob itself so players can
also clean (or burn) things. also this pr will add pathing limits to
bots, in the case the jps movement thinks it can reach something, but
actually cant, in which case the bot will give up the chase

## Changelog
🆑
refactor: hygeinebots are now basic bots. please report all the bugs
fix: fixes hygenebots not being able to patrol
add: hygeinebots can now be controlled by Players
/🆑

* hygeienbots basic bots

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2023-12-31 14:45:33 +00:00
SkyratBot
eaded02abe [MIRROR] Fixing the transhumanist quirk. [MDB IGNORE] (#25915)
* Fixing the transhumanist quirk. (#80603)

## About The Pull Request
Apparently `get_bodypart_score` was being called on simple/basic mobs
too.

## Why It's Good For The Game
I've seen a few runtimes about it on Terry.

## Changelog

🆑
fix: The transhumanist quirk now should work as intended.
/🆑

* Fixing the transhumanist quirk.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-12-30 21:23:28 +00:00
SkyratBot
8eeca186df [MIRROR] Cleans up some extra args in Destroy() [MDB IGNORE] (#25907)
* Cleans up some extra args in Destroy() (#80642)

## About The Pull Request

After https://github.com/tgstation/tgstation/pull/80628, these shouldn't
be needed anymore right?

## Why It's Good For The Game

Cleans up some vestigial code

## Changelog
EDIT: Not player-facing.

* Cleans up some extra args in Destroy()

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-12-30 01:21:26 -05:00
SkyratBot
994355eb89 [MIRROR] [NO GBP] Poll Alerts cleanup [MDB IGNORE] (#25899)
* [NO GBP] Poll Alerts cleanup (#80572)

~Hopefully the candidates number and signed up overlay should show up
for everyone now and be more responsive~

Ghommie tackled most of it in
https://github.com/tgstation/tgstation/pull/80610

I think the candidate number overlay updating is done incorrectly in his
PR though.
Candidate number overlay should be updated for ALL candidates' poll
alert buttons, whenever ANY candidate enters/leaves the poll

* [NO GBP] Poll Alerts cleanup

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
2023-12-29 22:11:30 +01:00
SkyratBot
75cd7f69f6 [MIRROR] A "postal workers strike" negative station trait. (can be positive) [MDB IGNORE] (#25874)
* A "postal workers strike" negative station trait. (can be positive)

* Update shuttle_loan_datum.dm

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-29 18:25:27 +00:00
SkyratBot
b4d3b18bae [MIRROR] Fixing the constant poll alert runtimes, and the selector outline not being updated. [MDB IGNORE] (#25891)
* Fixing the constant poll alert runtimes, and the selector outline not being updated. (#80610)

* Fixing the constant poll alert runtimes, and the selector outline not being updated.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-12-29 18:14:38 +00:00
SkyratBot
f837ce8444 [MIRROR] Makes immerse use weakrefs [MDB IGNORE] (#25876)
* Makes immerse use weakrefs (#80594)

## About The Pull Request
Immerse was causing harddels due to it having references to mobs. Makes
it use weakrefs for mobs instead.

## Why It's Good For The Game
Immerse would cause harddels if a mob was deleted while it was in it's
list. It could probably also happen if a turf was deleted too, but doing
that here would be much harder.

no CL since nothing playerfacing

* Makes immerse use weakrefs

---------

Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
2023-12-29 18:13:44 +00:00
SkyratBot
067188d366 [MIRROR] Micro-optimize qdel by only permitting one parameter [MDB IGNORE] (#25889)
* Micro-optimize qdel by only permitting one parameter (#80628)

Productionizes #80615.

The core optimization is this:

```patch
-	var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
+	var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up.
```

We avoid a heap allocation in the form of copying the args over to a new
list. A/B testing shows this results in 33% better overtime, and in a
real round shaving off a full second of self time and 0.4 seconds of
overtime--both of these would be doubled in the event this is merged as
the new proc was only being run 50% of the time.

* Micro-optimize qdel by only permitting one parameter

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-12-29 14:41:12 +00:00
SkyratBot
09351396ec [MIRROR] Fixes AI behavior with breaking cuffs and resisting aggressive grabs [MDB IGNORE] (#25888)
* Fixes AI behavior with breaking cuffs and resisting aggressive grabs (#80328)

## About The Pull Request

Makes it so that ai's recognize they're in a do_after after resisting,
preventing them from processing and interrupting the do_after while
they're in a condition that necessitates it. If it gets interrupted then
they'll process as normal, or if they finish they'll be free.
## Why It's Good For The Game

Monkeys can now resist things that they should've been, such as
aggressive grabs or cuffs, instead of having their ai completely freeze
when they're cuffed.
## Changelog
🆑
fix: ai can now tell if it is in a do_after for resisting and will not
interrupt it. monkeys also now don't freeze up when aggressively grabbed
and will resist out of those and cuffs.
/🆑

* Fixes AI behavior with breaking cuffs and resisting aggressive grabs

---------

Co-authored-by: Diamond_ <novadiamonddigger@gmail.com>
2023-12-28 08:09:15 -08:00
SkyratBot
3e6edd73ee [MIRROR] Add system for safely manipulating JSON databases and apply it to photo albums and photo frames [MDB IGNORE] (#25887)
* Add system for safely manipulating JSON databases and apply it to photo albums and photo frames (#80519)

We frequently have issues with data loss in our long storage .json files
for various reasons, such as the file being completely blanked out on
write etc.

This introduces a system that tries to safely handle that by saving the
known working json file into a backup that will be loaded in the case a
write fails.

This system queues updates in order to send through to the next tick.
This is an improvement over the existing implementation of photo albums
and photo frames (I think all persistence, even) which do not save until
the end of a properly rebooted round, but not during a server crash.

Also saves the jsons in pretty prints, which make them easier to read
but especially make them easier to diff in a git repository, which MSO
wants to setup (and hopefully make public so I can make a dashboard on
bus.moth.fans for looking at photo albums and their history, which is
something I've wanted to do for a very long time).

## Changelog
🆑
refactor: Photo albums and photo frames are now more resilient to data
loss, especially when a server crashes.
/🆑

* Add system for safely manipulating JSON databases and apply it to photo albums and photo frames

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-12-28 08:08:13 -08:00
SkyratBot
66884aae13 [MIRROR] Add 50% graffiti speed boost to tagger quirk [MDB IGNORE] (#25886)
* Add 50% graffiti speed boost to tagger quirk (#80567)

## About The Pull Request

This gives the tagger quirk a 50% speed boost when drawing graffiti.
There was also some unused variable intended to make large graffiti more
time consuming that is now fixed.

## Why It's Good For The Game

It'd be nice to be able to spraypaint messages on the floor quicker.
Especially if you are doing a gimmick that requires making a shop sign
using letters.

## Changelog

🆑
add: Add 50% graffiti speed boost to tagger quirk
fix: Fix time duration of large graffiti not applying properly
/🆑

* Add 50% graffiti speed boost to tagger quirk

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
2023-12-28 08:00:03 -08:00
SkyratBot
99bf83f35d [MIRROR] Fixes for mat container & ORM [MDB IGNORE] (#25885)
* Fixes for mat container & ORM (#80573)

## About The Pull Request
- Fixes #80559

1) The ORM now hooks onto the local container only if off station. The
ui act if statement was also messed up but that's fixed now too.

2) Creates a dedicated signal for items inserted into the silo for
clarity & uses the helper proc defined inside remote materials for
inserting items so we don't have to specify the `context` manually.

3) Properly updates the auto Doc for the container signal defines

## Changelog
🆑
fix: Off station ORM's can redeem points again.
/🆑

* Fixes for mat container & ORM

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-12-28 07:58:44 -08:00
SkyratBot
d538bf0de0 [MIRROR] Optimize find_potential_targets self cost [MDB IGNORE] (#25883)
* Optimize find_potential_targets self cost (#80602)

![image](https://github.com/tgstation/tgstation/assets/35135081/84ae20b6-5f44-4a69-bda3-0df1435dea5c)

`find_potential_targets/perform` currently has a pretty bad self cost in
part due to it running a second "loop over everything in range" check to
find turrets and mechs. This doesn't drop it down by as much as I'd like
because it still needs `hearers`, it still shows up pretty high, but
this at least cuts out some unnecessary work.

Best case is likely to minimize work AIs need to do when there are no
players on their z-level, as there are a lot of calls from Lavaland.

* Optimize find_potential_targets self cost

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-12-28 07:55:30 -08:00
SkyratBot
fbdaee4492 [MIRROR] Fix some incorrect uses of "src" in energized component [MDB IGNORE] (#25882)
* Fix some incorrect uses of "src" in energized component (#80613)

## About The Pull Request
Fixes this:

![image](https://github.com/tgstation/tgstation/assets/35135081/d4265136-9324-4057-992b-fbc9a6f6eb46)

Untested

## Changelog
🆑
fix: Fixed "was shocked by /datum/component/energized" message.
/🆑

* Fix some incorrect uses of "src" in energized component

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-12-28 07:54:25 -08:00
SkyratBot
a0ffc717f1 [MIRROR] Fixes wallmounted lights falling on drag [MDB IGNORE] (#25880)
* Fixes wallmounted lights falling on drag (#80609)

## About The Pull Request

Being able to move around lights when using the light debugger is
important
Can't just be qdeling em whenever you try

Closes https://github.com/tgstation/tgstation/issues/78662
## Changelog
🆑
fix: Dear mappers, the light debugger tool no longer deletes dragged
wall lights
/🆑

* Fixes wallmounted lights falling on drag

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-12-28 07:51:57 -08:00
SkyratBot
e8d1502bea [MIRROR] Reverts Canister Wiring (#80265) [MDB IGNORE] (#25875)
* Reverts Canister Wiring (#80265) (#80607)

## About The Pull Request

Reverts #80265

It's a cool idea, but the ability to toggle valves/control pressure make
this just a ttv but without the access issues we tie to that.
Eats into that space way too much.

Removing those but not the rest results in disappointment, so I'm just
full removing this.
I am keeping the code quality changes, screentips, that sort of thing
tho. That bit goes hard.
Also, refactored a few procs slightly to make them easier to read. Early
returns, sane loops, etc.

## Why It's Good For The Game

Closes #80604
Cheap remote mass producible maxcaps are a bad idea actually
Sorry I didn't catch this in review, been resting for the week

## Changelog
🆑
del: Removes the wires from canisters. It's a cool idea, but cheap
controlled maxcaps are bad actually
/🆑

* Reverts Canister Wiring (#80265)

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-12-28 07:44:34 -08:00
SkyratBot
cf00bcb7b7 [MIRROR] basic bot path huds and medbot research [MDB IGNORE] (#25870)
* basic bot path huds and medbot research (#80277)

## About The Pull Request
this pr integrates the bot path huds to ai controllers and move loops to
allow basic bots to display their paths in the hud.
also closes #80280 and closes #80330

## Why It's Good For The Game
basic bots now can display their path on huds

## Changelog
🆑
add: basic bots can now display their paths on huds
fix: medbots can research healing again
/🆑

* basic bot path huds and medbot research

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2023-12-27 09:46:33 -05:00
SkyratBot
fc6f6176d8 [MIRROR] General maintenance for chem heater [MDB IGNORE] (#25854)
* General maintenance for chem heater (#80495)

## About The Pull Request

1. Converted UI to typescript
2. Removed all tutorial code(and the icon files it used) Also removes
the reward that came with it. Both were not a big deal to begin with so
you know no one will miss it, In the name of code clean up and reducing
dmi file sizes it serves us better removing them

    It did not compile in the new UI
![Screenshot
(368)](https://github.com/tgstation/tgstation/assets/110812394/cff143c8-5239-45e0-932d-df6447ab359b)
And the text to display is way too clunky to be readable code wise (no
indentation just big raw blobs of unorganized text)

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L334-L339)

And the steps manually set chem temps and volumes without calling the
appropriate procs basically its a mess so best to throw it all away.

3. Fixed the debug chem heater only absorbing 100 units of buffer from
the beaker even though it has a capacity of 2000. This is because it
used a constant of 100 for calculating how much volume to absorb

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L449)
Even though the debug chem heater has a capacity over 1000

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L495-L497)
Now the absorbing mechanism is based on the `maximum_volume` of the
holder and not on a fixed constant
4. Fixed the chem heater showing the wrong overlay when its panel is
opened and then closed while a beaker is inside
It would use the same icon for both open & closed state

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L164)
But it should actually use this state

9983b883f7/code/modules/reagents/chemistry/machinery/chem_heater.dm (L59)
That's fixed now too.
5. Removed unused procs, variables and a whole lot of tracking which
UI's are opened/closed. All this is not necessary because the `SStgui`
subsystem tracks them for you so it was a lot of code bloat. autodocs
vars, procs and the regular stuff
6. Added more examines & tooltips for chem heater

## Changelog
🆑
fix: debug chem heater now withdraws more than 100 units from its
inserted beaker.
fix: chem heater has correct overlay when its panel is closed with a
screwdriver while a beaker is inside.
qol: added more examines and tooltips for the chem heater.
code: converted chem heater UI to typescript. removed unused procs,
vars, ui tracking code. Added auto doc for everything.
refactor: removed chem heater tutorial help button & its related reward,
chem heater code has been optimized as a whole.
/🆑

* General maintenance for chem heater

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-12-25 20:38:41 +00:00
SkyratBot
fd2e346683 [MIRROR] Fixes throwing hard del [MDB IGNORE] (#25846)
* Fixes throwing hard del (#80551)

## About The Pull Request

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

## Why It's Good For The Game

Less CI failures

## Changelog

🆑
fix: fixes a hard del with thrown items
/🆑

* Fixes throwing hard del

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-25 12:15:06 +00:00
SkyratBot
4dadfa63bd [MIRROR] Stops the automute from triggering for pet commands [MDB IGNORE] (#25842)
* Stops the automute from triggering for pet commands (#80421)

## About The Pull Request
Thanks goodness they've done the signal already for the deadchat control
component.

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

## Changelog

🆑
fix: Regal rats (and others), won't be punished by the automute system
for repeating the same command several times.
/🆑

* Stops the automute from triggering for pet commands

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-12-25 10:14:56 +00:00
SkyratBot
33d7bdecc2 [MIRROR] Removes material breakdown flags, traits & miscellaneous fixes. [MDB IGNORE] (#25836)
* Removes material breakdown flags, traits & miscellaneous fixes. (#80389)

## About The Pull Request
1. Removes material breakdown flags i.e. all flags with the format
`BREAKDOWN_XXX`. These flags do nothing, there are no special checks to
transform materials based on these flags, they are passed around just
because certain procs require them for syntax purposes only.

Apparently there were plans to make these flags do something special
from the comment

302247c0d1/code/__DEFINES/construction/material.dm (L43)
But nobody got any ideas for years now. The only special thing we can do
with them now is remove them and reduce code clutter, so let's do that

The only flag that ever did something was the
`BREAKDOWN_INCLUDE_ALCHEMY` flag. This only worked when coupled together
with `TRAIT_MAT_TRANSMUTED` trait(which is only used by the reagent
metalgen) and when both this trait & flag are combined together... they
still do nothing

302247c0d1/code/game/atom/atom_materials.dm (L41-L42)
Yup they cancel out each other to prevent returning an empty list, the
traits only job was to prevent materials from being recycled (like why?
what's the benefit of that? nothing) and the flag was meant to bypass
this restriction so both the trait & the flag cancel out each other
therefore doing nothing meaningful. Best remove them both and call it a
day.

2. Fixes an error in displaying number of sheets inserted into a mat
container when that sheet is made up of alloy materials. it would count
as 2 or more because it would take the sum of total material amount
inserted and not the actual sheets. That's fixed now.

3. Remote materials now properly respect the `MATCONTAINER_NO_INSERT`
flag

4. Adds helper proc to insert materials via the remote material
component with proper context

## Changelog
🆑
fix: mat container displays correct number of sheets inserted for alloy
materials.
fix: remote materials now properly respect the `MATCONTAINER_NO_INSERT`
flag.
code: removes material breakdown flags and related traits.
code: adds helper proc to insert materials via the remote material
component with proper context.
/🆑

* Removes material breakdown flags, traits & miscellaneous fixes.

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-12-25 10:13:29 +00:00
SkyratBot
82672c29d5 [MIRROR] Canisters: Wires, Rigging and Screentips [MDB IGNORE] (#25835)
* Canisters: Wires, Rigging and Screentips (#80265)

## About The Pull Request
Added 6 wires to gas canisters, accessible when you screw open the panel
Toggle valve, toggle shielding, min pressure, max pressure, eject tank,
toggle reaction suppression (only works with hypernob crystal'd
canisters)
Pulsing the wires only works if the canister has a cell

You can attach dual assembly combos to canisters too, doesn't have to be
an igniter combo, could be a prox-signaler or timer-signaler. These are
visible on the canister sprite and can be removed by right-clicking the
canister. Visible assemblies don't trigger anything inside the canister,
it's like taping it to the canister, also looks more menacing.

Also added screentips to canisters
## Why It's Good For The Game
Emergent gameplay, more possibilities with atmos automation and
contraptions, can make traps like a proximity sensor N2O canister in
maint for cult conversions, anything

AND YES EVERYTHING IS LOGGED NO STEALTH GRIEFING POSSIBLE

## Video

https://github.com/tgstation/tgstation/assets/46101244/922465b3-9f9c-4b7b-8769-fca6df3b87a3

## Changelog
🆑
add: Canisters now have wires! You can pulse wires to do various
canister functions like opening/closing the valve. Make sure it has a
cell though.
add: You can rig assembly combos (igniter-timer, prox-signaler, etc.)
onto canisters
qol: Canisters now have screentips
/🆑

* Canisters: Wires, Rigging and Screentips

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
2023-12-25 02:23:05 +00:00
SkyratBot
922ec66ee7 [MIRROR] Better Ghost Selection [MDB IGNORE] (#25789)
* Better Ghost Selection

* yes

* oldcode updates and compat

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-25 00:11:10 +00:00
Gandalf
9361376345 PDA update (Messenger works while dead, Microwave works, etc). (#80069) [REMIRROR] (#25829)
* PDA update (Messenger works while dead, Microwave works, etc). (#80069)

This is an update that touches many more things all at once (compared to
my other PRs) meant to make PDAs in general feel more consistent and not
take away from one of the experiences we want to encourage: interaction
between players.

1. Replaced all checks of a 'pda' with a 'modular pc'. This means
technically (though not done in-game currently) other modpcs can hold an
uplink, and microwaves can charge laptops.
2. Speaking of microwave, they now don't break and require
deconstruction if the cell is removed mid-charge.
3. When a Mod PC is out of power, it will now allow the Messenger to
work (which now also doesn't consume any additional power), if the app
exists on the PC. Here's a video demonstration

https://github.com/tgstation/tgstation/assets/53777086/7ae12f81-a271-49b8-95fa-2ba54d2e2d1f

4. Flashlights can't be turned on while the cell is dead
5. I replaced a bunch of program vars with ``program_flags`` and renamed
``usage_flags`` to ``can_run_on_flags``.
6. Added a debug modPC that has every app installed by default. Mafia
had some issues in the past that were unknown because Mafia wasn't
preinstalled with any tablet so was never in create & destroy nor in any
other unit test. This was just an easy solution I had, but PDAs should
get more in-depth unit tests in the future for running apps n stuff- I
just wanted to make sure no other apps were broken/harddeling.

Currently when a PDA dies, its only use is to reply to PDA messages sent
to you, since you can still reply to them. Instead of just fixing it and
telling players to cope, I thought it would be nice to allow PDA
Messenger to still work, as it is a vital app.
You can call it some emergency power mode or whatever, I don't really
mind the reason behind why it is this way.

When I made cells used more on PDAs, my main goal was to encourage
upgrading your PDA and/or limiting how many apps you use at once, I did
not want this to hit on players who use it as a form of interaction.
This is the best of both worlds, I think.

The rest of the changes is just for modularity, if some downstream wants
to add tablets, phone computers, or whatever the hell else, they can
still get just as far as PDAs should be able to get to, hopefully.

🆑
add: PDAs with a dead power cell are now limited to using their
Messenger app.
fix: Microwaves now stop charging PDAs if the cell was removed
mid-charge.
fix: Microwaves can now charge laptops.
fix: PDA Flashlights can't be turned on while the PDA is dead.
fix: You can now hold a laptop up to a camera (if it has a notekeeper
app installed) like PDAs already could.
/🆑

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>

* ok

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-12-24 23:20:11 +00:00
SkyratBot
d718af9913 [MIRROR] Bridge Assistant Station Trait [MDB IGNORE] (#25667)
* Bridge Assistant Station Trait

* Diffs

* fixes

* Update job_traits.dm

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:54:11 +00:00
SkyratBot
25b05ac565 [MIRROR] Change how a station trait is declared abstract [MDB IGNORE] (#25581)
Change how a station trait is declared abstract

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 21:30:34 +00:00
SkyratBot
e1e76ed804 [MIRROR] Save json savefiles to disk in pretty print form [MDB IGNORE] (#25812)
* Save json savefiles to disk in pretty print form (#80512)

Pretty printed json files are easier to store file history for.

* Save json savefiles to disk in pretty print form

---------

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2023-12-24 20:59:14 +00:00
SkyratBot
0f1761fa40 [MIRROR] Color matrix defines for filters and identity [MDB IGNORE] (#25823)
* Color matrix defines for filters and identity (#80320)

This PR converts the procs `color_matrix_identity`,
`color_matrix_lightness` and `color_matrix_contrast` into
defines/macros. Also adds in defines for common color matrix filters.

I don't like how `color_matrix_identity` is a one-line proc with no arg.
Also these help people identify the sort of color matrix filter is being
used.

* Color matrix defines for filters and identity

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-12-24 20:58:26 +00:00
SkyratBot
4102ead7a6 [MIRROR] Fix "/datum/element/damage_threshold looks unharmed!" [MDB IGNORE] (#25825)
* Fix "/datum/element/damage_threshold looks unharmed!" (#80546)

Fixed a bug that would give you the chat message

* Fix "/datum/element/damage_threshold looks unharmed!"

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-12-24 20:58:11 +00:00
SkyratBot
aaa8c8128b [MIRROR] Fixes labcoats having the wrong sprites when thrown [MDB IGNORE] (#24772)
* Fixes labcoats having the wrong sprites when thrown

* fixes

* Update three_layer_hats.json

---------

Co-authored-by: D4C-420 <75496851+D4C-420@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 20:44:16 +00:00
SkyratBot
55482d6880 [MIRROR] Sign up for Cargorilla from the lobby [MDB IGNORE] (#25572)
* Sign up for Cargorilla from the lobby

* Modular

* Update jobs.dm

* our title screen compat

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 20:14:28 +00:00
SkyratBot
b79167c173 [MIRROR] Organ movement refactor *Un-nullspaces your organs* [MDB IGNORE] (#25530)
* Organ movement refactor *Un-nullspaces your organs*

* Fix conflicts

I checked the conflicts on the two weird conflicts and no previous TG pr touches them i assume its just github being github because those shoulden't be conflicts *shrug

* Fix #1 uhh...this is going to be a long one

* Fix #2 Modular Movement Flags

* Fix #3 It builds now

* Fix #4 Oh god it builds now, I missed some things

* Fix #5 No more Runtimesplosion Now time for Synths

* Update nightmare_organs.dm

* on_mob_insert

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

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

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

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

* bro the fucking brain does not go into the chest.

* seriously? undocumented code causing shit. if it breaks ghouls, so be it.

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 19:06:09 +00:00
SkyratBot
2c789e5276 [MIRROR] Replaces cyborg lover with transhumanist [MDB IGNORE] (#25811)
* Replaces cyborg lover with transhumanist (#80509)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
This reworks cyborg lover to be more interesting. Taking this quirk will
start the user off with a robotic limb. The user gains mood buffs by
being around silicon based lifeforms and loses mood by being around
organic based lifeforms.
Additionally, they can gain mood buffs by replacing all of their limbs
to their silicon counterparts but can also gain a massive mood debuff if
they lose or replace their starting robotic limb with an organic one.

The idea being here that they hate organics and seek to become robotic

Also, transhumanists won't be scared of people who have two or more
augments.

## Why It's Good For The Game

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
Cyborg lover isn't really all that interesting since it's just a basic
mood buff upon clicking on a silicon.
This makes it more interesting by making it a dynamic between silicons
and organics and may adapt the playstyle of anyone choosing to take this
perk as they will need to stay away from organics to avoid mood debuffs.

## Changelog

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

🆑
balance: Cyborg lover has been replaced with Transhumanist.
Transhumanists start with a robotic limb and get mood buffs by being
near to silicon-based lifeforms. However, they get mood debuffs by being
near organics, so there is a tradeoff to taking this quirk. The cost for
this quirk has been reduced from 2 to 0.
/🆑

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

---------

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

* Replaces cyborg lover with transhumanist

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-12-24 18:31:06 +00:00
SkyratBot
9a3fb5c5c1 [MIRROR] FOV is Dead (Long Live FOV) [MDB IGNORE] (#25600)
* FOV is Dead (Long Live FOV)

* Update _megafauna.dm

* Update _vehicle.dm

* FOV Hotfix: Actually offsets gameplane render relays

* removes redundant visual_shadow

* removes GAME_PLANE_UPPER references

* Update mob_movement.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-23 17:47:07 +00:00
SkyratBot
5cc6fe943c [MIRROR] GAGSify colored/job labcoats [MDB IGNORE] (#24498)
* GAGSify colored/job labcoats

* fixes two of our coats

* a few more fixes

* okay

* Update interdynefob.dmm

* okay digi

* e

---------

Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-23 16:34:06 +00:00
SkyratBot
5c516aef02 [MIRROR] Adding a GaGs recolourable santa hat. [MDB IGNORE] (#25780)
* Adding a GaGs recolourable santa hat. (#80483)

* Adding a GaGs recolourable santa hat.

---------

Co-authored-by: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com>
2023-12-22 21:57:41 -05:00
SkyratBot
d82bce70b3 [MIRROR] Fake Virus doesn't affect virus immune mobs [MDB IGNORE] (#25765)
* Fake Virus doesn't affect virus immune mobs (#80447)

## About The Pull Request

Fake Virus random event won't pick Virus Immune mobs.

Plus some code cleanup.

## Why It's Good For The Game

Feeling a virus when you can't feel a virus makes it pretty obvious
what's going on.

## Changelog

🆑 Melbert
fix: Crewmembers immune to viruses won't be picked by the fake virus
event.
/🆑

* Fake Virus doesn't affect virus immune mobs

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-12-21 11:40:29 -05:00
SkyratBot
c3ced06238 [MIRROR] New Quirk! Cyborg Lover! [MDB IGNORE] (#25762)
* New Quirk! Cyborg Lover! (#80023)

## About The Pull Request

This PR adds a new quirk for people, who want to play as
silicon-friendly crew.

Basic quirk info:
- It costs 2 points.
- It has minor additions to person's mail goodies list (cable coils,
basic cells, etc).
- It has a few simple mood events, when you pet a borg or being
touched/hugged by borg.

## Why It's Good For The Game

I think it is nice to have a chance to play as ~~robo-creep~~ person who
loves borgos.

## Changelog

🆑
add: Added new quirk: Cyborg Lover!
/🆑

---------

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

* New Quirk! Cyborg Lover!

---------

Co-authored-by: SSensum <121913313+SSensum@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-12-21 01:41:26 -05:00
Nerevar
2805c86c81 [THE HALF-MODULAR PRINCE] Snalance (Snail Balance) and Snissues (Snail Issues) Adjustment (#25439)
* initial d

* holy shit i forgot

* i got so much cheese in my pocket, they thought I was a fucking calzone

* opp was sneak-dissing on the 'gram, turned his city into pompeii

* Just fixing some diffs (line breaks should match tg)

* Fixes these edit comments

---------

Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-20 00:53:54 -05:00
Hypertorus Fusion Reactor
fd0298cb14 *moan but a little more exciting. For mature, rugged souls! (#25559)
* ticks new emote file

* makes a lewdmoan emote yesyes

* change physique to gender

* fixes everything else because im dumb

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm (Remove miming check)

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* allows the lewdmoan to vary in pitch

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* uses get_sound() instead of play_lewd_sound

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* uhhh makes a var of get_sound, for lewdness

* creates lewdness in /datum/emote/living/lewd

* slightly makes the emote louder, because yes

* FIXES THE DUMB MOTHERFUCKING ERROR

* i forgot dont bully me pls

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_skyrat/master_files/code/datums/emotes.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* test test does this make it invisible for non-erpers?

* Update code/datums/emotes.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update code/datums/emotes.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* added pref_to_check in the visible and audible msg procs

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update code/datums/emotes.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update code/modules/mob/mob.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update code/modules/mob/mob.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Apply suggestions from code review

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* adds pref checks to silicon messages too

* changes user.client to M.client

* adds pref_to_check to drake override

* Update code/datums/emotes.dm

* Apply suggestions from code review

* Apply suggestions from code review

* Update modular_skyrat/modules/modular_items/lewd_items/code/emote.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-19 23:01:02 -05:00
SkyratBot
97d1b469d9 [MIRROR] qm uses cargo tech icons [MDB IGNORE] (#25707)
* qm uses cargo tech icons (#80411)

## About The Pull Request
qm now has the "x-in-training" intern title instead of "intern
quartermaster", similar to the other heads of staff
qm's hud and id card icons are now the cargo tech's icon (but blue),
following the other heads of staff which have blue versions of their
dept (blue wrench, blue cross, blue... sec badge?? blue exclamation)

## Why It's Good For The Game
makes the qm more visually consistent with the other heads, makes it
clearer that the qm is the head of the cargo department
the current icon is kinda hard to decipher too? you can tell the cargo
tech's is a crate, but the qm's is just like a weird head dude (which
the hop already has, making those ids hard to distinguish since theyre
both blue)? or a stamp?

## Changelog
🆑
fix: qm's intern id is now "quartermaster-in-training"
image: qm's id and hud icons now use the cargo tech icons (but blue) to
be consistent with the other heads of staff
/🆑

* qm uses cargo tech icons

* Removes the icon from modular as well

* Revert "Removes the icon from modular as well"

This reverts commit ac6a674887ca74a1231a8433373d55aa8df912e8.

* Updates the modular icons with the new version

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-19 13:02:29 +00:00
SkyratBot
0a609c34d4 [MIRROR] Fixes a hard del in monkey AI [MDB IGNORE] (#25713)
* Fixes a hard del in monkey AI (#80425)

## About The Pull Request

![firefox_KI4H4wxvN3](https://github.com/tgstation/tgstation/assets/13398309/6e8c18f3-2413-4eaf-8436-15fd7aea9c51)

Fixes this hard del, caused by a del-on-death mob being qdeleted after
being victim to the monkey's attack. When a mob gets qdeleted, they
remove themselves from the blackboard.

Monkey code was then adding it back immediately after, resulting in the
hard del. Adds safeties to ensure that won't happen.

## Why It's Good For The Game

Less annoying CI failures

## Changelog

🆑
fix: monkeys will no longer cause other monkeys to get angry at the mobs
they just poofed by attacking
/🆑

* Fixes a hard del in monkey AI

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-18 13:01:05 -06:00
SkyratBot
adbf657c7d [MIRROR] Crafting now transfers reagents from ingredients to final product [MDB IGNORE] (#25711)
* Crafting now transfers reagents from ingredients to final product (#80391)

## About The Pull Request
- Fixes #80143
- Fixes #80381

Based on the ingredients required reagents of the final product can
differ. It now transfers the olive oil from the bottle to the toasted
seeds & the orange juice and grenadine reagent from the ingredients into
the kasei dango.

Snow cones are now also edible

## Changelog
🆑
fix: crafting now transfers reagents from ingredients to final product
making previously inedible foods (toasted seeds, kasei dango & snow
cones) edible. Other crafted food products/items now differ in reagents
based on the ingredients required.
/🆑

* Crafting now transfers reagents from ingredients to final product

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-12-18 13:00:34 -06:00
SkyratBot
c19ea06711 [MIRROR] Intern assistants are Interns [MDB IGNORE] (#25708)
* Intern assistants are Interns (#80413)

Revive of #78498
This is what I tried to explain in the PR, it was trying to add code
that already existed
@ optimumtact

## Why it's good for the game
It's just flavor, it changes the "Intern Assistant" to "Intern" on the
job ID for SOUL.

🆑
qol: Assistants with <10h of playtime are now "Interns"
/🆑

* Intern assistants are Interns

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2023-12-18 13:00:17 -06:00
SkyratBot
3381c9e893 [MIRROR] Votes now show the percentage of total votes each choice got | Adds weighted random vote type | Map votes are now weighted random [MDB IGNORE] (#25702)
* Votes now show the percentage of total votes each choice got | Adds weighted random vote type | Map votes are now weighted random (#80362)

## About The Pull Request

See the title.
## Why It's Good For The Game

Mothblocks wanted map votes to not be simple winner take all and wanted
it to be randomly chosen based on votes.

![image](https://github.com/tgstation/tgstation/assets/12817816/7435b444-dcd7-4aa5-a747-4bafe434ebdb)

## Changelog
🆑
add: Map Votes are now weighted random.
add: Custom Votes can now take advantage of Weighted Random winner
selection
del: Removed Herobrine from the game
/🆑

---------

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

* Votes now show the percentage of total votes each choice got | Adds weighted random vote type | Map votes are now weighted random

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-12-18 05:47:04 -05:00
SkyratBot
801fde3d4e [MIRROR] Pocket keybinds! [MDB IGNORE] (#25696)
* Pocket keybinds! (#80173)

## About The Pull Request

adds 2 (defaulted to ctrl 1 and ctrl 2) keybinds for quick equipping
pockets (left and right)
visual aid

![image](https://github.com/tgstation/tgstation/assets/114047053/595861f0-9a7b-4f86-8ad9-dd6bb197843c)

https://github.com/tgstation/tgstation/assets/114047053/72596cf8-374d-40ac-9de1-20137dc959d4

## Why It's Good For The Game

There are already keybinds for suit storage, belt and bag. Having some
keybinds for pockets should let you take things from your inventory with
more ease.

## Changelog
🆑
add: Added 2 pocket quick equip keybinds
/🆑

* Pocket keybinds!

---------

Co-authored-by: uaioy <114047053+uaioy@users.noreply.github.com>
2023-12-17 21:56:52 -05:00
SkyratBot
465a59f364 [MIRROR] Adds energy drinks to all nighter quirk stimulants list [MDB IGNORE] (#25690)
* Adds energy drinks to all nighter quirk stimulants list (#80397)

## About The Pull Request

Adds monkey energy and volt drinks to all nighter stimulants quirks

## Why It's Good For The Game
Energy drinks contain caffeine and taurine, so they are stimulants

## Changelog

🆑
code: All nighters can now drink energy drinks to cope with their lack
of sleep.
/🆑

* Adds energy drinks to all nighter quirk stimulants list

---------

Co-authored-by: kawaiinick <104280915+kawaiinick@users.noreply.github.com>
2023-12-17 16:00:48 -05:00
SkyratBot
1095bcd545 [MIRROR] Fitness rebalance and improvements - mood, fireman carry, and longer workouts [MDB IGNORE] (#25609)
* Fitness rebalance and improvements - mood, fireman carry, and longer workouts

* Resolve Conflicts

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
2023-12-17 15:06:11 -05:00
SkyratBot
a661aeec7a [MIRROR] Fixes an inconsistency with ED-209's crafting recipe [MDB IGNORE] (#25662)
* Fixes an inconsistency with ED-209's crafting recipe (#80364)

## About The Pull Request
Makes the ED-209 crafting recipe only take security helmets, just as the
Beepsky one does.

## Why It's Good For The Game

As it stands right now, any helmet can be used to assemble an ED-209.
This includes anything from your standard security helmet, to a hardhat,
an envirohelm, or even a cheap toy roman helmet. This makes it so you
need an actual security helmet, just like the Beepsky recipe does.
## Changelog
🆑
fix: ED-209s can no longer be crafted with most instances of helmet, you
need security ones just like Beepsky.
/🆑

* Fixes an inconsistency with ED-209's crafting recipe

---------

Co-authored-by: StaringGasMask <62149527+Exester509@users.noreply.github.com>
2023-12-17 10:06:44 -05:00
SkyratBot
7bfe7215ff [MIRROR] Throwing a bee at someone injects reagents [MDB IGNORE] (#25663)
* Throwing a bee at someone injects reagents (#80354)

## About The Pull Request

Throwing a bee at someone injects that bee's reagents.
This has a larger code footprint than you might expect because venom
injection is done via an element which in turn gives a callback to a
component.
While I was touching that I also separated `COMSIG_MOVABLE_IMPACT` into
`COMSIG_MOVABLE_PRE_IMPACT` because a lot of effects trigger from
`COMSIG_MOVABLE_IMPACT` despite the fact that the throw impact can be
cancelled after the signal is sent.

I also added an inject check onto the venomous element for mob attacks,
so thick clothing can now protect you from venom injection.
I elected that Giant Spiders have big enough fangs to ignore this such
that this isn't a major balance change, as do moonicorns (that horn is
massive), Fire Sharks, and Clowns (no idea how they are applying chems
at all to be honest).

## Why It's Good For The Game

I thought about someone throwing a bee at someone like a little dart and
thought "hee hee"

## Changelog

🆑
add: If you throw a bee at someone it will hit them sting-first and
inject that bee's reagent
balance: Thick clothing can now protect you from the venom of bees,
snakes, frogs, and (small) spiders
/🆑

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>

* Throwing a bee at someone injects reagents

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
2023-12-17 10:06:35 -05:00