Commit Graph

115 Commits

Author SHA1 Message Date
nevimer 00ccf0c6b5 Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts:
#	.github/CODEOWNERS
#	.github/workflows/compile_changelogs.yml
#	.github/workflows/stale.yml
#	SQL/database_changelog.md
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/__DEFINES/atom_hud.dm
#	code/__DEFINES/inventory.dm
#	code/__DEFINES/mobs.dm
#	code/__DEFINES/species_clothing_paths.dm
#	code/__DEFINES/subsystems.dm
#	code/__DEFINES/surgery.dm
#	code/__HELPERS/global_lists.dm
#	code/_globalvars/lists/maintenance_loot.dm
#	code/_globalvars/traits/_traits.dm
#	code/controllers/subsystem/minor_mapping.dm
#	code/controllers/subsystem/processing/quirks.dm
#	code/controllers/subsystem/shuttle.dm
#	code/datums/components/palette.dm
#	code/datums/components/surgery_initiator.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/hud.dm
#	code/datums/mood.dm
#	code/datums/mutations/chameleon.dm
#	code/datums/quirks/negative_quirks/nyctophobia.dm
#	code/datums/status_effects/debuffs/debuffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/slime/slime_leech.dm
#	code/datums/weather/weather.dm
#	code/game/data_huds.dm
#	code/game/objects/items.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/frog_statue.dm
#	code/game/objects/items/rcd/RLD.dm
#	code/game/objects/items/robot/items/hypo.dm
#	code/game/objects/items/stacks/medical.dm
#	code/game/objects/items/stacks/wrap.dm
#	code/game/objects/items/storage/garment.dm
#	code/game/objects/items/tools/medical/defib.dm
#	code/game/objects/items/weaponry.dm
#	code/game/objects/items/weaponry/melee/misc.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/game/objects/structures/curtains.dm
#	code/game/objects/structures/dresser.dm
#	code/game/objects/structures/girders.dm
#	code/game/objects/structures/maintenance.dm
#	code/game/objects/structures/mirror.dm
#	code/modules/admin/greyscale_modify_menu.dm
#	code/modules/admin/verbs/light_debug.dm
#	code/modules/antagonists/ashwalker/ashwalker.dm
#	code/modules/antagonists/heretic/knowledge/starting_lore.dm
#	code/modules/antagonists/ninja/ninjaDrainAct.dm
#	code/modules/art/paintings.dm
#	code/modules/client/preferences.dm
#	code/modules/client/verbs/ooc.dm
#	code/modules/clothing/head/wig.dm
#	code/modules/events/disease_outbreak.dm
#	code/modules/holodeck/holo_effect.dm
#	code/modules/jobs/job_types/head_of_security.dm
#	code/modules/jobs/job_types/security_officer.dm
#	code/modules/library/skill_learning/generic_skillchips/point.dm
#	code/modules/mining/lavaland/ash_flora.dm
#	code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/basic/guardian/guardian.dm
#	code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
#	code/modules/mob/living/carbon/carbon.dm
#	code/modules/mob/living/carbon/human/human.dm
#	code/modules/mob/living/carbon/human/human_defines.dm
#	code/modules/mob/living/carbon/life.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob/living/living_defines.dm
#	code/modules/mob/mob.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mod/mod_control.dm
#	code/modules/mod/modules/modules_general.dm
#	code/modules/modular_computers/computers/item/computer_ui.dm
#	code/modules/paperwork/paper.dm
#	code/modules/paperwork/paperbin.dm
#	code/modules/power/lighting/light.dm
#	code/modules/projectiles/guns/energy/kinetic_accelerator.dm
#	code/modules/projectiles/projectile.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/food_reagents.dm
#	code/modules/reagents/chemistry/reagents/other_reagents.dm
#	code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
#	code/modules/research/xenobiology/crossbreeding/_clothing.dm
#	code/modules/research/xenobiology/crossbreeding/prismatic.dm
#	code/modules/surgery/advanced/brainwashing.dm
#	code/modules/surgery/advanced/lobotomy.dm
#	code/modules/surgery/amputation.dm
#	code/modules/surgery/blood_filter.dm
#	code/modules/surgery/bodyparts/_bodyparts.dm
#	code/modules/surgery/brain_surgery.dm
#	code/modules/surgery/cavity_implant.dm
#	code/modules/surgery/coronary_bypass.dm
#	code/modules/surgery/gastrectomy.dm
#	code/modules/surgery/healing.dm
#	code/modules/surgery/limb_augmentation.dm
#	code/modules/surgery/organ_manipulation.dm
#	code/modules/surgery/revival.dm
#	code/modules/surgery/sleeper_protocol.dm
#	code/modules/surgery/surgery_helpers.dm
#	code/modules/surgery/surgery_step.dm
#	code/modules/unit_tests/_unit_tests.dm
#	code/modules/unit_tests/designs.dm
#	code/modules/unit_tests/icon_state_worn.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body.png
#	code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png
#	icons/map_icons/clothing/head/_head.dmi
#	icons/map_icons/clothing/shoes.dmi
#	icons/map_icons/items/_item.dmi
#	icons/mob/huds/hud.dmi
#	icons/mob/inhands/64x64_lefthand.dmi
#	icons/mob/inhands/64x64_righthand.dmi
#	icons/obj/machines/computer.dmi
#	tgui/packages/tgui/interfaces/OperatingComputer.jsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx
#	tgui/packages/tgui/interfaces/PreferencesMenu/types.ts
#	tgui/packages/tgui/interfaces/SurgeryInitiator.tsx
#	tools/icon_cutter/check.py
2026-02-12 23:50:09 -05:00
SmArtKar 7dfef3684b Fixes runechat offsets for stored mobs (#94470)
## About The Pull Request

Stored mobs wider than 32 pixels, like worn purple raptors, would have
offset runechat messages because they tried to use their own
base_pixel_w instead of base_pixel_w of the atom that actually displayed
the message

## Changelog
🆑
fix: Fixed runechat offsets for stored mobs
/🆑
2025-12-16 22:04:54 -05:00
Roxy d0ca474789 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-05 2025-11-05 19:43:07 -05:00
Bloop 2ddcbbc66d Fixes chatmessage runtime (#93726)
## About The Pull Request

`Runtime in code/datums/chatmessage.dm,210: Cannot read
null.seen_messages`

The client can become null at any time due to logouts, and runtiming
here can prevent the chatmessage from cleaning up properly, which isn't
great.

## Why It's Good For The Game

Fixes bug/runtime log spam.

## Changelog
2025-11-02 15:41:15 +01:00
xPokee 9b282a850e Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-09-17 11:45:44 -04:00
MrMelbert 7c0973ccf4 Refactors names and voices / potted plants no longer conceal voice (just appearance) / honorifics show on examine (#92781)
## About The Pull Request

Closes #92778
Closes #86829

<img width="347" height="39" alt="image"
src="https://github.com/user-attachments/assets/c50bd1ff-8c00-47a7-a31a-617fae2adc5b"
/>

1. Splits `TRAIT_UNKNOWN` into `TRAIT_UNKNOWN_APPEARANCE` and
`TRAIT_UNKNOWN_VOICE`

2. Renames some stuff like `getvoice` and `getspecialvoice`

3. Gets rid some crummy signals around `get_visible_name` and
`get_voice`

4. Heads now apply the disfigured trait when relevant (rather than
snowflake checking for damage amount)

5. Ling voice refactored into using special voice (it was only used by a
viro symptom anyways; I don't anticipate this overlap being problematic)

6. Mask voice changer refactored into a trait

## Why It's Good For The Game

Potted plants shouldn't have magical voice concealing powers -
especially not over radio, but not over in person either. It's a damn
plant

So I addressed this by refactoring our face and voice system. Overall
things should be a lot cleaner and easier to use.

## Changelog

🆑 Melbert
refactor: Refactored a lot of code relating to human face and voice, ie,
what shows up in examine and in say. Report anything odd when examining
people, with ID cards, when talking over radio, or when disguised
refcator: Refactored how you get disfigured when your head's super
damaged
refactor: Refactored ling mimic voice and traitor voice changer
del: Potted plants no longer hide voice. They still hide appearance,
though
qol: Honorifics now show in examine / in world, rather than only when
speaking.
/🆑
2025-09-12 17:11:06 +02:00
_0Steven 03fa31e5d2 Custom emotes actually use +|_ emphasis formatting, your own emotes don't trip highlights (#90858)
<!-- 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. -->

So I was running into the bit where custom emotes actually don't get the
`+|_` emphasis formatting applied to them, _except_ for the runechat
portion which *does*.
This felt annoying, especially given I've seen a lot of people try it
and have it not work.
Add to that that your own emotes would keep getting highlighted,
blotting out other people mentioning your highlighted messages, and
here's this pr.

In this pr we add a few flags to audible/visible messages,
`WITH_EMPHASIS_MESSAGE` and `BLOCK_SELF_HIGHLIGHT_MESSAGE`, which
respectively apply emphasis formatting and block highlighting the
message to oneself.
We're doing this with flags because I felt always applying this would be
unnecessary. Most audible/visible messages won't need to check for
formatting, and quite a lot we *do* want to be highlighted.

As such, we apply these flags as need be.
For emotes we do this by having `get_message_flags(intentional)`, which
applies `BLOCK_SELF_HIGHLIGHT_MESSAGE` based on whether the message is
intentional, and on the custom emote subtype applies
`WITH_EMPHASIS_MESSAGE`.

Because it's not just for _say_ anymore, and already was also used for
emote runechats, we rename `say_emphasis(input)` into
`apply_message_emphasis(input)`. We additionally move it down to `/atom`
from `/atom/movable`, such that visible/audible messages can in fact
call it.

That resolves our issues.

We also apply `BLOCK_SELF_HIGHLIGHT_MESSAGE` to sign language tone
messages, as they're essentially a part of speech.

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

Being able to do `+|_` emphasis formatting on your emotes is nice, I've
seen a lot of people try it and have it not work.
Especially weird given it DOES apply to the runechat message, just not
the text chat message.

It's annoying when your own emotes trip your own highlights! Like if you
have a name highlight, your own emotes getting constantly highlighted
would blot out other people talking to you.
So having your own emotes not trip it just like your own talking makes
that less of a pain.
But sometimes emotes are forced, and in that case I think it's better to
keep the highlight because it's just like other people's messages
information the player might want to be notified of.
Generally, I think if it's the player's input it probably shouldn't be
highlighted, while if it isn't the player's input it probably should.

There's no need for us to ever highlight our own sign language tone
messages, because they're essentially a part of our talking.

<!-- 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. -->

<!-- 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 its 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. -->

🆑
add: When performing a custom emote, `+|_` emphasis formatting applies
to the text chat message instead of just the runechat message.
qol: Intentional emotes don't trip your own highlights.
qol: Sign language tone messages don't trip your own highlights.
/🆑

<!-- 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. -->
2025-05-08 19:03:38 -04:00
Roxy 71f5f95e8f nope nevermind 2025-05-02 22:06:13 -04:00
_0Steven ca25d72608 Custom emotes actually use +|_ emphasis formatting, your own emotes don't trip highlights (#90858)
<!-- 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. -->

So I was running into the bit where custom emotes actually don't get the
`+|_` emphasis formatting applied to them, _except_ for the runechat
portion which *does*.
This felt annoying, especially given I've seen a lot of people try it
and have it not work.
Add to that that your own emotes would keep getting highlighted,
blotting out other people mentioning your highlighted messages, and
here's this pr.

In this pr we add a few flags to audible/visible messages,
`WITH_EMPHASIS_MESSAGE` and `BLOCK_SELF_HIGHLIGHT_MESSAGE`, which
respectively apply emphasis formatting and block highlighting the
message to oneself.
We're doing this with flags because I felt always applying this would be
unnecessary. Most audible/visible messages won't need to check for
formatting, and quite a lot we *do* want to be highlighted.

As such, we apply these flags as need be.
For emotes we do this by having `get_message_flags(intentional)`, which
applies `BLOCK_SELF_HIGHLIGHT_MESSAGE` based on whether the message is
intentional, and on the custom emote subtype applies
`WITH_EMPHASIS_MESSAGE`.

Because it's not just for _say_ anymore, and already was also used for
emote runechats, we rename `say_emphasis(input)` into
`apply_message_emphasis(input)`. We additionally move it down to `/atom`
from `/atom/movable`, such that visible/audible messages can in fact
call it.

That resolves our issues.

We also apply `BLOCK_SELF_HIGHLIGHT_MESSAGE` to sign language tone
messages, as they're essentially a part of speech.

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

Being able to do `+|_` emphasis formatting on your emotes is nice, I've
seen a lot of people try it and have it not work.
Especially weird given it DOES apply to the runechat message, just not
the text chat message.

It's annoying when your own emotes trip your own highlights! Like if you
have a name highlight, your own emotes getting constantly highlighted
would blot out other people talking to you.
So having your own emotes not trip it just like your own talking makes
that less of a pain.
But sometimes emotes are forced, and in that case I think it's better to
keep the highlight because it's just like other people's messages
information the player might want to be notified of.
Generally, I think if it's the player's input it probably shouldn't be
highlighted, while if it isn't the player's input it probably should.

There's no need for us to ever highlight our own sign language tone
messages, because they're essentially a part of our talking.

<!-- 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. -->

<!-- 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 its 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. -->

🆑
add: When performing a custom emote, `+|_` emphasis formatting applies
to the text chat message instead of just the runechat message.
qol: Intentional emotes don't trip your own highlights.
qol: Sign language tone messages don't trip your own highlights.
/🆑

<!-- 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. -->
2025-05-02 21:52:33 -04:00
_0Steven 7eca9a710e Custom emotes actually use +|_ emphasis formatting, your own emotes don't trip highlights (#90858)
<!-- 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

So I was running into the bit where custom emotes actually don't get the
`+|_` emphasis formatting applied to them, _except_ for the runechat
portion which *does*.
This felt annoying, especially given I've seen a lot of people try it
and have it not work.
Add to that that your own emotes would keep getting highlighted,
blotting out other people mentioning your highlighted messages, and
here's this pr.

In this pr we add a few flags to audible/visible messages,
`WITH_EMPHASIS_MESSAGE` and `BLOCK_SELF_HIGHLIGHT_MESSAGE`, which
respectively apply emphasis formatting and block highlighting the
message to oneself.
We're doing this with flags because I felt always applying this would be
unnecessary. Most audible/visible messages won't need to check for
formatting, and quite a lot we *do* want to be highlighted.

As such, we apply these flags as need be.
For emotes we do this by having `get_message_flags(intentional)`, which
applies `BLOCK_SELF_HIGHLIGHT_MESSAGE` based on whether the message is
intentional, and on the custom emote subtype applies
`WITH_EMPHASIS_MESSAGE`.

Because it's not just for _say_ anymore, and already was also used for
emote runechats, we rename `say_emphasis(input)` into
`apply_message_emphasis(input)`. We additionally move it down to `/atom`
from `/atom/movable`, such that visible/audible messages can in fact
call it.

That resolves our issues.

We also apply `BLOCK_SELF_HIGHLIGHT_MESSAGE` to sign language tone
messages, as they're essentially a part of speech.

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game

Being able to do `+|_` emphasis formatting on your emotes is nice, I've
seen a lot of people try it and have it not work.
Especially weird given it DOES apply to the runechat message, just not
the text chat message.

It's annoying when your own emotes trip your own highlights! Like if you
have a name highlight, your own emotes getting constantly highlighted
would blot out other people talking to you.
So having your own emotes not trip it just like your own talking makes
that less of a pain.
But sometimes emotes are forced, and in that case I think it's better to
keep the highlight because it's just like other people's messages
information the player might want to be notified of.
Generally, I think if it's the player's input it probably shouldn't be
highlighted, while if it isn't the player's input it probably should.

There's no need for us to ever highlight our own sign language tone
messages, because they're essentially a part of our talking.

<!-- 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. -->

## 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 its 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. -->

🆑
add: When performing a custom emote, `+|_` emphasis formatting applies
to the text chat message instead of just the runechat message.
qol: Intentional emotes don't trip your own highlights.
qol: Sign language tone messages don't trip your own highlights.
/🆑

<!-- 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. -->
2025-05-03 02:47:43 +02:00
Waterpig 753d8e5ba4 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a 2025-04-08 18:58:45 +02:00
Waterpig d3d3a12540 The big fix for pixel_x and pixel_y use cases. (#90124)
## About The Pull Request

516 requires float layered overlays to be using pixel_w and pixel_z
instead of pixel_x and pixel_y respectively, unless we want
visual/layering errors. This makes sense, as w,z are for visual effects
only. Sadly seems we were not entirely consistent in this, and many
things seem to have been using x,y incorrectly.

This hopefully fixes that, and thus also fixes layering issues. Complete
1:1 compatibility not guaranteed.

I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming
inside apply_overlays), and this is still included in the PR to flash
out possible issues in a TM (Plus I will need someone to grep the
runtimes for me after the TM period to make sure nothing was missed).
After this is done I'll remove all these extra checks.

Lints will probably be failing for a bit, got to wait for [this
update](https://github.com/SpaceManiac/SpacemanDMM/commit/4b77cd487d0a7b6a069df20356b701af5b20489d)
to them to make it into release. Or just unlint the lines, though that's
probably gonna produce code debt

## Why It's Good For The Game

Fixes this massive 516 mess, hopefully.

closes #90281

## Changelog
🆑
refactor: Changed many of our use cases for pixel_x and pixel_y
correctly into pixel_w and pixel_z, fixing layering issues in the
process.
/🆑

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: SmArtKar <master.of.bagets@gmail.com>
2025-03-28 14:18:45 +00:00
Kashargul 68b687b13f some more 516 compat fixes (#89766)
Ports the helpers from
https://github.com/BeeStation/BeeStation-Hornet/pull/12240

This should fix some more of the 516 issues that I've seen while giving
a quick check through the code

The remaining browse should work now.

Also fixing another sass warning while being on it.

## About The Pull Request
## Why It's Good For The Game
## Changelog
🆑
fix: tgui say 516 will no longer change channels when the button is used
to drag it
fix: tgui say 516 will no longer leak radio messages into the wrong
channel
fix: runechat flickering when faded up messages fade out
/🆑
2025-03-12 17:10:23 -04:00
Kashargul dfa7f2bb62 some more 516 compat fixes (#89766)
Ports the helpers from
https://github.com/BeeStation/BeeStation-Hornet/pull/12240

This should fix some more of the 516 issues that I've seen while giving
a quick check through the code

The remaining browse should work now.

Also fixing another sass warning while being on it.

## About The Pull Request
## Why It's Good For The Game
## Changelog
🆑
fix: tgui say 516 will no longer change channels when the button is used
to drag it
fix: tgui say 516 will no longer leak radio messages into the wrong
channel
fix: runechat flickering when faded up messages fade out
/🆑
2025-03-03 15:15:07 +01:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00
tonty 97ffc3b88b Runechat no longer awkwardly fades in if in bulk (#88089)
## About The Pull Request

So you know how if you tried to use a ? or ! in a message with signer
the second message would very slowly fade in? I fixed that

## Why It's Good For The Game

why IS IT good for the game?

## Changelog

🆑
fix: runetext fades in correctly in bulk. signers rejoice
/🆑
2024-12-06 23:19:24 +01:00
SmArtKar a022d55bbd Runechat messages no longer hang in SS queue with invalid callbacks if the client logs out before they've finished building themselves (#88127)
## About The Pull Request

Super niche, unnoticeable in-game, found when runtime diving. Don't
leave callbacks to qdeleted datums and clients in queue please.

## Changelog
🆑
fix: Fixed a runtime caused by logging out while your runechat message
was appearing.
/🆑
2024-11-24 20:51:39 +01:00
SkyratBot 6a418150e8 [MIRROR] Spelling and Grammar Fixes (#29499)
* Spelling and Grammar Fixes

* they dont understand

---------

Co-authored-by: klorpa <30924131+klorpa@users.noreply.github.com>
Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com>
2024-08-22 02:34:54 +00:00
klorpa d2c7806047 Spelling and Grammar Fixes (#85992)
## About The Pull Request
Fixes several errors to spelling, grammar, and punctuation.
## Why It's Good For The Game
## Changelog
🆑
spellcheck: fixed a few typos
/🆑
2024-08-21 17:07:02 +12:00
SkyratBot 8750136628 [MIRROR] Mining headset upgrade - Callouts and volume boosters (#29099)
* Mining headset upgrade - Callouts and volume boosters (#85008)

## About The Pull Request

![dreamseeker_SOPW0zf89I](https://github.com/user-attachments/assets/0fa4921f-0b5c-41fe-bf70-56f21c28f579)

Shift + middle clicking while wearing a mining headset will open a
callout radial, after moving your mouse over one of the options a
callout emote will appear where you pointed (No need to click on the
radial button). Callouts have a 3 second cooldown to prevent spam and
glow in the dark due to how dark lavaland is (normal point emotes do
not)
There are 6 options: pointing, danger, attack, mine, defend and
reposition. Your callouts are colored in your runechat color. This is
done via a component so later if needed it could be added to other
headsets/mobs/items. Callouts also can initiate basic mob orders, being
a better way to command your minebots in combat.

Additionally, they also boost your speech back to normal levels in
low-pressure environments, ensuring that your runechat is still nice and
readable.

## Why It's Good For The Game

This would make coop mining much more enjoyable, as stopping to type
mid-fight is more often than not a death sentence on lavaland. With
arcmining's vents cooperating is actually beneficial, and I feel like we
should incentivize miners to do it more often by providing them with
tools for it.

## Changelog
🆑
add: Mining headsets now allow you to make callouts via pointing. You
can use them to communicate with fellow miners or order your army of
bots and raptors!
add: Mining headsets keep your voice loud and clear in low-pressure
environments (not vacuum!)
/🆑

* Mining headset upgrade - Callouts and volume boosters

* add N

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-07-29 21:31:00 +05:30
SmArtKar bab0287356 Mining headset upgrade - Callouts and volume boosters (#85008)
## About The Pull Request

![dreamseeker_SOPW0zf89I](https://github.com/user-attachments/assets/0fa4921f-0b5c-41fe-bf70-56f21c28f579)

Shift + middle clicking while wearing a mining headset will open a
callout radial, after moving your mouse over one of the options a
callout emote will appear where you pointed (No need to click on the
radial button). Callouts have a 3 second cooldown to prevent spam and
glow in the dark due to how dark lavaland is (normal point emotes do
not)
There are 6 options: pointing, danger, attack, mine, defend and
reposition. Your callouts are colored in your runechat color. This is
done via a component so later if needed it could be added to other
headsets/mobs/items. Callouts also can initiate basic mob orders, being
a better way to command your minebots in combat.

Additionally, they also boost your speech back to normal levels in
low-pressure environments, ensuring that your runechat is still nice and
readable.

## Why It's Good For The Game

This would make coop mining much more enjoyable, as stopping to type
mid-fight is more often than not a death sentence on lavaland. With
arcmining's vents cooperating is actually beneficial, and I feel like we
should incentivize miners to do it more often by providing them with
tools for it.

## Changelog
🆑
add: Mining headsets now allow you to make callouts via pointing. You
can use them to communicate with fellow miners or order your army of
bots and raptors!
add: Mining headsets keep your voice loud and clear in low-pressure
environments (not vacuum!)
/🆑
2024-07-28 20:06:30 +02:00
nikothedude bbc673dc30 [SEMI-MODULAR] [NOVA PORT] Fixes a typo in electrical damage description + prevents electrical damage from worsening during repairs + remove some nova edits (#28445)
yargh
2024-06-29 10:44:42 +05:30
Gandalf 5c50d1f9f5 Small batch port (#28314)
* Early ports modular lasers from Nova, they can talk to you! (#1066)

Description was copy pasted from Nova
[PR#561](https://github.com/NovaSector/NovaSector/pull/561)

![image](https://github.com/Bubberstation/Bubberstation/assets/81807356/aff45752-00bd-4a96-8748-35b37544a1fc)

These new weapons, the modular energy rifles and carbines, have many
unique functions.

Each of the two weapon types has its own collection of modes, each
mostly unique from the other version of the gun.

For the long rifle, these include:

Two-burst laser mode
Sniper mode with massive scope
Windup autofire disabler machinegun
Plasma grenade launcher
Plasma shotgun
And for the short carbine these include:

Hellfire laser mode
Its A Sword Now
Trickshot disabler mode
Plasma flare launcher
Micro-shotgun
Each of the two can switch between these modes with a short delay and
animation, though all modes run off of the same battery. Luckily, the
battery does self-recharge, though at a very slow rate.

But there's something even better for these weapons, they talk to you.
Each mode and each variant of energy gun has its own little personality
with it, and it'll talk to you when certain things happen. For example,
switching modes, running out of power, picking them up, and more!

While this can be disabled, that would make the persona in the gun quite
sad. You wouldn't want to do that, would you?

But, and I swear this is the last thing this time. Each of these guns
has a built in soulcatcher (you can access it with alt-click!) for
giving your weapons some REAL personality. And now you observer mains
can finally live out your dreams of being someone's weapon!

Im going to replace ERT energy weapons with these guns, author of this
weapons originaly replaced MCR's with these. Perhps if people will want
to, I can replace mcrs with these....

<details>

![image](https://github.com/Bubberstation/Bubberstation/assets/81807356/146723e4-475a-4f7a-b5e5-3d6c6568753f)

https://github.com/Bubberstation/Bubberstation/assets/81807356/a6a8c8a2-f3ee-4b30-97e2-580e42f2ae56

https://github.com/Bubberstation/Bubberstation/assets/81807356/c560e26b-5d27-493a-b067-01957e4bb81a

https://github.com/Bubberstation/Bubberstation/assets/81807356/7a36eed6-45a7-42b4-af56-cb6022f15204

</details>

🆑 Paxilmaniac
add: A pair of new energy weapons has been added. Coming in both long
and short versions, these persona-enabled weapons have many different
modes they can rapidly reconfigure themselves between to fit whatever
the operator's preferences may be.
/🆑

---------

Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>

* fex

* yeah

* [PORT] [SEMI-MODULAR] [100% FREE LAG] Chat Colors (#157)

* Port Chat Colors / effigyse

* Im crazy

* Thenk u mal

* Adds global chat color list

* Apply suggestions from code review

* extra line

* Makes this happen when you spawn as opposed to when you change prefs

Less extra list entries that way

* Adds cyborg support

I think cyborg brain prefs were not working previously, either. Fixes that...

* I forgot about the AI

* Apply suggestions from code review

* Makes user's prefs apply to the TTS device that they are using

---------

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

* e

* https://github.com/NovaSector/NovaSector/pull/2234

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

* Update tgstation.dme

* https://github.com/NovaSector/NovaSector/pull/323

* 0

* Update emote.dm

---------

Co-authored-by: Erol509 <81807356+Erol509@users.noreply.github.com>
Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: Name <w4rd3nn@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2024-06-22 22:42:43 +01:00
SkyratBot 16c66010c9 [MIRROR] /icons/ folder cleansing crusade part 3 (#27859)
* /icons/ folder cleansing crusade part 3

* fixes

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-06-09 12:00:28 +05:30
YesterdaysPromise 8eb3b51ad9 /icons/ folder cleansing crusade part 3 (#83420)
## About The Pull Request

In my effort to make the /icons/ folder cleaner and more intuitive
instead of having to rely on recalling names of stuff and looking them
up in code to find them for poor sods such as myself, plus in spurt of
complusion to organize stuff, here goes. I've tracked all changes in
commit descriptions. A lot still to be done, but I know these waves go
over dozens of files making things slow, so went lighter on it.
Destroyed useless impostor files taking up space and cleaned a stray
pixel on my way.

## Why It's Good For The Game

Cleaner /icons/ file means saner spriters, less time spent. Stray pixels
and impostor files (ones which are copies of actually used ones
elsewhere) are not good.

## Changelog

🆑
image: Cleaned a single stray pixel in a single frame of a bite
telegraphing accidentaly found while re-organizing the files.
/🆑
2024-05-25 21:08:08 -07:00
SkyratBot a69fb2dcaf [MIRROR] Runechat color now goes by voice rather than name [MDB IGNORE] (#26072)
* Runechat color now goes by voice rather than name (#80812)

## About The Pull Request

What it says on the tin. The color you get from runechat is currently
tied to your `name`, which doesn't accurately reflect how your character
is speaking in all cases.

What this change means: now things like voice changer masks, changeling
mimicry, and voice change disease will now actually change the color of
your voice to match the mob you are speaking in the voice of.

As a result it should now be impossible to figure out whether someone is
voice changing from looking at their runechat color and knowing what the
real mob's color was.

## Why It's Good For The Game

Just feels like an oversight that it didn't do this in the first place.

## Changelog
🆑
fix: if your voice changes (e.g. through a voice changer or changeling
mimicry) your runechat will now appear as the mob you are speaking in
the voice of
fix: when doing emotes with your face obscured, your runechat color will
now appear as either that of Unknown or the mob you are wearing the id
of (if you are wearing a mask with someone else's id)
/🆑

* Runechat color now goes by voice rather than name

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-01-12 03:00:31 +01:00
Bloop 568c5119b3 Runechat color now goes by voice rather than name (#80812)
## About The Pull Request

What it says on the tin. The color you get from runechat is currently
tied to your `name`, which doesn't accurately reflect how your character
is speaking in all cases.

What this change means: now things like voice changer masks, changeling
mimicry, and voice change disease will now actually change the color of
your voice to match the mob you are speaking in the voice of.

As a result it should now be impossible to figure out whether someone is
voice changing from looking at their runechat color and knowing what the
real mob's color was.

## Why It's Good For The Game

Just feels like an oversight that it didn't do this in the first place.

## Changelog
🆑
fix: if your voice changes (e.g. through a voice changer or changeling
mimicry) your runechat will now appear as the mob you are speaking in
the voice of
fix: when doing emotes with your face obscured, your runechat color will
now appear as either that of Unknown or the mob you are wearing the id
of (if you are wearing a mask with someone else's id)
/🆑
2024-01-10 10:29:16 -08:00
SkyratBot 68f4deff40 [MIRROR] MODLink System (+ NWTLMM) [MDB IGNORE] (#23199)
* MODLink System (+ NWTLMM) (#77639)

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

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

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

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

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

* MODLink System (+ NWTLMM)

---------

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

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

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


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

## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑
2023-08-19 06:24:57 +00:00
SkyratBot 5bca535c54 [MIRROR] Fix invisible superscript characters in runechat [NO GBP] [MDB IGNORE] (#22420)
* Fix invisible superscript characters in runechat [NO GBP] (#76696)

## About The Pull Request

Fixes superscript characters from being invisible (like the asterisk
when you perform actions)

![image](https://github.com/tgstation/tgstation/assets/83487515/ea863d0d-69ab-4791-820a-717ce3a2dbd1)

## Changelog
🆑 LT3
fix: Maptext should now properly show superscript characters when
performing actions
/🆑

* Fix invisible superscript characters in runechat [NO GBP]

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-07-13 11:21:42 -07:00
lessthanthree bc4762319b Fix invisible superscript characters in runechat [NO GBP] (#76696)
## About The Pull Request

Fixes superscript characters from being invisible (like the asterisk
when you perform actions)


![image](https://github.com/tgstation/tgstation/assets/83487515/ea863d0d-69ab-4791-820a-717ce3a2dbd1)

## Changelog
🆑 LT3
fix: Maptext should now properly show superscript characters when
performing actions
/🆑
2023-07-13 19:54:42 +02:00
SkyratBot 85faba1a0f [MIRROR] Maptext 2023: I can see clearly now [MDB IGNORE] (#22100)
* Maptext 2023: I can see clearly now

* skyrat edit

* Update tgstation.dme

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-06-27 21:05:25 -07:00
lessthanthree 62c6da56cb Maptext 2023: I can see clearly now (#76356)
## About The Pull Request

We needed to replace our maptext font. Closes
https://github.com/tgstation/tgstation/issues/73002

Replaced with a pair of new fonts, made some improvements and fixes
while we're at it.

- Two new maptext fonts: Grand9K and TinyUnicode
- These two scale cleanly with BYOND icon sizes, so no antialiasing of
already tiny fonts making it look bad when enlarged on screen
- Fixed size fonts now have metrics to be used properly on overlays
(such as status display) where a client (a requirement for MeasureText)
is not feasible
- VCR OSD Mono still here, usable as a variable size font with larger
text
- Synchronizes status display scrolling speed between lines
- Fixed special maptexts for yelling, clown, redtext, greentext


https://github.com/tgstation/tgstation/assets/83487515/7dbaf1d1-f1d5-46ff-8903-d95cab059ed8

## Why It's Good For The Game

Maptext looks like crap if you're one of the players who no longer have
the old font. Even if you do have Small Fonts, this looks better.

## Changelog

🆑 LT3
refactor: Refactored maptext (those floating words)
fix: Fixed special chat bubbles for yelling, clown, redtext, greentext
fix: Fixed alignment of status display text
code: Status displays now synchronize their message lines when scrolling
/🆑
2023-06-27 16:46:16 -06:00
SkyratBot 6dfe17306c [MIRROR] Pulls apart the vestiges of components still hanging onto signals [MDB IGNORE] (#21738)
* Pulls apart the vestiges of components still hanging onto signals

* update modular

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2023-06-18 13:18:23 +00:00
LemonInTheDark ae5a4f955d Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request

Signals were initially only usable with component listeners, which while
no longer the case has lead to outdated documentation, names, and a
similar location in code.

This pr pulls the two apart. Partially because mso thinks we should, but
also because they really aren't directly linked anymore, and having them
in this midstate just confuses people.

[Renames comp_lookup to listen_lookup, since that's what it
does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced)

[Moves signal procs over to their own
file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc)

[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e)

[Does something similar to the attackby comsigs (PARENT ->
ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e)

[And finally passes over the examine
signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302)

## Why It's Good For The Game

Code makes more sense, things are better teased apart, s just good imo

## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
2023-06-09 06:14:31 +00:00
SkyratBot 1f0bf950ed [MIRROR] Fix runtime with chat messages deleting when their clients do [MDB IGNORE] (#21359)
* Fix runtime with chat messages deleting when their clients do (#75445)

```
 -
[2023-05-07 18:56:20.998] runtime error: Del'd before we finished fading, with 30 time left (code/datums/chatmessage.dm:81)
 - proc name:  stack trace (/proc/_stack_trace)
 -   source file: stack_trace.dm,4
 -   usr: Lloyd Moffardi (/mob/dead/observer)
 -   src: null
 -   usr.loc: the floor (113,141,4) (/turf/open/floor/iron)
 -   call stack:
 -  stack trace("Del\'d before we finished fadi...", "code/datums/chatmessage.dm", 81)
 - /datum/chatmessage (/datum/chatmessage): Destroy(0)
 - qdel(/datum/chatmessage (/datum/chatmessage), 0)
 - /datum/chatmessage (/datum/chatmessage): on parent qdel(Avylaar (/client), 1)
 - Avylaar (/client):  SendSignal("parent_qdeleting", /list (/list))
 - Avylaar (/client): Del()
```

In 85% of rounds.

This happens because when the client deletes, the chat message is
deleted with it. However, chat messages want to make sure they're not
being deleted mid-animation. These two requirements clash, because a
client can be deleted at any time during the animation. Moves the check
to only be done when the client isn't being destroyed.

* Fix runtime with chat messages deleting when their clients do

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-05-23 21:20:55 +01:00
Mothblocks fc0ba64228 Fix runtime with chat messages deleting when their clients do (#75445)
```
 - 
[2023-05-07 18:56:20.998] runtime error: Del'd before we finished fading, with 30 time left (code/datums/chatmessage.dm:81)
 - proc name:  stack trace (/proc/_stack_trace)
 -   source file: stack_trace.dm,4
 -   usr: Lloyd Moffardi (/mob/dead/observer)
 -   src: null
 -   usr.loc: the floor (113,141,4) (/turf/open/floor/iron)
 -   call stack:
 -  stack trace("Del\'d before we finished fadi...", "code/datums/chatmessage.dm", 81)
 - /datum/chatmessage (/datum/chatmessage): Destroy(0)
 - qdel(/datum/chatmessage (/datum/chatmessage), 0)
 - /datum/chatmessage (/datum/chatmessage): on parent qdel(Avylaar (/client), 1)
 - Avylaar (/client):  SendSignal("parent_qdeleting", /list (/list))
 - Avylaar (/client): Del()
```

In 85% of rounds.

This happens because when the client deletes, the chat message is
deleted with it. However, chat messages want to make sure they're not
being deleted mid-animation. These two requirements clash, because a
client can be deleted at any time during the animation. Moves the check
to only be done when the client isn't being destroyed.
2023-05-22 11:05:00 -06:00
SkyratBot fb1342d649 [MIRROR] Removes all but the barebones timers for runechat [MDB IGNORE] (#20331)
* Removes all but the barebones timers for runechat (#74428)

## About The Pull Request

Instead of using timers to trigger the fadeout, we use animate()
We start by queuing up all our alpha fades, then if we are shortened, we
calculate the alpha we should be at, set our alpha to that, then animate
from there to 0

This requires ANIMATION_PARALLEL on the pixel offsets to ensure they
don't reset the alpha animation, and it does mean that a second alpha
animate could reset the pixels, but that's a chance I'm willing to take.

The timer work here was almost all of the cost, this should reduce the
overhead of this proc signficantly, making runechat more fit for use
under high stress.

I have got it to end slightly early, but it's very minor and I've only
seen it once, so yaknow, good enough.

## Why It's Good For The Game

Speeeed

## Changelog
🆑
refactor: runechat should be a lot cheaper on the server. I've changed
how it functions, if it behaves weird yell at me please don't just
ignore it
/🆑

* Removes all but the barebones timers for runechat

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-04-04 18:52:19 -07:00
LemonInTheDark bd61c385f1 Removes all but the barebones timers for runechat (#74428)
## About The Pull Request

Instead of using timers to trigger the fadeout, we use animate() 
We start by queuing up all our alpha fades, then if we are shortened, we
calculate the alpha we should be at, set our alpha to that, then animate
from there to 0

This requires ANIMATION_PARALLEL on the pixel offsets to ensure they
don't reset the alpha animation, and it does mean that a second alpha
animate could reset the pixels, but that's a chance I'm willing to take.

The timer work here was almost all of the cost, this should reduce the
overhead of this proc signficantly, making runechat more fit for use
under high stress.

I have got it to end slightly early, but it's very minor and I've only
seen it once, so yaknow, good enough.

## Why It's Good For The Game

Speeeed

## Changelog
🆑
refactor: runechat should be a lot cheaper on the server. I've changed
how it functions, if it behaves weird yell at me please don't just
ignore it
/🆑
2023-04-04 15:42:55 -06:00
SkyratBot ec67ffb340 [MIRROR] Properly accounts for byond tick fuckery in runechat code [MDB IGNORE] (#20237)
* Properly accounts for byond tick fuckery in runechat code (#74388)

## About The Pull Request

Ok so like, the agreed upon assumption for "verb like code" (stuff that
triggers when a client sents a network packet to the server), is it runs
in verb time, that sliver of time between maptick and the start of the
next tick.
We thought MeasureText worked like this. It doesn't.

It will, occasionally, resume not during verb time but as a sleeping
proc, at the start of the next tick.
Before the MC has started working.
This appears to only happen when the tick is already overloaded.

Unfortunately, it doesn't invoke after all sleeping procs as we were
lead to believe, but just like, like any sleeping proc.

This means it fights with the mc for cpu time, and doesn't respect the
TICK_CHECK macro we use to ensure this situation doesn't happen.

SOOO lets use a var off the MC instead, tracking when it last fired.
We can use this in companion with TICK_CHECK to ensure verbs schedule
properly if they invoke before the MC runs.

Hopefully this should fix 0 cpu when running at highpop

Thanks to Kylerace and MrStonedOne for suffering together with me on
this, I hate this engine.

* Properly accounts for byond tick fuckery in runechat code

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-04-01 21:11:04 +01:00
LemonInTheDark fe7ebd67cf Properly accounts for byond tick fuckery in runechat code (#74388)
## About The Pull Request

Ok so like, the agreed upon assumption for "verb like code" (stuff that
triggers when a client sents a network packet to the server), is it runs
in verb time, that sliver of time between maptick and the start of the
next tick.
We thought MeasureText worked like this. It doesn't.

It will, occasionally, resume not during verb time but as a sleeping
proc, at the start of the next tick.
Before the MC has started working.
This appears to only happen when the tick is already overloaded.

Unfortunately, it doesn't invoke after all sleeping procs as we were
lead to believe, but just like, like any sleeping proc.

This means it fights with the mc for cpu time, and doesn't respect the
TICK_CHECK macro we use to ensure this situation doesn't happen.

SOOO lets use a var off the MC instead, tracking when it last fired.
We can use this in companion with TICK_CHECK to ensure verbs schedule
properly if they invoke before the MC runs.

Hopefully this should fix 0 cpu when running at highpop

Thanks to Kylerace and MrStonedOne for suffering together with me on
this, I hate this engine.
2023-03-31 22:11:20 -06:00
Gandalf e4b4d4d3c0 MISSED MIRROR [Lints Against Unmanaged Local Defines] (#20204)
* https://github.com/tgstation/tgstation/pull/74333

https: //github.com/tgstation/tgstation/pull/74333
Co-Authored-By: tattle <66640614+dragomagol@users.noreply.github.com>

* var stuff

Co-Authored-By: tattle <66640614+dragomagol@users.noreply.github.com>

* vars

* Update sol_fed.dm

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
2023-04-01 01:15:22 +01:00
san7890 ccef887efe Lints Against Unmanaged Local Defines (#74333)
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR
TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW
RATHER THAN AFTER THE FACT.

## About The Pull Request

Hey there,

This took a while to do, but here's the gist:

Python file now regexes every file in `/code` except for those that have
some valid reason to be tacking on more global defines. Some of those
reasons are simply just that I don't have the time right now (doing what
you see in this PR took a few hours) to refactor and parse what should
belong and what should be thrown out. For the time being though, this PR
will at least _halt_ people making the mistake of not `#undef`ing any
files they `#define` "locally", or within the scope of a file.

Most people forget to do this and this leads to a lot of mess later on
due to how many variables can be unmanaged on the global level. I've
made this mistake, you've made this mistake, it's a common thing. Let's
automatically check for it so it can be fixed no-stress.

Scenarios this PR corrects:

* Forgetting to undef a define but undeffing others.
* Not undeffing any defines in your file.
* Earmarking a define as a "file local" define, but not defining it.
* Having a define be a "file local" define, but having it be used
elsewhere.
* Having a "local" define not even be in the file that it only shows up
in.
* Having a completely unused define*

(* I kept some of these because they seemed important... Others were
junked.)
## Why It's Good For The Game

If you wanna use it across multiple files, no reason to not make it a
global define (maybe there's a few reasons but let's assume that this is
the 95% case).

Let me know if you don't like how I re-arranged some of the defines and
how you'd rather see it be implemented, and I'd be happy to do that.
This was mostly just "eh does it need it or not" sorta stuff.

I used a pretty cool way to detect if we should use the standardized
GitHub "error" output, you can see the results of that here
https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792
## Changelog
Nothing that really concerns players.

(I fixed up all this stuff using vscode, no regexes beyond what you see
in the python script. sorry downstreams)
2023-03-29 10:17:03 -07:00
SkyratBot 6da754d0fc [MIRROR] Fix RPG Titles Runechat Offset [MDB IGNORE] (#19392)
* Fix RPG Titles Runechat Offset

* Update code/modules/events/wizard/rpgtitles.dm

---------

Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-10 05:13:16 +00:00
Roryl-c c3f6db0942 Fix RPG Titles Runechat Offset (#73443)
## About The Pull Request
Fixes the terribly unreadable situation with RPG titles overlapping with
offset runechat messages.
Also fixes some offset issues for larger mobs with this event enabled.
## Why It's Good For The Game

![image](https://user-images.githubusercontent.com/5150427/219092938-743ce676-1f1b-4e3a-baab-957a1279db39.png)
## Changelog
🆑
fix: fixed chat offsets with the RPG Titles event
/🆑
2023-02-16 19:36:18 -07:00
SkyratBot a388d294a6 [MIRROR] Saycode refactor, unit tests, and fixes [MDB IGNORE] (#18032)
* Saycode refactor, unit tests, and fixes

* parrot

* SR tweaks

* say tests from pstream/71873

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-12-15 15:00:29 -05:00
Tim 48e36ef2c7 Saycode refactor, unit tests, and fixes (#69799)
<!-- 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! -->

Fixes #69798
Fixes #71621

When using hypnosis on a victim, the language should be accounted for
and whether the victim can properly hear it. Before the hearing code
would magically translate any message, this is no longer the case.

This also fixes the language barrier involving hearing for:
- Mind echo trauma
- Phobia trauma
- Hypnotic trigger trauma
- Split Personality brainwashing trauma
- Codeword hearing
- Hypnotize status effect
- Impure Inacusiate reagent

## 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. -->

Better consistency, improved readability, and less bugs in the future.

## 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. -->

🆑
fix: Fix hypnosis, mind echo trauma, phobia trauma, hypnotic trigger
trauma, split personality brainwashing trauma, codeword hearing, and
impure inacusiate reagent all bypassing language and hearing checks. If
you try to give commands to a victim in a language they don't
understand, they will no longer magically understand the words.
fix: Fix sign language having accent modifications
refactor: Refactored saycode to be more robust, readable, and have more
unit tests.
/🆑

<!-- 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: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-12-09 20:28:17 +01:00
SkyratBot b9b6a803b0 [MIRROR] Throws a bunch of parenthesis around to ensure dear Aunt Sally is always properly excused. [MDB IGNORE] (#17654) 2022-11-22 19:44:59 -08:00
SkyratBot 431478f390 [MIRROR] Adds 5 new Heretic spells. Rebalances some aspects of Heretics. Refactors some spells as well, and makes it so emote spells require free hands. [MDB IGNORE] (#17658)
* Adds 5 new Heretic spells. Rebalances some aspects of Heretics. Refactors some spells as well, and makes it so emote spells require free hands. (#71044)

## About The Pull Request

- Adds 5 new heretic spells!
- For Flesh: Flesh Surgery. This spell is a touch spell that can either
be used to heal your minions or extract organs from mobs.
- For Void: Cone of Cold. This is a simple spell - it shoots out a cone,
of cold, that freezes and damages people caught in it.
- For Ash: Volcano Blast. This spell functions like Tesla Blast, but
instead of electricity, it shoots out of a beam of fire that hurts to
walk over.
- For Blade: Realignment. Think of this like "Fleshmend but for stuns /
stamcrit". It rapidly regenerates stamina damage and reduces stuns,
while making you a pacifist. It can also be cast in rapid succession,
but this will increase the cooldown.
- For Rust: Rust Construction. Point at a rusted tile, and a wall will
be raised where it was instantly. This even damages people and throws
them aside - Or, if on a multi-z map, can lift up.

- Number of influences has increased.
  - 5 at 1 heretic
  - 9 at 2
  - 12 at 3
  - 14 at 4
  - 15 at 5
  - 16 at 6, and so on

- Heretics are given a 5th sacrifice target, selected randomly. On
average an additional sacrifice is needed for their objectives.

- Being sacrificed grants you a permanent phobia of the supernatural.
Phobia of the supernatural has been expanded to cover heretic items and
mobs.

- The equation for offhand damage of blade heretics was tweaked. Actual
result unchanged, it's just more resilient to future changes now.

- Touch spells were refactored a bit, and overall expanded to be easier
to use

- Charged spells were added, and charged beam spells. Tesla blast uses
this.

- Cone spells were refactored to be easier to setup.

- Jaunting will now hide your runechat when it triggers, to make it less
easy to follow.

- Heretic Ghouls now take less stamina damage based on how low their
health pool is.

- Emote based spells now require hands to be unblocked to be cast, like
mime spells.
- Yes this gets rid of handcuffed invisible walls... Not 100% on this,
but I figured it's good for consistency? Open to discussion

## Why It's Good For The Game

A lotta feedback has passed through about heretic and it's time to
address some of it

- Problem: Not enough cool flash spells. Makes Focus not worth it.
   - Solution: Adds some more spells to encourage focus use.

- Problem: Sacrifice targets being too willing or not harmed enough
   - Solution: A permanent trauma.

- Problem: Not enough ways to power up.
- Solution: Adding more influences around, though I think there should
be more variety in knowledge rituals as well.

- Problem: Ash Passage sucks
   - Solution: Makes it a smidge better to stay hidden with it.

- Problem: Heretic Ghouls get one hit by batons
- Solution: Stamina modifier should put them on par with unmodified
humans.

## Changelog

🆑 Melbert
add: Added five new heretic spells, one for each path. They come after
the Ritual of Knowledge.
add: Cone of Cold, for Void heretics. Shoots out a freezing chill in a
cone which deal damage and freezes.
add: Flesh Surgery for Flesh heretics. A touch spell which can either
heal minions or be used on mobs to extract organs without surgery.
add: Volcano Blast for Ash heretics. A beam spell, like Tesla Blast,
which fires out a beam of fire that bounces between people.
add: Realignment for Blade heretics. Fleshmend, but for stuns and
stamina damage. Makes you a pacifist, but rapidly regenerates stamina.
add: Rust Construction for Rust heretics. Places a wall of rust on the
target rusted flooring. Can even be used to ascend z-levels!
balance: Nerfed the cooldown of Cleave slightly, buffed the cooldown of
Lesser Cleave slightly.
balance: Slightly more influences will spawn on the station per heretic.
balance: Heretics require an additional sacrifice on average for
ascension, but are given a fifth sacrifice target (randomly selected).
balance: Being sacrificed by a heretic now gives you a permanent phobia
of spooky things, including heretic mobs and items.
balance: Heretic ghouls now take reduced stamina damage, depending on
how small their health pool is.
balance: Using Jaunts will conceal your runechat for their duration.
balance: Spells which require emoting (Mime spells) require your hands
not be blocked to use.
refactor: Touch Spells were improved a bit. Added some new template
spells - Charged spells, and Charged beam spells.
fix: Fixes a runtime from losing heretic.
/🆑

* Adds 5 new Heretic spells. Rebalances some aspects of Heretics. Refactors some spells as well, and makes it so emote spells require free hands.

* MIRRORS tgstation/tgstation#70561

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
2022-11-22 15:32:52 -08:00
MrMelbert 7dde8a5e66 Adds 5 new Heretic spells. Rebalances some aspects of Heretics. Refactors some spells as well, and makes it so emote spells require free hands. (#71044)
## About The Pull Request

- Adds 5 new heretic spells!
- For Flesh: Flesh Surgery. This spell is a touch spell that can either
be used to heal your minions or extract organs from mobs.
- For Void: Cone of Cold. This is a simple spell - it shoots out a cone,
of cold, that freezes and damages people caught in it.
- For Ash: Volcano Blast. This spell functions like Tesla Blast, but
instead of electricity, it shoots out of a beam of fire that hurts to
walk over.
- For Blade: Realignment. Think of this like "Fleshmend but for stuns /
stamcrit". It rapidly regenerates stamina damage and reduces stuns,
while making you a pacifist. It can also be cast in rapid succession,
but this will increase the cooldown.
- For Rust: Rust Construction. Point at a rusted tile, and a wall will
be raised where it was instantly. This even damages people and throws
them aside - Or, if on a multi-z map, can lift up.

- Number of influences has increased.
  - 5 at 1 heretic
  - 9 at 2 
  - 12 at 3
  - 14 at 4
  - 15 at 5
  - 16 at 6, and so on

- Heretics are given a 5th sacrifice target, selected randomly. On
average an additional sacrifice is needed for their objectives.

- Being sacrificed grants you a permanent phobia of the supernatural.
Phobia of the supernatural has been expanded to cover heretic items and
mobs.

- The equation for offhand damage of blade heretics was tweaked. Actual
result unchanged, it's just more resilient to future changes now.

- Touch spells were refactored a bit, and overall expanded to be easier
to use

- Charged spells were added, and charged beam spells. Tesla blast uses
this.

- Cone spells were refactored to be easier to setup.

- Jaunting will now hide your runechat when it triggers, to make it less
easy to follow.

- Heretic Ghouls now take less stamina damage based on how low their
health pool is.

- Emote based spells now require hands to be unblocked to be cast, like
mime spells.
- Yes this gets rid of handcuffed invisible walls... Not 100% on this,
but I figured it's good for consistency? Open to discussion

## Why It's Good For The Game

A lotta feedback has passed through about heretic and it's time to
address some of it

- Problem: Not enough cool flash spells. Makes Focus not worth it. 
   - Solution: Adds some more spells to encourage focus use. 

- Problem: Sacrifice targets being too willing or not harmed enough
   - Solution: A permanent trauma. 

- Problem: Not enough ways to power up.
- Solution: Adding more influences around, though I think there should
be more variety in knowledge rituals as well.

- Problem: Ash Passage sucks
   - Solution: Makes it a smidge better to stay hidden with it.

- Problem: Heretic Ghouls get one hit by batons
- Solution: Stamina modifier should put them on par with unmodified
humans.

## Changelog

🆑 Melbert
add: Added five new heretic spells, one for each path. They come after
the Ritual of Knowledge.
add: Cone of Cold, for Void heretics. Shoots out a freezing chill in a
cone which deal damage and freezes.
add: Flesh Surgery for Flesh heretics. A touch spell which can either
heal minions or be used on mobs to extract organs without surgery.
add: Volcano Blast for Ash heretics. A beam spell, like Tesla Blast,
which fires out a beam of fire that bounces between people.
add: Realignment for Blade heretics. Fleshmend, but for stuns and
stamina damage. Makes you a pacifist, but rapidly regenerates stamina.
add: Rust Construction for Rust heretics. Places a wall of rust on the
target rusted flooring. Can even be used to ascend z-levels!
balance: Nerfed the cooldown of Cleave slightly, buffed the cooldown of
Lesser Cleave slightly.
balance: Slightly more influences will spawn on the station per heretic.
balance: Heretics require an additional sacrifice on average for
ascension, but are given a fifth sacrifice target (randomly selected).
balance: Being sacrificed by a heretic now gives you a permanent phobia
of spooky things, including heretic mobs and items.
balance: Heretic ghouls now take reduced stamina damage, depending on
how small their health pool is.
balance: Using Jaunts will conceal your runechat for their duration. 
balance: Spells which require emoting (Mime spells) require your hands
not be blocked to use.
refactor: Touch Spells were improved a bit. Added some new template
spells - Charged spells, and Charged beam spells.
fix: Fixes a runtime from losing heretic.
/🆑
2022-11-21 21:30:46 -08:00