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

Tg jan pull 2 #360

Merged
merged 194 commits into from
Jan 23, 2025
Merged

Tg jan pull 2 #360

merged 194 commits into from
Jan 23, 2025

Conversation

carpotoxin
Copy link
Collaborator

About The Pull Request

Why It's Good For The Game

Changelog

🆑
add: Added new mechanics or gameplay changes
add: Added more things
del: Removed old things
qol: made something easier to use
balance: rebalanced something
fix: fixed a few things
sound: added/modified/removed audio or sound effects
image: added/modified/removed some icons or images
map: added/modified/removed map content
spellcheck: fixed a few typos
code: changed some code
refactor: refactored some code
config: changed some config setting
admin: messed with admin stuff
server: something server ops should know
/:cl:

lukevale and others added 30 commits January 10, 2025 16:16
…methods (tgstation#88960)

## About The Pull Request

Man.

### Standardizing Ethereal Defines

The _single_ biggest issue with all of the recent Ethereal prs has been
that, well, none of our Ethereal defines meaningfully tie to each other,
and as shown repeatedly it's _incredibly_ easy to the others when
changing one of them.
To resolve this, we introduce a `STANDARD_ETHEREAL_CHARGE` define that
every single other Ethereal define is scaled around, which itself is
tied to `STANDARD_CELL_CHARGE`.
Now these can be changed without immediately blowing up everything else,
and with awareness that they tie back to something.

As a side to this, we redefine all reagent-based charge recovery to be
relative to `ETHEREAL_DISCHARGE_RATE` rather than an arbitrary power
level, so it's easier to compare them to how quickly an ethereal
discharges.

### Adjusting Ethereal Defines

Previously, we defined `ETHEREAL_DISCHARGE_RATE` as `8e-3 *
STANDARD_CELL_CHARGE` per second, while defining `ETHEREAL_CHARGE_FULL`
as `2 * STANDARD_CELL_CHARGE`.
With some math, we get that we'd `2 / 8e-3 = 250 seconds`, 4 whole
minutes, to go from full charge to none at all.
It only takes half as much to get hungry, and about 3 minutes to start
taking toxin damage from roundstart.
So we slash this by eight, to `1e-3 STANDARD_ETHEREAL_CHARGE`, giving us
a nice 16-17~ minutes until we're hungry, and another 16-17~ until we
are 100% out of charge. This is also closer to the pre-power-rework
discharge rate.

What made this _worse_ was that the Ethereal APC charge define
`ETHEREAL_APC_POWER_GAIN` wasn't updated to match the current
charge/discharge levels, still being at `10 * STANDARD_CELL_CHARGE`,
which due to how it was coded led to it being impossible for Ethereals
to recharge from APCs.
We first and foremost change this to `0.1 * STANDARD_ETHEREAL_CHARGE`,
which is roughly equal to what it was before the most recent change, and
actually falls in line with Ethereal charge levels.

### Refactoring Ethereal Charge Methods

APC and Power Store recharging were both performing some awkward checks,
which led to our primary issues above, where they would refuse to even
attempt to charge if the stomach couldn't handle a full load or the cell
didn't have a full load.
So we rewrite their entire method to instead check how much can be
charged by taking the minimum of the cell charge, stomach used charge,
and charge-per-step.
We do this instead of just discharging it and taking the return value,
as the stomach may not have enough space for the cell's power, and
that'd get wasted.

This rewrite also allows us to address a small list of bugs.
We keep the `to_chat` for power store draining, as it better
communicates that this method is imperfect than a balloon alert would.

# Testing:<br>I spent an extended period of time looking at Ethereals
slowly starve in front of me with a stopwatch in hand.

## Why It's Good For The Game

Fixes tgstation#88934.
Fixes tgstation#88977.
16-17~ minutes is a _lot_ more bearable than 2-3~ minutes, and more in
line with discharge rates before the power rework.
Having Ethereal charging stuff actually work is nice.

## Changelog
:cl:
balance: Ethereal hunger rate has been adjusted to be 1/8th of its
previous rate, now taking roughly 16-17~ minutes to go down from full to
normal or normal to none. Ethereal defines have been standardized to
help keep this sane.
refactor: Ethereal APC and power store draining/charging methods have
been refactored. Please report any issues.
fix: Ethereal APC and power store draining/charging no longer
arbitrarily caps out at slightly below or above the max/min.
fix: Ethereal APC draining/charging no longer runtimes when there is no
cell or it gets removed mid-charge.
fix: Ethereals can no longer continue charging their stomach even if it
gets surgically removed from them mid-charge.
fix: Ethereal power store draining actually updated the charge level
overlay.
qol: Ethereal APC and power store draining displays a balloon alert when
it can't continue for whatever reason.
/:cl:
## About The Pull Request
Makes OD2211 as an error since it fixes a byond bug that nobody should
be using
```
New Pragma: OD2211 - ProcArgumentGlobal
A new pragma has been added for detecting this BYOND bug: https://www.byond.com/forum/post/2830750
When a proc argument begins with /var/ instead of var/, it creates a global variable instead of an argument.
/datum/proc/foo(/var/bar = 5)
    return

/proc/main()
    world.log << global.bar // This prints 5 in BYOND

Since this is obviously nonsense, elevating this pragma to an error is strongly encouraged. I have only found it in one SS13 codebase so far.
```
…8890)

## About The Pull Request

Closes tgstation#88692
A bit of a tricky one, this fixes station traits using incorrect names
for jobs. Moved name changing to run before the parent proc, and also
moved comsig after job traits so that it truely runs after job spawning,
not in the middle of the process (in case something removed or changes
job-related traits)

## Changelog
:cl:
fix: Station traits no longer use clown and mime's human names (they're
not human)
/:cl:
## About The Pull Request

Closes tgstation#88510
Also fixed incorrect icon positioning on Big Brother's trim (Human AI)
and medieval punpun icon flickering

## Changelog
:cl:
fix: Fixed chameleon cards not updating sechud icons
image: Fixed human AI's and medieval punpun's ID trims
/:cl:
## About The Pull Request

This PR reduces the strength of SaturnX's radial blur effect, and makes
it use sine easing instead of extremely jumpy elastic easing.

Before:


https://github.com/user-attachments/assets/3f617916-d6d6-4d03-97f8-8a999d568303

After:


https://github.com/user-attachments/assets/b7333f24-7663-4fb8-89e3-e0c5f3232e7b

## Why It's Good For The Game

Invisibility may be strong, but it also requires you to drop all of your
items, including held ones, to truely be invisible. This filter is too
much of a downside/visual effect and needs to be tuned down, as its
strong enough to make you dizzy just from looking at it.

## Changelog
:cl:
balance: Significatly tuned down SaturnX's visual filter's strength
/:cl:
## About The Pull Request

Adds ckey sorting akin to how you can look someone up by their name or
job in the observer menu, only available for admins.

## Why It's Good For The Game

Wine said it would be mad useful, no reason not to - they can already
observe people by ckey via the ``Who`` verb, this just adds a cleaner
way to do so.

## Changelog
:cl:
admin: Admins can now filter observable mobs by ckey
/:cl:
## About The Pull Request

Improves mindbreaker toxin's reagent description.

## Why It's Good For The Game

Grammar is hard.

## Changelog
:cl:
spellcheck: Improved mindbreaker toxin description
/:cl:
## About The Pull Request

update_body_parts_head_only is broken and doesn't clean overlays,
resulting in lizard blinking stacking their frills and snouts
infinitely, breaking the overlay cap and turning them into error
sprites. This is pretty bad for perf as update_body is somewhat
expensive, but this is a hotfix as lizards who emote right now turn
"invisible" as they become walking error sprites

## Changelog
:cl:
fix: Lizards no longer turn into error sprites when blinking
/:cl:
## About The Pull Request

Fixes bug inadvertently reported by forum screenshot.
Two defined ammo calibre strings had underscores in them, however this
are occasionally printed to users and thus can and should just use
spaces.

## Changelog

:cl:
spellcheck: Foam Force's brand management team require us to remove an
erroneous underscore which was in violation of their logo usage terms
and conditions.
/:cl:
…instead of just the red one (tgstation#89009)

## About The Pull Request

While reading the code to answer a technical question I noticed that
luminescent fluid had its `overdose_start(...)` proc defined twice:

https://github.com/tgstation/tgstation/blob/91981e151c75f3e971951612f161e81f9898f5b8/code/modules/reagents/chemistry/reagents/other_reagents.dm#L3227-L3235

https://github.com/tgstation/tgstation/blob/91981e151c75f3e971951612f161e81f9898f5b8/code/modules/reagents/chemistry/reagents/other_reagents.dm#L3237-L3247
...The latter of which permanently applying the unnaturally red eyes
trait.
Given the proc is defined twice, and the latter comes immediately after
the red subtype that gives the same trait on metabolize, it looks like
it was intended to be for the red subtype only.

This fixes that.
## Why It's Good For The Game

Fixes jank.
## Changelog
:cl:
fix: Only red glowstick fluid gives permanent unnaturally red eyes on
overdose.
/:cl:
## About The Pull Request

Something that's really bugged me for a while, custom vendors don't
display custom names on items. Nobody cared enough to fix this but me.
Guess you can count on me, eh?

Tested this on my own private server, worked fine. The items still
technically merge by type, so if you place one item with a custom name
first, then another of the same type with no custom name OR with a
different custom name, the newly inserted item's listed name will
override the other until it's bought.

## Why It's Good For The Game

Fixes tgstation#84937 /
tgstation#83151 (technically)

## Changelog

:cl:
fix: A single enthusiastic chemist hell-bent on selling chemicals to his
co-workers single-handedly solved a programming issue with our custom
vendors. They'll begin displaying custom names (such as those provided
by labels) once more.
/:cl:
## About The Pull Request

If you ink kissed a obj there would be a floating ink spit as it did not
delete the projectile. This is now fixed

## Why It's Good For The Game

bugg

## Changelog

:cl:
fix: ink kisses now delete the spawned projectile
/:cl:
…on whispered speech. (tgstation#88826)

## About The Pull Request

Adds an off-by-default config option to optionally disable TTS audio on
whispered speech.
### Ignore the Wallening. It's an old branch and I like to be nostalgic
of what could've been.


https://github.com/user-attachments/assets/f97aad31-9a83-421f-a3f0-0c0e54256664


## Why It's Good For The Game

We're trying to claw back as much performance as possible from our TTS
engine and there's literally no reason to play TTS audio if nobody but
the person speaking into the radio is going to hear it. Requested by the
host. Config is off by default.

## Changelog
:cl:
sound: Adds an off-by-default config option to optionally disable TTS
audio on whispered speech.
/:cl:
## About The Pull Request
Low cost cargo crate that is filled with 3 boxes of mousetraps. It's
apart of the service category.

## Why It's Good For The Game
Threatening the rat king with using all the station budget to stop his
army should be achievable. Ordering cats was very disappointing.

## Changelog
:cl:
add: Rat kings across the station tremble in fear since mousetraps have
been added to the cargo crate via service category.
/:cl:
MTandi and others added 18 commits January 17, 2025 18:21
…ather than trait gene [NO GBP] (tgstation#89089)

## About The Pull Request


![image](https://github.com/user-attachments/assets/3d4c5d7a-904c-4b63-a6c8-8c65e1a490da)

Didn't know that some plants have reagent traits defined for grafted
traits.

It didn't work because the trait_db contained only subtypes of
`/datum/plant_gene/trait`, but not `/datum/plant_gene/reagent`.

## Why It's Good For The Game

Fix

## Changelog

:cl:
fix: Fixed plant analyzer UI crashing on plants that have a reagent gene
on their graft
fix: Plants with reagent traits in the graft now properly say the name
of the grafted reagent
/:cl:
## About The Pull Request

This PR makes is so that if the air is hot enough to trigger a fire door
to close, grillable foods left out in the open will grill themselves.
I picked the minimum grilling temperature essentially at random because
I don't know what heat units are or should be, but the define
`FIRE_MINIMUM_TEMPERATURE_TO_EXIST` sounded about right.

IMPORTANT NOTE: **All foods are grillable by default** and become
"burned mess" after about 30 seconds.
If this seems like too much of a grief vector (a significant fire in the
kitchen may cause all food to grill itself into oblivion) I can make
this optional rather than a default-enabled thing on all food. IDK
whether or not this matters, because all food is also flammable.

Food will only grill based on air temperature if it is set out on an
open tile (including while on a table), not while in your hands or
backpack or pockets or a closet or inside an oven or (oddly enough)
while on a grill.

## Why It's Good For The Game

it increases my emulsion if eggs can fry on a hot sidewalk

## Changelog

:cl:
add: Eggs (and all other edible food) left in a hot place will fry.
/:cl:
## 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
:cl:
qol: Strange geysers now say in their name what they produce.
/:cl:
…#89100)

## About The Pull Request

This prevents mobs with `MOB_SIZE_SMALL` or `MOB_SIZE_TINY` from
triggering squeak sounds on crossed. Simple enough.

Also made the cooldown use the cooldown macros.

## Why It's Good For The Game

Small or tiny mobs are, well, tiny, and wouldn't really be able to
trigger the same kinda reaction.

Also sound spam is universally bad, and this gets rid of another method
of sound spam.

## Changelog
:cl:
qol: Small and tiny mobs no longer trigger squeaking objects when
walking over them.
/:cl:
@carpotoxin carpotoxin changed the title Tg jan 2 pull Tg jan pull 2 Jan 19, 2025
@carpotoxin carpotoxin marked this pull request as ready for review January 19, 2025 14:01
@Nerev4r Nerev4r merged commit 3908b86 into DopplerShift13:master Jan 23, 2025
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.