Port of Baystation12/Baystation12#13264
Large PR to put into Master, but the bug is really annoying and since it affect a traitor item, an often used one, I'll take the risk.
Fixes#1956
Fixes explosives implants and lawgiver not working.
This PR contains bugfixes for:
Drones being unable to matter-decompile burnt matches (#717). Burnt matches will be decompiled into a small amount of wood.
Ghosts triggering infrared emitters (#644). Added a check whether the movable passing through the laser beam is actually "visible".
Reagent transfer messages showing up when clicking on chem implant cases, even when the syringe is empty (#704). Added a check whether reagents have actually been transferred. The displayed message will now also display the actual amount transferred. Removed spawn(5)-delay to prevent click-stacking.
Limb relocation messages not showing up for bystanders (#778).
devices and tools.dm ~Advanced pinpointer added
implant.dm ~loyalty implants melt when EMP'd
nuclear_bomb.dm ~ code goes to delta when activated
microwave.dm ~ Fixes#1668
lockbox.dm ~ medal box added
exodus-1.dmm ~ medal box added
storage.dmi ~ medal box icon added
advanced pin pointer was 25 but after talking to some people they said 15 is better, I don't know though
Adds Shells. Adds tags. Adds IPC subspecies. Adds HK-47's. Does not add IPC construction.
Beyond the obvious review of shells, the exact stats of the IPC subspecies need review. They were largely an afterthought, and quickly overshadowed by the shell project.
Baymerge changed the attack proc, i think by removing a default value, and a lot of things broke because they weren't using the function correctly.
This proc does three main things.
Adds a default to /obj/item/proc/attack to target the chest when no target zone is supplied.
Fixes the lack of a target zone in many attack procs, properly defining it so it'll get passed to the parent, and ensure that bodypart-specific targeting works.
Removes most instances of code to retrieve the user's selected zone, and instead to use the zone passed into the attack function. saves duplication of effort.
Default starting telecrystal amount more than doubled.
Mercenaries are now explicitly given 4 times the default telecrystal amount.
Syndicate toolbox now includes insulated gloves instead of cables.
General item cost tweak.
Buckling procs and vars have been moved down to /obj.
Behaviour is mostly the same, but you can buckle cuffed people to
pipes and they will automatically unbuckle if the cuffs are removed.
Signed-off-by: Mloc-Argent <colmohici@gmail.com>
`maths.dm`:
Rewrite `Gcd(x)` to remove recursive behaviour.
Remove `RaiseToPower(x)` and its usage from `event_manager.dm`.
Rename `Lerp()` to `Interpolate()`.
Add `Square(x)`, which squares a number.
Rearrange most of the functions in the file. (trigonometric functions together, etc.)
`type2type.dm`:
Rewrite `num2hex()` and optimise `hex2num()` for superior clarity and a 100% speed improvement.
Correct indenting, spaces, make switches more concise.
`time.dm`:
Remove old, slanderous commented-out function `/proc/time_stamp()`
`lists.dm`:
Add the macros, `BITTEST(bitfield,index)`, `BITSET(...)`, `BITRESET(...)`
and `BITFLIP(...)` for bit-manipulation and use them where 20+ files
do it manually, for arguments of reader clarity and standardness.