185 Commits
Author SHA1 Message Date
WaterpigandMajkl-J bb70889f6e TG Upstream Part 1
3591 individual conflicts

Update build.js

Update install_node.sh

Update byond.js

oh my fucking god

hat

slow

huh

holy shit

we all fall down

2 more I missed

2900 individual conflicts

2700 Individual conflicts

replaces yarn file with tg version, bumping us down to 2200-ish

Down to 2000 individual conflicts

140 down

mmm

aaaaaaaaaaaaaaaaaaa

not yt

575

soon

900 individual conflicts

600 individual conflicts, 121 file conflicts

im not okay

160 across 19 files

29 in 4 files

0 conflicts, compiletime fix time

some minor incap stuff

missed ticks

weird dupe definition stuff

missed ticks 2

incap fixes

undefs and pie fix

Radio update and some extra minor stuff

returns a single override

no more dupe definitions, 175 compiletime errors

Unticked file fix

sound and emote stuff

honk and more radio stuff
2024-10-19 08:04:33 -07:00
Waterpig 4c4930c71d Merge branch 'master' of https://github.com/tgstation/tgstation into pulls-tg-to-fix-shit 2024-09-08 00:59:39 +02:00
91baa94ac5 event based incapicated and able_to_run (#86031)
## About The Pull Request
this is a revival of #82635 . i got permission from potato to reopen
this, he did almost all the work. i only just solved the conflicts and
fixed all the bugs that were preventing the original from being merged
(but it should be TMed first)

## Why It's Good For The Game
slightly improves the performance of basic mob AI

## Changelog
🆑
LemonInTheDark
refactor: able_to_run and incapacitated have been refactored to be event
based
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: ZephyrTFA <matthew@tfaluc.com>
2024-09-04 10:02:49 -04:00
lessthanthreeandGitHub 594fd069ab Fixes Skub not fitting in Skub box (#86155)
## About The Pull Request

Fixes the exceptions_hold list not being checked when trying to put an
item in the box

## Changelog

🆑 LT3
fix: You can now put Skub back in the Skub box, as intended
/🆑
2024-09-03 17:41:36 +02:00
fc614f1701 [MIRROR] Refactored the fish case and examining fish. New bluespace fish case to fit large fish inside a backpack. (#29448)
* Refactored the fish case and examining fish. New bluespace fish case to fit large fish inside a backpack. (#85271)

## About The Pull Request
I've refactored the FISH_SAFE_STORAGE trait into an element, mainly
because there were a few problems with how it worked: It wasn't stopping
hunger from raising, ditto with the breeding wait, and it offered no
healing whatsoever, which I find kind of a bummer. The new element will
keep the fish from getting any hungrier or ready to reproduce and will
heal them up to 65% of their base health.

Also, I've added a new bluespace fish case as a techweb design, found
along with other stuff in the advanced fishing node, though if you want
I can move it to a bluespace node. This should make it possible to
reasonably store and carry around larger fish.

Examining a fish will no longer give out readings on weight and size if
you haven't at least attempted fishing once (you can get to novice level
in less than a minute). While examining a fish with apprentice level or
higher will also give readings on the general conditions of the fish (is
it starving? drowning? has it lost a considerable chunk of health?). The
fishing skillchip also gives you these traits.

I've also converted two fish variables into traits, because fish have
waaaay too many variables. and gave some topdown shading to the
pre-existing fishbox sprite.

## Why It's Good For The Game

## Changelog

🆑
add: Added a bluespace fish case to the advanced fishing node.
balance: Fish cases will keep a fish from getting hungrier or ready to
reproduce, while also healing it up to 65% health.
balance: Examining a fish with zero fishing skill whatsoever won't give
a reading on its size and weight. Conversely, examining one with the
skill leveled two times will give general information on if it's
starving, sick, hungry, or dead.
/🆑

* Refactored the fish case and examining fish. New bluespace fish case to fit large fish inside a backpack.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-08-21 13:45:37 +07:00
GhomandGitHub ff3b73dc82 Refactored the fish case and examining fish. New bluespace fish case to fit large fish inside a backpack. (#85271)
## About The Pull Request
I've refactored the FISH_SAFE_STORAGE trait into an element, mainly
because there were a few problems with how it worked: It wasn't stopping
hunger from raising, ditto with the breeding wait, and it offered no
healing whatsoever, which I find kind of a bummer. The new element will
keep the fish from getting any hungrier or ready to reproduce and will
heal them up to 65% of their base health.

Also, I've added a new bluespace fish case as a techweb design, found
along with other stuff in the advanced fishing node, though if you want
I can move it to a bluespace node. This should make it possible to
reasonably store and carry around larger fish.

Examining a fish will no longer give out readings on weight and size if
you haven't at least attempted fishing once (you can get to novice level
in less than a minute). While examining a fish with apprentice level or
higher will also give readings on the general conditions of the fish (is
it starving? drowning? has it lost a considerable chunk of health?). The
fishing skillchip also gives you these traits.

I've also converted two fish variables into traits, because fish have
waaaay too many variables. and gave some topdown shading to the
pre-existing fishbox sprite.

## Why It's Good For The Game


## Changelog

🆑
add: Added a bluespace fish case to the advanced fishing node.
balance: Fish cases will keep a fish from getting hungrier or ready to
reproduce, while also healing it up to 65% health.
balance: Examining a fish with zero fishing skill whatsoever won't give
a reading on its size and weight. Conversely, examining one with the
skill leveled two times will give general information on if it's
starving, sick, hungry, or dead.
/🆑
2024-08-18 06:06:17 -07:00
0ac0b26309 [MIRROR] Toolbox, medkit, cardboard box sounds. (#29349)
* Toolbox, medkit, cardboard box sounds. (#85337)

## About The Pull Request

https://github.com/user-attachments/assets/155210d1-d0ae-404e-b69c-a0d185306db6

### Added container rustle sounds for:
- medkit
- box
- toolbox

### Added container open sounds for:
- box
- toolbox

### De-hard coded container rustle sounds so now you can change the
sound path on subtypes.
## Why It's Good For The Game
- Hearing the same cloth rustling SFX for boxes, toolboxes and medkits,
when they're clearly not made of cloth is immersion breaking, let's fix
that.
- giving players satisfying sounds when they open containers and an
overall diversity of sounds will reduce ear fatigue
- rustle SFX were previously hard coded and you couldn't change them or
change the `vary` boolean, we should keep the code customizable and
allow contributors to add more rustle sounds by implementing this
framework.
## Changelog
🆑 grungussuss
sound: added rustle sounds for: toolbox, medkit, box
sound: added open sounds for: toolbox, box
code: added support for giving container items rustle sounds
/🆑

* Toolbox, medkit, cardboard box sounds.

---------

Co-authored-by: grungussuss <96586172+Sadboysuss@users.noreply.github.com>
2024-08-15 22:27:06 +07:00
grungussussandGitHub a4a92eb84c Toolbox, medkit, cardboard box sounds. (#85337)
## About The Pull Request


https://github.com/user-attachments/assets/155210d1-d0ae-404e-b69c-a0d185306db6

### Added container rustle sounds for:
- medkit
- box
- toolbox

### Added container open sounds for:
- box
- toolbox

### De-hard coded container rustle sounds so now you can change the
sound path on subtypes.
## Why It's Good For The Game
- Hearing the same cloth rustling SFX for boxes, toolboxes and medkits,
when they're clearly not made of cloth is immersion breaking, let's fix
that.
- giving players satisfying sounds when they open containers and an
overall diversity of sounds will reduce ear fatigue
- rustle SFX were previously hard coded and you couldn't change them or
change the `vary` boolean, we should keep the code customizable and
allow contributors to add more rustle sounds by implementing this
framework.
## Changelog
🆑 grungussuss
sound: added rustle sounds for: toolbox, medkit, box
sound: added open sounds for: toolbox, box
code: added support for giving container items rustle sounds
/🆑
2024-08-14 13:46:51 +02:00
SmArtKarandSkyratBot 503d689ad1 Players can now reorder items inside storages by dragging them (#85318)
## About The Pull Request

https://github.com/user-attachments/assets/8949965f-a78a-4f3d-b528-afcdfe5c4e72

Drag'n'dropping items inside of an open storage that you can access will
reorder them. I had to register dropping onto items themselves instead
of cells as they ignore icon transparency when in storage for QOL
reasons, so bear with that.
## Why It's Good For The Game

Reordering your storage currently requires taking out all items in front
of position that you want a certain item to be and putting them back in
which could be rather annoying with large storages.

## Changelog
🆑
qol: You can now reorder items inside storages by dragging them
/🆑
2024-07-31 11:05:06 -04:00
SmArtKarandGitHub 2e8f45737c Players can now reorder items inside storages by dragging them (#85318)
## About The Pull Request


https://github.com/user-attachments/assets/8949965f-a78a-4f3d-b528-afcdfe5c4e72

Drag'n'dropping items inside of an open storage that you can access will
reorder them. I had to register dropping onto items themselves instead
of cells as they ignore icon transparency when in storage for QOL
reasons, so bear with that.
## Why It's Good For The Game

Reordering your storage currently requires taking out all items in front
of position that you want a certain item to be and putting them back in
which could be rather annoying with large storages.

## Changelog
🆑
qol: You can now reorder items inside storages by dragging them
/🆑
2024-07-31 14:58:43 +01:00
8f81666251 [MIRROR] Fixes exploit allowing players to open Bag of Holding rifts in the Heretic dimension (#29106)
* Fixes exploit allowing players to open Bag of Holding rifts in the Heretic dimension (#85330)

## About The Pull Request

This PR prevents players from opening a BoH tear in the Heretic
dimension areas. It also introduces a new area flag, "NO_BOH", which can
be added to areas to replicate this behavior.

## Why It's Good For The Game

This prevents the (very unlikely) edge case that someone manages to open
a BoH tear in one of the funny hand rooms, which is bad not only because
it fucks over anyone else who gets sacrificed, but could also interfere
with other things on that z-level (shuttles, other Lazy Template areas,
etc).

Messing with some new code here, so if there's better ways to handle
this, by all means, chime in. This is a much more elegant method than
just banning anything but the station.
## Changelog
🆑 Vekter
fix: Fixes an exploit that allowed players to open a Bag of Holding rift
in the Heretic dimension.
/🆑

---------

Co-authored-by: Kapu1178 <75460809+Kapu1178@ users.noreply.github.com>

* Fixes exploit allowing players to open Bag of Holding rifts in the Heretic dimension

---------

Co-authored-by: Vekter <TheVekter@users.noreply.github.com>
Co-authored-by: Kapu1178 <75460809+Kapu1178@ users.noreply.github.com>
2024-07-29 21:34:01 +05:30
5b23db8a2c Fixes exploit allowing players to open Bag of Holding rifts in the Heretic dimension (#85330)
## About The Pull Request

This PR prevents players from opening a BoH tear in the Heretic
dimension areas. It also introduces a new area flag, "NO_BOH", which can
be added to areas to replicate this behavior.

## Why It's Good For The Game

This prevents the (very unlikely) edge case that someone manages to open
a BoH tear in one of the funny hand rooms, which is bad not only because
it fucks over anyone else who gets sacrificed, but could also interfere
with other things on that z-level (shuttles, other Lazy Template areas,
etc).

Messing with some new code here, so if there's better ways to handle
this, by all means, chime in. This is a much more elegant method than
just banning anything but the station.
## Changelog
🆑 Vekter
fix: Fixes an exploit that allowed players to open a Bag of Holding rift
in the Heretic dimension.
/🆑

---------

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
2024-07-28 21:26:34 -06:00
SyncIt21andSkyratBot 3411cd1411 Fixes runtime with storage datum & portable chem mixer beaker insertion (#84966)
## About The Pull Request
- Fixes this when hiding the storage ui
![Screenshot
(436)](https://github.com/user-attachments/assets/a5e2e512-bbf6-4b55-a7e4-01a9e89afe39)

- Fixes #84963

## Changelog
🆑
fix: fixes runtime in storage datums when hiding the ui
fix: you can insert the withdrawal beaker into the portable chem mixer
when locked
/🆑
2024-07-17 16:51:54 -04:00
SyncIt21andGitHub 976c830a5b Fixes runtime with storage datum & portable chem mixer beaker insertion (#84966)
## About The Pull Request
- Fixes this when hiding the storage ui
![Screenshot
(436)](https://github.com/user-attachments/assets/a5e2e512-bbf6-4b55-a7e4-01a9e89afe39)

- Fixes #84963

## Changelog
🆑
fix: fixes runtime in storage datums when hiding the ui
fix: you can insert the withdrawal beaker into the portable chem mixer
when locked
/🆑
2024-07-17 20:29:49 +02:00
add3fb9faf [MIRROR] Make storage datums actually send COMSIG_ATOM_STORED_ITEM on the parent atom instead of COMSIG_STORAGE_STORED_ITEM (#28866)
* Make storage datums actually send `COMSIG_ATOM_STORED_ITEM` on the parent atom instead of `COMSIG_STORAGE_STORED_ITEM` (#84901)

## About The Pull Request

We have a bunch of signals for storage datums, right?

https://github.com/tgstation/tgstation/blob/0eef56495487ca592a522df74aadcd1049457c62/code/__DEFINES/dcs/signals/signals_storage.dm#L8-L18
As the comments say, we send the atom ones on the parent and the storage
ones on the storage:

https://github.com/tgstation/tgstation/blob/0eef56495487ca592a522df74aadcd1049457c62/code/datums/storage/storage.dm#L544-L545
Howeeeeeeeever, we don't actually do this for storing stuff:

https://github.com/tgstation/tgstation/blob/0eef56495487ca592a522df74aadcd1049457c62/code/datums/storage/storage.dm#L447-L448
So this just swaps such over to using the right signal on the parent
atom, `COMSIG_ATOM_STORED_ITEM`.

This is technically used by the bloody spreader component, but the one
example we have of such on a storage item (the meat backpack) doesn't
seem to have a difference in functionality from this change.
So no changelog as this is not player-visible.
## Why It's Good For The Game

Should proooooobably use the right signals for the right things.

* Make storage datums actually send `COMSIG_ATOM_STORED_ITEM` on the parent atom instead of `COMSIG_STORAGE_STORED_ITEM`

---------

Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
2024-07-16 10:47:28 +05:30
_0StevenandGitHub f84e5ed713 Make storage datums actually send COMSIG_ATOM_STORED_ITEM on the parent atom instead of COMSIG_STORAGE_STORED_ITEM (#84901)
## About The Pull Request

We have a bunch of signals for storage datums, right?

https://github.com/tgstation/tgstation/blob/0eef56495487ca592a522df74aadcd1049457c62/code/__DEFINES/dcs/signals/signals_storage.dm#L8-L18
As the comments say, we send the atom ones on the parent and the storage
ones on the storage:

https://github.com/tgstation/tgstation/blob/0eef56495487ca592a522df74aadcd1049457c62/code/datums/storage/storage.dm#L544-L545
Howeeeeeeeever, we don't actually do this for storing stuff:

https://github.com/tgstation/tgstation/blob/0eef56495487ca592a522df74aadcd1049457c62/code/datums/storage/storage.dm#L447-L448
So this just swaps such over to using the right signal on the parent
atom, `COMSIG_ATOM_STORED_ITEM`.

This is technically used by the bloody spreader component, but the one
example we have of such on a storage item (the meat backpack) doesn't
seem to have a difference in functionality from this change.
So no changelog as this is not player-visible.
## Why It's Good For The Game

Should proooooobably use the right signals for the right things.
2024-07-15 14:32:17 +01:00
76a9716aa0 [MIRROR] Add interaction sounds to pill bottle (#28850)
* Add interaction sounds to pill bottle (#84924)

## About The Pull Request

https://github.com/user-attachments/assets/111ec50f-9e52-41be-925a-0fb9d880ab3d
## Why It's Good For The Game
More soundscape is good for immersion
## Changelog
🆑
sound: added pickup, dropping and opening sound for pill bottle
/🆑

* Add interaction sounds to pill bottle

---------

Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
2024-07-15 10:06:24 +05:30
FinancialGooseandGitHub 44fd12a956 Add interaction sounds to pill bottle (#84924)
## About The Pull Request


https://github.com/user-attachments/assets/111ec50f-9e52-41be-925a-0fb9d880ab3d
## Why It's Good For The Game
More soundscape is good for immersion
## Changelog
🆑
sound: added pickup, dropping and opening sound for pill bottle
/🆑
2024-07-14 20:07:11 -06:00
1df0e42efb [MIRROR] Cigarettes and vapes are no longer subtypes of masks. (#28479)
* Cigarettes and vapes are no longer subtypes of masks.

* clothing path

* clothing misses

* more

* fix donator

* more2

* more3

* Update prop_summoner.dm

* Update prop_summoner.dm

* fix

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-07-03 19:00:27 +05:30
GhomandGitHub 35484728f1 Cigarettes and vapes are no longer subtypes of masks. (#82942)
## About The Pull Request
Since non-clothing items can also be worn on several slots, there's no
need for cigarettes/vapes to be subtypes of masks anymore, since that
comes with a few oddities like #82870.

## Why It's Good For The Game
This should fix #82870, with about no side-effect aside them no longer
being edible by moths 🤢.
2024-06-29 12:44:48 -05:00
917891f97c [MIRROR] [NO GBP] Fixes critical storage issues (#28468)
* [NO GBP] Fixes critical storage issues

* Update storage.dm

* Update storage.dm

* Update storage.dm

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-06-29 16:04:39 +05:30
a04aa2f4f6 [MIRROR] Prettified storage UI (#28459)
* Prettified storage UI (#84160)

## About The Pull Request

This PR rewrites some storage UI code to make it compose itself from
multiple elements (corners and row connectors) and allow it to be
affected by player's preferred UI theme.
Also resprites it and adds variations for all themes.

Midnight (Default UI theme, the example doesn't show it very well but
the cells are rather transparent)

![image](https://github.com/tgstation/tgstation/assets/44720187/62c54417-ee38-4000-bea2-a8fab3b935c4)

Some examples of other themes. (Shows transparency much better)

![изображение](https://github.com/tgstation/tgstation/assets/44720187/9323dab9-d127-4f51-9ea0-7057bb7e022c)

![изображение](https://github.com/tgstation/tgstation/assets/44720187/368e775a-6644-4372-b66a-0e33f790b7bf)

## Why It's Good For The Game

Storage UI is ancient and doesn't look very good, nor fit the modern UI
in general.

## Changelog
🆑
code: Rewrote a portion of storage UI code to allow it to be influenced
by UI style.
image: Prettified storage UI and made it affected by UI theme.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Prettified storage UI

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2024-06-29 10:48:37 +05:30
df9daa6d32 [MIRROR] You can access your inventory when lying down (#28434)
* You can access your inventory when lying down (#84380)

## About The Pull Request
- Fixes #84373

## Changelog
🆑
fix: you can access your inventory when lying down
/🆑

* You can access your inventory when lying down

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2024-06-29 10:33:27 +05:30
SmArtKarandGitHub 9861f0e5df [NO GBP] Fixes critical storage issues (#84449)
## About The Pull Request

Closes #84447
Closes #84445

Fixes incorrect assoc list deletion, storage deletion order and some
math oopsies

## Changelog
🆑
fix: Storage no longer deletes all of its viewers upon being deleted
fix: Storage UI now renders properly
/🆑
2024-06-28 21:50:23 -07:00
6a7e6ad3b5 Prettified storage UI (#84160)
## About The Pull Request

This PR rewrites some storage UI code to make it compose itself from
multiple elements (corners and row connectors) and allow it to be
affected by player's preferred UI theme.
Also resprites it and adds variations for all themes.

Midnight (Default UI theme, the example doesn't show it very well but
the cells are rather transparent)


![image](https://github.com/tgstation/tgstation/assets/44720187/62c54417-ee38-4000-bea2-a8fab3b935c4)

Some examples of other themes. (Shows transparency much better)


![изображение](https://github.com/tgstation/tgstation/assets/44720187/9323dab9-d127-4f51-9ea0-7057bb7e022c)

![изображение](https://github.com/tgstation/tgstation/assets/44720187/368e775a-6644-4372-b66a-0e33f790b7bf)

## Why It's Good For The Game

Storage UI is ancient and doesn't look very good, nor fit the modern UI
in general.

## Changelog
🆑
code: Rewrote a portion of storage UI code to allow it to be influenced
by UI style.
image: Prettified storage UI and made it affected by UI theme.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2024-06-28 15:38:00 -07:00
SyncIt21andGitHub f42a7fe394 You can access your inventory when lying down (#84380)
## About The Pull Request
- Fixes #84373

## Changelog
🆑
fix: you can access your inventory when lying down
/🆑
2024-06-28 10:07:27 -04:00
5513052ab8 [MIRROR] Some alt & ctrl click improvements (#28391)
* Some alt & ctrl click improvements (#84203)

## About The Pull Request
Improved code quality of both so they resemble each other. Some of the
new specs are as follows

1. Moved` COMSIG_CLICK_ALT` & `COMSIG_CLICK_ALT_SECONDARY` up i.e.
before `can_perform_action()` making them pure hooks not bound by any
action checks giving components full control over them
2. Removed range check(`CAN_I_SEE`) & view check(`is_blind()`) out of
the base alt click proc. They now only apply to living mobs and don't
apply to ghosts(ghosts don't get blind & see everything) & revenants
(the range check still applies for revenants though).

This was actually a bug because these 2 checks were only meant to see if
the loot panel could be opened (as stated in
https://github.com/tgstation/tgstation/pull/83736#discussion_r1628097941)
but because they are at the top of the proc they also apply to all alt
click actions which is not intended. Also, by moving these checks down
to mob subtype levels some of the snowflake checks like this
https://github.com/tgstation/tgstation/blob/7579e0e1734ee40b33ce1fd3fc5c2dd08fe30404/code/_onclick/click_alt.dm#L23
can be removed. We should not check for subtypes within the parent type
proc but instead have subtypes override their parent procs to implement
custom behaviour
3. Removed redundant signals like` COMSIG_XENO_SLIME_CLICK_ALT` in
favour of just `COMSIG_MOB_ALTCLICKON`
4. While looking for alt click signal overrides I found alt click for
style meter was run timing, that's fixed now

## Changelog
🆑
fix: alt click runtime no more when using style meter
code: improved alt & ctrl click code
/🆑

* Some alt & ctrl click improvements

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2024-06-26 09:40:04 +05:30
SyncIt21andGitHub 9c9a5d28ff Some alt & ctrl click improvements (#84203)
## About The Pull Request
Improved code quality of both so they resemble each other. Some of the
new specs are as follows

1. Moved` COMSIG_CLICK_ALT` & `COMSIG_CLICK_ALT_SECONDARY` up i.e.
before `can_perform_action()` making them pure hooks not bound by any
action checks giving components full control over them
2. Removed range check(`CAN_I_SEE`) & view check(`is_blind()`) out of
the base alt click proc. They now only apply to living mobs and don't
apply to ghosts(ghosts don't get blind & see everything) & revenants
(the range check still applies for revenants though).

This was actually a bug because these 2 checks were only meant to see if
the loot panel could be opened (as stated in
https://github.com/tgstation/tgstation/pull/83736#discussion_r1628097941)
but because they are at the top of the proc they also apply to all alt
click actions which is not intended. Also, by moving these checks down
to mob subtype levels some of the snowflake checks like this
https://github.com/tgstation/tgstation/blob/7579e0e1734ee40b33ce1fd3fc5c2dd08fe30404/code/_onclick/click_alt.dm#L23
can be removed. We should not check for subtypes within the parent type
proc but instead have subtypes override their parent procs to implement
custom behaviour
3. Removed redundant signals like` COMSIG_XENO_SLIME_CLICK_ALT` in
favour of just `COMSIG_MOB_ALTCLICKON`
4. While looking for alt click signal overrides I found alt click for
style meter was run timing, that's fixed now

## Changelog
🆑
fix: alt click runtime no more when using style meter
code: improved alt & ctrl click code
/🆑
2024-06-25 16:06:59 -07:00
a69e8ddc13 [MIRROR] Event Horizon Anti-Existential Beam Rifle. The ultimate conclusion to the arms race and the sniper's art. (#28285)
* Event Horizon Anti-Existential Beam Rifle. The ultimate conclusion to the arms race and the sniper's art. (#83934)

## About The Pull Request

Replaces the Particle Acceleration Rifle, or the Beam Marksman Rifle,
with the Event Horizon Anti-Existential Beam Rifle.

In short, it shoots black holes.

It takes five cores to make.

It pretty much kills everything you point it at and their immediate
bystanders as well.

You can do this from the relative safety of a whole four screens away
thanks to it having a scope.

There can only ever be one vortex anomaly made in the round. The recipe,
however, always requires the maximum number of cores that can be made in
a round. If the number goes up for some reason (maybe someone wants to
add more vortex items), so does the total number of cores needed to make
an AEBR.

## Why It's Good For The Game

Firstly; the beam rifle? Awful. Jank code. Bad performance. Ancient
balancing considerations. Just too strong to bring out regularly against
specifically blobs, but completely fucking useless against anyone else.

So I'm hitting all these problems at once. I reduced a 600 line file to
less than 60. I've removed all that bad code. I've also made it
specifically unable to combat blobs at all because singularities send
blobs off to safety.

Secondly; this is maybe the first example of 'more cores = bigger
power'. The rifle was already utterly trash to have around, and I just
didn't think the way it worked currently could really excite anyone
enough to go on a big ol' quest to get it. Solution?

You will cause a shuttle call if you get this weapon.

## Changelog
🆑
add: Replaces the Particle Acceleration Rifle with the Event Horizon
anti-existential beam rifle. It shoots black holes. You can make this
in-game. That's right, YOU!
balance: Only one vortex anomaly can be made in a round.
/🆑

---------

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

* Event Horizon Anti-Existential Beam Rifle. The ultimate conclusion to the arms race and the sniper's art.

* Fix linter

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-06-21 13:14:49 +05:30
4739cedebc Event Horizon Anti-Existential Beam Rifle. The ultimate conclusion to the arms race and the sniper's art. (#83934)
## About The Pull Request

Replaces the Particle Acceleration Rifle, or the Beam Marksman Rifle,
with the Event Horizon Anti-Existential Beam Rifle.

In short, it shoots black holes.

It takes five cores to make.

It pretty much kills everything you point it at and their immediate
bystanders as well.

You can do this from the relative safety of a whole four screens away
thanks to it having a scope.

There can only ever be one vortex anomaly made in the round. The recipe,
however, always requires the maximum number of cores that can be made in
a round. If the number goes up for some reason (maybe someone wants to
add more vortex items), so does the total number of cores needed to make
an AEBR.

## Why It's Good For The Game

Firstly; the beam rifle? Awful. Jank code. Bad performance. Ancient
balancing considerations. Just too strong to bring out regularly against
specifically blobs, but completely fucking useless against anyone else.

So I'm hitting all these problems at once. I reduced a 600 line file to
less than 60. I've removed all that bad code. I've also made it
specifically unable to combat blobs at all because singularities send
blobs off to safety.

Secondly; this is maybe the first example of 'more cores = bigger
power'. The rifle was already utterly trash to have around, and I just
didn't think the way it worked currently could really excite anyone
enough to go on a big ol' quest to get it. Solution?

You will cause a shuttle call if you get this weapon.

## Changelog
🆑
add: Replaces the Particle Acceleration Rifle with the Event Horizon
anti-existential beam rifle. It shoots black holes. You can make this
in-game. That's right, YOU!
balance: Only one vortex anomaly can be made in a round.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-06-20 13:58:21 +01:00
6a8b418812 [MIRROR] Improvements for can_perform_action() (#28262)
* Improvements for `can_perform_action()` (#84006)

## About The Pull Request
The proc `can_perform_action()` now
- Accepts atoms & not just movables without runtiming. Fixes #83985
- It now uses `CanReach()` instead of `Adjacent()`. Allows you to
  - Check if the target object is placed on top & not hidden
  - Is the object inside another storage atom & such
- Properly checks for recursive locs. Before we were passing the direct
atom & not the type to `recursive_loc_check()` causing this proc to
always return true & giving us false positives. Now this proc has been
adjusted to accept both type paths & real atoms
- Removes `can_perform_turf_action()` since its now obsolete

## Changelog
🆑
fix: no more runtimes when dragging turfs onto other stuff
code: most actions now properly check for recursive locs & better
adjacency
/🆑

* Improvements for `can_perform_action()`

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2024-06-20 10:56:42 +05:30
cd2b96aba3 [MIRROR] Fixes some more climbing/buckling issues (#28259)
* Fixes some more climbing/buckling issues (#83986)

## About The Pull Request

First of all, updates `COMPONENT_CANCEL_MOUSEDROPPED_ONTO` in the same
way Melbert did for `COMPONENT_CANCEL_MOUSEDROP_ONTO`, so it will only
block other interactions if it succeeds. Second of all, makes the
climbable element compatible with buckling again, since the two
behaviors have a lot of overlap.
## Why It's Good For The Game

Fixes a bug (Fixes #83998) where the chaplain altar can't be buckled to.
There might be other, similar cases that I'm not aware of.
## Changelog
🆑
fix: The chaplain altar can once again be buckled to.
/🆑

* Fixes some more climbing/buckling issues

---------

Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com>
2024-06-20 10:56:13 +05:30
SyncIt21andGitHub 8cca0333d7 Improvements for can_perform_action() (#84006)
## About The Pull Request
The proc `can_perform_action()` now
- Accepts atoms & not just movables without runtiming. Fixes #83985
- It now uses `CanReach()` instead of `Adjacent()`. Allows you to
  - Check if the target object is placed on top & not hidden
  - Is the object inside another storage atom & such
- Properly checks for recursive locs. Before we were passing the direct
atom & not the type to `recursive_loc_check()` causing this proc to
always return true & giving us false positives. Now this proc has been
adjusted to accept both type paths & real atoms
- Removes `can_perform_turf_action()` since its now obsolete

## Changelog
🆑
fix: no more runtimes when dragging turfs onto other stuff
code: most actions now properly check for recursive locs & better
adjacency
/🆑
2024-06-19 11:47:51 -07:00
GPeckmanandGitHub 66b72dce25 Fixes some more climbing/buckling issues (#83986)
## About The Pull Request

First of all, updates `COMPONENT_CANCEL_MOUSEDROPPED_ONTO` in the same
way Melbert did for `COMPONENT_CANCEL_MOUSEDROP_ONTO`, so it will only
block other interactions if it succeeds. Second of all, makes the
climbable element compatible with buckling again, since the two
behaviors have a lot of overlap.
## Why It's Good For The Game

Fixes a bug (Fixes #83998) where the chaplain altar can't be buckled to.
There might be other, similar cases that I'm not aware of.
## Changelog
🆑
fix: The chaplain altar can once again be buckled to. 
/🆑
2024-06-19 11:10:36 -07:00
749ef43840 [MIRROR] Re-adds bagulo (remastered), 3 max bluespace cores, singulos may collapse if a third BoH is added (#28181)
* Re-adds bagulo (remastered), 3 max bluespace cores, singulos may collapse if a third BoH is added

* auto

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-06-15 18:48:54 +01:00
1f886c53f2 [MIRROR] Fix mousedrop handling on some atoms (#28167)
Fix mousedrop handling on some atoms

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-06-15 18:11:53 +01:00
df90e547cc [MIRROR] Mouse drag & drop refactored attack chain (#28156)
* Mouse drag & drop refactored attack chain

* fex

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-06-15 18:09:14 +01:00
b540aaf8ab [MIRROR] Afterattack is dead, long live Afterattack (#28128)
* Afterattack is dead, long live Afterattack

* wew

* fixes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-06-15 04:02:11 +02:00
MrMelbertandGitHub bea0930a18 Re-adds bagulo (remastered), 3 max bluespace cores, singulos may collapse if a third BoH is added (#83892)
## About The Pull Request

- BoH + BoH = Singulo 
- This time it has a unique animation associated with it spawning, it
starts off as a tear and then becomes a singulo after a short time.

- Max number of bluespace cores available to the crew reduced from 8 to
3

- Chucking a BoH into a singulo causes it to collapse in on itself.
(Supermatter charged singulos are immune.)

## Why It's Good For The Game

BoH is generally harder to acquire now which means we can bring back
soul

The max core number was reduced just to make sure it doesn't get spammed
too much. Four's a crowd.
It also might be the first time we actually hit a core limit

I thought it would be fun to make it so you can do something to stop it,
so if you're a bad enough dude and can make a third BoH, you can chuck
it into the bagulo to cause it to collapse. Singuloose generally ends
the round regardless so I thought letting people have hero moments would
be fun.

## Changelog

🆑 Melbert
balance: Re-adds Bagulo
balance: The max number of bluespace cores available to the crew has
been reduced to 3 (was: 8)
balance: Chucking a BoH into an uncharged singulo may save the station. 
/🆑
2024-06-14 20:49:31 +01:00
MrMelbertandGitHub 373cd851d8 Fix mousedrop handling on some atoms (#83971)
## About The Pull Request

One should really err on the side of caution when preventing all humans
from being mousedroppable entirely

## Changelog

🆑 Melbert
fix: Human mousedropping
/🆑
2024-06-13 23:45:58 -06:00
b6369a47b4 Mouse drag & drop refactored attack chain (#83690)
## About The Pull Request
Mouse drag & drop has been refactored into its own attack chain. The
flowchart below summarizes it

![Flowchart](https://github.com/tgstation/tgstation/assets/110812394/d92047ff-d94c-44a6-9e87-354c3d525021)

Brief summary of each proc is as follows

**1. `atom/MouseDrop()`**
- It is now non overridable. No subtype should ever touch this proc
because it performs 2 basic checks
  
a) Measures the time between mouse down & mouse release. If its less
than `LENIENCY_TIME`(0.1 seconds) then the operation is not considered a
drag but a simple click

b) Measures the distance squared between the drag start & end point. If
its less than `LENIENCY_DISTANCE`(16 pixels screen space) then the drag
is considered too small and is discarded

- These 2 sanity checks for drag & drop are applied across all
operations without fail
  
**2. `atom/base_mouse_drop_handler()`**
- This is where atoms handle mouse drag & drop inside the world. Ideally
it is non overridable in most cases because it also performs 2 checks
- Is the dragged object & the drop target adjacent to the player?.
Screen elements always return true for this case
  
- Additional checks can be enforced by `can_perform_action()` done only
on the dragged object. It uses the combined flags of
`interaction_flags_mouse_drop` for both the dragged object & drop target
to determine if the operation is feasible.
     
We do this only on the dragged object because if both the dragged object
& drop target are adjacent to the player then `can_perform_action()`
will return the same results when done on either object so it makes no
difference.

Checks can be bypassed via the `IGNORE_MOUSE_DROP_CHECKS` which is used
by huds & screen elements or in case you want to implement your own
unique checks

**3. `atom/mouse_drop_dragged()`**
- Called on the object that is being dragged, drop target passed here as
well, subtypes do their stuff here
- `COMSIG_MOUSEDROP_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc

**4. `atom/mouse_drop_receive()`**
- Called on the drop target that is receiving the dragged object,
subtypes do their stuff here
- `COMSIG_MOUSEDROPPED_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc

## Why It's Good For The Game
Implements basic sanity checks across all drag & drop operations. Allows
us to reduce code like this


https://github.com/tgstation/tgstation/blob/8c8311e624271a6f6decba8cd643b33b9904534a/code/game/machinery/dna_scanner.dm#L144-L145

Into this

```
if(!iscarbon(target))
	return
```

I'm tired of seeing this code pattern `!Adjacent(user) ||
!user.Adjacent(target)` copy pasted all over the place. Let's just write
that at the atom level & be done with it

## Changelog
🆑
refactor: Mouse drag & drop attack chain has been refactored. Report any
bugs on GitHub
fix: You cannot close the cryo tube on yourself with Alt click like
before
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-06-13 13:28:41 -07:00
MrMelbertandGitHub ff6b41aa07 Afterattack is dead, long live Afterattack (#83818)
## About The Pull Request

- Afterattack is a very simple proc now: All it does is this, and all
it's used for is for having a convenient place to put effects an item
does after a successful attack (IE, the attack was not blocked)


![image](https://github.com/tgstation/tgstation/assets/51863163/1e70f7be-0990-4827-a60a-0c9dd0e0ee49)

- An overwhelming majority of afterattack implementations have been
moved to `interact_with_atom` or the new `ranged_interact_with_atom`

I have manually tested many of the refactored procs but there was 200+
so it's kinda hard

## Why It's Good For The Game

Afterattack is one of the worst parts of the attack chain, as it
simultaneously serves as a way of doing random interactions NOT AT ALL
related to attacks (despite the name) while ALSO serving as the defacto
way to do a ranged interaction with an item

This means careless coders (most of them) may throw stuff in afterattack
without realizing how wide reaching it is, which causes bugs. By making
two well defined, separate procs for handing adjacent vs ranged
interactions, it becomes WAY WAY WAY more easy to develop for.

If you want to do something when you click on something else and you're
adjacent, use `interact_with_atom`
If you want to do something when you click on something else and you're
not adjacent, use 'ranged_interact_with_atom`

This does result in some instances of boilerplate as shown here:


![image](https://github.com/tgstation/tgstation/assets/51863163/a7e469dd-115e-4e5b-88e0-0c664619c878)

But I think it's acceptable, feel free to oppose if you don't I'm sure
we can think of another solution

~~Additionally it makes it easier to implement swing combat. That's a
bonus I guess~~

## Changelog

🆑 Melbert
refactor: Over 200 item interactions have been refactored to use a
newer, easier-to-use system. Report any oddities with using items on
other objects you may see (such as surgery, reagent containers like cups
and spray bottles, or construction devices), especially using something
at range (such as guns or chisels)
refactor: Item-On-Modsuit interactions have changed slightly. While on
combat mode, you will attempt to "use" the item on the suit instead of
inserting it into the suit's storage. This means being on combat mode
while the suit's panel is open will block you from inserting items
entirely via click (but other methods such as hotkey, clicking on the
storage boxes, and mousedrop will still work).
refactor: The detective's scanner will now be inserted into storage
items if clicked normally, and will scan the storage item if on combat
mode
/🆑
2024-06-11 21:58:09 -07:00
40768c84ea [MIRROR] Adds extra signals for storage add/remove, + minor signal doc (#27837)
* Adds extra signals for storage add/remove, + minor signal doc (#83247)

## About The Pull Request

Title.

Converts TCG decks to use signals instead of a proc override, as is
better practice.
## Why It's Good For The Game

It's generally better practice to not snowflake behavior like this onto
the storage itself, instead using signals/procs.
Also, its good to have parity between add/remove in signals.
## Changelog
🆑
code: New signals for atom storage remove and insert
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Adds extra signals for storage add/remove, + minor signal doc

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2024-05-25 20:53:30 +02:00
ff0b0c6c74 Adds extra signals for storage add/remove, + minor signal doc (#83247)
## About The Pull Request

Title.

Converts TCG decks to use signals instead of a proc override, as is
better practice.
## Why It's Good For The Game

It's generally better practice to not snowflake behavior like this onto
the storage itself, instead using signals/procs.
Also, its good to have parity between add/remove in signals.
## Changelog
🆑
code: New signals for atom storage remove and insert
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-05-24 15:40:38 +01:00
61c379045c [MIRROR] lavaland raptors (#27746)
lavaland raptors (#82537)

adds raptors to lavaland. these are creatures that have been created
through countless xenobiological experiments by nanotrasen to breed an
animal that can withstand the harsh conditions of lavaland and aid
miners. theres now a new ranch miners can access bottom right to the
mining base

![ranch](https://github.com/tgstation/tgstation/assets/138636438/20d9e358-15a5-48e2-aee3-9364ca139e43)
this ranch starts somewhat empty as most raptors have escaped
containment and are now scattered all across lavaland, u can find them
and return them to ur ranch.

in order to tame a raptor, u first need to prove to it that ur a capable
master. when u try to ride it, a little minigame prompt will pop up

![minigame](https://github.com/tgstation/tgstation/assets/138636438/dcc13102-7100-40c8-ae7a-089cd4daf868)
in this game, the bird's icon rapidly changes direction and u have to
quickly click the arrow thats OPPOSITE to the direction its facing
several times before the direction changes. if you fail 3 times itll
knock you off and run away, however if u win it will deem u a suitable
master and listen to your orders.

There's many different breeds of raptors you can find across lavaland,
all with different capabilities:
red raptors: these excel at combat and can be very useful for dealing
with lavaland mobs or defending the node drone
yellow raptors: are very speedy mounts, theyll get u from point A to
point B in record time
green raptors: they are the tankiest type of raptor and are very good
miners. while mounted, they will clear any rock walls in their path
purple raptors: can store items in them. they have a decent storage size
allowing players to carry more items across trips
white raptors: are able to heal other injured raptors. having one in ur
party would be very useful as they can nurse the combat raptors back to
full health when they need it
blue raptors: produce very nutritious milk with healing capabilities.
having 1 or 2 of these back at ur ranch would be very useful
black raptors: by far the rarest breed, its very unlikely that ull be
able to get one of these, but in the case u do, they have the combat
capabilities of the red raptor, speed of the yellow raptor, and
tankiness of the green raptor.

Breeding different colored raptors together can net u an entirely new
colored raptor. each breed has atleast 1 guaranteed combination of
parents that it will result out of.

you will also need to maintain a good friendship bond with ur raptors,
this is done by feeding them, grooming them, and petting them. u can see
the strength of ur bond by SHIFT clicking them. more hearts indicate a
stronger bond

![hearts](https://github.com/tgstation/tgstation/assets/138636438/5662c5a7-2df3-4f98-99f4-a11faa17b569)
having higher friendship bonds means ur raptors will perform better in
combat, and in the case of blue raptors, they will produce more milk.
Maintaining friendship bonds with baby raptors and keeping them happy
will also encourage them to grow faster

U can also analyze raptors using the new raptor-dex device available at
ur ranch

![pokedex](https://github.com/tgstation/tgstation/assets/138636438/82b92c0c-b7db-4a0d-997e-384a69c0ecbe)
the inherit modifiers indicate how strong this raptor's offspring will
be. raptors inherit attack and health stats from both their parents,
breeding raptors with higher inherit modifiers means the offspring will
be stronger.

raptors will also inherit some traits from their parents that will
change how they will act around u and around other raptors, some of them
being:
Playful: raptors will play with their masters and tease them
motherly: raptors will care for baby raptors, this will encourage baby
raptors to grow quicker
depressed: means its hard to keep this raptor happy and friendship bonds
will deteriorate faster if not given enough care.
coward: makes them flee combat if severly injured, ditching u to the
wolves
trouble maker: makes them attack other raptors at the ranch. however,
trouble maker raptors will not attack other trouble maker raptors,
instead they will form posses and bully raptors together. it might be a
good idea to isolate them from the other raptors

raptors primarily consume ores. to feed raptors, you need to place ore
into the food troughs at the ranch. they are too civilized to eat ores
off the ground or directly from ur hand, they will only eat it if its in
their trough

![trough](https://github.com/tgstation/tgstation/assets/138636438/70723cc7-5743-4ace-9955-4307879e7a83)

beautiful raptor sprites by spessmenart! (rest are codersprites)

adds a new layer to lavaland mobs, and gives miners new interesting
tools and ways to tackle the challenges of lavaland.

🆑 sheets, spacemenart, ben10omintrix, goofball, infrared baron, aofie
add: adds lavaland raptors and the raptor ranch
/🆑

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
2024-05-18 11:40:59 -04:00
761b14ef7c lavaland raptors (#82537)
## About The Pull Request
adds raptors to lavaland. these are creatures that have been created
through countless xenobiological experiments by nanotrasen to breed an
animal that can withstand the harsh conditions of lavaland and aid
miners. theres now a new ranch miners can access bottom right to the
mining base

![ranch](https://github.com/tgstation/tgstation/assets/138636438/20d9e358-15a5-48e2-aee3-9364ca139e43)
this ranch starts somewhat empty as most raptors have escaped
containment and are now scattered all across lavaland, u can find them
and return them to ur ranch.

in order to tame a raptor, u first need to prove to it that ur a capable
master. when u try to ride it, a little minigame prompt will pop up

![minigame](https://github.com/tgstation/tgstation/assets/138636438/dcc13102-7100-40c8-ae7a-089cd4daf868)
in this game, the bird's icon rapidly changes direction and u have to
quickly click the arrow thats OPPOSITE to the direction its facing
several times before the direction changes. if you fail 3 times itll
knock you off and run away, however if u win it will deem u a suitable
master and listen to your orders.

There's many different breeds of raptors you can find across lavaland,
all with different capabilities:
red raptors: these excel at combat and can be very useful for dealing
with lavaland mobs or defending the node drone
yellow raptors: are very speedy mounts, theyll get u from point A to
point B in record time
green raptors: they are the tankiest type of raptor and are very good
miners. while mounted, they will clear any rock walls in their path
purple raptors: can store items in them. they have a decent storage size
allowing players to carry more items across trips
white raptors: are able to heal other injured raptors. having one in ur
party would be very useful as they can nurse the combat raptors back to
full health when they need it
blue raptors: produce very nutritious milk with healing capabilities.
having 1 or 2 of these back at ur ranch would be very useful
black raptors: by far the rarest breed, its very unlikely that ull be
able to get one of these, but in the case u do, they have the combat
capabilities of the red raptor, speed of the yellow raptor, and
tankiness of the green raptor.

Breeding different colored raptors together can net u an entirely new
colored raptor. each breed has atleast 1 guaranteed combination of
parents that it will result out of.

you will also need to maintain a good friendship bond with ur raptors,
this is done by feeding them, grooming them, and petting them. u can see
the strength of ur bond by SHIFT clicking them. more hearts indicate a
stronger bond

![hearts](https://github.com/tgstation/tgstation/assets/138636438/5662c5a7-2df3-4f98-99f4-a11faa17b569)
having higher friendship bonds means ur raptors will perform better in
combat, and in the case of blue raptors, they will produce more milk.
Maintaining friendship bonds with baby raptors and keeping them happy
will also encourage them to grow faster

U can also analyze raptors using the new raptor-dex device available at
ur ranch

![pokedex](https://github.com/tgstation/tgstation/assets/138636438/82b92c0c-b7db-4a0d-997e-384a69c0ecbe)
the inherit modifiers indicate how strong this raptor's offspring will
be. raptors inherit attack and health stats from both their parents,
breeding raptors with higher inherit modifiers means the offspring will
be stronger.

raptors will also inherit some traits from their parents that will
change how they will act around u and around other raptors, some of them
being:
Playful: raptors will play with their masters and tease them
motherly: raptors will care for baby raptors, this will encourage baby
raptors to grow quicker
depressed: means its hard to keep this raptor happy and friendship bonds
will deteriorate faster if not given enough care.
coward: makes them flee combat if severly injured, ditching u to the
wolves
trouble maker: makes them attack other raptors at the ranch. however,
trouble maker raptors will not attack other trouble maker raptors,
instead they will form posses and bully raptors together. it might be a
good idea to isolate them from the other raptors

raptors primarily consume ores. to feed raptors, you need to place ore
into the food troughs at the ranch. they are too civilized to eat ores
off the ground or directly from ur hand, they will only eat it if its in
their trough

![trough](https://github.com/tgstation/tgstation/assets/138636438/70723cc7-5743-4ace-9955-4307879e7a83)

beautiful raptor sprites by spessmenart! (rest are codersprites)

## Why It's Good For The Game
adds a new layer to lavaland mobs, and gives miners new interesting
tools and ways to tackle the challenges of lavaland.

## Changelog
🆑 sheets, spacemenart, ben10omintrix, goofball, infrared baron, aofie
add: adds lavaland raptors and the raptor ranch
/🆑

---------

Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
2024-05-16 19:54:00 -07:00
JeremiahandSkyratBot 3a6aab6f27 Quick equip no longer throws balloon alerts 2024-05-08 18:14:46 -04:00
JeremiahandGitHub 177a2edfe5 Quick equip no longer throws balloon alerts (#83117)
## About The Pull Request
Pressing E to quick equip would throw balloon alerts when it iterates
over storage that's full
Especially noticeable on round start engies because their toolbelt gets
checked
## Why It's Good For The Game
Less noise
## Changelog
🆑
fix: The quick equip 'E' hotkey shouldn't warn if one of your bags is
full anymore
/🆑
2024-05-09 00:12:20 +02:00
JeremiahandSkyratBot 438ccc1059 Detective buff: Fixes detective's candy dispenser (#83004)
## About The Pull Request
Alt click was broken on detective's hat. Couldn't draw candy corn, oh
no!

This issue is somewhat rightly caused from the alt click refactor, as
its aim was to prevent double interactions from one click. In this case,
both withdrawing morsels and opening storage at the same time
2024-05-03 03:10:05 +00:00
JeremiahandGitHub 79d858a025 Detective buff: Fixes detective's candy dispenser (#83004)
## About The Pull Request
Alt click was broken on detective's hat. Couldn't draw candy corn, oh
no!

This issue is somewhat rightly caused from the alt click refactor, as
its aim was to prevent double interactions from one click. In this case,
both withdrawing morsels and opening storage at the same time
2024-05-02 22:09:30 -05:00