* refactor: Attack chain, initial setup.
* migrate curtain to make dreamchecker happy
* update thurible
* don't call attacked_by separately for legacy attack chain
* remove duplicate proc
* condense similar code, put allowances for legacy code in new procs
* update docs, include diagram source
* add comment on how to update diagram
* fix admonition
* mindflayer updates
* remove commented out code
* clarify all steps
* after_attack should be overridable
* whoops
* retrofit recent changes
* duh, can't restrict this yet because of tool_acts
* i hate ore bags with the fire of a thousand suns
* return correct value for object attack logic
* Various cleanups.
We don't want to attempt to pull stuff out of `/obj/item/attackby`,
because those pieces are part of the related objects' migrations, not
`/obj/item` itself. Attempting to do this causes knockon effects where
things expected to call e.g. `/obj/item/storage/attackby` in the call
chain were not ferried over to the new item interaction code, because
the related objects hadn't actually been migrated over yet.
I've used refactoring /obj/vehicle as the example for migrating
`attackby` methods instead.
* simplify some argument names
* fuck it
* make it do the thing
* Rename CI module call
* Prove that CI works
* improve test output
* aaand fix it again
* fix curtain tool interactions
* fix compile error
* fix compile error
* Better docs, introduce migration plan tool.
* initial
* bit of code cleanup / refactoring
* review changes
* CRLF to LF
* GLOB stuff
* travis did not like that
Co-authored-by: SteelSlayer <SteelSlayer@users.noreply.github.com>
* Handlers converted, now to fix 3532 compile errors
* 3532 compile fixes later, got runtimes on startup
* Well the server loads now atleast
* Take 2
* Oops
Removes the rose class from spans in mountables code.
More occurances of this ancient span class have been unearthed and will
be handled in a separate PR since that'd end up being unnecessary bloat
in this PR, plus some of those cases need some fixing anyways (span
without /span)
Currently, to_chat is literally just a proc that does user << message.
But it'll let us do output modification in the future, especially for
something like Goon's HTML chat.
Big thanks to PJB for his to_chat script, see
https://github.com/d3athrow/vgstation13/pull/6625 for more details.
Allows mass driver buttons to send logic signals
- They send LOGIC_FLICKER, since they are only on when pressed, then
turn off when released
- Can send logic signals to a different ID tag than their associated
driver/door ID tag, configurable from the multitool menu
Allows light switches to send logic signals
- Will send LOGIC_ON or LOGIC_OFF signals to match their current state
- Send both when toggled and on the process() cycle
- Light control can be toggled via the multitool menu, so you can use
them as purely light switches, purely logic switches, or as dual
switches
Allows light switches to be made from metal sheets, just like mass
driver buttons (1 sheet per button)
- Fixes a resource duplication bug where driver buttons can be
disassembled for more metal than it takes to build them
Begins to move some code for various button types into the buttons.dm
file, rather than being scattered across multiple files
- Driver buttons code moved from door_control.dm
- Ignition switch code moved from igniter.dm
Renames driver_button.dm to buttons_switches.dm
- This is the file that contained the mountable frames for driver
buttons, and now also contains the frame for light switches.
This commit does the following:
- Ports progress bars from -tg- (tgstation/-tg-station#9921)
- Refactors wall attackby code to make it 100% less insane; Instead of
manually checking every little thing, it uses do_after,
consequentially, making the new progress bars affect dealing with walls
as well.
Wall code makes a tiger sad.
This commit first and foremost ports the -tg- atom pooling system, and
removes the old experimental system entirely.
Secondly, this PR modifies the qdel system to use a -tg- lookalike
"destroy hint" system, which means that individual objects can tell qdel
what to do with them beyond taking care of things they need to delete.
This ties into the atom pooling system via a new hint define,
QDEL_HINT_PUTINPOOL, which will place the atom in the pool instead of
deleting it as per standard.
Emitter beams are now fully pooled.
Qdel now has semi-compatibility with all datum types, however it is not
the same as -tg-'s "Queue everything!" system. It simply passes it through
the GC immediately and adds it to the "hard del" lists. This means that
reagents can be qdel'ed, but there is no purpose as of yet, as it is more
or less the same as just deleting them, with the added effect of adding
logs of them being deleted to the garbage collector.
This commit overhauls mass drivers.
Every component of mass drivers are now buildable.
This means:
- Mass Drivers
- Mass Driver Control Computers
- Mass Driver Buttons
Mass driver control computers now support multiple mass drivers.
You can link mass-drivers to buttons via multitool.
Buttons have a range of 7 for their mass driver link.
Computers have infinite range.