Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Orb update 01 10 #758

Merged
merged 266 commits into from
Jan 14, 2025
Merged

Conversation

Profakos
Copy link
Collaborator

Touched by both:
quirks.dm
cargo/exports/organs.dm
kheiral_cuffs.dm, also moved the code to the orbstation module
preferences/base.tsx
jobspace.tsx

Minor issue:
Table_shuffle: custom_price got renamed to price
AI hologram options are no longer hardcoded in hologram code, but in an external list, moved the orbstation angel there

TgUi update:
LanguagesMenu.tsx
AntagInfoMinor.tsx
AntagInfoWizardJourneyman.tsx
SpellDiploma.tsx

SmArtKar and others added 30 commits December 28, 2024 00:53
… again (tgstation#88662)

## About The Pull Request

Closes tgstation#88661

## Changelog
:cl:
fix: Fixed forcing open airlocks only working once and then never again
/:cl:
…same for other similar interactions) (tgstation#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
:cl:
qol: Iron material tiles can now be used to tile lattice to make plating
/:cl:
## About The Pull Request

I haven't profiled this and I don't need to. It doesn't matter to me if
it's slower to divide or multiply (it likely is to some extent because
byond).
Any cost associated is going to be on the scale of micro-ops, a level of
optimization I think we should deliberately avoid documenting.
Micro-ops are so minor and potentially variable that writing them down
poisons the well that is our greater contributor base's practices.

`*` and `/` imply different things. As an example the move from `/ 2` to
`* 0.5` obfuscates intent slightly. That intention is more important
then the optimization I think.

Hence, yeet

@tgstation/commit-access requesting input
## About The Pull Request
I was digging through sound code trying to add a few misc `.ogg`'s when
I noticed a horrifying revelation. Sound calculations are broken as
fuck. At first I didn't think it was a big deal until I remembered this
comment in another PR:


![chrome_6rspeYVig1](https://github.com/user-attachments/assets/04c3fa79-c267-43ae-a77f-85b0e8d3108f)

I asked for the profile logs:

```
                                                           Profile results (total time)
Proc Name                                                                                          Self CPU    Total CPU    Real Time     Overtime        Calls
----------------------------------------------------------------------------------------------    ---------    ---------    ---------    ---------    ---------
/proc/playsound                                                                                       4.771       26.841       26.902        0.347       153938
/mob/proc/playsound_local                                                                             9.511       15.689       15.891        0.724       429391

/mob/living/say                                                                                       0.125       19.064       19.945        0.000         2550
/mob/living/carbon/updatehealth                                                                       0.878        8.305        8.341        0.013        49847
/mob/living/carbon/proc/handle_organs                                                                 1.486        9.263        9.300        0.000        70977
/obj/item/organ/internal/on_life                                                                      0.415        0.455        0.561        0.000       340312
/mob/living/carbon/Life                                                                               0.758       30.085       30.123        0.000        71933
/mob/living/proc/Life                                                                                 5.509       39.404       39.512        0.000       401951
```


Yeah, that is _really_ bad. Especially since it is a hot proc that is
used half a million times. Optimizing this would help a decent amount.
So now you are probably wondering, what exactly is the problem?! Let's
take a look.

https://www.desmos.com/calculator/sqdfl8ipgf

Sounds are being broadcast on a large radius which is typically about
~17 tiles. Since the volume of a sound is reduced by distance, the
further away the sound is, the quieter it becomes. You would think, hey
that's fine! Sounds become inaudible at the 17 tile distance limit
right? Except no, they generally become inaudible about 2/3rds of the
way there. (~10 tile range) Sound volume is between 1-100. When the
sound volume is lower than 3, it becomes (pretty much) inaudible.

This means most of the sounds that are being spammed in game everywhere,
you can't even hear!!!

To fix this we used two major optimizations:

1. Add a `SOUND_AUDIBLE_VOLUME_MIN` to ignore any sound lower than this
volume and calculate an audible distance
2. Use the new audible distance to drastically shorten the tile range of
mob listeners using `get_hearers_in_view()`

To give you an idea of how much better this is:

Sounds that had a range of 17x17 (289 turfs) are now 12x12 (144 turfs).
There is also large range machinery like the SM that has a 40x40 (1600
turfs) that is now 30x30 (900 turfs).

It's quite an improvement.

I also went and added a debugging tool to the admin/debug equipment set
that can be found in the debug box. It is a pair of earmuffs that when
worn has any sounds sent to the mob via a `to_chat` message displaying
the sounds max range, distance from player, volume, and sound name. It
is highly recommend to walk while wearing the earmuffs since walking
stops your mob from emitting footstep sounds.

## Why It's Good For The Game
The speed of sound is now faster than ever. Please don't break the sound
barrier.

## Changelog
:cl:
refactor: Sound has been heavily optimized and will now ignore low
volume sounds from far away.
admin: Add debugging sound earmuffs to admin equipment inside the debug
box. Wear them to determine a sounds max range, distance, volume, and
sound name. Highly recommended to walk otherwise you will get spammed
with footstep sounds.
/:cl:
## About The Pull Request
Welding overlays were being put on the welding tool's
update_overlays_on_z, rather than the target's. This fixes that.
## Why It's Good For The Game
Fix bug
## Changelog
:cl:
fix: welding sparks no longer break on transitioning to a different
floor
/:cl:
## About The Pull Request
No exciting new features added, I only broke up this massive file into a
folder.
## Why It's Good For The Game
Call me react brained but seeing UI files with >500 lines of code just
strikes me as wall of text / sensory overload
## Changelog

N/A
## About The Pull Request
- Fixes tgstation#88606

## Changelog
:cl:
fix: Changing gather mode on storage items won't drop it's stored items
/:cl:
… speed, a neutral tackling outcome actually lets you get up, as intended (tgstation#88630)

## About The Pull Request

What it says on the tin. Also cleans up some tackling code

## Why It's Good For The Game

Only in my delirium did I actually realize how I fucked up.  Thanks flu.

## Changelog
:cl:
fix: Tackling resulting in a neutral outcome does not force you to the
floor.
fix: Getting up is now properly influenced by spinal implants.
/:cl:
## About The Pull Request

Making rice dough through the crafting menu would make it inherit all
the reagents of it's ingredients... which were the ingredients to make
rice dough. This means that when you baked the dough in an oven, it
would react the reagents and make a new rice dough, while removing all
the reagents in the newly made reispan. This made it inedible, and thus
impossible to make edible reispan.
## Why It's Good For The Game

Infinite inedible bread is probably bad 👍
## Changelog
🆑
fix: fixes crafting menu-made rice dough being unusable for bread
/🆑
## About The Pull Request

Changes `examiante` to `examine` in the give alert description.
## Why It's Good For The Game

`examiante` ain't a word and, uh, `examinate` I don't think actually
fits here either.
## Changelog
:cl:
spellcheck: Give alert 'examiante' > 'examine'.
/:cl:
tgstation#88744)

## About The Pull Request

iirc, string + string is const folded at compile-time, while "whatever
[string]" is not.

## Why It's Good For The Game

extra performance for practically no cost? why not

## Changelog
:cl:
code: Very slightly improved the performance of code related to adding
and removing traits.
/:cl:
## About The Pull Request

Fixes lead acid battery being overlooked in the split between cell and
megacell. It still remains a very good battery fitting of being rare
maintenance loot, but it's no longer equivalent to several bluespace
cells combined.

It is a cell with a maximum charge of 600kJ, more than a bluespace cell,
but a lower charge rate and no charge indicator.

It spawns with 250kJ to 350kJ in starting charge, between super and
hyper.

## Why It's Good For The Game

Fixes tgstation#88573

## Changelog

:cl: LT3
fix: Fixed lead acid cell having extremely high max charge
/:cl:
…ted objects (tgstation#88745)

## About The Pull Request

Closes tgstation#88644
Insanity

## Changelog
:cl:
fix: Fixed chair, echair, wheelchair and vehicle overlays on painted
objects
/:cl:
## About The Pull Request

Closes tgstation#88655

## Changelog
:cl:
fix: Fixed podperson hair not updating
/:cl:
## About The Pull Request
- Fixes tgstation#88727

Now when an atom shatters if that turf is blocked by a dense object
(e.g. wall, closed airlock, window etc) such that no air can pass
through it then we drop stuff on the thrown object's location and not on
the hit target location.

In laymen's terms if you throw a plate on the wall, window, closed
airlock etc then the shattered contents drop on the plate's last
location & not on the wall itself

## Changelog
:cl:
fix: Fixes shattering element dropping stuff on blocked turfs
/:cl:
MrMelbert and others added 24 commits January 8, 2025 13:54
…ually (tgstation#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

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

---------

Co-authored-by: _0Steven <[email protected]>
## About The Pull Request

Spessmen now need to blink! If you have non-robotic eyes, you'll
automatically blink every once in a while. Lizards have asynchronous
blinking, and whenever they blink one of their eyes (chosen at random)
will blink slightly sooner.


https://github.com/user-attachments/assets/e62020ef-d2f8-4634-9399-a27244326cfe

You can also blink manually, as emotes now fire the animations.


https://github.com/user-attachments/assets/80d6304f-f3c2-424a-a5aa-96a4aee7acdc

Adds a new eye-related quirk, Fluoride Stare! It will spawn you without
eyelids, preventing random or manual blinking and forcing you to wet
your eyes with some saline solution (of which you get a bottle, and a
dropper to apply it) every minute or so.
Additionally, eyes now display their color on their organ sprite,
instead of always showing up as blue.

(Don't tell roleplayers, but Fully Immerse smite now blinds you when you
blink, for true full immersion)

## Why It's Good For The Game

Spessmen blinking is just soulful, and brings some life into the game.
As for the quirk, its just a funny bit/reference that people can use
to... torture themselves?

## Changelog
:cl:
add: Spessmen now blink.
add: Added a new Fluoride Stare quirk, keep those eyeballs wet, lest
they crack!
image: Eyes now display their color on their organ sprite, instead of
always being displayed as blue.
/:cl:
…88954)

## About The Pull Request

OD thresholds are scaled by purity when ingested. The current scaling
penalises high purity, which appears to have been a mistake, see tgstation#64028.
This PR changes the scaling to favour higher purities and penalise lower
ones.

## Why It's Good For The Game

Properly synthesised chems, will match or exceed the listed OD
threshold. Fixes tgstation#64028.

## Changelog

:cl:
balance: Overdose thresholds now positively scale with high purity
/:cl:
## About The Pull Request

OpenDream was recently bumped to .NET 9, which is not on our runner
image. I added an action which installs the required .NET version for
DMCompiler to function.

## Why It's Good

Adding this action is not only good as a quick hack fix, but also for
posterity.
I also considered the impact this has on our runner execution time, but
my hope is that it should not matter if we have .NET installed already.
… chat text. (tgstation#88947)

## About The Pull Request

Deconverting a revolutionary now throws a balloon alert alongside the
chat text.

## Why It's Good For The Game

Important information we want to communicate to players needs to be on
the actual game screen; otherwise it's going to get missed during
heavy-chat situations.

## Changelog

:cl:
qol: Deconverting a revolutionary now throws a balloon alert alongside
the chat text.
/:cl:
## About The Pull Request

A bunch of places in code were recently updated to use a helper proc for
validating teleportation.
Unfortunately a lot of them also got the return value inverted, and
would only let you teleport to illegal locations. Most notably this
effected the hand teleporter, but also several other items.

Fixes tgstation#88966 

what is a "dull universal force" supposed to be anyway
…h organs) on evolution. (tgstation#88861)

## About The Pull Request

When a xenomorph evolves, any organs transplanted into it (that aren't
the default type for that slot) get transferred to the new caste it
evolves into. Additionally, If a xenomorph is missing an organ in a slot
it should have one in, the caste it evolves into will also have the
organ for that slot missing.

Brains also always get transferred, regardless of whether they are xeno
brains, so as to preserve skillchips and traumas.

## Why It's Good For The Game

Improves the mechanical consistency of surgically altered xenos.

## Changelog

:cl:
qol: Xenomorphs that have had their organs removed, or replaced with
organs they shouldn't normally have, keep those organs (or lack thereof)
when evolving.
fix: Xenomorphs that somehow get skillchips or brain traumas will keep
them when evolving.
/:cl:
## About The Pull Request
This adds a hair clipper sound to the razor item used to adjust mobs
beards and hairstyles.



https://github.com/user-attachments/assets/dba18247-415d-42b5-9e4b-a5c73d670088

Source: https://freesound.org/people/VIPERSTRONG/sounds/655747/
License: CC0

## Why It's Good For The Game
Buzz buzz buzz

## Changelog
:cl:
sound: Add hair clipper sound to hair razor item
/:cl:
@Profakos Profakos requested a review from Jacquerel as a code owner January 10, 2025 15:12
@lizardqueenlexi lizardqueenlexi merged commit fc44afe into lizardqueenlexi:orbstation Jan 14, 2025
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.