* Fix server hang in budgetordering (#81950)
fixes#81949
usr is almost always null here so this will almost always runtime the
inner proc which triggers a large enough amount of error logging to soft
lock the server since this happens in a proc called by a loop in a proc
called multiple times a second by a high priority mc subsystem.
Atm opening the budgetordering computer has the risk of causing high
enough time dilation to disrupt or kill the round so this should be fast
tracked to a merge
* Fix server hang in budgetordering
---------
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Fix some copy paste UI errors (#81325)
## About The Pull Request
One day we will have opendream lint to catch this. (WYCI I guess)
* Fix some copy paste UI errors
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Integrated circuits for modular computers (#80530)
This PR integrates circuits for modular computers and a good bits of
their programs.
The peculiarity here is that modular computers have no fixed amount of
unremovable components (except the base one with just a couple ports for
now), instead, they're added and removed along with programs. With a few
exceptions (such as the messenger and signaler), for these program
circuits to work, their associated program has to be either open or in
the background.
For a reason or another, not all programs have a circuit associated to
them, still, however the programs with a circuit are still a handful.
They are:
- Nanotrasen Pay System
- Notepad
- SiliConnect
- WireCarp
- MODsuit Control
- Spectre Meter
- Direct Messenger*
- LifeConnect
- Custodial Locator
- Fission360
- Camera
- Status Display
- SignalCommander
*By the by, sending messages has a cooldown, so it shouldn't be as
spammy. If it turns out to not be enough, I can make it so messages from
circuit will be ignored by other messenger circuits.
The PR is no longer WIP.
I believe modular computers could make for some interesting setups with
circuits, since they're fairly flexible and stocked with features unlike
many other appliances, therefore also a speck more abusable, though
limits, cooldowns, logging and sanitization have been implemented to
keep it in check.
🆑
add: Modular Computers now support integrated circuits. What can be done
with them depends on the programs installed and whether they're running
(open or background).
add: Modular Consoles (the machinery) now have a small backup cell they
draw power from if the power goes out.
/🆑
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* PDA update (Messenger works while dead, Microwave works, etc). (#80069)
This is an update that touches many more things all at once (compared to
my other PRs) meant to make PDAs in general feel more consistent and not
take away from one of the experiences we want to encourage: interaction
between players.
1. Replaced all checks of a 'pda' with a 'modular pc'. This means
technically (though not done in-game currently) other modpcs can hold an
uplink, and microwaves can charge laptops.
2. Speaking of microwave, they now don't break and require
deconstruction if the cell is removed mid-charge.
3. When a Mod PC is out of power, it will now allow the Messenger to
work (which now also doesn't consume any additional power), if the app
exists on the PC. Here's a video demonstration
https://github.com/tgstation/tgstation/assets/53777086/7ae12f81-a271-49b8-95fa-2ba54d2e2d1f
4. Flashlights can't be turned on while the cell is dead
5. I replaced a bunch of program vars with ``program_flags`` and renamed
``usage_flags`` to ``can_run_on_flags``.
6. Added a debug modPC that has every app installed by default. Mafia
had some issues in the past that were unknown because Mafia wasn't
preinstalled with any tablet so was never in create & destroy nor in any
other unit test. This was just an easy solution I had, but PDAs should
get more in-depth unit tests in the future for running apps n stuff- I
just wanted to make sure no other apps were broken/harddeling.
Currently when a PDA dies, its only use is to reply to PDA messages sent
to you, since you can still reply to them. Instead of just fixing it and
telling players to cope, I thought it would be nice to allow PDA
Messenger to still work, as it is a vital app.
You can call it some emergency power mode or whatever, I don't really
mind the reason behind why it is this way.
When I made cells used more on PDAs, my main goal was to encourage
upgrading your PDA and/or limiting how many apps you use at once, I did
not want this to hit on players who use it as a form of interaction.
This is the best of both worlds, I think.
The rest of the changes is just for modularity, if some downstream wants
to add tablets, phone computers, or whatever the hell else, they can
still get just as far as PDAs should be able to get to, hopefully.
🆑
add: PDAs with a dead power cell are now limited to using their
Messenger app.
fix: Microwaves now stop charging PDAs if the cell was removed
mid-charge.
fix: Microwaves can now charge laptops.
fix: PDA Flashlights can't be turned on while the PDA is dead.
fix: You can now hold a laptop up to a camera (if it has a notekeeper
app installed) like PDAs already could.
/🆑
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* ok
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* [BOUNTY] Re-adds Contractors
* I hate copy pasted overrides so much. BEGONE
* Fixes the merge conflict. It's still not gonna work, too many proc redefinition
* The sheer amount of overrides
* This is hell
* remove modular copy of spawn_contractor_partner
* part 2 of spawn_contractor_partner oops
* un-duplicate create_contracts proc
* Remove duplicate contract generate and finish_enter
* something to make the linter stop crying
* Receiving
* removes our contractor stuff in favour of parity
* Update SyndicateContractor.tsx
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Adds user feedback for going over order limits in cargo console (#76344)
This'll prevent weird "above the max by accident" cases, and also uses
defines instead of hardcoded stuff. This code is often duped, wish we
had a better way of handling it.
Oh also removes a few safety copies before for loops that aren't
actually needed (for x in list copies the list)
Better UX, slightly saner code
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Cannot use departmental budget cards as source of credit withdraw (#76113)
Currently you can put cargo's budget card into your PDA, go into NT Pay
and send over the budget to any pay token you want including yours. This
just adds a check to ensure you aren't using that kind of card as
withdrawal source.
* Cannot use departmental budget cards as source of credit withdraw
---------
Co-authored-by: Pepsilawn <reisenrui@gmail.com>
* Cargo category cleanup (#75374)
## About The Pull Request
I accidentally discovered that when #55504 removed cargo export
categories being a thing during export value evaluation, in two
instances, they forgot to remove passing over the now defunct export
categories, causing it to be passed in as the elasticity value, and by
sheer coincidence, this was not causing problems (due to being overriden
by a named argument in the pirates case, and cargo_exports being
evaluated as true in another).
This PR fixes the arguments, preventing possible bugs in the future.
This also removes the code that set if the cargo shuttle could sell
contraband and emagged items, as that is no longer a thing. I talked
with @ ArcaneMusic about this, and they agreed, albeit with the caveat
that if someone finds a good use case for this feature, it could be
saved.
This PR also autodocs several export related files, and cleans up
various single and two letter vars.
## Why It's Good For The Game
Cleaner code, unused code removed.
## Changelog
🆑
code: cleaned up cargo export code a bit
/🆑
* Cargo category cleanup
---------
Co-authored-by: Profakos <profakos@gmail.com>
* Tablet UI update (mostly fixes) (#74844)
## About The Pull Request
Tablet UIs are now changed when opening/closing an app, instead of
constantly checking for a UI change every ui update.
Program UI acts no longer call parent, as it was unnecessary, Computers
are the ones that should be calling it.
Fixes a ton of problems with static data not updating, such as in
Messenger, ID management, Siliconnect, and Chat client
Chat Client's Admin mode also works again, which was broken when
accesses to check was turned into a list.
Turns a few lists in Robocontrol into static ones when we aren't
changing anything, and makes it actually scan your ID's access.
Fixes budget ordering being unable to show the cart/call the cargo
shuttle.
## Why It's Good For The Game
While I can't seem to find a single issue report on any of the above,
these are still problems that should be fixed.
## Changelog
🆑
fix: SiliConnect can download borg logs again.
fix: The RD can once again enable Admin mode on Wirecarp
fix: NT IRN can once again see the shopping cart and call the cargo
shuttle.
fix: Chat Client, ID Management and Messenger should now update their
UIs properly.
code: PDAs will hopefully not lag as much when clicking on buttons (such
as in ID management).
/🆑
* Tablet UI update (mostly fixes)
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Tablets don't close their UI when changing program (and some fixes) (#73635)
## About The Pull Request
- Tablets now refresh their page when changing programs, this means the
UI will no longer close and reopen itself several times (or even have
several UIs open if shit broke hard enough).
- Removed tablet's attack self because interact already does everything
it had to do.
- Header programs now close when minimized (as there's no button to
close them in the main menu.
- Removed a lot of program UI stuff, it's now handled by the PC itself,
such as header data and ui host.
- Cut off asset sending from TGUI into it's own proc so I can re-send
assets when changing programs
- Added an ejection button for machine computers
- Fixed ID not ejecting into the user's hand when using 'Eject ID'
- Fixes a minor runtime when opening the MODsuit application without a
MODsuit already connected.
## Why It's Good For The Game
Fixes some bugs that I found with tablets
UIS now won't be flickering as bad in front of them, or have
inconsistent placement (like when you move your main menu UI, go to
Messenger, then it's back to the center of the screen).
Video of it in action
https://user-images.githubusercontent.com/53777086/221301417-78321149-0c10-475e-bd29-79f5a4ba0597.mp4
## Changelog
🆑
fix: Being in an application now properly uses the tablet's battery.
fix: Messenger and Themify apps now close when minimized, so don't count
towards the running app limit.
fix: Tablet UIs will now no longer spam open/close the UI when changing
applications
fix: Using the Eject ID button on tablets now ejects into your hand.
fix: Computers now have an Eject ID button
refactor: Cut down a lot of copy paste in tablet & program code, now
it's mostly done by the tablet.
/🆑
* Tablets don't close their UI when changing program (and some fixes)
* Update contractor_tablet.dm
* wew
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Minor improvements to mining order console
* merge
* Mining orders can no longer error and don't say they charge you (#71676)
- Mining orders now show the amount of mining points spent as the 'Cost'
instead of a flat 240 credits
- Mining orders now no longer have errors (including nothing being in
the crate at all) because they can't be sent back for a full refund.
- Mining orders no longer say they charged you if they haven't.
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* quick reorder
* nakamura part 1
* nakamura finished maybe
* blacksteel does not actually make black steel
* renames the folder, special metals part 2 for blacksteel
* WHERE WE PLAY NOTHING BUT ROCK, ROCK, AND MORE ROCK
* file pathing
* blacksteel done
* nri surplus start
* interest stuff, company flags, nri surplus completion
* deforest medical
* theres gonna be multiple nakamuras actually
* donk co
* the prices are behaving strange
* those are a tad expensive
* im so confused
* ticks the other companies to see if maybe they're responsible
* also maybe that?
* on jod bro they just needed to all be the same name
* kahraman mining tools
* nakamura tools
* nt-bolt defense equipment
* the two g*n companies
* ammo company
* good lord what is happening in there
* STOP TALKING ABOUT GUNS, IM TIRED OF HEARING ABOUT IT
* hopefully the last few bits of gun-centricity (i don think that's a word
* price adjustment
* changes what can be a freebie
* those should be the other way around
* well that'd just make the descriptions incorrect now would it
* 1st batch of changes
* pt2
* oopsies (makes every test fail)
* then king minos told me "DIE" and I was like 💀
* some of those things could cause problems
* they even spelled asbestos wrong
* ultrakrill (funny)
* i hate this dumbass """"""advanced"""""" ammo box thing
* nakamura was a bit hard to get interest from
* not much a fan of how interest goes down
* those mod cores should be cheaper
* again fuck this stupid ''''''''advanced'''''''' ammo box shit
* price adjustment
* misinput
* Update accretion_incompatibility.dm
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* Add check for ordering permissions before using department account as payee for NIRN, also fixes#68765 (#69290)
About The Pull Request
See title
Why It's Good For The Game
Fixes#68765, also currently, while NIRN is meant to parallel the features of the cargo console for non-heads of staff, requests are also paid by the department account instead of the general cargo budget for non-heads of staff
Changelog
cl
fix: Putting a budget card into NIRN now gives the proper error message if you are trying to buy something privately, and treat you as a normal cargo request order by someone without any permissions otherwise
fix: NIRN orders should now charge the department that bought it only if a head of staff ordered it
/cl
* Add check for ordering permissions before using department account as payee for NIRN, also fixes#68765
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
* CARGONIA THE FREE: The Quartermaster is now a head of staff. (#67518)
* The Quartermaster is officially a head of staff, with new accesses, a silver ID, ect ect.
* The HoP lost their cargo-related equipment and access, including the Vault monitor, and frequency.
* wew
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Makes departmental budget accounts visible on command IDs, makes departmental budget mechanic more obvious in general (#67035)
* Head ID reports dep budget
* Adds Dep. Budget shorthand name to ID examine where applicable
* Cleaner & more readable ingame and codewise
* Modifies Cargo requests console js to allow title modification, IRN modifies titles where applicable
* Better way of doing things
* QM gets Cargo's budget on ID
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* pain peko
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Makes departmental budget accounts visible on command IDs, makes departmental budget mechanic more obvious in general
Co-authored-by: nickup9 <nicholas.shpetner9@gmail.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* [MDB IGNORE] Removes tablet cartridges + reworks a ton more (#66505)
- All tablets who previously had apps in a cartridge now has them built-into their tablet instead. This means it costs space for it.
- Rebalances the sizes of several apps to help them fit on Command tablets (Cargo ordering costed 20!!)
- Removes tablet cartridges, they've been reworked into a regular old portable disk (the same you use for toxins/borgs)
- Removes Signaller (the module required to run the signaller app) from tablets (likely will remove more in the future)
- Refactors the health/chem scanning app to not be as bad
- Dehardcodes detomatix resistance
- Ability to send PDA's to all is now tied to your access rather than a cartridge
- Moves 'eject disk' button to the very top of the UI
* [MDB IGNORE] Removes tablet cartridges + reworks a ton more
* wew
* wew
* ok
* Update nanotrasen_consultant.dm
* Update nanotrasen_consultant.dm
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Add undelivered departmental order crates and syndicate bombs to the cannot be delivered message. (#64606)
* Add undelivered departmental order crates and syndicate bombs to the shuttle cannot be sent message.
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
* Fixes#62719, exploit that let players order crates marked as special. (#62723)
* Update orderconsole.dm
* Update orderconsole.dm
* Update budgetordering.dm
* Fixes#62719, exploit that let players order crates marked as special.
Co-authored-by: CocaColaTastesGood <47264839+CocaColaTastesGood@users.noreply.github.com>
* Removes download restrictions for NIRN tablets and allows QMs to buy things directly (#59691)
Everyone can now download the NIRN program on computers which allows you to buy or request to buy stuff. QMs now also get to buy things directly. All other people will still only be able to request to purchase something.
* Removes download restrictions for NIRN tablets and allows QMs to buy things directly
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@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>
* 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>