Commit Graph

707 Commits

Author SHA1 Message Date
SkyratBot
4401b87501 [MIRROR] Add ability to swap IDs inside computers (#26789)
* Add ability to swap IDs inside computers (#81844)

* Add ability to swap IDs inside computers

* Update internal_computer.dm

---------

Co-authored-by: Interception&? <137328283+intercepti0n@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2024-03-22 13:18:58 -04:00
SkyratBot
8196e26aff [MIRROR] NEW TRAIT ROLE: Veteran Advisor (#26667)
* NEW TRAIT ROLE: Veteran Advisor

* Oh, right

---------

Co-authored-by: vinylspiders <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-03-13 06:32:59 +01:00
SkyratBot
f9bbede521 [MIRROR] Fix server hang in budgetordering (#26837)
* 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>
2024-03-11 22:43:32 -04:00
SkyratBot
f8b87b994b [MIRROR] Overlay Lighting Color/Intensity Pass (#26825)
Overlay Lighting Color/Intensity Pass

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-03-11 22:26:46 -04:00
SkyratBot
fce716ec7c [MIRROR] Fix access management program not updating on ID authentication (#26803)
* Fix access management program not updating on ID authentication (#81845)

## About The Pull Request

While doing my other ID/manifest-related prs, I noticed that the access
management program doesn't update properly when you authenticate,
causing it to not show which templates you can apply until you manually
refresh the UI (close&open, yadayada).

This seemed to be because it calls `update_static_data(user)` on the
program itself, which attempts to find a UI attached to the program for
that user which it then can't find. Calling such on the *computer* lets
it actually find and update the UI.
We then decide to replace it with `update_static_data_for_all_viewers()`
as multiple people could be looking at the consoles in which this
happens most commonly.
## Why It's Good For The Game

It was getting *really* annoying, this fixes that.
## Changelog
🆑
fix: Plexagon Access Management actually updates the shown template list
on authentication, avoiding needing to refresh/reopen/somesuch the
program manually.
/🆑

* Fix access management program not updating on ID authentication

---------

Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
2024-03-08 19:20:57 -05:00
SkyratBot
6221130798 [MIRROR] Arcargo: Vendor Cargo and Vending Machine Update (#26782)
* Arcargo: Vendor Cargo and Vending Machine Update (#81582)

Another one.

## About The Pull Request
This pull request originally had a design doc that @ Fikou and I worked
on, but that was never really polished up for publishing quality so I'll
forgo it for now and be as descript as possible here.

### Core changes
- This pull request adds a new NTOS app to the game, the restock
tracker. The restock tracker shows a comprehensive list of vending
machines across the station, as long as there is a need for that vending
machine to get restocked.
- This has also been pre-installed into the cargo data disks.
(`/obj/item/computer_disk/quartermaster`)
- Vending machines now store a total of 20% of the cost of any purchase
made within themselves into a small pool of cash. This only applies to
premium and normal purchases, not to contraband, as they're technically
not sanctioned by the company.
- The restock tracker app will also track which vending machines have
the most credits stored internally inside them.
- By refilling a vending machine, the stored credits within are paid out
to any crewmember who goes and restocks the station, while also paying
out *half that amount to the cargo budget*, serving as a basic but
otherwise easy tertiary money making method on the same level of
complexity as doing bounties, with the added benefit of actually helping
to assist the station for jobs like... assistant.

![image](https://github.com/tgstation/tgstation/assets/41715314/59cee2d9-7e60-4733-8a76-d88fe5b8c3f2)

### Break Stuff
- Anyway, when you try and smash a vending machine open with a melee
weapon of choice, it can now pay out 50 credits at a time as a way to
make money at zero risk to yourself.
- ~~Except for the horrible risk to yourself.~~

![image](https://github.com/tgstation/tgstation/assets/41715314/23208bf0-8484-40b9-b753-0ffdb57d770f)

### Cargo Specific Changes
- Restock units may now be sold for a small profit as well, to
incentivize cargo to keep the station stocked further.
- The `STATION_TRAIT_VENDING_SHORTAGE` trait will now add a small amount
of existing credits into the vending machines on station, to incentivize
cargo to fix the issue during the round and not just push for an early
shuttle call. Or, more accurately, provide the crew with a money making
scheme to engage better with the station trait as it stands.

### This also refactors behavior on vending machines
- This pull request also finally changes it so that vending machines now
use the payment component, which as a consequence allows for the
following improvements:
* Vending machines may now pull from physical credits on your person,
not just requiring you to have money on your ID card.
* Vending machines may also use credits being pulled by the player
interacting with the vending machine, allowing for handless mobs to be
able to purchase items from a vending machine.
* Finally makes the "use-for-everything buying things component" used by
the most utilized component of the in-game economy, to reduce the
quantity of unique implementations of purchasing things in the code.
- Existing vending specific checks are retained on before handing off
behavior to the payment component, for behavior such as purchasing
cigarettes/alcohol under the age of 18/21.

Notes:
- Vending machines will lose their internal credits stored when
deconstructed, as a security measure.
- Vending machines will now show the total amount of credits that a mob
has on their person, combining physical credits as well as credits held
in their ID card to accurately portray their total wealth across the mob
in question.

## Why It's Good For The Game

First off, this is largely an excuse to move vending machine behavior
over to the payment component for the purposes to less code copy-paste,
and to try and make the implementation more wide-spread.

Second, this implements a new tertiary economy method to the game, in
the same design space as bounties, which serve as common methods of
making money without necessarily being specific to their job in
question, with the primary goal of providing small amounts of work to
the crew and a basic interaction with the economy system.

Additionally, it gives cargo more things they can do to assist the
station, and a way to know which parts of the station need support as a
result.
It improves the interaction between the vending shortage station trait
as well, making it a challenge with depth as opposed to a more
oppressive round change that players would rather reroll the game over.

Additionally, this makes a few price tweaks to vending restock modules
as well to help incentivize buying some of the more minor restock kits,
and a few select bumps on restocks that cover wide enough territory to
necessitate fewer restocks.

* Arcargo: Vendor Cargo and Vending Machine Update

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2024-03-06 22:29:57 -05:00
SkyratBot
32ca7f5816 [MIRROR] virtual pets (#26692)
Virtual pets

Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-03-01 19:05:23 +01:00
SkyratBot
290a97d05e [MIRROR] You can do more things while floored (#26643)
* You can do more things while floored (#81641)

## About The Pull Request

While on the floor, you can:
- Use the UIs of Atmos machinery (except thermomachine and bluespace gas
vendor), Holopads, Crayons (spray cans too), radios, and Disposal bins
- Close extinguisher cabinets with Right-Click
- Click and drag yourself onto a photocopier to climb onto it.

I also changed all instances of ``ui_status`` to have all the args it's
being passed, I was messing with it a bit but it's gonna be for a later
PR.

## Why It's Good For The Game

It's an extra layer of harmless realism, also nice QoL for people who do
not have functional legs and do not have a wheelchair.

## Changelog

🆑
qol: You can use atmos machines, holopads, crayons, spray cans, and
disposal bins while floored.
fix: You can close extinguisher cabinets while floored.
fix: You can climb onto a photocopier from the floor.
/🆑

* You can do more things while floored

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-26 21:32:59 +01:00
SkyratBot
2c83952d3b [MIRROR] MuleBOT UI/ID Fixes (#26460)
MuleBOT UI/ID Fixes (#81380)

## About The Pull Request

- Fixes https://github.com/tgstation/tgstation/issues/81363
- Fixes unable to set MuleBOT home from control panel
- Fixes missing MuleBOT ID from Botkeeper PDA app
- Adds input validation for changing MuleBOT ID from control panel
- Removes hardcoding of MuleBOT IDs and home destinations
- MuleBOT will now automatically set its home to the navigation beacon
on its initialization turf

## Changelog

🆑 LT3
fix: MULEbot will correctly display its loaded cargo on BotKeeper
fix: MULEbot home beacon can be set from control panel
code: MULEbot home location is automatically set on init
/🆑

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-02-20 01:20:52 +01:00
lessthanthree
3c183c42e8 Status light overlays maintenance (#26502)
* airlock code cleanup

* airlock overlays

* support for epsilon

* Update status_display.dmi

* fire

* firedoor mutable/emissive

* Update airlock.dm

* fix shuttle/titanium

* Update airlock.dm

* Update airlock.dm

* other missing airlock types

* Update metal_overlays.dmi

* Update metal_overlays.dmi
2024-02-19 01:52:51 +01:00
SkyratBot
568e36e1c0 [MIRROR] Fix lifeline not respecting suit sensors (#26547)
* Fix lifeline not respecting suit sensors (#81517)

## About The Pull Request

- Lifeline app now respect suits sensors again.
- The proc always `return .`'d if the target mob was not on suit
sensors, so if `.` was `RADAR_TRACKABLE`, well, it would rack sensorless
mobs.

- Cleaned up a bit of trackable.
   - Use the `is_valid_z_level` helper.
   - Respect all possible returns for a signal.

## Changelog

🆑 Melbert
fix: Lifeline can no longer track mobs with suit sensors off
/🆑

* Fix lifeline not respecting suit sensors

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-02-17 18:42:28 -05:00
SkyratBot
9a7e74d699 [MIRROR] Makes AI tracking more snappy, improves API (AI movement change) (#26508)
* Makes AI tracking more snappy, improves API (AI movement change) (#81401)

## About The Pull Request

Ok so tracking (from the datum) worked, but when used to follow someone
it had a noticable delay from the datum needing to wait for process to
fire to do its work

This would be an expensive proc to run constantly, but we don't really
have to (there are not that many ai eyes in the world). So rather then
only processing to keep step, let's track the target mob by its
movement, and then fall back on a process loop to handle rechecking in
case of camera memes.

This does technically mean you won't "break" the track if the cameras go
out until the tracked mob moves, but I think that's a reasonable price
to pay for more responsive movement. I think I could make our current
system work with it too, though it would be a bit more wasteful. John if
you have opinions just lay into me.

I've also renamed/pulled apart the helper procs for the trackable datum,
with the hope of making how they are used more understandable at a
glance

Oh and rather then holding a weakref since I needed MOVED anyway I just
use QDELETING to free the ref if the mob goes away

### Edit:

#### Glide size touchups
Implements glide size mirroring so we move at the same speed as our
target

Also moves the existing signal to send to the trackable datum itself, as
appears intended from the doc comment

#### AI behavior changes

Rewrites ai movement to be less dumb

OK so 2 things here. One is a behavior change, the other is a visual QOL
thing.

The way ai movement works is we move graduated "steps". Either moving 1,
2, or 3 steps per tick.
We do this by, so long as input is held down, incrementing a number
called "sprint"
Currently it'll go from 10 to 50 (formula effectively looks like steps =
(sprint / 20) + 1))

Anyway, this is... not fine but ok, but the way we handle deceleration
is ass IMO. It's literally just wait 0.5 seconds and sprint resets.
I think this feels crummy, so instead I've made it decay depending on
how long you go between inputs, at 7x greater rate then it increases.

That's the behavior change. Visual change is a lot easier.
Ais were not gliding properly. They assumed they had 4 ticks to move a
tile, rather then 1. This meant they'd jump around constantly, to catch
up to where we expect them to be.
I've fixed this by giving them 1 tick instead. Should feel a lot better

## Why It's Good For The Game

Snappier response times, cleaner code

## Changelog
🆑
add: AI's acceleration now smoothly decays, instead of just falling back
down to 0 after 0.5 seconds
fix: AI's standard movement (non accelerated) is smooth now, instead of
constantly jumping around
fix: AIs will now follow their targets more closely, shouldn't have any
issues with them lagging behind anymore
/🆑

* Makes AI tracking more snappy, improves API (AI movement change)

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-02-15 17:19:30 -05:00
SkyratBot
4f53ec2660 [MIRROR] Fixes complex lights not handling moving well, renames lighting defines (#26484)
* Fixes complex lights not handling moving well, renames lighting defines (#81423)

## About The Pull Request

[Fixes static lights not
moving](ffef43c05a)

Worked fine when the owner moved, but if the owner was inside something
else, it would try and trigger an update on the PARENT's lights, which
are obviously not us.

[Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they
do](de73a63bd4)

People keep trying to change the lighting system of lamps and it makes
me mad.
I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a
better name for turf matrix lighting. Suggestions welcome

## Why It's Good For The Game

Closes #80005
Hopefully improves understanding of lighting at a glance
## Changelog
🆑
fix: Fixes fancy lights not updating their source location when picked
up and moved
/🆑

* Oh well

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-02-12 22:25:22 +00:00
SkyratBot
453a78dca1 [MIRROR] Contractor loadout adjustment + Price tweak (#26471)
* Contractor loadout adjustment + Price tweak

* skyrat change

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
2024-02-11 18:05:40 -05:00
SkyratBot
0938c796a8 [MIRROR] Adds a signal to buying items from the uplink (& fixes TC misinfo) (#26449)
* Adds a signal to buying items from the uplink (& fixes TC misinfo) (#81372)

## About The Pull Request

Adds a signal when someone buys an item from the uplink and removes
single-letter vars from the ``spawn_item`` proc, and adds/standardizes
add/removing of telecrystals from uplinks (and admin setting how much TC
they have) to ensure the UI always has the right amount of telecrystals
displayed in it.

## Why It's Good For The Game

There are reasons why someone would want to hook up to a traitor's
uplink and listen to items they purchase to do any special effect
on-purchase, so this adds support to do anything in the future with it.
Also tells players how much TC they actually have without forcing them
to close/reopen the UI every time they insert some TC in it by hand.

## Changelog

🆑
fix: Uplinks now update their UI when you add telecrystals in them, so
you don't need to close and reopen it.
/🆑

* Adds a signal to buying items from the uplink (& fixes TC misinfo)

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-10 23:17:36 -05:00
SkyratBot
70a62f112d [MIRROR] Fix some copy paste UI errors (#26404)
* 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>
2024-02-07 21:37:27 -05:00
SkyratBot
5fde8bd1ad [MIRROR] Makes point_types not be dumb (#26376)
* Makes point_types not be dumb (#81202)

## About The Pull Request

We currently have a list of point types that is meant to be
list(``DEFINE`` = name) but it's completely useless since the define is
just the name anyways. It's not used for anything, it has no purpose to
be this way. It seems more like a holdover from when there were multiple
types of research points (it was made for that purpose, even before
nanite points were a thing) but even for that, it serves no purpose.

I reworked it now to be the abbreviated name of the research point type,
de-hardcoding techwebs a little bit and removing the need for
downstreams to edit the techweb UI.

## Why It's Good For The Game

This at least looks better and makes more sense at people just looking
over it.

## Changelog

No player-facing changes.

* Makes point_types not be dumb

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-02-07 13:26:48 -05:00
SkyratBot
d870f9ff15 [MIRROR] Fixes copy pasted arg in robocontrol app (#26320)
* Fixes copy pasted arg in robocontrol app (#81199)

## About The Pull Request

Classic copy paste error

Open dream lint would catch this I think

## Changelog

🆑 Melbert
fix: Robocontrol app maybe works better now.
/🆑

* Fixes copy pasted arg in robocontrol app

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-02-02 18:43:36 +01:00
SkyratBot
fb99259785 [MIRROR] Fixes runtime from examining mod PCs (#26318)
* Fixes runtime from examining mod PCs (#81200)

## About The Pull Request

It's a classic

![image](https://github.com/tgstation/tgstation/assets/51863163/297cbecd-c32d-4c10-8c25-000d8a95310c)

`EXAMINE_HINT(x)` resolves to `"<b>" + x + "</b>"`

When placed in this line directly, you get:

`["<b>" + HAS_TRAIT_FROM(...) ? "..." : "..." + "</b>"]`

You see the issue, right?

This resolves as you would expect:
`("<b>" + HAS_TRAIT_FROM(...)) ? ("...") : ("..." + "</b>")`

Which, of course, runtimes as it's adding a string to an integer (0).

By pulling it out to its own var we can get around this:

`["<b>" + frame_or_pc + "</b>"]`

## Changelog

🆑 Melbert
fix: Fixed examining modular PCs
/🆑

* Fixes runtime from examining mod PCs

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-02-02 18:34:27 +01:00
SkyratBot
548983b6ed [MIRROR] Small oversight with the wirecarp circuit (#26265)
* Small oversight with the wirecarp circuit (#81107)

## About The Pull Request
Thanks Elli-Skala for pointing it out.

## Why It's Good For The Game
The port is meant for modular computers and station relays, both of
which are objects.

## Changelog
N/A, it's a very small thing.

* Small oversight with the wirecarp circuit

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-28 00:05:07 -05:00
SkyratBot
f768fab6c9 [MIRROR] [NO GBP] Fixing issues with modular computer and circuits. (#26247)
* [NO GBP] Fixing issues with modular computer and circuits. (#81076)

## About The Pull Request
It turns out the messenger circuit wasn't working as intended, because
list components tend to convert datum keys into weakrefs, creating
incoherence between composite datum/atom and simple datum/atom
datatypes, which at least just spares us from the headache of clearing
the refs on del from lists too.

So, taking the shortest path, I decided to adapt the messenger to the
weak ref usage.

Another thing, instead of refusing altogether to send message that
trigger the pda filter regexes, the messenger circuit will instead
replace the matches with grawlix, since we have no way to inform
whoever's responsible for said message about the filters in an orthodox
way.

Beside that, I've noticed several of the circuits from my PR were
lacking trigger outputs or similar when needed, pretty making them only
as half as functional, at least to a noob like me.

And another small issue with missing ports from the status display
circuit.

One more suggestion from moocow is to add a cooldown to the ringtone
trigger for the messenger circuit, because he said it's pretty spammy
and some admins are fickle.

## Why It's Good For The Game
Bugfixing and improvements.

## Changelog

🆑
fix: Fixed the messenger circuit not sending messages.
fix: Added several ports to modpc circuits that were missing or needing
them.
fix: Fixes ever-expanding ports whenever circuits are re-inserted in a
modular computer.
/🆑

* [NO GBP] Fixing issues with modular computer and circuits.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-25 23:08:34 -05:00
SkyratBot
ebb21356e1 [MIRROR] Fixes ejecting pAIs card without a pAI in it (#26222)
* Fixes ejecting pAIs card without a pAI in it (#81047)

## About The Pull Request

I had made the bad assumption that a pAI card always had a pAI mob in
it, which is not the case.
This fixes the runtime error, thus allowing people to eject a pAI card
that doesn't have a pAI in it.
I've also added a check in the pAI's Initialize to give them the ability
to use the modPC if they are made in it, so you don't have to eject and
reinsert the pAI, fixing another issue.

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/81043
Fixes inconsistency and runtime.

## Changelog

🆑
fix: pAIs downloaded while in a PDA now gets the action button to
control said PDA.
fix: pAI cards can now be ejected from a PDA when there is no pAI
inhabiting it.
/🆑

* Fixes ejecting pAIs card without a pAI in it

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-01-25 09:29:46 -05:00
SkyratBot
fdcfabefd8 [MIRROR] Integrated circuits for modular computers (#26196)
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>
2024-01-21 14:59:14 +00:00
Cursor
93db4faca4 [Ready][Non-Modular] (but it reverts back to TG Code) Removes a check in Modular Computers, Use bitflags. (#26024)
Removes a check in Modular Computers, Use bitflags.
2024-01-14 14:35:26 +00:00
SkyratBot
22e19e7d29 [MIRROR] Fixes the contractor program being on the syndicate store [MDB IGNORE] (#26086)
* Fixes the contractor program being on the syndicate store (#80888)

## About The Pull Request
Syndicate contractor program can no longer be bought from an emagged
computer.

## Why It's Good For The Game
This is most definitely a bug.
The pull request that introduced this bug can be found at #80069
Description or the changelog does not mention that the contractor
program can now be downloaded when a computer is emagged.

Image below shows that the contractor program was not meant to be
downloadable from the syndie store or ntnet.

![image](https://github.com/tgstation/tgstation/assets/37270891/46c4ce1d-85ad-4d06-bc89-420a6e850cd6)

## Changelog
🆑
fix: Fixed being able to download the contractor program on the syndie
store.
/🆑

Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>

* Fixes the contractor program being on the syndicate store

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
2024-01-12 03:18:23 +01:00
SkyratBot
c3bb222d26 [MIRROR] Some Processing improvements [MDB IGNORE] (#25944)
* Some Processing improvements (#80693)

## About The Pull Request
Got the idea from #80682. A lot of parent procs don't do anything, some
are just formatted in a bad way, and others early return and do no ops,
it's bad in general but this should give us a head start.

Some good overhead saved here

* Some Processing improvements

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2024-01-01 23:42:38 +00:00
jjpark-kb
a4cffad43a requested modular computer fix (#25868) 2023-12-26 19:09:29 +01:00
SkyratBot
49452b3851 [MIRROR] The Coupon Master PDA app [MDB IGNORE] (#25855)
* 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):
![Coupon
Master](https://github.com/tgstation/tgstation/assets/42542238/1d242d09-0f62-4e2e-8a6e-014daa3f6a55)

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>
2023-12-25 20:38:54 +00:00
SkyratBot
cbaee82e73 [MIRROR] The Spectre-Meter App, also a bootleg data disk item for the black market. [MDB IGNORE] (#25717)
The Spectre-Meter App, also a bootleg data disk item for the black market.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 23:25:23 +00:00
Gandalf
9361376345 PDA update (Messenger works while dead, Microwave works, etc). (#80069) [REMIRROR] (#25829)
* 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>
2023-12-24 23:20:11 +00:00
SkyratBot
d718af9913 [MIRROR] Bridge Assistant Station Trait [MDB IGNORE] (#25667)
* Bridge Assistant Station Trait

* Diffs

* fixes

* Update job_traits.dm

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:54:11 +00:00
SkyratBot
d34aab9be3 [MIRROR] PDA general maintenance (NTNet downloader rework) [MDB IGNORE] (#25133)
* PDA general maintenance (NTNet downloader rework)

* Update modular_computer.dm

* e

* weh

* Update archive_viewer.dm

* Update three_layer_hats.json

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:28:40 +00:00
SkyratBot
49daf536b5 [MIRROR] [BOUNTY] Re-adds Contractors [MDB IGNORE] (#25094)
* [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>
2023-12-24 22:00:55 +00:00
SkyratBot
8bc9c802a8 [MIRROR] Fixes TGUI internal actions on modular computers [MDB IGNORE] (#25633)
* Fixes TGUI internal actions on modular computers

* Update computer_ui.dm

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-15 16:48:20 +00:00
SkyratBot
3658c80e57 [MIRROR] Explodes device.dmi [MDB IGNORE] (#25523)
* Explodes device.dmi

* Demodularize these

* Update traitordevices.dm

* Update traitordevices.dm

* Modularizes hypnotic flash

* Modular dmi repath

* Modular dmi repath

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-09 09:48:43 -05:00
SkyratBot
b15b16976a [MIRROR] Attack chain refactoring: Broadening tool_act into item_interact, moving some item interactions to... atom/item_interact / item/interact_with_atom [MDB IGNORE] (#25516)
* Attack chain refactoring: Broadening `tool_act` into `item_interact`, moving some item interactions to... `atom/item_interact` / `item/interact_with_atom`

* Patches up merge skew (#80197)

## About The Pull Request

Yeah #79968 (1e76fd70b4) was not
compatible with master but no one said anything on the PR so i got
jebaited into merging it. The code should be up to the same standards
per the documentation I read (preventing thwacking the target in certain
situations while not returning anything in other situations)

master will definitely compile now though

* Patches up merge skew

* Merge conflicts

* Modular adjustments

* Removes this entirely duplicated proc...

* Update tool_override.dm

* Update weldingtool.dm

* Update tool_override.dm

* Update tool_override.dm

* Nope. Copy paste begone.

A skyrat edit is so much easier to deal with here

* Update brand_intelligence.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-09 08:22:19 -05:00
SkyratBot
41ea46d5f2 [MIRROR] Scopes NODECONSTRUCT_1 from flags_1 to obj_flags [MDB IGNORE] (#25496)
* Scopes `NODECONSTRUCT_1` from `flags_1` to `obj_flags`

* Update bitfields.dm

* Modular

* Update rack.dm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-08 23:24:46 -05:00
SkyratBot
3d816fc0d5 [MIRROR] basic cleanbots refactor and new janitor skillchip [MDB IGNORE] (#25511)
* basic cleanbots refactor and new janitor skillchip

* Update medbot.dm

* UpdatePaths

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-08 19:59:00 -05:00
SkyratBot
8df7202455 [MIRROR] Rename notify_ghost_cloning to notify_revival [MDB IGNORE] (#25442)
* 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>
2023-12-06 01:36:04 -05:00
SkyratBot
6c4c965ea4 [MIRROR] Changes occurrences of recieve in code to receive [MDB IGNORE] (#25393)
* Changes occurrences of `recieve` in code to `receive`

* Fix conflict

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
2023-12-02 20:40:07 -06:00
Nerevar
a1ff1983f8 Adds Camera App to Default Downloads (#25161)
* initial d

* wew

* Forgot this!

* And this

* And this is no longer a skyrat edit

* Finally please remember to label what the skyrat edit is (change, removal, addition)

---------

Co-authored-by: Snakebittenn <12636964+Snakebittenn@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-22 16:07:43 -05:00
SkyratBot
9c78808284 [MIRROR] Nukes radio.dmi, adds inhands for somewhat relevant items. [MDB IGNORE] (#25147)
* Nukes radio.dmi, adds inhands for somewhat relevant items. (#79792)

## About The Pull Request

Third /icon/ cleansing splinter 1. Comments on commits say all it does
pretty much.

![image](https://github.com/tgstation/tgstation/assets/122572637/6540e588-bed8-4e98-81f5-2a6f449c53c3)

## Why It's Good For The Game

Inhand for walkietalkie was requested in the project, gets rid of some
usecases of old 'gangtool', headset splitoff requested by Fazzie.
Inhands reflecting the items they are supposed to represent is nice.

## Changelog

🆑
image: Following now have unique item sprites: syndicate war declaration
radio, curator and chief beacon's, chaplain beacon.
image: Following now have unique inhand sprites: radio, export scanner,
walkie-talkie, syndicate war declaration radio, curator and chief
beacon's, chaplain beacon.
/🆑

* Nukes radio.dmi, adds inhands for somewhat relevant items.

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
2023-11-20 09:05:49 -05:00
SkyratBot
d3b4b884bd [MIRROR] Emagged PDAs won't log to wirecarp. [MDB IGNORE] (#25004)
* 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>
2023-11-14 09:19:18 -05:00
SkyratBot
73bdd7341a [MIRROR] TGUI Destructive Analyzer [MDB IGNORE] (#25005)
* 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>
2023-11-14 09:19:08 -05:00
SkyratBot
92f8f722ac [MIRROR] Blank IDs no longer get stuck in modular computers [MDB IGNORE] (#24977)
* Blank IDs no longer get stuck in modular computers (#79689)

See name. The Eject ID button now correctly lights up even with no name
on the ID

* Blank IDs no longer get stuck in modular computers

---------

Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
2023-11-13 12:54:10 -05:00
SkyratBot
a5818dd539 [MIRROR] Renames vars on pdas and removes ntnet_relays glob [MDB IGNORE] (#24960)
* 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>
2023-11-13 06:13:28 -05:00
SkyratBot
dee97c0eb6 [MIRROR] Makes notepad available for laptops and consoles [MDB IGNORE] (#24820)
* 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>

![laptop-notepad](https://github.com/Skyrat-SS13/Skyrat-tg/assets/106491639/49ba817a-ab4f-4df0-8df6-9ce98cc10cbb)

</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>
2023-11-06 11:48:28 -05:00
SkyratBot
f48008411c [MIRROR] Mafia now starts without admin intervention [MDB IGNORE] (#24793)
* 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>
2023-11-04 23:56:03 -04:00
SkyratBot
500c94e25f [MIRROR] Security Pen and Penlight improvement [MDB IGNORE] (#24727)
* Security Pen and Penlight improvement

* Update inventory.dm

---------

Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-01 22:47:00 +00:00
SkyratBot
4970f36e37 [MIRROR] Basic drones [MDB IGNORE] (#24507)
* Basic drones

* Diffs

* Diffs

* Modular

* Modular

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-22 15:24:55 -04:00