- The RPED now sorts its parts when installing new equipment - It will
always use the best parts contained within.
- Made all the req_component lists of circuitboards actual paths instead
of pure text. Hopefully I fixed everything that broke when I did that.
Exosuits will now use the designs from RnD to create objects instead of having the object already created on their contents.
Each one of the default items to build are now designs.
Removed access required to use the exosuit fabricators.
Removed an unused mech syringe gun design and replaced with a new one, with no cost.
Added a temporal object, /obj/item/mechavars, to be able to use initalize() for the construction time. This will be later on removed and the construction time will be ported to the design datums.
Some minors issues are still present, due to the amount of files needed to fix these, it won't be part of this commit, but a future one.
Fixes issue #3893
Removed required access to access the setting controls of the RnD console.
Ports https://github.com/NTStation/NTstation13/pull/982 from NT.
Summary of changes:
- The Rapid Part Exchange Device (RPED) can now install stored parts
into unfinished machines! Once you have installed a circuit board to the
frame, use the RPED to add any required parts contained inside, then
finish with a screwdriver!
- Identical parts in the RPED are now shown in groups, just like a
mining satchel.
- RPED storage capacity increased. It can now contain up to 50 parts,
fewer if power cells are added as well. Maximum weight class of 100
(parts except power cells are class 2).
<b>The storage values are up for discussion. I chose the original values
based on the mining satchel.<\b>
Unrelated:
- The admin-only debug research item now includes plasma and engineering
tech.
Adds sound notifications for Ninja and Wizard Apprentice spawning -- hopefully means fewer afk antags.
Adds a ghostnotice span class, used in the new notify_ghosts proc. Upon creation, things that require ghostly attention (NarSie, golem runes) give more visible messages to the dead.
Retires the 'moderate' span class, which was only used in tomato throwing? Refactors tomato code (this ended up being the meat of this PR, somehow...)
Reorganizes some item definition/procs.
Your dreams of big part storage and fast machine part exchange came true
14 slot R&D part-only autoseeker/picker/dropper/exchager is in
Added different sprites for better capacitors and scanning modules
Changed the power cell type to be compatible with all this machine
changing faggotry
All sprites here are codersprites so ask nien/WJ for better ones if you
want
Works pretty well. If it can't GC something, it'll just del() it and be done.
Speed is amazing, holy shit.
New procs you should be aware of:
qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable).
atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d.
new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary.
Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set.
ISSUES:
Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things.
Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day.
qdel() equipment doesn't unequip the item.
Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here.
Bots don't GC, probably in the radio controller.
Lots of other shit doesn't GC but it's hard to find them because of the pipe spam.
I think I'm calling Destroy() twice by accident.
- Banana peels are now grown weapons
- Banana peel slip duration is now based on their potency
- Clown spawns with a 50 potency banana, which is both regular sized and
produces a skin that's nice and slippery~
- Fixes nettle and deathnettle inhands not disappearing upon use
- Makes nettle and deathnettles use the hitsound variable instead of the
playsound proc directly. Now their hitsounds will scale in volume based
on damage done.
- Makes the banana mortar shoot potency 65 banana peels. Because
otherwise it'd shoot laughably tiny and short in slip duration potency
-1 ones.
- Moves corncobs to be grown weapons and updates their paths. Now their
size will scale based on the size of the corn that spawned them.
- Updates banan paths :)
Weapons that do no damage play a tap sound, except for the bike horn and banhammer.
Adds a different attack message for forceless attacks. It says tapped or
patted on instead of attacked in.
Adds force zero check to armour before attempting to block attacks.
Adds hitsounds to the welder, lighter, matches, cigarettes, energy sword and energy axe for when they're on and off.
Adds 5 force to the lighter when it's lit. Same as when you accidentally burn yourself lighting it. Adds a hitsound and the correct damage type to the lighter.
Adds hitsound volume scaling based on the weapon's force and its weight class. Adds tap sound scaling based on a weapon's weight class.
Removes boldness from item attack messages on non-human mobs. The attack is still bolded for the player
controlling the mob.
Adds a force check to blood spurts when attacking non-human mobs. If the weapon doesn't have a force, no blood will come out.
Adds adminhelp.ogg as the banhammer's hitsound with Cheridan's permission.
Adds a much needed period to the catatonic human examine message.
Makes the activation and deactivation sounds of toy swords, energy swords and energy shields quieter. What an earsore.
Makes description, item_state and name of matches that have burned out on their own consistent with those put out by the player. Changes match, cigarette and lighter attack verbs and forces based on whether they're lit or not.
Fixes a bug that allowed players to light cigarettes with burnt matches.
Names lit cigarettes and children of cigarettes lit [name].
Fixes a bug with the energy blade that kept it at weight class 5 after it was deactivated.
Changes the welder out of fuel message slightly to be less fragmented.
Removes dead air from most of the weapon sound effects used in this pull to make them more responsive. In other words, the fire extinguisher sound will play a lot sooner after you click than before. Equalised their peak volumes to all be -0.1dB and in an attempt to make altering volumes based on force more consistent.
Thank you @YotaXP for help with the item_attack.dm attack messages.
Thank you @optimumtact for help with code for testing item_attack volumes.
Thank you @Giacom for help with the code for scaling hitsound and tap sound volume by hitforce.
Thank you @Tastyfish for telling me why my proc wasn't working.
Thank you to anyone else on #coderbus who helped me who I've forgotten to mention.