Fixes the ORM I/O lights (#72936)
## About The Pull Request
The ORM's input lights have turned invisible, due to item state names
that have not been updated. This PR fixes that. It also autodocs the
various procs and vars.
## Why It's Good For The Game
Fixes#72923 It is good to see which direction you have to place the
ores.
## Changelog
🆑
fix: The ORM's input and output lights are once again visible
/🆑
Co-authored-by: Profakos <profakos@gmail.com>
Moves mining points from the ID to the bank account (+credit type shown on order console) (#72726)
## About The Pull Request
Mining points are now stored on the ID's bank accounts instead of the
individual IDs, bringing them on-par with credits. This allows miners to
safely replace their ID and keep their mining points just like they can
for their credits.
I also added the cost type on Produce Consoles, so people using them
will know whether they're using mining points or credits.
Because all IDs have a bank account by default, this won't be a problem
to Golems or the like.
## Why It's Good For The Game
1. It's more clear to the player what type of credit is being used in
the order console
2. Mining points being tied to the ID is no longer needed as all IDs
have a bank account
3. Brings mining points up to the same standard as credits.
## Changelog
🆑
qol: Mining points is now tied to bank accounts instead of individual
IDs, so they transfer over in cases of an ID replacement.
/🆑
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Autounlock techwebs are shared between machines that use them. (#72515)
## About The Pull Request
Did you know that for every Autolathe, Limbgrower, Biogenerator, ORM,
and Smelter that was built, an entire new techweb was made? The average
round has 2 ORMs (smelters count) if not more from ORM deconstruction
objective, 2 biogenerators, several autolathes and generally 0-1
limbgrower, I think there's more techwebs being created than we need.
Creating a whole techweb was a pretty terrible way to optimize this, so
I made a global list that stores these techwebs. Created on demand,
these autounlocking techwebs now share between the machines that use
them. It also generate all hacked nodes which will be visible if the
machine is hacked, instead of 'researching' them for each hacked
individual machine.
The 'specialized' techweb subtype was removed because its sole purpose
was to allow autounlocking to be a subtype of it. Now autounlocking is
just the direct subtype. I also removed mechfab autounlocking type
because it wasn't used, mechfabs use techwebs directly.
Autolathes and Limbgrowers now locally store 'imported designs' which
are things uploaded from technology disks. Outside of this, the
autounlocking techweb subtype now stores 'hacked designs' which unlocks
when the machine is emagged.
While doing this, I saw ORMs and Biogenerators had disks you can insert
into them, but I did not find anything that can actually be uploaded to
them (I saw Alien Alloys as a possibility, but there's no such disk to
allow uploading this alloy to the machine, and I didn't think an entire
system for 1 single alloy was worth keeping around), so I removed this
unused feature from both machines.
I merged 'Hacked' and 'Emagged' categories because they served the same
purpose, 'hacked' being on hacked autolathes and 'emagged' being on
hacked (emagged) limbgrowers.
Tech disk techwebs (which is created every time a disk is made, however
I hope to change this in the future) into it's own subtype, so admins
understand where its from when looking in VV panel (because I was
confused when I saw them at first).
``autolathe_crafted`` proc was removed because it was entirely unused
too.
Now it looks like this, which I consider an improvement:

## Why It's Good For The Game
We no longer initialize a brand new techweb for no reason whatsoever.
Each techweb made is making entire lists of experiments and research
papers, all of which is never to be seen in-game and is completely
useless to the player. Cutting down on these techwebs is a good first
step to this needless initializing.
## Changelog
🆑
qol: Removed the tech disk part of the ORM's UI as it was entirely
unused, now it's a little more compact with less scrolling needed.
refactor: Autolathes, Limb growers, Biogenerators, ORMs and Smelters now
share techwebs with other machines of their types, rather than all make
new techwebs each time. This means they only build their nodes once,
including hacked ones. Instead of researching nodes on hacking the
machine, they now show hacked ones depending on if it's hacked.
/🆑
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Autounlock techwebs are shared between machines that use them.
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Biogen shows default reagent container icons instead of beakers (#72247)
## About The Pull Request
With the new crafting menu some reagents now have default container
assigned.
I applied these to visualize reagents in biogen UI too.
<img alt="060ybChTkI"
src="https://user-images.githubusercontent.com/3625094/209483256-e4159a05-46ae-47b8-bc42-9d003cf6c303.png">
## Why It's Good For The Game
Better representation of a reagent.
## Changelog
🆑
qol: Biogenerator shows default reagent containers instead of beakers
/🆑
* Biogen shows default reagent container icons instead of beakers
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* Gives the ORM a visual indicator showing which side is the input and which is the output (#69551)
About The Pull Request
Gives the ORM a light on either side showing which is the input and which is the output, blue for input, red for output.
ORM
121212
233123123
Why It's Good For The Game
Useful for if anyone decides to move the ORM.
Changelog
cl Wallem
qol: The ORM now has color-coded lights showing which side is the input and output. Blue for input, red for output.
/cl
* Gives the ORM a visual indicator showing which side is the input and which is the output
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
* updateDialog and updateUsrDialog cleanup (#66494)
This PR focuses on cleaning up two procs - updateDialog and updateUsrDialog. Both of which are/were used updating for old HTML UIs. As these UIs got converted to TGUI over time, these old code fragments started to pile up, often due to coders simply overlooking them. This resulted in them being dead code doing nothing when called, or randomly opening up windows when they shouldnt, for example when a vending machine is screwdrivered and UI cannot even be interacted with.
However, there were also some desirable uses - like opening a window when an ID is inserted into civilian bounty console, which you are then gonna obviously use to pick a bounty. I kept these uses and replaced them with proper ui_interact, so they now always work, instead of them working only when you had them set as a currently used machine on mob. The list of these changes is:
Civilian Bounty Console will now always bring up its UI when you insert the ID.
Air Alarm and APC will now always bring up its UI when you unlock their controls.
Portable Chem Mixer, Chem Dispenser, Chem Heater, Improvised Chem Heater, Chem Spectometer and Chem Master will now always bring up their UI when you add or replace beaker to them.
Two old /Topic calls were cleaned up as well, as they were no longer relevant.
Removes dead or outdated code, adds sensible UX when working with certain UIs.
* updateDialog and updateUsrDialog cleanup
Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
* Some explosions code cleanup (#57493)
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
* Some explosions code cleanup
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* minor material_container args/vars refactor and Mk-honk shoes peeve. (#54863)
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.
* minor material_container args/vars refactor and Mk-honk shoes peeve.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Non-human mobs can now benefit from held id cards and economy. (#54647)
* Non-human mobs can now benefit from held id cards and economy.
* Moved these getters toward the upper end.
* oui?
...
dump eet.
* .tee pump
...
?iuo
* Non-human mobs can now benefit from held id cards and economy.
Co-authored-by: Rohesie <rohesie@gmail.com>
* Converts A && A.B into A?.B (#54342)
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.
* Converts all A && A.B into A?.B
Co-authored-by: ZeWaka <zewakagamer@gmail.com>
* Adds Alloy Materials (#53623)
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)
* Adds Alloy Materials
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Enforce preserving parent proc return values across ui_act call stacks (#53964)
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.
* Enforce preserving parent proc return values across ui_act call stacks
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Kills bonus ore from the ORM. (#53073)
This was a mistake, and I regret doing it.
* Kills bonus ore from the ORM.
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
* 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