If you came here thinking this was some game feature then you are in the wrong place. Here is where I ramble about code.
This adds /datum/element as a sort of sibling to components. Only one of each type gets instanced and they do not get tied directly to any particular thing like a component does. Basically they're a very lightweight component for doing simple functionality that doesn't have much state.
Originally this concept came about as a kind of component that could be shared between many parents to reduce some resource costs. Doing this would allow us to componentize more behaviors that are a part of too many things to be viable to have a whole component for every single one. For example a component on every space turf would be entirely unviable. With elements it's much more reasonable.
This implements a prety bare framework and a couple components are migrated to it. It's ready to be used but I fully expect I'm going to need to refine how it works for all the usecases we'll want it for.
Also: this fixes the qdeleted signal. This signal isn't even possible because after qdel is done there's nothing to receive a signal anyway. I've changed it to a qdeling signal instead. I need it to work for some elements to know when to clean themselves up.
In advance of eventually adding SpacemanDMM's linter to Travis, fix everything it can currently detect.
Some lists, including global lists, are given types so that L[i].foo expressions can be checked.
Some procs are given a new form of return type annotation so that DuplicateObject(O).forceMove()-type invocations can be checked.
Open to syntax suggestions on the return type annotations, and on whether the preprocessor strategy makes sense.
Return type syntax is currently roughly:
<typepath> | <paramname>([_])*(.type)?
* 1/4 done? maybe?
* more
* stuff
* incremental stuff
* stuff
* stuff & things
* mostly done but not yet
* stuffing
* stuffing 2: electric boogaloo
* Git Commit and the Kingdom of the Crystal Skull
* make it actually compile
* found more stuff
* fixes
* fix AI laws appearing out of order
* fix windows
* should be the remaining stuff
* this time for real
* i guess it should compile too
* fix sechuds
cl Naksu
code: reagent IDs have been removed in favor using reagent typepaths where applicable
fix: mechas, borg hyposprays etc no longer display internal reagent ids to the player
/cl
Aiming to implement the framework oranges has detailed in https://tgstation13.org/phpBB/viewtopic.php?f=10&t=19102
Moves canmove to a bitflag in a new variable called mobility_flags, that will allow finer grain control of what someone can do codewise, for example, letting them move but not stand up, or stand up but not move.
Adds Immobilize()d status effect that freezes movement but does not prevent anything else.
Adds Paralyze()d which is oldstun "You can't do anything at all and knock down).
Stun() will now prevent any item/UI usage and movement (which is similar to before).
Knockdown() will now only knockdown without preventing item usage/movement.
People knocked down will be able to crawl at softcrit-speeds
Refactors some /mob variables and procs to /mob/living.
update_canmove() refactored to update_mobility() and will handle mobility_flags instead of the removed canmove
cl
rscadd: Crawling is now possible if you are down but not stunned. Obviously, you will be slower.
/cl
Refactors are done. I'd rather get this merged faster than try to fine tune stuff like slips. The most obvious gameplay effect this pr has will be crawling, and I believe I made tiny tweaks but I can't find it Anything I missed or weird behavior should be reported.
cl Floyd / Qustinnus (thx to mrdoombringer for sprite + idea)
add: The clowncar now comes with an inbuilt cannon that can be activated by emagging its circuits
fix: cars can only kidnap if they have the CAN_KIDNAP trait
fix: removes a dot too much in a to_chat in clown car actions
/cl
balance: The Clown Car can no longer move unrestricted in zero gravity environments.
balance: The Clown Car now costs 20 TC to purchase.
This PR was done at the request of @vuonojenmustaturska. I renamed entered.dm to sealed.dm because it's where the sealed subtype is defined and it's primarily used for procs specific to sealed. The balance changes were Naksu's idea. I definitely think not being able to move freely in space is a good change. I'm ambivalent about the TC, but the item felt like a gimmick that you should fully commit to like His Grace, and the free space movement + 4 TC space suit was a bit cancerous.
add: Clown cars can now fit any mob (besides megafauna)
add: Repair your clown car with bananas
add: Emag the clowncar to unlock a button panel. Activate it to press a random button for a random effect!
balance: lowers health and cost of clown car
fix: removes a return in the clown car code that caused the wrong flags to be assigned
fix: you cant open the clowncar trunk from the inside anymore, you can still escape though.
fix: fixes broken to_chat in clown car
Skateboards are fun but without even considering the bumping hazards they're almost impossible to use on station just because of how unreasonably fast they are.
They're so fast, they couldn't be any faster. Literally! They have no move delay, making them as fast as a vehicle can possibly be.
But if you think you can handle it, you can simply adjust it back to sanic speed. Crashing penalties are unaffected.
I see no reason why they shouldn't fit in backpacks, maybe they used to be strong weapons a while ago but nowadays you can find stronger stuff just laying around that fit in backpacks just fine.
Plenty of items bigger than a skateboard that already fit in backpacks, too. (i.e. instruments)
I've been wanting to add this for a while, and now I have. The clown car is a vehicle you can use if you're a traitor clown to run people over, shove them into your compact trunk, and take them for a ride. If you drive into any walls however, you and everyone you kidnapped, fall out of the car, leaving you somewhat vulnerable.
It also comes with a lube-defense mechanism(tm) which has a 1/3 chance to drop some lube if someone decides to shoot at your sweet ride.
You can also honk your horn or drop all of the drivers if you would like to.
balance: Limbs no longer need to have full damage to be dismemberable, although more damage means higher dismemberment chance.
balance: Damaging limbs now only counts as 75% for the mob's total health. Bleeding still applies normally.
add: Limbs that reach max damage will now be disabled until they are healed to half health.
add: Disabled limbs work similarly to missing limbs, but they can still be used to wear items or handcuffs.
Fixes#38445
Always felt odd how reaching max damage on a limb had no consequence. Now it does.
Currently i only added effects for disabling arms and legs; "breaking" heads and torsos has no effect as of now.
This is in preparation for step_x support as the default behavior for these procs is necessary for proper functionality.
turf/Enter and atom/movable/Move default code got rewritten to replicate default byond functionality with minor changes.
The component is initialized with any combination of three flags, EMP_PROTECT_SELF protects against effects that target the object itself, EMP_PROTECT_WIRES protects against wires being messed with similar to the NO_EMP_WIRES_1 flag which this PR removes, EMP_PROTECT_CONTENTS protects against things that are inside the object like organs, internal "non-virtual" power cells and the like
This enables (but doesn't introduce) new mechanics such as adding EMP shielding at runtime to any atom, or taking it away.
* Adds Wheely-Heels, a pair of shoes with inbuilt roller-wheels. Can be rarely received as reward from arcade machines.
* Fixed issues with Wheely-heels, added Kindle Kicks
* Cleaned up code
* Fixed Destroy()
* Thoust shall return the parent, like Oedipus
* Final Fix XIV