Commit Graph

38603 Commits

Author SHA1 Message Date
VexingRaven
45fc223d4c Fixes Soul Scythe being able to get to Centcom by moving down on the bottom Z-level (#71171)
## About The Pull Request

`/obj/item/soulscythe/relaymove()` was using `get_step()` which doesn't
understand our multi-z system and was happily trying to move Z - 1 which
is Centcom. I'm still not really sure I understand why move() allowed
the scythe to just move right through the floor in this case, I think
moving to turfs with `density = 0` is also behaving strangely and just
skipping some checks that should keep it from moving through the floor,
but to be honest I don't fully understand the move chain and just
changing to `get_step_multiz()` at least keeps the scythe from going to
Z-levels it shouldn't.
## Why It's Good For The Game

Whilst it is fun for the scythe to go on an adventure to forbidden
Z-levels, admins probably don't appreciate these adventures so much.
## Changelog
🆑 VexingRaven
fix: Soul Scythes can no longer phase through the floor into Centcom.
/🆑
2022-11-15 09:49:53 +01:00
ShizCalev
4f48981d6a Fixes microwaves shitting out their upgraded parts after cooking stuff (#71087)
Fixes #71063

Fixed microwave component parts being added to the ingredients list.
Also converted some stuff over to balloon messages
🆑
fix: Microwaves no longer shit out their upgraded parts when cooking
stuff.
/🆑
2022-11-15 07:01:22 +00:00
tattle
50dfea3fe1 [NO GBP] Only log the death details of mobs with keys (#71166)
## About The Pull Request
Makes it so that keyless mobs don't show a full death stat readout.

Also removes the Last Attacker. In observing a round with these changes,
it turned out being less useful than I had hoped, since last attacker
misses a lot of nuance (and it's just better to get the full picture
from attack logs).

## Why It's Good For The Game

![image](https://user-images.githubusercontent.com/66640614/200449976-10882108-060b-47b5-adfa-9a85282d79b0.png)

This is really annoying

## Changelog

🆑 tattle
admin: death details of keyless mobs (like xenobio monkeys) are now
omitted from investigate deaths
/🆑

Co-authored-by: tattle <article.disaster@gmail.com>
2022-11-15 06:08:05 +00:00
san7890
2d3e7f2383 Prettifies adminmoreinfo into a neater Examine Block (#71170)
Updates the Adminmoreinfo button (also known as the '?' button)
to be cleaner and easier to understand/read, and also makes it
an examine block so it doesn't blend in with the rest of chat.
2022-11-15 01:07:38 -05:00
san7890
4e171ea2b5 Properly Attributes Handle_Automated_Speech Logging (#71207)
## About The Pull Request

Hey there,

So basically, you would see logs like this:

```txt
[2022-11-10 21:24:38.571] SAY: *no key*/(Bear) "HSSSSS" FORCED by poly (Delta Outpost Storage Lot (56,181,5))
```

That's a ~~bear~~ cat. Not Poly. What the fuck? Let's just change the
name to be more accurate, kinda like how basic mobs do it:

```txt
[2022-11-10 21:25:46.381] SAY: *no key*/(mouse) "SQUEAK!" FORCED by AI Controller (Icemoon Underground (104,192,2))
```

See! AI Controller makes more sense! NOT FUCKING POLY
## Why It's Good For The Game

IT'S A ~~BEAR~~ cat!!! Let's have poly forced speech be forced by poly
and have the other instances of this type of speech actually reflect the
type of proc it's called from.
## Changelog
🆑
admin: Whenever a simple_animal is forced to speak via
handle_automated_speech, their "FORCED" variable in logs should
appropriately represent the proc it was called from- instead of being
"poly" for whatever reason.
/🆑
2022-11-15 05:22:05 +00:00
AnturK
4d6a8bc537 515 Compatibility (#71161)
Makes the code compatible with 515.1594+

Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword

And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.

@tgstation/commit-access Since the .proc/stuff is pretty big change.

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-15 03:50:11 +00:00
tattle
5ad52146cd Ports fire blossoms (#71242)
Adds fire blossoms from White Sands/Shiptest, a glowing lavaland plant by Tiramisu and TetraZeta.
2022-11-14 22:33:25 -03:00
axietheaxolotl
305669fe55 R[D]evamp - Secret Door (#71208)
Adds a Brand-new RD labcoat and beret. Along with a pair of black gloves and a set of jackboots given to them.
This PR also resprites the RD turtleneck and skirtleneck.
2022-11-14 22:28:12 -03:00
Mothblocks
13a1939eee Crop moth wings to 32x32, saving about 0.18s in init time (yes really) (#71243)
Crops all moth wings to 32x32 and saves the very expensive Crop cost in the preference icon generation for moth wings.
2022-11-14 22:26:28 -03:00
Andrew
27a3b4a8a9 Cleanbot fixes and adjustments (#71159)
## About The Pull Request

Fixed cleanbots not prioritizing adjacent tiles.
Made them able to clean 1 tile away (they have that arm, just like
medibots), enabling them cleaning under the tables.
Expanded the list of cleanable objects for cleanbots with missing
dirt/trash types.

Cleanbots had non-working code that made them clean very inefficiently,
running around, instead of going 1 by 1 tile next to them. Now they do a
bit better job at this and also don't leave the mess under the
tables/machinery.
2022-11-14 20:19:52 -05:00
Iamgoofball
1e63a23b83 Fixes a server lagging bug with igniters. (#71224)
🆑 Iamgoofball
fix: You can no longer attach igniters to igniters.
/🆑

Fixes #71222
Players were using this to lag the server.

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-14 09:27:27 +13:00
tattle
ad5debaaa1 Add investigate_deaths (#71112)
## About The Pull Request
Adds INVESTIGATE_DEATHS, an investigate category intended to better show
causes of death.


![image](https://user-images.githubusercontent.com/66640614/200142461-c17b5e51-1116-4eef-bbfb-49bc024c0953.png)


![image](https://user-images.githubusercontent.com/66640614/200147306-09bef76e-68c6-4f0a-bdf9-0211eb274e66.png)

Also makes suicide_act take a `mob/living` as an argument instead of a
`mob`, and some minor style improvements since apparently I hate
atomicity.

## Why It's Good For The Game
Inspired by a mysterious death and dusting. More logging and leads for
admins investigating deaths.

Also fixes #59028

## Changelog
🆑 Tattle
admin: added investigate deaths to shed some more light on unusual
demises, dustings, and gibbings
/🆑

Co-authored-by: tattle <article.disaster@gmail.com>
2022-11-07 16:22:37 -08:00
TiviPlus
3788c593fb [s] Fix gygax speed exploit (#71113)
About The Pull Request

minor whoopsie with action create/del
Changelog

cl
fix: fixed a gygax speed exploit
/cl
2022-11-08 10:01:22 +13:00
MrMelbert
c1868df04c Removes unreachable organ forcemove override (#71124)
## About The Pull Request

Removes an override of forcemove for unremovable organs

I do not think this code is reachable anymore. Organs don't really get
forcemoved out of a mob's body without first removing it from the owner.
Feel free to correct me and point me to where an organ is forcemoved
from a body without `Remove()` being called first.

## Why It's Good For The Game

Doesn't do anything?

## Changelog

🆑 Melbert
code: Unremovable organs that are forcemoved out of a mob with an owner
no longer self terminate
/🆑
2022-11-07 11:28:09 -08:00
Fikou
78124de4c1 concussive gauntlets now launch you away from gibtonite and mine basalt (#71108)
when you mine gibtonite using concussive gauntlets, you now get launched
away from it, so you wont get hit by the explosion
also lets them mine basalt for glass
2022-11-07 14:07:51 -05:00
jimmyl
fb6b5905b3 Fixes plenty instances of 1-tile foam (#71132)
## About The Pull Request
All of these from what i heard were supposed to make all foam with range
"4" but most of these ranges were stupidly big so

Fixes 1 tile foam that was apparently not fixed after the foam refactor
in:
AI Upload Foam Dispensers, with a range of "4"
Hygienebot death, with a range of "2"
Clown cars taking damage, with a range of "4" and 25u of space lube.
(henk)
Clown plasmaman envirosuits extinguishment, with a range of "4" and 15u
of space lube. (hunke)
Soap suicide, with a range of "1"
Emagged cleanbots wetting the floor and making foam, with a range of "2"
Firebots when exposed to an atmos fire, firefighting foam with a range
of "3"

![image](https://user-images.githubusercontent.com/70376633/200168492-640b2517-b747-43cd-b45f-c2168a915d63.png)

## Why It's Good For The Game

Fixes #68441
Makes firebots less ass
Also barely-functional code bad, functional code good

## Changelog
🆑
fix: Fixes 1 tile foam in Foam Dispensers,Clown Cars, Hygiene
Bots,Firebots, Soap Suicide, Emagged cleanbots, and the clown plasmaman
envirosuit
/🆑
2022-11-07 09:34:48 -08:00
VexingRaven
a91e732cc2 [NO GBP] More balloon alerts for guns + fixes a wrong alert (#71136)
## About The Pull Request

Turns out I missed a few to_chats in #70398. Also I accidentally
inverted one so it said close the cover instead of open it. Oops!
## Why It's Good For The Game

Same reason as the original PR, balloon alerts are handy for stuff you
care about right now and not in 5 minutes. Also they should probably not
tell you to do the opposite of what you actually need to do.
## Changelog
🆑 VexingRaven
fix: Fixed a few balloon alerts for guns and moved a few more chat
messages to balloon alerts
/🆑
2022-11-07 09:33:29 -08:00
Thunder12345
762e9f06cf Refactors sound toggle prefs away from legacy toggles, introduces a new sound pref for jukeboxes (#71040)
## About The Pull Request

Migrates sound toggle prefs away from legacy toggles, and changes all
related preference checks to the modern form. Cleans up unnecessary
defines linked to the old prefs. Increments the minimum save file
version so a piece of old sound related code can be neatly removed. (The
minimum version hasn't changed in two years anyone who hasn't played in
at least that long probably doesn't even remember they had prefs saved)

Splits off jukebox music into its own preference distinct from
instruments. (This was actually the change that brought about this whole
PR the rest of the igration just made sense to do at the same time)

## Why It's Good For The Game

More granularity in sound preferences is good. It is quite reasonable
for players to want to hear normal volume and largely unobtrusive
instruments, without also being subjected to the aural torture of the
jukebox. As implementing this wothout creating an unwelcome extra legacy
toggle already required setting up a non-legacy sound toggle, it is most
reasonable to migrate the other sounds at the same time.

## Changelog
🆑
qol: Jukebox music can be controlled by a new seperate preference, and
is no longer linked to the instrument sound preference option.
refactor: Sound related toggle preferences have been migrated away from
the legacy system. Pre-existing preferences should be safely migrated
but players are advised to check.
/🆑
2022-11-07 08:45:40 -08:00
Time-Green
119ee30000 Zombies can now succumb (#70883)
fixes #70877

Mobs with NODEATH can now succumb if they choose. The only mobs with
NODEATH are all zombies, memento mori and penthrite, of which zombies
are the only one that can ever enter hardcrit. I think it's fair to let
them die if they want.

High-functioning zombies can't succumb by whispering, but pressing the
succumb UI without whispering will succumb you

🆑
tweak: Mobs with NODEATH can now succumb (this is literally only
zombies)
/🆑
2022-11-06 22:21:15 -08:00
san7890
4dfa21f534 UX Update To Saving Ordnance Log Recordings (#71052)
When saving Experiment Log Recording Data to a data disk on either
the Tachyon Doppler or the Tank Compressor, the UI will now say 'save to Disk' instead of 'Print', letting you know that it isn't printing a paper.
2022-11-06 22:10:11 -05:00
Sealed101
232a643410 Adds a special suicide to the Experi-Scanner (#71103)
## About The Pull Request
Adds a `suicide_act` to the Experi-Scanner.

<details>
<summary>LiveLeak footage</summary>


https://user-images.githubusercontent.com/75863639/200129319-d112c8ea-e9f6-49a2-872b-8c2625f97e67.mp4

</details>

The victim's brain also gets placed into the resulting toilet's cistern.

<details>
<summary>Bodycam footage from the clean-up crew</summary>


https://user-images.githubusercontent.com/75863639/200129302-4b9b37fe-9c02-4712-8502-e4732b9258f5.mp4

</details>

The resulting toilet will not drop meat sheets when deconstructed,
leaving only a pile of bones behind.

_might add some bone crunching sounds later_

## Why It's Good For The Game
More variety is nice. A use for the experiscanner-closed icon. An
ultimate sacrifice for a single toilet that you can scan towards an
experiment.

## Changelog
🆑
add: Added a special suicide to the Experi-Scanner
/🆑
2022-11-06 12:37:16 -08:00
san7890
f45347bff2 NtOS Emojipedia - PDA Emoji Messaging For All (#70829)
An Emojipedia app has been added to tablets, given to Mimes and Curators by default, allowing anyone to know all emojis. Additionally, emojis can be used in tablets by every job now.
2022-11-06 06:06:50 -05:00
Mothblocks
d9aab85f3c Save 0.28s of init time by removing an unnecessary timer in light/LateInitialize (#71059)
Replaces a timer with just calling the proc directly. This saves 0.28s
of making timer events.

This timer exists as an artifact of being a `spawn (1)` since r4407.
Local testing suggests it is completely unnecessary (lights work, lights
break, new lights show)
2022-11-06 05:53:36 -05:00
Dani Glore
d42115b2c4 Add: Deaf Personnel Pin (#71073)
This PR contains a single small addition: The deaf personnel pin/accessory for users of the Deaf quirk. I changed the quirk type to `item_quirk` in order to easily grant the pin to the user. Upon spawning, the quirk will put a deaf personnel pin in their backpack or hands, allowing them to pin it to their uniform as they please.
2022-11-06 05:42:17 -05:00
ShizCalev
f54994c260 Fixes some monkey business with monkies trying to give items to mobs with no hands. (#71086)
held_items is only populated if the mob is able to hold things. In this case, lizards (and most simple / basic mobs) don't have hands, so it's just an empty list. Fixed that at the `/mob` level.

Also made the giving logic a little more robust to handle mobs mobs not actually wearing anything as well.
2022-11-06 05:37:33 -05:00
ShizCalev
9ebdbe1b3d randomizes the pixel offset of stuff when it comes out of a microwave (#71091)
Randomizes the pixel offset of stuff when it comes out of the microwave
2022-11-06 05:24:27 -05:00
LemonInTheDark
6745d4fbee Ensures bunkering someone doesn't runtime due to a divide by 0 error (#71081)
## About The Pull Request
HAHHHHHHHHHHHHHHHH
2022-11-05 20:51:28 -07:00
GoldenAlpharex
612d13afca Fixes the messenger app not being responsive when certain buttons are clicked (#71077)
## About The Pull Request
The buttons to toggle the ringer, to toggle the sending/receiving and
the button to see message history all stopped being responsive, because
the information they were changing when pressed was wrongly kept in
`ui_static_data()` rather than `ui_data()`. Now, they're back in
`ui_data()`, and behave as expected once again.

## Why It's Good For The Game
A non-responsive TGUI interface is probably the saddest thing to see.

## Changelog

🆑 GoldenAlpharex
fix: SpaceMessenger was now updated to 6.4.8, bringing you more
responsiveness than ever (so long as ever is shorter than seven days
ago)!
/🆑
2022-11-05 20:47:38 -07:00
Fikou
f31eea2bcb makes flight potions use reagent filling overlays (#71068)
## About The Pull Request
previously flight potions directly overrode icon state, and also didnt
have a set reagent filling icon so it just resulted in the weird bottle
overlay
now they use them properly. also changes the color of the flight potion
reagent so it looks the same, since it used to be white

## Why It's Good For The Game
shit dont look stupid anymore

## Changelog
🆑
fix: flight potions no longer have white bottle overlays
/🆑
2022-11-05 20:44:27 -07:00
John Willard
4b9804e164 Fixes detomatix's name (#71075)
## About The Pull Request

I accidentally replaced it with 'attacking_item' because i am demented
and can't stop abusing my clipboard.

## Why It's Good For The Game

🛩️ 

## Changelog

🆑
fix: Detomatix cartridges are no longer called attacking items.
/🆑
2022-11-05 20:40:58 -07:00
Jacquerel
140c12b580 Giant Spider action fixes & Action feedback (#70848)
I went into this just planning on fixing some weird behaviour with
spider buttons and ended up touching a lot of files.

Specifically this is because some of the actions used by Giant Spiders
would print feedback messages in IsAvailable, which was bad because this
is called every time the button updates and so would (for example) print
a bunch of messages about eggs existing when you spawned as a
broodmother because the lay eggs button would be checking for that when
it was granted to you.
The feedback _is_ useful though so I've implemented a pattern used in
Spell where we just pass a flag describing whether we want to print it
or not, which is generally set to true in Trigger() or if the player
physically pressed the button.

A side effect of this is that any action with usability flags (such as
"not when handcuffed") will now tell you why it is failing if you click
it while it is unusable, which is nice.

The spider changes are largely to make sure that their buttons are
tinted at the correct time, they were previously tinted red as if
inactive at almost all times due to the icon not being updated when
relevant conditions changed.
This necessitated adding a new signal (two actually) sent when a
do_after begins and when it ends (for any reason, including premature
interruption).

I also fixed a quirk where the Wrap ability had a permanent 'active'
outline after using it once (the icon states were inverted).

I also fixed a bug where you could just lay infinite enriched eggs after
eating one guy, which is not how the game describes it as working.
I looked up the PR adding it
(https://github.com/tgstation/tgstation/pull/54451) and one egg per kill
seems to be how it is supposed to work.

And finally I changed a few nurse spider to_chats into balloon_messages,
on the principle that they're not information which needs to stick
around for more than a few seconds.
2022-11-05 22:09:17 -05:00
Fikou
6de814a3db fixes cursed katana not spawning (#71065) 2022-11-05 21:16:56 -05:00
Sealed101
4ad330b585 Adds Sabrage (#70755)
This PR adds an interaction to champagne bottles that allows the user to
pull off the cork with an edged (for code purposes, sharp) item. The
sharper the item, the better your chance is to pull the stunt off.
Minimum force is 5, which lets you do it with a captain's pen, for
instance. It's slower than just removing the cork by hand, as to
simulate the player removing the foil before taking the swing. Heads of
staff get a +20% chance to succeed due to being officers in some
capacity. A skillchip that can be bought from the Library Play Room
vendor increases the chance by +35%. Failing the stunt will smash the
bottle in your hands, spilling the contents all over you. This will
produce a bottle with the neck broken off, instead of its bottom.

Pulling the stunt off provides a weak mood buff for the user, and a
weaker mood buff for any witnesses. However, if someone else pulls the
sabrage off after you, you will get your success buff removed. Think of
it like pulling any other stunt and challenging someone else to do it,
only for them to succeed as well. Makes you bitter, doesn't it? Failing
the stunt also produces a weak mood debuff to the user.
2022-11-05 17:54:39 -05:00
exymian
5618bee57a Fixes proximity sensors to work on 0 tile now (#70859)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
Previously it didn't work while it was supposed to, setting it up to 0
tile range would make it useless and not trigger. Now it does.

https://www.youtube.com/watch?v=ouseFRoEgD8

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

## Why It's Good For The Game
Fixes are good for the game
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog
🆑
fix: fixed the prox sensor
/🆑
2022-11-05 12:11:49 +01:00
Mothblocks
910b97cd37 Save 0.4s by shaving off a lot of smaller init costs (#71007)
Starts shaving off a lot of less than 0.1s performance killers by, in
nearly every case, just writing better code.

Numbers are amount saved.

- /obj/machinery/bluespace_vendor/LateInitialize -> 29.4ms
Changes a loop over all machines to a specialized list.

- /obj/structure/table/glass/Initialize -> 42.53ms
Stops every table from initializing glass shards and table frames before
any destruction.

- /obj/structure/chair/Initialize -> 24.64ms
Removes an unnecessary addtimer that existed for chairs that weren't
anchored in emergency shuttles. Didn't do anything.

- /datum/orderable_item/New -> 44.3ms 
Instead of initializing every item to get its desc, just uses initial.
Added a unit test to make sure none are dynamic.

- /obj/machinery/computer/slot_machine/Initialize -> 26.19ms
Currently goes through every coin subtype, creates it, calls a proc,
then qdels it. Changes that to only run once. Could be optimized further
by making the coin info on a datum to avoid creating the object, but it
currently sits at 7.82ms, far below worth caring about for now.

- /obj/machinery/door_buttons/airlock_controller/findObjsByTag -> 3.51ms
Loops over just doors instead of typechecking airlock in machines.

- /obj/structure/closet/Initialize -> 60.57ms
Moves the code for taking everything on the tile from a next-tick timer
to LateInitialize.

- /obj/machinery/rnd/experimentor/Initialize -> 36.92ms
Changes a list that is generated by going through every item in the game
and getting information from a large amount of them to only run when
needed.

- /obj/structure/tank_dispenser/Initialize -> 20.81ms
No longer initializes every tank in it right away, only when needed.

- /obj/machinery/telecomms/LateInitialize -> 16.63ms
Removes `urange` to instead just loop over telecomms machines and check
distance. There's not that many of them.

- /mob/living/simple_animal/hostile/carp/cayenne/Initialize -> 3.17ms
Defers a GAGS overlay creation until its needed. BTW GAGS is
*horrendous* on init costs, and is the root cause for a lot of pretty
terrible performance. I investigated precompiling but the gains weren't
crazy, but likely could be the more stuff is GAGS'd.

- /turf/open/floor/engine/cult/Initialize -> 14.64ms
Temporary visual effect that is created is no longer done on mapload,
since nobody will see it.

- /datum/techweb/specialized/autounlocking/proc/autounlock -> 5.55ms
Changes some loops to shorter checks. This whole proc is pretty bad and
it's still 14.21ms for 17 calls.

- /matrix/New -> 13.41ms
- /matrix/proc/Translate -> 42.06ms
~~Changed the mineral matrice to only generate once, then take it from a
static.~~ An extra ~0.05s taken off by avoiding setting icon and
transform every Initialize.
2022-11-05 02:15:40 -07:00
LemonInTheDark
5b4ba051a0 Builds logic that manages turfs contained inside an area (#70966)
## About The Pull Request

Area contents isn't a real list, instead it involves filtering
everything in world
This is slow, and something we should have better support for.

So instead, lets manage a list of turfs inside our area. This is simple,
since we already move turfs by area contents anyway

This should speed up the uses I've found, and opens us up to using this
pattern more often, which should make dev work easier.

By nature this is a tad fragile, so I've added a unit test to double
check my work

Rather then instantly removing turfs from the contained_turfs list, we
enter them into a list of turfs to pull out, later.
Then we just use a getter for contained_turfs rather then a var read

This means we don't need to generate a lot of usage off removing turf by
turf from space, and can instead do it only when we need to

I've added a subsystem to manage this process as well, to ensure we
don't get any out of memory errors. It goes entry by entry, ensuring we
get no overtime.
This allows me to keep things like space clean, while keeping high
amounts of usage on a sepearate subsystem when convienient

As a part of this goal of keeping space's churn as low as possible, I've
setup code to ensure we do not add turfs to areas during a z level
increment adjacent mapload. this saves a LOT of time, but is a tad
messy

I've expanded where we use contained_turfs, including into some cases
that filter for objects in areas. need to see if this is sane or not.

Builds sortedAreas on demand, caching until we mark the cache as
violated

It's faster, and it also has the same behavior

I'm not posting speed changes cause frankly they're gonna be a bit
scattered and I'm scared to.
@Mothblocks if you'd like I can look into it. I think it'll pay for
itself just off `reg_in_areas_in_z` (I looked into it. it's really hard
to tell, sometimes it's a bit slower (0.7), sometimes it's 2 seconds
(0.5 if you use the old master figure) faster. life is pain.)

## Why It's Good For The Game

Less stupid, more flexible, more speed

Co-authored-by: san7890 <the@san7890.com>
2022-11-04 20:13:54 -07:00
Comxy
574cc48b6b Conveyor speed input fix (#70898)
## About The Pull Request
Fixes a simple text input bug. Earlier you couldn't type in 0.2 for
example because it would get rounded while this is the original speed.
Now it will not get rounded.

## Why It's Good For The Game

## Changelog


🆑
fix: Fixes conveyor speed input.
/🆑
2022-11-04 17:04:54 -07:00
Hatterhat
6ada00620d makes mining point cards reusable (#70953)
## About The Pull Request

![image](https://user-images.githubusercontent.com/31829017/199078509-678b7139-f99a-4f10-b716-33ccb8faef7b.png)

![image](https://user-images.githubusercontent.com/31829017/199137091-9555afde-5d1b-4b3e-a3a0-ec21a7acf7f3.png)

![image](https://user-images.githubusercontent.com/31829017/199078524-d71831dd-b164-40f3-92d0-8446c0976e3c.png)
Mining point cards are now reusable sources of point storage and
transfer, because printing a billion cards to transfer points was pretty
dumb and I disagree with it fundamentally.

## Why It's Good For The Game
No longer will shaft mining spessmen have to print twenty point cards to
line their friend's pockets with vendor gear of their choice, or
whatever.

also because I firmly believe nobody actually liked printing that many
point cards I mean goddamn what a hassle -

## Changelog
🆑
qol: Mining point cards are now reusable, allowing user-set transfers of
mining points to and from the point card itself.
/🆑

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-04 09:28:08 +00:00
ArcaneMusic
7e01649aae Fixes the universal scanner's sprites and adds contextual screentips. (#70926)
## About The Pull Request

This PR fixes a minor icon_state name discrepancy when switching to the
sales tagger mode (I forgot to add a space to the icon_state, which
carried over to the radial).

I then read #70909 which brings up several issues with the item, and
after actually testing it, everything works as intended. The issue it
appears is that it's not clear enough that the functionality is the same
as it was previously on the prior items, so we've added contextual
screentips to all 3 modes of the scanner.


![image](https://user-images.githubusercontent.com/41715314/198892524-65845906-736c-4859-87b2-304278b0c7a6.png)

## Why It's Good For The Game

Fixes #70909. Improves player feedback on the three modes of the
universal scanner through context.

## Changelog

🆑
fix: The universal scanner now properly show all three options in the
radial with sprites, due to a missing space.
qol: The universal scanner now has contextual screentips within all
three of its modes.
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-04 09:27:25 +00:00
GuillaumePrata
67a8f238b2 Balloonify the forensic scanner and cut on to_chat spam (#70820)
## About The Pull Request
Turns all the minor `to_chat` messages that the forensic scanner made
into balloon alerts.
Makes the `visible_message` be ignored by the scanner's user, as it was
creating 2 messages on the chat box 4noresin.
Adds a 3 second `do_after` when you try to delete logs from your scanner
to help avoid accidental deletion of logs.
Kills a pair of single letter variables while I was there.
And gave better clarity on an error message for the scanner saying it
was either busy or had no logs.
## Why It's Good For The Game
Better UX for the forensic scanner.
Using it spammed your chat with too many pointless messages that work
better as short balloon alerts.


## Changelog


🆑 Guillaume Prata
qol: The forensic scanner uses balloon alerts for most of it's simple
feedback messages, enjoy having an easier time hearing the radio
chatter.
/🆑


Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-04 09:02:31 +00:00
Sol N
69cd1b600f More flatbread recipies and a pizza for ethereals (#70837)
## About The Pull Request

This PR adds in 6 new flatbread recipes that are a mixture of more
"traditional style" recipes that would have already existed and some new
ones that reflect the space station living lifestyle.


![dreamseeker_DNeiks8OgW](https://user-images.githubusercontent.com/116288367/198377608-c0f7a1d1-6d24-4fbc-9b89-ff2c528ace51.png)

Pictured from left to right is a bee larva and jellyfish flatbread
(stinging), raw meat flatbread (meatlovers), cucumber and egg with liver
flatbread (zmorgast, named after Smörgåstårta), fish and bbq sauce
flatbread (BBQ fish), tomato, mushroom, and oil flatbread (mushroom and
tomato), and korta nut flour and milk flatbread (nuffy).

It also features one additional pizza that can only be eaten by
Ethereals, because I think it is funny when Ethereals eat.

![dreamseeker_UU9Za4XLo8](https://user-images.githubusercontent.com/116288367/198377738-d2be39e1-b471-4967-a85c-bacc2f8aea0d.png)

It is made out of two batteries and flatdough.

## Why It's Good For The Game

Generally, this is to add more support as a cook who only makes pizzas
and flatbreads for the crew. As there are only three flatbreads. the
options for such a pizza focused chef who wants to feed any lizards is
pretty low, and then some of those require out of the way ingredients or
additional cooking. This offers a bit more variety to flatbreads
including some with overlapping ingredients to things that you might
already have your hands on if you want to go all in on Pizzacraft. The
ethereal pizza is just a bonus and so that all of the roundstart species
can have a slice now.

## Changelog

🆑
add: Added 6 new flatbreads and their associated recipes
add: Added 1 new pizza for ethereals
/🆑
2022-11-04 01:26:30 -07:00
orange man
afcf7b8903 Automatic TGS DMAPI Update (#70843)
This pull request updates the TGS DMAPI to the latest version. Please
note any breaking or unimplemented changes before merging.

Co-authored-by: tgstation-server <tgstation-server@users.noreply.github.com>
2022-11-04 01:23:23 -07:00
tralezab
08d3a86670 The screwdriver cocktail is now the world's worst screwdriver (#70862)
## About The Pull Request

Screwdriver cocktail now secretly works as a screwdriver... just, the
worst one ever. How the fuck are you doing that?!

## Why It's Good For The Game

It's funny and I bet someone has tried this before

## Changelog

🆑
add: Screwdriver cocktails now work as the world's worst screwdriver
/🆑
2022-11-04 01:17:10 -07:00
Rhials
151a1f3644 Shuttle Catastrophe event now has a warning to prevent it from being forced when it REALLY shouldn't. (#70864)
## About The Pull Request

For a button that, if misused, could delete players or their hard work
en-masse, this thing really should have a warning on it.

I figured that instead of blocking it entirely, there should at least be
the option to force it knowing the risks. Maybe if the shuttle gets
REALLY messed up and needs replacing. I dunno.


## Why It's Good For The Game

Gives admins a moment to consider all of the complaints they're about to
recieve before they do something stupid.

## Changelog


🆑
admin: Forcing the shuttle catastrophe event while an emergency shuttle
is docked comes with a warning now.
/🆑
2022-11-04 01:15:28 -07:00
Hardly3D
58fd00094d AI Universal Standard canvas will now show it's canvas size on the item name (#70868)
## About The Pull Request
This PR adds the canvas size to the name of the AI canvas from "canvas
(AI Universal Standard)" to "canvas (24x24) (AI Universal Standard),
making it consistent with other types of canvases which has their own
size on their name.

## Why It's Good For The Game
Consistency, every other canvases has their size on their name except
for this one.
Also makes it easier to distinguish the difference between this and the
other canvases.


## Changelog

🆑
spellcheck: AI Universal Standard canvas will now specify it's size on
the item name.
/🆑
2022-11-04 01:12:42 -07:00
jimmyl
828e3d7a5d Fix AIs with AI Cores getting gibbed when the mech theyre controlling gets destroyed (#70990)
## About The Pull Request

Makes AIs with AI Cores not get gibbed when their mech gets destroyed or
they get forcefully ejected which is a bug
Also, fixes a very very small bug which i didnt think was worth making a
seperate PR for where the stats displayed when
clicking on an AI-controllable mech, it would show "Pilot: /list"
## Why It's Good For The Game
Fixes #68713
Fixes #70922
Im fairly sure AIs with AI cores getting gibbed in their core leaving a
MMI behind is probably a bug introduced by
not updating the code when AI Tracking Beacons were added
Also bugs bad, and having a mech destroyed like 100 tiles away splode
your core is nonsense
## Changelog


🆑
fix: Fixes getting AIs with cores getting gibbed if their mech theyre
controlling is destroyed
/🆑
2022-11-04 01:09:25 -07:00
MrMelbert
e589b9e27f Fixes incorrectly passed arguments to demoralise poster signal handler (#70887)
## About The Pull Request

First argument is the source of the signal. This caused runtimes where
it tried to check a poster's mind.

## Why It's Good For The Game

Less runtimes

## Changelog

🆑 Melbert
fix: Triggering a traitor poster trap progresses their objective. 
/🆑
2022-11-04 01:08:54 -07:00
MrMelbert
dd2a236d37 Fixes Rat King Domain doing not much (#70894)
## About The Pull Request

I changed Domain to work a tad different, instead of making a new mob
just repurposing the old one since they were the same type, but I didn't
carry over everything.

Now I've decided to base it around the ai controller for rats, since
that just makes sense to me I think.

## Why It's Good For The Game

Abilities work

## Changelog

🆑 Melbert
fix: Fixes Regal Rat Domain not functioning as intended
/🆑
2022-11-04 01:05:40 -07:00
zxaber
6980438b81 Allows mobs caught in disposals to escape once they have stopped moving - Take two (#70908)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

This is a re-opening of #69960, after addressing all prior reviews
(except one, see below).

## About The Pull Request
- A mob inside a disposalpipe holder object that has stopped can use the
"resist" action (hotkey: B by default) to struggle out. This will take
20 seconds (on top of the time spent waiting for their holder to stop),
and will play a sound. The pipe they are in will burst (taking the tile
with it if applicable), and deal a random 5 to 15 brute damage to all
mobs in the holder.
- When merging a moving holder with a stopped holder, pipes will now
check if the stopped holder has a mob, and if so, will merge the moving
holder into the stopped holder rather than the reverse. Thus, all new
mobs will become stuck on a stopped mob.
- When deleted, holders will now drop their contents to the floor first.
This is to prevent a very rare bug deleting all holder contents
(including mobs) if the holder attempts to move through a pipe currently
being destroyed.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
Disposal traps are fun, but there shouldn't be a scenario where a player
is trapped indefinitely, with no ability to use tools or other items to
escape, that can be made for free using round-start items. If you want
to make a trap, the disposals pipes should be the delivery system, not
the destination.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
add: You can now resist out of disposals pipes once you have stopped, at
the cost of some brute damage.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
2022-11-04 01:03:59 -07:00
Fikou
a943cc4ca6 MODsuit action button resprite (#70988)
## About The Pull Request
resprites the modsuit action buttons, turning it from these reused icons

![image](https://user-images.githubusercontent.com/23585223/199305682-161ba3e7-f15a-41f5-8e21-65857e076281.png)
into these unique icons by imaginos

![image](https://user-images.githubusercontent.com/23585223/199310820-c972ea85-7307-4260-8590-58d15fb2eb13.png)

## Why It's Good For The Game
reduces the vagueness of the icons, tells the players about the lmb/rmb
functions of them from the get go.
the old ones being the engineering suit twice and a swarmer
deconstruction sprite really were not great

## Changelog
🆑 Imaginos
imageadd: new icons for modsuit actions
/🆑
2022-11-04 01:00:42 -07:00