Commit Graph

2377 Commits

Author SHA1 Message Date
MrMelbert
47dc38fee2 Let's you talk through action figures, plushies, and toy mechs with .l and .r. Also a big clean up of say because its support for non-mobs was lackluster. (#81848) 2024-03-07 09:21:12 -07:00
13spacemen
357799c8a5 Removes Orbit Polling Component, SSpolling improvement (#81748)
When I made SSpolling, jlsnow gave me his blessing to delete the orbit
polling component [where you orbit something for 20 seconds before it
chooses a ghost from the orbiters]
It's only used in a few places like soulstones replacing
jobbanned/inactive players, etc.

Also upgraded SSpolling; you can now place a little icon on the sides in
the chat message, chat message looks a lot nicer, the alert pic and the
jump target don't have to be the same anymore, and I made it be able to
pre-pick candidates since 90% of the use cases would just want 1
candidate

Also prints to chat who the chosen one was

Also made slime intelligence potions ask the user for a reason, which
will be displayed in the alert poll
2024-03-06 08:24:36 +00:00
MrMelbert
977799a2e7 A red spy has entered the base: Adds Spies, a roundstart antagonist inspired by Goonstation's Spy-Thief (#81231)
# Disclaimer: No Goon code was referenced or used in the making of this
PR

## About The Pull Request

[Design Document (Read this for more
information)](https://hackmd.io/@L9JPMsZhRO2wI25rNI6GYg/rkYKM9Yc6)

This PR adds Spies as a new roundstart antagonist type, inspired by
Spy-Thiefs from Goonstation.

Spies are tasked with stealing various objects around the station, from
insulated gloves to the black box, from the clown's left leg to the
bridge's communications console.

For every item stolen, the Spy is rewarded with a random item from the
Syndicate Uplink, plus some items uniquely available to the Spy. Stolen
items are then shipped off and sold on the Black Market Uplink, allowing
the crew - or maybe some other evil-doers - to get their hands on them.


![image](https://github.com/tgstation/tgstation/assets/51863163/f057d480-4545-44da-b8fe-a8d09a5d2dcf)

More ideas for theft items and bounties are welcome. 

## Why It's Good For The Game

See the design document for more information. 

In short: Adds a solo antagonist which has less impact than your
Traitors and Heretics, but more impact than Paradox Clones and Thieves.
In other words: On the same tier as old traitors.

Seeks to embrace the sandbox aspect of antagonists more by having no
precise greentext objective, and instead some suggestions for chaos you
can embark in. Have fun with it!

## Changelog

🆑 Melbert
add: Spies may now roam the halls of Space Station 13. Watch your
belongings closely.
/🆑
2024-03-01 04:41:57 +00:00
DrTuxedo
35242b4985 NEW TRAIT ROLE: Veteran Advisor (#81667)
## About The Pull Request
Adds a new Trait Job (jobs which only appear when the station gets a
trait for it) - Veteran Advisor.
The weight of the trait is 2 which makes it very rare.

Veteran Security Advisor is a role designated as a (duh) Advisor for the
HoS and Captain, as well as a mentor for all of the Officers. This is
because it has an experience requirement of **100 SECURITY HOURS**, so
no green Veterans.

Veteran Security Advisors are paraplegic (bonded to a wheelchair) and
with PTSD which freezes their mood and sometimes causes hallucinations.
They get an M1911 pistol in a holster because that's badass.

<details>
<summary>THE IMAGES</summary>

ADVISOR
![veteran advisor
chair](https://github.com/tgstation/tgstation/assets/42353186/e094669c-002f-4552-9692-c8f055a042eb)

THINGS HE SPAWNS WITH
![veteran advisor
shit](https://github.com/tgstation/tgstation/assets/42353186/27ed7e8a-bcd0-4ec2-9504-135a443492f0)

HIS UNIQUE MOODLET
![veteran advisor
desentized](https://github.com/tgstation/tgstation/assets/42353186/6fc04a24-b4fc-40bd-938f-c32389ac9eab)

SIGNUP BUTTON
![signup
button](https://github.com/tgstation/tgstation/assets/42353186/f10020c7-69fe-47f0-aa5f-7b56dfbc8200)

</details>

## Why It's Good For The Game
More funny Trait Jobs to the game!
There is a certain lack of those, there is only Cargorilla and Bridge
Assistant.

This job has big opportunities. Advisors can behave themselves like
drill sergeants, or wise old mentors. Because they are kinda, as people
only with 100 Security hours (yes those masochists exist) could play it
when it appears. This will also open opportunities for retired Sec mains
to tutor new generations without being directly involved in all of the
stress.
I mostly took a look at the Goonstation "Nanotrasen Security Consultant"
and Baystation "Senior Enlisted Advisor" as inspiration.

I tried to cut down any chances of this role being abused by power
gamers for its M1911 pistol and Bridge access, due to this they are
paraplegic so power gamers get disgusted, and if someone does somehow
win Antagonists while in a wheelchair - props to them, pure skill.

**REMEMBER THAT THIS IS A TRAIT JOB!** This means they won't appear
every round, but rather rarely! So they fit in as an occasional extra
fun for the round.
## Changelog
🆑
add: NEW TRAIT JOB: Veteran Security Advisor! Advise HoS and Captain on
Security matters, mentor Security Officers. Note that they are
paraplegic and fully emotional desensitized due to their past
experience.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-02-27 03:59:36 +00:00
John Willard
aace5f46f4 You can do more things while floored (#81641)
## About The Pull Request

While on the floor, you can:
- Use the UIs of Atmos machinery (except thermomachine and bluespace gas
vendor), Holopads, Crayons (spray cans too), radios, and Disposal bins
- Close extinguisher cabinets with Right-Click
- Click and drag yourself onto a photocopier to climb onto it.

I also changed all instances of ``ui_status`` to have all the args it's
being passed, I was messing with it a bit but it's gonna be for a later
PR.

## Why It's Good For The Game

It's an extra layer of harmless realism, also nice QoL for people who do
not have functional legs and do not have a wheelchair.

## Changelog

🆑
qol: You can use atmos machines, holopads, crayons, spray cans, and
disposal bins while floored.
fix: You can close extinguisher cabinets while floored.
fix: You can climb onto a photocopier from the floor.
/🆑
2024-02-26 18:34:20 +01:00
ArcaneMusic
161b96c99d Fixes mining cyborg ore scanner shutting off when stored. (#81604) 2024-02-23 09:44:57 -07:00
John Willard
efdbd2af89 Removes a double space from health analyzer (#81589)
## About The Pull Request

Fixes the message saying someone is deaf having 2 spaces in it.

## Why It's Good For The Game

minor typo.

## Changelog

🆑
spellcheck: Removed a double space in health analyzer's message telling
you someone is deaf.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2024-02-21 20:22:56 -07:00
LemonInTheDark
70651816c2 Fixes complex lights not handling moving well, renames lighting defines (#81423)
## About The Pull Request

[Fixes static lights not
moving](ffef43c05a)

Worked fine when the owner moved, but if the owner was inside something
else, it would try and trigger an update on the PARENT's lights, which
are obviously not us.

[Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they
do](de73a63bd4)

People keep trying to change the lighting system of lamps and it makes
me mad.
I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a
better name for turf matrix lighting. Suggestions welcome

## Why It's Good For The Game

Closes #80005
Hopefully improves understanding of lighting at a glance
## Changelog
🆑
fix: Fixes fancy lights not updating their source location when picked
up and moved
/🆑
2024-02-12 20:50:20 +01:00
LemonInTheDark
2adf2d3631 Removes the adapted flashlight (#81426)
## About The Pull Request

It doesn't need to exist, I killed see_in_dark so we can always see shit
emissives.

## Why It's Good For The Game

Cleaner code
2024-02-12 14:56:18 +01:00
SyncIt21
4495ea2e4d Refactors how machines are deconstructed (#81291)
## About The Pull Request
This refactors how machines are deconstructed in the following ways

- You can no longer override `obj/machinery/deconstruct()`. If you want
customized behaviour then override `on_deconstruction()` instead.

This comes with the added benifit of no longer needing to check for the
`NO_DECONSTRUCTION` flag because the machine base proc does that for us
& if it finds that flag it won't proceed to call `on_deconstruction()`
meaning no machine will have a chance to spawn anything which is the
current behaviour.

This is required to make #81290 work for all machines at least so that
machine can send the `COMSIG_OBJ_DECONSTRUCT` signal without subtypes
overriding & forgetting to call the parent proc

- `dump_contents()` only gets called when the machine is deconstructed
not destroyed thus not leaving behind any of its contents inside. Fixes
https://github.com/tgstation/tgstation/pull/81290#issuecomment-1925752583

## Changelog
🆑
fix: machines that should not drop contents when deleted no longer do.
refactor: refactors how machines are deconstructed. report bugs on
github.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-02-11 14:52:19 +01:00
lessthanthree
55ba5842c2 Health analyzer displays blood alcohol content (#81306)
## About The Pull Request

Health analyzer includes a blood alcohol content if the scanned target
is inebriated.

## Why It's Good For The Game

It's useful to know, sometimes their blood is filtered, stomach pumped,
but this effect will still be in action.

## Changelog

🆑 LT3
qol: Health analyzer will now display blood alcohol content
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2024-02-08 22:40:43 -07:00
Justice
f1cab538b1 The CC Commander Headset now can be set to high-volume (#81295)
## About The Pull Request
You got no idea how many times I've had to go to VV and set command=1
because the fucking Interns don't read chat.
With this PR, we no longer have to manually set that crap and can scream
into the Intern's ears in big letters with less steps.
The only outfits that use this type of headset are the CC Commander,
Special Ops Officer, Soviet Admiral, Debug Outfit, and Admin Outfit, so
I think it's cool
## Changelog
🆑
qol: You no longer need to manually set the CC Commander's Headset to
high-volume.
/🆑
2024-02-07 05:11:01 +01:00
jimmyl
38af859f13 tape recorder altclick sanity (#81270)
## About The Pull Request

you can no longer altclick them at range to play them

## Why It's Good For The Game

bug bad

## Changelog
🆑
fix: you may no longer altclick tape recorders at range to play them
/🆑
2024-02-05 12:11:37 -05:00
MrMelbert
c817b2c189 Un-undefs healthscan mode defines (moves them to a defines file) (#81161)
## About The Pull Request

`healthscan` is a global proc, but if you want to call the proc with a
different scan mode, you can't use the defines as they're def'd and
undef'd in the health analyzer file.

So I moved them to a global define file.
2024-01-29 19:57:43 -07:00
SyncIt21
d867d56af2 Fixes bad_index runtime in /obj/item/radio/talk_into_impl (#80980)
## About The Pull Request
Fixes this
![Screenshot
(383)](https://github.com/tgstation/tgstation/assets/110812394/60be34d8-4fce-4c33-8fa8-006b363136af)

I hate Byond

## Changelog
N/A

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-17 08:07:44 -05:00
_0Steven
d131e74095 Minor say code refactor, fixes signers sometimes using the wrong verbs over radio (#80092)
## About The Pull Request

Alternative title: "Baby's third pr: surprise say code refactor"

While testing sign language I worked out that if the first message sent
after toggling sign language involves speaking directly into a radio, it
proceeds to use the wrong verb. After several hours of digging through
say and telecomms code, I worked out the cause:
the `verb_say` on humans is primarily updated to match tongue data
during the verb _selection_ method `say_mod()` in `human_say.dm`, and as
a consequence this meant the verb wasn't updated to the correct one
until far after it had been copied to a virtualspeaker, leading to the
incorrect verb being used for the radio message.

This pr fixes this by refactoring this verb updating behaviour to be in
a new method `update_verbs()`, which we then call _before_ attempting to
call `radio()` to avoid wrongful copying and thus fixing the bug.

There's theoretically also cases where the previous behaviour would use
the wrong verb if one lost or gained a tongue between radio messages, or
the wrong verb from those picked from a list for some simple/basic
animals, but those are significantly less common.

To note, I gave the new `update_verbs()` method the same arguments as
the `say_mod()` method it got split out of, but having gone through all
instances of it being used for this I don't feel it actually *needs*
those arguments. So I'm unsure whether it should keep them or not.
Opened as a draft for now for sanity's sake, and also cause, y'know, it
touches say code.
## Why It's Good For The Game

It was _really_ annoying.
## Changelog
🆑
fix: Signers no longer use the wrong verb when speaking directly into a
radio for the first message after toggling sign language.
refactor: Moved the updating of verb variables into a new method which
is called earlier in living's say, which should avoid this happening for
other things which updated their verbs the same way.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-15 21:54:39 +00:00
Profakos
45438b4f04 Removes the attack_slime proc, and other slime refactors (#80487)
## About The Pull Request

- **Removed attack_slime**. Most of the attack_slime content has been
moved to a proc that signs up for COMSIG_LIVING_UNARMED_ATTACK. Its
ugly, but will make converting slimes to a basic mob easier. They now
use attack_animal for now, which might cause some unexpected
interactions. Hopefully when they are converted to basic mobs, these can
be cleared up properly.

- This caused some issues with cyborgs, who used to get only half damage
dealt to them. As refactoring this would have been too much of a
difficult task without much real gain, after much pondering, I have
decided that since slimes can always flash cyborgs with each of their
strikes, maybe cyborgs should only fear slimes that have electric
charges in them. In addition, slimes electric charges decrease now after
they successfully zap an cyborg, making them more consistent with the
zaps that affect carbons. AIs are still fully immune to slimes.

- The slime.dm and slime.life files were extremely bloated, and
unorganized. I have created two new files, defense.dm and ai.dm. I have
moved the various attack_by/attack_hand/etc procs to defense.dm. Ai.dm
now contains every single proc the slime's "AI" uses; this should help
getting a clearer picture of the current functionality, which should aid
with basic mob conversion and decision tree creation. The remaining
files have been slightly organized, with overrides in front, and new
procs at the back.

- Created a proc for swapping out Adult and Baby states of a slime.
Previously, attack_slime was in many cases ignoring fields like
melee_damage_lower and melee_damage_upper, replacing it with magic
numbers based on the slime's lifestate. Now these values are hard set by
these procs. This has caused slimes to be more consistent, though baby
slimes might do a bit less damage on the low end. I am tempted to turn
these in datums in the future, or as part of this PR.

- Removed baby slime's chance to accidentally attack a window/grille by
bumping into it, they had 0 object damage anyways, unlike adult slimes,
so there was no reason not to early return.

- The proc of `handle_feeding` assumed adjustBruteLoss and adjustToxLoss
return positive values when damage has been done, when in reality, it
returns the total health change along with its direction. This meant
slimes would fell off simple or basic mobs after a single bite. This has
been fixed.

- Also updated the warning before the slime type defines, as they were
out of date.

- I have removed the bespoke spacewalk override for slimes, which should
allow them to drift, should gravity go out.

- The nutrition stats are assigned only once, when the slime grows up,
instead of compared to being an adult every life tick

## Why It's Good For The Game

Less duplicated code.
This refactor should help in the basic mob conversion process.
Cyborgs have an easier time wrangling slimes, who could previously kill
them in three hits, if charged. They are mostly encased in metal, they
should feel fine when not hit with electric attacks.
Lets slimes feast on delicious corgis.
2024-01-02 18:37:20 +00:00
13spacemen
9803782da3 regular gas analyzer can now scan adjacent turfs (#80695)
## About The Pull Request
the regular gas analyzer can finally scan adjacent turfs
## Why It's Good For The Game
the PDA app analyzer could already do this, and it makes sense anyway
## Changelog
🆑
qol: Gas analyzer can scan adjacent turfs. No more roasting yourself
just to scan your burn mix.
/🆑
2024-01-01 21:51:09 +01:00
SyncIt21
926d000d76 Some Processing improvements (#80693)
## About The Pull Request
Got the idea from #80682. A lot of parent procs don't do anything, some
are just formatted in a bad way, and others early return and do no ops,
it's bad in general but this should give us a head start.

Some good overhead saved here
2024-01-01 20:58:34 +01:00
Jacquerel
41d5304007 Adds new black market pin (#80230)
## About The Pull Request


![image](https://github.com/tgstation/tgstation/assets/7483112/add49cea-8318-475b-985e-3cb14a1d39db)

Adds a fetching red pin which you can wear to visibly align yourself
with the enemies of Nanotrasen, purchaseable from the Black Market
Uplink.
This pin's contained RFID chip will automatically cause you to appear on
Sec HUDs as a wanted criminal and will aggro securitrons, to prove your
dedication to your ideals.

If your convictions are a little less firm, you can also silently pin
this onto _other_ people's clothing if they stand still next to you for
five seconds... though they might notice that they're suddenly wearing a
red badge.

I didn't want this to be a subtype of medal so I made the "you can put
this accessory onto someone else" behaviour into a component to sidestep
object inheritance.
This has been applied to the detective's spy camera, because it makes it
much easier to turn someone into a mole.

This also adds a trait which makes security hate you which I guess
someone could use in a novelty bar drink at some point or something.

## Why It's Good For The Game

It's funny
I think we need more neat things in the black market to make it
sometimes worth using

## Changelog

🆑
add: Added subversive pins to the black market uplink which make
security hate you
add: The detective's spy cam can now be conveniently pinned onto people
in the same manner as medals
/🆑
2023-12-12 14:48:46 +01:00
Tim
d0102e6856 Add hotkey and screentip to tracking beacons (#80142)
## About The Pull Request

Adds RMB to toggle a tracking beacon on/off. Also adds this as a
screentip UI indicator.

## Why It's Good For The Game

Adds a simple interaction so people don't have to pick up things.

## Changelog

🆑
qol: Add RMB hotkey and screentip UI to tracking beacons to toggle them
on/off.
/🆑
2023-12-09 18:26:12 +01:00
YesterdaysPromise
71a1fee2f1 Explodes device.dmi (#80025)
## About The Pull Request

I woke up today and thought 'what would be easy thing to do today so I
can say I've done something?'. Then I remembered I saw several gangtool
usages the time I split radio up, and I could remedy those. 7 hours
later, device.dmi is split in a folder of its own, and I've also given
unique sprites to door remotes and landing desginators.


## Why It's Good For The Game

The device.dmi was kind of a mess.

## Changelog

🆑
/🆑
2023-12-09 13:31:50 +01:00
MrMelbert
1e76fd70b4 Attack chain refactoring: Broadening tool_act into item_interact, moving some item interactions to... atom/item_interact / item/interact_with_atom (#79968)
## About The Pull Request

Implements half of this (with some minor changes): 


![image](https://github.com/tgstation/tgstation/assets/51863163/bf5cc4bb-5a1f-42e3-921d-9a57bc6096cc)

The ultimate goal of this is to split our attack chain in two: 
- One for non-combat item interactions
  - Health analyzer scanning
  - using tools on stuff
  - surgery
  - Niche other interactions
- One for combat attacking
  - Item hit thing, item deal damage. 
  - Special effects on attack would go here.  

This PR begins this by broadining tool act into item interact. 

Item interact is a catch-all proc ran at the beginning of attack chain,
before `pre_attack` and such, that handles the first part of the chain.

This allows us to easily catch item interaction and cancel the attack
part of the chain by using deliberate bitflag return values, rather than
`TRUE` / `FALSE`*.

*Because right now, `TRUE` = `cancel attack`, no matter what, which is
unclear to people.

Instead of moving as much as possible to the new proc in this PR, I
started by doing some easy, obvious things. More things can be moved in
the future, or technically they don't even need to move in a lot of
cases.

## Changelog

🆑 Melbert
refactor: Refactored some methods of items interacting with other
objects or mobs, such as surgery and health analzyers. Report if
anything seems wrong
/🆑
2023-12-08 23:50:19 -07:00
distributivgesetz
274eb2a52e Removes Clone Damage (#80109)
<!-- 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

Does what it says on the tin. We don't have any "special" sources of
clone damage left in the game, most of them are rather trivial so I
bunched them together into this PR.

Notable things removed:
- Clonexadone, because its entire thing was centered around clone damage
- Decloner gun, it's also centered around cloning damage, I couldn't
think of a replacement mechanic and nobody uses it anyways
- Everything else already dealt clone damage as a side (rainbow knife
deals a random damage type for example), so these sources were removed

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

Consider the four sources of normal damage that you can get: Brute,
Burn, Toxins and Oxygen. These four horsemen of the apocalypse are very
well put together and it's no surprise that they are in the game, as you
can fit any way of damaging a mob into them. Getting beaten to death by
a security officer? Brute damage. Running around on fire? Burn damage.
Poisoned or irradiated? Toxin damage. Suffocating in space? Brute, burn
and oxygen damage. Technically there's also stamina damage but that's
its own ballpark and it also makes sense why we have a damage number for
it.

Picture this now: We have this cool mechanic called "clone pods" where
you can magically revive dead people with absolute ease. We don't want
it to be for free though, it comes at a cost. This cost is clone damage,
and it serves to restrain people from abusing cloning.

Fast forward time a bit and cloning is now removed from the game. What
stays with us is a damage number that is intrinsically tied to the
context of a removed feature. It was a good idea that we had it for that
feature at the time, but now it just sits there. It's the odd one out
from all the other damage types. You can easily explain why your blade
dealt brute damage, but how are you going to fit clone damage into any
context without also becoming extremely specific?

My point is: **clone damage is conceptually a flawed mechanic because it
is too specific**. That is the major issue why no one uses it, and why
that makes it unworthy of being a damage stat.
Don't take my word for it though, because a while ago we only had a
handful of sources for this damage type in the game. And in most of the
rounds where you saw this damage, it came from only one department. It's
not worthwhile to keep it around as a damage number. People also didn't
know what to do with this damage type, so we currently have two ways of
healing clone damage: Cryotubes as a roundstart way of healing clone
damage and Rezadone, which instantly sets your clone damage to 0 on the
first tick. As a medical doctor, when was the last time you saw someone
come in with clone damage and thought to yourself, "Oh, this person has
clone damage, I cannot wait to heal them!" ?

Now we have replacements for these clone damage sources. Slimes? Slime
status effect that deals brute instead of clone. Cosmic heretics? Random
organ damage, because their mechanics are already pretty fleshed out.
Decloning virus? The virus operated as a "ticking timebomb" which used
cloning damage as the timer, so it has been reworked to not use clone
damage. What remains after all this is now a basically unused damage
type. Every specific situation that used clone damage is now relying on
another damage type. Now it's time to put clone damage to rest once and
for all.

Sure, you can technically add some form of cellular degradation in the
future, but it shouldn't be a damage number. The idea of your cells
being degraded is a cool concept, don't get me wrong, but make it a
status effect or maybe even a wound for that matter.

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

🆑
del: Removed clone damage.
del: Removed the decloner gun.
del: Removed clonexadone.
/🆑

<!-- 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. -->
2023-12-04 14:42:43 -08:00
distributivgesetz
f8b41f9442 Changes occurrences of recieve in code to receive (#80065)
## About The Pull Request

I've stumbled across this enough to finally go through the entire
codebase and fix it. I left out changelogs simply because rewriting
history logs is bad.
## Why It's Good For The Game

I find it pretty annoying because I stumble across words that are
misspelled for a few seconds, and I'm likely not the only one who feels
like this. Less spelling mistakes in code are better.
## Changelog
🆑
spellcheck: Occurrences of "recieve" has been changed to "receive".
/🆑
2023-12-02 14:50:57 -07:00
san7890
7f7688b60a Demotes the "electrical conductivity" flag from flags_1 to obj_flags (#80033)
## About The Pull Request

Code to handle this flag only ever existed on the `/obj` sublevel, so
there's no need for it to be on the `/atom` level `flags_1`. There was
probably a point in time in which mobs or turfs conducted electricity
but there's zero code for it anymore so we truly just live in a society
now.
## Why It's Good For The Game

Frees up a slot on `flags_1` (which is really nice actually), proper
scoping of certain bitflag stuff, etc.
## Changelog
Not relevant to players.

I may have screwed something up, will be doing a few passes on this
myself to ensure all the search and replaces went alright but we should
be good™️
2023-12-01 21:43:46 -05:00
Ben10Omintrix
ce6f2724cd basic cats and mini kitchen helpers (#79800)
## About The Pull Request
this pr transforms cats into basic pets! cats now have some new
behavior. they can carry fish and hunted mice in their mouths to deliver
it to kittens, and kittens will eat them.


![catmouse](https://github.com/tgstation/tgstation/assets/138636438/8f146be4-c7b2-41d3-8301-734be49b5efc)

![catfish](https://github.com/tgstation/tgstation/assets/138636438/f8df54f2-9183-406d-afbd-f90f415f7f3d)

if a kitten sees you holding food, it will point at you and meow loudly
until u give it the food.
becareful when putting male cats near each other, there is a small
chance they get into a heated argument and meow loudly at each other
until one of them flees.
also added a new small cat house for cats. cats will use these homes if
u build one near them (using 5 wood planks)


![cathouse](https://github.com/tgstation/tgstation/assets/138636438/9515a78c-fdfe-461b-bad2-6b497117c694)

Chefs can craft the cake cat and breadcat. these are useful cats because
they can help the chef around in the kitchen. they will turn stoves and
grills off when food is ready, so they dont burn. and the cake cat will
help the chef decorate his donuts

## Why It's Good For The Game
refactors cats into basic mobs and gives them a deeper ai

## Changelog
🆑
refactor: cats are now basic pets. please report any bugs.
add: the cake cat and bread cat can now help the chef around in the
kitchen
/🆑
2023-11-28 21:51:37 -07:00
Profakos
4b4ada0339 Slime type datum, and cleans up slime related code (#79852)
## About The Pull Request

I have decided to help out with basic mobbing slimes, and found out,
that this code is ancient and crusty. So I have decided to refactor and
tweak things bit but but, until the moment I will hit AI related stuff.

I might have gone a bit overboard, and performed a melange of fixes. I
have done the following in order:

- Slime colour, core type and mutation list are now held by a single
`slime_type datum`. This means the slime's core is no longer spawned
using text operations on the slime's colour, and the slime's mutation is
no longer a single large switch statement that returns an exactly four
element length array. Icons are still based on the slime's colour
define, but that is now more changeable.
- Autodocced all the slime procs and vars I could find, while also
renamed them to be more descriptive. Also made Booleans actual booleans.
Also added code to confused code segments. For example, did you know
that slimes would forgive all its stacks of Feeling Very Attack Right
Now, if it has exactly one level of Discipline? I didn't, and I almost
turned the 1 in the check into a TRUE before I had a second look.
- Added defines to the slime hunger checks
- Cleaned up a lot of single letter vars in all code that referenced the
now changed variables.
- Large amount of if-chain pyramids have been turned into early returns.
More readable.
- Made the xenobiology camera shortcuts and actions always do the same
thing, though the action buttons still loop through all of the conents.
In addition, after seeing a comment lamenting about varied load orders,
I have made autolinking the monkey recycler is now done in
LateInitialize, which didn't exist when it was made.
- I have included an UpdatePath that changes the colours of premapped
slimes, but I did not do anything for the other values.
- I noticed slimes were unable to attack pacifist humans, due to trait
checking the human instead of the attacking slime. This has been fixed.
- The slime scanner has an examine block, and it now describes your
slimes' "mutation attempt chance", instead of like, performing math in
case the slime's current colour is one of the mutations, or hiding it if
it has none. This value is needed to breed rainbow slimes.

This has been an extremely large scrubbing. I am willing to try rip it
up into smaller chunks, even if most of it is just single letter vars
and if pyramids.

## Why It's Good For The Game

If code is more readable and expandable, it will aid in further
refactors.

## Changelog

🆑
refactor: Slimes's colour, core type and mutation list is now held in a
slime type datum
code: Slime's variables have been documented, and renamed a bit to add
clarity. Please report bugs that might stem from renaming.
fix: Slimes are not longer prevented from attacking pacifist humans.
qol: Slime scans now display the actual amount of genetic instability,
instead of hiding it if a slime doesn't mutate further, or tweaking it
if it might mutate back into itself. This will make it easier to parse
which slime to breed further to get a rainbow slime.
/🆑
2023-11-25 18:10:55 +00:00
Emmett Gaines
67135e22ea Fixes hearing messages from speakers on another z level (515 fix) (#79888)
515 changed get_dist to return inf when either end is on another z
level, instead of just the maximum range. `/mob/living/Hear` early
returns when the speaker is too far away to hear. Previously we would
get around this by passing in INFINITY as the range for the message, but
the INFINITY define is just a very large number instead of real infinity
which is what byond gives back for get_dist.

I also improved the unit test a little while debugging this.
2023-11-23 11:25:48 -08:00
YesterdaysPromise
f4535255c0 Nukes radio.dmi, adds inhands for somewhat relevant items. (#79792)
## About The Pull Request

Third /icon/ cleansing splinter 1. Comments on commits say all it does
pretty much.


![image](https://github.com/tgstation/tgstation/assets/122572637/6540e588-bed8-4e98-81f5-2a6f449c53c3)


## Why It's Good For The Game

Inhand for walkietalkie was requested in the project, gets rid of some
usecases of old 'gangtool', headset splitoff requested by Fazzie.
Inhands reflecting the items they are supposed to represent is nice.

## Changelog

🆑
image: Following now have unique item sprites: syndicate war declaration
radio, curator and chief beacon's, chaplain beacon.
image: Following now have unique inhand sprites: radio, export scanner,
walkie-talkie, syndicate war declaration radio, curator and chief
beacon's, chaplain beacon.
/🆑
2023-11-20 14:22:07 +01:00
SyncIt21
01cb1ee129 [NO GBP] Debug chem synthesizer works & related code cleanup (#79616)
## About The Pull Request
1. Fixes #79610
    
It works and the UI has also been updated to match that of chem
dispenser and it displays an input list for adding reagents now
    
![Screenshot
(355)](https://github.com/tgstation/tgstation/assets/110812394/cb6f5a39-0689-44ce-98b4-cd3027bf7188)

2. Created a common component for chem dispenser, portable chem
dispenser & debug chem synthesizer to share in the UI code.

3. Moved portable chem mixer to modules/reagents/machinery folder to
group them under the chemistry category

## Changelog
🆑
fix: debug chem synthesizer works again. cleaned up chem dispenser,
portable chem dispenser & debug chem synthesizer ui code
qol: ui for displaying beaker reagents for debug chem synthesizer has
been improved. Now displays input list for adding reagents
/🆑
2023-11-18 23:49:15 -08:00
Jeremiah
bbe440b3d6 More standardization for ghost notifications (READY) (#79596)
## About The Pull Request
I'm still not satisfied with how ghost notifications work. This gives
every notification with a source (99% of all notifications, in other
words) a link to jump/orbit. Currently, notifications with "play"
interactions would only get the interact link, so jumping to the source
was pretty annoying.

It removes posting the entire message in the alert tooltip, as some got
pretty lengthy and it didn't seem to fit. To replace this, they will
always use headers

After:


![image](https://github.com/tgstation/tgstation/assets/42397676/debfce52-3627-4a43-8663-33d61d893161)


![image](https://github.com/tgstation/tgstation/assets/42397676/01f299ae-dc6a-45f8-a97a-cb2c815088b2)


![image](https://github.com/tgstation/tgstation/assets/42397676/99567376-063e-458e-af2a-2dd4306747cc)

NOTIFY_JUMP and NOTIFY_ORBIT have been merged, since the only difference
seems to be whether it's a turf. The result shaves off some redundant
lines of code, since most-every usage of notify_ghosts uses
NOTIFY_ORBIT.
## Why It's Good For The Game
More standardization for the ghost notification system. Adds a few alert
headers that never had them. All in all, makes it easier for creators to
throw alerts at ghosts
## Changelog
🆑
qol: Nearly every ghost alert should now feature a "VIEW" button, even
those with click interaction.
del: Ghost alerts no longer show the entire message in the tooltip,
instead have been replaced with titles.
/🆑
2023-11-19 05:13:25 +01:00
SyncIt21
130b3dfa64 Code compression for reagent holder. Lowers plumbing reaction chamber tick usage (#79686)
## About The Pull Request
More code improvements for reagent holder. As you can see it removes a
lot more code than it adds so code savings are significant. This does
not touch on any floating point arithmetic, all that is behind us, this
focuses on removing redundant procs and merging existing procs to
achieve the same functionality so if you do see any changes in reagent
related behaviour it's not intentional and should be reported as a bug
here.

The following code changes can be summarized into points.

**1. Removes procs `get_master_reagent_id()` &
`get_master_reagent_name()`**
Both of these procs have the exact same functionality as
`get_master_reagent()` with the only exception of returning a different
value. Instead we can just call `get_master_reagent()` directly and
infer the name & type of it ourselves rather than creating a wrapper
proc to do it for us, therefore reducing overall code

**2. Removes & Merges `remove_all_type()` proc into `remove_reagent()`**
The proc `remove_all_type()` is highly inefficient, it first uses a for
loop to look for the reagent to remove & then it again calls
`remove_reagent()` on the reagent once it has found it. We can just
embed this functionality directly into `remove_reagent()` by simply
adding an additional parameter `include_subtypes`. This way the
operation is faster, and we reduce the code to get the job done. Also
now `remove_reagent()` will return the total volume of reagents removed
rather that a simple TRUE/FALSE

**3. Removes & Merges `trans_id_to()` proc into `trans_to()`**
Both these procs have the same job of transferring either a single
reagent or all reagents. `trans_id_to()` is a scaled down version of
`trans_to()` because
- It does not have any `method` var. This means if you want to transfer
a single reagent to a mob/organ or any other object it does not have the
functionality to expose the target to that transferred reagent.
- It does not have a `multiplier` var to scale reagent volumes
- It does not have code to deal with organs or stop reactions i.e. it
does not have the `no_react` var.

We can overcome all these short comings by simply adding an extra var
`target_id` to specify what specific reagent to transfer therefore
attaining the same functionality while keeping the benefits of
`trans_to()` proc therefore reducing overall code

**4. Lowers plumbing reaction chamber tick usage for balancing ph.**
Rather than invoking a while loop to balance ph it's much easier for the
player to simply make the reaction chamber wait for e.g. add a reagent
that will never come. This will make the chamber wait therefore giving
the reaction chamber ample time to correctly balance the ph and then
remove that reagent from the list therefore getting correct ph levels.
No need to create code hacks when the player can do it themselves  so
the while loop has been removed

## Changelog
🆑
code: removed redundant procs `get_master_reagent_id()` &
`get_master_reagent_name()`
code: merged `remove_all_type()` proc with `remove_reagent()` now this
proc can perform both functions. `remove_reagent()` now returns the
total volume of reagents removed rather than a simple TRUE/FALSE.
code: merged `trans_id_to()` proc with `trans_to()` now this proc can
perform both functions
refactor: plumbing reaction chamber will now use only a single tick to
balance ph of a solution making it less efficient but more faster. Just
make the reaction chamber wait for longer periods of time to accurately
balance ph
refactor: reagent holder code has been condensed. Report any bugs on
GitHub
/🆑
2023-11-16 21:44:48 +01:00
Andrew
6fefc9ce0e Pipe painting, spraycan preset colors (#79521)
![dreamseeker_AZs0erdnrs](https://github.com/tgstation/tgstation/assets/3625094/06a12d22-387b-4a33-8b61-59bbe3495c82)

## About The Pull Request

Made pipe painter properly paint pipe colors, work on pipe items, and
added the same functionality to regular spraycans.

Spraycans now have the color presets in UI for easier selection of the
valid pipe colors.

## Why It's Good For The Game

Bug fixing is good.
It was weird that spraycans couldn't paint pipes, but some other device
could.
Also custom spraycan color is too clunky, presets are nice for quick
spraycan color selection.

## Changelog

🆑
fix: fixed pipe painter not applying pipe color properly
qol: made spraycans work also as pipe painters
qol: spraycans now have basic color presets for quick selection
/🆑
2023-11-13 13:58:32 +01:00
John Willard
b52ce868bc Cuts down on unnecessary non-TGUI stuff (#79590)
## About The Pull Request

Removes INTERACT_MACHINE_SET_MACHINE on machines that don't use a
non-TGUI UI.
Removes set_machine from TGUI things that forgot to remove them
previously.
Decouples advanced camera consoles from UI procs since it doesn't
actually use one.

## Why It's Good For The Game

TGUI machines don't need to be using these procs and vars, and this
makes it more clear what does and doesn't use a TGUI menu from a glance.
I explain it a bit better
[here](https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA) if you're interested.

## Changelog

No player-facing changes.
2023-11-09 15:13:09 -08:00
SyncIt21
4f23fa137f Reagent machinery code maintainence (#79395)
## About The Pull Request
1. Replaces all usages of `GLOB.chemical_name_list` with
`GLOB.name2reagent` both of these are lists that store the names of
reagents mapped to their respective typepath so the first list was
redundant. Also now `GLOB.name2reagent` has its names sorted
alphabetically & white space between words and their case preserved.
This means that
    - The search button for finding reagents in the chem dispenser
    - Adding reagents to the plumbing reaction chamber
    - Adding reagents to plumbing chem filter
    - Adding whitelist reagents to blood filter 
    
Now **won't** display a list like this(searched for Strong Acid Buffer,
notice all space and case between words are lost)
![Screenshot
(317)](https://github.com/tgstation/tgstation/assets/110812394/2f58693d-4a03-4cb4-bf26-007a4d0a2870)
But **will** instead display this(searched for Strong Acid Buffer,
notice all space and case between words are preserved)
![Screenshot
(343)](https://github.com/tgstation/tgstation/assets/110812394/606185b8-d572-443e-bdc1-82c5e21c1386)
    Making these names much more readable.

2. In searching for all use cases of `GLOB.name2reagent` i found it was
used by 2 significant machines, the chem dispenser & portable chem
dispenser. So i took the time to clean up their code(auto doc vars, make
lists static etc etc.) and converted their UI to typescript.

3. Slightly improves performance of plumbing reagent chamber. Makes
lesser loops & hopefully gets better results

## Changelog
🆑
qol: machines/devices that ask you to pick a reagent name from an input
list have their names sorted alphabetically & preserves white space
between words making them more readable.
qol: improves performance of plumbing reaction chamber furthur
code: cleaned up code for portable chem mixer & chem dispenser.
converted their ui to typescript
/🆑
2023-11-08 20:25:02 +00:00
GPeckman
fced08d077 Flightpotion/health analyzer balance tweak (#79396)
## About The Pull Request

I was asked by a maintainer to split this off from my other PR (#79360),
so here it is. Basically, health analyzers are hard-coded to list you as
a mutant if you have wings from a flightpotion. This only applies to
flightpotion wings; no other organ, internal or external, not even moth
wings, work in the same way. So this PR just removes that check for
consistency.

I'd also like to note that I'm not opposed to the flightpotion being
made to _actually_ change your species again, as long as someone else
does the work. In fact, if someone were to do that this change would
still make just as much if not more sense.
## Why It's Good For The Game

As far as I can tell, there is no reason for this check to exist. At one
point, the flight potion did actually change your species, and it seems
like this check is just an old, unneeded relic of that. I'm not aware
for any balance reason for this check, unlike the hulk mutation.
Although you can argue that policy lists people with angel wings as
being nonhuman, that is specifically because the health analyzer lists
them as mutants, so it makes no sense for health analyzers to do so
because of policy.
## Changelog
🆑
balance: Flightpotion wings will no longer make health analyzers list
you as nonhuman.
/🆑
2023-11-08 18:55:01 +00:00
Rhials
3c7005a37c Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls (#79320)
## About The Pull Request

This helps clean up my favorite helper proc in the whole codebase,
`notify_ghosts()`.

The notify_suiciders, ignore_mapload, and flashwindow args are GONE.
They have been replaced with the notify_flags bitflag argument. This was
intended to make deadchat announcements a bitflag argument too, but
those got reverted right before I originally wanted to submit this PR.

The on-screen popup now shows the notification body when you hover it
with your mouse again. The format is now `[notify_ghosts message] --
[click action (orbit/jump/play)]`

Every single `notify_ghosts()` call has been changed to multiline format
and has been given trailing commas. Pretty!
## Why It's Good For The Game

Cleans up a proc that is very popular and going through a lot of changes
at the time.

Allows for further flexibility when this proc inevitably gets tweaked or
improved. 12 -> 10 args is an improvement, and it doesn't impact the
helper's flexibility at all.
## Changelog
🆑 Rhials
code: The notify_ghosts proc has been cleaned up. Please report any
abnormal changes in deadchat notification behavior.
qol: The on-screen deadchat popups now contain the notification blurb
when hovered with your mouse again.
/🆑
2023-11-05 15:26:50 -08:00
Jeremiah
8f0d82d136 Fixes eavesdropping on sillycons (#79453)
## About The Pull Request
Borgs don't whisper into comms whenever they use an encryption key. They
broadcast the encrypted channel at full volume to everyone in three
tiles distance

before, at three tiles:

![image](https://github.com/tgstation/tgstation/assets/42397676/2bcc7f5a-c40d-44cb-a8c3-9f6eb6b4b676)

after, at two tiles:

![image](https://github.com/tgstation/tgstation/assets/42397676/a394dc76-67f6-47c6-aa3a-0a500e32db82)

## Why It's Good For The Game
Fixes #35774
## Changelog
🆑
fix: You can no longer eavesdrop on nearby borgs' radio comms if they're
using encryption keys
/🆑
2023-11-02 13:37:26 +00:00
DrTuxedo
b5654d7203 Security Pen and Penlight improvement (#79299)
## About The Pull Request
Improves penlight sprite and code.

A new type of pen has been introduced - the Security Pen. This pen is
red and can create a holograph around a person, similar to a medical
penlight. The holograph prompts the person to surrender for 30 seconds,
and the holograph itself is visible for 5. There is a 30-second cooldown
between usage.

Holosign itself does nothing except be visual, just like medical
holosign **(DO NOT MISTAKE HOLOSIGNS FOR HOLOBARRIERS)**


https://github.com/tgstation/tgstation/assets/42353186/1ee5f794-7218-4e52-b04f-3ebb50bd224a

Now every Security member spawns with a Security Pen in their PDA.

Now you can print Security Pens at Security Techfab, and Penlights at
Medical Techfab.
## Why It's Good For The Game
The only way to prompt someone to perform the surrender emote is by
holding them up with a gun. However, this mechanic can be quite
unreliable, even after updates, especially if the person is moving. As a
result, many players are unaware of how to prompt the surrender emote or
even about its existence, so they don't know they can trigger it
themselves by typing "*surrender".
This enables non-lethal arrests without stun batons or other tools.

Sprites are a significant improvement as the previous penlight sprites
were outdated.
## Changelog
🆑
qol: There is now a more convenient way to prompt surrender to emote -
the Security Pen. Each officer is equipped with one in their PDA. Simply
click someone with it to prompt a 30-second surrender. They are
printable at Security Techfab as well.
qol: Penlights now are printable at Medical Techfab.
image: Penlights got a new cleaner sprite to replace its ancient one
code: The code for Penlight's holographic sign has been improved.
/🆑
2023-11-01 21:00:09 +00:00
Xackii
3b56ebf1f9 Chameleon projector can be used on storage items. (#79263)
## About The Pull Request

Fix bug that you can't use chameleon projector on items with
datum/storage(backpacks, box, holsters etc). Now you can right-click on
it to copy icon.

## Why It's Good For The Game

https://github.com/tgstation/tgstation/issues/55143#issue-749661132

## Changelog
🆑
fix: chameleon projector now can copy icon for storage items(backpacks,
box, holsters etc) using right-click on it.
/🆑
2023-10-31 14:48:33 +00:00
jimmyl
d31c21ff1b new space ruin, the biological research outpost (#79149)
## About The Pull Request

![2023-10-21 18 02
39](https://github.com/tgstation/tgstation/assets/70376633/5829e939-3b04-465f-a186-095ceb360bba)

adds this ruin to space ruin pool
this is a shady (as NT always is) bioresearch outpost that got fucked up
by an experiment
this has like some puzzle aspect to it since you gotta find keycards and
shit and press buttons to unlock shield gates
this ends with you fighting a heart which if you defeat, destroys the
blockade that prevents you from entering the outpost vault

also you can no longer literally just cut indestructible grilles or
unanchor indestructible windows

### new puzzle elements or something idk
variant of pressure plate that you cannot remove and it sends a puzzle
signal
cooler red puzzle doors that look very foreboding or something idk
theyre for this ruin
also puzzle blockades, which are indestructible dense objects that are
destroyed if they receive a puzzle signal
and also buttons and keycard pads for puzzles


https://github.com/tgstation/tgstation/assets/70376633/c98807ec-1e7b-49c4-a757-cdbb76a1b566



https://github.com/tgstation/tgstation/assets/70376633/9d5d9dd1-5868-44e6-a978-5ea57b30c298

stuff that throws electric shocks in a pattern, ignores insuls and only
knocks down, and no you cannot just run past


https://github.com/tgstation/tgstation/assets/70376633/5772917c-a963-48a4-a743-b0f610801d25

### enemies
living floor, it can only attack stuff on top of it and it attacks until
the victim is dead
it is invincible to all but a crowbar, and it cannot move, and it
remains hidden until a victim is in range


https://github.com/tgstation/tgstation/assets/70376633/aa1d54f6-b259-4e58-9d44-e393d2131acf

living flesh, it can replace your limbs with itself
the conditions for that are; the limb must have 20 or more brute, victim
must be alive and dismemberable, the limb may not be torso or head, or
the limb may not be living flesh
alternatively it can replace a missing limb
these are all checked with every attack
they have 20 hp
the limbs in question will sometimes act up, while passively draining
nutrition, arms will randomly start pulling nearby stuff, legs may step
randomly
limbs when detached, turn into mobs and reactivate AI 2 seconds later.
if the host is shocked, all living flesh limbs will detach, or if the
host dies they will also do that


https://github.com/tgstation/tgstation/assets/70376633/765cc99e-c800-4efb-aabe-d68817bbd7ae



## Why It's Good For The Game

ruin variety is cool i think
also the other things i added should be useful for other mappers for
bitrunning or whatever

also bug bad for that one fix
## Changelog
🆑
add: living floor, living flesh, and other stuff for the bioresearch
outpost ruin
add: bioresearch outpost ruin
fix: you may not defeat indestructible grilles and windows with mere
tools
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-31 08:15:42 +13:00
GPeckman
5f923b097f Light-Eaten objects can no longer emit light after being turned off and then back on (#79240)
## About The Pull Request

#67676 described a bug where PDAs can apparently emit a small amount of
light after being affected by the light eater. As it turns out, the bug
is even worse than that. It doesn't work for just PDAs, it works for
basically any light source that can be turned off and on. Even
flashlights. In the following pictures, a flashlight has been
light-eaten and then turned off and on again:


![fine](https://github.com/tgstation/tgstation/assets/21979502/e880c3a8-4ae9-4b6c-8ee9-27dacdbb23ab)

Observe how the nightmare jaunt is available, as it should be. However,
one step closer to the flashlight:

![not
fine](https://github.com/tgstation/tgstation/assets/21979502/b35014d4-71e8-49cf-b0f6-479cdf2ba3fc)

The nightmare jaunt can no longer be used, because the flashlight is
still emitting light.

This PR just fixes that behavior. Light-eaten objects will now be
totally dark again, even after being power cycled. Closes #67676.
## Why It's Good For The Game

Bugs bad.
## Changelog
🆑
fix: Light-Eaten objects can no longer emit light after being turned off
and then back on.
code: Flashlights now use light_on instead of defining their own
variable. Please report buggy behavior.
/🆑
2023-10-28 23:49:13 -04:00
DrTuxedo
0de1982756 Intercom Resprite and Tweaks (#78366)
## About The Pull Request

Changes the sprites of the Station Intercom, Command Intercom, and
Prison Intercom to the next ones:
![new
intercom](https://github.com/tgstation/tgstation/assets/42353186/0fc0a0e7-911c-47cb-8ba9-7663b07891da)
![new command
intercom](https://github.com/tgstation/tgstation/assets/42353186/8537a81a-db41-4ffb-ab82-2e5661d5c229)
![prison
intercom](https://github.com/tgstation/tgstation/assets/42353186/73d899ba-69da-412c-81d6-ca2642291ceb)


Now Station Intercom and Command Intercom descriptions are changed to
tell more about their real functionality.
Command Intercom now has High-Volume settings like heads headsets.

There is now a memo with frequencies of every channel on the station,
the memo is placed near the Command Intercom and in the
Telecommunications Room.
## Why It's Good For The Game

Intercoms are part of the "old wall-mount" sprites that were never
touched, besides the brief addition of overlays.
Replacing them to design more familiar of other wall-mounts will make it
less ancient.

Making the Command Intercom and Prison Intercom look unique ensures
players (especially new ones) can distinguish them by just glancing
without needing to examine them.
The Command Intercom having a High-Volume setting makes it even more
unique as an item that is only met in one room at the station, also
makes any Command orders given through an intercom (during
Telecomunnications outages) more noticeable.

The description change gives more useful information about Station
Intercom and Command Intercom. Now players (especially new ones) can
understand that Station Intercoms are usable during telecommunications
outages, and Command Intercoms can be set to any frequency.

The memo will help players (especially new ones) understand what numbers
they should input to access certain channels using Command Intercom, as
right now, the only way to find out the frequencies is through wiki or
directly checking servers.

<!-- 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
🆑
qol: The Command intercom now has a High-Volume setting like command
headsets
qol: A memo telling frequencies of station radio channels are now
present near the Command intercom and T-Comms room
image: Station, Command, and Prison intercoms have received new sprites
spellcheck: Station and Command intercom descriptions have been changed
to tell about their functionality
/🆑
2023-10-23 13:45:55 +02:00
Jeremiah
be5e7ccb02 Adds a subtle ghost poll (#79105)
## About The Pull Request
This makes a new ghost poll system which doesn't give TGUI popups -
instead, users are prompted to follow the POI and one of the orbiters is
chosen. The old system remains in place, so you can still prompt if you
want to.

This gives two things:
1. A deadchat notification:

![image](https://github.com/tgstation/tgstation/assets/42397676/073fcfff-b1ed-47c3-bae0-4abf9c599144)
2. A screen alert:

![image](https://github.com/tgstation/tgstation/assets/42397676/92a4e566-614a-43ca-8680-3cb4ff86ced9)

## Why It's Good For The Game
As stated in #76507, popups are pretty annoying. This is halfway between
a screen alert with no time limit and an event with more important
pings. This is better because:
1. Less popup fatigue
2. You can SEE how many you're competing with
4. DRY
## Changelog
🆑
add: Adds a subtle ghost poll. This pings in dead chat and gives a
screen alert, but no TGUI popup. Orbit the point of interest to be
selected for the role.
refactor: A number of ghost spawns now feature this alert. Write an
issue report if anything breaks.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-10-21 20:21:36 +00:00
Emmett Gaines
47f10ca860 Fixes modified MA overlays potentially causing duplicate overlays (#78719)
Also optimizes the update_icon proc a little bit, especially as a round
goes on, since everything is stored as an appearance (or text, gross)
this allows us to only call on overlay update code if the managed
overlays change.


![dreamseeker_2023-10-01_18-45-55](https://github.com/tgstation/tgstation/assets/1234602/722a183a-dc19-4e7c-93ba-8a19cde9da5a)

This also fixes some sources of null overlays but it ended up being more
things than I should shove into this pr if I were to fix all of them.

Should probably be testmerged for a little bit to make sure nothing
weird comes from assuming everything being passed in has an appearance
var.
2023-10-19 21:25:01 -06:00
Jacquerel
cf5c1fa08c Basic Space Dragon (#78979) 2023-10-14 15:53:28 -07:00
YehnBeep
659d6df676 Renames prison intercoms (#78781)
## About The Pull Request

This renames prison intercoms to "receive-only intercom"

## Why It's Good For The Game

It's rare a day goes by that I don't see someone confused about why
these intercoms "aren't working.", and if it comes up in conversation,
most sec players don't seem to be aware either. There's already a note
about the intercoms being receive-only in the examine text, but
apparently it largely goes unnoticed.

This change should make it very clear, at a glance, that players should
not expect to be able to transmit using these intercoms.

It'd probably also be a good to grey out or hide the transmit button but
this is what I can do and makes it obvious to everyone.

## Changelog

🆑
qol: "prison" intercoms have been renamed to "receive-only" intercoms to
make it clearer they cannot transmit.
/🆑
2023-10-07 02:47:47 +02:00
Jacquerel
3ed187e86b Basic Mob Flesh Worm (#78744)
## About The Pull Request

Fixes #68614

Converts the Flesh Worm (Armsy) into a Basic Mob.
Most of its behaviour has been moved into a component which we can use
to make arbitrary mobs into linked lists of mobs.
To accomplish this I added a signal which is sent when you call any
`adjustXLoss` proc, let me know if my implementation is "calling the
same signal from several places" by a backdoor, I wanted to avoid
registering to 6 signals but I'll change it if I must.

While I was here I killed the unused "lesser" variant because we stopped
using it. Resultingly, Ascended Armsy doesn't need to distinguish itself
by inflating the sprite, so it doesn't. This means that now flesh worms
are using their sprites as intended to be displayed, but if people
really miss all of its segments being poorly scaled by the byond engine
then I guess I can restore it.

## Why It's Good For The Game


![dreamseeker_p8vOpZGXII](https://github.com/tgstation/tgstation/assets/7483112/3389d3a9-16cd-4e1e-938e-dfa18d0da0af)

## Changelog

🆑
refactor: Flesh Worms are now basic mobs. Please report any unexpected
behaviour.
sprite: Flesh Worms are a little bit slimmer.
/🆑
2023-10-05 13:20:16 -06:00
Jacquerel
16910e15b6 Nuke Op AI card is single use as described (#78527)
## About The Pull Request

This item was supposed to allow the purchaser to put an AI into their
mod suit, however as written nothing except available ghost count
stopped you from using it over and over again so that every op on the
team had an AI suit.
Now we just destroy the item if you successfully transfer the AI into
anything so you can't reuse it.

Also I moved it to its own file rather than having the definition of
this item be above every other proc definition in the file, including
some it was using.

## Changelog

🆑
fix: The Nuke Op MODsuit AI downloader only works once per purchase, as
intended.
/🆑
2023-09-27 22:19:54 -04:00