Commit Graph

62 Commits

Author SHA1 Message Date
SkyratBot
ebb21356e1 [MIRROR] Fixes ejecting pAIs card without a pAI in it (#26222)
* Fixes ejecting pAIs card without a pAI in it (#81047)

## About The Pull Request

I had made the bad assumption that a pAI card always had a pAI mob in
it, which is not the case.
This fixes the runtime error, thus allowing people to eject a pAI card
that doesn't have a pAI in it.
I've also added a check in the pAI's Initialize to give them the ability
to use the modPC if they are made in it, so you don't have to eject and
reinsert the pAI, fixing another issue.

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/81043
Fixes inconsistency and runtime.

## Changelog

🆑
fix: pAIs downloaded while in a PDA now gets the action button to
control said PDA.
fix: pAI cards can now be ejected from a PDA when there is no pAI
inhabiting it.
/🆑

* Fixes ejecting pAIs card without a pAI in it

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-01-25 09:29:46 -05:00
SkyratBot
388b242313 [MIRROR] Fix: Allow PAI to wake up [MDB IGNORE] (#25833)
* Fix: Allow PAI to wake up (#80541)

## About The Pull Request

Fixes #66760
Fixes Skyrat-SS13/Skyrat-tg#25745

This PR fixes a bug which causes Personal AI cards to be unable to wake
up from sleep.

Currently, emotes such as "collapse" effectively cause PAI to go into a
coma, which I tested on both TG and Skyrat.

We noticed a similar issue was fixed in PR #77857 in a very direct way,
so I copied that fix.

## Why It's Good For The Game

- Allows PAI to safely get knocked-out and wake up.
- Allows PAI to safely emote knockout-applying emotes such as "collapse"
and "faint" without going into a coma.
- Successfully tested!

## Changelog

🆑 A.C.M.O.
fix: Fixed Personal AI cards, allowing them to wake up from sleep.
/🆑

* Fix: Allow PAI to wake up

---------

Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
2023-12-25 00:17:06 +00:00
SkyratBot
d314979746 [MIRROR] Fix PAI health scanning [MDB IGNORE] (#25673)
* Fix PAI health scanning (#80373)

## About The Pull Request

Fixes #80370

Rather than just using the global `healthscan` proc, PAIs created a
health analyzer in their contents and called `attack` directly,

despite the fact that all health analyzer `attack` does is call the
global proc

- [ ] I tested this pr

## Changelog

🆑 Melbert
fix: Fixes PAI health scan software
/🆑

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>

* Fix PAI health scanning

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
2023-12-17 10:03:05 -05:00
SkyratBot
6c4c965ea4 [MIRROR] Changes occurrences of recieve in code to receive [MDB IGNORE] (#25393)
* Changes occurrences of `recieve` in code to `receive`

* Fix conflict

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
2023-12-02 20:40:07 -06:00
SkyratBot
84e42fd0eb [MIRROR] Removes some code soul (IF YOU ARE COPY PASTING THIS...), replaces it with a macro [MDB IGNORE] (#25272)
* Removes some code soul (`IF YOU ARE COPY PASTING THIS...`), replaces it with a macro (#79935)

## About The Pull Request

Replaces all instances of `SSblackbox.record_feedback\("tally",
"admin_verb", 1, (.+)\)` with `BLACKBOX_LOG_ADMIN_VERB($1)`

This makes so the funny comment isn't necessary.

It also reveals one location which someone did not heed the comment, the
`debug_controller` proc copy+pasted the line but did not change the
fourth argument. PEOPLE DON'T READ!

* Removes some code soul (`IF YOU ARE COPY PASTING THIS...`), replaces it with a macro

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-27 01:02:37 -05:00
SkyratBot
b557e89855 [MIRROR] More standardization for ghost notifications (READY) [MDB IGNORE] (#25104)
* 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.
/🆑

* More standardization for ghost notifications (READY)

* Modular

* Update outpost_of_cogs.dm

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-19 11:25:32 -05:00
SkyratBot
aa3e795e36 [MIRROR] Cuts down on unnecessary non-TGUI stuff [MDB IGNORE] (#24896)
* 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.

* Cuts down on unnecessary non-TGUI stuff

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-11-09 18:54:14 -05:00
SkyratBot
596b2f050e [MIRROR] Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls [MDB IGNORE] (#24804)
* Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls

* Update supermatter.dm

* Modular

* More modular

* Update cortical_borer_egg.dm

---------

Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-05 22:01:17 -05:00
SkyratBot
b6da56408e [MIRROR] A comprehensive refactor / cleanup of bullet_hit and on_hit to cut out a single bad species / mob proc [MDB IGNORE] (#24430)
* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc (#79024)

## About The Pull Request

- Refactored `bullet_act`. Adds `should_call_parent` and refactors
associated children to support that.
   - Fixes silicons sparking off when hit by disabler fire.
- Desnowflakes firing range target integrity and cleans up its
bullet-hole code a bit.
- Cleans up changeling tentacle code a fair bit and fixes it not taking
off throw mode if you fail to catch something.
   - The Sleeping Carp deflection is now signalized
- Nightmare projectile dodging is now signalized and sourced from the
Nightmare's brain rather than species
- Refactored how cardboard cutouts get knocked over to be less
snowflaked / use integrity
- Also adds projectile `on_hit` `should_call_parent` and cleans up a bit
of that, particularly their arguments.
- On hit arguments were passed wrong this entire time, it's a good thing
nothing relied on that.

## Why It's Good For The Game

This is cringe.

1863eb2cd8/code/modules/mob/living/carbon/human/_species.dm (L1430-L1442)

Bullets should overall act more consistent across mob types and objects.

## Changelog

🆑 Melbert
fix: Silicons don't spark when shot by disablers
fix: Changelings who fail to catch something with a tencacle will have
throw mode disabled automatically
fix: Fixes occasions where you can reflect with Sleeping Carp when you
shouldn't be able to
fix: Fixes some projectiles causing like 20x less eye blur than they
should be
refactor: Refactored bullet-mob interactions
refactor: Nightmare "shadow dodge" projectile ability is now sourced
from their brain
/🆑

* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc

* Modular changes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-19 22:18:41 -04:00
SkyratBot
df08743c14 [MIRROR] Separates COMSIG_LIVING_ADJUST_DAMAGE into 6 different signals [MDB IGNORE] (#24179)
* Separates COMSIG_LIVING_ADJUST_DAMAGE into 6 different signals (#78814)

## About The Pull Request

As potato requested after the merge of #78744 these should have separate
concerns even if they are very similar.
In addition I improved how mob chains react to glide size changes, and
swapped PAIs to using these signals instead of an override of
`onBruteLoss` just because I can.

I tested it but the unit tests will catch me if i did it wrong

## Changelog

🆑
fix: Flesh Worms will move smoothly more consistently.
/🆑

* Separates COMSIG_LIVING_ADJUST_DAMAGE into 6 different signals

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-07 17:30:09 -04:00
SkyratBot
9c6432247a [MIRROR] Basic Mob Flesh Worm [MDB IGNORE] (#24122)
* 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.
/🆑

* Basic Mob Flesh Worm

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-06 14:43:47 -07:00
SkyratBot
367166be9f [MIRROR] Moves silicon camera (photos, not mob cameras) out of click code [MDB IGNORE] (#24138)
* Moves silicon camera (photos, not mob cameras) out of click code (#78774)

## About The Pull Request

Atomized from the swing branch.

Moves silicon camera (taking photos, not mob camera stuff) out of their
core click code. It now uses click intercepts.

(There's an argument to be made to use signals rather than click
intercept as it's rather antiquated but w/e.)

- [x] I tested this PR

## Why It's Good For The Game

Makes it easier to unifiy click a bit more in the future. Reduces
surface area of a feature.

## Changelog

🆑 Melbert
qol: AI, cyborg, and PAI camera (photo taking) behavior now uses balloon
alerts and has sound effects associated
refactor: Refactored AI, cyborg, and PAI camera (photo taking) code
fix: fixed being unable to print photos as a cyborg when below 50%
toner, even though photos only take 5%
/🆑

* Moves silicon camera (photos, not mob cameras) out of click code

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-10-06 14:42:50 -07:00
SkyratBot
20856888e8 [MIRROR] Adds a frog pAI holoform [MDB IGNORE] (#23896)
* Adds a frog pAI holoform (#78537)

## About The Pull Request
It has been over a year since we have got a new pAI holoform, so I
present to you, the fwog.

![image](https://github.com/tgstation/tgstation/assets/20053168/3e1a77f0-e7b6-4aed-8401-c510afbcd2c5)
More importantly, it can be worn on the head like a normal frog.

![image](https://github.com/tgstation/tgstation/assets/20053168/795dcfd2-d576-4722-ab6f-edbed5b8fb36)

All of the new icons

![image](https://github.com/tgstation/tgstation/assets/20053168/b84ceca5-ff27-4a3a-a023-1d350762148b)

## Why It's Good For The Game
More holoform variety for pAIs is nice, especially one that can be worn
as a hat.
## Changelog
🆑
image: adds a frog holoform for pAIs
/🆑

* Adds a frog pAI holoform

---------

Co-authored-by: Alexis <catmc8565@gmail.com>
2023-09-24 23:20:52 -07:00
SkyratBot
d865f6fa9a [MIRROR] pAIs control a PDA they're inserted into [MDB IGNORE] (#23519)
* pAIs control a PDA they're inserted into (#78103)

## About The Pull Request

This PR lets pAIs inserted into a PDA to control the PDA of their owner.
They can see their own pAI configurations but cannot edit any of it.
They also can't eject themselves from it.
This means they can receive and send PDA messages as their owner, acting
like a personal secretary

This also adds support for multiple people using a PDA and its UI
updating for all of them and PDA messages being received and responded
to from multiple people under the same PDA
It also removes pAI camera in favor of using siliconcamera, which is the
same thing; this just cuts down on some copy paste.

I also reverted PDA's ringer being off preventing messages from being
sent to your chat, silent mode was meant to prevent only the ringing
sound.

## Why It's Good For The Game

pAIs can now do a little bit more to help their owners on a personal
level, and adds support for more stuff like this in the future (an idea
I had was being able to hack into PDAs in the same way the CE can hack
into APCs remotely)

This is a re-PR of https://github.com/tgstation/tgstation/pull/76445 but
it's a little better this time and does not remove the PDA Messenger app
from pAIs.

## Changelog

🆑
fix: PDAs being on silent no longer prevents PDAs from being sent to
your chat, again.
add: pAIs inserted into a PDA can now control the PDA, and will receive
PDA messages sent to it (and can respond under the PDA's name).
/🆑

* pAIs control a PDA they're inserted into

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-09-04 20:04:07 -04:00
SkyratBot
d21e06104f [MIRROR] Dunking handle_atom_del() in the trash bin. [MDB IGNORE] (#23183)
* Dunking handle_atom_del() in the trash bin.

* Update _box_magazine.dm

* Modular paths

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-18 12:17:04 -04:00
SkyratBot
5caffe23c0 [MIRROR] Allows for some locs to have spells cast while inside, such as PAI cards (for PAIs), AI cards (for AIs), and mechas [MDB IGNORE] (#22940)
* Allows for some locs to have spells cast while inside, such as PAI cards (for PAIs), AI cards (for AIs), and mechas (#77418)

## About The Pull Request

Spiritual successor to #76716

- Some spells can now be cast while the mob is within the contents of
certain atoms.
  - PAIs can now cast if within a PAI card
  - AIs can now cast if within an AI card
  - People within vehicles (mechas and cars) can now cast their spells

- Repulse and Knock now have unique interactions for being cast within a
locker

## Why It's Good For The Game

Carlac's PR gave me an idea for how to tackle this in a relatively clean
way so I went ahead and adapted the suggestion to something that works
for the cast chain.

This isn't perfect, some spells will need to be updated, but they can be
done piecemeal.

This is something that, IN THEORY, should have already been wholesale
supported by the spell refactor - any atom you pass into the cast chain
should "just work ™️ ", either rejecting if it fails the valid target
check or doing the spell effects as if the atom passed was the caster.

## Changelog

🆑 Melbert
add: PAIs can now cast wizard spells should they have any.
add: AIs located in intellicards can now cast wizard spells should they
have any.
add: Some spells, such as AoE or conjure spells, are now castable from
within Mechas or Clown Cars. To varying degrees of success.
add: Knock will now unlock and open closets you are hiding within.
add: Repulse will now throw open closets you are hiding within.
/🆑

* Allows for some locs to have spells cast while inside, such as PAI cards (for PAIs), AI cards (for AIs), and mechas

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-08-08 08:18:56 -04:00
SkyratBot
f753786e3e [MIRROR] Add pAI movement freedom when emagged [MDB IGNORE] (#22895)
* Add pAI movement freedom when emagged

* Update PaiCard.tsx

* Emagging can remove the leash now

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-05 23:20:33 -04:00
SkyratBot
253dc0e7fb [MIRROR] [no gbp] Don't dump pai cards out of PDAs for no reason [MDB IGNORE] (#22845)
* [no gbp] Don't dump pai cards out of PDAs for no reason (#77292)

## About The Pull Request

Fixes #77285
This code block was written to eject pAIs from things when they were
carrying their card around with them. Now that that isn't true, we
shouldn't be doing it.

## Why It's Good For The Game

Reduces ability to accidentally leave your friend on the floor.

## Changelog

🆑
fix: Your pAI card won't pop out of your PDA onto the floor alongside
its hologram if it enters hologram form while inside a PDA.
/🆑

* [no gbp] Don't dump pai cards out of PDAs for no reason

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-08-02 13:53:02 -07:00
SkyratBot
cab87c97e5 [MIRROR] Add leash component to pAIs that keeps them within range instead of directly teleporting them back, increases default range to max range [MDB IGNORE] (#22745)
* Add leash component to pAIs that keeps them within range instead of directly teleporting them back, increases default range to max range (#77030)

## About The Pull Request

Tries to keep pAIs in range of their owner by moving them closer when
the owner moves, rather than jarringly teleporting every time the owner
gets out of range. Does this by calculating the closest path a nearby
tile and forcefully moving you there. Still a bit janky at times but is
better than teleporting directly onto the owner 100% of the time I feel.
Also prevents you from moving out of range, rather than forcefully
teleporting you back.

Increases the default pAI range to the maximum (9 tiles)

## Why It's Good For The Game

New leashing makes being a leashed pAI significantly less jarring and
obvious. Ideally we would also have a visible max range too.

Default pAI range was pretty small in my testing and I think it's not
unreasonable to think a lot of people won't bother changing it. That
they are leashed at all is the important part.

## Changelog

🆑
qol: pAIs now try to stay within range of their owner, and teleport back
only when necessary
qol: Default max pAI range has been changed to the maximum range you can
choose (9 tiles)
/🆑

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Add leash component to pAIs that keeps them within range instead of directly teleporting them back, increases default range to max range

* Fixes the leash enable/disable

* A workaround because the procs are private.

* Update card.dm

* Update card.dm

what I get for rushing

* Update card.dm

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-30 16:24:44 -04:00
SkyratBot
81a8bc4acc [MIRROR] The Leaning Update (and Density Refractor) [MDB IGNORE] (#22606)
* The Leaning Update (and Density Refractor)

* Merge conflicts

---------

Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-22 22:39:10 -04:00
SkyratBot
606f0009a1 [MIRROR] Removes two redundant components [MDB IGNORE] (#22613)
* Removes two redundant components (#76866)

## About The Pull Request

We're starting to get to have enough components that people don't
realise that what they want already exists but doesn't have the name
they expect 🙃

I recently added `track_hierarchical_movement` which is similar enough
to `connect_containers` that it shouldn't independently exist, even if I
like sending a new signal more than the ugly setup pattern for
`connect_loc`.

`trait_loc` is actually older than `give_turf_traits` but
`give_turf_traits` covers more edge cases than `turf_loc` so seems like
the better one to maintain.
HOWEVER `give_turf_traits` held a list of references to atoms in it,
which isn't great in an element. I couldn't think of a way to completely
eliminate the list, but it isn't a list of references any more so it
shouldn't cause any hard deletions.

## Why It's Good For The Game

Having two components which do the same thing but marginally differently
is confusing and going to cause us trouble down the line.

## Changelog

Not player facing

* Removes two redundant components

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-07-21 13:27:45 -04:00
SkyratBot
07fa5992a4 [MIRROR] Adds p_They (and friends) for capitalized pronoun helpers [MDB IGNORE] (#22555)
* Adds p_They (and friends) for capitalized pronoun helpers

* Fixes modular pronouns

* Merge conflict

* Update spank_related.dm

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-18 22:10:59 -04:00
SkyratBot
daba1d93ae [MIRROR] Hud screens now set hud owner in Initialize. [MDB IGNORE] (#22501)
* Hud screens now set hud owner in Initialize.

* Merge conflicts

* modular adjustments

* Missed one

* Make this easier to spot

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-18 16:41:01 -04:00
SkyratBot
1b2c393ca6 [MIRROR] PAI Holochassis are now leashed to an area around their card [MDB IGNORE] (#22461)
* PAI Holochassis are now leashed to an area around their card

* Fix diffs

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-16 16:38:20 -04:00
SkyratBot
e264ee3644 [MIRROR] Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts [MDB IGNORE] (#22469)
* Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts

* Update communications.dm

* Modular override

* Some modular adjustments, removes 'emagged' vars in favor of obj_flags

* whoops, mobs don't have obj_flags.

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-15 16:46:17 -04:00
SkyratBot
02648adcd6 [MIRROR] Refactors mind language holders into non-existent, fixes new languages being deleted on species swap + tests [MDB IGNORE] (#22348)
* Refactors mind language holders into non-existent, fixes new languages being deleted on species swap + tests

* Fixing merge conflicts

* don't forget to ctrl+s!

* Another forgotten file

* urgh

* gets rid of vestiges of update_atom_languages()

and mind language holders

* No longer needed

* Fixes some modular grant_language calls

* Deprecated code

* This was up here before..

* Fixes failing unit tests, refactors silverscale lizards language a bit removing the need for skyrat edits

Removes some no longer needed code

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-13 22:38:45 -04:00
SkyratBot
86f662a067 [MIRROR] Fixes Minor Grammar Issue in PAI Card Suicide [MDB IGNORE] (#21735)
* Fixes Minor Grammar Issue in PAI Card Suicide (#75922)

## About The Pull Request
Before:
<img src="https://i.ibb.co/MSXky10/PAISuicide-Before.png"
alt="PAISuicide-Before" border="0">
After:
<img src="https://i.ibb.co/HhN4kp7/PAISuicide-After.png"
alt="PAISuicide-After" border="0">

Exclamation mark means new sentence which needs a capital letter. This
changes the pronoun helper in the 2nd sentence to be capitalised.
## Why It's Good For The Game
Minor grammar issues getting fixed is good.
## Changelog
Too small a change for a CL entry

* Fixes Minor Grammar Issue in PAI Card Suicide

---------

Co-authored-by: Jackraxxus <60418544+Jackraxxus@users.noreply.github.com>
2023-06-10 10:57:01 -04:00
SkyratBot
5ac0aae724 [MIRROR] Removes all uses of text() [MDB IGNORE] (#21579)
* Removes all uses of text()

* Update record.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-06-07 14:43:37 +02:00
SkyratBot
b44715db5d [MIRROR] ex_act() will work on basic mobs again (lol) + Unit Test [MDB IGNORE] (#20919)
* `ex_act()` will work on basic mobs again (lol) + Unit Test

* COnflict

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-05-03 22:51:49 +01:00
SkyratBot
ae475697c0 [MIRROR] Corrects record_feedback()'s copy/paste comment [MDB IGNORE] (#20777)
* Corrects record_feedback()'s copy/paste comment (#74962)

## About The Pull Request

Corrects `record_feedback()`'s copy/paste comment.

## Pointless history

Originally being added in e2a8a5e, it kept its name and args for quite a
few years, that was until #32188 which had it renamed to
`record_feedback` and its args pretty much doubled. In between these
times the known copy/paste comment was already around, but that wasn't
updated, until now apparently.

* Corrects record_feedback()'s copy/paste comment

---------

Co-authored-by: Zandario <zandarioh@gmail.com>
2023-04-25 22:38:37 -07:00
SkyratBot
9a594755f3 [MIRROR] Renames delta time to be a more obvious name [MDB IGNORE] (#20507)
* Renames delta time to be a more obvious name

* updates to our code

---------

Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-12 20:45:43 +01:00
SkyratBot
6a9036149c [MIRROR] Significantly speed up create & destroy by reducing the amount of time to wait for GC [MDB IGNORE] (#20459)
* Significantly speed up create & destroy by reducing the amount of time to wait for GC (#74604)

The check queue is 5 minutes long because that's the longest a client
can hold onto a reference. Without clients, we can drastically decrease
the time we have to wait. This lowers the time down to 10 seconds
(though everything right now deletes in 5).

This will represent a 5 minute decrease in CI across the board, freeing
up runners.

Makes a few changes to stuff that was being held for more than 10
seconds.
- `VARSET_CALLBACK` now works through weakrefs, to allow for pAIs to
have their holochassis init timers.
- Nar'Sie cleans herself up in GLOB.cult_narsie if she's deleted.
- "Spooky portals" no longer hold onto a reference for 2 minutes.
- `poll_candidates` short circuits to an empty list if there are no
candidates, to avoid several 30 second+ long timers

Originally this was going to be a more clever hack from @ MrStonedOne
about short circuiting if everything deletes before the wait, but we
realized that basically nothing actually holds onto references for that
long without clients, and that nothing really should anyway

* Significantly speed up create & destroy by reducing the amount of time to wait for GC

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-04-09 19:36:44 -07:00
SkyratBot
6e029611ac [MIRROR] Implements AddTraits and RemoveTraits procs for adding/removing multiple traits + swag unit test [MDB IGNORE] (#19959)
* Implements AddTraits and RemoveTraits procs for adding/removing multiple traits + swag unit test

* MISSED MIRROR https://github.com/tgstation/tgstation/pull/71606

* Update modules_supply.dm

* Update tgstation.dme

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-27 03:26:52 +01:00
Useroth
c76182a977 [TESTMERGE CANDIDATE] [SEMI-MODULAR] AI and hologram QoL stuff + misc bugfixes (#19248)
* Standarized silicon examine stuff.

* There we actually go

* Fuck, finally.

* Let's do something to amend the double-messages

* fixing a dumb copypaste

* How dumb of me

* Amendments

* oh well, this should take care of some runtimes

* this too

* Okay now it should compile

* Oh well, might as well do this too

* Dear got, subtler is full of spaghetti. Even before I touched it. It legitimately deserves a fucking rewrite.

* one way to resolve a conflict

* ordered tgstation.dme correctly now

* fiiiixed
2023-03-24 11:27:18 -04:00
SkyratBot
f8f2abb11f [MIRROR] Refactor, improve, and rename canUseTopic to be can_perform_action [MDB IGNORE] (#19391)
* Refactor, improve, and rename canUseTopic to be can_perform_action

* updoot

* https://github.com/tgstation/tgstation/pull/72876

https://github.com/tgstation/tgstation/pull/72876

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-10 04:19:25 +00:00
SkyratBot
3185e95d87 [MIRROR] clear pai tracking when hacking cable retracts [MDB IGNORE] (#19252)
* clear pai tracking when hacking cable retracts (#73302)

## About The Pull Request

We track the pai aswell as the cable to check for the pai moving away
from the user
But we never clear that tracking

Also adds a check for the check proc to not run if there isn't even a
hacking cable
## Why It's Good For The Game

resolves #73222
## Changelog
🆑
fix: Using a hacking cable will no longer permanently spam you with
balloon messages
/🆑

* clear pai tracking when hacking cable retracts

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-02-09 17:44:31 -08:00
SkyratBot
e7ecb022f0 [MIRROR] Fixes some redundant / incorrect messages w/ spontaneous combustion symptom [MDB IGNORE] (#19182)
* Fixes some redundant / incorrect messages w/ spontaneous combustion symptom (#73227)

🆑 ShizCalev
fix: Fixed some duplicated and incorrect messages being presented when
infected with a virus that has the spontaneous combustion symptom.
/🆑

* Fixes some redundant / incorrect messages w/ spontaneous combustion symptom

---------

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2023-02-08 02:15:44 +00:00
SkyratBot
ef1ad8331a [MIRROR] Experiment with holding hard references to objects being qdeleted in 515 (saves 1.1+ seconds on init times, more on prod) [MDB IGNORE] (#18361)
* Experiment with holding hard references to objects being qdeleted in 515 (saves 1.1+ seconds on init times, more on prod) (#72033)

## About The Pull Request
Adds `EXPERIMENT_515_QDEL_HARD_REFERENCE`, which will queue to the GC
subsystem using hard references rather than `\ref`. This is only
possible in 515 because of the new `refcount` proc. `\ref` is very very
slow and has some nasty knock on effects, so removing its usages where
possible is good.

This is an explicit opt in define because I want to give us the ability
to test 515 on live while only testing 515 itself, not our experimental
changes. We have a few more of these we want to do so I made a separate
file for them. They're auto-defined in unit tests so we see them with
the alternate test runner. In a perfect world we'd test both on and off,
but eh.

Closes https://github.com/tgstation/dev-cycles-initiative/issues/10

* Experiment with holding hard references to objects being qdeleted in 515 (saves 1.1+ seconds on init times, more on prod)

* fix missed underbarrels

* HEV radio

* Keeps gc_destroyed from getting updated on every step thru the gc queue. (#72401)

Keeps gc_destroyed from getting updated on every step thru the gc queue.

Fixes logic that assumed gc_destroyed is the time the object first
qdel'ed. it used to get updated on each stage of the garbage controller
and there are 3 stages.

Added list index defines for the inner gc item list.

* test fix

* final fix

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2023-01-12 16:16:33 -05:00
Zonespace
1135ac5e2c Mirror #72280 (#18648)
Add lints for idiomatic balloon alert usage (#72280)

Adds lints for `balloon_alert(span_xxx(...))` (which is always wrong),
and balloon alert where the first letter is a capital (which is usually
wrong). Fixes everything that failed them. As a reminder, abbreviations
like "AI" and "GPS" shouldn't be capitalized in a balloon alert.

In cases where this is intentional for flavor (there was one case), you
can `UNLINT` like so:

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-01-12 08:48:06 -05:00
SkyratBot
80d1906bd1 [MIRROR] Basic Mobs can run away [MDB IGNORE] (#18196)
* Basic Mobs can run away (#71963)

## About The Pull Request

That's right I'm still atomising #71421, some day I might even post
something related to carp.
This PR adds various behaviours to basic mobs allowing them to run away,
in a couple of variations.

Mice will flee from anyone who doesn't share their factions, at all
times (so they will scatter from most humans, but not regal rats).
Rabbits and Sheep will flee from anyone who has attacked them.
Pigs will run away from people who have attacked them, but only if
they're below half health.

https://user-images.githubusercontent.com/7483112/207127135-d1737f91-d3f7-468a-ac60-7c7ae5d6623d.mp4

Mice are still plenty catchable because they don't run _very far_ (or
very fast) but I think the chase will be good enrichment.

To achieve this I had to change the signal COMSIG_CARBON_HEALTH_UPDATE
into COMSIG_LIVING_HEALTH_UPDATE but frankly the latter seems more
sensible anyway.

## Why It's Good For The Game

More behaviours to use later when designing mobs, gradually gives mobs
more things to do rather than just sort of moving aimlessly around the
area you left them in.
It'll give people hunting rats in maintenance some exercise.

## Changelog

🆑
add: Mice will now run away from you, you have to catch them if you want
to eat them. Use those traps!
add: Rabbits, Sheep, and Pigs likewise won't just sit there and let you
pulverise them if they can see an escape route.
/🆑

* Basic Mobs can run away

* Modular!

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2023-01-07 23:51:47 +13:00
SkyratBot
cf1416ed79 [MIRROR] Fix: Robotic Damage / Reagents Refactor [MDB IGNORE] (#18132)
* Fix: Robotic Damage / Reagents Refactor (#71937)

This PR is a continuing refactor of and fixes bugs introduced by my
prior PR #71864

![when-you-finish-fixing-something-and-it-no-longer-works](https://cdn.discordapp.com/attachments/752427120365404172/1052037482771906640/Attachment.jpg)

Due to many functions in reagents having been implemented on top of
prior buggy code, their new behaviors are not as expected in-game, and
as a result reagents damage/heal robotic/cybernetic bodyparts/organs
when not appropriate; bugs like healing robotic arms with Libital is
currently possible.

To fix the errant behaviors in the newly debugged code, I have added
three variables to `datum/reagent` which are used throughout reagent
code, mainly inside of `on_mob_life` etc:

- `affected_bodytype = BODYTYPE_ORGANIC` - Used if the reagent
damages/heals bodyparts (Brute/Fire) of an affected mob.
- `affected_biotype = MOB_ORGANIC` - Used if the reagent damages/heals
generic damage (Toxin/Oxygen) of an affected mob.
- `affected_organtype = ORGAN_ORGANIC` - Used if the reagent
damages/heals organ damage of an affected mob.

The diff is large, and I have refactored the readability/maintainability
around the sections of code I was modifying. At one point I chose to
perform a quality pass on reagents because I found it quite hard to
maintain reagents code in its current state. This PR also replaces many
single-letter variables with more descriptive and readable variable
names. I also found and fixed a stray tab which was located in the
flavortext of `proc/item_heal_robotic`

Due to an old bug being fixed recently by PR #71864 a lot of
healing/damaging reagents now have an effect on robotic bodyparts. This
PR corrects the issue and changes reagents to explicitly define the body
type, bio type, and organ type which they can affect with
helaing/damage. This PR replaces a lot of single-letter variable names
with more descriptive names. I also fixed a small typo in
`item_heal_robotic` which was inserting an extra tab.

🆑
fix: Fixed a stray-tab typo in "item_heal_robotic"
fix: Fixed reagents and other effects which were inappropriately
affecting robotic limbs.
code: Refactored all of reagents code to be more readable and
maintainable.
/🆑

Co-authored-by: Time-Green <timkoster1@hotmail.com>

* Modular!

* More Modular!

Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2022-12-19 22:04:01 +13:00
SkyratBot
7c3e7f5192 [MIRROR] Fix: Robotic/Non-Organic Bodyparts not Healing/Damaging [MDB IGNORE] (#18091)
* Fix: Robotic/Non-Organic Bodyparts not Healing/Damaging

* Mirror!

Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2022-12-19 21:01:21 +13:00
SkyratBot
15faaa54f5 [MIRROR] Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons. [MDB IGNORE] (#17907)
* Rewrites how action buttons icons are generated, makes them layer nicer. Allows observers to see a mob's action buttons.

* conflicts

* Modular!

* update modular

* icon icon icon icon icon

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2022-12-16 16:01:41 +00:00
SkyratBot
da0a127243 [MIRROR] Delimbs Stamina [MDB IGNORE] (#17981)
* Delimbs Stamina

* SR skews

* out of band upstream hotfix

Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2022-12-15 17:50:49 -05:00
SkyratBot
dbfdc2dbd7 [MIRROR] Case consistency for the "Crew Manifest" pAi software [MDB IGNORE] (#17564)
* Case consistency for the "Crew Manifest" pAi software (#71318)

## About The Pull Request

A case inconsistency when the pAIs rework was done (#68241) broke the
HUD toggle button used to display the Crew Manifest. While the software
was installed by the pAi, it falsely displayed that it was not the case.

> You must download the required software to use this.

![image](https://user-images.githubusercontent.com/118366967/202476259-6d8493ca-f002-4c92-8afd-1e3e340ef546.png)

## Why It's Good For The Game

Toggle button didn't work. Now, it works.

## Changelog

🆑
spellcheck: The pAI toggle button to quickly display the Crew Manifest
works again.
/🆑

* Case consistency for the "Crew Manifest" pAi software

Co-authored-by: Tonriam <118366967+Tonriam@users.noreply.github.com>
2022-11-18 14:04:15 -05:00
Zonespace
f7c26bbf25 515 Compat (#17465)
* ONLY SKYRAT CHANGES

* ACTUALLY SKYRAT CHANGES

* yolo, revert later

* Update alternate_byond_versions.txt

Co-authored-by: AnturK <AnturK@users.noreply.github.com>
2022-11-15 06:59:06 +00:00
SkyratBot
c813baa0e0 [MIRROR] Fixes runtime when empty PAI gets emp'd [MDB IGNORE] (#17052)
* Fixes runtime when empty PAI gets emp'd (#70660)

* Fixes runtime when empty PAI gets emp'd

Co-authored-by: GoblinBackwards <22856555+GoblinBackwards@users.noreply.github.com>
2022-10-20 22:10:46 -04:00
SkyratBot
2fe412da37 [MIRROR] Remove unnecessary doorjack visible messages [MDB IGNORE] (#16993)
* Remove unnecessary doorjack visible messages (#70616)

* Remove unnecessary doorjack visible messages

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-10-19 12:21:31 +01:00
SkyratBot
3795ed1a6b [MIRROR] [MDB Ignore]Hats DMI split [MDB IGNORE] (#16693)
* [MDB Ignore]Hats DMI split

* e

* STAFE

* e

* e

Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-10-09 23:00:42 +01:00
SkyratBot
9bf006d189 [MIRROR] Multiz Rework: Human Suffering Edition (Contains PLANE CUBE) [MDB IGNORE] (#16472)
* Multiz Rework: Human Suffering Edition (Contains PLANE CUBE)

* skyrat changes

* bodyparts merge

* unres door floorlight fix

* Future upstream fix for blindness

* upcoming upstream airlock fix

* fix button emissive

* Fix FOV markings?

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-10-02 23:30:09 -04:00