Continues fixing the tide of broken shit with my awful PR.
This time around:
Corrects a control message for the l6 saw on examine
Reworks the way that open bolt guns work so that they actually work the way open bolt guns are supposed to. Loud bolt drop when you try to fire an empty magazine included.
Fixes bulldog magazine overlays.
Fixes an issue with tacloads not updating the removed magazine's icon state correctly.
Fixes locking bolt not locking back on the last bullet fired but instead on the
Fixes some incorrect sprite paths, bad implementation, and logic inconsistencies that were resulting in missing sprites and fucked up sprites. Fixed some weirdness with the RPG due to wrong bolt type. Fixed bullet count being incorrect on anything with an internal magazine. Fixed issue with internal magazine tacloads that was resulting in them locking up and being unable to shoot.
Closes#42683Closes#42672
cl actioninja\memager
refactor: Ballistic guns have been almost entirely reworked from a backend side. This primarily focused on moving as much as possible into the base ballistic gun and turning as many other guns into essentially varedits as possible.
add: Guns can now be racked. This is the default action unless the magazine is empty.
add: Guns now can have the magazine removed by clicking on them with an open hand while they are in hand.
tweak: Suppressors are now removed by alt clicking instead of clicking with an open hand
add: Guns now have various bolt types that all function a bit differently. Open bolts cannot have a bullet chambered with no mag, locking bolts lock back after running out of ammo, etc.
add: All ballistic gun sounds are controlled by variables instead of hardcoded usages.
tweak: The l6 LMG has a reworked control scheme. alt + click to open and close the cover, open hand to remove mag, place mag in by slapping them together, default action is rack.
tweak: Functionality that used to be snowflake code such as tactical reloads has been moved to the base gun, and can be toggled by variables.
refactor: All shotguns are now properly subpaths of the shotgun type. They still work the same.
imagedel: Gun sprites have been almost entirely overhauled to use overlays instead of states. This collapsed the L6 sprite from 20 sprites to 9 sprites to give an example.
soundadd: Remixed versions of the shotgun and base gun firesound
soundadd: New rifle firesound for l6 and moist nugget, new SMG fire sound, new sniper fire sound.
soundadd: Lots of new weapon operation sounds such as racking and bolts and the like.
imageadd: New sprites for the Riot Shotgun, Combat Shotgun, c20r, Deagle, m90, double barrel shotgun and 1911 by Memager.
imageadd: All gun sprites that were pointing to the left have been flipped to point to the right.
balance: Shotguns now can be pumped faster.
balance: Bulldog can now be tac reloaded
balance: Sawn off shotguns now have an accuracy penalty and recoil
/cl
* Bandaid fixes for bugs with reflectors projectiles and plasma cutters
* * Fixed bouncing piercing projectiles on qdel
* Fixed projectiles reflection not working
* Fixed heavy beam pulses not penetrating
* Changed numerous projectiles procs to use the new BULLET_ACT_* format
* Final conversions to new BULLET_ACT_* format
🆑 coiax
admin: Admins now have access to a "wand of safety", a supercharged teleportation
wand that moves people to a safe turf, like a swarmer teleport without the cuffing.
/🆑
I also changed the description of the debug healing wands, and added
a debug safety, and debug death wands. Debug wands also charge
every (other?) tick.
I specifically coded this because I would have liked to have something like it
for the Winter Ball, in clearing people who were trying to break into the Brig.
cl coiax
fix: Dead monkeys now produce miasma.
/cl
Previously any time there was a dead monkey, it would constantly runtime with incompatible component warnings.
tweak: Suppressed and dry fire sounds are now stored as a variable, and can be edited on a per gun basis.
sounddel: The standard gun dry fire sound was collapsed to one sound instead of 4. They were all just pitch variations anyways, which is now covered by built in sound pitch variation.
soundadd: Revolvers now have a unique gunshot sound that is slightly different for 357 and 38.
soundadd: Revolvers now have a unique dry fire sound.
soundadd: Revolvers now make a unique noise when emptying them besides just the sound of shells falling out.
soundadd: Spinning a revolver such as the Russian Revolver now makes a sound.
spellcheck: Syndicate sniper kit now includes a suppressor instead of a "supressor."
cl XDTM
add: Spraying holy water on tiles will now prevent cult-based teleportation from using them as a destination point.
tweak: Quantum, wormhole and magic teleportation is no longer disrupted by bags of holding.
/cl
Refactors some teleportation code so it uses do_teleport instead of directly forceMove.
do_teleport now has a channel argument, to specify the type of teleportation used. This will affect what can and cannot interfere with teleportation. For example, BoHs interfere with bluespace teleportation but not wormhole, quantum or magic teleportation.
do_teleport now sends a COMSIG_ATOM_INTERCEPT_TELEPORT signal, allowing the target turf (or anything placing a signal on said turf) to react appropriately. As a proof of concept, blessed tiles use it to prevent teleportation from the cult channel.
Intercepting teleportation can have interesting potential uses, from teleport denial fields, to teleport scramblers (teleports you somewhere else instead), telefraggers that gib anyone unlucky enough to teleport in their area of effect, teleport anchors that shunt all teleportations in a wide area to themselves, and so on.
cl ShizCalev
tweak: Added examine messages for helmets & guns with flashlights (and bayonets.)
fix: Fixed an issue where you were able to remove flashlights/bayonets that were supposed to be permanently attached to a gun.
fix: Fixed an issue where you were unable to remove flashlights & bayonets from certain weapons.
fix: Fixed a potential issue where adding a flashlight to your helmet would've caused you to lose other action buttons.
fix: Fixed a issue where guns with multiple action buttons would break all but one of those action buttons.
tweak: If you have both a bayonet and a flashlight attached to your gun, you'll now be given a prompt on which you'd like to remove when using a screwdriver on it.
/cl
Shouldn't need to have "pro-gamer tips" in adminpm's just to inform folks that you can remove a flashlight from a helmet with a screwdriver.
Also added some missing handle_atom_del / Destroy logic, as well as moving the clothing can_flashlight & flashlight vars down to helmet level (since they were the only things that utilize them anyway.)
also why the fuck was the helmet flashlight var just called F. hnnnngg
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.
* Plasma cutters now require charge (100, 10%) to be used as a welder.
* Plasma cutters now flash you, same as experimental welders.
Plasma cutters now use charge proportional to time spent welding (25 to start and 25 every 10th welding tick - 50 per scrubber/vent/girder, 175 per regular wall, etc).
* Cell use sanity. If you somehow popped the cell out of plasma cutter you have bigger problems.
* Annnd PCs are back to not using charge for most tasks (exceptions: plasma tiles, airlock wire shielding...) because everything calls amount=0 and zero amount means use() isn't called.
They still flash you, though.
* Comments + a bit more sanity.
* Actual sanity. Also did a rebase, let's see how much stuff that wrecked.
* Oops apparently you indeed cannot stack inline conditionals or it requires some special syntax.
* Plasma cutters now use a minimum of charge_weld charge again. Also known as "who says I can't override your stupid zero-amount calls?".
* And here's the rebase problems. Reverted accidental sanity revert.
Adds a magical locker staff.
It goes through people, capturing anyone being hit by it and putting them in a welded locker
The locker decays in about 5 minutes, to prevent the hallways flooding too much.
Escape time is only a minute.
Explosions are less effective on people inside
Why: It's a bulky wand, and great if you want people to just fuck off. You can either leave them or do something horrible to them.
The sprites are codersprites, except for the locker, please forgive me