Enter(), Entered(), Exit() and Exited() all passed the old loc forward, but everything except a single a case cared about the direction of the movement more than about the specific source.
Since moving multi-tile objects will have multiple sources of movement but a single direction, this change makes it easier to track their movement.
Cleaned up a lot of code around and made proc inputs compatible.
I'll add opacity support for multi-tile objects in a different PR after this is merged, as this has grown large enough and I don't want to compromise the reviewability.
Tested this locally and as expected it didn't impair movement nor produced any runtimes.
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.
Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.
(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
Clears out two deprecated explosions systems (explosion ids and explosion levels)
Refactors a bunch of contents_explosions procs to be maybe slightly faster.
Cleans up a bunch of ex_act code.
Slightly cleaner code
A few less unused vars on /atom and /turf
Creates update_name and update_desc
Creates the wrapper proc update_appearance to batch update_name, update_desc, and update_icon together
Less non-icon handling code in update_icon and friends
Signal hooks for things that want to change names and descriptions
99%+ of the changes in this are just from switching everything over to update_appearance from update_icon
My original intention was just fixing an issue with the Mk-honk banana shoes but, considering I didn't want to add two new variables to a component with already lot of args and lengthy AddComponent() calls in term of text, I had to merge some TRUE/FALSE variable/args into the breakdown_flags bitfield (now named mat_container_flags) in the process.
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
Adds and implements alloy materials
Takes several materials that were mostly fluff and converts them into actual usable materials.
Messes with material code a bit to make alloys recycle back into their component materials.
Adds the alloy materials to their in-game stacks.
Materials added:
Plasteel
Plastitanium
Plasmaglass
Titaniumglass
Plastitanium Glass
Alien Alloy
Makes plasteel/plastitanium/plasmaglass and the rest able to have separate properties from their component materials. It doesn't make much sense that the materials used to seal off the supermatter chamber from the rest of the station would be prone to exploding when heated.
Allows for further expansion of materials, possibly including actual functional metallurgy and smelting at some point in the very distant future.
(Lemons note: Adds a regeneration component, used for alien alloy)
All ui_act procs should call parent by default. All procs should preserve the value of the parent proc when it's TRUTHY and pass it down the call stack. No UI should be interactible when its flags or state indicate it should not be, except when explicity overriden by child procs intentionally disregarding parent return values to achieve a specific goal.
* initial
small thing
* improvements
1. Removes loops for picking up items. its now an item by item basis unless there is an ore box involved
2. Removed pickup_rate and ore_buffer var for the ORM, they aren't needed anymore
3. Fixed conveyors not moving items that get created on top of them (New / Initialize), by sending signals when atoms are created.
* renames the registered signal proc name so travis doesn't throw a fit
* signal improvement
* forgot to update other proc names
* ninjanomnom review changes
replace NEVER_PROCESS with START_PROCESSING_MANUALLY
default_unfasten_wrench override for ORM
50 -> 5 SECONDS
I totally didn't mispell anything
* makes a new signal: COMSIG_ATOM_CREATED
* more review changes
* duh
* even more review improvements
* switch >= to >
* reverts conveyors back to using process() for moving stuff
* various touch ups, adds documentation
* rebase to fix map conflicts with forgottenship.dmm
Co-authored-by: SteelSlayer <SteelSlayer@users.noreply.github.com>
* Radio interface
* Ore redemption machine interface
* Remove candystripe because it looks like shit
* Solar tracker interface
* Add more channels, add full color support to Box
* Cleanup README
* conversion guide draft 1
* Update documentation
* Implement an Input component, update component reference
removes materials list from items, uses custom_materials instead. This might introduce some bugs so we should testmerge this for a while (and Ill test stuff locally as much as I can)
this also adds material crafting to sheets. Test case being chairs. In the future we can add stuff like tables, walls, doors etc.
also applies materials to everything, with fixes, which can close#46299
Why It's Good For The Game
No crashes
Changelog
cl
fix: A universal issue was detected with the interactions of cyborgs and ore redemption machines and we had to block it out with bluespace technology. It was only with claiming points all other functions remain available.
/cl
About The Pull Request
Similar to #46485
Now all relevant uses of power_change() call parent, theres a signal sent when a machine changes the NOPOWER flag, all remaining machines that were using power_change() instead of update_icon() have been fixed.
Why It's Good For The Game
code quality, eventually signal stuff. and signal stuff
About The Pull Request
machines and consoles that previously required an inserted ID now check access on worn and inhand ids. They otherwise function identically.
Affected things:
ORM: click claim to claim cash to connected ID (also fixes it)
Mining vendor: uses ID on person or in hand.
medical console: checks worn ID
security records console: checks worn ID
gulag consoles: claim points to worn ID, checks access and point requirements from worn ID
Also some backend refactoring to prisoner management and gulag teleporter consoles
hop console will be next to strip out the shitcode entirely but this at least gets things functional in the mean time, but fully tested this time. It's very late here and I need to sleep. Due to the nature of it it's more elaborate of a rework.
Changelog
cl
tweak: Medical and Security consoles now check access on worn or inhand ID instead of requiring an inserted ID
tweak: mining vendor now reads from ID in hand or on person instead of requiring an inserted ID
fix: ORM is functional again (for real this time)
tweak: ORM claim points button transfers points to worn/inhand ID instead of to an inserted ID, no longer accepts insertions
tweak: Same for gulag consoles
/cl
* * reworked consoles so you can:
* use attackby to insert id
* use alt-click to eject id
* examine to see if alt-click is available
* moved eject_id and insert_id procs to _computer.dm
* added some sound effects
* * prisoner management console new features: insert id with attackby and eject with altclick
* * prisoner management console can't have multiple prisoner id's inserted
* removed unnecessary src. and changed usr --> user
* made gulag teleporter consistent with attackby, altclick and examine.
simplified attackby on card.dm
* equipment reclaimer station consistent with id attackby, altclick-eject and examine.
point claim console consistent with id attackby, altclick-eject and examine.
* ore redemption machine and mining equipment vendor made consistent with id attackby, altclick-eject and examine.
* * reworked all eject/insert ID copypastacodes into procs in _machinery.dm
* * 0's to FALSE
* hopefully i didnt mess up any more things in the resolve
* everything now uses id_insert-proc and doesn't work.
* compiles but doesn't work
* works
* 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
About The Pull Request
I made a machine board for the PDA message server and added it to the telecomms techweb node. To keep the usefulness of the machine's password, a player built message server won't work until 15 minutes after construction. I've also converted a lot of magic numbers to defines, and changed the departmentType var on request consoles into a bitflag.
I'm open to ideas other than a time gate when it comes to keeping the server password's usefulness.
Why It's Good For The Game
You can't build a Message Server right now. If it's destroyed, PDAs may be knocked out for the rest of the round.
Changelog
cl JJRcop
add: You can now build a new PDA messaging server if you lose it.
tweak: Requests console messages no longer work if the messaging server is offline. Emergency alerts will still function in that case as long as the rest of telecomms is online.
/cl
cl Denton
tweak: Most upgradeable machines now show their upgrade status when examined while standing right next to them.
tweak: Added examine messages to teleporter stations that hint at their multitool/wirecutter interactions.
tweak: Renamed teleporter stations from station to teleporter station.
code: Changed the teleporter hub accurate var to accuracy; the old name misled people into thinking that it was a boolean.
/cl
Machines don't really give players feedback about upgrades, aside from machines like the cloner where new functions are unlocked. I'm adding examine descriptions that should help with this:
Yeah yeah I know no opening too many WIP PRs but this one's [ready] and I want to make sure any furthur techweb development doesn't keep using the old reference system which will make refactoring it harder, and this makes it easier for coders to do stuff in theory (at least for me), standardizes getting a node/design, and makes stuff actually GC properly.
* Fixes bluespace crystal memes
* Generalizes refined type check
* generalizes here as well
* Now now, no need to be lazy.
* removes duplicate istype check
add: The vault now contains an ore silo where the station's minerals are stored.
add: The station's ORM, recycling, and the labor camp send materials to the silo via bluespace.
add: Protolathes, techfabs, and circuit imprinters all pull materials from the silo via bluespace.
add: Those with vault access can view mineral logs and pause or remove any machine's access, or add machines with a multitool.
tweak: The ORM's alloy recipes are now available in engineering and science protolathes.