* The Coupon Master PDA app (#80240)
## About The Pull Request
This PR adds a new PDA program to the supply category, which allows
users to redeems coupons for various cargo packs (mostly goodies), like
the ones also found at the bottom of cig packs.
How it works is fairly simple:
- Once installed, the modular computer subsystem will periodically, at a
3-5 minutes interval, generate a coupon code datum associated to a plain
text code, which is sent out to everyone with the program installed.
- The user can then open the program and insert the text into an input
box to redeem the coupon code, which is then associated with their bank
account.
- He will then have to find a photocopier, and tap it with the PDA to
print the coupon. Only one coupon can be printed. Photocopier fees
apply, so it'd cost 5 creds to the average assistant to print the
coupon.
- He can then insert the coupon in a cargo console and order/reuest the
associated pack (same deal as cig coupons).
- Some coupon codes however, especially those with juicer discounts,
will expire after a while if not printed.
Albeit mostly innocuous, the program provides negative Detomatix
resistance, slowly fills the computer file storage with trash files with
each redeemed coupon, and halves the download speed of new apps. Not
really the cleanest ware out there.
This PR also extends coupons to several non-goody packs, since they have
been privately buyable for over the last couple years now. Some packs
get discounts less frequently however, with those in the uncommon
category being roughly 1 in a 12 chance and the rare being 1 in 50.
Here's a screenshot of the UI (outdated, I've reduced the height from
500 to 400 and the notice box tip to specify the right click):

Fun fact: Right now, the odds of a 75% discount coming from the Coupon
Master for the 1.000.000 credits bycycle pack are roughly 0.0012%, while
that of a 50% for the same pack, from a cig pack coupon are 0.0042%.
## Why It's Good For The Game
These last couple days I've been wanting to test myself at making simple
UIs, as well as contributing to the modular computers feature, which has
started to become pretty neat ever since PDAs were reworked into a
subtype of it.
Beside, coupons are a very small feature limited to the bottom of
cigarette packs (also possibly cursed) in the current state of affairs.
Cargo is filled with packs that are niche or fluff. Modular computers
also has those little things that, while interesting, do not contribute
a whole lot. Maybe this is one of them, but I guess free* coupons are
always a big W.
## Changelog
🆑
add: Added the 'Coupon Master' program for the PDA. Install it to
receive periodical, redeemable coupons for several cargo packs. Requires
NTnet connection and the messenger enabled to work.
add: Coupons are no longer only limited to goodies, but may also apply
discount to some other packs as well.
/🆑
<sup>*minus the photocopier fee</sup>
---------
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* The Coupon Master PDA app
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ 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>
* Rename notify_ghost_cloning to notify_revival (#80096)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Renames
- `/mob/proc/notify_ghost_cloning` to `/mob/proc/notify_revival`
- `/mob/dead/observer/proc/notify_cloning` to
`/mob/dead/observer/proc/send_revival_notification`
- `/atom/movable/screen/alert/notify_cloning` to
`/atom/movable/screen/alert/revival`.
I could have found a way to merge both procs together but default
parameters keep me up at night.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Conciseness, code that is named after a removed feature is silly.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
nothing playerfacing
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
* Rename notify_ghost_cloning to notify_revival
* Missed wow
* Modular
---------
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
* Emagged PDAs won't log to wirecarp. (#79707)
## About The Pull Request
Currently, every time you open/close a program, that activity is logged
for the RD to see. This includes Nukies opening their disk tracking app.
Now, emagged PDAs will no longer log activities to Wirecarp, but I did
replace it with a log when the PDA is first emagged.
Basically, nukies are undetected, but Traitors can still be figured out.
## Why It's Good For The Game
Closes https://github.com/tgstation/tgstation/issues/77201
I thought this would be better as it makes more sense to stop logging
when you're emagged, but as you are being emagged it will report the
modification instead.
## Changelog
🆑
fix: PDAs now log that they've been emagged, but will no longer log any
further programs they open beyond that. This means Nukies don't sell
themselves out by opening their disk tracking app.
/🆑
* Emagged PDAs won't log to wirecarp.
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* TGUI Destructive Analyzer (#79572)
## About The Pull Request
I made this to help me move more towards my goals [laid out
here](https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA) which currently doesn't
have much interest.
This makes the Destructive Analyzer use a little neat TGUI menu instead
of its old HTML one. I also touch a lot of science stuff and a little
experimentor stuff, so let me explain a bit:
Old iterations of Science had different items that you can use to boost
nodes through deconstruction. This has been removed, and its only
feature is the auto-unlocking of nodes (that is; making them visible to
the R&D console). I thought that instead of keeping this deprecated code
around, I would rework it a little to make it clear what we actually use
it for (unhiding nodes).
All vars and procs that mentioned this have been renamed or reworked to
make more sense now.
Experimentor stuff shares a lot with the destructive analyzer, so I had
to mess with that a bit to keep its decayed corpse of deprecated code,
functional.
I also added context tips to the destructive analyzer, and added the
ability to AltClick to remove the inserted item. Removing items now also
plays a little sound because it was kinda lame.
Also, balloon alerts.
## Why It's Good For The Game
Moves a shitty machine to TGUI so it is slightly less shitty, now it's
more direct and compact with more player-feedback.
Helps me with a personal project and yea
### Video demonstration
I show off connecting the machine to R&D Servers, but I haven't changed
the behavior of that and the roundstart analyzers are connected to
servers by default.
https://github.com/tgstation/tgstation/assets/53777086/65295600-4fae-42d1-9bae-eccefe337a2b
## Changelog
🆑
refactor: Destructive Analyzers now have a TGUI menu.
/🆑
* TGUI Destructive Analyzer
* Modular
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Renames vars on pdas and removes ntnet_relays glob (#79595)
## About The Pull Request
- replaces the ntnet_relays global list with ``get_machines_by_type``
- renames ``transfer_access`` var on PDA to ``download_access`` &
``required_access`` to ``run_access`` to better describe what they do,
because on more than one ocassion I've confused myself with the two
terms and ended up doing something unintentional (see:
https://github.com/tgstation/tgstation/pull/74269)
## Why It's Good For The Game
Kills a useless global list and makes pda code a little less confusing.
## Changelog
Nothing player-facing.
* Renames vars on pdas and removes ntnet_relays glob
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Makes notepad available for laptops and consoles (#79475)
## About The Pull Request
Makes it so that notepad can be used on consoles and laptops
## Why It's Good For The Game
Now everyone have more places to write important information. Also
someone who doesn't have PDA (ghost-role for example) will be able to
use laptop's notepad.
## Proof of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>
## Changelog
🆑
qol: Make notepad available for everyone, who has only laptop or
console.
/🆑
* Makes notepad available for laptops and consoles
---------
Co-authored-by: NeonNik2245 <106491639+NeonNik2245@users.noreply.github.com>
* Mafia now starts without admin intervention (#79348)
## About The Pull Request
Mafia should now start without the need of admin intervention.
I made a unit test that should always have a PDA and a ghost spawning in
a game of Mafia and having it run through basic setup to confirm they
both successfully sign up and the game starts.
I had to change a lot of things in order to get this working, such as
giving unique ckeys to mock clients, fixing harddels in Mafia, and
plenty of minor fixes. This is the first time any of this code is put in
CI, so a lot of uncaught errors are now showing their faces.
Because loading maps mid-round runtimes due to smoothing, I have mafia
their own unit test-only map that doesn't use smoothing.
I also split the mafia ui code into its own file, and moved a single
helper that was sitting around in mafia's file into a helpers file.
I also added some comments to explain why certain things are the way
they are, because I wrote some undocumented code previously and forgot a
few things, leading to self-inflicted wasted time.
## Why It's Good For The Game
^
## Changelog
🆑
fix: Mafia games can now start properly.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Mafia now starts without admin intervention
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Updates signaler investigate code | Adds some nice QOL changes for signalers | Enforces cooldown on signaler circuitry (#78974)
## About The Pull Request
See title.
If someone was abusing signalers previously to cause server lag, going
into list signalers would actually cause even worse lag as byond sat
there and processed thousands of items into a string over and over,
which would cause string format operations on longer and longer strings,
resulting in more and more overhead. This is bad.
So instead there is now a limit to the size of the list, currently I
have that set to 500 although I am open to increasing and even reducing
the number.
I have also made signalers slightly more intuitive by having the
cooldown actually displayed in the ui as a tooltip instead of just being
a secret feature you didnt know about unless you code dived. Also made
the cooldown actually respected by things such as circuitry where it
didnt even implement the cooldown and would happily send as many signals
as you had items connected to your proximity circuit.
## Why It's Good For The Game
Admins won't accidentally kill the server by trying to parse a lag
machines signal list. Players lagging the server? No, how about the
admins trying to fix it!
## Changelog
🆑
qol: signalers now tell you their cooldown and also use balloon alerts
/🆑
* Updates signaler investigate code | Adds some nice QOL changes for signalers | Enforces cooldown on signaler circuitry
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* Mafia can be played on your PDA (#78576)
## About The Pull Request
Mafia is now friggin playable from the PDA, I also changed other stuff
too
- You can't use abilities on dead people if you're not supposed to (cant
kill the same person over and over)
- Changelings cant kill other Changelings
- Changelings can now only talk to eachother at night, rather than using
:j
- Everyone starts spawned in the center of the map, since people playing
on PDA can't move their characters. This is so everyone can hear PDA
users in person, as I don't want the chat log to be mandatory.
To do this, all messages you are meant to be able to see, is now logged
for you to see in your Mafia panel. This essentially means that people
playing through the PDA get a downgraded version of it, but I don't know
how much larger I want this UI to be.
Playing Mafia through the PDA will not tell you of other players ahead
of time when signing up (as it shows ckeys + pdas), but they can see the
names in-game. Unfortunately this means we'll have to remove your
customization coming with you, to prevent using it to tell who is dead
in round.
Things I am missing
- Program overlays on PDA/Laptop/Computer
- Icon for the app's header while a game is active
I'm not a spriter and can't make either of these
This is the new UI

I also fixed alert calls for PDAs and stuff

and removed the X at the top on computers since they had no battery

Looks a little better now hopefully 👍
## Why It's Good For The Game
- The current Arcade app sucks, and is a solo game. This is much more
entertaining and you can talk to others in it, which is swag as fuck.
- There's a larger potential playerbase for the Minigame making it more
likely to be played.
- Sets groundwork for a better version of
https://github.com/tgstation/tgstation/pull/75879
- Adds more suspense and teamwork in the minigame.
## Changelog
🆑 JohnFulpWillard, sprites by CoiledLamb
add: You can now play Mafia on your PDA.
balance: Mafia changelings can now only talk to eachother during the
night.
fix: Mafia abilities can't be repeatedly used on people.
/🆑
* Mafia can be played on your PDA
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixes runtime on initalizing science programs (#78842)
Datums don't have location, so there's no z level to search here.
* Fixes runtime on initalizing science programs
---------
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
* Camera consoles no longer constantly check camera list (#78822)
## About The Pull Request
I would like camera sorting to be handled without having to constantly
get the entire list of cameras and sorting itself, but this occasion it
isn't even necessary, and was only added because I wanted to keep it
consistent with old behavior. This wasn't the best idea, and this is
trying to make amends with that.
Instead of getting the entire list of cameras when swapping cameras, it
instead gets that specific camera from the list and sets your active
camera to that. To do so, camera consoles now have a ref to the camera,
rather than going by name alone.
## Why It's Good For The Game
Explained in the about section mostly, we're no longer checking through
and sorting the entire list of cameras every single time you swap from
one camera to another.
## Changelog
Nothing player-facing.
* Camera consoles no longer constantly check camera list
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* pdas now use their cells more (#78580)
## About The Pull Request
So one aspect of PDAs that I quite liked previously was managing and
upgrading your power.
This was lost when all cell parts got removed, mostly, and now I'd like
to re-add it.
PDAs and Tablets now use more power each second it's on
Programs being active/idle now take charge too.
And all this now takes ``seconds_per_tick`` into account.
Screenshots of APC use before and after having 6 programs open at once


PDA default power cells have a max charge of 1000, each cell use is
around ``1.00970340315`` power, which is ``1.01013789399`` w/ 2 programs
in idle and 1 active program (which is what PDAs are capable of). This
means it takes about 990 ticks to fully drain your power, or about 50
minutes, at max use.
This is completely blasted away the moment you put anything beyond a t1
cell inside of it, which is unfortunate but what can you do about tiered
parts being so poor.
The problem of no public PDA chargers are alleviated by
https://github.com/tgstation/tgstation/pull/78600
### Update
The PDA flashlight being on now also drains the battery 25% times
faster. PDA running out of charge now also turns the flashlight off.
## Why It's Good For The Game
You may or may not have to actually charge your PDA once in a round now,
maybe. I liked this part of tablets and would like to see it brought
back, managing your power to use your apps is important to ensure you're
not just using all apps 24/7
Because this also adds the functionality to add/remove power cells
again, it opens up to some minor little pranks/messing with people that
isn't completely destroying their tools, as well as some minor
upgradeability.
## Changelog
🆑
balance: You can now remove and replace power cells from PDAs (with
screwdriver).
balance: PDAs now drain their power cells harder, and also take into
account active programs & their flashlight being on.
balance: PDAs running out of charge now turn their flashlights off.
/🆑
* pdas now use their cells more
* reduce power usage
* Update computer.dm
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@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>
* Security Officers can now Download the Plexagon Crew Manifest PDA App (#78678)
## About The Pull Request
Despite starting with the Plexagon app, security officers did not have
sufficient access to actually download the app onto new machines. Now
they do.
## Why It's Good For The Game
Its weird and unintuitive to start with an app but not be able to
download it if you have to get a new PDA.
## Changelog
🆑
fix: Security officers can now download the crew manifest PDA app that
they start with.
/🆑
* Security Officers can now Download the Plexagon Crew Manifest PDA App
---------
Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com>
* TTS: Gas Mask muffling, Hailer Mask voice effects, support for more filters that use samplerate, voice effects for lizards, ethereals, and xenomorphs.
* Update RecordView.tsx
* Update types.ts
---------
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* The notepad app now includes basic nautical directions in its default message. (#78241)
## About The Pull Request
Based on an old PR from citadel:
Citadel-Station-13/Citadel-Station-13/pull/7690
It also comes with a tip.
Screenshot of what it looks like more or less (a smidge outdated):

## Why It's Good For The Game
This should help new players and not learn and memorize these five
simple terms often used in station area names.
## Changelog
🆑 Ghommie (Based on an old PR by Trilbyspaceclone from Citadel)
qol: The notepad app now includes basic nautical directions in its
default message.
qol: A tip about nautical directions, too.
/🆑
* The notepad app now includes basic nautical directions in its default message.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* You can now send PDA messages when resting (#78154)
## About The Pull Request
No longer must you stand up when sending messages over the PDA! Do it
all comfortably, laying down in your bed!
Computers are automatically inaccessible when resting, so this only
affects PDA's, TABLETS, and LAPTOPS
## Why It's Good For The Game
Why wouldn't I be able to use a PDA laying down, heck everyone uses
their phone laying on their back, using your PDA like that only makes
sense
## Changelog
🆑
fix: The messenger app can now be used when laying down.
/🆑
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* You can now send PDA messages when resting
---------
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* pAIs control a PDA they're inserted into (#78103)
## About The Pull Request
This PR lets pAIs inserted into a PDA to control the PDA of their owner.
They can see their own pAI configurations but cannot edit any of it.
They also can't eject themselves from it.
This means they can receive and send PDA messages as their owner, acting
like a personal secretary
This also adds support for multiple people using a PDA and its UI
updating for all of them and PDA messages being received and responded
to from multiple people under the same PDA
It also removes pAI camera in favor of using siliconcamera, which is the
same thing; this just cuts down on some copy paste.
I also reverted PDA's ringer being off preventing messages from being
sent to your chat, silent mode was meant to prevent only the ringing
sound.
## Why It's Good For The Game
pAIs can now do a little bit more to help their owners on a personal
level, and adds support for more stuff like this in the future (an idea
I had was being able to hack into PDAs in the same way the CE can hack
into APCs remotely)
This is a re-PR of https://github.com/tgstation/tgstation/pull/76445 but
it's a little better this time and does not remove the PDA Messenger app
from pAIs.
## Changelog
🆑
fix: PDAs being on silent no longer prevents PDAs from being sent to
your chat, again.
add: pAIs inserted into a PDA can now control the PDA, and will receive
PDA messages sent to it (and can respond under the PDA's name).
/🆑
* pAIs control a PDA they're inserted into
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* [NO GBP] Add some istype guards to the PDA messenger's `get_messengers` proc (#78070)
## About The Pull Request
Read title, not having these checks can knock out the messenger for
everyone for the entire round
## Why It's Good For The Game
I didn't think about hard deletes in my original NT Messenger PR, and as
far as I know this hasn't happened on this codebase yet.
However this PR doesn't only help downstreams that struggle with hard
deletes, it also implements some pretty critical guards as not having a
messenger for an entire round is pretty bad and sometimes hard deletes
are very hard to track and fix, so it could potentially break the
messenger for a lot of rounds.
* [NO GBP] Add some istype guards to the PDA messenger's `get_messengers` proc
---------
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
* Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently
* Update vox_procs.dm
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Fixes the formatting for ghost PDA messages (#77590)
## About The Pull Request
It was in all bold, now it no longer is. It also was only being
displayed to dedicated observers, which means that it didn't show to
players that died and ghosted out.

## Why It's Good For The Game
It's just much nicer, and looks like it used to look before, rather than
being entirely bold.
## Changelog
🆑 GoldenAlpharex
fix: The formatting on PDA messages displayed to observers is now back
to what it used to be, rather than being all bold.
fix: PDA messages are now displayed to observers from dead players, and
not just dedicated observers.
/🆑
---------
Co-authored-by: distributivgesetz <distributivgesetz93@ gmail.com>
* Fixes the formatting for ghost PDA messages
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: distributivgesetz <distributivgesetz93@ gmail.com>
* Sets a saner length limit to ID assignments and paintings' titles. (#76723)
* Sets a saner length limit to ID assignments and paintings' titles.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Machine list is now stored in SSmachines | Remove excessive use of global lists for specific machine types
* Resolve merge conflicts
* Modular adjustments
* destroy this double return on destroy
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
* Clear PDA now has all themes (#76674)
## About The Pull Request
Gives all themes to clear PDAs
## Why It's Good For The Game
Clear PDAs are found/purchased late into a round and theme apps would
generally already be found and installed in PDAs. This means there's
nothing left to install in the crystal PDA, so instead I thought why
shouldn't they just get all themes?
## Changelog
🆑
qol: Clear PDAs now has all themes in their themify app by default.
/🆑
* Clear PDA now has all themes
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
* Small security / code passover for radar mod pc program (#76299)
## About The Pull Request
I saw this line "randomly" and thought "well that can't be safe"
971fbf9362/code/modules/modular_computers/file_system/programs/radar.dm (L67-L68)
So I went through and added a sanity check for it to ensure it's only
getting passed `ref`s being tracked in the objects list
This accompanied some general code improvements
## Why It's Good For The Game
Just some extra safety
Some of these apps do a follow up check that the selected ref is a valid
ref to track, but not all of them (notably the Fission 360). It's
unlikely this can be abused but it's good to have
## Changelog
🆑 Melbert
qol: Scanning apps (Lifeline app) start with a scan
fix: Fixes a potential exploit in radar apps
/🆑
* Small security / code passover for radar mod pc program
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
* Tablet apps are now deleted when necessary & removes console preset. (#75863)
## About The Pull Request
Apps now properly delete themselves when removed, so they don't exist in
nullspace anymore.
Chat client now actually updates the uid, because its New() didn't call
parent.
Deletes the 'console' subtype of modular computer
Updates how downloading and transferring files are handled
Fixes being able to infinitely upload apps to a disk
## Why It's Good For The Game
Fixes some more bugs I found with apps and prevents spamming apps in a
disk.
## Changelog
🆑
fix: Maintenance data disks now properly transfer from PC to disk
fix: Disks can no longer be flooded with the same app repeatedly.
/🆑
* Tablet apps are now deleted when necessary & removes console preset.
* updatepaths
* feex
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@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>
* ""Fixes"" Siliconnect log UI updating (#75890)
i dont think borg logs are static why are they in static update
changes them to normal ui update
* ""Fixes"" Siliconnect log UI updating
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
R&D Monitoring console TGUI + Can see RD consoles (#72987)
## About The Pull Request
I wrote this while constantly rushing lol
This PR does many things, the largest is that the R&D Monitoring console
(the RD's one) is now TGUI
It also changes how researching loggings work, bringing the RD console
and NtosRD app on par with eachother
The type of person is also logged differently, instead of ``Cyborg:
[name]`` and ``User: [name]``, humans do not have a prefix and cyborgs
will say ``CYBORG [name]``. ``research_logs`` also works differently now
to make it easier to reference each needed data from the list.
Lastly, I added the ability to see R&D consoles from the console, and
the ability to remotely un/lock them down. This currently is pretty
useless as it can't control the tablet app variant, and anyone with
Science access can just unlock it, however with some minor future
changes I think this can be turned into a good way for the RD to get
control of their department.
Video demonstration, mostly (I made a few edits after this):
https://user-images.githubusercontent.com/53777086/215005387-817106f4-5237-4f2e-b0ac-da28e6a17f9c.mp4
## Why It's Good For The Game
This console is overhyped by the game, being hidden behind an RD-locked
Command-colored door, in the same room as one of the most damaging theft
objectives, yet it is one of the most useless and forgotten consoles in
R&D if you don't count everything outside of researching, experiments
and robotics.
This adds a nice TGUI menu while making it a little more worthwhile to
use.
## Changelog
🆑
balance: The R&D monitoring console now shows R&D consoles and their
locations.
refactor: The R&D monitoring console now has a nice TGUI menu.
/🆑
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.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>
* Fixes issues with closing apps on tablets (#75117)
## About The Pull Request
- Fixes background apps not reloading the UI
- Standardizes opening/closing/backgrounding apps
- Simplifies the way apps are closed instead of having 2 procs, one on
the PC and one on the program, being named the same thing (wtf)
- Removes program states. They existed so computers can know to update
their UI every process tick, but since we now do this event based, this
is no longer needed, which is good.
- Replaces the 'forced' arg from kill_program as it was completely
unused, with ``reload_ui``, which is now used to open the UI on close,
and not to when we don't want it to.
- Closing background apps no longer reloads the entire UI
- Responding to an NT Message will no longer open the UI on your face.
## Why It's Good For The Game
Closes https://github.com/tgstation/tgstation/issues/75046
Closes https://github.com/tgstation/tgstation/issues/75108
Makes tablet UIs more responsive and lag less, not checking if a program
is closed every process to close it, and makes responding to messages
not a hassle every time.
Also makes the code easier to understand/read,
## Changelog
🆑
fix: Tablets' minimize apps feature works again.
/🆑
* Fixes issues with closing apps on tablets
* Update tablet.dm
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.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>