* Replaces use of handle_atom_del() with Exited() in modular computer hardware. And fixes an issue. (#57387)
Title. The issue being hardware/on_remove() calling /try_eject() even if the holder is being destroyed, which is quirky. I also replaced an instance of /New() with /Initialize() and deleted a troublesome /Destroy().
handle_atom_del() is awful. Nearly every (minus the storage component; it's a tangled trial of mental gymnastic) behavior implemented there can pretty much be moved to Exited() and it'll work just as fine, if not better against edge cases such as recall spells. But that's not the scope of this PR. I'm here to fix#57161.
* Replaces use of handle_atom_del() with Exited() in modular computer hardware. And fixes an issue.
Co-authored-by: Ghom <42542238+Ghommie@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>
* Adds the ability to download a borg's logs using SiliConnect. (#57300)
About The Pull Request
Adds a function to Siliconnect in which you can tap a borg using a mobile device that is currently running the software, and it will download the borg's logs. These logs list events such as being locked or unlocked, taken offline and being restored, and the process of being emagged. Borg logs will now list the emag user's name as a new user.
Downloading the logs is done by right-clicking the borg while the software is open and active. This will "tap" the borg with the device, initiating the log transfer automatically. The transfer will take eight seconds to complete, requiring you and the borg to stay adjacent the entire time, and the borg will get a large red text alert about the upload when it starts. The logs are also not stored permanently on the device, and will be lost if the app is closed.
This PR also introduces the tap() proc for modular computer programs, and adds functionality the the computers to call it when right-clicking with the tablet as a tool. Should the app use the tap in a meaningful way (such as starting a borg log download), it will return TRUE, and the computer will end the secondary attack chain.
Currently, this requires using a tablet or laptop with Siliconnect, as you cannot tap with a console. Someday I hope to add an additional hardware option for consoles in the form of a wireless hand scanner to replicate tapping.
Why It's Good For The Game
Adds a neat way to "diagnose" a borg acting oddly, assuming you have a way to keep them still. Allows one to view if the borg has been emagged, by whom, what SiliConnect messages the borg has received, the number of law changes that have been made, as well as some other (somewhat fluff) information relating to taking damage and getting upgrades.
Changelog
🆑
add: You can now download a cyborg's internal logs by right-clicking them with a mobile device running SiliConnect. Take a look if one is acting a bit strange, you might find something interesting.
add: Borg integrity (health) is now roughly shown in SiliConnect, under "Condition".
/🆑
To Do:
Fix the to_chat not being sent to the borg when a log transfer breaks due to distance
Add some sort of text feedback when tapping an atom with a device, or viewing one being tapped.
Possibly restrict syndicate borgs from having their logs viewed by SiliConnect (and likewise with station borgs and Roboverlord) Changed my mind on this, will implement later if we find it's needed.
Change the log area of the window to expand naturally rather than use a fixed height
image
I'm not super deadset on the emag user's name being listed. It seems like a neat function unique to having a tablet running Siliconnect (as most of the other info is already available through other means), and one can always pop the brain out for a re-borg and demand the name anyway.
* Adds the ability to download a borg's logs using SiliConnect.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Adds extended Centcom support for ID console app and misc fixes (#57420)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds extended Centcom support for ID console app and misc fixes
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fix inability to demote certain subordinates with the ID card app. (#57317)
The trim system handles the interaction between heads and their air quotes "subordinates" differently. Instead of checking for head_subordinates - Which is a compiled list for who is and isn't a subordinate of who based on job datums - We instead check for the ability to apply a trim's access template to a card.
This means that if you're able to assign a trim's access as a template, you're able to demote that trim too.
This fixes some edge cases like being unable to demote Security Officer (Department) cards because technically Security Officer (Engineering) and Security Officer (Science) aren't real jobs (insert joke here) - They lack job datums and never get assigned as the HoS's subordinates.
This is a much more modular and intuitive way of handling demotions.
* Fix inability to demote certain subordinates with the ID card app.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Miscellaneous appearance fixes. (#57133)
* Fixes modular computer runtimes
- Adds a proc to eat the source arg of the update icon signal.
* Fixes a couple things not passing the right args
- Fixes the alien leap hallucination passing a string as the first arg to updat_icon
- Fixes the roulette machine passing the payout as the first arg to update_icon.
* Miscellaneous appearance fixes.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* tgui: Total Moles in SM Monitor, Own Defines File (#57270)
Ever wondered why you failed to setup the scrungularity?
Well, wonder no more! The NT CIMS tab has been made to show total moles. The pressure got kicked however, since it's practically useless. The bar also turns red if your SM is eligible for scrung.
Moved the supermatter defines into it's own files too.
* SM monitor shows total moles & SM gets it's own defines file.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* clown is dead and we have killed him
* bugfixes
* Update jobmanagement.dm
* Update jobmanagement.dm
* thanos snapped clown a little too hard and deleted a comment
* Fixes cargo barcode payouts paying 50x what the sale is worth (#56914)
* Fixes cargo barcode payouts paying 50x what the sale is worth
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* NTDownloader UI revamp (#56704)
Revamp of the software downloader program for modular computers.
Changes:
- Programs are now sorted alphabetically with incompatible ones in the end of the list.
- Installed programs are now displayed in the list.
- Added program icons.
- Moved the error messages in place of the download button.
- Only the most important error message is displayed now. Priority: compatibility, access, free space.
- Syndicate programs are now displayed in the same list, but have a warning message from NT (There are no warning messages on syndicate OS).
- Added program categories to improve navigation. The default option "All" contains items from all categories.
- Download progress bar moved in place of the Disk usage bar. Disk usage is updated only after the download is complete, so the information was inaccurate during download. And the download bar now always visible regardless of selected category.
- The old download progress bar (next to the corresponding program) is replaced with "Downloading" indicator with a spinner.
Co-authored-by: Aleksej Komarov <stylemistake@ gmail.com>
* NTDownloader UI revamp
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@ gmail.com>
* [READY] Adds station traits: Small modifiers that can randomly be chosen each round
* conflicts
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Improve ID console name and assignment input (#56662)
reject_bad_name and reject_bad_text doesn't directly sanitize. It's
best not to rely on this proc to sanitize as that's not the point of
it, even though it can sanitize as part of its functioning. Instead,
we explicitly sanitize the input first, then we reject_bad_whatever
on the sanitized input.
It also offers improved feedback to the user instead of failing
silently, and allows numbers as some of our ID cards (For example,
prisoner IDs) have numbers in their registered_names and assignments.
I don't like creating the game world in a state that players cannot
also replicate themselves.
Also swings by the ancient HTML interfaces to bring them up to the
same standard through either sanitizing input or stripping input as
appropriate.
* Improve ID console name and assignment input
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Various crew tracking fixes (#56591)
Nanite Monitoring program now makes people trackable as if they have enabled their suit sensors, as stated in the program description.
Now you can track people with Nanites Monitoring program using following devices:
Crew pinpointer (arrow)
Crew pinpointer - contractor version (arrow)
Crew pinpointer (proximity)
Lifeline radar (modular computers software)
Also fixed multi-Z tracking for the first three devices. When the target is on different Z of the same station, it shows "?" icon.
Also, the stationary crew monitor will now work properly on multi-Z stations.
* Various crew tracking fixes
Co-authored-by: Andrew <mt.forspam@gmail.com>
* renames metal sheets to iron sheets
* Merge branch 'master' into upstream-merge-56643
* yay metal
* Update DeltaStation2_skyrat.dmm
* a
* Update CentCom_skyrat_z2.dmm
* a
* a
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* ID Card access change logging, Part 2 (#56155)
I've condensed the logging into a single define, to allow ID card logging to be easily tweaked and to clean up some messy copy-pasted code.
There is no longer admin messaging for Head of Staff accesses, but it's all still logged as it was before.
There is a new option for the Investigate verb.
Which has the complete logging history for ID card changes that are currently tracked, all in one place.
Which admins can ALSO access from Get Current Logs and Get Server Logs for past rounds via id_card_changes.html
* ID Card access change logging, Part 2
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* stops code from seeping into ic chat (#56088)
changes the reference in the modular computer code from src to computer as src is a datum
* stops code from seeping into ic chat
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* Adds logging and admin notifications to certain ID card access changes (#56014)
* Loog
* Adjust modular computer loog
* Update access.dm
* Move ADMIN_VV in string
* To define or not to define, that is the question when logging everything
* More user loog
* Ads loging and admun notifucations too certain ID card access changes
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Emagging Siliconnect allows for sending messages to borgs without an ID (#55593)
SiliConnect (the tablet app for managing borgs) requires an ID to send messages to borgs in order for the user's name to be attached to the message. This change allows anyone with an emag to remove this requirement, and instead send messages without the sender's name attached. The borg will instead see "STDERR:UNDF" as the name.
* Emagging Siliconnect allows for sending messages to borgs without an ID
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* The Great Radio Rework: NTNET Part 1 of many.
* Update airlock.dm
Co-authored-by: WarlockD <warlockd@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Allow modular computers to be attacked (#55629)
You will now attack modular computers if you are not in help intent, rather than opening up their menu.
Why It's Good For The Game
i died here as nightmare because i couldnt attack the computer
* Modular computers can now be attacked
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Re-assesses 99% of vending prices through Arconomics to match player resources and round-length. (#54715)
* The Re-pricening
* Rewritten and adjusted for paycheck defines.
* I made the map changes finally.
* And the refills too.
* "OH YEAH REPLACING IT ALL WITH DEFINES AND SCALING IT THE EXCEL DOCUMENT WILL BE EASY, ARCANE!!!"
* And the premium ones too.
* Accidently spoiled a future pr due to dme bleedover
* Re-assesses 99% of vending prices through Arconomics to match player resources and round-length.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Feex (#54716)
[09:18:04] Runtime in card_slot.dm, line 72: Cannot execute 1.put in hands().
Usage of the try_eject proc is an eclectic mix of unimplemented behaviour and incorrect argument order, with behaviour that can cause runtimes.
Prototype for the try_eject proc wasn't even implemented properly by children. Nothing implemented it used the slots arg, so I modified the base prototype. Cleaned up various proc calls. Should no longer have incorrect arg-based runtimes.
* Cleans up try_eject proc prototype and various proc usages to fix some runtimes
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* BotKeeper (tablet app) list populates based on bot unlock access (#54730)
Anyone can now download BotKeeper. Only bots your current ID can unlock will be listed to control. Stylised Botkeeper as BotKeeper because it looks better.
* BotKeeper (tablet app) list populates based on bot unlock access
Co-authored-by: cacogen <25089914+cacogen@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>
* Arcononomy: Personal Departmental Cargo Ordering (#53881)
Alright crew, here's the 4-11. This adds a new Modular Computer app, that works functionally identically to the cargo console. but before we delve into that, lets hit the adjacent aspects first.
Cargo Packs now contain a new variable, access_view, that is only applied to cargo packs viewed in this app. It determines the access level required to be able to see those individual packs, in the same way that you need certain accesses to open certain crates anyway. This means that outside of certain inter-departmental crates that see overlap in who can/should be able to order it, heads can browse and purchase crates based on their department's needs and wants.
The cargo ordering console has been renamed on the DM side. Because now that there's another, similar cargo ordering DM that was going to get confusing fast, as just calling it "Console" gets on my nerves and is harder to spot on VSC for me and everyone going forward forever.
Cool, back to buying stuff. heads of staff can download the cargo ordering app on tablets and laptops only, and it gives them access to purchase cargo using their department funds. These purchases are made against the user's department budget, and enables purchasing supplies with cargo without needing to beg them to use their money on your junk, adding it fully to the cargo shuttle's next load, while still giving cargo the first right to refusal if they wanted to, for some reason.
From there on out, cargo's responsibility is primarily getting the goods you bought to you, which is technically already their job!.
* Arcononomy: Personal Departmental Cargo Ordering.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>