Commit Graph

85 Commits

Author SHA1 Message Date
Kylerace
bc553c6fa7 optimizes icon2html() for icon files known to be in the rsc at compile time (#67429)
* makes compile time icons not do expensive file io for asset gen

* better documentation on some asset vars and procs

* makes generate_and_hash_rsc_file() do fcopy() and passes down the chain

* implements msos suggestion to optimize get_icon_dmi_path()
2022-06-05 23:53:53 -04:00
Mothblocks
35a2497690 Remove data/ from /datum/asset/json url mapping (#66549)
* Remove data/ from /datum/asset/json url mapping

Closes #66535.

* Create JSON in data folder
2022-04-27 04:44:55 +03:00
Josh
df5c2f129f random item is no longer a trap (#66349)
* random item is no longer a trap

* stupid error
2022-04-24 23:50:03 +08:00
Kyle Spier-Swenson
731f8f7f5b Fix things breaking in tgui if the asset transport type is changed mid round (#66317)
This bug breaks disabling the cdn mid round if the cdn is broken, as well as enabling it mid round if it started the round disabled. some things fail back to byond transfers, but not all things.
2022-04-19 09:24:21 +03:00
Y0SH1M4S73R
eea0c174ed actually actually fixes illegal tech (#66241) 2022-04-18 09:35:41 -04:00
LemonInTheDark
0c4af38f41 [MDB IGNORE] TGUI library, plus polish (#65326)
* Prevents potentially infinite length books from being written and stored. I'm not sure if this is an actual issue, but I have a funny feeling it may become one someday

* Moves the paper defines to their own file

* It's become clear to me that I am stupid

* git add --all

* Makes book info into a datum to allow for easy passing around

* Converts the library scanner to tgui, lays the groundwork for tgui visitor consoles

* Makes the db request for book info sort
Adds the frontend for the visitor's console
Adds a hash to prevent duplicate db requests
Adds a prams changed var to help facilitate a better search button
Makes the page number code accept text as input

* Makes the ui index at 1 even tho we index at 0 internally

* Begins the conversion process for the library console.

Changes the library console to override the visitor, to utalize for the archive access portion of the ui
Makes scanner into a weakref, I'm coming for you handheld scanner
Renames some vars to make things clearer

* Converts the remaining refs of the old console typepath over, adds a circuit board for consoles because pain

* Changes how bookshelves load in books
Instead of loading them in lazyally, we load them during init
This lets us track what books are stored in which areas

Somewhat jutting off of this, adds map config for designating something as "part of the library"
This will be useful later

* Renames the random poster, adds a spritesheet for bibles. Both will be useful in a moment

* Ok. This is a bit of a mess.
Converts the library console to tgui.
This comes with a few minor behavior changes:
You can now select what type of poster you want to print, instead of just printing a random one
It's now possible to heed the console's emag warning
The console's inventory page will fill at roundstart with the books in your area/if you're in a library, any
areas designated as "library like" in the map config
You can see what type of bible the chaplin has selected?

"Fixes":
You can no longer just dump books into the scanner forever

Implementation details:
Any input that makes a db request will now A: freeze up any other db inputs until it's finished, and B: Start a
1 second timer before any new db requests can be made
Of note, I'm handling html encoding in a very targeted way.
All book_data datums need to have html encoded values. get_title/author/content exist so a defaulting and tgui
appropriate version can be loaded in. This somewhat matches with the trusted var on set_title, it exists to
prevent double html encoding.

While we're here

Input/DB (Book data should be html encoded)
Inside book datum (Book data should be html encoded)
Sending to tgui (Book data should be decoded during extraction with the get_() procs)
Sending anywhere else (Book data should be html encoded, otherwise it's an xss vuln)

Uhhhh tgui stuff?
I'm using a custom theme for emag visuals, I'll get into that more later
The visitor and book management console share the same data/act pipeline, which is why they're parented/subtyped
They also share a page selection component, which is why the visitor's console imports it.

Uhhhhh
Oh right, fuck.
Ok so the page selection component is kinda cursed, the left and right controls are fine
But I'm trying to get a << < [page/max] > >> setup going, and that means resetting the center input past change
so the default value can be used
This ends up being slightly hacky. I'm sorry.

Oh also, I implemented a custom tab setup for this ui. I have no idea why it was literally like 5 months ago.
I think it looks pretty nice, but if you want me to nuke it I can. Sorry for any headache around this.

More tgui stuff next

* Scanner/visitor cleanup, some other odds and ends

* Adds in a dark red and black theme for library computers to be triggered by an emag.
Things of note: I'm overriding some lists that get passed into buttons and one other thing using set, since the
list is alreadt generated by that step in the process? I think?
I've added dimness control to the dimmer component, since well, it was dimming already dark uis.
I also made and added a rather large background svg. I've got no experience with this sort of thing, and all the
compression methods I found for this ended up being busts. I know this isn't acceptable as an end product, but I
don't know how to get it there.

Somewhat on that note, this ui might not be worth the size for the amount of use it gets. I'm fine with nuking
it if that's the case, I bring this up because I have a very poor understanding of the logistics of something
like this, so I have a feeling I've fucked up somewhere

* Forgot these, just a scss file for library computers, barely used but I think it's worthwhile

* Missed this eariler. As a part of the uploading tab, I'm displaying the contents of books. I'm loading in that
context as raw html so paper -> book books look close to right. Means I need more html tags then our current
sanitize provides. I don't think any of these will cause issues, and there's also a good chance I'm missing
some. Will come up with a list later

* Updates the rest of the maps to use the new management typepath

* Fixes the default bible name being Default Bible Name, I am sorry

* Turns out I had the scaling wrong for bible names, lead to weird stacking because the bible icon doesn't scale, so I lowered its sizing

* Yeets unneeded exports (Thank you jlsnow)

Haha wouldn't it be funny if I didn't know how components worked

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>

* Resets the maps to master

* Fixes oversights from merge commit, changes maps

* Removes needless Flex's from the scanner

* Gives the library console the ability to parse markdown. Expands the list of acceptable html elements a bit

* Adds audio cues for printing and inserting/removing from the scanner, makes the scanner nicer to use in general

* Uses a compressed version of the background. It's still huge, but smaller at least

* Adds the printing audio to the book binder

* Cleans up tram

* curse you tram

* AHHHHHHHH

* MY LIFE IS TRUE PAIN

* Adds a path conversion statement to make people's lives easier

* Apply's style's suggestions

thx style

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>

* Compresses the background svg

* Further js cleanup

* We no longer render markdown in the ui, since any source of markdown is converted to html anyway

* More ui changes

Makes the tab/main screen logic use Flex rather then manuel offsets
Makes modals better fit the size of their contents
Readjusts the width of some inputs
Properly uses the header prop for a table
Makes the buttons in the upload panel look nicer
Restructures the print tab a bit

* Increase a modal's size

* Fixes computers with no keyboard overlay showing their screen even when the power is out

* Moves some data and logic onto the library subsystem. Kyler's review

Fixes harddels held by the library scanner. Makes the scanner's buffer
actually do something

* Makes book icon randomization a proc rather then just copypasta'd code

* Removes the kilo library edit, the soul was removed

* Damn you san (Fixes mapconflicts)

* Pain

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2022-03-30 19:56:53 -07:00
AnturK
fbba5abb72 Fish refactor. (#65785)
Refactors fish into proper paths.
Removes aquarium behaviour intermediary datums.
Moves fish functionality out of aquarium content component.
Fixes flopping animation resetting on dropping.

Simplifies everything. There should be no player facing changes.

The animate signal is kinda weak method of solving the animate queue issue but it seemed least intrusive to me.
Open to any better ideas.
2022-03-31 14:05:55 +13:00
TiviPlus
10395a8074 Reworks & TGUIs mecha equipment (#65375)
TLDR
Mech UI now TGUI: https://streamable.com/ahjydy
Mechs now use "slots" for equipment
They can only mount 2 guns(left and right arm, left and right click to use)
Tesla & Concealed bay is removed
Removed mech damage deflection

Full list of changes
Note: weapons in this section refer to all click-using equipment such as guns/hydraulic clamp/etc

Hackmd: https://hackmd.io/lgr-LetfSKyHzPP0zQUXPA
Tesla has been removed (Tesla gives you effectively infinite power on station and off station(where the design direction for mechs is intended) they are useless)
Concealed mech bay has been removed (Concealed mecha bay relied on selection for visibility so it doent make sense to exist when all equips are "selected", the code was bad (instead of flag or something you just used locate() everywhere)
Honker no longer has snowflake UI (I'm sorry but if I have to make a third UI for this im going to go insane)
Mechs now mount 2 arm weapons, and certain amount of "utility", "armor" and "power" module types
The two arm weapons do not share a cooldown anymore UNLESS they are identical weapons
left click to shoot left weapon right click for right weapon, this will shoot the weapon unless you click next to you with a ranged weapon it will then try to melee (This also applies to attaching the weapon to the mech)
It is no longer possible to deflect or have multipliers for damage from innate or armor sources, armor will now just apply a direct armor change
Since plasma generator needed to be selected to use you now need to click on the power generator with a stack of plasma to refill it
Internal damage:
The mech no longer needs to be low health to take internal damage
Internal damage now no longer has several convoluted ways to fix each different type and is now a timed action performed in the UI
Weapons no longer have an RNG chance to be damaged or immediately deleted by damage
Weapons will now take damage aimed at the right and left arms respectively, this can be repaired using the new UI. NOTE: this is intended to be implemented as weapon/module disabling but I left it out of this PR to try resemble some shortness
Both internal and equipment damage have minimum thresholds of damage required in a hit before they attempt to check whether the mech should take internal or equipment damage, teh threshold is lower for equipment damage
You can no longer reload weapons using energy

Demo Video
https://streamable.com/ahjydy
2022-03-28 23:46:26 +01:00
John Willard
b6808270df Fixes species uplinks (#64816)
I was fucking deranged when I originally made this. I not only didn't actually include the assigned species to the uplink's ui data, but I made the code add each objective item to the uplink list twice. This fixes both of those problems, and makes it more readable.

Fixes a mistake I caused.
Closes #64806 (Species-Restricted uplink items don't appear)

Role-restricted and species restricted items can be purchased again.
Species-restricted items no longer appear in surplus.
2022-02-11 01:26:10 -08:00
Mothblocks
068f5df349 Add new surgery tgui (#64579)
* Move element to component, start UI, move assets into their own directory

* Complete UI

* Stop when another surgery is started

* Set your real zone since I forgot you actually need to start the surgery too

* Bring this back since I was just removing it as part of a cleanup for asset cache, but I can't prove it's not used anymore

* Remove unnecessary constructor I was using for something else

* Fix signal override
2022-02-06 22:04:06 +02:00
John Willard
6a1ae92145 Re-adds species uplink items (and some minor fixes) (#64460) 2022-01-30 23:01:36 -08:00
Alex
d80ea26df0 Patch icon choosing in the chem dispenser and chem press (#64137)
* patch style for chem master, chem press
2022-01-18 16:42:55 +01:00
Watermelon914
8fd85e9666 [MDB IGNORE] BIDDLE TRAITORS - Adds progression traitors. Refactors uplink code in its entirety (#63588)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: tgstation-server <tgstation-server@tgstation13.org>
Co-authored-by: gbfree <guillaumebfree@gmail.com>
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: ike709 <ike709@users.noreply.github.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pepsilawn <reisenrui@gmail.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: SuperNovaa41 <supernovaa41@protonmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
Co-authored-by: Aziz Chynaliev <azizonkg@gmail.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: carshalash <carshalash@gmail.com>
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
2022-01-11 15:47:10 -08:00
Mothblocks
af8902331d Amortize the cost of creating preference assets by caching them per git revision on production, reducing best case init times by ~20 seconds (#63503)
Preference asset creation, which while consistently created in early assets, can be requested at any time before then and often is, currently takes about 15 to 25 seconds to produce. Because of extremely hard to reproduce BYOND icon bugs, most of this is done on the same tick.

Lowering the cost of initialization itself is very tricky. Some of it we can theoretically optimize, such as creating humans for antagonists, others we can't, such as the raw cost of icon blending.

Furthermore, adding new icons later down the line would just increase this initialization time even more.

Instead of optimizing the asset creation, which is an uphill battle, this instead chooses to amortize the cost by caching preference assets created per git revision. This means that preference assets will be created, with their long delay, only once whenever the code changes.

This is done on a config, defaulting to on so that production needs no changes, as the whole point of these being made at runtime at all is that it keeps assets/art styles consistent, and PRs making subtle bugs that break preference generation in some way is not uncommon. On development, your git revision will stay the same until you commit, no matter what code changes you make.
2022-01-01 04:36:30 +00:00
Jeremiah
415e9dd7c1 Fixes typos in span, other html elements (#63510)
Atomizes a much larger PR for another time...
There are typos in span and other html messages that causes them to not render correctly or at all.
Bug fixes
Converts those instances of span to use the macro
2021-12-23 17:06:01 +00:00
AnturK
dc510bccbb Remove tgfont from pipeline, build it to git (#63358) 2021-12-12 00:57:23 +02:00
AnturK
39308f9dc6 Paintings improvements. (#63170)
About The Pull Request

    Paintings can now do stroke painting.
    Added painting management panel for admins.
    Paintings now display author's character name, year of painting, medium and patron when hung on wall.
    You can become new patron by paying more than the previous one.
    Added painter's palettes to library vendor. (Sprites by @Mickyan )

Backend changes:

    Images are now stored in /data/paintings/images/*.png instead of /data/paintings/[category]/*.png
    Old categories are now just tags

Screens & Video
Changelog

cl
add: You can now become patron of your favorite painting by buying sponsorship from Nanotrasen Trust Foundation.
add: Painter's palettes are now available at library vendor.
qol: Can use strokes in paintings now
/cl
2021-12-10 08:46:37 +13:00
Kyle Spier-Swenson
639ab9cd38 Doubles slow asset send rate (#62845)
Newer byond clients now properly batch up `browse_rsc` sends so this clogging up the `browse()` queue is less of a concern.
2021-11-16 12:09:32 -08:00
Ghom
3f66485234 Fixes missing award icons by filling the assets list on runtime. Plus new icons and unit test. (#62665) 2021-11-08 22:52:43 -08:00
John Willard
88d7dbfc10 removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
2021-10-28 19:25:50 -03:00
Ghilker
95c8e00af7 cleanup _HELPERS/_lists.dm and all the necessary files (#61827)
Bring _HELPERS/_lists.dm to latest standards by:
-Adding proper documentation and fixing existing one
-Giving vars proper names
-Procs now use snake case as per standard (many files that use those procs will be affected)
2021-10-12 14:48:51 +01:00
Mothblocks
5a4c87a9fc tgui Preferences Menu + total rewrite of the preferences backend (#61313)
About The Pull Request

Rewrites the entire preferences menu in tgui. Rewrites the entire backend to be built upon datumized preferences, rather than constant additions to the preferences base datum.

Splits game preferences into its own window.

Antagonists are now split into their individual rulesets. You can now be a roundstart heretic without signing up for latejoin heretic, as an example.

This iteration matches parity, and provides very little new functionality, but adding anything new will be much easier.

Fixes #60823
Fixes #28907
Fixes #44887
Fixes #59912
Fixes #58458
Fixes #59181
Major TODOs

Quirk icons, from @Fikou (with some slight adjustments from me)
Lore text, from @EOBGames (4/6, need moths and then ethereal lore from @AMonkeyThatCodes)
Heavy documentation on how one would add new preferences, species, jobs, etc

    A lot of specialized testing so that people's real data don't get corrupted

Changelog

cl Mothblocks, Floyd on lots of the design
refactor: The preferences menu has been completely rewritten in tgui.
refactor: The "Stop Sounds" verb has been moved to OOC.
/cl
2021-09-15 10:11:11 +12:00
tralezab
641e481d47 TGUI Apprentice Contracts (#61094)
TGUI-ifies apprentice contracts. Yummy!
2021-09-10 18:24:55 +01:00
Rohesie
a7f81bd169 Uses regex datums and macros for text-manipulation (#61042) 2021-08-27 11:13:57 +02:00
Aleksej Komarov
9bbabfe36b tgui maintenance chores (#60859)
## About The Pull Request

**Upgrades:**

- Yarn 3.0
- TypeScript 4.3
- Sass 1.37
  - Required some refactoring of `/` into `math.div()` in CSS

**Dependency removals:**

- Removed ESM package, see: https://github.com/standard-things/esm/pull/902

I initially thought it was impossible to stop relying on this package, but fortunately, ES module support in Node 12+ now comes standard and I only had to convert the very few external module imports to `require()` (because Yarn PnP).

I also moved `logging.js` directly into `tgui-dev-server` package, because that's where it is used. One less internal dependency.

**Sidegrades:**

- Removed creation of a common tgui chunk, because in practice it creates unnecessary complexity (devs sometimes get a white screen due to this chunk being invalid) and doesn't really save that much data on CDN, and **definitely** doesn't make tgui load faster.

I think that is all. I tested it a bit and everything seemingly works.
2021-08-16 12:21:45 -04:00
Bobbahbrown
7b5bdfd56c add support for GAGS to design asset list generation (#60366) 2021-07-22 15:47:43 -07:00
Mothblocks
a15c9fb23f Cache asset/mappings results (#59914) 2021-07-07 01:35:17 -07:00
Aleksej Komarov
b06d238de9 Juke Build (#59390) 2021-06-13 00:15:51 -07:00
Watermelon914
b84a9f97b2 Integrated Circuits (Wiremod) (#59232)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: Maurukas <66576896+Maurukas@users.noreply.github.com>
2021-05-25 11:15:36 -07:00
NopemanMcHalt
3b807ea182 Transfers icon path to the emojis to define (#58948) 2021-05-15 17:38:04 -07:00
Celotajs
991b5f074a Tidy HTML folder (#58761)
This PR aims to make the HTML folder a little more organized, as well as remove a few unused files.
Why It's Good For The Game

Doesn't change anything for the player, however makes the files more organized.
2021-05-11 09:35:57 +12:00
Jonathan Rubenstein
770148de06 Replace Maint. Drone machinery whitelist with last touched check & other tweaks (#58802)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-05-08 16:12:31 -07:00
Seris02
ff2f6abe83 Sort the majority of the rest of the unsorted chat (#58821)
* FINALLY IT IS DONE FUCK

* tip of the round into ooc

* adds cyopod chat messages to the info chat filter

* last one I promise probably, mob spawner messages to info filter

* holoparasite, round will start in x and keybinding conflict to respective filters

* removed motd from constants, made it infoplain surrounded instead

* changed info to infoplain
2021-05-05 05:57:40 +03:00
Celotajs
76fb2e1712 Convert changelog to TGUI (#58593)
This pull request converts the changelog to TGUI. 
Note: Old unused changelog files will be automatically removed on the next changelog run
Why It's Good For The Game

More consistent UI, ability to view all historic logs.
Changelog

cl Celotajs
refactor: Converted the changelog popup to TGUI
/cl
2021-04-27 08:41:56 +12:00
Celotajs
fb2d71495b Convert jumpsuits, jumpskirts and sneakers to GAGS (#58514) 2021-04-25 17:01:36 -04:00
AnturK
8b1ffd1e49 Adds explorer drones / adventures. (#57851)
A new side-job for cargo. Prepare and launch exploration drones at distant sites to encounter weird adventures, collect loot and expand the station cargo network. Adventures - the main content type here, can be written by anyone without any knowledge of programming. The purpose here is creating an way of interesting way of delivering lore (and adding some new job content/cargo expansion method).

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: EOBGames <58124831+EOBGames@users.noreply.github.com>
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-03-26 11:38:39 +02:00
Mothblocks
f71b3a069b tgui strip panel + strippable element (#57889)
Completely removes show_inv and replaces it with /datum/element/strippable. It takes a list of instantiated /datum/strippable_item which communicate which slots are available and how to interact with them. This element has been added to humans, alien humanoids, parrots, and corgis.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-03-26 11:33:46 +02:00
AnturK
7fef33c459 Adds easy to extend custom svg font. (#57717)
Just throw in svgs into tgui/packages/tgfont/icons directory and you can use them in tgui with tg- prefix.

Co-authored-by: Style Mistake <stylemistake@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-03-18 15:20:59 +02:00
tralezab
76ea56ff59 Refactors and Tguizes Orion Trail arcade machine (#57647)
Tguized orion trail. Orion code maybe less shit?

Orion Events use datums whew.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-03-17 09:10:00 +02:00
Qustinnus
931a32ffb3 Experi-Sci: Techweb nodes may now require you to perform "scientific" experiments (#54093)
Co-authored-by: Brett Williams <bobbahbrown@gmail.com>
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-02-23 13:30:24 -08:00
Mothblocks
0f435d5dff Remove hideous inline tab indentation, and bans it in contributing guidelines (#56912)
Done using this command sed -Ei 's/(\s*\S+)\s*\t+/\1 /g' code/**/*.dm

We have countless examples in the codebase with this style gone wrong, and defines and such being on hideously different levels of indentation. Fixing this to keep the alignment involves tainting the blames of code your PR doesn't need to be touching at all. And ultimately, it's hideous.

There are some files that this sed makes uglier. I can fix these when they are pointed out, but I believe this is ultimately for the greater good of readability. I'm more concerned with if any strings relied on this.

Hi codeowners!

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2021-02-14 16:53:29 -08:00
Thalpy
56f7ac0c0a Reaction rates, pH, purity and more! Brings a heavily improved, less explosive and optimised fermichem to tg. (#56019)
Brings a heavily improved, rewritten, and optimised fermichem to tg. I saw that tg seemed receptive to it, so I thought I’d do it myself. If you know of fermichem – there’s a lot changed and improved, so looking at other documents regarding it will not be accurate.

Revamps the main chemistry reaction handler to allow for over time reactions instead of instant reactions. This revamp allows for simultaneous reactions, exo/endothermic reactions and pH consuming/producing behaviours. Most of the reactions in game will now inherit an easy one size fits all reaction.

Temperature mechanics

    Temperature affects reaction rate
    The higher it is, the faster it is, but be careful, as chem reactions will perform special functions when overheated (presently it DOESN’T explode)
    Temperature will increase or decrease depending on the exo/endothermic nature of the reaction

pH mechanics

    Each reaction requires the pH of a beaker to be within a certain range.
    If you are outside of the optimal, you'll incur impurity, which has a negative effect on the resultant chem
    pH of a beaker will change during a reaction
    Reacting Impure chem effects can vary from chem to chem, but for default will reduce the purity of other reagents in the beaker
    Consuming an impure chem will either cause liver or tox damage dependant on how impure it is as well as reducing consumed volume
    Purity can (presently) only be seen with a chemical analyser
    Impure chems can purposely be made by making the reagent with a low, but not explosive, purity.
    A chem made under the PurityMin will convert into the reagent’s failed chem in the beaker.

Optional catalysts

    Reactions can use an optional catalyst to influence the reaction - at the more framework exists from tmeprature, reaction rate and pH changes as a result of a catalyst. Catalysts can be set to only work on a specific reagent subtype. It is preferable to those building upon this code that optional catalysts only affect a subsection of reagents.
    Presently the only catalyst that uses this is Palladium synthate catalyst - a catalyst that increases the reaction speed of medicines.

Reaction agents

    These are reagents that will consume themselves when added to a beaker - even a full one, and apply effects to the total solution. One example being Tempomyocin which will speed up a reaction, or the buffer reagents which change the pH.

Competitive reactions

These reactions will go towards a certain product depending on the conditions of the holder. The example one given is a little tricky and requires a lot of temperature to push it towards one end.
New and charged reactions

(see the wiki for details)

Acidic /basic buffer - These reagents will adjust the pH of a beaker/solution when added to one. If the beaker is empty it will fill it instead.

Tempomyocin - This will instantly speed up any reaction added it is added to, giving it a short burst of speed. Adding this reagent to a reaction will give it a suddent speed boost up to 3x times - with the output purity of the boost modified by the Tempomyocin's purity.5u per 100u will give you 2x, 10 u per 100u will give you 3x. IIt caps at 3x for a single addition, but there is nothing preventing you from adding multiple doses for multiple boosts.

Purit tester - this will fizzle if the solution it is added to has an inverse purity reagent present.

A few other reactions have been tweaked to make sure they work too. An example being meth - see the wikipage linked above.
A note on all reactions

    The one size fits all reaction for all chems generally won’t create impure chems – it is very forgiving. The only thing to remember is to avoid heating reactions over 900 or you’ll reduce your yield, and try to keep your pH between 5 -9.

This PR doesn’t have specific example chems included (except for the buffers) – they will be atomised out and they use the mechanics in more depth
A note on plumbing

I reached out to Time Green and we worked together to make sure plumbing was fine. Time Green did some of his own tests too, and surprisingly it doesn't look like much needs to be changed.
2021-02-11 17:09:07 -03:00
AnturK
2c8881ea39 Fixes that painting asset runtime that happens every time. (#56746)
Painting titles are not guaranteed to be unique, especially between categories.
2021-02-08 17:54:39 -03:00
tralezab
19bd1e64a6 Revives old Mafia PR adding security, a mind bogglingly large amount of refactors, some documentation, and other niceities (#56199) 2021-02-04 18:34:50 -08:00
AnturK
8c69586774 Adds aquariums and aquarium fish. (#56343)
Co-authored-by: tralezab <spamqetuo2@gmail.com>
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: coiax <yellowbounder@gmail.com>
2021-01-27 12:44:36 -08:00
Aleksej Komarov
a6e60e47e7 tgui 4.3 (#56080) 2021-01-16 19:54:31 -08:00
Bobbahbrown
35f005091a Revert "Removed jQuery from snowflake devices" (#55272)
* Revert "Removed jQuery from snowflake devices (#55090)"

This reverts commit ee47cb5289.

* linting SUCKS
2020-12-02 05:46:41 +02:00
WarlockD
ee47cb5289 Removed jQuery from snowflake devices (#55090)
* Removed jQuery from snowflake menus

* Update code/modules/admin/verbs/beakerpanel.dm

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2020-11-30 17:53:23 +01:00
Arkatos1
1633a13609 tgui: Safe (#55109)
This PR refactors safes and brings their UI from html to tgui based on the PR above.

Paradise has more features for safes than us, and these features were not ported along to accommodate feature freeze. Only our current safe features settings were refactored, for example number of tumblers stays 2, no extra safe information on examine and safe codes are not generated on paper for command.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-11-24 18:07:08 +02:00
tralezab
3c1f235e9f AIs can now select portraits as their display (#53994)
A new option has been added to the AI display radial menu alongside random, "Portrait"

It opens a small menu that lets you peruse all of the portraits and select one as your display.

This can let avid artists draw exactly what they want their AI to be like, and not-so-avid artists to bring tears to my eyes.
2020-11-20 05:37:08 +02:00