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>
* Fixes overloading and deconstructing of the master RND server not affecting research rate (#73569)
## About The Pull Request
Only a traitor removing the HDD would affect the income modifier of the
stored research web.
Updated it so `on_deconstruction` with an HDD present or a ninja
overloading with an HDD preset will also negatively affect the income
modifier.
## Why It's Good For The Game
Fixes#73338
Round impact!
## Changelog
🆑 Melbert
fix: Deconstructing (or overloading) the Master RND server with an HDD
preset will correctly half research rate
/🆑
* Fixes overloading and deconstructing of the master RND server not affecting research rate
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Checks if a machine has no research before connecting techweb (#72944)
## About The Pull Request
Currently all machines, if the config to not have a techweb link is on,
will set their node to science even if they were meant to be connected
to another (like through subtypes). This fixes that by checking to
ensure they don't have a techweb connected already before giving them a
new one.
Also as a minor fix, RD consoles will now properly add themselves to the
list of accessing RD consoles if they aren't linking to the default.
This list currently does nothing but I can see good uses of it in the
future.
## Why It's Good For The Game
Fixes an error that was found on a downstream, it's a worthwhile fix
that thankfully was caught this early.
## Changelog
Nothing player-facing.
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Prevent runtime in emp_act parent chain (#71751)
If you don't define severity it is passed through to the parent proc as
null, this then causes a runtime.
Let this be a lesson on the dangers of **not** copying your parent procs
args.
* Prevent runtime in emp_act parent chain
Co-authored-by: oranges <email@oranges.net.nz>
* Adds support for non-science techwebs (+Config) (#71070)
## About The Pull Request
This is an expanding of
https://github.com/tgstation/tgstation/pull/69708
Adds a config to not connect machines to a techweb at the start of a
round
Adds the ability to multitool a server to get its techweb in its buffer,
which can then be used on machines to sync them.
Adds support for some machines to not cry when they don't have a techweb
linked to it, in case they actually don't.
If the config to not have machines connected to the science server is
enabled, research servers will make their own techwebs instead. This is
barebones though and would need more work if this option is used.
For misc stuff:
- I replaced checking ``GLOB.machines`` for research servers, to instead
check ``SSresearch.servers``, where we can use ``as anything``.
- Removed unused vars on the RD server control
- I renamed the operating computer's .dm file to remove the capitalized
letter from it. It's now operating_computer instead of Operations.
## Why It's Good For The Game
This is adding support for 2 different cases that can be used in the
future:
1. Off-station roles, we can make roles like Oldstation have their own
techweb so they don't ruin science's efforts, or use their advanced
research to get things we don't want, or even possibly have some
blacklist webs for ghost roles (like teleporters) so that way we don't
need to have this dance where we have to give them a very specific
amount of materials for them to do things while not being able to get a
teleporter and leaving. I heard discussions that people wanted this a
while back, and one of the main things preventing this from happening is
the lack of support. Hopefully this is encouragement to make it a
reality, because I think it would be a really cool expansion of ghost
roles and a good way to prevent them from messing with the round in
progress.
2. Downstreams who want to do different things with Science. Personally
I made this PR with voidcrew(shiptest) in mind and think this would make
their lives easier. I didn't expand too much on this because I'm leaving
up mostly to the downstreams to figure out what they want to do with
these systems.
## Changelog
This generally isn't really player facing, since most of the changes
would only come into effect if the config is enabled??
🆑
fix: Research servers now only show servers connected to their techweb.
/🆑
* Adds support for non-science techwebs (+Config)
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixes research servers disappearing on deconstruction (#70394)
* Research servers (except for the Master one) now drops their circuit board on deconstruction, allowing you to properly deconstruct and move the servers.
* Fixes research servers disappearing on deconstruction
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
* [GBP No Update] Perish, individual logging runtime (#69024)
missed 2 or 3(lol it was more when I look back at the files), LOG_GAME tags on the log_message line, and did some cleaning up since i was looking through every log_message again
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* [GBP No Update] Perish, individual logging runtime
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* Fixes / makes it more clear about why research servers might not be generating research points. (#67458)
* Fixes research severs a bit, adds text for missing hard drives, and removes a ton of unused code.
* Fixes / makes it more clear about why research servers might not be generating research points. Also cuts a lot of unused research server code out.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes nopower disabling RND servers permanently (#66513)
It was using update_user_power(NO_POWER_USE) to disable power use
while off, but that will actually unregister the power_change signal
(which is what the RND server uses to call this) so, it was
being called once and then never working again because it wasn't
receiving the signal to redo it
* Fixes nopower disabling RND servers permanently
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
* Updates the Goon Source code objective item to be on par with all other high risk items. (#62142)
Currently, all it takes to ruin an antagonist's round (assuming they have this objective) is to walk into the server room, and break the master server, as this will delete the drive inside. It is extremely weak, a fire axe will break it in less than 15 seconds.
Not only that, but the drive itself is also not resistant, making it relatively easy to lose it and have it destroyed in various station emergencies.
Compared to every other high risk item, this doesn't make much sense, as they are all supposed to be virtually impossible to get rid off.
This does not effect the ninja's objective of destroying the drive.
This ups the integrity of the master server, making it take ~15s longer to break it with a wielded fire axe, than it does to just deconstruct it. It also adds resistances to the drive itself, which brings it up to the same level as every other high risk item.
Closes#62128
* Updates the Goon Source code objective item to be on par with all other high risk items.
Co-authored-by: Seth Scherer <supernovaa41@protonmail.com>
* Corrects mapload args that sprug up in the past few days (#61759)
See #61623 . These were either merged after the prior PR, coded before the prior PR, or were made in between and not updated.
* Corrects mapload args that sprug up in the past few days
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Replaces downloading research notes with a new antag objective and station sabotage point. (#61685)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Replaces downloading research notes with a new antag objective and station sabotage point.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Machines now store their components in their contents. (#52970)
Machine parts are now located in the machine instead of nullspace.
* Machines now store their components in their contents.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* [R&D Machine Overhaul, Part 1] - Various machines no longer require R&D machines to function. (#53339)
Removes various R&D machine requirements including circuit imprinters, protolathes, destructive analyzer and the mechfabs. All machines that previously required an R&D console to function are standalone, including omni protolathes and omni imprinters.
Replaces "production"-class R&D consoles with civilian modular computers on all maps. There are no longer "production"-class consoles.
Removes the concept of "core" R&D consoles. R&D consoles only research and handle tech disks and stuff. All existing core consoles have been switched to their basic archetype.
Because it's a pain in the ass to manage, material reclaimation has been removed from the destructive analyzer. The destructive analyzer is now ONLY for destroying items and unlocking research nodes such as illegal and alien tech.
* [R&D Machine Overhaul, Part 1] - Various machines no longer require R&D machines to function.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Azarak <azarak10@gmail.com>
* Refactors machine_stat and is_processing() to process on demand (#53150)
* Refactors machine_stat and is_processing() to process on demand
* Fixes master (#53193)
* fixes master, damn it me/mothblocks
* fuck again
* ANOTHER ONE
* Fixes master
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* [Ready] CDN browser assets! (#52681)
Rewrites the asset_cache system to handle sending assets to a CDN via a webroot.
see https://github.com/MrStonedOne/tgstation/blob/asset-cdn/code/modules/asset_cache/readme.md
Fixed a lot of bugs with assets, removed some dead code.
Changes:
Moved asset cache code to transport datums, the currently loaded one is located at SSassets.transport, asset cache calls made before the config is loaded use the simple browse_rsc transport.
Added subsystem call for when the config loads or reloads.
Added a webroot CDN asset transport. assets are saved to a file in a format based on the file's hash (currently md5).
Assets that don't use get_asset_url or get_url_mappings (such as browser assets referred to by static html files like changelog.html or static css files) can be saved to browse_rsc even when in cdn asset mode by setting legacy to TRUE on the datum returned by register_assets
Added a system for saving assets on a cdn in a hash based namespace (folder), assets within the same namespace will always be able to refer to each other by relative names. (used to allow cdn'ing font awesome without having to make something that regenerates it's css files.).
The simple/namespaced asset cache datum helper will handle generating a namespace composed of the combined md5 of everything in the same datum, as well as registering them properly.
Moved external resource from a snowflake loaded file to a config entry, added it to resources.txt
To ensure the system breaks in local testing in any situation that wouldn't work in cdn mode, the simple transport will mutate the filenames of non-legacy and non-namespaced assets and return this with get_asset_url.
Simple transport's passive send of all roundstart assets to all clients is now a config that defaults to off. this is to break race conditions during local testings from devs accidentally relying on this instead of using send() properly.
cl
refactor: Interface assets (js/css/images) can now be managed using an external webserver instead of byond's one at a time file transfer queue.
admin: Adds admin verb toggle-cdn that allows admins to disable the external webserver asset transport and revert to the old system. Useful if the webserver backing this goes down (thanks cloudflare).
config: New config file, resources.txt, (must be loaded by an $include statement from the main config)
server: The external_rsc_urls.txt config has been moved to the main config system.
/cl
Porting notes:
Interface webpages must refer to their assets (css/js/image/etc) by a generated url, or the asset must register itself as a legacy asset. The system is designed to break in localtest (on simple/legacy mode) in most situations that would break in cdn mode.
Requires latest tgui.
The webserver must set the proper CORS headers for font files or font awesome (and other fonts) won't load.
/tg/'s webserver config: https://gist.github.com/MrStonedOne/523388b2f161af832292d98a8aad0eae
* [Ready] CDN browser assets!
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Living and machine stat vars are pretty different, one uses flags and other number-defines.
This should make some other mass-replacements and searches a bit easier.
About The Pull Request
Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls
This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE
I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game
Code usability
About The Pull Request
Overhauls the gui for the Research Sever controller (see below), and adds a bit more info about each server. Allows the RD, or anyone with related access, to shut off servers and thus disable point generation (emag to bypass access restriction). Adds temperature readout for each server, for fluff and possibly future relevance. Servers are listed as "Offline" if they are under EMP effects or have no power. Servers now have a random four-digit hex number following their name, to help tell them apart.
Adds a full list of all research history in a table below the server readout on the server controller, sorted with the newest on top. Lists the name of tech, cost, name of the researcher, and the location they researched from.
Adds in code to mark servers without power as not working. This seems like an unnoticed bug, to be honest.
Animates the working server sprite, and adds a disabled and powered-off sprite.
The "research_log" list variable for /datum/techweb is commented as being meant for IC use, and was being updated already, but as far as I can tell was never used anywhere. So I have re-organized it a bit to feed the prior-mentioned table of research history.
Why It's Good For The Game
Gives the RD a light bit more control over research, allows them to cut off passive point generation if people piss them off, and gives purpose to the server controller console.
Changelog
cl
add: The R&D Server Controller console now lists the entire research history, including names of people who researched each item and locations it was done from.
add: The R&D Server Controller console can now be used to disable the servers if someone makes the RD upset.
fix: Fixed the R&D servers working without power.
imageadd: R&D server sprites are now slightly animated, and new sprites have been added for when the server is disabled or off.
/cl
The component is initialized with any combination of three flags, EMP_PROTECT_SELF protects against effects that target the object itself, EMP_PROTECT_WIRES protects against wires being messed with similar to the NO_EMP_WIRES_1 flag which this PR removes, EMP_PROTECT_CONTENTS protects against things that are inside the object like organs, internal "non-virtual" power cells and the like
This enables (but doesn't introduce) new mechanics such as adding EMP shielding at runtime to any atom, or taking it away.
* It works, but is it worth it?
* bitfield helpers take 1
* Would this work?
* remove dangling debug code
* rebase & fixes
* vv bitfield stuff, reading
* DNM oceans of shitcode DNM
* honk
* honk2
* plonk
* rebase & fix
Also changes New -> Initialize in most of them.
renamed: `code/game/machinery/computer/computer.dm` -> `code/game/machinery/computer/_computer.dm`
renamed: `code/game/machinery/machinery.dm` -> `code/game/machinery/_machinery.dm`
Moved all circuitboards to a new folder at `code/game/objects/items/weapons/circuitboards`