* 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>
* Fixes some borg tablet bugs (#54339)
fix: Borg tablets now correctly work when the borg is out of power (though you'll get no networking until you get that power issue sorted out).
fix: Borgs that are synced to AIs can correctly view and print photos once more.
* Fixes the borg tablet being unusable without power, and borgs usually being unable to print pictures
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Adds a bunch of looping audio to computers, grav-gen and telecomms. (#54324)
* Adds a bunch of looping audio to computers, gravegen and telecomms.
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Arconomy: Trims out some of the worst bounties, replaces them with tasks that require basic amounts of effort. (#54097)
add: Science has been given a more experimentally themed set of bounties.
del: Much of the old science bounties were discontinued.
del: ...As have the glass shard and cheese honker assistant bounties.
* Arconomy: Trims out some of the worst bounties, replaces them with tasks that require basic amounts of effort.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Unhardcodes Modular PC icons (#54158)
* Changes modPC program icons to not be hardcoded
* icons
* tgui.bundle.js, we meet again
* Makes Modular PC icons not hardcoded in NtosMain.js, and fixes them not showing up
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* NT Software Hub shows programs you do not have permissions to download (#54075)
* Show disabled downloads so you know what exists
* sorted list of apps
* NT Software Hub shows programs you do not have permissions to download
Co-authored-by: NightRed <nightred@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>
* Fix skill related runtimes in mindless mobs. (#53691)
Fixes related to mindless mobs using skills
* Fix skill related runtimes in mindless mobs.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fix runtime with NTOS apps and improve code involved (#53779)
There exists a specific state where ui.open() can be called yet the
result would be a null window and such behaviour would be intentional.
The following CRASH in ui.send_asset() would thus be misleading,
because send_asset() was called after open().
This PR adds more information to the CRASH about when the failure state
can occur, makes open() return a value based on whether it actually
opened a new pooled window or not, and makes sure modular computer apps
don't send_assets unless a new pooled window was created.
* Fix runtime with ntos apps and improves code involved in the runtime
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fixes a runtime for ModPCs running Plexagon Access Management without a secondary card slot (#53597)
As said by the title.
Also fixes an oversight where the Plexagon HR Core app (job management) was reading worn ID rather than inserted ID.
Also adds names to differentiate between primary and secondary card readers so both show on the screwdriver remove menu.
Also makes using IDs on a modPC actually call the InsertID proc, so that having the secondary ID come first in the list of parts doesn't give it priority.
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* Fixes a runtime for ModPCs running Plexagon Access Management without a secondary card slot
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Process procs now properly utilize deltatime when implementing rates, timers and probabilities (#52981)
* Process procs now properly use deltatime when implementing rates, timers and probabilities
* Review fixes
* Geiger counters cleanup
Made hardsuit geiger code more similar to geiger counter code
Geiger counters are more responsive now
* Moved SS*_DT defines to subsystems.dm
* Rebase fix
* Redefined the SS*_DT defines to use the subsystem wait vars
* Implemented suggested changes by @AnturK
* Commented /datum/proc/process about the deltatime stuff
* Send delta_time as a process parameter instead of the defines
Also DTfied acid_processing
* Dtfied new acid component
* Process procs now properly utilize deltatime when implementing rates, timers and probabilities
Co-authored-by: Donkie <daniel.cf.hultgren@gmail.com>
* Fix Cargo tablet bounty programs not being able to print the bounty form (#53365)
Fixes the printer cool down system that started the printer cool down when you press any button??? meaning that it would always fail since the cool down was reset after the button was clicked. The cool down is now only reset until AFTER the print operation.
Also adds a message that lets you know if the print cool down is not over yet, so it doesn't fail without feedback.
* Fix Cargo tablet bounty programs not being able to print the bounty form
Co-authored-by: Jack7D1 <59462654+Jack7D1@users.noreply.github.com>
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is
Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Couls <coul422@gmail.com>
* Refactors machine_stat and is_processing() to process on demand (#53150)
* Refactors machine_stat and is_processing() to process on demand
* Fixes master (#53193)
* fixes master, damn it me/mothblocks
* fuck again
* ANOTHER ONE
* Fixes master
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes a runtime caused by examining a modular computer with no primary ID slot (#53009)
* Fixes a runtime caused by examining a modular computer with no primary ID slot
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Support for expansion-class modPC hardware (#52644)
* Support for expansion-class modPC hardware
* end of the line
* As requested
Did anyone know that the tablet vendor was attaching the wrong ModPC printer? I bet no one knew that.
* update
* Support for expansion-class modPC hardware, a modPC hardware item required for the atmos scanning app, and reworking ID card slots in a related fashion
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Cleanup up all instances of using var/ definitions in proc parameters. (#52728)
* var/list cleanup
* The rest of the owl
* plushvar bad
* Can't follow my own advice.
* Cleanup up all instances of using var/ definitions in proc parameters.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Updates modular PC program names to have some flavor (#52492)
* Better program names
* Forgot a few things.
* oops
* Updates modular PC program names to have some flavor
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Color standardization, vars moved, and signals (#52574)
Defined all the existing light_color values.
Moved their definitions to colors.dm
Made white the default color. It was so already, but that was very obscured.
Moved the atom light-related variables to the atom definition.
Wrapped changes to variables such as light_color into procs that report the event through signals.
Moved the light_on variable to the atom level, also adding a signal for its changing, to represent toggling lights.
Cleaned up a little bit of code in where new variables were defined before redefinitions.
This is all atomization to reduce changes in #52413
None of this affect gameplay at all, it's all code cleaning and refactoring.
There's more colors to standardize, a search for color = will find lots of targets, and I see little need to have both the LIGHT_COLOR and COLOR patterns, but I don't want to make this PR bigger than it already is.
* Color standardization, vars moved, and signals
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update AI health after healing damage in integrity restorer
* Also feex legacy AI inegrity restorer.
* Update IntelliCard icon when AI is successfully revived.
* Clean up proc arguments
* Feex
* Removing a bunch of oxygen stuff
* breaking works
* completely functional yes
* reverts some old changes
* thanks based shiz
* i said 'thanks' god damn it
* oops
* another one bites the dust
* they told me math was of variable difficulty
* Startwork
* stopwork again
* AGAIN.
* Good place to call it for now
* Startwork but I actually put some work in
* The left list doesn't work, stop for now.
* God remind me to squash these commits later.
* Well, I think I can safely say I have actual work done now
* The post-Brisk iced tea patch.
* God damnit nothing works I hate this worl
* Good place to stop, stuck in a chronic error state
* I take it back now I need to sleep jesus god
* I am grown POWERFUL in my dispair
* FINALLY READY TO PR.
* Request order swap
* Update and tgui recompile
* Adds a kiosknet, so adding a new bounty alerts all the bountyboards
* Renames file, attempts to port to modular app too because fuck my life
* Fuckin feature creep I tells ya
* Removes an unused proc
* Rebuildin
* Hopefully updates tgui and fixes an easy runtime
* Finishes updating/conflicts
* Mapmerges my shit.
* Rebuilds tguiiiiiiiiiiii
* Updates tgui
* Updated once more
* merge conflict fixaroni
* God I wish that I had a game I was dedicated enough to finish in a single setting
* Rebuild of PR: You will (Not) compile
* Cobby's changes and Anturk's Suggestions.
* Should probably prevent a runtime.
* Rebuilds TGUI.
* Lets not delete my own files please god
* Style's changes
* ALL the warriors
* What if I didn't delete ZX's app sprites again
* Start workin on a text component later
* Makes some code suggestions, doing it all in UI will kill me
* tgui update
* DNM until I get this gosh darn text working.
* The changes that I need afaik
* And a tgui rebuild to boot
* When that program datum spoke to me, I felt that.
* Makes changes to text input sanity, Pray
* By god I think I've cracked the code.
* Had no idea you could atomize UIs like that, this is revolutionary
* Spaces
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* How did this take me like 3 hours but the bounty UI took 4 weeks like fuck
* Uses style's suggestions for UI cleanup.
* Rebuild TGUI
* Squiggly Brackets No. 1
* Squiggly Brackets No. 2
* Rebuilds tgui also sorry style I got lazy
* Another tgui update
* GREP?
* Rebuilds tgui again
* Rebuild yet again
* How'd you like a nice tender lambchop?
* Take me HOOOOOOOME country ROOOOOADS
* Updates with Anturk's changes.
* Removes unnecessary flex element
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Synux
* cleanup
* I bet this merge conflicts
we hate tgui.bundle
* extra bits
* Syndix
* small fixes
* Summary (required)
* this linter drives me up the wall
* final touchups
* Forgot this thing
* Case of lower
* More changes
* Ruins the nice 420 diff, brainfart when doing the second batch of conversions
* More changes
* Next batch. I think
* Converts even more paths
* Restarts bots
* Capital Free Zone
* Come on travis, do something
* Renames areas
* Bots, please stop dying
* Updates CONTRIBUTING.md and updates a few paths I missed.
* APC recgarftzfvas
/obj/item/computer_hardware/recharger/apc to /obj/item/computer_hardware/recharger/apc_recharger
* Initial update
* tgui ofcourse
* Small fixes
* More lint fix
* Updated to support signatures and adding to paper
* Sign and adding to paper work, need to tune it a bit though
* Ok, signatures and adding work, still working on stamps
* Stamps now, fix rotate and cleanup tommow
* Alrighty! Lets try for some testing!
* Stupid travis
* annnd the bundle
* Minor fixes
* DONE. Still have some code cleanup, but all the major features work now
* Requested changes cleaned up formating
* Dammmn you bundle!
* Fixed the preview issue
* Updated bundle
* Ok, some more fixes and clean up
* Ugh damn you tgui bundle
* Update tgui.bundle.js
About The Pull Request
It simply adds a new Modular Console Preset to the existing ones, fully outfitted to replace the current Identification Console in the Head of Personnel's Office and in the Bridge, and in most of the maps' Customs desks. Note that it doesn't replace them, it's just an asset right now so we can replace them with another PR, at the pace the map maintainers feel confident with. It has the ID Card Modification, Job Manager and Crew Manifest softwares on it by default, alongside the regular Chat Client.
The new Modular Console Preset can be found under /obj/machinery/modular_computer/console/preset/id, for all your map editing needs.
I'm planning to see if I can't make changes to the Departmental Consoles later on as well, so we basically can get rid of a console in every Head of Staff's office (except the HoP because there's only one), but that will require some additional coding to make it so it's not straight up some Identification Consoles that people with All-Access could use to print even more All-Access cards.
Why It's Good For The Game
I've basically just implemented something that I feel was meant to be implemented a while ago through the use of TGUI and Modular Computers, but never actually got done. The console doesn't have the glitches of the current Identification console, when you remove your ID after logging in and it just goes to a page saying that the address couldn't be found. The UI is much simpler, looks a lot better and is just overall an improvement.
Here's what the new UI looks like, for those of you that don't feel like checking out the PR in-game to know what it looks like:
image
image
Changelog
🆑
add: New Modular Console Preset added: /obj/machinery/modular_computer/console/preset/id
/🆑
About The Pull Request
Adds two new modular computer programs. Both use the same underlying parts;
-- Lifeline is an improved suit sensor tracker, showing where the target is on a grid if they're within 24 tiles. The scan button has a two-second delay (since the program has to check every humanoid in glob.human_list for trackability and we don't want that spammed). The app works pretty much how you would expect.
-- Fission360 uses the same processes as above but for the nuke disk and all nukes in the area (self destruct, beer, syndicate). Available only via emagging a tablet for the moment.
--
Rudimentary multiZ support exists, in the form of replacing the crosshairs icon with an up or down arrow (once it's visible within the circle) to indicate if the target is above or below, if both the target and the computer are on a station Z level of some sort. Also, the grid lines are exactly two-tiles apart.
Added support for programs to list special assets to load, so that we don't have to have every program loading all modular program assets. The radar apps use this to load the background grid and the too-far-away-to-display arrow.
Why It's Good For The Game
More modular apps are good. I'm hoping to see a syndicate-version of the modular tablet in the hands of nuke ops at some point, which is really where Fission360 will make sense. Otherwise, it's an extra tool for traitors with the nuke theft objective, I suppose.
Changelog
cl
add: Two new apps for modular computers are available: Lifeline for Medical, and Fission360 for anyone with access to the Syndicate repository. Lifeline is an improved suit sensors tracker, and Fission360 is the same but for nuclear-related things.
/cl