Commit Graph

10067 Commits

Author SHA1 Message Date
Fikou
bc3dbfb58a adds a helper for updating one piece of clothing depending on its slot (#66191)
you can now run the proc update_clothing to use the slot_flags of an item to properly update a mob's icons
this is used by spraycans coloring an item, instead of running regenerate_icons

less weighty than regenerate_icons form of updating an item that you dont really know where is.
lets us support modsuits worn on stuff that isnt the back in the future
2022-04-17 02:53:53 -07:00
MidoriWroth
ca2dbbff7a Adds 3 new Polish foods (#65848)
* Adds 3 new Polish foods

Add pierogies, zurek, and stuffed cabbage to craftable foods

* oopsies editing newlines

* Update misc.dm

* Update soup.dm

* Update misc.dm

* oops forgot the flour in the zurek

* this bit was a bit unnecesary
2022-04-17 00:33:43 -04:00
YakumoChen
fd595d97c8 Update meat.dm (#66216) 2022-04-16 23:39:16 -04:00
GoblinBackwards
b569b60b5b Makes slapping people trigger gloves of the north star (#66020)
* Rapid slapping when using gloves of the north star

* Correct define value
2022-04-16 15:26:25 -07:00
ATH1909
123bb1a0ae washing someone else's mouth out with soap no longer washes YOUR mouth out with soap instead (#66163) 2022-04-15 15:44:40 -05:00
carshalash
0b5d6aebf1 Pastry base increased output (#66171)
You will now receive 6 pastries per cut pie dough, this doubles the output of what it once was.
2022-04-15 15:29:14 -05:00
MrMelbert
ab51d5a00c Refactors speech impeding effects (drunken slurring / suttering) into status effects. Adds heretic slurring in addition to the existing cult slurring. Removes 4 vars from /living in return, which slightly optimizes Life() (wink) (#66031)
* Refactor slurring + cultslur to be a status effect

* Refactors stutter to be a status effect

* Adds a VV helper and a setter
- also adds heretic slurring text

* Adjustments to the heretic slurring

* classified VV key correctly

* "Normal" -> "Drunk" slurring

* social anxiety fix

* Adjusments and an accidentally reverted fix

* comment

* Fixes drunk file + two other minor issues

* merge skew time

* comments

* Generalizes this proc for the future.

* Missed stuff

* Numbers adjusted the wrong direction

* missed a single one

* incorrect numbers

* changes add/remove to "adjust"
2022-04-14 21:36:52 -04:00
Fikou
37eea8e19d [Ready] Hilbert Research Facility remap feat. tram (#66082)
* reworks hilbert's hotel ruin

* warooio

* you can now run multiple trams on the same z at the same time, trams are linked by id

* fuck

* sure

* you are a simulacra

* FUG

* dock
2022-04-14 02:15:21 +01:00
SMOSMOSMOSMOSMO
fc0e29fa4d Fixes orbitting planted C4s (#66011)
Ghosts would be notified to orbit planted c4s, however this would break if a c4 is planted on floors/walls since you cant orbit these.
2022-04-13 17:17:28 -05:00
Tastyfish
934648a3c2 Refactor delivery parcels, add sort tag overlay (#65551) 2022-04-13 15:16:44 -07:00
TheSmallBlue
0b2dc275fc Adds a flag that lets mobs be colored with spraycans, and adds said flag to the hygienebot (#65891) 2022-04-10 21:43:40 -07:00
John Willard
eb440d5751 Refactors drone PDA stuff into a Botkeeper thing (#66022)
* Refactors drone PDA stuff into a Botkeeper thing

* CE access required instead

* update to access button

* fixes falsifying drone pings
2022-04-10 13:21:25 +03:00
John Willard
e7988c5e77 removes syndicate cartridge no one uses anyways (#65953) 2022-04-09 19:45:05 -07:00
John Willard
5b8ee570ea Refactors Newscaster cartridge to tablet app (#66035) 2022-04-09 18:31:40 -07:00
Ghilker
fa746bad9b Turbine Rework (#65586)
This PR rework the atmos turbine into a 3x1 multiblock machine.
The calculations are now done by simulating the flow of gases and expansion work that they do inside the turbine (heavily simplified), now a pressure differential between the inlet and outlet will heavily change the output of current that the machine is able to deliver.

The machine will not use stock parts for upgrades, but instead it will use 3 main components that are to be made by hand (except for the first tier that can be printed)
Those are compressor part, rotor part and stator part.
There are 4 tiers to them where the last one will use metallic hydrogen to be made, but will significantly increase the output and resistance of the machine.

-- Docs for the turbine:

A work based engine that “simulates” the flow of gas to calculate the energy produced by the moving gases.

These gases cool down while passing through due to the work done on the turbine blades and the expansion it get inside the machine
The new turbine

The machine will be expanded into a 1x3 multiblock machine that will accomodate 3 parts to it:

    An input compressor
    An output turbine
    A core rotor

There are 3 other main component that are:

    The Compressor Blade part
    The Rotor Shaft part
    The Stator Generator part

These three are the main (and only) upgrade path the machine can follow.
Parts
Input Compressor

It handles the input of gases inside the machine, it contains the Compressor Blade part.
This part moves the gas in, compresses it and increases its temperature by the amount of work the compression of the gas does.
Output Turbine

It handles the output of the gases outside the machine, it contains the Stator Generator part.
The gases moving through will expand 6x the initial volume and cools down before getting expelled.
Core rotor

Main part of the multiblock machine. It contains all the logic for building and processing the turbine.
Can be connected to a computer for control.
Contains the Rotor Shaft part.
Upgrades

The three installable parts can be upgraded with specific sheets to improve their efficiency and resistances. Each tier up will increase the max RPM reachable by the turbine and the max input temperature that the machine can take before starting to be damaged.

Each first tier part can be printed in any Lathe (proto/auto) but it requires hand crafting with different materials to be upgraded.

    Compressor Blades can be upgraded with plasteel, titanium and metallic hydrogen.
    Rotor Shaft can be upgraded with plasteel, titanium and metallic hydrogen.
    Stator Generator can be upgraded with titanium, metallic hydrogen and zaukerite.

-- End docs

Fixes #50667 (Infinite power generation by piping turbine output into its input. This worked because there was no temperature threshold, and the cost of applying pressure via pumps was lower then the power generated -Lemon)

Better turbine in many aspects, preparation for SM rework
2022-04-08 22:25:17 -07:00
MrMelbert
79ace42ae3 Adds (restores?) cigar inhands (#65939)
* cigar icons

* Removes WIP pipe icons I can't make these

* Sprite fixes

* White spec
2022-04-08 21:19:52 -07:00
ArcaneMusic
b17a90718e Replaces the accounting machine with all IDs having their own bank account by default. (#65980)
* Replaces the accounting machine with all IDs having their own bank account by default.

* Thanks, conflict.

* Oh right pushing the commits
2022-04-08 20:59:36 -07:00
Tim
b1a793f840 Refactor and improve antimagic to be more robust (#64124)
This refactors the antimagic component to use and have bitflags, documentation, defines, code comments, named arguments, and renames variable names for clarity. 

- /obj/effect/proc_holder/spell/aoe_turf/conjure/creature/cult is not used anywhere and has been removed
- /obj/effect/proc_holder/spell/targeted/turf_teleport/blink/cult is not used anywhere and has been removed

- New sound effects are played when magic is blocked. Depending on the type of magic being used it will be either:

- Equipping antimagic now properly updates the magic buttons
- Any magic being blocked or restricting casting now displays a message
- MAGIC_RESISTANCE_MIND now properly blocks telepathy effects
- Removes blood splatter when fireball is blocked
- Magic projectiles for staff of locker no longer spawn lockers when blocked by antimagic
- Fire breath is no longer blocked by antimagic
- Spellcards are now blocked by antimagic

Any antimagic on a mob blocks that magic type from being casted. (certain spells such as mime abilities completely ignore antimagic)

- Foilhats prevent someone from casting mind magic (telepathy, mindswap, etc.)
- Bibles, ritual Totems, nullrods, holymelons, and TRAIT_HOLY prevent someone from casting unholy magic (cult spells, etc.)
- Nullrods, ritual totem, and holymelons prevent someone from casting wizard magic (fireball, magic missile, etc.)
- Immorality talismans, berserker suits, and TRAIT_ANTIMAGIC prevents all types of magic (except stuff like mime abilities)
- Touch of Madness and Mindswap is now blocked with MAGIC_RESISTANCE and MAGIC_RESISTANCE_MIND
- Voice of god is now blocked with MAGIC_RESISTANCE_HOLY and MAGIC_RESISTANCE_MIND
2022-04-08 20:04:09 -05:00
Tim
76fd872c9b Fix permanent invisibility from shadowcloak (#65751) 2022-04-07 19:20:54 +02:00
B4CKU
06ed4265fe grenade error message bugfix (#65748)
Fixes grenade message on securing
2022-04-07 19:18:58 +02:00
John Willard
de2e373357 Refactors janitor cartridge to a tablet app (#65942)
Removes old janitor cartridge app and replaces it with a tablet one.
Also adds the pimpin' ride to the list of tracked items, too.
Makes Janitors spawn with said app, too.
2022-04-06 19:51:45 -05:00
Seth Scherer
34a3b09054 Removes the clown borg lollipop snowflake (#65960)
I have no fucking idea why this even exists, there is no difference
between regular borg lollipops and this one. I hate feature coders
2022-04-06 18:02:46 -05:00
tnekohue
0f4fc77c64 Fixes dup issue with RCD (#65945)
Fixes dup issue with RCD when silo link upgrade is installed, but its turned off.
2022-04-05 19:44:03 -07:00
san7890
7894ed3f90 Fixes the Donut Box Icon for Mapping (#65908)
Hey there,

Look over here:

This is so awfully undescript that anyone who doesn't map doesn't "get" that this is supposed to be a donut box. It also doesn't help if you're trying to position stuff on a table around a donut box, and you want stuff to look pretty without having to compensate for an unknown variable (only known when you compile).

So, I made a composite icon of both the inner and outer shells of the box, and set that for the icon_state in the donut box's code. It uses base_icon_state to generate the donuts being filled into the box, and when I tested it on local, everything still worked as intended.
2022-04-05 19:39:17 -07:00
John Willard
4db7a58ec7 Adds logs to crafting (#65952) 2022-04-05 21:08:28 -04:00
ErdinyoBarboza
7fd2bd30da Changes sulphuric acid to sulfuric acid (#65929) 2022-04-05 16:53:31 -05:00
vincentiusvin
8633d46927 [NO GBP] Fixes breathedeep catridge not working (#65854)
* Adds an istype to the proc so non analyzer doesnt get btfo'd

* More isolated type specific stuff
2022-04-05 11:45:43 -07:00
John Willard
6439974805 Refactors DNA scanner & adds new traitor final obj with it (#65704)
I'm adding a new Traitor Final objective where you basically get a DNA scanner, that can only scan animals, but can mutate you into a space dragon when you inject yourself with Space Carp DNA.
There's been negative opinions about both Romerol and Battlecruiser, one of these criticisms is that they are the only two there are. I'd like to add more so there's more variety to it.

I also like this as it adds a way for Space Dragons to be player-spawned, I've already shown my distaste for midround ghost antagonists, as I feel they reward people for doing nothing, with a murderbone antag. Not that this solves any of my problems, but I can rest somewhat happier knowing there's a way for non-ghosts to get an antag like Space dragon. (It's why I really loved Blob infection's addition)
2022-04-04 18:53:17 +01:00
Fikou
8a51c10665 [MDB IGNORE] Adds dead space navigation (#65741)
Adds the navigate verb, it makes a holographic path to any navigation beacon on station
Video here: https://streamable.com/2uy76l
removes wayfiding pinpointers and the associated quirk, as theyre kinda redundant with it
needs #65665 before merge
partially inspired by goon
2022-04-03 10:42:51 +01:00
Ebb-Real
a2f7842d04 Bandana GAGS: craftable, dyable and customizable + bandana neckerchief refractor (#65760)
expansion: You can now dye bandanas with washing machines and customize bandanas from inside the clothesmate.
2022-04-03 04:25:31 -04:00
dragomagol
d944794bb4 Replace singulo.log and supermatter.log with engine.log (#65850)
Merges the two separate engine logging files into one, and makes it generic enough for any possible future engine.
2022-04-02 17:00:47 -05:00
Zonespace
5cb7a2c124 The regular HoS headset is no longer sound-protective (their bowman keeps it). (#65840) 2022-04-01 23:05:20 -05:00
Kapu1178
1d0eadcb12 Kapulimbs (#65523)
* i wanna go to bed so im pushing this

* It compiles but doesn't work yet

* It works!

* I WANT TO DIE

* Appease linters

* some CI fixes

* Address reviews + oversight

* Limb grower fix

* more icon fixes

* forgot to hit save

* I'm a dumbass

* Removes bodypart parent from unit test

* Fixes monkeys and CI

* Grammar pass

* I hate zombie code so much

* General code cleanup

* THE SHITCODERS ARE COMING FOR MY VARS

* THE UNIT TESTS ARE COMING FOR MY SHITCODE

* Reviews + skirts

* Removes an unused DMI

* Why didn't I do this in the first place?

* HAIR REFACTOR

* Haha whoops

* How did I miss this

* Admin spawned creatures now have their features

* Optimize me harder

* minor fix i need to push to merge master

* Fixes hair (maybe) and a runtime

* Maybe fixes mirrors

* Attempts to fix women

* Fixes hair on dismembered heads and a grammar change

* Caps lock did me dirty

* address reviews

* icon failures fix + missed reviews

* Fixes: Facehuggers and Regenerate_limb

* Fixes ethereal color pref appearance

* How the fuck did this not break everything else horribly?

* JESUS FUCKING CHRIST IM A MORON

* Fixes compile

* I'm not high I swear

* Im a dipshiiiit

* grumble grumble

* Fixes a visual bug with digitigrade legs. Adds \improper to roundstart species names. Added two new clothing-related helper procs. Renamed a couple procs to be more accurate. Adds SHOULD_CALL_PARENT(TRUE) to examine_more. Addresses reviews.

* Forgot this little readability thing.

* Updates CODEOWNERS

* Me when I forget how github works

* mapload me harder

* Last second fixes
2022-04-01 21:07:46 -04:00
robbertapir
30e84eb5cd Moves the deep fried food holder to it's own file (#65734)
Moves the deep fried food holder from bread.dm to deepfried.dm.
It's neither bread nor bread-related. There is no reason for it to be in bread. No reasonable person would reasonably expect it to be in bread.
2022-03-31 16:40:26 -05:00
John Willard
744a658b31 re-adds the assistant traitor toolbox (#65703) 2022-03-31 14:27:51 -07:00
vincentiusvin
204cbbb736 Ingame Atmos Reaction Guide (#65271)
About The Pull Request

https://imgur.com/a/pMMEi4i
https://imgur.com/a/xCrIcz4

Title, really.
Adds an ingame guide to atmos. Currently hooked to the atmos monitors, analyzer, and the tablet app.

Lots of reaction data not implemented yet, banking on the cleanup to get merged first, so drafting.
Done, all reactions in. Haven't double checked them though.

Code is pretty much finished, feel free to take a look. Ill probably retidy them while adding stuffs so no rush.

Might add a reaction handbook obj later Implemented in analyzer.

Dotted tooltip idea shamelessly stolen from preferences.

Lots of the diffs are from breaking the sensor file up, dont worry about it.
Why It's Good For The Game

Less need to open the wiki in another page I guess.
Changelog

cl
add: Added an ic atmos reaction guide. Available in your atmos control consoles/monitors, ntosatmos app, and analyzer.
code: Some changes to how gas canister descriptions are generated.
/cl
2022-04-01 09:58:03 +13:00
LemonInTheDark
50689f89a4 Action button refactor/rework: Enhanced Dragging (#65180)
About The Pull Request

I noticed a lot of strange and un-intuitive behavior in action buttons, and got stung by the bloat bug. Damn it hug #58027
I'll do my best to explain what I've changed and why, might get a bit long.
If you want a better idea, read the commits. Most of em are pretty solid, if long.

Whelp. Here we go.
How do action buttons currently work

All action buttons are draggable, to any place on the screen. They're held in an actions list on the player's mob.
Their location in this list determines their position on the top of the screen. If one is dragged away from the top, its position in the list is "saved". This looks really bad.
If two buttons are dragged over each other, their positions swap. (inside the actions list too)
If a button is shift clicked, it is brought back to the position it started at.
If the action collapse button that you likely just mentally edit out is alt clicked, it resets the position of all action buttons on the screen.
If an action is ctrl clicked, it is "locked". This prevents any future position changes, and also enables a saving feature. With this saving feature, locked button positions persist between rounds. So your first o2 canister will always start where you saved it, etc.
Actions and buttons are a one to one link. While there is functionality to share action buttons between two players, this means showing the same object to both. So one player can move a button on another's screen. Horrendous.
This also makes code that modifies properties of the screen object itself very clunky.
Why is this bad

A: None knew pretty much any of this information. It is actually documented, just in a horribly formatted screen tip on the collapse button, you know the one we all mentally delete from the hud.
B: None of this is intuitive. Dragging buttons makes the hud look much worse, and you get no feedback that you even can drag them. Depressing
C: We use actions to make new options clear to the player. This means players can have a lot of action buttons on the hud. This gets cluttery
D: The collapse button is useless. It lets you clear your screen if someone like me fucks up and gives you 2000 actions, but outside of that it just hides all information from you. You never want to see none of your action buttons, just a filtered list of them.
E: On a technical level, they're quite messy, and not fully functionally complete. This is depressing.
What I've done

Assuming the above to be true, how do we fix them?
Well first I'm going to go over everything I changed, including links to major commits. I'll then describe the finished product, and why I made the decisions I did.

Oh and I've moved some of the more niche or technical discussion to dropdowns. Hopefully this makes finding the major functional changes easier

Adds helper procs for turning screen_loc strings into more manageable arrays. This doesn't fully support all of the screen_loc spec, but it's enough for what I'm doing. (f54865f)

Uses these helper procs to improve existing code (6273b93)

Fixes an issue with tooltip code itself. If you tried to hold down a mouse button while dragging onto a tooltip enabled object, it would silently fail. The js made assumptions about the order args came in, which broke when buttons were held down (e0e42f6)

Adds a signal linked to /client/Click(). Surprised we didn't have this before honestly (c491a4a)

Makes /client/MouseDrag() return parent. If we don't do this, any overrides of MouseDrag will never actually be called (2190b2a)
Refactors how action buttons work under the hood (53ccce2)
Basically, rather then generating one button per action, we generate one button per viewer

Starts to change button behavior, more cleanup

Changes the mouse cursor when an action button is dragged. Hopefully
this makes moving things feel less like an accident, and makes you doing
it more clear

Removes the moved and locked vars. This will be more relevant later, but
for now:

Moved exists as a sort of budget "We've been dragged" variable. We can
handle this more cleanly, and the movable type doesn't care about it

Locked is a very old variable that is also not something that the
movable type "owns". It's more an action button thing that's been moved
down.
It exists so an action can be locked in place, and in that locking, be
treated as a "saved location"
(21e20fc)

Because I've nuked move, we don't need to directly set our button's
position. We can use the default_button_position var instead. This is
quite handy.

Please ignore position_action, I will explain that later
(83e265e)

Removes the buttons locked pref

It was another obscure part of action buttons, basically do buttons
start "locked" or not. See previous discussion of locked
(b58b1bd)

Major rework starts here

Alright. Sorry for this, this is where me not commiting regularly starts
to suck. I'll do my best though.

Rather then figuring out an action button's position via a combination
of the moved and ordered vars, we use a separate location var to store
one of a few defines. This makes life later much easier.

Adds tooltip support for dragging action buttons. The way the tooltip
just froze in place when dragging really bugged me, and lead to some
nasty visual artifacts.
This is a bit messy because the drag procs are horrible, but it's
workable

Dropping a button on another button will no longer swap their positions
Behavior instead depends on the target button.

If it's a part of a group (A concept I will explain later) the dragged
button is simply inserted before it in the group's list.

If it's floating on the general hud, we instead position the dragged
button to its right. There's extra logic here to ensure buttons will
never overflow the screen, but I'll get into that later.

Alright. That's most of the refactoring. Time for the larger behavior
changes.

Adds a button palette. This is a separate dropdown that renders
underneath buttons.

image

The idea is to allow for a conceptual separation between "important"
buttons and the ones that end up cluttering the screen.

You can click on the dropdown to open it, then any later clicks that
don't involve actions in some way will autoclose it.

My goal is to come up with an alternative for the action button that
just acted as a way to hide all buttons on screen. Not convinced it saw
much use.

As a side effect of removing that, I've moved its tooltip stuff to the
palette. I've properly formatted it, so hopefully it's easier to read
then the jumble that we used to have.

(You can alt click the palette button to reset all button positions)

Oh and the palette can scroll, since as you'll see later it has a
limited size.
image

Moving on from that, I've added what amounts to action landing buttons.
These allow buttons to rejoin groups, or be positioned at the end of a
line of buttons.
image

They've got a 32x32 hitbox, and only show up when dragging. Hopefully
this makes the system more clear just by dragging an action.

Oh and I've changed how button position updating works. The old system
of calling update_action_buttons on mob every time an action button
changes position is gone, mostly because I've setup more robust
grouping. Will discuss when I get to huds

(0d1e93f)
Adds the backbone behind action button position changes (94133bd)

Moves hud defines to the global folder, safer this way (7260117)

Adds color changing to the palette button, giving some heads up for buttons being inserted into the palette automatically
image
image
Ensures a landing button is always shown, even if it needs to break the
max row rule
Makes palettes auto contract if they have no buttons inside them
Prevents palettes from being opened if they have no buttons inside them
(f9417f3)
How it looks
2022-02-26.02-30-10.mp4
Why It's Good For The Game

Players have more control over the clutter on their screen.
Buttons are available, but not in the way,
Since any player move of a button saves it, any lack of clarity in the way buttons work will be forced out by buttons not just resetting when a new game starts.
We don't overlap any existing screen elements, unless the upper button list gets really long.
The code is much less crummy (I think, may have made it worse it's hard for me to judge my own work)

If it ends up not being as usable as I'd like, I'll rip out the existing changes and just implement the qol and backend stuff. I think it's worth doing though.
Changelog

cl
add: Expanded heavily on action buttons
add: Adds an action button dropdown that sits just under the normal list in the top left. You can drag new buttons onto it to insert them. Click on it to show its contents, do what you want to do, then click again anywhere to contract it. Alt click it to reset all button positions
add: Action buttons will now remember their position between rounds. So if you really like your flashlight right next to your player for some reason, we support that now
add: When you start to drag an action button, docking ports will appear in places that it can be inserted into. (Outside of just floating somewhere on your screen of course)
del: Removed action button locking, and the associated preference. I'm reasonably sure literally none uses this, but if you do hit me up
qol: Dragging an action button will now give you an outline of its size around your cursor
fix: You can no longer cause the screen to expand by putting an action button on the edge of widescreen, and then resizing to standard.
refactor: Refactors action and button code significantly. lots of little things.
/cl
2022-04-01 09:40:20 +13:00
cacogen
400c814854 Stops machine frames and circuitboards referring to manipulators as micro-manipulators (#64878)
About The Pull Request

    Gives stock parts a base_name variable and sets it to manipulator for micro-manipulators
    Reorders sprites of stock parts in stock_parts.dmi to be together and in order of tier. Image
    Makes component part lists on machine frames and circuitboards nicer and makes them identical between the two
    Improves code for generating these lists
    Adds numtotext() proc which these lists use

Why It's Good For The Game

    Solves the issue where examining machines says they require a micro-manipulator when any manipulator will do
    Makes sprites easier to find
    Wows players by using actual words for numbers in generated parts lists
    Cleans up ancient code
    This proc can be used for other things, e.g. station names (which I have now incorporated it into)

Changelog

cl
fix: Machine frames and circuit boards no longer call manipulators micro-manipulators when examined
code: Improves code in constructable_frame.dm and circuitboard.dm
/cl
2022-04-01 09:39:03 +13: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
ErdinyoBarboza
e836b38211 Makes Cyborg Lollipops Consistent (#65621) 2022-03-30 16:05:52 -07:00
Tim
d2e76e82e5 Fix welders using fuel when clicking on tiles (#65762)
Fixes #49664

Welders now conserve fuel when you accidentally click on tiles.
2022-03-30 13:29:36 +01:00
YakumoChen
8d8369b7fa Adds stacks of 50 bamboo sheets (#65700) 2022-03-27 19:18:25 -04:00
ArcaneMusic
6a461dff81 Arconomy Adjacent Content: Newscaster Refactor Omega (#65038)
This PR moves the in-game Newscaster over to TGUI, which is one the most bothersome html to tgui projects on the codebase being that it's gone untouched for like... over 4 years now after the introduction of tgui. Newscasters are widely used in-game by players wanting to be deranged whistleblowers, noir detectives, and journalists. They're flavorful, fun, and we still use an html window to make them run so it looks like it's from 2003.
2022-03-25 23:42:42 -07:00
dragomagol
d3211ee4d5 Makes the kiosk scanner wand bulky (#65613) 2022-03-25 21:20:07 +08:00
vincentiusvin
55336d1e53 Atmos Control Console Refactor (and syndiebase atmos tidyup) (#65372)
Main Takeaways For Mappers:

Use monitored pathed atmos devices very carefully. Also dont put atmos_sensors willy nilly. They are used to hook to atmos control monitors.

We want to keep at most one device broadcasting for each of the atmos sensor, inlets, and outlets. Run the mapping verb Check Atmos Chamber Devices to be sure, though this might not catch everything.

Some of the warning are pretty harmless. For example if you have reconnected the "station atmos monitor" and you get no listener for distro/waste loop warning, it's safe to ignore.

I don't know what the maptainer policy is on making new subtypes for offstation content, but if you do please branch off the general ones instead of the specific gas ones. If you aren't making a new subtype, varedit the general ones too.

About The Pull Request:

Need Would prefer this to be merged before #65271 (In game atmos guide).
Not strictly necessary, just makes me sleep better knowing the handbook wont die alongside the rest of the UI.

Fixes #36668 (Atmos Monitoring Consoles don't update it's sensors to the new tank after reconnect())
Fixes #32122 (Mix console fucked after reconnecting it)

Also made the distro meter thing broadcast more info instead of just the pressure, because I'm sure nobody would care and it would make my life easier.

A small high-level overview in case this breaks again in the future:

A signal datum (not DCS) is sent by the atmospheric devices (injectors and vents) and will be received by the atmos computers. The data is then stored at the monitor object and then passed to the UI. This initial signal is sent by `broadcast_signal()`, called by `atmos_init()`.

New sensors/vents (if you can actually get them in game, still only adminspawn/wrenchables afaik) will also initiate the conversation if atmos_init() is called, so it works fine. This means you need to unwrench and re-wrench the devices if you adminspawn them though, ugh.

In case of a newly built computer, it needs to be the one that prompt the data to the devices, so we send a request signal. This is a bit inefficient since it doesnt work off of callbacks and assocs like DCS, but won't really matter since we're doing this rarely.

We only talk with the injectors and vents when necessary here, while sensors and meters keep beeping with every process_atmos() tick so they rarely break.


Why It's Good For The Game:

Messy code gone (debatable).


Refactored the atmos control console devices. The ones that hook to the big turf chambers.
Distro meter now broadcast the whole gasmix info instead of just pressure to the monitors.
Lavaland syndie's atmos chamber vents are now actually configurable. Moved a few things around to accomodate this.
Lavalannd syndie chambers hooked to distro and moved distro pipe to layer2
atmos monitors can detect reactions now.
Some minor code changes to how anomaly refinery and implosion compressor show the gas info. No changes expected, report if bug.
recoded checks for atmos chamber abnormalities in debug verbs.
2022-03-24 02:12:14 -07:00
tnekohue
fcb95a2baa Fixes naming consistency for Departmental Protolathe/Techfab boards (#65526) 2022-03-23 23:05:41 -04:00
LordVollkorn
20287336c9 Bugfix: Proximity sensor inside chemical grenades (#65607)
* Bugfix: Proximity sensor inside a chem nade

* When assembling the nade, not when modifying the timer
2022-03-22 15:12:07 -04:00
Ghom
df5b87a9b6 Painting improvement: Added a palette component for spraycans and palette items. (#65577)
* Painting improvement: Added a palette component for spraycans and palettes.
2022-03-22 10:49:19 +01:00
LemonInTheDark
0e904f7032 [MDB IGNORE] Moves non floor turfs off /floor. You can put lattices on lavaland edition (#65504)
About The Pull Request

Alternative to #65354

Ok so like, there was a lot of not floor types on /floor. They didn't actually want any of their parent type's functionality, except maybe reacting to breaking (which was easy to move down) and some other minor stuff.
Part of what we don't want them to have is "plateable" logic.
I should not be able to put floor tiles on the snow and be fine. It's dumb.

Instead, I've moved all non floor types down to a new type, called /misc.

It holds very little logic. Mostly allowing pipes and wires and preventing blob stuff.
It also supports lattice based construction, which is one of the major changes here. I think it makes more sense, and it fixes an assumption in shuttle code that assumed you couldn't place "a new tile" by just hitting some snow with a floor tile.
Oh and lattices don't smooth with asteroid tiles anymore, this looks nicer I think.

Moving on to commits, and minor changes

Changes clf3 to try and burn any turfs it's exposed to, instead of just floors
Moves break_tile down to the turf definition, alongside burn_tile
If you're in basic buildmode and click on anything that's not handled in a targeted way, you just build plating
FUNCTION CHANGE: you can't use cult pylons to convert misc tiles over anymore
Generalizes building floors on top of something into two helper procs on /turf/open, reducing copypasta
Adds a new turf flag, IS_SOLID, that describes if a turf is tangible or not.
Uses this alongside a carpet and open check to replace plating and floor checks in carpet code. This does mean that non iron tiles can be carpeted, but I think that's fine

Moves the /floor update_icon -> update_visuals call to /open
This change is horrificly old, dating back to 8e112f6 but that commit describes nothing about why it was done. Choosing to believe it was a newfriend mistake. Uncomfortable nuking it though, because of just how old it is. Moving down instead

Create a buildable "misc" type off open, moves /dirt onto it
Basically, we want a type we can use to make something support
construction, since that can be a messy bit of logic. Also enough
structure to set things up sanely.

I'm planning on moving most misc turfs onto it, if only because
constructing on a dirt tile with rods should be possible, and the same
applies to most things

Murders captain planet, disentangles /turf/open/floor/grass/snow/basalt

Adds a diggable component that applies the behavior of "digging"
something out from a turf.

Uses it to free the above pain typepath into something a bit more
sensible

The typepaths that aren't actually used by floor tiles are moved onto
/misc

The others are given names that better describe them, and kept in
fancy_floor

Oh and snowshoes don't work on basalt anymore, sorry

Snowed over platings now actually have broken/burned icon states, fixing black holes to nowhere

Misc turfs no longer smooth as floors, so lattices will ignore them

Placing a lattice will no longer scrape the tile it's on

Ok this is a really old one.
I believe this logic is a holdover from kor's baseturf pr
(97990c9)
It used to be that turfs didn't have a concept of "beneath" and instead
just decided what should be under them by induction. This logic of "if
it's being latticed scapeaway to space" made sense then, but has since
been somewhat distorted

We do want to scape away on lattice spawn sometimes, mostly when we're
being destroyed, but not always. We especially don't want to scape away
if someone is just placing a rod, that's dumb.

Adds a path updating script for this change

I've done my best to find all the errors this repathing will pull out, but I may have missed some. I'm sorry.
Why It's Good For The Game

Very old code made better, more consistent turfs for lavaland and icebox, better visuals, minor fix to snowed plating, demon banishment in lattice placement, fixes the icebox mining shuttle not being repairable
Changelog

cl
add: Rather then being tileable with just floor tiles, lavaland turfs, asteroid and snow (among other things) now support lattice -> floor tile construction
fix: Because of the above, you can now properly fix the icebox mining shuttle
refactor: Non floor turfs are no longer typed as floor. This may break things, please yell at me if it does
/cl
2022-03-16 15:55:56 +13:00
dragomagol
7ca2e7559f Simplifies Law Logging (#65449)
dragomagol
Member
dragomagol commented 2 days ago
About The Pull Request

This removes the href logs from silicon logging.
Why It's Good For The Game

Current silicon law change logs in silicon.log are really really long. Like excessively long. It makes the logs necessarily difficult to read.
Changelog

cl
admin: Silicon law logs are shorter and easier to read
/cl
2022-03-16 13:30:18 +13:00