Skip to content

Commit

Permalink
Upstream (#2010)
Browse files Browse the repository at this point in the history
* Automatic changelog generation for PR #63140 [ci skip]

(cherry picked from commit 2136b0dd245d66e3e53fc7dce3cfcdd02b9a15ad)

* Allows visual organs to be visible on mechanical limbs (android wings work) (#64094)

Based largely on #60798 which was never finished due to merge conflicts.
As a celebration of this, synths now will have robot-themed wings as they always should have (largely irrelevant change, synths can't process reagents and can only get wings through admin shenanigans)

(cherry picked from commit a8d8a261225bfef9e5034f89f61122589158f66b)

* Automatic changelog generation for PR #64094 [ci skip]

(cherry picked from commit 368d0398bdc68aa73063849fd6c456dfb0e781a6)

* Updates Our Nanotrasen Copyright To 2562(#64084)

Updates Our Nanotrasen Copyright To 2562

(cherry picked from commit 339be29d2d5046f7c7d91dc0cd449d4302b12833)

* chapel privacy shutter buttons (#64082)

(cherry picked from commit e8b5e8115d1f1ca49ce0df9fe27039576b174615)

* Automatic changelog generation for PR #64082 [ci skip]

(cherry picked from commit eaadaf117ff9c136c78f369440ebcb83480c9984)

* fire alarm get (#64108)

adds fire alarm to meta arrivals

(cherry picked from commit 679a34e11272edd7e62836719ee6f76fbf371c73)

* Automatic changelog generation for PR #64108 [ci skip]

(cherry picked from commit faa1f65adf72efde3cc0fb288921475557f1ce42)

* In Soviet Nanotransen, Tram consume you! (#63643)

* stops the tram from consuming the SM

(cherry picked from commit 12b9f31c443d3ed240c9e9aa93924235bcbe8894)

* Automatic changelog generation for PR #63643 [ci skip]

(cherry picked from commit 9c9cffaf669c7253bd26f114d71e53125fc6be64)

* Fixed cult airlocks runtiming when a noncultist touches it (#64106)

The airlock was supplying the `throw_at` proc with itself as the
thrower. However, the thrower is always expected to be a mob, so this
leads to runtimes.

(cherry picked from commit 85fa6aac2329cfccc079ecc29bb78df6443f1e7d)

* Automatic changelog generation for PR #64106 [ci skip]

(cherry picked from commit 3bc6bb83ddbebb2d5b65b6a1a019ab6bfa7339f1)

* Item Pickup Brush-Up (#64095)

* Item Pickup Brush-Up

Moves pickup animation code to items.dm

Removes sleep() from the current pickup animation. This affords it 3 decisecond to animate rather then 1
I believe this was causing the pixel shifting to end early. A 3 decisecond delay is more consistent with the
initial pr, and I think feels better. Maybe 2 tick is better? or 3 tick without any ending lag? not sure.

Adds a drop animation.
Hooks it in to items being removed from a player's hands, or items being transfered to a location. This includes when an item is removed from storage

Pickup animations have always felt somewhat stilted to me, and while I don't want the shake and long leadup included in the initial pr, I'm not even sure you can tell it's happening sometimes as things are now

It's by definition gonna feel a bit different since well, things are changing. I'm open to feedback on the delays here, especilly on the effect for taking things out of your bag. It's not new, but extending the pickup animation by 2 deciseconds really shows it
Lemme know what ya think yeah?

* Adds a random x bias to pickup/drops on the same tile, I think this will help lesson how crummy that can look
Lowers the same tile y shifting significantly, for similar reasons
Adds a Scale(0.7) to the end/start of pickup/drop. I think this makes things look just so much nicer

* Makes pickup scale slightly more before bouncing back to the size drop uses. starts out smaller anyway

* Moves the attack animation to items.dm. Makes it use the attacked atom's plane, which fixes attack animations playing behind mobs. Also makes it offset slightly on the x axis when you're attacking yourself, looks nicer I think

(cherry picked from commit eb2627fb21746929aaacfea1eb2fb27e5227185b)

# Conflicts:
#	code/game/atoms_movable.dm

* Automatic changelog generation for PR #64095 [ci skip]

(cherry picked from commit 97caf5173877711415afc0404af5315ca3ca7328)

* Automatic changelog compile [ci skip]

(cherry picked from commit 1ae7d134e5124d9eabdd9d6827d80ad15c3168f6)

* Stamina indicator HUD for humans (#64011)

imageadd: Added a stamina indicator to the human mob's HUD.
(cherry picked from commit 943b054eebd18c62b08f04263e4b056087cb5fa3)

# Conflicts:
#	code/_onclick/hud/_defines.dm
#	code/_onclick/hud/human.dm

* Automatic changelog generation for PR #64011 [ci skip]

(cherry picked from commit 0f8e678502d59d7110a73184685bdec3baba488d)

* Traitor objective logging + adds the objectives to the antag panel (#64049)

Co-authored-by: Watermelon914 <[email protected]>
(cherry picked from commit 610218e794d634dcf483c60f0bfba0862b19180d)

* Automatic changelog generation for PR #64049 [ci skip]

(cherry picked from commit bc33eb11f10c39375ae82fda5db65ef5872c1c91)

* You can now tip borgs over (#64097)

I hate Silicon

Teaches Silicon that they should still live within the Crew rather than above them, otherwise people will tip you over and no one would want to help tip you back up.

The timers also, for the most part, match handcuff timers, so there's already a human counterpart of this. Even if it wasn't intentional.
Changelog

cl JohnFulpWillard and theOOZ
qol: Tipping mobs over all runs on right click, rather than running on both right and left click.
balance: You can now tip Borgs over.
/cl

(cherry picked from commit a64c5836a88134b89285b730e6123d9d85e71e24)

* Automatic changelog generation for PR #64097 [ci skip]

(cherry picked from commit cc65477c04f7403ca8a457bd5bae69a01abadbf0)

* Fixes not drawing cards from non-standard decks (#64070)

In my refactor I forgot to give these a look over, luckily it was just a
simple changing of the `populate_deck` proc.
I didn't touch CAS because they still work (and they have entirely
custom code anyways).

(cherry picked from commit 11a322c218217f27e28c6c45f294e45cb880b491)

* Automatic changelog generation for PR #64070 [ci skip]

(cherry picked from commit 46a49854aa2c46736fefbf56208f6b5ea9136914)

* Removes unused clockwork cult icons (#64006)

and also moves them over to the sprite repo
there were still some used, so the fluff pieces got added to obj/fluff.dmi, and also there was one sprite for the wall girder, the toy wrist watch and the null rod, so those got moved into their respective files.
moved the clothing to their respective files aswell.
Why It's Good For The Game

almost all of these sprites are completely unused, aswell as the gamemode being removed from the code anyways, so they can rest in sprite purgatory

(cherry picked from commit 8abb19545828230d92ba18827feeb42a67a55d49)

* Adds a movement looping system, replaces inbuild procs and spacedrift with it (#62567)

* Adds a subsystem to handle automated directional movement, replaces all instances of walk_towards with it. Makes meteors and immovable rods not drift in space, and makes immovable rods more destructive. Note, I've opted not to use byond's method of moving towards something, which is effectively Move(src, get_step(src, get_dir(src, target))) as it's cringe and doesn't make a smooth line. I've replaced it with a autoupdating rise over run setup, read the code for more details

* woop forgot the subsystem

* Documentation, contributing.md entry, and some cleanup

* Makes the moveloop datum more oop friendly, sets us up for a lot of conversions

* Converts the curseblob and walk_away() to the subsystem

* Changes the default for override from FALSE to TRUE

* converts walk() over, still need to add a replacement proc for it, but we didn't actually have anything that used the raw proc

* converts the rest of walk_to() over, nearing the end now

* cleans up some errors

* Fully documents everything, fills in some missing movement types, uses the power of oop to make things cleaner, and typepaths longer

* Finishes the contributing.md stuff

* Done

* Fefaults -> Defaults, can you tell I wrote this at 1AM?

* resolves bubblegum issues

* Roh's suggestions

Co-authored-by: Rohesie <[email protected]>

* Cleanup

* Hey lemon, did you know that Destroy() lives on datums? ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

* Converts over the discrepencies created in my absense

* HAHA FUCK YOU I PAY MY DUES

* Whoops lost some stuff in the merge

* Converts the system from seconds to deciseconds to make dealing with the api more sane

* Some stuff I missed

* Makes movement an inheritable subsystem type, splits the moveloop file into two, one for the subsystem, and one for the datums

* Makes a subsystem that handles directing movers out to other subsystems. It's a bit bad right now, but it's a
good first step. I think I'll move the move loop datum to a lazy var on mobs instead of an assoc list, don't
like lists.

Also makes the movement procs global, I'll move em to the /movement subsystem at some point or something like
that

* Converts the existing uses of the procs over to the new format

* Adds support for subsystem precedence, so a type of A can override type B.
General cleanup, still kinda in debug mode but it's getting better

* I'll admit I'm not too familiar with this, but I think it will work

* Adds starting logic so movement types "pausing" makes any sense
Redoes how waiting is handled to make it based on world.time directly. I don't remember why. I think it's better
this way.

Adds a drifting movement type, moves space drift over to it.
Needs severe work before it's ready, too much info stored and modified on the moving object, see comment
Starts work on making drifting smooth

* Moves almost all space drifting vars over to signals on the movement datum
Properly implements glide size stuff for both the subsystem and the loops. Space drift will be smoother now.
It's not perfect, but it'll work just fine for now

Adds a way to override a client'd mob's glide size mid move, uses it to make entering a spacedrift look right
Adds a way to delay a client move outside of just move_delay, meant to be used for long periods, and setup such
that it doesn't make inputs persist

Adds flags to movement loops, alongside MOVELOOP_OVERRIDE_CLIENT_CONTROL, which blocks client movements while
the loop is firing, and for it's visual delay after

This means you can't exit a space drift until you hit the actual wall. This feels a lot better

Some general logic stuff, move() will return true/false if it succeeded or failed
Adds a stop_loop() proc that's called when a move loop is no longer active

Suck my nuts

* Moves precedence to the loop instead of the subsystem

* Moves drifting into a component, this lets me explictly block input after the move loop ends, so people can't
move the moment they functionally move onto a new tile
This is a bit underdeveloped currently, but that's a problem for another day

Cleans up some uses of move procs, fixes runtimes in metoer and curseblob code
Adds signals for stopping/starting a move loop, sending one for destroy is redundant.
Moves existing event signals from the movable being acted on to the loop itself, makes more sense this way
Makes the move handler return the created loop up the chain so we can register to it
Fixes a logic error in loop contesting code that lead to loops never actually being removed from subsystems
because they didn't know they should be.
Properly changes lifetime from a time to stop, to functionally an amount of moves to complete before stopping
Adds some new signals for pre/post loop process. This is to better tie into components.

I decided I didn't like the idea of tying all functionality to the loops themselves
The loop decides functionally how to move, components or just tied in signals can decide when/when not to move
and can modify properties of the loop

Making a new loop for things like atmos drift, something I'm interested in tackling in the future, seemed silly

* Moves movement procs directly to the subsystem for better namespacing or whatever

* Moves movement packets onto /atom/movable, no longer need the debugging
I've decided to not just put their contents fully onto atom movable, since it makes debugging on live much
harder, can't sdql for them anymore.

Fixes a runtime in meteor code, properly this time
Fixes a logic error in stop_looping
Makes move manager NO_INIT, because well, it doesn't init

* Commits human sin, makes Recover() work properly for movement subsystems

* Fixes immovable rod orbits not always working, they were returning too early in moved and fucking up the var we use to track move count, and thus not sending a signal properly

* Reworks the curseblob to use signals more, and to not use override

* Missed this in the movement ss commit

* Removes override, makes having a higher or equal precedence take its place

* Updates documentation

* Cleans up some unused defines

* Nukes the unused flags option

* Whoops forgot to qdel check

* Removes an unused var I had for client move prevention before I started using a component

* Let's do this properly

* Modernizes meteor code to better match how explosions actually work currently

* Some more cleanup

* Cleans up effect code a little bit
Nukes the effect system's sleep loop, we use movement loops instead
As a part of that, instead of 1 timer per effect spawned, we react to loop failure and make it 1 timer per
effect system
This should reduce the amoumt of slowdown we see after mass lighting break

It's not everything, we're still making a timer per spark effect, but it cuts things down significantly

* Updates explosions to not sleep

* Adds support for modifying a loops delay post process, makes extinguisher code suck less then it does currently, nukes some more sleeps and timer loops

* Converts water tank resin over to move loops rather then sleeps, minor behavior change mind, the cooldown starts on fire rather then on land, but I think that makes more sense anyway

* compile and runtime fix

* Fixes some runtimes, cleans up some code, ensures feature parity when it comes to logging

* Prevents resin foam from space drifting

* Adds support for flags back into the system, I need it for reasons

* Updates move_towards to fix some bugs and resolve some inconsistent behavior, implements a flag that makes a loop's first move start instantly

* Fixes extinguishers not actually transfering any reagents

* Converts sprays to the new system. This does actually minorly change behavior, in that I've changed the order of spray actions from step -> sleep -> wash to step -> wash -> sleep, but I'm not terribly torn up about it because frankly I think it feels better

* Converts grav catapults over to the new system

* Converts trays over to moveloops

* Converts robot streaking to move loops, the other two coming soon

* Compile you won't. Also fixes a behavior issue with oil streaks

* Does directional step_to properly, cleans up the other two streaking types

* Converts step_trigger over, not that it's actually used anywhere. Changes how stoping a move works, you need to explicitly qdel, other the step is just considered to be ignored. This will make life easier later

* Adds a jps movement loop. It's a bit bloaty, id is stupid, but it'll work just fine

* Makes the system support passing in a datum that's just used as extra context for the move. The hope is this makes signalizing things less of an absolute headache

* Begins the conversion of ai movement datums to movement loops

* These two are reasonably simple, only weird thing I'm doing is A: Not allowing target hotswapping, which I hope none is doing, and B: passing the controller into the move loop as extra context so things work properly

* JPS is a bit more complex, partially because the old implementation was a bit weird. 2 major things. 1: I'm dropping what I think was a redundant behavior minimum distance check from the premove bit of logic, since I'm pretty sure it didn't do anything. 2, instead of just stoping the step in an error state like being pulled, we count it against our max move total

* Audit

* Moves most forced movement to the framework, adds some components to make things nicer

* Implements a flag that makes the loop always operate, regardless of precedence and without impacting any other loops

* Moves movement subsystems into the right folder

* Hey potato what if you had two procs that did the same thing and one called the other? Wow it's useless

* Merges slipping and force movement

* Converys conveyors over to the system. It's a bit fragile, but I think it's totally worth it to save the sleep loop

* Precedence -> Priority, cleans up some logic errors, makes priority highest to lowest instead of lowest to highest, straight cleans some code up

* Makes poly and bubbles ignore spacedrift, now that precedence actually functions properly. I'm likely missing cases of this, will deal with it later

* Depression, thy name is linter

* Fixes linter, and hopefully fixes the runtimes in ci too

* Wew

* Sets sprays and extinguishers back to legacy, since people do actually seem to have noticed

* Spelling errors my beloved

Co-authored-by: Kylerace <[email protected]>

* More detail, moves return descriptions

* Converts transit tubes to the system?

* Adds the glide size modifier. Not honestly sure that this should be default, considering how crummy it makes things look for normal walking, but it's useful as hell here

* Adds a force move in dir template, actual support for fast initial steps (wtf old me) and a helper proc for setting delay

* Cleans up displosal code a bit, I thought about adding it to the system but it would functionally be just 'disposal loops'. Maybe I'll make a template subtype? not sure how I want to handle stuff like this

* Cleans up mob movement a bit

* Let's use the controller's visual delay

* Makes the resin thrower nicer, cries

* Cleans up some comments, replaces an implicit world.icon_size with an explicit one, fixes up a typecheck

* typecache instead of double istype. Can't do much about the !atom/movable, list would be too big I feel

* hhh

* bro wtf

* Documents the why of SS_TICKER

* Puts SSmovement on SS_TICKER. Lets us support tick steps

* Cleans up the charge action. Makes it use moveloops

* Fixes CI? kinda worried that this just got dropped

* Converts disposal pipes to move loops. They stutter a bit more then usual as of now, hoping that's a me thing, if it's not I'ma look at uping the priority of the base subsystem

* Moves the move subsystems off background, puts some on ssticker

* Prevents some things that shouldn't move in space from moving in space

* Documents the general form and usage of the system

* Virgin one vs chad once

Co-authored-by: Kylerace <[email protected]>

* Removes unneeded check

* Moves appropriate movement subsystems into SS_BACKGROUND. Removes redundant SS_KEEP_TIMINGs

I do want the behavior of SS_TICKER, which at this point is tick based waits, and ignoring overtime when
calculating next fire.
Since honestly, these subsystems should ignore overtime in regards to next fire, the cost of moving A may be
nothing compared to the cost of moving B.

* Makes the MODULUS macro use floor. I knew our coders would never let me down, glad this exists, thanks ninja
Fixes teleporting caused by shitty round() behavior, adds a "you hit your target" case to homing loops

* Converts blood splatters to move loops, that'll do it

Co-authored-by: Rohesie <[email protected]>
Co-authored-by: Kylerace <[email protected]>
(cherry picked from commit 815bb8ae40eb9776881d41ba60128eec70c131d5)

# Conflicts:
#	code/datums/ai/movement/ai_movement_basic_avoidance.dm
#	code/datums/ai/movement/ai_movement_dumb.dm
#	code/datums/ai/movement/ai_movement_jps.dm

* Automatic changelog generation for PR #62567 [ci skip]

(cherry picked from commit 4dfb104016a0e3c7fecd22fbedb39e64fd311535)

* Fixes windoor electronics removal (#64145)

(cherry picked from commit 45cbcb1beb830dc465341bfa796bdc20f881074a)

* Automatic changelog generation for PR #64145 [ci skip]

(cherry picked from commit 9c7b5dbc3f674d8c149232daad99c8bd0b876e3b)

* Nerfs atmos gas mask (#64140)

(cherry picked from commit d30452ac9330e23b61e4a7cc7ebb7a7f0231a289)

* Automatic changelog generation for PR #64140 [ci skip]

(cherry picked from commit 5b0ea1c1f4fbd81fe42c3c5ba928fbc0fee7b066)

* Spans out and Alphabetizes the Lists in _globalvars/lists (#64018)

On the tin. Every list with two or more variables gets spanned out and alphabetized. Anything that sorta followed this was alphabetized or made to make sense. I didn't alphabetize the directions though, because North/South/East/West makes sense in it's own way.

(cherry picked from commit da5278e4ad5894ad0cd8e8a5e2a6f49918d4ed45)

# Conflicts:
#	code/_globalvars/lists/flavor_misc.dm

* Automatic changelog generation for PR #64018 [ci skip]

(cherry picked from commit cd7ecc6947ea3124449e747d6f9a8e01f6bbc2ad)

* Beret armour now matches the security helmet (#64075)

This PR edits the beret's melee armor value down from 40 to 35, matching the same value of helmets.

(cherry picked from commit 1c8a845b6fea1cc972af81fda6fa2b65ff1fd4f6)

* Automatic changelog generation for PR #64075 [ci skip]

(cherry picked from commit 81e74024a94020ad27c91bb28c5b85e318da5c28)

* moves Badass.dmi (#64118)

On the tin. It moves it from the base icons/ folder into icons/ui_icons/antags/ because I think it the best spot for it. Code has been updated to reflect this as well.

(cherry picked from commit 075f5c43ecd0651544ed907297f1983d12b2b493)

* Automatic changelog generation for PR #64118 [ci skip]

(cherry picked from commit 5da67f669d0c64fd94e3ca011528abf995ac5f4b)

* The Seperation of the Two Engineering Storages (#64127)

On the mapping end, all of the engineering storages are no longer number "2" (as far as the sprite labelling the rooms go). The sprites now reflect their actual usage in their respective maps.

(cherry picked from commit 43f7c860315f307c86bfc97e33ad59a52c78245c)

* Automatic changelog generation for PR #64127 [ci skip]

(cherry picked from commit e6d9c670955459395b4fe1a1e85282ea3457a10f)

* fixes telepathy (#63918)

63354 made it return if the target was a mob, which shouldn't be the case since we WANT to send messages to mobs.

(cherry picked from commit 5a60fb129f77917b1258d63bae48959589d6bd89)

* Automatic changelog generation for PR #63918 [ci skip]

(cherry picked from commit aa666cbae6068c40f998b19c7e185d5c34dcb30a)

* fix podpeople sprites (#64135)

* Adds a sprite for podpeople's left hand when facing right
* Fixes the female podperson body so it doesn't poke out of jumpsuits

(cherry picked from commit f2e4f2d7c04f45ca7e09ae469f1c90b27d5abf44)

* Automatic changelog generation for PR #64135 [ci skip]

(cherry picked from commit ef147d680a0fc0df6d45538adac3838dd630e375)

* Safe code documentation (#64096)

Adds better documentation and variable naming to safe code. Also removed one variable that hasn't done anything in years.

(cherry picked from commit ced9c998cf3d9f5b7f6d4182390cb2472612c7b1)

* chisel, bane of statues (#64047)

* chisels deal 40x damage to statues

(cherry picked from commit c3216c031c34de25784a8bbfbb551c2ae8c850f6)

* Automatic changelog generation for PR #64047 [ci skip]

(cherry picked from commit 966152af06c9041b74cab76cf899d7282e7e7949)

* Adds Modular Ruins (#64077)

Adds a new system to allow mappers to randomly load modular map segments.

For implementation details and a tutorial check the included README.md.

(cherry picked from commit 9dc96a68f5d5e255758c8635062299f1f7a4dc20)

* Automatic changelog generation for PR #64077 [ci skip]

(cherry picked from commit 2dc97cc3077a87c3c867d98fc56ed85493a2229c)

* Fixes navigation computers giving too many port jumping actions (#64054)

* Fixes navigation computers giving too many port jumping actions

I'm adding a vestigial proc here, remove_jumpable_port
I prefer this over not fully implementing the behavior, hopefully it'll be of use to someone

(cherry picked from commit 837882f609d821a468cc6b5ad30c8d90441fc6b7)

* Automatic changelog compile [ci skip]

(cherry picked from commit 9dba34b4ac118451f470911fac8481a285ed8f55)

* Expands Slapping: Facepalms and slapping people awake (#63916)

* Slapping yourself while targeting the face will now deliver a facepalm.
* Slapping someone while targeting the face who's asleep or unconscious will wake them up slightly. It's worse than just using help intent but it's funnier.

(cherry picked from commit 95d2bc39465665dccf25bfa29a2432bffc2c9993)

* Automatic changelog generation for PR #63916 [ci skip]

(cherry picked from commit 9ddb8cf084e292571d4e9c79745db25befbd82fe)

* This KILLS the active turf (#64119)

(cherry picked from commit 3cb2a66695d20dbfc9139d40e30f34aab5325228)

* Automatic changelog generation for PR #64119 [ci skip]

(cherry picked from commit 8dea7acddfe5b3c67e92cf858d2f0bbcf499e374)

* 5 Icebox fixes (Camera placement, drone dispenser, fire extingusher ontop of disposal bin, sci med maints, lack of medical records console) (#64156)

(cherry picked from commit d8ea00aaf0a603370e2272398cee7ad7bc8f0b38)

* Automatic changelog generation for PR #64156 [ci skip]

(cherry picked from commit 17b4a686f3d74ea0a4265ebf6293a26bc7ecde33)

* Two New Areas: Fore and Aft Customs (#64120)

* maps, icons, and dm listing. oh my!

this will fix #63409

* linters moment

(cherry picked from commit 29571da7924db4862a835403342691a31ad4f1d8)

* Automatic changelog generation for PR #64120 [ci skip]

(cherry picked from commit 0b9871111071f7dc835ce61b5fb9fe2fcb9299ba)

* Fixes icebox airlocks having snowed over plating (#64104)

(cherry picked from commit 955adca98083df7d809981465bea5be1a1ce8989)

* Automatic changelog generation for PR #64104 [ci skip]

(cherry picked from commit 100918ca3c633dcf67b40263dbfe3b49d504e19f)

* Fixes AIs not being able to announce any laws past Law 3 (#64167)

This was change in a TGUI refactor, but it completely broke announcing
supplied laws.

(cherry picked from commit d7b466caa225b547a7d7e9c5a850f2f4a68dc75c)

* Automatic changelog generation for PR #64167 [ci skip]

(cherry picked from commit 32ee4b96bbdad5489db469edea54d31db585c478)

* Fixes floorbots dropping full toolboxes (#64166)

The `drop_part` proc was really shittily made, aswell as just fully
untested by whoever made this. Updates it to actually work as it was
intended to (it was treating a type as an object).

(cherry picked from commit f465a8929c7bde24ec55d9f257761f204de8bf55)

* Automatic changelog generation for PR #64166 [ci skip]

(cherry picked from commit 488e38791406228ecb7f98c40cd01d679db94d02)

* Lowers virus plasma reaction temperature change (#64152)

(cherry picked from commit 208cd4b23563a0e97a7bc2f6c305637ed930ddaa)

* Automatic changelog generation for PR #64152 [ci skip]

(cherry picked from commit 5e7fc07e25daf58078ffa118a22262f7fb245a7e)

* fix sleeping crew monitor bug (#64157)

(cherry picked from commit 8166724ca07184615f1ed9901b6e6fcc3e0cb452)

* Automatic changelog generation for PR #64157 [ci skip]

(cherry picked from commit 2fd3dca922b2c204b0ded56c444eec86cd6c9d18)

* Fixes an oversight in database code and cleans up telemetry (#64177)

As it is right now, we never actually clear the temporary list processing_queries
So if the subsystem is for some reason unable to complete a run, we will just whip right back around to it again
If it's been long enough, this could even cause horrific log spam. There was just now a manuel round with roughly 30k undeleted query errors. not good.

But what was actually not deleting you may ask?
Well

When you create a db request, a 5 minute timer starts. after those 5 minutes are up, the request is qdeleted by the db subsystem
This is to prevent the creation of unused requests, and to handle requests that are never cleaned up

Telemetry code was creating all of its db requests inside a for loop that could check tick, and then later
attempting to call them in series

Since requests by default sleep, this almost always lead to undeleted queries, which harddel'd given long enough periods

I've fixed this by moving the data gathering away from the query creation
Why is it good for the game

I was working on atmos code, happy, safe in my delusion, when suddenly I got a ping from tattle freaking out over 200 undeleted queries a second
This resolves that issue, so I can once again live in peace
Changelog

cl
admin: Telemetry code will spam you with undeleted query logs much less often now!
server: Improved how the db subsystem handles undeleted queries, should never have an incident like that again
/cl

(cherry picked from commit 6478dc5fce4c712578bfb17aba459bfe1c9d223d)

* Automatic changelog generation for PR #64177 [ci skip]

(cherry picked from commit a477bd8f4ce03067ec893c67d263301085f05291)

* Makes tipping borgs use SECONDARY attack cancel chain (#64165)

* Tippable returns SECONDARY attack cancel chain

* adds an after_righted proc for silicons to help with downstreams

(cherry picked from commit 75638523f37834bc205a7f68b696b0c1de22b007)

* Moves the toolbox sprites to the goon folder. (#63930)

The toolbox sprites have been moved from the regular icon folder to the goon folder.
Why It's Good For The Game

The toolbox sprites that we currently use originally came from Goon, and were ported over by @dannno (#23938).

Therefore, they belong in the goon folder, where they won't possibly be confused for a CC-BY-SA licensed asset.

I have no clue who made the original toolbox sprites on Goon (If someone who does know happens to read this, please let me know so i can give them proper credit), but i do know that dannno made another PR that modified them to how they look today (#24001).

(cherry picked from commit 2adbc72d92240dd55fe62813ab4a7d0489483cc6)

* Deletes the tippable's untip timer if someone untips you ahead of time (#64168)

* Deletes the tippable's untip timer if someone untips you ahead of time

(cherry picked from commit 9b042a46b20e83bbb710e8b5d86541d06a1dda0d)

* Automatic changelog generation for PR #64168 [ci skip]

(cherry picked from commit 9d4116bc0f38c9de3f5728b4b26630527e4f7cb4)

* Require nuke disks be held by a player in order to count as moving (#64146)

In order to count as "secured", a nuke disk now must either be on a player with a client, or pulled by a player with a client (so that borgs can secure disks).

(cherry picked from commit cfa2e304fab7859a477ad4d2b75925d964e82bea)

* Automatic changelog generation for PR #64146 [ci skip]

(cherry picked from commit d01113747944632d68a314032267962473500b0a)

* Adds blood brother teammates to antag info (#64143)

Makes blood brother antag info display the names of their blood brothers.

(cherry picked from commit 0113007acb29b656d48c6fd3e8d52f0551f25659)

* Automatic changelog generation for PR #64143 [ci skip]

(cherry picked from commit 6631333ebd6d447b174bc6eb6eca2747ef61c4b8)

* Traitor bugs transfer fibers + prints when planted in a room (#64079)

Planting a bug down in a room will transfer the fibers and prints from the held bug to the placed bug
Adds some warnings for newer players that they may be leaving fingerprints, and lets them know how to deal with it
Puts in a missing doc comment
Docced + better var names for old helpers

(cherry picked from commit 8da577f5f1626ab77ea5dafd9bbafd6d93e1e498)

* Automatic changelog generation for PR #64079 [ci skip]

(cherry picked from commit 2ec96ce671c71a26029d779805aa1c2c831bbf5c)

* Automatic changelog compile [ci skip]

(cherry picked from commit fd1dab6fe6950114c325a90fea74c8b22d7dab74)

* MULTI-Z IceBoxStation Locker Room (Laundromat Diplomat) (#64055)

(cherry picked from commit 6dca51598ab72c6cd835ee5b4e2d04f07710dd7f)

* Automatic changelog generation for PR #64055 [ci skip]

(cherry picked from commit 48404eb05d9a311b30030fa0f72c95974eece3f6)

* Sign Language translation glove changes (Plasmamen & MODsuits) (#64090)

Swaps the check for the gloves for people with the tongue-tied trait into a check for a clothing-based trait.
Makes a variant of the radio gloves for plasmamen, so they can be forced to use their hands too.
Makes a MODsuit mod that lets you sign over comms when your modsuit is activated.

(cherry picked from commit 71162dee9bcdd25d5ff382af7efd848ee27cc7a9)

* Automatic changelog generation for PR #64090 [ci skip]

(cherry picked from commit 2b7d8b093080fc2cf88d2c655a80e4aa0c634219)

* Fix wraith-spawned teleport runes not having their custom name shown (#64117)

(cherry picked from commit 09c4be807bf99b66252705c24c9e4b6e84835866)

* Automatic changelog generation for PR #64117 [ci skip]

(cherry picked from commit abc06b3ea865fef1fd286f382b65a2e00a473e16)

* fixes typo in exploration drone's computer console (#64101)

(cherry picked from commit 1120a8cce22d8c8b693fdd487f70108271620fdb)

* Automatic changelog generation for PR #64101 [ci skip]

(cherry picked from commit bb9e18a4c32cc1af542fe791d7299419aa1cd18e)

* Adds a centcom modsuit outfit (#64170)

(cherry picked from commit 57510d042209e4ecf56c62d668a28acab7322f73)

* Automatic changelog generation for PR #64170 [ci skip]

(cherry picked from commit 2982ae533446137e5539f99d06cc959d4dc8f65c)

* Fixes an error in telemetry queries (#64205)

(cherry picked from commit 549e581c6d3922aedd721ee506ccdde55b20abb4)

* Drinking root beer increases your fire-rate; Adds root beer (#63956)

* Adds TRAIT_DOUBLE_TAP and a drink/pair of gloves that grant it

* increased price

* per reviews

(cherry picked from commit 73eaf4273ec21f4c9d2c59b55a1b4bc74246f1cd)

* Automatic changelog generation for PR #63956 [ci skip]

(cherry picked from commit d56d9c28b4d761b290a674dac5fa7916a96a6dc8)

* Patch icon choosing in the chem dispenser and chem press (#64137)

* patch style for chem master, chem press

(cherry picked from commit d80ea26df0c4e7b49b692124c5ba8eb2a939eb40)

* Automatic changelog generation for PR #64137 [ci skip]

(cherry picked from commit b4c08c4bd5e6dd7751287bbd05f6c0fc6e01ff1b)

* Fixes some mapping errors not using the mapping error log. (#64114)

Should help prevent #64066 from reoccurring.

(cherry picked from commit 7b471582d8c4580f0afd13f7e8f72e5eb5ae98a5)

* Automatic changelog generation for PR #64114 [ci skip]

(cherry picked from commit f8d5eaa3b22a67063cc66448ee220d71698da507)

* Updates Mapping Sprite for Interrogation (#64125)

(cherry picked from commit 2d42dd487e6d21d767ab84290afab88fd6c7b473)

* Automatic changelog generation for PR #64125 [ci skip]

(cherry picked from commit f9b42b7d33642242ffcaba04b7ece75671f75ad9)

* Pump pressure calculation now respects temperature. (#62320)

Ever pump hot nob into a tank of oxygen, see the pressure rise to 8000 kpa for a few seconds and have that deafening explosion sound play right after? This attempts to eliminate those by making the pressure transfer proc thingy in gas_mixture account for resulting temperature. The old one is preserved if the temperature difference isn't too big because it's most definitely more performant. The minimum temperature difference of 5 is completely arbitrary and I won't mind changing if asked. Math is a bit messy by necessity but I hope the comment is adequate.

While I'm at it i also changed the return value of those procs to return a removed gasmix instead of directly merging. I sort of needed this for a clean implementation of assume_air in #62284. Will need more testing though. Found a better solution.

Writes a small unit test to check for this too.

Cuts down on one unintended cause of explosions.

(cherry picked from commit 4645336221f6a52430b7bc426d066488d9baf2e6)

* Automatic changelog generation for PR #62320 [ci skip]

(cherry picked from commit f17ee93f6084f64cb53cae583065be8823d2d264)

* Automatic changelog compile [ci skip]

(cherry picked from commit ffe251750b4de7195b861e4f13d7ea382567de06)

* Makes Lizardpeople enjoy these nuts (#64184)

(cherry picked from commit 61f7afc3e176dfb8508444931136178d8b264ea9)

* Automatic changelog generation for PR #64184 [ci skip]

(cherry picked from commit 3d7a593323cc2518930ba4dab20ed91d04bc5f76)

* Slightly* buffs Maint Drones (#64150)

    Increases drone health from 30 to 45, making it harder to instantly die from some things
    Lowers the range that drones can't do interactions from 4 tiles to 3 tiles
    Lowers stun time from 10 seconds to 7 seconds when EMP'd
    Wait time for when a mob has recently interacted with something has been decreased from 5 minutes to 1 minute
    Drones can now build near dead mobs, but not interact when right next to them (to prevent pulling)

Also adds a new argument for the shy component that allows interacting near dead bodies, but not right on top of them
Why It's Good For The Game

This is mainly for the QOL of Drones. I know "maint" is implied in the name of drones, but it sucks that you have to hide in maint for half the shift while all the airlocks are being opened by everyone, being unable to fix the station from explosions. Also even though the range was 4 tiles for interacting next to living mobs, it seemed a bit excessive when you tried to do stuff.
Changelog

cl
balance: Maintenance Drone health changed from 30 to 45
balance: Maintenance Drone stun times from getting EMP'd reduced from 10 seconds to 7 seconds
qol: Maintenance Drones can now interact near dead bodies
qol: Maintenance Drones don't have to wait 5 minutes to open an airlock when someone recently did it. Now they have to wait 1 minute.
qol: Changed distance Maintenance Drones aren't allowed to interact with anything from a nearby mob from 4 tiles to 3 tiles
/cl

(cherry picked from commit 1943b01766ebf279449128c6d39266c8cbea0215)

* Automatic changelog generation for PR #64150 [ci skip]

(cherry picked from commit 2d48341d80f7f2c1e6c6a3164994312869f7a4d6)

* Kinesis Module (#64151)

fixes #64029 (Springlock MOD module kills you even when you have Memento Mori necklace)
fixes #64136 (modsuits cant run out of charge)
fixes #64158 (trying to install a battery into a modsuit with free storage space places the battery into storage)
fixes #64186 (ModSuits : taking out cell doesn't give it back)
fixes #64161 (Modsuit cores disappear in construction)
makes mod jetpacks show particles indoors
gives the prototype suit back their upgraded cell (they literally lose 1% of power per 3 seconds with their current one)
Fully reworks the kinesis module to not be TK but lamer, it is now a gravitational anomaly locked module.

Unique stuff that can be used in fun scenarios

(cherry picked from commit 505e4414959d598c0d677a9bc734067a7bb513cd)

* Automatic changelog generation for PR #64151 [ci skip]

(cherry picked from commit 7a232be96b5fe53d1bd8265413e75d7667394993)

* Bump pillow from 8.3.2 to 9.0.0 in /tools (#64226)

Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.3.2 to 9.0.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/8.3.2...9.0.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit b85c96a8b9d8c57473ef3353c368008a227dee13)

* Fixes Modular Map Loading Runtimes (#64212)

## About The Pull Request

Moves the modmap root object's load_map() call to New(). This changes something about where it falls in init order that stops it from causing a flood of lighting runtimes. Don't ask my why, it just does.

## Why It's Good For The Game

Fixes #64192

(cherry picked from commit 60db0b4d3a2bf48cad1fa7e8411bc5facedf8bcc)

* Automatic changelog generation for PR #64212 [ci skip]

(cherry picked from commit d99ebcc7ae7d727984e03a91a404f2b0c4923eb0)

* Bumps bootstrapped python version to 3.7.9 (#64246)

From quick test all our helper scripts work fine on 3.7.
Why 3.7.9 instead of latest 3.7.12 ? Embed zips for these versions are missing from python.org ftp. (They apparently do not ship binaries for security-fix only releases)

(cherry picked from commit a1598e181c55798281533351712eb4fb2236ab4f)

* Fixed icebox cmo office maint door access (#64213)

Stops anyone with general medbay access from walking into the CMO's office from maint.

(cherry picked from commit d688c19b885ab7312f1915a3ce598927efa0309b)

* Automatic changelog generation for PR #64213 [ci skip]

(cherry picked from commit 7a24eea0bb30e1202a60e5fee1ea6850b869b9ef)

* Fixes the IceBox Pizza Ruin to have Proper Snow (#64206)

replaces the area turfs surrounding the pizzeria from "Mining" to "Mining Explore" so it can snow properly.

(cherry picked from commit e4387d44dd216632006d2977872e028edd20a833)

* Automatic changelog generation for PR #64206 [ci skip]

(cherry picked from commit e0c9cb8207912bb0ff0c35cb3da67b37b036fb9b)

* Fixes kilo pharmacy external door (#64214)

Removes the general medical access requirement from the kilo pharmacy's door to the lobby, so people with only pharmacy access can use it. Incidentally renames that door to no longer refer to the room as chemistry.

(cherry picked from commit 8d8084bca145ffb762fe36646ea6c742d9600c81)

* Automatic changelog generation for PR #64214 [ci skip]

(cherry picked from commit 96d933b07c4f64ef9a6e4e4510bbf1f2ca40011c)

* Fixes aiming at the click catcher. (#64147)

My PR to fix pixel aiming broke aiming when you were aiming at obscured turfs.
The click catcher was properly modifying the click target to be the turf under the click location,
but it was passing the `ICON_X` and `ICON_Y` variables on unmodified.
This means that instead of being measured from the bottom left corner of the turf you clicked on they were being measured from
roughly the bottom left corner of your screen.

This makes the click relevant click parsing proc also update the ICON_X and ICON_Y values of the click modifiers.

(cherry picked from commit 6cf97ad50e54541ecf84e609999ca8a028237042)

* Automatic changelog generation for PR #64147 [ci skip]

(cherry picked from commit e57173d4eee4a2d32fa5bd63b895ecc93a218f4a)

* Adds Thieves, a very low level antagonist. (#64144)

Co-authored-by: Mothblocks <[email protected]>
Co-authored-by: Kylerace <[email protected]>
(cherry picked from commit 0674d03b6c388042f169a60d9817e32bcb1de093)

* Automatic changelog generation for PR #64144 [ci skip]

(cherry picked from commit e400975ec47329e8dda39001d832b20ec5e1aff7)

* feex (#64201)

(cherry picked from commit cee2d452e23a6220c03b69e657678cff40fa8380)

* Automatic changelog generation for PR #64201 [ci skip]

(cherry picked from commit 58da76f095707db665603a326b66ec402e1d3e7a)

* Laundromatic (#64202)

clunk clunk clunk clunk clunk clunk clunk clunk

(cherry picked from commit 24dd854d2a40aac1359b20f56e26c3e52cb5f544)

* Automatic changelog generation for PR #64202 [ci skip]

(cherry picked from commit 585a46dc21f5b740113b77ddd6eb607cfaef0217)

* Automatic changelog compile [ci skip]

(cherry picked from commit 0c50e8a37e1bee5074e0b3dc733e1f796aecdb92)

* Suit storage items sprite fix (#64183)

This PR fixes the problem with missing texture when you put headset, spray can, card, crayon, seclite in suit storage.
I also fixes the cigpack suit storage east direction sprite because whoever ported it from belt forgot that sprite has different direction. (me)

(cherry picked from commit 7dda1fcc470f3759c29669d26c60aab9d939b60a)

* Automatic changelog generation for PR #64183 [ci skip]

(cherry picked from commit e82d3c2b3c55b44071c5aa85fb307e9634719b4c)

* Fixes Tramstation brigging (#64225)

(cherry picked from commit 3889c01a566126a3f67c9df1e6808b26ef65d96a)

* Automatic changelog generation for PR #64225 [ci skip]

(cherry picked from commit aa693d1ec90cb145d3f1e53037e26244490aeb88)

* Tweaks the blastcannon range a bit and makes it care about walls. (#63866)

* Tweaks blastcannon range and adds explosion block decrement

(cherry picked from commit f0313a242febbcc9db88f2b6d976f719fca0aca4)

* Automatic changelog generation for PR #63866 [ci skip]

(cherry picked from commit 06fd85781655b00bd38cc1f207c5cff9b0e2e428)

* Some costume and antag masks no longer have fov, like they didn't use to have tint. (#63571)

Syndicate, ninja, fugitive hunter masks and some costume masks (cyborg visor, plague doctor, carp, owl, monkey) no longer impair vision with field of vision cones.

(cherry picked from commit 4610891efe36abe516e4ee8238d47a8791ef781c)

* Automatic changelog generation for PR #63571 [ci skip]

(cherry picked from commit e93867cec696ec840266ce99da2a4b40f7a52197)

* paper rename cancel (#64191)

(cherry picked from commit 27647c4316a5eeb76ad97c85e83c7aeee592ddde)

* Automatic changelog generation for PR #64191 [ci skip]

(cherry picked from commit 1d5f38840766ea54febac37f8a3c5a8d2a374ad4)

* Make objectives actually fail when they should (#64194)

(cherry picked from commit 72bc1bc43eca746d8bc1346ffa39bd589b67f844)

* Automatic changelog generation for PR #64194 [ci skip]

(cherry picked from commit c2b83f78dd43a9ec57eac6a1c44202f83d4be9fc)

* Removes a leftover internal destroy objective (#64195)

* Removes internal destroy objective

* Solves merge conflict

(cherry picked from commit 8f0cda6a89df4d70095ac4a510cb16a6279e51d6)

* Adds logging to the tippable component (#64210)

* Adds logging to the tippable component
Headmin wanted it. Logs the tippable component if the tippable mob has
an active client (we don't want to log medbot flipping).

* better logging

(cherry picked from commit 8d7f94d81d72a0b114a8ede1c78360ff9ebcc386)

* Automatic changelog generation for PR #64210 [ci skip]

(cherry picked from commit 82d4db3920d8d66cc29e03778ca5916e2f15756b)

* Automatic changelog compile [ci skip]

(cherry picked from commit 0e1758b9f4e9d625621b3bb9db7f80a5c42981a1)

* Resprites the Pizzas, Mothic Pizzas and Pizza Boxes (#64111)

imageadd: Resprites Pizza and Pizza Boxes
(cherry picked from commit 220fa6555261aa959534d72868676f09d48b6ee8)

* Automatic changelog generation for PR #64111 [ci skip]

(cherry picked from commit 1e7e4f58d022b2c29c69a8bd23c0cc6cf29a4b99)

* Donkhiladas Foodtype Fix (#64241)

(cherry picked from commit 39aaa2306436276a8fd1868691f5d6b1691e26e2)

* Automatic changelog generation for PR #64241 [ci skip]

(cherry picked from commit 81230f3df02dcb8b71c206f69387f07496e0ea1d)

* Fixes a dead bartender spawning in the beach biodome ruin  (#64244)

* Fixes a dead bartender spawning in the beach biodome ruin
The map had a corpse mapped into the place where the ghost spawner
should have been.

* weird conflict change

* weird conflict change

* another one

(cherry picked from commit 1477dee3d202429c6eda70faa3d2543544e2cdda)

* Automatic changelog generation for PR #64244 [ci skip]

(cherry picked from commit 7e52f83a3d9c040ddf046072d6f2a6fa1507ff79)

* Fire alarms now prepend their area name like APCs and atmosphere alarms (#64252)

It can sometimes be hard to tell which area a fire alarm is for. This makes it clear which fire alarms you need to return to a normal temperature to raise the firelocks in a given area.

(cherry picked from commit 7fee7798ee62380ca35653c4555ed9ab389efdd8)

* Automatic changelog generation for PR #64252 [ci skip]

(cherry picked from commit 3dcc36bd2bce400ec74f0458c4a1faf5cc8d0081)

* Fixes multiz disposal trunks, as well as tramstation disposals loop. (#64139)

(cherry picked from commit 28303bfa634dd4e76d2bdff349e024628440d79c)

* Automatic changelog generation for PR #64139 [ci skip]

(cherry picked from commit 80ca40f9f34ca617d1fa8bb8b415de278ba14212)

* Tramstation Layering Fix (Minor) (#64251)

(cherry picked from commit 46cd8bdc3d3eb6f9e8302b20122361fe74ba5083)

* Automatic changelog generation for PR #64251 [ci skip]

(cherry picked from commit e380ec449c48fd44ecf7c9c5cd3b103aac21dda0)

* DELTASTATION: Atmopsherics revamp, engineering touch-up (+Beefs up service maintenance) (#64203)

(cherry picked from commit c624ff8cda4bd3503db0d8f25bafbe78c8959d67)

* Automatic changelog generation for PR #64203 [ci skip]

(cherry picked from commit 9e850b01d035e5eb18fdefccd24c210a41f1c417)

* Fixed tagger destinations (#64259)

(cherry picked from commit c6f23d45adb537cfb8a1fca6a6aa76e85fcbe608)

* Automatic changelog generation for PR #64259 [ci skip]

(cherry picked from commit d5cb4288ec5f7cb9fb5b6f6e798f4c64cd82cd09)

* Fixes funky magic item teleportation (#64263)

Space drifting "listened" for moves outside of its expected range, and if it saw them it would self delete
The problem is it registered for this behavior in drifting_start(), which was intended to be called by the MOVELOOP_START signal

But because that signal was fired as a consequence of move() being called, we never registered the signal
So if you took an item out of your pack, when it hit the ground it would get the drifting component
Next tick it would be drift moved to its intended location, the move would "fail", and then it would stop
This lead to items being visually in your inventory, but not functionally
Which leads to a lot of really weird behavior

Oh and I added a var to moveloops that's just "are we running" to make solving this class of issue easier

(cherry picked from commit da20556050c0bd0ed549c4535aa4cff2f345c85f)

* Automatic changelog generation for PR #64263 [ci skip]

(cherry picked from commit 43eb4bad7a5e4ad1d20a19514bd824fbf9719e5a)

* Fixes soulful toolboxes icons (#64235)

(cherry picked from commit 9eb485abb80afdd507ecb9201e591ff4aabbfbc3)

* Automatic changelog generation for PR #64235 [ci skip]

(cherry picked from commit e318e871e530094b47e9a9994bb81f4bc1788ecc)

* Replace Plasma Cutter EMP effect (#64073)

Fixes 43685

(cherry picked from commit dff8d8fb0585115fb1be6b7337ae061030593015)

* Automatic changelog generation for PR #64073 [ci skip]

(cherry picked from commit 3010d1adb62d96709001141aafce173e0a5c0d56)

* Boomerang behavior is now defined as a component. (#63949)

Fully refactors boomerang behavior to work as a component, so that a thrown boomerang will return back to it's thrower if within range. More than anything this modularizes the behavior for the backend,

(cherry picked from commit ce2fe57063b6280fc27da6387410e7b627649aa9)

* Automatic changelog generation for PR #63949 [ci skip]

(cherry picked from commit 58db569fa3819e046670fbbf77b2901e8553ec84)

* drone fix (speedmerge?) (#64275)

* makes shy component for drones use Adjacent() instead of DirectAccess()

(cherry picked from commit 2c8499b4617c77267b1c411f97c86042ed87d03a)

* fixes mod devices permanently fucking up (#64237)

if you couldnt equip a device, it would drop it on the ground and fuck up being a nodrop item, fixes that
fixes the modsuit outfits not having internal slots set
adds feedback to not being able to turn on a module due to suit not being active

(cherry picked from commit 0ba4436dd9b06fce9d111deebcb0c4a0c9a14875)

* Automatic changelog generation for PR #64237 [ci skip]

(cherry picked from commit 4045dd028872dbcb3b06bfd25b767dc404fcd130)

* Fixes big melons losing their size sometimes (#64272)

When I added a drop animation, I forgot that things other then item animations can modify transform
In the spirit of this, I've ensured that other animations maintain the proper scale

(cherry picked from commit 68ba7388e22fec7c1c83004d51da783d74499fed)

* Automatic changelog generation for PR #64272 [ci skip]

(cherry picked from commit 485e6d3b1b7d1d354428026f6e957b61e1c8a2e9)

* Disposal/Move loop fixes (#64236)

Fixes misc moveloop runtimes souced by mid move deletes and disposal loop traps, this was caused by a misunderstood bit of logic. current_pipe needs to be set to the actual return value of transfer() rather then our current location

(cherry picked from commit fb0403a4d84deb26bdebd195de7763560ed50b18)

* Automatic changelog generation for PR #64236 [ci skip]

(cherry picked from commit 3ac34dac4e5519e8a7042de9523c76570241fff4)

* Fixes camera assemblies being unupgradable (#64188)

(cherry picked from commit 21dbf5fd8092f1e8760b5c4eea7e73bf47e62e84)

* Automatic changelog generation for PR #64188 [ci skip]

(cherry picked from commit f2247601431ac42a369ead598b6e425d2f97268d)

* Adds a reminder to use magboots to the supermatter sliver extraction guide (#64178)

(cherry picked from commit 142b3a08aba7f90f7ddf8da20a762a6a95ed541a)

* Automatic changelog generation for PR #64178 [ci skip]

(cherry picked from commit ce70c9cf08f87e36e8a71aa59b1af4859b98a922)

* Fixes cyborg light overlay not showing when the light is off (#64279)

Borgs have a lightbulb overlay. The plane of the overlay depends on the status of the lights, so as to glow when on. The plane being used for disabled lights no longer shows above mobs for reasons I do not know. But this plane (-2) works.

(cherry picked from commit b6f32d464730c8e7e65691adb4f073a6efdb3cc7)

* Automatic changelog generation for PR #64279 [ci skip]

(cherry picked from commit 642bf163c2155624d63d33f1911fa06124a3475f)

* Fixes Scrubber Icons While Mapping(!) (as well as other preventative measures) (#64204)

* WOOOOOOO

i figgered it out and it works in sdmm and doesn't fuck up the way the icons update in game i am so fucking swag

* requested changes

per

(cherry picked from commit a76cbbdec6054930e1b08cbacb6983178569a913)

* Automatic changelog generation for PR #64204 [ci skip]

(cherry picked from commit 00d17331159218cd5541db2e0f2f86144efb4dbc)

* Tritiumfire radiation changes. (#63923)

Tritium fire will need a certain amount of energy released from the reaction in order to release radiation. The larger the volume of the gasmix, the more energy (so more tritium needed) needs to get released to pass the threshold. It's not a very high threshold, but it should stop the small amounts of tritium burning from plasmafires in waste from randomly releasing radiation around the station. The chance of irradiation depends on how much energy gets released, receiving about a 50% chance to irradiate you for every 1.68GJ (about 60 moles of tritium burned in high energy reaction, which needs 600 moles of tritium) released. The range of the radiation pulse is increased by 6 tiles, but will need more energy released to increase it, which is intended for the incinerator.

Plasmafires can produce tritium if there's a lot more oxygen than plasma, and that tritium usually gets burned. This is a pretty common reaction that can occur in waste, especially in DeltaStation where engine waste goes to waste by default. This can cause random items and even people to get randomly irradiated if they stand too close to waste, and they won't even know why, which sucks. This PR aims to reduce that significantly by adding higher requirements in order to irradiate, especially for large pipenets, and reduces the chance of low amounts of tritium irradiating significantly.

(cherry picked from commit a74be0b52ab82593622b5a56b0de1d68116a1456)

* Automatic changelog generation for PR #63923 [ci skip]

(cherry picked from commit 2e7f5b3c5f66443c9abc9d6e160e5b8482a4b7dd)

* Automatic changelog compile [ci skip]

(cherry picked from commit c81b9779e3132e94d51008bd8a202be8442b208e)

* Fixes volume pump runtime. remove_ratio() will return a new gasmixture instead of null if the parameter is <= 0. (#64074)

remove_ratio() returns null if the parameter is 0 for some reason (in this case, transfer_rate being 0), which will shortly cause a runtime since something called removed.total_moles() when removed is null. This changes remove_ratio() to return a new gasmixture instead of null when parameter is below or equal to 0.

The current thought is it is reasonable to expect callers of remove_ratio to check for the amount removed if that's something they care about. I assume if you're reading this that turned out to be false.
-Lemon

(cherry picked from commit 22e85f046f6471a96c1cb522c3d3a65dbe51f9c1)

* Automatic changelog generation for PR #64074 [ci skip]

(cherry picked from commit a42852b3796a100ecb04b8811936e90198bba4a8)

* Traitor Roboticists can now purchase the Springlock MODsuit Module from the uplink. (#64224)

Lets them upgrade their suit to be much stronger, while coming at a risk, or place it in other suits to sabotage them.

(cherry picked from commit c2d7fcffc58fc8b76c7cbb3e2939d64e0e29e213)

* Automatic changelog generation for PR #64224 [ci skip]

(cherry picked from commit 4f7ed463a0cb6cdb5efd25ffd43692b557d02114)

* Minor fixes for Deltastation Ordnance Lab (#64268)

(cherry picked from commit 3aba6dc3a2fac6ee55329e2cc19e5e469e378997)

* Automatic changelog generation for PR #64268 [ci skip]

(cherry picked from commit f7ba0400cd2cb491ec07ff68464261112bda5880)

* Bamboo Overhaul (Port of Beestation Hornet #5703) (#64027)

Adds several new bamboo items + sprites

(cherry picked from commit 16729429ab58e52d401f7caee909100b5befa86e)

* Automatic changelog generation for PR #64027 [ci skip]

(cherry picked from commit 79b0e91f6cc015af484069ff19cfadb7c3a90eb4)

* Refactors AI law announcing (#64199)

This had some weird list manipulation, and generally just a weird
structure. I changed it to hold every law it's announcing to be
contained within a list, rather than just have a list of Yeses and Nos.
The old functionality also increased the length of this list each time
laws were checked, meaning theoretically this could cause high memory
usage issues. Anyways... fixed all that.

(cherry picked from commit b42c6bb8894c3ee33fa25d04ac80a64656147040)

* Automatic changelog generation for PR #64199 [ci skip]

(cherry picked from commit ff5c51f50732ae7fbae284f8d13af4d9bb63746c)

* Allows cyborgs to quicken their self untip time with roleplay (#64228)

(halves their untip timer when they emote, only works once)

(cherry picked from commit 2c87299245c0523c77fea1e30da3c752765e2127)

* Automatic changelog generation for PR #64228 [ci skip]

(cherry picked from commit 8fbf3c9fff94e7a33fc122bfd566b4f0aecfd8ba)

* cannon or not (#64088)

(cherry picked from commit 05f68d106bc86b3addb32f80552fdf58606e142b)

* Automatic changelog generation for PR #64088 [ci skip]

(cherry picked from commit 3250d5be83c71684c456f6c499d98855938160e0)

* Properly speeds up a lot of things, mostly mobs (#64270)

When I made my move loop changes (815bb8a) 62567, I converted a few walk() procs to
the new system
What I didn't know when I did that conversion is that walk() operates on ticks, when move loops operate on
deciseconds

So when I converted say, mob movement over, I accidentially halved the attack movespeed of all of our mobs

This resolves that, alongside a few other misteps

Of note: There are old comments implying that walk()'s delay is not actually linear, or simply as the reference says "in ticks"
I don't have a good idea of how fast things actually should be though, which makes this tricky

In light of this, I've decreased the move speed of legion slightly, in hopes that it will feel more "normal"

I've also fixed a bug with move_to and move_away, they were treating their distance parameters as move to this and one more, rather then move to this. This lead to mobs attempting to overlap with your sprite. s cringe, and also fixed

(cherry picked from commit a83657438836c4a4da02bea29047e9a0a9427a4f)

* Automatic changelog generation for PR #64270 [ci skip]

(cherry picked from commit 4c1d779581bfcd1af591c8b44c4016316d76947b)

* let's go (#64291)

Apparently, the current sound we know as goon/sounds/effects/spring.ogg is actually this sound, sourced from freesound.org. If you take a look at the licensure screen, you'll see that it's public domain. Creative Commons 0. Wow!

(cherry picked from commit 1a1b8c532664cb3f745cb3a2cd4944c7efeb1609)

* Automatic changelog generation for PR #64291 [ci skip]

(cherry picked from commit 57e0c55bda44a055dd4fab3ab1eb8e4033532a2a)

* Standardizes + Adds some more variety to the ninja / traitor communications console hack  (#64093)

Standardizes the two functions of hacking the communications console between ninjas and traitors. The code was copy pasted for some reason.
Adds in 3 new options for hack results, resulting in 4 total:
If there are >4 ghosts and the map is in space, it can summon Pirates
If there are >6 ghosts and the map is in space, it can summon Fugitives
If less than 20% of the players are ghosts, it can inject 1-3 Syndicate Sleeper Agents into the crew
Lastly, it can flat inject 15 threat into the round. (the "default" option)

(cherry picked from commit a5de4de5ecb8078511f247d957fac2f9dfff01ba)

* Automatic changelog generation for PR #64093 [ci skip]

(cherry picked from commit 7c7362836e89a3e1d5515456bfbf413fc084dfa5)

* Moves atmos checking from Fire Alarms to Fire Locks, Fire Locks now close on their own rather than area-based, a bunch of related stuff. (#62055)

Moves hot/cold checks to the fire locks
Makes detection due to above only close the affected Fire Lock and its neighbors (via merge code stolen from tanks)
Fire Alarms still can lock an area down if clicked by a user, right clicking is now the reset function. Resetting also resets all Fire Locks closed by their own detection.
Gives Fire Locks an overlay of lights that display the reason it closed (Orange for Hot, Cyan for Cold, White for unknown/Fire Alarm Pulled)
Emagging a Fire Alarm now emags all Fire Locks in the area, which accomplishes the same effect as before (disables atmos monitoring). Pulling a Fire Alarm will make emagged Fire Locks in the area display a corrupted warning light pattern, making finding and replacing emagged Fire Locks somewhat easier.
Silicons can disable atmos sensors in an area by CTRL-Clicking a Fire Alarm, much like before. but now the Fire Alarms in the area will change their sprite to hint at this (the normally-green light will turn off).

Makes a breach or fire not cause Fire Lock Hell anymore. Only the Fire Locks facing an issue will tend to close, leaving the rest of the area mostly unaffected.

This needs some work done to make it detect based on edges, but it's a decent enough start to live with if we're all killed by meteors (Lemon)

* Automatic changelog generation for PR #62055 [ci skip]

* Fix: Avoid timer scheduling too far events into short queue (#64242)

Previously it was possible for events to enter the short queue when the timer is offset by more than BUCKET_LEN
Now it is forced to schedule events into the second queue if the timer is processing slower then world time goes allowing the timer to keep up

This PR provides a better definition of TIMER_MAX to avoid scheduling timed events that are more than one window of buckets away in terms of timeToRun into buckets queue and properly passing them into the second queue.

Ports ss220-space/Paradise#578

Should be merged with/after #64138
Detailed explanation

The timer subsystem mainly uses two concepts, buckets, and second queue

Buckets is a fixed-length list of linked lists, where each "bucket" contains timers scheduled to run on the same tick
The second queue is a simple list containing sorted timers that scheduled too far in future

To process buckets, the timer uses two variables named head_offset and practical_offset

head_offset determines the offset of the first bucket in time
while practical_offset determines offset from bucket list beginning

There are two equations responsible for determining where timed event would end up scheduled
TIMER_MAX and BUCKET_POS

TIMER_MAX determines the maximum value of timeToRun for timed event to schedule into buckets and not the second queue
While BUCKET_POS determines where to put timed event relative to current head_offset

Let's look at BUCKET_POS first
BUCKET_POS(timer) = (((round((timer.timeToRun - SStimer.head_offset) / world.tick_lag)+1) % BUCKET_LEN)||BUCKET_LEN)

Let's imagine we have our tick_lag set to 0.5, due to that we will have BUCKET_LEN = (10 / 0.5) * 60 = 1200
And head_offset of 100, …
  • Loading branch information
Show file tree
Hide file tree
Showing 1,962 changed files with 136,093 additions and 86,134 deletions.
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
# MAINTAINERS

# CONTRIBUTORS

2 changes: 2 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ Things you **CAN'T** do:

[AI Datums](../code/datums/ai/making_your_ai.md)

[MC Tab Guide](./guides/MC_tab.md)

## Pull Request Process

There is no strict process when it comes to merging pull requests. Pull requests will sometimes take a while before they are looked at by a maintainer; the bigger the change, the more time it will take before they are accepted into the code. Every team member is a volunteer who is giving up their own time to help maintain and contribute, so please be courteous and respectful. Here are some helpful ways to make it easier for you and for the maintainers when making a pull request.
Expand Down
1 change: 1 addition & 0 deletions .github/gbp.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ no_balance_label = "GBP: No Update"
reset_label = "GBP: Reset"

[points]
"Accessibility" = 3
"Administration" = 2
"Atomic" = 2
"Balance/Rebalance" = -8
Expand Down
36 changes: 36 additions & 0 deletions .github/guides/MC_tab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
The MC tab hold information on how the game is performing. Here's a crash course on what the most important of those numbers mean.

If you already know what these numbers mean and you want to see them update faster than the default refresh rate of once every 2 seconds, you can enable the admin pref to make the MC tab refresh every 4 deciseconds. Please don't do this unless you actually need that information at a faster refresh rate since updating every subsystems information is expensive.

# Main Entries:

* CPU: What percentage of a tick the game is using before starting the next tick. If this is above 100 it means we are over budget.

* TickCount: How many ticks should have elapsed since the start of the game if no ticks were ever delayed from starting.

* TickDrift: How many ticks since the game started that have been delayed. Essentially this is how many ticks the game is running behind. If this is increasing then the game is currently not able to keep up with demand.

* Internal Tick Usage: You might have heard of this referred to as "maptick". It's how much of the tick that an internal byond function called SendMaps() has taken recently. The higher this is the less time our code has to run. SendMaps() deals with sending players updates of their view of the game world so it has to run every tick but it's expensive so ideally this is optimized as much as possible. You can see a more detailed breakdown of the cost of SendMaps by looking at the profiler in the debug tab -> "Send Maps Profile".

# Master Controller Entry:

* TickRate: How many Byond ticks go between each master controller iteration. By default this is 1 meaning the MC runs once every byond tick. But certain configurations can increase this slightly.

* Iteration: How many times the MC has ran since starting.

* TickLimit: This SHOULD be what percentage of the tick the MC can use when it starts a run, however currently it just represents how much of the tick the MC can use by the time that SSstatpanels fires. Someone should fix that.

# Subsystem Entries:

Subsystems will typically have a base stat entry of the form:
[ ] Name 12ms|28%(2%)|3

The brackets hold a letter if the subsystem is in a state other than idle.

The first numbered entry is the cost of the subsystem, which is a running average of how many milliseconds the subsystem takes to complete a full run. This is increased every time the subsystem resumes an uncompleted run or starts a new run and decays when runs take less time. If this balloons to huge values then it means that the amount of work the subsystem needs to complete in a run is far greater than the amount of time it actually has to execute in whenever it is its turn to fire.

The second numbered entry is like cost, but in percentage of an ideal tick this subsystem takes to complete a run. They both represent the same data.

The third entry (2%) is how much time this subsystem spent executing beyond the time it was allocated by the MC. This is bad, it means that this subsystem doesn't yield when it's taking too much time and makes the job of the MC harder. The MC will attempt to account for this but it is better for all subsystems to be able to correctly yield when their turn is done.

The fourth entry represents how many times this subsystem fires before it completes a run.
17 changes: 16 additions & 1 deletion .github/guides/STANDARDS.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,14 +321,29 @@ However, DM also has a dot variable, accessed just as `.` on its own, defaulting

With `.` being everpresent in every proc, can we use it as a temporary variable? Of course we can! However, the `.` operator cannot replace a typecasted variable - it can hold data any other var in DM can, it just can't be accessed as one, although the `.` operator is compatible with a few operators that look weird but work perfectly fine, such as: `.++` for incrementing `.'s` value, or `.[1]` for accessing the first element of `.`, provided that it's a list.

### The BYOND walk procs

BYOND has a few procs that move one atom towards/away from another, `walk()`, `walk_to()`, `walk_towards`, `walk_away()` and `walk_rand()`.

The way they pull this off, while fine for the language itself, makes a mess of our master-controller, and can cause the whole game to slow down. Do not use them.

The following is a list of procs, and their safe replacements.

* Removing something from the loop `walk(0)` -> `SSmove_manager.stop_looping()`
* Move in a direction `walk()` -> `SSmove_manager.move()`
* Move towards a thing, taking turf density into account`walk_to()` -> `SSmove_manager.move_to()`
* Move in a thing's direction, ignoring turf density `walk_towards()` -> `SSmove_manager.home_onto()` and `SSmove_manager.move_towards_legacy()`, check the documentation to see which you like better
* Move away from something, taking turf density into account `walk_away()` -> `SSmove_manager.move_away()`
* Move to a random place nearby. NOT random walk `walk_rand()` -> `SSmove_manager.move_rand()` is random walk, `SSmove_manager.move_to_rand()` is walk to a random place

### BYOND hellspawn

What follows is documentation of inconsistent or strange behavior found in our engine, BYOND.
It's listed here in the hope that it will prevent fruitless debugging in future.

#### Icon hell

The ‘transparent’ icon state causes fucked visual behavior when used on turfs, something to do with underlays and overlays.
Due to how they are internally represented as part of appearance, overlays and underlays which have an icon_state named the same as an icon_state on the parent object will use the parent's icon_state and look completely wrong. This has caused two bugs with underlay lighting whenever a turf had the icon_state of "transparent" or "dark" and their lighting objects also had those states - because when the lighting underlays were in those modes they would be rendered by the client to look like the icons the floor used. When adding something as an overlay or an underlay make sure it can't match icon_state names with whatever you're adding it to.

## SQL

Expand Down
34 changes: 31 additions & 3 deletions SQL/database_changelog.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,41 @@
Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255.

The latest database version is 5.20; The query to update the schema revision table is:
Make sure to also update `DB_MAJOR_VERSION` and `DB_MINOR_VERSION`, which can be found in `code/__DEFINES/subsystem.dm`.

INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 20);
The latest database version is 5.21; The query to update the schema revision table is:

INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 22);
or
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 20);
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 22);

In any query remember to add a prefix to the table names if you use one.

Version 5.22, 22 December 2021, by Mothblocks
Fixes a bug in `telemetry_connections` that limited the range of IPs.

```
ALTER TABLE `telemetry_connections` MODIFY COLUMN `address` INT(10) UNSIGNED NOT NULL;
```
-----------------------------------------------------

Version 5.21, 15 December 2021, by Mothblocks
Adds `telemetry_connections` table for tracking tgui telemetry.

```
CREATE TABLE `telemetry_connections` (
`id` INT NOT NULL AUTO_INCREMENT,
`ckey` VARCHAR(32) NOT NULL,
`telemetry_ckey` VARCHAR(32) NOT NULL,
`address` INT(10) NOT NULL,
`computer_id` VARCHAR(32) NOT NULL,
`first_round_id` INT(11) UNSIGNED NULL,
`latest_round_id` INT(11) UNSIGNED NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `unique_constraints` (`ckey` , `telemetry_ckey` , `address` , `computer_id`)
);
```
-----------------------------------------------------

Version 5.20, 11 November 2021, by Mothblocks
Adds `admin_ckey` field to the `known_alts` table to track who added what.

Expand Down
16 changes: 16 additions & 0 deletions SQL/tgstation_schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -677,6 +677,22 @@ CREATE TABLE `known_alts` (
UNIQUE INDEX `unique_contraints` (`ckey1` , `ckey2`)
);

--
-- Table structure for table `telemetry_connections`
--
DROP TABLE IF EXISTS `telemetry_connections`;
CREATE TABLE `telemetry_connections` (
`id` INT NOT NULL AUTO_INCREMENT,
`ckey` VARCHAR(32) NOT NULL,
`telemetry_ckey` VARCHAR(32) NOT NULL,
`address` INT(10) UNSIGNED NOT NULL,
`computer_id` VARCHAR(32) NOT NULL,
`first_round_id` INT(11) UNSIGNED NULL,
`latest_round_id` INT(11) UNSIGNED NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `unique_constraints` (`ckey` , `telemetry_ckey` , `address` , `computer_id`)
);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
Expand Down
16 changes: 16 additions & 0 deletions SQL/tgstation_schema_prefixed.sql
Original file line number Diff line number Diff line change
Expand Up @@ -677,6 +677,22 @@ CREATE TABLE `SS13_known_alts` (
UNIQUE INDEX `unique_contraints` (`ckey1` , `ckey2`)
);

--
-- Table structure for table `telemetry_connections`
--
DROP TABLE IF EXISTS `SS13_telemetry_connections`;
CREATE TABLE `SS13_telemetry_connections` (
`id` INT NOT NULL AUTO_INCREMENT,
`ckey` VARCHAR(32) NOT NULL,
`telemetry_ckey` VARCHAR(32) NOT NULL,
`address` INT(10) UNSIGNED NOT NULL,
`computer_id` VARCHAR(32) NOT NULL,
`first_round_id` INT(11) UNSIGNED NULL,
`latest_round_id` INT(11) UNSIGNED NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `unique_constraints` (`ckey` , `telemetry_ckey` , `address` , `computer_id`)
);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
Expand Down
6 changes: 3 additions & 3 deletions _maps/RandomRuins/AnywhereRuins/golem_ship.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
"m" = (
/obj/effect/mob_spawn/human/golem/adamantine,
/obj/effect/mob_spawn/ghost_role/human/golem/adamantine,
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
"n" = (
Expand Down Expand Up @@ -208,7 +208,7 @@
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
"M" = (
/obj/effect/mob_spawn/human/golem/adamantine,
/obj/effect/mob_spawn/ghost_role/human/golem/adamantine,
/obj/machinery/light/small/directional/north,
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
Expand All @@ -230,7 +230,7 @@
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
"U" = (
/obj/effect/mob_spawn/human/golem/adamantine,
/obj/effect/mob_spawn/ghost_role/human/golem/adamantine,
/obj/machinery/light/small/directional/south,
/turf/open/floor/mineral/titanium/purple,
/area/ruin/powered/golem_ship)
Expand Down
4 changes: 2 additions & 2 deletions _maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
/turf/open/floor/bronze,
/area/icemoon/surface)
"h" = (
/obj/effect/mob_spawn/human/skeleton,
/obj/effect/mob_spawn/corpse/human/skeleton,
/obj/item/clothing/suit/bronze,
/obj/item/clothing/shoes/bronze,
/obj/item/clothing/head/bronze,
Expand Down Expand Up @@ -56,7 +56,7 @@
/turf/open/floor/bronze,
/area/icemoon/surface)
"J" = (
/obj/effect/mob_spawn/human/skeleton,
/obj/effect/mob_spawn/corpse/human/skeleton,
/turf/open/floor/bronze,
/area/icemoon/surface)
"K" = (
Expand Down
Loading

0 comments on commit 4eb12b7

Please sign in to comment.