Commit Graph

15139 Commits

Author SHA1 Message Date
Luc
4fd16bcbdb Make more use of <tool>_act (#64375)
Replaces a bunch of tool behavior checks in attackby to instead use the respective procs.
For instance, the behavior under a if(I.tool_behaviour == TOOL_SCREWDRIVER) check in attackby() will instead be found under that same object's screwdriver_act() proc. This is the first of a few PRs that I'd like to make to address this, since there's going to be a lot of code shuffled around.

This shouldn't have any impact on players, though some super observant folks might notice that they don't bash some items with tools when they meant to interact with them. I've tested all of these in game and they seem to still have the same behavior as before.
2022-01-25 15:17:30 +00:00
Imaginos16
25bd0e545b Some Command Resprites (#64377)
Resprites captain, centcom, and HoS outfits
2022-01-25 00:03:54 -05:00
magatsuchi
00c9ee3fab Fixes bamboo spear not using ComponentInitialize 2022-01-24 08:48:04 -05:00
LemonInTheDark
8f32cbe38d Reworks janitor cyborg cleaning, focus on the slipping (#64131)
Alt of #64105 and #64126 (I'm sorry Novva, I should have said something earlier)
I main janitor. As a janitor main, my greatest joy in life is slipping people who ignore my signs

I've seen some people complain about janitor borgs, so I decided to look into em

Unfortunately, not only is the janitor borg just a straight upgrade to janitors, it has absolutely no reason to use most of its kit
We give it standard cleaning supplies, and hell even bespoke tools to deal with leaving slippery tiles everywhere, but we also just let them clean anything they can walk over

This seems a bit too much to me, even for borgs. Also it's like, really boring

So what if we made their movement based cleaning cost something? How about we make it suck water from their bucket. Use the same pattern as mop code, make it twice as expensive though. Give it a slowdown, some sound cues, and an action button to trigger it all
2022-01-24 11:59:02 +00:00
ErdinyoBarboza
ab9aea7412 Semkis and Pistachios! Come get your snacks + Snack Items Name Fixes (#64276)
Snack time
2022-01-24 01:28:07 -05:00
Tim
14deaa41ed Remove code/__DEFINES/misc.dm (#63879)
This removes code/__DEFINES/misc.dm and moves all the defines to either:

another existing define file
new define file
local .dm file if the define was only used in one file
I also deleted defines that were not being used and added documentation to all of the ones that were moved out of misc.dm

Why was this needed? People were basically using the misc.dm file as a dumpster to toss all their defines into that was creating one giant mess. The defines have been organized into their proper groups and files now.
2022-01-23 14:30:27 -08:00
MrMelbert
72d1fd030c nerf da crowbar (#64317) 2022-01-23 11:26:24 -07:00
ErdinyoBarboza
979870a552 Tech Storage Service Gets Updated (#64278) 2022-01-23 00:01:15 -08:00
LemonInTheDark
5ee5efbcd8 Hopefully fixes another source of long timer singlecaps (#64316)
* Hopefully fixes another source of long timer singlecaps

Very similar to 87fbe4c205 (#62415)

Got a ping from mothblocks complaining about "Mass bombing" and "Unplayable rounds" on sybil, caused by long timer singlecaps.
I'm like 90% sure they're using bz's slow heating to achieve this. So I'm just gonna cap bz production at 20 degress above room temp. It's not like you're going to be doing fabrication at this temperature anyway, so this isn't horribly impactful.

For the curious among you, bz scales its temperature increase inversely to its pressure, among other factors.
This scaling is VERY harsh, so at high pressures it barely creates any heat at all.

Insert discussion of single caps, cursed problems, and salt prs here.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-01-22 23:46:15 -08:00
Blevruz
59eefab93b Adds circuit USB for reflectors (#64037)
Reflectors get USB ports. You can put in an angle and, if the reflector is unlocked, it goes to that angle when the component is triggered.

Fun new uses for circuits! Fun new uses for the trig module!! We love lasers!!!
2022-01-22 16:01:22 -08:00
Riggle
a7232408cf Resprites toolboxes (#64298)
New sprites. Do I need to say anything more? Goon folder begone.
2022-01-22 13:54:36 -08:00
zxaber
4383df09ae 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)
2022-01-22 01:36:03 -08:00
san7890
1a1b8c5326 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!
2022-01-21 23:59:07 -08:00
LemonInTheDark
a836574388 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
2022-01-21 23:57:36 -08:00
itseasytosee
05f68d106b cannon or not (#64088) 2022-01-21 19:55:33 -08:00
OrionTheFox
16729429ab Bamboo Overhaul (Port of Beestation Hornet #5703) (#64027)
Adds several new bamboo items + sprites
2022-01-21 19:53:36 -06:00
YakumoChen
142b3a08ab Adds a reminder to use magboots to the supermatter sliver extraction guide (#64178) 2022-01-21 13:53:53 -06:00
LemonInTheDark
68ba7388e2 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
2022-01-21 13:49:19 -06:00
ArcaneMusic
ce2fe57063 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,
2022-01-21 02:19:24 -06:00
ErdinyoBarboza
39aaa23064 Donkhiladas Foodtype Fix (#64241) 2022-01-20 19:46:13 -05:00
John Willard
3889c01a56 Fixes Tramstation brigging (#64225) 2022-01-19 23:19:57 -08:00
Tortoise
7dda1fcc47 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)
2022-01-19 21:50:45 -08:00
Fikou
505e441495 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
2022-01-18 16:30:11 -08:00
ShizCalev
7b471582d8 Fixes some mapping errors not using the mapping error log. (#64114)
Should help prevent #64066 from reoccurring.
2022-01-18 12:18:04 -05:00
John Willard
1120a8cce2 fixes typo in exploration drone's computer console (#64101) 2022-01-17 22:42:04 -06:00
Wallem
71162dee9b 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.
2022-01-17 22:37:44 -06:00
san7890
6dca51598a MULTI-Z IceBoxStation Locker Room (Laundromat Diplomat) (#64055) 2022-01-17 18:13:37 -07:00
sergeirocks100
2adbc72d92 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).
2022-01-18 11:17:49 +13:00
MrMelbert
95d2bc3946 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.
2022-01-16 16:24:38 -08:00
dragomagol
ced9c998cf Safe code documentation (#64096)
Adds better documentation and variable naming to safe code. Also removed one variable that hasn't done anything in years.
2022-01-16 15:32:29 -08:00
LemonInTheDark
815bb8ae40 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 <rohesie@gmail.com>

* 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 <kylerlumpkin1@gmail.com>

* 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 <kylerlumpkin1@gmail.com>

* 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 <rohesie@gmail.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-01-16 14:58:41 -08:00
Seth Scherer
8abb195458 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
2022-01-17 09:54:42 +13:00
LemonInTheDark
eb2627fb21 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
2022-01-15 22:44:35 +00:00
DragonTrance
12b9f31c44 In Soviet Nanotransen, Tram consume you! (#63643)
* stops the tram from consuming the SM
2022-01-15 15:09:48 -06:00
Ryll Ryll
4f8e007b4d Ports flying bloodsplatters from Hippie for Wounds (#63140)
add: Suffering slashing or piercing wounds, as well as violent dismemberment
2022-01-15 10:34:51 -05:00
Fikou
fd9a7f8a58 MOD update: Modular Cores (#64042)
* Modsuit update - Cores
2022-01-15 13:54:53 +01:00
John Willard
3886c40311 Fixes assigning timers to prisoner IDs (for Tramstation) (#64060) 2022-01-14 22:19:02 -05:00
RaidenKoizuma
6c6ca3e44d Adds medical department medals (updated sprites) (#64076)
* initial sprites and code work

* Update accessories.dmi

* changed color to blue and made worn sprites smaller, testing

* updated sprites, made them much smaller and color scheme is fixed
2022-01-14 19:03:53 -05:00
Timberpoes
8307326dbe Fix card decks hard deleting due to playing cards holding a reference to them. (#64026)
For (as of the time of writing) unknown reasons, CI is intermittently failing on playing cards holding references to their parent decks when the parent decks are deleted.

While we haven't yet figured out why the failures are intermittent, I suspect there's some non-deterministic method of processing the del queue or something else where sometimes the card is deleted first (no problem!) and sometimes a parent deck is deleted before all cards that reference it (problem!).

In the meantime, the root cause of the hard del itself is that cards never let go of any references they hold to their parent deck once set.

Fixes the hard del causing the CI issue. Why the hard del is only intermittently happening on CI is an investigation for far smarter people than I.
2022-01-14 13:08:13 -08:00
Ghom
c1b673ebc2 Fixed some smoking pipe and cigarette bugs and copypasta. (#63908)
* Fixed some smoking pipe bugs and copypasta.
2022-01-14 14:52:17 +01:00
OrionTheFox
1b84112dba [READY] Adds the Hat Stabilizer Module, inbuilt to the Captain and CC MODsuits (#63795)
The Hat Stabilizer Module lets you balance hats on top of your modsuit. Neat!
2022-01-14 02:06:26 -08:00
John Willard
7bead07444 General pAI code improvements (#63688)
Fikou said they would've made MODsuits be controllable by pAI's rather than AI's, if pAI code wasn't as bad.

But pAI code ISN'T AS BAD AS AI CODE LIKE HOLY SHIT WHAT THE FUCK MAN???

Anyways, this is just general code improvements for pAIs that I thought would be nice to have.

Documents previously undocumented vars
Moves loose vars to be where they should be
Removes single-letter variables
Makes pAI a defined job
Moves vars around to where they should be while removing unused ones.
Makes pAI abilities its own .dm file
Replaces var/silent with Stun() (like cyborgs)
Reworks pAI's doorjack to not have a ton of procs, copy paste, and a reliance on Life(), instead it just uses a do_after()
Moves screwdrivering radios from attackby to screwdriver_act

Just general code improvement for Silicon, the thing no one likes or wants to touch.
2022-01-13 22:19:28 -08:00
tralezab
a61b884f30 Time Eradication Modsuits (#63999)
* reworks chrono legionnaire into a MODsuit + modules

* organizes MODsuit files
2022-01-13 23:44:45 -06:00
san7890
7af02f04f5 FIXED BEDSHEETS (#64024)
they're fixed now!!!
2022-01-13 17:18:38 -05:00
Seth Scherer
1153404903 Separates cult object and cult effect sprites into their own folders (#64017)
* obj

* effects
2022-01-13 15:51:03 -05:00
EOBGames
8e69f276d1 Adds the Space Billboard (#64000) 2022-01-13 15:46:28 -05:00
Ron
2d921b3fad Fortune cookies now give you your fortune (#63993)
I have no idea when fortune cookies stopped doing this, but I am 100% certain they used to.
2022-01-12 16:57:02 -08:00
Jeremiah
a2fa7799f3 Removes swarmers from the game (#63989)
What the title says. But why?
I generally have a rule when making a contribution, that is "don't make the game less fun"
I'm not salting, I didn't die to a swarmer.
... Yet that's the problem. Swarmers are the griefiest antag in the game, but when you complain that they're annoying or unfun, you're doomed to hear "lol they can't even hurt you though."

WELL THAT ACTUALLY MAKES THEM WORSE. I would rather die to a hundred xenos and space dragons than be forced to untie myself in maintenance for 45 seconds while the shuttle leaves.
Why It's Good For The Game

Unfun game modes should be removed from the game.

    Being griefed by swarmers is annoying
    Playing as a swarmer is not very exciting either. Click on iron.

lastly, because oranges authorized it
Changelog

cl
del: Removes swarmers! The griefiest, lowest fun value antagonist is removed from the game.
/cl
2022-01-13 13:10:18 +13:00
LemonInTheDark
f8aad14ae8 Harddel Fix Pack #42 + Better Live Reftracking Support (#63877)
* Hard Del Fixes, Ref Tracking Changes
2022-01-12 22:46:13 +01:00
Watermelon914
8fd85e9666 [MDB IGNORE] BIDDLE TRAITORS - Adds progression traitors. Refactors uplink code in its entirety (#63588)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: tgstation-server <tgstation-server@tgstation13.org>
Co-authored-by: gbfree <guillaumebfree@gmail.com>
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: ike709 <ike709@users.noreply.github.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pepsilawn <reisenrui@gmail.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: SuperNovaa41 <supernovaa41@protonmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
Co-authored-by: Aziz Chynaliev <azizonkg@gmail.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: carshalash <carshalash@gmail.com>
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
2022-01-11 15:47:10 -08:00