Commit Graph

5173 Commits

Author SHA1 Message Date
Penelope Haze
4c2a76ede3 Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to
variable names, but only the really egregious ones like "concious".
2025-01-28 22:16:16 +01:00
SyncIt21
0495a19beb Refactor for reagent signals (#88909)
## About The Pull Request
Refactors the way we listen for reagent changes. The changes made can be
listed as points

**1. Removes `COMSIG_REAGENTS_PRE_ADD_REAGENT`**
Used to stop new reagents from being added to the holder, its only
application is with the BRPED to stop inserting reagents into
beakers/cells stored inside it.

Rather than using this signal a cleaner solution is to simply remove the
component part's reagent holders' flags which allow us to insert
reagents into it(i.e. `REFILABLE`, `INJECTIBLE`, `DRAINABLE`) and
restore them back when that part is removed thus achieving the same
results.

Thus `add_reagent()` is now slightly faster because it no longer uses
this signal

**2. Removes every other signal used by the reagent holder**
Removes pretty much every other signal used by `holder.dm` which are
`COMSIG_REAGENTS_[NEW_REAGENT, ADD_REAGENT,
DEL_REAGENT, REM_REAGENT, CLEAR_REAGENTS]`

While yes, it is true that all these signals are unique & serve a
specific purpose the problem is no object in code respects their
uniqueness & instead clumps them up all together & hooks them onto one
proc to listen for "reagent changes". You see this code pattern repeated
in so many places


9277364ef6/code/modules/power/power_store.dm (L105)

Not only does this look ugly but it also has a memory overhead (4 to 5
signal slots all performing the same action which is a lot compared to
the solution i implemented below). Bonus is that "none" of the
parameters passed to this proc are used so they go to waste as well.

So after removing a ton of code we need something that can still make
the code function which brings us to point 3

**3. Adds a new signal `COMSIG_REAGENTS_HOLDER_UPDATED` to rule them
all**

So if all objects in game are listening for "reagent
changes"[adding/removing, reagents] then we need to look at the proc
that is always called during these changes & that is none other than
`update_total()` so we let that send out a signal and cause all objects
to hook onto this 1 signal instead of 4 to 5 signals as explained in
point 2

## Why It's Good For The Game

This section isn't necessary but i want us to better appreciate both the
code & performance benifits of this PR.

1. First of all its waaaay less code and signals to worry about. Just
look at the number of lines of code removed compared to added. Nothing
more to say
2. Overhead of `RegisterSignal` compared to `RegisterSignals` is less
for obvious reasons
3. `remove_all` is significantly faster as it no longer calls
`remove_reagent()`[which in turn calls `update_total()` &
`handle_reactions()` per call & uses a for loop so its a nested for loop
of doom] for every reagent it removes, instead it does the work by
itself & calls the above 2 procs just once
4. Usually when a reagent is deleted it calls
`COMSIG_REAGENTS_REM_REAGENT` & `COMSIG_REAGENTS_DEL_REAGENT`. So if you
have a holder with like 3 reagents upon transferring/deleting them you
get a total of 6 signal calls!!. Now it's just 3(when using `trans_to`)
and just 1 when using `remove_all/clear_reagents`. Need i say more no

## Changelog
🆑
fix: hydrophonics circuit component actually sets output level when
reagents are changed in the tray
refactor: refactors how code listens for reagent changes. Report bugs on
github
/🆑
2025-01-28 03:12:59 +01:00
Penelope Haze
8196190aa1 Removes a a at at be be of of and and have have (#89155)
## About The Pull Request
I just had to one-up https://github.com/tgstation/tgstation/pull/89127.

## Why It's Good For The Game
Removes a a at at be be of of and and have have

## Changelog
N/A
2025-01-22 08:09:57 +11:00
Chowder-McArthor
4f14df11b6 Redo of the Geyser Code: Second Attempt (#89111)
## About The Pull Request

Makes it so strange geysers now say their name when scanned. 

## Why It's Good For The Game

Should help make geysers actually worthwhile now that it's easier to
tell what they produce.

## Changelog
🆑
qol: Strange geysers now say in their name what they produce.
/🆑
2025-01-18 21:22:07 +00:00
SmArtKar
d05be3213e You can no longer get stuck in stacked lockers (#89058)
## About The Pull Request

Stacking two lockers ontop of eachother and shoving someone into them
will result in them getting stuck in an open locker, with no way to get
out.

## Changelog
🆑
fix: You can no longer get stuck in stacked lockers
/🆑
2025-01-15 11:42:24 +01:00
MrMelbert
1276076519 Allows you to look down ladders, both via verb/hotkey and, yknow, visually (#88876)
## About The Pull Request


![image](https://github.com/user-attachments/assets/9161fa99-cba1-4424-bcfa-c51bb20a7e2d)


![image](https://github.com/user-attachments/assets/d7740349-ca84-4453-9c2a-ddfaa0211c4e)

## Why It's Good For The Game

Even though you (logically) should be able to peer down a ladder before
you step down, to know if you're going to climb directly into a meat
grinder, you cannot. Now you can.

Gas still does not travel between ladders. Maybe later

## Changelog

🆑 Melbert
qol: You can now look down ladders, both via the look down verb/hotkey
and by just looking with your eyes
/🆑

---------

Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
2025-01-08 13:54:08 -07:00
grungussuss
1e78f0d3c5 Buckling sound for chairs and medical beds (#88871)
## About The Pull Request
completes
https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=90852039
### Adds a buckle and unbuckle sound for:
- shuttle seats
- medical beds
- emergency medical beds

All sounds are normalised to -23 LUFS
## Preview 
<details>
<summary> Click me! </summary>


https://github.com/user-attachments/assets/04f172d5-38a1-4af1-8972-8667cc97654d


https://github.com/user-attachments/assets/e38f4122-9fc0-4c45-97de-633d7aa0c5e2

</details>

## Why It's Good For The Game
immershun
## Changelog
🆑 grungussuss
sound: added sounds for buckling to shuttle seats and medical beds
/🆑

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2025-01-06 08:06:18 -08:00
necromanceranne
8be248363c Moves the compact combat shotgun back into the warden's locker (#88854)
## About The Pull Request

What it says on the tin. Also updates the theft objective appropriately.

## Why It's Good For The Game

@MrMelbert asked me to do this, and I'm happy to oblige.

Firstly, the HoS has a signature gun as it is. His X-01 Multiphase.
Having another weapon in the form of the shotgun kind of steps on the
toes of that weapon's presence, and clutters his arsenal somewhat. The
HoS, as is, has the means of gearing for alternative equipment if
needed, but let's keep it somewhat slim for weapons.

Secondly; it feels more appropriate as a riot suppression weapon. And
the warden puts down riots and brig invasions. He is the CQB guy after
all, he should have a shotgun. It's a bit of an identity thing and a
functionality thing. Of course, he could just get a riot shotgun (so can
the HOS in this instance), but I think having a special one does have
impact from a purely aesthetics point of view, gives more of a feeling
of 'ownership' over the shotgun (which matters for the sake of whether
people are determined as overgearing or not), as well as telegraphing
what should be his combat strategy for him more clearly.

No, there is no option where they both have shotguns. Don't bother
asking.
2025-01-03 00:33:28 -06:00
SmArtKar
470fdc73e5 Fixes rolling table being able to carry an infinite amount of dwarves (#88732)
## About The Pull Request

Swapped direct loc checks with recursive contents to prevent extreme
bluespace bodybag cheese + removed self comsig reg and fixed lowercase
you

## Changelog
🆑
fix: Fixed rolling table being able to carry an infinite amount of
dwarves
grammar: Improved rolling table grammar
/🆑
2025-01-03 00:19:06 +01:00
Rhials
e8962b0d6b Mech-dominating Malf AIs will have their Doomsday timer stopped when their deactivated core is destroyed (#88528) 2024-12-29 23:04:19 +00:00
SmArtKar
488ded213e [NO GBP] Fixes chair, echair, wheelchair and vehicle overlays on painted objects (#88745)
## About The Pull Request

Closes #88644
Insanity

## Changelog
🆑
fix: Fixed chair, echair, wheelchair and vehicle overlays on painted
objects
/🆑
2024-12-28 07:41:27 +00:00
SmArtKar
6a36707770 Iron material tiles can now be used to tile lattice to make plating (same for other similar interactions) (#88674)
## About The Pull Request

Added a helper to check if something is a tile made out of iron, and
changed all plating placement code to use it.

## Why It's Good For The Game

Its very easy to misclick or get confused and make the wrong type of
tile in the crafting menu, and since material tiles made from iron
aren't a subtype of ***iron*** tiles, you won't be able to use them to
make plating. Space already accounts for this, but lattice, chasms,
openspace and foam plating do not.

## Changelog
🆑
qol: Iron material tiles can now be used to tile lattice to make plating
/🆑
2024-12-28 00:27:40 +00:00
SyncIt21
e3e396d8be Gets rid of spamming during closet breakout (#88682)
## About The Pull Request
- Fixes #88657

When you begin resisting you can't resist again till either the breakout
was successful or failed. This also lead to the shake animation being
reapplied multiple times causing additional shaking on top of it already
shaking

## Changelog
🆑
fix: breaking out of a closet won't spam chat or shake like it's having
a seizure
/🆑
2024-12-28 00:46:51 +01:00
necromanceranne
eac26852da The Chairening: Chairs can break when used to block. Alters how chairs stun when smashed over someones head. (#88480)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2024-12-26 15:58:23 +00:00
grungussuss
540ec3e141 closet lock/unlock sounds (#88702)
## About The Pull Request


https://github.com/user-attachments/assets/e3de442b-51ca-4afb-971a-7d3294dce65e
## Why It's Good For The Game
immershun
## Changelog
🆑 grungussuss
sound: added sounds for locking/unlocking closets
/🆑
2024-12-26 08:32:37 +01:00
jimmyl
e6d440b830 makes girders smooth (#88631) 2024-12-25 13:11:31 -05:00
John Willard
2e4d70afe5 Updates href uses for 516 (#88699)
## About The Pull Request

Was just scrolling through the Paradise github since they seem to have
more work done for 516 to see if there's anything I can port over, found
this and thought why not.

Ports parts of https://github.com/ParadiseSS13/Paradise/pull/25105
Specifically, updaing all hrefs to use the internal ``byond://``, and
adding it to grep.

## Why It's Good For The Game

More work towards 516.

## Changelog

Nothing player-facing.
2024-12-24 11:42:20 -08:00
SmArtKar
c095e29568 Fixes showers not passively washing objects (#88666)
## About The Pull Request

Closes #88643

## Changelog
🆑
fix: Fixed showers not passively washing objects
/🆑
2024-12-23 20:36:22 +01:00
SyncIt21
e456959862 Rolling tables can be rolled up again (#88628) 2024-12-23 02:33:42 +02:00
UnokiAs
97f54ecd89 Restore Spear's Ability to Destroy Lockers (#88377)
## About The Pull Request
This change make the lockers "electronics" weaker to the spear,
restoring its ability to destroy lockers. While this functionality was
not originally intended (throwing spears on lockers) ( #88141 ), it has
been present for so long that it has effectively become a feature. This
pull request rework that feature by making the spear do damage by
hitting lockers in melee.



https://github.com/user-attachments/assets/67058342-57e2-4670-9c68-df4c3b6d6193



## Why It's Good For The Game
Restoring the spear's ability to destroy lockers maintains its previous
utility and aligns with player expectations, preserving and reworking
feature that has become a staple of gameplay and lower the burden on
antagonist to open security or command lockers.

## Changelog
🆑 UnokiAs
add: Make spears able to break open lockers in melee.
/🆑
2024-12-22 01:11:38 +01:00
MrMelbert
4b77c6f7c0 Decouples "Is this affected by a mop" from layer var (#88465)
## About The Pull Request

Rather than checking for object layer if we can clean something, has a
trait which accomplishes this

This better allows us to pick and choose what objects we want to clean
when mopping

Note: I didn't apply the trait to everything it previously affected
Currently, it cleans stuff like pipes and plumbing, which I deemed not
necessary to carry over since they can't get dirty anyways
I can re-add this if desired though

Fixes #88445
Fixes #88150

## Changelog

🆑 Melbert
fix: Gibs get bulk cleaned if you clean the turf again
refactor: Changed how things determine "I can be bulk cleaned if I clean
the turf underneath me", let me know if you notice anything not getting
bulk cleaned or weird things getting bulk cleaned
/🆑
2024-12-18 00:50:08 +01:00
SmArtKar
7ddc30783a Adds better attack animations and alternate attack modes (#88418)
## About The Pull Request

This is the first PR in a series attempting to modernize our damage and
armor, both from a code and a gameplay perspective. This part implements
unique attack animations, adds alternate attack modes for items and
fixes some minor oversights.

Items now have unique attack animation based on their sharpness - sharp
items are now swung in an arc, while pointy items are thrust forward.
This change is ***purely visual***, this is not swing combat. (However,
this does assign icon rotation data to many items, which should help
swing combat later down the line).

Certain items like knives and swords now have secondary attacks - right
clicks will perform stabbing attacks instead of slashing for a chance to
leave piercing wounds, albeit with slightly lower damage - trying to
stick a katana through someone won't get you very far!

https://github.com/user-attachments/assets/1f92bbcd-9aa1-482f-bc26-5e84fe2a07e1

Turns out that spears acted as oversized knives this entire time, being
SHARP_EDGED instead of SHARP_POINTY - in order for their animations to
make sense, they're now once again pointy (according to comment,
originally they were made sharp because piercing wounds weren't very
threatening, which is no longer the case)

Another major change is that structure damage is now influenced by armor
penetration - I am not sure if this is intentional or not, but attacking
item's AP never applied to non-mob damage.

Additionally, also fixes an issue where attack verbs for you and
everyone else may differ.
2024-12-17 12:35:52 -06:00
Tim
83437563e7 Add water sound to sinks (#88443)
## About The Pull Request
Adds a sink sound of a faucet turning on with water running.


https://github.com/user-attachments/assets/17c85949-8d7c-4d31-ad3f-1ee45cb5c057

Sound is from - https://freesound.org/people/FOSSarts/sounds/740086/
It is licensed as CC0 and needs no attribution.

## Why It's Good For The Game
Sinks now make water sounds.

## Changelog
🆑
sound: Add water sound to sinks
/🆑
2024-12-14 01:32:18 +02:00
SyncIt21
b9a047baf3 Improves code for leaning (#88494)
## About The Pull Request
- Removed unused vars `click_mods`, `lean_check` & `same_turf` from the
leaning component. Walls & windows the only two atoms that support
leaning don't use these vars so its unused code
- Leaning component now starts leaning inside its `Initialize()` proc,
which means we don't have to call `base_mouse_drop_handler()` manually
- Because of point 2 we can now properly lazy load the leaning component
via `LoadComponent()` proc instead of keeping track of a boolean var to
check if we added the component or not.

Just cleaner & lesser code overall

## Changelog
🆑
code: improved code for leaning
/🆑
2024-12-14 00:13:12 +01:00
SmArtKar
a27949d5f5 Advanced Color Shifting: Spraypaint Edition (#88201)
## About The Pull Request

"If GAGS is such a good system, why isn't there GAGS 2?" - Sun Tzu

GAGS is very neat but it has one glaring issue: it needs sprites to be
greyscaled in advance to be used. On the other hand we have color
matrices, but they're hard to use and even harder to get good results
from. The logical solution grew out of a discord argument about colors
this morning after @LemonInTheDark decided to toy around with HSL
matrices using filters on live servers.

This PR implements Color Transition Filters as an additional option for
atom colors - passing a transition filter matrix into
``add_atom_colour`` will "recolor" the atom into the passed color by
using an HSL filter (since color only supports RGB values and matrices).
Normal color matrices are now also supported in atom colors, in case
anyone needs to use them there. ``color_transition_filter`` has 2 modes:
``SATURATION_MULTIPLY`` which only changes the hue and shifts saturation
of the original icon, and ``SATURATION_OVERRIDE`` which changes
saturation and light values to more correctly fit the passed color.
Multiply mode does a far better job at recoloring clothing or objects
with obvious highlights, but fails to color pale or white objects, while
Override mode is closer to what we have right now (just doesn't produce
rancid blobs of color nearly as much)

Here are some examples of colored clothes, mechs, items and tiles using
the new system.

Green RD? Sure.

![image](https://github.com/user-attachments/assets/6d79cac3-15a5-4850-abae-19219e1d4bdb)

Atmos MODsuit colored with a speed potion

![4cTKpeu](https://github.com/user-attachments/assets/9106e74c-8d60-489a-9ef7-4d154ddbbdf9)

Why override mode exists in the first place

![dreamseeker_fAKn811LXT](https://github.com/user-attachments/assets/3d3bea8c-5e27-4390-a924-0c243265fa6a)

Aftermath of a colorful reagent grenade.

![image](https://github.com/user-attachments/assets/ba4c78c5-cba5-42da-ac4d-7861bb329b68)

As you can see, the colors are far brighter and significantly less
acidic, since they're no longer just used as multipliers for existing
colors but instead shift the palette of the sprite towards themselves.

In order to bypass the main downside of "default" Multiply mode,
spraycans have received a new right click function "coat with paint",
which will color the item using the Override mode. Left Click mode lost
its coloring restrictions (RMB still has them), and color
sampling/prosthetic recoloring has been moved to Ctrl Click instead.
Here's the full list of all systems/items that now use color transition
filters:
 * Drying items
 * Deep frying items
 * Slime blueprints/potions/coloring crossbreeds
 * Colorful reagent
 * Spraycans
 * Paint buckets

## Why It's Good For The Game

Our coloring system is ***really*** bad, to the point where we're
preventing players from using any dark colors because item icons become
unintelligible when colored into them.

## Changelog
🆑 SmArtKar, LemonInTheDark
add: Changed how spraycans color items - "old" mode is still availible
via right click.
refactor: Refactored how some items and effects color things so that
they look prettier.
/🆑
2024-12-13 00:12:14 -08:00
grungussuss
a89620dfc7 Fixes items not falling from a lattice's loc after it's deconstructed (#88439)
## About The Pull Request
closes https://github.com/tgstation/tgstation/issues/81060
## Changelog
🆑 grungussuss
fix: fixed items not falling from a lattice after being
deconstructed/destroyed
/🆑
2024-12-10 19:04:10 +01:00
Tim
980d8e421b Add human organ crate to emergency medical holodeck simulation (#88195)
## About The Pull Request
This adds a crate to medical holodeck sim with a full set of human
organs inside a freezer containing:
- heart
- lungs
- eyes
- ears
- tongue
- liver
- stomach
- appendix

##### (And yes, a holodeck organ can fade away while it's still inside
someone causing them to suffer organ loss)

## Why It's Good For The Game

Immersion.

## Changelog
🆑
add: Add medical human organ crate emergency medical holodeck simulation
/🆑
2024-12-07 00:08:22 +01:00
MrMelbert
9007190a74 Audits a bunch of calls to receive_damage, replacing them with apply_damage (#88205)
## About The Pull Request

Looks through calls to `receive_damage` and replaces them with calls to
`apply_damage`

`receive_damage` is a gross to use internal proc that doesn't take into
account physiology (damage modifiers) or even update the mob's sprite
when taking damage

It should be avoided many uses - `apply_damage`, in fact, can take a
bodypart as a target, and is overall a lot easier and more ergonomic to
use.

"So what are valid uses of it?"
- Apply damage itself, and similar direct-damage procs 
- Ensuring you deal an exact amount of damage to a bodypart
- Damaging a limb with no owner

## Changelog

🆑 Melbert
refactor: A ton of things now use the more correct method of applying
damage to you. Which means they will correctly factor in damage
modifiers and are less likely to break your sprite. Some examples
include embedded objects jostling around, chiropractice, and tackling a
wall. Report any oddities, such as extreme damage or bodyparts being
wrongly affected.
fix: Having acid splashed on your face may now disfigure you and make
you bald, as it once did three years ago.
fix: Itchy heretic trauma now better checks if the bodypart is covered
or not before determining if you should itch.
fix: "Repair Puncture" logs no longer mistakenly report you are
"Incising burned flesh"
/🆑
2024-12-04 09:00:15 +13:00
norsvenska
7725c7d4b7 Updates the list of station commission plaques (#88233)
## About The Pull Request
Commission plaques were outdated, so they needed updating. This adds
Wawa's merge date, which was not present, moves Northstar's to the
removed station list, and adds one for Nebulastation. I also
alphabetized the current map list to be in line with the removed list.
No map edits were made.
## Why It's Good For The Game
Just keeping things up to date
## Changelog
🆑
spellcheck: Station commission plaques (the gold ones that have the date
they were added) have been updated, adding Nebula's, fixing Wawa's, and
decommissioning Northstar's.
/🆑
2024-12-02 22:19:51 +01:00
jimmyl
25c616e353 fixes the museum cafeteria puzzle and some other things related to the museum (#88287)
## About The Pull Request

the dotted color board was missing a color for the 10th digit, and
orange and brown were not valid byond colors (damn you ghommie)
fake scrubbers and vents use the correct layer and plane
you may no longer deconstruct indestructible windows
you can no longer push indestructible grilles and robust windows if you
have a strong move force

step teleporters may not teleport abstract objects or mirage holders
(due to init shenanigans this sometimes teleported a mirage holder
messing the visuals up)

## Why It's Good For The Game

bug bad also i didnt make these bugs ok

## Changelog
🆑
fix: fixed the museum password puzzle (to the cafeteria), and the
scrubbers and vents there now look correctly (also fixed a rare visual
bug)
fix: it is now harder to bypass indestructible windows and grilles
(those are placed there for a reason, you know!)
/🆑
2024-12-01 13:39:29 +01:00
Tim
69c01b27ee Improved shower/blood effects (#87747)
## About The Pull Request
Last night I was experimenting with hooking up different chemicals to a
shower and discovered that blood didn't really do anything other than
have red mist and particles. Your characters clothes were still cleaned.
The mood boost was still happy. So I reworked it a bit.

Blood now:
- Gives a negative mood, disgust, and status effect when showering with
it (unless you are morbid, evil, or undead, then it's considered
positive)
- Has an icon alert for bloody showers
- Covers a mob's clothing with blood when showering (or any objects on
the tile)
- Tossing or spraying a container full of blood now covers objects/mobs
in blood
- The revenant defile spell now affects showers by removing all water
recyclers and reagents that gets replaced with blood

Showers now:
- Require 70% of water to clean and get mood/status effects
- Require 70% of blood to get mood/status effects
- Require 20% of radioactive reagents to stop radiation removal effects

So it's possible to have a clean water shower that is secretly
radioactive. Since radioactive reagents do nothing on `TOUCH`, all this
achieves is preventing the water from washing off the radiation.

I did have to refactor some of the reagent code to support method types
for objects since I was experiencing hazmat issues when I was testing.
Whenever I would inject blood from a syringe into a beaker, it would
cover the beaker in blood on the outside. This would have been extremely
hazardous for viruses. So I needed to make sure we are only applying it
to the methods for `VAPOR|TOUCH`

Also improved the mood typecasting for owner to allow checking of mob
biotypes. (so we can check `UNDEAD` for mood)

## Why It's Good For The Game
Blood effects and interactions are now more consistent. The code for
objects is refactored to support method interactions with reagents.
Evil/Morbid people now get some unique interactions that fit their
theme. Last we get a cool new ability to let revenant's make their
defiled areas something out of a horror movie.

## Changelog
🆑
add: The revenant defile spell now affects showers by removing all water
recyclers and reagents that gets replaced with blood.
add: Showering in clean water (+70%) results in positive
mood/regen/stamina effects. It will wash off the mob.
add: Showering in dirty water results in negative mood effects and
disgust. It will NOT wash off the mob.
add: Showering with radioactive reagents (+20%) results in the
preventing the shower from washing off the radiation.
add: Showering in blood (+70%) results in severe negative mood effects
and disgust. (unless you are morbid, evil, or undead then it's
considered positive) It will cover the mob in blood.
add: Water effects that interact with a mob from touch or vapor
(showering/spray bottles/etc.) will now heal sleep, unconsciousness,
confusion, drowsiness, jitters, dizziness, and drunkenness.
fix: Fix bloody showers not covering objects in blood.
fix: Tossing or spraying a container full of blood now covers
objects/mobs in blood
fix: Fix wrong status effect for watery tile
image: Add new alert icons for bloody/dirty showers
code: Refactored some expose_obj reagent code to support method types.
code: Improved mood typecasting for owner to allow checking of mob
biotypes.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-30 03:16:04 +01:00
MrMelbert
75696ab873 Fixes random stuff spilling into ooc tab (#88221)
## About The Pull Request

`boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger`
is identical it just doesn't carry the same baggage

## Changelog

🆑 Melbert
fix: Stuff like the SM exploding will no longer output to your OOC tab
/🆑
2024-11-27 17:41:52 +01:00
Ghom
8804f5595c turfs now handle fishing more internally to save time on world initialization (#88092) 2024-11-23 14:53:30 +01:00
Tim
f781e0dce6 Fix fireplace particles runtimes (#88114)
## About The Pull Request
Caused by:

- https://github.com/tgstation/tgstation/pull/88048

Trying to use the fireplace would result in runtimes and the smoke
particles not triggering.

Even though the runtime is fixed, the new particle changes in #88048
broke the pixel offsets. While I was testing, anytime I tried switching
a pixel offset it would update all fireplaces. I tried to limit it to
add the shared particle id to `"fireplace_[dir]"` so that it would only
apply to the objects in that direction but I couldn't get it to work. I
would guess this also affects a lot of other objects that have particle
pixel offsets.

Runtime is fixed. Particle offsets are still broken.

## Why It's Good For The Game
Fireplaces no more runtime.

## Changelog
🆑
fix: Fix fireplace particles runtimes.
/🆑
2024-11-23 13:34:55 +01:00
SmArtKar
bbb7a41743 Guncode Agony 4: The Great Projectile Purge (#87740)
## About The Pull Request
~~Kept you waitin huh!~~
The projectile refactor is finally here, 4 years later. This PR (almost)
completely rewrites projectile logic to be more maintainable and
performant.

### Key changes:
* Instead of moving by a fixed amount of pixels, potentially skipping
tile corners and being performance-heavy, projectiles now use
raymarching in order to teleport through tiles and only visually animate
themselves. This allows us to do custom per-projectile animations and
makes the code much more reliable, sane and maintainable. You (did not)
serve us well, pixel_move.
* Speed variable now measures how many tiles (if SSprojectiles has
default values) a projectile passes in a tick instead of being a magical
Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired
because it never had a right to exist in the first place. __This means
that downstreams will need to set all of their custom projectiles' speed
values to ``pixel_speed_multiplier / speed``__ in order to prevent
projectiles from inverting their speed.
* Hitscans no longer operate with spartial vectors and instead only
store key points in which the projectile impacted something or changed
its angle. This should similarly make the code much easier to work with,
as well as fixing some visual jank due to incorrect calculations.
* Projectiles only delete themselves the ***next*** tick after impacting
something or reaching their maximum range. Doing so allows them to
finish their impact animation and hide themselves between ticks via
animation chains. This means that projectiles no longer disappear ~a
tile before hitting their target, and that we can finally make impact
markers be consistent with where the projectile actually landed instead
of being entirely random.

<details>

<summary>Here is an example of how this affects our slowest-moving
projectile: Magic Missiles.</summary>


Before:


https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e

After:


https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915

</details>


<details>

<summary>And here is a much faster, and currently jankier, disabler
SMG.</summary>


Before:


https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348

After:


https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238

</details>

### But how will this affect the ~~trout population~~ gameplay?

Beyond improved visuals, smoother movement and a few minor bugfixes,
this should not have a major gameplay impact. If something changed its
behavior in an unexpected way or started looking odd, please make an
issue report.
Projectile impacts should now be consistent with their visual position,
so hitting and dodging shots should be slightly easier and more
intuitive.

This PR should be testmerged extensively due to the amount of changes it
brings and considerable difficulty in reviewing them. Please contact me
to ensure its good to merge.

Closes #71822
Closes #78547
Closes #78871
Closes #83901
Closes #87802
Closes #88073

## Why It's Good For The Game

Our core projectile code is an ungodly abomination that nobody except
me, Kapu and Potato dared to poke in the past months (potentially
longer). It is laggy, overcomplicated and absolutely unmaintaineable -
while a lot of decisions made sense 4 years ago when we were attempting
to introduce pixel movement, nowadays they are only acting as major
roadblocks for any contributor who is attempting to make projectile
behavior that differs from normal in any way.

Huge thanks to Kapu and Potato (Lemon) on the discord for providing
insights, ideas and advice throughout the past months regarding
potential improvements to projectile code, almost all of which made it
in.

## Changelog
🆑
qol: Projectiles now visually impact their targets instead of
disappearing about a tile short of it.
fix: Fixed multiple minor issues with projectile behavior
refactor: Completely rewrote almost all of our projectile code - if
anything broke or started looking/behaving oddly, make an issue report!
/🆑
2024-11-23 04:02:35 -08:00
EOBGames
1fe4f77dc5 Shipping and Receiving: More Containers, Revamped Containers (#87995) 2024-11-22 20:48:29 +01:00
SmArtKar
742729fa0a Converts most common particle sources to use our new pooling system (#88048)
## About The Pull Request

Closes #83370
Converted most cases where we could benefit from using shared particles
(aka when there's probably more than 3 uses of that particle in a round)
to use the new shared particle system. Should provide significant
clientside performance in particle-heavy areas like botany (or sometimes
kitchen)

## Changelog
🆑
refactor: Converted most common particle sources to use our new pooling
system.
/🆑
2024-11-21 18:16:12 +01:00
tonty
d8450b4933 Camera eyes have been lightly refactored (among other things...) (#87805)
## About The Pull Request

* A generic /mob/eye/camera type has been made, containing everything
needed to interface with a cameranet
* /mob/eye/ai_eye has been refactored into a generic /mob/eye/camera
instance
* Advanced cameras no longer inherit from AI eyes, splitting off
behaviour
* Camera code has been somewhat cleaned up
* Probably some more stuff I'm forgetting right now

## Big man Southport:

![image](https://github.com/user-attachments/assets/de6e6ff0-ca99-4636-bdec-5e0b2d6b8037)

## Changelog

🆑
code: made /proc/getviewsize() pure

refactor: mob/eye/ai_eye has been restructured, now inheriting from a
generic mob/eye/camera type
refactor: advanced cameras and their subtypes are now
mob/eye/camera/remote subtypes
code: the cameranet no longer expects the user to be an AI eye
code: remote camera eyes have had their initialization streamlined
code: remote cameras handle assigning and unassigning users by
themselves now
code: remote cameras now use weakrefs instead of hard referencing owners
and origins
code: also the sentient disease is_define was removed (we don't have
those anymore)
fix: AI eyes no longer assign real names to themselves, fixing their
orbit name
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-21 12:55:38 +01:00
Penelope Haze
b67a0901f2 Fix issues discovered via TypeMaker (#87596)
## About The Pull Request
Fixes issues with var typing and proc arguments, discovered using
OpenDream's WIP TypeMaker feature (using improvements I haven't PR'd
upstream yet).

## Why It's Good For The Game
Codebase maintenance.
2024-11-19 15:24:52 -05:00
MrMelbert
d3bc3e8cb4 Being drunk or having a broken arm hurts accuracy with ranged weapons. Also cleans up a fair bit of hand handling to be more readable (#87904)
## About The Pull Request

1. Having a broken arm will affect your accuracy when firing a weapon
with that arm, even potentially causing damage to you if it's a weapon
with recoil. This effect is not applied under the effects of a
painkiller.

2. The sister effect of this (punching someone with a broken arm) now
also has an interact with painkillers (it can no longer block your
attack).

3. Being drunk heavily affects ranged weapon accuracy, unless you're the
bartender

4. A lot of hand handling cleanup, using new macros to make it a lot
more readable at a glance

## Why It's Good For The Game

We have this system for modifying firearm accuracy but we don't really
use it commonly, and I feel like it slots in well with a lot of places

For broken arms, it adds some more depth to the wound system, in the
same way that trying to punch someone with a broken arm causes pain. (I
actually want to expand this to melee weapon accuracy and attacking with
melee weapons in general, but that's for a later time)

For drunkenness, it just adds to the drunk shenanigans. It also slightly
reduces the effectiveness of drinks as combat healing chemicals, such as
quadsec - makes it a bit more of a trade off.

## Changelog

🆑 Melbert
balance: Having a broken arm affects your accuracy with ranged weapons
fired with that arm. Utilizing a painkiller will nullify this effect,
however.
balance: Painkillers will prevent your punches from being cancelled due
to having a broken arm. You'll still take damage, though.
balance: Being drunk now affects your accuracy with ranged weapon. The
bartender is immune to this effect via their skillchip.
code: A lot of code involving left and right hand handling has been
cleaned up, easier to read. Report any oddities, like left and rights
being flipped
/🆑
2024-11-19 19:31:06 +01:00
EnterTheJake
15247f28f1 Arcmines The Clarke Exosuit + Tech node changes. (#87936)
## About The Pull Request

The Clarke Exosuit has received several adjustments to make it worth
using in the Arcmining era.

- Clarke no longer requires gold bars to be built.

- HP bumped from 200 to 250, melee armor bumped from 20 to 40.

- Clarke Ore storage module can now collect boulders and smelt them
internally.

- Exo mining scanners can now be used in proximity to a vent to start
the wave defense event.

- Mech Pkas now do more damage  and have the AOE upgrade preinstalled.

- Mech drills are now a utility module rather than a weapon.

- New Internal module unique to the Clarke, It's a rusty sleeper that
can be used to recover dead miners, but lacks the ability to inject
chems

- Fixed Mech sleepers not granting life support.

- Plasma cutters and Bluespace satchels tech nodes are no longer locked
behind experiments, but they are now discounted by them.

## Why It's Good For The Game

Ever since the inception of Arcmining, the Clarke Exosuit has fallen
from being niche to straight up irrelevant.

The Clarke sits in this weird spot, where, while not being roundstart
available, it is an effectively worse fit than your regular Shaft Miner
in all aspects of the job.

This PR aims to address this by making The Clarke able to be built even
if the miners are absent or haven't secured a haul, while making it
actually capable of interacting with the new elements introduced by
Arcmining.

**Arcmining Clarke and Improved Combat functionality**

The Mech mining scanner can now be used to trigger the vent wave
defense, The internal storage module can now collect boulders and
internally smelt them within the Clarke.

Video Demonstration: https://www.youtube.com/watch?v=gtsNK5JbI3o

The Clarke is now a more capable fighter on Lavaland, being a bit
beefier overall.

The mech Pka was also in dire need of some love. It being unable to be
upgraded made it frankly underwhelming at dealing with Vent defences.

I was considering just having PkA upgrades applicable to the mech itself
but ultimately decided against it in fear of having it become a problem
on the station.

Instead, I just went for a flat damage increase and have the AOE upgrade
come preinstalled to better deal with legion swarms.

Lastly The drill modules have been reworked to be utility modules
instead of weapons.

Frankly these shouldn't be weapons, they are nowhere near as valuable as
the cutter or the PKA and can't be used at all on moving targets due to
the long cost time.

**New Clarke Exclusive Internal Module: Mining Sleeper**


![image](https://github.com/user-attachments/assets/bf807ec7-57e0-4caf-a2ac-bbd70ccc44c0)


Just a bit of extra functionality to aid miners that have tragically
fallen, this sleeper is effectively a worse version of the Odysseus, it
can stabilize patients but cannot inject chems, I also fixed an issue
where Mech sleepers were not putting patients on life support like
regular sleepers do.

**Tech Node Changes**

This is not something super related to the Clarke in and on itself, but
I figured I might push my luck and try these anyway.

There is just no good reason as to why satchels and cutters should be
hard locked behind gas shells.

These experiments are fairly trivial, but have a huge impact on lowpop
as they usually force people to break into ordinance or the teleporter
room just so miners could get their basic tools.

The shells still exist but now grant a discount instead of hardlocking
tech, so there's still an incentive to do them.

ROCK AND STONE!

## Changelog

🆑
add: New internal sleeper module for the Clarke.
balance: Clarke Integrity has been bumped from 200 to 250 HP, melee
armor bumped from 20 to 40.
balance: Exo mining module can now be used to scan vents and begin the
wave defense event.
balance: The Clarke Ore Storage Module can now collect boulders and
internally smelt them.
balance: Mech Pka is now bundled within the Clarke tech node, it now
does more damage and comes with the AOE upgrade preinstalled.
balance: Exo mining drills are now a utility module rather than a
weapon.
balance: Applied Bluespace Research and Controlled Plasma tech nodes are
no longer hardlocked behind surveys, they instead favor from a discount
if they are completed.
fix: Fixes Exo Mech modules not granting life support to housed
patients.
/🆑

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-17 13:51:18 +00:00
Ghom
334589ad25 Tendril chests and mystery boxes can now be fished multiple times with a 30 minutes cooldown. (#87944) 2024-11-17 02:57:07 +02:00
Lucy
f4a077c6fe Refactors some more UIs to use DmIcon (#87886)
## About The Pull Request

Upstream port of
https://github.com/Monkestation/Monkestation2.0/pull/4215

This changes some tgui UIs that used icon2base64/getFlatIcon to display
items to instead use DmIcon, just passing the icon/icon_state instead.

To be specific: the ORM, the "ore container", and the order console
(produce, mining, and bitrunning vendors)

<details>
<summary><h3>UI screenshots / proof of testing</h3></summary>

![2024-11-12 (1731458275) ~
dreamseeker](https://github.com/user-attachments/assets/b1c60677-b117-4c23-8076-8b5072130d55)
![2024-11-12 (1731458281) ~
dreamseeker](https://github.com/user-attachments/assets/b64d3c2f-4754-4e5d-991a-2df69d86eb2a)
![2024-11-12 (1731458286) ~
dreamseeker](https://github.com/user-attachments/assets/287d8db1-8acb-4c4c-a2f0-66227a477d19)
![2024-11-12 (1731458388) ~
dreamseeker](https://github.com/user-attachments/assets/f69f5d51-5cdc-442c-971d-a4abedd4a3d2)
![2024-11-12 (1731458391) ~
dreamseeker](https://github.com/user-attachments/assets/53a95e88-ac41-4f97-a409-10b19d130376)


</details>

## Why It's Good For The Game

gfi bad, especially in ui(_static)_data, dmicon good.

## Changelog
🆑
refactor: The ORM, "ore container", and order console UIs (produce,
mining, bitrunner vendors) now load icons in a more efficient manner.
/🆑
2024-11-14 19:10:22 +01:00
Tim
c0e3ba7320 Fix infinite metal holodeck exploit (#87806)
## About The Pull Request
This stops people from using chairs to create free metal. It was
possible to pick up a chair or place it down and it would lose it's
hologram status since a new object is created.

Now anyone that attempts to place down or pick up a chair will have it
vanish.

## Why It's Good For The Game
No more free metal.

## Changelog
🆑
fix: Fix using chairs in holodeck to create infinite metal 
/🆑
2024-11-13 10:16:03 -05:00
tmyqlfpir
010ee7b40e Fix airlock shell for circuit camera component (#87837)
## About The Pull Request
This PR resolves an issue relating to circuit cameras and airlock
shells.

Fixes #84650

## Why It's Good For The Game
This is a bug fix, and makes airlock shells actually usable.

## Changelog
🆑
fix: Airlock shells are properly assigned circuit cameras modules
/🆑
2024-11-12 17:18:23 +01:00
grungussuss
0e1524c432 Writing sound (#87772)
## About The Pull Request
completes
https://github.com/orgs/tgstation/projects/19/views/1?pane=issue&itemId=85235611


https://github.com/user-attachments/assets/087c88bd-9ddd-4e57-972d-fe66084d19bc
## Why It's Good For The Game
maybe now someone will notice you wrote something
## Changelog
🆑 grungussuss
sound: writing something now produces sound
/🆑
2024-11-10 17:52:29 -05:00
Ghom
e5472d9be4 Fishing bluespace capsules (#87639)
## About The Pull Request
With this PR, I'm introducing fishing bluespace capsules to the game.
They can be found on the black market, but I'll get a couple more ways
to get them before it's ready.

Anyway, they're special bluespace capsules that spawn a fishing spot of
your choice. The fishing spot can be changed by alt-clicking the
capsule, and so far it has 5 choices, plus 2 locked behind emagging for
obvious reasons:
- Freshwater: pretty basic, you get freshwater fish from this.
- Saltwater: mainly saltwater fish.
- Tiziran: You get tiziran fish here, like the gunner jellyfish,
armorfish, needlefish, dwarves moonfish and the new, bigger zagoskian
moonfish. By the by, moonfish now periodically lay moonfish eggs, a
staple of lizardfolk cuisine.
- Ice fishing spot: A small ice turf with a hole dug in it; salmon,
arctic char, arctic chrabs and the bonemass (skeleton fish).
- Hot Spring: Somehow the new home to the ought-to-be-extinct
sacabambaspis. It also doubles as a better shower overall, with mild
healing on top of stamina recovery. Felinids still hate it though, and
won't benefit from the healing.
- Lava: A 2x2 square of pure lava. Requires an emag for obvious reasons.
- Plasma: Ditto, but it's plasma instead of lava.

As a sidenote, unlike standard shelter capsules, these require their
area to be clear of pipes and cables on top of the other requirements,
unless emagged. Obviously, I've done some changes to allow pipes and
cables to not be hidden by water turfs, though I'm still keeping these
reqs because I don't think these fishing spots would look great if
riddled with cables and pipes. I may remove this extra req later if it
proves to be a tad too tedious.

Also they don't knock you back when expanding.

Screenshot from a recent test (fixed the misplaced decal and tweaked a
few things since then):

![immagine](https://github.com/user-attachments/assets/6bbcddfb-ff1c-4e96-834a-2129cadbb31f)


## Why It's Good For The Game
The idea stems from how not all fishing spots aren't designed to be
accessible every round, which is fine, because we have the fish-porter
for that. However, even the fish-porter should have its limits in terms
of what it can provide by itself (linking is all fair and game), so I've
thought having something of a middle point would been neat, also as a
way to mess around with the station layout a bit, to empower the player
with a little extra "terraforming".

## Changelog

🆑
add: Added fishing bluespace capsules to the game, which can be used to
spawn a variety of fishing spots, from freshwater to tiziran sea to hot
springs, and also lava and plasma if emagged.
add: Added two new fish: the zagoskian moonfish and the sacabambaspis.
Moonfish will now periodically lay moonfish eggs.
map: The 'crashed pod' lavaland ruin now has a hot spring, and the
cursed hotspring on icemoon now has a plastic chair and a fishing
toolbox.
/🆑
2024-11-11 08:01:09 +13:00
tonty
d5daa9c9b8 [NO GBP] Renames mob/camera to mob/eye and makes everything follow suit (#87684)
## Why It's Good For The Game

Clarity and consistency regarding DM's systems. 
Internally, `eye` is used for anything that controls the client's view.

![image](https://github.com/user-attachments/assets/7d1291e1-7a6a-4736-a14b-97834e89846f)
How `eye` is used in DM is consistent with how we use the term, so I
figured this would add clarity.

Being named mob/camera also makes it unclear exactly what it's doing.
The name implies that it would function similar to how mob/camera/ai_eye
does, but most of the time it's only used as... an eye.

My ulterior reason for this PR is that I want to clean up
mob/camera/ai_eye and it's subtypes after this.
## Changelog

🆑
server: mob/camera has been renamed to mob/eye, which may break
downstreams
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-09 10:57:45 +00:00
necromanceranne
ab3cac746e Herculean/Atlas implants get a few additional BOULDER/Equipment related benefits. Boulders are more robust. Natural Athletics gains. (#87469)
## About The Pull Request

Herculean/Atlas spinal implants allow you to break boulders to process
them manually. Doing so also grants athletics experience.

They also increase the speed at which you throw objects, and also
increase the range further. The Atlas version also allows you to reduce
equipment movespeed penalties. (Fikou wanted me to do this for
specifically modsuits, but I don't see any reason this can't apply to
more than that, modsuits are just generally the slowest equipment you
could wear)

Boulders have 30 throw force, are by default HUGE, but have no throw
range at all and really weak tk throw range. You need a throwing booster
to throw boulders around. (They do extra damage to SPECIAL mobs, like
lavaland bosses, because it's funny to kill a god-like being with a huge
rock while slow as shit)

You naturally get athletics experience by doing some actions. Fireman
carrying, climbing tables/crates, climbing rope and climbing ladders
give you a slow and steady stream of experience. Rope gives a larger
amount if only because the process for doing so is destructive in some
way (you have to get more climbing rope eventually, so there is an
associated cost). Spinal implants now improve climbing speed for
climbing over objects.

## Why It's Good For The Game

I just had this strange compulsion to make the spinal implant make you
good at throwing boulders at lethal speeds. It already has some cool
rock-based special effects around you. Having mastery over rock throwing
just kind of made sense. Additionally, I thought it would be a funny
method for someone to be able to kill a boss via way of thrown boulders.
Or some hapless nuclear operative unprepared for a bunch of assistants
lobbing boulders at them.

Additionally, I also think it letting you break boulders for ore is a
fairly minor but fun addition. Pull boulders out of the vents, smash
them. Good work out. Particularly for miners.

I talked a while ago with I think Jacq about adding some natural methods
for accumulating athletics experience over the course of a round that
doesn't involve the dedicated weight lifting machinery/boxing bag. I
thought any method for doing that should probably be relatively slow and
definitely nonviable for significant athletics gains beyond novice
level. Mooost people will hit novice on a multi-z map if they go up and
down ladders enough. Or climb a lot of tables/crates. The results aren't
going to have much noticeable impact, however, as you only gain
appreciable benefits above novice. Probably just greater visibility of
fitness in a round. (Rather nice for the RD, who gets to show off how
swole they are more regularly).

<details>
  <summary>Spoiler warning</summary>


![CES8b4XWEAAIakb](https://github.com/user-attachments/assets/8baaa012-8048-419f-b936-2dc6621db3c2)

</details>

## Changelog
🆑
balance: Herculean/Atlas spinal implants make you better at climbing
tables, throw objects much faster and throw them much further. You can
also break boulders with your bare hands.
balance: Atlas implants let you offset the weight of worn/carried
equipment (like boulders).
balance: Boulders have no throw range, but if you can throw them via
throwing range boosters (such as the spinal implant), they deal fairly
large amounts of damage. Especially to powerful mobs like lavlaand
bosses.
balance: You naturally gain a small amount of athletics experience doing
some tasks, such as climbing rope, ladders and tables/crates, fireman
carrying, or smashing open boulders.
/🆑
2024-11-07 12:58:32 +00:00
SmArtKar
0b99107cc2 Guncode Agony 3: Projectile code cleanup (#87628)
## About The Pull Request

Massive cleanup/pseudo-refactor of projectile and projectile-adjacent
code. One letter variables, weird logic, some runtimes, all of that.
Atomized in a separate PR from the actual refactor so we don't end up
with a 5k line PR.

## Why It's Good For The Game

Makes the code possible to work with before I nuke pixel_move and kevinz
units™️
2024-11-03 21:46:13 +00:00