* Replaces a manual destroy call with qdel (#69400)
detach is called on Destroy so this is safe
* Replaces a manual destroy call with qdel
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* [GBP No Update] Perish, individual logging runtime (#69024)
missed 2 or 3(lol it was more when I look back at the files), LOG_GAME tags on the log_message line, and did some cleaning up since i was looking through every log_message again
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* [GBP No Update] Perish, individual logging runtime
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* Adds a delay while welder repairing vehicles / mechs (#68786)
About The Pull Request
So right now there is 0 delay between welding repairs for vehicles / mecha. You can literally hop out of your murderboner durand, flip on a welder, and repair it fully from 5% HP to 100% in a split second with an autoclicker macro. This adds a delay.
Why It's Good For The Game
Makes it so that you can't quickly hop out of your mecha/vehicle, instantly combat repair all it's damage, and hop right back into a fight. Instead, this encourages players to find safer areas before hopping out to commit to a repair.
Changelog
cl ShizCalev
balance: Vehicles & Mecha now take 2.5 second to repair with a welder.
qol: Vehicles & mecha will automatically repair over time once clicked.
qol: Vehicles & Mecha now give balloon alerts when repairing.
/cl
Duration is free for debate, was thinking somewhere between 2 & 3 seconds, 2.5 seemed a happy midpoint.
* Adds a delay while welder repairing vehicles / mechs
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Fixes some quirks with motorised wheelchair density (#68715)
* Motorised Wheelchairs will not become dense when someone is buckled.
Motorised Wheelchairs will manually bump living mobs they tried to move through.
* Removes unnecessary check for emag, we want this behaviour at all times.
* Fixes some quirks with motorised wheelchair density
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Replaces GetComponent in Mining items with Signalers (#68575)
* Replaces many instances of GetComponents in mining items with signals and better uses overall of Components, in drills and the GPS handcuffs.
* To do this, also added 3 new signals to mechs when you are adding/removing mech equipment onto one.
* Replaces GetComponent in Mining items with Signalers
Co-authored-by: Salex08 <33989683+Salex08@users.noreply.github.com>
* Cleans up some spark / smoke systems not being initialized in initialize (#68669)
* Cleans up some spark / smoke systems not being initialized in initialize
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* addresses reviews on the tram pr made after merge, fixes diagonal movement bugs (#68033)
* addresses reviews on the tram pr made after merge, fixes diagonal movement bugs
* wew
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Combat mech research nodes now require mech-themed experiments rather than bomb experiments. (#67756)
* Mechs require a new Mech scanning experiment centered around damaging/destroying mechs, instead of being behind weaponry, which requires ordnance research.
* Combat mech research nodes now require mech-themed experiments rather than bomb experiments.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Implements a Demolition Modifier variable to items, affects damage vs structures and robots. (#66967)
Adds a modifier variable which can be used to increase or decrease a given items damage to structures, machinery, vehicles, and robots (including cyborgs, simple-bots, and anything else with the MOB_ROBOTIC biotype)
* Fixes attacks on mech equipment ignoring armor / melee damage, also fixes mech equipment not being disabled at 0% health, also also unit tests mech armor (#67411)
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* This tail refactor turned into an organ refactor. Funny how that works.
* Firstly, fixing all the conflicts.
* Fixes all our maps (hopefully)
* Actually, this should fix pod people hair :)
* Almost everything is working, just two major things to fix
* Fixed a certain kind of external organ
* Cleaning up some more stuff
* Turned tail_cat into tail because why the fuck are they separate?
* Moved all the tails into tails.dmi because that was just dumb to have like 3 in a different file
* Adds relevant_layers to organs to help with rendering
* Makes stored_feature_id also check mutant_bodyparts
* Fixes the icon_state names of ALL the tails (pain)
* Fixes wagging, gotta refactor most mutant bodyparts later on
* I Love Added Failures
* Fixed some organs that slipped through my searches
* This could possibly fix the CI for this?
* It doesn't look like it did fix it
* This will make it pass, even if it's ugly as sin.
* Fixed Felinids having a weird ghost tail
* Fixes instances of snouts and tails not being properly colored
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Durand shield now shows correctly on top of the mech. (#67437)
- Fixes the shield being on the wrong plane.
- Fixes the shield undeploy animation being hidden due to invisibility being set too early.
- Fixes the shield having the wrong glide_size and having its movement desync from the Durand.
- Removes unused currentuser var.
* Durand shield now shows correctly on top of the mech.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Adds Cargorilla (#67003)
* Adds cargorilla
* working cargorilla
* Tweaks to control + jobs and stuff
* Sleep
* Probably don't leave in debug
* el sanity
* el change them to use globals, el refactor
* Does this fix it?
* Ah, okay
* el copypaste
* el mapload vars
* ready to ship
* Adds Cargorilla
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes 217-D Plasma Cutter and Exosuit PKA being uninstallable on ripley/clarke (#67099)
* Fixes 217-D Plasma Cutter and Exosuit PKA being uninstallable on ripley/clarke
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
* [NO GBP] Jetpack and spacedrift: Fixes and niceties (#66628)
* Jetpack and spacedrift: Fixes and niceties
Ok so when I ported spacemovement onto movement loop,
I neglected to port this behavior that existed to support jetpacks.
Basically, if something that lets you move while spacedrifing
completes a move while you're spacedrifting, the
drift should "disable" to let it complete, and then later restart.
I neglected to add support for that, so that's what this does.
There's some other stuff going on here, mostly things to let jetpacks
ignore some of drift's extra behavior, since when a jetpack is not on
stablized, we want both to coexist.
It's a bit of a mess, I'm sorry about that.
Oh and at temporal's suggestion I've moved the visual_delay set from
newtonian move to an istype on the drift component, that was a good
idea, thanks quiet
* Makes dropping a pull while drifting carry the momentum into the pulled thing\
* Adds some extra context to Process_Spacemove, fixes a bunch of stupid
space bugs
It used to be, if you called Process_Spacemove with a direction, it
assumed you were an "action", so a client or mob trying to move in a
direction.
Unfortuantely for it, I needed to be able to use direction to make mob
pull drifting work. So we now actually pass in a second variable
called continuous_move, which tracks if this Process_Spacemove is on
behalf of a continuous move or not
In addition to this, I've added logic to bumping "off" someone to
prevent backbumping if that makes sense, since the bump is in the form
of a newtonian move that's run before the thing that's bumping actually
moves, we need some way to exclude it from holding the other object in
place.
* Adds a jetpack component, uses it to unify all three versions of
jetpacking
I hate you fikou
There were three copies of the same behavior, which made it hard to fix
stuff. Let's just componentize it
* Fixes jetpacks stabalizing even without fuel
This is mildly hacky. The real fix is to do this with events, but I
really don't wanna bend my brain like that. This'll do
* Ensures turn_off always has a user)
* Shut pu
* Bulky drags no longer effect your movespeed in space, fixing a consistency issue between them and all other forms of drags
* Removes some redundant code, cleans up some messy stuff
* Removes redundant safety checking from jetpack code
* see above
* Removes redundant signals
* [NO GBP] Jetpack and spacedrift: Fixes and niceties
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Ripley mechs (and other mechs that are missing an air tank) can no longer toggle the air source. (#66107)
Disables the button on the UI if the mech has no internal tank. Also early returns on procs if the UI somehow lets the click through.
Fixes#66005
* Ripley mechs (and other mechs that are missing an air tank) can no longer toggle the air source.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Mechs now use equipment flags to check if they can attach (#65813)
* Mechs now use equipment flags to check if they can attach
* Apply suggestions from code review
Co-authored-by: Tim <timothymtorres@ gmail.com>
* Fixes suggestion code
Co-authored-by: TiviPlus <572233640+TiviPlus@ users.noreply.com>
Co-authored-by: Tim <timothymtorres@ gmail.com>
* Mechs now use equipment flags to check if they can attach
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: TiviPlus <572233640+TiviPlus@ users.noreply.com>
Co-authored-by: Tim <timothymtorres@ gmail.com>
* Splits up `_mecha.dm`, sorting procs into more specific files (#66662)
This file sucks. It's big and full of specific stuff that could be contained elsewhere. I think I split off the procs into appropriate files, I'm sure it could be shortened even further but I couldn't think of where the remaining procs could go, so I left them where they were.
* Splits up `_mecha.dm`, sorting procs into more specific files
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
* Makes smoke and foam attempt to fill the available space.
* wew
* reset
* Revert "reset"
This reverts commit 75be4f934504793ceb5c9bf2f3774dc24517df5a.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Refactors firestacks into status effects (#66573)
This PR refactors firestacks into two status effects: fire_stacks, which behave like normal firestacks you have right now, and wet_stacks, which are your negative fire stacks right now. This allows for custom fires with custom behaviors and icons to be made.
Some fire related is moved away from species(what the fuck was it even doing there) into these as well.
Oh and I fixed the bug where monkeys on fire had a human fire overlay, why wasn't this fixed already, it's like ancient.
Also changed some related proc names to be snake_case like everything should be.
This allows for custom fire types with custom behaviours, like freezing freon fire or radioactive tritium fire. Removing vars from living and moving them to status effects for modularity is also good.
Nothing to argue about since there's nothing player-facing
* Hud Image Culling By Z Level: Theft edition (#65189)
* makes hud images only apply by z level
* makes some of the atom_hud procs have better names
* fixes warning with the hud_user list and adds better documentation
* better docs for hud_images
* removes TODOs
* docs for hud_list
* adds support for linked z levels so mobs can see lower ones
* fixes merge conflict and shittily makes only shocked airlocks get added
* adds support for setting images in the hud as active and inactive
* gets rid of unatomic spatial grid change
* maybe i should actually try COMPILING my changes
* fixes merge skew and makes it compile again
* fixes huds refusing to remove from users who changed z level
* improves z level and registration logic
* fixes antag huds not appearing
* Fixes antag huds not properly setting. We now use hud_list in init, so it needs to be set before the new call, not after. Not sure why the use of appearance key was split like this, but none else knows either so none can stop me
* Ensures that hiding a basic appearance also hides the atom's active list too
* Fixes antag huds going poof
Ensures that remove_atom_from_hud will return false if the passed atom
isn't managed by it
This fixes antag huds disappearing randomly, since they assumed that if
the parent call of remove_atom_from_hud returned true, we should delete
ourselves. This is a safe assumption for them to make, since they should
only ever have one atom.
Does kinda bork if we call remove_atom_from_hud in a way that is unsure
if the passed atom is actually in that list. We were forced into doing
this by how atom huds use the qdeleting signal.
* makes basic alternate_appearance's only update themselves when setting their hud image to active and makes them not add themselves to the global huds_by_category list
* fixes mistake with hud_users list being set non associatively (bad)
* as anything in bot path loops
* Fixes merge skew problems
* Makes bot paths non global
This way they can show themselves to only the bot that "owns" them, ya
feel me?
* Fixes huds not showing up sometimes, cleans up some code
Post Kapu's limb refactor, we were calling prepare_huds twice in a human
init call chain. What was happening was this:
call prepare_huds() // Human
I gained a new hud image
I set active hud icons to mirror it
call prepare_huds() // Living
I overwrote the new hud image
I attempted to set active hud icons, which failed because it assumes
this can never happen
*cries*
* Renames add_hud_to_atom to show_to
My hope is this will make understanding hud code a bit easier, by tying
the behavior to a "verb" more closely. Also renamed a few vars
* remove_hud_from_mob -> hide_from
* Nitpicks a few comments
* Whoops/fuck/shit/damn it all/hhhhhhhhhhhh
* Moves check down, improves stack trace a bit
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
* small touch-up
* this should do it
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
The mech construction code was really bad. So much copy paste code. I came in to make them into balloon alerts and then ended up by torturing coders by showing them the hot garbage that was within. The messages will be mostly the same, but now the mech construction steps all use the same code to display user feedback.
The HONK mech's is still not great, but it doesn't really fit into the same mold as the other mechs' construction.
More balloon alerts for construction tasks, less copy/paste code.
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
- Mechs now have a weapons_safety toggle. If set to true, clicking does not use equipment. This is mostly intended to allow users to keep from accidentally firing. Weapon safety defaults to off, but will keep the same state it was in between pilot exit/entry events.
- All mechs now use the green reticle mouse icon. If weapons_safety is enabled, the mouse is reverted to normal. The reticle (if shown) still turns red during an EMP-related weapons fault.
- AIs can use mech weapons if the safety is off, and use AI clicks if the safety is on.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Vim mecha changes (#66153)
This PR changes the following:
fixes a bug with Vim overlays, making it always appear as if there was a pilot inside, even after leaving it
adds a balloon alert when a mob fails to enter the mech due to its size
adds a crafting recipe for Vim in the "robots" category
allows using Vim as a circuit shell
allows small mobs to use the mech as well
My reasoning behind the changes:
fixing the overlay bug - bugfixes good, bugs bad
balloon alert - it should help reduce confusion among players who can't figure why on earth they cannot enter the mech
crafting recipe - I think a crafting recipe will make it a lot more accessible to players, especially because there is no way to learn about its existence in-game
circuit shell - non-standard circuit shells can be pretty fun and people seemed to enjoy the ability to use circuits inside their piano synths or cameras, so I figured we could expand on this, while giving players more ways to interact with sentient pets
maximum mob size increase - Vim has never really been built too often, most likely because even if people got their hands on a sentient pet, it wouldn't probably fit in the tiny mecha anyway. Currently pretty much only butterflies, rats and cockroaches can use Vim and they pretty much never become sentient.
* Vim mecha changes
Co-authored-by: B4CKU <50628162+B4CKU@users.noreply.github.com>
* Reworks Mech Extinguisher to be utility equipment, related balance changes. (#66058)
The extinguisher is now utility rather than an active equipment mount. This means it no longer takes up one of a mech's limited hardpoint slots.
Mech extinguishers now extinguish in a 3x3 grid around (and including) themselves.
Mech extinguishers now use 80u of water, and store a maximum of 400u. This adds up to five uses before needing a refil.
* Reworks Mech Extinguisher to be utility equipment, related balance changes.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Refactors speech impeding effects (drunken slurring / suttering) into status effects. Adds heretic slurring in addition to the existing cult slurring. Removes 4 vars from /living in return, which slightly optimizes Life() (wink)
* fex
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* It is no longer possible to end maint procedures on a mech if the parts panel is still open. (#66105)
Attempting to end maintenance procedures on a mech will now throw an error You must end Maintenance Procedures first! if you haven't disabled the parts replacement mode. This would cause the mech to enter a maintenance purgatory where the panel assumed the maintenance procedures was ended but the mech itself thought it was still in progress.
The button to start and end parts replacement mode is now labeled "Toggle part replacement", and has been colored red to signify the importance of the button. Ideally the button would tell you if part replacement is still enabled, but the TGUI window doesn't update, so that's a wash.
Fixes#66004
* It is no longer possible to end maint procedures on a mech if the parts panel is still open.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* [no GBP] Fixes my improper skateboard fix (#65886)
in #65313 (Fixes ollieing onto empty space tiles making you float forever)
i fixed skateboards being able to fly but i should have coded it differently because its still possible to fly by just spamming ollie and not moving. This does it in a more proper way.
The BLOCK_Z_OUT_DOWN gets removed only after the code that makes the vehicle do the ollie has run. This means it will still be immune to falling while moving with the ollie action button. The changes i made makes it remove the BLOCK_Z_OUT_DOWN flag if it doesn't find something to grind on, so that it won't be immune to falling when moving with ollie. This now gets done before the ollie code runs so that it won't have the flag while moving.
* [no GBP] Fixes my improper skateboard fix
Co-authored-by: Ebb-Real <95765134+Ebb-Real@users.noreply.github.com>
* Remove mecha_set_dir and use setDir instead (#65815)
This shouldve been this way and azarak agreed (he was gitblamed)
* Remove mecha_set_dir and use setDir instead
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>